CS61C学习笔记-SingleCycleCPU_Datapath(十)
Risc - V 处理器设计
The CPU
Processor(CPU)
计算机的活动部分即完成全部工作的(数据操纵与决策)
Datapath
处理器的一部分,包含执行处理器所需操作所需的硬件( 肌肉 )
Control
处理器的一部分(在硬件方面也是如此),告诉数据通路需要做什么(大脑)
需要实现的所有 Rv32I 指令
单指令每周期 Risc - V 机
- 在时钟的每一个刻度上,计算机执行一条指令
- 当前状态的输出驱动组合逻辑的输入,组合逻辑的输出固定在下一个时钟边之前的状态值
- 在上升的时钟边沿,所有的状态变量用组合逻辑输出进行更新,执行转移到下一个时钟周期
数据通路的阶段:概述
- 问题:”执行指令” 的单个”单片”块(从取指令开始执行所有必要的操作)过于庞大,效率低下
- 解决方法:将”执行指令”的过程分解为阶段,然后连接各个阶段创建整个数据通路
- -更小的阶段更容易设计
- -容易优化(更改)一个阶段而不接触其他阶段(模块化)
数据通路的五个阶段
- Stage 1: Instruction Fetch (IF)
- 取指令
- Stage 2: Instruction Decode (ID)
- 指令解码
- Stage 3: Execute (EX) - ALU (Arithmetic-Logic Unit)
- 执行
- Stage 4: Memory Access (MEM)
- 存储器存取
- Stage 5: Write Back to Register (WB)
- 写回寄存器
R-Type Add Datapath
add 指令的实现
Datapath for add
add 时序图
Sub Datapath
sub 指令的实现
add/sub 的 Datapath
Implementing Other R-Format Instructions
Datapath with Immediates
Implementing I-Format - addi instruction
Adding addi to Datapath
I-Format 的构造基本上和 R-Type 的相同,只需要把 Re[rs2]的值改成传递的 Imm 值就好了
Imm. Gen 将 Inst 当中[31:20]的值扩展为 Imm[31:0],如下图
对于其他所有 I 格式算术指令( slti , sltiu , andi , ori , xori , slli , srli , srai),只需更改 ALUSel 即可
Datapath for Loads
Add lw
R+I Arithmetic/Logic Datapath
All RV32 Load Instructions
Funct3 字段编码负载数据的大小和”符号性”
Datapath for Stores
添加 sw 指令
读取两个寄存器,rs1 为基内存地址,rs2 为待存储的数据,以及立即偏转值
Adding sw to Datapath
I+S Immediate Generation
只需要一个 5 位的多路复用器来选择立即数的低 5 位在指令中的两个位置之间。
立即数的其他位被连接到指令中的固定位置。
I 型和 S 型指令格式:
- I 型指令:立即数位于指令的[31:20]位。
- S 型指令:立即数被拆分为两部分,一部分位于指令的[31:25]位,另一部分位于[11:7]位。
多路选择器的作用:
- 图中的 5 位多路复用器(5-bit mux)用于在立即数的低 5 位的位置之间进行选择。具体来说:
- 对于 I 型指令,立即数的低 5 位位于[24:20]位。
- 对于 S 型指令,立即数的低 5 位位于[11:7]位。
- 该多路选择器根据指令类型选择正确的位置,将立即数的这 5 位提取出来。
其他位的处理:
- 立即数的其余部分,例如符号扩展(sign extension)等,按照固定的位置分配到指令的不同位中。对于符号扩展,立即数的最高有效位(第 31 位)通过符号扩展填充到最终的立即数中。
All RV32 Store Instructions
实现 Branches
RISC-V B-Format for Branches
Addding Branches to Datapath
Branch Comparator
Branch Immediates
done
JALR Datapath
JAL Datapath
U-Types
U-Format for “Upper Immediate” Instructions
Datapath With LUI, AUIPC
Lighting Up LUI
Lighting Up AUIPC
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云泥小窝!
评论