[发明专利]一种基于Rust的多核RISCV-CPU模拟器在审
申请号: | 202110713956.6 | 申请日: | 2021-06-25 |
公开(公告)号: | CN113609066A | 公开(公告)日: | 2021-11-05 |
发明(设计)人: | 徐君;蒋旭;伍楷舜 | 申请(专利权)人: | 深圳大学 |
主分类号: | G06F15/17 | 分类号: | G06F15/17;G06F9/30 |
代理公司: | 北京市诚辉律师事务所 11430 | 代理人: | 耿慧敏;朱伟军 |
地址: | 518060 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 rust 多核 riscv cpu 模拟器 | ||
1.一种基于Rust的多核RISCV模拟器,该模拟器包括Risc-V处理核心模块、总线模块、DRAM模块、CLINT模块、PLIC模块和UART模块,其中Risc-V处理核心模块设置为多个,并基于Risc-V开源指令集构造,用于实现取指令,译码和执行功能;DRAM模块用于模拟内存;PLIC模块用于模拟硬盘;UART模块用于模拟外部中断或本地中断;总线模块与用于控制Risc-V处理核心模块、总线模块、DRAM模块、CLINT模块,PLIC模块和UART模块之间的信息交互,以实现无冲突通信。
2.根据权利要求1所述的基于Rust的多核RISCV模拟器,其特征在于,所述模拟器利用Rust的线程机制实现使用多个硬件线程同时运行,以模拟多核并行运行,其中每个硬件线程有自己的程序计数器,该程序计数器用于存储下一条待执行指令的位置。
3.根据权利要求1所述的基于Rust的多核RISCV模拟器,其特征在于,对于多个所述Risc-V处理核心模块,利用RUST的锁机制实现原子指令,当一个Risc-V处理核心模块读取一个字节时,其他Risc-V处理核心模块被设置为不能访问该字节的内存地址。
4.根据权利要求1所述的基于Rust的多核RISCV模拟器,其特征在于,所述总线模块被配置为对其所连接的子模块发出读写访问指令时,先通过Rust的锁机制完成对子模块的加锁,在读写指令执行完成之后自动释放锁。
5.一种权利要求1至4中任一项所述模拟器的模拟方法,包括:
参数解析器从命令行读取模拟器配置参数;
模拟器主函数模块根据参数解析器解析的配置参数生成硬件线程,在硬件线程上运行多个Risc-V处理核心模块,并管理所述Risc-V处理核心模块的启动和暂停;
主函数模块生成DRAM模块、CLINT模块,PLIC模块和UART模块的实例,并将可执行文件存入DRAM模块;
将Risc-V处理核心模块、DRAM模块、CLINT模块、PLIC模块和UART模块的实例的可变引用传入总线生成函数,以完成各模块和总线的连接;
Risc-V处理核心模块通过总线获取DRAM模块中保存的可执行文件,并运行指定程序。
6.一种权利要求1至4中任一项所述模拟器的生成方法,包括以下步骤:
参数解析器从命令行读取模拟器配置参数,将命令行的输入解析为模拟器初始化所需的初始化参数并将其传入主函数模块;
主函数模块根据所述初始化参数和相应模块的数据结构,实例化DRAM模块、CLINT模块、PLIC模块和UART模块;
主函数模块声明用于容纳Risc-V处理核心模块的容器,该容器中的元素类型为Thread型变量,并根据用户在命令行中输入的CPU核心数目n,通过Rust的thread包建立同等数量的硬件线程,并将每个线程压入该容器内;
多个Risc-V处理器核心模块线程通过总线共享同一套DRAM模块、CLINT模块、PLIC模块和UART模块。
7.根据权利要求6所述的生成方法,其中,所述初始化参数包含待执行的文件名、文件系统ramfs文件、CPU核心数和待使用的模块名。
8.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求5至7任一项所述方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳大学,未经深圳大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110713956.6/1.html,转载请声明来源钻瓜专利网。