SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Construindo o Datapath
Unindo tudo
Que mais falta?
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 7 / 31
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
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
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
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
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
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
Construindo o Datapath
Controle da ALU
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 11 / 31
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
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
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
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
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
Construindo o Datapath
Unindo tudo
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 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
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 14 / 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
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
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
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
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
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
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
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
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
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
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
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
Construindo o Datapath
Unindo tudo: unidade de controle principal
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 17 / 31
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
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
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
Construindo o Datapath
Unidade de controle: Tabela verdade
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 18 / 31
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
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
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
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
Construindo o Datapath
Unindo tudo: jumps
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 20 / 31
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
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
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
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
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
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
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
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
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
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
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
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
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
Pipelining
Analogia – Lavar roupas
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 26 / 31
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
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
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
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
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
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
Pipelining
Analogia – Lavar roupas
Fonte: [1]
Sem pipelining
Com pipelining
Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 27 / 31
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Semelhante a (ACH2055) Arquitetura de Computadores - Aula 06

MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
LuanaBatista74
 

Semelhante a (ACH2055) Arquitetura de Computadores - Aula 06 (9)

Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
1 harware3050
1 harware30501 harware3050
1 harware3050
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 
Monitoramento de Redes TCP/IP - Monografia
Monitoramento de Redes TCP/IP - MonografiaMonitoramento de Redes TCP/IP - Monografia
Monitoramento de Redes TCP/IP - Monografia
 
Série: Descomplicando o Azure. Aula 1 - Introdução ao Azure
Série: Descomplicando o Azure. Aula 1 - Introdução ao AzureSérie: Descomplicando o Azure. Aula 1 - Introdução ao Azure
Série: Descomplicando o Azure. Aula 1 - Introdução ao Azure
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
 

Mais de Norton Trevisan Roman

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 

Último

O Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhosoO Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhoso
VALMIRARIBEIRO1
 
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
GisellySobral
 
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
azulassessoria9
 
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
aulasgege
 
História concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdfHistória concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdf
GisellySobral
 

Último (20)

Modelos de Inteligencia Emocional segundo diversos autores
Modelos de Inteligencia Emocional segundo diversos autoresModelos de Inteligencia Emocional segundo diversos autores
Modelos de Inteligencia Emocional segundo diversos autores
 
Poema - Maio Laranja
Poema - Maio Laranja Poema - Maio Laranja
Poema - Maio Laranja
 
Formação T.2 do Modulo I da Formação HTML & CSS
Formação T.2 do Modulo I da Formação HTML & CSSFormação T.2 do Modulo I da Formação HTML & CSS
Formação T.2 do Modulo I da Formação HTML & CSS
 
Tema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdfTema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdf
 
transcrição fonética para aulas de língua
transcrição fonética para aulas de línguatranscrição fonética para aulas de língua
transcrição fonética para aulas de língua
 
O Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhosoO Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhoso
 
Livro infantil: A onda da raiva. pdf-crianças
Livro infantil: A onda da raiva. pdf-criançasLivro infantil: A onda da raiva. pdf-crianças
Livro infantil: A onda da raiva. pdf-crianças
 
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
 
Sequência didática Carona 1º Encontro.pptx
Sequência didática Carona 1º Encontro.pptxSequência didática Carona 1º Encontro.pptx
Sequência didática Carona 1º Encontro.pptx
 
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
 
Poema - Aedes Aegypt.
Poema - Aedes Aegypt.Poema - Aedes Aegypt.
Poema - Aedes Aegypt.
 
QUESTÃO 4 Os estudos das competências pessoais é de extrema importância, pr...
QUESTÃO 4   Os estudos das competências pessoais é de extrema importância, pr...QUESTÃO 4   Os estudos das competências pessoais é de extrema importância, pr...
QUESTÃO 4 Os estudos das competências pessoais é de extrema importância, pr...
 
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
 
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
 
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
 
História concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdfHistória concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdf
 
Acróstico - Maio Laranja
Acróstico  - Maio Laranja Acróstico  - Maio Laranja
Acróstico - Maio Laranja
 
UFCD_10659_Ficheiros de recursos educativos_índice .pdf
UFCD_10659_Ficheiros de recursos educativos_índice .pdfUFCD_10659_Ficheiros de recursos educativos_índice .pdf
UFCD_10659_Ficheiros de recursos educativos_índice .pdf
 
Peça de teatro infantil: A cigarra e as formigas
Peça de teatro infantil: A cigarra e as formigasPeça de teatro infantil: A cigarra e as formigas
Peça de teatro infantil: A cigarra e as formigas
 
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...
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
  • 23. Construindo o Datapath Controle da ALU Fonte: [1] Norton Trevisan Roman (norton@usp.br) 30 de setembro de 2019 11 / 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