gem5-20.1 已发布!


gem5-20.1 已发布! gem5 仓库的 stable 分支现在指向 gem5-20.1 发布,而不是 gem5-20.0 发布。 总的来说,20.1 发布比 gem5-19 和 gem5-20.1 发布顺利得多。 我认为我们正在学习如何做到这一点!

感谢所有使此发布成为可能的人! 这是一个非常富有成效的发布,有 150 个问题,超过 650 次提交(比 20.0 发布增加 25%),以及 58 位独特的贡献者(增加 100%!)。

下面,我介绍了 gem5-20.1 自 gem5-20.0 以来的主要更改,这些更改也可以在 RELEASE-NOTES.md 文件中找到。 这应该涵盖所有主要更改和面向用户的更改。 希望阅读更改日志后,您可以更新本地 gem5 更改,然后一切都会正常工作。 我确信这不会那么干净,但我们可以希望。

排行榜

首先,我想看看此发布中最多产的贡献者的快速排行榜。 展望未来,我希望这些排行榜能够在网站上实时自动更新。 如果您有兴趣帮助完成这项工作,请告诉我!

提交

v19.0.0.0 标签和 v20.0.0.0 标签之间总共有 510 次提交。 gem5 v19.0.0.0 于 2 月 20 日标记,因此此发布超过 91 天,或每天超过 5.5 次提交! 这是一个相当快的节奏!

拥有更多提交并不一定意味着您贡献更多。 但是,出现在前 10 名提交者列表中确实意味着您在 gem5 上投入了大量时间。 为此,社区感谢您!

  163 Gabe Black
  69  Giacomo Travaglini
  57  Bobby R. Bruce
  45  Hoa Nguyen
  27  Tony Gutierrez
  24  Kyle Roarty
  20  Daniel Carvalho
  19  Emily Brickey
  17  Tiago Mück
  16  Timothy Hayes

审查者

可能比原始提交更重要的是那些抽出时间审查代码的人。 以下是此次提交的前 10 名审查者。 再次感谢您的工作! 审查者发现的错误数量令人难以置信,没有这些人,gem5 的代码质量将受到影响。

虽然有 510 次提交,但有 642 次审查,平均每次更改 1.25 次审查。 我们计算审查的方式并不完美,因为它遗漏了”重新审查”,也跳过了”维护者”审查。 但是,我希望在未来的发布中,这个审查比率更接近每个变更集 2 次审查。

    265  Jason Lowe-Power
     91  Andreas Sandberg
     73  Gabe Black
     68  Giacomo Travaglini
     67  Matt Sinclair
     61  Bobby R. Bruce
     55  Nikos Nikoleris
     48  Anthony Gutierrez
     46  Daniel Carvalho
     18  Hoa Nguyen

我想特别关注这个列表,因为有很多人做审查比编写代码更多。 这对社区非常有帮助,即使您没有添加代码,我们也感谢您的贡献!

主要的面向用户的更改

在此发布中,我们进行了一些大型的面向用户的更改。 我们希望这些更改易于使用,并且在大多数情况下向后兼容。

新的默认分支名称:stable

gem5 的默认分支现在命名为 “stable” 而不是 “master”。 “Stable” 是对此分支的更好描述,此名称更改与 Git 项目GitHub 和许多其他项目实施的更改一致。

弃用 “master” 和 “slave”

在此发布中,我们已弃用 gem5 中 “master” 和 “slave” 的大多数用法。 这些是有问题的术语,不利于 gem5 社区的多样性和包容性。 我们的代码库中有超过 3000 个这些词的实例!

在绝大多数情况下,类、变量名和注释的新名称提高了代码可读性并且更加精确。 在少数情况下,当 gem5 正在建模的底层技术使用此术语时,我们仍使用 master/slave 术语。

详细信息可以在此 Jira 问题中找到,并且在下面的更改日志中显示了一个简单的”解码环”。

行为准则

gem5 项目现在有一个官方的行为准则,其中”我们承诺以有助于开放、欢迎、多样、包容和健康社区的方式行动和互动。” 行为准则规定了我们的标准以及这些标准的执行。 如果您对此行为准则有任何疑问,请发送电子邮件至 gem5-dev 邮件列表。 如果您想报告违规行为,联系人是 David Wood 或任何其他 PMC 成员。 请参见 MAINTAINERS 文件以获取电子邮件。

测试

我们在此发布中的一大推动是改进我们的测试基础设施。 我们启动了一个 Jenkins 服务器(非常感谢 Mike Upton!)来运行我们的夜间测试和其他集成测试。 目前,Jenkins 在 develop 分支上每晚运行”长时间”回归测试,每周运行一套编译器测试。 我们还更新了 CI 测试器 (kokoro) 以使用更新的环境,并总体上改进了测试基础设施。

我们期待很快对 Gerrit 进行更多脚本编写。 如果您有关于添加更多测试或新测试内容的想法,我们很乐意听取!

更改日志

20.1 中的新功能

新的 DRAM 接口:由 Wendy Elsasser 贡献

您可以在 gem5 博客 或 Wendy 在 YouTube 上的演讲中找到有关此的详细信息:关于新接口和 NVM 的演讲关于 LPDDR5 的演讲

gem5-20.0 的代码

system.mem_ctrl = DDR3_1600_8x8()
system.mem_ctrl.range = system.mem_ranges[0]
system.mem_ctrl.port = system.membus.master

现在,您必须创建内存控制器并添加特定的 DRAM 接口。 gem5-20.1 的代码。

system.mem_ctrl = MemCtrl()
system.mem_ctrl.dram = DDR3_1600_8x8()
system.mem_ctrl.dram.range = system.mem_ranges[0]
system.mem_ctrl.port = system.membus.master

此更改的一个可能陷阱是 SimpleMemory 类似于 MemCtrl没有 DRAM 接口。 因此,SimpleMemory 不是 gem5-20.0 及之前版本的 DRAM 控制器的直接替代品。

改进的片上互连模型,HeteroGarnet:由 Srikant Bharadwaj 贡献

您可以在 gem5 博客Srikant 在 YouTube 上的演讲 中找到有关此的详细信息。

事务内存支持:由 Timothy Hayes 贡献

您可以在 Jira 问题 上找到详细信息

其他新功能

已移除的功能

新支持的平台

不再支持的平台

有关 gem5 的当前依赖项,请参见 http://www.gem5.org/documentation/general_docs/building

其他更改

弃用 “master” 和 “slave”

MasterPort -> RequestorPort
SlavePort -> ReceiverPort

xbar.slave -> xbar.cpu_side
xbar.master -> xbar.mem_side

MasterId -> RequestorId

测试改进

更多更改