+ All Categories
Home > Documents > 1 1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof....

1 1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof....

Date post: 07-Apr-2016
Category:
Upload: david-espirito-santo-cordeiro
View: 218 times
Download: 0 times
Share this document with a friend
44
1 1998 Morgan Kaufmann Publishers ulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte [email protected] www.ic.unicamp.br/~ducatte MC542 Organização de Computadores Teoria e Prática
Transcript
Page 1: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

11998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

2006Prof. Paulo Cesar Centoducatte

[email protected]/~ducatte

MC542

Organização de ComputadoresTeoria e Prática

Page 2: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

21998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

“Computer Organization and Design: The Hardware/Software Interface” (Capítulo

6)

MC542

Arquitetura de Computadores

Processador MIPS Pipeline (continuação)

Page 3: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

31998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Sumário• Dependências

– Soluçãopor Softwarwe– Solução por Hardware

• Forwarding• Condições para determinar se há Hazard de dados• Datapath sem Forwarding• Datapath com Forwarding• Detecção e Controle de Hazard• Datapath Modificado para Fowarding• Exemplo de Execução de instruções com Forwarding

Page 4: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

41998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Dependências

• Problema com iniciar a execução de uma instrução antes do término da anterior

– Exemplo: Instruções com dependências

sub $2, $1, $3 # reg $2 modificadoand $12, $2, $5 # valor (1º operando) de $2

# depende do subor $13, $6, $2 # idem (2º operando)add $14, $2, $2 # idem (1º e 2º operando)sw $15, 100($2) # idem (base do endereçamento)

Page 5: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

51998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

IM Reg

IM Reg

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Time (in clock cycles)

sub $2, $1, $3

Programexecutionorder(in instructions)

and $12, $2, $5

IM Reg DM Reg

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20

or $13, $6, $2

add $14, $2, $2

sw $15, 100($2)

Value of register $2:

DM Reg

Reg

Reg

Reg

DM

Se a escrita no banco de registradores é feita no 1o semi-cicloe a leitura no 2o, em CC5 não há hazard.

Page 6: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

61998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Solução por Software

• Compilador garante um código sem Hazard inserindo nops– Onde inserir os nops?

sub $2, $1, $3and $12, $2, $5or $13, $6, $2add $14, $2, $2sw $15, 100($2)

sub $2, $1, $3nopnopand $12, $2, $5or $13, $6, $2add $14, $2, $2sw $15, 100($2)

Problema: reduz o desempenho

Page 7: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

71998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Solução por Hardware

• Usar o resultado assim que calculado, não esperar que ele seja escrito.

• Neste caso é necessário mecanismo para detectar o hazard. Qual a condição para que haja hazard?

Quando uma instrução tenta ler um registrador (estágio EX) e esse registrador será escrito poruma instrução anterior no estágio WB

Page 8: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

81998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Forwarding

O que ocorre se $13 no lugar de $2

IM Reg

IM Reg

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Time (in clock cycles)

sub $2, $1, $3

Programexecution order(in instructions)

and $12, $2, $5

IM Reg DM Reg

I M DM Reg

I M DM Reg

CC 7 CC 8 CC 9

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20

or $13, $6, $2

add $14, $2, $2

sw $15, 100($2)

Value of register $2 :

DM Reg

Reg

Reg

Reg

X X X – 20 X X X X XValue of EX/MEM :X X X X – 20 X X X XValue of MEM/WB :

DM

Page 9: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

91998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Condições que determinam Hazards de dados

• EX/MEM

– EX/MEM.RegisterRd = ID/EX.RegisterRs

– EX/MEM.RegisterRd = ID/EX.RegisterRt

• MEM/WB

– MEM/WB.RegisterRd = ID/EX.RegisterRs

– MEM/WB.RegisterRd = ID/EX.RegisterRt

Page 10: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

101998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

• Exemplo:

