RISC-V RV32I指令集模拟器设计与测试

需积分: 0 0 下载量 130 浏览量 更新于2024-08-05 收藏 473KB PDF 举报
本篇实验报告由孙文源(学号201608030110,通信1601专业班级)在湖南大学的大三小学期撰写,主题是RISC-V架构的基本整数指令集RV32I的模拟器设计。实验的主要目的是构建一个能够模拟CPU指令集功能的CPU模拟器,以便理解和实践RISC-V指令集的工作原理。 实验条件设定在一台配备有Intel corei5-6200U处理器,Windows 10家庭版操作系统,以及4GB DDR3内存的计算机上。实验内容着重于模拟CPU的基本执行过程,主要包括取指(从程序计数器PC读取指令)、译码(解析指令含义)和指令执行(根据指令类型进行相应操作)。模拟器的结构框架采用循环模式,通过不断读取下一个指令并执行直到遇到终止条件。 具体指令测试部分涉及以下几个核心操作: 1. LUI (Load Upper Immediate): 将指令前20位的立即数转换为高20位,低12位填充0,然后放入rd寄存器。测试结果验证了指令正确性。 2. AUIPC (Add Upper Immediate to PC): 将立即数加到PC上,但PC值不变,结果写入rd寄存器。测试确保指令对PC值的处理准确。 3. SW/SH/SB (Store/Shift/Shift): 这些指令用于将寄存器rs2中的数据存储或按指定方式移动到内存,如SW将32位数据存入内存,偏移地址由rs1和偏移量计算得出。 4. LW/LH/LB (Load Word/Load Halfword/Load Byte): 分别用于加载32位、16位和8位数据到寄存器,支持不同数据宽度的内存读取。 5. SLL/SRL/SRA (Logical Shift Left/Arithmetic Shift Right/Shift Right Arithmetic): 对rs1执行逻辑左移、算术右移,移动rs2的低5位,测试了移位操作指令。 6. ADD/SUB (Add/Subtract): 提供加法和减法操作,用于执行简单的算术运算。 通过这些指令的测试,实验者不仅验证了模拟器的功能实现,也深化了对RISC-V RV32I指令集的理解。这种实验有助于提升学生的编程能力、CPU体系结构理解和指令集设计实践能力。