Scheduling dinámico: Algoritmo de Tomasulo

Download Report

Transcript Scheduling dinámico: Algoritmo de Tomasulo

Scheduling dinámico
Algoritmo de Tomasulo
Introducción
 Desarrollado por Robert Tomasulo para la super-
computadora IBM 360/91.
 Registra cuando los operandos de las instrucciones
están listos para eliminar peligros RAW.
 Permite la ejecución de una instrucción tan pronto
estén listos sus operandos.
 Renombra registros para eliminar peligros WAR y
WAW.
Universidad de Sonora
Arquitectura de Computadoras
2
Ejemplo

Renombrar registros elimina peligros WAR y WAW.
1. div.d f0, f2, f4
2. add.d f6, f0, f8
3. s.d f6, 0(r1)
4. sub.d f8, f10, f14
5. mul.d f6, f10, f8
Universidad de Sonora
; f0 = f2 / f4
; f6 = f0 + f8
; Mem[r1] = f6
; f8 = f10 – f14
; f6 = f10 * f8
Arquitectura de Computadoras
3
Ejemplo

1.
2.
3.
Dependencias:
Antidependencias: 2 y 4.
Dependencia de salidas: 2 y 5.
Dependencias de datos: 1 y 2; 2 y 3; 4 y 5;

1.
2.
3.
Peligros:
WAR: uso de f8 en 2 y 4.
WAW: uso de f6 en 2 y 5.
RAW: uso de f0 en 1 y 2; uso de f6 en 2 y 3; uso
de f8 en 4 y 5.
Universidad de Sonora
Arquitectura de Computadoras
4
Ejemplo

Renombrando f6 y f8 se eliminan las dependencias
de nombre y los peligros.
 f6 en 2 y 3 a S.
 f8 en 4, 5 y subsecuentes a T.
1. div.d f0, f2, f4
2. add.d S, f0, f8
3. s.d S, 0(r1)
4. sub.d T, f10, f14
5. mul.d f6, f10, T
Universidad de Sonora
; f0 = f2 / f4
; S = f0 + f8
; Mem[r1] = S
; T = f10 – f14
; f6 = f10 * T
Arquitectura de Computadoras
5
Estaciones de reserva
 Reservation stations (RS).
 Mecanismo para renombrar registros.
 Guarda operandos tan pronto están disponibles.
 Las instrucciones pendientes designan la RS de donde
obtendrán sus operandos.
 Cuando hay escrituras sucesivas a un registro, solo la última
escritura se usa para actualizar el registro.
 Conforme las instrucciones se emiten, los registros de los
operandos pendientes son renombrados por una RS.
 Generalmente, hay mas RS que registros físicos.
Universidad de Sonora
Arquitectura de Computadoras
6
Unidad de punto flotante en MIPS
usando el algoritmo de Tomasulo
Universidad de Sonora
Arquitectura de Computadoras
7
Explicación
 Las instrucciones llegan de la unidad de
instrucciones y se almacenan en la cola de
instrucciones de donde son emitidas en orden FIFO.
 Las RS incluyen:
 La operación y los operandos.
 Información para detectar y resolver peligros.
 Las RS y los buffers de load y store tienen funciones
semejantes y en esta explicación solo se distinguen
cuando sea necesario.
Universidad de Sonora
Arquitectura de Computadoras
8
Explicación
 Los buffers de load tienen 3 funciones:
 Guarda los componentes de la dirección efectiva
hasta que es calculada.
 Registrar los loads que están esperando en la
memoria.
 Guardar los resultados de los loads que están
esperando al CDB (bus común de datos).
Universidad de Sonora
Arquitectura de Computadoras
9
Explicación
 Los buffers de store tienen 3 funciones:
 Guarda los componentes de la dirección efectiva
hasta que es calculada.
 Guarda las direcciones destino que están esperando
al valor del dato que van a guardar.
 Guardar la dirección y el valor a guardar hasta que la
unidad de memoria está disponible.
 Los resultados de las unidades FP o de la unidad de
carga se ponen en el CDB que va al banco de
registros, los buffers de store y las RS.
Universidad de Sonora
Arquitectura de Computadoras
10
Algoritmo básico

Las instrucciones pasan por 3 pasos:
1. Emisión (issue). También llamado despachar
(dispatch).
2. Ejecución.
3. Escribir resultados.

