escalação dinâmica algorítmo de tomasulo

62
DAP Spr.‘98 ©UCB 1 Escalação Dinâmica Algorítmo de Tomasulo

Upload: delilah-contreras

Post on 14-Mar-2016

60 views

Category:

Documents


0 download

DESCRIPTION

Escalação Dinâmica Algorítmo de Tomasulo. 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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 1

Escalação Dinâmica

Algorítmo de Tomasulo

Page 2: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 2

Revisão: Três Partes do Scoreboard1.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ãoOp — operação a ser realizada pela unidade (ex., + ou –)Fi — registrador de destinoFj, Fk — número dos registradores fonteQj, Qk — unidades funcionais produzindo dados para Fj, FkRj, Rk — Flags indicando se Fj, Fk estão prontos

3.Status do registrador destino — Indica qual unidade funcional irá escrever em cada registrador.

Page 3: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 3

Exemplo de Scoreboard Ciclo 3Instruction status Read ExecutionWriteInstruction j k Issue operandscompleteResultLD F6 34+ R2 1 2 3LD F2 45+ R3MULTDF0 F2 F4SUBD F8 F6 F2DIVD F10 F0 F6ADDDF6 F8 F2Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?

Time Name Busy Op Fi Fj Fk Qj Qk Rj RkInteger Yes Load F6 R2 YesMult1 NoMult2 NoAdd NoDivide No

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

3 FU Integer

Emite MULT? Não, espera emissão do segundo LD

Page 4: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 4

Exemplo de Scoreboard Ciclo 9Instruction status Read ExecutionWriteInstruction j k Issue operandscompleteResultLD F6 34+ R2 1 2 3 4LD F2 45+ R3 5 6 7 8MULTDF0 F2 F4 6 9SUBD F8 F6 F2 7 9DIVD F10 F0 F6 8ADDDF6 F8 F2Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?

Time Name Busy Op Fi Fj Fk Qj Qk Rj RkInteger No

10 Mult1 Yes Mult F0 F2 F4 Yes YesMult2 No

2 Add Yes Sub F8 F6 F2 Yes YesDivide Yes Div F10 F0 F6 Mult1 No Yes

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

9 FU Mult1 Add Divide

• Lê operandos para MULT & SUBD? Emite ADDD?

Page 5: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 5

Exemplo de Scoreboard Ciclo 17Instruction status Read ExecutionWriteInstruction j k Issue operandscompleteResultLD F6 34+ R2 1 2 3 4LD F2 45+ R3 5 6 7 8MULTDF0 F2 F4 6 9SUBD F8 F6 F2 7 9 11 12DIVD F10 F0 F6 8ADDDF6 F8 F2 13 14 16Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?

Time Name Busy Op Fi Fj Fk Qj Qk Rj RkInteger No

2 Mult1 Yes Mult F0 F2 F4 Yes YesMult2 NoAdd Yes Add F6 F8 F2 Yes YesDivide Yes Div F10 F0 F6 Mult1 No Yes

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3017 FU Mult1 Add Divide

Escreve resultado de ADDD? Não, perigo WAR

Page 6: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 6

Exemplo de Scoreboard Ciclo 62Instruction status Read ExecutionWriteInstruction j k Issue operandscompleteResultLD F6 34+ R2 1 2 3 4LD F2 45+ R3 5 6 7 8MULTDF0 F2 F4 6 9 19 20SUBD F8 F6 F2 7 9 11 12DIVD F10 F0 F6 8 21 61 62ADDDF6 F8 F2 13 14 16 22Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?

Time Name Busy Op Fi Fj Fk Qj Qk Rj RkInteger NoMult1 NoMult2 NoAdd No

0 Divide NoRegister result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3062 FU

• Emissão em ordem; Leitura e execução fora de ordem; escrita fora de ordem, respeitando WAR

Page 7: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 7

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

Page 8: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 8

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, …

Page 9: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 9

Algoritmo Tomasulo

