CSG 65CE02 - CSG 65CE02

CSG 65CE02
Información general
Lanzado 1988
Interrumpido 1988
Fabricante (s) común (es)
Rendimiento
Max. Frecuencia de reloj de la CPU 2 MHz a 10 MHz
Arquitectura y clasificación
Conjunto de instrucciones 6502
Especificaciones físicas
Paquete (s)

El CSG 65CE02 es un microprocesador de 8/16 bits desarrollado por Commodore Semiconductor Group en 1988. Es un miembro de la familia MOS Technology 6502 , desarrollado a partir del CMOS WDC 65C02 lanzado por el Western Design Center en 1983.

Al igual que el 65C02, el 65CE02 se construyó con un proceso CMOS de 2 µm en lugar de la tecnología NMOS de 8 µm del 6502 original , lo que hace que el chip sea más pequeño (y por lo tanto menos costoso) y consume mucha menos energía. Además de los cambios realizados en el 65C02, el 65CE02 también incluyó mejoras en la canalización del procesador para permitir que las instrucciones de un byte se completen en 1 ciclo, en lugar del mínimo de 2 ciclos del 6502 (y la mayoría de las variantes). También eliminó los retrasos de 1 ciclo al cruzar los límites de la página . Estos cambios mejoraron el rendimiento hasta en un 25% a la misma velocidad de reloj.

Otros cambios incluyeron la adición de un tercer registro de índice , Z, junto con la adición y modificación de una serie de instrucciones para usar este registro. La página cero, los primeros 256 bytes de memoria que se usaron como pseudo-registros, ahora se pueden mover a cualquier página en la memoria principal usando el registro B (página ase). El registro de pila se amplió de 8 a 16 bits utilizando un registro de página similar, SPH (puntero de pila alto), lo que permite que la pila se mueva fuera de la página uno y crezca a tamaños más grandes.

El 65CE02 fue la base del sistema en un chip CSG 4510 que fue desarrollado para el inédito Commodore 65 . El 65CE02 se utilizó más tarde para la tarjeta de puerto serie A2232 para la computadora Amiga . Parece no haber tenido otro uso.

Descripción

Registros CSG 65CE02
1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (posición de bit)
Registros principales
  A Un acumulador
Registros de índice
  X Índice X
  Y Índice Y
  Z Índice Z
SPH SPL S tack  P ointer
B   B ase página
Contador de programa
ordenador personal P ROGRAMA  C ounter
Registro de estado
  norte V mi B D I Z C P banderas rocessor
Pin-out del CSG 65CE02

Fondo

A fines de la década de 1970, el equipo original de MOS Technology que diseñó el 6502 se había desintegrado. Bill Mensch se mudó a Arizona y estableció el Western Design Center (WDC) para brindar servicios de diseño basados ​​en 6502. Alrededor de 1981, los principales licenciatarios del diseño 6502, Rockwell Semiconductor , GTE y Signetics , comenzaron un esfuerzo de rediseño con Mensch que condujo al WDC 65C02 . Esta fue principalmente una implementación CMOS del NMOS 6502 original que usaba de 10 a 20 veces menos energía, pero también incluía una serie de nuevas instrucciones para ayudar a mejorar la densidad del código en ciertas aplicaciones. Se incluyeron nuevas instrucciones INA/DEApara incrementar y disminuir el acumulador , STZpara escribir un cero en una ubicación de memoria, y BRAque era un salto con una dirección relativa de 1 byte estilo rama . El 65C02 también corrigió una serie de errores menores en el diseño 6502 original.

El 6502 original fue diseñado en la era anterior a la existencia de las microcomputadoras , cuando los microprocesadores se usaban como base para sistemas más simples como terminales inteligentes , calculadoras de escritorio y muchos sistemas de controladores industriales diferentes . Esta fue también una era en la que los dispositivos de memoria generalmente se basaban en RAM estática , que era muy costosa y tenía baja densidad de memoria . Por ambas razones, no se requería la capacidad de manejar cantidades "grandes" de memoria, y muchos procesadores tenían modos operativos que funcionaban con pequeñas porciones de un espacio de direcciones más grande para ofrecer un mayor rendimiento. Tal fue el caso del 6502, que utilizó la primera página de memoria , o "página cero", para proporcionar un acceso más rápido, y la segunda página, "página uno", para contener una pila de 256 bytes .

En la década de 1980, estas suposiciones ya no eran válidas, muchas máquinas basadas en estos procesadores ahora se envían con el máximo de 64 kB que el 6502 podía abordar, utilizando la RAM dinámica mucho menos costosa y más densa . Las ventajas de velocidad del modo de direccionamiento de página cero permanecieron, pero ahora existen dentro de un espacio de memoria que era dramáticamente más grande. Del mismo modo, la pila de llamadas de una sola página era ahora una miseria dentro de la memoria general, y los lenguajes de alto nivel que hacían un uso prodigioso del espacio de la pila no podían ejecutarse fácilmente en el 6502.

