强者恒强:x86高性能编程笺注之分支
以流水线的眼光来看,分支并不是高速公路上两个目的地的选择,如果预测失败,将是直接拐向出口处的收费站,还是不带ETC的。越是高级的流水线,受分支的影响也就越深。我们在观察各种性能测试工具提供给我们的结果的时候,经常会看到“stalled”这个单词,这个词与“发动机”这类词一起连用的时候,就是“熄火”的意思。而stalled-cycles-frontend,作为一个衡量流水线前端(Fetch&Decode)运行水平的指标,与错误的分支预测(BranchMisprediction)有密切的关系。有很多办法可以帮助我们优化分支,除了套用一个likely()/unlikely()这种熟知的方式之外
用户评论