Vous êtes sur la page 1sur 52

Arquitetura de Computadores I

Pipeline Edson Moreno


edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno

Organizao do MIPS: pipeline


Viso geral do pipeline
Analogia com uma Lavanderia domstica 1

Organizao do MIPS: pipeline


Viso geral do pipeline
Analogia com uma Lavanderia domstica 2

Viso geral do pipeline


Pipelining
Tcnica aplicada para viabilizar o aumento de desempenho Busca de paralelismo em nvel de instruo Suporte dado em nvel de hardware Soluo invisvel ao programador

Princpio bsico
Divide uma tarefa em N estgios
N tarefas executadas em paralelo, uma em cada estgio

Viso geral do pipeline


Tradicionalmente, as instrues do MIPS so executadas em 5

etapas:
1. Busca da instruo na memria 2. Leitura dos registradores, enquanto a instruo decodificada

3. Execuo de uma operao ou clculo de um endereo


4. Acesso memria (load ou store) 5. Escrita do resultado em um registrador

No MIPS com Pipeline cada etapa executada em um estgio do

Pipeline.

Desempenho do pipeline
Exemplo 1: compare o tempo de execuo da verso monociclo do

MIPS com o tempo da verso pipeline.


Considere os tempos de operao para as principais unidades funcionais

(e os tempos das instrues) dados na tabela abaixo:

Desempenho do pipeline
Consideremos 3 execues seguidas da instruo lw, qual a mais

lenta em ambos casos (monociclo e pipeline).

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

Logo, a melhora do desempenho advinda do uso do pipeline de

24 ns/6 ns = 4 vezes!

Desempenho do pipeline
Se os estgios de um pipeline forem perfeitamente balanceados,

ento:

Estas condies so ideais e portanto, nunca atingidas!

Porm, costuma-se assumir que o ganho mximo terico de um

pipeline igual ao nmero de estgios.

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)

Existe um overhead referente ao preenchimento do pipeline.

Em funo do segundo motivo, o tempo entre instrues mais

importante do que o tempo total.

Desempenho do pipeline
Exemplo 2: Ainda com relao ao exemplo 1, considere que ao

invs de 3 instrues LW, sejam executadas 1003 instrues LW seguidas.


Qual ser o tempo total em cada caso (monociclo e pipeline) e qual

ser o ganho obtido pelo uso do pipeline?

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

Ganho = 8024 ns / 2014 ns = 3,98

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).

Organizao do MIPS pipeline


O conjunto de instrues do MIPS foi projetado visando a

execuo em pipeline:
Todas as instrues tm o mesmo tamanho

Poucos formatos de instrues, sempre com o registrador-fonte

localizado na mesma posio


Somente as instrues load word e store word manipulam operandos

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

Conflitos estruturais (Structural Hazards)


Acontecem quando o Hardware no pode suportar a combinao

de instrues que o pipeline deseja executar em um dado ciclo de relgio.


Se houvesse somente uma memria (para dados e instrues) e se

uma instruo tentasse acessar um dado na memria enquanto

tivesse que ser buscada uma nova instruo, ocorreria um conflito


estrutural.

Conflitos de controle (Control Hazards)


Originam-se na necessidade de se tomar uma deciso baseada nos

resultados de uma instruo, a qual ainda no foi concluda.


Muito comuns em instrues de salto condicional (beq, no caso do

MIPs reduzido)
Uma possvel soluo a parada (tambm chamada de bolha), ou

seja, interromper a progresso das instrues pelo pipeline.

Conflitos de controle (Control Hazards)


Exemplo: analisar o efeito da parada no desempenho do

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.

Conflitos de controle (Control Hazards)


Se for necessrio resolver o desvio condicional em um 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

considerar parte dos desvios se realizando e parte no se realizando


Exemplo de uso prtico: nos loops a ltima instruo sempre um

desvio para um endereo anterior, que na maioria das vezes, se concretiza


Dada a grande probabilidade de se realizarem, podemos predizer

que os desvios para endereos anteriores sempre se realizam

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

