文章:Màrius Montón. 2020. A RISC-V SystemC-TLM simulator. In Fourth Workshop
on Computer Architecture Research with RISC-V (CARRV 2020). ACM,
New York, NY, USA, 4 pages. https://doi.org/10.1145/nnnnnnn.nnnnnnn
源码:https://github.com/mariusmm/RISC-V-TLM
1.虚拟原型是什么?
虚拟原型是目标系统的快速且具有完整功能的软件模型。
描述虚拟原型的标准语言与传统构建系统模型所用的c/c++/matlab语言不同,开发虚拟原型是事实标准是SystemC语言,一种基于c++的类库,可描述硬件的并发行为。因此与c等建模语言比较,SystemC搭建的系统可包含更多细节,对系统的性能/能耗的评估也更加准确。
2.虚拟原型能干什么?
开发人员可以在其上加载、执行和调试二进制程序代码,它类似于软件开发人员所使用的硬件开发板,只是比真实硬件的完成要早得多。通过虚拟原型可以快速进行系统评估和设计空间探索,以及在早期进行嵌入式软件的开发。
3.架构解析
这个模拟器的特点是简洁、可拓展、支持risc基本整数指令、整数乘除指令、原子指令、压缩指令(IMAC)。它运行的机理,首先将soc系统需运行的c代码通过riscv标准交叉编译工具链生成hex文件,模拟器启动后,从memory模块读取hex文件到cpu,即指令集模拟器ISS。ISS中的指令模块负责解码和识别指令集子集,然后转到执行模块执行指令的具体操作。寄存器模块包含了32个通用寄存器,pc和csr寄存器.
ISS与其他模块的通信通过bus ctrl根据地址映射来分发,进行访存、字符输出、修改定时器等操作。通过在模拟器中添加控制语句可以对系统的性能进行评估。
此模拟器简单但架构清晰,研究其代码,可以对基于SystemcC/TLM的模拟器有一个快速的了解。