gem5-21.0 已发布!
版本 21.0 标志着 gem5 发布整整一年,在这个周年纪念日,我认为我们有一些最大的新功能! 这是一个非常富有成效的发布,有 100 个问题,超过 813 次提交,以及 49 位独特的贡献者。
21.0 新功能
在 SLICC 中实现的 AMBA CHI 协议:由 Tiago Mück 贡献
此新协议提供了一个可以在缓存层次结构的多个级别重用并配置为建模 MESI 和 MOESI 缓存一致性协议的多个实例的单一缓存控制器。 此实现基于 Arm 的 AMBA 5 CHI 规范,并为大型 SoC 设计的设计空间探索提供了可扩展的框架。
有关更多详细信息,请参见 gem5 文档。 还有一个关于此新协议的 gem5 博客文章。
完全支持 AMD 的 GCN3 GPU 模型
在之前的发布中,此模型仅部分受支持。 截至 gem5 21.0,此模型已完全集成并每晚进行测试。 此模型目前仅在系统调用仿真模式下工作,需要使用 gcn docker 容器来获取正确版本的 ROCm 堆栈。 更多信息可以在此博客文章中找到。
通过此完全支持,我们还提供了许多应用程序。 有关更多信息,请参见 gem5-resources。
RISC-V 全系统 Linux 启动支持:由 Peter Yuen 贡献
gem5 中的 RISC-V 模型现在可以启动未修改的 Linux! 此外,我们实现了 DTB 生成并支持 Berkeley Boot Loader 作为第一阶段引导加载程序。 我们还发布了一套资源供您开始使用:https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/develop/src/riscv-fs/
新/更改的 API
开发人员在多个地方减少了样板代码。
- [API 更改]:不再有
create()函数!以前,每个SimObject都需要手动定义<SimObjectParams>::create()函数。忘记这样做会导致令人困惑的错误。现在,此函数会自动为您创建。如果您需要处理任何特殊情况,仍然可以覆盖它。 - [API 更改]:
params():现在可以使用PARAMS宏,而不是为每个SimObject定义 typedef 和params()函数。
有关这两个 API 更改的更多详细信息,请参见 http://doxygen.gem5.org/release/current/classSimObject.html#details。
- [API 更改]:所有统计现在使用新样式组而不是较旧的手动统计接口。
- 先前的 API(创建不属于
Group的统计)仍然受支持,但现在已弃用。 - 如果统计不是使用新的
GroupAPI 创建的,它可能不会使用新的统计 API(例如,Python API)自动转储。 - 下一个发布中,将对所有旧样式统计发出警告。
- 先前的 API(创建不属于
不再支持的平台
- [面向用户的更改]:Python 2.7 不再受支持。您必须使用 Python 3.6+。
- CLANG 最低版本现在是 3.9
- 将最低 C++ 提升到 C++14
其他改进和新功能
- 构建 m5ops 的额外选项
- m5term 改进
- 有一个新的基于 Python 的库用于处理统计。此库有效,但尚未经过彻底测试。请继续关注下一个发布的更多信息。
- 单元测试的许多改进和添加
- 清理
StaticInst类型 - 工作负载 API 更改
- m5 客户机实用程序的许多更新和更改
- 支持运行 arm64 Linux 内核 v5.8
- 实现了 Arm SCMI