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

miércoles, 16 de febrero de 2011

Enfermo como un Zombie

Hoy me levanté congestionado como la autopista en hora pico.


Me siento como un Zombie debe sentirse...a veces creo que no porque todo su organismo está muerto, pero si puede moverse, hacer ruidos como "agggg", eso requiere de capacidad motriz, controlada por muy pequeñas ondas cerebrales.


Asi que tal vez si sienten, tal vez si piensan en algo. Las últimas películas de George A Romero han demostrado un avance en sus ondas cerebrales, piensan y todo... Asi que tal vez no es taaaaan descabellado pensar que así como estoy yo, "siente" un Zombie.

lunes, 14 de febrero de 2011

Multinúcleos: La proliferación de los procesadores

Reseña sobre artículo  Multicore CPUs: Processor Proliferation by Samuel K Moore
La tendencia que se veía a mediados de la década de los ‘90 estaba llegando a un límite. En ese entonces, la eficiencia en los procesadores se basaba en la construcción con transistores más pequeños y veloces, la velocidad de reloj de los procesadores de núcleo simple iba aumentando tan rápidamente, que los productores se encontraban fieles a este paradigma de evolución. Pero, existía una contrapartida; el aumento de la temperatura. Es por eso que algo era claro; siendo la temperatura un enemigo de los procesadores, la táctica evolutiva debía cambiar.

Para 1994 y sus años consecutivos, la eficiencia de los procesadores era un 50% superior al de su año anterior. Como en ese entonces el paradigma era por demás prometedor, no fue ampliamente aceptada la predicción de Kunle Olukotun, profesor de la universidad de Stanford, de implementar procesadores de multinúcleos. Con el avance de los años, los productores de procesadores comenzaron a implementar los multinúcleos. Contrario al motivo que mencionaba Olukotun del techo tecnológico de capacidades de procesamiento, se comenzó a implementar por motivos de temperatura y energía. Un análisis hecho por Intel por los ’90 demostró que la tendencia del momento podría haber generado procesadores con temperaturas cercanas a las del sol para 2010. Sea el motivo que fuere, Olukotun tenía razón.

La idea era ingeniosa; no se podía potenciar las velocidades de procesamiento, pero si aumentar el paralelismo de procesos mediante los multinúcleos. Tanto Intel como AMD e IBM comenzaron la producción de dichos procesadores, cada uno con tecnologías y enfoques distintos e igualmente innovadores. La “carrera armamentista” habría comenzado. Así como se inició con dos núcleos, se comenzó luego a pensar en cuatro y luego en seis, por lo que la pregunta volvería a surgir, ¿Cuál sería el límite? La nueva tendencia convertía a los multinúcleos en una suerte de transistores; cada vez agregar más y más pequeños, como ocurría en el paradigma anterior. Si cada núcleo consume entre 8 y 10Watts, agregar más generaría más consumo y más energía, por lo que la historia se volvería a repetir. Bajo esta preocupación, cada productor ha intentado demorar aquel visible y fortuito desenlace de esta tendencia evolutiva. AMD, por su lado, implementó la arquitectura Bulldozer mediante la cual ha logrado compartir componentes entre los núcleos sin disminuir las velocidades.

Los pronósticos visibles según los productores varían; Intel menciona que el bus de transferencia de memoria será el principal limitante entre más núcleos surjan. AMD, por otro lado plantea que seguramente el límite de los multinúcleos, así se esté hablando de cientos, sea de 16 por procesador. Para contrarrestarlo, AMD ha comenzado a analizar la posibilidad de realizar una especie de fusión entre el CPU y el GPU de la placa de video y formar así un APU (Accelerated Processing Unit). Teniendo en cuenta que las GPU pueden realizar procesos paralelos eficientemente y esos procesos son datos, se podría dedicar gran parte de los datos del CPU mediante el  procesamiento del GPU. IBM no se queda detrás con su propuesta. Sabiendo que se aproxima dicho límite, se encuentra considerando que cada núcleo realice tareas dedicadas, como por ejemplo encriptación, desencriptación, codificación de videos, entre otros.

Independientemente de estar Olukotun más partidario a la idea de núcleos heterogéneos y sea cual fuere el futuro, el problema hoy se encuentra en la limitación de los programadores. Cuando llegue el momento en donde puedan desarrollar software en paralelo, recién ahí se le podrá utilizar el máximo potencial por el cual tanto batallan los productores de procesadores. Mientras tanto, desde el hardware, será necesario que la misma tecnología y sus limitaciones generen las necesidades de cambio de paradigma. Y sino, que Olukotun nos vuelva a iluminar.

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.

jueves, 10 de febrero de 2011

Ya me van a ver con reloj de bolsillo

Hay que variar en la vida, o al menos esa es mi premisa. Ahora se me dio por querer tener reloj de bolsillo.
Me gusta la idea de buscar en el bolsillo (mismo esfuerzo que buscar el celular), y ver la hora con elegancia.
Más vale que es una estupidez pero ya de solo pensar en la situación


-"Disculpá, tenes hora?"
-"Mmmh si a ver..." digo mientras saco el reloj del bolsillo y lo abro, "es hora de tomar el te"


O, recitando al sombrerero de Alicia, "If you knew time as well as I, you wouldn't *dream* of wasting it!"


Entonces, mi capricho temporal se basa en eso... El de Doctor Who es es mala idea tampoco, asi que...
Ya me van a ver con reloj de bolsillo.