Tomasulo算法

✍ dations ◷ 2025-08-17 03:35:54 #算法

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

相关

  • PML1BOR· transcription coactivator activity · protein binding · zinc ion binding · ubiquitin protein ligase binding · SUMO binding · protein homodimeriz
  • 主动脉剥离主动脉夹层(英语:aortic dissection;法语:dissection aortique;德语:Aortendissektion),又译为“主动脉剥离”或“心血管动脉撕裂”,是因为主动脉血管内膜(英语:Tunica intima)受伤,使得
  • 第二次反法同盟第二次反法同盟,1799年欧洲列强趁法军大将拿破仑的军队被困埃及的时机,再次发起反法战争。这次神圣罗马帝国联同英国、土耳其、俄罗斯组成了第二次反法同盟。但同年底拿破仑只
  • 水利工程师水利工程(Hydraulic engineering)是为了控制、利用和保护地表及地下的水资源与环境而修建的各项工程建设的总称。土木工程中着重于水流体的自然运动与人工输送及利用的一门分
  • 挡校门事件挡校门事件(英语:Stand in the Schoolhouse Door)发生于1963年6月11日的美国亚拉巴马大学福特斯礼堂,事情起因是时任亚拉巴马州州长的乔治·华莱士为了恪守自己的竞选承诺,试图不
  • 希腊城邦城邦(古希腊语:πολις,古希腊语:,英语:Polis,复数形为πόλεις,,poleis),希腊文的字面意思是城市。它也代表了公民以及公民组成的群体。是古希腊一种政治共同体,以城市为单位形
  • 刘静山刘静山(1913年10月24日-2013年2月4日),圣名若望,原天主教宁夏教区主教,获政府及教廷承认。生于磴口县,十六岁在三盛公小修院修道学习。1935至1942年分别在大同、绥远(今呼和浩特)大修
  • 飨庭篁村飨庭篁村(あえば こそん,1855年-1922年),本名与三郎,日本小说家、剧评家。出生于江户下谷龙泉寺町,父亲农商并重,别号竹之屋主人。当过读卖新闻社记者。1886年开始连载小说《当世商
  • 良十一世教宗良十一世(拉丁语:Leo PP. XI;1535年6月2日-1605年4月27日)原名亚历山大·德·美第奇(意大利语:Alessandro de' Medici),1605年4月1日当选罗马主教(教宗),同年4月10日即位至同年4月27
  • 海因茨·菲舍尔海因茨·菲舍尔(德语:Heinz Fischer,1938年10月9日-)奥地利政治家,前任奥地利总统(2004-2016)。出生于奥地利施蒂利亚州格拉茨,1956年菲舍尔中学毕业,此后在维也纳大学读法学,1961年获博