深入理解操作系统(11)第四章:处理器体系结构(3)流水线的通用原理(包括:吞吐量/流水线的操作/流水线的局限性/流水线的实现)

深入理解操作系统(11)第四章:处理器体系结构(3)流水线的通用原理(包括:吞吐量/流水线的操作/流水线的局限性/流水线的实现)

1. 流水线的通用原理

在试图设计一个流水线化的Y86处理器之前,让我们先来看看流水线化的系统的一些通用属性和原理。

对于曾经开车通过自动汽车清洗线的人,都会非常熟悉这种系统。在流水线化的系统中,待执行的任务被划分成了若干个独立的阶段。在汽车清洗中,这些阶段包括喷水和打肥皂、擦洗、上蜡和烘干。通常都会允许多个顾客同时经过系统,而不是要等到一个用户完成了所有从头至尾的过程才让下一个开始。

吞吐量:

流水线化的一个重要特性就是增加了系统的吞吐量( throughput),
也就是单位时间内服务的顾客总数,不过它也会轻微地增加执行时间(latency),
也就是服务一个用户需要的时间。

1.1 计算流水线

1.1.1 非流水线化的硬件系统例子

图4.32
在这里插入图片描述

ps 微微秒 picosecond

它是由一些执行计算的逻辑以及一个保存计算结果的寄存器组成的。时钟信号控制在每个特定的时间间隔加载寄存器。
CD播放器中的解码器就是这样的一个系统。输入信号是从CD表面读出的位,逻辑部分对这些位进行解码,产生音频信号。图中的计算块是用组合逻辑来实现的,意味着信号会穿过一系列逻辑门,在一定时间的延迟之后,输出就成为了输入的某个函数。

执行时间:从头到尾执行一条指令所需要的时间称为执行时间

1.1.2 三阶段流水线

假设将我们的系统执行的计算分成三个阶段(A、B和C),每个阶段需要100ps(微微秒 picosecond),如下图所示。
图4.33

在这里插入图片描述

时钟周期设为100+20=120ps,得到的吞吐量大约为8.33GOPS
处理一条操作需要3个时钟周期,所以这条流水线的执行时间就是3×120=360ps

1.2 流水线操作的详细说明

三阶段流水线时序
图4.34

在这里插入图片描述

流水线操作的一个时钟周期

图4.35跟踪了时刻240~360之间的电路活动,操作OP1(用深灰色表示)经过阶段C,OP2(用浅灰色表示)经过阶段B,而OP3(用中度灰色表示)经过阶段A。
图4.35
在这里插入图片描述

说明:
在时刻240(点1),也就是时钟上升之前,操作OP1(用深灰色表示)和OP2(用浅灰色表示)已经完成了阶段B和A。在时钟上升后,这些操作开始传送到阶段C和B,而操作OP3(用中度灰色表示)开始经过阶段A(点2和3)。就在时钟开始再次上升之前,这些操作的结果就会传到流水线寄存器的输入(点4)。

1.3 流水线的局限性

1.3.1 不一致的划分

下图展示的系统中,和前面一样,我们将计算划分为了三个阶段,但是通过这些阶段的延迟从50ps到150ps不等。通过所有阶段的延迟和仍然为300ps。不过,我们运行时钟的速率是由最慢的阶段的速度限制的。

正如本图中流水线图表明的那样,每个时钟周期,阶段A都会空闲(用白色方框表示)100ps,
而阶段C会空闲50ps。只有阶段B会一直处于活动状态。

我们必须将时钟周期设为150+20=170ps,也就是吞吐量为5.88GOPS。另外,由于时钟周期减慢了,执行时间也增加到了510ps。
图4.36
在这里插入图片描述

对硬件设计者来说,将系统计算设计划分成一组具有相同延迟的阶段是一个主要的挑战。

通常处理器中的某些硬件单元,如ALU和存储器,是不能被划分成多个延迟较小的单元的。这就使得创建一组平衡的阶段非常困难。在设计我们的流水线化的Y86处理器中,我们不会过于关注这一层次的细节,但是理解时序优化在实际系统设计中的重要性还是非常重要的。

1.3.2 流水线过深,收益反而下降

下图说明了流水线技术的另一个局限性。
在这个例子中,我们把计算分成了6个阶段,每个阶段需要50ps。在每对阶段之间插入流水线寄存器就得到了一个六阶段流水线。这个延迟占到了整个时钟周期的28.6%。
图4.37
在这里插入图片描述

现代处理器为了提高时钟频率,采用了很深的(15或更多的阶段)流水线。
处理器设计师将指令的执行划分成很多非常简单的步骤,这样一来每个阶段的延迟就很小。电路设计者小心地设计流水线寄存器,使其延迟尽可能得小。

1.4 带反馈的流水线系统

当我们将流水线技术引入Y86处理器时,我们必须正确处理反馈的影响。
我们必须以某种方式来处理指令间的数据和控制相关,以使得到的行为与ISA定义的模型相符。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值