.

Computación

Universo Paralelo

1

En un intento para avanzar, Intel desempolva la tecnología vieja de supercomputación.

  • por Robert X. Cringley | traducido por
  • 30 Diciembre, 2008

Cuando Anwar Ghuloum llegó a trabajar a Intel en 2002, la empresa era líder entre los fabricantes de chips, principalmente porque estaba produciendo procesadores que iban a cada vez más velocidad. “Ya habíamos llegado a tres giga hertzios con Pentium 4, y la hoja de ruta exigía velocidades de reloj futuras de 10 giga hertzios y más también”, recuerda Ghuloum, que obtuvo el doctorado en Carnegie Mellon y ahora es uno de los ingenieros principales de la empresa. En el mismo año, en la conferencia de desarrolladores de Intel, el funcionario jefe de tecnología, Pat Gelsinger, dijo: “estamos encaminados a llegar al 2010 con dispositivos de 30 giga hertzios, 10 nanómetros o menos, produciendo un rendimiento de orden tera”. Eso equivale a un billón de órdenes al ordenador por segundo.

Pero Gelzinger estaba equivocado. Intel y sus competidores todavía están haciendo procesadores que llegan a un límite de menos de cuatro giga hertzios. Se ha considerado, al menos por ahora, que cinco mega hertzios es la velocidad máxima factible para la tecnología de silicio.

No es como si la ley de Moore (la idea de que la cantidad de transistores en un chip se duplica cada dos años) se hubiera revocado. Sino que, problemas inesperados con la generación de calor y con el consumo energético han puesto un límite práctico a las velocidades del reloj de los procesadores, o a la velocidad a la cual pueden ejecutar las instrucciones. Nuevas tecnologías tales como la Espintrónica (que utiliza la dirección de giro de un electrón solo para codificar datos), y los transistores cuánticos (o de apertura), pueden a la larga permitirle a los ordenadores que funcionen mucho más rápido que la velocidad actual, consumiendo mucha menos energía. Pero esas tecnologías están por lo menos a una década de distancia de llegar al mercado, y exigirían el reemplazo de las líneas de fabricación de semiconductores que costaría muchas decenas de miles de millones construir.

Así que para aprovechar al máximo las tecnologías disponibles, los fabricantes de chips están utilizando un método diferente. Los transistores adicionales anunciados por la ley de Moore no se están usando para que los procesadores individuales funcionen más rápido, sino para aumentar la cantidad de procesadores dentro de un chip. Los chips con dos procesadores (o núcleos) ahora son estándar en los ordenadores, y los de cuatro núcleos son cada vez más comunes. A la larga, Intel imagina que habrá cientos de núcleos en cada dispositivo.

Pero lo que importa es esto: mientras que el problema de hardware de sobrecalentar los chips se presta amablemente a la solución de la computación con núcleos múltiples, esa misma solución da lugar a un complicado problema de software. ¿Cómo haces para programar para múltiples procesadores? La tarea de Anwar Ghuloum es averiguarlo, con la ayuda de los grupos de programación que él administra en China y el Estados Unidos.

Las empresas de microprocesadores asumen un gran riesgo al adoptar la estrategia de núcleos múltiples. Si no pueden hallar un modo fácil para escribir software para los chips nuevos, podrían perder el apoyo de quienes desarrollan software. Esta es la razón por la cual la máquina de juego PlayStation 3 de núcleos múltiples de Sony llegó tarde al mercado y tiene menos juegos disponibles que sus competidores.

 

El Problema con el Silicio

Durante los primeros 30 años de desarrollo de microprocesadores, el modo de aumentar el rendimiento fue crear chips que tuvieran características cada vez más pequeñas y que funcionaban a velocidades más altas. El ordenador original Apple II de 1977 utilizaba un procesador de ocho bits que funcionaba a un megahercio. El estándar del PC de hoy es un chip de 64 bits funcionando a 3,6 giga hertzios (es decir, 28.800 veces más rápido). Pero ahí es donde pareció acabar esta trayectoria. Cerca de 2002, las características más pequeñas que podían esbozarse en un chip utilizando fotolitografía se había reducido a 90 nanómetros. A esta escala surgieron efectos imprevistos que causaron que mucha de la electricidad que se enviaba a cada chip simplemente se fugara, se generaba calor pero sin hacer nada. Mientras tanto, los chips estaban tan atiborrados de transistores que era imposible absorber o descargar el calor que producían. Cuando el tiempo del reloj llegó a 5 giga hertzios, los fabricantes de chips se dieron cuenta de que los chips se calentaban tanto que sin un sistema de refrigeración elaborado, el silicio del cual estaban hecho se derretiría. La industria necesitaba un modo diferente para mejorar el rendimiento.

