Contenidos | |
|
|
Introduccion | El termino IA-64 proviene de Intel Architecture-64 bits,
y se refiere al hecho de que los procesadores de esta familia (empezando por
el ya anunciado Merced) seran de 64 bits, a diferencia de los pertenecientes
a la actual familia Intel x86 que no pueden manejar valores de mas de 32 bits.
Pero ademas de esta caracteristica, que ya es parte de otras arquitecturas hace varios años (Alpha, MIPS, etc...), el aspecto mas relevante de la nueva arquitectura es que permite agrupar instrucciones para ser ejecutadas paralelamente en forma explicita. Esta y otras caracteristicas se consideran parte de EPIC (Explicitly Parallel Instruction Computing), un termino creado por Intel que designaria un nuevo tipo de arquitectura de computadores (como RISC, CISC, etc...). Esta arquitectura fue creada por Intel en conjunto con HP, y como es habitual en los procesadores Intel, mantendra la compatibilidad con los procesadores x86 anteriores. |
Caracteristicas de IA-64 y EPIC | |
Algunas de las caracteristicas que definirian EPIC
de acuerdo a Intel son las siguientes:
Ahora pasamos a explicar mas detalladamente estas caracteristicas. |
|
Registros | |
Registros de IA-64:
Esta gran cantidad de registros, 4 veces los que se encuentran en un procesador RISC habitual, ayudara a disminuir los accesos a memoria. |
|
Formato de instrucciones | |
El formato de las instrucciones incluiria lo siguiente:
El compilador agrupa 3 instrucciones en un "paquete" de 128 bits. Cada paquete contiene ademas de las tres instrucciones un campo template que indica las dependencias entre instrucciones, o sea si una instruccion debe ejecutarse secuencialmente respecto a las otras 2, o todas se pueden ejecutar en forma paralela, etc... Ademas contiene informacion con respecto a si estas instrucciones se pueden ejecutar en forma paralela con las del siguiente paquete, de manera que se pueda encadenar cualquier numero de instrucciones para ser ejecutadas paralelamente. Tomando en cuenta esto ultimo, el template deberia tener un minimo de 3 bits (posiblemente algunos mas), y por lo tanto cada instruccion tendria alrededor de 40 bits. Pero el tamaño del codigo, comparado con el de un procesador RISC con instrucciones de 32 bits, es alrededor de un 33% mayor (3 instrucciones en 128 bits comparado con 4 en la misma cantidad de bits para un RISC). |
|
Predication | |
Predication es un metodo por el cual se ejecutan las
dos ramas de un salto condicional simultaneamente (en vez de usar metodos
de prediccion de salto).
Cuando un compilador encuentra una instruccion de salto marca las instrucciones de cada rama del salto con un identificador llamado atributo. Cuando el procesador encuentre un salto va a ejecutar ambas ramas simultaneamente, pero no guardara los resultados mientras los valores de los registros de atributos no esten definidos. Luego que la condicion de salto es evaluada, el procesador guarda un 1 en el registro de atributo que corresponde a la rama que si se debia ejecutar y un 0 en el correspondiente a la otra. Antes de guardar el resultado de una instruccion el procesador revisa su registro de atributo, y si este contiene un 1 guarda el resultado, si contiene un 0 descarta el resultado. Estudios han revelado que aproximadamente en la mitad de los saltos condicionales de un programa se puede usar predication. Esto, unido al hecho de que los metodos de prediccion de salto actualmente usados predicen correctamente en mas de un 90% de los casos, indicaria que este metodo no resultara en un gran ahorro de tiempo de ejecucion en programas. |
|
Carga especulativa | |
Como una forma de reducir los tiempos de espera
en que el procesador no realiza ningun trabajo mientras espera un dato
de memoria, la arquitectura IA-64 implementa un mecanismo de carga
especulativa.
Por medio de este el compilador puede situar una instruccion de carga especulativa antes de cuando en realidad se va a necesitar. Justo antes de ejecutar la instruccion que usara los datos cargados especulativamente se revisara que estos sean validos |
|
Produccion | |
La produccion del primer procesador de esta familia, Merced, deberia empezar en el año 2000 con la nueva tecnologia de 0.18 micrometros, pero probablemente este chip no sea capaz de demostrar todo el potencial de EPIC, en parte debido a que la tecnologia aun no ha sido probada en procesadores reales. Por ello ya ha sido anunciado el sucesor de Merced, McKinley (cuya produccion comenzaria en 2001), que deberia ser capaz de aprovechar aun mas las ventajas de EPIC. |
|
Rendimiento | |
Segun Intel Merced operaria a una frecuencia de alrededor de 800 MHz, a la cual lograria un rendimiento de 50 SPECint95 y 100 SPECfp95 Pero este rendimiento no parece ser muy superior, quizas hasta inferior, al que lograran los procesadores RISC que competiran con Merced. Alpha 21264 de Digital se espera que obtenga un rendimiento de 100 SPECint95 y 150 SPECfp95 aproximadamente a una frecuencia de 1 GHz. UltraSPARC III de Sun ha obtenido un rendimiento de 35 SPECint95 y 60 SPECfp95 a 600 MHz. Quizas un obstaculo para lograr un mayor rendimiento en los procesadores IA-64 sera la necesidad de mantener compatiblidad con la familia x86 (ahora tambien llamada IA-32). |
|
Conclusiones | |
Todo parece indicar que IA-64, y en particular Merced, no va a representar un gran adelanto en el rendimiento de procesadores sobre las arquitecturas RISC ya existentes, en especial el Alpha 21264 y sus posibles sucesores podrian mantener una ventaja en rendimiento sobre IA-64 por varios años. La nueva tecnologia de IA-64 tampoco es muy innovativa, todas sus caracteristicas aparte del paralelismo ya han sido aplicadas en otros procesadores. E incluso los aspectos de paralelismo de IA-64 son muy similares a los que posee el TMS320C6201 de Texas Instruments. |
|
Referencias | |
Intel anuncia la nueva arquitectura de 64 bits |