procesadores superescalares y vliw

Download Report

Transcript procesadores superescalares y vliw

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.
• Cada campo de la nueva instrucción
“especializado” en una UF determinada.
está
• 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…)
Procesadores superescalares y VLIW
8
El modelo VLIW
Comportamiento ideal.
Inst. 01
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. 02
Inst. 03
Inst. 04
Compilador
Inst. 05
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. 10
Inst. 14
Inst. 01
Inst. 11
Inst. 06
Inst. 12
Inst. 01
Inst. 16
Inst. 15
Inst. 02
Inst. 03
Inst. 04
Compilador
Inst. 05
Inst. 05
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. 07
Inst. 03
Inst. 04
Inst. 10
Inst. 05
Inst. 06
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
instrucciones desde la caché
Caché (I)
L1
de
• 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)
Envío a las U.F.’s
INT
+-
INT
+-
FP
*
FP
*
....
FP
/
MEM
Bcc
....
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
¿Especulación
correcta?
Enviar el resultado
a los registros o a la
memoria
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