mr2 operação do bloco de dados e do bloco de controle fernando moraes, ney calazans, fabiano...
TRANSCRIPT
MR2Operação do Bloco de
Dados e do Bloco de Controle
Fernando Moraes, Ney Calazans, Fabiano Hessel
26/10/2004
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[25:0]
IR[15:0]
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
EXT SINAL
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
<< 2
cte_im
AL
U
Instruções Lógicas e Aritméticas
• ADDU Rd, Rs, Rt
• SUBU Rd, Rs, Rt
• AND Rd, Rs, Rt
• OR Rd, Rs, Rt
• XOR Rd, Rs, Rt
Rs
co
mp
Rt
salta
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
cte_im
AL
U
Instruções de Deslocamento
• SLL Rd, Rt, shamt
• SRL Rd, Rt, shamt
Rs
Rt
salta
co
mp
ULA desloca shamt bits
IR[25:0]
IR[15:0] EXT SINAL
<< 2
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
Notar: extensão de sinal é inútil, mas usar ela evita entrada adicional no mux
Notar: registrador interno Rs é usado para conter Rt, pois o interno Rt compartilha entrada da ALU com Imed
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[15:0]
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
cte_im
AL
U
Instruções Lógicas e Aritméticas Imediatas e LUI
• ADDIU Rt, Rs, Imed16• ANDI Rt, Rs, Imed16• ORI Rt, Rs, Imed16• XORI Rt, Rs, Imed16• LUI Rt, imed16
Não se usa Rs no LUI
Rs
Rt
salta
co
mp
IR[25:0]
EXT SINAL
<< 2
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
SÓ ESTENDE SINAL NA INSTRUÇÃO
ADDIU, OUTRAS ESTENDEM ZERO
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
cte_im
AL
U
Instruções de Leitura da Memória: LBU/LW
• LBU Rt, Imed16(Rs)• LW Rt, Imed16(Rs)
Rs
Rt
salta
co
mp
IR[25:0]
IR[15:0] EXT SINAL
<< 2
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
Atenção: na instrução LBU, gravar em MDR o byte LSB e bytes em zero nos 3 MSBs (MUX escondido)!
Atenção: Write back não existe nestas instruções
Atenção: carga destes três registradores é útil
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
cte_im
AL
U
Instruções de Escrita na Memória: SB/SW
• SB Rt, Imed16(Rs) (ativar bw)
• SW Rt, Imed16(Rs)
Rs
Rt
salta
co
mp
IR[25:0]
IR[15:0] EXT SINAL
<< 2
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
cte_im
AL
U
Instruções de Comparação – SLT/SLTU
• SLT Rd, Rs, Rt
• SLTU Rd, Rs, Rt
IGUAIS ÀS ARITMÉTICAS
Rs
Rt
salta
co
mp
IR[25:0]
IR[15:0] EXT SINAL
<< 2
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
CUIDAR: SLT ESTENDE SINAL, SLTIU NÃO ESTENDE
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[15:0]
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
cte_im
AL
U
Instruções de Comparação Imediatas - SLTI/SLTIU
• SLTI Rt, Rs, Imed16• SLTIU Rt, Rs, Imed16
Rs
Rt
salta
co
mp
IR[25:0]
EXT SINAL
<< 2
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
Terceiro ciclo: gera o endereço de salto; salta (escreve no PC) dependendo da
comparação Rs/Rt
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
cte_im
AL
U
Instruções de Salto Condicional
• BEQ Rs, Rt, rótulo
• BGEZ Rs, rótulo
• BLEZ Rs, rótulo
• BNE Rs, Rt, rótulo
Em função da comparação Rs/Rt,
salta ou não
Rs
Rt
salta
co
mp
IR[25:0]
IR[15:0] EXT SINAL
<< 2
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
Cuidado! Para simplificar este bloco, concatenação dos 4 bits superiores do PC
para gerar endereço de salto é feita na ALU.
Instruções de Salto Incondicional J
wpc
IR[20:16]
IR[25:21]
IR[15:11]
IR[20:16]
IncPC
IR[20:16]RIN
outalu data
Rt
wmdrCY1
ce rw
EndereçoMem. Dados
‘
ce/rw
walu
dtPC
instruction I_address
NPC
OP1CY1PC
OP2
result
CY2
CY2
CY2
Rt
Rs
PC
+4
Me
mó
ria d
e
Ins
truç
õe
s
RALUIR
Me
mó
ria d
e
Da
do
sNPC
IMED
MDRbanco de
registradores
AdRt
AdRs
AdRd
Rd
cte_im
AL
U
• J Imed26
Rs
Rt
salta
co
mp
IR[25:0]
IR[15:0] EXT SINAL
<< 2
“0000” & IR[25:0] & “00”
IR[15:0] EXT ZERO
Banco de Registradores
AdRs
32 registradores de 32 bits
Decodificador 5 32
REG0 REG1 REG2 REG3 REG4
...
REG28 REG29 REG30 REG31
clock reset
Rd
32
5
enable
wreg
32
32
32 Rs
AdRt AdRd
Rt
Bloco de Controle
Reset (todos os
registradores são inicializados)
Wbk wReg wPC
Sfetch CY1
Sld CE wMDR
IR = LBU/ LW
Ssw RW0 CE wPC
SSalta wPC
SReg CY2
IR =SB / SW IR = J / JALR / JR / BEQ
BGEZ / BLEZ / BNE
Idle
SAlu wAlu
Caso geral
• Três primeiros ciclos iguais para todas as instruções