1 / 50

Arquitectura de Procesadores Procesadores Superescalares: Inicio

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.

thuong
Download Presentation

Arquitectura de Procesadores Procesadores Superescalares: Inicio

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitectura de ProcesadoresProcesadores Superescalares:Inicio 1er Cuatrimestre de 1999

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. Decodificación I-cache I-cache I-buffer I-buffer Dec/Inicio Dec/Inicio Inicio Escalar Inicio SuperEscalar Superescalares

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. Ventana de Inicio (issue window) I-buffer Ventana de Inicio Decodificación/ Chequeo de Inicio UF UF UF Superescalares

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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

  40. Pentium: Inicio en Orden-Ejecución en Orden • Inicio en Orden, No hay Renombre, bloquea si detecta conflictos. Superescalares

  41. 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

  42. 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

  43. Pentium: Conflictos Superescalares

  44. 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

  45. 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

  46. 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

  47. 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.

  48. 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

  49. 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.

  50. 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

More Related