5.2 指令流水线

指令流水线的定义

一条指令的执行过程可以分成多个阶段(或过程)
根据计算机的不同,具体的分法也不同。


取指:根据PC内容访问主存储器,取出一条指令送到IR中。
分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。
执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。

1、顺序执行方式
传统冯·诺依曼机采用顺序执行方式,又称串行执行方式。
优点:控制简单,硬件代价小。
缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率低

2、一次重叠执行方式 
优点:程序的执行时间缩短了1/3,各功能部件的利用率明显提高,
缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了。

3、二次重叠执行方式
与顺序执行方式相比,指令的执行时间缩短近2/3。这是一种理想的指令执行方式,在正常情况下,处理机中同时有3条指令在执行。 

流水线表示方式

流水线的性能指标

1.吞吐率        
吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。
设任务数为n;处理完成n个任务所用的时间为Tk
则计算流水线吞吐率(TP)的最基本的公式为TP=n/Tk

TP=n/(k+n-1)t

2.加速比 
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。
设T0表示不使用流水线时的执行时间,即顺序执行所用的时间;
Tk表示使用流水线时的执行时间
则计算流水线加速比(S)的基本公式为S=T0/Tk

3.效率 
流水线的设备利用率称为流水线的效率。
在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积n个任务所用的时间与k个流水段所围成的时空区总面积之比。

指令流水线影响因素分类

为了方便流水线的设计,将每个阶段的耗时取成一样,以最长耗时为准。
流水线每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器,其作用是保存本流水段的执行结果,提供给下一流水段使用。

结构相关(资源冲突)

由于多条指令在同一时刻争用同一资源形成的冲突称为结构相关

解决方法:
1.后一相关指令暂停一周期,插入气泡
2.资源重复配置:数据存储器+指令存储器

数据相关(数据冲突)

数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。

解决方法:
1.把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞(stall)和软件插入“NOP”两种方法
2、数据旁路转发技术
3、编译优化:通过编译器调整指令顺序来解决数据相关

控制相关

当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。

解决方法:
1.转移指令分支预测。简单预测(永远猜ture或false)、动态预测(根据历史情况动态调整)
2.预取转移成功和不成功两个控制流方向上的目标指令
3.加快和提前形成条件码
4.提高转移方向的猜准率

流水线分类 

部件功能级、处理机级和处理机间级流水线

根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线
部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。
处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。
处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。

单功能流水线和多功能流水线

流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线
单功能流水线指只能实现一种固定的专门功能的流水线
多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。

动态流水线和静态流水线

按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。
静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这对提高流水线的效率很有好处,但会使流水线控制变得很复杂。

线性流水线和非线性流水线

按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。
线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。
非线性流水线存在反馈回路,从输入到输出过程中,某些功能将数次通过流水线。这种流水线适合进行线性递归的运算。

流水线多发技术

超标量技术

每个时钟周期内可 并发多条独立指令要配置多个功能部件
不能调整 指令的 执行顺序通过编译优化技术,把可并行执行的指令搭配起来

超流水技术

在一个时钟周期内再分段(3段)
在一个时钟周期内 一个功能部件使用多次(3次)
不能调整 指令的 执行顺序
靠编译程序解决优化问题

超长指令字 

 由 编译程序挖掘 出指令间 潜在并行性
多条并行操作 的指令组合成一条
具有多个操作码字段超长指令字(可达几百位)
采用 多个处理部件

五段式指令流水线

 运算类指令
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:取出操作数至ID段锁存器
EX:运算,将结果存入EX段锁存器
M:空段
WB:将运算结果写回指定寄存器

LOAD指令(通常,RISC处理器只有“取数LOAD”和"存数STORE”指令才能访问主存)
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm
EX:运算,得到有效地址
M:从数据Cache中取数并放入锁存器
WB:将取出的数写回寄存器

STORE指令
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm。将要存的数放到B
EX:运算,得到有效地址。并将锁存器B的内容放到锁存器 store。
M:写入数据Cache
WB:空段

条件转移指令
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:进行比较的两个数放入锁存器A、B:偏移量放入Imm
EX:运算,比较两个数
M:将目标PC值写回PC(写回PC是在访存阶段)
WB:空段

无条件转移指令(注意和有条件转移指令写回PC的区别)
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:偏移量放入lmm
EX:将目标PC值写回PC(写回PC是在EX阶段)
M:空段
WB:空段

多处理器基本概念

SISD(单指令流单数据流)

计组课程一直在学的就是SISD,每条指令可以处理一两个数据
特性:
各指令序列只能并发、不能并行,每条指令处理一两个数据
不是 数据级并行技术
硬件组成:一个处理器+一个主存储器
若采用指令流水线,需设置多个功能部件,采用多模块交叉存储器

SIMD(单指令流多数据流)

特性:
各指令序列只能并发、不能并行,但每条指令可同时处理很多个具有相同特征的
是一种 数据级并行技术
硬件组成:一个指令控制部件(CU)+多个处理单元/执行单元(如ALU)+多个局部存储器+一个主存储器
每个执行单元有各自的寄存器组、局部存储器、地址寄存器
不同执行单元执行同一条指令,处理不同的数据

Key:对结构类似的大量数据进行相同处理。一条指令处理很多个数据
eg1:某些显卡常采用SIMD,图像处理时,常对每个像素点进行完全一样的渲染(比如加个粉红色滤镜)
eg2:可用于优化for循环中对数组元素的重复处理

MIMD(多指令多数据流)

与其相似的MISD(多指令单数据流现实不存在)
特性:
各指令序列并行执行,分别处理多个不同的数据
是一种 线程级并行、甚至是线程级以上并行技术

多处理器系统

特性:
各处理器之间,可以通过LOAD/STORE指令,访问同一个主存储器,可通过主存相互传送数据
硬件组成:
一台计算机内,包含多个处理器+一个主存储器
多个处理器共享单一的物理地址空间

共享内存多处理器的基本概念
多个处理器共享一个主存储器
多个处理器共享单一的地址空间,都可以通过LOAD,STPRE指会达问共享的主存储器

多计算机系统

特性:
各计算机之间:不能通过LOAD/STORE指令直接访问对方的存储器只能通过“消息传递”相互传送数据
硬件组成:
由多台计算机组成,因此拥有多个处理器+多个主存储
每台计算机拥有各自的私有存储器,物理地址空间相互独立

多核处理器的基本概念
一个CPU芯片中包含多个处理器,即多个核(core),因此通常也称为片级多处理器(Chip-LevelMuliPracessing,CMP)。意思是:一块芯片上成了多个处理器
所有核共享一个LLC(Last-LevelCache),并共享主存储器

向量处理机(SIMD思想进阶)

特性:
一条指令的处理对象是"向量"
擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量
硬件组成:
多个处理单元,多组“向量寄存器”
主存储器应采用“多个端口同时读取”的交叉多模块存储器
主存储器大小限定了机器的解题规模,因此要有大容量的、集中式的主存储器

eg:向量处理机的LOAD指令,可以将一个向量取到向量寄存器中;加法指令,可以实现两个向量相加
应用于:向量计算、大量浮点数计算,空气动力学、核物理学、巨型矩阵计算问题很多超级计算机如中国的“银河”就是向量处理器


硬件多线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值