托马苏洛算法

✍ dations ◷ 2025-10-22 04:00:59 #托马苏洛算法

托马苏洛算法(英语:Tomasulo algorithm)是IBM罗伯特·托马苏洛1967年所研发用来改善处理器乱序执行指令级并行性的硬件算法。

在处理器中,先后执行的指令之间经常具有相关性(例如后一条指令用到前一条指令向寄存器写入的结果),因此早期简单的处理器使后续指令停顿,直到其所需的资源已经由前序指令准备就绪。托马苏洛算法则通过动态调度的方式,在不影响结果正确性的前提下,重新排列指令实际执行的顺序(乱序执行),提高时间利用效率。IBM System/360 Model 91处理器的浮点运算器中率先使用了这种算法。:92

该算法与之前同样用于实现指令流水线动态调度的计分板不同在于它使用了寄存器重命名机制。指令之间具有数据相关性(例如后条指令的源寄存器恰好是前条指令要写入的目标寄存器),进行动态调度时必须避免三类冒险:写后读(Read-after-Write, RAW)、写后写(Write-after-Write, WAW)、读后写(Write-after-Read, WAR)。:90:319-321第一种冒险也被称为真数据相关(true data dependence),而后两种冒险则并没有那么致命,它们可以由寄存器重命名来予以解决。:321-322托马苏洛算法使用了一个共享数据总线(common data bus, CDB)将已计算出的值广播给所有需要这个值作为指令源操作数的保留站。该算法尽可能降低了使用计分板技术导致的流水线停顿,从而改善了并行计算的效率。

在指令的发射(issue)阶段,如果操作数和保留站都准备就绪,那么指令就可以直接发射并执行。如果操作数未就绪,则进入保留站的指令会跟踪即将产生这个所需操作数的那个功能单元。如果连可用的保留站功能单元都已经不够用,那么该指令必须被停顿。为了化解读后写(WAR)和写后写(WAW)冲突,需要在该阶段进行指令的寄存器重命名。从指令队列中取出下一条指令,如果其所用到的操作数目前位于寄存器中,那么如果与指令匹配的功能单元(这类处理器通常具有多个功能单元以发挥指令级并行的优势)当前可用,则发射该指令;否则,由于没有可用的功能单元,指令被停顿,直到保留站或缓存可用。尽管执行时可能并未按照指令代码的先后顺序,但是它们在发射过程还是按照原先的顺序。这是为了确保指令顺序执行时的一些现象,例如处理器异常,能够以顺序执行时的同样顺序出现。:90-91下一个阶段为执行阶段。在该阶段,指令对应的操作被执行。执行前需要保证所有操作数可用,同时写后读(RAW)冲突已经被化解。系统通过计算有效地址来避免存储区的冲突,从而保证程序的正确性。最后的阶段为写结果阶段,算术逻辑单元(ALU)的计算结果被写回到寄存器,以及任何正在等待该结果的保留站中,如果是存储(store)指令,则写回到存储器中。

相关

  • 杯状病毒科Lagovirus Nebovirus 诺如病毒 Norovirus Sapovirus Vesivirus杯状病毒科(Caliciviridae),又称嵌杯病毒科,是巴尔的摩分类法(Baltimore classification)第四纲病毒,它们具有正股不
  • 世界自然保护联盟红色名录国际自然保护联盟濒危物种红色名录(或称IUCN红色名录,简称红皮书)于1963年开始编制,是全球动植物物种保护现状最全面的名录。此名录由国际自然保护联盟编制及维护。IUCN红色名录
  • 机械电子工业部机械电子部是中华人民共和国国务院曾经存在的部门,1988年,原有的电子工业部与国家机械工业委员会合并成为机械电子工业部,1993年3月,将机械电子工业部又分成电子工业部和机械工
  • 武广客运专线.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none
  • 关于埃尔维斯·普雷斯利的阴谋论不少人认为猫王埃尔维斯·普雷斯利在1977年并未死亡,但由于各种原因选择藏匿身份并且仍然存活着。 这种说法在Gail Brewer-Giorgio(英语:Gail Brewer-Giorgio)和一些作家的书中
  • 硒化铜硒化铜是一种无机化合物,化学式为CuSe。将四氯化硒用还原剂还原之后,和氯化铜反应,可以得到CuSe。硒粉和亚硫酸钠反应,得到硒代亚硫酸钠,以此为原料也能得到硒化铜,微波和超声能促
  • 朱耀华 (国民革命军)朱耀华(1888年或1891年-1937年或1951年),字强生,中国湖南长沙人,国民革命军高级将领。朱早年经姑父张辉瓒介绍入保定军官学校学习,毕业后在湘军中任职,历任至团长,驻防湘潭。1923年,朱
  • 纸牌战争《纸牌战争》(英语:Card Wars)是《探险时光》第四季第十四集的名称。在卡通频道2012年7月16日播出。本集以小男孩芬恩和魔法狗杰克为主角。在这一集里,芬恩和杰克玩桌上游戏纸
  • 丛军丛军(1950年-),原名陈姗姗,中华人民共和国外交官,曾任中华人民共和国驻爱沙尼亚特命全权大使。父亲是中华人民共和国政治家、军事家陈毅,母亲是张茜,丈夫是政治人物、外交家王光亚。
  • FuelPHPFuelPHP(暂无官方中文译名,非官方译名“猛料PHP”) 是一种开源、简单、灵活、社区驱动的 PHP Web 5 框架。出于对目前可用框架的不满,它应运而生,并在开发者社区的支持下不断发展。FuelPHP 的可移植性极高,可运行于多种服务器中,并具备简洁的语法。