texto:   A-   A+
eliax

El futuro de los chips multi-núcleos en debate
eliax id: 4570 josé elías en mar 13, 2008 a las 09:42 PM ( 21:42 horas)
Hoy día todos conocemos los chips "Core Duo" de Intel, y los "X2" de AMD, que son básicamente dos procesadores dentro de un solo chip. Así mismo ambas empresas tienen modelos de chips con 4 núcleos, y a finales de este año Intel lanzará sus primeros modelos con 6 núcleos. El año pasado hasta les hablé de una empresa de nombre Tilera, que tiene un chip llamado el Tile64, que contiene 64 núcleos.

Todo esto aparenta bien y color de rosa, pero lo cierto es que hay una tremenda batalla filosófica sobre como mejor tomar ventaja de tantos núcleos de manera óptima.

Hoy día 2 núcleos no son gran cosa, pero aun con 64 núcleos la cosa se complica. ¿Y que tal de un chip con 4,096 núcleos dentro de unos años? El problema no es de hardware en sí, sino de como diseñar los chips y el software a nivel del sistema operativo para que se pueda tomar ventaja de todo ese poder.

A tal fin, existen 3 filosofías, y lo cierto es que todas tienen sus ventajas y desventajas.

La primera es crear núcleos homogeneos, es decir, todos los núcleos idénticos, como se hace hoy día con los Core Duo o los X2. Esta propuesta es apoyada por Tilera, y a cierta medida, Intel.

La segunda es crear núcleos especializados, de tal manera que algunos núcleos se especialicen (por ejemplo) en procesar paquetes TCP/IP, y otros en gráficos, y otros mas en instrucciones de matrices, etc. Esta propuesta es apoyada por AMD.

La tercera es una combinación de los dos; múltiples núcleos homogéneos rodeados de núcleos especializados. Esta propuesta es apoyada por IBM.

Veamos ahora las ventajas y desventajas...

Lo bueno de los núcleos homogéneos (todos idénticos) es que son fáciles de programar, pues el mismo programa puede ejecutar en cualquier núcleo, y es solo cuestión de que el compilador o un interpretador inteligente sepa cuáles núcleos no están haciendo nada para darles trabajo. El problema sin embargo es que consumen mucha energía y ocupan mucho espacio innecesariamente, ya que cada núcleo debe ser capaz de ejecutar cualquier cosa, por lo que es un procesador completo por sí mismo, aun solo se necesiten algunos de sus circuitos para muchas operaciones. Además, debido a que funcionan de manera genérica, su rendimiento no es óptimo para ciertos tipos de operaciones repetitivas.

Por otro lado. lo bueno de los núcleos heterogéneos (con chips especializados) es que son mucho mas eficiente y rápidos, con menos consumo energético, mas pequeños, y menos costosos producirlos en serie. El problema sin embargo es la complejidad para programarlos, pues uno no puede simplemente hacer un programa genérico, sino que para sacarle ventaja debe escribir distintos programas para los distintos núcleos, dependiendo de su función.

Entonces, es posible que el futuro sea algo híbrido, en donde tengamos muchos núcleos idénticos rodeados de muchos núcleos especializados, los cuales pueden ser utilizados opcionalmente según la destreza del programador, o de las librerías de funciones optimizadas que se utilicen, o de la inteligencia de un compilador de lenguajes de alto nivel.

Noten que el chip Cell, utilizado en el PlayStation 3, es un buen ejemplo de esto, pues contiene 2 núcleos genéricos idénticos del tipo PowerPC, así como 7 núcleos idénticos especializados llamados SPE ("SIMD processing elements"), que ayudan mucho con cálculos matemáticos en paralelo, en particular con contenido multimedia.

El Cell es también un buen ejemplo de los dolores de cabeza que es programar una arquitectura híbrida, ya que por ejemplo sabemos de muchos juegos de primera generación del PS3 que simplemente utilizaban los núcleos de PowerPC, y apenas utilizaban los SPEs, por lo que estos juegos ejecutaban mejor en los 3 núcleos PowerPC del Xbox 360 que en los 2 núcleos PowerPC del PS3. Hoy día la situación a empezado a cambiar, pero solo debido al gran esfuerzo que han puesto lo desarrolladores de software en aprender a manejar los 7 otros SPEs en el PS3.

