Tomasulo算法

✍ dations ◷ 2025-07-28 00:17:42 #算法

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)指令,则写回到存储器中。

相关

  • 呼出呼出(exhalation、expiration)是指动物进行呼吸时,空气或其他物质经由气管离开肺泡的运动。主要是由横膈膜的收缩与舒张来控制。当呼出空气时,横隔膜会呈拱形,肺里的空气体积会减
  • 上卢瓦尔省上卢瓦尔省(法文:Haute-Loire)是法国奥弗涅-隆-阿尔卑斯大区所辖的省份。该省编号为43。上卢瓦尔省是在1790年3月4号爆发的法国大革命中成立的最初的83个省份之一,包括旧省奥弗
  • 茨维坦·托多洛夫茨维坦·托多洛夫(法语:Tzvetan Todorov,保加利亚语:Цветан Тодоров,1939年3月1日-2017年2月7日),法籍保加利亚裔哲学家。他出生于索菲亚,1963年起定居法国,专于著写文学
  • 火灾危险警告火灾危险警告(英语:Fire Danger Warnings)可以指:
  • 西洋接骨木西洋接骨木(学名:Sambucus nigra)为五福花科接骨木属的植物。原产于欧洲和北美洲,后来人工引种到世界其他地区。落叶乔木或大灌木,达4-10米,幼枝具纵条纹,空心 。二年生枝黄褐色,具
  • 本年度我最喜爱的电视角色万千星辉贺台庆本年度我最喜爱的电视角色于2000-2004年的《万千星辉贺台庆》中颁发,表扬该年度最受观众喜爱及欢迎的电视剧中演员,每年均颁发12-13位演员(包括男、女演员)。直至
  • testis睾丸,俗称蛋,是雄性动物生殖器官及生殖腺的一部分。是女性卵巢的同源器官。主要作用是产生精子和分泌雄性激素(主要是睾酮)。睾酮的分泌是由脑垂腺前叶分泌的黄体成长激素所控制
  • 三氯化钕三氯化钕,也称氯化钕,是钕和氯两种元素组成的化合物,化学式为NdCl3。无水三氯化钕是为淡紫色固体,置于空气中会迅速吸水,变成紫色的水合物NdCl3·6H2O。三氯化钕是通过一种复杂的
  • 弗兰茨·威廉·容洪弗里德里希·弗兰茨·威廉·容洪(Friedrich Franz Wilhelm Junghuhn,1809年10月26日-1864年4月24日)是德国植物学家。他的父亲弗里德里希·容洪(Friedrich Junghuhn)为理发师和外
  • 尚永王尚永(琉球语:尚永/ショーエイ  ?;1559年-1588年)是琉球国第二尚氏王朝第六代国王。他是尚元王的第二王子。1573年至1588年在位。神号英祖仁耶添按司添(琉球语:英祖仁耶添按司添/イ