1998 Morgan Kaufmann Publishers Ch8-1 Capítulo 8 Sistemas I/O.
1 1998 Morgan Kaufmann Publishers MIPS PIPELINE. 2 1998 Morgan Kaufmann Publishers MULTICICLO x...
Transcript of 1 1998 Morgan Kaufmann Publishers MIPS PIPELINE. 2 1998 Morgan Kaufmann Publishers MULTICICLO x...
11998 Morgan Kaufmann Publishers
MIPS
PIPELINE
21998 Morgan Kaufmann Publishers
MULTICICLO x PIPELINE
• Pipeline: vários estágios funcionam simultaneamente, para intruções diferentes.
• Multiciclo: as operações são divididas em vários estágios (S)que funcionam sequencialmente.
ATIVO no ciclo 2
S1 S2 Sn
Latc
h Latc
h Latc
h
INATIVO no ciclo 2 INATIVO no ciclo 2
Latc
h Latc
h Latc
h
S1 S2 Sn
instrução k instrução k - 1 instrução k – (n -1)
31998 Morgan Kaufmann Publishers
Pipeline: é natural!
• Exemplo de Lavanderia
• Tem-se os volumes A, B, C e D de roupas para lavar, secar e passar
• A lavadora leva 30 minutos
• A secadora leva 40 minutos
• “Passadeira” leva 20 minutos
A B C D
41998 Morgan Kaufmann Publishers
Lavanderia Sequencial
• A lavanderia sequencial leva 6 horas para 4 volumes
• Se usarem o “pipeline”, quanto tempo levaria?
A
B
C
D
30 40 20 30 40 20 30 40 20 30 40 20
6 7 8 9 10 11 Meia noite
Task
Order
Tempo
51998 Morgan Kaufmann Publishers
Lavanderia em Pipeline
• Lavanderia em Pipeline leva 3.5 horas
A
B
C
D
6 7 8 9 10 11 Meia noite
ordem
Tempo
30 40 40 40 40 20
61998 Morgan Kaufmann Publishers
Lições sobre o Pipeline
• O Pipeline ajuda melhorar o throughput de um trabalho por completo
• A taxa do Pipeline é limitada pelo estágio mais lento
• Speedup ideal = Número de estágios
• Comprimentos desbalanceados dos estágios do pipeline reduzem o speedup
• O tempo para “preencher” o pipeline e o tempo para “limpar” o pipeline reduzem o speedup
A
B
C
D
6 7 8 9
ordem
Tempo
30 40 40 40 40 20
71998 Morgan Kaufmann Publishers
Pipelines em Computadores
• Executa bilhões de instruções, tal que o importante seja o throughout
• Speedup: para um programa de n instruções, num computador pipeline de k estágios, relativo a um computador multiciclo de k ciclos, considerando mesmo tempo de ciclo.
Tempo do multiciclo = n . k .tempociclo Tempo do pipeline = (k + n-1).tempociclo
Speedup = tempo do multiciclo/tempo do pipeline
Para n grande, speedup ~ k
.
1
n kSpeedup
k n
81998 Morgan Kaufmann Publishers
Pipeline no MIPS
multiciclo
pipeline
91998 Morgan Kaufmann Publishers
Implementação do Pipeline
• O que facilita:
– Todas as instruções com mesmo comprimento
– Somente poucos formatos de instruções
– Os operandos de memória aparecem somente em loads e stores
• O que difículta:
– conflitos estruturais: supor que temos somente uma memória
– conflitos de controle: preocupar com instruções de branch
– conflitos de dados: uma instrução depende de uma instrução prévia
– Manipulação de exceções
– Melhorar o desempenho com execução fora-de-ordem, etc.
101998 Morgan Kaufmann Publishers
Idéia Básica
MEM.INSTR.
REGS.
ALU
SOMADOR
MEM.DADOS
SOMADOR
111998 Morgan Kaufmann Publishers
Fluxo de dados com latch’s entre os estágios
IF/ID ID/EX EX/MEM MEM/WB
PC
Mem.Instr.
Regist.
ALU
Mem.dados
somador
somador
121998 Morgan Kaufmann Publishers
Pipelines representados graficamente
IM Reg DM Reg
IM Reg DM Reg
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
Time (in clock cycles)
lw $10, 20($1)
Programexecutionorder(in instructions)
sub $11, $2, $3
ALU
ALU
131998 Morgan Kaufmann Publishers
PCSrc
Branc
h
MemRead
MemWrite
ALUOp
ALUSrc
RegWrite
RegDst
MemtoReg
Mem.Inst.
Regs.
Mem.dados
ALUPC
CONTROLE DO PIPELINE
141998 Morgan Kaufmann Publishers
• O que necessita ser controlado em cada estágio?
– Busca de Instrução e Incremento do PC– Decodificação da Instrução / Busca de Registradores– Execução– Estágio de Memória– Write Back
• Cada estágio deve funcionar para uma determinada instrução,
simultaneamente a outros estágios.
Controle do Pipeline
151998 Morgan Kaufmann Publishers
Controle do Pipeline
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
IF/ID ID/EX EX/MEM MEM/WB
Os sinais são repassados pelos estágios como os dados
161998 Morgan Kaufmann Publishers
Branc
h
RegDst
MemWrite
Mem
Rea
d
Mem
toRe
g
RegW
rite
PCSrc
AL
UO
p
Fluxo de dados e controle
171998 Morgan Kaufmann Publishers
• Pode ocorrer iniciando uma instrução antes de terminar a anterior
• dependências que “vão retroceder no tempo” são conflitos de dados
Dependências de dados
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
181998 Morgan Kaufmann Publishers
- Atuar no caminho do banco de registr. p/ substituir o valor de leit/escrita de registrador
- Antecipação da ALU
Solução por Antecipação – usar os resultados temporários, sem esperar que eles sejam escritos
what if this $2 was $13?
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
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
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
191998 Morgan Kaufmann Publishers
Solução por Antecipação
Unidade de antecipação
201998 Morgan Kaufmann Publishers
00
01
10
00
01
10
MU
X A
MU
X B
CIRCUITO DE ANTECIPAÇÃO (FORWARDING UNIT)
=
EX
/ME
MR
eg
iste
rRd
Rs
=
EX
/ME
MR
eg
Wri
te
Rt
MUX ASA1
MUX BSB0
=
ME
M/W
BR
eg
iste
rRd
Rs
=
ME
M/W
BR
eg
Wri
te
Rt
MUX ASA0
MUX BSB1
SELEÇÃO DOMUX A
SELEÇÃO DOMUX B
211998 Morgan Kaufmann Publishers
- Se uma instrução tenta ler um registrador seguindo uma instrução de load word que escreve no mesmo registrador.
• Portanto, necessitamos que a unidade de detecção de conflitos paralize, em um ciclo, as instruções seguintes ao load word
Nem sempre é possível solucionar por antecipação (Fazer o Load de uma palavra pode causar um conflito)
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
221998 Morgan Kaufmann Publishers
Parada (Stall) manter instruções nos mesmos estágios
231998 Morgan Kaufmann Publishers
Unidade de detecção de conflitos• A parada faz com que uma instrução que não escreve nada prossiga
241998 Morgan Kaufmann Publishers
Exemplo de inserção de parada
sinais 0
251998 Morgan Kaufmann Publishers
• Quando é decidido pelo branch, outras instruções estão em pipeline!
• O pipeline equivale a previsão de “não ocorrer branch”– Solução: hardware para desprezar as instruções posteriores caso haja branch
Conflitos de Desvio (Branch)
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
261998 Morgan Kaufmann Publishers
Controle para limpar as instruções posteriores
IFFlush
além de antecipar o cálculo da condição
271998 Morgan Kaufmann Publishers
beq $1,$3,7and $12,$2,$5
Exemplo de beq e atualização do PC
Resulta em NOP
endereço 72 lw $4, 50($7)
4044
281998 Morgan Kaufmann Publishers
RESULTADO DO CONTROLE DE DESVIO
Necessidade de limpar apenas uma instrução
291998 Morgan Kaufmann Publishers
Melhorando o desempenho
• Tentar evitar paradas! P.ex., reordenar essas instruções:
lw $t0, 0($t1)lw $t2, 4($t1)sw $t2, 0($t1)sw $t0, 4($t1)
• Adicionar um “branch delay slot”
– permitindo que a próxima instrução seguida do branch seja sempre executada
– Confiar no compilador para preencher o slot com algo útil
• Processador Superescalar: iniciar mais que uma instrução no mesmo ciclo
301998 Morgan Kaufmann Publishers
MIPS superescalar
311998 Morgan Kaufmann Publishers
MIPS superescalar
Tipo de instrução
Estágios do pipeline
R ou desvio IF ID EX MEM WB
Load/store IF ID EX MEM WB
R ou desvio IF ID EX MEM WB
Load/store IF ID EX MEM WB
R ou desvio IF ID EX MEM WB
Load/store IF ID EX MEM WB
R ou desvio IF ID EX MEM WB
Load/store IF ID EX MEM WB
321998 Morgan Kaufmann Publishers
EXEMPLO
loop: lw $t0, 0 ($s1) # t0 = elemento de array add $t0, $t0,$s2 # soma o elemento do array a um valor escalar em $s2 sw $t0, 0($s1) # armazena o resultado addi $s1, $s1, -4 # decrementa o ponteiro bne $s1, $zero, loop # desvia para loop se $s1 diferente de 0
R ou desvio Load/store Ciclo de clock
loop: lw $t0, 0($s1) 1
addi $s1, $s1,-4 2
add $t0 , $t0, $s2 3
bne $s1, $zero, loop sw $t0, 4($s1) 4
O código:
pode ser escalonado para o MIPS superescalar da seguinte forma:
5 instruções em 4 ciclos
331998 Morgan Kaufmann Publishers
Desdobramento de laço (loop unrolling)
R ou desvio Load/store Ciclo
de clock
Observações
loop: addi $s1, $s1, -16 lw $t0, 0 ($s1) 1 $s1 inicial
lw $t1, 12($s1) 2 $s1 = $s1 - 16
add $t0, $t0, $s2 lw $t2, 8($s1) 3
add $t1, $t1, $s2 lw $t3, 4($s1) 4
add $t2, $t2, $s2 sw $t0, 16($s1) 5 16($s1) =
$s1 inicial
add $t3, $t3, $s2 sw $t1, 12($s1) 6
sw $t2, 8($s1) 7
bne $s1, $zero, loop sw $t3, 4($s1) 8
14 instruções em 8 ciclos
341998 Morgan Kaufmann Publishers
Escalação Dinâmica
• O hardware realiza a “escalação”
– O hardware tenta encontrar instruções para executar
– É possível execução fora de ordem
– Execução especulativa e previsão dinâmica de desvio (branch)
– DEC Alpha 21264: tem 9 estágios pipeline, 6 instruções simultâneas
– PowerPC e Pentium: tabela de história de desvio
– É importante a tecnologia do compilador
351998 Morgan Kaufmann Publishers
Escalação Dinâmica
Despacho em ordem
Execuçãofora de ordem
Escrita final do resultado em ordem
Unidadesfuncionais
361998 Morgan Kaufmann Publishers
A microarquitetura do Pentium 4