Você está na página 1de 36

MIPS

PIPELINE

1998 Morgan Kaufmann Publishers 1


MULTICICLO x PIPELINE

Multiciclo: as operaes so divididas em vrios estgios (S)


que funcionam sequencialmente.
Latch

Latch

Latch
S1 S2 Sn

INATIVO no ciclo 2 ATIVO no ciclo 2 INATIVO no ciclo 2


Pipeline: vrios estgios funcionam simultaneamente, para
intrues diferentes.

Latch
Latch

Latch

S1 S2 Sn

instruo k instruo k - 1 instruo k (n -1)

1998 Morgan Kaufmann Publishers 2


Pipeline: natural!

Exemplo de Lavanderia
Tem-se os volumes A, B, C e D de A B C D
roupas para lavar, secar e passar
A lavadora leva 30 minutos
A secadora leva 40 minutos
Passadeira leva 20 minutos

1998 Morgan Kaufmann Publishers 3


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 A
s
k
B
O
r
d C
e
r
D
A lavanderia sequencial leva 6 horas para 4 volumes
Se usarem o pipeline, quanto tempo levaria?
1998 Morgan Kaufmann Publishers 4
Lavanderia em Pipeline

6 7 8 9 10 11 Meia noite
Tempo

30 40 40 40 40 20
o
r A
d
e
m B

D
Lavanderia em Pipeline leva 3.5 horas
1998 Morgan Kaufmann Publishers 5
Lies sobre o Pipeline

O Pipeline ajuda melhorar o


throughput de um trabalho por
6 7 8 9 completo
Tempo
A taxa do Pipeline limitada
o pelo estgio mais lento
r 30 40 40 40 40 20
d Speedup ideal = Nmero de
e A estgios
m
Comprimentos desbalanceados
B dos estgios do pipeline
reduzem o speedup

C O tempo para preencher o


pipeline e o tempo para
limpar o pipeline reduzem o
D speedup

1998 Morgan Kaufmann Publishers 6


Pipelines em Computadores

Executa bilhes de instrues, tal que o importante seja o throughout

Speedup: para um programa de n instrues, num computador pipeline de k estgios,


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

n.k
Speedup
k n 1
Para n grande, speedup ~ k

1998 Morgan Kaufmann Publishers 7


Pipeline no MIPS

multiciclo

pipeline

1998 Morgan Kaufmann Publishers 8


Implementao do Pipeline

O que facilita:
Todas as instrues com mesmo comprimento
Somente poucos formatos de instrues
Os operandos de memria aparecem somente em loads e stores

O que difculta:
conflitos estruturais: supor que temos somente uma memria
conflitos de controle: preocupar com instrues de branch
conflitos de dados: uma instruo depende de uma instruo
prvia
Manipulao de excees
Melhorar o desempenho com execuo fora-de-ordem, etc.

1998 Morgan Kaufmann Publishers 9


Idia Bsica

SOMADOR

REGS.
SOMADOR

MEM. ALU
INSTR. MEM.
DADOS
1998 Morgan Kaufmann Publishers 10
Fluxo de dados com latchs entre os estgios

IF/ID ID/EX EX/MEM MEM/WB


somador

somador Regist.

PC
ALU
Mem.
Instr.
Mem.
dados
1998 Morgan Kaufmann Publishers 11
Pipelines representados graficamente

Time (in clock cycles)


Program
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
execution
order
(in instructions)
lw $10, 20($1) IM Reg ALU DM Reg

sub $11, $2, $3 IM Reg ALU DM Reg

1998 Morgan Kaufmann Publishers 12


CONTROLE DO PIPELINE
PCSrc

Branch
RegWrite
Regs. Mem
ALUSrc Read Mem
toReg

PC ALU

Mem.
Inst. Mem. Mem
dados Write
ALUOp

RegDst
1998 Morgan Kaufmann Publishers 13
Controle do Pipeline

O que necessita ser controlado em cada estgio?

Busca de Instruo e Incremento do PC


Decodificao da Instruo / Busca de Registradores
Execuo
Estgio de Memria
Write Back

Cada estgio deve funcionar para uma determinada instruo,


simultaneamente a outros estgios.

1998 Morgan Kaufmann Publishers 14


Os sinais so repassados pelos estgios
Controle do Pipeline como os dados
Write-back
Execution/Address Calculation Memory access stage stage control
stage control lines control lines lines
Reg ALU ALU ALU Mem Mem Reg Mem to
Instruction Dst Op1 Op0 Src Branch Read Write write Reg
R-format 1 1 0 0 0 0 0 1 0
lw 0 0 0 1 0 1 0 1 1
sw X 0 0 1 0 0 1 0 X
beq X 0 1 0 1 0 0 0 X

IF/ID ID/EX EX/MEM MEM/WB


1998 Morgan Kaufmann Publishers 15
Fluxo de dados e controle
PCSrc

RegWrite

Branch

MemRead

MemtoReg
ALUOp MemWrite

RegDst
1998 Morgan Kaufmann Publishers 16
Dependncias de dados
Pode ocorrer iniciando uma instruo antes de terminar a anterior
dependncias que vo retroceder no tempo so conflitos de dados
Time (in clock cycles)

Value of CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
register $2: 10 10 10 10 10/ 20 20 20 20 20
Program
execution
order
(in instructions)
sub $2, $1, $3 IM Reg DM Reg

and $12, $2, $5 IM Reg DM Reg

or $13, $6, $2 IM Reg DM Reg

add $14, $2, $2 IM Reg DM Reg

