第一章概述;1计算机系统和系统结构.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 流水线技术 4.1 指令级并行的概念 1、流水线处理机的实际CPI 理想流水线的CPI加上各类停顿的时钟周期数: CPI流水线 = CPI理想 + 停顿结构冲突 + 停顿数据冲突 + 停顿控制冲突 理想CPI是衡量流水线最高性能的一个指标。 IPC:Instructions Per Cycle (每个时钟周期完成的指令条数) 2、基本程序块 基本程序块:一段除了入口和出口以外不包含其他分支的线性代码段。 程序平均每5~7条指令就会有一个分支。 3、循环级并行:使一个循环中的不同循环体并行执行。 开发循环体中存在的并行性 最常见、最基本 是指令级并行研究的重点之一 例如,考虑下述语句: for (i=1; i=500; i=i+1) a[i]=a[i]+s; 每一次循环都可以与其他的循环重叠并行执行; 在每一次循环的内部,却没有任何的并行性。 4、最基本的开发循环级并行的技术 循环展开(loop unrolling)技术 采用向量指令和向量数据表示 静态调度 依靠编译器对代码进行静态调度,以减少相关和冲突。 它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。 通过把相关的指令拉开距离来减少可能产生的停顿。 动态调度 在程序的执行过程中,依靠专门硬件对代码进行调度,减少数据相关导致的停顿。 标量是相对于向量而言的,一个只有大小的量称为标量,而将既有大小又有方向的量称为向量。当然,向量中的某一个分量也是标量。 如果处理机每条指令的处理对象是一个或一对(如两个标量相加)标量,这种处理机称为标量处理机。 如果标量处理机内部存在多条指令流水线,则称为超标量处理机。 4.5.2实际分支和分支预测的影响对理想处理器的限制 在理想处理器中,假设分支总是可以正确地预测出来,即程序中的任何一个分支均可以在其执行前被预测出来。实际上,这种情况是不会出现的。 图4.28和图4.29所示是真实的预测方案的效果,两个图的差别只是表示形式不同而已。图中的测试数据包括使用不同的分支预测方案和不使用任何预测的几种情况,假设对于跳转指令有一个单独的预测器。跳转预测对于最精确的分支预测器来说很重要,因为对出现频率较高的分支而言,分支预测的精确性更为关键。 图4-28 分支预测对指令发射速度的影响 如图4-28展示的从理想的预测模型(所有的分支都被正确的预测)到各种动态预测器,到编译时和基于静态文件的预测器,最后到没有使用预测器的效果。 图4-29 分支预测的影像图(按应用程序排序) 2.分支目标缓冲 分支成功的分支指令的地址和它的分支目标地址都放到一个缓冲区中保存起来,缓冲区以分支指令的地址作为标示;取指令阶段,所有指令地址都与保存的标示作比较,一旦相同,我们就认为本指令是分支指令,且认为它转移成功,并且它的分支目标(下一条指令)地址就是保存在缓冲区中的分支目标地址。这个缓冲区就是分支目标缓冲区(Branch-TargetBuffer,BTB,或者Branch-TargetCache,BTC)。 BTB的结构如图所示 用专门的硬件实现的一张表格。表格中的每一项至少有两个字段: (1)执行过的成功分支指令; (2)预测的分支目标地址。 由于BTB中存储的是执行过的成功分支指令的地址,所以如果当前指令的地址与BTB中的第一个字段匹配,那么就将该匹配项中第二个字段中的地址送给PC寄存器,从分支目标处开始取指令。 如果预测正确,则不会有任何分支延迟。如果预测错误或者在BTB中没有匹配的项,则会有至少两个时钟周期的开销。这是因为这时需要更新BTB中的项,这要花费一个时钟周期。 采用BTB技术时指令在各种情况下的延迟 0 不成功 不是 2 成功 不是 2 不成功 成功 是 0 成功 成功 是 延迟周期 实际的动作 预测结果 指令在BTB中? BTB的另一种形式是在分支目标缓冲器中存储一条或则多条分支目标处的指令。 有的实现方案还保留了分支目标地址,有的则将之去掉了 这种方案有3个潜在的优点: (1)更快地获得分支目标处的指令; (2)可以一次提供分支目标处的多条指令,这对于多流出处理器是很有必要的; (3)便于进行分支折叠优化。该优化可以用来实现零延迟无条件分支,甚至有时还可以做到零延迟条件分支。 3.基于硬件的前瞻执行 基于硬件的前瞻执行结合了以下3种思想: (1)采用动态的分支预测技术来选择后续执行语句 (2)在控制相关消除之前指令前瞻执行。 (3)对基本块采用动态调度。 实现前瞻的关键思想是:

文档评论(0)

天马行空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档