Buscar

AOC1-aula15

Prévia do material em texto

Arquitetura e Organização de 
Computadores I
Aula 15
Prof. Fábio Ramos
Arquitetura e Organização de 
Computadores I
• Tópicos a serem abordados na aula de hoje
1. Exercícios de implementação de instruções
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Implementar, nas organizações monociclo e multiciclo (dizer quantos
ciclos ela demora também), as seguintes instruções:
• slt (set on less than).
• bne (branch on not equal).
• addi (soma com imediato).
• sll (shift left logical).
– Instruções:
• Qualquer nova operação aritmética e lógica pode ser acrescentada na ULA, se
for necessária.
• Qualquer componente já existente pode ser aumentado ou replicado.
• Caso o controle exija mudança, explicitar quais sinais e estados (organização
multiciclo) devem ser acrescidos.
– No caso do monociclo, indicar que valores os sinais de controle devem possuir.
– No caso do multiciclo, se precisar acrescentar estados novos ou novos caminhos,
explicitar.
– Se a mudança for no controle da ULA, indicar isso na tabela do controle da ULA.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Formato das instruções:
31 26 25 21 20 16 15 11 10 6 5 0
opcode rs rt rd shamt functInstrução tipo R:
Instrução tipo I :
31 26 25 21 20 16 15 0
opcode rs rt deslocamento
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Assembly e linguagem de máquina:
31 26 25 21 20 16 15 11 10 6 5 0
0 18 19 17 0 42slt $s1, $s2, $s3:
bne $s1, $s2, 100:
31 26 25 21 20 16 15 0
5 17 18 25
addi $s1, $s2, 100:
31 26 25 21 20 16 15 0
8 18 17 100
31 26 25 21 20 16 15 11 10 6 5 0
0 0 18 17 10 0sll $s1, $s2, 10
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Controle da ULA:
ULAOp
Classe de 
instrução
ULA deve realizar
00 lw/sw adição
01 beq subtração
10 tipo R
depende do 
campo “funct”
11 - -
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
26Endereço
Instrução
lida
Memória 
de Instruções
PC
+
4
+
Desl.
à esq.
2 bits
M
U
X
0
1
FontePC
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
EscReg
Zero
Resultado
ULA
3
Exten-
são de 
sinal
3216
[25-21]
[20-16]
[15-11]
M
U
X
0
1
RegDst
[15-0]
M
U
X
0
1
ULAFonte
LerMem
EscMem
Endereço Dado 
lido
Dado a ser
escrito
Memória 
de dados
M
U
X
0
1
MemParaReg
Controle
[31-26]
Opera-
ção
da 
ULA
2
[5-0] 6
ULAOp
DvC
32
Desl.
à esq.
2 bits
26 28
PC+4[31-28]
M
U
X
1
0
DVI
MIPS 
monociclo
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
MIPS 
multiciclo
32
Endereço
DadoMem
Memória
PC
Dado a ser 
escrito
M
U
X
0
1 Zero
Resultado
ULA
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
Registrador
de
instrução
Registrador
de dados
da
memória
A
B
ULA
Saída
32
[25-21]
[20-16]
[15-11]
M
U
X
0
1
[15-0]
M
U
X
0
1
M
U
X
0
1
2
3
M
U
X
0
1 Exten-
são de 
sinal
Desl.
à esq.
2 bits
4
3216
IouD
LerMem
EscMem
IREsc
Opera-
ção
da 
ULA
2
6
32
[5-0]
EscReg
RegDst
Controle
ULAOp
ULAFonteA
FontePCPCEscCond
PCEsc
MemParaReg
ULAFonteB 2
Desl.
à esq.
2 bits
M
U
X
0
1
2
26
[25-0]
26 28
4
2
[31-28]
[31-0]
Arquitetura e Organização de 
Computadores I
ULAFonteA = 1
ULAFonteB = 00
ULAOp = 01
PCEscCond = 1
PCEsc = 0
FontePC = 01
Término do 
desvio 
condicional
8
ULAFonteA = 1
ULAFonteB = 10
ULAOp = 00
Cálculo do endereço 
de acesso à memória
2
3
4
5
LerMem = 1
IouD = 1
EscMem = 1
IouD = 1
EscReg = 1
MemParaReg = 1
RegDst = 0
Acesso à 
memória
Acesso à 
memória
Escrita no
registrador Rt
Op = ‘lw’
Op = ‘sw’
ULAFonteA = 1
ULAFonteB = 00
ULAOp = 10
Execução
6
7
RegDst = 1
EscReg = 1
MemParaReg = 0
Término da 
instrução tipo R
(escrita em Rd)
PCEsc = 1
FontePC = 10
Término do 
desvio 
incondicional
9
ULAFonteA = 0
ULAFonteB = 11
ULAOp = 00
LerMem = 1
ULAFonteA = 0
IouD = 0
IREsc = 1
ULAFonteB = 01
ULAOp = 00
PCEsc = 1
FontePC = 00
Busca da instrução
0
Decodificação da instrução/
Leitura dos registradores Rs e Rt
1
início
O
p
 =
 ‘j