sw $15, 100($2) IM Reg DM Reg

1998 Morgan Kaufmann Publishers 17


Soluo por Antecipao usar os resultados
temporrios, sem esperar que eles sejam escritos
- Atuar no caminho do banco de registr. p/ substituir o valor de leit/escrita de registrador
- Antecipao da ALU
Time (in clock cycles)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
Value of register $2 : 10 10 10 10 10/ 20 20 20 20 20
Value of EX/MEM : X X X 20 X X X X X
Value of MEM/WB : X X X X 20 X X X X

Program
execution order
(in instructions)
sub $2, $1, $3 IM Reg DM Reg

and $12, $2, $5 IM Reg DM Reg

or $13, $6, $2 IM Reg DM Reg

add $14, $2, $2 IM Reg DM Reg

sw $15, 100($2) IM Reg DM Reg

what if this $2 was $13?


1998 Morgan Kaufmann Publishers 18
Soluo por Antecipao

Unidade de antecipao
1998 Morgan Kaufmann Publishers 19
CIRCUITO DE ANTECIPAO (FORWARDING UNIT)

MUX A
00
01

MEM/WBRegWrite
EX/MEMRegWrite

MEM/WBRegisterRd
EX/MEMRegisterRd
10

MUX B
00
01
10

Rs
Rs

Rt
Rt
= = = =

MUX A MUX A MUX B MUX B


SA1 SA0 SB0 SB1

SELEO DO SELEO DO
MUX A MUX B

1998 Morgan Kaufmann Publishers 20


Nem sempre possvel solucionar por antecipao (Fazer
o Load de uma palavra pode causar um conflito)
- Se uma instruo tenta ler um registrador seguindo uma instruo de
load word que escreve no mesmo registrador.
Time (in clock cycles)
Program CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
execution
order
(in instructions)
lw $2, 20($1) IM Reg DM Reg

and $4, $2, $5 IM Reg DM Reg

or $8, $2, $6 IM Reg DM Reg

add $9, $4, $2 IM Reg DM Reg

slt $1, $6, $7 IM Reg DM Reg

Portanto, necessitamos que a unidade de deteco de conflitos


1998 Morgan Kaufmann Publishers 21
paralize, em um ciclo, as instrues seguintes ao load word
manter instrues nos mesmos estgios
Parada (Stall)

1998 Morgan Kaufmann Publishers 22


Unidade de deteco de conflitos
A parada faz com que uma instruo que no escreve nada prossiga

1998 Morgan Kaufmann Publishers 23


Exemplo de insero de parada

sinais 0

1998 Morgan Kaufmann Publishers 24


Conflitos de Desvio (Branch)
Quando decidido pelo branch, outras instrues esto em pipeline!
Program Time (in clock cycles)
execution CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
order
(in instructions)

40 beq $1, $3, 7 IM Reg DM Reg

44 and $12, $2, $5 IM Reg DM Reg

48 or $13, $6, $2 IM Reg DM Reg

52 add $14, $2, $2 IM Reg DM Reg

72 lw $4, 50($7) IM Reg DM Reg

O pipeline equivale a previso de no ocorrer branch


Soluo: hardware para desprezar as instrues posteriores
caso haja branch 1998 Morgan Kaufmann Publishers 25
Controle para limpar as instrues posteriores
alm de antecipar o clculo da condio

IFFlush

1998 Morgan Kaufmann Publishers 26


Exemplo de beq e atualizao do PC

44 and $12,$2,$5 40 beq $1,$3,7

endereo 72
lw $4, 50($7)

Resulta em NOP 1998 Morgan Kaufmann Publishers 27


RESULTADO DO CONTROLE DE DESVIO

Necessidade de limpar apenas uma instruo

1998 Morgan Kaufmann Publishers 28


Melhorando o desempenho

Tentar evitar paradas! P.ex., reordenar essas instrues:

lw $t0, 0($t1)
lw $t2, 4($t1)
sw $t2, 0($t1)
sw $t0, 4($t1)

Adicionar um branch delay slot


permitindo que a prxima instruo seguida do branch seja
sempre executada

Confiar no compilador para preencher o slot com algo til

Processador Superescalar: iniciar mais que uma instruo no


mesmo ciclo

1998 Morgan Kaufmann Publishers 29


MIPS superescalar

1998 Morgan Kaufmann Publishers 30


MIPS superescalar

Tipo de Estgios do pipeline


instruo
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

1998 Morgan Kaufmann Publishers 31


EXEMPLO

O cdigo:
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 instrues em 4 ciclos
1998 Morgan Kaufmann Publishers 32
Desdobramento de lao (loop unrolling)

R ou desvio Load/store Ciclo Observaes


de clock
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 instrues em 8 ciclos
1998 Morgan Kaufmann Publishers 33
Escalao Dinmica

O hardware realiza a escalao


O hardware tenta encontrar instrues para executar
possvel execuo fora de ordem
Execuo especulativa e previso dinmica de desvio (branch)
DEC Alpha 21264: tem 9 estgios pipeline, 6 instrues
simultneas
PowerPC e Pentium: tabela de histria de desvio
importante a tecnologia do compilador

1998 Morgan Kaufmann Publishers 34


Escalao Dinmica

Despacho em ordem

Unidades
funcionais Execuo
fora de ordem

Escrita final do resultado


em ordem
35
1998 Morgan Kaufmann Publishers
A microarquitetura do Pentium 4

1998 Morgan Kaufmann Publishers 36

Você também pode gostar