Você está na página 1de 23

Lavagem de roupa

Processamento sequencial
Time
Task
order
A
B
C
D
6 PM 7 8 9 10 11 12 1 2 AM
Uma carga de roupa leva 2 horas, quatro cargas levam 8 horas
Princpio da linha de montagem
Time
Task
order
A
B
C
D
6 PM 7 8 9 10 11 12 1 2 AM
Uma carga de roupa leva 2 horas, quatro cargas levam 3.5 horas
Vasco Pedro, ASC2, UE, 2014/2015 65
Comparacao
Processamento sequencial Linha de montagem
Cargas de roupa Tempo necessario Speedup
1 2 horas 2 horas 1.00
2 4 horas 2.5 horas 1.60
3 6 horas 3 horas 2.00
10 20 horas 6.5 horas 3.08
100 200 horas 51.5 horas 3.88
1000 2000 horas 501.5 horas 3.99
Tempo entre o m de 2 cargas
2 horas 0.5 horas
O que melhorou?
Vasco Pedro, ASC2, UE, 2014/2015 66
Execucao de instruc oes
Sequencial
Program
execution
order
(in instructions)
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
Time
1000 1200 1400 200 400 600 800 1600 1800
nstruction
fetch
Data
access
Reg
nstruction
fetch
Data
access
Reg
nstruction
fetch
800 ps
800 ps
800 ps
ALU Reg
ALU Reg
Em paralelo
1000 1200 1400 200 400 600 800
Program
execution
order
(in instructions)
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
Time
nstruction
fetch
Data
access
Reg
nstruction
fetch
nstruction
fetch
Data
access
Reg
Data
access
Reg
200 ps
200 ps
200 ps 200 ps 200 ps 200 ps 200 ps
ALU
ALU
ALU
Reg
Reg
Reg
Vasco Pedro, ASC2, UE, 2014/2015 67
Execucao sequencial vs em paralelo
Execucao sequencial Execucao em paralelo
Dura cao de 1 instrucao
800 ps 1000 ps
Tempo entre 2 instrucoes
800 ps 200 ps
Instru coes executadas Tempo Speedup
1 800 ps 1000 ps 0.80
2 1600 ps 1200 ps 1.33
3 2400 ps 1400 ps 1.71
10 8000 ps 2800 ps 2.86
100 80000 ps 20800 ps 3.85
1000 800000 ps 200800 ps 3.98
10
6
800 s 200s 4.00
Vasco Pedro, ASC2, UE, 2014/2015 68
Execucao pipelined
Execu cao em paralelo
Idealmente
Tempo entre instrucoes
pipelined
=
Tempo entre instrucoes
nao pipelined
N umero de andares do pipeline
Execucao pipelined vs execucao monociclo

Dura cao do ciclo de relogio diminui

Tempo para executar uma instrucao nao diminui

Pode mesmo aumentar, mais se os andares do pipeline nao


sao perfeitamente equilibrados

Todas as instrucoes levam o mesmo tempo

Aumenta o n umero de instrucoes executadas por unidade de


