04 diciembre 2010

Tema 4. Modelos de programación para el Cell


               El procesador Cell tiene unas excelentes prestaciones y será un gran procesador, siempre y cuando se le pueda sacar todo el rendimiento que de él se espera, pero la pregunta está en si eso será fácil para los desarrolladores.

             Como ya hemos comentado el chip Cell tiene 8 núcleos de procesamiento (Synergistic Processor Element o SPE). Cada uno de los SPE tiene una memoria única de 256KB, 128 registros con una anchura de 128 bits y elementos de ejecución de 128bits, se puede decir que cada SPE es una máquina de 128bits. Con esta capacidad de procesamiento tenemos que cada SPE puede ejecutar 2 Double-Float, 4 Floats o Long integers, ocho integers... etc, cada uno en un solo ciclo de reloj. Además cada SPE contiene siete elementos de ejecución de los que solamente dos podrán estar activos a la vez.

             Pero esta arquitectura tiene un inconveniente, y es que cada SPE solamente puede acceder a sus 256 KB de memoria y no verá nada más allá. Para pedir una palabra fuera de esos 256 KB se debe acceder a un DMA conectado a un BUS llamado Element Interconnect Bus (EIB). Esto presenta un problema a la hora de procesar grandes cantidades de información, pues hay que optimizar el "troceado" para que no haya pérdida de rendimiento.

              En la PlayStation 3 no veremos títulos con más de 256 MB de texturas, debido a la política de memoria, mientras que si que los habrá en Xbox360. Esto supone una limitación para la consola de Sony. Sin embargo, Sony ha elegido bien, y su consola podrá ser programada en Cg, C++ y la API de gráficos será OpenGL, esta librería es un estándar con la que muchos desarrolladores están acostumbrados a trabajar. En cuanto a Cg es una excelente elección por la facilidad de uso que tiene para los desarrolladores en cuanto a gestión de objetos gráficos, con una gran potencia.

            El aspecto más duro al que sin duda se enfrentarán los desarrolladores en la PS3 no será hacer juegos, sino hacer juegos buenos y rápidos. Y no es que esto sea fácil para las demás, el problema es que esto será más difícil en la PS3. Con el esquema del procesador que ya hemos comentado tenemos básicamente ocho (o siete más el PPE para PS3) elementos de ejecución más o menos independientes, que se deben usar organizadamente para poder sacarle el máximo rendimiento.

El chip "Cell", de la PS3

               Uno de los aspectos más complejos en cualquier sistema software que se desarrolle es el hecho de la concurrencia, hacer que varios hilos de ejecución se coordinen para un objetivo común es un problema bastante complejo de afrontar.

              El desarrollo de un juego con varios hilos de ejecución es el nuevo reto de los estudios de desarrollo, los procesadores de las nuevas consolas tienen varios Cores de ejecución. Este nuevo elemento en el panorama de los juegos no hace más que enriquecer cada uno de los aspectos de los mismo: podemos tener un hilo de procesamiento para el reenderizado, otro para la física, otro para el sonido y otro para la IA. Obviamente las posibilidades aumentan muchísimo cuando cada uno de los aspectos principales del juego cuenta con una unidad de ejecución que no tendrá que compartir. Este enfoque no carece de problemas, pues hay que organizar muy bien la ejecución para que todo esté coordinado correctamente, queremos que la física tenga el resultado junto a la IA y el resto antes de renderizar la escena.

               Sony, consciente de que este va a ser su caballo de batalla, ya desde el principio dio algunas directrices a los desarrolladores para enfrentarse a este esquema de programación paralela.

                Uno de ellos es, por ejemplo, la cola de trabajo. Si cada una de las operaciones que tiene que realizar la aplicación se ponen en una cola de trabajo en orden y según se van quedando elementos de ejecución libres se les va asignando la tarea tendremos un resultado que organizado a su salida nos ofrecerá el resultado esperado. Obviamente el overhead que supone la organización a la entrada y a la salida de la cola, tanto como la potencia que requiere la solución de las distintas dependencias entre las distintas tareas no son gratuitas, tienen un costo. Este esquema será muy valido cuando hay una alta independencia entre las tareas a realizar, caso en el que no están los juegos.

          Otra de las aproximaciones, es que sea el programador quien a base de artificios típicos de la programación concurrente sea quien realice la coordinación entre las distintas tareas y cada una de ellas se va asignando a cada uno de los módulos de ejecución. El problema que presenta esta aproximación es que se necesita mucha destreza.

                 En la mejora del rendimiento se ve hacia donde van los juegos actualmente, pero en la fragilidad se ve la dificultad a la que se enfrentan los desarrolladores.

                Como muestra de la potencia del Cell, Sony firmó acuerdos con universidades para usar el poder de cálculo de la Playstation 3 para investigaciones científicas. El Cell es un procesador muy potente y lo que es más importante, aunque lo tengamos en nuestras PS3, es un procesador de propósito general. Actualmente se está intentando sacar partido del Cell no solo en consola sino en investigaciones científicas. 




Referencias y más información:
• Programando para PS3

• Meristation. La dura tarea de programar para Xbox 360 y PlayStation 3

• Programando en Cell

No hay comentarios:

Publicar un comentario