乱序执行& 寄存器重命名

乱序执行& 寄存器重命名

ID:37586482

大小:218.29 KB

页数:28页

时间:2019-05-25

乱序执行& 寄存器重命名_第1页
乱序执行& 寄存器重命名_第2页
乱序执行& 寄存器重命名_第3页
乱序执行& 寄存器重命名_第4页
乱序执行& 寄存器重命名_第5页
资源描述:

《乱序执行& 寄存器重命名》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、乱序执行&寄存器重命名KrsteAsanovic计算机科学实验室MIT顺序发送的计分板•Busy[unit#]:一个位向量描述单元有效性。(unit=Int,Add,Mult,Div),浮点单元的这些位是硬布线实现的。•WP[reg#]:一个位向量,记录写未完成的寄存器的。•发射单元通过计分板(Busy&WP)检查指令(Opcodedest,src1,src2)来派遣指令•将下面说明两两配对–FUavailablenotBusy[FU#]–RAW?WP[src1]orWP[src2]–WAR?cannotarise–WAW?WP[dest]乱序派遣•发射

2、段的缓存保存等待发送的多条指令。•译码器在缓存中增加下一条指令,如果有空间并且不会引起WAR或WAW。•缓存里的任意一条指令只要不引起RAW就可以派遣。(至今,最多一个周期派遣一条指令)在回写时,启动新指令。乱序发射:一个例子按序:1(2,1)......234435...566乱序:1(2,1)44....23..35...566乱序没有产生任何重大改进!流水线中能进入多少条指令•ISA的哪一部分限制了流水线中的指令数?•——————————•程序中的哪一部分限制了流水线中的指令数?•—————————解决寄存器名字问题•ISA的寄存器数限制了在复杂流

3、水线中部分执行指令数量。•少量的寄存器是不能填满浮点流水线的–IBM360只有4个浮点寄存器•一个微结构能否比ISA所描述的结构使用更多的寄存器而不失ISA的兼容性呢?RobertTomasulo(IBM)在1967年提出了一个基于在线寄存器重命名技术的独创性解决方案带寄存器重命名的指令级并行按序:1(2,1)......2344(5,3)...566乱序:1(2,1)445...2(3,5)366任何反相关都能靠重命名消除重命名—〉另一个存储器可用硬件来做吗?是的!寄存器重命名•译码器完成寄存器重命名,并向发射阶段的重排序缓存(ROB)增加指令。–—>

4、重命名可能产生WAR或WAW冲突•ROB中任何无RAW冲突的指令可被派遣。–—>乱序或数据流执行重命名&乱序发射一个例子•什么时候资源中的名字被数据替换?•什么时候一个名字被重用?数据驱动执行重命名表和寄存器文件重排序缓冲器重置TAG的值是一个花费代价太高的操作指令译码阶段分配模板(标记位),同时把标记位存储到寄存器组中。当一个指令完成时,它的标记位重新分配。简化分配/解分配Ptr2:下一解分配单元Ptr1:下一可用单元指令缓冲器循环管理•当一个指令完成,它的USE位被标记为空闲•仅当USE位被标记为空闲时,ptr2增加IBM360/91浮点单元功能部件

5、分布指令模板对于所有等待数据的指令,公共总线确保数据及时可用有效性?•IBM360/91在1969年第一次实现了重命名和乱序执行,但直到90年代中期都没再有后继的模型。•为什么?•原因:•1.执行不精确•2.只对很少一类的程序有效•多个问题需要解决精确中断•看起来应该是:中断发生在两个指令之间。(IandiI)i+1•所有指令包括I全部完成i•I之后的指令还没有启动i•中断处理程序既不中断程序,也不从I重新开始。i+1中断效应乱序完成精确中断很难高速实现-对早期的指令异常检查完成前,想开始执行后续指令异常处理按序的5级流水线•保持流水线的异常标记直到提交

6、点(M段)•早期流水段的异常抑制后来的异常•提交点处引入外部异常(抑制其它异常)•如果提交点有异常:更新Cause和EPC寄存器,清除所有流水段,回复PC值到fetch阶段指令执行段从cache中取指令指令放入合适的发射或派遣缓存中指令和操作数发到执行单元。当执行完成,所有的结果和异常标记均有效。指令不能撤回地更新结构状态(有时叫“毕业”或“完成“)精确异常的顺序提交•取或译码后的指令按序放入ROB•乱序执行(->乱序完成)•按序提交(写回到结构状态,寄存器组+内存)•在提交前需要临时寄存器来存放结果(屏蔽寄存器或存储寄存器)精确异常的扩展指令重排序缓冲

7、器在指令模板中添加域按程序顺序提交指令给寄存器和内存(->缓存可以循环维护)在异常时,重置ptr1=ptr2,清除重排序缓存(在更新内存前,需先提交然后存储)反转和重命名寄存器文件不再包含重命名标记。那么译码阶段是怎么找到源寄存器的标记的?重命名表重命名表就象一个cache,加速寄存器名查询(重命名标记+每项的有效位)。在每个异常发生后应该清除。别的有效位什么时候清除?流水线执行中控制转移的影响•控制转移指令要求在流水线中插入空操作•空操作数取决于它执行的循环次数–决定下一指令的地址并得到下一指令转移惩罚下一取开始

8、执行的转移现代流水线中的转移惩罚UltraSPARC-III指令获取流水段(顺序

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。