comportamento anterior de cada desvio


Podem mudar a predio para um mesmo desvio com o decorrer

da execuo do programa
Um esquema comum manter um histrico para cada desvio

realizado ou no-realizado
Preditores dinmicos so implementados em hardware e

representam entre 99% e 82% de acerto

Conflitos de dados (Data Hazards)


A execuo de uma instruo depende do resultado de outra, a

qual ainda est no pipeline. Exemplo:

Conflitos de dados (Data Hazards)


Tipos de conflito de dados
Dependncia verdadeira Leitura aps escrita (RAW) Um operando modificado a partir de uma instruo e lido em seguida Dependncias falsas Anti Dependncia Escrita aps leitura (WAR) L um operando a partir de uma instruo e escreve logo em seguida Dependncia de sada (WAW) Escrita em um mesmo registrador a partir de instrues consecutivas

Conflitos de dados (Data Hazards)


Dependncia verdadeira
Read after write (RAW) Refere-se a uma situao a qual o resultado ainda no est

calculado
Exemplo
instr1: instr2: ADD $1, $2, $3 SUB $4, $1, $5

Ou seja, a instr1 estar calculando o valor a ser armazenado no registrador $1 e a

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

Conflitos de dados (Data Hazards)


Ante dependncia
Write after read (WAR) um problema relaciona com condies de corrida em

sistemas de execuo concorrente


Exemplo
instr1: instr2: LW $1, 0($2) SUB $2, $4, $5

Se a arquitetura implementada permite que ocorram execues em paralelo, e

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

Conflitos de dados (Data Hazards)


Dependncia de sada
Write after write (WAW) um problema que tambm est relacionado com condies de

corrida em sistemas de execuo concorrente


Exemplo
instr1: instr2: ADD $2, $3, $4 SUB $2, $5, $6

A operao sucessiva de escrita em um mesmo registrador destino torna

desnecessria a instruo executada anteriormente.

Conflitos de dados (Data Hazards)


Dependncias verdadeiras O pipeline precisa ser parado durante certo nmero de ciclos Colocao de instruo de NOP ou escalonamento adequado das instrues pelo compilador O adiantamento dos dados pode resolver em alguns casos Dependncias falsas No um problema em pipelines onde a ordem de execuo das instrues mantida Problema em processadores superescalares A renomeao dos registradores uma soluo usual neste problema

Conflitos de dados (Data Hazards)


Uma soluo: Adiantamento (Forwarding/Bypass) Soluo:No preciso esperar pelo trmino de uma instruo

aritmtica/lgica.

To logo a ULA chegue ao resultado da operao, este resultado

pode ser disponibilizada para as instrues que vem a seguir.

Forwarding
Exemplo:
Considerando as duas instrues abaixo, mostre as conexes

necessrias entre os estgios do pipeline de modo a tornar vivel o adiantamento.

add $s0, $t0, $t1 sub $t2, $s0, $t3

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

Esta soluo evita bolhas

Forwarding
Conexo entre a sada da memria de dados e a entrada da ULA

Utilizada para instrues do tipo load

Mesmo com adiantamento, haver a perda de um ciclo de relgio (a bolha

inevitvel)

Reordenao do cdigo
Outra soluo para os conflitos de dados

Exemplo: considere o trecho de cdigo abaixo

O conflito aparece no registrador $t2, entre a 2. e a 3. linha.

Reordenao do cdigo
Reordenando o cdigo: invertendo as duas ltimas linhas

possvel reduzir o conflito se no houver adiantemente O conflito extinto se houver adiantamento

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

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.

Apresente graficamente a 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
1.

Apresente graficamente a execuo no pipeline sem forwarding 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

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

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
2.

Apresente graficamente a execuo no pipeline com forwarding 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

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

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
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.

Execuo no pipeline sem forwarding ps reordenao 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

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.

Proponha a reordenao do cdigo e mostre graficamente sua execuo no


pipeline com 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
5.

Execuo no pipeline com forwarding ps reordenao 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

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)

Vous aimerez peut-être aussi