Debido a los diseños complejos que ahora exigen los chips de un solo núcleo de alta velocidad, los núcleos múltiples pueden producir la misma cantidad de potencia de procesamiento mientras que consumen menos electricidad. Menos electricidad genera menos calor. Es más, el uso de núcleos múltiples dispersa el calor que haya.

Sin embargo, la mayoría de los programa de computación, no se diseñaron teniendo en cuenta los núcleos múltiples. Sus instrucciones se ejecutan en una secuencia lineal, sin que pase algo paralelamente. Si tu ordenador parece estar haciendo más de una cosa a la vez, es porque el procesador alterna sus actividades más rápido de lo que tu puedes comprender. La forma más fácil de usar los núcleos múltiples ha sido a través de una distribución de tareas: por ejemplo, hacer funcionar el sistema operativo con un núcleo mientras que el otro ejecuta una aplicación. Eso no requiere de todo un modelo nuevo de programación, y puede funcionar para los chips actuales, que tienen dos o cuatro núcleos. Pero ¿qué hay de los del mañana, que pueden tener 64 núcleos o más?

 

Volviendo al Trabajo de Ayer

Leslie Valiant, profesora de ciencias de la computación y matemática aplicada en la Universidad de Harvard, dice que, afortunadamente, los fundamentos de paralelismo se elaboraron hace décadas, en el campo de la computación de alto rendimiento (es decir, con los superordenadores). “El desafío actual es hallar el modo en que aquel trabajo resulte útil hoy”, dice Valiant.

Los superordenadores que inspiraron la computación de núcleos múltiples, eran dispositivos de segunda generación de los años 80, fabricados por empresas como Thinking Machines y Kendall Square Research. Esos ordenadores utilizaron procesadores que estaban a la venta, de a cientos o de hasta a miles, haciéndolos funcionar paralelamente. Algunos fueron encargados por DARPA () como una alternativa más barata a los superordenadores Cray. Las lecciones aprendidas al programar estos ordenadores son la guía para que la programación de núcleos múltiples funcione hoy. Así que Grand Theft Auto (un videojuego) tal vez se beneficie pronto con una investigación de software que se hizo hace dos décadas para ayudar a diseñar las bombas de hidrógeno.

En los años 80 fue claro que el problema clave de la computación en paralelo es el siguiente: es difícil fragmentar el software para que pueda ser procesado en paralelo por cientos de ordenadores, y luego volver a unirlo en la secuencia correcta sin que el resultado al cual se apunta se pierda o se corrompa. Los científicos de la computación descubrieron que si bien, algunos problemas podían tratarse en paralelo, otros no. Incluso, cuando los problemas podían tratarse en paralelo, los resultados podían llegar desordenados, en lo que se llamó “condición de carrera”. Imaginen dos operaciones funcionando en paralelo, una de ellas tiene que terminar antes que la otra para que el resultado final sea el correcto. ¿Cómo asegurarse que la correcta gane la carrera? Ahora, imagínense dos mil o dos millones de procesos semejantes.

Marc Snir, codirector del Centro de Investigación de Computación Universal en Paralelo, (UPCRC) en la Universidad de Illinois, en Urbana-Champaign, dice que: “Lo que aprendimos en este trabajo anterior de computación de alto rendimiento, es que hay problemas que se prestan al paralelismo , pero que no es fácil escribir aplicaciones paralelas”. Normalmente, los programadores utilizan herramientas y lenguajes de programación especializados para escribir las instrucciones para el ordenador en términos que sean más fáciles para el entendimiento humano que los unos y ceros del código binario. Pero esos leguajes fueron diseñados para representar secuencias lineales de operaciones; es difícil organizar miles de procesos paralelos a través de una serie de comandos lineal. Para crear programas paralelos de la nada, lo que se necesita son lenguajes que le permitan al programador escribir un código sin pensar en cómo hacerlo paralelo. Debería programar como hace habitualmente mientras que el software identifique cómo distribuir las instrucciones efectivamente en los distintos procesadores. “No hay herramientas buenas ahora para ocultar el paralelismo ni para hacer que resulte obvio (cómo lograrlo)”, concluye Snir.

