流水线技术
zKing 2018-11-19 专业知识
# 定义
- 指在程序执行时,多条指令重叠进行操作的一种任务分解技术
- 把一个任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构来负责执行,而这些执行机构可以并行工作
# 计算执行时间
- 假定有某种类型的任务,可以分为 N 个子任务,每个子任务需要时间 t,则完成该任务所需的时间为 Nt
- 若以传统的技术,完成 k 个任务所需的时间是 kNt
- 使用流水线技术,花费的时间是 Nt+(k-1)t0 // Nt 为完成一个任务所需要的时间,t0是所有任务中最长的那个时间。
注意:如果每个子任务所需的时间不同,其时间取决于执行顺序种最慢的那一个
# 流水线的吞吐率
- 指在单位时间内流水线所完成的任务数量或输出的结果数量
- TP = n / Tk
- 其中,n 为任务数,Tk 是处理完成 n 个任务所用的时间
# 加速比
- 指 不采用流水线的执行时间 / 采用流水线的执行时间
- 用来衡量并行系统或程序并行化的性能和结果
# 影响流水线的主要因素
# 转移指令
因为前面的转移指令还没有完成,流水线无法确定吓一跳指令的地址,因此也就无法向流水线中添加这条指令
# 共享资源访问的冲突
后一条指令需要使用的数据,与前一条指令发生冲突,或者相邻的指令也是用了相同的寄存器
# 相应中断
当有中断请求时,流水线也会停止
# 两种响应方式
- 精确断点法
- 立即停止,这种方法能够立即响应中断
- 不精确断点法
- 流水线中的指令继续执行,不再新增指令到流水线