Está en la página 1de 6

Impacto de los cambios del hardware en la programacin de aplicaciones

Cuando empec a disear ordenadores para IBM, la idea de la compatibilidad del software no era importante. Si haba que volver a escribir una aplicacin para que pudiera ejecutarse en una nueva generacin de equipos, pues se haca. En los aos 1970, sin embargo, las empresas que usaban nuestros sistemas dejaron claro a los fabricantes de ordenadores que la compatibilidad era importante. Sus mayores inversiones eran en aplicaciones de software y estas aplicaciones tenan que ejecutarse en la siguiente generacin de hardware. No slo eso, sino que tambin tenan que ejecutarse ms deprisa. El requisito de poder reutilizar las aplicaciones para computacin cientfica, especialmente en superordenadores, no existi hasta hace muy poco tiempo. La norma era que para una nueva generacin de ordenadores dedicados a realizar clculos cientficos haba que volver a escribir las aplicaciones. Incluso en el mundo Unix la compatibilidad del software tena poca importancia hasta que los usuarios empresariales empezaron a usar ese sistema operativo. Ahora, cuando IBM anuncia un nuevo modelo Power Systems, siempre se declara que el equipo tiene "compatibilidad binaria" con los modelos anteriores. Esta declaracin dirigida a los usuarios de Unix sirve para asegurarles que podrn ejecutar las aplicaciones antiguas sin tener que volver a escribirlas o compilarlas. Conforme las tecnologas de hardware han ido evolucionando, los fabricantes de hardware han sido capaces de aumentar el rendimiento y las velocidades de transferencia de nuestros equipos y de aadirles ms capacidades y funciones. Para poder utilizar a fondo el nuevo hardware, los programas de aplicacin generalmente han de escribirse de nuevo. Sin embargo, mientras las aplicaciones antiguas vean que su rendimiento mejora en el hardware nuevo, habr pocos incentivos para volver a escribirlas. Un ejemplo perfecto de esta reluctancia a volver a escribir viejas aplicaciones est en la migracin de la arquitectura de 32 bits a la de 64 bits. Existen ordenadores con hardware de 64 bits desde principios de los aos 1990. Hoy en da, cualquier equipo, desde el mainframe ms sofisticado hasta el PC ms econmico, tiene una arquitectura de 64 bits. Aunque se ha tardado casi 15 aos en reescribirlos, actualmente existen sistemas operativos de 64 bits para las plataformas de hardware ms importantes. Las aplicaciones son otra historia. Hoy en da hay muy pocos programas de aplicacin de 64 bits. En Unix, Windows e incluso muchos mainframes la aplastante mayora de las aplicaciones que se ejecutan son de 32 bits. Naturalmente, existe una brillante excepcin. Todas las aplicaciones de IBM i se ejecutan como aplicaciones de 64 bits, pero esta tambin es otra historia. En el resto del sector, la migracin del software de 32 bits a los 64 bits llevar al menos 25 aos y quizs ms. Qu pasara si la migracin a un hardware nuevo no mejorara el rendimiento de las aplicaciones existentes? Peor an, qu pasara si el rendimiento se degradara a menos que las aplicaciones volvieran a escribirse para el hardware nuevo? Esto podra ser un desastre tanto para los fabricantes como para los usuarios.

