Escolar Documentos
Profissional Documentos
Cultura Documentos
30 40 20 30 40 20 30 40 20 30 40 20
T A
a
r
B
e
f
C
a
s
D
30 40 40 40 40 40
T A
a
r
B
e
f
C
a
s
D
2m 2m 2m 3m
Rodas Chassis Motor Porta
Conceito de Pipeline
• Pipeline permite a sobreposição temporal de
diversas fases de execução de instruções.
• Em outras palavras, o hardware processa
mais de uma instrução de cada vez, sem
esperar que uma instrução termine antes de
começar a seguinte
Conceito de Pipeline
• Pipeline não melhora a latência de uma
única tarefa, mas melhora a vazão de todo
trabalho.
• Tempo de execução de uma instrução é o
mesmo, com ou sem pipelining.
• Ganho começa a existir a partir da segunda
instrução.
Desempenho com e sem Pipeline
• Supondo um programa com
– N instruções
– K ciclos por instrução ou K estágios no pipeline
– Ciclos e estágios de tempo T
• Tempo de execução sem pipelining:
N
N×K×T
K K
Multiplexador
incluído no
caminho de dados
Pipeline da Unidade de
Decodificação
• Controle: Gerado noestágio 2 (decodificação),
acompanha a instrução
Projeto do Bloco Pipeline
and $0, $2, $1
Projeto do Bloco Pipeline
$1 - $3
$2 and $1
$1
Execução Pipeline
Execução Pipeline
• Vamos visualizar a execução do seguinte
trecho no MIPS pipeline
lw $10, 20($1)
sub $11, $2, $3
and $12, $4, $5
or $13, $6 $7
add $14, $8, $9
Conflitos de execução
Pipeline MIPS - Conflitos
• Conflitos
– “Situações de execução no pipeline em que a
instrução seguinte não pode ser executada no
próximo ciclo de relógio”
• Tipos de Conflitos:
– De dados
– De controle
Pipeline MIPS - Conflitos
• Conflito de dados
– A execução de uma instrução depende de um
dado de instrução anterior e o dado ainda não
está disponível
– Pior caso na instrução de LOAD (lw)
lw $2, 20($1) add $2, $20, $1
and $4, $2, $5 sub $4, $2, $5
Dependência de dados
• Considerando o código abaixo, escrito para o
MIPS
sub $s2, $s1, $s3 # registrador $s2 é escrito pela instrução sub
and $s0, $s2, $s1 # primeiro operando ($s2) depende de sub
or $s4, $s1, $s2 # segundo operando ($s2) depende de sub
add $s3, $s2, $s2 # primeiro e segundo operandos ($s2)
# dependem de sub
sw $s1, 100($s2) # base ($s2) depende de sub
Dependências de dados
Valor de $2 O dado é usado no
No tempo $2 =10 $2 =10 $2 =10 $2 =-20 $2 =-20 $2 =-20 $2 =-20
aqui
or $4, $1, $2
and $0, $2, $1
or $4, $1, $2
sw $1, 100($2)
$1
$2
$1 - $3
$1
$2
$2
$4 $2 $2
MEM
Conflito de Dados com LOAD
lw $2, 20($1)
O dado é usado no
NOP
mesmo ciclo em
que é
gerado
que é gerado
$1, $2 $2 and $1
M[4 + $3]
add $3, $2, $2
Lw $2, 4($3)
Bolha
BI DI EX MEM ER
M[4 + $3]
BI/DI DI/EX EX/MEM MEM/ER
Lw $2, 4($3)
Aqui está a instrução Isto é um LW
Seguinte ao LW Lw $2, 4($3)
Conflito de Dados com LOAD
BOLHA OU NOP
M[PC+8]
lw $2, 20($1)
Projeto do Bloco Pipeline
ID/EX.MemRead
indica que um lw será
executado
Pipeline MIPS - Conflitos
• Conflito de controle
– Saltos condicionais (beq) são decididos no
estágio MEM.
– Até lá duas instruções foram buscadas e a
execução iniciadas
– A solução envolve a antecipação da
comparação de registradores e do calculo do
endereço de salto
Pipeline MIPS - Conflitos
instri+3 instri+2 instri+1 beq $2,$3,7
Projeto do Bloco Pipeline
ID.Flush Insere uma bolha (todos os dados
da instrução buscada são “resetados”
Projeto do Bloco Pipeline
Projeto do Bloco Pipeline
• Reduzindo o atraso na
decisão de salto
condicional
– O cálculo do endereço
efetivo de salto é
antecipado para o
estágio 2
(decodificação)
– A comparação dos
registradores também é
feita neste estágio
Execução beq
Execução beq
Bloco Básico
beq
beq $2, $0, 20
addi $2, $2, -1
lw $8, 20($1)
beq
beq
Projeto de Bloco Pipeline
• Resolvido?
– NÃO : Os registradores a serem comparados
por um beq poder estar sendo modificados por
instruções que precedem o beq
– Conflito de dados