第六周学习报告_杨力

上传人:小** 文档编号:57141439 上传时间:2018-10-19 格式:DOCX 页数:15 大小:674.09KB
返回 下载 相关 举报
第六周学习报告_杨力_第1页
第1页 / 共15页
第六周学习报告_杨力_第2页
第2页 / 共15页
第六周学习报告_杨力_第3页
第3页 / 共15页
第六周学习报告_杨力_第4页
第4页 / 共15页
第六周学习报告_杨力_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《第六周学习报告_杨力》由会员分享,可在线阅读,更多相关《第六周学习报告_杨力(15页珍藏版)》请在金锄头文库上搜索。

1、 1 / 15 Lecture 11: Precise Exceptions, State Maintenance, State Recovery IssuesIssues in in Pipelining:Pipelining: Multi-CycleMulti-Cycle ExecuteExecute 1.在执行阶段,不同指令花费的时间不同 整型数加法和浮点乘法: ExceptionsExceptions vs.vs. InterruptsInterrupts 1.来源: 异常:运行线程的内部来源 中断:运行线程的外部来源 2.什么时候处理 异常:被检测到的时候 中断:方便的时候(高优先级

2、的除外,比如:电源故障,机器故障) 3.优先级:由进程的优先级决定(异常) ,根据中断优先级而定(中断) 4.处理现场:进程,一般与系统无关(异常) ,系统(中断) PrecisePrecise Exceptions/InterruptsExceptions/Interrupts 1.当准备处理中断或者异常时,处理器的架构状态应该是不变的 所有之前的指令应该都执行完毕 不再执行后续的指令 2.为什么我们想要精确的异常处理 冯诺依曼模型 ISA 的语义指定了这一要求 有助于软件调试 使得从中断处更容易恢复现场 使进程更容易重启 2 / 15 可以在软件添加中断 3.流水线上确保精确异常处理 思想

3、:让每个操作花费相同的时间 缺点: A.最坏情况的指令延迟时间决定了所有指令的延迟时间 B.存储操作过程又会怎样 C.每个功能单元都执行最坏情况的周期数吗 SolutionSolution I: I: ReorderReorder BufferBuffer (ROB)(ROB) 1.思想:乱序执行完指令后,在它们改变架构状态之前对它们重排序 2.当指令完成译码,它在 ROB 中保留一个条目 3.当指令执行完成后,将结果写入 ROB 的该条目中 4.ROB 中的最后的指令没有异常地执行完后,它的结果将会保存到寄存器文件或者存储 器中 ROB 条目: 5.需要几个效位来跟踪结果是否有效 6.指令运

4、行结果先写入 ROB,然后在执行的时候写入寄存器中 7.如果之后的一个操作需要 ROB 中的一个数据 并行读取 ROB 和寄存器文件 8.一个寄存器数据能够存储在寄存器文件、ROB 中(或者是旁路中) 3 / 15 SimplifyingSimplifying ReorderReorder BufferBuffer AccessAccess 1.思想:使用间接法 2.首先访问寄存器文件 如果寄存器无效,寄存器文件保存 ROB 条目的 ID,该条目里包含(或将要包含) 寄存器的值 将寄存器映射到 ROB 条目:如果有个运行中的指令要对寄存器写入时,寄存器 文件会将寄存器映射到一个 ROB 条目

5、3.之后访问 ROB 4.ROB 不必是内容寻址的 Important:Important: RegisterRegister RenamingRenaming withwith a a ReorderReorder BufferBuffer 1.输出依赖性和反依赖性并不是真正的依赖性 同一寄存器涉及到的值彼此之间没有任何联系 依赖性的存在是因为在 ISA 中寄存器 ID 数量缺乏 2.寄存器 ID 被重命名为 ROB 条目,通过这些条目保存寄存器的数据 寄存器 IDROB 条目 ID 架构寄存器 ID物理寄存器 ID 重命名之后,ROB 条目 ID 就用来指代寄存器 3.这将减少反依赖性和输

6、出依赖性 In-OrderIn-Order PipelinePipeline withwith ReorderReorder BufferBuffer 1.Decode (D):访问寄存器文件/ROB,在 ROB 中分配条目,检查指令是否能够执行,如 果能够执行调度指令进行执行 2.Execute (E):指令能够乱序执行 3.Completion (R):将结果写入 ROB 4.Retirement/Commit (W):检查异常,如果没有异常,将结果写入寄存器文件或者存储 器中,否则清除流水线,从异常处理程序处重新开始 5.In-order dispatch/execution, out-

7、of-order completion, in-order retirement 4 / 15 SolutionSolution II: II: HistoryHistory BufferBuffer (HB)(HB) 1.思想:当指令操作完成时,更新寄存器文件,但是当异常发生时,撤销更新操作 2.当指令完成译码,它保留一个 HB 条目 3.当指令执行完成时,它在 HB 里保存了目标寄存器原始的数据 4.当指令作为当前执行的指令,没有异常和中断, HB 条目废弃掉 5.当指令作为当前执行的指令,此时若有异常要处理, HB 里面原始数据就会从底到顶 重新写入架构状态 6.优势:寄存器文件包含了即

