Story Transcript
6. PROCESADORES SUPERESCALARES Y VLIW
1
PROCESADORES SUPERESCALARES Y VLIW
1. Introducción 2. El modelo VLIW 3. El cauce superescalar 4. Superescalar con algoritmo de Tomasulo
2
PROCESADORES SUPERESCALARES Y VLIW
1. Introducción
3
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. Procesadores superescalares y VLIW
4
Introducción PARALELISMO A NIVEL DE INSTRUCCIONES (ILP) Número de instrucciones de un programa que pueden ejecutarse en paralelo (de media). ADD SUB AND
R1,R2,R3 R4,R5,R6 R7,R8,R9
Paralelismo de grado 3
ADD SUB AND
R1,R2,R3 R4,R5,R1 R7,R8,R4
Paralelismo de grado 1
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. Procesadores superescalares y VLIW
5
Introducción
Los procesadores actuales
Veremos dos tipos
• Utilizan las técnicas de aceleración vistas anteriormente. • Procesan más de una instrucción por ciclo.
• Procesadores VLIW • Procesadores superescalares
Procesadores superescalares y VLIW
6
PROCESADORES SUPERESCALARES Y VLIW
2. El modelo VLIW
7
El modelo VLIW
VLIW = Very Long Instruction Word • El compilador empaqueta varias operaciones en una nueva instrucción. • C a d a c a m p o d e l a n u e v a i n s t r u c c i ó n e s t á “especializado” en una UF determinada. • En cada ciclo se emite sólo una de las nuevas instrucciones. • E l c o m p i l a d o r s e e n c a r g a d e e m p a q u e t a r correctamente las instrucciones evitando los problemas (dependencias, disponibilidad del hardware, etc…) Procesadores superescalares y VLIW
8
El modelo VLIW Comportamiento ideal. Inst. 01 Inst. 02 Inst. 03 Inst. 04
Compilador
Inst. 05
Inst. 11
Inst. 14
Inst. 16
Inst. 15
Inst. 06
Inst. 08
Inst. 10
Inst. 09
Inst. 05
Inst. 07
Inst. 12
Inst. 13
Inst. 06 Inst. 07 Inst. 08
Emisión
Inst. 09 Inst. 10 Inst. 11 Inst. 12
Inst. 03
Inst. 01
Inst. 02
Inst. 04
UF1
UF2
UF3
UF4
Inst. 13 Inst. 14 Inst. 15 Inst. 16
Procesadores superescalares y VLIW
9
El modelo VLIW Normalmente no se pueden llenar todos los campos. Inst. 01
Inst. 04
Inst. 14
Inst. 01
Inst. 11 Inst. 06
Inst. 16
Inst. 02 Inst. 03
Inst. 10
Compilador
Inst. 05
Inst. 05
Inst. 12 Inst. 15
Inst. 08
Inst. 09
Inst. 07
Inst. 13
Inst. 06 Inst. 07 Inst. 08
Emisión
Inst. 09 Inst. 10 Inst. 11 Inst. 12
Inst. 03
Inst. 02
Inst. 04
UF3
UF4
Inst. 13 Inst. 14 Inst. 15 Inst. 16
Procesadores superescalares y VLIW
UF1
UF2
10
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.
Procesadores superescalares y VLIW
11
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.
Procesadores superescalares y VLIW
12
PROCESADORES SUPERESCALARES Y VLIW
3. El cauce superescalar
13
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.
Procesadores superescalares y VLIW
14
El cauce superescalar Inst. 01 Inst. 02 Inst. 03 Inst. 04 Inst. 05 Inst. 06
Inst. 07
12 Inst.
Inst.
Inst. 10 Inst.
13
Inst.
Inst.
04
06
09
Inst. 07 Inst. 02
Inst. 10
Inst. 05
Inst. 09
Inst. 01
Inst. 08
Inst. 11 Inst. 12 Inst. 13 Inst. 14 Inst. 15 Inst. 16
Procesadores superescalares y VLIW
UF1
UF2
UF3
UF4
15
El cauce superescalar El cauce se estructura en varias etapas que presentan distintas variantes y que vamos a detallar. Extracción Caché (I) L1
Buffer de instrucciones Decodificación
Pre-decodificación
Caché L2
Ventana de instrucciones Emisión Ejecución Finalización
Procesadores superescalares y VLIW
16
El cauce superescalar Etapa de extracción • Se encarga de la captación de instrucciones desde la caché Caché (I) L1
• Tiene que ser capaz de leer varias instrucciones por ciclo.
Extracción Buffer de instrucciones
• Las instrucciones leídas se almacenan en un buffer. • Este proceso se realiza en orden.
Procesadores superescalares y VLIW
17
El cauce superescalar Etapa de decodificación • Extrae instrucciones del buffer y las decodifica. Buffer de instrucciones Decodificación Ventana de instrucciones
• Debe decodificar varias instrucciones por ciclo. • Las instrucciones decodificadas se almacenan en la ventana de instrucciones. • Este proceso se realiza en orden.
Procesadores superescalares y VLIW
18
El cauce superescalar Etapa de decodificación
Buffer de instrucciones Decodificación Ventana de instrucciones
• 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:
• Decodificación à Decodifica y envía a la ventana de instrucciones. • Emisión à Se encarga del resto. Procesadores superescalares y VLIW
19
El cauce superescalar Etapa de pre-decodificación
Caché L2 Pre-decodificación Caché (I) L1 Extracció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.
Procesadores superescalares y VLIW
20
El cauce superescalar 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. Caché L2
Ancho de banda necesario 4 x 32 = 128 bits/ciclo
Pre-decodificación Caché (I) L1
Ancho de banda necesario 4 x (32 + 4) = 144 bits/ciclo
Extracción Procesadores superescalares y VLIW
21
El cauce superescalar Estructura de la ventana de instrucciones • No se guardan instrucciones sino la información necesaria para ejecutarlas.
Ventana de instrucciones
• La información se guarda en orden.
Operación
Destino
Operando 1 OK 1 Operando 2 OK 2
Operación a realizar. Puede indicar un registro, una posición de memoria o un almacenamiento temporal.
Valor del operando o elemento que lo generará. Indica si el operando está disponible.
Procesadores superescalares y VLIW
22
El cauce superescalar Etapa de emisión
Ventana de instrucciones Emisión Ejecució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.
Procesadores superescalares y VLIW
23
El cauce superescalar Etapa de emisión
• Emisión alineada: Hasta que no se vacían todas las instrucciones de la ventana no se pueden meter otras.
Ventana de instrucciones
• Emisión no alineada Se pueden meter nuevas instrucciones siempre que haya sitio.
Emisión Ejecución
• Emisión en orden. • Emisión fuera de orden.
El máximo rendimiento se obtiene con emisión no alineada y fuera de orden. Procesadores superescalares y VLIW
24
El cauce superescalar Etapa de ejecución
INT +-
INT +-
FP *
FP *
....
FP /
MEM
Bcc
Ejecución ....
Procesadores superescalares y VLIW
25
El cauce superescalar Variante con estaciones de reserva Puede enviar dos instrucciones por ciclo.
Ventana de instrucciones
Estaciones de reserva por cada U.F. o grupo homogéneo de U.F.’s.
INT +-
La instrucción espera en la E.R. hasta que se pueda ejecutar. Procesadores superescalares y VLIW
INT +-
FP *
FP *
....
FP /
MEM
Bcc
....
Puede enviar una instrucción por ciclo. 26
El cauce superescalar Variante con estaciones de reserva La emisión se divide en dos: Decodificación / Emisión
Decodificación / Emisión
Decodificación y envío a las E.R.’s
Envío (Dispatch) INT +-
INT +-
FP *
FP *
....
FP /
MEM
Bcc
Envío a las U.F.’s
....
Procesadores superescalares y VLIW
27
El cauce superescalar Etapa de finalización Etapa en la que se finaliza la instrucción y se actualizan los registros. Ejecución
• Memoria: Finalización
Consistencia secuencial
Orden en que se realizan los accesos a memoria en relación con el orden del programa. • Procesador: Orden en que se actualizan los registros en relación con el orden del programa.
Procesadores superescalares y VLIW
28
El cauce superescalar Etapa de finalización
Ejecución 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.
Procesadores superescalares y VLIW
29
El cauce superescalar Etapa de finalización Consistencia de memoria
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)
Procesadores superescalares y VLIW
¿Qué ocurre si esta instrucción se retrasa? (Por ejemplo, un fallo de caché)
No pueden ejecutarse por riesgo RAW Sí se pueden ejecutar (emisión fuera de orden) 30
El cauce superescalar Etapa de finalización Consistencia de memoria
LD R1,200(R0) DMUL R1,R1,R1 SD R1,200(R0)
Ésta no presenta dependencias, por lo tanto . . .
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.
Procesadores superescalares y VLIW
31
El cauce superescalar Etapa de finalización Consistencia de memoria Direcciones diferentes LD DMUL SD
R1,200(R0) R1,R1,R1 R1,200(R0)
¿Direcciones diferentes? LD DMUL SD
R1,200(R9) R1,R1,R1 R1,200(R9)
AND R3,R4,R5 DSLLV R6,R7,R8
AND R3,R4,R5 DSLLV R6,R7,R8
LD DADD SD
LD DADD SD
R2,400(R0) R2,R2,R2 R2,400(R0)
Problemas
R2,400(R10) R2,R2,R2 R2,400(R10)
Puede hacerse “adelantamiento especulativo” y en caso de fallo anular las instrucciones ejecutadas erróneamente. Procesadores superescalares y VLIW
32
El cauce superescalar 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.
LD R1,200(R0) DMUL R1,R1,R1 SD R1,200(R0)
Influye en las siguientes. No influye en las siguientes.
SD R1,200(R0) DMUL R1,R1,R1 DADD R2,R1,R3
La tendencia actual es la consistencia de memoria débil ya que permite grandes ahorros de tiempo. Procesadores superescalares y VLIW
33
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. Procesadores superescalares y VLIW
34
El cauce superescalar 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 Se retiran varias instrucciones por ciclo. Procesadores superescalares y VLIW
Banco de registros con varios puertos de escritura. 35
El cauce superescalar Etapa de finalización
Puntero de cabeza
Puntero de cola
Consistencia de procesador Implementación: Buffer circular.
Destino
Valor
U.F.
Registro destino
OK
Estado
Emitida / Ejecutando / Finalizada
Resultado de la operación U.F. que realiza el cálculo Procesadores superescalares y VLIW
Validez del campo “valor” 36
El cauce superescalar Cauce completo con ventana de instrucciones Extracción Caché (I) L1
Buffer de instrucciones Decodificación
Pre-decodificación
Caché L2
Ventana de instrucciones Emisión Ejecución Finalización
Procesadores superescalares y VLIW
37
El cauce superescalar Cauce completo con estaciones de reserva Extracción Caché (I) L1
Buffer de instrucciones Decodificación / Emisión
Pre-decodificación
Caché L2
Estaciones de reserva Envío Ejecución Finalización
Procesadores superescalares y VLIW
38
PROCESADORES SUPERESCALARES Y VLIW
4. Superescalar con algoritmo de Tomasulo
39
Superescalar con algoritmo de Tomasulo
Se añade un ROB para poder realizar especulación.
Emisión
Ejecución
Ahora el método se estructura en cuatro etapas. Escritura de resultados
Finalización
Procesadores superescalares y VLIW
40
Superescalar con algoritmo de Tomasulo 1ª ETAPA EMISIÓN SI
¿Operandos disponibles?
Indicar las E.R. con las instrucciones que los generarán
Enviar operandos a la E.R.
¿E.R. y ROB disponibles?
NO
NO
SI
Enviar instrucción a la E.R.
Procesadores superescalares y VLIW
¿Todos los operandos en la E.R.?
NO
SI
41
Superescalar con algoritmo de Tomasulo 2ª ETAPA EJECUCIÓN
Ejecutar en la U.F.
Procesadores superescalares y VLIW
42
Superescalar con algoritmo de Tomasulo 3ª ETAPA ESCRITURA DE RESULTADOS
Envía los resultados al CDB
Desde el CDB se reenvía al ROB
Procesadores superescalares y VLIW
43
Superescalar con algoritmo de Tomasulo 4ª ETAPA FINALIZACIÓN
¿Finalizaron las instrucciones previas?
NO
SI
SI
Enviar el resultado a los registros o a la memoria
¿Especulación correcta?
Liberar la entrada en el ROB
Procesadores superescalares y VLIW
NO
Liberar las entradas del ROB asociadas a la especulación
44
Superescalar con algoritmo de Tomasulo
ROB
No se necesitan los buffers de almacenamiento.
Procesadores superescalares y VLIW
45