• Controle & buffers distribuídos nas unidades funcionais (UFs) – Buffers de UFs chamados estações de reserva (reservation

station- RS), contem operandos pendentes

SOMADOR FP3

SOMADOR FP2

SOMADOR FP1

3

2

1

Page 10: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 10

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

Page 11: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 11

Renomeação de Registradores

DIV.D F0, F2, F4ADD.D F6, F0, F8S.D F6, 0(R1)SUB.D F8, F10, F14MUL.D F6, F10, F8

RENOMEAÇÃO:

DIV.D F0, F2, F4ADD.D S, F0, F8S.D S, 0(R1)SUB.D T, F10, F14MUL.D F6, F10, T

Registradores são renomeados nas estações de reserva Evita conflitos WAR, WAW

Page 12: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 12

Organização de Tomasulo

Page 13: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 13

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.

Page 14: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 14

Os Três Estágios do Algoritmo de Tomasulo

1.Emissão — a instrução da fila de instruções é emitidacom 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

Page 15: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 15

Ex: Tomasulo Ciclo 0Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 Load1 NoLD F2 45+ R3 Load2 NoMULTDF0 F2 F4 Load3 NoSUBD F8 F6 F2DIVD F10 F0 F6ADDDF6 F8 F2Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No0 Add3 No0 Mult1 No0 Mult2 No

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

0 FU

LD – 2 ciclosSUBD – 2 ciclosADDD – 2 ciclosMULT – 10 ciclosDIVD – 40 ciclos

Page 16: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 16

Ex: Tomasulo Ciclo 1Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 Load1 No 34+R2LD F2 45+ R3 Load2 NoMULTDF0 F2 F4 Load3 NoSUBD F8 F6 F2DIVD F10 F0 F6ADDDF6 F8 F2Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No0 Mult1 No0 Mult2 No

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

1 FU Load1

Yes

Page 17: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 17

Ex: Tomasulo Ciclo 2Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 Load1 Yes 34+R2LD F2 45+ R3 2 Load2 Yes 45+R3MULTDF0 F2 F4 Load3 NoSUBD F8 F6 F2DIVD F10 F0 F6ADDDF6 F8 F2Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No0 Mult1 No0 Mult2 No

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

2 FU Load2 Load1

Nota: pode ter múltiplos loads em operação

Page 18: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 18

Ex: Tomasulo Ciclo 3Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 Load1 Yes 34+R2LD F2 45+ R3 2 Load2 Yes 45+R3MULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2DIVD F10 F0 F6ADDDF6 F8 F2Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No0 Mult1 Yes MULTD R(F4) Load20 Mult2 No

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

3 FU Mult1 Load2 Load1

• Os nomes dos registradores são removidos (“renomeados”) nas estações de reserva; MULT emitido

• Load1 completando: quem está esperando pelo Load1?

Page 19: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 19

Ex: Tomasulo Ciclo 4Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 Load2 Yes 45+R3MULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4DIVD F10 F0 F6ADDDF6 F8 F2Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 Yes SUBD M(34+R2) Load20 Add2 No

Add3 No0 Mult1 Yes MULTD R(F4) Load20 Mult2 No

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

4 FU Mult1 Load2 M(34+R2) Add1

• Load2 completando: quem espera por F2?

Page 20: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 20

Ex: Tomasulo Ciclo 5Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4DIVD F10 F0 F6 5ADDDF6 F8 F2Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk2 Add1 Yes SUBD M(34+R2) M(45+R3)0 Add2 No

Add3 No10 Mult1 Yes MULTD M(45+R3) R(F4)

0 Mult2 Yes DIVD M(34+R2) Mult1Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

5 FU Mult1 M(45+R3) M(34+R2) Add1 Mult2

Page 21: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 21

Ex: Tomasulo Ciclo 6Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4DIVD F10 F0 F6 5ADDDF6 F8 F2 6Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk1 Add1 Yes SUBD M(34+R2) M(45+R3)0 Add2 Yes ADDD M(45+R3) Add1

