Organização e Arquitetura de Computadoresrjacobi/ensino/OAC/pipe.pdfOrganização e Arquitetura de...
Transcript of Organização e Arquitetura de Computadoresrjacobi/ensino/OAC/pipe.pdfOrganização e Arquitetura de...
Universidade de BrasUniversidade de Brasíílialia
PipeliningOrganizaOrganizaçãção e Arquitetura deo e Arquitetura de
ComputadoresComputadores
Objetivo
n Apresentar a utilização de uma técnicapara aumento de desempenho dearquiteturas de processadores:
n Pipeline :n O que facilita o pipeline:
n Todas instruções têm o mesmo comprimento.
n Poucos formatos de instruções.
n Operandos em memória só aparecem em loads estores.
Objetivo
n Pipeline :n O que complica (hazards):
n Propriedades estruturais: memória única, p.ex..
n Controle de fluxo: instruções de desvio.
n Dependências (de dados): uma instruçãodepende do resultado de outra anterior.
Montagem de uma Bicicleta
tempo
1 2 3 4 5
uma pessoa leva 5 unidades de tempo para montar uma bicicleta
Linha de Montagem (pipeline)
tempo/ espaço
1 2 3 4 5
Linha de Montagem (pipeline)
tempo/ espaço
1 2 3 4 5
Linha de Montagem (pipeline)
n A latência do pipeline é o tempo que umabicicleta leva para ser montada
n Neste exemplo, a latência é 5 unidades de tempo
n A taxa de produção (ou vazão) do pipeline é deuma bicicleta por unidade de tempo
n O pipeline só começa a produzir nessa taxa umavez que linha esteja cheia
n Primeira bicicleta produzida em 5 UTn Após a primeira, o pipe produz uma bicicleta por
UT
Balanceamento do Pipeline
n Suponha que a operação Montagem da RodaTrazeira requeira duas unidades de tempo
n Uma unidade para montar a correia
n Uma unidade para montar a roda
n O que ocorre com a latência do pipeline ?
n O que ocorre com a vazão ?
n Como otimizar o pipeline neste caso ?
Balanceamento do Pipelinen O pipeline não funciona se as tarefas não requerem o
mesmo tempon Se uma tarefa leva 2 UT, todas tem que trabalhar
neste períodon Latência do pipeline seria 10 UTn Vazão seria uma bicicleta / 2 UT
n Dividindo a tarefa em duas subtarefas de 1 UT cada,teríamos:
n Latência de 6 UTn Vazão de 1 Bici / UT
Pipelining em Hardware
n Pipelining é uma técnica de projeto onde ohardware processa mais de uma instruçãode cada vez sem esperar que umainstrução termine antes de começar apróxima.
Pipelining
n Numa máquina sem pipeline os quatroestágios básicos de uma instruçãocompreendem:
n busca
n decodificação
n execução
n atualização
Pipelining
n Os mesmos estágios existem numamáquina com pipeline, porém sãoexecutados em paralelo: assim que umestágio termina, passa o resultado para opróximo e começa a trabalhar a próximainstrução.
Pipelining
n Num projeto de pipeline RISC típico, cadainstrução toma um ciclo de clock para cadaestágio de modo que o processador podeaceitar uma nova instrução a cada ciclo declock.
Pipelining
n O pipeline não alivia o tempo de latênciadas instruções. Cada instrução continuanecessitando da mesma quantidade detempo para ser terminada.
n O pipeline melhora o throughput global.
Contém somente:• instruções de referência à memória: lw,sw• instruções aritméticas/lógicas: add,sub,and,or,slt• instruções de controle de fluxo: beq,j
Exemplo: arquitetura MIPS
Jumpdresstarget adopFormato J
Transferência, desvios, imediatoiatess/immedaddrertrsopFormato I
Instruções aritméticasfunctshamtrdrtrsopFormato R
Todas instruções têm 32 bits6 bits5 bits5 bits5 bits5 bits6 bitsTamanho
ComentáriosposCamNome
MIPS Uniciclo
AL
UPCPC Endereço Instrução
Memória deinstruções
Dados
Registro #
Registro #
Registro #
Registros
Endereços
Dados
Memóriade dados
Busca de Instruções
PCPC Endereço Instrução
Memória deinstruções
Ad
d
4
Instruções do Tipo-R
ALU
WriteData
ReadReg1
ReadReg2
WriteReg
Registros
Instrução
Readdata1
Readdata2
Zero
result
RegWrite
3 Operação da UAL
Instruções load e store
ALU
WriteData
ReadReg1
ReadReg2
WriteReg
Registros
Instrução
Readdata1
Readdata2
Zero
result
RegWrite
3 Operação da UAL
Endereços
WriteData
Memóriade dados
Extensãode sinal
Extensãode sinal
16 32
MemWrite
MemRead
Readdata
Instruções de desvio
ALU
WriteData
ReadReg1
ReadReg2
WriteReg
Registros
InstruçãoReaddata1
Readdata2
Zero
RegWrite
3 Operação da UAL
Extensãode sinal
Extensãode sinal
16 32
Add
Shiftleft 2
Shiftleft 2
branch control logic
endereço de desvio
PC + 4
Juntando as partes
ALU
WriteData
ReadReg1
ReadReg2
WriteReg
Registros
Readdata1
Readdata2
Zero
RegWrite
3 Operação da UAL
Extensãode sinal
Extensãode sinal
16 32
Add
Shiftleft 2
Shiftleft 2
PCPC
EndereçoInstrução
Memória deinstruções
Ad
d
4
Endereços
WriteData
Memória dedados
MemWrite
MemRead
ReaddataM
UX
MUX
MUX
MUX
MUX
MUX
PCSrc
ALUSrc
MemtoReg
ControleControle
Branch
MUX
MUX
ALU
WriteData
ReadReg1
ReadReg2
WriteReg
Registros
Readdata1
Readdata2
Zero
RegWrite
Extensãode sinal
Extensãode sinal
16 32
Add
PCPC Endereço
Instrução
Memória deinstruções
Ad
d
4
Endereços
WriteData
Memória dedados
MemWrite
MemRead
ReaddataM
UX
MUX M
UX
MUX
MUX
MUX
PCSrcALUSrc
MemtoReg
ALUcontrol
ALUcontrol
ALUOp
RegDst
[15 - 0]
[15 - 11]
[20 - 16]
[25 - 21]
[31 - 26]
[31 - 0]
Incluindo controle
[5 - 0]
Shiftleft 2
Shiftleft 2
MIPS: Projetado para Pipeline
n Todas instruções de mesmo comprimento.n Busca no primeiro estágio, execução no segundo.
No 80x86 instruções de 1 a 17 bytes.n Poucos formatos de instruções, com o campo do
registro de origem na mesma posição em todasinstruções.
n O segundo estágio pode ler o registro ao mesmotempo que decodifica a instrução.
MIPS: Projetado para Pipeline
n Operandos na memória só aparecem nas instruçõesload e store. O estágio de execução pode serutilizado para calcular um endereço de memória, paraser acessado no próximo estágio.
n Operandos alinhados na memória. Facilitatransferência de dados que ocupam mais de umendereço.
Pipeline na arquitetura MIPS
n As instruções do processador MIPS necessitamcinco etapas:
1. Busca instrução na memória2. Lê registros e decodifica instrução3. Executa operação ou calcula endereço4. Acessa operando na memória (de dados)5. Escreve o resultado num registron Pode ser utilizado um pipeline de cinco
estágios
Classe de instrução Busca de instrução
Leitura registro
Operação da ULA
Acesso a dado
Escrita registro
Tempo total
Load word (lw) 2 ns 1 ns 2 ns 2 ns 1 ns 8 ns Store word (sw) 2 ns 1 ns 2 ns 2 ns 7 ns R-format (add, sub, and, or, slt) 2 ns 1 ns 2 ns 1 ns 6 ns Branch (beq) 2 ns 1 ns 2 ns 5 ns Jump (j) 2 ns 2 ns
Tempo de execução dasInstruções
24% loads
12% stores
44% tipo R
18% branches
2% jumps
Ciclomédio = 8x24% + 7x12% + 6x44% + 5x18% + 2x2% = 6.3 ns
Desempenho = 8/6.3 = 1.27
Execução sem pipeline
Busca deinstrução RegUAL Acesso
a dadosReglw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
Busca deinstrução RegUAL Acesso
a dadosReg
Busca deinstrução
Tempo 2 4 6 8 10 12 14 16 18
8 ns
8 ns
8 ns
...
Execução com pipeline
Tempo 2 4 6 8 10 12 14
Busca deinstrução
RegUAL Acessoa dados
Reglw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
Busca deinstrução
RegUAL Acessoa dados
Reg
Busca deinstrução
2 ns 2 ns 2 ns
RegUAL Acessoa dados
Reg
2 ns 2 ns 2 ns 2 ns
.
.
.
Melhora o desempenho com o aumento dothroughput de instruções.
Controle do pipeline
n Temos 5 estágios. O que deve ser controladoem cada estágio?
n IF: Instruction Fetch e PC Incrementn ID: Instruction Decode / Register Fetchn EX: Executionn MEM: Memory Stagen WB: Write Back
Idéia básica. Fluxo de dados
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Instruction
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
ReaddataAddress
Datamemory
1
ALUresult
Mux
ALUZero
IF: Instruction Fetch ID: Instruction decode /register file read
EX: Execute /Address Calculation
MEM: Memory Access
WB: Write Back
Fluxo de dados e registrospipeline
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
1
ALUresult
Mux
ALUZero
ID/EX
Datamemory
Address
Busca de instrução
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
1
ALUresult
Mux
ALUZero
ID/EX
Datamemory
Address
Decodificação/leitura de registros
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
1
ALUresult
Mux
ALUZero
ID/EX
Datamemory
Address
Execução/cálculo de endereço
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
1
ALUresult
Mux
ALUZero
ID/EX
Datamemory
Address
Acesso à memória
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
1
ALUresult
Mux
ALUZero
ID/EX
Datamemory
Address
Write back
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
1
ALUresult
Mux
ALUZero
ID/EX
Datamemory
Address
Controle do Pipeline
PC
Instructionmemory
Address
Ins t
ruct
ion
Instruction[20– 16]
MemtoReg
ALUOp
Branch
RegDst
ALUSrc
4
16 32Instruction[15– 0]
0
0Registers
Writeregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux
1Write
data
Read
data Mux
1
ALUcontrol
RegWrite
MemRead
Instruction[15– 11]
6
IF/ID ID/EX EX/MEM MEM/WB
MemWrite
Address
Datamemory
PCSrc
Zero
AddAdd
result
Shiftleft 2
ALUresult
ALU
Zero
Add
0
1
Mux
0
1
Mux
Controle do pipeline
n Os registradores do pipeline não necessitamsinais de controle, pois são carregados acada ciclo de clock
n Como deveria ser feito o controle numafábrica de automóveis?
n uma central imaginária dizendo a cada um o que deve serfeito?
n deveríamos utilizar uma máquina de estados finitos?
Controle do Pipelinen Sinais de controle são transmitidos da mesma forma que os dados
Execution/Address Calculation stage control lines
Memory access stage control lines
Write-back stage control
lines
InstructionReg Dst
ALU Op1
ALU Op0
ALU Src Branch
Mem Read
Mem Write
Reg write
Mem to Reg
R-format 1 1 0 0 0 0 0 1 0lw 0 0 0 1 0 1 0 1 1sw X 0 0 1 0 0 1 0 Xbeq X 0 1 0 1 0 0 0 X
Control
EX
M
WB
M
WB
WB
IF/ID ID/EX EX/MEM MEM/WB
Instruction
Fluxo de dados com controle
P C
In s tru c tio n
m e m ory
Ins
tru
cti o
nAd d
In st ru c tio n[2 0– 1 6]
Me
mto
Re
g
A L U O p
B r an ch
R e g D s t
A L U S rc
4
16 3 2In st ru c tion[1 5 – 0 ]
0
0
Mux
0
1
A ddA d d
re su lt
R eg iste rsW ritere g is ter
W rited a ta
R ea dd ata 1
R ea dd ata 2
R e adre g is ter 1
R e adre g is ter 2
S ig nex ten d
Mux
1
A L Ure su l t
Z e ro
W rited a ta
R e a dd ata
Mux
1
A LUco n tr o l
S h ift
le ft 2
Re
gW
rit e
M e m R e ad
C o n tro l
A L U
In st ru ctio n[1 5– 1 1]
6
E X
M
W B
M
W B
W BIF /ID
P C S rc
ID /E X
E X /M E M
M E M /W B
Mux
0
1
Me
mW
rite
A dd re ss
D a ta
m e m o ry
A d d re ss
Simplificando
RegMD
RegMI
UL
Aadd $s0, $t0, $t1
IF ID EX MEM WB
Execução com pipeline
Reg MD RegMI
UL
A
RegMD
RegMIU
LA
RegMD
RegMI
UL
A
CC1 CC2 CC3 CC4 CC5 CC6 CC7
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
Desempenho.O que pode dar errado.
n Um processador com pipeline pode pausarpor várias razões, incluindo atrasos naleitura da memória, conjunto de instruçõesmal projetado, dependência entreinstruções, ...
Dependência de Dados(Hazards)
Dependência de dados:Instruções que seguemsub utilizam o registrador$2, cujo valor éproduzido pela instruçãosub
.
.sub $2, $1, $3and $12, $2, $5or $13, $6, $2add $14, $2, $2sw $15, 100($2)
.
.
Dependência de Dados
Reg MD RegMI
UL
A
Reg MD RegMI
UL
A
Reg MD RegMI
UL
A
Reg MD RegMI
UL
A
Reg MD RegMI
UL
A CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9
Valor do registro $2 10 10 10 10 10/-20 -20 -20 -20 -20
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
Solução por Software
n O compilador pode detectar a ocorrência de hazardde dados e introduzir NOPs (no operation) ou re-escalonar as instruções
sub $2, $1, $3
nop
nop
nop
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
Escalonamento de Instruções
n Um rearranjo das instruções no programa, chamadoescalonamento de instruções, pode resolver esta pendência.
...ld r2, Iadd r2, r2, #123st r2, Ild r3, Jsub r3, r3, #567st r3, J ...
...ld r2, Ild r3, Jadd r2, r2, #123sub r3, r3, #567 st r2, Ist r3, J...
Hardware: Congelar o pipe(stall ou bolha)
n A unidade de controle do processador pode detectar aocorrência de conflitos e congelar execução de novasinstruções até que o conflito seja resolvido
n O congelamento pode ser feito colocando-se em zero ossinais de controle que acompanham os dados no pipeline
0
WB
M
EX
Control Mux
Introdução de bolhasn As bolhas interrompem a execução dos estágios
sub $s0, $t1, $t2
bolhas
add $t2, $s0, $t3
Tempo
RegMD
RegMI
UL
A
RegMD
RegMI
UL
A
2 4 6 8 10 14
Deteção de Conflitos
n Comparar índices dos registradores a serem lidose escritos, armazenados nos registradores dopipeline:
n IF/ID.ReadRegister1 # registradores a seremn IF/ID.ReadRegister2 # lidosn ID/EX.WriteRegistern EX/MEM.WriteRegistern MEM/WB.WriteRegister
n Deve-se comparar igualmente se a instruçãoescreve em um registrador (RegWrite = 1)
Unidade de Deteção de Hazard
MU
X
Hazard Detection
Unit
Control
WB
M
EX
RegistersPC
InstructionMemory
0
DataMemory M
UX
WB
WB
M
MUX
Deteção de Conflitos
n EX hazard:ID/EX.RegWrite and((ID/EX.RegDst = 0 andID/EX.WriteRegisterRt=IF/ID.ReadRegister1) or
(ID/EX.RegDst = 1 andID/EX.WriteRegisterRd=IF/ID.ReadRegister1) or
(ID/EX.RegDst = 0 andID/EX.WriteRegisterRt=IF/ID.ReadRegister2) or
(ID/EX.RegDst = 1 andID/EX.WriteRegisterRd=IF/ID.ReadRegister2))
n MEM hazard:EX/MEM.RegWrite and((EX/MEM.WriteRegister = IF/ID.ReadRegister1) or(EX/MEM.WriteRegister = IF/ID.ReadRegister2))
Introdução de Bolhas
Reg
MD Reg
MI
Re g
MD Reg
MI
Re g
MD Re g
MI
Re g
MD Re g
MI
Reg
MD Reg
MI
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
• As bolhas atrasam a execução das instruções seguintes
Exemplo
n Considere a seguinte sequência:sub $2, $1, $3
and $4, $2, $5
or $8, $2, $6
add $9, $4, $2
slt $1, $6, $7
n Quantos conflitos existem e quantas bolhas sãogeradas ?
Terceiro Ciclo
MU
X
Hazard Detection
Unit
Control
WB
M
EX
RegistersPC
InstructionMemory
0
DataMemory M
UX
WB
WB
M
MUX
or $8, $2, $6 and $4, $2, $5 sub $2, $1, $3
2
ID/EX.RegWrite0
0
0
Quinto Ciclo
MU
X
Hazard Detection
Unit
Control
WB
M
EX
RegistersPC
InstructionMemory
0
DataMemory M
UX
WB
WB
M
MUX
and $4, $2, $5 bolha bolha sub $2, $1, $3MEM/WB.RegWrite
0
0
0
2
Stall
n Como toda a arquitetura permaneceociosa durante as pausas, tanto osprojetistas quanto os programadores desistemas RISC fazem um esforçoconsciente para evitá-las
Data Hazard: Adiantamento deDados (Forwarding)
RegMD
RegMI
UL
A
RegMD
RegMI
UL
A
add $s0, $t1, $t1
sub $t2, $s0, $t3
Tempo 2 4 6 8 10
Adiantamento de Dados.
Tempo (em ciclos)
CC 1
10 10 10 10 10/– 20 – 20 – 20 – 20 – 20X X X – 20 X X X X XValor de EX/MEM:X X X X – 20 X X X X
IM Reg
IM Reg
sub $2, $1, $3
and $12, $2, $5
IM Reg DM Reg
IM DM Reg
IM DM Reg
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
DM Reg
Reg
Reg
Reg
DM
Valor do registro $2:
Valor de MEM/WB:
CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
Forwarding: Controle
PCInstruction
memory
Registers
Mux
Mux
Control
ALU
EX
M
M WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Forwardingunit
IF/ID
Inst
ruct
ion
Mux
RdEX/MEM.RegisterRdRt
Rt
RsIF/ID.RegisterRs
WB
WB
MEM/WB.RegisterRd
IF/ID.RegisterRtIF/ID.RegisterRt
IF/ID.RegisterRd
Exemplo
n Considere a mesma sequência:sub $2, $1, $3
and $4, $2, $5
or $8, $2, $6
add $9, $4, $2
slt $1, $6, $7
n Como fica com adiantamento de dados ?
Terceiro Ciclo
PCInstruction
memory
Registers
Mux
Mux
Control
ALU
EX
M
M WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Forwardingunit
IF/ID
Inst
ruct
ion
Mux
2EX/MEM.RegisterRd
3
1IF/ID.RegisterRs
WB
WB
MEM/WB.RegisterRd
IF/ID.RegisterRtIF/ID.RegisterRt
IF/ID.RegisterRd
sub $2, $1, $3and $4, $2, $5or $8, $2, $6
$1
$3
25
4
Quarto Ciclo
PCInstruction
memory
Registers
Mux
Mux
Control
ALU
EX
M
M WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Forwardingunit
IF/ID
Inst
ruct
ion
Mux
4EX/MEM.RegisterRd
5
2IF/ID.RegisterRs
WB
WB
MEM/WB.RegisterRd
IF/ID.RegisterRtIF/ID.RegisterRt
IF/ID.RegisterRd
sub $2, $1, $3and $4, $2, $5or $8, $2, $6
$2
$5
26
8
add $9, $4, $2
2
$2
Quinto Ciclo
PCInstruction
memory
Registers
Mux
Mux
Control
ALU
EX
M
M WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Forwardingunit
IF/ID
Inst
ruct
ion
Mux
8EX/MEM.RegisterRd
6
2IF/ID.RegisterRs
WB
WB
MEM/WB.RegisterRd
IF/ID.RegisterRtIF/ID.RegisterRt
IF/ID.RegisterRd
sub $2, $1, $3and $4, $2, $5or $8, $2, $6
$2
$6
42
9
add $9, $4, $2
4
slt $1, $6, $7
2
Sexto Ciclo
PCInstruction
memory
Registers
Mux
Mux
Control
ALU
EX
M
M WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Forwardingunit
IF/ID
Inst
ruct
ion
Mux
9EX/MEM.RegisterRd
2
4IF/ID.RegisterRs
WB
WB
MEM/WB.RegisterRd
IF/ID.RegisterRtIF/ID.RegisterRt
IF/ID.RegisterRd
and $4, $2, $5or $8, $2, $6
$4
$2
67
1
add $9, $4, $2
8
slt $1, $6, $7
4
Conflitos no Adiantamento
n Load word pode causar um atraso:n Uma instrução tenta ler um registro após um load que
escreve no mesmo registro.
n É preciso uma unidade de detecção de hazard paraatrasar a instrução pós load.
Conflitos no Adiantamento
Reg
IM
Reg
Reg
IM DM
IM Reg DM RegIM
IM DM Reg
IM DM Reg
DM Reg
RegReg
Reg
bubble
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
Tempo (ciclos)CC 10
lw $2 20($1)
and $4, $2, $5
or $8, $2, $6
add $9, $4, $2
slt $1, $6, $7
Hazard detection unit
PC
Mux
Mux
Mux
Control
ALU
EX
M
WB
M
WB
WB
ID/EX
EX/MEM
MEM/WB
Mux
Hazarddetection
unit
Forwardingunit
0
Mux
IF/ID
ID/EX.MemRead
IF/ID
Writ
e
PC
Writ
e
ID/EX.RegisterRtRtRs
Rd
Rt
IF/ID.RegisterRsIF/ID.RegisterRtIF/ID.RegisterRtIF/ID.RegisterRd
EX/MEM.RegisterRd
MEM/WB.RegisterRd
Instructionmemory
RegistersData
memory
Inst
ruct
ion
Branch hazards
n Quando é decidido um desvio, outras instruções estão no pipeline.
Reg
Reg
40 beq $1, $3, $7 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)
Reg
Tempo (em ciclos)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
Opção: Congelar Pipe
add $4, $5, $6
beq $1, $2, 40
lw $3, 300($0)
2 ns 6 ns 2 ns
Busca deinstrução RegUAL Acesso
a dadosReg
Busca deinstrução RegUAL Acesso
a dadosReg
Busca deinstrução RegUAL Acesso
a dadosReg
2 ns 2 ns 2 ns 2 ns...
n Uma opção é sempre congelar o pipeline quando se encontra umainstrução de salto condicional, esperando o resultado da comparação
n Problema: piora o desempenho do pipeline
Previsão de Salto
n Uma melhor alternativa é fazer umaprevisão de salto
n Caso a previsão esteja correta, não háperda no pipeline
n Caso a previsão esteja incorreta, asinstrução seguintes ao salto devem serdescartadas (descarga do pipeline)
Técnicas de Previsão de Desvio
n desvio nunca será realizado
n desvio sempre será realizado
n desvio depedente do código da operação
n desvio dependente do histórico da instruçãon implementado com o auxílio de uma tabela de histórico
de desvios
n armazena endereço da instrução, endereço do desvioe estado
Outras Técnicas
n múltiplos fluxosn ambas alternativas são executadas simultaneamente
n busca antecipada de instruçõesn pré-carga das instruções no end. de desvio
n memória de laço de repetição (loop buffer)n armazena internamente as instruções executadas mais
recentemente
n atraso de desvio (delayed branch)n permitir a execução de algumas instruções
imediatamente após a instrução de desvion implica no reordenamento de instruções
q Processador sempre executa instrução seguinte
q Compilador deve reordenar as instruções ou inserir nop
Tempo 2 4 6 8 10 12 14
Busca deinstrução RegUAL Acesso
a dadosRegbeq $1, $2, 40
add $4, $5, $6
lw $3, 300($0)
Busca deinstrução RegUAL Acesso
a dadosReg
Busca deinstrução
2 ns 2 ns 2 ns
RegUAL Acessoa dadosReg
2 ns 2 ns 2 ns 2 ns...
(Delayed branch slot )
Atraso de Desvio
Descarga do Pipeline
PCInstruction
memory
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
q A velocidade máxima de uma máquina com pipelineé de uma instrução por ciclo de clock.
Acelerando máquinas compipeline
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 CC10 CC11 CC12
q Duas técnicas para iniciar múltiplasinstruções por ciclo de clock:
q arquiteturas superpipeline
q arquiteturas superescalares.
Acelerando máquinascom pipeline
q A arquitetura Superpipeline subdivide cadaestágio do pipeline em subestágios e multiplica oclock internamente.
q Cada (sub)estágio continua executando umainstrução por clock. Mas como o clock interno émultiplicado, o pipeline pode aceitar duas ou maisinstruções para cada clock externo.
Acelerando máquinas compipeline: o superpipeline
Superpipeline
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
q A arquitetura superescalar contémmúltiplas unidades de execução que sãocapazes de fazer a mesma coisa.
q Isto permite ao processador executarvárias instruções similaresconcorrentemente, pelo roteamento dasinstruções às unidades de execuçãodisponíveis.
Acelerando máquinas compipeline: a superescalar
Pipeline superescalar
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
Superpipeline superescalar
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
Execução dinâmica:escalonamento.
n O hardware executa o escalonamento
n O hardware tenta encontrar instruções para executar
n É possível a execução de instruções for a de ordem
n Execução especulativa e predição dinâmica de desvios.
n Todos processadores modernos são bastante complicados
n Compaq/DEC Alpha 21264: 9 estágios de pipeline, 6 instruction issue
n PowerPC e Pentium: tabela de histórico de desvios
n O papel do compilador é muito importante.
n Este curso serve de base para avançar no assunto.
n Overview of Intel’s Pentium Processors: http://www.intel.com
Referências
Patterson, D. A., Hennessy, J. L., (1998)Computer Organization and Design: TheHardware/Software Interface. Morgan Kaufmann.http:/www.mkp.com/cod2e.htm/
Leitura recomendada
n Tanenbaum, A.S., (1990) Organizaçãoestruturada de computadores. Cap 4.
n 4.5 {4.5.4}