Paralelismo en monoprocesadores. Procesadores VLIW

Documentos relacionados
TEMA 4. ARQUITECTURA IA-64

El nivel ISA (II)! Conjunto de Instrucciones

Introducción a la arquitectura de computadores

6. PROCESADORES SUPERESCALARES Y VLIW

Tema: Microprocesadores

Arquitectura de Computadores. Tema 11. Pipelining Avanzado

Unidad I: Organización del Computador. Ing. Marglorie Colina

Explotación del paralelismo a nivel de instrucción

Organización del Computador I. Introducción e Historia

Arquitectura de Computadores II Clase #16

TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION

Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Síntesis arquitectónica y de alto nivel

1. Introducción a la Arquitectura de Computadoras

Estructura de un Ordenador

OBJETIVOS ALGUNAS CONSIDERACIONES SOBRE WINDLX

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Planificación estática

Estructura del Computador

Estructura de Computadores Tema 1. Introducción a los computadores

Arquitectura de Computadores

ARQUITECTURA DE COMPUTADORAS

Arquitectura Segmentada: Conceptos básicosb

Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 3. PLANIFICACIÓN ESTÁTICA AVANZADA. TMS320C6713

1. Objetivo y evolución de los procesadores ILP.

Area Académica: Sistemas Computacionales. Tema: Elementos de diseño de memoria caché

Introducción a la arquitectura IA-64 y al procesador Itanium 2

3 - Arquitectura interna de un up

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

Procesadores segmentados. El DLX.

Qué es Pipelining? Es una técnica de implementación en la que se superpone la ejecución de varias instrucciones.

Introducción a las Arquitecturas Paralelas. Arquitectura de Computadoras II Fac. Cs. Exactas UNCPBA Prof. Marcelo Tosini 2015

INDICE 1. Operación del Computador 2. Sistemas Numéricos 3. Álgebra de Boole y Circuitos Lógicos

Plataformas de soporte computacional: arquitecturas avanzadas,

El Diseño de un Lenguaje Máquina

Procesadores superescalares. Introducción

TEMA 3. PLANIFICACIÓN (SCHEDULING) DE INSTRUCCIONES Arquitectura de Sistemas Paralelos 1. pág 2. direcc MEM

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

Arquitecturas vectoriales, SIMD y extensiones multimedia

Electrónica Digital II

Organización Básica de un Computador y Lenguaje de Máquina

Tema 7: Esquema del Funcionamiento de una Computadora. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Conceptos de Arquitectura de Computadoras Curso 2015

Arquitectura de Computadores

1.2 Análisis de los Componentes. Arquitectura de Computadoras Rafael Vazquez Perez

Instituto Tecnológico de Morelia

Procesador. Memoria. Ejemplo de un Procesador: MU0. Instrucciones. Direcciones. Registros. Datos. Instrucciones y datos SETI Tr.

Qué es un Microcontrolador?

0-31 : caracteres de control : carac. Comunes : especiales (flechas, símbolos) y particulares (ñ)

INDICE Control de dispositivos específicos Diseño asistido por computadora Simulación Cálculos científicos

TIPOS BÁSICOS DE ARQUITECTURAS DE MICROPROCESADORES

Arquitecturas RISC. Arquitectura de Computadoras y Técnicas Digitales - Mag. Marcelo Tosini Facultad de Ciencias Exactas - UNCPBA

Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio

Tema: Historia de los Microprocesadores

Tecnologías y Arquitecturas

Organización del Computador 1 Memoria Cache

Dr.-Ing. Paola Vega Castillo

AUTOMATIZACION. Reconocer la arquitectura y características de un PLC Diferenciar los tipos de entradas y salidas MARCO TEORICO. Estructura Interna

Fecha de Introducción. Velocidad de reloj. Anchura del bus. Número de transistores. (microns) Memoria direccionable.

Lenguaje binario. Código ASCII. Medidas de la información

Organización de Procesadores

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Procesador Concepto Tipos Velocidad de proceso Características funciones aritmético- lógicas y de control

ESTRUCTURA BÁSICA DE UN ORDENADOR

FUNDAMENTOS DE COMPUTACION INVESTIGACION PROCESADORES DIANA CARRIÓN DEL VALLE DOCENTE: JOHANNA NAVARRO ESPINOSA TRIMESTRE II

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso Introducción a la segmentación de Instrucciones.

