Estar equivocado es erroneamente asociado con fracaso, cuando, en realidad, ser probado equivocado debería ser celebrado, ya que eleva a uno a un nuevo nivel de comprensión

viernes, 11 de febrero de 2011

El Problema con los multinúcleos

Reseña sobre artículo The Trouble With Multicore by David Patterson
La evolución del hardware ha alcanzado niveles increíbles. Al inicio de la historia de las computadoras, el software ha estado dependiendo de la lenta evolución del hardware. Con transistores que poco a poco iban evolucionando y haciéndose más eficientes y más pequeños, los desarrolladores siempre estaban limitados por esta situación. Hoy por hoy, el juego ha dado un giro radical. Con la incorporación de los microprocesadores de múltiples núcleos, el software no puede utilizar al máximo la capacidad que existe. Hoy es el software el que limita al hardware. Tal vez decirlo tan directo pueda sonar hasta invalido, pero el hecho de no haber programación en paralelo, genera simplemente una inutilidad de la evolución tecnológica.

Hoy por hoy, aquellos que realmente pueden usar los nuevos microprocesadores son pocos, como los video juegos. En otras ocasiones, algún grupo experto y costoso de ingenieros pueden realizar alguna aplicación que utilice dos o cuatro núcleos, pero en el uso cotidiano y las necesidades básicas, se está muy lejos de alcanzar esos niveles.

El desarrollo tecnológico aplicado a los multicores no es una mala jugada si se considera que no se puede explotar mucho más la capacidad de un microprocesador de un núcleo desde el punto de vista electrónico. De todas formas, como se menciona anteriormente, el desarrollo y desarrolladores de software no pueden acompañarlo. Ya se comienza a hablar de 128 núcleos, cuando todavía es difícil programar en dos a cuatro.

Existen ciertas consideraciones. Se podría decir que hay dos tendencias mundiales para el uso cotidiano de las computadoras y software; cloud computing y el uso de computadoras muy potentes. Se consiguen netbooks con procesadores de bajo costo y consumo de energía con el tradeoff de ser de bajo procesamiento. Estas netbooks apoyan más la tendencia de cloud computing, permitiendo que el procesamiento duro se encuentre en los servidores. La otra tendencia es aquella que potencia la compra de un portátil o un desktop con Intel i7 o con AMD Phenom II X6. En esta, se potencia más el procesamiento individual.

Si se considera la limitación de software, es probable que pasen muchos años hasta que un usuario o cliente final pueda aprovechar al máximo la tecnología con la que dispone. Por otro lado, cloud computing permite centralizar todos los servicios de software en servidores y así posiblemente permitir una mejor tendencia al “fácil” desarrollo de servicios. Es sabido que es más fácil desarrollar aplicaciones “simples” para múltiples usuarios, que aplicaciones complejas para uno solo. El cloud computing sería una evolución del primer concepto, permitiendo eventualmente la completa utilización de la tecnología con la que se dispone, y logrando que todos los usuarios finales puedan adquirir tecnología accesible de bajo procesamiento sin perjudicar las necesidades.

Es posible que si cloud computing continua evolucionando, los multiple cores se enfoquen más en los servidores y en las tarjetas de gráficos. Mientras tanto, la opinión personal es que se debería buscar la eficiencia de la tecnología actual deteniendo el incremento de núcleos e incrementando la tecnología que utilicen; ya sea el caché o la plataforma de procesos como el nuevo Sandy Bridge. Una vez identificada la forma de realizar programación en paralelo, se podría continuar evolucionando la cantidad de núcleos sumado a lo que se desarrolle de eficiencia bajo la premisa de la propuesta aquí presente.

No hay comentarios:

Publicar un comentario