gem5-21.2 已发布!


我们自豪地宣布 gem5 项目版本 21.2。 在此发布中,我们合并了来自 33 位独特作者(新作者和常客)的 790 次提交,他们来自学术界和工业界。 我们一如既往地感谢社区为维护和改进 gem5 所付出的所有时间。

21.2 亮点

增强的标准库

自 v21.1 以来以现已弃用的名称”组件库”存在,gem5 v21.2 发布将 gem5 标准库从 alpha 状态移出。 gem5 标准库的目的是为 gem5 用户提供一套标准的常用组件和实用程序,以帮助他们进行研究。 我们使用标准库的总体目标是从 gem5 配置文件中删除”样板”代码; 使 95% 的从模拟到模拟很少改变的活动以”现成”的方式提供给用户。 例如,希望实验缓存大小影响的用户可以使用 gem5 标准库设置处理器、内存系统并在合理的基准测试上进行测试,从而让他们完全专注于缓存大小变化的影响。

gem5 标准库作为 Python 包提供,包含以下内容:

注意: gem5 标准库的使用是可选的。 它不会更改任何已建立的 gem5 API,也不会更改如何创建 gem5 配置脚本。 在 v21.1 中运行的 gem5 配置脚本应在 v21.2 中继续运行。 但是,我们希望 gem5 库可以帮助用户创建模拟,就像所有库一样。

用户可以在 gem5 仓库的 configs/example/gem5_library 目录中找到包含 gem5 标准库的示例配置脚本。

作为 gem5 标准库如何简化运行 gem5 模拟的示例,请考虑以下脚本:

from gem5.prebuilt.demo.x86_demo_board import X86DemoBoard
from gem5.resources.resource import Resources
from gem5.simulate.simulator import Simulators

# Here we setup the board. The prebuilt X86DemoBoard allows for Full-System X86
# simulation.
board = X86DemoBoard()

# We then set the workload. Here we use the 5.4.49 Linux kernel with an X86
# Ubuntu OS. If these cannot be found locally they will be automatically
# downloaded.
board.set_kernel_disk_workload(
    kernel=Resource("x86-linux-kernel-5.4.49"),
    disk_image=Resource("x86-ubuntu-18.04-img"),
)

# We then setup the Simulator and run the simulation.
simulator = Simulator(board=board)
simulator.run()

可以使用以下命令执行此脚本:

scons build/X86/gem5.opt
./build/X86/gem5.opt <script>

该脚本将自动从 gem5-resources 获取正确的 Linux 内核和包含 Ubuntu 18.04 的磁盘镜像(如果主机系统上尚不存在)。 然后它将运行全系统 X86 模拟,直到操作系统完全启动,然后退出。 在引入 gem5 标准库之前,用户必须付出相当大的努力来构建这样的模拟(数百行 Python 代码)。

虽然我们希望我们以直观的方式设计了标准库,但用户可以参考 src/python/gem5 下的源代码。

在下个月,我们将更新 gem5 网站,提供有关使用 gem5 标准库的新教程和文档。

gem5 标准库的未来工作

在接下来的几个 gem5 发布中,我们将扩展标准库以包含更多组件和功能。 我们的一个大目标是提供经过验证的代表真实世界对应物的预构建组件和系统。

Simulate 模块将被扩展、改进并移出 beta 状态,因为它在 gem5 标准库中的作用变得更加清晰。

如果您想报告 gem5 标准库中的错误或有功能请求,请将其提交到 gem5 的 Jira 站点。 有关标准库使用的问题可以提交到 gem5 用户邮件列表

LupIO:gem5 的友好 I/O 设备

LupIO 设备由 Joel Porquet-Lupine 教授 开发,作为一套用于教学的开源 I/O 设备。 它们被设计为建模一套完整的 I/O 设备,这些设备既不会在课堂环境中过于复杂而难以教授,也不会过于简单而无法转化为理解真实世界的设备。 UC Davis 的两名本科生 Melissa Jost 和 Laura Hinman 的目标是将 LupIO 设备整合到 gem5 中。 因此,gem5 v21.2 发布包括 LupIO 实时时钟、随机数生成器、终端设备、块设备、系统控制器、定时器设备、可编程中断控制器和处理器间中断控制器。

LupIO 的更详细概述可以在 Porquet-Lupine 教授的论文 “LupIO: a collection fo education-friendly I/O devices” 中找到,有关更广泛的 LupLab 研究组的信息可以在他们的网站上找到。

希望尝试 LupIO 设备的用户可以在 configs/example/lupv 目录中找到示例脚本和 README 文件。

注意: 这些 LupIO 设备已为 RISC-V 构建和测试。 但是,如果需要或希望,没有理由不能修改它们以与其他 ISA 目标一起工作。 我们欢迎 gem5 社区的进一步开发。

Arm 改进

在与 Arm Holdings 的持续和欢迎的合作中,对 gem5 Arm 实现进行了改进。 它们是:

GPU 改进

主要由 AMD, Inc. 和威斯康星大学持续努力改进了 gem5 的 GPU 支持。 在此发布中:

gem5-SST 桥接器恢复

在 gem5 的最近版本中,我们遗憾地失去了与结构模拟工具包 (SST) 集成的能力。 与 SST 社区合作,我们恢复了对将 gem5 核心连接到 SST 内存系统的支持。 在 v21.2 发布中,这已针对 RISC-V 和 Arm 进行了测试。 有关设置和运行 gem5 与 SST 的更多信息可以在 ext/sst/README.md 中找到。

新/更改的 API

其他 v21.2 改进