– sub–and: EX/MEM.RegisterRd = ID/EX.RegisterRs = $2

– sub-or: MEM/WB.RegisterRd = ID/EX.RegisterRt = $2

– sub-add: não tem hazard– sub-sw: não tem hazard

sub $2, $1, $3 # reg $2 modificadoand $12, $2, $5 # valor de $2 depende do subor $13, $6, $2 # idem (2º operando)add $14,$2, $2 # idem (1º e 2º operandos)sw $15, 100($2) # idem (base do endereçamento)

Condições que determinam Hazards de dados

Page 11: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

111998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

• Esta não é uma política precisa, pois existem instruções que não escrevem no register file.– solução seria verificar o sinal RegWrite

MIPS usa $0 para operandos de valor 0. Para instruções onde $0 é destino? sll $0, $1, 2

valor diferente de zero nos regs de pipeline add $3, $0, $2

se houver fowarding, $3 terá valor errado no fim da instrução add

Para isto temos que incluir as condições EX/MEM.registerRd <> 0 (1º hazard) MEM/WB.registerRd <> 0 (2º hazard)

Condições que determinam Hazards de dados

Page 12: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

121998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Datapath sem Forwarding

Registers

Mux M

ux

ALU

ID/EX MEM/WB

Datamemory

Mux

Forwardingunit

EX/MEM

b. With forwarding

ForwardB

Rd EX/MEM.RegisterRd

MEM/WB.RegisterRd

RtRtRs

ForwardA

Mux

ALU

ID/EX MEM/WB

Datamemory

EX/MEM

a. No forwarding

Registers

Mux

Page 13: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

131998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Datapath com Forwarding ( para add, sub, and e or )

Registers

Mux M

ux

ALU

ID/EX MEM/WB

Datamemory

Mux

Forwardingunit

EX/MEM

b. With forwarding

ForwardB

RdEX/MEM.RegisterRd

MEM/WB.RegisterRd

RtRtRs

ForwardA

Mux

ALU

ID/EX MEM/WB

Datamemory

EX/MEM

a. No forwarding

Registers

Mux

Page 14: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

141998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Valores dos Sinais ForwardA e ForwardB

Mux Control Source ExplanaçãoForwardA = 00 ID/EX Primeiro operando da ULA

register fileForwardA = 10 EX/MEM Primeiro operando da ULA

resultado anteiror da ULAForwardA = 01 MEM/WB Primeiro operando da ULA é

antecipado da memória de dadosou um resultado anterior da ULA

ForwardB = 00 ID/EX Segundo operando da ULA register file

ForwardB = 10 EX/MEM Segundo operando da ULA resultado anteiror da ULA

ForwardB = 01 MEM/WB Segundo operando da ULA éantecipado da memória de dadosou um resultado anterior da ULA

Page 15: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

151998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Detecção e Controle de Hazard

O controle de fowarding será no estágio EX, pois é neste estágio que se encontram os multiplexadores de fowarding da ULA. Portanto devemos passar o número do registrador operando do estágio ID via registrador de pipeline ID/EX adicionar campo rs (bits 25-21).

Page 16: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

161998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Condições para Detecção de HazardEX hazard if (EX/MEM.RegWrite and (EX/MEM.RegisterRd <> 0 ) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) FowardA = 10 if (EX/MEM.RegWrite and (EX/MEM.RegisterRd <> 0 ) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) FowardB = 10

MEM hazard if (MEM/WB.RegWrite and (MEM/WB.RegisterRd <> 0 )

and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) FowardA = 01

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd <> 0 ) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) FowardB = 01

Page 17: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

171998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Observações:

• Não existe data hazard no estágio WB, pois estamos assumindo que o register file supre o resultado correto se a instrução no estágio ID é o mesmo registrador escrito pela instrução no estágio WB forwarding no register file

– Na 1a edição do livro P&H tem hazard

Page 18: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

181998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Observações:

