【发布时间】:2017-01-26 05:23:59
【问题描述】:
让我们假设一个简单的if 像这样:
if (something)
// do_something
else
// do_else
假设这条if-else 语句在不同的线程中并行执行,每个线程产生不同的结果,但在其生命周期中保持不变。例如,在线程 1 中,条件总是被评估为假,在线程 2 中,条件总是被评估为真;在线程 3 中也始终为真,依此类推。
分支预测是否考虑每个线程的执行上下文来进行统计?因为如果不是(我不这么认为,但很难通过测试来检查),CPU 将看到条件遵循随机模式并且根本不会预测。
【问题讨论】:
-
定义线程。 CPU 显然不知道操作系统线程。但是现在大多数 CPU 都知道硬件线程。
-
分支预测是一个以纳秒分辨率运行的处理器实现细节。线程执行以毫秒分辨率运行。这 6 个数量级的差异使这个问题变得无关紧要。
-
基于多核异构的分支预测的研究与设计 - 摘要: 针对单靠处理器性能难以提升的问题通过提高单核频率,以及处理分支指令时超标量流水线停顿,本文介绍了采用B-Cache结构和C-Core处理器控制器的异构多核处理器架构。新架构避免了由于分支预测错误导致的流水线刷新,提高了多核处理器的整体效率。
标签: multithreading branch-prediction