El Cell y los procesadores multinucleo

Hace unos dias se presento oficialmente el Cell, que es el procesador que llevara la nueva Playstation III, y con el que sus creadores han prometido que van a revolucionar el mundo de la electrónica y la informática. Pero, ¿Que tiene de especial este procesador? ¿Realmente es tan revolucionario como dicen?

Primero, hagamos un poco de historia. En los años 90 se empezó a barajar la posibilidad de dotar a los microprocesadores de capacidad de procesamiento en paralelo; es decir, de capacidad para ejecutar varias instrucciones (por ejemplo, una suma y una multiplicación) a la vez. Sin embargo, habia un problema; los programas de ordenador son series de instrucciones pensadas para ejecutarse secuencialmente, una detras de otra. ¿Como solucionarlo? Evidentemente, el leer y ejecutar las instrucciones de dos en dos o de cuatro en cuatro no es solución; veamos un ejemplo:

  1. c=a+b
  2. d=c+b

Esta claro que las dos instrucciones anteriores no se pueden ejecutar a la vez, ya que la segunda utiliza el resultado de la primera.

Así, para solucionar el problema, a lo largo de los años se han diseñado tres técnicas diferentes:

EJECUCION PREDICTIVA/ESPECULATIVA

Bajo este nombre se recogen una serie de tecnologias y algoritmos que se implementan en el procesador y que, basicamente, lo que hacen es analizar el código para agrupar las instrucciones en bloques que puedan ejecutarse en paralelo. Por ejemplo:

  1. c=a+b
  2. d=c*b
  3. x=a*n
  4. y=x+b

El procesador convertirá esta secuencia en dos bloques, uno con las instrucciones uno y tres, y otro con las dos y cuatro.

El inconveniente de esta técnica es que los algoritmos de paralelización son tremendamente complejos, con lo que su implementación requiere de un volumen enorme de circuiteria, lo que complica extraordináriamente la arquitectura de la CPU.

Esta técnica es la que utilizan los procesadores Intel Pentium.

PROCESADORES VLIW

Supongamos que el procesador tiene, por ejemplo, cuatro unidades operacionales; es decir, puede ejecutar cuatro instrucciones a la vez; entonces, cada instrucción de código máquina será un paquete de cuatro instrucciones, una para cada una de las cuatro unidades en las que se subdivide internamente el procesador. Es decir, en una arquitectura VLIW la tarea de paralelizar el código corresponde al compilador, de manera que los programas generados ya sean secuencias de bloques ejecutables en un solo paso.

La gran ventaja de esta metodologia es la sencillez. Puesto que el procesador ya recibe el código paralelizado, las instrucciones no necesitan ningún tratamiento previo, lo que permite ahorrar una cantidad enorme de circuiteria, lo que supone un consumo energético menor y menos calentamiento.

Sin embargo, esta ténica tiene dos inconvenientes; uno, que el juego de instrucciones de código máquina refleja la estructura interna de la CPU, con lo que si queremos sacar una versión nueva del procesador es muy posible que haya que modificar su lenguaje máquina, rompiendo la compatibilidad con los programas existentes. El otro inconveniente es que, puesto que los compiladores tienen que generar código paralelo, el diseño de los mismos es sumamente complicado.

Esta ténica es la que se usa en los Itanium y los Transmeta.

PROCESADORES MULTINUCLEO

Y por fin, llegamos a la técnica utilizada por el Cell. En este caso, el enfoque cambia por completo; así, si en las dos metodologias anteriores la capacidad de procesamiento en paralelo del procesador se usa para acelerar la ejecución de un programa, en este caso se utiliza para poder ejecutar varios programas a la vez. De hecho, el Cell es capaz de ejecutar diez programas simultaneamente.

La manera de conseguir esto es colocando varios núcleos dentro de la CPU; por núcleo entendemos el bloque de circuiteria encargado de leer y descodificar las instrucciones, luego, estar ordenes se pasan a las diferentes unidades de trabajo (sumadores, multiplicadores, ..); es decir, desde el punto de vista de los programas, el procesador es en realidad una bateria de microprocesadores (diez en el caso del Cell) que, desde el punto de vista del software, se trata de un sistema de multiples procesadores estandar.

¿Cual es la ventaja de esta técnica? Simplemente, que el procesador trabaja de la misma forma que el programador. Como ya hemos dicho, un programa, tal como lo escribe un desarrollador, es una secuencia de instrucciones pensada para ejecutarse linealmente, y lo que hacen las metodologías anteriores es intentar convertir esa secuencia lineal en paquetes ejecutables en paralelo; el problema es que, como ya hemos dicho, el programador concibe el programa como algo lineal, sin pensar en el proceso de paralelización posterior; es mas, los lenguajes de programación estandar también están pensados de esta forma; esto significa que, en la práctica, la paralelización es un proceso muy ineficiente, con lo que el procesador siempre estara funcionando muy por debajo de su capacidad. Sin embargo, los programadores si que estan habituados a trabajar con multiples procesos que han de correr en paralelo (y los lenguajes de programación también están familiarizados con este concepto); esto significa que el programador esta en condiciones de tener en cuenta las capacidades del procesador en sus desarrollos, y optimizarlos en consecuencia, lo que hace posible que el procesador trabaje al 100% de su capacidad.

Sin embargo, esta metodologia tiene un punto debil: La gestión del bus. Como ya hemos dicho, este tipo de micro funciona como una bateria de procesadores empaquetados juntos, pero esta bateria se comunica con la memoria a traves de un único canal (el bus del microchip); esto quiere decir que, si no queremos tener un atasco, es preciso que la gestión del bus sea muy eficiente. Este factor es tan crítico, que si no está bién solucionado puede arruinar todas las posibilidades que ofrece el procesador.

Por ultimo, mencionar que entre el Cell y los procesadores de dos nucleos que van a lanzar Intel y AMD tambien existe una diferencia; en estos últimos, los núcleos tienen capacidades predictivas/especulativas, capacidades de las que carecen los núcleos del Cell; esto significa que los núcleos de Cell necesitan un volumen de circuiteria muchisimo menor, con lo que se pueden integrar muchos mas dentro del procesador; como contrapartida, los núcleos de los procesadores de Intel/AMD son apreciablemente mas rapidos. La consecuencia práctica es que los programas existentes (que constan de un solo hilo de ejecución) serán mas rapidos en un procesador de Intel/AMD; en cambio, un programa multihilo será mas rapido en el Cell.

Related Posts Plugin for WordPress, Blogger...
Be Sociable, Share!
Widget By Best Accounting Services