Articulo de referencia

CSG65CE02

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 , desarrollado a par...

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 , desarrollado a partir del CMOS WDC 65C02 lanzado por 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 hizo que el chip fuera más pequeño (y, por lo tanto, menos costoso) y, al mismo tiempo, consumiera mucha menos energía. Además de los cambios realizados en el 65C02, el 65CE02 también incluyó mejoras en la secuencia de procesamiento para permitir que las instrucciones de un byte se completaran 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 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 utilizar este registro. La página cero, los primeros 256 bytes de memoria que se usaban como pseudorregistros, ahora se podían mover a cualquier página de la memoria principal utilizando el registro B(base page). El registro de pila se amplió de 8 a 16 bits utilizando un registro de página similar, SPH (stack pointer high), lo que permitió que la pila se moviera fuera de la página uno y creciera a tamaños más grandes.

El 65CE02 fue la base del sistema en chip CSG 4510 que se desarrolló para el Commodore 65 , que aún no se había lanzado al mercado . El 65CE02 se utilizó más tarde para la tarjeta de puerto serie A2232 del ordenador Amiga . Parece que no se le dio ningún otro uso.

Descripción

Distribución de pines del CSG 65CE02

Fondo

A finales de los años 1970, el equipo original de MOS Technology que diseñó el 6502 se había disuelto. Bill Mensch se había mudado a Arizona y había creado el Western Design Center (WDC) para proporcionar servicios de diseño basados ​​en el 6502. Alrededor de 1981, los principales licenciatarios del diseño del 6502, Rockwell Semiconductor , GTE y Signetics , comenzaron un esfuerzo de rediseño con Mensch que condujo al WDC 65C02 . Se trataba principalmente de una implementación CMOS del 6502 NMOS original que utilizaba entre 10 y 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 incluían nuevas instrucciones INA/DEApara incrementar y decrementar el acumulador , STZpara escribir un cero en una ubicación de memoria y que era un salto con una dirección relativaBRA de 1 byte de estilo de rama . El 65C02 también corrigió una serie de errores menores en el diseño original del 6502.