• Um data hazard potencial pode ocorrer entre o resultado de uma instrução em WB, o resultado de uma instrução em MEM e o operando fonte da instrução no estágio da ULA

• Neste caso o resultado é antecipado do estágio MEM porque o resultado neste estágio é mais recente

add $1, $1, $2add $1, $1, $3add $1, $1, $4

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd <> 0 ) and (EX/MEM.RegisterRd <> ID/EX.registerRs)and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) FowardA = 01

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd <> 0 ) and (EX/MEM.RegisterRd <> ID/EX.registerRt)and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) FowardB = 01

Page 19: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

191998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Datapath Modificado para Fowarding

PC Instructionmemory

Registers

Mux

Mux

Control

ALU

EX

M

WB

M

WB

WB

ID/EX

EX/MEM

MEM/WB

Datamemory

Mux

Forwardingunit

IF/ID

Inst

ruct

ion

Mux

RdEX/MEM.RegisterRd

MEM/WB.RegisterRd

Rt

Rt

Rs

IF/ID.RegisterRd

IF/ID.RegisterRt

IF/ID.RegisterRt

IF/ID.RegisterRs

Page 20: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

201998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Forwarding

PC Instructionmemory

Registers

Mux

Mux

Mux

EX

M

WB

WB

Datamemory

Mux

Forwardingunit

Inst

ruct

ion

IF/ID

and $4, $2, $5 sub $2, $1, $3

ID/EX

before<1>

EX/MEM

before<2>

MEM/WB

or $4, $4, $2

Clock 3

2

5

10 10

$2

$5

52

4

$1

$3

31

2

Control

ALU

PC Instructionmemory

Registers

Mux

Mux

Mux

EX

M

WB

M

WB

Datamemory

Mux

Forwardingunit

Inst

ruct

ion

IF/ID

or $4, $4, $2 and $4, $2, $5

ID/EX

sub $2, . . .

EX/MEM

before<1>

MEM/WB

add $9, $4, $2

Clock 4

4

6

10 10

$4

$2

62

4

$2

$5

52

4

Control

ALU

10

2

WB

M

WB

sub $2, $1, $3and $4, $2, $5or $4, $4, $2add $9, $4, $2

Page 21: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

211998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Forwarding

PC Instructionmemory

Registers

Mux

Mux

Mux

EX

M

WB

WB

Datamemory

Mux

Forwardingunit

Inst

ruct

ion

IF/ID

and $4, $2, $5 sub $2, $1, $3

ID/EX

before<1>

EX/MEM

before<2>

MEM/WB

or $4, $4, $2

Clock 3

2

5

10 10

$2

$5

52

4

$1

$3

31

2

Control

ALU

PC Instructionmemory

Registers

Mux

Mux

Mux

EX

M

WB

M

WB

Datamemory

Mux

Forwardingunit

Inst

ruct

ion

IF/ID

or $4, $4, $2 and $4, $2, $5

ID/EX

sub $2, . . .

EX/MEM

before<1>

MEM/WB

add $9, $4, $2

Clock 4

4

6

10 10

$4

$2

62

4

$2

$5

52

4

Control

ALU

10

2

WB

M

WB

sub $2, $1, $3and $4, $2, $5or $4, $4, $2add $9, $4, $2

Page 22: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

221998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Forwarding

PC Instructionmemory

Registers

Mux

Mux

Mux

EX

M

WB

M

WB

Datamemory

Mux

Forwardingunit

Inst

ruct

ion

IF/ID

add $9, $4, $2 or $4, $4, $2

ID/EX

and $4, . . .

EX/MEM

sub $2, . . .

MEM/WB

after<1>

Clock 5

4

2

10 10

$4

$2

24

9

$4

$2

4

2

24

Control

ALU

10

WB

2

1

PC Instructionmemory

Mux

Mux

Mux

EX

M

WB

M

WB

Datamemory

Mux

Forwardingunit