u
m
p
’
Controle 
MIPS 
multiciclo
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Para o slt, vamos considerar que a ULA entrega um outro
sinal, chamado de Negativo.
• Ou seja, se o valor gerado na operação da ULA for negativo, o
sinal Negativo tem o valor 1.
• E, caso contrário, tem o valor 0.
Zero
Resultado
ULA
Controle
da ULA
3
32
32
32
Negativo
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Olhando para a organização monociclo, podemos usar o
resultado do sinal Negativo para escrever de volta no
registrador-destino.
• Concatenando o seu valor com zeros nas 31 posições mais
significativas, enquanto a posição menos significativa terá o valor
de Negativo.
– E esse resultado deve ser agregado no MUX que define a entrada do
dado a ser escrito no banco de registradores.
– Outra opção é considerar essa operação interna à ULA
(que é o que faremos no multiciclo).
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Controle da ULA modificado para slt:
ULAOp
Classe de 
instrução
ULA deve realizar
00 lw/sw adição
01 beq subtração
10 tipo R
depende do 
campo “funct”
11 - -
Podemos usar o mesmo sinal de ULAOp de instruções do tipo R, 
mas temos que indicar que a ULA deve suportar essa nova 
operação.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
26Endereço
Instrução
lida
Memória 
de Instruções
PC
+
4
+
Desl.
à esq.
2 bits
M
U
X
0
1
FontePC
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
EscReg = 1
Exten-
são de 
sinal
3216
[25-21]
[20-16]
[15-11]
M
U
X
0
1
RegDst = 1
[15-0]
M
U
X
0
1
ULAFonte = 0
LerMem = 0
EscMem = 0
Endereço Dado 
lido
Dado a ser
escrito
Memória 
de dados
M
U
X
0
1
MemParaReg = 10
Controle
[31-26]
Opera-
ção
da 
ULA
2
[5-0] 6
ULAOp = 10
DvC = 0
3
Zero
ULA
Resultado
32
Desl.
à esq.
2 bits
26 28
PC+4[31-28]
M
U
X
1
0
DVI = 0
Negativo
2
Concate
nação
32
Implementação 
de slt
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
26Endereço
Instrução
lida
Memória 
de Instruções
PC
+
4
+
Desl.
à esq.
2 bits
M
U
X
0
1
FontePCReg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
EscReg = 1
Exten-
são de 
sinal
3216
[25-21]
[20-16]
[15-11]
M
U
X
0
1
RegDst
[15-0]
M
U
X
0
1
ULAFonte = 0
LerMem
EscMem
Endereço Dado 
lido
Dado a ser
escrito
Memória 
de dados
M
U
X
0
1
MemParaReg = 10
Controle
[31-26]
Opera-
ção
da 
ULA
2
[5-0] 6
ULAOp = 10
DvC
3
Zero
ULA
Resultado
32
Desl.
à esq.
2 bits
26 28
PC+4[31-28]
M
U
X
1
0
DVI
Negativo
2
Concate
nação
32
Implementação 
de slt
Poderíamos ter considerado que a 
lógica em destaque está integrada 
interna a ULA (vamos usar esse 
raciocínio no multiciclo).
Como podemos utilizar uma 
subtração, a operação na ULA irá 
corresponder ao 10 (ou seja, vai 
depender de funct, visto que slt é 
tipo R).
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Para implementar a slt no multiciclo, basicamente já temos
tudo o que precisamos.
• Só necessitamos que a ULA gere automaticamente o valor a ser
colocado no registrador ULASaída.
– Ou seja, vamos ter que criar uma nova operação na ULA.
– Isso vai implicar em uma mudança no controle da ULA,
que não precisa ser explicitada.
• O controle global continua o mesmo.
– A instrução vai necessitar 4 ciclos.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
32
Endereço
DadoMem
Memória
PC
Dado a ser 
escrito
M
U
X
0
1 Zero
Resultado
ULA
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
Registrador
de
instrução
Registrador
de dados
da
memória
A
B
ULA
Saída
32
[25-21]
[20-16]
[15-11]
M
U
X
0
1
[15-0]
M
U
X
0
1
M
U
X
0
1
2
3
M
U
X
0
1 Exten-
são de 
sinal
Desl.
à esq.
2 bits
4
3216
IouD
LerMem
EscMem
IREsc
Opera-
ção
da 
ULA
2
6
32
[5-0]
EscReg
RegDst
Controle
ULAOp
ULAFonteA
FontePCPCEscCond
PCEsc
MemParaReg
ULAFonteB 2
Desl.
à esq.
2 bits
M
U
X
0
1
2
26
[25-0]
26 28
4
2
[31-28]
[31-0]
Implementação 
de slt
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
32
Endereço
DadoMem
Memória
PC
Dado a ser 
escrito
M
U
X
0
1 Zero
Resultado
ULA
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
Registrador
de
instrução
Registrador
de dados
da
memória
A
B
ULA
Saída
32
[25-21]
[20-16]
[15-11]
M
U
X
0
1
[15-0]
M
U
X
0
1
M
U
X
0
1
2
3
M
U
X
0
1 Exten-
são de 
sinal
Desl.
à esq.
2 bits
4
3216
IouD
LerMem
EscMem
IREsc
Opera-
ção
da 
ULA
2
6
32
[5-0]
EscReg
RegDst
Controle
ULAOp
ULAFonteA
FontePCPCEscCond
PCEsc
MemParaReg
ULAFonteB 2
Desl.
à esq.
2 bits
M
U
X
0
1
2
26
[25-0]
26 28
4
2
[31-28]
[31-0]
A ULA possui uma nova operação, onde o 
resultado gerado caso um valor seja 
menor que o outro será
31 bits com zero, seguido por um bit 1.
Caso contrário, 32 bits com 0s.
O controle da ULA precisará 
informar para ULA que a nova 
operação será efetuada
Implementação 
de slt
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Para o bne, temos quase tudo o que necessitamos em
ambas organizações.
• Basicamente iremos fazer o desvio se o sinal Zero da ULA tiver o
valor 0 após uma subtração entre os valores em registradores.
– Vamos precisar diferenciar entre os dois desvios
condicionais.
• Ou seja, para o monociclo, vamos quebrar o sinal DvC em DvCe
(para beq) e DvCne (para bne).
• E então teremos que respeitar uma das seguintes condições:
– Se DvCe = ‘1’ e Zero = ‘1’, fazemos o desvio.
– Se DvCne = ‘1’ e Zero = ‘0’, também faremos o desvio.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Controle da ULA modificado para bne:
ULAOp
Classe de 
instrução
ULA deve realizar
00 lw/sw adição
01 beq/bne subtração
10 tipo R
depende do 
campo “funct”
11 - -
Podemos usar o mesmo sinal de ULAOp usado em beq, pois 
necessitamos de uma subtração.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
26Endereço
Instrução
lida
Memória 
de Instruções
PC
+
4
+
Desl.
à esq.
2 bits
M
U
X
0
1 FontePC
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
EscReg = 0
Zero
Resultado
ULA
3
Exten-
são de 
sinal
3216
[25-21]
[20-16]
[15-11]
M
U
X
0
1
RegDst
[15-0]
M
U
X
0
1
ULAFonte = 0
LerMem = 0
EscMem = 0
Endereço Dado 
lido
Dado a ser
escrito
Memória 
de dados
M
U
X
0
1
MemParaReg
Controle
[31-26]
Opera-
ção
da 
ULA
2
[5-0] 6
ULAOp = 01
DvCe = 0
32
Desl.
à esq.
2 bits
26 28
PC+4[31-28]
M
U
X
1
0
DVI = 0
DvCne = 1
Implementação 
de bne
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
26Endereço
Instrução
lida
Memória 
de Instruções
PC
+
4
+
Desl.
à esq.
2 bits
M
U
X
0
1 FontePC
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
EscReg = 0
Zero
Resultado
ULA
3
Exten-
são de 
sinal
3216
[25-21]
[20-16]
[15-11]
M
U
X
0
1
RegDst
[15-0]
M
U
X
0
1
ULAFonte = 0
LerMem = 0
EscMem = 0
Endereço Dado 
lido
Dado a ser
escrito
Memória 
de dados
M
U
X
0
1
MemParaReg
Controle
[31-26]
Opera-
ção
da 
ULA
2
[5-0] 6
ULAOp = 01
32
Desl.
à esq.
2 bits
26 28
PC+4[31-28]
M
U
X
1
0
DVI = 0
Os dois sinais acrescentados
Essa estrutura vai representar as duas 
condições para os desvios condicionais
Implementação 
de bne
DvCne = 1
DvCe = 0
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Já no multiciclo, vamos quebrar o sinal PCESCCond em
PCEscConde (para o beq) e PCEscCondne (para o bne), e
teremos uma das duas condições para o branch ocorrer:
• Se PSEscConde = ‘1’ e Zero = ‘1’.
• Ou se PSEscCondne = ‘1’ e Zero = ‘0’.
– O controle vai necessitar de um outro estado, para setar o
PSEEscCondne.
• A instrução bne vai continuar levando os mesmo 3 ciclos do beq.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
32
Endereço
DadoMem
Memória
PC
Dado a ser 
escrito
M
U
X
0
1 Zero
Resultado
ULA
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
Registrador
de
instrução
Registrador
de dados
da
memória
A
B
ULA
Saída
32
[25-21]
[20-16]
[15-11]
M
U
X
0
1
[15-0]
M
U
X
0
1
M
U
X
0
1
2
3
M
U
X
0
1 Exten-
são de 
sinal
Desl.
à esq.
2 bits
4
3216
IouD
LerMem
EscMem
IREsc
Opera-
ção
da 
ULA
2
6
32
[5-0]
EscReg
RegDst
Controle
ULAOp
ULAFonteA
FontePCPCEscConde
PCEsc
MemParaRegULAFonteB 2
Desl.
à esq.
2 bits
M
U
X
0
1
2
26
[25-0]
26 28
4
2
[31-28]
[31-0]
PCEscCondne
Implementação 
de bne
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
Implementação 
de bne
32
Endereço
DadoMem
Memória
PC
Dado a ser 
escrito
M
U
X
0
1 Zero
Resultado
ULA
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
Registrador
de
instrução
Registrador
de dados
da
memória
A
B
ULA
Saída
32
[25-21]
[20-16]
[15-11]
M
U
X
0
1
[15-0]
M
U
X
0
1
M
U
X
0
1
2
3
M
U
X
0
1 Exten-
são de 
sinal
Desl.
à esq.
2 bits
4
3216
IouD
LerMem
EscMem
IREsc
Opera-
ção
da 
ULA
2
6
32
[5-0]
EscReg
RegDst
Controle
ULAOp
ULAFonteA
FontePCPCEscConde
PCEsc
MemParaReg
ULAFonteB 2
Desl.
à esq.
2 bits
M
U
X
0
1
2
26
[25-0]
26 28
4
2
[31-28]
[31-0]
PCEscCondne
Os dois sinais acrescentados
Essa estrutura vai representar as duas 
condições para os desvios condicionais
Arquitetura e Organização de 
Computadores I
ULAFonteA = 1
ULAFonteB = 00
ULAOp = 01
PCEscConde = 1
PCEscCondne = 0
PCEsc = 0
FontePC = 01
Término do 
desvio 
condicional
8
ULAFonteA = 1
ULAFonteB = 10
ULAOp = 00
Cálculo do endereço 
de acesso à memória
2
3
4
5
LerMem = 1
IouD = 1
EscMem = 1
IouD = 1
EscReg = 1
MemParaReg = 1
RegDst = 0
Acesso à 
memória
Acesso à 
memória
Escrita no
registrador Rt
Op = ‘lw’
Op = ‘sw’
ULAFonteA = 1
ULAFonteB = 00
ULAOp = 10
Execução
6
7
RegDst = 1
EscReg = 1
MemParaReg = 0
Término da 
instrução tipo R
(escrita em Rd)
PCEsc = 1
FontePC = 10
Término do 
desvio 
incondicional
9
ULAFonteA = 0
ULAFonteB = 11
ULAOp = 00
LerMem = 1
ULAFonteA = 0
IouD = 0
IREsc = 1
ULAFonteB = 01
ULAOp = 00
PCEsc = 1
FontePC = 00
Busca da instrução
0
Decodificação da instrução/
Leitura dos registradores Rs e Rt
1
início
O
p
 =
 ‘j
