Você está na página 1de 25

TCC 00286: Arquitetura de Computadores

Aula 10. Pipeline I

Karina Mochetti

2017.1

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Relembrando...

Datapath

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Relembrando...

Datapath
Multiplexador e Controlador

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Relembrando...

Datapath
Multiplexador e Controlador
Instrues Aritmticas

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Relembrando...

Datapath
Multiplexador e Controlador
Instrues Aritmticas
Instrues de Memria

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Relembrando...

Datapath
Multiplexador e Controlador
Instrues Aritmticas
Instrues de Memria
Instrues Salto e Desvio

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Relembrando...

Datapath
Multiplexador e Controlador
Instrues Aritmticas
Instrues de Memria
Instrues Salto e Desvio
Controlador da ULA e geral

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Exerccio Aula Passada
Qual seria a modificao no datapath ao adicionarmos a instruo
jump? Qual seria o fluxo nesse caso?

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Implementao Monociclo

Todas as mudanas de estado (escrita) so feitas sempre no fim do


clock, no momento que ele vai de um alto para um baixo.

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Implementao Monociclo

Todas as mudanas de estado (escrita) so feitas sempre no fim do


clock, no momento que ele vai de um alto para um baixo.

No uma implementao eficiente!!!

Todas as instrues gastam o mesmo tempo (que ser dado


pelo tempo da mais demorada).
O ciclo ter que ser muito longo para acomodar todas as
funes de um load, por exemplo.
mais difcil otimizar o processador (todas as instrues tem
mesmo custo).
Karina Mochetti TCC 00286: Aula 10. Pipeline I
Pipeline

uma maneira de paralelizar os passos de cada instruo.

Passos para lavar roupa: lavar, secar, dobrar, guardar.

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Pipeline

Cada instruo possui passos que fazem acessos a recursos


distintos.
Enquanto um instruo faz uma ao a um recurso, outra
pode fazer uma ao em outro recurso.
O nmero de instrues tem que ser muito maior que o
nmero de passos para valer a pena.

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Passos de uma Instruo

1 Leitura da instruo da memria.


2 Leitura dos registradores.
3 Faz um clculo (endereo ou operao a ULA).
4 Acesso memria.
5 Escrita nos registradores.

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Passos de uma Instruo

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Exemplo

ULA: 200 ps
Memria: 200 ps
Registradores: 100 ps

Leitura Escrita Operao Acesso Escrita


Instruo Registrador ULA Memria Registrador Total
lw 200 ps 100 ps 200 ps 200 ps 100 ps 800 ps
sw 200 ps 100 ps 200 ps 200 ps 0 ps 700 ps
add 200 ps 100 ps 200 ps 0 ps 100 ps 600 ps
beq 200 ps 100 ps 200 ps 0 ps 0 ps 500 ps

Tempo de Clock com ciclo nico: 800 ps

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Exemplo

ULA: 200 ps
Memria: 200 ps
Registradores: 100 ps

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Exemplo

Monociclo: cada instruo de load acrescenta 800 ps.

Multiciclo: cada instruo de load acrescenta 200 ps (a primeira


sempre gasta 800 ps).

O pipeline diminui o tempo de execuo total sem diminuir o


tempo de execuo de uma instruo!

Karina Mochetti TCC 00286: Aula 10. Pipeline I


MIPS e Pipeline

As instrues no MIPS possuem caractersticas para facilitar o


pipeline:
Todas as instrues tem o mesmo tamanho.
Existem somente 3 formatos.
Somente loads e stores fazem mais de um acesso memria.
Toda instruo faz somente um acesso memria no incio.

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Hazards

Quando uma instruo no podem ser executada em paralelo com


outra durante um pipeline temos um hazard.

Hazard estrutural: quando no possvel pela estrutura das


instrues paralelizar os recursos.
Hazard de dados: quando uma instruo precisa do resultado
da anterior para ser chamada.
Hazard de controle: quando uma instruo determina qual
prxima instruo deve ser executada (h uma mudana em
PC diferente de 4).

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Hazard Estrutural

Quando no possvel pela estrutura das instrues paralelizar os


recursos.

Se a memria tiver somente uma forma de acesso, no


possvel realizar as fases 1 e 4 ao mesmo tempo, por exemplo.
So hazards raros em MIPS, mas muito comum em outros
conjuntos de instrues como o x86.

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Hazard de Dados

Quando uma instruo precisa de um resultado que calculado no


meia da instruo anterior.

A ordem das instrues pode ser modificada para evitar isso.


O compilador teria esse papel o que pode ser problemtico.
Esse tipo de hazard muito comum e acontece muito, nem
sempre possvel resolver assim.
Podemos esperar a instruo anterior terminar para ler a
prxima.
Isso seria muito custoso! Existem solues melhores?

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Hazard de Dados: Forwarding

Assim que o valor calculado, ele passado diretamente para a


prxima instruo.

add $s0, $t0, $t1


sub $t2, $s0, $t3

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Hazard de Dados: Pipeline Stall

Ela necessria antes de ter sido calculada, ento preciso inserir


uma instruo bolha para passar o tempo.

lw $t1, 0($s0)
sub $t2, $s0, $t3

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Hazard de Controle

Quando uma instruo determina qual prxima instruo deve ser


executada, um branch, por exemplo.

Para tudo at a deciso ser tomada.


Fazer previses e "chutar" qual deciso ser tomada. Corrigir
caso tenha errado.
As decises podem ser estticas ou dinmicas, podem ser feitas
a partir de decises antes tomadas ou de formas de cdigo.
No melhor caso no h atraso algum.
Uma boa heurstica pode acertar mais que 90% dos caso.

Karina Mochetti TCC 00286: Aula 10. Pipeline I


Exerccio
O seguinte cdigo em C
d = a + b;
e = a + c;
Pode ser traduzido em MIPS com o cdigo abaixo (assumindo que
os valores esto na memria no endereo dado por $t0).
lw $t1, 0($t1)
lw $t2, 4($t0)
add $t3, $t1, $t2
sw $t3, 12($t0)
lw $t4, 8($t0)
add $t5, $t1, $t4
sw $t5, 16($$t0)

Diga quais so os hazards e os elimine mudando a ordem das


operaes.
Karina Mochetti TCC 00286: Aula 10. Pipeline I