El CSG 65CE02 es un microprocesador de 8/16 bits desarrollado por Commodore Semiconductor Group en 1988. [ 1 ] Es un miembro de la familia MOS Technology 6502 , desarrollada a partir del CMOS WDC 65C02 lanzado por el Western Design Center en 1983.
Al igual que el 65C02, el 65CE02 se fabricó con un proceso CMOS de 2 µm en lugar de la tecnología NMOS de 8 µm del 6502 original , lo que permitió reducir el tamaño del chip (y, por lo tanto, su costo) y su consumo energético. Además de las mejoras introducidas en el 65C02, el 65CE02 también incorporó optimizaciones en la arquitectura del procesador para que las instrucciones de un byte se completaran en un ciclo, en lugar del mínimo de dos ciclos del 6502 (y la mayoría de sus variantes). Asimismo, se eliminaron los retrasos de un ciclo al cruzar los límites de 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 varias instrucciones para usar este registro. La página cero, los primeros 256 bytes de memoria que se usaban como pseudoregistros, ahora se podía mover a cualquier página de la memoria principal usando el registro B (página base). El registro de pila se amplió de 8 a 16 bits usando un registro de página similar, SPH (puntero de pila alto), lo que permitió mover la pila fuera de la página uno y aumentar su tamaño.
El 65CE02 fue la base del sistema en chip CSG 4510 , desarrollado para el Commodore 65, que nunca llegó a comercializarse . Posteriormente, el 65CE02 se utilizó para la tarjeta de puerto serie A2232 del ordenador Amiga . Al parecer, no tuvo ningún otro uso.
Descripción