Cada paso toma un número arbitrario de ciclos.
Universidad de Sonora
Arquitectura de Computadoras
11
Algoritmo básico
1. Emisión.
 Obtiene la siguiente instrucción de la cola.
 Si hay una RS del tipo deseado que esté vacía, se
emite la instrucción a la RS que tenga los valores de
los operandos, si ya están en los registros.
 Si los operandos no están en los registros, se
registra la unidad funcional que va a producirlos.
 Si no hay una RS vacía, se produce un peligro
estructural y la instrucción se retiene (stall) hasta
que se libere una RS o buffer.
 Renombra registros.
Universidad de Sonora
Arquitectura de Computadoras
12
Algoritmo básico
2. Ejecución.
 Si uno o mas operandos no están disponibles, el
CDB se monitorea mientras se espera que los
operandos sean calculados.
 Cuando un operandos está disponible, se coloca en
la RS correspondiente.
 Cuando todos los operandos están disponibles, la
instrucción se ejecuta en la unidad funcional.
 Esta espera elimina peligros RAW.
Universidad de Sonora
Arquitectura de Computadoras
13
Algoritmo básico
Si en una unidad funcional hay mas de una
instrucción lista para ejecutarse, la selección puede
ser arbitraria.
 Los loads y stores se ejecutan en dos pasos:
1. La dirección efectiva se calcula cuando el registro
base está listo y luego se guarda en el buffer
correspondiente.
2. Los loads se ejecutan tan pronto la unidad de
memoria esté lista. Los stores esperan al valor a
guardar antes de enviarlo a la memoria.
 Para evitar peligros los loads y stores se hacen en
orden hasta el paso 1.

Universidad de Sonora
Arquitectura de Computadoras
14
Algoritmo básico
3. Escribir resultado.
 Cuando el resultado está listo se escribe en el CDB,
y de ahí se manda a las RS y buffers de store que
estén esperando el resultado.
 Los stores, se quedan en el buffer de store hasta
que el valor a guardar y la dirección de memoria
están disponibles.
 El valor se guarda tan pronto la unidad de memoria
esté libre.
Universidad de Sonora
Arquitectura de Computadoras
15
Estaciones de reserva
 Cada RS tiene 7 campos:
 Op – La operación a realizar en los operandos S1 y S2.
 Qj, Qk – Las RS que producirán los operandos. Un 0
indica que los operandos ya están en Vj o Vk, o que
son innecesarios.
 Vj, Vk – El valor de los operandos. Para loads, Vk se
usa para guardar el offset.
 A – Guarda información de la dirección de memoria
para un load o store. Inicialmente el campo inmediato
se guarda aquí, después del cálculo de la dirección, la
dirección efectiva se guarda en A.
Universidad de Sonora
Arquitectura de Computadoras
16
Estaciones de reserva
 Busy – Indica que la RS y la correspondiente unidad
funcional están ocupadas.
 Además, el banco de registros tiene 1 campo:
 Qi – El número de RS que contiene la operación cuyo
resultado va a ser guardado en este registro. Si Qi es
0, no hay ninguna instrucción activa que vaya a
guardar algo en este registro.
Universidad de Sonora
Arquitectura de Computadoras
17
Ejemplo
 En un sistema hay 7 RS: 2 de para loads, 3 para
sumas y 2 para multiplicaciones.
 Mostrar el estado de las RS y del banco de registros
después de que la instrucción 1 ha terminado y
escrito su resultado.
Universidad de Sonora
Arquitectura de Computadoras
18
Ejemplo

Código:
1. l.d f6, 32(r2)
2. l.d f2, 44(r3)
3. mul.d f0, f2, f4
4. sub.d f8, f2, f6
5. div.d f10, f0, f6
6. add.d f6, f8, f2
Universidad de Sonora
; f6 = Mem[r2 + 32]
; f2 = Mem[r3 + 44]
; f0 = f2 * f4
; f8 = f2 – f6
; f10 = f0 / f6
; f6 = f8 + f2
Arquitectura de Computadoras
19
Peligros
 RAW – Entre 1 y 4 y entre 1 y 5 por f6; entre 2 y 3,
entre 2 y 4 y entre 2 y 6 por f2.
 WAR – Entre 4 y 6 y entre 5 y 6 por f6.
 WAW – Entre 1 y 6 por f6.
Universidad de Sonora
Arquitectura de Computadoras
20
Estado de las instrucciones
Universidad de Sonora
Arquitectura de Computadoras
21
Estaciones de reserva
Universidad de Sonora
Arquitectura de Computadoras
22
Banco de registros
Universidad de Sonora
Arquitectura de Computadoras
23
Solución de peligros
 Los peligros RAW se eliminaron al hacer que una
