一、流水线基本概念
在深入了解流水线这一概念之前,重要的是要理解并行性这一基础概念,即要明白并行性的含义。
并行性与我们通常所说的并发性是两个不同的概念,因此需要明确区分它们。
并行性指的是多个事件同时发生的情况,即两个或更多事件在同一个时间点进行。
而并发性则指的是多个事件在同一个时间段内发生,但它们不必同时开始或结束。
计算机指令的执行过程可以分解为以下三个主要步骤:
- 取址阶段:根据控制单元的指令,从内存中提取特定的指令,并将其传输到指令寄存器。
- 分析阶段:对提取的指令进行解码,并准备所需的操作数。
- 执行阶段:将操作的结果存储到通用寄存器中。
假设每个阶段都需要一个时间单位,如果我们不采用流水线技术,执行一条指令需要三个时间单位,而执行三条指令则将需要 9 个时间单位,这一过程可以通过以下图表进行直观展示。
换成流水线的形式,我们先看下图。执行一条指令需要 3 个时间单位,而在执行三条指令时则将缩短至 5 个时间单位。
由此我们可以知道:流水线技术是一种在程序执行过程中,允许多条指令同时进行操作的准并行处理方法,它通过优化资源分配,显著提升了各个组件的工作效率。
二、流水线周期、执行时间的计算
流水线技术虽然高效,但不同流水线的性能提升程度各有差异,因此对每条流水线进行细致评估,确保其运行达到最佳状态是至关重要的。
首先,我们来定义流水线周期,它指的是在流水线操作中,各个阶段所需时间最长的那一段。
以一个指令的执行过程为例,如果指令的取值阶段耗时 3 纳秒,分析阶段耗时 4 纳秒,执行阶段耗时 1 纳秒,那么这条指令的流水线周期将是 4 纳秒,因为这是完成一个指令周期中最长的阶段。
接下来,我们来探讨流水线执行时间的计算。假设有 100 条指令需要执行,每条指令的各个阶段时间分别为取值 2 纳秒、分析 4 纳秒、执行 1 纳秒。在流水线技术下,一旦流水线开始运作,每条指令的各个阶段可以并行进行,这意味着流水线的周期时间将决定整个流水线的执行效率。
流水线理论执行时间=第一条指令执行时间+(任务数量-1)×流水线周期。 即 。
流水线实际执行时间:把上述公式中第一条指令执行的各个部分时间到替换成周期时间。 即 。变换一下得到计算公式:流水线实际执行时间=(一条执行的工序数+任务数量-1) x 流水线周期。
在软考考试中优先使用理论公式计算,没有答案再尝试使用实际公式计算。
流水线的吞吐率(每条指令的平均执行时间)=任务数/任务执行时间。 即在单位时间内,流水线所能完成的指令数量。
流水线的加速比=不使用流水线技术的任务执行时间/使用流水线的任务执行时间。 即,
最大吞吐率 = 1 / 流水线周期。即 。
流水线的效率 = 被占用的时空格 / 总的时空格。
- 被占用的时空格:指的是流水线中正在执行任务的单元格数量。在流水线中,每个单元格代表一个处理阶段,如果该阶段正在处理任务,则认为该单元格被占用。例如,如果流水线有 3 个阶段,每个阶段分别需要 2 纳秒、4 纳秒、1 纳秒来完成,共 100 任务,那么被占用的时空格就是一条指令运行时间乘以任务数,即 。
- 总的时空格:指的是流水线中所有可能的单元格数量乘以流水线的运行时间。例如,如果流水线有3个阶段,每个阶段分别需要 2 纳秒、4纳秒、1 纳秒来完成,共 100 任务,那么总的时空格就是3个阶段乘以运行时间,即 。 由此,流水线效率=700/1209。