当执行此程序时LOOPS> BTB_SIZE, 例如,如何获得CPU的分支目标缓冲区(BTB)大小?
从
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://www-ee.eng.hawaii.edu/~tep/EE461/Notes/ILP/buffer.html但它不告诉如何获得BTB大小。
检查http://xania.org/201602/bpu-part-one较新的英特尔处理器上的静态分支预测 http://xania.org/201602/bpu-part-two分支预测 - 第二部分及其后相同标签的出版物(http://xania.org/Microarchitecture-archive);测试代码在https://github.com/mattgodbolt/agner(tests/btb * py)和https://github.com/rmmh/whomp – osgx 2016-07-21 20:06:47