请输入您要查询的百科知识:

 

词条 tomasulo算法
释义

Tomasulo算法

为IBM 360/91设计的,在CDC 6600三年之后(1966)

目标:即使在没有特殊编译支持的情况下,也能取

得高性能

IBM 360 和CDC 6600指令系统体系结构之间的差异

IBM的每条指令有两个寄存器描述符(register

specifiers),而CDC 6600有三个;

IBM有四个浮点寄存器,而CDC 6600有八个.

Tomasulo算法与记分板

控制&缓冲器分布于功能部件(FU) 与集中于记分板;

功能部件缓冲器称为"保留站(reservation

stations)"; 存放未决的操作数

指令中的寄存器被数值或者指向保留站的指针代替;

这一过程称为寄存器换名(register renaming);

消除WAR,WAW冒险

保留站比实际寄存器多,因而可以完成优化编译

器所不能完成的一些工作

*WAR和WAW:

WAR,WAW实质是命名冲突,而不存在数据依赖,因此通过“换名”即可消除。

例如:S1:MULTD        F4,F2,F2

S2:ADDD        F2,F0,F6

看似ADDD的输出因与MULTD输入共用F2,需要等待S1Read后S2才能Write.(WAR)

但如果改为:

S1:MULTD        F4,F2,F2

S2: ADDD        F8,F0,F6

即可。

对于WAW,例如

S1: addd F0,F2,F4

S2: multd F2,F6,F8

S3: multd F10,F0,F2

S4: addd F0,F12,F14

S1,S4都写入F0,而中间S3将F0作为输入。

那么S4先运算完后,写入F0,而S3的输入由S1的输出(存于保留站中)提供即可。

结果从RS 直接到FU,无需通过寄存器, 而是通过公

共数据总线(Common Data Bus)把结果广播到所有FU

装入(Load)和存储(Stores)也象其他功能部件一

样使用保留站

Tomasulo的结构图

Tomasulo算法的三段

1.Issue―从FP Op Queue中取出指令

如果保留站空闲(无结构冒险),

控制机制发射指令&发送操作数(对寄存器进行换名).

2.Execution―对操作数执行操作(EX)

如果两个操作数都已就绪,就执行;

如果没有就绪,就观测公共数据总线等待所需结果

3.Write result―完成执行(WB)

通过公共数据总线将结果写入到所有等待的部件;

标记保留站可用

正常的数据总线:数据+ 目的("去向"总线)

公共数据总线: 数据+ 源("来源"总线)

64位数据+ 4位功能部件源地址

如果与期望的功能部件匹配,就"写"(产生结果)

进行广播

保留站的组成

Op―该部件将完成的具体操作(例如, + or -)

Vj, Vk―源操作数的实际数值

存储缓冲器(Store buffers)设有V域,存放将存储的结果

Qj, Qk―将产生源寄存器值(将写的值)的保留站

注意:没有记分板中的就绪(READY)标志;Qj,Qk=0 ready

存储缓冲器(Store buffers)中只有存放RS产生结果的Qi

Busy―指明保留站或FU 处于忙状态

Register result status―指明哪个功能部件将写到哪

个寄存器(Qi);如果没有将写入寄存器的未决指令,该

域为空

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/3/20 23:35:21