Para ayudar a resolver dichos problemas, las empresas reclutaron veteranos de la supercomputación de los años 80. Por ejemplo David Kuck, un profesor emérito de la Universidad de Illinois muy conocido por haber desarrollado herramientas para la programación en paralelo. Ahora trabaja en la programación de núcleos múltiples para Intel. Lo mismo sucedió con todo un equipo contratado por la ex Digital Equipment Corporation, que en una vida profesional anterior, desarrolló la implementación de Digital de la interfaz de paso de mensajes (MPI), el estándar de software dominante para la supercomputación actual en numerosas máquinas.

En un sentido, para estos protagonistas veteranos las cosas son más fáciles que en aquel entonces. Eso es porque muchas de las aplicaciones de núcleos múltiples actuales son muy diferentes a las que imaginó el diseñador de mainframe legendario Gene Amdahl, que teorizó que ganar velocidad utilizando procesadores múltiples está limitado por el grado al cual se deberá convertir un programa dado al modo paralelo.

Los ordenadores estan manejando grandes cantidades de datos como nunca antes, pero sus tareas de procesamiento están hechas tan idealmente para trabajar en paralelo que las limitaciones a la ley de Amdahl (descrita en 1967), se están manifestando como si no fueran limitaciones. El ejemplo más simple de una tarea masivamente paralela es la determinación de la fuerza bruta de una clave desconocida que prueba todas las combinaciones posibles de caracteres. Dividir las soluciones potenciales entre 1.000 procesadores sólo hará que las cosas se hagan 1.000 veces más rápido. Lo mismo vale actualmente para las aplicaciones que le exigen mucho al procesador para codificar datos de audio y de video. Comprimir fotogramas en paralelo es casi perfectamente eficiente. Pero si bien al procesamiento paralelo hoy le resulta más fácil hallar usos, no significa que sea más fácil de hacer. Facilitar las cosas requerirá de un esfuerzo común entre fabricantes de chips, los que desarrollan software, y académicos que sean científicos de la computación. Ciertamente, el UPCRC de Illinois, está financiado por Microsoft e Intel, las dos empresas que más ganarían si la computación de núcleos múltiples es un éxito, y que más perderían si fracasa.

Inventar Herramientas Nuevas

Si el software se sigue haciendo más complejo, no es sólo porque se le estén agregando características nuevas. También es porque el código se construye sobre más y más capas de abstracción que ocultan la complejidad de lo que los programadores están haciendo realmente. No estamos exagerando. Los programadores precisan de abstracciones para que el código binario básico realice las tareas cada vez más avanzadas que queremos que realicen. Sin embargo, en lo que se refiere a escribir para procesadores paralelos, los programadores están utilizando herramientas tan rudimentarias que James Larus, el director de arquitectura de software para el proyecto de Data Center Futures en Microsoft Research, los compara con el lenguaje de más bajo nivel y más difícil que puede usar un programador.

Larus dice que “no podríamos imaginarnos escribiendo el software actual con lenguaje de ensamblador. Pero por alguna razón, pensamos que podemos escribir software paralelo igual de sofisticado con las piezas críticas y nuevas, escritas en lo que llegó a ser el lenguaje ensamblado en paralelo. No podemos”.

Esa es la razón por la cual Microsoft saca a la venta herramientas de programación paralela, lo más rápido que puede. Por ejemplo, F# es la versión en paralelo del lenguaje de programación ML genérico de Microsoft. No sólo realiza ciertas funciones en paralelo, sino que evita que interactúen incorrectamente, y así, resulta más fácil escribir software en paralelo. Mientras tanto, Intel está mandando a Ghuloum al exterior una semana al mes para hablar con quienes desarrollan software sobre la arquitectura de núcleos múltiples y los modelos de programación paralela. Hemos asumido la filosofía que el “problema” de la programación en paralelo no se resolverá en uno o dos años, y requerirá de muchas mejoras adicionales a los lenguajes existentes (y una menor cantidad de pasos). También tiendo a creer que no podemos hacer esto al vacío, es decir que, sin retroalimentación importante de los programadores, seguramente terminaremos cometiendo errores de alguna manera”, comenta Ghuloum.

Tanto en el mercado comercial como en el de código abierto, otros leguajes nuevos y herramientas, o manipulan el poder del procesamiento de núcleos múltiples o disfrazan su complejidad. Entre ellos se halla el esquema MapReduce de Google, que hace que resulte más fácil ejecutar computación paralela a través de grupos de terminales de ordenadores y Hadoop, una implementación de código abierto de MapReduce que puede distribuir aplicaciones a través de miles de nodos. Los lenguajes de programación nuevos como Clojure y Erlang se diseñaron desde cero para la computación en paralelo. La aplicación popular del chat de Facebook está escrita parcialmente en Erlang.

