martes, 29 de diciembre de 2009

Modelos de programación para el Cell

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. Por eso cuando debamos ponernos a programar en este tipo de máquina debemos pensar en que modelo de programación queremos seguir. A contiuación doy unos ejemplos.
  1. Programación Secuencial.- O también podemos llamarlo "como desaprovechar el multinucleo". Con este modelo (el de toda la vida) vamos realizando las tareas paso a paso y no indicamos a los distintos procesadores como deben repartirse las tareas, por lo tanto, no se la reparten.
  2. Modelo de programación de Dispositivos.- Este modelo consiste en tratar los distintos núcleos como dispositivos. Es parecido al modelo que se utiliza en los PC al programar aplicaciones en las que la CPU manda tareas a (por ejemplo) la tarjeta gráfica del PC. El procesador central (PPE) se dedicará a mandar tareas específicas a los SPE.
  3. Modelo de Streaming.- Básicamente, creamos un pipeline o cauce de ejecución con los distintos SPE, con esto conseguimos que tareas complejas se dividan en tareas simples y se puedan ejecutar en paralelo. Para hacernos una idea, es parecido a la filosofia de dividir las instrucciones del procesador en etapas simples y solapar la ejecución de las etapas en un mismo momento.
  4. Modelo de memoria compartida.- Este modelo se basa en que los SPE se encarguen de la misma tarea pero para muchos datos al mismo tiempo. Nuestra aplicación tendría un hilo de ejecución central por así decirlo, y en distintas partes del código tendríamos zonas en las que una misma tarea se reparte en distintos hilos para ejecutarse más rápidamente. Imaginaos un tabla muy grande que debemos procesar, pues llegada la zona en la que dividimos en hilos, cada dato de la tabla (o grupo de datos) se ejecuta por separado en distintos núcleos y se unifica el resultado después.
Estos solo son unos cuantos de los modelos que podemos utilizar. Evidentemente no son modelos exclusivos de la PS3, si os fijáis pueden ser utilizados para cualquier arquitectura multinucleo en la que queramos programar.

No hay comentarios:

Publicar un comentario