Sorprendentemente, eso es exactamente lo que podra pasar en el sector de la informtica dentro de un par de aos. An se est discutiendo acaloradamente sobre qu es lo que ocurrir exactamente, pero muchos estn convencidos de que volver a escribir de forma generalizada todas las aplicaciones es la nica forma de seguir adelante. Deje que me explique. El ncleo del problema Desde que hicieron su aparicin los primeros microprocesadores a principios de la dcada de 1970, la forma de aumentar el rendimiento ha consistido en hacer chips con componentes cada vez ms pequeos y en hacerlos funcionar a velocidades de reloj cada vez ms altas. Si las velocidades de reloj son ms altas significa que todos los programas, viejos o nuevos, vern alguna mejora en el rendimiento. Sin embargo, hace algunos aos se puso punto final a este sistema de disear microprocesadores, cuando el tamao de los transistores integrados en un chip se volvi tan pequeo que la mayor parte de la electricidad que circulaba por esos transistores se fugaba, produciendo una gran cantidad de calor. Adems, haba tantos transistores y estaban tan apiados que el calor total generado simplemente no poda disiparse de ninguna manera. Algunos fabricantes de procesadores pensaban que sin mecanismos de refrigeracin muy sofisticados, las velocidades de reloj por encima de los 5 GHz fundiran el silicio del que estn hechos los chips. El resultado fue que los fabricantes de procesadores dejaron de aumentar las velocidades de reloj. Esto no quiere decir que los avances en la tecnologa del silicio y el diseo de chips hubieran llegado a su fin. De hecho, la Ley de Moore, que dice que el nmero de transistores en un chip se dobla cada dos aos, sigue vigente. Lo que ha cambiado es la forma en que los fabricantes de chips estn usando esos transistores adicionales predichos por la Ley de Moore. En la actualidad se estn utilizando para aumentar el nmero de "ncleos" del chip. El fabricante de procesadores Intel, por ejemplo, pronostica que un futuro no tan lejano veremos chips con cientos de ncleos en su interior. Con ocho basta Aunque los chips con varios ncleos pueden haber solucionado algunos de los problemas de los fabricantes, estn creando problemas enormes para casi todos los dems en el sector de la informtica. Los fabricantes de ordenadores, los diseadores de sistemas operativos, los desarrolladores de compiladores, los programadores de aplicaciones y los usuarios se ven afectados por la decisin de implementar chips de varios ncleos. Las aplicaciones que se ejecutan en una sola hebra las aplicaciones diseadas para ejecutarse secuencialmente en un nico procesador no ganan nada ejecutndose en chips de varios ncleos. Lo nico que puede hacerse es volver a escribir esas aplicaciones para chips de varios ncleos o, al menos, volver a compilarlas con un compilador diseado especficamente para el proceso en paralelo. La mayora de estimaciones indican que hoy en da ms del 90% de las aplicaciones se ejecutan en una sola hebra. Volver a escribir o a compilar estas aplicaciones secuenciales para que se ejecuten en paralelo ser difcil. La mayor parte de los expertos en software convienen en que el nmero mximo de ncleos que pueden utilizar las aplicaciones existentes es de entre cuatro y ocho. Ir ms all de ocho obligara a redisear radicalmente las aplicaciones. Y an as, los fabricantes de chips estn emperrados en ir mucho ms all de los ocho ncleos como la nica forma de aumentar el rendimiento.

