如何在gem5中配置ruby协议

gem5模拟器中实现了一种更细节的内存子系统的模拟模型——Ruby。它建模了inclusive/exclusive cache,包含多种替换策略、一致性协议、互连网络、DMA和内存控制器,以及多种用于初始化内存请求和处理响应的排序器。

一般情况下,我们使用如下命令建立一个X86 gem5模拟器:

scons build/X86/gem5.debug -j$(nproc)

然后使用上述建立的X86 gem5模拟器运行fs.py配置文件,添加--ruby选项,可以运行带ruby内存模型的X86全系统仿真。

build/X86/gem5.debug configs/example/fs.py --kernel=x86-linux-kernel-5.4.49 --disk=x86-ubuntu-18.04-img --ruby --mem-type=DDR3_2133_8x8 -n=2

得到的结果配置文件如下(包含ruby对象):

 同时,gem5提供了许多cache一致性协议,例如:CHI、MI、MOESI、MESI、Garnet_standalone等(configs/ruby文件夹下),而在fs.py的配置选项中并没有可以配置该协议的选项,预估是无法在仿真时添加配置选项来配置。那么该如何配置呢?


以下介绍配置CHI协议的过程。

1. 建立包含cache一致性协议的gem5模拟器

查看源码(configs/ruby/Ruby.py),如下:

发现该协议应该在建立gem5模拟器时就声明,添加选项PROTOCOL

scons build/X86/gem5.debug PROTOCOL=CHI -j$(nproc)

2. 运行仿真

上述包含cache一致性协议的gem5模拟器成功建立后,即可直接使用来运行全系统仿真。

build/X86/gem5.debug configs/example/fs.py --kernel=x86-linux-kernel-5.4.49 --disk=x86-ubuntu-18.04-img --mem-type=DDR3_2133_8x8 -n=2 --ruby

 得到的配置文件与之前无协议的配置文件的对比如下(部分):

 会添加更多的组件,例如:sequencer、cache控制器等。

在CHI协议的源码中(configs/ruby/CHI.py),我发现针对该协议可以添加自定义的配置文件,但前提是网络拓扑需要配置为CustomMesh

 然后我尝试配置一下在这里就发现源码由bug,需要修改源码才能正确运行,在此记录一下。

首先运行以下命令

build/X86/gem5.debug configs/example/fs.py --kernel=x86-linux-kernel-5.4.49 --disk=x86-ubuntu-18.04-img --mem-type=DDR3_2133_8x8 -n=2 --ruby --topology=CustomMesh --chi-config=configs/example/noc_config/2x4.py

p.s. --topology配置网络拓扑,选择CustomMesh的话必须添加--chi-config选项来配置网络参数,源码中提供了一个CHI协议配置文件示例configs/example/noc_config/2x4.py

然后发现无法运行,出现错误:

根据提示查看源码( configs/topologies/CustomMesh.py):

 函数distributeNodes声明(在同一个文件中)如下:

 因此可知,源码中确实是多传入了一个参数options,将其删掉即可:

 重新运行仿真,可成功建立ruby网络拓扑为CustomMesh的配置:

其他的一些坑

  • 尝试建立带协议的NULL系统,发现建立的gem5模拟器无法正常使用,会出现缺少声明对象的错误,我猜测可能NULL系统无法添加cache一致性协议。但官网教程gem5: Garnet Synthetic Traffic中使用PROTOCOL=Garnet_standalone可以配置NULL gem5
scons build/NULL/gem5.debug PROTOCOL=Garnet_standalone
  • 配置选项--chi-config指定配置文件路径,主要包含num_rows、num_cols等一些参数的配置,对这个参数的理解参考文件configs/ruby/CHI_config.py。
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值