Fondo
El 6502 original fue diseñado en la época anterior a la existencia de las microcomputadoras , cuando los microprocesadores servían de base para sistemas más sencillos como terminales inteligentes , calculadoras de escritorio y diversos sistemas de control industrial . Esta era también una época en la que los dispositivos de memoria se basaban generalmente en RAM estática , que era muy cara y tenía una baja densidad de memoria . Por ambas razones, no se requería la capacidad de manejar grandes cantidades de memoria (para la época), y muchos procesadores tenían modos de funcionamiento que trabajaban con pequeñas porciones de un espacio de direcciones mayor para ofrecer un mayor rendimiento. Tal fue el caso del 6502, que utilizaba 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 almacenar una pila de 256 bytes .
A finales de la década de 1970, el equipo original de MOS Technology que diseñó el 6502 se disolvió. Bill Mensch se mudó a Arizona y fundó el Western Design Center (WDC) para ofrecer servicios de diseño basados en el 6502. Alrededor de 1981, los principales licenciatarios del diseño del 6502, Rockwell Semiconductor , GTE y Signetics , iniciaron un proyecto de rediseño con Mensch que dio como resultado el WDC 65C02 . Este era principalmente una implementación CMOS del NMOS 6502 original que consumía entre 10 y 20 veces menos energía, pero también incluía una serie de nuevas instrucciones para mejorar la densidad del código en ciertas aplicaciones. Las nuevas instrucciones incluían INA/DEAel incremento y decremento del acumulador , STZla escritura de un cero en una ubicación de memoria y un salto con una dirección relativa deBRA 1 byte de estilo bifurcación . El 65C02 también corrigió una serie de fallos menores (y al menos un error grave) en el diseño original del 6502.
Para cuando se presentó el 65C02, las premisas de diseño originales ya no eran válidas; muchas máquinas basadas en estos procesadores ahora se enviaban con el máximo de 64 kB que el 6502 podía direccionar, utilizando la RAM dinámica, mucho más económica y densa . Las ventajas de velocidad del modo de direccionamiento de página cero se mantenían, pero ahora existían dentro de un espacio de memoria considerablemente mayor. Del mismo modo, la pila de llamadas de una sola página era ahora insignificante dentro de la memoria total, 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. El 65C02, concebido en gran medida como una versión de bajo consumo del 6502, conservaba estas desventajas.
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 características nuevas:
- El 65CE02 añade un registro B de 8 bits, para Página Base, que desplaza la página cero a cualquier ubicación de la memoria. B se establece a cero al encender o reiniciar, por lo que el 65CE02 funciona inicialmente exactamente igual que el 6502. Si se coloca un valor en el registro B mediante
TAB(Transferir A a B), la página cero se mueve a la nueva ubicación. Una aplicación importante de esta función es permitir que las rutinas pequeñas que caben dentro de los 256 bytes de una página utilicen el direccionamiento de página cero (ahora conocido como direccionamiento de página base), lo que reduce el tamaño del código porque las direcciones ya no tienen un segundo byte, lo que también acelera la ejecución del código porque no es necesario obtener el segundo byte de la memoria. [ 1 ]
- 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 añadiendo otro registro de 8 bits, SPH, para Stack Pointer High (Puntero de pila alto). Normalmente, esto funciona como B, desplazando la dirección base de la pila desde la página uno a cualquier página seleccionada. Por lo demás, sigue funcionando como antes, con un tamaño máximo de una página, 256 bytes. Al igual que B, al arrancar o reiniciar, SPH se establece en 01 para que funcione exactamente como el 65C02. [ 1 ]
- Cuando se activa el nuevo bit "stack extend" en el registro de estado
CLE/SEE, mediante las nuevas instrucciones, el puntero de pila se convierte en un verdadero valor de 16 bits. El valor en SPH se suma al valor en el SP original, ahora conocido como SPL (Stack Pointer Low), para producir un puntero de 16 bits al fondo de la pila. Esto permite que la pila crezca mucho más allá de los 256 bytes originales, que eran demasiado pequeños para los lenguajes de alto nivel. [ 1 ]
- Esto significa que existen dos tipos de pilas: una de 256 bytes que puede ubicarse en cualquier lugar, o una de 16 bits que abarca toda la memoria. Si bien esta última es más flexible, su uso implica que se requieren dos transferencias de 8 bits para inicializar la pila de 16 bits, lo que implica una instrucción adicional. La velocidad de las operaciones posteriores de inserción y extracción no se ve afectada por el tamaño del puntero de pila. [ 1 ]
- El 65CE02 también añade un nuevo registro de índice , Z. Este se establece a cero al arrancar o reiniciar, lo que significa que su instrucción para almacenar Z en memoria
STZfunciona igual que en el 65C02, donde la misma instrucción significa almacenar cero en memoria, reutilizando el modo de direccionamiento indirecto no indexado del 65C02 para el modo de direccionamiento indirecto indexado del registro Z. Esto permite ejecutar código del 65C02 sin modificaciones en el 65CE02. Se añaden o modifican varias instrucciones para permitir el acceso al registro Z. Entre ellas se encuentran las instrucciones para cargar el valor desde la memoria, transferir el valor al acumulador o desde él, insertar y extraer Z de la pila, incrementar y decrementar, y comparar el valor de Z con un valor en memoria. [ 1 ]LDA($10)LDA($10),ZLDZTZA/TAZPHZ/PLZINZ/DEZCPZ
- El 65C02 añadió la instrucción
BRA`Branch Always`, que era esencialmente unaJMPinstrucción que utilizaba una dirección relativa de 8 bits al estilo de salto en lugar de una dirección absoluta de 16 bits. Por razones desconocidas, el 65CE02 cambió el mnemónico aBRU`Branch Unconditionally`. También añadieron laBSRinstrucción `Branch to SubRoutine`, que utiliza el mismo modo de direccionamiento relativo queJSR`Jump to SubRoutine`. [ 1 ]
- Además, el CE añadió direccionamiento de 16 bits, o "relativo a palabra", a todas las instrucciones de salto existentes. Anteriormente, los saltos solo podían moverse hacia atrás 128 posiciones o hacia adelante 127, según un valor de 8 bits con signo, la "dirección relativa". En el 65CE02, estas podían ser -32768 o +32767 posiciones, siguiendo el salto con un valor de 16 bits. Anteriormente, para realizar un "salto largo", normalmente había que usar un
JMPal destino de 16 bits y luego saltar esos tres bytes cuando no se quería hacerlo. Por ejemplo, si se quería saltar a la dirección $1234 si el acumulador es cero, se haría unCMP #$00/BNE +3/JMP $1234, lo que significa que se quiere saltar los 3 bytes si el acumulador no es cero. En el 65CE02 esto se puede reducir a algo como , haciendo así el código más claro, eliminando dos bytes de instrucciones y eliminando la necesidad de los ciclos perdidos al buscar y ejecutar el salto. Sin embargo, como todavía utiliza direccionamiento relativo, el programador o ensamblador debe calcular la dirección relativa a partir de la etiqueta al convertirla a código máquina. [ 1 ]JMP addrCMP #$00/BEQ $0123
- Otra adición al sistema fueron varias instrucciones de "palabra" que realizaban operaciones con datos de 16 bits. Esto incluía
INW/DEWincrementar y decrementar un valor en la memoria, yASW/ROWrealizar un desplazamiento aritmético (izquierda) de palabra o una rotación (izquierda) de palabra. [ 1 ]
- Entre los cambios menores se incluyen la adición de una instrucción
ASRpara realizar un desplazamiento aritmético (con signo) a la derecha (el 6502 solo tenía desplazamiento lógico o sin signo a la derecha), unaNEG Ainstrucción que realiza una negación en complemento a dos en el acumulador yRTNuna variación deRTS(Return from Subroutine) que regresa a una dirección desplazada en la pila en lugar de en la parte superior, evitando la necesidad dePOPborrar explícitamente cualquier cosa que la rutina haya agregado durante su ejecución. El sistema también agregó un nuevo modo de direccionamiento que utilizaba una dirección base en la pila como base para el direccionamiento indirecto. [ 1 ]
- Finalmente, se añadió la nueva instrucción de cuatro bytes
AUGpara futuras expansiones. Aunque la hoja de datos no aclara su propósito final, parece ser un marcador de posición destinado a permitir que las instrucciones se pasen a unidades de coprocesamiento, como una unidad de gestión de memoria . [ 1 ]
Mejoras en la tubería
Una peculiaridad importante del 6502 original era que las instrucciones de un byte, como la de un byte, INXaún requerían dos ciclos para completarse. Esto permitía simplificaciones en el sistema de segmentación ; el siguiente byte de la memoria se obtenía mientras se decodificaba la operación, lo que significaba que el siguiente byte se obtenía siempre. Para la mayoría de las instrucciones, este byte sería parte (o la totalidad) de un operando, que luego podía introducirse inmediatamente en la instrucción decodificada. [ 2 ]
Si la instrucción requería solo un byte, el procesador leía el siguiente byte mientras decodificaba el primero. En este caso, el siguiente byte era la siguiente instrucción, pero no había forma de reintroducirla en la primera etapa de la tubería para decodificarla. En su lugar, la instrucción obtenida se descartaba y se volvía a leer para introducirla en el decodificador. Esto desperdiciaba un ciclo. Aunque esto provocó que varias instrucciones fueran más lentas de lo que podrían haber sido, esta "característica" se mantuvo en el 65C02, si bien no se explica en las fuentes disponibles si esto se hizo para mantener la simplicidad de su tubería o su temporización de ciclo. [ 2 ]
Mantener la compatibilidad de ciclos no era un requisito para el 65CE02, y los nuevos procesos de fabricación hicieron que el circuito adicional en la tubería no fuera un problema, por lo que la tubería se reorganizó para manejar instrucciones de un byte en un solo ciclo. [ 2 ] Estas mejoras permiten que el 65CE02 ejecute código hasta un 25 % más rápido que los modelos 65xx anteriores. [ 1 ]
Una mejora adicional aborda un problema relacionado con las instrucciones de direccionamiento que suman valores para producir una dirección final. Un ejemplo es el direccionamiento indirecto indexado, donde el valor de uno de los registros de índice se suma a una dirección base y luego se aplica la instrucción a la dirección resultante. En el 6502 original, si la suma de los dos valores superaba el límite de página actual de 256 bytes, se necesitaba un ciclo adicional para producir el valor de la dirección final. El 65CE02 eliminó esta limitación, mejorando así el rendimiento de estos modos de uso común. [ 1 ]
Detalles físicos
Está fabricado con tecnología CMOS de 2 µm , lo que permite un menor consumo de energía en comparación con las versiones NMOS y HMOS anteriores de la familia 65xx. Se presenta en un encapsulado DIP de 40 pines compatible con el 6502. [ 3 ]
CSG 4510

