What if: Modificando Nintendo64

Comentario original:

Précisamente vi anoche ese hilo en Meri, y bueno, es la causa directa de que me haya interesado por el Blog Urian. Se agradece que arrojes aun más luz al respecto, y ya de paso podrías comentar cómo ves la capacidad 2D de la máquina existiendo ejemplos como Mortal Kombat Trilogy o NBA: Hang Time en los que basarse.

La capacidad 2D de la máquina esta muy limitada por el tema del espacio de los cartuchos pero sí la consola hubiese salido con CD-ROM entonces la reina del 2D hubiese sido N64 y no Saturn, el motivo de ello es la enorme tasa de relleno que tiene el RCP cuando no tiene que texturizar nada y solo se dedica a dibujar pixeles, ya lo puse en la entrada sobre N64, pero vuelvo a poner aquí la tabla:

N64Fillrate

Sí la consola se dedica unicamente a dibujar pixeles sin texturizar y sin nada y con una calidad de 32 bits (4 bytes) alcanza una tasa de relleno de 125 Mpixels/seg, incluso teniendo en cuenta la latencia de la memoria es más que suficiente como para darle un bailecito a Saturn y PlayStation en ese aspecto.

Mi propio y torpe “What if” sobre el hard de Nintendo 64, sin salirme mucho del esquema original para no estropear la estética mini y ligera de la consola.

Veamos pues.

Un R-4200 sin retocar de C.P.U. Sigue siendo la versión barata -y supuestamente dirigida a dispositivos portátiles- de la familia R-4000, pero al menos tendría un BUS de 64 bits para comunicarse con el RCP. Le subiría la frecuencia a 100 Mhz, después de todo tengo entendido que estos procesadores y sus sucedáneos llegan fácilmente a los 133 Mhz vía overclok. De hecho vienen de serie preparados para ella con el supuesto mínimo en cien, fue la propia Nintendo quien downgradeó aun más la velocidad del procesador hasta los 93,75

Pero venga, sólo 100 Mhz, no vaya a recalentarse la cosa y crearnos una necesidad de ventilador. Soy pobre hasta para pedir.

Nintendo simplemente cogió el VR4300 fabricado por NEC como CPU para su consola, Siendo el chip utilizado por Nintendo este en concreto:

VR4300

El VR4300/4300i que se utilizo en N64 era un chip bastante pequeño, el empaquetado (un QFP-120) es bastante pequeño. Curiosamente las CPUs de las consolas de Nintendo desde N64 hasta Wii U han sido extremadamente pequeñas y se han movido por ese tamaño o incluso menor, en esta nota de prensa afirman que el hecho de que el bus sea de 32 bits es lo que les permite hacer el chip mucho más pequeño, al poder reducir el número de pines y con ello el tamaño del chip.

El resto de chips fabricados por NEC de la serie R4x00 estaban hechos con un empaquetado del tipo PGA, ¿Que diferencia hay entre el QFP y el PGA? Basicamente el QFP es esto:

quad_qfp100a

Los pines de conexión salen por los cuatro lados, el empaquetado utilizado en el VR4300 tiene las siguientes carácteristicas:

120-qf05

El tamaño del chip unos 28mm por lado. En cambio el PGA es esto otro:

1024px-XC68020_bottom_p1160085

Cuando N64 se empezó a fabricar en masa Nintendo podría haber escogido este otro chip:

VR4400

El empaquetado es un PGA-447 cuyo tamaño es el siguiente:

PGA447

Pasamos de un chip de 28x28mm^2 a un chip de 52.32×52.32mm^2 con solo aumentar el bus de los 32 bits a los 64 bits, esto afecta enormemente la estructura de costes de la consola. No es que quiera tirar por tierra tu idea, es que si se quiere hacer una configuración alternativa se ha de tener en cuenta lo que hay en el mercado y no creo que el VR4300/4300i sea un mal procesador para lo que pretendía ser N64, más bien el problema estaba en otro lado y no en la CPU en si misma.

Memoria SDRAM, pero no necesariamente con un bus “prohibitivo” de 128 bits en la época; sino de 64 bits al estilo NAOMI/Dreamcast, con un tamaño de 8 MB.

La velocidad de reloj del R4300i (no confundir con el R4200) es de 93.75Mhz, su bus es de 62.5Mhz, precisamente tanto la velocidad del RCP (62.5Mhz) y la de la RDRAM (500Mhz, o sea 62.5Mhz*8) por lo que la velocidad del bus de la CPU y la velocidad del RCP dependerá directamente de la velocidad de la memoria que se escoja.. Por otro lado tenemos que tener en cuenta que si mantenemos la configuración de un único pozo de memoria física para todos los procesos entonces nos tenemos que asegurar que dicha memoria sea de doble canal para que el convertidor de señal pueda leer el búfer frontal mientras el bufer trasero es dibujado, esto nos lleva a que la consola tenga que utilizar una memoria diferente a la RDRAM que tenga esa característica.

La única memoria con esa carácteristica es la VRAM, he estado mirando lo que había disponible en la época y ahora entiendo el motivo por el cual Nintendo tiro de la RDRAM para un pozo de memoria unificado, la otra opción era la VRAM y las densidades a las que estaba disponible eran menores por lo que para alcanzar los 4MB eran necesarios una mayor cantidad de chips. En 1995 y 1996 las tarjetas gráficas de 4MB tenían unos cuatro chips de memoria y yo descartaría los 8MB ya que esto significarían unos 8 chips en total. Por otro lado cada chip coge unos 16 bits del bus, por lo que si queremos una configuración de 64 bits entonces la cantidad de chips de VRAM que habría disponibles sería de 4MB, por lo que la densidad de memoria no la podríamos aumentar. Teniendo en cuenta esto tiene sentido lo que hizo Nintendo, es mucho más barato de fabricar un sistema con dos chips de memoria con empaquetado que cuatro chips de memoria con empaquetado.

