What if: Wii U sin eDRAM

Como no ocurre nada interesante en el mundillo y sinceramente ME ABURRO he decidido hacer una entrada sobre el funcionamiento de la eDRAM de Wii U, más que nada por el hecho de que existe una enorme confusión sobre este componente de la consola de Nintendo, el motivo de dicha confusión es que su tarea en Wii U no es la misma que en otros sistemas donde la memoria embebida es solo accesible por la GPU y es una memoria local de esta. Los 32MB de eDRAM dentro de Wii U son accedidos a través de una interfaz de 1024 bits (ver litografia) a través del controlador de memoria del sistema pero al contrario de lo que ocurre con Xbox One donde su memoria embebida es un espacio exclusivo de la GPU aquí nos encontramos que la CPU también tiene acceso a la misma.

En primer lugar para poder entender Wii U como arquitectura se ha de entender que el chip llamado “Latte” no es una GPU y desde N64 que Nintendo en sus consolas no incluye una GPU al uso sino que integra en un mismo chip los siguientes elementos:

  • Procesamiento Gráfico.
  • Procesamiento del Audio.
  • Gestión de E/S.
  • Gestión de la memoria del sistema.
  • Memoria embebida (desde Gamecube)

En este diagrama de la gente de failoverflow de Wii U deja muy clara la organización interna de los diferentes procesadores:

blockdia_wiiu_full

De todo el “Latte” solo el AMD Radeon GX2 es lo que corresponde a la GPU, el resto son interfaces que no corresponden a una simple GPU, pero para entender mejor como se comunican los diferentes componentes del sistema lo mejor es tener en cuenta la disposición de las memorias en la litografía del Latte.

wiiudie_blocks

Sí os fijáis en la litografía veréis como el GP I/O (que es el nombre que se le da aquí a la interfaz  que comunica CPU y GPU) esta colocado justo al lado de los 32MB de memoria embebida, esto es porque en el caso de Wii U el trabajo de la memoria embebida no es solo hacer de búfer de imagen y cache de texturas para la GPU sino servir de pozo de memoria de proposito general y se la llama MEM1 por el hecho de que en la arquitectura de Wii U hace el mismo trabajo que su homonima de Wii por lo que su velocidad de reloj no es coherente (no es un múltiple de la misma) con la velocidad de reloj de la GPU sino que es coherente con la velocidad de reloj del bus frontal de la CPU. ¿Pero cual es esa velocidad de reloj del bus? Lo sabemos gracias al trabajo de ingenieria inversa de la gente de fail0verflow, aquí:

El Starbucks es el que fija la frecuencia del bus (el Latte SYSPLL) y configura el multiplicador del Espresso (a través de los pines de configuración) y se queda ahí estancada. La velocidad del bus es ~248MHz (casi la misma que la Wii, la cual utilizaba un bus de sistema a ~243MHz), pero el bus del procesador es más ancho. En el modo Wii U, el multiplicador es 5, mientras que en el modo Wii es 3 (y con el SYSPLL fijado en ~243MHz en vez ~248MHz).

En el caso de Wii donde había una sola CPU la comunicación del mismo con la MEM1 se hacía con un bus de 64 bits a 243Mhz, y la de la GPU con un bus con el mismo ancho de banda. La propia MEM1 funcionaba con un ancho de banda de 486 Mhz a 64 bits pero en el caso de Wii U la MEM1 tiene un ancho de banda de 1024 bits de los que la CPU solo necesita una porción por lo que es una tonteria hacer funcionar la memoria embebida a una velocidad mayor e ir intercalando, la cual sería la opción principal si la configuración de memoria fuese como la de Wii pero no es el caso por lo que no hace falta aumentar la velocidad de reloj de la MEM1 de 248Mhz a una cifra mayor ya que el resto del ancho de banda de la memoria se puede utilizar para el acceso de la GPU a los 32MB de memoria embebida. Todo esto significa que el ancho de banda de la MEM1 no es el que mucha gente piensa y proclama sino que es solo de 31.1 GB/seg en total para CPU y GPU.

oh-noes-everybody-panic

oh-no

Es un error, no puede ser tan baja, es imposible que sea tan bajo el ancho de banda de la memoria. 

En la anterior entrada os comente que Wii U estaba diseñada teniendo en cuenta dos elementos: bajo consumo y el diseño industrial de la consola. El hecho de alcanzar los 31.1 GB/seg a través de memoria externa hubiese supuesto cambiar la interfaz de memoria externa la cual en Wii U es de solo 64 bits a 128 bits y de DDR3-1600 (800Mhz de velocidad de reloj) y aumentar la velocidad de reloj de esta, por lo que la memoria embebida en Wii U esta para ahorrar costes, consumo y espacio y poco o nada tienen que ver con una enorme potencia oculta

¿Pero que ocurriria con la MEM1 y la MEM1 en el caso de que la memoria externa tuviese esos 31.1 GB/seg? No hay que olvidar que la MEM2 se utiliza en casos en que es necesaria densidad en la memoria y la MEM1 cuando hace falta ancho de banda, una DDR3 con el ancho de banda de la MEM1 y la densidad de la MEM2 cancelaría la necesidad de dos pozos de memoria en el caso de Wii U y por lo tanto quedaría unificada, pero dicha configuración aumentaría el consumo energético del sistema y el número de chips de memoria aumentaria y con ello los costes relacionados con el sistema.

 

Anuncios