El 4510 es una variante de sistema en paquete (SiP) del 65CE02 que incluye dos controladores de puerto de E/S CIA 6526 y una MMU personalizada para ampliar el espacio de direcciones a 20 bits (1 megabyte). Está alojado en un PLCC de 84 pines . [ 4 ]
El 4510 se utilizó en el ordenador doméstico Commodore 65, que no llegó a comercializarse [ 5 ] , y en la revisión de bajo coste del Commodore CDTV, que tampoco llegó a comercializarse . [ 5 ] [ 6 ]
Aplicaciones
El 65CE02 se utilizó en la tarjeta de puerto serie Commodore A2232 para el ordenador Amiga . [ 7 ] [ 8 ]
Véase también
Referencias
- 1 2 3 4 5 6 7 8 9 10 11 12 13 "Hoja de datos del microprocesador MOS 65CE02" (PDF) .
- 1 2 3 "Patente estadounidense 5088035: Sistema para acelerar la ejecución de instrucciones de programa por un microprocesador" .
- ↑ "Referencia técnica del Commodore Semiconductor Group CSG65CE02" . zimmers.net. 18 de agosto de 2009. Consultado el 21 de junio de 2013 .
- ↑ "Amiga Stuff: Información de hardware 4510" .
- 1 2 "Base de conocimientos de Commodore: El Commodore 65" .
- ↑ "Base de datos de hardware de Amiga: CDTV II" .
- ↑ "Amiga Stuff: Información de hardware 65CE02" .
- ↑ "Gran libro de hardware de Amiga: Commodore A2232" .
Lecturas adicionales
Enlaces externos
- Referencia técnica CSG65CE02 de Commodore Semiconductor Group
- Microprocesador 65CE02 (versión preliminar) (noviembre de 1988)
- Imágenes del paquete y del chip 65CE02
- Perfil de Victor F. Andrade (ingeniero principal de LSI 65CE02)
- microprocesadores 65xx
- Microprocesadores con tecnología MOS
- microprocesadores de 8 bits