450 likes | 647 Vues
PROCESADORES SUPERESCALARES Y VLIW. 1. PROCESADORES SUPERESCALARES Y VLIW. 2. Introducción El modelo VLIW El cauce superescalar Superescalar con algoritmo de Tomasulo. PROCESADORES SUPERESCALARES Y VLIW. 3. Introducción. Introducción.
E N D
PROCESADORES SUPERESCALARES Y VLIW 2 • Introducción • El modelo VLIW • El cauce superescalar • Superescalar con algoritmo de Tomasulo
PROCESADORES SUPERESCALARES Y VLIW 3 • Introducción
Introducción Las técnicas vistas hasta ahora tienen como objetivo aprovechar al máximo el pipeline de forma que el CPI alcance el valor ideal de 1. ¿Podemos obtener un CPI inferior a 1? Sí, si logramos que todas las etapas del pipeline puedan procesar más de una instrucción por ciclo. 4 Procesadores superescalares y VLIW
Introducción ADD R1,R2,R3 SUB R4,R5,R6 AND R7,R8,R9 ADD R1,R2,R3 SUB R4,R5,R1 AND R7,R8,R4 Paralelismo de grado 3 Paralelismo de grado 1 PARALELISMO A NIVEL DE INSTRUCCIONES (ILP) Número de instrucciones de un programa que pueden ejecutarse en paralelo (de media). PARALELISMO A NIVEL DE MÁQUINA (MLP) Número máximo instrucciones que la máquina puede ejecutar en paralelo. A ese número se le llama grado de paralelismo del procesador. 5 Procesadores superescalares y VLIW
Introducción • Utilizan las técnicas de aceleración vistas anteriormente. • Procesan más de una instrucción por ciclo. Los procesadores actuales • Procesadores VLIW • Procesadores superescalares Veremos dos tipos 6 Procesadores superescalares y VLIW
PROCESADORES SUPERESCALARES Y VLIW 7 • El modelo VLIW
El modelo VLIW • VLIW = Very Long Instruction Word • El compilador empaqueta varias operaciones en una nueva instrucción. • Cada campo de la nueva instrucción está “especializado” en una UF determinada. • En cada ciclo se emite sólo una de las nuevas instrucciones. • El compilador se encarga de empaquetar correctamente las instrucciones evitando los problemas (dependencias, disponibilidad del hardware, etc…) 8 Procesadores superescalares y VLIW
El modelo VLIW Inst. 01 Inst. 02 Inst. 03 Inst. 04 Inst. 05 Inst. 06 Inst. 07 Inst. 08 Inst. 09 Inst. 10 Inst. 11 Inst. 12 Inst. 13 Inst. 14 Inst. 15 Inst. 16 Comportamiento ideal. Inst. 11 Inst. 14 Inst. 16 Inst. 15 Compilador Inst. 06 Inst. 08 Inst. 10 Inst. 09 Inst. 05 Inst. 07 Inst. 12 Inst. 13 Emisión Inst. 03 Inst. 01 Inst. 02 Inst. 04 UF1 UF2 UF3 UF4 9 Procesadores superescalares y VLIW
El modelo VLIW Inst. 01 Inst. 02 Inst. 03 Inst. 04 Inst. 05 Inst. 06 Inst. 07 Inst. 08 Inst. 09 Inst. 10 Inst. 11 Inst. 12 Inst. 13 Inst. 14 Inst. 15 Inst. 16 Normalmente no se pueden llenar todos los campos. Inst. 10 Inst. 14 Inst. 11 Inst. 01 Inst. 06 Inst. 12 Inst. 16 Inst. 15 Compilador Inst. 08 Inst. 09 Inst. 05 Inst. 07 Inst. 13 Emisión Inst. 03 Inst. 02 Inst. 04 UF1 UF2 UF3 UF4 10 Procesadores superescalares y VLIW
El modelo VLIW • Ventajas: • Hardware más simple ya que el compilador se encarga de un gran número de tareas. • Mayor número de unidades funcionales ya que queda libre mucho espacio en el chip. 11 Procesadores superescalares y VLIW
El modelo VLIW • Inconvenientes: • Complejidad del compilador al tenerse que ocupar de numerosos asuntos. • Dificultad para rellenar todos los campos de las instrucciones. • Mayor tamaño del código debido al problema anterior. • Incompatibilidad del código de cara a versiones con nuevas distribuciones de las unidades funcionales. 12 Procesadores superescalares y VLIW
PROCESADORES SUPERESCALARES Y VLIW 13 • El cauce superescalar
El cauce superescalar • Procesador superescalar: • El hardware resuelve los problemas en tiempo de ejecución. • Se emite un número variable de instrucciones en cada ciclo. • El código es compatible. • El hardware aumenta su complejidad. 14 Procesadores superescalares y VLIW
El cauce superescalar Inst. 01 Inst. 07 Inst. 06 Inst. 12 Inst. 02 Inst. 11 Inst. 04 Inst. 03 Inst. 03 Inst. 10 Inst. 04 Inst. 08 Inst. 13 Inst. 09 Inst. 05 Inst. 06 Inst. 07 Inst. 08 Inst. 01 Inst. 05 Inst. 02 Inst. 09 Inst. 10 Inst. 11 Inst. 12 Inst. 13 UF1 UF2 UF3 UF4 Inst. 14 Inst. 15 Inst. 16 15 Procesadores superescalares y VLIW
El cauce superescalar El cauce se estructura en varias etapas que presentan distintas variantes y que vamos a detallar. 16 Procesadores superescalares y VLIW
El cauce superescalar Caché (I) L1 Extracción Buffer de instrucciones Etapa de extracción • Se encarga de la captación de instrucciones desde la caché • Tiene que ser capaz de leer varias instrucciones por ciclo. • Las instrucciones leídas se almacenan en un buffer. • Este proceso se realiza en orden. 17 Procesadores superescalares y VLIW
El cauce superescalar Buffer de instrucciones Decodificación Ventana de instrucciones Etapa de decodificación • Extrae instrucciones del buffer y las decodifica. • Debe decodificar varias instrucciones por ciclo. • Las instrucciones decodificadas se almacenan en la ventana de instrucciones. • Este proceso se realiza en orden. 18 Procesadores superescalares y VLIW
El cauce superescalar Buffer de instrucciones Decodificación Ventana de instrucciones • Decodificación Decodifica y envía a la ventana de instrucciones. • Emisión Se encarga del resto. Etapa de decodificación • Esta etapa se vuelve demasiado costosa ya que hay que realizar numerosas tareas (buscar operandos, examinar dependencias, …) y para varias instrucciones. En un ciclo no hay tiempo. • Como aumentar el ciclo de reloj sería un error, lo que se hace es dividir la etapa en dos: 19 Procesadores superescalares y VLIW
El cauce superescalar Caché L2 Pre-decodificación Caché (I) L1 Extracción Etapa de pre-decodificación • Se puede facilitar el trabajo de la etapa ID haciendo una decodificación previa entre L2 y L1. • A cada instrucción, o conjunto de ellas, se añaden algunos bits (típicamente de 4 a 7) para notificar ciertas características. • El aumento en la longitud de las instrucciones implica un aumento en el ancho de banda de los buses. 20 Procesadores superescalares y VLIW
El cauce superescalar Caché L2 Pre-decodificación Ancho de banda necesario 4 x 32 = 128 bits/ciclo Caché (I) L1 Extracción Ancho de banda necesario 4 x (32 + 4) = 144 bits/ciclo Etapa de pre-decodificación EJEMPLO: Un procesador capta 4 instrucciones de 32 bits por ciclo, a cada una de las cuales la etapa de pre-decodificación añade 4 bits. 21 Procesadores superescalares y VLIW
El cauce superescalar Ventana de instrucciones Operación Destino Operando 1 OK 1 Operando 2 OK 2 Estructura de la ventana de instrucciones • No se guardan instrucciones sino la información necesaria para ejecutarlas. • La información se guarda en orden. Operación a realizar. Valor del operando o elemento que lo generará. Puede indicar un registro, una posición de memoria o un almacenamiento temporal. Indica si el operando está disponible. 22 Procesadores superescalares y VLIW
El cauce superescalar Ventana de instrucciones Emisión Ejecución Etapa de emisión • Si una instrucción está lista para ejecutarse y está disponible la U.F. que necesita, ésta se envía a la etapa de ejecución. • Se pueden emitir varias instrucciones por ciclo. • Si dos instrucciones compiten por una U.F. la emisión decidirá quién tiene prioridad. 23 Procesadores superescalares y VLIW
El cauce superescalar • Emisión alineada: • Hasta que no se vacían todas las instrucciones de la ventana no se pueden meter otras. • Emisión no alineada • Se pueden meter nuevas instrucciones siempre que haya sitio. Ventana de instrucciones Emisión • Emisión en orden. • Emisión fuera de orden. Ejecución Etapa de emisión El máximo rendimiento se obtiene con emisión no alineada y fuera de orden. 24 Procesadores superescalares y VLIW
El cauce superescalar INT + - INT + - FP * FP * . . . . . . . . FP / MEM Bcc Ejecución Etapa de ejecución 25 Procesadores superescalares y VLIW
El cauce superescalar Puede enviar dos instrucciones por ciclo. INT + - INT + - FP * FP * . . . . . . . . FP / MEM Bcc Estaciones de reserva por cada U.F. o grupo homogéneo de U.F.’s. La instrucción espera en la E.R. hasta que se pueda ejecutar. Puede enviar una instrucción por ciclo. Variante con estaciones de reserva Ventana de instrucciones 26 Procesadores superescalares y VLIW
El cauce superescalar Decodificación / Emisión INT + - INT + - FP * FP * . . . . . . . . FP / MEM Bcc Variante con estaciones de reserva La emisión se divide en dos: Decodificación / Emisión Decodificación y envío a las E.R.’s Envío (Dispatch) Envío a las U.F.’s 27 Procesadores superescalares y VLIW
El cauce superescalar • Memoria: • Orden en que se realizan los accesos a memoria en relación con el orden del programa. Ejecución Finalización Consistencia secuencial • Procesador: • Orden en que se actualizan los registros en relación con el orden del programa. Etapa de finalización Etapa en la que se finaliza la instrucción y se actualizan los registros. 28 Procesadores superescalares y VLIW
El cauce superescalar Ejecución Finalización Etapa de finalización • Consistencia fuerte: • El orden del programa debe coincidir con el de finalización. • Consistencia débil: • El orden del programa puede ser distinto al de finalización. • Hay que resolver los posibles riesgos. 29 Procesadores superescalares y VLIW
El cauce superescalar No pueden ejecutarse por riesgo RAW Sí se pueden ejecutar (emisión fuera de orden) Etapa de finalización Consistencia de memoria ¿Qué ocurre si esta instrucción se retrasa? (Por ejemplo, un fallo de caché) LD R1,200(R0) DMUL R1,R1,R1 SD R1,200(R0) AND R3,R4,R5 DSLLV R6,R7,R8 LD R2,400(R0) DADD R2,R2,R2 SD R2,400(R0) 30 Procesadores superescalares y VLIW
El cauce superescalar Etapa de finalización Consistencia de memoria Ésta no presenta dependencias, por lo tanto . . . LD R1,200(R0) DMUL R1,R1,R1 SD R1,200(R0) AND R3,R4,R5 DSLLV R6,R7,R8 LD R2,400(R0) DADD R2,R2,R2 SD R2,400(R0) • Consistencia débil: • Puede ejecutarse y acabar incluso antes que los accesos a memoria anteriores. • Consistencia fuerte: • No puede ejecutarse. 31 Procesadores superescalares y VLIW
El cauce superescalar Etapa de finalización Consistencia de memoria Direcciones diferentes ¿Direcciones diferentes? LD R1,200(R0) DMUL R1,R1,R1 SD R1,200(R0) AND R3,R4,R5 DSLLV R6,R7,R8 LD R2,400(R0) DADD R2,R2,R2 SD R2,400(R0) LD R1,200(R9) DMUL R1,R1,R1 SD R1,200(R9) AND R3,R4,R5 DSLLV R6,R7,R8 LD R2,400(R10) DADD R2,R2,R2 SD R2,400(R10) Problemas Puede hacerse “adelantamiento especulativo” y en caso de fallo anular las instrucciones ejecutadas erróneamente. 32 Procesadores superescalares y VLIW
El cauce superescalar Influye en las siguientes. SD R1,200(R0) DMUL R1,R1,R1 DADD R2,R1,R3 LD R1,200(R0) DMUL R1,R1,R1 SD R1,200(R0) No influye en las siguientes. Etapa de finalización Consistencia de memoria En los adelantamientos se suele dar prioridad a LOAD frente a STORE ya que la carga de un elemento puede a su vez hacer esperar a otras instrucciones. La tendencia actual es la consistencia de memoria débil ya que permite grandes ahorros de tiempo. 33 Procesadores superescalares y VLIW
El cauce superescalar Etapa de finalización Consistencia de procesador La tendencia actual es la consistencia de procesador fuerte. • Motivos: • Los tiempos involucrados son menores que los de los accesos a memoria y no compensan una complicación excesiva del hardware. • Estructuras como el Buffer de Reordenamiento (ROB) permiten de forma simple la finalización en orden con una emisión y ejecución fuera de orden. 34 Procesadores superescalares y VLIW
El cauce superescalar Se retiran varias instrucciones por ciclo. Banco de registros con varios puertos de escritura. Etapa de finalización Consistencia de procesador • La información de las instrucciones se introduce en el ROB en orden. • Una instrucción se saca cuando ella y sus predecesoras han finalizado. En ese momento se actualizan los registros. • Permite el renombrado de registros y la ejecución especulativa 35 Procesadores superescalares y VLIW
El cauce superescalar Puntero de cabeza Puntero de cola Destino Valor U.F. OK Estado Etapa de finalización Consistencia de procesador Implementación: Buffer circular. Registro destino Emitida / Ejecutando / Finalizada Resultado de la operación U.F. que realiza el cálculo Validez del campo “valor” 36 Procesadores superescalares y VLIW
El cauce superescalar Extracción Caché (I) L1 Buffer de instrucciones Decodificación Pre-decodificación Ventana de instrucciones Emisión Caché L2 Ejecución Finalización Cauce completo con ventana de instrucciones 37 Procesadores superescalares y VLIW
El cauce superescalar Cauce completo con estaciones de reserva Extracción Caché (I) L1 Buffer de instrucciones Decodificación / Emisión Pre-decodificación Estaciones de reserva Envío Caché L2 Ejecución Finalización 38 Procesadores superescalares y VLIW
PROCESADORES SUPERESCALARES Y VLIW 39 • Superescalar con algoritmo de Tomasulo
Superescalar con algoritmo de Tomasulo Emisión Ejecución Escritura de resultados Finalización Se añade un ROB para poder realizar especulación. Ahora el método se estructura en cuatro etapas. 40 Procesadores superescalares y VLIW
Superescalar con algoritmo de Tomasulo 1ª ETAPA EMISIÓN ¿Operandos disponibles? SI NO Enviar operandos a la E.R. Indicar las E.R. con las instrucciones que los generarán ¿E.R. y ROB disponibles? NO ¿Todos los operandos en la E.R.? NO SI Enviar instrucción a la E.R. SI 41 Procesadores superescalares y VLIW
Superescalar con algoritmo de Tomasulo Ejecutar en la U.F. 2ª ETAPA EJECUCIÓN 42 Procesadores superescalares y VLIW
Superescalar con algoritmo de Tomasulo Envía los resultados al CDB Desde el CDB se reenvía al ROB 3ª ETAPA ESCRITURA DE RESULTADOS 43 Procesadores superescalares y VLIW
Superescalar con algoritmo de Tomasulo 4ª ETAPA FINALIZACIÓN ¿Finalizaron las instrucciones previas? NO SI ¿Especulación correcta? SI NO Enviar el resultado a los registros o a la memoria Liberar las entradas del ROB asociadas a la especulación Liberar la entrada en el ROB 44 Procesadores superescalares y VLIW
Superescalar con algoritmo de Tomasulo ROB No se necesitan los buffers de almacenamiento. 45 Procesadores superescalares y VLIW