FUNCIONAMIENTO DEL ORDENADOR

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

Arquitectura de Computadores. Tema 4 PROCESADORES SEGMENTADOS

Tema 5: Memorias. Espacio reservado para notas del alumno

Organización del Computador I. Memoria Cache. Autor: Alejandro Furfaro

Pipeline o Segmentación Encausada

Paralelismo en monoprocesadores. Procesadores Superescalares

MINISTERIO DE EDUCACIÓN PÚBLICA IPEC DE SANTA BÁRBARA MANTENIMIENTO DE EQUIPO DE COMPUTACIÓN. Memoria Principal RAM Memoria de acceso aleatorio

Microarquitectura: DISEÑO DE SISTEMAS DIGITALES EL-3310 I SEMESTRE MICROARQUITECTURA: FLUJO DE DATOS Y CONTROL DEL MICROPROCESADOR

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

Arquitectura de Computadores II Clase #3

TEMA 3 PLANIFICACIÓN O REORDENAMIENTO (SCHEDULING) DE INSTRUCCIONES ÍNDICE

Paralelismo en monoprocesadores. Multithreading Ejecución de múltiples hebras

Nombre de la asignatura: Arquitectura de Computadoras. Créditos: Aportación al perfil

Introducción PROCESADOR SUPERESCALAR. Paralelismo. Grado m: en cada ciclo se buscan/decodifican m instrucciones. supes

INEL 4206 Microprocesadores Texto: Barry B Brey, The Intel Microprocessors: 8va. Ed., Prentice Hall, 2009

SOPORTE FÍSICO O HARDWARE (I)

Organización del Computador. Memorias

PREGUNTAS INFORMÁTICA MONITOR UPB EXAMEN 1

Arquitecturas CISC y RISC

Arquitectura Von Neumann

MICROCONTROLADORES PIC16F84 ING. RAÚL ROJAS REÁTEGUI

Arquitectura de Computadores II Clase #7

Pipelining o Segmentación de Instrucciones

Tema 15 ELECTRÓNICA DIGITAL. PROCESADORES DIGITALES (PARTE 2A) Arquitecturas Harvard y Von Neumann. Tipos de procesadores digitales

UNIVERSIDAD DE GUADALAJARA

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles

Organizacion del Computador

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Entorno de Ejecución del Procesador Intel Pentium

Sistemas embebidos basados en FPGAs para instrumentación

Transcripción:

Paralelismo en morocesadores Procesadores VLIW Profesor: Mag. Marcelo Tosini Cátedra: Arquitectura de Computadoras y técnicas Digitales Carrera: Ingeniería de Sistemas Ciclo: 4º año

Arquitectura VLIW básica Data de principios de los años 70 Muy apoyada en la tecnología de compiladores que optimicen el código Una instrucción especifica varias operacíones agrupadas en un formato largo de instrucción con longitudes desde 128 a 1024 bits La planificación de ejecución de las operaciones es externa al procesador El rendimiento del procesador queda determinado por la calidad del compilador

Formato de instrucciones Procesador tradicional Procesador VLIW 100 101 102 103 104 105 106 107 108 109 inst inst1 (op1) (op1) inst inst2 (op2) (op2) inst inst3 (op3) (op3) inst inst4 (op4) (op4) inst inst5 (op5) (op5) inst inst6 (op6) (op6) inst inst7 (op7) (op7) inst inst8 (op8) (op8) inst inst9 (op9) (op9) inst inst10 10 (op10) (op10) 100 101 102 103 104 105 106 107 108 109 operación operación 1 NOP NOP operación operación 5 NOP NOP operación operación 2 operación operación 3 operación operación 6 NOP NOP operación operación 7 operación operación 4 NOP NOP NOP NOP NOP NOP operación operación 8 operación operación 10 10 NOP NOP NOP NOP operación operación 9 NOP NOP NOP NOP NOP NOP NOP NOP operación operación 11 11 operación operación 12 12 operación operación 14 14 operación operación 16 16 NOP NOP operación operación 13 13 NOP NOP operación operación 15 15 una instrucción = una operación una instrucción = varias operaciones

