gem5 的 Gshare 分支预测器
Gshare branch predictor for gem5
我想在 gem5 中使用 Gshare
。我找到了源代码和说明 here。不幸的是,GshareBP
选项没有出现在 gem5 的分支预测器列表中。
有什么想法吗?
该列表是根据 Python class 生成的。作者忘记添加参数 classes 的 Python 声明,所以你必须自己做。
例如GShareBP
需要参数localPredictorSize
和localCtrBits
,所以你需要添加下面的class src/cpu/pred/BranchPredictor.py
(这只是一个例子;我不知道参数的实际值):
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 很有帮助
我想在 gem5 中使用 Gshare
。我找到了源代码和说明 here。不幸的是,GshareBP
选项没有出现在 gem5 的分支预测器列表中。
有什么想法吗?
该列表是根据 Python class 生成的。作者忘记添加参数 classes 的 Python 声明,所以你必须自己做。
例如GShareBP
需要参数localPredictorSize
和localCtrBits
,所以你需要添加下面的class src/cpu/pred/BranchPredictor.py
(这只是一个例子;我不知道参数的实际值):
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 很有帮助