计算机体系结构——流水线技术(Pipelining)
一、并行技术
.并行技术分类
.新技术的设计与实现
.指令周期 二、流水线技术
.什么是流水线
.指令重叠方式
.流水工作设计
.流水线的描述方法(时空图)
.流水线特点 三、流水线的分类(了解) 四、流水线相关及冲突(重点)
.流水线相关
.流水线冲突
.流水线冲突带来问题
.数据冲突及其解决方案
.结构冲突及其解决方案
.控制冲突及其解决方案 五、流水线性能分析(含例题讲解)
.流水线的基本参数——吞吐率
.流水线的基本参数——加速比
.流水线的基本参数——效率
.结果分析
.有关流水线性能的若干问题
六、循环展开优化
.指令调度
.循环展开
七、多指令流出技术(拓展了解)
.超标量
.超长指令字
- 现流行的并行技术大都可以从三个方面实现:
- 资源重复:如多核
- 资源共享:如CPU分时技术
- 时间重叠:如流水线技术
- 新技术的设计与实现
- 引入新技术进行优化
- 出现新问题
- 解决新问题
- 整体评估、反馈、再改进
- 指令周期
- 单周期处理机模型:一个周期完成一个指令(每个周期是等长的),指令长度可能不一样,会造成很大的浪费
- 多周期处理机模型:将一个指令的完成划分成若干个周期来实现
- 流水线模型
- 计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。由于这种工作方式与工厂中的生产流水线十分相似, 因此称为流水线技术
- 从本质上讲,流水线技术是一种时间并行技术。
- 顺序执行:控制简单,节省设备;但是速度慢,功能部件的利用率低
- 重叠执行方式 :指令的执行时间缩短 ,功能部件的利用率明显提高 ;但是需要增加一些硬件;控制过程稍复杂
- 基本思想:延伸重叠方式,使指令解释过程进一步细化, 提高各部件的利用率,以提高指令执行速度
- 理想目标:完成任务的时间与操作处理过程无关,只与提供操作的速度有关(假设一个任务有n个指令,将完成一个指令分为m个段,每段执行时间为△t ,则理想目标是完成任务的时间是T=m△t+(n-1)△t;当n >> m时,T=(n-1)△t。 指令执行频率为 1 / △t: 即 与m无关,只和提供操作的速度△t有关)。
- 时间—空间图 Ⅰ:

- 时间—空间图 Ⅱ:
横坐标:表示时间,即各个任务或指令在流水线中 所在该时刻所对应的子过程
纵坐标:表示某个任务或某条指令,即流水线依次 处理的任务或指令
- 工作流程:分装入、流水、排空 三个流程
- 同步处理:功能部件 + 锁存器

- 硬件要求:


- 数据相关
- 名相关:换名技术
- 控制相关
- 数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突
- 控制冲突:流水线遇到分支指令和其他会改变PC值的指令所引起的冲突
- 结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突,比如说,前面后面指令同时访问存储器
- 导致错误的执行结果
- 流水线可能会出现停顿,从而降低流水线的效率和实际的加速比
- 我们约定当一条指令被暂停时,在该暂停指令之后流出的所有指令都要被暂停,而在该暂停指令之前流出的指令则继续进行(否则就永远无法消除冲突)

- 同一个周期数据冲突的情况:以指令四AND R8,R1,R9为例:在第五周期,第一条指令R2 + R3结果正准备写入到R1中,但是此时第四条指令现在就需要使用R1(此时R1的值还不是R1 + R2),显然会出现问题
- 在R1写入寄存器的前一个周期(第四周期)就需要使用R1数据的情况:如指令三 XOR R6,R1,R7:这种情况显然不适合利用上述解决办法解决。但是可以换一个角度:虽然这个时候没有任何办法在Reg中取出正确的R1值,但是可以从ALU部件下手,因为从Reg取出R1数据最终目的就是计算R1 XOR R7,实际上就是计算(R2 + R3) XOR R7,所以只要保证输入到的ALU中的数据是(R2 +R3)就可以了,那如何使(R2 + R3)的结果输入到ALU参与(R2 + R3) XOR R7 运算呢?
- 同样道理,对于指令二:DSUB R4,R1,R5,在第四周期初要用到(R2 + R3)的值,可以从DM前(或者ALU后)拉一根线到ALU前,如绿色线所示,同样可以解决问题。