Por otro lado la velocidad máxima de la VRAM cuando N64 empezó a fabricarse en masa que tenía la VRAM era de 60Mhz, esto significaría una bajada leve en la frecuencia del RCP hasta los 60Mhz y de la CPU a los 90Mhz al cambiar el sistema de memoria pero se puede traducir paradojicamente en un aumento de rendimiento sustancial al reducir el tamaño de la latencia.

Eso si, los cambios en el RCP serían profundos, se ha de tener en cuenta que esta configurado para utilizar el noveno bit de la RDRAM para el búfer de profundidad. Hay memorias que suelen tener 9 bits por byte y se utiliza el noveno bit para paridad, la RDRAM utilizada en N64 es de este tipo mientras que las VRAM que habían en la época no tenían ese noveno bit por lo que el RCP sin cambios puede tener problemas en ese sentido. Por otro lado la memoria a 60Mhz resultaría en un ancho de banda de 480MB/seg vs los 562.5MB/seg de N64, vamos, a que para poder eliminar el problema de la latencia acabaríamos por disminuir la tasa de relleno, es algo curioso.

¿Entonces cual es la solución? Para mi la mejor solución es descartar la VRAM y optar por memoria SDRAM,

  • Asignamos los dos primeros chips de VRAM a la CPU, cada uno de ellos tiene un bus de 16 bits por lo que cubrimos los 32 bits de ancho de banda de la CPU y le asignamos unos 2MB de memoria.
  • 1MB de la VRAM para texturas/patrones/sprites (16 bits).
  • 1MB de VRAM para los búfers de imagen (16 bits).

60Mhz*16 bits (2 bytes) son unos 120MB/seg. Teniendo en cuenta que tenemos dos buses (Z+Color) de unos 2 bytes cada uno de ellos entonces la situación sería de 4 bytes para el backbuffer+z y por tanto la tasa de relleno baja a los 30 Mpixeles/seg. En cuanto al ancho de banda necesario para el bilineal (sin utilizar la cache de texturas) la cosa es más destructiva ya que 120(2 bytes por pixel*4 accesos)… esto son 15 Mpixeles/seg utilizando el bilineal sin que la cache de texturas intervenga…¿Como solucionamos esto?

thinking-meme-52169236096_xlarge

Una configuración alternativa podría ser la siguiente:

  • Asignamos los dos primeros chips de VRAM a la CPU, cada uno de ellos tiene un bus de 16 bits por lo que cubrimos los 32 bits de ancho de banda de la CPU y le asignamos unos 2MB de memoria.
  • 2MB de VRAM para texturas/patrones/sprites (32 bits).
  • 2MB de VRAM para los búfers de imagen (32 bits).

Esto significaría aumentar el número de chips de 4 a 6, es un aumento de coste en si mismo pero la tasa de relleno con el bilineal sin la cache de texturas sería de 30 Mpixeles/seg, puede parecer poco pero para una consola lanzada en 1996 creo que es más que suficiente. 30 Mpixeles/seg sin tener que tirar de la patética cache de texturas hubiese sido una mejor solución. La tasa de relleno de 30 Millones de Pixeles por Segundo es la misma que la de NintendoDS que puede reproducir Super Mario 64 a 60 fotogramas por segundo con dicha tasa de relleno.

¿Costaría mucho subir la frecuencia de reloj del RCP a la velocidad standard de los primeros Power VR, es decir, hasta los 70 Mhz?

Lo de la velocidad de reloj del RCP ya lo he comentado depende de la velocidad de reloj de la memoria, lo he comentado en la sección anterior.

CD-Rom no, a pesar de ser un tiro en el pie a nivel de software, pero creo que juegos como SM 64 perderían mucho feeling con cargas cada X pasos en el castillo. No me arriesgaría a causar esa paradoja temporal. Sí a cartuchos con un mínimo de 256 Mb (32 MB) para que la rom libere a la ram de ciertos depósitos.

Me olvido de momento del chip de sonido, no sabría cual elegir.

¿Podría haberse hecho algo más decente con esta configuración Urian?

En el tema de los cartuchos hay que tener en cuenta el coste de la memoria utilizada en los mismos, una memoria de 32MB de salida hubiese colocado el precio de los cartuchos en la estratosfera. Creo que el enorme error de Nintendo fue no optar por el CD-ROM en una consola que salió en 1996. Cuando Nintendo anuncio en 1994 que no iba a utilizar CDs el coste de una lectora de CDs era muy caro, con cifras de tres dígitos pero en 1996 habían bajado en picado en cuanto a costes por lo que ya no había excusa y sinceramente yo me hubiese comido unos pocos segundos de carga con tal de no tener que comprarme una PlayStation o un PC con aceleradora para disfrutar de ciertos juegos. ¿Entonces como es que no lo hizo Nintendo? Pues por el hecho que les preocupaba enormemente el problema de la piratería y la alta piratería en el PC, PlayStation y Saturn les dio la razón.

En todo caso si Nintendo hubiese utilizado una unidad CD-ROM no hubiese sido una al uso sino una derivada del I+D del CD de SNES.

dsc088567gp

El chip que se ve en el diagrama era el utilizado por Nintendo para comprobar que los juegos fuesen licenciados por ellos, no deja de ser una curiosidad pero estoy seguro que sí Nintendo hubiese sacado una unidad CD hubiese sido como la planeada para SNES:

Anuncios