Tomasulo算法

✍ dations ◷ 2025-11-12 21:37:31 #算法

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

相关

  • 苏丹四号苏丹四号(英语:Sudan IV)是一种偶氮染色剂,化学式为C24H20N4O,常用于冻结石蜡切片的脂质和脂蛋白的染色。苏丹一号、三号和四号被国际癌症研究机构认定为3级致癌物质。苏丹四号的
  • 氮端N端(亦作N-端,英语:N-terminus),又称氮端、氨基端,指多肽链具有游离的α氨基的末端。在转译过程中,多肽链是从N端往C端合成的,因而在书写表示多肽序列时,从N端开始书写,从左到右写到C
  • 军事演习军事演习,简称军演,专指军队进行大规模的实兵演习。早期的军事思想家,如孙膑、孙武、吴起等即强调军事训练,但军事演习的意涵则强调真实性。但为了节省军事开支,军事演习在20世纪
  • 自身免疫自身免疫(英语:autoimmunity)是指生物体针对自己身体的健康细胞和组织产生的免疫反应。任何由这种免疫异常反应造成的疾病称为自身免疫性疾病(英语:autoimmune disease)。著名的例
  • 建德市建德市是中国浙江省杭州市下辖的一个县级市。地处浙江西部,东接杭州,西边黄山,中贯新安江。下辖3个街道、12个镇、1个乡。2008年底,建德市有户籍人口51.32万人,比上年增加2730人,
  • 费尔南多二世 (阿拉贡)天主教徒阿拉贡的费尔南多二世(Fernando II de Aragón el Católico),1452年3月10日-1516年1月23日在世,1479年-1516年在位阿拉贡国王,1474年-1504年在位卡斯提尔国王,称费尔南多五
  • 安吉亚里战役 (绘画)《安吉亚里战役》是由达芬奇在1505年绘制的一副画作,现已遗失。据信这幅画依然藏在佛罗伦萨旧宫五百人大厅的某幅壁画后面。其画面中心是在1440年的安吉亚里战役中四名骑着战
  • 康斯坦丁·梅福季耶维奇·马克西莫夫康斯坦丁·梅福季耶维奇·马克西莫夫(俄语:Константин Мефодьевич Макси́мов,转写:Konstantin Mefodyevich Maximov,1913年8月27日-1993年),苏联画家
  • 丘鼐丘鼐(1432年-1498年),字宗用,江西广信府贵溪县人,明朝政治人物。景泰甲戌进士。初姓周。江西乡试第九十八名举人。景泰五年(1454年)登甲戌科进士。授行人司行人,历升刑部员外郎、郎中
  • 汤马斯·克拉普汤马斯‧克拉普(Thomas Crapper,1836年9月28日-1910年1月27日) 为一名水电技工,于伦敦成立汤马斯‧克拉普公司。与都会传奇不同,克拉普并没有发明抽水马桶。但是,克拉普却帮助了抽