510 likes | 795 Views
Arquitectura de Procesadores Procesadores Superescalares: Inicio. 1 er Cuatrimestre de 1999. Procesadores Superescalares. Procesadores Tradicionales. Procesadores Escalares. Procesadores SuperEscalares. Inicio Secuencial, Ejecución Secuencial. Inicio Secuencial, Ejecución Paralela.
E N D
Arquitectura de ProcesadoresProcesadores Superescalares:Inicio 1er Cuatrimestre de 1999
Procesadores Superescalares Procesadores Tradicionales Procesadores Escalares Procesadores SuperEscalares Inicio Secuencial, Ejecución Secuencial Inicio Secuencial, Ejecución Paralela Inicio Paralelo Ejecución Paralela Segmentados o múltiples UF No Segmentados Múltiples UF segmentadas Superescalares
S0 S0 S0 S0 S1 S1 S1 S1 S2 S3 S2 S3 S2 S2 S3 S3 Procesadores Superescalares • Número de Instrucciones por ciclo • Tipos de Instrucciones ejecutadas en paralelo • Política de Ejecución • Inicio en Orden, Finalización en Orden • Ejecución en Orden- Finalización en Desorden • Ejecución y Finalización en Desorden • Dependencias de Datos y de Control Superescalares
S0 S0 S0 S0 S1 S1 S1 S1 S3 S2 S3 S2 S2 S2 S3 S3 Procesadores Superescalares • Aumento del costo del hardware: • Múltiples Accesos a los Bancos de Registros • Múltiples Buses para operandos y resultados • Circuitos Especiales para Forwarding • Más UF • Múltiples tipos (FX,FP, control) • Múltiples de cada tipo, idénticas o semejantes • Múltiple Inicio de Instrucciones • Lógica de Control • Planificación Dinámica: más compleja la detección de riesgos
Procesadores Superescalares Intel 960 960CA(3) 960MM(3) 960HA/HD/HT Intel 80x86 Pentium(2) PentiumPro(~2) IBM Power Power1(4) Power2 (4) IBM ES ES/9000 PowerPC alliance Power601(3) Power604(4) Power620(4) PowerPC Power603 (3) Power602(2) Motorola 8800 MC88110(2) Motorola 68000 MC68060(3) DEC Alpha a21064(2) a21064A(2) a21164 (4) HP PA PA 7100(2) PA 7200(2) PA8000(4) Sun/Sparc SuperSparc(3) UltraSparc(4) TRON Gmicro Gmicro/500(2) Mips R R8000(4) R10000(4) AMD29000 AM 29000(4) AMD K5 K5 (~2) Cyrix M1 M1(2) NexGen Nx Nx586(1/3) 1989 1990 1991 1992 1993 1994 1995 1996 Superescalares
Eficiencia y Pérdida en un superescalar: Power620 • Superescalar 4 ==> IPC ideal =4 • Medidas Prácticas sobre SPEC92 obtienen 1,25 IPC ideal 4 Fallos de predicción de saltos (3/10%) Fallos de caché o desalineamiento (2/5%) IPC búsqueda 3.6 Envío en orden y no cualquier combinación. Falta de recursos. Buffer de reorder lleno 4 instrucciones el 28% de los ciclos. 0 instrucciones el 35% de los ciclos. IPC inicio 1.9 Operandos no disponibles. UF ocupada. 1.3 IPC ejecución Conflicto escritura por falta de puertos. Superescalares IPC final 1.25
Tareas del procesamiento superescalar • Decodificación Paralela • Inicio de instrucciones • políticas de inicio • técnicas: renombre de registros, ejecución especulativa, estaciones de reserva (shelving) • Ejecución Paralela • preservación de la consistencia secuencial en la ejecución de instrucciones • preservación de consistencia secuencial en el procesamiento de excepciones Superescalares
Decodificación I-cache I-cache I-buffer I-buffer Dec/Inicio Dec/Inicio Inicio Escalar Inicio SuperEscalar Superescalares
Decodificación • Chequeo de dependencias • respecto a las instrucciones que están en ejecución • entre las instrucciones candidatas al inicio en el siguiente ciclo • Hay más UF==> más comparaciones • Consume más tiempo que en los escalares: • PowerPC 601, 604, y UltraSparc: 2 ciclos • a21064: 3 ciclos • Pentium Pro: 4 o 5 ciclos Superescalares
Predecodificación • Unidad de predecodificación agrega bits de información a la instrucción que se almacena en la caché. • clase o tipo de instrucción • recursos que requerirá • dirección destino de salto ya calculada (UltraSparc) • Reduce el tiempo de decodificación e inicio a 1 ciclo 128 bits 148bits L2 L1 Unidad de Predecodificación Superescalares
Predecodificación • CISC AMD K5 • 5 bits por byte ==> 70% más de almacenamiento • longitud de instrucción • donde están los prefijos y códigos de operación • Tendencia • Hacia el uso de predecoficacióm • Número de bits agregados por instrucción • PA 7200, PA 8000 5 bits • PowerPC 620 7 bits • UltraSparc, Hal PM1 4 bits • R10000 4 bits • Quién no está? a 21164, Pentim Pro Superescalares
INICIO • Políticas de Inicio • protocolo que se utiliza para iniciar instrucciones (como se resuelven las dependencias) • Velocidad de Inicio • grado de superescalaridad. • Máximo número de instrucciones que se pueden inicir en paralelo. Superescalares
Políticas de Inicio • Que hacer con las dependencias falsas entre registros? • Eliminarlas (renombre de registros) o no. • Que hacer con las dependencias de control? • Ejecutar especulativamente haciendo una predicción o, esperar a la resolución de la condición • Que hacer cuando hay dependencias (verdaderas)? • Bloquear o evitar el bloqueo mediante alguna técnica (estaciones de reserva). • Como hacer los bloqueos? • Preservando el order secuencial o no. (inicio en orden, inicio fuera de orden) Superescalares
Políticas de Inicio Dependencias de Control Dependencias Falsas Uso de Despacho Bloqueos Renombre de Registros Nada Inicio Directo Inicio Indirecto Esperar Especular Desorden Orden Superescalares
Ventana de Inicio (issue window) I-buffer Ventana de Inicio Decodificación/ Chequeo de Inicio UF UF UF Superescalares
Siguiente ventana Ventana actual h g f e d c b a a d c b c b d d Ventana de Instrucciones Siguiente ventana Ventana actual • Ventana Fija Ventana Deslizante h g f e d c b a a e d c b c b g f e d f e d Superescalares
Ventana de Instrucciones • Ventana Fija • Si el procesador bloquea el inicio cuando hay dependencias, la ventana fija reduce el ILP. • Primeros procesadores superescalares que bloqueaban el inicio (inicio directo): i960, Power1, PA 7100 y SuperSparc. • Ventana Deslizante • Procesadores superescalares bloqueantes: MC88110, MC68060, PA 7100, R8000, UltraSparc, PA7200 • Ventana Fija • Procesadores superescalares no bloqueantes : PowerPC 603, 604, 620, PA8000, R10000, PM1(Sparc64), a21064, a21164, a21264 (se compensa con la introducción de shelving) Superescalares
Uso de etapa de Despacho I-cache Estación de Reserva UF Despacho I-buffer Estación de Reserva Despacho UF Estación de Reserva Dec/Inicio Despacho UF Estación de Reserva Despacho UF Superescalares
Inicio en orden o desordenado Ventana actual Ventana actual h g f e d c b a h g f e d c b a a c a Designa una instrucción independiente La mayoría de los procesadores actuales MC88110, PowerPC601 Superescalares
Inicio en orden o fuera de orden • Inicio fuera de orden==> mayor esfuerzo para garantizar consistencia • El uso de estaciones de reserva hace que los bloqueos en la etapa de inicio sean mínimos. • Tendencia actual==> inicio en orden Superescalares
Políticas de Inicio en Superescalares actuales No renombreEjecución EspeculativaNo Bloqueo No renombreEjecución EspeculativaBloqueo RenombreEjecución EspeculativaBloqueo RenombreEjecución EspeculativaNo Bloqueo MC88110 R8000 R1000 Pentium Pro PowerPC 603 PowerPC 604 PowerPC 620 PA 8000 PM1 Sparc Am29000 Am K5 Ventana Desalizante Ventana Fija Pentium PowerPC 601 PA7100 SuperSparc a21064, a21164 MC68060 MC88110 R8000 PA7200 UltraSparc PowerPC 602 Superescalares
Despacho: Estaciones de Reserva • Evita el bloqueo en la etapa de inicio debido a dependencias . • Se utilizan buffers asociados a las UF (Tablas de Reserva) • Desacopla inicio de despacho • Conflictos que limitan el inicio: • falta de Estaciones de Reserva, ROB, o Buffers de renombre • restricciones en los Caminos de Datos • Si hay bloqueos, las instrucciones se inician en orden Superescalares
Despacho: Estaciones de Reserva • Individuales: • una estación de reserva a la entrada de cada UF. • Cada ER contiene un número pequeño de entradas: 2 o 4. • Ejemplo: PowerPC 620 (2 ER enfrente de cada UF) • Grupos de ER: • Una ER de varias entradas a la entrada de un grupo de UF del mismo tipo. • Ejemplo: R10000 • Cada ER debe ser capaz de despachar MAS de una instrucción por ciclo. • ER Centralizada: • Ejemplo: Pentium Pro, con 20 entradas sirve 10 UF. • Debe ser capaz de despachar MAS de una instrucción por ciclo. Superescalares
Número de Entradas en ER Procesador Número de Entradas en ER PowerPC 603 3 PowerPC 604 12 PowerPC 620 15 Nx586 42 K5 14 PM1 (Sparc64) 36 Pentium Pro 20 R10000 48 Superescalares
Número de Puertos en ER • Individuales: • Output: 1 (instrucción por ciclo) a cada UF • Input : una instrucción por ciclo (a cada ER) • Grupos: • Output: múltiples (instruccion por ciclo) a las UF’s del Grupo • Input : múltiples instrucción por ciclo (a la ER grupal) (generalmente el tamaño de la ventana) • PM1: 4-superescalar, puede iniciar hasta 2 instrucciones FP, 2 load/store, 1 salto y 4 FX, pero de éstas solo 2 pueden ser complejas. • Central • idem Grupos Superescalares
Uso de etapa de Despacho I-cache Estación de Reserva UF Despacho I-buffer Estación de Reserva Despacho UF Estación de Reserva Dec/Inicio Despacho UF Estación de Reserva Despacho UF Superescalares
Despacho de Instrucciones (Ejecución) • Son ejecutables aquellas instrucciones cuyos operandos están disponibles y cuya UF está libre • Si hay más de una instrucción en esas condiciones: aplicar una regla de elección (por ejemplo la más vieja: PowerPC620, PM1(Sparc64), Pentium Pro.) • Orden: en orden o fuera de orden? Superescalares
Despacho en orden o fuera de orden R1000 PA8000 Pentium Pro PM1(Sparc64) ER d UF d c c UF b a a UF La instrucción b no tiene sus operandos disponibles Unidad de Despacho Superescalares
Dispatch rate & Issue rate Procesador Issue Dispatch PowerPC 603 3 3 PowerPC 604 4 6 PowerPC 620 4 6 Nx586 3 3 K5 4 5 PM1 (Sparc64) 4 8 Pentium Pro 4 5 R10000 4 5 Porqué no coinciden? Porque hay operaciones aritméticas que son muy costosas y no pueden ejecutarse una detrás de otra. Superescalares
Disponibilidad de los Operandos: Scoreboarding • Necesitamos chequear disponibilidad de operandos en el Banco de Registros y en los campos de las ER’s 0: cuando se inicia la instrucción, el registro destino se marca con un 0 1: cuando la instrucción termina de ejecutar y el resultado se escribe en el registro 1 0 Registros 1 1 0 1 1 Superescalares
Disponibilidad de los Operandos: Scoreboarding Escribe Rd Set bit de Rd Rs1 Rs2 Rd CO Rs1 Rs2 Rd Reset bit de Rd Chequear bit de Rs1 yRs2 Los operandos se buscan en la etapa de despacho Op1 Op2 CO, Rd EU Result, Rd Superescalares
Scoreboarding(2) Instrucción Rs1 Rs2 Rd Escribe Rd Set bit de Rd Reset bit de Rd CO Op1 V1 Op2 V2 Rd Chequea bits V CO, Rd Operandos son leídos en la etapa de inicio Op1 Op2 EU Actualización de operandos y bits de validez Result, Rd Superescalares
Ejemplo: juntando algunas cosas • Microarquitectura: • única FX con Banco de Registros propio • Una ER al frente de cada UF con 4 entradas, acepta 2 instrucciones por ciclo • Operandos son leídos en la etapa Inicio • Se despacha la instrucción más vieja • El despacho es fuera de orden, una instrucción por ciclo de cada ER • disponibilidad de operandos indicada explícitamente con bits en la ER. Si no está disponible, se guarda el identificador del registro destino que se está calculando • Una ER vacía NO se cortocircuita
Ejemplo: juntando algunas cosas • Operación • Las instrucciones se escriben en la ER a razón de 2 por ciclo • Se obtienen los operandos (si están). Se actualizan con valores, tags y bits de validez los campos de ER. Se resetea el bit de validez del operando destino en el Banco de Registros. • En paralelo, se chequean todos las instrucciones de la ER para determinar cuales despachar. Si hay más de una elegible, se elige la más vieja. • Cuando termina la ejecución, el resultado se forwardea al Banco de Registros y a la ER. Se actualiza el bit de validez del Banco de Registros • Al mismo tiempo, en ER se realiza una búsqueda asociativa buscando el tag que acaba de escribirse. Superescalares
Ejemplo: juntando algunas cosas • Código: MUL R1, R2, R3 ADD R2, R3, R5 ADD R3, R4, R6 • La instrucción MUL se inicia en el ciclo i. • Las instrucciones ADD se inician en el ciclo i+1 Superescalares
Ejemplo: ciclo i Instrucción Rs1 Rs2 Rd Escribe Rd Set bit de Rd Reset bit de Rd 10 1 20 1 0 40 1 CO Op1 V1 Op2 V2 Rd Chequea bits V Inicio de MUL MUL 10 1 20 1 R3 EU Actualización de operandos y bits de validez Result, Rd Superescalares
Ejemplo: ciclo i+1 Instrucción R3 R4 R6 Escribe Rd Set bit de Rd R2 R3 R5 10 1 20 1 0 40 1 0 CO Op1 V1 Op2 V2 Rd 0 ADD R3 0 40 1 R6 Chequea bits V Despacho de MUL Inicio de las 2 ADD ADD 20 1 R3 0 R5 MUL 10 20 R3 EU Actualización de operandos y bits de validez Result, Rd Superescalares
Ejemplo: ciclo i+2 Instrucción R3 R4 R6 Escribe Rd Set bit de Rd R2 R3 R5 10 1 20 1 200 1 40 1 0 CO Op1 V1 Op2 V2 Rd 0 ADD 200 1 40 1 R6 Chequeo Fin de MUL Chequea bits V ADD 20 1 200 1 R5 MUL 10 20 R3 Completa EU Actualización de operandos y bits de validez Result, Rd Superescalares
Ejemplo: ciclo i+2 Instrucción R3 R4 R6 Escribe Rd Set bit de Rd R2 R3 R5 10 1 20 1 200 1 40 1 0 CO Op1 V1 Op2 V2 Rd 0 ADD 200 1 40 1 R6 Chequeo Fin de MUL Despacho de ADD Chequea bits V ADD 20 1 200 1 R5 ADD 20, 200, R5 EU Actualización de operandos y bits de validez Result, Rd Superescalares
Pentium: Inicio en Orden-Ejecución en Orden • Inicio en Orden, No hay Renombre, bloquea si detecta conflictos. Superescalares
Pentium: Conflictos • Dos instrucciones pueden iniciarse a la vez (aparearse) si: • Son simples: ejecutan en un único ciclo Ejemplo: MOV reg/mem, reg/mem/inm ALU reg/mem, reg/mem/inm PUSH reg/mem, POP reg/mem JMP, CALL, Jcc Superescalares
Pentium: Conflictos • No debe haber RAW ni WAW, hay algunas excepciones: CMP seguido por Jcc ADD seguido por JNE PUSH seguido por PUSH PUSH seguido por CALL POP seguido por POP • Ninguna de las instrucciones debe contener un operando inmediato y ademas un offset • Unicamente I1 debe tener prefijo • Cuando están apareadas, las instrucciones entran y salen de cada etapa AL UNISONO. • Si una de las dos instrucciones se bloquea en una etapa, la otra también se bloquea. Superescalares
Pentium: Conflictos Superescalares
Pentium: Conflictos • La mayoría de las instrucciones de CF no pueden aparearse con otras instrucciones. Ejecutan en el pipe U • La instrucción FXCH se ejecuta en el V pipe y puede aparearse con una simple en el U • Las simples son: FLD, FADD, FSUB, FMUL, FABS, FTST • FPU pipelining: • FDIV necesita todos los recursos, no permite otras inst. • Dos FMUL seguidas no pueden ejecutar simultáneamente • Una FMUL puede ejecutar con una o dos FADD • Tres FADD pueden ejecutar concurrentemente Superescalares
S0 S4 S1 S5 S8 S7 S7 S6 S6 S3 S6 S2 DEC 21164: Inicio en Orden- Ejecución en Orden S4 S5 Integer (2) FP (2) S4 S5 S8 S9 S10 S11 S12 L/S Superescalares
S0 S1 S3 S6 S2 DEC 21164: Inicio en Orden- Ejecución en Orden • S0: Instruction Cache • trae un bloque de 16 bytes (4 instrucciones) junto con 20 bits (5 por instrucción) de información precalculada que se utilizarán para S1 (saltos) y S2. S4 S5 Integer Superescalares
DEC 21164: Inicio en Orden- Ejecución en Orden • S1: Buffer Stage • escribe el bloque de 16 bytes (4 instrucciones) en el Buffer de Instrucciones. Decodifica saltos y determina siguiente PC. • S2: Slotting Stage • Envío de instrucciones a las UF. Las agrupa en un registro que enviará a S3. Resuelve los conflictos estáticos (recursos). El agrupamiento es en estricto orden (es como armar una VLIW). Si hay conflicto, en los próximos ciclos agrupa las restantes hasta que termina el grupo.
DEC 21164: Inicio en Orden- Ejecución en Orden I0 I1 F0 F1 LD LD FADD FMUL ST IBR FDIV UAL JMP FBR CMOV UAL CMP CMOV CMP
DEC 21164: Inicio en Orden- Ejecución en Orden • S3: Issue Stage • Resuelve conflictos dinámicos, bloqueando. RAW, WAW. Conflictos con UF no segmentadas, detecta cortocircuitos y inicia las instrucciones hacia las UF. Si una instrucción se boquea, todas las subsiguientes también lo harán. • Nuevas instrucciones llenan los slots cuando éstos están totalmente vacíos. • S6: WB Stage • Sólo se escribe si la instrucción completa sin excepciones.
DEC 21164: Latencias • Latencias • FX: 1 ciclo • Conditional Moves: 2 ciclos • Multiplicaciones: 8/4 ciclos para 32 bits; 14/8 para 64 bits • CF: 4 ciclos • DIVISION: de 1 a 4 bits del cociente por ciclo (2,4 en media) . Single: de 15 a 31 ciclos (media 19 ciclos) y doble precisión : de 22 a 60 ciclos (31 en media). Superescalares