MIPS-CPU31 Datapath Design methodology

在这里插入图片描述

Author: HuaZhouqi
Department of Computer Science & Technology, Tongji University, Shanghai.


R-type

add

Design methodology:

  • After non-jump instructions such as add being executed, PC (Program Counter) will point to the address of next instruction, which means a self-increment of 4. So, an independent pathway is necessary to complete this task.
  • Arithmetic operations such as add need the participant of ALU (Arithmetic&logical Unit). Rs as well as Rt stores the source operands of ALU, and the result will be sent to register Rd.
  • To differentiate different arithmetic operations (such as add / sub …etc ), a control signal will be sent to ALU.

Instructions addu / sub / subu / and / or / xor / nor are similar to add ( while using the same register and pathways data being delivered, the only difference is category of the calculation of ALU )

image-20230520210303287

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
RES -> Rd

addu

image-20230520210759061

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
RES -> Rd

sub

image-20230520210848489

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
RES -> Rd

subu

image-20230520211205216

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
RES -> Rd

and

image-20230520213931268

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
RES -> Rd

or

image-20230520214030644

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
RES -> Rd

xor

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntkV00j8-1684844002282)(C:/Users/h1585/AppData/Roaming/Typora/typora-user-images/image-20230522100454721.png)]

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
RES -> Rd

nor

image-20230520214208723

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
RES -> Rd

slt

Design methodology:

  • slt instruction will return the boolean result of size comparison.

    Return 1 if the former is greater than the latter

    Return 0 if the former is less than the latter

  • It can be understood as a composite instruction calculated using the sub instruction, or a brand new instruction simply using ALU to produce result.

  • After non-jump instructions such as add being executed, PC (Program Counter) will point to the address of next instruction, which means a self-increment of 4. So, an independent pathway is necessary to complete this task. (Same as instructions above)

Instructions sltu is similar to slt.

image-20230520220614567

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
SF -> EXT1
EXT1(out) -> Rd 

Note that the size of register Rd is 32 bit, so it’s necessary to expand SF results using EXT1 to 32-bit. It’s same with instructions below sltu.

sltu

image-20230520221433514

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs -> A
Rt -> B
SF -> EXT1
EXT1(out) -> Rd 

sll

Design methodology:

  • sll instruction will shift the operand to the left (IMEM) bits
  • Shamt appears for the first time in instructions, dealing with immediate data (stored in IMEM) and carry out instruction truncation and unsigned extension.
  • After non-jump instructions such as add being executed, PC (Program Counter) will point to the address of next instruction, which means a self-increment of 4. So, an independent pathway is necessary to complete this task. (Same as instructions above)

Instructions srl / sra are similar to sll, which all represent shift operations.

image-20230521141004446

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[10:6] -> EXT5
EXT5_OUT -> A
Rt -> B
Res -> Rd

srl

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[10:6] -> EXT5
EXT5_OUT -> A
Rt -> B
Res -> Rd

sra

Note that sra performs arithmetic shift left and needs to complete symbol bits.

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[10:6] -> EXT5
EXT5_OUT -> A
Rt -> B
Res -> Rd

sllv

Different from sll or srl, both operands of sllv come from registers. (instead of immediate data)

Instructions srlv / srav are similar to sllv, which all represent shift operations and fetch operands from registers.

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs[4:0] -> EXT5
EXT5_OUT -> A
Rt -> B
Res -> Rd

srlv

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mtD9rPJA-1684844002285)(C:/Users/h1585/AppData/Roaming/Typora/typora-user-images/image-20230522103328646.png)]

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs[4:0] -> EXT5
EXT5_OUT -> A
Rt -> B
Res -> Rd

srav

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
Rs[4:0] -> EXT5
EXT5_OUT -> A
Rt -> B
Res -> Rd

jr

Design methodology:

  • Unlike the previous R-type instructions, jr has the function of PC jump
  • Based on the data in the register to determine whether the PC needs to jump, so there is no need for ALU to participate.
  • To choose PC+4 or PC-JMP, a MUX is necessary.
  • After non-jump instructions such as add being executed, PC (Program Counter) will point to the address of next instruction, which means a self-increment of 4. So, an independent pathway is necessary to complete this task. (Same as instructions above)

在这里插入图片描述

PC -> IMEM
Rs -> MUX
MUX_OUT -> PC
PC + 4 -> NPC
NPC -> MUX

I-type

addi

