gem5的Gshare分支预测器

问题描述

我想在 gem5 中使用 Gshare。我找到了源代码和说明 here。不幸的是,GshareBP 选项没有出现在 gem5 的分支预测器列表中。 有什么想法吗?

解决方法

该列表是从 Python 类生成的。作者忘记添加参数类的 Python 声明,所以你必须自己做。

例如,GShareBP 需要参数 localPredictorSizelocalCtrBits,因此您需要添加以下类 src/cpu/pred/BranchPredictor.py(这只是一个示例;我不t 知道参数的实际值):

class GShareBP(BranchPredictor):
    type = 'GShareBP'
    cxx_class = 'GShareBP'
    cxx_header = "cpu/pred/gshare.hh"

    localPredictorSize = Param.Unsigned(2048,"Size of local predictor")
    localCtrBits = Param.Unsigned(2,"Bits per counter")

您还需要通知必须编译 gshare.cc(在 src/cpu/pred/SConscript 中):

Source('gshare.cc')

这样做之后你会面临很多错误;该代码是为 2014 年的 gem5 编写的。

您可能还需要做的事情:

  • 将以下内容添加到 gshare.cc #include "params/GShareBP.hh"
  • typedef GShareBPParams Params; 添加到 gshare.hh
  • SatCounter 重命名为 SatCounter8

有关详细信息,您可能会发现这本书Learning gem5很有帮助