VLIW vs. Superescalar 32-64 bits FX 1 0 1 2 3 4 5 Dynamic Dynamic scheduler scheduler FX 2 FP Superescalar 6 Instruction memory load/ store 128-512 bits FX 1 0 1 2 3 4 5 FX 2 FP VLIW 6 Instruction memory load/ store

VLIW vs. Superescalar Diferente división de tareas entre software (compilador) y hardware (procesador) programa programa Optimización Optimización (compilador) (compilador) Análisis Análisis de de dependencias dependencias (compilador) (compilador) Planificación Planificación y y reserva reserva de de recursos recursos (compilador) (compilador) VLIW Superescalar Análisis Análisis de de dependencias dependencias (procesador) (procesador) Planificación Planificación y y reserva reserva de de recursos recursos (procesador) (procesador) Ejecución Ejecución (procesador) (procesador)

VLIW vs. Superescalar En VLIW no se puede determinar si hay dependencias en ciertos casos Ejemplo: lw r1, 100(r2) ; si r2 = r4+100, hay dependencia!!! sw r3, 0(r4) Procesador superescalar comprueba si si la la dirección r2 r2 + 100 100es es igual igual a r4 r4 + 0 igual igual => => secuencializa las las instrucciones NO NO igual igual => => paraleliza las las instrucciones Procesador VLIW VLIW No No puede puede determinarlo => => el el compilador siempre secuencializa

Arquitectura VLIW: ventajas La planificación de la ejecución estática de instrucciones es realizada por el compilador: Menos lógica en la unidad de control del procesador Mayor frecuencia de reloj (organización mas sencilla) Mayor disponibilidad de especio para otras unidades (Pe: unidades funcionales) Es una arquitectura muy difundida en circuitos embebidos DSP s Multimedia (placas de sonido, video, etc.)

Arquitectura VLIW: Limitaciones Tamaño del código Mucho desperdicio de memoria por instrucciones NOP Compatibilidad de código objeto Hay que recompilar todo el código fuente para cada nueva versión de procesador Baja ocupación de las unidades funcionales Conflictos en el acceso al banco de registros desde varias unidades Conflictos de predicción estática de accesos a memoria Imposibilidad de determinación de latencias en caso de posibles fallos en accesos a Ram o caché Dificultades en la predicción estática de saltos

Tamaño del código load store add a sub add b add c mul Formato de instrucción VLIW desempaquetado útil para ejecución en las UF A B C D Formato de instrucción VLIW empaquetado útil para almacenar en la memoria 1 0 B A add a store 0 1 A B load sub 0 1 C C add b add c 1 1 D A mul 0 Separador de instrucciones VLIW (1 = última instrucción) B Unidad funcional en la que se ejecutará la instrucción

Tamaño del código En qué momento se descomprimen las instrucciones de memoria? Carga en la I-Caché Transferencia de bloques a la cache es lenta (bus de acceso a RAM cuello de botella) El algoritmo de compresión puede ser complejo ya que se dispone de tiempo se ocupa mucho especio de cache si las instrucciones están descomprimidas Lectura de la I-Caché (Fetching) En la caché se mantienen las instrucciones empaquetadas La descompresión en la etapa de fetching puede ser lenta (agrega una o más etapas de segmentación al proceso)

Ocupación de las unidades funcionales Meta principal: Mantener ocupadas todas las unidades funcionales Problema: Para N unidades funcionales usables en cada ciclo de reloj Se leen 2 operandos fuente por unidad Se escribe un resultado por unidad UF1 Register Bank UF2 UFn

Ocupación de las unidades funcionales Arquitectura del banco de registros Área banco de registros cuadrado del número de puertos (de entrada o salida) Diseño limitado por el número de puertos read1 A read1 A read1 B write1 read1 B write1 read2 A read2 B write2 Dout2 B Dout2 A Dout1 B Dout1 A Dout1 B Dout1 A

Ocupación de las unidades funcionales Arquitectura del banco de registros Tiempo de acceso al banco de registros proporcional al número de registros Al crecer las áreas de celda básica y decodificadores hay mayores retardos A partir de aproximadamente 20 puertos (I/O) la velocidad se degrada bastante Aproximadamente 14 lecturas y 7 escrituras => hasta 7 unidades funcionales como máximo

