« Arquitectura del Neo Geo (index)

Arquitectura del Neo Geo

Chapter 3: CPU


Tabla de contenidos

  1. Una multitud de chips de soporte
  2. Gestión sofisticada de la E/S
  3. Comunicación entre procesos
  4. Prevención de contratiempos
  5. Memoria disponible

El sistema cuenta con una configuración de doble procesador compuesta por un Motorola 68000 y un Zilog Z80, dos grandes iconos de la electrónica de los años ochenta. El 68000 se encarga de ejecutar el programa principal (también conocido como el juego), mientras que el Z80 queda relegado a la gestión del sonido . Puede que recuerdes funciones idénticas en el Mega Drive/Genesis, pero ahí terminan las similitudes, ya que las variantes de chip y la disposición del hardware difieren considerablemente.

Image
El chip Motorola 68HC000 en el interior del Neo Geo; este ejemplar es de segunda fuente, fabricado por Toshiba.

A modo de ejemplo, el 68000 del Neo Geo funciona a 12 MHz (4 MHz más rápido que el del Mega Drive). Además, el chip concreto instalado es el 68HC000, una variante que se distingue por el uso de puertas CMOS (en contraposición al proceso NMOS anterior y menos eficiente).

Si deseas conocer el interior del 68000 y del Z80, ya los analicé en los artículos del Mega Drive/Genesis y del Master System, respectivamente. Por tanto, en el estudio del Neo Geo me centraré en sus nuevos usos.

Una multitud de chips de soporte

La diferencia más notable entre el Neo Geo y cualquier consola doméstica de su generación es que, durante el diseño del primero, SNK no estuvo limitada por las restricciones presupuestarias del hogar medio. Gracias a ello, la placa base incorpora un extraordinario número de controladores integrados que no solo eliminan gran parte de los cuellos de botella de las CPU, sino que también amplían sus capacidades.

La lista de chips es extensa, pero lo más desconcertante es que, a lo largo de las revisiones, SNK rediseñó el chipset, ya fuera unificando varios chips o dividiéndolos. Por ahora, basta saber que la placa base contiene los siguientes grupos de 'aceleradores':

A partir de ahora, utilizaré estos nombres para referirme a cualquier grupo a lo largo del artículo. En algunos casos, también nombraré chips concretos dentro de los grupos para destacar su especial relevancia.

Gestión sofisticada de la E/S

Permíteme presentarte una notable capacidad del 68000 que todavía no he tratado: la tabla de interrupciones vectorizada. Las CPU anteriores, como el 6502 y el Z80, tenían un diseño limitado para gestionar la comunicación E/S. Cuando un dispositivo externo reclamaba la atención de la CPU, este debía enviar una solicitud de interrupción que, a su vez, requería que la CPU ejecutara una rutina de software para procesarla. La información proporcionada durante la solicitud era muy escasa, lo que obligaba a la CPU a invertir ciclos adicionales en averiguar 'quién' había desencadenado la interrupción y 'por qué'.

Cabe señalar que CPU como el Z80 disponían de circuitería adicional para que el periférico indicara a la CPU qué instrucción ejecutar a continuación. Sin embargo, esta solución no se adoptó de manera generalizada.

El 68000 mejoró esta técnica tratando las interrupciones como excepciones. Los periféricos están obligados a identificarse cuando interrumpen a la CPU . Esta utiliza el identificador para componer una dirección de memoria que, a su vez, apunta a una rutina de software específica. En definitiva, esto permite a los programadores gestionar la comunicación E/S de forma eficiente, ya que pueden catalogar sus manejadores de interrupción dedicados en una zona de memoria llamada tabla de autovectores, y la CPU los ejecutará automáticamente.

El Neo Geo saca partido de este diseño con la incorporación de un chip controlador llamado NEO-E0. En esencia, tanto el Sistema Operativo del Neo Geo como el juego implementan una tabla de excepciones dedicada: la del SO se centra en la comunicación con el hardware, mientras que la del juego se usa durante la ejecución normal. No obstante, el 68000 solo conoce una de ellas en cada momento. Por eso, el NEO-E0 proporciona un cambio de bancos automático que garantiza que el 68000 lea siempre de la tabla correcta.

