branch-prediction

    0热度

    1回答

    我正在读论文,http://www.cs.utexas.edu/~lin/papers/hpca01.pdf,用感知器动态分支预测。我想知道如何在C中实现感知器分支预测器,如果给出1000个PC地址(字地址)和记录在跟踪线中的分支的实际结果的1000个数目的列表。基本上,我想用这些痕迹来衡量各种预测指标的准确性。跟踪文件的分支结果应该用来训练你的预测器。有什么建议么?

    5热度

    1回答

    我想知道如何编写用于x64处理器的有效跳转表,无论是C,C++还是汇编语言。输入事先已知,但不可能通过算法预测。假设我可以在输入流中看起来遥遥领先,有什么方法可以动态地告诉CPU下一个分支要去哪个地址? 本质上,我想以编程方式更新分支目标缓冲区。但是,如果程序员通过查看数据事先知道下一个分支的位置,但是处理器无法从过去的模式中确定这种情况,那么我可以解决任何可以避免冲洗管道的问题。 意识到这是一个

    0热度

    1回答

    给定一些汇编代码,已知应该采用90%的分支。 我对分支条件没有任何认识。关于每个分支采取或不采取的决定应该仅基于概率来完成。 分支的偏移量可以是正值或负值。 什么是正确的算法呢?

    2热度

    3回答

    这是一篇很好的文章,讲述了低级优化技术,并展示了一个例子,作者将昂贵的部门转换为便宜的比较。 https://www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920 对于那些不想点击谁,基本上是他将这笔: uint32_t digits10(uint64_t v) {

    1热度

    1回答

    Matlab是否使用分支预测来提高性能?也就是说,如果我们将这些陈述展示出来: if a > 0 b = b + 1 end ... b = b + (a > 0) 它会加快速度吗? PS:我不明白,这个具体的例子可能永远不会在任何语言中加快速度,但想象更复杂的东西,即与嵌套,如果公司或多个条件几个else语句...

    -1热度

    1回答

    这个问题可能很愚蠢,但我会问它。 我从this Mysticial的回答 听说了分支预测,我想知道是否有可能为以下情况发生 可以说我有这一块的C++代码 while(memoryAddress = getNextAddress()){ if(haveAccess(memoryAddress)) // change the value of *memoryAdrress

    1热度

    2回答

    当执行此程序时LOOPS> BTB_SIZE, 例如, 从 int n = 0; for (int i = 0; i < LOOPS; i++) n++; 到 int n = 0; int loops = LOOPS/2; for(int i = 0; i < loops; i+=2) n += 2; 可以减少分支怀念它是非常有用的。 BTB ref:http:/

    10热度

    1回答

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对(MSR)的集合。如果您有兴趣,http://css.csail.mit.edu/6.858/2012/readings/ia32/ia32-3b.pdf文件有更多信息。 a)有人可以知道LBR减慢程序执行常见程序的速度--CPU和IO密集? b)当LBR跟踪处于ON状态时,分支预测将关闭吗?

    12热度

    4回答

    在现代奔腾上,它不再可能为处理器提供分支提示。假设一个性能分析编译器(如gcc)和配置文件引导优化可以获得关于可能的分支行为的信息,那么它可以做什么来产生更快执行的代码呢? 我知道的唯一选择是将不可能的分支移动到函数的末尾。还有别的事吗? 更新。 http://download.intel.com/products/processor/manual/325462.pdf空间2a,第2.1.1节说

    5热度

    1回答

    我在计算器上读,使用 if(someCondition) { someCode(); } else { alternateCode(); } 可能是低效由于易感性分支误预测(参见this question例如)。 所以是switch -construct,例如, switch (someCondition) { case (someCase):