Gem5模拟器学习(五)
FS全系统模拟
一、构建X86系统
切换到gem目录下,使用Scons进行构建
1 | scons ./build/X86/gem5.opt -j [NumberOfThread] |
二、获取镜像文件和Linux内核文件
FS模拟会启动Linux操作系统,会模拟系统的所有组件。因此需要给系统配置相应的Linux内核以及磁盘镜像
img 文件和 vmlinux 文件是 gem5 中启动操作系统所需的两个重要文件。
- 磁盘镜像(img 文件)储存了操作系统的文件系统和应用程序,这些文件是操作系统运行所必需的。操作系统需要文件系统来存储和组织文件,需要应用程序来实现特定功能。
- Linux内核文件(vmlinux 文件)储存了操作系统的内核代码。内核是操作系统的核心部分,负责管理系统资源和提供基本的服务。如果没有内核,操作系统就无法正常启动和运行。
1. 自动获取脚本
官方教程中使用的img和vmlinux直接来自于gem5资源库(resource repository),直接利用Resource类(gem5: gem5-resources)下载到本地。Gem5官网提供了通过Resource自动获取img文件和vmlinux文件,并运行全系统模拟的示例脚本,脚本代码在configs/example/gem5_library/
目录中。以configs/example/gem5_library/x86-parsec-benchmarks.py为例
gem5可以通过KVM对仿真进行加速,但有的CPU不支持KVM,查看你的处理器是否支持KVM。可以通过安装sudo apt install qemu-kvm并通过kvm-ok来查看
1 | # 安装qemu-kvm |
我的处理器并不支持KVM
因此只能关闭KVM
1 | # Step1 使用requires进行检查时将kvm_required置为False |
这样就可以运行模拟了,使用的benchmark和size可以在该脚本的注释中查看
2.自己制作img文件
三、设置环境变量
1 | # 修改bashrc文件以添加环境变量 |
四、通过配置文件启动模拟系统
gem5提供了许多配置文件来配置不同的系统,其中可以由fs.py与命令行参数搭配快速实现不同配置的全系统模拟
fs.py的各种命令行参数可以通过fs.py -h
查看
m5端
1. m5介绍
2. 生成m5以及对应的libm5.a库
要在应用程序中使用m5提供的指令,首先需要生成m5以及对应的libm5.a库
ps: 编译之前好像要确保安装clang,并保证其版本为6-10
1 | # Step 1 切换到gem5/util/m5目录 |
利用libm5.a库,即可在应用程序中使用libm5.a库中的函数
编写如下测试程序
1 | ########hello_m5.cpp########## |
利用g++和库进行编译
1 | g++ -o hello_m5 hello_m5.cpp -std=c++11 \ |
然后将编译出的可执行文件通过文件挂载的方式存储到img镜像文件中。
3. 启动m5端
启动m5有两种方法,一种是通过系统自带的telnet或者gem5中提供的m5term工具,推荐m5term。
(1)telnet
使用不需要额外安装或配置,直接
1 | telent <host> <post> |
例如
1 | telnet localhost 3456 |
(2)m5term
使用m5前,必须先根据源码构建该工具
1 | # Step 1 切换到gem5/util/term目录 |
之后,就可以通过与telnet类似的方式启动m5了
1 | m5term <host> <post> |