5.5 指令流水线
最后更新于
最后更新于
将指令执行过程划分为不同的阶段,占用不同的资源,使得多条指令同时执行。
时间:
传统冯诺依曼结构,又称串行执行方式。
优点
控制简单,硬件代价小
缺点
执行指令的速度较慢,
各功能部件的利用率很低
时间:
优点
程序的执行时间缩短了1/3
各功能部件的利用率明显提高。
缺点
需要付出硬件上较大开销的代价
控制过程比顺序执行复杂
时间:
时间更短
实际使用中也可以分成更多段,如4段甚至5段
主要用于分析指令执行过程以及影响流水线的因素
主要用于分析流水线的性能
吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量
吞吐率:
:任务数量
:完成n个任务的总时间
理想状态下的流水线时空图
一条指令的执行分为k个阶段
每个阶段耗时
不使用流水线所用的时间与使用流水线所用的时间之比。
流水线的设备利用率称为流水线的效率。
结构相关:由于多条指令在同一时刻争用同一资源(主存、寄存器等)而形成的冲突
后一相关指令暂停一周期
资源重复配置:数据存储器+指令存储器分开存储
在一个程序中,存在必须等待前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。
把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行
硬件阻塞(stall)
软件插入空操作NOP
数据旁路技术:通过数据旁路直接将ALU的运算结果接回为下一条操作的输入
编译优化:通过编译器调整指令顺序来解决数据相关
当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关
转移指令分支预测
简单预测
动态预测
预取转移成功和不成功两个控制流方向上的目标指令
加快和提前形成条件码
提高转移方向的猜准率
在分支指令插入空操作
部件功能级流水线:将复杂的算术逻辑运算组成流水线工作方式
处理机级流水线:把一条指令解释过程分成多个子过程
处理机间级流水线:协调不同处理机间的不同任务
单功能流水线:只能实现一种固定的专门功能
多功能流水线:通过各段间的不同连接方式可以同时或不同时地实现多种功能
静态流水线:在同一时间内,流水线的各段只能按同一种功能的连接方式工作
动态流水线:在同一时间内,当某些段正在实现某种运算时,另一些段可以进行另一种运算
线性流水线:从输入到输出,每个功能段只允许经过一次, 不存在反馈回路
非线性流水线:存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算
每个时钟周期内可并发多条独立指令,通过编译优化技术,把可并行执行的指令搭配起来。属于空分复用技术。
要配置多个功能部件
不能调整指令的执行顺序
如上图中,称为处理机的度为3
传统指令流水线度为1
在一个时钟周期内再分段,一个功能部件使用多次。属于时分复用技术。
流水线速度为原来的多倍
不能调整指令的执行顺序
靠编译程序解决优化问题
由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条
具有多个操作码字段的超长指令字(可达几百位)
取指IF(instruction fetch):将指令从Cache中取出,放入寄存器
指令译码ID(instruction decode)
指令译码
将操作数从通用寄存器中取出,放入锁存器
执行EX(execute)
访存M(memory)
写回WB(write back):将运算结果写回主存/寄存器
指令和数据分开存储在两个Cache中,可以使得取指与访存同时执行
Cache未命中会造成流水线断流
RISC中只有LOAD和STORE指令才能访问主存
令每个阶段时间耗时一样,取最长耗时为准
缓冲寄存器(锁存器):位于流水线每一段之后,其作用是保存本流水段的执行结果,提供给下一流水段使用
IF:根据PC从指令Cache取指令到IF段锁存
ID:取出操作数到ID段锁存
EX:运算,将结果存入EX段锁存
M:空段
WB:将运算结果写回指定寄存器
IF:根据PC从指令Cache取指令到IF段锁存
ID
将基址寄存器的值存到段锁存器中
将偏移量的值(立即数)存到Imm中
EX:运算,得到有效地址,将结果存入EX段锁存
M:根据有效地址从Cache中取数,放入M段锁存器中
WB:将取出的数写回指定寄存器
IF:根据PC从指令Cache取指令到IF段锁存
ID
将基址寄存器的值存到ID段锁存器中
将偏移量的值(立即数)存到Imm中
将要存的数放到ID段锁存器中
EX:
运算,得到有效地址,将结果存入EX段锁存
将要存的数从ID段锁存器转移到EX段锁存
M:将数据写入Cache
WB:空段
IF:根据PC从指令Cache取指令到IF段锁存
ID
将要进行比较的两个数存到段锁存器中
将偏移量的值(立即数)存到Imm中
EX:运算,比较两个数
M:将目标PC的值写回PC
WB:空段
IF:根据PC从指令Cache取指令到IF段锁存
ID:将偏移量的值(立即数)存到Imm中
EX:将目标PC的值写回PC
M:空段
WB:空段
修改PC的硬件实际上是与5段式流水线的硬件独立的
需要尽早的完成对PC的修改