Comunicación entre procesos

Cuando un sistema cuenta con una disposición de doble procesador, ha de existir algún medio para que ambas CPU se comuniquen. En esta consola, SNK implementó la comunicación entre procesos (IPC, del inglés Inter-Process Communication) mediante un chip árbitro de E/S. Este expone un único registro de 8 bits en el que el 68000 puede escribir .

Image
Representación del canal IPC entre el 68000 y el Z80.

Una vez actualizado el registro, el árbitro enviará una interrupción no enmascarable al Z80. A partir de ese momento, el Z80 puede leer el valor (mapeado en un puerto) y reaccionar en consecuencia. Esto incluye volver a escribir en ese registro, de modo que el 68000 recibe nuevos datos. Sin embargo, por algún motivo, el 68000 no recibe ninguna interrupción (por lo que debe realizar algún tipo de sondeo).

El árbitro de E/S propiamente dicho ha ido cambiando con las sucesivas revisiones de la placa base: en un primer momento se implementó con el chip 'PRO-B0', que más tarde fue sustituido por el 'NEO-C1'.

Prevención de contratiempos

Hablando de interrupciones, algo que los muebles arcade no pueden permitirse es requerir un mantenimiento constante.

No es ninguna novedad que los juegos se congelen de repente por culpa de un fallo de software. El remedio tampoco es ningún misterio: basta con apagar y encender, y volver a empezar. Ahora bien, imagina que esto le ocurriera a un mueble arcade. A menos que el propietario estuviera cerca, el mueble averiado no haría más que perder dinero.

El Neo Geo —heredero de los requisitos de las máquinas de monedas— incorpora un proceso de 'autoreparación' mediante un programa Watchdog, alojado en el chip árbitro de E/S .

Image
Los muebles arcade no pueden permitirse estar continuamente en mantenimiento. Ya tienen bastante con intentar atraer jugadores.

El sistema funciona de la siguiente manera: los juegos deben notificar periódicamente su presencia al watchdog (escribiendo en un registro concreto). Si transcurrido un tiempo determinado el watchdog no recibe ningún ping, asumirá que el programa se ha congelado y procederá a reiniciar el sistema.

Gracias a ello, los propietarios de MVS no necesitaban vigilar constantemente sus muebles. Por su parte, esos afortunados chavales que podían permitirse un sistema AES ni siquiera tenían que moverse de sus lujosos sofás cuando sus juegos se colgaban.

Por si eso fuera poco, las placas base MVS complementan este sistema con un microcontrolador adicional: el NEO-F0. Este controla el mecanismo de bloqueo de monedas, que impide a los usuarios malgastar monedas en sistemas averiados , entre otras funciones.

Memoria disponible

La memoria está distribuida entre la placa base y el cartucho de juego (que, por cierto, es de proporciones considerables). Recuerda que se trata de un sistema costoso, por lo que el ancho de banda y la capacidad de memoria eran prioridades absolutas.

En cuanto a la memoria de uso general, el 68000 dispone de 64 KB de RAM. El Z80, por su parte, cuenta con 2 KB.

Los modelos MVS incluyen además otros 64 KB. Estos cuentan con batería de respaldo y están destinados a almacenar puntuaciones de juego, por lo que no están disponibles para uso general.

Curiosamente, este sistema no incorpora ninguna forma de Acceso Directo a Memoria (DMA) para acelerar las transferencias de datos. Supongo que no es un requisito, teniendo en cuenta el número de buses dedicados.


Previous: 2. Breve introducción

Next: 4. Gráficos


Rodrigo Copetti © 2026 RSS Feed

Ir a la edición moderna

Inicio · Escritos · Soporte · Acerca del autor · Acerca del sitio web