gem5/gem5
GitHub: gem5/gem5
gem5 是一个模块化的计算机系统架构研究平台。
Stars: 2640 | Forks: 1857
# gem5 模拟器
这是 gem5 模拟器的仓库。它包含了模拟器的完整源代码以及所有测试和回归。
gem5 模拟器是一个模块化的计算机系统架构研究平台,涵盖了系统级架构以及处理器微架构。它主要用于评估新的硬件设计、系统软件更改以及编译时和运行时系统优化。
主要网站可在 找到。
## 测试状态
**注意**:以下关于在 gem5 的 develop 分支上运行的测试:
[](https://github.com/gem5/gem5/actions/workflows/daily-tests.yaml)
[](https://github.com/gem5/gem5/actions/workflows/weekly-tests.yaml)
[](https://github.com/gem5/gem5/actions/workflows/compiler-tests.yaml)
## 入门
一个好的起点是 ,有关构建模拟器和入门的更多信息,请参阅 和 。
## 构建 gem5
要构建 gem5,您需要以下软件:g++ 或 clang、Python(gem5 链接到 Python 解释器)、SCons、zlib、m4,以及如果您想支持跟踪捕获和回放,则需要 protobuf。有关这些工具的最小版本详情,请参阅 。
一旦解决所有依赖项,执行 `scons build/ALL/gem5.opt` 以构建包含所有 gem5 ISA 的优化版本 gem5 二进制文件(`gem5.opt`)。如果您只想编译包含单个 ISA 的 gem5,可以将 `ALL` 替换为 ISA 的名称。有效选项包括 `ARM`、`NULL`、`MIPS`、`POWER`、`RISCV`、`SPARC` 和 `X86`。完整的选项列表可在 build_opts 目录中找到。
有关构建 gem5 的更多信息,请参阅 https://www.gem5.org/documentation/general_docs/building。
## 源代码树
主要源代码树包括以下子目录:
* build_opts:gem5 的预置默认配置
* build_tools:gem5 构建过程中使用的工具
* configs:示例模拟配置脚本
* ext:构建 gem5 所需的较少使用的外部包
* include:用于其他程序的包含文件
* site_scons:构建系统的模块化组件
* src:gem5 模拟器的源代码。C++ 源代码、Python 包装器和 Python 标准库都位于此目录中。
* system:模拟系统的可选系统软件的源代码
* tests:回归测试
* util:有用的实用程序和文件
## gem5 资源
要运行全系统模拟,您可能需要编译的系统固件、内核二进制文件和一个或多个磁盘镜像,具体取决于 gem5 的配置和您要运行的工作负载类型。许多这些资源可以从 获取。
有关 gem5 资源的更多信息,请参阅 。
## 获取帮助、报告错误和请求功能
我们为用户和开发者提供了多种渠道,用于获取帮助、报告错误、请求功能或参与社区讨论。以下是推荐使用的最常见渠道之一。
* **GitHub 讨论**:一个 GitHub 讨论页面。可以用来开始讨论或提问。可在 找到。
* **GitHub 问题**:一个 GitHub 问题页面,用于报告错误或请求功能。可在 找到。
* **Jira 问题跟踪器**:一个 Jira 问题跟踪器,用于报告错误或请求功能。可在 找到。
* **Slack**:一个具有各种频道的 Slack 服务器,gem5 社区可以参与各种讨论。请访问 加入。
* **gem5-users@gem5.org**:一个邮件列表,gem5 用户可以提问或开始讨论。要加入邮件列表,请访问 。
* **gem5-dev@gem5.org**:一个邮件列表,gem5 开发者可以提问或开始讨论。要加入邮件列表,请访问 。
## 为 gem5 贡献
我们希望您喜欢使用 gem5。当适当的时候,我们建议您分享您对项目的贡献。 可以帮助您开始。更多信息可以在 CONTRIBUTING.md 文件中找到。
标签:C++, DNS解析, gem5, m4, protobuf, Python, SCons, zlib, 依赖管理, 回归测试, 处理器微架构, 开源项目, 微架构, 性能评估, 数据擦除, 无后门, 测试, 源代码, 研究平台, 硬件设计, 硬件设计评估, 系统级架构, 系统软件, 系统软件变更, 编译优化, 编译时优化, 计算机系统架构, 运行时优化, 逆向工具