Design methodology:

  • Similar to sll, addi alse fetchs serval bits from IMEM and sends to ALU.
  • The function of EXT16 is signed extension ( same with addiu / slti / sltiu )
  • After non-jump instructions such as add being executed, PC (Program Counter) will point to the address of next instruction, which means a self-increment of 4. So, an independent pathway is necessary to complete this task. (Same as instructions above)

Instructions addiu / andi / ori / xori are similar to addi.

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Rs -> A
Res -> Rd

andi

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Rs -> A
Res -> Rd

ori

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Rs -> A
Res -> Rd

xori

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Rs -> A
Res -> Rd

lw

Design methodology:

  • Specific function of lw is to read the 32-bit binary number at the specified address into a register. This directive is mainly used to access arrays or other data structures stored in memory.
  • Since data needs to be loaded, a data memory DMEM is required.
  • Calculate the data of Rs and EXT16_OUT to sum it, obtain the offset data address, and read the data.
  • After non-jump instructions such as add being executed, PC (Program Counter) will point to the address of next instruction, which means a self-increment of 4. So, an independent pathway is necessary to complete this task. (Same as instructions above)

Instruction sw is almost same with lw (while in sw RT is used as data from data storage directly given to DMEM)

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Rs -> A
Res -> DMEM_addr
DMEM_OUT -> Rd

sw

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Rs -> A
Rt -> DMEM
Res -> DMEM_addr

beq

Design methodology:

  • The beq instruction compares whether the values in the two registers are equal, and if they are, adds an offset to PC, allowing the program to jump to another marker to continue executing the program. If they are not equal, the next instruction is executed directly sequentially.
  • The determination of data equality can be done using ALU’s subu instruction. The result will be reflected as ZF(zero flag).
  • The choice of PC will rely on the implementation of MUX.

Instruction bne is similar to beq.

beq = branch if equal

bne = branch if not equal

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> MUX
IMEM[15:0] || 02 -> EXT18
EXT18_OUT -> ADD
NPC -> ADD
(ZF -> MUX)
ADD_OUT -> MUX
MUX_OUT -> PC
Rs -> A
Rt -> B

bne

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> MUX
IMEM[15:0] || 02 -> EXT18
EXT18_OUT -> ADD
NPC -> ADD
(~ZF -> MUX)
ADD_OUT -> MUX
MUX_OUT -> PC
Rs -> A
Rt -> B

slti

Design methodology:

  • slti instruction is used to load a 16-bit signed immediate number into the target register, and if the source register contains a value less than this immediate number, set the target register to 1, otherwise set to 0.
  • Often used in conditional branching and loop control structures to check whether a value satisfies a given condition.
  • Used to handle signed numbers

Instruction sltiu is same as slti.

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Rs -> A
CF -> EXT1
EXT1_OUT -> Rd

sltiu

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Rs -> A
CF -> EXT1
EXT1_OUT -> Rd

lui

Design methodology:

  • lui instruction is used to shift a 16-bit immediate number left by 16 bits and store it in a register. This operation is usually used to load an unsigned 16-bit integer for a 32-bit register.
  • The implementation method in verilog is to clear the lower 16 bits.

在这里插入图片描述

PC -> IMEM
PC + 4 -> NPC
NPC -> PC
IMEM[15:0] -> EXT16
EXT16_OUT -> B
Res -> Rd

J-type

j

Design methodology:

  • j instruction sets PC to the specified code address, so that the corresponding instruction can be executed unconditionally jumped to that address. (No matter what has happened, PC will jump)
  • There is no need for participant of alu / regfile / dmem…etc.

在这里插入图片描述

PC -> IMEM
PC[31:28] -> ||_A
IMEM[25,0] || 02 -> ||_B
||_OUT -> MUX
PC+4 -> NPC
NPC -> MUX
MUX_OUT -> PC

jal

Design methodology:

  • The jal (Jump and Link) instruction is used to make a jump and save the return address.
  • When the program encounters a jal instruction, it saves the current PC value to register and jumps to the specified destination address to execute the code.
  • After the subprogram is executed, use the jr (Jump Register) instruction to jump back to the return address saved in register to continue executing the main program.

在这里插入图片描述

PC -> IMEM
PC[31:28] -> ||_A
IMEM[25,0] || 02 -> ||_B
||_OUT -> MUX
PC + 4 -> NPC
NPC -> MUX
MUX_OUT -> PC
PC -> ADD
8 -> ADD
ADD_OUT -> Rd

Complete Datapath

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhqi HUA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值