Tomasulo算法

✍ dations ◷ 2025-12-04 02:05:51 #算法

Tomasulo算法(托马苏洛算法)是IBM的Robert Tomasulo在1967年研发出来的一种用来改善处理器乱序执行的指令级并行性的硬件算法。

在处理器中,先后执行的指令之间经常具有相关性(例如后一条指令用到前一条指令向寄存器写入的结果),因此早期简单的处理器使后续指令停顿,直到其所需的资源已经由前序指令准备就绪。Tomasulo算法则通过动态调度的方式,在不影响结果正确性的前提下,重新排列指令实际执行的顺序(乱序执行),提高时间利用效率。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-322Tomasulo算法使用了一个共享数据总线(common data bus, CDB)将已计算出的值广播给所有需要这个值作为指令源操作数的保留站。该算法尽可能降低了使用计分板技术导致的流水线停顿,从而改善了并行计算的效率。

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

相关

  • 泛神论泛神论(英语:Pantheism)是一种将大自然与神等同起来,以强调大自然的至高无上的哲学观点。认为神就存在于自然界一切事物之中,并没有另外的超自然的主宰或精神力量。这种观点自十
  • 性伙伴性伙伴(英:friend with benefit),或称为床伴(亦作床友,英:pillow friend)、砲友(或炮友,英:fuck buddy),指非恋爱、婚姻、性交易,但具有性关系的朋友,其目的主要为双方解决性欲,并不一定寻求
  • 徐爵民徐爵民,国立台湾大学电机工程系学士、硕士、美国加州柏克莱大学电机工程与计算机科学系博士。 1988年进入工业技术研究院电子工业研究所,历任研究员、经理、副组长、组长、副
  • ʙ双唇颤音是辅音的一种,用于一些口语中。表示此音的国际音标符号是⟨ʙ⟩,X-SAMPA的标志则是⟨B\⟩。双唇颤音特点:在绝大部分情况,它只是作为前鼻化塞音的颤动除阻音。英语没有
  • 八氧化三镎八氧化三镎是一种镎的氧化物,有放射性。八氧化三镎在500℃以上分解,并放出氧气,产生二氧化镎:
  • Splatoon系列Splatoon(日语:スプラトゥーン)是由任天堂开发并发行的第三人称射击游戏系列。第一款游戏《Splatoon》于2015年5月在Wii U平台发行。续作《Splatoon 2》于2017年7月在任天堂Swi
  • 2017年中国足球冬季转会列表这是2017年中国足球冬季转会列表,中超联赛和中甲联赛的转会窗口于2017年1月1日开启,2017年2月28日关闭;中乙联赛的转会窗口于2017年3月1日开启,2017年3月15日关闭。(注:本列表按照
  • 蔡景榕嘉靖三十五年丙辰科秀才兴化训导 北京香河县训导 江西兴国教谕 湖广随州学正《海国生还集》蔡景榕(1538年-1609年),字尚秀,自号日东来,是中国明代秀才。嘉靖四十一年(1561年),蔡景榕
  • 卡什舒·那丁·阿海卡什舒·那丁·阿海(约公元前1007年——约公元前1005年前后在位)(英语:Kashshu-nadin-ahi)巴比伦第五王朝的末任国王。承袭埃阿·穆金·泽瑞之位。在位时期发生严重饥荒,致使局势
  • 中山路 (枋寮乡)中山路(英文:Jhongshan Rd.)是屏东县枋寮乡的南北向主要道路,由北至南共分成三段,连结枋寮市区及近郊。起端于文化一路口,前端衔接大丰路北上至佳冬乡、潮州镇,属台1线屏鹅公路,佳冬