域名备案 个人 网站基本信息查询,开发人员工具,包装设计价格,ps做网站像素大小重命名 寄存器重命名过程的恢复使用 Checkpoint 对 RAT 进行恢复使用 WALK 对 RAT 进行恢复使用 Architecture State 对 RAT 进行恢复总结 分发#xff08;Dispatch#xff09; 寄存器重命名过程的恢复
当发生异常、分支预测失败时#xff0c;指令占用 RAT、ROB 和 Issue … 重命名 寄存器重命名过程的恢复使用 Checkpoint 对 RAT 进行恢复使用 WALK 对 RAT 进行恢复使用 Architecture State 对 RAT 进行恢复总结 分发Dispatch 寄存器重命名过程的恢复
当发生异常、分支预测失败时指令占用 RAT、ROB 和 Issue Queue 等资源恢复
使用 Checkpoint 对 RAT 进行恢复 对一个正在工作的部件来说两种方式 名字随机访问的 GC串行访问 GC缩写Random Access GC, RAGCSequential Access GCSAGC区别将整个内容放到任意 GC 中逐步地移位才能放到指定的 GC 中和主存储器连接方式连接每个 GC连接单个 GC要求驱动负载较大接缓冲器恢复时可能需要移位多次选择更合适
MBCMain Bit Cell SRAM 最小存储单元两读一写 CBCCheckpoint Bit Cell 一读一写
RAT 状态保存时Allocation将 MBC 的内容复制到指定的 CBC 中 RAT 状态恢复时 Restore 将 CBC 的内容复制到指定的 MBC 中 使用 WALK 对 RAT 进行恢复
ROB 存储了这条指令前对应的物理寄存器可以逐步倒退
当发现一条分支指令预测失败时使用分支指令的编号将流水线中所有相关指令都给抹除 同时暂停流水线从 ROB 的底端开始最新的指令逐条将每条指令之前对应的映射关系写到 RAT 中。
分支预测错误时首先需要抹除流水线需要逐个指令地进行恢复需要消耗很多时间增大分支预测失败的惩罚异常时只需要恢复不需要抹掉指令因为异常需要等到该指令变成最旧的指令时才进行
占用资源少可用于处理异常发生频率低的处理器
使用 Architecture State 对 RAT 进行恢复
处理器外部访问逻辑寄存器时RAT 中存储的是未提交状态所以不一定
例子 指令 A 提交成功此时访问 RAT r1 对应的是 P34但 D 可能出现异常由此外部不应该读取这个映射关系
因此在提交时也使用一个 RAT所有正确的流水线指令都会更新 RAT称为 aRATarchitecture RAT
利用 aRAT 也可以完成修复
出现分支预测失败时并不马上进行 RAT 状态修复而是继续执行直到运行到该分支指令变成最旧指令时此时 aRAT 则是正确状态的指令
缺点
流水线中存在 D-cache 缺失的 load 指令时该分支指令需要等待很长时间才能顺利离开
总结
复位方式CheckpointWALKArchitecture State内容将 RAT 内容复制出来根据 ROB 序列完成删掉、恢复指令等待分支指令成为最老指令利用 ARAT 复制占用资源多少直接复制比较简单处理速度快慢可能由于 D-cache 原因变慢常用于异常发生概率低的处理器中不需要过多处理降低功耗
分发Dispatch
经过重命名后会进入
队列 发队队列 (out of order) 大部分 FU (function Unit)等待操作数 发射队列 (in order) Store 指令和分支指令 重排序缓存 (ROB) 乱序执行的指令拉回到原始顺序并且记录指令执行的状态是否发生异常