u
m
p
’
ULAFonteA = 1
ULAFonteB = 00
ULAOp = 01
PCEscCondne = 1
PCEscConde = 0
PCEsc = 0
FontePC = 01
10
Modificações no 
controle do 
multiciclo para 
bne
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Para implementar a soma imediata, teremos que usar o
valor imediato como um dos operandos na ULA.
• Isso já é feito nas instruções de lw e sw, que também realizam
uma soma.
– Ou seja, a organização já está pronta para essas
instruções.
• Basta modificar o controle global de ambas organizações,
monociclo e multiciclo.
– No multiciclo, essa operação vai levar os mesmo 4 ciclos
de instruções tipo R.
• Vamos ter que acrescentar um estado a mais, vindo do estado 2.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Controle da ULA modificado para addi:
ULAOp
Classe de 
instrução
ULA deve realizar
00 lw/sw/addi adição
01 beq/bne subtração
10 tipo R
depende do 
campo “funct”
11 - -
Coincidentemente, podemos usar a opção 00 de ULAOp, pois 
vamos precisar de uma adição com operando imediato, assim 
como em lw e sw. Se fosse um ori ou andi, precisaríamos usar o 
código 11.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
26Endereço
Instrução
lida
Memória 
de Instruções
PC
+
4
+
Desl.
à esq.
2 bits
M
U
X
0
1
FontePC
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
EscReg = 1
Zero
Resultado
ULA
3
Exten-
são de 
sinal
3216
[25-21]
[20-16]
[15-11]
M
U
X
0
1
RegDst = 0
[15-0]
M
U
X
0
1
ULAFonte = 1
LerMem = 0
EscMem = 0
Endereço Dado 
lido
Dado a ser
escrito
Memória 
de dados
M
U
X
0
1
MemParaReg = 1
Controle
[31-26]
Opera-
ção
da 
ULA
2
[5-0] 6
ULAOp = 00
DvC = 0
32
Desl.
à esq.
2 bits
26 28
PC+4[31-28]
M
U
X
1
0
DVI = 0
Implementação 
de addi
Arquitetura e Organização de 
Computadores I
ULAFonteA = 1
ULAFonteB = 00
ULAOp = 01
PCEscCond = 1
PCEsc = 0
FontePC = 01
Término do 
desvio 
condicional
8
ULAFonteA = 1
ULAFonteB = 10
ULAOp = 00
Cálculo do endereço 
de acesso à memória
2
3
4
5
LerMem = 1
IouD = 1
EscMem = 1
IouD = 1
EscReg = 1
MemParaReg = 1
RegDst = 0
Acesso à 
memória
Acesso à 
memóriaEscrita no
registrador Rt
Op = ‘lw’
Op = ‘sw’
ULAFonteA = 1
ULAFonteB = 00
ULAOp = 10
Execução
6
7
RegDst = 1
EscReg = 1
MemParaReg = 0
Término da 
instrução tipo R
(escrita em Rd)
PCEsc = 1
FontePC = 10
Término do 
desvio 
incondicional
9
ULAFonteA = 0
ULAFonteB = 11
ULAOp = 00
LerMem = 1
ULAFonteA = 0
IouD = 0
IREsc = 1
ULAFonteB = 01
ULAOp = 00
PCEsc = 1
FontePC = 00
Busca da instrução
0
Decodificação da instrução/
Leitura dos registradores Rs e Rt
1
início
O
p
 =
 ‘j
