branch-prediction

    5热度

    2回答

    我有一个switch语句在一些时间关键的代码。我试图用__builtin_expect来优化它,但它似乎没有工作。我想知道是否有人可以告诉我,如果我错过了一些细节,或者如果编译器没有为它优化。我已经试过我的主机上执行以下操作: int main() { volatile int v=0; long i = 0; for (i=0; i<1000000000L; i+

    1热度

    1回答

    只是为了我自己的个人知识... Bimodal或Gshare两个中哪一个比另一个提供更正确的预测?为什么?

    2热度

    1回答

    我在看幻灯片13浏览: http://research.engineering.wustl.edu/~songtian/pdf/intel-haswell.pdf (它应该显示为Haswell的大框图) 在它有一个名为“分支预测器”块顶部,有两个箭头出来。我有点不确定这里的流程的正确顺序是什么?首先,“分支预测变量”块没有任何输入?! 有人可以尝试和解释(使用该图)分支预测器如何与其他元素接口?

    0热度

    1回答

    有没有人在任何光线跟踪碰撞测试内核(Cuda,Opencl)中尝试过GPU计算的自定义分支预测算法? 我是否应该担心低深度(2-5)的表现? 例子: trace for the first group of rays check for previous ray depth predictor, if zero, guess zero. if gt one, g

    0热度

    1回答

    我的工作,通过管道危害的例子,我从following document 看问题2我已经找到this已有所帮助。 据我了解,该策略的工作方式如下: 失速,直到一切都被称为:将暂停,直至达到MEM2阶段完成。据我了解,这是最简单的策略,所有的失速周期都是相同的=> 5,5,5。 假设没有采取:只会假设分支没有采取。在这种情况下,当采取分支时,你将不得不拖延IF1阶段以上的所有事物=> 7,0,7 假设

    10热度

    2回答

    我正在写一些音频代码,基本上一切都是一个小循环。据我了解,分支预测失败是一个足够大的性能问题,我很难保持代码分支免费。但是,只有到目前为止,可以带我,这让我想知道不同种类的分支。 在C++中,条件转移到固定目标: int cond_fixed(bool p) { if (p) return 10; return 20; } 和(如果我没有理解this question正确

    8热度

    1回答

    我一直在想,预测数据存储在何处/如何?有限制吗?它只是最近的分支机构吗?我主要关心的是英特尔架构,但任何我可以学习的任何架构都会受到赞赏。

    0热度

    5回答

    我看着分支,我想,以避免在一个循环,基本上在做这个 for(z=0; z<8; z++){ if(0xff&&(array[z])!=0){ break; } } 所以我的计划实际上是分支具有以下取代它: for(z=0; z<8; z++){ (0xff&&(array[z])==0) ? continue : break; } 但是,这不起

    0热度

    1回答

    F#编译器是否可以通过在不同类型中通过后续调用函数隐含不同路径的函数来分离出代码路径? 考虑以下歧视联盟。有2种可能性,这在理论上是不同的类型: type Choice = | Halve | Double 假设我们有一些特定的功能对于某些这些情况: let halve value = value/2.0 let divide value = value * 2.0

    0热度

    1回答

    代码发布在这里:https://ideone.com/ul2PiS 我想要做的是允许用户指定列表节点作为将被添加到列表中的类的成员字段。目前,这是通过一个使用offsetof()的宏完成的,这意味着成员节点必须是公共的。理想情况下,我希望能够以某种方式指定(作为每个linked_list声明的一部分)作为模板参数,哪个成员字段应该用作节点。 boost :: intrusive 似乎管理它,但我不