gem5资源库说明

gem5资源库

gem5资源库是一个存储库,提供一些已知且经过验证与gem5架构模拟器兼容的东西的源代码,这些资源不是gem5编译或运行所必须的,但是可以帮助用户产生特定的仿真模拟。

为什么gem5要使用资源库?

gem5在设计时已经考虑到了灵活性,即用户可能会模拟大量的各种类型的硬件,也会有同样大量的各种类型的工作负载。但是,要求用户去查找和配置gem5的工作负载(例如用户自己的磁盘映像(disk images)、自己的操作系统启动程序(boots)和自己的测试(tests)等)所需的精力投入非常大,这对于许多人来说都是一个障碍。

因此gem5使用资源库的目的是提供一组稳定、常用且已验证并记录与gem5兼容性的资源,此外,gem5提供的资源可引用且稳定,与特定gem5的发行版本相关联,提高实验的可重复性

从哪里获取gem5资源?

建议通过gem5资源库网站,使用gem5资源库查找特定的资源。关于使用该网站进行搜索、过滤和排序的详细信息,请参考帮助页面

gem5 资源托管在我们的Google Cloud Bucket上,资源的链接可以在gem5资源的README.md文件中找到。资源元数据存储在MongoDB Atlas上托管的MongoDB数据库中。如果用户请求更新gem5资源,可以创建动议(issue)或发送邮件至gem5开发人员(gem5-dev)。

如何在gem5中使用gem5资源库网站中的资源?

用户找到想要在模拟中使用的资源后,导航到该资源的“Usage(使用方法)”选项卡。本文以查找和使用riscv-hello这个资源为例,资源链接在此处,在该资源的“Usage”选项卡中可以看到使用资源的代码,用户可复制后粘贴到gem5仿真模拟中。
本例使用riscv-hello资源的代码如下:

obtain_resource(resource_id="riscv-hello")

注意,如果要使用obtain_resource这个函数,还需要以下导入语句:

from gem5.resources.resource import obtain_resource

obtain_resource函数接受以下参数:

  • resource_id:待使用资源的ID号。
  • resource_version:指定待使用的资源版本号。这是一个可选的参数,如果不指定,则gem5会使用与自己版本兼容的最新版本的资源。
  • clients:指定gem5搜索资源的客户端列表。这也是一个可选的参数,如果不指定,则gem5会根据src/python/gem5_default_config.py这个文件中指定的所有客户端搜索资源。默认情况下,gem5会使用公共的MongoDB元数据数据库去查找资源,用户也可以重写此文件来指定自己的本地资源元数据。

在gem5中使用gem5资源库网站中的工作负载(Workload)

用户找到想要在模拟中使用的工作负载后,导航到该工作负载的“Usage(使用方法)”选项卡。
本文以查找和使用riscv-ubuntu-20.04-boot这个资源为例,资源链接在此处,在该工作负载的“Usage”选项卡中可以看到使用资源的代码,用户可复制后粘贴到gem5仿真模拟中。

本例使用riscv-ubuntu-20.04-boot工作负载的代码如下:

Workload("riscv-ubuntu-20.04-boot")

注意,如果要使用Workload 这个类,还需要以下导入语句:

from gem5.resources.workload import Workload

Workload类接受以下参数:

  • workload_name:待使用工作负载的名称。
  • resource_directory:指定下载和访问资源的目录,这是一个可选的参数。
  • resource_version:指定待使用的资源版本号。这也是一个可选的参数,如果不指定,则gem5会使用与自己版本兼容的最新版本的资源。
  • clients:指定gem5搜索资源的客户端列表。这也是一个可选的参数,如果不指定,则gem5会根据src/python/gem5_default_config.py这个文件中指定的所有客户端搜索资源。

在gem5中使用自定义资源

要在gem5中使用自定义资源,建议使用gem5目前支持的数据源格式之一:MongoDB Atlas、本地JSON文件或远程JSON文件。
用户可在运行文件时重写GEM5_DEFAULT_CONFIG这个变量来使用自己的配置文件。
需要特别注意的是,用户添加的任何自定义资源都必须符合gem5资源架构