Add3 No9 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

6 FU Mult1 M(45+R3) Add2 Add1 Mult2

• Emite ADDD

Page 22: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 22

Ex: Tomasulo Ciclo 7Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4 7DIVD F10 F0 F6 5ADDDF6 F8 F2 6Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 Yes SUBD M(34+R2) M(45+R3)0 Add2 Yes ADDD M(45+R3) Add1

Add3 No8 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

7 FU Mult1 M(45+R3) Add2 Add1 Mult2

• Add1 completando: quem espera pelo resultado?

Page 23: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 23

Ex: Tomasulo Ciclo 8Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5ADDD F6 F8 F2 6Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No 2 Add2 Yes ADDD M()-M() M(45+R3)0 Add3 No7 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

8 FU Mult1 M(45+R3) Add2 M()-M() Mult2

Page 24: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 24

Ex: Tomasulo Ciclo 9Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5ADDDF6 F8 F2 6Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No1 Add2 Yes ADDD M()–M() M(45+R3)0 Add3 No6 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F30

9 FU Mult1 M(45+R3) Add2 M()–M() Mult2

Page 25: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 25

Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5ADDDF6 F8 F2 6 10Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 Yes ADDD M()–M() M(45+R3)0 Add3 No5 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3010 FU Mult1 M(45+R3) Add2 M()–M() Mult2

Ex: Tomasulo Ciclo 10

• Add2 completando: quem espera pelo resultado?

Page 26: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 26

Ex: Tomasulo Ciclo 11Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5ADDD F6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No0 Add3 No4 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3011 FU Mult1 M(45+R3) (M-M)+M() M()ŠM() Mult2

• Escreve resultado de ADDD

Page 27: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 27

Ex: Tomasulo Ciclo 12Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4 6 7DIVD F10 F0 F6 5ADDDF6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No0 Add3 No3 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3012 FU Mult1 M(45+R3) (M-M)+M() M()–M() Mult2

• Todas as instruções rápidas já completadas

Page 28: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 28

Ex: Tomasulo Ciclo 13Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5ADDDF6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No2 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3013 FU Mult1 M(45+R3) (M–M)+M() M()–M() Mult2

Page 29: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 29

