Escolar Documentos
Profissional Documentos
Cultura Documentos
PIPELINE
Latch
Latch
S1 S2 Sn
Latch
Latch
Latch
S1 S2 Sn
Exemplo de Lavanderia
Tem-se os volumes A, B, C e D de A B C D
roupas para lavar, secar e passar
A lavadora leva 30 minutos
A secadora leva 40 minutos
Passadeira leva 20 minutos
30 40 20 30 40 20 30 40 20 30 40 20
T
a A
s
k
B
O
r
d C
e
r
D
A lavanderia sequencial leva 6 horas para 4 volumes
Se usarem o pipeline, quanto tempo levaria?
1998 Morgan Kaufmann Publishers 4
Lavanderia em Pipeline
6 7 8 9 10 11 Meia noite
Tempo
30 40 40 40 40 20
o
r A
d
e
m B
D
Lavanderia em Pipeline leva 3.5 horas
1998 Morgan Kaufmann Publishers 5
Lies sobre o Pipeline
n.k
Speedup
k n 1
Para n grande, speedup ~ k
multiciclo
pipeline
O que facilita:
Todas as instrues com mesmo comprimento
Somente poucos formatos de instrues
Os operandos de memria aparecem somente em loads e stores
O que difculta:
conflitos estruturais: supor que temos somente uma memria
conflitos de controle: preocupar com instrues de branch
conflitos de dados: uma instruo depende de uma instruo
prvia
Manipulao de excees
Melhorar o desempenho com execuo fora-de-ordem, etc.
SOMADOR
REGS.
SOMADOR
MEM. ALU
INSTR. MEM.
DADOS
1998 Morgan Kaufmann Publishers 10
Fluxo de dados com latchs entre os estgios
somador Regist.
PC
ALU
Mem.
Instr.
Mem.
dados
1998 Morgan Kaufmann Publishers 11
Pipelines representados graficamente
Branch
RegWrite
Regs. Mem
ALUSrc Read Mem
toReg
PC ALU
Mem.
Inst. Mem. Mem
dados Write
ALUOp
RegDst
1998 Morgan Kaufmann Publishers 13
Controle do Pipeline
RegWrite
Branch
MemRead
MemtoReg
ALUOp MemWrite
RegDst
1998 Morgan Kaufmann Publishers 16
Dependncias de dados
Pode ocorrer iniciando uma instruo antes de terminar a anterior
dependncias que vo retroceder no tempo so conflitos de dados
Time (in clock cycles)
Value of CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
register $2: 10 10 10 10 10/ 20 20 20 20 20
Program
execution
order
(in instructions)
sub $2, $1, $3 IM Reg DM Reg
Program
execution order
(in instructions)
sub $2, $1, $3 IM Reg DM Reg
Unidade de antecipao
1998 Morgan Kaufmann Publishers 19
CIRCUITO DE ANTECIPAO (FORWARDING UNIT)
MUX A
00
01
MEM/WBRegWrite
EX/MEMRegWrite
MEM/WBRegisterRd
EX/MEMRegisterRd
10
MUX B
00
01
10
Rs
Rs
Rt
Rt
= = = =
SELEO DO SELEO DO
MUX A MUX B
sinais 0
IFFlush
endereo 72
lw $4, 50($7)
lw $t0, 0($t1)
lw $t2, 4($t1)
sw $t2, 0($t1)
sw $t0, 4($t1)
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
O cdigo:
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
5 instrues em 4 ciclos
1998 Morgan Kaufmann Publishers 32
Desdobramento de lao (loop unrolling)
sw $t2, 8($s1) 7
14 instrues em 8 ciclos
1998 Morgan Kaufmann Publishers 33
Escalao Dinmica
Despacho em ordem
Unidades
funcionais Execuo
fora de ordem