- gem5-tutorial-hpca-2023
- 1 介绍
- 1.1 Gem5是什么
- 1.2 Gem5可以用来做什么
- 1.3 获取并构建gem5
- 1 介绍
gem5-tutorial-hpca-2023
-
打开网址:
github -
创建教程代码空空间
“Code” -> “Codespaces” ->
“Create Codespace on master”
GitHub Codespaces 是一个由 GitHub 提供的云端开发环境,它允许开发者在浏览器中直接进行代码的开发、编辑和测试,无需在本地计算机上安装任何开发工具或配置环境。这使得开发者可以更快速地开始一个新项目,同时也方便了团队成员之间的协作,因为每个人都可以在相同的云端环境中工作。
1 介绍
1.1 Gem5是什么
gem5架构模拟器提供了一个通过对底层硬件的行为进行建模来评估计算机系统的平台。它使研究人员能够模拟复杂计算机系统的性能和行为,包括CPU、内存系统和互连。这使得研究不同微架构和架构选择的性能以及不同工作负载的影响,而无需构建和测试真实系统。
Gem5是一个开源的计算机架构模拟器,它结合了系统级架构和处理器微架构。Gem5的前身是密歇根大学的m5项目和威斯康星大学的GEMS项目。这两个项目于2011年合并,形成了现在的Gem5。Gem5被广泛应用于学术界和工业界,支持多种指令集架构(ISA),包括Arm、x86、MIPS、Power、RISC-V、SPARC等,并且提供了多种CPU模型,如Simple CPU、Minor CPU、O3 CPU等。它是一个模块化、离散事件驱动的计算机系统模拟器平台,主要由C++和Python编写。Gem5支持两种主要模式:全系统模式(FS)和系统调用模式(SE),能够模拟完整的基于Linux的操作系统,或者模拟系统调用。此外,Gem5还包括了两种不同的缓存系统:Classic和Ruby 3。
1.2 Gem5可以用来做什么
- 教育用途
- Research
- Industrial R&D(Research and Development) 工业研发
1.3 获取并构建gem5
-
Gem5开发语言
模拟配置是用 Python 编写的,它与核心 CPP 模拟器交互。 在本教程中,我们将仅在 Python 级别进行工作。但是添加CPP代码对于扩展gem5的功能是必要的。
-
Gem5运行层次
- 主机host:正在使用的实际硬件
- 模拟器Simulator:在主机上运行,向guest开放硬件
- 访客guest:在Simulated硬件Hardware上运行的代码
gem5 上运行的操作系统是 guest OS
gem5模拟硬件 - 模拟器的代码:运行本机执行/模拟guest代码
- guest代码:(或基准、工作负载等)
在 gem5 上运行,而不是在主机上运行。 - 模拟器的性能: 在主机上运行模拟的时间 你感受到的Wallclock时间
- 模拟得出的性能: 模拟器预测的时间 guest代码在模拟器上运行的时间
- 下载\构建 gem5
- 安装依赖
> sudo apt install build-essential git m4 scons zlib1g zlib1g-dev \ libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \ python3-dev python-is-python3 libboost-all-dev pkg-config libhdf5-dev libpng-dev //可能需要安装: > apt-get install libcapstone-dev
- 克隆源代码
> git clone https://github.com/gem5/gem5.git > cd gem5 //在编译时需要指定系统配置的缓存一致性协议: > scons build/X86/gem5.opt -j$(nproc) PROTOCOL=MESI_Three_Level
- 最后编译成功
> ... > scons: done building targets