El 6502 original fue diseñado en la era anterior a la existencia de los microordenadores , cuando los microprocesadores se utilizaban como base para sistemas más sencillos como terminales inteligentes , calculadoras de sobremesa y muchos sistemas de control industrial diferentes . 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, y muchos procesadores tenían modos de funcionamiento que trabajaban con pequeñas porciones de un espacio de direcciones más grande para ofrecer un mayor rendimiento. Tal era 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 albergar 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 se entregaban con el máximo de 64 kB que el 6502 podía direccionar, utilizando la RAM dinámica, mucho menos costosa y más densa . Las ventajas de velocidad del modo de direccionamiento de página cero se mantuvieron, pero ahora dentro de un espacio de memoria que era drásticamente mayor. Asimismo, 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 funciones

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 al encender o reiniciar, por lo que el 65CE02 inicialmente funciona exactamente como el 6502. Si se coloca un valor en el registro B utilizando TAB(Transferir A a B), la página cero se mueve a la nueva ubicación. Un uso significativo de esta característica 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 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. [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 el 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. De lo contrario, sigue funcionando como antes, con un tamaño máximo de una página, 256 bytes. Al igual que B, al iniciar o reiniciar, SPH se establece en 01 para que funcione exactamente como el 65C02. [1]
Cuando se activa el nuevo bit de "extensión de pila" en el registro de estadoCLE/SEE , utilizando las nuevas instrucciones, el puntero de pila se convierte en un valor real 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 a la parte inferior de la pila. Esto permite que la pila crezca mucho más que los 256 bytes originales, que eran demasiado pequeños para los lenguajes de alto nivel. [1]
Esto significa que hay dos tipos de pilas: una de 256 bytes que puede estar en cualquier lugar, o una de 16 bits que abarca la memoria. Si bien esta última es más flexible, implica que los accesos a la pila deben construir una dirección de 16 bits a partir de los dos registros, lo que requiere un ciclo adicional y, por lo tanto, reduce el rendimiento general. El uso de la pila más pequeña, siempre que sea posible, ofrece un mejor rendimiento. [1]
  • El 65CE02 también añade un nuevo registro de índice , Z. Este se establece en cero al iniciar o reiniciar, lo que significa que su instrucción de almacenar Z en memoria, STZ, funciona igual que en el 65C02, donde la misma instrucción significa almacenar cero en memoria. Esto permite que el código 65C02 sin modificar se ejecute en el 65CE02. Se añaden o modifican otras instrucciones para permitir el acceso al registro Z. Entre ellas se encuentran las LDZde cargar el valor desde la memoria, TZA/TAZtransferir el valor hacia o desde el acumulador, PHZ/PLZempujar y tirar de Z a la pila, INZ/DEZpara incrementar y decrementar, y CPZcomparar el valor en Z con un valor en la memoria. [1]
  • El 65C02 agregó BRABranch Always, que era esencialmente una JMPdirección relativa de 8 bits en lugar de una dirección absoluta de 16 bits. Por razones desconocidas, el 65CE02 cambió el mnemónico a BRUBranch Unconditionally (Ramalizar incondicionalmente). También agregaron la BSRinstrucción Branch to SubRoutine, que usa el mismo modo de direccionamiento relativo que JSRJump to SubRoutine. [1]
  • Además, el CE agregó direccionamiento de 16 bits, o "palabra relativa", a todas las instrucciones de bifurcación existentes. Anteriormente, las bifurcaciones solo podían retroceder 128 posiciones o avanzar 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 la bifurcación con un valor de 16 bits. Anteriormente, para realizar una "bifurcación larga", normalmente se tenía que usar un JMPpara el objetivo de 16 bits y luego bifurcar sobre esos tres bytes cuando no se quería hacerlo. Por ejemplo, si se quería bifurcar a la dirección $1234 si el acumulador es cero, se haría un CMP #$00/BNE +3/JMP $1234, lo que significa que se desea omitir los 3 bytes si el acumulador no es cero. En el 65CE02 esto se puede reducir a algo como , lo que hace que el código sea más obvio, eliminando dos bytes de instrucciones y eliminando la necesidad de los ciclos perdidos para obtener y ejecutar la bifurcación. Sin embargo, como todavía utiliza direccionamiento relativo, el programador o ensamblador debe calcular la dirección relativa a partir de la etiqueta al convertir a código máquina. [1]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, INW/DEWcomo incrementar o decrementar un valor en la memoria y ASW/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 un desplazamiento lógico o sin signo a la derecha), una NEG Ainstrucción que realiza una negación de complemento a dos en el acumulador y RTNuna variación de RTS(ReTurn from Subroutine) que retorna a una dirección desplazada 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. [1]
  • Finalmente, se agregó la nueva instrucción de cuatro bytes AUGpara una expansión futura. 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 transmitan a unidades de coprocesador, como una unidad de administración de memoria . [1]

Mejoras en el oleoducto

Una de las principales rarezas del 6502 original era que las instrucciones de un byte como esta INXtodavía requerían dos ciclos para completarse. Esto permitió simplificar el sistema de canalización ; el siguiente byte de la memoria se obtenía mientras se decodificaba la operación, lo que significa que el siguiente byte se obtenía sin importar nada. Para la mayoría de las instrucciones, este byte sería parte (o la totalidad) de un operando, que luego podría ser alimentado inmediatamente a la instrucción ahora decodificada. [2]

Si la instrucción requería sólo un byte, el procesador leía igualmente el byte siguiente mientras decodificaba el primero. En este caso, el byte siguiente era la siguiente instrucción, pero no tenía forma de volver a introducirla en la primera etapa del proceso para decodificarla. La instrucción obtenida se descartaba y se volvía a leer para introducirla en el decodificador. Esto desperdicia 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, aunque en las fuentes disponibles no se explica si esto se hizo para conservar la simplicidad de su proceso o la temporización de su ciclo. [2]

Mantener la compatibilidad de ciclos 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 las 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]

Otra mejora aborda un problema relacionado con las instrucciones de direccionamiento que suman valores para producir una dirección final. Algunos ejemplos incluyen "indexado indirecto", donde el valor en 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 cruzaba un límite de página, cada 256 ubicaciones, 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 funcionamiento con menor consumo de energía en comparación con las versiones NMOS y HMOS anteriores de la familia 65xx. Está alojado en un DIP de 40 pines que es compatible con el 6502. [3]

CSG4510

CSG4510

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, aún no publicado [5], y en la revisión de coste reducido del Commodore CDTV, aún no publicada. [5] [6]

Aplicaciones

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

Véase también

Referencias

  1. ^ abcdefghijklm "Hoja de datos del microprocesador MOS 65CE02" (PDF) .
  2. ^ abc "Patente estadounidense 5088035: Sistema para acelerar la ejecución de instrucciones de programa por un microprocesador".
  3. ^ "Referencia técnica CSG65CE02 de Commodore Semiconductor Group". zimmers.net. 18 de agosto de 2009. Consultado el 21 de junio de 2013 .
  4. ^ "Cosas de Amiga: Información sobre el hardware del 4510".
  5. ^ ab "Base de conocimientos de Commodore: El Commodore 65".
  6. ^ "Base de datos de hardware de Amiga: CDTV II".
  7. ^ "Cosas de Amiga: Información sobre el hardware del 65CE02".
  8. ^ "Gran libro del hardware de Amiga: Commodore A2232".

Lectura adicional

  • Referencia técnica del CSG65CE02 de Commodore Semiconductor Group
  • 65CE02 Microprocesador (preliminar) (noviembre de 1988)
  • Imágenes del paquete y la matriz 65CE02
  • Perfil de Victor F. Andrade (ingeniero principal LSI 65CE02)
Obtenido de "https://es.wikipedia.org/w/index.php?title=CSG_65CE02&oldid=1227940586"