u
m
p
’
Op = ‘addi’
Modificações no 
controle do 
multiciclo para 
addi
RegDst = 0
EscReg = 1
MemParaReg = 0
10
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Para a instrução sll, vamos pensar um pouco:
• Essa operação não existe na nossa ULA atual (deslocamento para
a esquerda de n bits), ou seja, teremos que acrescentar essa
operação.
– A instrução sll é tipo R, entretanto ela faz uso de um
operando imediato ao invés de um registrador:
• O campo shamt, que está nos bits [10:6] da instrução.
– Isso implicará em uma nova entrada no mux da entrada 2 da ULA.
• Outro problema, o registrador a ser lido está no campo onde
geralmente temos uma saída multiplexada.
– Que gostaríamos de usar para a entrada imediata do shamt,
comentada acima.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Controle da ULA modificado para sll:
ULAOp
Classe de 
instrução
ULA deve realizar
00 lw/sw/addi adição
01 beq/bne subtração
10 tipo R
depende do 
campo “funct”
11 - -
Podemos usar o mesmo sinal de ULAOp de instruções do tipo R, 
mas temos que indicar que a ULA deve suportar essa nova 
operação.
RegSrc = 1
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
26Endereço
Instrução
lida
Memória 
de Instruções
PC
+
4
+
Desl.
à esq.
2 bits
M
U
X
0
1
FontePC
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
EscReg = 1
Zero
Resultado
ULA
3
Exten-
são de 
sinal
3216
[25-21]
[20-16]
[15-11]
M
U
X
0
1
RegDst = 1
[15-0]
M
U
X
0
1
ULAFonte = 10
LerMem = 0
EscMem =0
Endereço Dado 
lido
Dado a ser
escrito
Memória 
de dados
M
U
X
0
1
MemParaReg = 1
Controle
[31-26]
Opera-
ção
da 
ULA
2
[5-0] 6
ULAOp = 10 
DvC = 0
32
Desl.
à esq.
2 bits
26 28
PC+4[31-28]
M
U
X
1
0
DVI = 0
Implementação 
de sll
2
[10-6]
M
U
X
0
1
RegSrc = 1
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
26Endereço
Instrução
lida
Memória 
de Instruções
PC
+
4
+
Desl.
à esq.
2 bits
M
U
X
0
1
FontePC
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escritoDado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
EscReg = 1
Zero
Resultado
ULA
3
Exten-
são de 
sinal
3216
[25-21]
[20-16]
[15-11]
M
U
X
0
1
RegDst = 1
[15-0]
M
U
X
0
1
ULAFonte = 10
LerMem = 0
EscMem =0
Endereço Dado 
lido
Dado a ser
escrito
Memória 
de dados
M
U
X
0
1
MemParaReg = 1
Controle
[31-26]
Opera-
ção
da 
ULA
2
[5-0] 6
ULAOp = 10 
DvC = 0
32
Desl.
à esq.
2 bits
26 28
PC+4[31-28]
M
U
X
1
0
DVI = 0
Implementação 
de sll
2
[10-6]
M
U
X
0
1
Sinal adicionado para o novo mux
Sinal aumentado para dois bits por causa 
da nova entrada no mux
Nova entrada vinda de outra fonte 
na instrução sll
ULA deve suportar uma nova 
instrução.
Controle precisa ser modificado 
para a nova operação.
Necessário extensor de sinal (implícito 
na figura
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
– Para a implementação de sll no multiciclo, vamos ter os
mesmos problemas.
• Vamos tentar uma saída diferente, colocando uma entrada a mais
no mux da entrada A.
– De onde virá o operando imediato (quantidades de bits a ser
deslocado para esquerda).
– Depois precisamos adicionar um estado a mais no
controle, para executar o sll.
• Na verdade, em outros estados, teremos que adicionar o bit extra
no sinal ULAFonteA.
– Teremos 4 ciclos para essa instrução.
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
32
Endereço
DadoMem
Memória
PC
Dado a ser 
escrito
M
U
X
0
1 Zero
Resultado
ULA
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
Registrador
de
instrução
Registrador
de dados
da
memória
A
B
ULA
Saída
32
[25-21]
[20-16]
[15-11]
M
U
X
0
1
[15-0]
M
U
X
0
1
M
U
X
0
1
2
3
M
U
X
0
1 Exten-
são de 
sinal
Desl.
à esq.
2 bits
4
3216
IouD
LerMem
EscMem
IREsc
Opera-
ção
da 
ULA
2
6
32
[5-0]
EscReg
RegDst
Controle
ULAOp
ULAFonteA
FontePCPCEscCond
PCEsc
MemParaReg
ULAFonteB 2
Desl.
à esq.
2 bits
M
U
X
0
1
2
26
[25-0]
26 28
4
2
[31-28]
[31-0]
[10-6]
2
2
Implementação 
de sll
ULAFonteA
Arquitetura e Organização de 
Computadores I
• Exercícios de implementação de instruções
32
Endereço
DadoMem
Memória
PC
Dado a ser 
escrito
M
U
X
0
1 Zero
Resultado
ULA
Reg a ser
lido #1
Reg a ser
lido #2
Reg a ser
escrito
Dado de
escrita
Dado 
lido #1
Dado
lido #2
Registradores
Registrador
de
instrução
Registrador
de dados
da
memória
A
B
ULA
Saída
32
[25-21]
[20-16]
[15-11]
M
U
X
0
1
[15-0]
M
U
X
0
1
M
U
X
0
1
2
3
M
U
X
0
1 Exten-
são de 
sinal
Desl.
à esq.
2 bits
4
3216
IouD
LerMem
EscMem
IREsc
Opera-
ção
da 
ULA
2
6
32
[5-0]
EscReg
RegDst
Controle
ULAOp
FontePCPCEscCond
PCEsc
MemParaReg
ULAFonteB 2
Desl.
à esq.
2 bits
M
U
X
0
1
2
26
[25-0]
26 28
4
2
[31-28]
[31-0]
[10-6]
2
Caminho de dados acrescentado ao mux da 
entrada A da ULA
Sinal de controle passa a ter dois bits
2
Implementação 
de sll
ULA passa a executar o deslocamento para 
a esquerda
Controle da ULA precisa suportar a nova 
operação
Arquitetura e Organização de 
Computadores I
ULAFonteA = 01
ULAFonteB = 00
ULAOp = 01
PCEscCond = 1
PCEsc = 0
FontePC = 01
Término do 
desvio 
condicional
8
ULAFonteA = 01
ULAFonteB = 10
ULAOp = 00
Cálculo do endereço 
de acesso à memória
2
3
4
5
LerMem = 1
IouD = 1
EscMem = 1
IouD = 1
EscReg = 1
MemParaReg = 1
RegDst = 0
Acesso à 
memória
Acesso à 
memória
Escrita no
registrador Rt
Op = ‘lw’
Op = ‘sw’
ULAFonteA = 01
ULAFonteB = 00
ULAOp = 10
Execução
6
7
RegDst = 1
EscReg = 1
MemParaReg = 0
Término da 
instrução tipo R
(escrita em Rd)
PCEsc = 1
FontePC = 10
Término do 
desvio 
incondicional
9
ULAFonteA = 00
ULAFonteB = 11
ULAOp = 00
LerMem = 1
ULAFonteA = 00
IouD = 0
IREsc = 1
ULAFonteB = 01
ULAOp = 00
PCEsc = 1
FontePC = 00
Busca da instrução
0
Decodificação da instrução/
Leitura dos registradores Rs e Rt
1
início
O
p
 =
 ‘j
u
m
p
’
ULAFonteA = 10
ULAFonteB = 00
ULAOp = 10
10
Modificações no 
controle do 
multiciclo para 
sll

Continue navegando