El reto de los chips multinúcleo

Empresas

Son muchos los programas escritos para chips de un solo núcleo que deberían revisarse o actualizarse para aprovechar el potencial de los chips multinúcleo.

Añadir más núcleos de procesamiento se ha convertido en una de las maneras de aumentar el rendimiento de servidores y ordenadores, pero los beneficios disminuyen si la industria no es capaz de superar algunos retos, tanto en el hardware como en el software, según se ha puesto de manifiesto en el Multicore Expo celebrado en California la semana pasada.

La mayoría de los programas actuales siguen escritos para chips de un solo núcleo y tendrían que escribirse o actualizarse para aprovechar las ventajas del creciente número de núcleos que Intel, Sun Microsystems y otros fabricantes de chips están añadiendo a sus productos. A menudo las aplicaciones estándar funcionan más rápido en CPUs con cuatro núcleos, pero también es cierto, según los expertos, que el rendimiento puede deteriorarse cuantos más núcleos se añadan.

Los fabricantes de chips y los de sistemas han puesto en marcha algunas iniciativas para educar a los desarrolladores y proporcionarlas las mejores herramientas para la programación multinúcleo. Hace un año Intel y Microsoft anunciaron una inversión de 20 millones de dólares para abrir dos centro de investigación en universidades de Estados Unidos dedicados a abordar el problema. La falta de herramientas de programación multinúcleo para desarrolladores es, quizá, el principal reto al que se enfrenta la industria actualmente.

Escribir aplicaciones de manera que diferentes partes de una tarea informática, como la resolución de un problema matemático o la interpretación de una imagen, se puedan dividir y ejecutar simultáneamente en diferentes núcleos no es nuevo. Pero este modelo, que a menudo se denomina informática en paralelo, o ‘paralel computing’, se ha visto limitado a entornos informáticos de alto rendimiento.

Sin embargo, en los últimos años, Intel y AMD han estado añadiendo núcleos como la manera más eficiente de aumentar el rendimiento de un chip, lo que ha supuesto un cambio a la práctica tradicional de incrementar la velocidad de reloj. Intel está incluyendo ocho núcleos en sus próximos chips Nehalen-EX, y AMD está diseñando chips de 12 núcleos para servidores. Además, ambas compañías están añadiendo capacidades ‘multi-threading’, que permite que cada uno de los núcleos trabaje en múltiples líneas de código al mismo tiempo.

Esto significa que las aplicaciones tienen que escribirse de otra manera para aprovechar la ventaja que supone tener núcleos adicionales. El trabajo es duro y crea un gran potencial para nuevos tipos de programas. Actualmente existen algunas herramientas para programar en paralelo, como Intel Parallel Studio para C y C++. Otros vendedores son Codeplay, Polycore Software y Clik Arts. También existe un nuevo modelo de programación en paralelo llamado OpenCL, desarrollado por The Khronos Group y respaldado por Apple, Intel, AMD, Nvidia y otros.

Pero la mayoría de las herramientas disponibles están aún en progreso. Así lo han afirmado muchos de los participantes de Multicore Expo en declaraciones recogidas por Infoworld. Los compiladores de software necesitan identificar el código que puede ser ejecutado en paralelo, y después hacer el trabajo sin la intervención manual de los programadores.

Sin embargo, y a pesar de la falta de herramientas, algunos vendedores de software han encontrado una manera relativamente fácil de crear código paralelo para tareas informáticas simples, como el procesamiento de imágenes o vídeos. Adobe, por ejemplo, ha reescrito Photoshop de manera que pueda añadir tareas como la ampliación y el filtrado de la imagen para núcleos de x86, mejorando el rendimiento en tres o cuatro veces.

Por otra parte, hay que tener en cuenta que aunque el terreno de la programación es importante, también hay retos en el hardware y superar algunos temas como la latencia de la memoria o una lento velocidad en el bus. Y es que si se añaden muchos núcleos en un chip hay que aumentar el ancho de banda de la memoria.

Compartir un único caché de memoria o bus de datos entre múltiples núcleos, puede crear un cuello de botella. Queda por tanto mejorar la manera de llenar el hueco entre el hardware y el software y estudiar la arquitectura de los chips para entender cómo trabaja su código y conseguir el mejor rendimiento.

Lea también :
Leer la biografía del autor  Ocultar la biografía del autor