- 7
- 0
- 约7.33千字
- 约 31页
- 2017-06-05 发布于湖北
- 举报
计算机系统结构系统结构课程总复习-1229new要点
Rj, Rk: 源寄存器是否就绪并且还未被使用 Yes: 就绪并且还没有被使用过 (后面指令不可改写它) No: (1) 未就绪 (前面指令可改写它) (2)已被使用过 (后面指令可改写它) (3)结果寄存器状态表:表示每个寄存器是当前哪一 个功能部件的目的寄存器 (不是则为空)。 动态算法之一:记分牌 指令运行过程 (1)指令流出(发射/指派)(IS): 取一条浮点指令,如果有相应的空闲保留站,并且操作数就绪(在寄存器中),就将指令和操作数一起发射到保留站;如果没有空闲的保留站,则发生结构相关,停顿指令;如果操作数不在寄存器中,则需要跟踪将要产生该操作数的功能单元,寄存器重命名在此步进行,以消除读后写和写后写相关。 如果是访存指令,有空的缓冲则流出。否则等待。 解决了结构相关、读后写、写后写。 动态算法之二:Tomasulo算法 (2)执行(EX): 如果操作数未就绪,监视公共数据总线等待结果(某个操作完成后会以广播方式通知所有等待该结果的保留站),当两个操作数都就绪则开始运行。如果对某个功能单元而言,有多条指令在同一个时钟周期内就绪,保留站可以任意选择。 如果是访存指令,首先当基址寄存器可用时计算有效地址,之后地址被置于访存缓存中;其次当存储单元可用时,load立即执行,而store则要等待被保存的值。 解决了写后读相关。 动态算法之二:Tomasulo算法 (3)写结果(WB): 结果计算完,写入公共数据总线,广播至所有等待该结果的保留站和目的寄存器(如果存在)。 Store指令被缓存在store缓存中,直到将要保存的值和保存地址都可用时为止,当存储单元可用时, store立即执行。 动态算法之二:Tomasulo算法 数据结构 (1)指令状态表: 表示正在执行的各指令处于三步 中的哪一步。 (2)寄存器状态表:表示各寄存器分别是哪一个保 留站的目的寄存器。 (3)保留站:一共有六个域 Busy: 该保留站是否空闲 Op: 对操作数S1、S2的操作 Vj,Vk: 操作数值 Qj,Qk: 将产生操作数值的保留站号,为空表 示操作数值已在Vj、Vk中或不需要。 注:对每个操作数而言,V或Q字段只有一个有效 动态算法之二:Tomasulo算法 (4)取缓冲: 一共有两个域 Busy: 该保留站是否空闲 Address: 存储器地址值 (5)存缓冲: 一共有四个域 Busy: 该保留站是否空闲 Address: 存储器地址值 Vj: 操作数值 Qj: 将产生操作数值的保留站号, 为空表示操作数值已在Vj中。 动态算法之二:Tomasulo算法 基本思想:基于该分支指令的历史记录----根据该分支指令在最近一次或几次的运行情况(分支成功或失败),来预测该分支指令的本次运行情况(分支成功或失败)。 实现方法:建立一片缓冲区,记录各运行过的分支指令的运行情况(分支成功或失败)。 缓冲区如何寻址----根据分支指令地址的低位,究竟 多少位取决于缓冲区大小。 缓冲区的内容 ----预测位,其长度(多少位)决定能 记录该指令前多少次运行情况。 进一步减少分支延迟:分支预测缓冲 分支指令的执行过程: (1) 现场保留。 (2) 按预测方向取后继指令。 (3) 得到分支结果后 如果预测成功,继续运行; 如果预测失败,恢复保留的现场,从分支处重新 执行; (4) 修改预测位。 进一步减少分支延迟:分支预测缓冲 分支指令无延迟的前提: (1) 分支预测成功 (2) 分支预测和目标地址计算都在 IF 阶段就能完成。 基本思想:设立一个缓冲区(称为分支目标缓冲区,或BTB ),其中存放最近一次运行时分支成功的分支指令的信息(指令地址、分支目标 PC ),如果当前指令属于分支目标缓冲(与其中某一条指令的地址相同),则确定该指令是分支指令,并预测分支成功,从分支目标缓冲
原创力文档

文档评论(0)