Nuevas características

El 65CE02 es una versión mejorada del 65C02 que amplía el modelo de memoria para hacerlo más adecuado para un sistema con grandes cantidades de memoria principal. Para ello, añade las siguientes novedades:

  • El 65CE02 agrega un registro B de 8 bits, para la página base, que desplaza la página cero a cualquier ubicación en la memoria. B se establece en cero en el encendido o reinicio, por lo que el 65CE02 inicialmente funciona exactamente como el 6502. Si se coloca un valor en el registro B usando TAB(Transferir A a B), la página cero se mueve a la nueva ubicación. Un uso significativo de esta función es permitir que pequeñas rutinas que pueden caber dentro de los 256 bytes de una página utilicen direccionamiento de página cero (ahora conocido como direccionamiento de página base), lo que hace que el código sea más pequeño porque las direcciones ya no tienen un segundo byte, lo que también hace que el código se ejecute más rápido porque el segundo byte no tiene que ser obtenido de la memoria.
  • El 65CE02 también extiende la pila desde los 256 bytes originales de la página uno hasta, en teoría, todo el espacio de direcciones. Lo hace agregando otro registro de 8 bits, SPH, para Stack Pointer High. Normalmente, esto funciona como B, compensando la dirección base de la pila de la página uno a cualquier página seleccionada. De lo contrario, continúa funcionando como antes, con un tamaño máximo de una página, 256 bytes. Al igual que B, al iniciar o restablecer, SPH se establece en 01 para que funcione exactamente como el 65C02.
Cuando se establece el nuevo bit de "extensión de pila" en el registro de estado , utilizando las nuevas CLE/SEEinstrucciones, el puntero de pila se convierte en un valor real de 16 bits. El valor en SPH se agrega al valor en el SP original, ahora conocido como SPL para Stack Pointer Low, para producir un puntero de 16 bits al final de la pila. Esto permite que la pila crezca mucho más que los 256 bytes originales, que era demasiado pequeña para los lenguajes de alto nivel.
Esto significa que hay dos tipos de pilas, una de 256 bytes que puede estar en cualquier lugar o una memoria de expansión de 16 bits. Si bien este último es más flexible, significa que los accesos a la pila tienen que construir una dirección de 16 bits a partir de los dos registros, lo que requiere un ciclo adicional y, por lo tanto, ralentiza el rendimiento general. El uso de la pila más pequeña, siempre que sea posible, ofrece un mejor rendimiento.
  • El 65CE02 también agrega un nuevo registro de índice , Z. Este se establece en cero al inicio o reinicio, lo que significa que su instrucción store-Z-to-memory`` STZfunciona igual que en el 65C02 donde la misma instrucción significa store-zero -a-memoria. Esto permite que el código 65C02 sin modificar se ejecute en el 65CE02. Se agregan o modifican otras instrucciones para permitir el acceso al registro Z. Entre estos se encuentran el LDZcargar el valor de la memoria, TZA/TAZtransferir el valor hacia o desde el acumulador, PHZ/PLZempujar y tirar de Z a la pila, INZ/DEZpara incrementar y disminuir, y CPZcomparar el valor en Z con un valor en la memoria.
  • El 65C02 agregó BRA, Branch Always, que era esencialmente una JMPdirección relativa de 8 bits estilo rama en lugar de una dirección absoluta de 16 bits. Por razones desconocidas, el 65CE02 cambió el mnemónico a BRU. También agregaron la BSRinstrucción, Branch to SubRoutine, que usa el mismo modo de direccionamiento relativo con JSRJump to SubRoutine.
  • Además, la CE agregó direccionamiento de 16 bits, o "palabra relativa", a todas las instrucciones de bifurcación existentes. Anteriormente, las sucursales solo podían retroceder 128 ubicaciones o avanzar 127, según un valor de 8 bits con signo, la "dirección relativa". En el 65CE02, estas podrían ser ubicaciones -32768 o +32767, siguiendo la rama con un valor de 16 bits. Anteriormente, para realizar una "bifurcación larga", normalmente se tenía que utilizar un JMPal objetivo de 16 bits y luego bifurcarse sobre esos tres bytes cuando no se deseaba hacerlo. Por ejemplo, si uno quisiera bifurcar a la dirección $ 1234 si el acumulador es cero, haría a CMP #$00/BNE +3/JMP $1234, lo que significa que desea omitir los 3 bytes si el acumulador no es cero. En el 65CE02, esto se puede reducir a algo así , haciendo que el código sea más obvio, eliminando dos bytes de instrucciones y eliminando la necesidad de que los ciclos perdidos obtengan y ejecuten la rama. Sin embargo, como todavía utiliza el direccionamiento relativo, el programador o ensamblador debe calcular la dirección relativa a partir de la etiqueta al convertir a código de máquina.JMP addrCMP #$00/BEQ $0123
  • Otra adición al sistema fueron una serie de instrucciones de "palabra" que realizaban operaciones con datos de 16 bits. Esto incluía INW/DEWincrementar y disminuir un valor en la memoria y ASW/ROWrealizar un Cambio aritmético (izquierda) Palabra o ROtate (izquierda) Palabra.
  • Más cambios menores incluyen la adición de ASRpara realizar un desplazamiento aritmético (con signo) a la derecha (el 6502 solo tenía un desplazamiento a la derecha lógico o sin signo), una NEG Ainstrucción que realiza una negación de complemento a dos en el acumulador y RTNuna variación en RTS(ReTurn from Subroutine ) que regresa a un desplazamiento de dirección en la pila en lugar de en la parte superior, evitando la necesidad de POPdesactivar explícitamente cualquier cosa que la rutina agregó mientras se ejecutaba. El sistema también agregó un nuevo modo de direccionamiento que usaba una dirección base en la pila como base para el direccionamiento indirecto.
  • Finalmente, AUGse agregó la nueva instrucción de cuatro bytes para una futura expansión. Aunque la hoja de datos no es clara sobre su propósito final, parece ser un marcador de posición destinado a permitir que las instrucciones se pasen a las unidades de coprocesador, como una unidad de gestión de memoria .