gem5资源管理器实用程序(位于utils/gem5-resources-manager)为用户更新和创建公共资源(只能由gem5的管理员修改)和本地资源资源的元数据提供了一个图形用户界面(GUI),gem5用户可以在README文件中找到有关gem5资源管理器的更多信息。

如何获取gem5资源库源码?

用户可从网址https://github.com/gem5/gem5-resources获取gem5资源库源码,语句如下:

git clone https://github.com/gem5/gem5-resources

stable分支的HEAD指针指向与最新版gem5兼容的一组资源库源码,用户可以使用以下命令获取:

git clone https://github.com/gem5/gem5.git

有关编译单个gem5资源的信息可参考README.md文件,在许可证许可的情况下,README.md文件会提供一个用于从dist.gem5.org(官方)的Google Cloud Bucket下载编译过的资源的链接。

gem5资源仓库是如何构建的?

存储资源的仓库结构如下:

  • README.md:资源库自述文件。概要描述了每个资源、资源来源以及如何修改(如果适用)以与gem5一起使用,还包括有关许可信息和编译说明,用户如果希望使用某个gem5资源应该首先查看此文件。
  • src:资源源码目录。本目录中可找到gem5资源,每个子目录都对应着一个具体的资源,每个资源都包含自己的README.md自述文件,其中记录了资源的编译方法、使用说明等相关信息。
  • CHANGELOG.md :版本更改记录文件。CHANGELOG这个文概述了特定资源经历的版本更改变化。

版本控制

每个资源都可能有多个版本,版本的形式为<主版本号>.<此版本号>.<补丁版本号> 。版本控制方案基于语义版本控制,每个资源版本都链接到一个或多个gem5版本(例如 v20.0、v20.1、v20.2等)。
默认情况下,gem5使用与当前gem5版本兼容的最新版本的资源,但是用户也可以指定要使用的特定版本资源。如果用户指定的资源版本与正在使用的gem5版本不兼容,gem5将发出警告。用户仍然可以冒险使用使用该资源。

引用资源

强烈建议用户在出版物中使用以下URL格式引用gem5资源以帮助复现实验、教程等:

# For the git repository at a particular revision:
https://github.com/gem5/gem5-resources/<revision>/src/<resource>

# For the git repository at a particular tag:
https://github.com/gem5/gem5-resources/tree/<branch>/src/<resource>

或者使用如下BibTex引用格式:

@misc{gem5-resources,
  title = {gem5 Resources. Resource: <resource>},
  howpublished = {\url{https://github.com/gem5/gem5-resources/<revision>/src/<resource>}},
  note = {Git repository at revision '<revision>'}
}

@misc{gem5-resources,
  title = {gem5 Resources. Resource: <resource>},
  howpublished = {\url{https://github.com/gem5/gem5-resources/tree/<branch>/src/<resource>}},
  note = {Git repository at tag '<tag>'}
}

用户如何贡献gem5资源?

gem5资源存储库通过官方的Gerrit代码审查系统更改于开发分支(develop branch)上,因此更改之前先克隆资源仓库:

git clone https://github.com/gem5/gem5-resources.git

用户随之做出修改后提交(commit)。准备就绪后,使用以下命令推送到Gerrit,这个命令将资源添加到当前在用的最新版gem5中:

git push origin HEAD:refs/for/stable

使用下面的步骤为后一个gem5版本提供资源:

git clone https://github.com/gem5/gem5-resources.git
git checkout --track origin/develop

然后进行更改、提交和推送:

git push origin HEAD:refs/for/develop

提交(commit)的消息头应不超过65个字符,并以”resources:“标记开头,消息头后面的描述不得超过72个字符。示例如下:

resources: Adding a new resources X

This is where the description of this commit will occur taking into
note the 72 character line limit.

强烈建议用户贡献时尽可能地遵循指定的风格指南。用户的所有更改都会通过Gerrit代码审查系统进行审查,一旦完全被接受并合并到gem5资源仓库,请联系Bobby R. Bruce (邮箱:bbruce@ucdavis.edu)将编译过的资源上传到gem5官方的资源bucket中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值