Mientras tanto, Cilk Arts, una empresa derivada del MIT, puede reducir programas escritos en un lenguaje establecido C++ a “hilos” que pueden ejecutarse en paralelo en núcleos múltiples. Y Appistry, ubicada en St. Louis, afirma que su Enterprise Application Fabric, distribuye aplicaciones automáticamente para el esquema de programación .Net de Microsoft a través de miles de servidores sin que los programadores tengan que cambiar un solo renglón de sus códigos originales.

Los Límites de la Computación de Núcleos Múltiples

Aunque el sueño de Intel de chips de 10 y de 30 giga hertzios dio lugar a la búsqueda de computación de núcleos múltiples, éstos en sí pueden estar presentes durante varios años más que décadas. La eficiencia de los sistemas paralelos declina con cada procesador que se agrega ya que los núcleos compiten por los mismas datos. Llegará un punto en el que agregarle un núcleo nuevo a un chip hará que pierda velocidad. Eso tal vez fije un límite práctico a la estrategia de los núcleos múltiples, mucho antes que comencemos a comprar PCs con cien núcleos.

Sin embargo ¿importa? Mientras que puede haber aplicaciones que requieran el poder de muchos núcleos, la mayoría de las personas no están utilizando esas aplicaciones. Excepto los jugadores extremos, pocas personas se quejan de que sus PC son demasiado lentos. De hecho, Microsoft hizo hincapié que Windows 7, el sucesor a Windows Vista (que está aquejada de problemas), utilizará menos poder de procesamiento y memoria que Vista . El cambio fue necesario por la popularidad de plataformas de computación móviles de menor consumo y la migración que se espera de aplicaciones del PC a servidores basados en la Internet. Un cínico podría decir que la búsqueda de cada vez más poder de procesamiento es algo estrictamente comercial, que las empresas de computación y de semiconductores, los vendedores de software y los fabricantes de telefonía móvil necesitan que compremos aparatitos nuevos.

Así que ¿cuál es la desventaja si falla la computación con núcleos múltiples? ¿Cuál será el impacto probable sobre nuestra cultura si tomamos un camino técnico errado y de repente no somos capaces de utilizar todos nuestros 64 núcleos de procesadores en nuestros ordenadores notebook del futuro?

“No puedo esperar. La revocación de la ley de Moore podría generar un renacimiento en el desarrollo de software. Sólo entonces podremos crear software que se ejecute sobre una plataforma estable y duradera”, afirma Steve Wozniak, el inventor de Apple II.

Wozniak dice que “en las escuelas, la vida útil de un escritorio es de 25 años, un libro de texto 10 y un ordenador 3, como mucho. De estos elementos, cuál es el más caro para comprar y hacer funcionar? Obviamente, el PC. ¿Cuál tiene valor residual cuando su vida útil se acabo? No el PC ya que cuesta dinero deshacerse de él. Por lo menos, los libros pueden quemarse para generar calor. Hasta que la tecnología se desacelere lo suficiente como para que las plataformas de computación duren los suficiente como para ser económicamente viables, no serán realmente inherentes a la educación. Así que, el final de la ley de Moore, si bien parece malo, podría resultar bueno”.

Robert X. Cringely, ha escrito sobre tecnología durante 30 años. Es el autor de “Imperios Accidentales: De cómo hacen los chicos en Silicon Valley para ganar millones, luchar contra la competencia extranjera, y aún así no poder conseguir una cita."

Copyright Technology Review 2008

Computación

Las máquinas cada vez más potentes están acelerando los avances científicos, los negocios y la vida.

  1. La 'start-up' de EE UU que se enfrenta al gigante japonés de materiales para chips

    La financiación federal está impulsando a empresas estadounidenses como Thintronics a incursionar en la fabricación de semiconductores. El éxito está lejos de estar garantizado.

    Placas de circuitos electrónicos apiladas en una cadena de montaje.
  2. ASML, la empresa que revolucionó la fabricación de chips y quiere seguir haciéndolo

    ‘MIT Technology Review’ se reunió con el CTO saliente, Martin van den Brink, para hablar del ascenso de la empresa a la hegemonía y de la vida y muerte de la Ley de Moore  

    Dos trabajadores de ASML pasan por delante de la máquina UVE de alta apertura numérica en Veldhoven
  3. ‘Chiplets’: el arma de China en su batalla tecnológica contra EE UU

    Al conectar varios chips menos avanzados en uno, las empresas chinas podrían eludir las sanciones impuestas por el gobierno estadounidense.