La nueva generación de videoconsolas

Anuncio
La nueva generación de
videoconsolas
Aspecto externo de:
- Xbox 360 (izquierda)
- Playstation 3 (arriba)
El realismo de los videojuegos
Esta presentación intentará delinear los sistemas empleados para conseguir el
alto nivel de complejidad que los videojuegos han alcanzado, centrándose en
los últimos y más actuales sistemas; la Xbox 360 y la Playstation 3, aún ni
siquiera lanzada en Europa.
Las videoconsolas clásicas
Históricamente, las videoconsolas han sido sistemas con una CPU, su memoria principal
(RAM), un chip encargado de las tareas gráficas, y una memoria de vídeo dedicada
(VRAM).
Este esquema se consolidó en el año 1986 con el lanzamiento en Japón de la Famicom,
conocida en el resto del mundo como NES, o simplemente, Nintendo.
El chip gráfico era en sí, un procesador, con su propia memoria,
que apoyaba a la CPU en lo referente a:
- La generación de la imagen
- La paleta de colores
-Gestión de los planos de scroll (que representan el mundo
mostrado en el juego)
-Manejo de sprites (las entidades móviles que interactúan
entre sí, como son el personaje, los
enemigos, los objetos, etc.)
Este chip era necesario, pues las CPUs económicas de la época no eran suficientemente
potentes como para manejar por sí mismas juego mínimamente complejos. La CPU sigue
siendo el procesador principal, que controla al chip gráfico, habitualmente mediante puertos
mapeados o no en memoria, así como al resto del sistema.
Ejemplos de consolas clásicas
Desde la Nintendo, en 1986, hasta la aparición de la Playstation, en 1995, el esquema de las
videoconsolas permaneció bastante inalterado. No obstante, hubo una evolución.
La generación de los 8 bits. 1986-1991 (Nintendo, Master System, Turbo Grafx,…)
La generación de los 16 bits. 1991-1995 (Super Nintendo, Megadrive, Neo Geo,…)
Los 16 bits supusieron un aumento en la velocidad de procesamiento, y en las capacidades
gráficas de las consolas (más colores, más resolución, más sprites, más planos de scroll, …)
A la izquierda se ve una placa de Nintendo.
En amarillo, la CPU
En rojo, la PPU (Picture Processing Unit)
En verde, la RAM
En azul, la VRAM
En gris, el chip de bloqueo zonal, que impide
que se ejecuten juegos extranjeros o no
originales. Este chip, llamado CIC, estaba
presente solo en la Nintendo y la Super
Nintendo.
La evolución de las videoconsolas
En 1995 Sony lanzó la Playstation, que estableció la era
de los 3D en los videojuegos. Las consolas debían
enfrentarse al nuevo reto que suponían las aplicaciones
tridimensionales: muchas operaciones de coma flotante, y
mucho ancho de banda.
La Playstation 2 (2000), la Xbox (2001) y la Gamecube (2001),
consolidaron los 3D. Las tres son sistemas diseñados y
optimizados para el procesamiento de aplicaciones
tridimensionales de gran carga computacional. Las CPU
empleadas, de 32 y 64 bits, oscilan entre los 300 y los 700 MHz,
emplean avanzadas técnicas de pipeline y soportan la ejecución
fuera de orden y superescalar.
Todas ellas disponen de una GPU* excepto la Playstation 2, que
emplea una serie de coprocesadores vectoriales, de alto rendimiento
en coma flotante, que se dedican al cálculo de la geometría (alojados
junto a la CPU en el Emotion Engine, izquierda, cerebro de la PS2).
* chip gráfico, que además del renderizado, se encarga de tareas de
transformación de geometría, que liberan aún más carga a la CPU.
La llegada del multithreading a las
videoconsolas
La Xbox 360 y la Playstation 3 suponen un cambio de filosofía respecto a sus predecesoras,
pues para aumentar el rendimiento de sus CPUs, apuestan por el empleo de varios core, y la
supresión de las capacidades de ejecición fuera de orden.
La CPU de la Xbox 360 (Xenon) es de tres cores, y funciona a 3,2GHz. Teniendo en cuenta
que el procesador de PC más potente del momento, el Core2Duo, fue lanzado medio año
después, en un rango de frecuencias de 1,8 a 2,6GHz, y es de dos cores, puede parecer que
el Xenon es una CPU monstruosa. No obstante, hay “truco”.
El Core2Duo es fruto de una larga evolución, dispone una capacidad de ejecución
fuera de orden fabulosa, así como muchas funciones que optimizan la ejecución de
las instrucciones (micro y macro fusión, mejor decodificación, memory
disambiguation, predicción de saltos,…). En definitiva, la planificación de la
ejecución es muy compleja. Mientras, en el desarrollo del Xenon se optó por
prescindir de esta circuitería. Se le ha quitado la "inteligencia" para planificar la
ejecución del código, lo cual abarata costes, y ahorra espacio en silicio, que ahora
se puede aprovechar para integrar más cores, más caché, etc. Una filosofía de
diseño totalmente distinta. De otro modo no se podrían haber integrado más de 2
cores, pues se hubiera requerido tecnología de 65nm, no disponible en el momento.
El Xenon no tiene más opción que ejecutar las instrucciones tal y como vienen. Por tanto, un Athlon de
doble core a 2,6Ghz, puede ser suficiente para derrotar al Xenon en aplicaciones de propósito general.
Entonces, ¿cúal es la ventaja? Pues como ahora veremos, radica en el paralelismo a nivel de threads (TLP)
TPL frente a ILP
La ejecución fuera de orden y las arquitecturas superescalaras, están enfocadas a
explotar el IPL (paralelismo a nivel de instrucción), esto es, el ejecutar el mayor
numero de instrucciones simultáneamente. Otras técnicas empleadas son el
pipeline, el renombramiento de registros, la ejecución especulativa, y la predicción
de saltos.
El Xenon, aunque tiene un pipeline largo, no soporta ejecución fuera de orden, y
aunque es superescalar, no al nivel de otros procesadores. Su objetivo es explotar
el TPL (paralelismo a nivel de thread). Es decir, ejecutar varios hilos de ejecución
en paralelo, a costa de optimizar la ejecución de un solo flujo de instrucciones.
El Xenon puede ejecutar hasta 6 threads.
Para que los juegos de Xbox 360 aprovechen
bien el hardware, deben organizar el código de
manera que se pueda dividir en threads.
Deben, además, de tener ciertas cosas en
cuenta. No se pueden programar de cualquier
modo, pues el rendimiento se degradaría, al no
tener la versatilidad de un procesador de PC.
Esquema general de una Xbox 360
Aspecto físico de la Xbox 360
Abajo se ve la placa base de la
consola, sin los disipadores de
calor.
A la derecha, una vista cercana
de la CPU, con restos de
silicona termoconductora.
Introduccion a la CPU de la Xbox 360
El Xenon
Es un único chip, compuesto de 165 millones
de transistores, que alberga 3 procesadores.
Está fabricado en tecnología de
90nm CMOS, usando la técnica SOI.
Cada core, basado en la arquitectura PowerPC,
dispone de 32Kb+32Kb de cache L1
(instrucciones y datos). La caché L2, de 1Mb,
es compartida por los 3 procesadores.
Su ancho de banda con el bus de sistema es de
21.6Gb/s.
Los procesadores funcionan a 3,2GHz, aunque
ciertas partes del integrado funcionan a
1,6GHz. Las señales de reloj son generadas
por 4 PPLs integrados en el chip.
Core del Xenon
Cada core es capaz de traer hasta 4
instrucciones de memoria por ciclo,
hasta un buffer de instrucciones, de
donde se van despachando a un ritmo
máximo de 2 por ciclo, lo cual permite
que cada core sea capaz de ejecutar 2
hilos de ejecución (threads).
Cada core dispone de 5 unidades de
ejecución:
- 1 VMX (vectorial unit)
- 1 FPU (floating point unit)
- 2 FXU (fixed point unit)
- 1 LSU (load-store-unit)
Además de dispone de una unidad de
predicción de saltos, con 4k entradas
por thread de BHT (Branch History
Table).
GPU
Una GPU se encarga de las tareas gráficas de
transformación y renderizado, esto es, cálculos
de la geometría, iluminación, texturizado,
efectos, y generación de la imagen.
Los vertex shaders se encargan de los
cálculos matemáticos, que permiten determinar
la posición y orientación de los polígonos en el
plano bidimensional de la imagen. Además,
permite aplicar efectos a los vértices.
Luego, cada polígono es rasterizado, es decir,
convertido a una serie de píxels que lo
compondrán. El resultado de esta etapa pasa a
los pixel shaders, que realizan operaciones
sobre los pixeles, calculan su color,
profundidad, texturizan, aplican efectos, etc.
Los pixeles procesados son almacenados en
la memoria de video, listos para ser
ensamblados en la imagen final, que pueda ser
mostrada en pantalla. De esta tarea se
encargan los ROP
La GPU de la Xbox 360. Xenos
En la Xbox 360, el Xenos (GPU) propone algo un tanto distinto; una arquitectura
unificada, donde los vertex shader y los pixel shaders se funden. El Xenos fue la
primera GPU en emplear este sistema, y dispone de 48 shaders, que se pueden
encargar tanto de procesado de vértices, como de píxels.
Fue diseñada por ATI, emplea más de 300 millones de transistores, y está
constituido por 2 dies, el core gráfico, y el core hijo (que contiene los ROPs y una
memoria eDRAM integrada de 10Mb que sirve de gran caché gráfico). En su
desarrollo trabajaron 175 ingenieros.
Rendimiento gráfico de la Xbox 360
El Xenos dispone de 48 shaders, y funciona a 500MHz. Cada shader es capaz de realizar 10 operaciones en
coma flotante por ciclo de reloj, lo que, simplificadamente, le confiere la capacidad de hacer 240 GFLOPS
(500Mhz*48*10). A modo de comparación, la Playstation 2 era considerado un maquinón en coma flotante,
con 6,2 GFLOPS, y ninguna de las consolas de la generación PS2-Xbox-GC supera por mucho esta cifra.
Como la GPU dispone de 8 ROPs, cada uno de los cuales puede generar un pixel, para ser mostrado
por pantalla, resulta que su fill-rate es de 4000 Mpíxels/s. (500MHz * 8)
La geometría se cálcula sabiendo que 4 vertex shader pueden calcular un polígono por ciclo de reloj
48 * 500Mhz / 4 = 6000 millones polígonos/s, si todos los shaders se dedicaran a ello. Aún así, la Xbox
360 no es capaz de mover más de 500 millones por segundo (debido a otra limitación).
Xbox 360
Xbox
MHz
500 MHz
233 MHz
Vertex Shaders
-
2
Píxel Shaders
-
4
Shaders (unificados)
48
-
TMU (Unidades de texturas)
32
8
ROPs
8
4
Píxel Fill-rate (Mpíxels)
4,000
932
Geometría (sin pixel ops)
6000 Mpol/s
116 Mpol/s
Geometría*
1000 Mpol/s
116 Mpol/s
* Usando 8 shaders para vertex
Antialiasing
El Xenos permite realizar un antialiasing 4x casi sin penalización, gracias al core hijo
La memoria unificada de la Xbox 360
Los 512 Mb de memoria RAM de la Xbox 360 son compartidos por la CPU y la GPU. Es
de tipo GDDR3, funcionando a 700MHz (que efectivamente suponen 1400MHz). Se trata
de una evolución de la memoria empleada en la Xbox (DDR) que funciona a 400MHz
efectivos. Los buses de datos de las memorias de ambas Xbox son de 128 bits.
Por tanto, el ancho de banda de la memoria de Xbox es 6.4Gb/s
Y el ancho de banda de la memoria de Xbox 360 es 22,4Gb/s (3,5 veces superior).
La ventaja de la memoria unificada es que es más flexible. En teoría, se podría llegar a
usar 412Mb de RAM como memoria de vídeo, siempre y cuando se pudiera trabajar con
unos 100Mb de memoria para datos y programa, algo que podría ser factible.
Una desventaja de este sistema, es que como la CPU tiene que acceder a la memoria a
través del Xenos, los datos tienen que viajar por el bus que comunica la CPU con el
Xenos, reduciendo el ancho de banda restante entre ambos procesadores.
A continuación indico los principales anchos de banda de varias consolas (Gb/s):
Xbox 360
Playstation 2
Xbox
CPU-RAM
10,8 (2x)
2,4
1
GPU-RAM
22,4
2,4
6,4
CPU-GPU
10,8 (2x)
1,2
1
Aspecto del Xenos
Xbox 360 y su predecesora
Esquema general de una
PlayStation 3
Aspecto físico de la Playstation 3
El Cell
Es un único chip de 234 millones de
transistores, que alberga un procesador
principal (PPE) y 8 coprocesadores
vectoriales (SPE), funcionando a 3,2GHz.
Está fabricado en tecnología de
90nm CMOS, usando la técnica SOI.
El PPE está basado en la arquitectura
PowerPC, capaz de ejecutar 2 threads,
como el Xenon.
Los SPE se encargan del cálculo vectorial
en coma flotante. Cada SPE dispone de
128 registros y 256Kb de memoria local.
Además, hay una L2 de 512Kb.
Todos los componentes están unidos por
un interfaz de alta velocidad.
La GPU de la Playsation 3. El RSX
La Playstation 3 tiene una GPU de bastante potencia,
fabricada por NVIDIA, en tecnología de 90nm, y equiparable
en muchos aspectos a una Geforce 7800 GTX*.
Al contrario que el Xenos de la Xbox 360, el RSX sigue una
arquitectura clásica, y por tanto dispone de vertex y pixel
shaders. En concreto, tiene 8 unidades de vertex shaders, y
24 de píxel shaders, así como 8 ROPs, y trabaja a 500MHz.
* una tarjeta gráfica de equiparable potencia saldría por algo más de 200 euros, a fecha del lanzamiento de la consola.
Rendimiento gráfico del RSX
Los vertex shaders del RSX son igualmente capaces de hacer 10 operaciones en coma
flotante por ciclo (como los del Xenos). Pero los píxel shaders son más robustos, pues
permiten hacer 20 operaciones, al disponer de 2 unidades de ejecución vectoriales, y 2
escalares.
El Xenos es capaz de hacer 240 GFLOPS
(500MHz * 48 shaders * 10 FLOPS)
En el RSX, los vertex shaders son capaces de hacer
40GFLOPS (500MHz * 8 shaders * 10 FLOPS).
Y por otro lado, los píxel shaders alcanzan los 240GFLOPS
(500MHz * 24 shaders * 20 FLOPS)
En total, 280GFLOPS.
Este análisis está simplificado, y se refiere
únicamente a operaciones shader sobre píxels y
vértices, no teniendo en cuenta otras operaciones
y contribuciones
En diferentes demostraciones, Sony ha
utilizado esta arquitectura, por ejemplo, para
calcular escenarios con miles de personas,
cada una con su física, propiedades y
autonomia.
Comparativa gráfica
Xbox 360 – Playstation 3
Ambas GPUs son fruto de distintas filosofías de diseño. El rendimiento dependerá de la
aplicación en concreto, y el aprovechamiento que se haga. Por ejemplo, mientras el Xenos
tiene 10Mb de memoria integrada, el RSX no dispone de ella, y debe guardar todos los buffers
y texturas en la memoria de vídeo, 10 veces más lenta. Además, el Xenos tiene la libertad de
poder balancear el número de shaders que dedica a vértices y a píxeles, mientras que el RSX
es fijo. Aunque lo compensa, al tener unos píxel shaders más robustos (normalmente las
aplicaciones 3D actuales requieren mucho más trabajo sobre píxels que sobre vértices).
Xbox 360
Plastation 3
Xbox
MHz
500 MHz
500 MHz
233 MHz
Vertex Shaders
-
8
2
Píxel Shaders
-
24
4
Shaders (unificados)
48
-
-
TMU (Unidades de texturas)
32
24
8
ROPs
8
8
4
Memoria de vídeo
512 Mb (shared)
256 Mb
64 Mb (shared)
Ancho de banda (Gb/s)
22,4 + 256 (eDRAM)
22,4
6,4
Geometría*
1000
1000
116
Píxel Fill-rate (Mpíxels )
4,000
4,000
932
La guerra de los polígonos
Desde la aparición de los 3D, las compañías usan a su favor los datos numéricos y
especificaciones técnicas como campaña publicitaria, a menudo dando estimaciones
puramente teóricas e inalcanzables, en entornos ideales. En la práctica, se requiere
un buen conocimiento de hardware para interpretar adecuadamente la información, y
no dejarse sorprender por datos irreales.
La Playstation 2 fue lanzada en el 2000 con la cifra oficial de 66 millones de polígonos
por segundo, algo que jamás podría imaginarse en un juego real. Se deriva
teóricamente de su alta capacidad de relleno, pero en la práctica, la consola está
limitada por su ancho de banda y su capacidad para calcular tan alta tasa de
geometría. Una cifra más realista, obtenida en juegos reales, podría ser entre 10 y 20
millones de polígonos
De nuevo, aunque sus shaders podrían llegar a tasas más altas, la Playstation 3 y la
Xbox 360 están limitadas a 250 y 500 millones de polígonos por segundo,
respectivamente. No obstante estos valores son altísimos y seguramente no se
alcanzarán. El potencial extra de los shaders no se pierde, pues se pueden emplear
en aplicar más operaciones a cada uno de los vértices.
Comparativa de memoria
La Playstation 3 dispone de 512Mb de memoria, como la Xbox 360, pero no unificada.
256Mb de memoria principal (XDR), y 256Mb de memoria de vídeo (GDDR3)
La memoria gráfica es del mismo tipo que la memoria de la Xbox 360, GDDR3 a 700MHz.
La memoria principal es distinta, XDR, que funciona a la impresionante velocidad de 3,200MHz.
Pero ojo, su anchura de bus es de sólo 64 bits. Por lo tanto es poco más rápida que la memoria
a 1400MHz de la Xbox 360, cuyo bus es de 128 bits. La XDR está basada en la RAMBUS, un
tipo de memoria, ya usada en la Playstation 2, y que llegó a emplearse en los PC, pero sin
éxito (RIMM). Por tanto, es muy distinta a la familias DDR, la más común actualmente.
La Xbox 360 tiene la ventaja de tener 10Mb de memoria integrada en la GPU, más del doble
que cualquier otra consola (la Playstation 2 disponía de 4Mb, y la Gamecube de 3Mb). Aunque
por desgracia, cuando usa resoluciones de pantalla de alta definición (720p o 1080i), y
antialiasing, la memoria integrada de 10Mb no es suficientemente grande para alojar el buffer
de la pantalla, y la imagen debe renderizarse por partes (tile rendering).
Playstation 3
Xbox 360
Gamecube
Playstation 2
Xbox
CPU-RAM
25,6 Gb/s
10,8 Gb/s (2x)
1,3Gb/s
2,4 Gb/s
1 Gb/s
GPU-RAM
15+20 Gb/s
22,4 Gb/s
3,6 Gb/s
2,4 Gb/s
6,4 Gb/s
CPU-GPU
15+20 Gb/s
10,8 Gb/s (2x)
1,3 Gb/s
1,2 Gb/s
1 Gb/s
Pipeline de los PPE
Las siguientes transparencias son sólo ilustrativas, y pretenden
mostrar la complejidad que pueden alcanzar algunos pipelines.
IC: Fases de busqueda
de instrucción, y su
transferencia al front-end.
Se hace parte de la
decodificación, para
identificar saltos.
IB: Alineamiento y parte
de la decodificación.
MC: Fases de decodificación por microcódigo, para
instrucciones complejas que no pueden ser
decodificadas por hardware.
ID: Principales fases de
decodificación, para
aquellas instrucciones
que pueden ser
directamente
decodificadas por
hardware.
Pipeline (2)
IS: Las instrucciones pasan a
la unidad de control, donde
son despachadas en orden a
las unidades de ejecución.
DLY: Su misión es asegurar
que el retardo de cableado no
limita la frecuencia de trabajo.
RF: Fases de lectura de
registros, para llevar los datos
a la unidades de ejecución..
EX: Fases de ejecución: Su
longitud depende de la
instrucción particular.
Conclusión
Las arquitecturas de propósito específico pueden obtener un mayor rendimiento que un
sistema de propósito general, pues aprovecha al máximo los recursos de la máquina.
Además, el diseño gira en torno a la optimización de un cierto tipo de aplicaciones, lo que
simplifica la tarea; no tiene porque rendir bien en cualquier ámbito.
Las consolas de videojuegos lo han aprovechado desde hace más de 20 años.
La Nintendo usaba un 6502, una CPU que funcionaba a 1,79 MHz y era de sólo 8 bits
(registros, ALU y bus de datos). Empezaba a emplear algunas técnicas muy arcaicas de
segmentación, pero era una CPU muy lenta. Pero barata, y eso era imprescindible.
Como Nintendo tenía su objetivo muy claro, se diseño un chip llamado PPU (Picture Procesing
Unit) que dotaba a la CPU de una serie de funciones fijas que aceleraban los tratamientos de
los planos de scroll, sprites y paletas de colores. Las funcionalidades gráficas de la consola
estaban , por tanto, limitadas, pero permitieron la ejecución de juegos avanzados para su
época, en un sistema con una CPU muy poco potente, que apenas contaba con 2Kb de
memoria RAM, y 2Kb de memoria de vídeo. La Nintendo no tenía sistema operativo, ni BIOS,
ni nada. Los juegos iban en cartuchos, en memorias ROM de semiconductor.
En un PC, gran parte de la memoria RAM y rendimiento de la CPU es consumida por el
sistema operativo, gestión de memoria, y por códigos que se ven obligados a funcionar en un
abanico muy amplio de hardware posible. Y por lo tanto, se requiere un hardware más potente
que el de una videoconsola, donde este tipo de sobrecargas son mucho menos fuertes, al ser
un sistema cerrado.
Fuentes
Esta presentación es una adaptación de un artículo mío publicado en pagina
Web personal. (sección de artículos).
http://www.consolasparasiempre.net
Y en una conocida Web de videojuegos, con comentarios.
http://www.anaitgames.com/?p=2223
----------------------------------------------------------------------------------------------------------La bibliografía ha sido un interés en el hardware y la electrónica digital práctica
durante los últimos 5 años. Mucha información se obtiene en sitios Web como
http://www.beyond3d.com (sobretodo GPUs, pero tienen foros de hardware
donde se discuten aspecto muy técnicos a alto nivel)
http://www.tomshardware.com (sobretodo noticias de mercado)
http://arstechnica.com/ (artículos sobre hardware, entre los que se pueden
encontrar disuciones muy interesantes de muchas arquitecturas)
Y muchas más…
Descargar