instrucción no se ejecute hasta que sus operandos
están listos.
 Los peligros WAR por f6 se eliminaron al copiar el
resultado del load (instrucción 1) a las estaciones de
reserva donde están el sub y el div (instrucciones 4
y 5).
 Ahora el add (instrucción 6) puede escribir en f6 sin
problema.
 No hubo peligro WAW porque la instrucción 1
terminó antes que la 6.
Universidad de Sonora
Arquitectura de Computadoras
24
Ejemplo

Mostrar el estado de las RS, después de que la
instrucción 3 está lista para escribir su resultado y
la 5 todavía está en ejecución.
1. l.d f6, 32(r2)
2. l.d f2, 44(r3)
3. mul.d f0, f2, f4
4. sub.d f8, f2, f6
5. div.d f10, f0, f6
6. add.d f6, f8, f2
Universidad de Sonora
; f6 = Mem[r2 + 32]
; f2 = Mem[r3 + 44]
; f0 = f2 * f4
; f8 = f2 – f6
; f10 = f0 / f6
; f6 = f8 + f2
Arquitectura de Computadoras
25
Estado de las instrucciones
Universidad de Sonora
Arquitectura de Computadoras
26
Estaciones de reserva
Universidad de Sonora
Arquitectura de Computadoras
27
Banco de registros
Universidad de Sonora
Arquitectura de Computadoras
28
Especulación

El algoritmo básico de Tomasulo se puede
extender para soportar especulación por hardware.
 La especulación permite ejecutar instrucciones
antes de saber el resultado de un brinco.
 La especulación por hardware combina 3 ideas:
1. Predicción dinámica de brincos.
2. Especulación para ejecutar instrucciones antes de
que las dependencias de control sean resueltas y
deshacer los efectos si la especulación fue
incorrecta.
Universidad de Sonora
Arquitectura de Computadoras
29
Especulación
3. Scheduling dinámico para seleccionar que
instrucciones se ejecutan.

Se necesita pasar el resultado a otras
instrucciones antes de que la instrucción termine.
 Se introduce un nuevo paso llamado compromiso
(commit).
 Una instrucción se compromete cuando se sabe
que no es especulada.
 Sólo entonces se le permite escribir al banco de
registros o a la memoria.
Universidad de Sonora
Arquitectura de Computadoras
30
Especulación
 Las instrucciones de ejecutan fuera de orden pero
se comprometen en orden.
 Para comprometer en orden se usa un ROB (reorder
buffer).
 El ROB mantiene el resultado de una instrucción
desde que termina hasta que se compromete.
 Como ni la memoria ni el banco de registros se
actualizan hasta que la instrucción se compromete,
el ROB provee operandos a otras instrucciones
durante ese tiempo.
Universidad de Sonora
Arquitectura de Computadoras
31
Especulación
 El buffer de store se elimina porque su función la
realiza el ROB.
 Los stores se realizan todavía en 2 pasos, el
segundo paso lo hace el ROB.
Universidad de Sonora
Arquitectura de Computadoras
32
Algoritmo con especulación
Universidad de Sonora
Arquitectura de Computadoras
33
Algoritmo con especulación

Las instrucciones pasan por 4 etapas:
1. Emisión (issue).
2. Ejecución.
3. Escribir resultados.
4. Compromiso.
Universidad de Sonora
Arquitectura de Computadoras
34
Algoritmo con especulación
1. Emisión.
 Obtiene una instrucción de la cola de instrucciones.
 La instrucción se emite si hay una RS libre y espacio
en el ROB donde poner el resultado.
 Envía los operandos a la RS si están disponibles en
el banco de registros o en el ROB.
 Envía el número de la entrada en el ROB a la RS
para que el resultado sea etiquetado al colocarse en
el CDB.
 Si todas las RS están ocupadas o el ROB está lleno,
la instrucción se detiene.
Universidad de Sonora
Arquitectura de Computadoras
35
Algoritmo con especulación
2. Ejecución.
 Si uno o mas operandos no están disponibles, el
CDB se monitorea mientras se espera que los
operandos sean calculados.
 Este paso checa los peligros RAW.
 Cuando los operandos están disponibles en el RS, la
instrucción se ejecuta.
 Los loads requieren dos etapas igual que antes.
 Los stores solo necesitan que el registro base esté
