乱序发射ppt

作者:银河娱乐1331-com   来源:http://www.migegirl.com    栏目: 银河娱乐1331登录    日期:2019-10-10

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  * * * * * * * * * * * * * * Pentium 4 结构图 Pentium 4 操作 处理器以静态程序的顺序由存储器取指令 每条指令被译成一个或多个定长的RISC指令,它们被成为微操作 (micro-operations) 处理器在超标量流水组织上执行微操作 微操作可能以乱序方式来执行 处理器以原程序的顺序将每个微操作的执行结果提交到处理器的寄存器组 由外层的CISC 壳和内部RISC 核组成 内部的RISC微操作通过至少20段 (stages)的流水线 某些微操作要求多个执行段 导致流水线更长 可与早期Intel x86处理器和Pentium上使用的5段流水线做对照 Pentium 4 流水线 流水线 流水线 流水线 流水线 流水线 流水线) ARM CORTEX-A8 Cortex-A8在ARM系列处理器中被成为应用处理器 所谓应用处理器即那些运行复杂操作系统的潜嵌入式处理器,主要应用包括 无线通信、消费电子及图像处理 A8目标定位于各种移动和消费电子应用,包括手机、机顶盒、游戏机,以及汽车导航/娱乐系统 主要的指令流在3个功能单元之间 此3个功能单元实现了一个13阶段,按序发射的双流水线 (Dual, in-order-issue, 13-stage pipeline) 使所需的功耗保持最低 乱序发射和完成需要大量的逻辑电路来实现,从而消耗更多的电能 图14.11显示了Cortex A8主流水线另外还有一个单独的SIMD 单指令多数据单元(single-instruction-multiple-data) 该单元实现一条10阶段流水线 ARM Cortex-A8 框图 指令取指单元 (Instruction Fetch Unit) 预测指令流 从L1指令高速缓存中取指 每个时钟周期最多取4条指令 并把取来的指令放置于缓冲器中,一边译码流水线指令高速缓存包含在指令取指单元中 指令取指是推测性的 代码流中的分支指令和发生异常的指令会导致流水线清空 取值操作经历一下几个阶段: F0 地址生成单元(address generation unit) 生成一个新的虚拟地址 通产干这个地址是上一个地址的顺序后继地址 也可以是分支转移目标地址 F1 计算得到的地址用于从L1指令高速缓存中取指 与此同时,该地址也用于访问分支预测阵列,以便确定下一个取指地址是否应该基于分支预测产生 F2 取来的指令被放到指令队列中 如果一条指令引起了分支预测动作,则新的目标地址会被送到地址生成单元 A8 实现了一个两级全局分支预测其 (Two-level global history branch predictor) 该预测器将转移目标缓冲 (Branch Target Buffer/BTB) 和全局历史缓冲器 (Global History Buffer/GHB)组成 当一个返回类型指令被预测为要发生转移是,返回栈就提供最后被压入栈的地址和状态 指令取指单元可最多取指和入队12条指令 指令译码单元 (Instruction Decode Unit) 对所有ARM指令进行译码并排序 拥有一个双流水线 )和流水线) 同一时间可以有两条指令通过译码单元 流水线总是包含程序顺序中最靠前的那条指令 如果流水线中的指令不能发射,则流水线中的指令也不会发射 所有被发射的指令按序进入执行流水线 在执行流水线末尾把结果写入寄存器组中 按序发射按序完成,避免WAR冒险 能记录WAW冒险,从流水线清空条件中恢复 指令译码单元主要的考虑是如何避免RAW冒险 指令处理阶段 (Instruction Processing Stages) D0 压缩指令被压缩到32位ARM指令,执行初始的译码功能 D1 完成指令译码功能 D2 把译码后的指令写入等待(pending)/重放(reply)指令队列,并从队列中读取指令送往下一阶段 D3 包含指令调度逻辑 记分牌(Scoreboard)根据静态调度技术预测寄存器的可用性 同时检查各种情况的冒险 D4 完成最后的译码,产生整数执行及装载/保存单元所需的所有控制信号 整数执行单元 (Integer Execution Unit) 两个对称的ALU流水线, 一个服务于装载/保存指令的地址生成器,以及乘法流水线 对于ALU指令两条流水线中任意一条,执行包含一下阶段: E0 访问寄存器组 最多需要从寄存器组读取6个寄存器值 E1 在必要时,利用桶位移器(Barrel shifter)执行位移操作 E2 ALU 执行运算 E3 如需要,执行饱和运算(saturation arithmetic) E4 如果控制流发生改变,确保这些情况被优先处理 E5 执行结果写回存储器组 使用乘法单元的指令被放入流水线阶段进行 乘积累加在E4阶段执行 装载/保存流水线 (Load/store pipeline) 与整数流水线 存储地址从基址和变址寄存器产生(base and index register) E2 地址用于访问高速缓存阵列 E3 对于装载指令,数据被返回并格式化 E3 对于保存指令,数据被格式化,以便写入告诉缓存中 E4 如需要,更新L2高速缓存 E5 执行结果写回寄存器组 ARM Cortex-A8 整数流水线 SIMD 和浮点流水线 SIMD 和浮点指令都通过整数流水线阶段流水线处理 NEON 单元 能处理压缩的(packed)SIMD指令 提供两种类型的浮点处理支持 实际应用中,该单元可能带有一向量浮点(vector floating-point /VFP) 协处理器(coprocessor)负责完成IEEE754标准的浮点操作 如果没有该协处理器,则会有单独的乘法和加法流水线来实现浮点运算 ARM Cortex-A8 NEON 和浮点流水线 * * * * * * * * * * * * * William Stallings Computer Organization and Architecture 8th Edition 第14章 指令级并行性和超标量处理器 什么是超标量 (Superscalar)? 常用指令 (运算,装载/存储,条件分支)可以独立开始和执行 在RISC和CISC均适用 经常在RISC中使用 为什么要使用超标量? 大多是操作都是标量 (详见RISC笔记) 如果能提高这些操作的效率,则整体效率都会得到提高 通用超标量结构 超级流水 (Superpipelined) 多数流水阶段所完成的任务只需要比时钟周期一半还少的时间 于是,双倍的内部时钟速率允许在一个外部时钟周期内完成两个任务 超标量能并行执行每阶段的两个实例 超标量和超流水的比较 限制 (Limitations) 指令级并行性 (Instruction level parallelism) 基于编译器的优化技术 (Compiler based optimisation) 硬件技术 (Hardware techniques) 主要有5种限制: 真实数据相关性 (True data dependency) 过程相关性 (Procedural dependency) 资源冲突 (Resource conflicts) 输出相关性 (Output dependency) 反相关性 (Antidependency) 真实数据相关性 (True Data Dependency) ADD r1, r2 (r1 := r1+r2;) MOVE r3,r1 (r3 := r1;) 第二条指令能在第一条指令执行时取指并译码 但直到第一条指令执行完成之前不能被执行 过程相关性 (Procedural Dependency) 分支之后的指令有对分支的过程相关性,而且直到分支指令被执行前它们不能去执行 同样的,若使用变长指令,在取后续指令前,它必须至少被部分被译码以确定需要多少取值操作 这妨碍了超标量流水所要求的指令同时取指 资源冲突 (Resource Conflict) 两个或多个指令同时竞争统一资源 例如:两个运算指令 可通过复制资源来克服 例如:使用两个计算单元 相关性的影响 设计考虑 (Design Issues) 指令级并行性 (Instruction level parallelism 当一个指令序列中的指令是独立的 并因此能通过重叠来并行执行 由数据和过程相关性决定 机器并行性 (Machine Parallelism) 处理器获取指令级并行性好处的能力程度 由并行流水线数决定 指令发射策略 (Instruction Issue Policy) 取指令的顺序 指令执行的顺序 指令改变寄存器和存储器位置内容的顺序 按序发射,按序完成 (In-Order Issue with In-Order Completion) 严格按顺序执行的那个顺序发射指令 不是很有效率 指令是一次取两条并传送到译码单元 当有功能单元冲突或功能单元产生结果需要不止一个周期是,指令发射必须停止 按序发射,按序完成 示意图 按序发射,乱序完成 (In-Order Issue with Out-of-Order Completion) 输出相关性 (Output dependency) R3:= R3 + R5; (I1) R4:= R3 + 1; (I2) R3:= R5 + 1; (I3) I2 需要 I1在R3产生的结果 – 数据相关性 若 I3 的执行先于 I1, 则R3内容的错误值将被I4的执行锁使用 – 输出相关性(read-write) 按序发射,乱序完成 示意图 乱序发射,乱序完成 (Out-of-Order Issue with Out-of-Order Completion) 为允许乱序发射,需要解耦流水线的译码段和执行段 只要缓冲器未满,处理器就继续取指和译码新指令 当执行阶段中的功能单元变成可用时,银河娱乐1331登录需要此功能单元的指令就会由指令窗口发射到执行段 由于指令已经被译码了,处理器有先行查找的能力 乱序发射,乱序完成 示意图 反相关性 (Antidependency) Write-write 相关性 R3:=R3 + R5; (I1) R4:=R3 + 1; (I2) R3:=R5 + 1; (I3) R7:=R3 + R4; (I4) 在指令I2 开始执行并已取得它的操作数之前,指令I3不能完成执行,因为I3修改寄存器R3,而R3是I2的源操作数 重定序缓冲器 (Reorder Buffer) 用于存放结果的临时存储器 将寄存器组按程序执行顺序放置 寄存器重命名 (Register Renaming) 输出相关性和反相关性可能无法反映正确的程序执行顺序 处理器可能需要偶尔停顿一个流水阶段来解决冲突 由于寄存器是动态分配的 i.e. 寄存器没有专门命名 寄存器重命名例子 R3b:=R3a + R5a (I1) R4b:=R3b + 1 (I2) R3c:=R5a + 1 (I3) R7b:=R3c + R4b (I4) 不带下标的寄存器引用指的是指令中找到的逻辑寄存器 带下标的寄存器引用指向被分配用来保持新值的硬件寄存器 标记例如: R3a R3b R3c 另一种方案:记分牌( Scoreboarding) 一种登记技术 允许指令乱序执行,只要指令不依赖于前面的指令,而且不存在结构冒险的时候,该指令就可以被发射 机器并行性 (Machine Parallelism) 资源复制 (Duplication of Resources) 乱序发射 (Out of order issue) 重命名 (Renaming) 没有寄存器重命名而添加功能单元可能不会有价值 若指令窗口太小,数据相关性将妨碍额外功能单元的有效利用 (一般使用至少8只啦那个的指令窗口) 无过程相关性的不同机器组织结构的加速比 分支预测 (Branch Prediction) 80486 解决分支处理的方法:既读取位于分支指令之后的下一顺序指令,又推测地读取转移目标处的指令 当转移发生时,这种策略要导致两个周期的延迟 RISC – 延迟分支 (Delayed Branch) 在预取一些无用指令之前,先计算条件分支指令的结果 总是执行紧跟在分支指令之后的那条指令 在处理器读取新的指令流的同时,可保持流水线满载 随着超标量机器的开发,延迟分支策略较少采用 多条指令需要在延迟槽中执行 会引起一些指令相关性的问题 超标量机器又转回分支预测技术 超标量执行的概念图 超标量实现 (Superscalar Implementation) 同时取多条指令的取指策略 确定有关寄存器值真相关性的逻辑 并行启动和发射指令的机制 多条指令并行执行所需的资源 以正确顺序提交进程状态的机制 Pentium 4 80486 - CISC Pentium – 有一定的超标量能力 使用两个分立的整数执行单元 Pentium Pro – 引入了全面的超标量设计理念 后续型号具有更精准、功能也更强的超标量设计 * * * * * * * * * * * * * * * * * * * * * * * * * * *

  ·上海交通大学医学院附属卫生学校原名上海第二医科大学附属卫生学校.ppt

  ·上海师范专科学校前身是上海第四师范学校,创办于1956年9月 - 档案馆.doc

  ·二、艺术、体育类专业招生专业及规模数 1、五年制高职招生专业及规模 .doc

  ·二十一世纪校外教育的定位与发展研讨会 - 香港红十字会(青年及义工 .ppt

上一篇:复杂指令集CISC和简单指令集RISC以及ARM和X86的区       下一篇:天涯部落