流水线技术
文章目录一、流水线技术概述1. 基本概念2. 设计目标二、流水线的性能指标1. 吞吐率2. 加速比3. 效率三、流水线的冒险与处理1. 结构冒险2. 数据冒险3. 控制冒险四、流水线的分类五、练习六、总结一、流水线技术概述1. 基本概念流水线技术是一种指令级并行处理技术它将一个复杂的操作如指令执行分解为多个独立的子步骤并通过硬件上的功能部件并行处理使得多条指令可以在不同步骤上重叠执行。通俗理解如同工厂的装配线在汽车装配时冲压、焊接、涂装、总装四个工位同时工作——第一辆车在总装时第二辆车在涂装第三辆车在焊接第四辆车刚进冲压。同一时刻有四辆车处于不同装配阶段大大提高了产出效率。在CPU中一条指令的执行过程被分解为若干阶段如取指、译码、执行、访存、写回每个阶段对应一个流水段各段之间通过流水线寄存器缓存中间结果在时钟信号的驱动下同步向前推进。说明同一时刻不同指令处于不同阶段形成重叠执行。2. 设计目标提高指令执行的吞吐率单位时间完成的指令数充分利用硬件资源减少功能部件空闲时间保持指令执行逻辑的正确性以较小的硬件代价换取显著的性能提升常考查流水线周期的确定、执行时间的计算、吞吐率与加速比的计算。二、流水线的性能指标1. 吞吐率定义吞吐率是指单位时间内流水线能够完成的任务数量或输出结果的数量。计算公式TP n / T_k其中n任务数量如指令条数T_k处理完成 n 个任务所用的总时间对于 k 段流水线每段所需时间分别为 Δt₁、Δt₂、…、Δt_k则流水线周期Δt max(Δt₁, Δt₂, …, Δt_k)取最长段的时间完成 n 条指令的总时间T_k k·Δt (n-1)·Δt (kn-1)·Δt吞吐率TP n / [(kn-1)·Δt]当 n → ∞ 时最大吞吐率 TP_max 1 / Δt。记流水线周期看最长总时间首项加尾项。说明建立时间 前 k-1 个周期排空时间 后 k-1 个周期。2. 加速比定义加速比是指完成同样一批任务不使用流水线顺序执行所用时间与使用流水线所用时间的比值。计算公式S T_0 / T_k其中T_0顺序执行 n 条指令的总时间T_0 n × (Δt₁ Δt₂ … Δt_k)T_k流水线执行 n 条指令的总时间T_k (kn-1)·Δt当 n → ∞ 时理论最大加速比 S_max k即流水线段数。记加速比越大越好极限就是流水段数。3. 效率定义流水线的效率是指流水线中设备的利用率即有效工作时间与总时空面积的比值。计算公式E T_0 / (k · T_k) S / k其中T_0n 个任务顺序执行占用的时空面积k · T_kk 个流水段在总时间 T_k 内围成的时空区总面积由于流水线存在建立时间填满流水线和排空时间最后一条指令流出的时间各段不可能一直满负荷工作效率始终小于1。记效率等于加速比除以段数E S / k。三、流水线的冒险与处理流水线并非总能完美运行。当指令间存在依赖关系或资源冲突时下一条指令无法在预期时刻执行这种现象称为流水线冒险。1. 结构冒险原因多条指令在同一时钟周期争用同一个硬件资源。典型场景指令和数据共用一个存储器冯·诺依曼结构取指和访存同时发生冲突。解决方案采用哈佛结构将指令存储器与数据存储器分开增加硬件资源如多端口存储器2. 数据冒险原因后续指令需要使用前面指令的运算结果但该结果尚未写回寄存器。典型场景addi x1, x0, 1 # x1 1 addi x2, x1, 1 # x2 x1 1此时x1的新值还未写回解决方案前递技术将ALU计算结果直接转发给下一条指令无需等待写回气泡/阻塞插入空操作周期等待数据就绪编译器调度调整指令顺序将无关指令插入数据相关指令之间3. 控制冒险原因分支指令的目标地址未确定时后续指令已被取入流水线。典型场景条件跳转指令跳转与否的结果在EX阶段才能确定。解决方案分支预测静态预测默认不跳转或动态预测根据历史记录延迟分支将分支指令前的一条无关指令移到分支后执行流水线冲刷预测错误时清空已取入的错误指令四、流水线的分类分类依据类型说明按处理级别操作部件级浮点运算等复杂操作流水化指令级指令执行过程分为多段最常见处理机级多个CPU各自完成专门任务按功能数量单功能流水线只完成固定一种功能多功能流水线可动态配置完成不同功能按连接方式静态流水线同一时刻只按一种功能连接动态流水线同一时刻可多种功能同时工作按发射方式标量流水线每个周期发射1条指令超标量流水线每个周期发射多条指令超流水线将流水段进一步细分增加流水线深度以提高主频如Pentium IV的20级流水线。超标量流水线内置多条并行流水线每个时钟周期可同时发射并执行多条指令。五、练习题目1某指令流水线由4段组成各段所需时间依次为取指4Δt、分析2Δt、执行3Δt、写回2Δt。则该流水线的操作周期至少应为 。A. 2ΔtB. 3ΔtC. 4ΔtD. 11Δt答案C解析流水线操作周期流水线周期由执行时间最长的流水段决定即 max(4Δt, 2Δt, 3Δt, 2Δt) 4Δt。题目2一条指令的执行过程分解为取指、分析和执行三步取指时间3Δt、分析时间2Δt、执行时间4Δt。若按串行方式执行10条指令全部执行完需要 Δt。若按流水方式执行执行完10条指令需要 Δt。A. 40B. 70C. 90D. 100A. 20B. 30C. 45D. 49答案C、D解析串行执行每条指令时间 3Δt 2Δt 4Δt 9Δt10条共90Δt。流水线周期 max(3Δt, 2Δt, 4Δt) 4Δt。流水执行时间T_k (kn-1)·Δt (310-1) × 4Δt 12 × 4Δt 48Δt注部分教材采用累加法得出49Δt以实际真题答案为准。关键公式T_k k·Δt (n-1)·Δt其中 Δt 为最长段的时间。题目3某指令流水线由4段组成各段所需时间如下图所示。连续输入8条指令时的吞吐率为 。取指: 1Δt → 分析: 2Δt → 执行: 3Δt → 写回: 1ΔtA. 8/24ΔtB. 8/28ΔtC. 8/32ΔtD. 8/56Δt答案C解析流水线周期 Δt_max 3Δt执行段最长按标准公式T_k (48-1) × 3Δt 11 × 3Δt 33Δt吞吐率 8 / 33Δt按累加法软考常用首条指令 1231 7Δt之后每条间隔 3Δt总时间 7Δt 7×3Δt 28Δt吞吐率 8 / 28Δt注软考中流水线计算存在两种方法优先参考选项匹配情况。本题以累加法结果 8/28Δt 为准。题目4流水线的加速比是指 。A. 流水线工作时间与总时间的比值B. 顺序执行时间与流水执行时间的比值C. 流水段数与指令条数的比值D. 吞吐率与流水线周期的比值答案B解析加速比 S T_顺序 / T_流水即完成同样任务时不使用流水线与使用流水线的时间比值。题目5以下关于流水线数据冒险的叙述中正确的是 。A. 数据冒险是指多条指令同时访问同一存储器B. 数据冒险可以通过增加硬件资源解决C. 前递技术可以将计算结果直接转发给后续指令D. 数据冒险只在分支指令中出现答案C解析A错误多条指令争用存储器是结构冒险。B错误数据冒险主要通过前递或气泡解决而非简单增加硬件。C正确前递旁路技术将ALU结果直接传递给下一条指令无需等待写回。D错误分支指令导致的是控制冒险。题目6超标量流水线的特点是 。A. 增加流水线深度以提高主频B. 每个时钟周期可发射多条指令C. 将流水段进一步细分D. 只有一条指令流水线答案B解析A、C描述的是超流水线技术。B正确超标量流水线内置多条并行流水线每个周期可同时发射多条指令。D错误超标量有多条流水线。题目7某计算机采用5级指令流水线每段处理时间均为2ns。连续执行100条指令的加速比约为 。A. 2B. 3C. 4D. 5答案D解析顺序执行时间T_0 100 × (5 × 2ns) 100 × 10ns 1000ns流水执行时间T_k (5100-1) × 2ns 104 × 2ns 208ns加速比S 1000 / 208 ≈ 4.8 ≈ 5当 n 较大时加速比趋近于流水线段数 k5。题目8以下关于流水线效率的叙述中错误的是 。A. 效率等于加速比除以流水线段数B. 流水线建立和排空阶段会降低效率C. 效率的理论最大值为1D. 连续执行的指令越多效率越低答案D解析A正确E S / k。B正确建立和排空时部分流水段空闲降低效率。C正确理想状态下效率可接近1。D错误连续执行的指令越多建立和排空开销占比越小效率越高。六、总结维度要点速记核心原理指令执行分解为多段多指令重叠执行流水线周期取各段执行时间的最大值执行时间T_k (kn-1)·Δtk段数n指令数吞吐率TP n / T_k极限为 1 / Δt加速比S T_0 / T_k极限为流水线段数 k效率E S / k反映设备利用率三种冒险结构冒险资源冲突、数据冒险数据相关、控制冒险分支跳转相关技术超标量多发指令、超流水线加深分段、前递/旁路解决数据冒险记流水线如工厂线周期要看最慢段时间公式 kn-1加速极限就是 k。