Rpidamente se estn creando nuevas herramientas de desarrollo para hacer frente a lo que algunos autores han llamado "la amenaza de los chips de varios ncleos". A diario aparecen nuevos lenguajes y herramientas diseados especficamente para la programacin en paralelo. Microsoft, por ejemplo, ya ha presentado varias herramientas nuevas de programacin en paralelo y un lenguaje de programacin denominado F#. Intel, HP y otros proveedores tambin han presentado nuevas herramientas y lenguajes de programacin para los chips de varios ncleos. Muchos de los nuevos lenguajes de programacin en paralelo se crearon originalmente para programar en superordenadores masivamente paralelos y ahora se propone utilizarlos en equipos de uso general. Dos de estos lenguajes, Erlang y Clojure, son dialectos de Java que permiten que las aplicaciones se distribuyan entre miles de ncleos. Para complicar an ms las cosas, muchos profesionales informticos creen que los chips de varios ncleos, como los que existen actualmente en procesadores genricos convencionales, no sobrevivirn mucho tiempo. Sealan que el problema de tener un gran nmero de ncleos en un solo chip es la imposibilidad de enviar datos a todos los procesadores. El nmero de conexiones con el chip no aumenta, lo que significa que el ancho de banda con las memorias externas es limitado. Los fabricantes de hardware, por ejemplo IBM e Intel, proponen apilar chips de memoria encima de los chips del procesador para incrementar el nmero de conexiones con el chip y, por lo tanto, aumentar el ancho de banda de la memoria. Esta tampoco es una solucin a largo La gran noticia para el hardware puede que sea que muchos procesadores especializados se estn diseando especficamente para el proceso en paralelo. Un ejemplo es el chip Cell de IBM, que contiene un procesador POWER y ocho procesadores de propsito especial diseados para el proceso en paralelo. Estoschips, creados originalmente para plataformas de videojuegos en las que es extremadamente importante disponer de unos grficos muy realistas y una capacidad de respuesta en tiempo real, actualmente se estn utilizando para diversas aplicaciones, incluso en el diseo de superordenadores. No pasar mucho tiempo antes de que los chips de varios ncleos incluyan distintos procesadores para funciones especializadas. Intel ha anunciado recientemente que tambin est explorando diseos de tipo "sistema en un chip" (complejos microchips que llevan a cabo tareas especializadas adems de clculos de uso general). Programar para estos chips de "arquitecturas hbridas" ser difcil y exigir nuevas herramientas de programacin. La nica cosa clara sobre el futuro del desarrollo de los chips de varios ncleos y las tecnologas de software que se usarn para crear aplicaciones para chipsmasivamente paralelos es que el futuro no est nada claro. Aunque es imperativo que el sector de la informtica se mueva deprisa para identificar herramientas y tcnicas eficaces que los desarrolladores de software puedan usar para crear futuras aplicaciones paralelas, no hay indicaciones de que esto vaya a ocurrir pronto. Sistema de computacin de alta productividad Uno de los proyectos ms estimulantes en el campo del proceso en paralelo lo inici hace unos cuantos aos la Agencia de proyectos de investigacin avanzados para la defensa (DARPA). Se llama HPCS (High Productivity Computing System o Sistema de

computacin de alta productividad) y su objetivo es proporcionar una nueva generacin de sistemas de alta productividad que puedan usarse para una gran variedad de aplicaciones. La razn de que se necesite crear una nueva generacin de ordenadores est en la forma en que las aplicaciones paralelas se escriben hoy en da. Hace mucho que es bsico utilizar capas de abstraccin para ocultar la complejidad y mejorar considerablemente la productividad de la programacin comercial. Las aplicaciones comerciales escritas en lenguaje ensamblador desaparecieron hace muchos aos. An as, en el mundo de la programacin de aplicaciones altamente paralelas, los programadores siguen viviendo en la Edad de Piedra y utilizando el equivalente a un lenguaje ensamblador paralelo. Los nuevos lenguajes y herramientas que se estn desarrollando para los chips de varios ncleos intentan elevar el nivel de la programacin en paralelo, pero todava tienen que recorrer un largo camino. Como las herramientas y los lenguajes de programacin en paralelo son primitivos, la productividad de los programadores es baja. Adems, siempre que aparece una nueva generacin de hardware, hay que volver a escribir de arriba abajo aplicaciones enteras. No hay posibilidad de reutilizar las aplicaciones existentes en el hardware nuevo. HPCS pretende resolver los problemas de productividad y reutilizacin. Para ello, DARPA ha financiado los esfuerzos de investigacin de tres empresas: Cray, Sun e IBM. El proyecto PERCS (Productive, Easy-to-use, Reliable Computing System o Sistema de computacin productivo, fiable y fcil de usar) de IBM, subvencionado por DARPA, es un intento de crear un sistema muy flexible capaz de configurar sus componentes de hardware y software de modo que se adapten a las demandas de las aplicaciones. Trabajando conjuntamente con el Laboratorio Nacional de Los lamos y doce importantes universidades, el objetivo de IBM es crear sistemas que analicen automticamente la carga de trabajo y respondan dinmicamente a los cambios en las demandas de las aplicaciones reconfigurando los componentes del sistema para que se adapten a las necesidades de cada aplicacin. El proyecto PERCS usa una metodologa combinada de diseo de hardware y software para integrar avances en la tecnologa y la arquitectura de los chips, sistemas operativos, compiladores, y lenguajes y herramientas de programacin con el fin de proporcionar sistemas escalables que ofrezcan mejoras de un orden de magnitud en la productividad del desarrollo de aplicaciones paralelas en el ao 2010. Para conseguirlo, PERCS incluye un nuevo lenguaje de cdigo libre orientado a objetos denominado X10, un middleware innovador y entornos de programacin nuevos que sern compatibles con los dispositivos de hardware para automatizar muchas fases del proceso de desarrollo de programas. Algunos de estos componentes ya estn disponibles. Otros aparecern a lo largo de 2010 con los procesadores POWER7 de IBM. Mientras que la meta de HPCS es satisfacer en el ao 2010 la necesidad de usuarios avanzados de la administracin pblica, la ciencia y la industria de sistemas de computacin que trabajen a ms de un petaflop, el objetivo de IBM es ms ambicioso. Las tecnologas creadas para PERCS se implementarn en futuras versiones de Power Systems con la intencin de usarlas en aplicaciones comerciales. El fin de la computacin de varios ncleos? Ahora debera resultar obvio que el sector de la informtica probablemente sufrir