A mí personalmente me gusta la arquitectura simple de tener todos los núcleos idénticos, y por tanto poder programarlos a todos por igual, pero no hay duda de que tener núcleos especializados puede ser bien útil en aplicaciones de pocos recursos. Por ahora sin embargo, los tres modelos subsistirán.

Ahora mismo lo mas importante de todo es crear una nueva generación de software que sin importar la arquitectura de núcleos, pueda tomar ventaja de todos ellos. Esta es un área de investigación super-caliente actualmente, y pueden estar seguros que veremos grandes adelantos al respecto en los próximos 5 años.

Artículo del cual tomé muchos datos para este artículo

autor: josé elías

Comentarios

  • Yo tenía entendido que la playstation 3 ténía un procesador genérico y 7 dedicados (SPU). Lo cierto es que no recuerdo ningún artículo donde se hablar de dos. De todos modos, los programadores se quejaban de la dificultad de programar para más de un núcleo y ahora no parecen tener tantos problemas, así que no creo que la dificultad sea un problema a largo término.

    • Jus,

      El PS3 tiene un solo chip, pero dentro de ese chip existen dos núcleos de PowerPC y 8 núcleos de SPE, uno de los cuales es deshabilitado para reducir costos.

      En la foto que acompaña el artículo (el chip Cell) puedes ver esta estructura visualmente.

  • [c&p] Hoy día 2 núcleos no son gran cosa, pero aun con 64 núcleos la cosa se complica. ¿Y que tal de un chip con 4,096 núcleos dentro de unos años? El problema no es de hardware en sí, sino de como diseñar los chips y el software a nivel del sistema operativo para que se pueda tomar ventaja de todo ese poder. A tal fin, existen 3 filosofías, y lo cierto es que todas tienen sus ventajas y desventajas.

  • La PS3 tiene un solo nucleo que puede llevar dos hilos de forma concurrente.

    http://es.wikipedia.org/wiki/PlayStation_3

    CPU    Procesador Cell con un núcleo basado en IBM POWER y 7 núcleos SPE    3,2 GHz

    Ni idea tienes compañero...

    • Correcto, es un solo PowerPC con dos hilos concurrentes de ejecución (cuando uno tiene tantas cosas en la cabeza, cualquier se equivoca de vez en cuando!).

      Lo importante sin embargo es que puede ejecutar dos hilos concurrentes como si de dos procesadores PowerPC virtuales se tratara (aunque con recursos compartidos dentro del mismo núcleo).

      Aun así, esto no cambia el espíritu del post. Gracias por la observación.

  • La aparición de los procesadores de doble núcleo no supone un cambio importante en el mundo de la informática, pero en el futuro los procesadores podrán llegar a tener centenares e incluso miles de núcleos. ¿Como aprovechar esa capacidad de una forma eficiente? Se han planteando tres enfoques diferentes para este problema, cada uno con sus ventajas y sus inconvenientes.

  • Es previsible un sistema escalar, como de red interna, donde la información sea gestionada en paquetes de 8-16 bits pero en "redes internas" que el tile64 pone los dientes largos. Pero, lo más importante: fraccionar en grupos de 8 para tener cada uno unos procesadores de apoyo de cálculo. Es como tener entre 4 y 8 nucleos de ordenadores funcionando al mismo tiempo... pero puesto en 1 solo procesador. A esto, se le sumaría sistemas de comunicación "laser" por fibra óptica, por ejemplo, sin contar los laser gemelos cuánticos para comunicación a "distancia", y las redes, junto con la gestión de los dispositivos, sería "instantanea".

Añadir Comentario

tu nombre
tu email
(opcional)
web personal
(opcional)
en respuesta a...
comentario de caracteres máximo
6 + 5 = requerido (control anti-SPAM)
¿De qué color es el cielo?: requerido (control anti-SPAM)
 

"Felicidades al único prostituto tecnológico que lo reconoce abiertamente. Larga vida al blog y que la fuerza te acompañe..."

por "RollerSkates" en nov 12, 2010


en camino a la singularidad...

©2005-2024 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax