Académique Documents
Professionnel Documents
Culture Documents
Princpio bsico
Divide uma tarefa em N estgios
N tarefas executadas em paralelo, uma em cada estgio
etapas:
1. Busca da instruo na memria 2. Leitura dos registradores, enquanto a instruo decodificada
Pipeline.
Desempenho do pipeline
Exemplo 1: compare o tempo de execuo da verso monociclo do
Desempenho do pipeline
Consideremos 3 execues seguidas da instruo lw, qual a mais
Desempenho do pipeline
Desempenho do pipeline
Sem pipeline
O tempo decorrido entre o incio da primeira instruo e o incio da quarta
instruo 3x8 ns = 24 ns
Com pipeline
O tempo decorrido entre o incio da primeira instruo e o incio da quarta
instruo 3x2 ns = 6 ns
24 ns/6 ns = 4 vezes!
Desempenho do pipeline
Se os estgios de um pipeline forem perfeitamente balanceados,
ento:
Desempenho do pipeline
Motivos pelos quais o ganho terico no atingido: Os estgios de um pipeline no so perfeitamente balanceados
Monociclo = tempo entre instrues = 8 ns Pipeline
Tempo estimado entre instrues = 1,6 ns Tempo real entre instrues = 2 ns (estgio de pior tempo)
Desempenho do pipeline
Exemplo 2: Ainda com relao ao exemplo 1, considere que ao
Desempenho do pipeline
Desempenho do pipeline
Sem pipeline
24 ns + (1000 x 8 ns) = 8024 ns
Com pipeline
14 ns + (1000 x 2ns) = 2014 ns
Desempenho do pipeline
Qual efeito causado pelo pipeline que garante aumenta o
desempenho?
Freqncia de relgio? Vazo? Tempo de resposta?
Feitiaria?
Desempenho do pipeline
O pipeline aumenta o desempenho por meio do aumento da
vazo (throughput) das instrues, ou seja, aumentando o nmero de instrues executadas por unidade de tempo (e no por meio da diminuio do tempo de execuo de uma instruo individual).
execuo em pipeline:
Todas as instrues tm o mesmo tamanho
na memria
Conflitos do pipeline
Existem situaes de execuo no pipeline em que a instruo
seguinte no pode ser executada no prximo ciclo de relgio. Tais situaes so chamadas de conflitos.
Tipos de Conflitos: Estruturais De controle De dados
MIPs reduzido)
Uma possvel soluo a parada (tambm chamada de bolha), ou
desvio condicional.
Considere que se tenha hardware extra que permita testar registradores, calcular o endereo de desvio condicional e atualizar o PC, tudo isso no segundo estgio.
posterior ao segundo (o que o ocorre na maioria dos processadores reais), ocorrer uma perda maior de desempenho em funo da necessidade de encher novamente o pipeline
Predio esttica
Outra soluo para o conflito de controle a tcnica geralmente adotada nos processadores reais! Um esquema simples de predio assumir sempre que os desvios
condicionais sempre iro falhar. Se acertar, o pipeline prossegue com velocidade mxima Se errar, ir atrasar o avano das instrues pelo pipeline
Predio esttica
Predio esttica
Exemplo de loop: ... add ... meu_laco: ble $t0, $t1, fim_laco lw ... sub ... mul ... j meu_laco fim_laco: sw ... add ...
loop
Predio esttica
Outro esquema mais sofisticado de predio consiste em se
Predio esttica
Exemplo de loop: ... add ... go_laco: add ... lw ... sub ... mul ... ble $t0, $t1, go_laco sw ... add ...
loop
Predio dinmica
Outra soluo para o conflito de controle Predio dinmica realiza a predio em funo do
da execuo do programa
Um esquema comum manter um histrico para cada desvio
realizado ou no-realizado
Preditores dinmicos so implementados em hardware e
calculado
Exemplo
instr1: instr2: ADD $1, $2, $3 SUB $4, $1, $5
instr2 ir realizar a leitura do valor contindo no registrador $1 para executar sua operao Problema: quando a instr2 busca o registrador $1 no segundo estgio do pipeline, este ainda est sendo computado pela instr1
supondo que a instr1 sofra um trancamento por uma dependncia anterior ou tempo de execuo mais longo, a instr2 poderia ser executada antes, alterando o valor a ser lido pela instr1
aritmtica/lgica.
Forwarding
Exemplo:
Considerando as duas instrues abaixo, mostre as conexes
Forwarding
Estgios
BI Busca de instruo (memria de instrues) DI Decodificao da instruo e leitura do banco de
registradores EX Execuo da instruo (ULA) MEM Acesso a memria (leitura/escrita) ER escrita do resultado no banco de registradores
Forwarding
Forwarding
Conexo entre a sada da ULA e a entrada da prpria ULA
Forwarding
Conexo entre a sada da memria de dados e a entrada da ULA
inevitvel)
Reordenao do cdigo
Outra soluo para os conflitos de dados
Reordenao do cdigo
Reordenando o cdigo: invertendo as duas ltimas linhas
Exerccios
Dado o trecho de cdigo abaixo sendo executado em um pipeline
de 5 estgios ([B] Estgio de busca de instruo, [D] Estgio de decodificao da instruo e busca de operadores, [E] Estgio de execuo, [M] Estgio de salvamento de resultado em memria, [R] Estgio de salvamento de resultado no registrador alvo) faa
Exerccios
1.
Exerccios
1.
I0 I1 I2 I3 I4 I5 I6
I0: I1: I2: I3: I4: I5: I6: LW ADD SW LW ADD ADD SW $T0,0($T9) $T2,$T0,$T1 $T2,0($T8) $T3,4($T9) $T4,$T3,$T1 $T5,$T4,$T6 $T5,4($T8)
Exerccios
1. 2.
Apresente graficamente a execuo no pipeline sem forwarding Apresente graficamente a execuo no pipeline com forwarding
Exerccios
2.
I0 I1 I2 I3 I4 I5 I6
I0: I1: I2: I3: I4: I5: I6: LW ADD SW LW ADD ADD SW $T0,0($T9) $T2,$T0,$T1 $T2,0($T8) $T3,4($T9) $T4,$T3,$T1 $T5,$T4,$T6 $T5,4($T8)
Exerccios
1. 2. 3.
Apresente graficamente a execuo no pipeline sem forwarding Apresente graficamente a execuo no pipeline com forwarding Identifique os tipos de dependncia de dados presentes no cdigo
Exerccios
1. 2. 3. 4.
Apresente graficamente a execuo no pipeline sem forwarding Apresente graficamente a execuo no pipeline com forwarding Identifique os tipos de dependncia de dados presentes no cdigo Proponha a reordenao do cdigo e mostre graficamente sua execuo no pipeline sem forwarding
I0: I1: I2: I3: I4: I5: I6: LW ADD SW LW ADD ADD SW $T0,0($T9) $T2,$T0,$T1 $T2,0($T8) $T3,4($T9) $T4,$T3,$T1 $T5,$T4,$T6 $T5,4($T8)
Exerccios
4.
I0 I1 I2 I3 I4 I5 I6
I0: I1: I2: I3: I4: I5: I6: LW ADD SW LW ADD ADD SW $T0,0($T9) $T2,$T0,$T1 $T2,0($T8) $T3,4($T9) $T4,$T3,$T1 $T5,$T4,$T6 $T5,4($T8)
Exerccios
1. 2. 3. 4.
Apresente graficamente a execuo no pipeline sem forwarding Apresente graficamente a execuo no pipeline com forwarding Identifique os tipos de dependncia de dados presentes no cdigo Proponha a reordenao do cdigo e mostre graficamente sua execuo no pipeline sem forwarding
5.
Exerccios
5.
I0 I1 I2 I3 I4 I5 I6
I0: I1: I2: I3: I4: I5: I6: LW ADD SW LW ADD ADD SW $T0,0($T9) $T2,$T0,$T1 $T2,0($T8) $T3,4($T9) $T4,$T3,$T1 $T5,$T4,$T6 $T5,4($T8)