jueves, 17 de diciembre de 2009

Xenon

Xenon es el procesador de la consola de Microsoft Xbox360. El diseño de este microprocesador es obra de IBM y aunque está basado en la arquitectura PowerPC, hay varios cambios que se han hecho pensando en el tipo de tareas que el procesador de una consola suele realizar. Este es el aspecto del procesador Xenon:



En un videojuego o en aplicaciones multimedia en general, es muy habitual el realizar procesado más o menos sencillo y uniforme sobre una gran cantidad de datos que normalmente son (casi) secuenciales. Por esto se ha diseñado un procesador con un pipeline de 21 etapas. Esto permite que la frecuencia de reloj sea muy alta y en el caso de ejecutar código sin muchos saltos condicionales y en el que se puede prever y leer los datos que se necesitarán con suficiente antelación, el rendimiento del procesador crece.

Otra característica importante de este procesador es que se ha intentado aprovechar el paralelismo a nivel de hilo en vez de la estrategia más clásica de explotar el paralelismo a nivel de instrucción. Esto se traduce en que el procesador tiene 3 núcleos, cada uno de los cuales puede ejecutar 2 hilos. Además estos núcleos no tienen capacidad para ejecutar instrucciones fuera de orden ni especulan, haciendo que cada núcleo sea más sencillo, consuma menos y ocupe menos espacio en el circuito integrado. Ahora el programador y el compilador son los responsables de asegurar el paralelismo en la ejecución en lugar del procesador. Otra consecuencia de este planteamiento es que en general no se replican las unidades funcionales, como es habitual en muchos procesadores actuales, ya que como se acaba de explicar, se busca que sean instrucciones de diferentes hilos que se ejecutan en distintos núcleos las que se ejecutan simultáneamente, en lugar de que un núcleo reordene las instrucciones para conseguir el paralelismo. Estas son las unidades que tiene cada núcleo:

  • 1 unidad de enteros
  • 1 unidad de coma flotante
  • 1 unidad de salto
  • 1 unidad load-store
  • 2 unidades VMX-128


Como se puede ver hay una excepción y se ha replicado la unidad VMX (con 128 registros) que es la encargada de ejecutar operaciones vectoriales sobre los datos. El motivo es que es de esperar que se ejecuten aplicaciones en las que hay paralelismo de datos (gráficos en 3D, cálculos cálculos físicos) que se ven muy beneficiadas por estas unidades.

Respecto a la jerarquía de memoria en el procesador, está dividida en 2 niveles de memoria caché. El primero al ser un procesador segmentado, consiste de una caché de instrucciones de 32 KB y otra de datos del mismo tamaño. El 2º nivel de caché tiene una capacidad de 1 MB. En comparación con procesadores de propósito general de PC, esta memoria es algo escasa, pero tiene su justificación en las limitaciones técnicas y en que juegos y aplicaciones similares no suelen beneficiarse de memorias caché muy grandes, ya que habitualmente leen datos y realizan cálculos con ellos, pero no suelen reutilizarlos. De hecho el desarrollador puede elegir deshabilitar la caché si en algún momento el código no lo necesita. También puede utilizarse para intercambiar datos con la GPU, ya que esta tiene acceso a la caché y enviar de manera muy eficiente información geométrica generada en el procesador.

En resumen, el diseño de este procesador, aunque basado en un PowerPC de propósito general, se ha modificado sustancialmente favoreciendo a las aplicaciones que realizan cálculos sobre grandes cantidades de datos, como multimedia o 3D intensivo. Estas son las partes más costosas a la hora de ejecutar un videojuego moderno en tiempo real, por lo que aunque el código relacionado con la lógica del juego o la inteligencia artificial se vea perjudicado, en conjunto el rendimiento obtenido es bueno.

Patxi Astiz

No hay comentarios:

Publicar un comentario