Arquitectura Itanium (Organización del Computador II)

De Cuba-Wiki
Saltar a: navegación, buscar
Back.png Volver a la página de la materia

Características[editar]

Itanium es una arquitectura de tipo RISC, es decir, tiene un set relativamente limitado de instrucciones a partir del cual se pueden efectuar todas las operaciones. Las instrucciones son sencillas de decodificar y de longitud fija.

Responde al tipo de VLIW, o very long instruction word, ya que cada instruccion es en realidad un bundle de 128 bits que contiene 3 microinstrucciones de 41 bits mas un template de 5 bits que indica los stops y la unidad funcional que debe encargarse de cada operacion.

Pertenece a la familia de las EPIC, Explicit Parallelism Instruction Computer, por tener paralelismo explicito, contra las superescalares que lo manejan de manera implicita.

Manejo de memoria[editar]

Cache[editar]

En Itanium2, las caracteristicas de las memorias cache son las siguientes

  • La cache L1 es de 16k, la latencia es de 1 ciclo. Es asociativa de 4 vias, las lineas son de 64 bytes. Se encuentra subdividida en cache de datos y cache de instrucciones. La cache de datos implementa la politica write through y no write on allocate. Es no bloqueante, puede aceptar mas pedidos aun cuando tuvo un miss.
  • La cache L2, de 256k, tiene latencia de 5 a 9 ciclos, es asociativa de 8 vias, con lineas de 128 bytes. Implementa politica de write back y write on allocate. Tambien es no bloqueante.
  • La cache L3 tiene entre 3 y 9 Mb, con una latencia superior a los 20 ciclos, asociativa de 12 vias y con lineas de 128 bytes.

Prefetch[editar]

Itanium tiene un prefetch virtual address buffer, que se usa para acceder al conjunto de TLB + L1I via un puerto independiente. El compilador puede indicar hints para prefetch, como ser el .few o .many de los branches.

Memoria virtual[editar]

Para implementar memoria virtual y paginacion, Itanium utiliza las tablas invertidas, a diferencia de IA32.

Renombre de registros[editar]

Mientras que el objetivo del renombre de registros en IA32 era la posibilidad de guardar operandos temporales para lograr la ejecucion fuera de orden, invisible al programador, en Itanium tiene una semantica distinta. El renombre de registros en Itanium, visible al programador, se produce en dos situaciones

  • Para mover la ventana de registros, el current frame marker, haciendo el pasaje de una funcion a otra sin necesidad de acceder a memoria, aprovechando la gran cantidad de registros.
  • Para software pipelining y rotacion de registros, puesto que no se pasa el valor de un registro a otro, sino que se renombran.

Unidades funcionales[editar]

Itanium2 tiene 11 unidades funcionales diferentes. Cada instruccion puede mapear solo a ciertas unidades funcionales.

La latencia de las unidades de enteros es de 1 ciclo. Las de coma flotante 4, y las multimedia 2, pero tienen la ventaja de estar segmentadas, con lo que pueden aceptar un par nuevo de operandos cada ciclo, produciendo un resultado por ciclo.

Comparacion con P4[editar]

Las diferencias, en la microarquitectura, no son tan grandes. El despacho de instrucciones, division en unidades funcionales, jerarquias de caches y banco de registros, son similares entre ambas, solo cambia que se expone al programador.

La mayor diferencia esta en la ejecucion fuera de orden del superescalar P4 contra la ejecucion ordenada de Itanium.