| Artículos | 01 ABR 2007

Masivamente paralelos

Tags: Histórico
Chips con decenas de núcleos
Eugenio Barahona.
Desde hace ya algún tiempo, los principales fabricantes de microprocesadores, independientemente de la arquitectura en la que estén basados sus productos, han tomado un camino radicalmente distinto al que habían seguido hasta ahora. Hasta hace unos pocos años, la industria de los procesadores intentaba sacar al mercado productos que trabajasen a frecuencias de reloj cada vez más elevadas, pero los problemas de consumo eléctrico y, por lo tanto, de disipación de calor que encontraron durante la transición de la tecnología de fabricación de 130 nanómetros a 90 nanómetros, se conjugaron para que se desarrollasen productos que en un único encapsulado incluían varios núcleos. Llegados a este punto, muchos diseñadores de procesadores se encontraron en una situación en la que los avances en tecnologías de fabricación permitían integrar en un sólo chip, un cada vez mayor número de transistores que, sin embargo, no se podían aprovechar para fabricar procesadores con frecuencias de reloj más elevadas, por los problemas anteriormente mencionados. Una manera efectiva de utilizar esta mayor capacidad de integración consiste en incluir más de un procesador en un único encapsulado.
Intel fue quién, de alguna manera, inició la carrera de los núcleos múltiples, si bien al principio de una manera algo tímida, con el lanzamiento de los procesadores con soporte de tecnología Hyperthreading. Esta técnica no duplicaba intrínsecamente el número de núcleos físicos, ya que, en realidad, el segundo núcleo no disponía de todos los recursos físicos de uno completo, compartiendo algunos de ellos con el primero.
Lo que está claro es que, a día de hoy, la carrera por los gigaherzios se ha sustituido por la carrera por el número de núcleos, de forma que es posible encontrar en el mercado procesadores para ordenadores de sobremesa dotados con cuatro núcleos. En otros terrenos hayamos productos, como el procesador Cell, que está formado por un núcleo compatible con la arquitectura PowerPC de IBM y ocho pequeños núcleos especializados en la ejecución de pequeños programas de procesamiento digital de señal o gráficos, entre otros.
Por lo tanto, dentro de los procesadores de varios núcleos encontramos dos tendencias de diseño. Por un lado, una que integra núcleos homogéneos, y otra que hace uso de núcleos hetereogéneos. Como exponentes claros de la primera tendencia tenemos a las familias Core 2 Duo de Intel y Athlon 64 de AMD, mientras que, como representantes de la segunda, el más conocido es Cell, desarrollado por Sony, IBM y Toshiba. Sin embargo, lo más probable es que, en el futuro, estas dos tendencias se fundan, ya que es factible que aparezcan productos con más de un núcleo que, sin embargo, integren además pequeños mini núcleos especializados en la ejecución de tareas concretas, como el cálculo de valores de CRC o procesamiento gráfico, por ejemplo.
El empleo de procesadores con múltiples núcleos plantea varios problemas, tanto de hardware como de software. En el terreno del hardware se debe disponer de una interconexión eficaz entre los núcleos que estén integrados en un sólo encapsulado, de forma que dicha interconexión no introduzca latencias innecesarias y que proporcione un ancho de banda adecuado para la comunicación entre los diversos núcleos. Uno de los principales problemas en el campo del software es disponer de herramientas de desarrollo y depuración que faciliten la creación de aplicaciones capaces de aprovechar todos los núcleos presentes en el procesador. Hay que tener en cuenta que la programación paralela plantea problemas que no aparecen cuando sólo se usan los recursos de un único núcleo, problemas que además pueden resultar de difícil diagnosis.
Sin embargo, la integración de muchos núcleos en un sólo componente ofrece a los diseñadores un grado de flexibilidad del que no disponían hasta ahora, ya que sería posible dedicar una determinada cantidad de núcleos a la ejecución de una tarea específica para la que, además, dichos núcleos habrían sido diseñados de manera específica, para así optimizar el rendimiento.

Tera-scale
Éste es el nombre que Intel ha dado a un proyecto de investigación centrado en el desarrollo de un prototipo de microprocesador masivamente paralelo. El objetivo de este proyecto es desarrollar un procesador altamente modular y escalable, cuya tecnología pueda usarse dentro de la amplia gama de plataformas en las que se emplean los productos de Intel. Además, este nuevo producto debe tener en cuenta las limitaciones de consumo eléctrico y, por lo tanto, de disipación de calor que imponen cada uno de los segmentos del mercado a los que se dirigirá.
Uno de los aspectos que diferencia a esta arquitectura es que su diseño se ha pensado, desde su inicio, para la ejecución de tareas altamente paralelas y con un elevado uso de varios hilos de ejecución. Hay que tener en cuenta que un adecuado uso de las capacidades de ejecución multihilo del hardware, ya sea el actual o el futuro, puede ayudar a ocultar la latencia inherente en el acceso a determinados recursos, como por ejemplo la memoria.
Si bien, desde hace algún tiempo, los diseñadores de software ya desarrollan sus productos teniendo en cuenta la existencia de hardware equipado con varios núcleos, la realidad es que muchos usuarios siguen empleando a diario una importante cantidad de aplicaciones que no se desarrollaron para aprovechar las capacidades de los procesadores multi núcleo. Intel está pensando en la posibilidad de incluir, en futuros productos, núcleos de propósito general, optimizados para la ejecución de software que use tanto un solo hilo de ejecución, como varios. Hay que tener en cuenta que, además, hay una serie de algoritmos cuya naturaleza impide optimizarlos para su ejecución mediante varios hilos. Dentro de esta problemática, una posible solución, que se está explorando, consiste en usar varios núcleos que ejecutan al mismo tiempo, y de forma especulativa, distintas partes de un mismo hilo de ejecución.
Una forma de optimizar la cantidad de energía que consume un procesador masivamente paralelo consiste en incluir elementos que ejecutan una función fija. Esto es así debido a que un núcleo especializado en ejecutar un determinado tipo de tarea concreta es, energéticamente hablando, mucho más eficiente que un núcleo de propósito general. De esta forma, los microprocesadores del futuro podrían incluir un pequeño núcleo especializado en la decodificación de streams de vídeo en alta definición. Este tipo de funcionalidades podrían implementarse, bien mediante el uso de lógica fija, o bien mediante elementos programables optimizados para una determinada tarea. Un ejemplo claro de núcleo programable especializado sería uno que acelerase el procesamiento de texturas para utilizarlas en aplicaciones de tipo gráfico. Dentro de este terreno, Intel está evaluando aceleradores de funciones de red, de funciones criptográficas e incluso de físicas.
Como hemos comentado anteriormente, un procesador masivamente paralelo requiere una comunicación eficaz y de alto rendimiento entre los elementos que lo forman. Parece ser que los dos elementos más importantes que determinan el rendimiento de un micro

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información