Tomasulo算法

✍ dations ◷ 2025-07-01 10:24:04 #算法

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

相关

  • 埃德温·萨瑟恩埃德温·麦勒·萨瑟恩爵士 (1938年6月7日-)是英国分子生物学家,英国皇家学会院士,爱丁堡皇家学会会员,拉斯克奖获得者,牛津大学生物化学名誉教授,牛津大学三一学院研究员。 他最广为
  • 叶培建叶培建(1945年1月-),江苏泰兴人,中国嫦娥工程总指挥和总设计师,中国科学院院士。1945年1月出生于江苏省泰兴。1962年,毕业于湖州中学。1967年,毕业于浙江大学无线电技术专业。1980年
  • 维他命A维生素A又称维他命A、抗干眼病维生素,是人类的必需营养素之一。维生素A的前体是存在于多种植物中的胡萝卜素。维生素A并非单一的一种化合物,而是有许多不同的型态。动物能将胡
  • 加拿大人列表加拿大人按职业分类,可以从以下各列表中查询。
  • 固始固始县,别称“蓼城”,是中国河南省信阳市下辖的一个县,是河南省直管县之一,地处河南省东南隅,南依大别山,北临淮河,属北方与南方、中原与江淮的交融地带。总面积2942.97平方公里,201
  • 黏质粒黏质粒(Cosmid,又译黏粒)是一种以λ噬菌体(Lambda phage)中的所建构而成的质粒,是常用的克隆载体(cloning vector)之一,可用于建构基因组库。最高可置入44000个碱基对,高于质粒的10000
  • 羊肉炉羊肉炉是台湾自1970年代晚期流行至今的火锅食谱,常见于冬令进补,据OpView调查,为冬季时国人喜食的锅物口味之一。然而并非所有民众皆可接受羊膻味,因此也有业者推出去除羊膻味之
  • 费利克斯·萨伐尔费利克斯·萨伐尔(法语:Félix Savart ,1791年6月30日-1841年3月16日)是法国一位物理学家和医生。他与让-巴蒂斯特·毕奥共同创建了毕奥-萨伐尔定律。这是静磁学的一个基本定律,精
  • 观星台观星台可以指:
  • 灵井“许昌人”遗址灵井“许昌人”遗址是1965年发现的位于河南许昌县灵井镇的一个“现代人”考古遗址。2008年成为河南省级文物保护单位。2013年入选第七批全国重点文物保护单位。2005年河南省