Escalação Dinâmica
Algorítmo de Tomasulo
DAP Spr.‘98 ©UCB 1
Revisão: Três Partes do Scoreboard
1.Status da instrução — em qual dos 4 passos a instrução
se encontra
2. Status da unidade funcional — indica o estado da
unidade funcional (FU), através dos campos:
Busy — indica se a unidade está ocupada ou não
Op — operação a ser realizada pela unidade (ex., + ou –)
Fi — registrador de destino
Fj, Fk — número dos registradores fonte
Qj, Qk — unidades funcionais produzindo dados para Fj, Fk
Rj, Rk — Flags indicando se Fj, Fk estão prontos
3. Status do registrador destino — Indica qual unidade
funcional irá escrever em cada registrador.
DAP Spr.‘98 ©UCB 2
Exemplo de Scoreboard Ciclo 3
Instruction status
Instruction
Read
j
k
LD
F6
34+
R2
LD
F2
45+
R3
MULTDF0
F2
F4
SUBD F8
F6
F2
DIVD
F0
F6
F8
F2
F10
ADDD F6
Issue
operands complete Result
1
2
Functional unit status
Time Name
ExecutionWri te
3
dest
S1
S2
FU for j
FU for k
Fj?
Fk?
Fj
Fk
Qj
Qk
Rj
Rk
Busy
Op
Fi
Integer
Yes
Load
F6
Mult1
No
Mult2
No
Add
No
Divide
No
F2
F4
R2
Yes
Register result status
Clock
3
F0
FU
F6
F8
F10
F12
...
F30
Integer
Emite MULT? Não, espera emissão do segundo LD
DAP Spr.‘98 ©UCB 3
Exemplo de Scoreboard Ciclo 9
Instruction status
Instruction
Read
j
k
Issue
Execution Wri te
operands complete Result
LD
F6
34+
R2
1
2
3
4
LD
F2
45+
R3
5
6
7
8
MULTDF0
F2
F4
6
9
SUBD F8
F6
F2
7
9
DIVD
F0
F6
8
F8
F2
F10
ADDD F6
Functional unit status
Time Name
dest
S1
S2
FU for j
FU for k
Fj?
Fk?
Op
Fi
Fj
Fk
Qj
Qk
Rj
Rk
Mult
F0
F2
F4
Yes
Yes
Yes
Sub
F8
F6
F2
Yes
Yes
Yes
Div
F10
F0
F6
Mult1
No
Yes
F0
F2
F4
F6
F8
F10
...
F30
Add
Divide
Busy
Integer
No
10 Mult1
Yes
Mult2
No
2 Add
Divide
Register result status
Clock
9
•
FU
Mult1
F12
Lê operandos para MULT & SUBD? Emite ADDD?
DAP Spr.‘98 ©UCB 4
Exemplo de Scoreboard Ciclo 17
Instruction status
Instruction
Read
j
k
Issue
Execution Wri te
operands complete Result
LD
F6
34+
R2
1
2
3
4
LD
F2
45+
R3
5
6
7
8
MULTDF0
F2
F4
6
9
SUBD F8
F6
F2
7
9
11
12
DIVD
F0
F6
8
F8
F2
13
14
16
F10
ADDD F6
Functional unit status
Time Name
Busy
Integer
dest
S1
S2
FU for j
FU for k
Fj?
Fk?
Op
Fi
Fj
Fk
Qj
Qk
Rj
Rk
Mult
F0
F2
F4
Yes
Yes
Yes
Yes
No
Yes
...
F30
No
2 Mult1
Yes
Mult2
No
Add
Yes
Add
F6
F8
F2
Divide
Yes
Div
F10
F0
F6
Mult1
F0
F2
F4
F6
F8
F10
Register result status
Clock
17
FU
Mult1
Add
F12
Divide
Escreve resultado de ADDD? Não, perigo WAR
DAP Spr.‘98 ©UCB 5
Exemplo de Scoreboard Ciclo 62
Instruction status
Instruction
Read
j
k
Issue
Execution Wri te
operands complete Result
LD
F6
34+
R2
1
2
3
4
LD
F2
45+
R3
5
6
7
8
MULTDF0
F2
F4
6
9
19
20
SUBD F8
F6
F2
7
9
11
12
DIVD
F0
F6
8
21
61
62
F8
F2
13
14
16
22
F10
ADDD F6
Functional unit status
Time Name
Busy
Integer
No
Mult1
No
Mult2
No
Add
No
0 Divide
No
dest
S1
S2
FU for j
FU for k
Fj?
Fk?
Op
Fi
Fj
Fk
Qj
Qk
Rj
Rk
F2
F4
F6
F8
F10
F12
...
F30
Register result status
Clock
62
F0
FU
• Emissão em ordem; Leitura e execução fora de ordem;
escrita fora de ordem, respeitando WAR
DAP Spr.‘98 ©UCB 6
Scoreboard - Sumário
• Limitações do scoreboard do CDC 6600
– Sem antecipação (primeiro escreve no registrador, depois lê) para
RAW
– Limitado a instruções num bloco básico (pequena janela)
– Número limitado de unidades funcionais (conflito estrutural)
– Espera pela dependência WAR para escrita
– Previne a dependência WAW na emissão
DAP Spr.‘98 ©UCB 7
Um outro Algoritmo para Escalação
Dinâmica: Algorítmo de Tomasulo
• Usado no IBM 360/91 por volta de 3 anos após CDC 6600
(1966)
• Alto Desempenho sem compiladores especiais
• Porquê estudar? Devido ao uso no Alpha 21264, HP
8000, MIPS 10000, Pentium II, PowerPC 604, …
DAP Spr.‘98 ©UCB 8
Algoritmo Tomasulo
• Controle & buffers distribuídos nas unidades funcionais (UFs)
– Buffers de UFs chamados estações de reserva (reservation
station- RS), contem operandos pendentes
3
2
1
SOMADOR FP3
SOMADOR FP2
SOMADOR FP1
DAP Spr.‘98 ©UCB 9
Algoritmo Tomasulo
• Operandos após serem processados pelas UFs são difundidos diretamente
para todas as RSs que esperam dados, pelo CDB (Common Data Bus)
(no scoreboard os resultados eram escritos nos registradores para depois
serem lidos)
• Loads e Stores tratados como UFs com RSs
• Instruções de inteiros podem ser executadas após desvios (branches)
UFs para Loads e Stores
DAP Spr.‘98 ©UCB 10
Renomeação de Registradores
Registradores são renomeados nas estações de reserva
Evita conflitos WAR, WAW
DIV.D
ADD.D
S.D
SUB.D
MUL.D
F0, F2, F4
F6, F0, F8
F6, 0(R1)
F8, F10, F14
F6, F10, F8
RENOMEAÇÃO:
DIV.D
ADD.D
S.D
SUB.D
MUL.D
F0, F2, F4
S, F0, F8
S, 0(R1)
T, F10, F14
F6, F10, T
DAP Spr.‘98 ©UCB 11
Organização de Tomasulo
DAP Spr.‘98 ©UCB 12
Componentes da Estação de Reserva
Op—operação na unidade (ex., add ou sub)
Vj, Vk—valores dos operandos fonte
– Os buffers de armazenamento (store) tem um campo do dado a ser
armazenado e um campo de endereço
– Os buffers de carga (load) tem apenas um campo de endereço
Qj, Qk— unidades funcionais/estação de reserva
produzindo os valores dos registradores fonte
– Os buffers de armazenamento tem somente Qi para indicar a unidade
funcional/estação de reserva produzindo o dado
Busy—indica se a estação de reserva está ocupada
Status de resultado do registrador — Indica qual
unidade funcional irá escrever em cada registrador.
DAP Spr.‘98 ©UCB 13
Os Três Estágios do Algoritmo de
Tomasulo
1.Emissão — a instrução da fila de instruções é emitida
com os nomes dos operandos renomeados, se tiver estação de reserva
disponível
2. Execução — realiza a execução da operação (EX)
se ambos os operandos estão prontos;
senão, aguarda o Bus de Dados Comum pelo resultado
3. Escrita do resultado — conclui a instrução (WB)
– escreve no Bus de Dados Comum para que todas as unidades à
espera possam ler o resultado:
Bus de Dados Normal: dado + destino (“go to” bus)
Bus de Dados Comum: dado + fonte (“come from” bus)
– 64 bits de dados + 4 bits de endereço fonte da Unidade Funcional
– marca a estação de reserva da instrução concluída como disponível
DAP Spr.‘98 ©UCB 14
Ex: Tomasulo Ciclo 0
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
Load1
No
LD
F2
45+
R3
Load2
No
MULTDF0
F2
F4
Load3
No
SUBD F8
F6
F2
DIVD
F0
F6
F8
F2
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
0 Add1
No
0 Add2
No
0 Add3
No
0 Mult1
No
0 Mult2
No
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
F2
F4
F6
F8
LD – 2 ciclos
SUBD – 2 ciclos
ADDD – 2 ciclos
MULT – 10 ciclos
DIVD – 40 ciclos
Address
Register result status
Clock
0
F0
F10
F12
...
F30
FU
DAP Spr.‘98 ©UCB 15
Ex: Tomasulo Ciclo 1
Instruction status
Instruction
j
k
Issue
1
Execution
Wri te
complete
Result
Busy
Address
Load1
No
Yes
34+R2
LD
F6
34+
R2
LD
F2
45+
R3
Load2
No
MULTDF0
F2
F4
Load3
No
SUBD F8
F6
F2
DIVD
F0
F6
F8
F2
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
0 Add1
No
0 Add2
No
Add3
No
0 Mult1
No
0 Mult2
No
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
F2
F4
F6
F8
Register result status
Clock
1
F0
FU
F10
F12
...
F30
Load1
DAP Spr.‘98 ©UCB 16
Ex: Tomasulo Ciclo 2
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
Address
LD
F6
34+
R2
1
Load1
Yes
34+R2
LD
F2
45+
R3
2
Load2
Yes
45+R3
MULTDF0
F2
F4
Load3
No
SUBD F8
F6
F2
DIVD
F0
F6
F8
F2
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
0 Add1
No
0 Add2
No
Add3
No
0 Mult1
No
0 Mult2
No
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
F2
F4
F6
F8
Register result status
Clock
2
F0
FU
Load2
F10
F12
...
F30
Load1
Nota: pode ter múltiplos loads em operação
DAP Spr.‘98 ©UCB 17
Ex: Tomasulo Ciclo 3
Instruction status
Instruction
j
k
Issue
Execution
Write
complete
Result
Address
Load1
Yes
34+R2
45+R3
LD
F6
34+
R2
1
LD
F2
45+
R3
2
Load2
Yes
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
DIVD
F0
F6
F8
F2
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
0 Add1
No
0 Add2
No
Add3
No
0 Mult1
Yes
0 Mult2
No
3
Busy
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
R(F4)
Load2
F4
F6
MULTD
Register result status
Clock
3
FU
F0
F2
Mult1
Load2
F8
F10
F12
...
F30
Load1
• Os nomes dos registradores são removidos (“renomeados”) nas
estações de reserva; MULT emitido
• Load1 completando: quem está esperando pelo Load1?DAP Spr.‘98 ©UCB 18
Ex: Tomasulo Ciclo 4
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
LD
F6
34+
R2
1
3
LD
F2
45+
R3
2
4
MULTDF0
F2
F4
3
SUBD F8
F6
F2
4
DIVD
F0
F6
F8
F2
F10
ADDD F6
Reservation Stations
Time
Busy
4
Load1
No
Load2
Yes
Load3
No
S1
S2
RS for j
RS for k
Busy Op
Vj
Vk
Qj
Qk
0 Add1
Yes
M(34+R2)
0 Add2
No
Add3
No
Name
0 Mult1
Yes
0 Mult2
No
SUBD
MULTD
Address
45+R3
Load2
R(F4)
Load2
F4
F6
F8
M(34+R2)
Add1
Register result status
Clock
4
FU
F0
F2
Mult1
Load2
F10
F12
...
F30
• Load2 completando: quem espera por F2?
DAP Spr.‘98 ©UCB 19
Ex: Tomasulo Ciclo 5
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
4
DIVD
F0
F6
5
F8
F2
F10
ADDD F6
Reservation Stations
Time
S1
S2
RS for j
RS for k
Busy Op
Vj
Vk
Qj
Qk
2 Add1
Yes
M(34+R2)
M(45+R3)
0 Add2
No
Add3
No
Name
SUBD
10 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
M(34+R2)
Add1
Mult2
Address
Register result status
Clock
5
FU
F0
F2
Mult1
M(45+R3)
F12
...
F30
DAP Spr.‘98 ©UCB 20
Ex: Tomasulo Ciclo 6
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
4
DIVD
F0
F6
5
F8
F2
6
F10
ADDD F6
Reservation Stations
Time
S1
S2
RS for j
RS for k
Busy Op
Vj
Vk
Qj
Qk
1 Add1
Yes
SUBD
M(34+R2)
M(45+R3)
0 Add2
Yes
ADDD
M(45+R3)
Name
Add3
Address
Add1
No
9 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
Add2
Add1
Mult2
Register result status
Clock
6
•
FU
F0
F2
Mult1
M(45+R3)
Emite ADDD
F12
...
F30
DAP Spr.‘98 ©UCB 21
Ex: Tomasulo Ciclo 7
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
4
DIVD
F0
F6
5
F8
F2
6
F10
ADDD F6
Reservation Stations
Time
7
S1
S2
RS for j
RS for k
Busy Op
Vj
Vk
Qj
Qk
0 Add1
Yes
SUBD
M(34+R2)
M(45+R3)
0 Add2
Yes
ADDD
M(45+R3)
Name
Add3
Address
Add1
No
8 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
Add2
Add1
Mult2
Register result status
Clock
7
FU
F0
F2
Mult1
M(45+R3)
F12
...
F30
• Add1 completando: quem espera pelo resultado?
DAP Spr.‘98 ©UCB 22
Ex: Tomasulo Ciclo 8
Instruction status
Instruction
j
LD
F6
34+
LD
F2
45+
MULTDF0
F2
SUBD F8
F6
DIVD F10
F0
ADDD F6
F8
Reservation Stations
Time
Name
k
R2
R3
F4
F2
F6
F2
Issue
1
2
3
4
5
6
Busy Op
Execution
complete
3
4
Wri te
Result
4
5
7
Load1
Load2
Load3
Busy
No
No
No
Address
F12
8
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
M()-M()
M(45+R3)
0 Add1
No
2 Add2
Yes
0 Add3
No
7 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Register result status
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
Add2
M()-M()
Mult2
Clock
8
FU
ADDD
F0
F2
Mult1
M(45+R3)
...
F30
DAP Spr.‘98 ©UCB 23
Ex: Tomasulo Ciclo 9
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
4
DIVD
F0
F6
5
F8
F2
6
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
7
8
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
M()–M()
M(45+R3)
0 Add1
No
1 Add2
Yes
0 Add3
No
6 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
Add2
M()–M()
Mult2
ADDD
Address
Register result status
Clock
9
FU
F0
F2
Mult1
M(45+R3)
F12
...
F30
DAP Spr.‘98 ©UCB 24
Ex: Tomasulo Ciclo 10
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
4
DIVD
F0
F6
5
F8
F2
6
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
7
8
10
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
M()–M()
M(45+R3)
0 Add1
No
0 Add2
Yes
0 Add3
No
5 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
Add2
M()–M()
Mult2
ADDD
Address
Register result status
Clock
10
FU
F0
F2
Mult1
M(45+R3)
F12
...
F30
• Add2 completando: quem espera pelo resultado?
DAP Spr.‘98 ©UCB 25
Ex: Tomasulo Ciclo 11
Instruction status
Instruction
j
LD
F6
34+
LD
F2
45+
MULTDF0
F2
SUBD F8
F6
DIVD F10
F0
ADDD F6
F8
Reservation Stations
Time
Name
k
R2
R3
F4
F2
F6
F2
Issue
1
2
3
4
5
6
Busy Op
Execution
complete
3
4
Wri te
Result
4
5
7
8
10
11
Load1
Load2
Load3
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Busy
No
No
No
Address
F12
0 Add1
No
0 Add2
No
0 Add3
No
4 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Register result status
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
(M-M)+M()
M()ŠM()
Mult2
Clock
11
•
FU
F0
F2
Mult1
M(45+R3)
Escreve resultado de ADDD
...
F30
DAP Spr.‘98 ©UCB 26
Ex: Tomasulo Ciclo 12
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
4
DIVD
F0
F6
5
F8
F2
6
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
6
7
10
11
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
0 Add1
No
0 Add2
No
0 Add3
No
3 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
(M-M)+M()
M()–M()
Mult2
Address
Register result status
Clock
12
FU
F0
F2
Mult1
M(45+R3)
• Todas as instruções rápidas já completadas
F12
...
F30
DAP Spr.‘98 ©UCB 27
Ex: Tomasulo Ciclo 13
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
4
DIVD
F0
F6
5
F8
F2
6
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
0 Add1
No
0 Add2
No
Add3
No
7
8
10
11
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
2 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
(M–M)+M()
M()–M()
Mult2
Address
Register result status
Clock
13
FU
F0
F2
Mult1
M(45+R3)
F12
...
F30
DAP Spr.‘98 ©UCB 28
Ex: Tomasulo Ciclo 14
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
Load3
No
SUBD F8
F6
F2
4
DIVD
F0
F6
5
F8
F2
6
F10
ADDD F6
Reservation Stations
Time
Name
Busy Op
7
8
10
11
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
0 Add1
No
0 Add2
No
0 Add3
No
1 Mult1
Yes
MULTD M(45+R3)
R(F4)
0 Mult2
Yes
DIVD
M(34+R2)
Mult1
F4
F6
F8
F10
(M–M)+M()
M()–M()
Mult2
Address
Register result status
Clock
14
FU
F0
F2
Mult1
M(45+R3)
F12
...
F30
DAP Spr.‘98 ©UCB 29
Ex: Tomasulo Ciclo 15
Instruction status
Execution
Instruction j
k Issue complete
LD F6 34+ R2
1
3
LD F2 45+ R3
2
4
MULTD
F0 F2
F4
3
15
SUBD
F8 F6
F2
4
7
DIVDF10 F0
F6
5
ADDD
F6 F8
F2
6
10
Reservation Stations
S1
TimeNameBusyOp
Vj
0 Add1 No
0 Add2 No
Add3 No
0 Mult1 Yes MULTD
M(45+R3)
0 Mult2 Yes DIVD
Register result status
Write
Result
4
5
Clock
F4
15
F0
F2
FU Mult1 M(45+R3)
Busy Address
Load1 No
Load2 No
Load3 No
8
11
S2
Vk
RS for j
Qj
RS for k
Qk
R(F4)
M(34+R2) Mult1
F6
F8
F10 F12 ...
F30
(M–M)+M()M()–M()Mult2
• Mult1 completando: quem espera pelo resultado?
DAP Spr.‘98 ©UCB 30
Ex: Tomasulo Ciclo 16
Instruction status
Instruction j
k Issue
LD F6 34+ R2
1
LD F2 45+ R3
2
MULTD
F0 F2
F4
3
SUBD
F8 F6
F2
4
DIVDF10 F0
F6
5
ADDD
F6 F8
F2
6
Reservation Stations
TimeNameBusyOp
0 Add1 No
0 Add2 No
Add3 No
0 Mult1 No
40 Mult2 Yes DIVD
Register result status
Execution Write
complete Result
3
4
4
5
15
16
7
8
Clock
16
F0
10
Busy Address
Load1 No
Load2 No
Load3 No
11
S1
Vj
S2
Vk
M*F4
M(34+R2)
F2
F4
FU M*F4 M(45+R3)
• Falta apenas a divisão
RS for j
Qj
RS for k
Qk
F6
F8
F10 F12 ...
F30
(M–M)+M()M()–M()Mult2
DAP Spr.‘98 ©UCB 31
Ex: Tomasulo Ciclo 55
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
15
16
Load3
No
SUBD F8
F6
F2
4
7
8
DIVD
F0
F6
5
F8
F2
6
10
11
F10
ADDD F6
Reservation Stations
Time
Name
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
DIVD
M*F4
M(34+R2)
F0
F2
F4
F6
F8
F10
M*F4
M(45+R3)
(M–M)+M()
M()–M()
Mult2
Busy Op
0 Add1
No
0 Add2
No
Add3
No
0 Mult1
No
1 Mult2
Yes
Address
Register result status
Clock
55
FU
F12
...
F30
DAP Spr.‘98 ©UCB 32
Ex: Tomasulo Ciclo 56
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
15
16
Load3
No
SUBD F8
F6
F2
4
7
8
DIVD
F0
F6
5
56
F8
F2
6
10
F10
ADDD F6
Reservation Stations
Time
Name
0 Add1
No
0 Add2
No
Add3
No
0 Mult1
No
0 Mult2
Yes
11
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
DIVD
M*F4
M(34+R2)
F0
F2
F4
F6
F8
F10
M*F4
M(45+R3)
(M–M)+M()
M()–M()
Mult2
Busy Op
Address
Register result status
Clock
56
FU
F12
...
F30
• Mult 2 completando: quem espera pelo resultado?
DAP Spr.‘98 ©UCB 33
Ex: Tomasulo Ciclo 57
Instruction status
Instruction
j
k
Issue
Execution
Wri te
complete
Result
Busy
LD
F6
34+
R2
1
3
4
Load1
No
LD
F2
45+
R3
2
4
5
Load2
No
MULTDF0
F2
F4
3
15
16
Load3
No
SUBD F8
F6
F2
4
7
8
DIVD
F0
F6
5
56
57
F8
F2
6
10
11
F10
ADDD F6
Reservation Stations
Time
Name
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
F0
F2
F4
F6
F8
F10
M*F4
M(45+R3)
(M–M)+M()
M()–M()
M*F4/M
Busy Op
0 Add1
No
0 Add2
No
Add3
No
0 Mult1
No
0 Mult2
No
Address
Register result status
Clock
57
FU
F12
...
F30
• Emissão em ordem, execução e finalização fora de
ordem
DAP Spr.‘98 ©UCB 34
Comparação com Scoreboard Ciclo 62
Instruction status
Instruction
Read
j
k
Issue
Execution Wri te
operands complete Result
LD
F6
34+
R2
1
2
3
4
LD
F2
45+
R3
5
6
7
8
MULTDF0
F2
F4
6
9
19
20
SUBD F8
F6
F2
7
9
11
12
DIVD
F0
F6
8
21
61
62
F8
F2
13
14
16
22
F10
ADDD F6
Functional unit status
Time Name
Busy
Integer
No
Mult1
No
Mult2
No
Add
No
0 Divide
No
dest
S1
S2
FU for j
FU for k
Fj?
Fk?
Op
Fi
Fj
Fk
Qj
Qk
Rj
Rk
F2
F4
F6
F8
F10
F12
...
F30
Register result status
Clock
62
F0
FU
• Porque scoreboard é mais demorado?
DAP Spr.‘98 ©UCB 35
Tomasulo v. Scoreboard
(IBM 360/91 v. CDC 6600)
(6 load, 3 store, 3 +, 2 x/÷)
(1 load/store, 1 + , 2 x, 1 ÷)
tamanho da janela: 14 instruções
5 instruções
Sem emissão no conflito estrutural
idem
WAR: por renomeação
pára a escrita
WAW: por renomeação
pára a emissão
Difunde resultados de UFs write/read de registradores
Controle: estações de reserva
scoreboard
DAP Spr.‘98 ©UCB 36
Desvantagens do Tomasulo
• Complexidade
• Muitos armazenamentos associativos (Bus de
Dados Comum) a alta velocidade
• Desempenho limitado pelo Bus de Dados
Comum
DAP Spr.‘98 ©UCB 37
Exemplo de Loop em Tomasulo
Loop: LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
• Assumir que Multiplicação leva 4 clocks
• Assumir que o primeiro load leva 8 clocks (miss no cache), o
segundo load leva 4 clocks (hit no cache) e store leva 4
clocks.
• Para ser claro, serão mostrados clocks para SUBI e BNEZ
DAP Spr.‘98 ©UCB 38
Loop Ciclo 0
Execution Wri te
Instruction status
Instruction
k
j
iterati on
Issue
complete
Busy
Result
F0
0 R1
1
Load1
No
MULTDF4
F0 F2
1
Load2
No
SD
F4
0 R1
1
Load3
No
LD
F0
0 R1
2
Store1
No
MULTDF4
F0 F2
2
Store2
No
F4
0 R1
2
Store3
No
LD
SD
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j RS for k
Vj
Vk
Qj
Qk
Address
Qi
Code:
F0
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
No
SUBI
R1
0 Mult2
No
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
0
F0
R1
80
F2
F4
F6
F8
F10 F12 ... F30
Qi
DAP Spr.‘98 ©UCB 39
Loop Ciclo 1
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
F0
0 R1
1
MULTDF4
F0 F2
Issue
complete
Result
1
Busy
Load1
Yes
1
Load2
No
SD
F4
0 R1
1
Load3
No
LD
F0
0 R1
2
Store1
No
MULTDF4
F0 F2
2
Store2
No
0 R1
2
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Address
80
Qi
Code:
0 Add1
No
LD
F0
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
No
SUBI
R1
0 Mult2
No
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
1
F0
R1
80
Qi
F2
F4
F6
F8
F10 F12 ... F30
Load1
DAP Spr.‘98 ©UCB 40
Loop Ciclo 2
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
F0
0 R1
1
1
Load1
Yes
MULTDF4
F0 F2
1
2
Load2
No
SD
F4
0 R1
1
Load3
No
LD
F0
0 R1
2
Store1
No
MULTDF4
F0 F2
2
Store2
No
0 R1
2
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Address
80
Qi
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load1
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
2
F0
R1
80
Qi
F2
Load1
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 41
Loop Ciclo 3
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
F0
0 R1
1
1
Load1
Yes
MULTDF4
F0 F2
1
2
Load2
No
3
Load3
No
SD
F4
0 R1
1
LD
F0
0 R1
2
Store1
Yes
MULTDF4
F0 F2
2
Store2
No
0 R1
2
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Address
80
Qi
80
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load1
Mult1
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
3
F0
R1
80
Qi
F2
Load1
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 42
Loop Ciclo 4
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
F0
0 R1
1
1
Load1
Yes
MULTDF4
F0 F2
1
2
Load2
No
3
Load3
No
SD
F4
0 R1
1
LD
F0
0 R1
2
Store1
Yes
MULTDF4
F0 F2
2
Store2
No
0 R1
2
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Address
80
Qi
80
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load1
Mult1
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
4
F0
R1
72
Qi
Execução de SUBI
F2
Load1
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 43
Loop Ciclo 5
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
F0
0 R1
1
1
Load1
Yes
MULTDF4
F0 F2
1
2
Load2
No
3
Load3
No
SD
F4
0 R1
1
LD
F0
0 R1
2
Store1
Yes
MULTDF4
F0 F2
2
Store2
No
0 R1
2
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Address
80
Qi
80
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load1
Mult1
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
5
F0
R1
72
Qi
Execução de BNEZ
F2
Load1
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 44
Loop Ciclo 6
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
Address
F0
0 R1
1
1
Load1
Yes
80
MULTDF4
F0 F2
1
2
Load2
Yes
72
SD
F4
0 R1
1
3
Load3
No
LD
F0
0 R1
2
6
Store1
Yes
MULTDF4
F0 F2
2
Store2
No
0 R1
2
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Qi
80
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load1
Mult1
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
6
F0
R1
72
Qi
F2
Load2
F4
F6
F8
F10 F12 ... F30
Mult1
• F0 não vê resultado de Load1
DAP Spr.‘98 ©UCB 45
Loop Ciclo 7
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
Address
F0
0 R1
1
1
Load1
Yes
80
MULTDF4
F0 F2
1
2
Load2
Yes
72
SD
F4
0 R1
1
3
Load3
No
LD
F0
0 R1
2
6
Store1
Yes
MULTDF4
F0 F2
2
7
Store2
No
0 R1
2
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Qi
80
Mult1
Code:
0 Add1
No
LD
F0
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
MULTD
R(F2)
Load1
SUBI
R1
0 Mult2
Yes
MULTD
R(F2)
Load2
BNEZ R1
F4
F6
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
7
F0
R1
72
Qi
F2
Load2
F8
F10 F12 ... F30
Mult2
DAP Spr.‘98 ©UCB 46
Loop Ciclo 8
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
Address
F0
0 R1
1
1
Load1
Yes
80
MULTDF4
F0 F2
1
2
Load2
Yes
72
SD
F4
0 R1
1
3
Load3
No
LD
F0
0 R1
2
6
Store1
Yes
80
Mult1
MULTDF4
F0 F2
2
7
Store2
Yes
72
Mult2
0 R1
2
8
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Qi
Code:
0 Add1
No
LD
F0
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
MULTD
R(F2)
Load1
SUBI
R1
0 Mult2
Yes
MULTD
R(F2)
Load2
BNEZ R1
F4
F6
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
8
F0
R1
72
Qi
F2
Load2
F8
F10 F12 ... F30
Mult2
DAP Spr.‘98 ©UCB 47
Loop Ciclo 9
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
F0
0 R1
1
1
MULTDF4
F0 F2
1
complete
Result
9
Busy
Address
Load1
Yes
80
2
Load2
Yes
72
SD
F4
0 R1
1
3
Load3
No
LD
F0
0 R1
2
6
Store1
Yes
80
Mult1
MULTDF4
F0 F2
2
7
Store2
Yes
72
Mult2
0 R1
2
8
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Qi
Code:
0 Add1
No
LD
F0
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
MULTD
R(F2)
Load1
SUBI
R1
0 Mult2
Yes
MULTD
R(F2)
Load2
BNEZ R1
F4
F6
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
9
F0
R1
64
Qi
F2
Load2
F8
F10 F12 ... F30
Mult2
• Load1 completando: quem espera o resultado?
DAP Spr.‘98 ©UCB 48
Loop Ciclo 10
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
F0
0 R1
1
1
MULTDF4
F0 F2
1
complete
Result
9
10
Busy
Load1
No
2
Load2
Yes
Load3
No
Store1
Yes
80
Mult1
72
Mult2
SD
F4
0 R1
1
3
LD
F0
0 R1
2
6
MULTDF4
F0 F2
2
7
Store2
Yes
0 R1
2
8
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
Address
10
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
72
Qi
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
4 Mult1
Yes
MULTD
SUBI
R1
0 Mult2
Yes
MULTD
M(80)
R(F2)
R(F2)
Load2
F4
F6
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
10
64
F0
Qi
F2
Load2
F8
F10 F12 ... F30
Mult2
• Load2 completando: quem espera o resultado?DAP Spr.‘98 ©UCB 49
Loop Ciclo 11
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
F0
0 R1
1
1
MULTDF4
F0 F2
1
complete
Result
9
10
Busy
Load1
No
2
Load2
No
Load3
Yes
64
Qi
Store1
Yes
80
Mult1
72
Mult2
SD
F4
0 R1
1
3
LD
F0
0 R1
2
6
MULTDF4
F0 F2
2
7
Store2
Yes
0 R1
2
8
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
Address
10
11
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Code:
0 Add1
No
LD
F0
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
3 Mult1
Yes
MULTD
M(80)
R(F2)
SUBI
R1
4 Mult2
Yes
MULTD
M(72)
R(F2)
BNEZ R1
F0
F2
F4
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
11
64
Qi
Load3
F6
F8
F10 F12 ... F30
Mult2
DAP Spr.‘98 ©UCB 50
Loop Ciclo 12
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
F0
0 R1
1
1
MULTDF4
F0 F2
1
complete
Result
9
10
Busy
Load1
No
2
Load2
No
Load3
Yes
64
Qi
Store1
Yes
80
Mult1
72
Mult2
SD
F4
0 R1
1
3
LD
F0
0 R1
2
6
MULTDF4
F0 F2
2
7
Store2
Yes
0 R1
2
8
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
Address
10
11
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Code:
0 Add1
No
LD
F0
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
2 Mult1
Yes
MULTD
M(80)
R(F2)
SUBI
R1
3 Mult2
Yes
MULTD
M(72)
R(F2)
BNEZ R1
F0
F2
F4
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
12
64
Qi
Load3
F6
F8
F10 F12 ... F30
Mult2
DAP Spr.‘98 ©UCB 51
Loop Ciclo 13
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
F0
0 R1
1
1
MULTDF4
F0 F2
1
complete
Result
9
10
Busy
Load1
No
2
Load2
No
Load3
Yes
64
Qi
Store1
Yes
80
Mult1
72
Mult2
SD
F4
0 R1
1
3
LD
F0
0 R1
2
6
MULTDF4
F0 F2
2
7
Store2
Yes
0 R1
2
8
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
Address
10
11
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Code:
0 Add1
No
LD
F0
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
1 Mult1
Yes
MULTD
M(80)
R(F2)
SUBI
R1
2 Mult2
Yes
MULTD
M(72)
R(F2)
BNEZ R1
F0
F2
F4
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
13
64
Qi
Load3
F6
F8
F10 F12 ... F30
Mult2
DAP Spr.‘98 ©UCB 52
Loop Ciclo 14
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
F0
0 R1
1
1
9
MULTDF4
F0 F2
1
2
14
Result
10
Busy
Load1
No
Load2
No
Load3
Yes
64
Qi
Store1
Yes
80
Mult1
72
Mult2
SD
F4
0 R1
1
3
LD
F0
0 R1
2
6
MULTDF4
F0 F2
2
7
Store2
Yes
0 R1
2
8
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
10
11
Address
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Code:
0 Add1
No
LD
F0
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
MULTD
M(80)
R(F2)
SUBI
R1
1 Mult2
Yes
MULTD
M(72)
R(F2)
BNEZ R1
F0
F2
F4
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
14
64
Qi
Load3
F6
F8
F10 F12 ... F30
Mult2
DAP Spr.‘98 ©UCB 53
• Mult1 completando: quem espera pelo resultado?
Loop Ciclo 15
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
Address
F0
0 R1
1
1
9
10
Load1
No
MULTDF4
F0 F2
1
2
14
15
Load2
No
Load3
Yes
64
Qi
Store1
Yes
80
M(80)*R(F2)
Store2
Yes
72
Mult2
Store3
No
SD
F4
0 R1
1
3
LD
F0
0 R1
2
6
10
MULTDF4
F0 F2
2
7
15
0 R1
2
8
SD
F4
Reservation Stations
Time Name
Busy Op
11
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
No
SUBI
R1
0 Mult2
Yes
MULTD
M(72)
R(F2)
F0
F2
F4
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
15
64
Qi
Load3
F6
F8
F10 F12 ... F30
Mult2
• Mult2 completando: quem espera o resultado? DAP Spr.‘98 ©UCB 54
Loop Ciclo 16
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
Address
F0
0 R1
1
1
9
10
Load1
No
MULTDF4
F0 F2
1
2
14
15
Load2
No
Load3
Yes
64
Qi
SD
F4
0 R1
1
3
LD
F0
0 R1
2
6
10
11
Store1
Yes
80
M(80)*R(F2)
MULTDF4
F0 F2
2
7
15
16
Store2
Yes
72
M(72)*R(72)
0 R1
2
8
Store3
No
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load3
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
16
64
F0
Qi
F2
Load3
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 55
Loop Ciclo 17
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
Address
F0
0 R1
1
1
9
10
Load1
No
MULTDF4
F0 F2
1
2
14
15
Load2
No
Load3
Yes
64
Qi
SD
F4
0 R1
1
3
LD
F0
0 R1
2
6
10
11
Store1
Yes
80
M(80)*R(F2)
MULTDF4
F0 F2
2
7
15
16
Store2
Yes
72
M(72)*R(72)
0 R1
2
8
Store3
Yes
64
Mult1
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load3
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
17
64
F0
Qi
F2
Load3
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 56
Loop Ciclo 18
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
Address
F0
0 R1
1
1
9
10
Load1
No
MULTDF4
F0 F2
1
2
14
15
Load2
No
Load3
Yes
64
Qi
SD
F4
0 R1
1
3
18
LD
F0
0 R1
2
6
10
11
Store1
Yes
80
M(80)*R(F2)
MULTDF4
F0 F2
2
7
15
16
Store2
Yes
72
M(72)*R(72)
0 R1
2
8
Store3
Yes
64
Mult1
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load3
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
18
56
F0
Qi
F2
Load3
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 57
Loop Ciclo 19
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
F0
0 R1
1
1
9
10
Load1
No
MULTDF4
F0 F2
1
2
14
15
Load2
No
SD
F4
0 R1
1
3
18
19
Load3
Yes
LD
F0
0 R1
2
6
10
11
Store1
No
MULTDF4
F0 F2
2
7
15
16
Store2
0 R1
2
8
Store3
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Address
64
Qi
Yes
72
M(72)*R(72)
Yes
64
Mult1
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load3
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
19
56
F0
Qi
F2
Load3
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 58
Loop Ciclo 20
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
F0
0 R1
1
1
9
10
Load1
No
MULTDF4
F0 F2
1
2
14
15
Load2
No
SD
F4
0 R1
1
3
18
19
Load3
Yes
LD
F0
0 R1
2
6
10
11
Store1
No
MULTDF4
F0 F2
2
7
15
16
Store2
0 R1
2
8
20
Store3
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Address
64
Qi
Yes
72
M(72)*R(72)
Yes
64
Mult1
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load3
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
20
56
F0
Qi
F2
Load3
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 59
Loop Ciclo 21
Instruction status
Instruction
LD
Execution Wri te
j
k
iterati on
Issue
complete
Result
Busy
F0
0 R1
1
1
9
10
Load1
No
MULTDF4
F0 F2
1
2
14
15
Load2
No
SD
F4
0 R1
1
3
18
19
Load3
Yes
LD
F0
0 R1
2
6
10
11
Store1
No
MULTDF4
F0 F2
2
7
15
16
Store2
No
0 R1
2
8
20
21
Store3
Yes
SD
F4
Reservation Stations
Time Name
Busy Op
S1
S2
RS for j
RS for k
Vj
Vk
Qj
Qk
Address
64
Qi
64
Mult1
Code:
0 Add1
No
LD
0 Add2
No
MULTDF4
0 Add3
No
SD
F4
0 Mult1
Yes
SUBI
R1
0 Mult2
No
MULTD
R(F2)
Load3
F0
BNEZ R1
0 R1
F0
F2
0 R1
R1
#8
Loop
Register result status
Clock
R1
21
56
F0
Qi
F2
Load3
F4
F6
F8
F10 F12 ... F30
Mult1
DAP Spr.‘98 ©UCB 60
Suporte de HW para mais Paralelismo
(emissão simultânea de mais de uma instrução)
• Buffer para resultados de
instruções antes da
conclusão: reorder buffer
Contem: 3 campos: instr, destino,
valor
• pode servir de fonte de operandos:
– fornece operandos executados
porém não concluídos para RS
– É possível não concluir instruções
especulativas, como de desvios
ou de exceções
– Na conclusão das instruções, os
resultados são escritos nos
registradores
– Instruções são concluídas em ordem
DAP Spr.‘98 ©UCB 61
Quatro Passos do Algoritmo de
Tomasulo Especulativo
1. Emissão — obtem instrução da fila de instruções
Se uma RS e um slot do reorder buffer livres, emite instrução e envia
operandos para RS se disponíveis nos registradores ou no reorder buffer.
O número do slot alocado do reorder buffer também é enviado para a RS.
2. Execução— execução da operação (EX)
Se ambos os operandos estiverem prontos executa, senão aguarda pelo
CDB pelo resultado
3. Escreve o resultado — termina a execução (WB)
Escreve no Bus de Dados Comum para todas as UFs em espera e no
reorder buffer; marca a RS como disponível.
4. Conclusão—atualiza o registrador com o resultado do reorder buffer
Quando instr. no topo do reorder buffer obtem o seu resultado, atualiza
registrador com o resultado (ou armazena na memória) e remove instr do
reorder buffer. Desvios errôneos limpam o reorder buffer
DAP Spr.‘98 ©UCB 62
Download

Ex: Tomasulo Ciclo 1