上手使用 GEM5
# 上手 GEM5
# GEM5 介绍
GEM5 是一个开源计算机架构模拟器,包括系统级架构以及处理器微架构。GEM5 的前身为密歇根大学的 m5 项目与威斯康星大学的 GEMS 项目。2011 年 m5 与 GEMS 合并为 Gem5,目前被广泛用于学术界和工业界。通过谷歌学术可以看到,Gem5 目前被引用超过 5000 次,大量论文采用 Gem5 作为研究工具。同时也被许多工业界公司使用,包括 ARM、AMD、Google、Micron、Metempsy、HP、Samsung 等。 许多公司也积极为 gem5 添加了新功能或改进了现有功能。近年来,Gem5 社区仍在积极更新与开发,以支持未来 15 年的计算机架构研究。 gem5 是一个模块化离散事件驱动的计算机系统模拟器平台。这意味着,架构研究人员在研究新架构时,只需添加或修改特定于目标的功能模块,而不需要了解模拟器的方方面面。同时,也使得 gem5 容易与其他模拟器联合仿真,构建联合模拟器平台或搭建自己的模拟系统,目前已有许多工作基于 Gem5 开发了模拟平台。
Gem5 主要由 C++和 python 编写的。其中 C++占绝大多数,主要负责底层架构的具体实现等,Python 则负责对象的初始化、配置和模拟控制等。另外包含了两个领域特定语言 DSL,其中 ISADSL 负责统一二进制指令的解码和语义规范,SLICC 用于实现缓存一致性协议。
# 安装 GEM5
- 获取源码
git clone https://github.com/gem5/gem5
- 安装依赖
推荐在 ubuntu 环境下进行构建(或者在 docker 中进行)
提示
我也尝试过在 arch 或是 fedora 这些滚动发行版上进行构建,但是似乎是因为 python 版本过高会导致 scons 构建工具出现问题。如果你在使用这些滚动发行版,建议在 docker 下进行构建
sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev python3
suod apt install libboost-all-dev pkg-config libhdf5-dev libpng-dev mold pip libcapstone-dev #可选
2
- 开始构建
cd gem5
scons build/RISCV/gem5.opt -j`nproc`
2
- 运行 Hello
build/X86/gem5.opt configs/learning_gem5/part1/simple-riscv.py
# 常见问题
GEM5 官网列出了很多常见的错误:https://www.gem5.org/documentation/learning_gem5/part1/building/