我目前正在分析二分查找的实现。使用一些特殊指令来测量,我发现代码的错误预测率约为20%。我想知道是否有办法检查由于这个问题可能会损失多少个周期。这是基于MIPS架构的。
我目前正在分析二分查找的实现。使用一些特殊指令来测量,我发现代码的错误预测率约为20%。我想知道是否有办法检查由于这个问题可能会损失多少个周期。这是基于MIPS架构的。
每次迭代您会损失 0.2 * N 个周期,其中 N 是在错误预测分支后清空流水线所需的周期数。假设 N = 10,则表示您每次迭代会损失 2 个时钟周期。除非您有一个非常小的内部循环,否则这可能不会对性能造成重大影响。
在您的CPU文档中查找此信息。如果无法找到特定信息,则CPU流水线的长度是一个相当好的估计。
考虑到它是MIPS和300MHz系统,我猜测它的流水线应该相当短。可能是4-5个阶段,因此每次错误预测的成本可能是3-4个周期,这可能是一个合理的猜测。
1数百条指令在现代大型核心中飞行,例如x86、ARM和POWER架构。
查看您的规格以获取该信息,如果失败,请在程序外部运行一亿次并计时(使用秒表或其他工具)。然后再进行一次不出错的运行并进行比较。