En 1965 Gordon Moore predijo que la cantidad de transistores que se podía integrar en un chip de silicón se duplicaría cada 18 a 24 meses. Esta se conoce como la Ley de Moore, y se ha mantenido durante más de 40 años. Durante este tiempo, el incremento en la densidad de transistores ha generado aumentos proporcionales en el desempeño de los microprocesadores y la relación precio/desempeño.
En general, conforme los transistores son más pequeños pueden switchear más rápido entre un estado y otro. Esto permite que al mismo tiempo que aumenta la cantidad de transistores, también se aumente la frecuencia del reloj de un procesador. Tradicionalmente, los aumentos en la frecuencia de reloj han sido más importantes que los aumentos en densidad de transistores. Esto es porque aprovechar una mayor cantidad de transistores requiere mejoras de diseño, mientras que las ganancias otorgadas por una mayor frecuencia de reloj son automáticas. El software existente se ejecuta de forma más rápida sin tener que hacerle nada. Por esta razón, el aumento de frecuencia ha sido el motor principal detrás de las mejoras en desempeño de los procesadores.
La Ley de Moore se mantiene al día de hoy y se espera que la densidad de transistores se siga duplicando al mismo ritmo durante otros diez años por lo menos. Sin embargo, en años recientes el aumento de frecuencia ha encontrado obstáculos mayores. Sucede que el consumo de energía y generación de calor aumentan exponencialmente con la frecuencia de reloj. Esto no había sido un problema anteriormente porque los niveles no eran significativos, pero en los últimos años se ha convertido en un factor de crucial importancia en el diseño de procesadores.
Aunque los servidores modernos proveen un desempeño por watt mucho mejor que el de sus antecesores, en total tienen requerimientos de energía y enfriamiento mayores, y muchos de los centros de datos existentes no fueron diseñados para satisfacer estas demandas de energía. El costo acumulativo de cumplir estos requerimientos se está haciendo excesivo, especialmente ante el aumento en los precios de la energía eléctrica.
Por esta razón, aumentar la frecuencia de reloj ha dejado de ser el medio principal para aumentar el desempeño de los procesadores. Se necesitan nuevas estrategias para mantener el ritmo de mejora en desempeño y precio.
Estrategias de mejora que se han aplicado
A lo largo de los años, los diseñadores de procesadores han encontrado varias estrategias para aprovechar la mayor densidad de transistores sin necesidad de aumentar la frecuencia de reloj. Algunas son:
• Formatos de datos mayores. Los procesadores modernos de 64 bits son el resultado de una larga evolución desde los primeros procesadores de 4 bits. Cada mejora ha provisto un procesamiento más rápido de mayores cantidades de datos, y ha permitido que los procesadores puedan apuntar directamente a mayores volúmenes de memoria. Actualmente estamos viviendo una transición donde los procesadores de 64 bits se convertirán en la norma. Para poner esto en perspectiva, recordemos que un procesador de 32 bits puede apuntar directamente hasta un máximo de 4GB de memoria, mientras que uno de 64 bits soporta espacios de dirección de 18 millones de terabytes.
• Paralelismo a nivel de instrucciones. También conocido como ILP por sus siglas en inglés (Instruction Level Parallelism), permite que un procesador dinámicamente evalúe conjuntos de código para determinar qué instrucciones son independientes y se pueden procesar de forma simultánea o en otro orden. Si una instrucción está esperando una entrada de datos, entonces el procesador puede ejecutar una instrucción independiente mientras tanto. Esta estrategia ha cobrado mayor importancia conforme ha aumentado la brecha entre la velocidad de los procesadores y las memorias. A lo largo de los años, se ha hecho un uso fuerte de ILP para reducir el impacto de los tiempos de espera de memoria. Sin embargo, esta actividad es demandante en procesamiento, ya que requiere que el procesador examine código en tiempo de ejecución, encuentre oportunidades de paralelizarlo, y luego reagende las instrucciones en la cola de procesamiento. Esto hace a ILP altamente intensivo en recursos, lo cual se termina traduciendo en un alto consumo de energía y generación de calor.
• Hyper-Threading. Es una técnica que permite que en un momento determinado las diferentes partes de un CPU estén trabajando en diferentes hilos (threads). De esta forma se obtiene un mayor aprovechamiento del CPU. Para obtener los beneficios de Hyper-Threading, así como de otras formas de paralelismo a nivel de threads, se requiere que el software a ejecutarse esté desarrollado bajo un paradigma multithreaded.
• Mayor cache. La memoria cache es un espacio para almacenar datos e instrucciones cerca del procesador (típicamente en el mismo chip). Esto la hace mucho más rápida que la memoria convencional, además de consumir menos energía.
De las estrategias descritas, la que puede proveer las mejoras más significativas en desempeño y consumo de energía es la de aumentar el cache. Sin embargo, esto no es suficiente para mantener el ritmo de mejora que se tenía con el aumento periódico de la frecuencia de reloj. Es así que se necesita de una estrategia nueva y diferente para mantener el crecimiento en desempeño que demanda la industria.
La estrategia multicore
La respuesta de la industria a los retos de desempeño ha sido integrar más núcleos (cores) de procesamiento en cada chip de microprocesador. Al tener varios cores ejecutando instrucciones de forma simultánea, es posible brindar un gran desempeño en aplicaciones multithreaded mientras se mantiene baja la frecuencia de reloj, limitando así el consumo de energía.
En esencia, un procesador multicore es similar a un servidor con varios procesadores, con la diferencia de que las unidades de procesamiento están integradas en un solo chip, lo cual brinda un mayor desempeño y eficiencia de energía.
Los principales fabricantes de procesadores estiman que la estrategia multicore permitirá obtener mejoras en desempeño de hasta 10 veces durante los próximos tres a cuatro años. Mientras tanto, estas empresas están desarrollando nuevos materiales, estructuras de transistores, diseños de circuitos y otras tecnologías que permitirán aumentar la frecuencia de reloj de los núcleos pero manteniendo niveles bajos de consumo de energía.
Aprovechando multicore
Queda claro que los procesadores multicore son el paradigma predominante durante los próximos años en prácticamente todas las arquitecturas de cómputo, ya que permiten brindar mejoras continuas en desempeño. Los procesadores multicore funcionan muy bien en aplicaciones que hacen un buen uso de threads, tales como aplicaciones científicas, y de alto volumen transaccional. También son ideales para ambientes virtualizados, ya que cada ambiente virtual puede ejecutarse de forma independiente en cada core.
Sin embargo, en el caso de aplicaciones que no hagan un buen uso de threads, las mejoras de desempeño que se pueden obtener al aumentar el número de núcleos de procesamiento son marginales. Es por esto que las organizaciones deben revisar cuidadosamente el modelo y carga de trabajo al que están sujetos sus aplicaciones y servidores, para evaluar qué tantas mejoras pueden obtener a través de multicore. Adicionalmente deben establecer lineamientos para que las nuevas aplicaciones hagan un buen uso de threads y por lo tanto aprovechen al máximo las arquitecturas multicore.
Acerca del autor
Robert Shiveley es Gerente de Soluciones Empresariales en Intel, donde dirige las estrategias de transición en la plataforma de servidores. La versión original de este artículo está publicada en http://www.devx.com/go-parallel/Article/32725 y ha sido traducida y editada por SG con el permiso del autor.
- Log in to post comments