gpt4 book ai didi

c - 从 2 位分支预测器到 8 位预测器

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:28 25 4
gpt4 key购买 nike

我有一个项目将“SimpleScalar”中的 2 位分支预测器转换为 8 位分支预测器。这意味着我需要从“SimpleScalar”更改 2 位预测器的源代码,并使其像 8 位预测器一样工作。

我知道预测器是如何工作的,但我不知道如何使用 C 语言实现分支预测器。向我推荐一些 8 位分支预测器的实现。

最佳答案

This set of slides很好地描述了 2 位分支预测。将其扩展到 8 位(我假设)意味着我们可以使用 256 个状态的状态机,而不是 2 位情况下的 4 个状态机来决定正在发生的事情。如果我们以逻辑方式扩展 4 状态的情况,将有 128 个状态我们预测分支将被采用,而 128 个状态不被采用……一种滞后。

我假设您正在处理器仿真器或模拟器中编程。你没说。 C 代码只需要跟踪最后 128 次做出的决定,并且只有在 128 次猜测错误时才切换到备用预测:

static int stickiness = 128;          // assume 128 states of knowledge that the default branch will occur
static int predicted_branch = 1; // default prediction is (say) branch taken

if (simulated_branch_condition_is_true != predicted_branch) {
if (--stickiness <= 0) {
predicted_branch = simulated_branch_condition_is_true;
stickiness = 128;
}
}
// Now simulate the predicted_branch. If it's wrong, we will later simulate a pipeline, flush etc.

没有更多信息,这是我能做的最好的。

关于c - 从 2 位分支预测器到 8 位预测器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com