Todo lo que Debes Saber Sobre Procesadores de Computadoras
Agregar más núcleos de procesamiento se ha convertido en la principal forma de aumentar el rendimiento del servidor y los chips de PC, pero los beneficios se verán enormemente disminuidos si la industria no puede superar ciertos desafíos de hardware y programación, participantes en la Expo Multicore en Santa Clara, California, dijo esta semana.
La mayoría del software de hoy todavía está escrito para chips de un solo núcleo y tendrá que ser reescrito o actualizado para aprovechar el creciente número de núcleos que Intel, Sun Microsystems y otros fabricantes de chips están agregando a sus productos, dijo Linley Gwennap, presidente y analista principal de The Linley Group.
Las aplicaciones estándar suelen funcionar más rápido en CPU con hasta cuatro núcleos de procesador, pero más allá de ese rendimiento se nivela y puede incluso deteriorarse a medida que se agregan más núcleos, dijo. Un informe reciente de Gartner también destacó el problema.
Los fabricantes de chips y los creadores de sistemas han comenzado a esforzarse por educar a los desarrolladores y proporcionarles mejores herramientas para la programación multinúcleo. Hace un año, Intel y Microsoft dijeron que invertirían 20 millones de dólares para abrir dos centros de investigación en universidades de los Estados Unidos dedicadas a abordar el problema. La falta de herramientas de programación multinúcleo para los desarrolladores convencionales es tal vez el mayor desafío que enfrenta la industria hoy en día, dijo Gwennap.
Escribir aplicaciones de manera que permita diferentes partes de una tarea informática, como resolver un problema matemático o representar una imagen, ser dividido y ejecutado simultáneamente en múltiples núcleos no es nuevo. Pero este modelo, a menudo llamado computación paralela, se ha limitado hasta ahora principalmente a entornos de computación especializados y de alto rendimiento.
Pero en los últimos años, Intel y Advanced Micro Devices han estado agregando núcleos como una forma más eficiente de potencia para impulsar rendimiento del chip, un cambio marcado de su práctica tradicional de aumentar la velocidad del reloj. Intel está construyendo ocho núcleos en sus próximos chips Nehalem-EX, y AMD está diseñando chips de 12 núcleos para servidores. También están agregando capacidades de subprocesamiento múltiple, que permiten que cada uno de los núcleos trabaje en varias líneas de código al mismo tiempo.
Eso significa que las aplicaciones convencionales deben escribirse de una manera diferente para aprovechar los núcleos adicionales disponibles.. El trabajo es difícil de hacer y crea el potencial para nuevos tipos de errores de software. Una de las más comunes es "condiciones de carrera", donde la salida de un cálculo depende de los diversos elementos de una tarea que se completa en un cierto orden. Si no lo son, pueden producirse errores.
Hay disponibles algunas herramientas de programación paralelas, como Intel Parallel Studio para C y C ++. Otros proveedores en el espacio son Codeplay, Polycore Software y Clik Arts. También hay un nuevo modelo de programación paralelo basado en C llamado OpenCL, desarrollado por The Khronos Group y respaldado por Apple, Intel, AMD, Nvidia y otros.
Pero muchas de las herramientas disponibles todavía están en proceso, los participantes en la Expo Multicore dijo. Los compiladores de software deben poder identificar el código que se puede paralelizar y luego hacer el trabajo de paralelizarlo sin la intervención manual de los programadores, dijo Shay Galon, directora de ingeniería de software de EEMBC, una organización sin fines de lucro que desarrolla puntos de referencia para chips incrustados..
A pesar de la falta de herramientas, algunos proveedores de software han descubierto que es relativamente fácil crear código paralelo para trabajos de computación simples, como procesamiento de imágenes y video, dijo Gwennapp. Adobe ha reescrito Photoshop de una manera que puede asignar tareas como el aumento y el filtrado de imágenes a núcleos x86 específicos, mejorando el rendimiento de tres a cuatro veces, dijo.
"Si está haciendo videos o gráficos, puede tomar diferentes conjuntos de píxeles y asignarlos a diferentes CPU. Puedes obtener un montón de paralelismo de esa manera ", dijo. Pero para tareas más complejas, es difícil encontrar un enfoque único para identificar una secuencia de cálculos que puedan paralelizarse y luego dividirlos.
Si bien el lado de la programación puede presentar el mayor desafío, también hay que hacer cambios en el hardware para superar problemas como la latencia de la memoria y la velocidad del bus. "A medida que agrega más y más CPU en el chip, necesita el ancho de banda de memoria para respaldarlo", dijo Gwennap.
Compartir un caché de memoria o un bus de datos entre varios núcleos puede crear un cuello de botella, lo que significa que los núcleos extra ser en gran parte desperdiciado. "En el momento en que llega a seis u ocho CPU, pasan todo el tiempo hablando entre ellos y no avanzan para realizar ningún trabajo", dijo.
En última instancia, la responsabilidad puede recaer en los desarrolladores para cerrar la brecha entre hardware y software para escribir mejores programas paralelos. Muchos codificadores no están actualizados sobre los últimos desarrollos en diseño de hardware, dijo Gal-on. Deberían abrir hojas de datos y estudiar arquitecturas de chips para entender cómo su código puede funcionar mejor, dijo.
Barrelfish OS acelerará los futuros sistemas multinúcleo
Microsoft y ETH Zürich están colaborando en un nuevo sistema operativo llamado Barrelfish diseñado para permitir que las aplicaciones se ejecuten más rápido sistemas multinúcleo.
Samsung prepara los cimientos para los chips de servidor, dicen los analistas
Movimientos recientes sugieren que el fabricante de chips puede expandirse de los teléfonos inteligentes y tabletas al servidor mercado.
Consorcio toma medidas para romper barreras de programación multinúcleo
La programación de sistemas multinúcleo puede ser compleja, por lo que un consorcio industrial liderado por Advanced Micro Devices ha dado un paso adelante en su objetivo de eliminar los desafíos de desarrollo para que las aplicaciones sean portátiles en dispositivos, arquitecturas y sistemas operativos