Ex: Tomasulo Ciclo 14Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5ADDDF6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No0 Add3 No1 Mult1 Yes MULTD M(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3014 FU Mult1 M(45+R3) (M–M)+M() M()–M() Mult2

Page 30: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 30

Ex: Tomasulo Ciclo 15Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 15 Load3 NoSUBDF8 F6 F2 4 7 8DIVDF10 F0 F6 5ADDDF6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

TimeNameBusyOp Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No0 Mult1 Yes MULTDM(45+R3) R(F4)0 Mult2 Yes DIVD M(34+R2) Mult1

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3015 FU Mult1 M(45+R3) (M–M)+M()M()–M()Mult2

• Mult1 completando: quem espera pelo resultado?

Page 31: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 31

Ex: Tomasulo Ciclo 16Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 15 16 Load3 NoSUBDF8 F6 F2 4 7 8DIVDF10 F0 F6 5ADDDF6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

TimeNameBusyOp Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No0 Mult1 No

40 Mult2 Yes DIVD M*F4 M(34+R2)Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3016 FU M*F4 M(45+R3) (M–M)+M()M()–M()Mult2

• Falta apenas a divisão

Page 32: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 32

Ex: Tomasulo Ciclo 55Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 15 16 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5ADDDF6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No0 Mult1 No1 Mult2 Yes DIVD M*F4 M(34+R2)

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3055 FU M*F4 M(45+R3) (M–M)+M() M()–M() Mult2

Page 33: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 33

Ex: Tomasulo Ciclo 56Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 15 16 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5 56ADDDF6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No0 Mult1 No0 Mult2 Yes DIVD M*F4 M(34+R2)

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3056 FU M*F4 M(45+R3) (M–M)+M() M()–M() Mult2

• Mult 2 completando: quem espera pelo resultado?

Page 34: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 34

Ex: Tomasulo Ciclo 57Instruction status Execution WriteInstruction j k Issue complete Result Busy AddressLD F6 34+ R2 1 3 4 Load1 NoLD F2 45+ R3 2 4 5 Load2 NoMULTDF0 F2 F4 3 15 16 Load3 NoSUBD F8 F6 F2 4 7 8DIVD F10 F0 F6 5 56 57ADDDF6 F8 F2 6 10 11Reservation Stations S1 S2 RS for j RS for k

Time Name Busy Op Vj Vk Qj Qk0 Add1 No0 Add2 No

Add3 No0 Mult1 No0 Mult2 No

Register result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3057 FU M*F4 M(45+R3) (M–M)+M() M()–M() M*F4/M

• Emissão em ordem, execução e finalização fora de ordem

Page 35: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 35

Comparação com Scoreboard Ciclo 62Instruction status Read ExecutionWriteInstruction j k Issue operandscompleteResultLD F6 34+ R2 1 2 3 4LD F2 45+ R3 5 6 7 8MULTDF0 F2 F4 6 9 19 20SUBD F8 F6 F2 7 9 11 12DIVD F10 F0 F6 8 21 61 62ADDDF6 F8 F2 13 14 16 22Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?

Time Name Busy Op Fi Fj Fk Qj Qk Rj RkInteger NoMult1 NoMult2 NoAdd No

0 Divide NoRegister result statusClock F0 F2 F4 F6 F8 F10 F12 ... F3062 FU

• Porque scoreboard é mais demorado?

Page 36: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 36

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 escritaWAW: por renomeação pára a emissão

Difunde resultados de UFs write/read de registradoresControle: estações de reserva scoreboard

Page 37: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 37

Desvantagens do Tomasulo

• Complexidade

• Muitos armazenamentos associativos (Bus de Dados Comum) a alta velocidade

• Desempenho limitado pelo Bus de Dados Comum

Page 38: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 38

Exemplo de Loop em Tomasulo Loop: LD F0 0 R1 MULTD F4 F0 F2 SD F4 0 R1 SUBI R1 R1 #8 BNEZ R1 Loop

• 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

Page 39: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 39

Loop Ciclo 0Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 Load1 NoMULTDF4 F0 F2 1 Load2 NoSD F4 0 R1 1 Load3 No QiLD F0 0 R1 2 Store1 NoMULTDF4 F0 F2 2 Store2 NoSD F4 0 R1 2 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 No SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

0 80 Qi

Page 40: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 40

Loop Ciclo 1Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 Load1 Yes 80MULTDF4 F0 F2 1 Load2 NoSD F4 0 R1 1 Load3 No QiLD F0 0 R1 2 Store1 NoMULTDF4 F0 F2 2 Store2 NoSD F4 0 R1 2 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 No SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

1 80 Qi Load1

Page 41: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 41

Loop Ciclo 2Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 Load1 Yes 80MULTDF4 F0 F2 1 2 Load2 NoSD F4 0 R1 1 Load3 No QiLD F0 0 R1 2 Store1 NoMULTDF4 F0 F2 2 Store2 NoSD F4 0 R1 2 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load1 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

2 80 Qi Load1 Mult1

Page 42: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 42

Loop Ciclo 3Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 Load1 Yes 80MULTDF4 F0 F2 1 2 Load2 NoSD F4 0 R1 1 3 Load3 No QiLD F0 0 R1 2 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 Store2 NoSD F4 0 R1 2 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load1 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

3 80 Qi Load1 Mult1

Page 43: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 43

Loop Ciclo 4Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 Load1 Yes 80MULTDF4 F0 F2 1 2 Load2 NoSD F4 0 R1 1 3 Load3 No QiLD F0 0 R1 2 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 Store2 NoSD F4 0 R1 2 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load1 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

4 72 Qi Load1 Mult1

Execução de SUBI

Page 44: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 44

Loop Ciclo 5Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 Load1 Yes 80MULTDF4 F0 F2 1 2 Load2 NoSD F4 0 R1 1 3 Load3 No QiLD F0 0 R1 2 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 Store2 NoSD F4 0 R1 2 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load1 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

5 72 Qi Load1 Mult1

Execução de BNEZ

Page 45: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 45

Loop Ciclo 6Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 Load1 Yes 80MULTDF4 F0 F2 1 2 Load2 Yes 72SD F4 0 R1 1 3 Load3 No QiLD F0 0 R1 2 6 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 Store2 NoSD F4 0 R1 2 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load1 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

6 72 Qi Load2 Mult1

• F0 não vê resultado de Load1

Page 46: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 46

Loop Ciclo 7Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 Load1 Yes 80MULTDF4 F0 F2 1 2 Load2 Yes 72SD F4 0 R1 1 3 Load3 No QiLD F0 0 R1 2 6 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 7 Store2 NoSD F4 0 R1 2 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load1 SUBI R1 R1 #80 Mult2 Yes MULTD R(F2) Load2 BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

7 72 Qi Load2 Mult2

Page 47: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 47

Loop Ciclo 8Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 Load1 Yes 80MULTDF4 F0 F2 1 2 Load2 Yes 72SD F4 0 R1 1 3 Load3 No QiLD F0 0 R1 2 6 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 7 Store2 Yes 72 Mult2SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load1 SUBI R1 R1 #80 Mult2 Yes MULTD R(F2) Load2 BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

8 72 Qi Load2 Mult2

Page 48: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 48

Loop Ciclo 9Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 Load1 Yes 80MULTDF4 F0 F2 1 2 Load2 Yes 72SD F4 0 R1 1 3 Load3 No QiLD F0 0 R1 2 6 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 7 Store2 Yes 72 Mult2SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load1 SUBI R1 R1 #80 Mult2 Yes MULTD R(F2) Load2 BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F30

9 64 Qi Load2 Mult2

• Load1 completando: quem espera o resultado?

Page 49: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 49

Loop Ciclo 10Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 Load2 Yes 72SD F4 0 R1 1 3 Load3 No QiLD F0 0 R1 2 6 10 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 7 Store2 Yes 72 Mult2SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R14 Mult1 Yes MULTD M(80) R(F2) SUBI R1 R1 #80 Mult2 Yes MULTD R(F2) Load2 BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3010 64 Qi Load2 Mult2

• Load2 completando: quem espera o resultado?

Page 50: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 50

Loop Ciclo 11Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 Load2 NoSD F4 0 R1 1 3 Load3 Yes 64 QiLD F0 0 R1 2 6 10 11 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 7 Store2 Yes 72 Mult2SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R13 Mult1 Yes MULTD M(80) R(F2) SUBI R1 R1 #84 Mult2 Yes MULTD M(72) R(F2) BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3011 64 Qi Load3 Mult2

Page 51: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 51

Loop Ciclo 12Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 Load2 NoSD F4 0 R1 1 3 Load3 Yes 64 QiLD F0 0 R1 2 6 10 11 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 7 Store2 Yes 72 Mult2SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R12 Mult1 Yes MULTD M(80) R(F2) SUBI R1 R1 #83 Mult2 Yes MULTD M(72) R(F2) BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3012 64 Qi Load3 Mult2

Page 52: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 52

Loop Ciclo 13Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 Load2 NoSD F4 0 R1 1 3 Load3 Yes 64 QiLD F0 0 R1 2 6 10 11 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 7 Store2 Yes 72 Mult2SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R11 Mult1 Yes MULTD M(80) R(F2) SUBI R1 R1 #82 Mult2 Yes MULTD M(72) R(F2) BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3013 64 Qi Load3 Mult2

Page 53: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 53

Loop Ciclo 14Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 14 Load2 NoSD F4 0 R1 1 3 Load3 Yes 64 QiLD F0 0 R1 2 6 10 11 Store1 Yes 80 Mult1MULTDF4 F0 F2 2 7 Store2 Yes 72 Mult2SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD M(80) R(F2) SUBI R1 R1 #81 Mult2 Yes MULTD M(72) R(F2) BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3014 64 Qi Load3 Mult2

• Mult1 completando: quem espera pelo resultado?

Page 54: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 54

Loop Ciclo 15Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 14 15 Load2 NoSD F4 0 R1 1 3 Load3 Yes 64 QiLD F0 0 R1 2 6 10 11 Store1 Yes 80 M(80)*R(F2)MULTDF4 F0 F2 2 7 15 Store2 Yes 72 Mult2SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 No SUBI R1 R1 #80 Mult2 Yes MULTD M(72) R(F2) BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3015 64 Qi Load3 Mult2

• Mult2 completando: quem espera o resultado?

Page 55: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 55

Loop Ciclo 16Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 14 15 Load2 NoSD F4 0 R1 1 3 Load3 Yes 64 QiLD 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)SD F4 0 R1 2 8 Store3 NoReservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load3 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3016 64 Qi Load3 Mult1