tempo (throughput)
Vasco Pedro, ASC2, UE, 2014/2015 69
Arquitectura MIPS e pipelines
Desenhada para ser implementada sobre um pipeline
Todas as instrucoes tem o mesmo tamanho e podem ser lidas no
primeiro ciclo no pipeline e descodicadas no segundo
Poucos formatos diferentes de instru cao e com os registos nas
mesmas posicoes, pelo que e possvel iniciar a sua leitura em
simultaneo com a descodicacao
So loads e stores lidam com endere cos e nao e necessario usar a
ALU para calculo de enderecos e para outra operacao na
mesma instrucao
Valores alinhados em memoria permitem que um unico acesso seja
suciente para os transferir
Instrucoes so produzem um valor que e escrito no ultimo andar do
pipeline
Vasco Pedro, ASC2, UE, 2014/2015 70
Fases de execu cao no MIPS revisitadas
Instru c oes add, lw e beq
add rd, rs, rt lw rt, imm(rs) beq rs, rt, imm
IF Leitura da instrucao
ID Le rs e rt Le rs Le rs e rt
EX Soma rs e rt Soma rs e imm Compara rs e rt
MEM Acede `a memoria
WB Escreve rd Escreve rt
Cada fase corresponde a um andar do pipeline
Andar Fun cao Unidade funcional principal
IF Instruction fetch Memoria de instru coes
ID Instruction decode Banco de registos (leitura)
EX Execute ALU
MEM Memory access Memoria de dados
WB Write back Banco de registos (escrita)
Vasco Pedro, ASC2, UE, 2014/2015 71
Andares do pipeline MIPS
WB: Write back MEM: Memory access F: nstruction fetch EX: Execute/
address calculation
1
M
u
x
0
0
M
u
x
1
Address
Write
data
Read
data
Data
Memory
Read
register 1
Read
register 2
Write
register
Write
data
Registers
Read
data 1
Read
data 2
ALU
Zero
ALU
result
ADD
Add
result
Shift
left 2
Address
nstruction
Instruction
memory
Add
4
PC
Sign-
extend
0
M
u
x
1
32
D: nstruction decode/
register file read
16
Vasco Pedro, ASC2, UE, 2014/2015 72
Problemas inerentes aos pipelines
Conitos estruturais (structural hazards)
Quando nao e possvel executar uma combinacao de instrucoes no
mesmo ciclo

E a razao para o MIPS ter memorias de instrucoes e de dados


Conitos de dados (data hazards)
Quando uma instrucao necessita de um valor produzido por uma
instrucao anterior e ainda nao disponvel
Conitos de controlo (control ou branch hazards)

E necessario saber o destino de um salto condicional para poder


executar a proxima instrucao
Vasco Pedro, ASC2, UE, 2014/2015 73
Conitos de dados (1)
Resolu cao por forwarding (ou bypassing)
add $s0, $t0, $t1
sub $t2, $s0, $t3
sub le $s0 no mesmo ciclo em que add calcula o novo valor
Forwarding de add para sub
Time
add $s0, $t0, $t1
sub $t2, $s0, $t3
F MEM D WB EX
F MEM D WB EX
Program
execution
order
(in instructions)
200 400 600 800 1000
&
&
Vasco Pedro, ASC2, UE, 2014/2015 74
Conitos de dados (2)
Resolu cao por atraso (ou stalling) do pipeline
lw $s0, 20($t1)
sub $t2, $s0, $t3
sub le $s0 antes de lw ler o valor da memoria
sub e atrasada no pipeline, atraves de um pipeline stall (ou bolha)
200 400 600 800 1000 1200 1400
Time
lw $s0, 20($t1)
sub $t2, $s0, $t3
F MEM D WB EX
F MEM D WB EX
Program
execution
order
(in instructions)
bubble bubble bubble bubble bubble

E um exemplo de um conito de dados load-use


Vasco Pedro, ASC2, UE, 2014/2015 75
Conitos de dados (3)
Resolu cao por reordena cao das instru c oes
1 lw $t1, 0($t0)
2 lw $t2, 4($t0)
3 add $t3, $t1, $t2
4 sw $t3, 12($t0)
5 lw $t4, 8($t0)
6 add $t5, $t1, $t4
7 sw $t5, 16($t0)
Reordenando as instru coes, nao e necessario atrasar o pipeline
1 lw $t1, 0($t0)
2 lw $t2, 4($t0)
5 lw $t4, 8($t0)
3 add $t3, $t1, $t2
4 sw $t3, 12($t0)
6 add $t5, $t1, $t4
7 sw $t5, 16($t0)
Vasco Pedro, ASC2, UE, 2014/2015 76
Conitos de controlo (1)
Que fazer quando se encontra um salto condicional?
Alternativas
1. Atrasar o pipeline ate saber que instru cao devera ser
executada
2. Assumir que o salto nao sera efectuado e come car a executar
a instrucao que se segue
3. Assumir que os saltos condicionais para instrucoes anteriores
(como os que existem no m de um ciclo) serao efectuados
4. Empregar tecnicas mais sosticadas para tentar prever se um
salto sera ou nao efectuado
Quando a previsao se revelar errada, o pipeline deve ser limpo
das instrucoes que nao deveriam ter sido executadas
O MIPS usa delayed branches para minimizar os efeitos adversos
dos conitos de controlo
Vasco Pedro, ASC2, UE, 2014/2015 77
Conitos de controlo (2)
Exemplo
add $4, $5, $6
beq $1, $2, 40
lw $3, 300($0)
+40

or $7, $8, $9
Comportamentos possveis do processador quando encontra um
salto condicional, na ausencia de delay slot. . .
Vasco Pedro, ASC2, UE, 2014/2015 78
Conitos de controlo (3)
Atraso do pipeline
O incio da execucao da instrucao seguinte e atrasado um ciclo de
relogio (assumindo que a decisao sobre se o salto e efectuado e
tomada no andar ID do pipeline)
add $4, $5, $6
beq $1, $2, 40
or $7, $8, $9
Time
nstruction
fetch
Data
access
Data
access
Data
access
Reg
nstruction
fetch
nstruction
fetch
Reg
Reg
200 ps
400 ps
bubble bubble bubble bubble bubble
200 400 600 800 1000 1200 1400
Program
execution
order
(in instructions)
Reg ALU
Reg ALU
Reg ALU

A execucao dos saltos condicionais passa a demorar 6 ciclos


(vs 5 para as restantes instrucoes)
Vasco Pedro, ASC2, UE, 2014/2015 79
Conitos de controlo (4)
Prevendo que o salto nao sera efectuado
add $4, $5, $6
beq $1, $2, 40
lw $3, 300($0)
Time
nstruction
fetch
nstruction
fetch
Data
access
Reg
nstruction
fetch
Data
access
Data
access
Reg
Reg
Reg ALU
Reg ALU
Reg ALU
200 ps
200 ps
200 400 600 800 1000 1200 1400
Program
execution
order
(in instructions)
Se o salto for efectuado, o pipeline e limpo e recome ca na instrucao
correcta
Reg ALU
Reg ALU
Reg ALU
add $4, $5, $6
beq $1, $2, 40
or $7, $8, $9
Time
nstruction
fetch
Data
access
Reg
nstruction
fetch
nstruction
fetch
Data
access
Reg
Data
access
Reg
200 ps
400 ps
bubble bubble bubble bubble bubble
200 400 600 800 1000 1200 1400
Program
execution
order
(in instructions)
Vasco Pedro, ASC2, UE, 2014/2015 80
Implementacao de um pipeline
3 instrucoes no pipeline
Program
execution
order
(in instructions)
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
Time (in clock cycles)
M DM Reg Reg ALU
M DM Reg Reg ALU
M DM Reg Reg ALU
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7
Como ter os valores correctos em cada andar do pipeline?
Vasco Pedro, ASC2, UE, 2014/2015 81
Registos do pipeline
Add
Address
Instruction
memory
Read
register 1

n
s
t
r
u
c
t
i
o
n
Read
register 2
Write
register
Write
data
Read
data 1
Read
data 2
Registers
Address
Write
data
Read
data
Data
memory
Add
Add
result
ALU
ALU
result
Zero
Shift
Ieft 2
Sign-
extend
PC
4
D/EX F/D EX/MEM
16 32
0
M
u
x
1
0
M
u
x
1
0
M
u
x
1
MEM/WB
Os registos do pipeline guardam a informa cao necessaria sobre a
instrucao a executar em cada andar: instrucao, conte udo do(s)
registos(s), resultado da ALU, valor lido da mem oria, . . .
Vasco Pedro, ASC2, UE, 2014/2015 82
lw no pipeline (IF)
Instruction fetch (IF)
nstruction fetch
lw
Add
Address
Instruction
memory
Read
register 1

n
s
t
r
u
c
t
i
o
n
Read
register 2
Write
register
Write
data
Read
data 1
Read
data 2
Registers
Address
Write
data
Read
data
Data
memory
Add
Add
result
ALU
ALU
result
Zero
Shift
Ieft 2
Sign-
extend
PC
4
D/EX F/D EX/MEM
16 32
0
M
u
x
1
0
M
u
x
1
0
M
u
x
1
MEM/WB
Unidades funcionais activas: mux(PCSrc), PC, somador, memoria de
instruc oes (leitura), registo IF/ID (escrita)
Vasco Pedro, ASC2, UE, 2014/2015 83
lw no pipeline (ID)
Instruction decode (ID)
nstruction decode
lw
Add
Address
Instruction
memory
Read
register 1

n
s
t
r
u
c
t
i
o
n
Read
register 2
Write
register
Write
data
Read
data 1
Read
data 2
Registers
Address
Write
data
Read
data
Data
memory
Add
Add
result
ALU
ALU
result
Zero
Shift
Ieft 2
Sign-
extend
PC
4
D/EX F/D EX/MEM
16 32
0
M
u
x
1
0
M
u
x
1
0
M
u
x
1
MEM/WB
Unidades funcionais activas: registo IF/ID (leitura), banco de registos
(leitura), extensao de sinal, registo ID/EX (escrita)
Vasco Pedro, ASC2, UE, 2014/2015 84
lw no pipeline (EX)
Execute (EX)
Execution
w
Add
Address
Instruction
memory
Read
register 1

n
s
t
r
u
c
t
i
o
n
Read
register 2
Write
register
Write
data
Read
data 1
Read
data 2
Registers
Address
Write
data
Read
data
Data
memory
Add
Add
result
ALU
ALU
result
Zero
Shift
Ieft 2
Sign-
extend
PC
4
D/EX F/D EX/MEM
16 32
0
M
u
x
1
0
M
u
x
1
0
M
u
x
1
MEM/WB
Unidades funcionais activas: registo ID/EX (leitura), mux(ALUSrc),
ALU, registo EX/MEM (escrita)
Vasco Pedro, ASC2, UE, 2014/2015 85
lw no pipeline (MEM)
Memory access (MEM)
Memory
w
Add
Address
Instruction
memory
Read
register 1

n
s
t
r
u
c
t
i
o
n
Read
register 2
Write
register
Write
data
Read
data 1
Read
data 2
Registers
Address
Write
data
Read
data
Data
memory
Add
Add
result
ALU
ALU
result
Zero
Shift
Ieft 2
Sign-
extend
PC
4
D/EX F/D EX/MEM
16 32
0
M
u
x
1
0
M
u
x
1
0
M
u
x
1
MEM/WB
Unidades funcionais activas: registo EX/MEM (leitura), memoria de
dados (leitura), registo MEM/WB (escrita)
Vasco Pedro, ASC2, UE, 2014/2015 86
lw no pipeline (WB)
Write back (WB)
Write-back
w
Add
Address
Instruction
memory
Read
register 1

n
s
t
r
u
c
t
i
o
n
Read
register 2
Write
register
Write
data
Read
data 1
Read
data 2
Registers
Address
Write
data
Read
data
Data
memory
Add
Add
result
ALU
ALU
result
Zero
Shift
Ieft 2
Sign-
extend
PC
4
D/EX F/D EX/MEM
16 32
0
M
u
x
1
0
M
u
x
1
0
M
u
x
1
MEM/WB
Unidades funcionais activas: registo MEM/WB (leitura),
mux(MemtoReg), banco de registos (escrita)
Vasco Pedro, ASC2, UE, 2014/2015 87

Você também pode gostar