« Arquitectura de la Super Nintendo (index)

Arquitectura de la Super Nintendo

Chapter 3: CPU


Tabla de contenidos

  1. Modernizando el 6502
  2. La nueva CPU
  3. Las adiciones de Ricoh
    1. Acceso rápido a la memoria
    2. El fallo de segmentación de 16 bits
  4. (Mucha) más memoria

La elección del procesador de la Super Nintendo es peculiar. A diferencia de su competencia, que incluía un 68000 de pleno derecho, el chip de la SNES no supone una ruptura radical con su predecesora. Como ya sabemos, la NES empleó una CPU 6502 modificada, un componente muy apreciado en los ordenadores de finales de los 70 y principios de los 80. Para adaptarse a la nueva década (los 90), Nintendo optó por una solución más conservadora (y más económica): el WDC 65C816, una extensión de 16 bits del 6502.

Modernizando el 6502

El 65C816 tiene su origen en Western Design Center (WDC), y en particular en Bill Mensch, exmiembro del equipo del 6502 (en MOS) y del equipo del 6800 (en Motorola). En 1978, un año después de dejar MOS, Mensch fundó Western Design Center, una empresa de semiconductores que produce clones del MOS 6502 con atractivas mejoras (diseño CMOS, opcodes adicionales, correcciones de circuitería, nuevos modos de direccionamiento, etc.).

Image
El chip WDC 65C816 en el Apple IIGS.

Un día, Apple se acercó a WDC para diseñar una variante del 6502, retrocompatible, que pudiera procesar mayores cantidades de datos. El fruto de ese encargo fue el WDC 65C816, lanzado en 1983. Curiosamente, Apple atravesó numerosos contratiempos en el desarrollo de un ordenador que usara el nuevo procesador, hasta que tres años después lanzó el Apple IIGS.

Image
Al final, el Apple IIGS y la Super Nintendo se convirtieron en los únicos grandes adoptantes del 65C816.

Mientras tanto, Nintendo mantenía una buena relación con Ricoh y su serie de chips hechos a medida para la NES. No he encontrado el documento exacto que explica cómo se conectaron Ricoh y WDC, pero lo que puedo confirmar es que en algún momento WDC acordó licenciar sus diseños del 65C816 a Ricoh . En consecuencia, Ricoh lo adaptó a los nuevos requisitos de la Super Nintendo, convirtiéndolo en el Ricoh 5A22, suministrado en exclusiva a Nintendo.

La nueva CPU

Como ya hemos visto, el procesador principal de esta consola es el Ricoh 5A22, un superconjunto del 65C816.

Image
El chip Ricoh 5A22, que Nintendo denominó 'S-CPU'.

A diferencia del Apple IIGS, que disfrutaba de compatibilidad con el software del Apple II, la Super Nintendo no es compatible con los juegos de NES. Hay que reconocer que, dada la elección del procesador, es posible que la SNES se planease originalmente con esa compatibilidad en mente, quién sabe.

La CPU emplea una velocidad de reloj variable que alcanza hasta 3,58 MHz en operaciones de registro y desciende a 1,79 MHz al acceder a los buses más lentos (por ejemplo, el puerto serie/controlador).

Para entender bien las capacidades del 5A22, conviene repasar primero lo que el 65C816 ofrece de serie:

Dicho todo esto, he de confesar que el 65C816 se antoja excesivamente engorroso para el rendimiento que ofrece. Comparado con propuestas como el Motorola 68000, no es difícil entender por qué el Apple IIGS fue el único ordenador personal en adoptar el 65C816. A lo largo de este artículo, sin embargo, verás cómo Nintendo y Ricoh supieron convertir las limitaciones de esta CPU en oportunidades para renovar su catálogo de juegos.

Las adiciones de Ricoh

En 1983, el 65C816 nació como sucesor generalista de su ancestro de 1975, con todas las exigencias y restricciones que eso conllevaba. Sin embargo, Nintendo planeaba que su consola durase toda la década de los 90, lo que obligó a Ricoh a dar un paso adelante.

Lo primero que había que solucionar eran las limitaciones aritméticas del chip: el 65C816 carece de instrucciones dedicadas para la multiplicación o la división. Por ello, Ricoh incorporó sendas unidades de multiplicación y división, que permiten a la CPU realizar estas operaciones por hardware en lugar de por software. En vez de instrucciones convencionales, se accionan mediante registros.

El multiplicador recibe números de 8 bits y devuelve resultados de 16 bits . El divisor, por su parte, acepta un dividendo de 16 bits y un divisor de 8 bits, y retorna un cociente de 16 bits junto con un resto también de 16 bits . Ambas unidades solo admiten números positivos (sin signo).

Cabe preguntarse qué relevancia tienen estas adiciones. Su importancia se hará evidente cuando exploremos las novedades de los chips gráficos de la Super Nintendo (en la sección 'Gráficos').

Acceso rápido a la memoria

El segundo reto era aumentar el ancho de banda de datos. Para ello, se añadieron dos DMAs (Acceso Directo a Memoria, del inglés 'Direct Memory Access') exclusivos que permiten mover datos sin la intervención de la CPU, obteniendo así mayores velocidades de transferencia. Para que este diseño funcione, las regiones de memoria se referencian mediante dos buses de direcciones distintos :

Al configurar una transferencia DMA, el bus de origen debe ser distinto del bus de destino.

Además, los dos DMAs no son idénticos y cumplen funciones muy distintas :

Por último, el sistema ofrece ocho canales para transferencias DMA, lo que permite despachar hasta ocho transferencias independientes a la vez.

El fallo de segmentación de 16 bits

El primitivo comportamiento de Open Bus también está presente en esta consola. Además, se especula con la existencia de un registro interno llamado Memory Data Register (MDR), que supuestamente almacena estos valores .

En contraste, el 68000 emplea una tabla de vectores para gestionar excepciones, lo que garantiza que la ejecución se redirige ante cualquier fallo.

(Mucha) más memoria

Es fascinante comprobar la cantidad de contenido que la NES lograba mostrar con solo 2 KB de RAM. Pues bien, la Super Nintendo cuenta ahora con 128 KB de RAM (que sigue denominándose 'Work RAM' o WRAM) — un incremento del 6400% en memoria de propósito general respecto a su predecesora.

No obstante, mientras que la NES se beneficiaba de la rápida RAM estática (SRAM), Nintendo optó por usar RAM dinámica (DRAM) para la WRAM de la Super Nintendo. Dinámica, en este contexto, significa que la memoria debe refrescarse periódicamente. El 5A22 se encarga de ello automáticamente, pero durante cada operación de refresco la CPU queda en pausa, lo que supone una ralentización global de aproximadamente un 3% .

Dicho esto, ¿qué pueden hacer los desarrolladores con toda esa memoria? Lo que deseen, en realidad. La WRAM almacena datos variables del juego: cuanto mayor sea el espacio disponible, mayor será la cantidad de información que se puede gestionar (reduciendo así la dependencia del hardware del cartucho).

No obstante, como demostrarán las siguientes secciones, la Super Nintendo es una máquina bastante compleja (pese a su CPU 'simplista'). Suelo referirme a esta consola como una 'colección de mini-ordenadores/subsistemas', y cada subsistema puede necesitar datos de la CPU. Por lo tanto, los programadores reservan porciones de la WRAM para gestionar esa información, lo que justifica la necesidad de los 128 KB.


Previous: 2. Una introducción rápida

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