当前位置:   article > 正文

gem5学习——Garnet合成流量(Synthetic Traffic)_garnetsynthetictraffic

garnetsynthetictraffic

(本文是对gem5官方教程gem5: Garnet Synthetic Traffic的学习记录)

Garnet合成流量为模拟有控制输入的Garnet网络提供了一个框架。对携带合成流量的网络测试/调试,或仅考虑网络的模拟有用。

Note:garnet合成流量的注入器仅适用于Garnet_standalone一致性协议。

相关文件

  • configs/example/garnet_synth_traffic.py:调用网络测试器
  • src/cpu/tester/garnet_sythetic_taffic/GarnetSyntheticTraffic.*:实现测试器

实现

在生成和发送数据包的过程中涉及到的步骤如下:

  • 每个周期,每个cpu以概率等于--injectionrate进行伯努利试验,以确定是否生成一个包。
  • 如果--num-packets-max值为非负值,则每个cpu在生成--num-packets-max个数据包后停止生成新的数据包。注入器在经过--sim-cycles之后终止。
  • 如果cpu必须生成一个新数据包,它会根据合成流量类型(--synthetic)计算新数据包的目的地。
  • 这个目标被嵌入到包地址的块偏移后的位中。
  • 生成的包被随机标记为ReadReq,或INST_FETCH,或WriteReq,并发送到Ruby端口(src/mem/ruby/system/RubyPort.hh/cc
  • Ruby Port将数据包分别转换为RubyRequestType:LDRubyRequestType:IFETCHRubyRequestType:ST,并将其发送给Sequencer, Sequencer再将其发送给Garnet独立缓存控制器。
  • 缓存控制器从数据包地址中提取目标目录。
  • 缓存控制器将LDIFETCHST分别注入虚拟网络0、1和2。
  • LDIFETCH作为控制包注入(8字节),ST作为数据包注入(72字节)。
  • 数据包通过网络到达目录。
  • 最后,目录控制器简单的将其删除。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/421125
推荐阅读
  

闽ICP备14008679号