当前位置: 首页 > news >正文

四步向gem5中添加用户自定义的分支预测器

第1步:向gem5的文件系统中增加特定算法的源文件和头文件

向gem5系统的预测器文件夹中增加特定算法(<some_algorithm>)的预测器源文件和头文件,此时尚未完成添加。

撰写分支预测算法的源文件(<some_algorithm>.cc)和头文件(<some_algorithm>.hh),并将它们放置到$(gem5)/src/cpu/pred文件夹中($(gem5)表示gem5的安装位置);

2步:向gem5文件系统中增加特定算法仿真对象的Python

第1步中预测器需要作为一个SimObject添加到gem5系统中,因此需要先为这个待添加的SimObject创建一个Python类。此Python类包含可从Python配置文件控制的SimObject的参数。

找到现有的gem5/src/cpu/pred/BranchPredictor.py类文件,向其中添加一个新类(<Some_Algorithm>BP,即我们增加的特定算法),该类继承自Branch Predictions的“BranchPredictor”类。

class GshareBP(BranchPredictor):type = '<Some_Algorithm>BP'cxx_class = 'gem5::branch_prediction::<Some_Algorithm>BP'cxx_header = "cpu/pred/<some_algorithm>BP.hh"# 以下是算法特定的参数(一个例子)PHTPredictorSize = Param.Unsigned(16384, "Size of local predictor")PHTCtrBits = Param.Unsigned(2, "Bits per counter")globalPredictorSize = Param.Unsigned('16', "Size of global Predictor")

3步:向gem5的构建系统注册前两步增加的文件/类

即前两步中名为<some_algorithm>.cc源文件和名为<Some_Algorithm>BP的SimObject Python类。为了能够编译前述C++文件,需要向构建系统指示这些文件。gem5使用SCons作为其构建系统。因此,应该为添加的SimObject编写一个SConscript文件,指定需要在系统中构建的内容。SConscript文件是一个简单的Python文件,更多信息可以在在线资源中找到。

修改现有的gem5/src/cpu/pred/SConscript文件。

SimObject('BranchPredictor.py', sim_objects=['IndirectPredictor', 'SimpleIndirectPredictor', 'BranchPredictor','LocalBP', 'TournamentBP', 'BiModeBP', 'TAGEBase', 'TAGE', 'LoopPredictor','<Some_Algorithm>BP', 'TAGE_SC_L_TAGE', 'TAGE_SC_L_TAGE_64KB', 'TAGE_SC_L_TAGE_8KB','LTAGE', 'TAGE_SC_L_LoopPredictor', 'StatisticalCorrector', 'TAGE_SC_L','TAGE_SC_L_64KB_StatisticalCorrector','TAGE_SC_L_8KB_StatisticalCorrector','TAGE_SC_L_64KB', 'TAGE_SC_L_8KB', 'MultiperspectivePerceptron','MultiperspectivePerceptron8KB', 'MultiperspectivePerceptron64KB','MPP_TAGE', 'MPP_LoopPredictor', 'MPP_StatisticalCorrector','MultiperspectivePerceptronTAGE', 'MPP_StatisticalCorrector_64KB','MultiperspectivePerceptronTAGE64KB', 'MPP_TAGE_8KB','MPP_LoopPredictor_8KB', 'MPP_StatisticalCorrector_8KB','MultiperspectivePerceptronTAGE8KB'])

此外,还应将以下行添加到SConscript文件末尾。

Source('<some_algorithm>.cc')

4步:重新构建(增加特定预测算法后的)gem5

完成1~3步骤后,需要从头开始重新构建系统,以便将<some_algorithm>的SimObject真正添加到gem5中并生效。用户可以为构建选择所需的指令集(ISA),下面例子使用RISCV,也可以使用ARM,X86等。

打开终端并导航到gem5目录($(gem5)),然后输入以下命令(与多数一般的构建相同):

scons build/RISCV/gem5.opt -j4

总结

至此gem5便增加了<Some_Algorithm>BP。验证这一点可以在gem5目录下:

终端中输入以下命令:

build/RISCV/gem5.opt configs/example/se.py --help

如果可以在--bp_type部分看到名为<Some_Algorithm>BP的参数,就表示该算法已成功添加。

参考:GitHub - murattokez/gshare-gem5: gshare branch prediction implemantaion on gem5


http://www.mrgr.cn/news/52958.html

相关文章:

  • vue综合指南(六)
  • springboot033小徐影城管理系统(论文+源码)_kaic
  • 复现EfficientNet
  • 平台上新 | 智能分析——你的智能体调优工具已上线!
  • 倍思、公牛、西圣充电宝好用吗?测评PK 谁是性价比之王!
  • 我与C语言二周目邂逅vlog——7.预处理
  • Java项目-基于SpringBoot框架的学生考勤管理系统项目实战(附源码+文档)
  • Nuxt.js 应用中的 app:templates 事件钩子详解
  • 使用.NET MAUI开发第一个安卓APP
  • rust入门基础笔记(最全详细的笔记)
  • 在MySQL中为啥引入批量键访问(Batch Key Access, BKA)
  • 大模型缺的脑子,终于在智能体上长好了
  • 车企放弃自研?高阶智驾「火拼」
  • matlab相位图
  • 医药行业智能仓中如何运用 AI 进行质量管理?
  • spark统一内存模型 详解
  • 限时早鸟折上折,畅享超值优惠!
  • soybean-admin:清新优雅、高颜值的后台管理平台模板
  • 前端学习---(1)HTML
  • Transformer与Seq2Seq中的Mask和Pad