




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第6章超标量流水线 2 6 1概述 流水线 Pipelines 是一种使多条指令重叠操作的技术 是目前广泛应用于微处理芯片中的一项关键技术 那么什么是超标量呢 超标量是通过内置多条流水线来同时执行多个指令 其实质是以空间换取时间 Pentium的超标量是建筑在两个通用的整型流水线和一个可流水作业的浮点单元上的 这使处理器能够同时执行两条整型指令 发展到高能Pentium后 又采用了动态执行技术 DynamicExecution 这一新的设计思路 可以无序地执行指令 3 6 2整型流水线 图6 1Pentium处理器核心逻辑 4 图6 2Pentium的超标量流水线 5 6 2 1Pentium的流水线 图6 3Pentium的流水线结构框图 6 图6 4指令满足配对规则是两条流水线的满载操作 7 6 2 2指令配对配对规则 1 配对的两条指令必须是简单指令 Pentium的简单指令是全硬件化的 ROM形式的微代码指令则不然 也就是说 配对指令通常都是能够在单个时钟周内执行完的指令 简单指令 完全由硬件执行而无需任何微码控制 在一个时钟周期内执行的指令 movreg reg mem immmovmem reg immalureg reg mem immalumem reg imm 8 increg memdecreg mempushreg mempopregleareg memjmp call jccnearnop注意 以上的ALU不是指令 仅表示ADD AND等所有算术与逻辑指令 例 MOVAX 5INCBXMOVAX 5INCAX 9 2 两条指令之间不得存在 写后读 或 写后写 这样的寄存器相关性 例如 MOVEAX EBX MOVECX EAX 写后面跟着读 不能配对MOVEAX 1 MOVEAX 2 写后面跟着写 不能配对MOVEBX EAX MOVEAX 2 读后面跟着写 可以配对MOVEBX EAX MOVECX EAX 读后面跟着读 可以配对MOVEBX EAX INCEAX 读后面跟着读写 可以配对 10 3 一条指令不能同时既包含位移量又包含立即数MOVDWORDPTRDS 1000 0 不能配对 或者只能在U流水线配对CMPBYTEPTR EBX 8 1 不能配对 或者只能在U流水线配对CMPBYTEPTR EBX 1 可以配对CMPBYTEPTR EBX 8 AL 可以配对 11 4 带前缀 JCC指令的0F除外 的指令只能出现在U流水线中例如 用段前缀对非缺省段寻址的指令 在32位代码中使用16位的数据 或16位的代码中使用32位数据的带操作数尺寸前缀的指令 16位模式中 使用32位的基址寄存器或变址寄存器的带地址尺寸前缀的指令 带重复前缀的字符串操作指令 带LOCK前缀的锁定指令 很多在8086处理器中没有实现的 有两个字节的操作码且其中第一个字节是0F的指令 最常见的带0F前缀的指令有 MOVZX MOVSX PUSHFS POPFS PUSHGS POPGS LFS LGS LSS SETCC BT BTC BTR BTS BSF BSR SHLD SHRD 还有带两个操作数且没有立即数的IMUL 12 例6 1程序段如下 MOVAX 5INCBXADDAX BXXORCX CXMOVDX 8INCDX 13 例6 2用100个双字数据0FFFFFFFF来初始化一个数组 程序段如下 MOVEDX 0FFFFFFFFH 装创值到EDXLEAEAX ARRAY 将数组的起始地址装入EAX寄存器MOVECX EAX 396 最后一个元素的地址装入ECX寄存器INIT LOOP MOV EAX EDX 循环装入初值ADDEAX 04H 指向下一个元素CMPEAX ECX 判断是否装到了最后一个地址JBEINIT LOOP 还未装完 转装下一个 14 执行顺序如下 U流水线V流水线MOV EAX EDXADDEAX 04HCMPEAX ECXJBEINIT LOOP 15 图6 5流水线出现空闲级 16 6 3浮点流水线Pentium浮点部件流水线分成8阶段 PF预取 D1译码阶段1 D2译码阶段2 EX取操作数 X1浮点执行步骤1 X2浮点执行步骤2 WT写浮点数 ER出错报告 第一个浮点执行级X1 整数部件的执行级 将从数据Cache或存储器中读取的数据转换成暂存的实型格式 并且写入寄存器堆栈的某一个寄存器中 由该级出来后进入浮点执行级X2 这是浮点指令的实际执行级 然后又进入浮点寄存器写入级WR 将结果写回80位的浮点寄存器堆栈 最后一级就是出错级ER 用于浮点处理中可能出现的错误 17 Pentium微处理机对浮点流水线的执行操作规定了以下4条 浮点指令与整数指令不能成对执行 但2条浮点指令却可以有限制地配对执行操作 当成对浮点指令进入浮点部件时 其中的第二条浮点指令只能是寄存器交换指令FXCH 而第一条浮点指令必须是浮点指令集中的一条浮点指令 它们可以是装实型数指令 FLD 各种形式的算术运算指令 FADD FSUB FMAL FDIV 实数比较指令 FCOM 存实型数并上托出栈指令 FIST 绝对值指令 FABS 变符号指令 FCHS 等浮点指令 除寄存器交换指令之外的那些浮点指令 以及属于浮点指令集中的那些浮点指令 第二条定义的规则 其余指令总是单个地发送给浮点部件 只要不是紧跟在浮点交换指令之后的那些浮点指令 都可以单独地发送给浮点部件 18 Pentium浮点部件的 栈项瓶颈 是怎样形成的 及如何解决 Pentium微处理机堆栈结构要求进行堆栈操作的所有指令 在堆栈栈顶要有一个源操作数 因为绝大多数指令总是希望用堆栈栈顶作为它们的目的操作数 所以大多数指令看到的仿佛是一个 栈项瓶颈 在向栈顶发送一条算术运算指令之前 必须先把源操作数传送至栈顶 在这种情况下 就额外用到了交换指令 它允许程序设计人员把一个有效操作数送至堆栈栈顶 而且是以并行方式与其他浮点指令一起执行交换操作 与另一些浮点指令成对出现的浮点交换指令的执行时间为0个时钟 因为这样的交换指令在Pentium微处理机上是以并行方式执行的 所以不再需要花费额外时间 19 可以和交换指令FXCH配对的浮点指令包括 装载指令 FLD FLDST加法指令 FADD FADDP减法指令 FSUB FSUBP FSUBR FSUBRP乘法指令 FMUL FMULP除法指令 FDIV FDIVP FDIVR FDIVRP比较指令 FCOM FCOMP FCOMPP无序比较指令 FUCOM FUCOMP FUCOMPP零测试指令 FTST绝对值指令 FABS修改符号指令 FCHS 20 图6 68级浮点流水线 21 6 4动态执行技术动态执行技术 也称为推测执行 speculativeexecution 是指通过预测程序流来调整指令的执行 并分析程序的数据流来选择指令执行的最佳顺序 22 它的基本思想是 在取指阶段 在局部范围内预先判断下一条待取指令最有可能的位置 即在取指部件就具有部分执行功能 以便取指的分支预测 保证取指部件所取的指令是按照指令代码的执行顺序取入 而不是完全按照程序指令在存储器中的存放顺序取入 23 6 5分支预测分支预测 bra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公积金代缴协议
- 2025年高级会计师资格考试历年参考题库含答案详解
- 2025年中级安全工程师安全生产技术基础真题及答案解析
- 2025年钳工高级考试试卷及答案 先进制造技术与产业发展
- 路维护服务计划及承诺书模板
- 2025年全国矿山提升机操作作业考试题库含答案
- 中级通信工程师模拟试题及答案
- 2025年注册公共营养师营养指导师职业资格证考试题与答案
- 《第二单元 图像处理的基本方法 第6课 滤镜的应用(一) 二、应用滤镜效果》说课稿教学反思-2023-2024学年初中信息技术人教版七年级下册
- 移动应用开发项目时间规划
- 燃气锅炉安全培训
- 慢性硬脑膜下血肿护理查房
- 蜜雪冰城考试题目和答案
- 高速公路收费站业务培训
- 全科教学病例讨论指南
- 康养项目商业计划书-完整版
- DB51-T1508-2012-珍贵用材树种育苗技术规程红椿-四川省
- 人工智能应用实践指南
- 2025年养老护理员(中级)考试试卷:专业理论与实操考核
- 家长和孩子签订协议书
- 2025年养老护理员(中级)考试试卷:急救技能与实操训练
评论
0/150
提交评论