Carregar apresentação
A apresentação está carregando. Por favor, espere
1
MIPS PIPELINE
2
Multiciclo: as operações são divididas em vários estágios (S)
MULTICICLO x PIPELINE Multiciclo: as operações são divididas em vários estágios (S) que funcionam sequencialmente. Latch Latch Latch S1 S2 Sn INATIVO no ciclo 2 ATIVO 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)
3
Pipeline: é natural! A B C D 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
4
Lavanderia Sequencial
6 7 8 9 10 11 Meia noite Tempo 30 40 20 30 40 20 30 40 20 30 40 20 T a s k O r d e A B C D A lavanderia sequencial leva 6 horas para 4 volumes Se usarem o “pipeline”, quanto tempo levaria?
5
Lavanderia em Pipeline
6 7 8 9 10 11 Meia noite Tempo 30 40 20 o r d e m A B C D Lavanderia em Pipeline leva 3.5 horas
6
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 6 7 8 9 Tempo o r d e m 30 40 20 A B C D
7
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
8
Pipeline no MIPS multiciclo pipeline
9
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.
10
Idéia Básica SOMADOR REGS. SOMADOR MEM. INSTR. ALU MEM. DADOS
11
Fluxo de dados com latch’s entre os estágios
IF/ID ID/EX EX/MEM MEM/WB somador somador Regist. PC ALU Mem. Instr. Mem. dados
12
Pipelines representados graficamente
13
CONTROLE DO PIPELINE PCSrc Branch RegWrite Regs. Mem Read Mem ALUSrc
toReg ALUSrc PC ALU Mem. Inst. Mem. dados Mem Write ALUOp RegDst
14
Controle 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.
15
Controle do Pipeline Os sinais são repassados pelos estágios
como os dados Controle do Pipeline MEM/WB IF/ID ID/EX EX/MEM
16
Fluxo de dados e controle
PCSrc RegWrite Branch MemRead MemtoReg ALUOp MemWrite RegDst
17
Dependê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
18
Soluçã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 what if this $2 was $13?
19
Solução por Antecipação
Unidade de antecipação
20
CIRCUITO DE ANTECIPAÇÃO (FORWARDING UNIT)
21
Nem 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
22
Parada (Stall) manter instruções nos mesmos estágios
23
Unidade de detecção de conflitos
A parada faz com que uma instrução que não escreve nada prossiga
24
Exemplo de inserção de parada
sinais 0
25
Conflitos 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
26
Controle para limpar as instruções posteriores
além de antecipar o cálculo da condição IFFlush
27
Exemplo de beq e atualização do PC
44 40 endereço 72 lw $4, 50($7) Resulta em NOP
28
RESULTADO DO CONTROLE DE DESVIO
Necessidade de limpar apenas uma instrução
29
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
30
MIPS superescalar
31
MIPS superescalar Tipo de instrução Estágios do pipeline R ou desvio
IF ID EX MEM WB Load/store
32
pode ser escalonado para o MIPS superescalar da seguinte forma:
EXEMPLO O código: loop: lw $t0, 0 ($s1) # t0 = elemento de array add $t0, $t0,$s # soma o elemento do array a um valor escalar em $s2 sw $t0, 0($s1) # armazena o resultado addi $s1, $s1, # 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
33
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) = 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
34
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
35
Escalação Dinâmica Despacho em ordem Unidades funcionais Execução
fora de ordem Escrita final do resultado em ordem
36
A microarquitetura do Pentium 4
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.