Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Aula 8: Pipelining (parte 5 – Hazards de dados e Stalls)
Professor: Leandro Marzulo
Arquiteturas Avançadas de Computadores
Problema com o LW
Load Word pode causar um hazard, mesmo com forwarding:
Logo após um lw, uma instrução tenta ler o registrador que foi escrito pelo lw
2
lw $2, 20($1)
and $4, $2, $5
or $8, $2, $6
add $9, $4, $2
Slt $1, $6, $7
Problema com o LW
3
R
e
g
I
M
R
e
g
R
e
g
I
M
C
C
 
1
C
C
 
2
C
C
 
3
C
C
 
4
C
C
 
5
C
C
 
6
T
i
m
e
 
(
i
n
 
c
l
o
c
k
 
c
y
c
l
e
s
)
l
w
 
$
2
,
 
2
0
(
$
1
)
P
r
o
g
r
a
m
e
x
e
c
u
t
i
o
n
o
r
d
e
r
(
i
n
 
i
n
s
t
r
u
c
t
i
o
n
s
)
a
n
d
 
$
4
,
 
$
2
,
 
$
5
I
M
R
e
g
D
M
R
e
g
I
M
D
M
R
e
g
I
M
D
M
R
e
g
C
C
 
7
C
C
 
8
C
C
 
9
o
r
 
$
8
,
 
$
2
,
 
$
6
a
d
d
 
$
9
,
 
$
4
,
 
$
2
s
l
t
 
$
1
,
 
$
6
,
 
$
7
D
M
R
e
g
R
e
g
R
e
g
D
M
Não podemos “voltar no tempo” para fazer o encaminhamento.
Precisamos de uma unidade de detecção de hardware para comandar um stall no pipe!
Lógica da Unidade de Detecção de Hazards
if ( ID/EX.MemRead // se a instrução que está no estágio EX é um load… 
 and ( ( ID/EX.RegisterRt = IF/ID.RegisterRs ) // e o registrador destino
 or ( ID/EX.RegisterRt = IF/ID.RegisterRt ) ) ) // coincide com algum de orígem da instrução que está no estágio anterior
STALL!
4
Como funciona o stall?
Se a condição anterior for verdadeira, o pipe precisa de um stall por apenas 1 ciclo de clock depois do load. Depois disso, a unidade de forwarding consegue resolver a dependência
O que o Hardware faz para paralizar o pipe por 1 ciclo de clock:
Não permite a alteração do registrador de pipe IF/ID (desabilita a escrita) – isso fará com que o estágio ID se repita, isto é, um stall
Sendo assim, a instrução anterior (no estágio IF) precisa também de um stall para que o HW não altere o PC (desabilitar a escrita!). Õ estágio IF será repetido.
Alterações nos campos de controle de EX, MEM e WB no registrador de pipe ID/EX para 0, para que a instrução que vem depois do load se torne um nop – Dizemos que uma bolha foi inserida no pipe.
Note que não podemos transformar a instrução em um nop zerando os bits da instrução em sí – nop = 00…0 (32 bits) – pois a instrução já foi decodificada e os sinais de controle já foram gerados.
5
Unidade de Detecção de Hazard
P
C
I
n
s
t
r
u
c
t
i
o
n
m
e
m
o
r
y
R
e
g
i
s
t
e
r
s
M
u
x
M
u
x
M
u
x
C
o
n
t
r
o
l
A
L
U
E
X
M
W
B
M
W
B
W
B
I
D
/
E
X
E
X
/
M
E
M
M
E
M
/
W
B
D
a
t
a
m
e
m
o
r
y
M
u
x
H
a
z
a
r
d
d
e
t
e
c
t
i
o
n
u
n
i
t
F
o
r
w
a
r
d
i
n
g
u
n
i
t
0
M
u
x
I
F
/
I
D
I
n
s
t
r
u
c
t
i
o
n
I
D
/
E
X
.
M
e
m
R
e
a
d
I
F
/
I
D
W
r
i
t
e
P
C
W
r
i
t
e
I
D
/
E
X
.
R
e
g
i
s
t
e
r
R
t
I
F
/
I
D
.
R
e
g
i
s
t
e
r
R
d
I
F
/
I
D
.
R
e
g
i
s
t
e
r
R
t
I
F
/
I
D
.
R
e
g
i
s
t
e
r
R
t
I
F
/
I
D
.
R
e
g
i
s
t
e
r
R
s
R
t
R
s
R
d
R
t
E
X
/
M
E
M
.
R
e
g
i
s
t
e
r
R
d
M
E
M
/
W
B
.
R
e
g
i
s
t
e
r
R
d
6
Exemplo
lw $2, 20($1)
and $4, $2, $5
or $8, $2, $6
add $9, $4, $2
Slt $1, $6, $7
7
Exemplo
l
w
 