Page 56: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 56

Loop Ciclo 17Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 14 15 Load2 NoSD F4 0 R1 1 3 Load3 Yes 64 QiLD 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)SD F4 0 R1 2 8 Store3 Yes 64 Mult1Reservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load3 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3017 64 Qi Load3 Mult1

Page 57: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 57

Loop Ciclo 18Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 14 15 Load2 NoSD F4 0 R1 1 3 18 Load3 Yes 64 QiLD 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)SD F4 0 R1 2 8 Store3 Yes 64 Mult1Reservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load3 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3018 56 Qi Load3 Mult1

Page 58: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 58

Loop Ciclo 19Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 14 15 Load2 NoSD F4 0 R1 1 3 18 19 Load3 Yes 64 QiLD F0 0 R1 2 6 10 11 Store1 NoMULTDF4 F0 F2 2 7 15 16 Store2 Yes 72 M(72)*R(72)SD F4 0 R1 2 8 Store3 Yes 64 Mult1Reservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load3 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3019 56 Qi Load3 Mult1

Page 59: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 59

Loop Ciclo 20Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 14 15 Load2 NoSD F4 0 R1 1 3 18 19 Load3 Yes 64 QiLD F0 0 R1 2 6 10 11 Store1 NoMULTDF4 F0 F2 2 7 15 16 Store2 Yes 72 M(72)*R(72)SD F4 0 R1 2 8 20 Store3 Yes 64 Mult1Reservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load3 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3020 56 Qi Load3 Mult1

