如何修改ChampSim模拟器的分支预测器及CPU流水线相关参数?
ChampSim参数修改操作指南
一、调整bimodal预测器为128条目表+1位分支历史
你给出的bimodal预测器代码仅需修改3个宏定义即可实现需求,修改后的对应代码片段如下:
// 仅展示修改的宏定义部分,其余逻辑代码保持不变 #define BIMODAL_TABLE_SIZE 128 // 原值为16384,修改为128对应128条预测表项 #define BIMODAL_PRIME 127 // 原值为16381,替换为小于表长的素数127保证哈希均匀性 #define MAX_COUNTER 1 // 原值为3,修改为1对应1位饱和计数器(仅0/1两个状态,即1位分支历史) int bimodal_table[NUM_CPUS][BIMODAL_TABLE_SIZE];
修改逻辑说明:
- 预测表大小由
BIMODAL_TABLE_SIZE直接控制,调整为128即可获得128条目的预测表 BIMODAL_PRIME是哈希取模用的素数,必须小于等于表长,127是小于128的最大素数,替换后原有哈希逻辑无需改动- 默认代码的
MAX_COUNTER=3对应2位饱和计数器(取值范围0~3),修改为1后计数器仅能取0/1两个值,对应1位分支历史:计数器为1时预测分支跳转,为0时预测不跳转;分支实际跳转时计数器加1(最大到1),不跳转时计数器减1(最小到0)
二、调整fetch/decode/execute/commit宽度、ROB大小
这类CPU核心参数不需要修改预测器源码,按你使用的ChampSim版本选择对应修改方式即可:
- 最新版本ChampSim:直接编辑仿真使用的JSON配置文件,找到对应CPU核心的配置字段,直接修改数值即可,对应字段分别为:
fetch_width:每周期取指数量decode_width:每周期解码数量execute_width:每周期执行宽度commit_width:每周期提交宽度rob_size:重排序缓冲区(ROB)大小
- 无配置文件的旧版本ChampSim:修改
inc/cpu.h头文件中对应的宏定义值,重新编译即可生效
内容的提问来源于stack exchange,提问作者Asahi
相关产品推荐
相关产品推荐

