目录
一、RISC-V模型机的目标指令集

取指令并译码:根据PC从内存取出指令,PC+4 -> PC,译码
执行指令:首先根据指令字的字段,取出1~2个寄存器(rs1,rs2)内容,再根据指令具体功能,做不同操作
- 算术逻辑运算:ALU运算,写寄存器
- 传送类指令:生成立即数,写寄存器
- 访存指令:计算存储器地址(ALU运算),读/写存储器
- 转移类指令:比较数据(ALU运算),PC+偏移量 -> PC

二、RISC-V模型机的部件设计
CPU性能的重要指标:CPU速度(执行时间)
CPU执行指标 = 程序指令数 × 每条指令的时钟周期数(CPI)× 时钟周期长度
- 单周期CPU:CPI = 1,但是时钟周期很长
- 多周期CPU:CPI > 1,但是时钟周期很短,且某些硬件部件可共享
从CPU效率指标考虑,我们设计的RV32I的25条核心指令集,采用:
- 直接连接(无总线)
- 多周期CPU(性能和硬件成本优于单周期CPU)
- 哈佛结构(指令和数据分开存储)

1. 指令存储器及取指令部件——取指令IF
- 程序计数器 PC:存放指令地址,32位,取指令后自增4个字节(独立加法器)
- 指令寄存器 IR:存放指令代码,32位
- Mem[PC] -> IR, PC+4 -> PC
- clk上跳沿:取指令(读存储器)
- clk下跳沿:指令置入IR,更新PC

2. 指令译码器与立即数生成器——指令译码ID
(1)指令译码器
- 初级译码器 ID1:①指令字段与格式解析器;②立即数生成器
- 二级译码器 ID2:产生指令信号、ALU_OP
(2)立即数生成器
- 立即数拼接与生成器:按照各格式,对立即数进行拼接与拓展,产生6个32位立即数
- 6选1多路选择器:按照当前指令的格式,在6个立即数中选择一个输出,记为imm32

(3)指令二级译码器
- 输入:ID1产生的opcode、func3、func7
- 输出:指令信息8个,运算码ALU_OP


3. 运算器部件——执行EX
(1)通用寄存器堆 Regs
- 32×32位寄存器,寄存器地址5位
- 三端口:两个读端口,一个写端口(同时读出2个寄存器,写入1个寄存器)
- 读出无需时钟,写入需要时钟
- 读出的数据写入暂存器A和B,时钟clk_RR控制打入
(2)多功能运算部件 ALU
- 32位,进行算术、逻辑、比较置数、移位运算
- 选择信号:运算功能码ALU_OP

文章详细阐述了RISC-V模型机的设计,包括目标指令集、部件设计如CPU的取指令、译码、运算及数据通路设计,特别是针对运算、传送、访存和转移指令的数据通路。此外,还讨论了CPU性能指标和采用的多周期CPU结构,以及控制单元CU的有限状态机设计,为理解和实现RISC-V处理器提供了深入的见解。
最低0.47元/天 解锁文章
3960