Page 60: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 60

Loop Ciclo 21Instruction status ExecutionWriteInstruction j k iteration Issue completeResult Busy AddressLD F0 0 R1 1 1 9 10 Load1 NoMULTDF4 F0 F2 1 2 14 15 Load2 NoSD F4 0 R1 1 3 18 19 Load3 Yes 64 QiLD F0 0 R1 2 6 10 11 Store1 NoMULTDF4 F0 F2 2 7 15 16 Store2 NoSD F4 0 R1 2 8 20 21 Store3 Yes 64 Mult1Reservation Stations S1 S2 RS for jRS for k

Time Name Busy Op Vj Vk Qj Qk Code:0 Add1 No LD F0 0 R10 Add2 No MULTDF4 F0 F20 Add3 No SD F4 0 R10 Mult1 Yes MULTD R(F2) Load3 SUBI R1 R1 #80 Mult2 No BNEZ R1 Loop

Register result statusClock R1 F0 F2 F4 F6 F8 F10 F12... F3021 56 Qi Load3 Mult1

Page 61: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 61

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

Page 62: Escalação Dinâmica Algorítmo de Tomasulo

DAP Spr.‘98 ©UCB 62

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 resultado3. Escreve o resultado — termina a execução (WB)

Escreve no Bus de Dados Comum para todas as UFs em espera e noreorder 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