libre porque solo calculan la dirección efectiva.
Universidad de Sonora
Arquitectura de Computadoras
36
Algoritmo con especulación
3. Escribir resultados.
 Cuando el resultado está disponible, se escribe en el
CDB y de ahí al ROB y otras RS que lo requieran.
 La RS se marca como libre.
 Los stores necesitan atención especial:


Si el valor a guardar está libre, se escribe en el ROB.
Si no está disponible, el CDB se monitorea hasta que el
valor aparezca y entonces se escribe en el ROB.
Universidad de Sonora
Arquitectura de Computadoras
37
Algoritmo con especulación
4. Compromiso.
 Una instrucción se compromete cuando llega al
frente del ROB.
 Las acciones dependen del tipo de instrucción.
 Si es un store, la memoria se actualiza.
 Si es otra instrucción (excepto un brinco), el banco
de registros se actualiza.
 Si es un brinco mal adivinado, el ROB se limpia y la
ejecución comienza en el lugar correcto.
 Si es un brinco bien adivinado no pasa nada.
 En cualquier caso, la entrada del ROB se libera.
Universidad de Sonora
Arquitectura de Computadoras
38
Ejemplo

Mostrar el status de las tablas cuando el mul.d está
listo para comprometerse.
1. l.d f6, 32(r2)
2. l.d f2, 44(r3)
3. mul.d f0, f2, f4
4. sub.d f8, f2, f6
5. div.d f10, f0, f6
6. add.d f6, f8, f2
Universidad de Sonora
; f6 = Mem[r2 + 32]
; f2 = Mem[r3 + 44]
; f0 = f2 * f4
; f8 = f2 – f6
; f10 = f0 / f6
; f6 = f8 + f2
Arquitectura de Computadoras
39
ROB
Universidad de Sonora
Arquitectura de Computadoras
40
Estaciones de reserva
Universidad de Sonora
Arquitectura de Computadoras
41
Banco de registros
Universidad de Sonora
Arquitectura de Computadoras
42
Ejemplo

Mostrar la ejecución del siguiente código:
1. loop: l.d f0, 0(r1)
2.
3.
4.
5.
Universidad de Sonora
mul.d f4, f0, f2
s.d f4, 0(r1)
daddiu r1, r1, #-8
bne r1, r2, loop
Arquitectura de Computadoras
; f0 = Mem[r1]
; f4 = f0 * f2
; Mem[r1] = f4
; r1 = r1 – 8
; if r1  r2 goto loop
43
Ejemplo
 Suponiendo que:
 Se especula que el ciclo fue tomado.
 Se han emitido las instrucciones en el ciclo 2 veces.
 El l.d y mul.d de la primera iteración ya se
comprometieron y las demás instrucciones terminaron
de ejecutarse.
Universidad de Sonora
Arquitectura de Computadoras
44
ROB
Universidad de Sonora
Arquitectura de Computadoras
45
Banco de registros
 Las RS no se muestran porque no hay instrucciones
ejecutando.
Universidad de Sonora
Arquitectura de Computadoras
46
Ejemplo
 Suponer que el primer brinco no debió ser tomado.
 Las instrucciones anteriores al brinco se
comprometen.
 Cuando el brinco llega al frente, el ROB se limpia y
se comienzan a sacar instrucciones del camino
correcto.
 En la práctica, al momento de saber que se adivinó
mal se limpia la parte del ROB que corresponde al
camino equivocado.
Universidad de Sonora
Arquitectura de Computadoras
47
Conclusiones
 El algoritmo de Tomasulo no fue usado desde la IBM
360/91 (1960s) hasta principios de los 90s.
 Ahora ha sido ampliamente adoptado en los
procesadores de emisión múltiple.
 Consigue un gran rendimiento sin requerir que el
compilador sea adaptado para cada arquitectura.
 Los peligros WAW y WAR se eliminan porque las
instrucciones se comprometen en orden.
 Los peligros RAW se eliminan al no permitir que una
instrucción continúe hasta que sus operandos están
listos.
Universidad de Sonora
Arquitectura de Computadoras
48
Conclusiones

Los peligros RAW en la memoria se eliminan con:
1. Un load en ejecución no puede iniciar su segundo
paso si en el ROB hay un store activo con la misma
dirección.
2. Manteniendo el orden de programa para el cálculo
de la dirección efectiva de un load con respecto a los
stores anteriores.

El scheduling dinámico es la forma preferida de
scheduling usada actualmente.
Universidad de Sonora
Arquitectura de Computadoras
49