importantes cambios en los aos venideros. La reprogramacin de las aplicaciones para los chips de varios ncleos ser todo un desafo. Ocho ncleos y sistemas operativos y compiladores mejorados probablemente sern suficientes para la mayora de las aplicaciones actuales. No est claro que las aplicaciones convencionales obtengan ninguna ventaja de chips de ms de ocho ncleos y hasta puede que vean mermado su rendimiento. A medida que aumenta el nmero de ncleos que compiten por los mismos datos, llega un punto en el que aadir otro ncleo en realidad ralentizar la aplicacin. Incluso con todos los esfuerzos que se van a dedicar a reescribir las aplicaciones para los chips de varios ncleos, es muy probable que la computacin de varios ncleos en su forma actual no sobreviva ms que unos cuantos aos. Debido a las limitaciones de la computacin de varios ncleos, muchos expertos, especialmente en el mundo acadmico, no slo predicen el fin de dicha computacin, sino el de las arquitecturas de ordenador convencionales, como la arquitectura x86 de Intel. Argumentan que sta nunca se dise para el proceso en paralelo y que una implementacin de varios ncleos es simplemente un parche a corto plazo. Muchos de esos expertos ahora piden la creacin de una nueva arquitectura de ordenadores estable y duradera que sea compatible con procesos masivamente paralelos. Tal vez el diseo del nuevo sistema se parezca en algo al del proyecto PERCS de IBM. No faltan las propuestas para el que debera ser el diseo del futuro sistema. No obstante, todo el mundo est de acuerdo en que ser muy diferente del diseo actual. Uno de los principales objetivos de casi todas estas propuestas de diseo de un sistema futuro, sea PERCS de IBM u otra cualquiera, es que las aplicaciones existentes han de poder reutilizarse. En otras palabras, el objetivo de cualquier diseo nuevo es que las tecnologas de hardware y software futuras se puedan incorporar con un mnimo impacto sobre las aplicaciones existentes. Diseo futurista Todo esto le resulta familiar? El objetivo del diseo de un sistema futuro es la independencia de la tecnologa. Esto no debera ser una sorpresa tan grande. Las inversiones en el desarrollo de software hechas hasta ahora en las aplicaciones, tanto en superordenadores como en las empresas, son demasiado valiosas como para desprenderse de ellas sin ms. La nueva generacin de ordenadores debe encontrar la forma de proteger estas inversiones. Como comentaba Mark Twain en una ocasin, "La historia no se repite, pero rima". Me satisface saber que conceptos que surgieron en los aos 1970, como la independencia de la tecnologa, vuelven a estar de moda. Visto como un concepto radical, futurista, cuando se present por primera vez en el S/38 en 1978, la independencia de la tecnologa, que es la capacidad de incorporar nuevas tecnologas de hardware y software sin que se vean afectadas las aplicaciones existentes, sin duda ha resistido la prueba del paso del tiempo. El diseo original del S/38 no se qued estancado. Se siguieron aadiendo ms funciones y en 1988 se incluy la posibilidad de ejecutar aplicaciones del S/36. El resultado de la fusin de estos dos sistemas fue el AS/400. El nuevo sistema inmediatamente tuvo un gran xito entre empresas de todos los tamaos.

