mr3 operação do bloco de dados e do bloco de controle fernando moraes, ney calazans 26/10/2005

14
MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

MR3Operação do Bloco de

Dados e do Bloco de Controle

Fernando Moraes, Ney Calazans

26/10/2005

Page 2: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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• NOR Rd, Rs, Rt

Rs

co

mp

Rt

salta

“0000” & IR[25:0] & “00”

IR[15:0] EXT ZERO

Page 3: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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

Page 4: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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

Page 5: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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

wmdr

ce rw bw

Me

m.

de

D

ad

os

MDR

x“000000” & data

Page 6: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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

Page 7: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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

Page 8: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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

Page 9: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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

Page 10: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

ria d

e

Ins

truç

õe

s

RALUIR

Me

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

Page 11: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

Exercício • JAL Imed26• JALR Rd, Rs• JR Rs

wmdr wpc CY1

CY2

Rt

CY2

Rs

banco de

registradores

AdRt

AdRs IR[20:16]

IR[25:21]

AdRd

IR[15:11]

IR[20:16]

ce rw bw

D_a

dd

res

s

PC

+4

ce/rw

Mem

óri

a d

e

Instr

uçõ

es

wreg

outalu

walu

AL

U

RALU

dtPC IR

instruction I_address

IncPC NPC

OP1 CY1 PC

data

Mem

óri

a

de D

ado

s

NPC

EXT SINAL

CY2

IMED

OP2

MDR

Rt

result

Rd

IR[25:0]

IR[15:0]

IR[20:16]

<< 2

RIN

cte_im

Rs

co

mp

ara

do

r Rt

salta

“0000” & IR[25:0] & “00”

EXT ZERO

x“000000” & data

Hi

Lo

wreg

MULT

DIV

“11111”

Page 12: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

Multiplicação e Divisão

wmdr wpc CY1

CY2

Rt

CY2

Rs

banco de

registradores

AdRt

AdRs IR[20:16]

IR[25:21]

AdRd

IR[15:11]

IR[20:16]

ce rw bw

D_a

dd

res

s

PC

+4

ce/rw

Mem

óri

a d

e

Instr

uçõ

es

wreg

outalu

walu

AL

U

RALU

dtPC IR

instruction I_address

IncPC NPC

OP1 CY1 PC

data

Mem

óri

a

de D

ado

s

NPC

EXT SINAL

CY2

IMED

OP2

MDR

Rt

result

Rd

IR[25:0]

IR[15:0]

IR[20:16]

<< 2

RIN

cte_im

Rs

co

mp

ara

do

r Rt

salta

“0000” & IR[25:0] & “00”

EXT ZERO

x“000000” & data

Hi

Lo

wreg

MULT

DIV

“11111”

• Divisão:• Usar div/mod• Consome 3 ciclos de clock para

gravar no Lo e Hi

Page 13: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

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

Page 14: MR3 Operação do Bloco de Dados e do Bloco de Controle Fernando Moraes, Ney Calazans 26/10/2005

Bloco de Controle

• Três primeiros ciclos iguais para todas as instruções

Reset=’1’ (todos os

registradores são zerados)

Swbk wreg wpc

Sfetch CY1

Sld ce wmdr

IR=LBU/LW

Sst rw0, ce, wpc bw0 se IR=SB

Ssalta wpc wreg se IR=JAL/JALR

Sreg CY2 Init_mul se IR=MULTU

IR=SB/ SW IR =J/JAL/JALR/JR /BEQ/

BGEZ/BLEZ/BNE

Sidle

Salu wAlu

Caso geral

Reset=’1’

Reset=’0’

IR=MULTU e End_mul=’0’

(IR=DIVU) ou (IR=MULTU e End_mul=’1’)

wPC