Ocupación de las unidades funcionales Optimización de la arquitectura del banco de registros Particionar el banco de registros en bancos locales a cada unidad funcional y con canales de comunicación globales Bus global Banco Banco de de registros registros Banco Banco de de registros registros Banco Banco de de registros registros Banco Banco de de registros registros UF1 UF1 UF2 UF2 UF3 UF3 UFn UFn

Planificación del compilador La eficiencia del compilador influye mucho en el rendimiento final de la arquitectura Rendimiento alcanzado por los compiladores actuales es inferior al rendimiento potencial máximo que alcanza la arquitectura Código generado por el compilador muy dependiente de la arquitectura VLIW de destino Ante actualizaciones de hardware es necesario reescribir el compilador (mayores costos de actualización) Para optimizar mejor el código es útil que el programador ayude al compilador Lenguajes deben usar meta comandos (pragmas) especiales

Planificación del compilador Optimizaciones del compilador: Análisis global del código Modificación del código fuente para incrementar el paralelismo a nivel de instrucción Aplicación de técnicas usadas para superescalares: Desenrollamiento de lazos Segmantación de software Actualización de referencias Renombre de registros

Planificación del compilador Ejemplo: Suma de un valor a un arreglo for (i=10; i>0; i--) x[i] = x[i] + s; En ensamblador: lazo: ld 0(r1) ; f0 = x[i] addd f4, f2 ; f4 = f0 + s sd f4, 0(r1) ; x[i] = f4 subi r1, r1, #8 ; i-- bnez r1, lazo ; if i 0 goto lazo Suponer un procesador VLIW de 3 unidades funcionales: load/store & saltos saltos ALU ALU FX FX ALU ALU FP FP 2 ciclos de reloj 2 ciclos de reloj 3 ciclos de reloj

Planificación del compilador Instrucciones VLIW del programa Instr. Instr. load/store & saltos saltos ALU ALU FX FX ALU ALU FP FP 1 2 3 4 5 6 7 8 9 ld ld 0(r1) 0(r1) sd sdf4, 0(r1) 0(r1) subi subir1, r1, r1, r1, #8 #8 bnez bnezr1, r1, lazo lazo addd adddf4, f4, f2 f2

Planificación del compilador Replicación de código lazo: ld 0(r1) addd f4, f2 sd f4, 0(r1) lazo: ld 0(r1) addd f4, f2 sd f4, 0(r1) subi r1, r1, #8 bnez r1, lazo ld addd sd ld addd sd ld addd sd ld addd sd 0(r1-8) f8, f6, f2 f4, 0(r1-8) 0(r1-16) f12, f10, f2 f4, 0(r1-16) 0(r1-24) f16, f14, f2 f4, 0(r1-24) 0(r1-32) f20, f18, f2 f4, 0(r1-32) subi r1, r1, #8 bnez r1, lazo

Planificación del compilador Código VLIW optimizado del programa Instr. Instr. load/store & saltos saltos ALU ALU FX FX ALU ALU FP FP 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 ld ld 0(r1) 0(r1) ld ld 0(r1-8) 0(r1-8) ld ld 0(r1-16) 0(r1-16) ld ld 0(r1-24) 0(r1-24) ld ld 0(r1-32) 0(r1-32) sd sd 0(r1) 0(r1) sd sd 0(r1-8) 0(r1-8) sd sd 0(r1-16) 0(r1-16) sd sd 0(r1-24) 0(r1-24) sd sd 0(r1-32) 0(r1-32) bnez bnez r1, r1, lazo lazo subi subi r1, r1, r1, r1, #8 #8 addd addd f4, f4, f2 f2 addd addd f8, f8, f6, f6, f2 f2 addd addd f12, f12, f10, f10, f2 f2 addd addd f16, f16, f14, f14, f2 f2 addd addd f20, f20, f18, f18, f2 f2

Instrucciones predicadas Ante una bifurcación el compilador asigna a las instrucciones de las dos ramas posibles un predicado a cada una. De esta manera es posible identificar la rama inválida cuando se resuelve la condición del branch Las instrucciones de ambas ramas pueden ejecutarse en paralelo ya que no poseen interdependencias inst inst1 inst inst2 if if (cond) (cond) inst inst4 inst inst5 inst inst6 else else inst inst7 inst inst8 inst inst9 Código fuente inst inst1 inst inst2 br br (cond), (cond), sigue sigue P1 P1 :: inst inst4 P1 P1 :: inst inst5 P1 P1 :: inst inst6.... sigue: sigue: P2 P2 :: inst inst7 P2 P2 :: inst inst8 P2 P2 :: inst inst9 Código ensamblador inst inst 1 1 inst inst 2 2 branch branch P1:inst P1:inst 4 4 P2:inst P2:inst 7 7 P1:inst P1:inst 5 5 P1:inst P1:inst 6 6 P2:inst P2:inst 8 8 P2:inst P2:inst 9 9 Código VLIW predicado