after<1>after<2> add $9, $4, $2 or $4, . . .

EX/MEM

and $4, . . .

MEM/WB

Clock 6

10

$4

$2

24

9

ALU

10

4

4

WB

4

1

Registers

Inst

ruct

ion

IF/ID

ID/EX

4

Control

sub $2, $1, $3and $4, $2, $5or $4, $4, $2add $9, $4, $2

Page 23: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

231998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Forwarding

PC Instructionmemory

Registers

Mux

Mux

Mux

EX

M

WB

M

WB

Datamemory

Mux

Forwardingunit

Inst

ruct

ion

IF/ID

add $9, $4, $2 or $4, $4, $2

ID/EX

and $4, . . .

EX/MEM

sub $2, . . .

MEM/WB

after<1>

Clock 5

4

2

10 10

$4

$2

24

9

$4

$2

4

2

24

Control

ALU

10

WB

2

1

PC Instructionmemory

Mux

Mux

Mux

EX

M

WB

M

WB

Datamemory

Mux

Forwardingunit

after<1>after<2> add $9, $4, $2 or $4, . . .

EX/MEM

and $4, . . .

MEM/WB

Clock 6

10

$4

$2

24

9

ALU

10

4

4

WB

4

1

Registers

Inst

ruct

ion

IF/ID

ID/EX

4

Control

sub $2, $1, $3and $4, $2, $5or $4, $4, $2add $9, $4, $2

Page 24: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

241998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Forwarding: Datapath para Entrada Signed-imediate Necessária para lw e sw

ALUSrcRegisters

Mux

Mux

Mux

ALU

ID/EX MEM/WB

Datamemory

Mux

Forwardingunit

EX/MEM

Mux

Page 25: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

251998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Data Hazard e Stalls

Reg

IM

Reg

Reg

IM

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Time (in clock cycles)

lw $2, 20($1)

Programexecutionorder(in instructions)

and $4, $2, $5

IM Reg DM Reg

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9

or $8, $2, $6

add $9, $4, $2

slt $1, $6, $7

DM Reg

Reg

Reg

DM

Page 26: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

261998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Data Hazards e Stalls Quando uma instrução tenta ler um registrador

precedida por uma instrução de load, que escreve no mesmo registrador o dado tem que ser mantido (ciclo 4) enquanto a ULA executa a operação atrasar o pipeline para que a instrução leia o valor correto.

Condição de detecção de hazard para atraso no pipeline# testa se é um load:

if (ID/EX.MemRead and

# verifica se registrador destino da instrução load em EX é o registrador fonte da instrução em ID:

((ID/EX.RegisterRt = IF/ID.RegisterRs) or ( ID/EX.RegisterRt = IF/ID.RegisterRt))) stall pipeline

Page 27: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

271998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Data Hazards e Stalls

lw $2, 20($1)

Programexecutionorder(in instructions)

and $4, $2, $5

or $8, $2, $6

add $9, $4, $2

slt $1, $6, $7

Reg

IM

Reg

Reg

IM DM

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6Time (in clock cycles)

IM Reg DM RegIM

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9 CC 10

DM Reg

RegReg

Reg

bubble

Page 28: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

281998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Data Hazards e Stalls

Se a instrução no estágio ID é atrasada, a instrução no estágio IF também deve ser atrasada

Como fazer? Impedir a mudança no PC e no registrador IF/IF. A instrução em IF continua sendo lida e em ID continuam sendo lido os mesmos campos da instrução.

Stall pipeline: mesmo efeito da instrução nop começando pelo estágio EX desativar os 9 sinais de controle dos estágios EX, MEM e WB

Page 29: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

291998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Datapath com forwarding e data hazard detection

PC Instructionmemory

Registers

Mux

Mux

Mux

Control

ALU

EX

M

WB

M

WB

WB

ID/EX

EX/MEM

MEM/WB

Datamemory

Mux

Hazarddetection

unit

