Buscar

A08Aprofundando-Aprendizado-06-Pipeline

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aprofundando o aprendizado
Compreendendo pipelines por meio de desenhos
6.7 [5] <§6.2> Na página 298, mostramos um exemplo com a seguinte seqüência de código:
lw $10, 20($1)
sub $11, $2, $3
As Figuras 6.19 e 6.20 mostraram os diagramas de pipeline com múltiplos ciclos de clock para
essa seqüência de duas instruções, executando por 6 ciclos de clock. As Figuras de 6.14.1 a 6.14.3
mostram os diagramas de pipeline de ciclo único de clock correspondentes para essas duas instru-
ções. Observe que a ordem das instruções difere entre esses dois tipos de diagramas: a instruçãomais
nova está na parte inferior direita do diagrama de pipeline com múltiplos ciclos de clock e está à es-
querda no diagrama de pipeline com ciclo único de clock.
Nos três exercícios a seguir, use a seguinte seqüência de código:
add $4, $2, $3
sw $5, 4($2)
Para a seqüência de código anterior, desenhe o diagrama de pipeline com múltiplos ciclos de
clock usando o formato mostrado na Figura 6.19.
6.8 [5] <§6.2> Para a seqüência de código no Exercício 6.6, desenhe o diagrama de pipeline com
múltiplos ciclos de clock usando o formato mostrado na Figura 6.20.
6.9 [15] <§6.2> Para a seqüência de código anterior, mostre o pipeline por 6 ciclos de clock usando
os diagramas de ciclo único de clock, como nas Figuras de 6.14.1 a 6.14.3. A Figura 6.14.4 possui
um diagrama de pipeline com ciclo único de clock em branco, que pode ser reproduzido para facilitar
sua tarefa!
Aprofundando o aprendizado 6-14-1
6-14-2 Aprofundando o aprendizado ELSEVIER
Memória de
instrução
Endereço
4
3232
In
st
ru
ct
io
n
Add
Add
PC
Registradores
Read
data 1
Read
data 2
Read
register 1
Read
register 2
1616 Exten-
são de
sinal
WrWriteite
registerregister
WrWriteite
datadata
Memória de
instrução
Endereço
4
3232
Add AddAdd
resultresult
Shift
left 2
Shift
left 2
In
st
r
In
st
ru
ct
io
n
u
ct
io
n
PC
WrWriteite
datadata
Registradores
ReadRead
data 1data 1
ReadRead
data 2data 2
ReadRead
register 1register 1
ReadRead
register 2register 2
1616
WrWriteite
registerregister
WrWriteite
datadata
ReadRead
datadata
ALUALU
resultresult
ALU
ZeroZero
Add AddAdd
resultresult
ALUALU
resultresult
ALU
ZeroZero
Busca de instrBusca de instruçãoução
EndereçoEndereço
Memória de
dados
WrWriteite
datadata
ReadRead
datadata
AddressAddress
Memória de
dados
M
u
x
00
11
M
u
x
0
1
M
u
x
0
1
M
u
x
11
00
M
u
x
11
00
M
u
x
00
11
IF/ID EX/MEMEX/MEM MEM/WBMEM/WBID/EX
DecodificaçãoDecodificação
de instrde instruçãoução
lw $10, 20($1)
Busca de instrBusca de instruçãoução
sub $11, $2, $3
IF/ID EX/MEMEX/MEMID/EXID/EX
lw $10, 20($1)
Clock 1
Clock 2
MEM/WBMEM/WB
Exten-
são de
sinal
FIGURA 6.14.1 Diagramas de pipeline com ciclo único para os ciclos de clock 1 (diagrama superior) e 2
(diagrama inferior). Esse estilo de representação de pipeline é um instantâneo de cada instrução executando durante
1 ciclo de clock. Nosso exemplo tem tudo menos duas instruções, de modo que no máximo dois estágios são identificados
em cada ciclo de clock; normalmente, todos os cinco estágios estão ocupados. As partes destacadas do caminho de dados
estão ativas nesse ciclo de clock. O load é buscado no ciclo de clock 1 e decodificado no ciclo de clock 2, com o subtract
buscado no segundo ciclo de clock. Para tornar as figuras mais fáceis de entender, os outros estágios do pipeline estão vazi-
os, mas normalmente existe uma instrução em cada estágio do pipeline.
Aprofundando o aprendizado 6-14-3
Memória de
instrução
EndereçoEndereço
4
3232
In
st
r
In
st
ru
ct
io
n
u
ct
io
n
IF/IDIF/ID EX/MEM MEM/WB
Add
Add
LerLer
dados 1dados 1
LerLer
dados 2dados 2
ReadRead
registerregister 11
ReadRead
registerregister 22
1616
WrWriteite
registerregister
EscreEscrevverer
dadosdados
ID/EX
MemórMemóriaia
lw $10, 20($1)
ExExecuçãoecução
sub $11, $2, $3
EndereçoEndereço
4
3232
Add Add
result
Shift
left 2
Add AddAdd
resultresult
Shift
left 2
In
st
ru
ct
io
n
IF/ID EX/MEM MEM/WB
PC
PC
Escrever
dados
Ler
dados 1
Ler
dados 2
Read
register 1
Read
register 2
1616
WrWriteite
registerregister
EscreEscrevverer
dadosdados
Ler
dados
ALU
result
ALU
ZeroZero
ALU
result
ALU
ZeroZero
ID/EX
Endereço
Clock 3
Clock 4
M
u
x
0
1
M
u
x
00
11
M
u
x
00
11
M
u
x
11
00
M
u
x
11
00
M
u
x
00
11
DecodificaçãoDecodificação
de instrde instruçãoução
sub $11, $2, $3
ExExecuçãoecução
lw $10, 20($1)
Registradores
Exten-
são de
sinal
Memória de
instrução
Registradores
Memória de
dados
Exten-
são de
sinal
EscreEscrevverer
dadosdados
Ler
dados
Endereço
Memória de
dados
FIGURA 6.14.2 Diagramas de pipeline com ciclo único para os ciclos de clock 3 (diagrama superior) e 4
(diagrama inferior). No terceiro ciclo de clock do diagrama superior, lw entra no estágio EX. Ao mesmo tempo, sub
entra em ID. No quarto ciclo de clock (caminho de dados inferior), lw move-se para o estágio MEM, lendo a memória por
meio do endereço encontrado em EX/MEM no início do ciclo de clock 4. Aomesmo tempo, a ALU subtrai e depois coloca
a diferença no EX/MEM ao final do ciclo de clock.
6-14-4 Aprofundando o aprendizado ELSEVIER
4
3232
In
st
r
In
st
ru
ct
io
n
u
ct
io
n
IF/ID EX/MEM MEM/WB
Add
Add
Read
register 1
Read
register 2
1616
Write
register
ID/EX
4
3232
Add AddAdd
resultresult
Shift
left 2
Shift
left 2
In
st
ru
ct
io
n
IF/IDIF/ID EX/MEM MEM/WB
1616
ReadRead
registerregister 11
ReadRead
registerregister 22
Write
register
ALUALU
resultresult
ALU
ZeroZero
ALUALU
resultresult
ALU
ZeroZero
ID/EXID/EX
Clock 5
Clock 6
M
u
x
00
11
M
u
x
00
11
M
u
x
0
1
M
u
x
11
00
M
u
x
0
1
M
u
x
00
11
MemórMemóriaia
sub $11, $2, $3
EscrEscrita de vita de voltaolta
lw $10, 20($1)
EscrEscrita de vita de voltaolta
sub $11, $2, $3
Add AddAdd
resultresult
PC
PC
Memória de
instrução
Endereço LerLer
dados 1dados 1
LerLer
dados 2dados 2
Escrever
dados
EndereçoEndereço
EscreEscrevverer
dadosdados
LerLer
dadosdados 11
LerLer
dados 2dados 2
Escrever
dados
LerLer
dadosdados
EndereçoEndereço
Registradores
Exten-
são de
sinal
Memória de
instrução
Registradores
Memória de
dados
Exten-
são de
sinal
EscreEscrevverer
dadosdados
LerLer
dadosdados
EndereçoEndereço
Memória de
dados
FIGURA 6.14.3 Diagramas de pipeline de ciclo único para os ciclos de clock 5 (diagrama superior)
e 6 (diagrama inferior). No ciclo de clock 5, lw completa escrevendo os dados de MEM/WB no registrador 10, e
sub envia a diferença emEX/MEMparaMEM/WB.No próximo ciclo de clock, sub escreve o valor deMEM/WBno regis-
trador 11.
Rotulando diagramas de pipeline com controle
6.15 [20] <§6.3> Para entender como funciona o controle do pipeline, vamos considerar cinco ins-
truções percorrendo o pipeline:
lw $10, 20($1)
sub $11, $2, $3
and $12, $4, $5
or $13, $6, $7
add $14, $8, $9
Mostre as instruções no pipeline que precedem o lw como before <1>, before <2>, ..., e as instru-
ções após o add como after <1>, after <2>, ... As Figuras de 6.14.5 a 6.14.9 mostram essas instruções
prosseguindo pelos nove ciclos de clock necessários para concluir a execução, destacando o que está
ativo em um estágio e identificando a instrução associada a cada estágio durante um ciclo de clock. A
análise cuidadosa dessas figuras dará idéia de como funcionam os pipelines. Alguns itens que você
pode observar:
! Na Figura 6.14.7, você pode ver a seqüência dos números de registrador destino da esquerda
para a direita na parte inferior dos registradores de pipeline. Os números prosseguem para a di-
reita durante cada ciclo de clock, com o registrador de pipeline MEM/WB fornecendo o núme-
ro do registrador escrito durante o estágio WB.
! Quando um estágio está inativo, os valores das linhas de controle que estão inativas aparecem
como 0 ou X (para “don’t care”).
! Ao contrário do Capítulo 5, no qual a seqüência de controle exigia hardware especial, a seqüên-
cia de controle está embutida na própria estrutura do pipeline. Primeiro, todas as instruções le-vam o mesmo número de ciclos de clock, de modo que não existe controle especial para a
duração da instrução. Segundo, toda a informação de controle é computada durante a decodifi-
cação da instrução, e depois passada pelos registradores de pipeline.
Usando o mesmo formato da Figura 6.14.5 e começando com o diagrama de pipelining vazio da
Figura 6.14.10, desenhe os diagramas de pipeline para a seqüência anterior, por um total de 4 ciclos
de clock.
Aprofundando o aprendizado 6-14-5
4
32
In
st
ru
ct
io
n
Add
Read
register 1
Read
register 2
16
Write
register
ALU
result
ALU
Zero
M
u
x
0
1
M
u
x
0
1
M
u
x
0
1
Shift
left 2
Add Add
result
PC
IF/ID EX/MEM MEM/WBID/EX
Clock
Memória de
instrução
Endereço Ler
dados 1
Ler
dados 2
Escrever
dados Registradores
Exten-
são de
sinal
Escrever
dados
Ler
dados
Endereço
Memória de
dados
FIGURA 6.14.4 Um diagrama de pipeline com ciclo único de clock para uso na ilustração da execução do
pipeline.
6-14-6 Aprofundando o aprendizado ELSEVIER
InstrInstructiouctio nn
[20[20––16]16]
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrALUSr cc
4
InstrInstructiouctio nn
[15[15––0]0] ControleControle
ALUALU
R
eg
W
r
R
eg
W
rit
eite
MemReadMemRead
ContrControlol
InstrInstructiouctio nn
[15[15––11]11]
EXEX
MM
WBWB
MM
WBWB
WBWB
In
st
r
In
st
ru
ct
io
n
u
ct
io
n
IF/ID EX/MEMID/E X
ID:
before<1>
EX:
before<2>
MEM:
before<3>
WB:
before<4>
MEM/WB
IF: lw $10, 20($1)
000000
0000
00000000
000000
0000
0000
00
00
0000
00
00
00
00
00
11
PC
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDsRegDs tt
ALUSrALUSr cc
4
ALUALU
resultresult
ZeroZero
R
eg
W
r
R
eg
W
rit
eite
MM
WBWB
WBWB
In
st
ru
ct
io
n
IF/ID
ID:
lw $10, 20($1)
EX:
before<1>
MEM:
before<2>
WB:
before<3>
MEM/WB
IF:
sub $11, $2, $3
010010
1111
00010001
000000
0000
0000
00
00
0000
00
00
00
00
00
PC
lw
ContrControlol
X
1
Instructio n
[20–16]
Instructio n
[15–0]
Instructio n
[15–11]
20
$X
$1
10
X
M
em
W
r
M
em
W
rit
eite
MemReadMemRead
M
em
W
r
M
em
W
rit
eite
Clock 2
Clock 1
M
u
x
0
1
M
u
x
00
11
M
u
x
11
00
M
u
x
00
11
M
u
x
0
1
M
u
x
00
11
M
u
x
00
11
M
u
x
00
Add
Add
Read
register 1
Read
register 2
WrWritit
registerregister
ee
ReadRead
registerregister 11
ReadRead
registerregister 22
WrWrititee
registerregister
ALUALU
resultresult
ALU
ZeroZero
X
10
20
EX/ME MID/E X
ALU
Shift
left2
Add AddAdd
resultresult
Shift
left2
Add AddAdd
resultresult
WBWB
EXEX
MM
Memória de
instrução
Endereço Ler
dados 1
Ler
dados 2
EscreEscrevverer
dadosdados
Endereço
EscreEscrevverer
dadosdados
LerLer
dadosdados 11
LerLer
dados 2dados 2
EscreEscrevverer
dadosdados
LerLer
dadosdadosEndereçoEndereço
Registradores
Exten-
são de
sinal
Memória de
instrução
Registradores
Memória de
dados
Exten-
são de
sinal
EscreEscrevverer
dadosdados
LerLer
dadosdados
EndereçoEndereço
Memória de
dados
ControleControle
ALUALU
FIGURA 6.14.5 Ciclos de clock 1 e 2. A frase “before <i>” significa a i-ésima instrução antes de lw. A instrução lw
no caminho de dados superior está no estágio IF. Ao final do ciclo de clock, a instrução lw está nos registradores de pipeline
IF/ID. No segundo ciclo de clock, visto no caminho de dados inferior, o lw passa para o estágio ID, e sub entra no estágio
IF. Observe que os valores dos campos de instrução e os registradores de origem selecionados aparecem no estágio ID.
Logo, o registrador $1 e a constante 20, os operandos de lw, são escritos no registrador de pipeline ID/EX. O número 10, re-
presentando o número do registrador destino de lw, também é colocado em ID/EX. Os bits 15-11 são 0, mas usamos X para
mostrar que um campo não desempenha uma função em determinada instrução. O topo do registrador de pipeline ID/EX
mostra os valores de controle para lw a serem usados nos estágios restantes. Esses valores de controle podem ser lidos a
partir da linha lw da tabela na Figura 6.25.
Aprofundando o aprendizado 6-14-7
Instruction
[20–16]
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrALUSr cc
4
Instruction
[15–0]
Shift
left 2R
eg
W
r
R
eg
W
rit
eite
MemReadMemRead
ContrControlol
Instruction
[15–11]
EXEX
MM
WBWB
MM
WBWB
WBWB
In
st
ru
çã
o
IF/ID EX/ME MID/E X
ID:
sub $11, $2, $3
EX:
lw $10 , . . .
MEM:
before<1>
WB:
before<2>
MEM/WB
IF:
and $12, $4, $5
000000
0000
00000000
010010
1111
0000
00
11
0000
00
00
00
00
00
11
PC
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrALUSr cc
4
ZeroZero
Shift
left 2R
eg
W
r
R
eg
W
rit
eite
WBWB
WBWB
In
st
ru
çã
o
IF/ID
ID: and $12, $4, $5 EX: sub $11 , . . . MEM: lw $10 , . . . WB: before<1>
MEM/WB
IF: or $13, $6, $7
000000
1010
11001100
000000
1010
1010
11
00
1111
11
00
00
00
00
PC
and
ContrControlol
5
4
Instruction
[20–16]
Instruction
[15–0]
Instruction
[15–11]
X
$5
$4
$3
$2
X
20
10
12
10
11
M
em
W
r
M
em
W
rit
eite
MemReadMemRead
M
em
W
r
M
em
W
rit
eite
Clock 4
Clock 3
M
u
x
0
1
M
u
x
0
11
M
u
x
11
00
M
u
x
00
1
M
u
x
0
1
M
u
x
0
1
M
u
x
0
1
M
u
x
00
Add
Add
Read
register 1
Read
register 2
Write
register
Read
register 1
Read
register 2
WrWriteite
registerregister
Add AddAdd
resulresultt
ALU
result
ALU
ZeroZero
Add AddAdd
resultresult
12
X
X
EX/ME MID/E X
ALU
result
ALU
2
3
$2 $1
$3
X
X
11
X
X
11
MM
WBWB
EXEX
MM
ContrControleole
ALUALU
Memória de
instrução
Endereço Ler
dados 1
Ler
dados 2
Escrever
dados
Endereço
EscreEscrevverer
dadosdados
Ler
dados 1
Ler
dados 2
EscreEscrevverer
dadosdados
LerLer
dadosdadosEndereçoEndereço
Registradores
Exten-
são de
sinal
Memória de
instrução
Registradores Memória dedados
Exten-
são de
sinal
EscreEscrevverer
dadosdados
Ler
dados
Endereço
Memória de
dados
ContrControleole
ALUALU
FIGURA 6.14.6 Ciclos de clock 3 e 4. No diagrama superior, lw entra no estágio EX no terceiro ciclo de clock, so-
mando $1 e 20 para formar o endereço no registrador de pipeline EX/MEM. (A instrução lw é escrita como lw $10,... ao al-
cançar EX, pois a identidade dos operandos da instrução não é necessária para EX ou para os estágios subseqüentes. Nessa
versão do pipeline, as ações de EX, MEM eWB dependem apenas da instrução e seu registrador destino ou seu endereço
de destino.) Ao mesmo tempo, sub entra em ID, lendo os registradores $2 e $3, e a instrução and inicia IF. No quarto ciclo
de clock (caminho de dados inferior), lw se move para o estágio MEM, lendo a memória por meio do valor em EX/MEM
como endereço. No mesmo ciclo de clock, a ALU subtrai $3 de $2 e coloca a diferença em EX/MEM, and lê os registrado-
res $4 e $5 durante ID, e a instrução or entra em IF. Os dois diagramasmostram os sinais de controle sendo criados no está-
gio ID e removidos conforme são utilizados nos estágios de pipe subseqüentes.
6-14-8 Aprofundando o aprendizado ELSEVIER
Instruction
[20–16]
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrALUSr cc
4
Instruction
[15–0]
Shift
left2R
eg
W
r
R
eg
W
rit
eite
MemReadMemRead
ContrControlol
Instruction
[15–11]
EXEX
MM
WBWB
MM
WBWB
WBWB
In
st
ru
çã
o
IF/ID
or
EX/MEMID/E X
ID:
or $13, $6, $7
EX:
and $12 , . . .
MEM:
sub $11 , . . .
WB:
lw $10, . . .
MEM/WB
IF:
add $14, $8, $9
000000
1010
11001100
000000
1010
1010
11
00
1010
00
00
00
11
11
1
PC
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrALUSr cc
4
ALU
ZeroZero
Shift
left2R
eg
W
r
R
eg
W
rit
eite
MM
WBWB
WBWB
In
st
ru
çã
o
IF/ID
ID:
add $14, $8, $9
EX:
or $13 , . . .
MEM:
and $12 , . . .
WB:
sub $11, . . .
MEM/WB
IF:
after<1>
000000
1010
11001100
000000
1010
1010
11
00
1010
00
00
00
11
00
PC
add
ContrControlol
9
11
8
Instruction
[20–16]
Instruction
[15–0]
Instruction
[15–11]
X
$9
$8
$7
$6
X
11 10
14
12 11
13
M
em
W
rM
em
W
rit
eite
MemReadMemRead
M
em
W
r
M
em
W
rit
eite
Clock 6
Clock 5
M
u
x
00
11
M
u
x
0
11
M
u
x
11
0
M
u
x
00
1
M
u
x
0
1
M
u
x
0
11
M
u
x
0
1
M
u
x
00
Add
Add
Read
register 1
Read
register 2
Write
register
Read
register 1
Read
register 2
Write
register
Add AddAdd
resulresultt
ALU
result
ALU
ZeroZero
Add AddAdd
resultresult
12
X
X
EX/MEMID/E X
result
ALU
6
7
10
$6 $4
$5$7
X
X
13
X
X
13 12
WBWB
EXEX
MM
ContrControleole
ALUALU
Memória de
instrução
EndereçoEndereço Ler
dados 1
Ler
dados 2
Escrever
dados
Endereço
EscreEscrevverer
dadosdados
Ler
dados 1
Ler
dados 2
Escrever
dados
LerLer
dadosdados
EndereçoEndereço
Registradores
Exten-
são de
sinal
Memória de
instrução
Registradores
Memória de
dados
Exten-
são de
sinal
EscreEscrevverer
dadosdados
LerLer
dadosdados
EndereçoEndereço
Memória de
dados
ContrControleole
ALUALU
FIGURA 6.14.7 Ciclos de clock 5 e 6. Com add, a instrução final neste exemplo, entrando em IF no caminho superi-
or, todas as instruções estão ocupadas. Escrevendo os dados de MEM/WB no registrador 10, lw termina; os dados e o nú-
mero do registrador estão emMEM/WB. No mesmo ciclo de clock, sub envia a diferença em EX/MEM para MEM/WB, e
o restante das instruções se move para a frente. No ciclo de clock seguinte, sub seleciona o valor emMEM/WB para escre-
ver no registrador número 11, novamente encontrado em MEM/WB. As instruções restantes brincam de siga-o-líder: a
ALU calcula o OR de $6 e $7 para a instrução or no estágio EX, e os registradores $8 e $9 são lidos no estágio ID para a ins-
trução add. As instruções após add aparecem como inativas, só para enfatizar o que ocorre para as cinco instruções no
exemplo. A frase “after<i>” significa a i-ésima instrução após add.
Aprofundando o aprendizado 6-14-9
InstrInstructionuction
[20–16][20–16]
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrcALUSrc
4
InstrInstructionuction
[15–0][15–0]
Shift
left 2R
eg
W
r
R
eg
W
rit
eite
MemReadMemRead
ContrControlol
InstrInstructionuction
[15–11][15–11]
EXEX
MM
WBWB
MM
WBWB
WBWB
IF/ID EX/MEMID/E X
ID:
after<1>
EX:
add $14 , . . .
MEM:
or $13 , . . .
WB:
and $12, . . .
MEM/WB
IF:
after<2>
000000
1010
11001100
000000
1010
1010
11
00
1010
00
00
00
11
00
0
PC
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrcALUSrc
4
ALU
result
Shift
left2R
eg
W
r
R
eg
W
rit
eite
MM
WBWB
WBWB
IF/ID
ID:
after<2>
EX:
after<1>
MEM:
and $14 , . . .
WB:
or $13, . . .
MEM/WB
IF:
after<3>
000000
0000
00000000
000000
0000
0000
00
00
1010
00
00
00
11
00
PC
ContrControlol
13
InstrInstructionuction
[20–16][20–16]
InstrInstructionuction
[15–0][15–0]
InstrInstructionuction
[15–11][15–11]
14 13
M
em
W
r
M
em
W
rit
eite
MemReadMemRead
M
em
W
r
M
em
W
rit
eite
Clock 8
Clock 7
M
u
x
00
11
M
u
x
00
11
M
u
x
11
0
M
u
x
00
11
M
u
x
00
11
M
u
x
0
1
M
u
x
00
11
M
u
x
1
Add
Add
Read
register 1
Read
register 2
Write
register
Read
register 1
Read
register 2
Write
register
Add AddAdd
resultresult
ALU
result
ALU
ZeroZero
Add AddAdd
resultresult
EX/MEMID/E X
ALU
ZeroZero
12
$8
$9
14
13 12
WBWB
EXEX
MM
In
st
ru
çã
o
In
st
ru
çã
o
Con-Con-
trtroleole
ALUALU
Memória de
instrução
Endereço Ler
dados 1
Ler
dados 2
Escrever
dados
EndereçoEndereço
EscreEscrevverer
dadosdados
LerLer
dadosdados 11
LerLer
dados 2dados 2
Escrever
dados
LerLer
dadosdadosEndereçoEndereço
Registradores
Exten-
são de
sinal
Memória de
instrução
Registradores
Memória de
dados
Exten-
são de
sinal
EscreEscrevverer
dadosdados
LerLer
dadosdados
EndereçoEndereço
Memória de
dados
ContrControleole
ALUALU
FIGURA 6.14.8 Ciclos de clock 7 e 8. No caminho de dados superior, a instrução add expõe o que há por trás, so-
mando os valores correspondentes aos registradores $8 e $9 durante o estágio EX. O resultado da instrução or é passado de
EX/MEM para MEM/WB no estágio MEM, e o estágio WB escreve o resultado da instrução and emMEM/WB para o re-
gistrador $12. Observe que os sinais de controle estão inativos (em 0) no estágio ID, pois nenhuma instrução está sendo
executada. No ciclo de clock seguinte (desenho inferior), o estágioWB escreve o resultado no registrador $13, completan-
do assim o or, e o estágio MEM passa a soma do add em EX/MEM para MEM/WB. As instruções após o add aparecem
como inativas por questões pedagógicas.
6-14-10 Aprofundando o aprendizado ELSEVIER
WBWB
EXEX
MM
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrALUSrcc
4
ZeroZero
Shift
left 2R
eg
W
r
R
eg
W
rit
eite
MM
WBWB
WBWB
In
st
r
In
st
ru
çã
o
u
çã
o
IF/ID
ID:
after<3>
EX:
after<2>
MEM:
after<1>
WB:
add $14, . . .
MEM/WB
IF:
after<4>
000000
0000
00000000
000000
1010
0000
00
00
1010
00
00
00
11
00
PC
ContrControlol
14
InstrInstructionuction
[20–16][20–16]
InstrInstructionuction
[15–0][15–0]
InstrInstructionuction
[15–11][15–11]
14
MemReadMemRead
M
em
W
r
M
em
W
rit
eite
Clock 9
M
u
x
00
11
M
u
x
00
11
M
u
x
1
0
M
u
x
00
11
Add
Read
register 1
Read
register 2
Write
register
Add AddAdd
resultresult
EX/MEMID/EX
ALUALU
resultresult
ALU
ContrControleole
ALUALU
EndereçoEndereço
EscreEscrevverer
dadosdados
LerLer
dadosdados 11
LerLer
dados 2dados 2
Escrever
dados
LerLer
dadosdados
EndereçoEndereço
Memória de
instrução
Registradores
Memória de
dados
Exten-
são de
sinal
FIGURA 6.14.9 Ciclo de clock 9. O estágio WB escreve a soma que se encontra emMEM/WB no registrador $14,
completando o add e a seqüência de cinco instruções. As instruções após add aparecem como inativas por questões pe-
dagógicas.
M
em
to
R
eg
M
em
to
R
eg
ALUOpALUOp
BrBranchanch
RegDstRegDst
ALUSrALUSrcc
4
ShiftShift
leftleft 22R
eg
W
r
R
eg
W
rit
eite
MM
WBWB
WBWB
IF/ID
ID: EX: MEM: WB:
MEM/WB
IF:
000000
0000
00000000
000000
1010
0000
00
00
0000
00
00
00
00
00
PC
ContrControlol
InstrInstructionuction
[20–16][20–16]
InstrInstructionuction
[15–0][15–0]
InstrInstructionuction
[15–11][15–11]
MemReadMemRead
M
em
W
r
M
em
W
rit
eite
Clock
M
u
x
00
11
MM
uu
xx
00
11
MM
uu
xx
11
00
MM
uu
xx
00
11
Add
ReadRead
register 1register 1
ReadRead
register 2register 2
WrWriteite
registerregister
AdAddd AddAdd
resultresult
EX/MEMID/EX
ALUALU
resultresult
ALUALU
ZeroZero
WBWB
EXEX
MM
In
st
r
In
st
r u
çã
o
u
çã
o
Con-Con-
trtroleole
ALUALU
Endereço
EscreEscrevverer
dadosdados
LerLer
dadosdados 11
LerLer
dados 2dados 2
EscreEscrevverer
dadosdados
LerLer
dadosdados
EndereçoEndereçoMemória deinstrução
RegistradoresRegistradores
Memória deMemória de
dadosdados
Exten-
são de
sinal
FIGURA 6.14.10 Um diagrama de pipeline com ciclo único de clock em branco, com controle.
Ilustrando pipelines com forwarding
6.16 [20] <§6.4> Podemos usar os diagramas de pipeline de ciclo único de clock para mostrar
como funciona o forwarding, e também como o controle ativa os caminhos de forwarding. Considere
a seqüência de código a seguir, em que as dependências foram destacadas:
sub $2, $1, $3
and $4, $2, $5
or $4, $4, $2
add $9, $4, $2
As Figuras 6.14.11 e 6.14.12 mostram os eventos nos ciclos de clock 3-6 da execução dessas ins-
truções. No ciclo de clock 4, a unidade de forwarding vê a escrita da instrução sub do registrador $2
no estágio MEM, enquanto a instrução and no estágio EX está lendo o registrador $2. A unidade de
forwarding seleciona o registrador de pipeline EX/MEM no lugar do registrador de pipeline ID/EX
como entrada superior para a ALU, a fim de obter o valor apropriado para o registrador $2. A instru-
ção or a seguir lê o registrador $4, que é escrito pela instrução and, e o registrador $2, escrito pela ins-
trução sub. Assim, no ciclo de clock 5, a unidade de forwarding seleciona o registrador de pipeline
EX/MEM para a entrada superior da ALU e o registrador de pipeline MEM/WB para a entrada infe-rior da ALU. A instrução add a seguir lê o registrador $4, o destino da instrução and, e o registrador
$2, que a instrução sub já escreveu. Observe que as duas instruções anteriores escrevem o registrador
$4, de modo que a unidade de forwarding precisa selecionar o registrador imediatamente anterior
(estágioMEM). No ciclo de clock 6, a unidade de forwarding seleciona assim o registrador de pipeli-
ne EX/MEM, contendo o resultado da instrução or, para a entrada superior da ALU, mas usa o valor,
que não é de forwarding, do registrador para a entrada inferior da ALU. Usando o diagrama vazio da
Figura 6.14.13 e o formato da Figura 6.14.11, desenhe os diagramas de pipeline com ciclo único de
clock para os ciclos de 3 a 5 durante a execução desta seqüência:
add $1, $1, $3
add $4, $2, $1
and $5, $4, $1
Ilustrando pipelines com forwarding e stalls
6.24 [20] <§6.5> Podemos usar os diagramas de pipeline com ciclo único de clock para mostrar
como funciona o controle de stalls. As Figuras de 6.14.14 a 6.14.16 mostram o diagrama de ciclo
único para os clocks de 2 a 7 para a seguinte seqüência de código (dependências destacadas).
lw $2, 20($1)
and $4, $2,$5
or $4, $4,$2
add $9, $4,$2
Usando o mesmo formato da Figura 6.14.15, ilustre a execução da seguinte seqüência para os ci-
clos de clock de 3 a 6. Use a Figura 6.14.17 para fazer o exercício.
lw $2, 20($1)
add $4, $5, $2
sub $4, $4, $2
Aprofundando o aprendizado 6-14-11
6-14-12 Aprofundando o aprendizado ELSEVIER
FIGURA 6.14.11 Ciclos de clock 3 e 4 da seqüência de instruções no Exercício 6.16. As linhas mais es-
pessas são aquelas ativas em um ciclo de clock, e os números de registradores em itálico e destaque indicam um hazard.
A unidade de forwarding é destacada sombreando-a quando estiver realizando forwarding de dados para a ALU. As ins-
truções antes de sub aparecem como inativas só para enfatizar o que ocorre com as quatro instruções no exemplo. Os no-
mes de operando são usados em EX para o controle do forwarding; assim, eles estão incluídos no rótulo da instrução
para EX. Os nomes de operando não são necessários emMEM ouWB, de modo que ... é utilizado. Compare isso com as
Figuras de 6.14.6 a 6.14.9, mostrando o caminho de dados sem forwarding, onde ID é o último estágio a precisar de in-
formações do operando.
Aprofundando o aprendizado 6-14-13
FIGURA 6.14.12 Ciclos de clock 5 e 6 da seqüência de instruções no Exercício 6.16. A unidade de for-
warding é destacada quando está realizando forwarding de dados para a ALU. As duas instruções após add aparecem como
inativas só para enfatizar o que ocorre para as quatro instruções no exemplo. As linhas em negrito são aquelas ativas em um
ciclo de clock, e os números de registrador em itálico e coloridos indicam um hazard.
6-14-14 Aprofundando o aprendizado ELSEVIER
FIGURA 6.14.13 Diagrama de pipeline em branco com caminhos de dados de forwarding.
Aprofundando o aprendizado 6-14-15
FIGURA 6.14.14 Ciclos de clock 2 e 3 da seqüência de instruções no Exercício 6.24 com um load substi-
tuindo sub. As linhas em negrito são aquelas ativas em um ciclo de clock, os números de registrador em itálico e em des-
taque indicam um hazard, e ... no lugar dos operandos significa que sua identidade é informação não necessária por esse es-
tágio. Os valores significativos das linhas de controle, registradores e números de registradores são rotulados nas figuras. A
instrução and deseja ler o valor criado pela instrução lw no ciclo de clock 3, de modo que a unidade de detecção de hazard
faz um stall nas instruções and e or. Em virtude disto, a unidade de detecção de hazard está destacada.
6-14-16 Aprofundando o aprendizado ELSEVIER
FIGURA 6.14.15 Ciclos de clock 4 e 5 da seqüência de instruções no Exercício 6.24 com um load substi-
tuindo sub. Abolha é inserida no pipeline no ciclo de clock 4, e depois a instrução and tem permissão para prosseguir no
ciclo de clock 5. A unidade de forwarding é destacada no ciclo de clock 5 porque está realizando forwarding de dados de lw
para a ALU. Observe que, no ciclo de clock 4, a unidade de forwarding realiza um forwarding do endereço do lw como se
fosse o conteúdo do registrador $2; isso se torna inofensivo pela inserção da bolha. As linhas mais espessas são aquelas ati-
vas em um ciclo de clock, e os números de registrador em itálico e destaque indicam um hazard.
Aprofundando o aprendizado 6-14-17
FIGURA 6.14.16 Ciclos de clock 6 e 7 da seqüência de instruções no Exercício 6.24 com um load substi-
tuindo sub. Observe que, diferente da Figura 6.14.12, o stall permite que o lw termine, e, por isso, não existe forwarding
deMEM/WB no ciclo de clock 6. O registrador $4 para o add no estágio EX ainda depende do resultado de or no EX/MEM,
de modo que a unidade de forwarding passa o resultado para a ALU. As linhas em negrito mostram as linhas de entrada da
ALU ativas em um ciclo de clock, e os números de registrador em itálico indicam um hazard. As instruções após o add apa-
recem como inativas por questões pedagógicas.
Exercícios diversos
6.5 [5] <§6.1> Como poderíamos modificar o código a seguir para utilizar um delay slot?
Loop: lw $2, 100($3)
addi $3, $3, 4
beq $3, $4, Loop
6.10 [5] <§6.2> Para cada registrador de pipeline na Figura 6.22, rotule cada parte do registrador de
pipeline com o nome do valor carregado no registrador. Determine a extensão de cada campo em
bits. Por exemplo, o registrador de pipeline IF/ID contém dois campos, um deles sendo um campo de
instrução que possui 32 bits de largura.
6.11 [15] <§§3.6, 6.2> Usando a Figura 3.13 como base, descubra uma estrutura de caminho de da-
dos em pipeline razoável para a adição de ponto flutuante, e integre os registradores de ponto flutu-
ante e a memória de dados à sua figura para produzir uma figura semelhante à Figura 6.11, exceto
que seu diagrama também deve conter um pipeline alternativo para instruções de adição de ponto
flutuante. Não se preocupe muito com os atrasos associados a cada uma das funções na Figura 3.13.
Você deverá simplesmente assumir que a soma dos atrasos émuito grande e, por isso, exige que você
use 2 ou 3 ciclos para realizar a adição de ponto flutuante. A adição deverá ser mantida em pipeline,
de modo que uma nova instrução de adição de ponto flutuante possa ser iniciada a cada ciclo, supon-
do que não haja dependências (você pode ignorar as dependências para esse problema).
6.20 [20] <§§6.4, 6.5> Considere uma seqüência de instruções utilizada para uma cópia da memó-
ria para a memória:
lw $2, 100($5)
sw $2, 200($6)
A Seção de “Detalhamento” da página 310 do texto discute essa situação e indica que o hardware
de forwarding adicional pode melhorar seu desempenho. Mostre os acréscimos necessários ao cami-
nho de dados da Figura 6.33 para permitir que um código como esse seja executado sem stalls. Inclua
6-14-18 Aprofundando o aprendizado ELSEVIER
FIGURA 6.14.17 Diagrama de pipeline em branco com hardware de stall.
equações de forwarding (como aquelas que aparecem nas páginas 306-310) para todos os sinais de
controle para quaisquer multiplexadores novos ou modificados no seu caminho de dados. Finalmen-
te, reescreva a fórmula de stall da página 311 demodo que essa seqüência de código não gere stall.
6.25 [20] <§6.5> A unidade de forwarding poderia ser movida para o estágio de ID e as decisões de
forwarding poderiam ser feitas mais cedo. Os resultados dessas decisões precisariam ser passados
adiante com a instrução e utilizados no estágio EX quando o forwarding real ocorresse. Essa modifi-
cação agilizaria o estágio EX e poderia permitir uma possível melhoria no tempo do ciclo. Realize a
modificação. Ofereça um caminho de dados revisado e uma descrição das mudanças necessárias.
Como o registrador ID/EX mudou? Ofereça novas equações de forwarding para substituir as que
aparecem nas páginas 306-310.
6.26 [15] <§§6.2–6.5> Nos exercícios do Capítulo 5, exploramos as implicações de ter instruções
load e store sem deslocamento. Como essa modificação no conjunto deinstruções afetaria uma im-
plementação em pipeline? Descreva as mudanças no caminho de dados e o impacto sobre o desem-
penho. Não se esqueça de incluir uma discussão sobre forwarding na sua resposta.
6.27 [10] <§§6.2–6.5> A ISA 80x86 possui instruções aritméticas que podem acessar a memória
diretamente. Escreva um ou dois parágrafos explicando por que seria difícil incluir essa instrução no
pipelineMIPS descrito neste capítulo. (Dica: você pode ter de incluir um oumais estágios adicionais
no pipeline.)
6.28 [30] <§6.5, Apêndice C>Usando o Apêndice C e a resposta do Exercício 6.23, projete o hard-
ware para implementar a unidade de forwarding. (Dica: para decidir se os números de registrador são
iguais, tente usar uma porta OR exclusiva. Veja a Seção de “Detalhamento” na página B-36 do
Apêndice B.)
6.31 [10] <§6.6> Uma extensão do conjunto de instruções MIPS possui duas novas instruções,
chamadas movn (move if not zero) e movz (move if zero). Por exemplo, a instrução movn $8, $11,
$4 copia o conteúdo do registrador 11 para o registrador 8, desde que o valor no registrador 4 não seja
zero (caso contrário, ela não faz nada). A instrução movz é semelhante, mas a cópia ocorre somente
se o valor do registrador for zero.Mostre como usar as novas instruções para colocar o que for maior,
o valor do registrador 8 ou o valor do registrador 9, no registrador 10. Se os valores forem iguais, co-
pie qualquer um para o registrador 10. Você pode usar o registrador 1 como um registrador extra para
uso temporário. Não use quaisquer desvios condicionais.
6.32 [10] <§6.6> A solução para o Exercício 6.31 deverá envolver a execução de menos instruções
do que seriam necessárias usando desvios condicionais. No entanto, às vezes, a reescrita do código
para usar movn e movz em vez de desvios condicionais não reduz o número de instruções executa-
das. Apesar disso, mesmo que o uso de movn e movz não reduza o número de instruções executadas,
isso ainda pode tornar o programa mais rápido se estiver sendo executado em um caminho de dados
em pipeline. Explique por quê.
Aprofundando o aprendizado 6-14-19

Outros materiais