Instrucciones predicadas Ejemplo: if if (a (a < b) b) c = a; a; else else c = b; b; if if (d (d < e) e) f f = d; d; else else f f = e; e; Queda en VLIW como P1 P1 = CMPP.< CMPP.< a, a, b P2 P2 = CMPP.>= CMPP.>= a, a, b P3 P3 = CMPP.< CMPP.< d, d, e P4 P4 = CMPP.>= CMPP.>= d, d, e <P1> <P1> MOV MOV c, c, a <P2> <P2> MOV MOV c, c, b <P3> <P3> MOV MOV f, f, d <P4> <P4> MOV MOV f, f, e

instrucciones predicadas La instrucción P1 P1 = CMPP.< CMPP.< a, a, b verifica si a<b en cuyo caso pone P1=1 La instrucción P2 P2 = CMPP.>= CMPP.>= a, a, b verifica si a>=b en cuyo caso pone P2=1 Algunos procesadores soportan la versión de 2 salidas de CMPP P1, P1, P2 P2 = CMPP.W.<.UN.UC CMPP.W.<.UN.UCa, a, b.w : Wide compare. compara generando 2 predicados.un: Unconditional Normal. Asigna la condición a<b a P1 de forma directa.uc: Unconditional Complementary. Asigna la condición a<b a P2 de forma negada (a>=b)

Instrucciones predicadas Ejemplo: Con la nueva instrucción CMPP if if (a (a < b) b) c = a; a; else else c = b; b; if if (d (d < e) e) f f = d; d; else else f f = e; e; Queda en VLIW como P1, P1, P2 P2 = CMPP.W.<.UN.UC CMPP.W.<.UN.UCa, a, b P3, P3, P4 P4 = CMPP.W.<.UN.UC CMPP.W.<.UN.UCd, d, e <P1> <P1> MOV MOV c, c, a <P2> <P2> MOV MOV c, c, b <P3> <P3> MOV MOV f, f, d <P4> <P4> MOV MOV f, f, e

Ejemplo: Arquitectura EPIC EPIC (Explicit Parallel Instruction Computer) Es el término dado por Intel y HP a su nueva generación de procesadores VLIW, Itanium Se comporta a nivel arquitectural como un VLIW cásico Se distingue de una arquitectura VLIW pura en: Paralelismo explícito Predicación completa de instrucciones Banco de registros rotativo Palabra de instrucción muy larga que puede codificar grupos de instrucciones no paralelas Especulación Compatibilidad con programas IA-32 (Pentium II)

Ejemplo: Arquitectura Intel IA-64 Registros 128 registros de enteros ó generales, cada uno de 64 bits de longitud. 128 registros de punto flotante, cada uno de 80 bits de longitud. 64 bits para la predicación. 256 NAT bits. 8 registros para saltos. 128 registros de aplicación 3 RRB s o registros base rotativos. LC ó Loop Count. EC. IP ó contador de instrucciones Todos los registros pueden ser accedidos por software, ya que son visibles al programador y de acceso aleatorio. Son numéricamente entre 4 y 8 veces el numero de los registros de las arquitecturas RISC. Proveen compatibilidad con x86.

Ejemplo: Arquitectura Intel IA-64

Ejemplo: Arquitectura Intel IA-64 Instrucciones largas: de 128 bits Bundle (paquete): Conjunto de 3 instrucciones y un template 41 bits Indica en que unidad funcional se ejecuta cada operación La dependencia entre este bundle y los siguientes Instruction slot 2 Instruction slot 1 Instruction slot 0 Template 127 86 85 46 45 5 4 0 Código de operación 6 bits de registro predicado 7 bits de operando fuente 1 7 bits de operando fuente 2 7 bits de operando destino Extensión de código de operación (saltos, etc.)

