本页使用了标题或全文手工转换

推测执行

维基百科,自由的百科全书
跳到导航 跳到搜索

推测执行(亦作预测执行投机性执行,英语:Speculative execution)是优化技术的一类,采用这个技术的计算机系统会根据现有信息,利用空转时间提前执行一些将来可能用得上,也可能用不上的指令。如果指令执行完成后发现用不上,系统会抛弃计算结果,并回退执行期间造成的副作用(如缓存)。

推测执行的目标是在处理器系统资源过剩的情况下并行处理其他任务。推测执行无处不在。流水处理器的分支预测、数值预测、[1] 预读取内存和文件、以及数据库系统乐观并发控制等机能中都采用到了推测执行。[2][3]

举例[编辑]

假设某程序的结构如下:

  • 从网络上下载一个数据A,耗时30秒。
  • 如果下载A成功,则直接给出A的答案。
  • 如果下载A失败,则计算30秒的算数B,并给出这个答案。

如果没有推测执行功能,那么当A下载后发现失败,那么就要再花30秒做算术B,总共耗时1分钟。但是,由于下载过程中CPU是空转,CPU可以认识到反正闲着也是闲着,不如暫時把A當作失败,並根據此提前算出B。这样如果将来需要到B,就节省了30秒的时间。就算不需要,也没有浪费处理器时间。

参见[编辑]

参考文献[编辑]

  1. ^ "A Survey of Value Prediction Techniques for Leveraging Value Locality", S. Mittal, Concurrency and Computation, 2017
  2. ^ Lazy and Speculative Execution Butler Lampson Microsoft Research OPODIS, Bordeaux, France 12 December 2006
  3. ^ International Business Machines Corporation. Research Division; Prabhakar Raghavan; Hadas Schachnai; Mira Yaniv. Dynamic schemes for speculative execution of code. IBM. 1998 [18 January 2011].