第一章 明确高性能步伐(4) 猜测实行和分支猜测

分享
程序员 2024-9-29 08:33:13 82 0 来自 中国
猜测实行和分支猜测


        只要流水线连续不绝地注入指令,则齐备顺遂。但是当碰到一个条件分支时会发生什么呢?流水线必须在测试效果发表前等待,因此,下一条指令只有在当前指令结束时才气开始。欢迎来到80年代,486期间!这被称为流水线壅闭(pipeline stall),会使流水线的上风荡然无存。由于险些每个步伐都存在大量的if-then-else语句,必须找到办理流水线壅闭标题的办法。
       制造商找到的办理方法是:猜测实行(speculative execution):与其等待,我们不如通过猜测选择实行此中一条分支地指令。假如我们充足荣幸,则恰恰做对了,但是假如没那么荣幸,我们就得扬弃刚才推测实行的效果,如许就会遭遇同样的流水线壅闭情况。假设我们随机地选择分支,50%的情况会是正确的,也能极大地提拔流水线地吞吐率!
       唯一的标题是if语句的分支在大概性上并非等同!在通常情况下,他们乃至是高度不平衡分布的:此中一条是错误处理惩罚分支,另一条是正常分支,但是处理惩罚器并不知道测试的寄义,那么,我们能做些什么呢?办理方案是分支猜测:处理惩罚器学习代码中的分支可以或许很好地猜测在给定条件下,哪条分支会被实行。
       很快标题竟变得云云复杂,不是吗?假如你曾经思考过这些标题,你并不孤单。在不久之前,编程届因幽灵和熔断漏洞的披露而震惊,这些漏洞可让攻击者看到未被授权的内存地域的内容。破解的第一步是引诱分支猜测器在猜测实行时选择错误的分支。当处理惩罚器发现不被允许的访问,指令会被暂停实行,但被掩护的数据却还在缓存中,可以用一些复杂的技能推测出来,在此我们不作讨论。这些缺陷对已往十年的处理惩罚器优化技能提出了寻衅,假如要办理这些缺陷,肯定带来相称大的性能丧失。
       就CPU性能优化而论,我们都对下一代CPU架构如何演化充满好奇,岂非不是吗?
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:32, Processed in 0.170221 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表