O documento discute a arquitetura de datapath de ciclo único e pipeline. Ele explica como construir um datapath para executar cada instrução em um único ciclo de clock, necessitando de memórias separadas para instruções e dados e de um multiplexador para compartilhar recursos entre diferentes tipos de instruções. Também aborda o controle da ALU e como cada tipo de instrução é conectado ao datapath.
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...
(ACH2055) Arquitetura de Computadores - Aula 06
1. Arquitetura de Computadores
ACH2055
Aula 06 – Datapath de Ciclo ´Unico e Pipeline
Norton Trevisan Roman
(norton@usp.br)
30 de setembro de 2019
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 1 / 31
2. Construindo o Datapath
Prepara¸c˜ao
Nosso datapath deve executar
cada instru¸c˜ao num ´unico ciclo
do clock
Nenhum de seus recursos podem ser
usados mais que 1× por instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 2 / 31
3. Construindo o Datapath
Prepara¸c˜ao
Nosso datapath deve executar
cada instru¸c˜ao num ´unico ciclo
do clock
Nenhum de seus recursos podem ser
usados mais que 1× por instru¸c˜ao
Por isso precisaremos de 2
mem´orias
Uma para as instru¸c˜oes e outra para
os dados
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 2 / 31
4. Construindo o Datapath
Prepara¸c˜ao
Nosso datapath deve executar
cada instru¸c˜ao num ´unico ciclo
do clock
Nenhum de seus recursos podem ser
usados mais que 1× por instru¸c˜ao
Por isso precisaremos de 2
mem´orias
Uma para as instru¸c˜oes e outra para
os dados
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 2 / 31
5. Construindo o Datapath
Prepara¸c˜ao
Al´em disso, os componentes do datapath precisar˜ao
ser compartilhados entre as diferentes fam´ılias de
instru¸c˜oes
Precisaremos de uma maneira de controlar quando um
componente ser´a usado
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 3 / 31
6. Construindo o Datapath
Prepara¸c˜ao
Al´em disso, os componentes do datapath precisar˜ao
ser compartilhados entre as diferentes fam´ılias de
instru¸c˜oes
Precisaremos de uma maneira de controlar quando um
componente ser´a usado
Precisaremos ent˜ao de um multiplexador
Al´em de sinais de controle, para selecionar dentre as
m´ultiplas entradas
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 3 / 31
7. Construindo o Datapath
Prepara¸c˜ao: Multiplexador
Trata-se de um seletor
Sua sa´ıda (C) ´e uma das entradas (A ou B), selecionada por
uma linha de controle (S)
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 4 / 31
8. Construindo o Datapath
Prepara¸c˜ao: Multiplexador
Trata-se de um seletor
Sua sa´ıda (C) ´e uma das entradas (A ou B), selecionada por
uma linha de controle (S)
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 4 / 31
9. Construindo o Datapath
Unindo instru¸c˜oes de mem´oria e tipo-R
Do que precis´avamos para Tipo-R e Mem´oria?
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 5 / 31
10. Construindo o Datapath
Unindo instru¸c˜oes de mem´oria e tipo-R
Do que precis´avamos para Tipo-R e Mem´oria?
Tipo R
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 5 / 31
11. Construindo o Datapath
Unindo instru¸c˜oes de mem´oria e tipo-R
Do que precis´avamos para Tipo-R e Mem´oria?
Tipo R
+
lw e sw
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 5 / 31
12. Construindo o Datapath
Unindo instru¸c˜oes de mem´oria e tipo-R
Ent˜ao...
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 6 / 31
13. Construindo o Datapath
Unindo instru¸c˜oes de mem´oria e tipo-R
Ent˜ao...
Fonte: Adaptado de [1]
add $3, $5, $1
$5
$1
$3
($5)
($1)
0
add
1
0
0
0
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 6 / 31
14. Construindo o Datapath
Unindo instru¸c˜oes de mem´oria e tipo-R
Ent˜ao...
Fonte: Adaptado de [1]
lw $26, 12($30)
$30
$26
($30)
1
add
1
0
1
1
12
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 6 / 31
15. Construindo o Datapath
Unindo instru¸c˜oes de mem´oria e tipo-R
Ent˜ao...
Fonte: Adaptado de [1]
sw $2, 12($5)
$5
$2
($5)
($2)
1
add
0
1
012
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 6 / 31
16. Construindo o Datapath
Unindo tudo
Que mais falta?
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 7 / 31
17. Construindo o Datapath
Unindo tudo
Que mais falta?
Buscar as instru¸c˜oes
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 7 / 31
18. Construindo o Datapath
Unindo tudo
Que mais falta?
Buscar as instru¸c˜oes
Fonte: [1]
beq
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 7 / 31
19. Construindo o Datapath
Unindo tudo
Para unir estes ao circuito das instru¸c˜oes tipo-R e
de mem´oria, contudo, precisamos da unidade de
controle
Esta deve ser capaz de:
Gerar um sinal de escrita para cada elemento de estado
Gerar um sinal de controle para cada multiplexador
Controlar a ALU
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 8 / 31
20. Construindo o Datapath
Controle da ALU
Vamos implementar as seguintes fun¸c˜oes
l´ogico-aritm´eticas:
Linhas de Controle da ALU Fun¸c˜ao
0000 and
0001 or
0010 add
0110 sub
0111 slt Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 9 / 31
21. Construindo o Datapath
Controle da ALU
Podemos gerar esses sinais usando como entrada
O campo function da instru¸c˜ao
E um campo de controle de 2 bits, denominado ALUOp
Indicando se a opera¸c˜ao ´e um add (00), sub (01), ou determinada
pela opera¸c˜ao codificada no campo funct (10)
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 10 / 31
22. Construindo o Datapath
Controle da ALU
Podemos gerar esses sinais usando como entrada
O campo function da instru¸c˜ao
E um campo de controle de 2 bits, denominado ALUOp
Indicando se a opera¸c˜ao ´e um add (00), sub (01), ou determinada
pela opera¸c˜ao codificada no campo funct (10)
Fonte: [1]
O sinal de 4 bits ´e usado ent˜ao para controlar
diretamente a ALU
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 10 / 31
24. Construindo o Datapath
Controle da ALU
Fonte: [1]
Note que lw e sw usam add, beq usa sub, e as
demais opera¸c˜oes s˜ao definidas por funct
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 11 / 31
25. Construindo o Datapath
Controle da ALU
Fonte: [1]
Os sinais de ALUOp s˜ao gerados na unidade de
controle principal (mais adiante veremos)
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 12 / 31
26. Construindo o Datapath
Unindo tudo
Temos ent˜ao o controle da ALU
Que recebe sua entrada da instru¸c˜ao e do controle principal
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 13 / 31
27. Construindo o Datapath
Unindo tudo
Temos ent˜ao o controle da ALU
Que recebe sua entrada da instru¸c˜ao e do controle principal
E como cada instru¸c˜ao se conecta ao datapath?
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 13 / 31
28. Construindo o Datapath
Unindo tudo
Temos ent˜ao o controle da ALU
Que recebe sua entrada da instru¸c˜ao e do controle principal
E como cada instru¸c˜ao se conecta ao datapath?
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 13 / 31
29. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
30. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=0
31:26
rs
25:21
rt
20:16
rd
15:11
shamt
10:6
funct
5:0
Tipo R
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
31. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=0
31:26
rs
25:21
rt
20:16
rd
15:11
shamt
10:6
funct
5:0
Tipo R
rs
rt
rd
1
1
0
funct
10
0
0
0
0
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
32. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=35
31:26
rs
25:21
rt
20:16
deslocamento
15:0
lw
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
33. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=35
31:26
rs
25:21
rt
20:16
deslocamento
15:0
lw
rs
rt
0
1
1
00
0
1
1
0
desl.
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
34. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=43
31:26
rs
25:21
rt
20:16
deslocamento
15:0
sw
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
35. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=43
31:26
rs
25:21
rt
20:16
deslocamento
15:0
sw
rs
rt
0
1
00
1
0
0
desl.
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
36. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=4
31:26
rs
25:21
rt
20:16
deslocamento
15:0
beq
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
37. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=4
31:26
rs
25:21
rt
20:16
deslocamento
15:0
beq
rs
rt
0
0
01
0
0
?
desl.
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
38. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=4
31:26
rs
25:21
rt
20:16
deslocamento
15:0
beq
Para beq ainda
faltam coisas...rs
rt
0
0
01
0
0
?
desl.
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
39. Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
op=4
31:26
rs
25:21
rt
20:16
deslocamento
15:0
beq
Se PCSrc E Zero,
ent˜ao n˜ao usa PC+4rs
rt
0
0
01
0
0
?
desl.
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 31
40. Construindo o Datapath
Unindo tudo: unidade de controle principal
H´a tamb´em uma s´erie
de sinais de controle no
datapath
PCSrc, RegWrite,
ALUSrc, MemWrite,
MemRead, MemtoReg,
RegDst e ALUOp
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 15 / 31
41. Construindo o Datapath
Unindo tudo: unidade de controle principal
H´a tamb´em uma s´erie
de sinais de controle no
datapath
PCSrc, RegWrite,
ALUSrc, MemWrite,
MemRead, MemtoReg,
RegDst e ALUOp
Al´em do sinal do clock,
Fonte: Adaptado de [1]
impl´ıcito em todo elemento de estado
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 15 / 31
42. Construindo o Datapath
Unindo tudo: unidade de controle principal
`A exce¸c˜ao desse sinal
do clock, todos os
demais s˜ao controlados
pela unidade de
controle principal
Usando como entrada os
6 bits de opcode da
instru¸c˜ao (n˜ao mostrados
at´e agora)
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 16 / 31
43. Construindo o Datapath
Unindo tudo: unidade de controle principal
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 17 / 31
44. Construindo o Datapath
Unindo tudo: unidade de controle principal
Fonte: [1]
Note que o sinal de
PCSrc foi substitu´ıdo
por Branch && Zero
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 17 / 31
45. Construindo o Datapath
Unindo tudo: unidade de controle principal
Fonte: [1]
Em instru¸c˜oes beq,
Branch ´e feito 1,
nas demais ´e 0
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 17 / 31
46. Construindo o Datapath
Unindo tudo: unidade de controle principal
Fonte: [1]
ALUOp est´a em
destaque por ser um
conjunto de 2 sinais
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 17 / 31
47. Construindo o Datapath
Unidade de controle: Tabela verdade
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 18 / 31
48. Construindo o Datapath
Unidade de controle: Tabela verdade
Fonte: [1]
Op[5:0] corres-
ponde aos bits
31:26 (opcode)
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 18 / 31
49. Construindo o Datapath
Unidade de controle: Tabela verdade
Fonte: [1]
X significa que
n˜ao importa o
valor do sinal
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 18 / 31
50. Construindo o Datapath
Unindo tudo: jumps
Falta ainda implementar j (Opcode 2)
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 19 / 31
51. Construindo o Datapath
Unindo tudo: jumps
Falta ainda implementar j (Opcode 2)
Fonte: [1]
Para isso, temos que
Deslocar, em 2 bits `a esquerda, os 26 bits do campo de
endere¸co da instru¸c˜ao
Substituir os 28 bits menos significativos de PC+4 por esses
bits deslocados
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 19 / 31
52. Construindo o Datapath
Unindo tudo: jumps
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 20 / 31
53. Construindo o Datapath
Unindo tudo: jumps
Fonte: [1]
Adicionamos a parte do
deslocamento de bits
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 20 / 31
54. Construindo o Datapath
Unindo tudo: jumps
Fonte: [1]
Concatenamos o
resultado ao PC+4
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 20 / 31
55. Construindo o Datapath
Unindo tudo: jumps
Fonte: [1]
Adicionamos linha de
controle, para controlar
o novo multiplexador
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 20 / 31
56. Construindo o Datapath
Unindo tudo: jumps
Fonte: [1]
Determinando se o PC
receber´a o endere¸co
do jump ou n˜ao
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 20 / 31
57. Construindo o Datapath
Unindo tudo: jumps
Fonte: [1]
Jump ser´a 1 somente
se o opcode for 2
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 20 / 31
58. Datapath de Ciclo ´Unico
Problemas
Embora correto, esse tipo de projeto ´e ineficiente
O ciclo de clock precisa ter o mesmo comprimento, para
toda instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 21 / 31
59. Datapath de Ciclo ´Unico
Problemas
Embora correto, esse tipo de projeto ´e ineficiente
O ciclo de clock precisa ter o mesmo comprimento, para
toda instru¸c˜ao
Ent˜ao o caminho mais longo poss´ıvel no processador
ir´a determinar seu tamanho
E este ser´a certamente um lw, uma vez que ele usa a
mem´oria de instru¸c˜oes, o arquivo de registradores (para
leitura e escrita final), a ALU e a mem´oria de dados
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 21 / 31
60. Datapath de Ciclo ´Unico
Solu¸c˜ao
Pipelining
Fonte: https://asia.nikkei.com/Business/
Business-deals/Australia-rejects-Hong-Kong
-group-s-bid-for-pipeline-operator
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 22 / 31
61. Datapath de Ciclo ´Unico
Solu¸c˜ao
Pipelining
T´ecnica de implementa¸c˜ao
na qual m´ultiplas
instru¸c˜oes s˜ao sobrepostas
durante a execu¸c˜ao
Melhora assim a eficiˆencia
pela execu¸c˜ao de
m´ultiplas instru¸c˜oes
simultaneamente
Fonte: https://asia.nikkei.com/Business/
Business-deals/Australia-rejects-Hong-Kong
-group-s-bid-for-pipeline-operator
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 22 / 31
62. Pipelining
Analogia – Lavar roupas
Est´agios da tarefa:
Coloca-se a roupa na
lava-roupas
Quando pronta, passa-se `a
secadora
Quando pronta, dobra-se
a roupa
Ao final guarda-se a roupa
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 23 / 31
63. Pipelining
Analogia – Lavar roupas
E o que acontece quando precisamos repetir esse
procedimento?
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 24 / 31
64. Pipelining
Analogia – Lavar roupas
E o que acontece quando precisamos repetir esse
procedimento?
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 24 / 31
65. Pipelining
Analogia – Lavar roupas
Fonte: [1]
N˜ao teria como deixar isso mais eficiente?
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 25 / 31
66. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 26 / 31
67. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Aproveitamos os recursos
liberados em uma
tarefa para a seguinte
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 26 / 31
68. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Note que isso n˜ao
reduz o tempo indi-
vidual de cada tarefa
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 26 / 31
69. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Cada uma ainda precisa
completar seus 4
est´agios (sua latˆencia)
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 26 / 31
70. Pipelining
Analogia – Lavar roupas
Fonte: [1]
No entanto, pela
sobreposi¸c˜ao de ta-
refas, na m´edia elas
ficaram mais r´apidas
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 26 / 31
71. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Pois foram paralelizadas
pela sobreposi¸c˜ao, au-
mentando assim a vaz˜ao
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 26 / 31
72. Pipelining
Analogia – Lavar roupas
Fonte: [1]
E reduzindo o tempo
total para com-
pletar o trabalho
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 26 / 31
73. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Sem pipelining
Com pipelining
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 27 / 31
74. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Sem pipelining
Com pipelining
Com o tempo, a
melhoria obtida se
aproxima do n´umero
de est´agios da pipeline
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 27 / 31
75. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Sem pipelining
Com pipelining Isso se todos os
est´agios gastarem
o mesmo tempo
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 27 / 31
76. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Sem pipelining
Com pipelining Ent˜ao, nesse exemplo,
o aumento na
velocidade foi de ≈ 4×
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 27 / 31
77. Pipelining
Analogia – Lavar roupas
Fonte: [1]
Sem pipelining
Com pipelining Com varia¸c˜ao no
in´ıcio e fim do
pacote de tarefas
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 27 / 31
78. Pipelining
De volta a MIPS
Ser´a que haveria est´agios tamb´em com as instru¸c˜oes
MIPS?
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 28 / 31
79. Pipelining
De volta a MIPS
Ser´a que haveria est´agios tamb´em com as instru¸c˜oes
MIPS?
1 Buscar a instru¸c˜ao da mem´oria
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 28 / 31
80. Pipelining
De volta a MIPS
Ser´a que haveria est´agios tamb´em com as instru¸c˜oes
MIPS?
1 Buscar a instru¸c˜ao da mem´oria
2 Ler registradores enquanto decodifica a instru¸c˜ao
O fato das instru¸c˜oes MIPS terem o mesmo tamanho torna f´acil sua
busca no primeiro est´agio e sua decodifica¸c˜ao no segundo
Por elas variarem pouco, podemos come¸car a ler os registradores ao
mesmo tempo em que determinamos o tipo da instru¸c˜ao buscada
Sem essa simetria, a decodifica¸c˜ao precisaria ser feita em um est´agio
`a parte
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 28 / 31
81. Pipelining
De volta a MIPS
3 Executar a opera¸c˜ao ou calcular um endere¸co
Operandos de mem´oria somente aparecem em loads e stores em
MIPS, tornando poss´ıvel calcular o endere¸co de mem´oria nesse
est´agio e acess´a-la no seguinte
Operar nos operandos em mem´oria (x86) exigiria 3 passos
(endere¸co, mem´oria e execu¸c˜ao), em vez de 2 (execu¸c˜ao e mem´oria)
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 29 / 31
82. Pipelining
De volta a MIPS
3 Executar a opera¸c˜ao ou calcular um endere¸co
Operandos de mem´oria somente aparecem em loads e stores em
MIPS, tornando poss´ıvel calcular o endere¸co de mem´oria nesse
est´agio e acess´a-la no seguinte
Operar nos operandos em mem´oria (x86) exigiria 3 passos
(endere¸co, mem´oria e execu¸c˜ao), em vez de 2 (execu¸c˜ao e mem´oria)
4 Acessar operandos na mem´oria
Uma vez que os operandos precisam estar alinhados na mem´oria,
n˜ao precisamos nos preocupar com uma instru¸c˜ao exigir 2 acessos `a
mem´oria. Basta um est´agio
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 29 / 31
83. Pipelining
De volta a MIPS
5 Escrever o resultado em um registrador
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 30 / 31
84. Pipelining
De volta a MIPS
5 Escrever o resultado em um registrador
O conjunto de instru¸c˜oes MIPS foi projetado para
execu¸c˜ao em pipeline
Ent˜ao com certeza podemos melhorar nosso datapath com
pipelining
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 30 / 31
85. Referˆencias
1 Patterson, D.A.; Hennessy, J.L. (2013): Computer Organization and
Design: The Hardware/Software Interface. Morgan Kaufmann. 5a
ed.
Para detalhes sobre as partes do circuito consulte tamb´em o
Apˆendice B
2 https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/
Simulador de uma arquitetura de ciclo ´unico
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 31 / 31