$
2
,
 
2
0
(
$
1
)
P
r
o
g
r
a
m
e
x
e
c
u
t
i
o
n
o
r
d
e
r
(
i
n
 
i
n
s
t
r
u
c
t
i
o
n
s
)
a
n
d
 
$
4
,
 
$
2
,
 
$
5
o
r
 
$
8
,
 
$
2
,
 
$
6
a
d
d
 
$
9
,
 
$
4
,
 
$
2
s
l
t
 
$
1
,
 
$
6
,
 
$
7
R
e
g
I
M
R
e
g
R
e
g
I
M
D
M
C
C
 
1
C
C
 
2
C
C
 
3
C
C
 
4
C
C
 
5
C
C
 
6
T
i
m
e
 
(
i
n
 
c
l
o
c
k
 
c
y
c
l
e
s
)
I
M
R
e
g
D
M
R
e
g
I
M
I
M
D
M
R
e
g
I
M
D
M
R
e
g
C
C
 
7
C
C
 
8
C
C
 
9
C
C
 
1
0
D
M
R
e
g
R
e
g
R
e
g
R
e
g
b
u
b
b
l
e
8
Exemplo
H
a
z
a
r
d
d
e
t
e
c
t
i
o
n
u
n
i
t
0
M
u
x
I
F
/
I
D
W
r
i
t
e
P
C
W
r
i
t
e
I
D
/
E
X
.
R
e
g
i
s
t
e
r
R
t
I
D
/
E
X
.
M
e
m
R
e
a
d
M
W
B
$
1
$
X
X
1
2
b
e
f
o
r
e
<
3
>
P
C
I
n
s
t
r
u
c
t
i
o
n
m
e
m
o
r
y
R
e
g
i
s
t
e
r
s
M
u
x
M
u
x
M
u
x
E
X
W
B
D
a
t
a
m
e
m
o
r
y
M
u
x
F
o
r
w
a
r
d
i
n
g
u
n
i
t
I
n
s
t
r
u
c
t
i
o
n
I
F
/
I
D
I
D
/
E
X
E
X
/
M
E
M
M
E
M
/
W
B
a
n
d
 
$
4
,
 
$
2
,
 
$
5
l
w
 
$
2
,
 
2
0
(
$
1
)
b
e
f
o
r
e
<
1
>
b
e
f
o
r
e
<
2
>
C
l
o
c
k
 
2
1
1
X
X
1
1
C
o
n
t
r
o
l
A
L
U
M
W
B
9
Exemplo
H
a
z
a
r
d
d
e
t
e
c
t
i
o
n
u
n
i
t
0
M
u
x
I
F
/
I
D
W
r
i
t
e
P
C
W
r
i
t
e
I
D
/
E
X
.
R
e
g
i
s
t
e
r
R
t
l
w
 
$
2
,
 
2
0
(
$
1
)
P
C
I
n
s
t
r
u
c
t
i
o
n
m
e
m
o
r
y
R
e
g
i
s
t
e
r
s
M
u
x
M
u
x
M
u
x
E
X
M
W
B
W
B
D
a
t
a
m
e
m
o
r
y
M
u
x
F
o
r
w
a
r
d
i
n
g
u
n
i
t
I
n
s
t
r
u
c
t
i
o
n
I
F
/
I
D
a
n
d
 
$
4
,
 
$
2
,
 
$
5
I
D
/
E
X
b
e
f
o
r
e
<
1
>
E
X
/
M
E
M
b
e
f
o
r
e
<
2
>
M
E
M
/
W
B
o
r
 
$
4
,
 
$
4
,
 
$
2
C
l
o
c
k
 
3
2
5
2
5
0
0
1
1
$
2
$
5
5
2
4
$
1
$
X
X
1
2
C
o
n
t
r
o
l
A
L
U
M
W
B
I
D
/
E
X
.
M
e
m
R
e
a
d
10
Exemplo
$
2
$
5
5
2
2
4
W
B
H
a
z
a
r
d
d
e
t
e
c
t
i
o
n
u
n
i
t
0
M
u
x
I
F
/
I
D
W
r
i
t
e
P
C
W
r
i
t
e
I
D
/
E
X
.
R
e
g
i
s
t
e
r
R
t
P
C
I
n
s
t
r
u
c
t
i
o
n
m
e
m
o
r
y
R
e
g
i
s
t
e
r
s
M
u
x
M
u
x
M
u
x
E
X
M
W
B
D
a
t
a
m
e
m
o
r
y
M
u
x
I
n
s
t
r
u
c
t
i
o
n
I
F
/
I
D
a
n
d
 
$
4
,
 
$
2
,
 
$
5
b
u
b
b
l
e
I
D
/
E
X
l
w
 
