Ya sabemos que los ordenadores son cada vez más rápidos gracias al aumento de la densidad de transistores, debido a su continua reducción de tamaño. Por un lado, el incremento de transistores permite hacer más operaciones por segundo y, por otro, disminuir su tamaño permite subir la frecuencia de reloj, pero esta segunda vía de optimización se agotó en el 2004.
Veamos por qué. En primer lugar ¿qué son los hercios? El hercio o ciclo por segundo, es una unidad de medida de la frecuencia de reloj de un procesador, es decir, el número de veces, en un segundo, que la señal de reloj sube y baja, haciendo que el procesador trabaje a cada ciclo cambiando de estado sus transistores.Las unidades de medida que se utilizan son las siguientes: 1 GHz = 1.000 Mhz = 1.000.000 Khz = 1.000.000.000 hercios.
----------------------------------------------------------------
----------------------------------------------------------------
Antes del 2004 la frecuencia del reloj iba creciendo siempre al mismo ritmo. La gente presumía de los Mhz's de sus procesadores, porqué con los que existían en esa época se solía cumplir que a más Mhz's, más rápido. Esto era gracias a que los transistores, al ser más pequeños, podían cambiar de estado más rápido, permitiendo aumentar la frecuencia de reloj. Pero al subir la frecuencia de reloj, también incrementaba el calor disipado y el consumo eléctrico, lo que empezó a impedir que, llegados a cierto punto, se pudiera aumentar más la frecuencia. La mejor forma de saber si un procesador es mejor que otro, ha sido siempre probar lo rápido que funcionan las aplicaciones que se van a usar en ellos. El hecho de que nos digan la frecuencia de reloj de dos procesadores, no sirve de nada para saber cuál de ellos tiene un rendimiento superior (a no ser que tengan la misma arquitectura).
A la hora de comprar un procesador, la mejor opción es elegir aquel que tenga la arquitectura más reciente. Por ejemplo, un Core i7 a 2Ghz tiene mejor rendimiento que un Quad Core a 3Ghz, dado que el primero es más reciente que el segundo.
Al mismo tiempo y curiosamente, empezó a ser inviable explotar más el paralelismo a nivel de instrucción. Lo que ha agotado esta vía de optimización, es el aumento del coste de añadir hardware adicional que permita encontrar instrucciones que no dependan unas de otras para poderlas ejecutar en paralelo, ya que este coste ha ido aumentando cada vez más, conforme se han ido añadiendo más instrucciones en paralelo.
Este grafico de D. Paterson de la Universidad de California, muestra la evolución del paralelismo a nivel de instrucción (línea roja), el aumento de consumo (línea azul), la frecuencia del procesador (línea amarilla) y el aumento de transistores (línea verde). Como estaban agotadas las vías de optimización referentes al aumento de frecuencia y el paralelismo a nivel de instrucción, los ingenieros tuvieron que ingeniárselas para aprovechar el aumento de transistores de otras maneras, y se empezó a añadir paralelismo a nivel de procesador, procesadores de 64 bits y caches más grandes.
El paralelismo a nivel de procesador es lo que más aumenta el rendimiento. Cada 24 meses aparece un nuevo procesador con el doble de núcleos, haciendo que los ordenadores de escritorio se parezcan cada vez más a los supercomputadores, que tienen cientos de procesadores.
El problema que tiene este aumento de núcleos es que la programación se vuelve más compleja, haciendo que el software no se haya podido adaptar lo suficientemente rápido. La mayoría de los programas no paralelizan sus algoritmos desaprovechando los recursos de estos nuevos procesadores. De momento, sólo pueden sacarle partido algunos juegos y programas de diseño gráfico 3D.
Este otro gráfico muestra el esfuerzo requerido por los programadores para aprovechar la potencia del procesador (área roja), comparada con el aumento de rendimiento sin intervención del programador (área gris).
Se puede apreciar claramente que la aparición de nuevos juegos de instrucciones y el paso, en el 2004, de optimizar con el aumento de frecuencia, a optimizar con aumento de procesadores, ha disparado el esfuerzo necesario de programación para alcanzar el máximo rendimiento. A este paso, la única solución factible será que los compiladores aprendan a paralelizar los algoritmos ellos solos. Hasta entonces seguiremos comprando máquinas más potentes que no podremos aprovechar al máximo.
Fuente: pensamientoscomputables
----------------------------------------------------------------
----------------------------------------------------------------