




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4 2指令的动态调度 静态调度 在出现数据相关时 为了消除或者减少流水线空转 编译器确定并分离出程序中存在相关的指令 然后进行指令调度 并对代码进行优化 动态调度 通过硬件重新安排指令的执行顺序 来调整相关指令实际执行时的关系 减少处理器空转 以硬件复杂性的显著增加为代价 第四章指令级并行 显著增加为代价 4 2 1动态调度的原理 到目前为止我们所使用流水线的最大的局限性 指令必须顺序流出看下面一段代码 DIVDF0 F2 F4 S1ADDDF10 F0 F8 S2 S2对S1数据相关 S2被阻塞SUBDF12 F8 F14 S3 S3与S1 S2都没有相关 但也被阻塞 4 2指令的动态调度 为了允许乱序执行 我们将基本流水线的译码阶段再分为两个阶段 1 流出 Issue IS 指令译码 检查是否存在结构阻塞 2 读操作数 ReadOperands RO 当没有数据相关引发的阻塞时就读操作数 指令乱序结束带来的最大问题 异常处理比较复杂 精确异常处理 不精确异常处理 4 2指令的动态调度 显著增加为代价 4 2 2动态调度算法之一 记分牌 例 数据先读后写 WAR 相关引起的阻塞代码序列 DIVDF0 F2 F4ADDDF10 F0 F8SUBDF8 F8 F14指令乱序执行时就会出现先读后写相关 记分牌技术的目标 在资源充足时 尽可能早地执行没有数据阻塞的指令 达到每个时钟周期执行一条指令 4 2指令的动态调度 显著增加为代价 要发挥指令乱序执行的好处 必须有多条指令同时处于执行阶段 这就要求有多个功能部件或功能部件流水化或者两者兼有 假设 处理器采用多个功能部件 CDC6600具有16个功能部件 4个浮点部件 5个存储器访问部件7个整数操作部件在DLX中 假设有2个乘法器 1个加法器 1个除法部件和1个整数部件 4 2指令的动态调度 显著增加为代价 1 采用记分牌技术的DLX处理器的基本结构 图4 1具有记分牌的DLX处理器基本结构 显著增加为代价 记分牌电路负责记录资源的使用 并负责相关检测 控制指令的流出和执行 2 每条指令在流水线中的执行过程分为四段 1 流出 Issue 记为IS 如果本指令所需的功能部件有空闲 并且其它正在执行的指令使用的目的寄存器与本指令的不同 记分牌就向功能部件流出本指令 并修改记分牌内部的数据记录 解决了指令间存在的结构相关或写后写相关 4 2指令的动态调度 显著增加为代价 2 读操作数 ReadOperand 记为RO 记分牌需要监测源操作数寄存器中数据的有效性 如果前面已流出的还在运行的指令不对本指令的源操作数寄存器进行写操作 或者一个正在工作的功能部件已经完成了对这个寄存器的写操作 那么此操作数有效 当操作数有效后 记分牌将启动本指令的功能部件读操作数并开始执行 解决了数据的先写后读 RAW 相关 通过以上步骤 记分牌动态解决了结构相和数据相关引发的阻塞 指令可能乱序流出 4 2指令的动态调度 显著增加为代价 3 执行 Execution 记为EX 4 写结果 WriteResult 记为WR 记分牌知道指令执行完毕后 如果目标寄存器空闲 就将结果写入到目标寄存器中 然后释放本指令使用的所有资源 检测先读后写 WAR 相关在出现以下的情况时 就不允许指令写结果 前面的某条指令 按顺序流出 还没有读取操作数 其中某个源操作数寄存器与本指令的目的寄存器相同 4 2指令的动态调度 显著增加为代价 存在一个问题 就是功能部件到寄存器文件的数据总线宽度是有限的 当流水线中进入读操作数段 RO 和写结果段 WB 的功能部件总数超过可用总线的数目 这会导致结构阻塞 3 记分牌需要纪录的信息分为三部分 1 指令状态表记录正在执行的各条指令已经进入记分牌DLX流水线四段中的哪一段 4 2指令的动态调度 显著增加为代价 2 功能部件状态表纪录各个功能部件的状态 每个功能部件在状态表中都由以下九个域来纪录 Busy 指示功能部件是否在工作Op 功能部件当前执行的操作Fi 目的寄存器编号Fj fk 源寄存器编号Qj Qk 向Rj Rk中写结果的功能部件Rj Rk 表示Fj Fk是否就绪 是否已经被使用 4 2指令的动态调度 显著增加为代价 3 结果寄存器状态表每个寄存器在表中有一个域 用于纪录写入本寄存器的功能部件 编号 如果当前正在运行的功能部件没有需要写入本寄存器的 则相应域置为空 4 DLX记分牌所要维护的数据结构给出下列代码运行过程中记分牌保存的信息 4 2指令的动态调度 显著增加为代价 LDF6 34 R2 LDF2 45 R3 MULTDF0 F2 F4SUBDF8 F6 F2DIVDF10 F0 F6ADDDF6 F8 F2 4 2指令的动态调度 显著增加为代价 指令 指令状态表ISROEXWR LDF6 34 R2 LDF2 45 R3 MULTDF0 F2 F4 SUBDF8 F6 F2 DIVDF10 F0 F6 ADDDF6 F8 F2 图4 2DLX记分牌信息组成和记录的信息 4 2指令的动态调度 显著增加为代价 部件名称 功能部件状态表BusyOpFiFjFkQjQkRjRk 整数yesLDF2R3no乘法1yesMULTDF0F2F4整数noyes乘法2no加法yesSUBDF8F6F2整数yesno除法yesDIVDF10F0F6乘法1noyes 显著增加为代价 例4 3假设浮点流水线中执行的延迟如下 加法需2个时钟周期乘法需10个时钟周期除法需40个时钟周期代码段和记分牌信息的起始点状态如图4 2 分别给出MULTD和DIVD准备写结果之前的记分牌状态 解 在分析记分牌状态之前 首先需要分析指令之间存在的相关性 因为相关性会影响指令进入记分牌DLX流水线的相应段 4 2指令的动态调度 显著增加为代价 1 第二个LD指令到MULD和SUBD MULTD到DIVD之间以及SUBD到ADDD之间存在着先写后读相关 2 DIVD和ADDD之间存在着先读后写相关 3 ADDD和SUBD指令关于浮点加法部件还存在着结构相关 图4 3和图4 4分别给出了MULTD指令和DIVD指令将要写结果时记分牌的状态 4 2指令的动态调度 显著增加为代价 指令 指令状态表ISROEXWR LDF6 34 R2 LDF2 45 R3 MULTDF0 F2 F4 SUBDF8 F6 F2 DIVDF10 F0 F6 ADDDF6 F8 F2 图4 3程序段执行到MULTD将要写结果时记分牌的状态 4 2指令的动态调度 显著增加为代价 部件名称 功能部件状态表BusyOpFiFjFkQjQkRjRk 整数no乘法1yesMULTDF0F2F4nono乘法2no加法yesADDDF6F8F2nono除法yesDIVDF10F0F6乘法1noyes 指令 指令状态表ISROEXWR LDF6 34 R2 LDF2 45 R3 MULTDF0 F2 F4 SUBDF8 F6 F2 DIVDF10 F0 F6 ADDDF6 F8 F2 图4 4程序段执行到DIVD将要写结果时记分牌的状态 4 2指令的动态调度 部件名称 功能部件状态表BusyOpFiFjFkQjQkRjRk 整数no乘法1no乘法2no加法no除法yesDIVDF10F0F6nono 5 分析记分牌是如何控制指令执行的 操作在记分牌流水线中前进时 记分牌必须记录与操作有关的信息 如寄存器号等 约定 Fj FU S1 将寄存器S1的名字送入Fj FU FU 指令使用的功能部件D 目的寄存器的名字S1和S2 源操作数寄存器的名字 Op 进行的操作Fj FU 功能部件FU的Fj域result D 结果寄存器状态表中对应于寄存器D的内容 为产生寄存器D中结果的功能部件名 4 2指令的动态调度 流出 IS 1 进入条件notBusy FU andnotresult D 判断结构阻塞和写后写 2 计分牌记录内容Busy FU yes OP FU Op Fi FU D Fj FU S1 Fk FU S2 4 2指令的动态调度 Qj result S1 处理 S1 的FUQk result S2 处理 S2 的FURj notQj Rj是否可用 Rk notQk Rk是否可用 result D FU D 被FU用作目的寄存器读操作数 RO 1 进入条件Rj Rk 解决先写后读 两个源操作数须同时就绪 4 2指令的动态调度 2 计分牌记录内容Rj no 已经读走了就绪的数据RjRk no 已经读走了就绪的数据RkQj 0 不再等待其它FU的计算结果Qk 0 执行 EX 1 结束条件功能部件操作结束 4 2指令的动态调度 写结果 WR 1 进入条件 f Fj f Fi FU orRj f no and Fk f Fi FU orRk f no 检查是否存在先读后写 2 计分牌记录内容 f ifQj f FUthenRj f yes 有等结果的指令 则数据可用 f ifQk f FUthenRk f yes result Fi FU 0 没有FU使用寄存器Fi为目的寄存器busy FU no 释放FU 4 2指令的动态调度 6 记分牌的性能受限于以下几个方面 1 程序指令中可开发的并行性 即是否存在可以并行执行的不相关的指令 2 记分牌容量 记分牌的容量决定了流水线能在多大范围内寻找不相关指令 流水线中可以同时容纳的指令数量又称为指令窗口 3 功能部件的数目和种类 功能部件的总数决定了结构冲突的严重程度 4 反相关和输出相关 引起计分牌中先读后写和写后写阻塞 4 2指令的动态调度 4 2 3动态调度算法之二 Tomasulo算法 Tomasulo算法将记分牌的关键部分和寄存器换名技术结合在一起 基本核心 通过寄存器换名来消除写后写和先读后写相关而可能引发的流水线阻塞 下面的讨论是基于DLX的浮点流水线功能部件 Tomasulo算法中 寄存器换名是通过保留站来实现 它保存等待流出和正在流出指令所需要的操作数 Tomasulo算法的基本思想 4 2指令的动态调度 只要操作数有效 就将其取到保留站 避免指令流出时才到寄存器中取数据 指令的执行结果直接送到等待数据的其它保留站中去 一条指令流出时 存放操作数的寄存器名被换成为对应于该寄存器保留站的名称 除了寄存器换名技术 Tomasulo算法和记分牌在结构上还有两处显著的不同 4 2指令的动态调度 冲突检测和指令执行控制机制分开 计算的结果通过相关专用通路直接从功能部件进入对应的保留站进行缓冲 而不一定是写到寄存器 相关专用通路通过一条数据总线来实现 4 2指令的动态调度 1 采用Tomasulo算法的DLX浮点部件的基本结构 保留站中保存已流出并等待到本功能部件执行的操作 指令 还保存指令执行所需的控制信息 如果该操作的源操作数在寄存器中已经就绪 刚将该操作数取来 保存到保留站中 如果操作数还没有计算出来 则保留站中记录这个操作数将由谁计算出来 即指明它由哪个功能部件产生 取缓冲和存缓冲保存的是读 写存储器的数据或地址 4 2指令的动态调度 浮点寄存器通过一对操作数总线连到功能部件 通过其中一条总线连到公共数据总线 再送到存缓冲 功能部件的计算结果和从存储器读取的数据都送到公用数据总线上 除了取缓冲的输入和存缓冲的输出以外 所有部分均与公用数据总线相连 两个运算功能部件 浮点乘法器完成乘法和除法操作浮点加法器完成加法和减法操作 4 2指令的动态调度 2 指令流水线的分段情况使用Tomasulo算法的流水线需三段 1 流出 Issue 从浮点操作队列中取一条指令 2 执行 Execute 3 写结果 WriteResult 3 这些步骤和记分牌基本上类似 但有以下以下几点不同 1 无需任何操作来检查数据写后写和先读后写相关的过程 在指令流出过程中操作数寄存器换名已将其消除 4 2指令的动态调度 2 通过公共数据总线来广播结果 将结果送到等待此结果作为操作数的保留站 目标寄存器也相当于一个需要结果的保留站 而不是将结果写回到寄存器中 3 存储器存和取都作为基本的功能部件 4 由于保留站技术能够有效地解决先写后读 而无需特殊处理 因此 记分牌流水线中用于完成判断先写后读的 取操作数 段也被消掉 4 2指令的动态调度 4 定义有关的术语和数据结构 标志 tags 指缓冲或产生结果的保留站 功能部件 每个保留站有以下6个域 Op 对源操作数S1和S2所进行的操作 Qj Qk 产生结果的保留站号 等于0表示操作数在Vj和Vk中或不需要操作数 Vj Vk 两个源操作数的值 操作数项中 V或Q域最多只有一个有效 Busy 标示本保留站和相应的功能部件是否空闲 4 2指令的动态调度 每个寄存器和存缓冲有1个Qi域 结果要存入本寄存器或存缓冲的保留站号 如果Qi空 表示当前没有指令要将结果写入此寄存器或存缓冲 当寄存器空闲时 Qi域空 存缓冲和取缓冲还各有1个Busy域和1个Address域Busy 标示缓冲是否空闲 A 地址域 用于记录存或取的存储器地址 存缓冲还有1个V域 保存要存入存储器的数据 4 2指令的动态调度 5 对于下列代码 保留站的信息 LDF6 34 R2 LDF2 45 R3 MULTDF0 F2 F4SUBDF8 F2 F6DIVDF10 F0 F6ADDDF6 F8 F2 4 2指令的动态调度 图4 6给出的是采用Tomasulo算法时保留站 存缓冲 取缓冲和寄存器的标志等信息 4 2指令的动态调度 6 Tomasulo算法相对于记分牌技术主要的优点 1 具有分布的阻塞检测机制 2 消除了数据的写后写和先读后写相关导致的阻塞 例4 4假设浮点部件的延迟为 加法2个时钟周期 乘法10个时钟周期 除法40个时钟周期 执行的代码同上 给出MULTD准备写结果时的状态表的信息 解结果如图4 7所示 4 2指令的动态调度 指令 指令状态表流出执行写结果 LDF6 34 R2 LDF2 45 R3 MULTDF0 F2 F4 SUBDF8 F6 F2 DIVDF10 F0 F6 ADDDF6 F8 F2 4 2指令的动态调度 名称 保留站 Load1Load2Add1Add2Add3Mult1Mult2 Busynoyesyesyesnoyesyes OpMultDDIVD VjMEM 45 REGS R3 VkREG F4 MEM 34 REGS R2 QjMult1 Qk A 7 Tomasulo算法中指令执行的主要条件 步骤和记录 其中 rd 目的寄存器rs和rt 操作数寄存器号imm 符号扩展的立即数r 分配给相应指令的保留站或者缓冲RS 保留站数据结构 由保留站或取缓冲返回的值为result RegisterStat 寄存器状态的数据结构 寄存器文件用Regs 表示 4 2指令的动态调度 指令流出 Issue 1 进入条件 对于浮点操作 有空闲保留站r 对于取 存操作 有空闲缓冲r 2 记录内容 对于浮点操作 if RegisterStat rs Qi 0 第一操作数 RS r Qj RegisterStat rs Qi 操作数寄存器rs未就绪 进行寄存器换名else RS r Vj Reg rs 把寄存器rs中的操作数取到保留站RS r Qj 0 数据Vj有效 4 2指令的动态调度 if RegisterStat rt Qi 0 第二操作数 RS r Qj RegisterStat rt Qi 操作数寄存器rt未就绪 进行寄存器换名else RS r Vk Reg rt 把寄存器rs中的操作数取到保留站RS r Qk 0 数据Vk有效RS r Busy yes 本保留站忙RS r Op Op 设置本保留站的操作类型RegisterStat rd Qi r 寄存器rd是本指令的目标寄存器 4 2指令的动态调度 对于存 取操作 if RegisterStat rs Qi 0 RS r Qj RegisterStat rs Qi 操作数寄存器rs未就绪 进行寄存器换名else RS r Vj Reg rs 把寄存器rs中的操作数取到保留站RS r Qj 0 数据Vj有效RS r Busy yes 本保留站忙RS r A Imm 设置本保留站的操作类型 4 2指令的动态调度 对于取操作 RegisterStat rd Qi r 寄存器rd是本指令的目标寄存器 对于存操作 if RegisterStat rt Qi 0 RS r Qk RegisterStat rt Qi 操作数寄存器rt未就绪 进行寄存器换名else RS r Vk Reg rt 把寄存器rt中的操作数取到存缓冲RS r Qk 0 数据Vk有效 4 2指令的动态调度 执行 Execution 1 进入条件 对于浮点操作 RS r Qj 0 and RS r Qk 0 两个源操作数就绪 对于取 存操作第1步 RS r Qj 0 and r到达取 存缓冲队列的头部 对于取操作第2步 取操作第1步执行结束 4 2指令的动态调度 2 记录内容 对于浮点操作 产生计算结果 对于取 存操作第1步 RS r A RS r Vj RS r A 计算有效地址 对于取操作第2步 读取数据Mem RS r A 从存储器中读取数据 4 2指令的动态调度 写结果 WriteResult 1 进入条件 对于浮点操作或取操作 保留站r执行结束 且公共数据总线 CDB 可用 空闲 对于存操作 保留站r执行结束 且RS r Rk 0 存的数据已经就绪 2 记录内容 对于浮点操作或取操作 4 2指令的动态调度 x if RegisterStat x Qi r fx result 向浮点寄存器写结果 所有的fx RegisterStat x Qi 0 相应的目标寄存器中结果有效 x if RS x Qj r RS x Vj result 使用本结果作为第一操作数的保留站RS x Qj 0 相应的操作数有效 4 2指令的动态调度 x if RS x Qk r RS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度崇明区村居事务工作者校园招录8人考前自测高频考点模拟试题附答案详解(模拟题)
- 中国广电荆州市2025秋招笔试题库含答案
- 2025年吉安县退役军人事务局面向社会公开招聘工作人员模拟试卷及1套参考答案详解
- 云浮市中储粮2025秋招购销统计岗高频笔试题库含答案
- 2025年宿州市人才集团有限公司招募就业见习人员7人考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025年皖南医学院第二附属医院高层次招聘22人考前自测高频考点模拟试题附答案详解(模拟题)
- 2025年宁夏医科大学自主公开招聘考前自测高频考点模拟试题及一套完整答案详解
- 2025年临沂市工程学校公开招聘教师(15名)模拟试卷完整答案详解
- 2025年福建省龙岩市武平县事业单位招聘5人考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025年甘肃省卫生健康委系统招聘工作人员网上缴费考前自测高频考点模拟试题及完整答案详解一套
- 型钢混凝土结构钢筋施工
- 石群邱关源电路(第1至7单元)白底课件
- JJF 1338-2012相控阵超声探伤仪校准规范
- GB/T 40529-2021船舶与海洋技术起货绞车
- GB 31603-2015食品安全国家标准食品接触材料及制品生产通用卫生规范
- 关于公布2016年度中国电力优质工程奖评审结果的通知
- 港口集团绩效考核方案
- 送达地址确认书(诉讼类范本)
- 2023版北京协和医院重症医学科诊疗常规
- 三坐标测量基础知识(基础教育)
- 宜家战略分析(课堂PPT)
评论
0/150
提交评论