Forwardingunit

0

Mux

IF/ID

Inst

ruct

ion

ID/EX.MemRead

IF/ID

Writ

e

PC

Writ

e

ID/EX.RegisterRt

IF/ID.RegisterRd

IF/ID.RegisterRtIF/ID.RegisterRt

IF/ID.RegisterRs

RtRs

Rd

Rt EX/MEM.RegisterRd

MEM/WB.RegisterRd

Page 30: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

301998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Seqüência de Execução do Exemplo Anterior

Page 31: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

311998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Seqüência de Execução do Exemplo Anterior

Page 32: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

321998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Seqüência de Execução do Exemplo Anterior

Page 33: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

331998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Seqüência de Execução do Exemplo Anterior

Page 34: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

341998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Seqüência de Execução do Exemplo Anterior

Page 35: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

351998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Seqüência de Execução do Exemplo Anterior

Page 36: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

361998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Branch Hazards

• Devemos ter um fetch de instrução por ciclo de clock, decisão: qual caminho de um branch deve ocorrer até o estágio MEM.

Reg

Reg

CC 1

Time (in clock cycles)

40 beq $1, $3, 7

Programexecutionorder(in instructions)

IM Reg

IM DM

IM DM

IM DM

DM

DM Reg

Reg Reg

Reg

Reg

RegIM

44 and $12, $2, $5

48 or $13, $6, $2

52 add $14, $2, $2

72 lw $4, 50($7)

CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9

Reg

Page 37: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

371998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Branch Hazards

• Tês esquemas para resolver control hazard : • Branch-delay Slots

• Assume Branch Not Taken • Dynamic Branch Prediction

• Assume Branch Not Taken • continua a execução seqüencialmente e se o branch for tomado, descarta as instruções entre a instrução de branch e a instrução no endereço alvo, fazendo seus sinais de controle iguais a zero

Page 38: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

381998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Branch Hazards Redução do atraso de branches

reduzir o custo se o branch for tomado

adiantar a execução de uma instrução de branch.

O next PC para uma instrução de branch é selecionado no estágio MEM executar o branch no estágio ID (apenas uma instrução será descartada)

deslocar o cálculo do endereço de branch (branch adder) do MEM para o ID e comparando os registradores lidos do register file.

Page 39: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

391998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Branch Hazards

PC Instructionmemory

4

Registers

Mux

Mux

Mux

ALU

EX

M

WB

M

WB

WB

ID/EX

0

EX/MEM

MEM/WB

Datamemory

Mux

Hazarddetection

unit

Forwardingunit

IF.Flush

IF/ID

Signextend

Control

Mux

=

Shiftleft 2

Mux

Page 40: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

401998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Branch Hazards (exemplo)

36 sub $10, $4, $840 beq $1, $3, 7 # PC 40 + 4 +7*4 = 7244 and $12, $2, $5

48 or $13, $2, $652 add $14, $4, $256 slt $15, $6, $7.... ................ ............72 lw $4, 50($7)

Page 41: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

411998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Branch Hazards (exemplo)

Page 42: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

421998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Branch Hazards (exemplo)

Page 43: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

431998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Dymanic Branch Prediction

Branch not taken

forma de branch predicton que assume que o branch não será tomado.

Dymanic Branch Prediction

descobre se o branch foi tomado ou não na última vez

que foi executado e faz o fetch das instruções pelo

mesmo local da última vez.

Page 44: 1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br ducatte.

441998 Morgan Kaufmann PublishersPaulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2

Dymanic Branch Prediction

Implementação branch prediction buffer branch history table

Branch prediction buffer: pequena memória indexada por bits menos significativos do endereço da instrução de branch. Ela contém um bit que diz se o branch foi recentemente tomado ou não (Neste esquema não sabemos se a previsão é correta ou não, pois este buffer pode ser alterado por outra instrução de branch que tem os mesmos bits menos significativos de endereço).


Recommended