« Arquitectura de la GameCube (index)

Arquitectura de la GameCube

Chapter 3: CPU


Tabla de contenidos

  1. Características
  2. Mejoras de IBM
  3. ¿Un paso adelante o un paso atrás?
  4. Sistema de memoria inteligente
  5. Organizando la memoria y gestionando ARAM

Después de la pérdida del dominio de SGI en el mercado gráfico, Nintendo necesitaba nuevos aliados con los que asociarse.

Image
Construcción del Gekko.

Un candidato prometedor parece ser IBM: Aparte de su famoso trabajo en mainframes, recientemente se aliaron con Motorola y Apple para crear una CPU lo suficientemente potente como para competir con el dominio de Intel en el mercado de PC. El producto resultante es una serie de procesadores que llevan el nombre PowerPC, que se seleccionaron para impulsar el 99% de los Macintoshes de Apple y algunos sistemas integrados.

Saltando al futuro, Nintendo necesitaba algo potente pero barato, así que para cumplir con esas líneas rojas, IBM tomó uno de sus diseños anteriores, el PowerPC 750CXe (encontrado en el último iMac G3, conocido como el Early-Summer 2001), y lo reforzó con capacidades que agradarían a los desarrolladores de juegos. El resultado fue el PowerPC Gekko y corre a 486 MHz.

Características

Vamos a ver qué hace que el Gekko sea tan especial, y para hacer eso necesitamos primero tenemos que ver las funcionalidades del 750CXe :

Adicionalmente, esta CPU también incluye unidades dedicadas para acelerar ciertos cálculos específicos :

Y, por supuesto, también se incluye algo de caché para acelerar el ancho de banda de la memoria:

Mejoras de IBM

Mientras que las características previas son muy apreciadas (comparadas con las generaciones anteriores), esta CPU aún queda por detrás en el rendimiento de juegos, comparada con otras CPU (no olvidemos que esta sigue siendo una CPU de uso general, buena en hojas de cálculo pero mediana con la física). Para compensar, IBM agregó los siguientes ajustes que constituirán el Gekko :

Además de manejar la lógica del juego (física, colisiones, etc.), estas mejoras permitirán a la CPU implementar partes del pipeline gráfico (transformaciones de geometría, iluminación, etc.) con un rendimiento aceptable. Esto es muy importante ya que la GPU solo puede acelerar un conjunto limitado de operaciones, por lo que el resultado final no está condicionado por las limitaciones de la GPU.

¿Un paso adelante o un paso atrás?

En tu artículo de la Nintendo 64, explicaste que el sistema tiene una CPU de 64 bits, pero la de GameCube es de 32 bits. ¿Acaso Nintendo degradó su consola?

Es cierto que Gekko implementa una especificación PowerPC de 32 bits, mientras que el MIPS R4300i puede alternar entre modos de 32 y 64 bits. Para responder si esto es una mejora o no, debes preguntarte: ¿Por qué necesitarías '64 bits'?

Como pueden ver, la GameCube ya disfruta de las ventajas de los sistemas de 64 bits sin que fuera una 'consola de 64 bits'. Y por ende, no se puede resumir estas dos máquinas complejas por su 'número de bits'.

Sistema de memoria inteligente

Durante el diseño de la arquitectura de próxima generación, los arquitectos de Nintendo realizaron un análisis postmortem de su diseño anterior y descubrieron que el uso de una arquitectura de memoria unificada junto con algunos componentes de alta latencia (RDRAM) resultó en una de las mayores causas de cuellos de botella (casi el 50% de los ciclos de la CPU se desperdiciaron durante el tiempo de inactividad) . Además, la inclusión de múltiples unidades independientes contribuyó a una competencia preocupante por el bus de memoria.

Por esa razón, los arquitectos de GameCube idearon un nuevo sistema de memoria estrictamente basado en proporcionar espacio de memoria dedicado y usar chips de baja latencia. Con el nuevo diseño, la GPU y la CPU ya no competirán por la misma RAM (causando problemas de fill-rate) ya que la GPU ahora tendrá su propia memoria interna y increíblemente rápida. Por otro lado, la GPU aún estará a cargo de arbitrar el acceso a E/S también.

Image
Organización de la memoria en este sistema.

El resultado fue un sistema organizado con dos buses principales:

Además, este diseño contiene un bus adicional (aunque inusual) donde se puede encontrar más memoria:

En general, esto significa que, aunque ARAM proporciona una cantidad considerable de RAM, estará limitado a tareas menos críticas, como actuar como un búfer de audio o ser utilizado por ciertos accesorios (explicado en la sección de E/S).

Organizando la memoria y gestionando ARAM

Hasta ahora, hemos visto que, en teoría, las capacidades de memoria son indudablemente superiores a su predecesor, pero aún hay margen de mejora. Por ejemplo, Nintendo pudo haber incorporado más hardware para integrar ARAM en el mapa de memoria de la CPU.

En relación con esto, vamos a revisar el MMU utilizado en Gekko. La CPU, con su bus de direcciones de 32 bits, puede acceder hasta 4 GB de memoria, pero el sistema no alberga esa cantidad. Por lo tanto, para evitar exponer direcciones de memoria no pobladas (e impredecibles), la dirección de 'memoria virtual' se activa por defecto para enmascarar las direcciones físicas con un mapa de direcciones 'virtual' más seguro, fácilmente cacheable y continuo .

Para que esto funcione, Gekko (y otras arquitecturas PowerPC) traduce direcciones virtuales a físicas con el siguiente proceso:

  1. Realiza Traducción de direcciones de bloque (BAT): Hay ocho pares de registros programables (cuatro para datos y cuatro para instrucciones) donde cada par mapea un rango de direcciones virtuales a un rango continuo de direcciones físicas. La MMU intenta encontrar la dirección física si se encuentra dentro de esos rangos.
  2. Si BAT no funcionó, lee la Tabla de páginas: La MMU también almacena una tabla que cataloga la ubicación física de las páginas (bloque de direcciones virtuales).
    • La MMU puede tardar en leer una tabla de páginas, por lo que se incluye un búfer de traducción adelantada (TLB) para almacenar en caché lecturas recientes.
    • Otras arquitecturas como x86 o MIPS también proporcionan paginación, aunque no todas ofrecerán un TLB.
  3. Finalmente, si la dirección virtual solicitada aún no se puede traducir, la MMU desencadena una excepción de 'falla de página' en la CPU y deja que el sistema operativo decida qué hacer a continuación.

Entonces, ¿qué utilidad tiene esto para los desarrolladores? Bueno, resulta que Nintendo lanzó algunas bibliotecas que extienden la RAM principal usando ARAM con la ayuda de la paginación. Para resumir, ARAM no es direccionable, pero la CPU puede llamar a DMA para obtener y almacenar datos allí. Por lo tanto, la CPU puede mover páginas de la RAM principal para hacer espacio para otros recursos y almacenarlos temporalmente en ARAM. Después de eso, cada vez que se produce un fallo de página, el sistema operativo contiene rutinas para buscar las páginas faltantes en ARAM y restaurarlas a su ubicación original en la RAM principal.

En conclusión, con algunos trucos ingeniosos, estas capacidades de propósito general permitieron a los juegos de GameCube disfrutar de más memoria de la permitida técnicamente, alcanzando así niveles de calidad superiores. Aunque es importante tener en cuenta que tales trucos pueden venir con algunas sanciones de rendimiento (especialmente si se dan por sentadas).


Previous: 2. Una 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