- 综上所述,综对于数据冲突来说,可以通过定向技术减少数据冲突引起的停顿 (定向技术也称为旁路或短路)。但是并不是所有的数据冲突都可以用定向技术来解决:如下例:
- 如果某种指令组合因为资源冲突而不能正常执行,则称该处理机有结构冲突(比如说,两条指令在同一周期同时访问内存,如下图所示)
- 常见的导致结构相关的原因:

- 有些流水线处理机只有一个存储器,将数据和指令放在一起,访存指令会导致访存冲突
- 有时流水线设计者允许结构冲突的存在
- 控制冲突
//设s , i 初值都为0;
if (i < )
{
/*指令一:*/ s = s + i;
/*指令二:*/ i++;
}
/*指令三:*/ s = s - ;
|
指令编号
|
时钟周期
|
||||||
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
|
| DADD Rs, Rs ,Ri
(s = s + i )
|
IF
|
ID
|
EX
|
MEM
|
WB
|
||
| DADD Ri, Ri, 1
( i = i + 1)
|
IF
|
ID
|
EX
|
MEM
|
WB
|
||
|
???
|
Start
|
||||||
- 分支成功(继续执行if中的语句):此时,PC值改变为分支转移的目标地址 。 在条件判定和转移地址计算都完成后,才改变PC值。
- 分支失败(执行if函数体外面的语句):PC的值保持正常递增, 指向顺序的下一条指令。
- 可采取两种措施来减少分支延迟。
- 如果猜对了,即已经确定分支失败:将分支指令看作是一条普通指令,流水线正常流动
- 如果猜错了,即已经确定分支成功,那也不要紧,流水线就把在分支指令之后 取出的所有指令转化为空操作(到最后需要将结果写入到寄存器时,就通过使能信号不让它写入就可以了 ),并按分支目地重新取指令执行。
- 主要思想:
- 分支延迟指令的调度任务:在延迟槽中放入有用的指令( 由编译器完成)
- 三种调度方法: 从前调度 从目标处调度 从失败处调度

- 分支延迟受到两个方面的限制:
- 进一步改进:分支取消机制(取消分支)
- 吞吐率(Through Put)—— 单位时间内流水线完成任务数量或输出的结果数:TP = n / Tk

- 加速比——完成一批任务,不使用流水线时间与使用流水线所用的时间之比。
- 各段执行时间相等,输入任务连续的情况下:S = k*n*△t / (k + n - 1)△t = k*n / (k + n -1) 当n—>无穷大时, S = k
- 例一:流水线性能分析举例

- 例2:(a1+b1)*(a2+b2)*(a3+b3)*(a4+b4)在静态、双功能(加法和乘法)流水线上实现



.png)
- 建立、排空时间过多(流水线断流—数据相关和操作变换)
- 功能切换必须等待排空后进行。(静态通病)
- 动态流水线结果如何?(减少2个Δt)
- 如何提高流水线效率? 尽量细化各功能段,尽量减少功能切换,尽量减少数据相关,尽量增加一次处理的指令数量。
- 流水线适用范围? 流水线适合于操作相同、操作数间无相关性的多个指令的执行。
- 流水线并不能减少(而且一般是增加)单条指令的执行时间,但却能提高吞吐率。
- 适当增加流水线的深度(段数)可以提高流水线的性能。
- 流水线的深度(级数)受限于流水线的延迟和流水线的额外开销。
- 相关问题。如果流水线中的指令相互独立 ,则可以充分发挥流水线的性能。但在实际中 ,指令间可能会是相互依赖,这会降低流水线的性能。
for (i=; i>=; i--)
x[i] = x[i] + s;

- 循环展开技术
- 第一种情况:

- 第二种情况:
- 第三种情况:

- 循环展开和指令调度时要注意以下几个方面:
- 静态调度
- 动态调度
- CPI:平均每条指令执行周期数
- 前面介绍的流水线最理想(实际上达不到)的状态就是每个周期执行一条指令,即CPI = 1,速度的提升似乎就此止步了,但是人类的智慧超出你想象,我们有办法让CPI < 1 吗?(即每条指令执行时间连一个周期也用不了)
- 答案是肯定的,我们可以通过多指令流出技术实现这一点。
- 超标量(Superscalar)
- 超长指令字VLIW(Very Long Instruction Word)
计算机体系结构——流水线技术(Pipelining)的更多相关文章
- 计算机体系结构总结_Pipeline
Textbook:<计算机组成与设计——硬件/软件接口> HI<计算机体系结构——量化研究方法> QR 在前面一节里我们有了一块简单的RISC CPU,包括 ...
- 计算机体系结构——CH5 标量处理机
计算机体系结构--CH5 标量处理机 右键点击查看图像,查看清晰图像 X-mind 计算机体系结构--CH5 标量处理机 先行控制技术 指令得重叠执行方式 顺序执行方式 一次重叠执行方式 二次重叠技术 ...
- Intel系列CPU的流水线技术的发展
Intel系列CPU的流水线技术的发展 CPU(Central processing Unit),又称“微处理器(Microprocessor)”,是现代计算机的核心部件.对于PC而言,CPU的规格与 ...
- geotrellis使用(四十一)流水线技术
前言 之前 GeoTrellis 为方便用户将数据(GeoTiff 等遥感影像)导入到 backend (包含 Accumulo.File.Hadoop 等格式)中,编写了一个 ETL 类,该类的输入 ...
- 计算机体系结构的铁律(iron law)
计算机体系结构的铁律可由下面公式来描写叙述: 从Programmer的角度来看,处理器的性能就是运行程序的耗费的时间.所以用Time/Program来刻画处理器性能.而这个简单的公式背后是有很丰富的内 ...
- 计算机体系结构——CH3存储系统
计算机体系结构--CH3存储系统 右键点击查看图像,查看清晰图像 X-mind 计算机体系结构--CH3存储系统 存储系统原理 主要性能 速度 容量 价格 两种存储系统 Cache与主存储器 虚拟存储 ...
- 流水线技术原理和Verilog HDL实现(转)
源:流水线技术原理和Verilog HDL实现 所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执 ...
- 计算机体系结构——CH4 输入输出系统
计算机体系结构--CH4 输入输出系统 右键点击查看图像,查看清晰图像 X-mind 计算机体系结构--CH4 输入输出系统 输入输出原理 特点 实时性 与设备无关性 异步性 输入输出系统的组织方式 ...
- 计算机体系结构——CH2 指令系统
CH2 指令系统 右键点击查看图像,查看清晰图像 X-mind CH2 指令系统 数据表示 定义 指计算机硬件能够直接识别,可以被指令系统直接调用的那些数据类型 确定哪些数据类型用哪些数据表示实现,是 ...
随机推荐
- 消息中间件之 RocketMQ
参考文档: http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/ http://rocketmq.apache.org ...
- 【微信小程序】使用vscode编写微信小程序项目
1. 在微信开发者工具(以下简称:开发者)中新建一个模板微信小程序 2. 在开发者中将模拟器分隔开 3. 设置在保存时编译 4. 在vscode中打开项目目录 5. 下载代码提示插件 这样就可以在vs ...
- linux运维、架构之路-MHA高可用方案
一.软件介绍 MHA(master high availability)目前是MySQL高可用方面是一个相对成熟的解决方案.在切换过程中,mha能做到0-30s内自动完成数据库的 ...
- jq 获取各个元素的宽度高度的方法
JS获取各种宽度.高度的简单介绍: scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获 ...
- css语法以及css选择器
CSS语法 CSS的标准语法主要由两方面构成一是 选择器.二是 声明框. 一.选择器 通过选择器可以选定页面指定的元素,并将声明块中的样式应用在选择器选中的元素中去. 二.声明框 ...
- Spring Cloud Commons教程(二)Spring RestTemplate作为负载平衡器客户端
RestTemplate可以自动配置为使用功能区.要创建负载平衡RestTemplate创建RestTemplate @Bean并使用@LoadBalanced限定符. 警告 通过自动配置不再创建Re ...
- 嵌入QQ聊天
<a href="http://wpa.qq.com/msgrd?V=1&Uin=1178321443&Site=http://www.nanfangjiadian.c ...
- python-之基本语法
模块一些函数和类的集合文件,并实现一定的功能,当我们需要使用这些功能的时候,可以直接把相应的模块导入到我们的程序中 import import mode #导入mode模块 即导入mode模块后 ...
- 北风设计模式课程---接口分离原则(Interface Segregation Principle)
北风设计模式课程---接口分离原则(Interface Segregation Principle) 一.总结 一句话总结: 接口分离原则描述为 "客户类不应被强迫依赖那些它们不需要的接口& ...
- java虚拟机规范-运行时栈帧
前言 java虚拟机是java跨平台的基石,本文的描述以jdk7.0为准,其他版本可能会有一些微调. 引用 java虚拟机规范 java虚拟机规范-运行时数据区 java内存运行时的栈帧结构 java ...