El ASCII R800 es un microprocesador parcialmente de 16 bits desarrollado por ASCII basado en el Zilog Z800 y fabricado específicamente para computadoras de consumo MSX Turbo R. El objetivo principal de la creación del procesador era obtener el máximo rendimiento manteniendo la compatibilidad con software y hardware más antiguos de los ordenadores MSX que utilizan el microprocesador Zilog Z80 .
Para mantener la compatibilidad del software con el software MSX más antiguo, el R800 utiliza el conjunto de instrucciones del procesador Z80 ampliado. Operaciones de multiplicación de hardware: MULUB (8 bits) y MULUW (16 bits) se han agregado al conjunto de instrucciones Z80 habitual. Además, muchas de las características no documentadas del Z80 se han oficializado, como las operaciones en las mitades de 8 bits de los pares de registros de índice (IXh, IXl, IYh, IYl).
El R800 es una evolución de los procesadores Z800 (microprocesadores de 16 bits compatibles con el Z80), pero carece de algunas de las funciones no documentadas del Z80. Por ejemplo, el estado de los bits 3 y 4 del registro de bandera F no coincide con el estado de esos bits para el procesador Z80 (lo que hace que el R800 falle la prueba ZEXALL ). Además, el comando sin documentar, normalmente llamado SLL, ha sido reemplazado por otro comando, TST, también sin documentar.
Se han producido cambios significativos en el lado del hardware. La ALU interna de 4 bits [1] del procesador ha sido reemplazada por una nueva de 16 bits. Las operaciones como ADD HL,BC (adición de pares de registros), que anteriormente requerían 11 ciclos, se pueden realizar en el R800 en un ciclo bajo ciertas condiciones. La velocidad máxima del reloj se ha aumentado a 7,16 MHz , el doble de los 3,57 MHz estándar que utiliza el procesador Z80 en los ordenadores MSX. El bus de datos siguió siendo de 8 bits para mantener la compatibilidad con el hardware anterior.
Se han realizado cambios adicionales en el mecanismo de obtención del código de operación. El Z80 original usa 4 ciclos para obtener el código de instrucciones simples como OR A, las computadoras MSX también agregan un ciclo de espera debido a su arquitectura. El mecanismo de búsqueda para el Z80 en un entorno MSX típico es el siguiente:
Dado que la mayoría de las implementaciones de RAM en las computadoras MSX están organizadas como un bloque de 256 x 256 bytes , se necesitan dos ciclos de reloj para establecer la dirección de la instrucción. El R800 recuerda el estado de los 8 bits superiores de la dirección, lo que ahorra un ciclo de reloj en caso de que la dirección de la siguiente instrucción no cruce el límite del bloque de 256 bytes. Sin embargo, en el procesador Z80, los valores de los 8 bits superiores de la dirección se pierden durante la regeneración de la RAM, que también debe abordarse.
La solución utilizada en el R800 es utilizar la actualización de bloques completos de RAM, en lugar de actualizar una línea por instrucción. Cada 30 microsegundos , el procesador se detiene durante 4 microsegundos, durante los cuales se actualiza el bloque de RAM. En este caso, no es necesario realizar un proceso de regeneración al procesar cada comando. Debido a esto, y también al uso de una memoria RAM más rápida que no requiere la introducción de un ciclo de espera, las instrucciones simples se pueden ejecutar en un solo ciclo. Sin embargo, esta velocidad solo se puede obtener ejecutando el programa en la memoria RAM de los ordenadores MSX Turbo R. Todos los accesos a hardware externo, como dispositivos conectados a ranuras de cartuchos , requieren la misma cantidad de tiempo que para el procesador Z80. La ROM utilizada en Turbo R tampoco tiene la velocidad suficiente para implementar dicho esquema de obtención de instrucciones, por lo tanto, para aumentar la velocidad de ejecución del código desde la ROM, su contenido se copia a la RAM utilizando hardware Turbo R adicional.
Microprocesadores Zilog | |
---|---|
serie Z80 | |
serie Z8000 |
|
Microcontroladores |
|
Compatible con Z80 |
|