Title: MIPS PIPELINE
1MIPSPIPELINE
2MULTICICLO x PIPELINE
- Multiciclo as operações são divididas em
vários estágios (S) - que funcionam sequencialmente.
Latch
Latch
Latch
S1
S2
Sn
ATIVO no ciclo 2
INATIVO no ciclo 2
INATIVO no ciclo 2
- Pipeline vários estágios funcionam
simultaneamente, para - intruções
diferentes.
Latch
Latch
Latch
Sn
S1
S2
instrução k
instrução k - 1
instrução k (n -1)
3Pipeline é 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
4Lavanderia Sequencial
6
Meia noite
7
8
9
11
10
Tempo
30
40
20
30
40
20
30
40
20
30
40
20
T a s k O r d e r
- A lavanderia sequencial leva 6 horas para 4
volumes - Se usarem o pipeline, quanto tempo levaria?
5Lavanderia em Pipeline
6
Meia noite
7
8
9
11
10
Tempo
o r d e m
- Lavanderia em Pipeline leva 3.5 horas
6Liçõ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
6
7
8
9
Tempo
o r d e m
7Pipelines 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
8Pipeline no MIPS
multiciclo
pipeline
9Implementaçã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.
10Idéia Básica
SOMADOR
REGS.
SOMADOR
MEM. INSTR.
ALU
MEM. DADOS
11Fluxo de dados com latchs entre os estágios
EX/MEM
MEM/WB
IF/ID
ID/EX
somador
somador
Regist.
PC
ALU
Mem. Instr.
Mem. dados
12Pipelines representados graficamente
13CONTROLE DO PIPELINE
PCSrc
Branch
RegWrite
Mem Read
Regs.
Mem toReg
ALUSrc
PC
ALU
Mem. Inst.
Mem. dados
Mem Write
ALUOp
RegDst
14Controle do Pipeline
- 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.
15Controle do Pipeline
Os sinais são repassados pelos estágios
como os dados
MEM/WB
EX/MEM
IF/ID
ID/EX
16Fluxo de dados e controle
PCSrc
RegWrite
Branch
MemRead
MemtoReg
ALUOp
MemWrite
RegDst
17Dependências de dados
- Pode ocorrer iniciando uma instrução antes de
terminar a anterior - dependências que vão retroceder no tempo são
conflitos de dados
18Solução por Antecipação usar os resultados
temporários, sem esperar que eles sejam escritos
- - Atuar no caminho do banco de registr. p/
substituir o valor de leit/escrita de registrador - - Antecipação da ALU
-
19Solução por Antecipação
Unidade de antecipação
20CIRCUITO DE ANTECIPAÇÃO (FORWARDING UNIT)
21Nem sempre é possível solucionar por antecipação
(Fazer o Load de uma palavra pode causar um
conflito)
- - 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
22Parada (Stall)
- manter instruções nos mesmos estágios
23Unidade de detecção de conflitos
- A parada faz com que uma instrução que não
escreve nada prossiga
24Exemplo de inserção de parada
sinais 0
25Conflitos de Desvio (Branch)
- 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
26Controle para limpar as instruções posteriores
além de antecipar o cálculo da condição
IFFlush
27Exemplo de beq e atualização do PC
44
40
endereço 72 lw 4, 50(7)
Resulta em NOP
28RESULTADO DO CONTROLE DE DESVIO
Necessidade de limpar apenas uma instrução
29Melhorando 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
30MIPS superescalar
31MIPS superescalar
Tipo de instrução Estágios do pipeline Estágios do pipeline Estágios do pipeline Estágios do pipeline Estágios do pipeline Estágios do pipeline Estágios do pipeline 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
32EXEMPLO
O código
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
pode ser escalonado para o MIPS superescalar da
seguinte forma
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
5 instruções em 4 ciclos
33Desdobramento 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
34Escalaçã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
-
35Escalação Dinâmica
Despacho em ordem
Unidades funcionais
Execução fora de ordem
Escrita final do resultado em ordem
36A microarquitetura do Pentium 4