La carrera hacia el rendimiento infinito
Todos queremos más...
Aunque hoy los sistemas ofrecen unos rendimientos que hasta hace un par de años eran inimaginables, las necesidades de la empresa son insaciables . A lo largo de la jornada laboral, todos los usuarios de sistemas de información pasamos una parte de nuestro tiempo esperando a que el ordenador haga lo que le hemos solicitado . Iniciar un programa, traer información de nuestra red interna, acceder a Internet, grabar en disco, recalcular . . . sólo estaremos completamente satisfechos con nuestros sistemas de información cuando no esperemos por ellos .
A principios de los 80, Hewlett-Packard fue la primera empresa que se comprometió plenamente con la arquitectura RISC . Antes de esto las arquitecturas CISC fueron la tecnología dominante durante más de 20 años . RISC son las iniciales de " Reduced Instruction Set Computing " en contraposición a CISC, que corresponden a " Complex Instruction Set Computing " . El nacimiento del RISC es el resultado del propósito de ejecutar una instrucción por cada ciclo de reloj . Pasemos brevemente a describir que pasos se siguieron para conseguirlo .
De todo el conjunto de grandes y complejas instrucciones que las arquitecturas CISC ejecutan, se observó que el 20% de las instrucciones disponibles estaban siendo ejecutadas durante el 80% del tiempo . Los datos fueron tomados en todos los entornos posibles: entornos comerciales y técnicos, configuraciones monousuario y multiusuario, en aplicaciones interactivas, " batch " e incluso en entornos en tiempo real .
Ello llevó a HP a deducir que si se optimizaban al máximo ese 20% de instrucciones, podrían conseguirse mejoras de rendimiento muy sustanciales . De ahí que se decidiera desarrollar una nueva arquitectura que redujera el número de instrucciones y las hiciera más sencillas . De esta forma un esfuerzo en un número muy reducido de ellas iba a posibilitar un crecimiento muy grande en el rendimiento de los sistemas . Este nuevo tipo de arquitecturas se denominó RISC, donde la " R " hacía mención a " Reduced " . RISC es, por tanto, una arquitectura orientada a aplicaciones ya que nació como consecuencia del análisis de las mismas .
Una vez conseguida la ejecución de una instrucción por ciclo, los creadores del RISC profundizaron en este concepto desarrollando ordenadores que pudieran ejecutar más de una instrucción por cada ciclo de reloj .
Nace entonces el concepto de sistema RISC superescalar . En el RISC superescalar las instrucciones se ejecutan en paralelo en las distintas unidades funcionales . Las unidades funcionales es quizá el factor más determinante en las prestaciones de un procesador, ya que son las que realmente ejecutan las instrucciones . En términos sencillos podríamos asemejar el número de unidades al número de " trabajadores " que hay dentro del procesador .
MHz contra SPEC
Pero pasemos de las palabras a los hechos, es decir, midamos rendimientos .
Medir el rendimiento de los procesadores no es sencillo . Algunas de las métricas utilizadas no nos permiten conocer realmente el rendimiento del procesador . Entre ellas, y debido a la tendencia que existe a establecer comparaciones en este aspecto, debemos reseñar que los MHz no miden realmente las prestaciones . No se trata de disponer de muchos MHz sino de emplearlos adecuadamente . Si un procesador funciona a 200 MHz y ejecuta cuatro instrucciones por ciclo de reloj, ese procesador ejecuta 800 ( millones de instrucciones por segundo ) . Si otro procesador funciona a 400 MHz, pero sólo ejecuta una instrucción por cada dos ciclos, su potencia será de 200 ( 4 veces menos ) . Sin embargo es dificil determinar el número de instrucciones por ciclo de reloj, porque en general depende de que instrucciones se ejecutan .
Una mejor medida nos la proporciona las pruebas de referencia SPEC ( Systems Performance Evaluation Cooperative ) . Las SPECint95 son un conjunto de pruebas que miden las prestaciones en aplicaciones con enteros y las SPECfp95 son otro conjunto de pruebas que miden las prestaciones en coma flotante . Las SPECint95 y SPECfp95, consiguen medir de manera muy precisa el rendimiento que proporcionarían los procesadores en entornos de aplicaciones reales .
Los procesadores RISC alcanzan mejores puntuaciones en las pruebas SPEC, porque son arquitecturas optimizadas para la aplicación . Por consiguiente puede afirmarse que la arquitectura RISC es intrínsecamente más potente que la CISC . En la figura puede verse una comparativa del rendimiento de los principales procesadores RISC frente al más potente de los CISC, el Pentium Xeon .
Procesadores inteligentes: el PA-8500
El PA-8500 de HP es un procesador RISC inteligente, ya que trabaja de tal forma que maximiza el rendimiento de los distintos elementos que lo componen .
En primer lugar destaquemos que el PA-8500 es una arquitectura superescalar de 4-vías . Es decir, permite ejecutar hasta 4 instrucciones en paralelo por ciclo de reloj . Hasta aquí sus competidores cuentan con una funcionalidad similar . Las diferencias empiezan a notarse cuando hablamos de unidades funcionales, ya que ninguno alcanza las 10 unidades funcionales del PA-8500 . Por último es necesario destacar el Buffer de 56 entradas . Este buffer permite “Out of Order Execution” . Es decir, permite que las instrucciones sean ejecutadas en orden distinto al que entraron en el procesador . Gracias a esto el PA-8500 puede anticipar cálculos no dependientes de variables calculadas en este ciclo, así como aprovechar al máximo las unidades funcionales .
Scheduler de 4 Instrucciones/ciclo
El PA-8500 es una arquitectura superescalar de 4-vías . Es decir, permite ejecutar hasta 4 instrucciones en paralelo por ciclo de reloj .
El PA-8500 dispone de 10 unidades funcionales en 5 grupos de 2:
• 2 unidades ALU Enteras de 64 bits
• 2 unidades Shift/Merge
• 2 unidades de coma flotante para Acumulación y Multiplicación
• 2 unidades de coma flotante para División y Raíces Cuadradas .
• 2 Unidades de Extracción y Almacenamiento .
El procesador PA-8500 de Hewlett-Packard incluye en su estructura 2 buffers de 28 entradas configurando un Buffer de 56 entradas .
Este buffer permite la " Ejecución Fuera de Orden " . Es decir, que las instrucciones sean ejecutadas en orden distinto al que entraron en el procesador .
Este proceso es determinante ya que en muchas ocasiones unas instrucciones dependen del resultado de las anteriores y por tanto no pueden ejecutarse a la vez . Esto supone no aprovechar todas las posibilidades del procesador . El PA-8500, introduce primero las instrucciones en el buffer y descubre las que se pueden ejecutar en paralelo . De este modo el PA-8500 hace que las unidades funcionales trabajen al máximo .
Los buffers con este propósito están presentes en algunos procesadores de otros fabricantes . Sin embargo, al igual que ocurría con las unidades funcionales, el buffer de reordenación del PA-8500 es el más grande del mercado con una diferencia superior en un 50% respecto a los demás disponibles .
" Branch Prediction " y " Speculative execution "
La mayoría de programas contienen un elemento denominado " bucle " , es decir, secuencias de instrucciones que se repiten dependiendo de si se cumplen ciertas condiciones . El PA-8500 registra los resultados de todas las veces anteriores que se pasó por ese bucle y, después de unos algoritmos de " Predicción de Saltos " , guarda sus conclusiones en una tabla llamada “Tabla Histórica de Saltos” .
Gracias a que es capaz de procesar en paralelo con varias unidades funcionales, el PA-8500, en lugar de esperar a que se sepa si se