Mejoras en la canalización

Una gran rareza del 6502 original era que las instrucciones de un byte como INXtodavía tardaban dos ciclos en completarse. Esto permitió simplificaciones en el sistema de tuberías ; el siguiente byte de la memoria se obtuvo mientras se decodificaba la operación, lo que significa que el siguiente byte se obtuvo sin importar qué. Para la mayoría de las instrucciones, este byte sería parte (o todo) de un operando, que luego podría introducirse inmediatamente en la instrucción ahora decodificada.

Si la instrucción requería solo un byte, el procesador aún leería el siguiente byte mientras decodificaba el primero. En este caso, el siguiente byte era la siguiente instrucción, pero no tenía forma de retroalimentarlo en la primera etapa de la canalización para decodificarlo. En cambio, la instrucción obtenida se descartó y se volvió a leer para introducirla en el decodificador. Esto desperdicia un ciclo. Aunque esto llevó a que varias instrucciones fueran más lentas de lo que podrían haber sido, esta "característica" se mantuvo en el 65C02, aunque no se explica en las fuentes disponibles si esto fue para mantener la simplicidad de su canalización o su tiempo de ciclo.

Mantener la compatibilidad del ciclo no era un requisito para el 65CE02, y los nuevos procesos de fabricación hicieron que los circuitos adicionales en la tubería no fueran un problema, por lo que la tubería se reorganizó para manejar correctamente instrucciones de un byte en un solo ciclo. Estas mejoras permiten que el 65CE02 ejecute código hasta un 25% más rápido que los modelos 65xx anteriores.

Una mejora adicional aborda un problema que involucra instrucciones de direccionamiento que agregan valores para producir una dirección final. Los ejemplos incluyen "indirecto indexado" donde el valor en uno de los registros de índice se agrega a una dirección base y luego aplica la instrucción a la dirección resultante. En el 6502 original, si la suma de los dos valores cruzaba el límite de una página, cada 256 ubicaciones, se necesitaba un ciclo adicional para producir el valor de dirección final. El 65CE02 eliminó esta limitación, mejorando así el rendimiento de estos modos de uso común.

Detalles físicos

Está fabricado con tecnología CMOS de 2 µm , lo que permite un funcionamiento con menor potencia en comparación con las versiones anteriores NMOS y HMOS de la familia 65xx. Está alojado en un DIP de 40 pines que es compatible con el 6502.

CSG 4510

CSG 4510

El 4510 es una variante de sistema en paquete (SiP) del 65CE02 que incluye dos controladores de puerto de E / S 6526 CIA y una MMU personalizada para expandir el espacio de direcciones a 20 bits (1 megabyte). Está alojado en un PLCC de 84 pines .

El 4510 se usó en la computadora doméstica Commodore 65 inédita y la revisión de costo reducido Commodore CDTV inédita .

Aplicaciones

El 65CE02 se utilizó en la tarjeta de puerto serie Commodore A2232 para la computadora Amiga .

Ver también

Referencias

Otras lecturas

enlaces externos