Ejemplo: Arquitectura Intel IA-64 Combinaciones de instrucciones de un bundle Todas las instrucciones ejecutadas en paralelo. i2 i1 i0 Instr 2 Instr 1 Instr 0 Primero i2, luego i1 y i0 ejecutadas en paralelo. i2 & i1 i0 Instr 2 Instr 1 Instr 0 i2 y i1 ejecutadas en paralelo, luego i0. i2 i1 & i0 Instr 2 Instr 1 Instr 0 i2, i1 y i0 ejecutadas en serie. i2 & i1 & i0 Instr 2 Instr 1 Instr 0

Ejemplo: Arquitectura Intel IA-64 Tipos de instrucciones: M : Memory I : Integer F : Floating Point B : Branch Dispersal Window Arquitectura Hardware Unidades funcionales 2 de Memoria 2 de Enteros 2 de Punto Flotante 3 de Saltos Tamaño de ventana : 2 instr. First bundle Second bundle Dispersed Instructions MM F I I M I I B M I I I I M I I B B Bundles from I-caché M0 M1 I0 I1 F0 F1 B0 B1 B2 Source: Itanium Processor, Intel Corp, 2000

Ejemplo: Arquitectura Intel IA-64 Dispersed Instructions MM F I I M I I B M I I I I M I I XX B B Bundles from I-caché M0 M1 I0 I1 F0 F1 B0 B1 B2 Structural hazard Dispersed Instructions MM I I I I M I I B M I I B B Bundles from I-caché M0 M1 I0 I1 F0 F1 B0 B1 B2 Source: Itanium Processor, Intel Corp, 2000

Arquitectura Intel IA-64 Instrucciones predicadas Predicados Asociados a todas las instrucciones en las 2 rutas (efectiva y no efectiva) El compilador añade a la instrucción un valor adicional que es el predicado cuyo valor es complementario en cada una de las ramas Las insttrucciones con predicado complementario son paralelizables El predicado es calculado por el resultado de la condición de salto asociada Las operaciones asociadas a las instrucciones son siempre ejecutadas, pero el estado del procesador sólo se modifica si el predicado asociado es cierto

Arquitectura Intel IA-64 Instrucciones predicadas: Ejemplo V1 V1 = V1 V1 + 1; Código fuente Código predicado 1; if if (a (a& b) b) {{ V2 V2 = V2 V2 // 2; 2; V3 V3 = V3 V3 ** 3; 3; }} else else {{ V4 V4 = V4 V4 4; 4; V5 V5 = V5 V5 + 5; 5; Código ensamblador }} V6 V6 = V6 V6-6; add -6; add data_v1, data_v1, #1 #1 bez bez data_a, data_a, _blkelse _blkelse bez bez data_b, data_b, _blkelse _blkelse add add data_v1, data_v1, #1 #1 P1, P1, P2 P2 := := cmp cmp data_a, data_a, 0 0 <P2> <P2> cmp cmp data_b, data_b, 0 0 <P2> <P2> div div data_v2, data_v2, #2 #2 <P2> <P2> mul mul data_v3, data_v3, #3 #3 <P1> <P1> sub sub data_v4, data_v4, #4 #4 <P1> <P1> add add data_v5, data_v5, #5 #5 sub sub data_v6, data_v6, #6 #6 div div data_v2, data_v2, #2 #2 mul mul data_v3, data_v3, #3 #3 jmp jmp _endif _endif _blkelse: _blkelse: sub sub data_v4, data_v4, #4 #4 add add data_v5, data_v5, #5 #5 _endif: _endif: sub sub data_v6, data_v6, #6 #6

Características del Itanium Frecuencia Número de transistores tecnología de fabricación Ancho de cálculo Unidades funcionales Registros Mecanismo de especulación Predicción de saltos Velocidad punto flotante Velocidad de memoria 800 Mhz CPU: 25.400.000 - L3: 295.000.000 CMOS de 0,18µ con 6 capas de metal 6 instrucciones por ciclo de reloj 4 FX (2 FX + 2 MM) 2 ld/st 2 FP 3 Br banco de 14 puertos con 128 Gr y 128 FR 64 bits de predicados ALAT de 32 entradas/excepciones diferidas esquema de predicción de 4 niveles 3,2 Gflops a 6,4 Gflops 8 operandos pto flotante por ciclo de reloj

Itanium Merced

Itanium