En 1995, IBM present los primeros procesadores POWER de 64 bits en el AS/400. Gracias al diseo independiente de la tecnologa del AS/400, no hubo que modificar ni recompilar para el nuevo hardware ni una sola lnea de cdigo de las aplicaciones. Ningn otro sistema ha sido capaz de migrar aplicaciones a una arquitectura de procesador totalmente nueva sin haber tenido que hacer cambios masivos en las aplicaciones. El AS/400, que posteriormente se rebautiz como iSeries, System i y, por ltimo, IBM i, est solo en este sentido. En la actualidad, el IBM i conserva la misma independencia de la tecnologa que ha protegido la inversin en aplicaciones de cientos de miles de empresas de todo el mundo durante ms de 30 aos. Migrar a nuevas generaciones de hardware y software con el paso de los aos jams ha requerido volver a escribir o a compilar una aplicacin. Ni siquiera con el cambio a los primeros chips de varios ncleos disponibles comercialmente en el ao 2001 hubo que hacer cambios en las aplicaciones. Esas mismas aplicaciones que se migraron de un modo transparente de una generacin de ordenadores a la siguiente, seguirn funcionando en el futuro. Ningn otro sistema puede igualar este rcord. Puede que el mundo est preparado por fin para este pensamiento "radical". El proyecto HPCS de DARPA sin duda est intentando hallar el medio de evitar tener que volver a escribir las aplicaciones cada vez que cambia el hardware. Microsoft e Intel estn creado nuevas herramientas tan deprisa como les es posible para proteger sus inversiones en el hardware y el software para la arquitectura x86, aunque el concepto mismo de chips de varios ncleos puede ser errneo. Y no nos olvidemos de la productividad. IBM i y los sistemas que lo precedieron se disearon desde el principio para que escribir aplicaciones en ellos fuera ms productivo que en los sistemas convencionales. Integrar en el sistema operativo muchos de los componentes que la aplicacin necesita, como una base de datos, es una forma de mejorar la productividad. Otra es el almacenamiento de nivel nico, en que todo el almacenamiento se trata como si fuera memoria. La seguridad integrada y la resistencia a los virus tambin pueden hacerle la vida mucho ms fcil a los programadores de aplicaciones. Si, como mucha gente piensa, el mundo de la informtica ha llegado a un punto crtico debido a las limitaciones del hardware de varios ncleos, tal vez, slo tal vez, un diseo futurista como el del IBM i sea la respuesta. Aunque es muy poco probable que el diseo del IBM i sea la nica respuesta, resulta reconfortante saber que en el futuro el IBM i seguir all para satisfacer las necesidades informticas de las empresas. [Nota de la redaccin: este artculo es una adaptacin del prefacio a The All-Everything Operating System, de Brian W. Kelly (Lets Go Publish, 2009) y se ha usado con permiso de Frank Soltis]
Frank G. Soltis, que recientemente se ha jubilado de su trabajo como director cientfico de IBM, se le considera el padre del AS/400. Es el creador de la arquitectura independiente de la tecnologa que condujo a una nueva generacin de ordenadores empresariales, incluyendo el AS/400 y el IBM i. El Doctor Soltis actualmente viaja por todo el mundo dando conferencias sobre avances tecnolgicos y tendencias de la informtica a largo plazo. Adems, trabaja con destacados Business Partners de IBM asesorndoles en sus estrategias de productos futuras.