$
2
,
 
.
 
.
 
.
E
X
/
M
E
M
b
e
f
o
r
e
<
1
>
M
E
M
/
W
B
C
l
o
c
k
 
4
2
2
5
5
1
0
1
1
0
0
$
2
$
5
5
2
4
C
o
n
t
r
o
l
A
L
U
M
W
B
F
o
r
w
a
r
d
i
n
g
u
n
i
t
I
D
/
E
X
.
M
e
m
R
e
a
d
o
r
 
$
4
,
 
$
4
,
 
$
2
11
Exemplo
H
a
z
a
r
d
d
e
t
e
c
t
i
o
n
u
n
i
t
0
M
u
x
I
F
/
I
D
W
r
i
t
e
P
C
W
r
i
t
e
I
D
/
E
X
.
R
e
g
i
s
t
e
r
R
t
2
b
u
b
b
l
e
l
w
 
$
2
,
 
.
 
.
 
.
P
C
I
n
s
t
r
u
c
t
i
o
n
m
e
m
o
r
y
R
e
g
i
s
t
e
r
s
M
u
x
M
u
x
M
u
x
E
X
M
W
B
M
W
B
D
a
t
a
m
e
m
o
r
y
M
u
x
F
o
r
w
a
r
d
i
n
g
u
n
i
t
I
n
s
t
r
u
c
t
i
o
n
I
F
/
I
D
a
n
d
 
$
4
,
 
$
2
,
 
$
5
I
D
/
E
X
E
X
/
M
E
M
M
E
M
/
W
B
a
d
d
 
$
9
,
 
$
4
,
 
$
2
C
l
o
c
k
 
5
2
2
1
0
1
0
1
1
$
4
$
2
2
4
4
4
2
4
$
2
$
5
5
2
4
C
o
n
t
r
o
l
A
L
U
0
W
B
I
D
/
E
X
.
M
e
m
R
e
a
d
o
r
 
$
4
,
 
$
4
,
 
$
2
12
Exemplo
P
C
I
n
s
t
r
u
c
t
i
o
n
m
e
m
o
r
y
H
a
z
a
r
d
d
e
t
e
c
t
i
o
n
u
n
i
t
0
M
u
x
I
F
/
I
D
W
r
i
t
e
P
C
W
r
i
t
e
I
D
/
E
X
.
R
e
g
i
s
t
e
r
R
t
b
u
b
b
l
e
R
e
g
i
s
t
e
r
s
M
u
x
M
u
x
E
X
M
W
B
M
W
B
D
a
t
a
m
e
m
o
r
y
M
u
x
I
n
s
t
r
u
c
t
i
o
n
I
F
/
I
D
a
d
d
 
$
9
,
 
$
4
,
 
$
2
I
D
/
E
X
a
n
d
 
$
4
,
 
.
 
.
 
.
E
X
/
M
E
M
M
E
M
/
W
B
C
l
o
c
k
 
6
4
4
2
2
1
0
1
0
$
4
$
2
2
4
4
9
$
2
2
C
o
n
t
r
o
l
A
L
U
1
0
W
B
0
a
f
t
e
r
<
1
>
F
o
r
w
a
r
d
i
n
g
u
n
i
t
$
4
4
4
o
r
 
$
4
,
 
$
4
,
 
$
2
I
D
/
E
X
.
M
e
m
R
e
a
d
M
u
x
13
Exemplo
R
e
g
i
s
t
e
r
s
I
n
s
t
r
u
c
t
i
o
n
I
D
/
E
X
4
C
o
n
t
r
o
l
P
C
I
n
s
t
r
u
c
t
i
o
n
m
e
m
o
r
y
I
F
/
I
D
W
r
i
t
e
P
C
W
r
i
t
e
a
d
d
 
$
9
,
 
$
4
,
 
$
2
o
r
 
$
4
,
 
.
 
.
 
.
a
n
d
 
$
4
,
 
.
 
.
 
.
a
f
t
e
r
<
2
>
a
f
t
e
r
<
1
>
C
l
o
c
k
 
7
M
u
x
M
u
x
M
u
x
E
X
M
W
B
M
W
B
D
a
t
a
m
e
m
o
r
y
M
u
x
F
o
r
w
a
r
d
i
n
g
u
n
i
t
E
X
/
M
E
M
M
E
M
/
W
B
1
0
1
0
$
4
$
2
2
4
9
A
L
U
1
0
W
B
4
4
1
H
a
z
a
r
d
d
e
t
e
c
t
i
o
n
u
n
i
t
0
M
u
x
I
D
/
E
X
.
R
e
g
i
s
t
e
r
R
t
I
D
/
E
X
.
M
e
m
R
e
a
d
I
F
/
I
D
14

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?