计算机系统结构学习笔记 --- 流水线技术
流水线的概念
流水线工作原理
-
基本思想
将指令执行过程分为多个阶段,每个阶段同时处理不同的操作 -
基本组成
多个段按序组成

-
工作原理
每条指令按序通过各段,不同指令执行过程重叠


注:流水线实际上就是把一个大的处理过程分成若干个独立的小过程,依靠它们的并行工作来提高处理速度(吞吐率)
流水线组成的基本要求
1)各个段操作相互独立
方法--各个段的源数据来自时序部件,结果存到时序部件
实现--增设段间寄存器(在两个相邻段之间传送数据,避免相互打扰)

2)各流水段操作同步 <-实现连续重叠
实现--设置公共时钟,拍时钟周期=max{段i的时长}

3)各流水段操作无冲突
冒险--流水线因某些原因无法正确执行后续指令的现象
冒险种类--结构冒险、数据冒险、控制冒险
实现--增设部件及控制机制,解决冒险

流水线的分类
- 按处理级别分类:操作级,指令级,处理及级(宏流水)
- 按功能分类:单功能流水线、多功能流水线
- 按工作方式分类:静态流水线、动态流水线
- 按结构分类:线性流水线、非线性流水线(复用部件)
- 按流入/流出次序分类:顺序、乱序
流水线性能指标
吞吐率
单位时间内流水线所完成的任务数量或输出结果的数量
\(TP=\frac{任务数n}{处理n个任务的总时间T}\)

加速比
指用顺序处理方式处理一批任务所用的时间与使用流水方式处理同一批任务所用时间之比
\(S=\frac{顺序执行所用时间T_s}{流水方式处理所用时间T_k}\)

效率
流水线设备利用率,指流水线中设备实际使用时间与整个运行时间之比。流水线有通过时间与排空时间,连续完成n个任务,各段不是满负荷工作的

m为段数,n为任务数
流水线段数选择

流水线冒险的处理
流水线组成示例(MIPS)

注意事项:
1)保证不会在同一个时钟周期让同一功能段(如ALU)做不同的两件事
2)为避免IF段访存(取指令)与MEM段访存(读写数据)发生冲突,必须采用分离的指令存储器和数据处理器(或Cache)
3)ID段对通用寄存器进行读操作,WB进行写,为解决对同一通用寄存器的访问冲突,把写操作安排在时钟周期前半拍完成,读安排在后半拍
相关与冒险
-
相关
两条指令之间的依赖关系

-
冒险(冲突)
因相关等原因引起的流水异常现象

注意! 相关不等于冒险!
结构冒险处理
- 产生原因:争夺硬件资源
- 结构要求
1)每个部件不能复用
2)各部件使用时间无冲突 - 处理策略
1)重复设置部件
2)分时使用部件
数据冒险处理
- 产生原因: 因重叠执行,指令所需数据不可用
- 冒险类型: 写后读(RAW),写后写(WAW),读后写(WAR)
- 处理方法: 阻塞发,转发法,乱序执行法

阻塞法
冲突指令及后续指令停顿,知道冒险消除
- 停顿方法:插入气泡

转发法:冲突指令可从数据产生段获取数据,来消除冒险

load-use冒险

乱序执行法
冲突指令停顿后,后续无RAW的指令可先执行

控制冒险处理

阻塞法
分支指令之后的指令停顿,直到冒险消除(得知确切的转移目标地址

预测法
预测转移方向,并执行该方向的指令
猜对是继续执行,猜错时回头执行反方向指令

延迟分支法
延迟槽中指令总是被执行,使延迟槽中为有用指令

流水线实现
单指令周期数据通路的实现(以MIPS32为例)


多指令周期数据通路实现

流水数据通路的实现
- 结构冒险处理


- 数据冒险处理

- 控制冒险处理

*小结

MIps流水线控制器实现



浙公网安备 33010602011771号