8、将执行的指令的所需最新的数据历史缓冲器的访问并不 在关键路径上 7.劣势: 需要读取目标寄存原始数据 有异常时需要历史缓冲区加大了异常/中断处理的延时 ComparisonComparison ofof TwoTwo ApproachesApproaches 1.Reorder buffer 不利的寄存器更新 用非推测数据进行更新 在访问新数据的时候会造成延迟或者设计复杂 2.History buffer: 有利的寄存器更新 立即更新,但会记录原始数据以便恢复 在记录原始数据时会造成延迟以及设计复杂 SolutionSolution III:III: FutureFuture FileFile

9、 (FF)(FF) + + ROBROB 1.思想:使用两种寄存器文件 Arch reg file:按照程序的顺序进行更新,以配合精确的异常处理 Future reg file:只要指令完成了就进行更新 2.FF 被用来迅速的访问最新的寄存器的数据 3.Architectural file 被用来在处理异常时进行恢复 5 / 15 4.优势:不必从 ROB 中读取最新数据或者从目标寄存器读取原始数据 5.劣势: 多个寄存器文件 在处理异常时,需要从 arch. reg. file 复数据到 FF In-OrderIn-Order PipelinePipeline withwith Future

10、Future FileFile andand ReorderReorder BufferBuffer 1.Decode (D):访问 FF,分配 ROB 中的条目,检查指令是否能够执行,能够执行就调度 执行指令 2.Execute (E):指令能够乱序执行 3.Completion (R): 将结果写到 ROB 和 FF 4.Retirement/Commit (W):检查是否异常,如果没有异常,将结果写入 architectural register file 或者存储器内,否则,清除流水线,从 architectural fil 将数据拷贝到 FF, 并从异常处理的地方重新开始 5.减少两

11、个寄存器的开销 : 思想:使用间接法 A.有一个单独的存储用来存放寄存器数据的值 B.使两个寄存器的映射表,也称为 RATs FF 映射用来快速访问最新的寄存器数据 Architectural 映射用来处理遇到异常时的状态恢复 PipeliningPipelining Issues:Issues: BranchBranch MispredictionsMispredictions 1.分支的错误预判就相当于一个异常(唯一不同是它对软件层面不可见) 2.分支预判恢复呢? 和异常处理过程差不多,不同的是可以在 branch 作为当前执行指令之前可以初始 化 所有的三种状态恢复的方法都可用 3.异常

12、和分支误判之间的区别 分支误判更为常见需要迅速的状态恢复来使得误判的性能影响降到最低 6 / 15 BranchBranch StateState RecoveryRecovery ActionsActions andand LatencyLatency 1.ROB 先于分支指令清除流水线 在 ROB 内完成所有的指令 2.HB 先于分支指令清除流水线 完成分支后的撤销所有指令 3.FF 等待,直到分支指令作为当前执行指令 从 arch. reg. file 将数据拷贝到 FF 内 清除整条流水线 CheckpointingCheckpointing 1.当一条分支被译码的时候 生成一个当前分

13、支相应的 FF 备份 2.当指令生成寄存器值的时候, 所有的早于先前指令的检查点的 FF 的值都会进行更新 3.当一个分支误判被检测到的时候 当分支误判问题被处理的时候,恢复检查点的 FF 文件 清除比分支早的流水线上的指令 释放分支后的检查点 4.优点:在检查点恢复之后,立马纠正先前寄存器状态达到可用恢复延时很低 5.缺点:存储开销,管理检查点比较复杂 Lecture 12: Out-of-Order Execution (Dynamic Instruction Scheduling) MaintainingMaintaining SpeculativeSpeculative MemoryM

14、emory State:State: StoresStores 1.撤销存储器写操作比撤销寄存器写操作更难。 2.思路:在 ROB 中保存存储地址/数据 3.存储/写缓冲:类似于 ROB,但只用于存储指令 按程序顺序排列的未执行的的存储操作 存储指令译码时:分配一个 ROB 条目 当存储地址和数据都有效时:记录在 ROB 条目中 当存储是流水线中当前执行指令时:将存储数据写入存储器地址 7 / 15 AnAn In-orderIn-order PipelinePipeline 问题:真正的数据依赖性停顿后面的指令分配到功能单元 PreventingPreventing DispatchDisp

15、atch StallsStalls 1.已有方法: Fine-grained multithreading Value prediction Compile-time instruction scheduling/reordering 2.其他方法: 数据流:取指令后,当所有输入准备好,运行该指令 问题:顺序分派(调度,或执行) 解决方法:乱序分派(调度,或执行) Out-of-orderOut-of-order ExecutionExecution (Dynamic(Dynamic Scheduling)Scheduling) 1.思路:将依赖性指令从非依赖指令中移出(非依赖指令可以执行)

16、依赖指令的停顿处:Reservation stations 2.监测在休息区域的每条指令的源“数据” 3.当指令的所有源“数据”都有效时,则执行(分派)该条指令 指令按照数据流顺序调度 4.优点: 容许延迟:允许非依赖指令在一个长延时操作存在的同时执行并完成 In order dispatch + precise exceptions: Out-of-order dispatch + precise exceptions: 8 / 15 EnablingEnabling OoOOoO ExecutionExecution 1.需要联系数据的使用者和数据的生产者 寄存器重命名:每个数据值与一个“标记”对应 2.需要缓存指令,直到它们准备好执行 在重命名之后,将指令放入 reservation stations 3.指令需要一直跟踪记录源数据的有效性 当数据产生后,广播该“标记” 指令对比他们的“源标志”和广播的标志,如果匹配,源数据就准备好

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号