读书人

设计一个简易的微处理器(6)-简单的流水

发布时间: 2012-12-27 10:17:10 作者: rapoo

设计一个简易的处理器(6)--简单的流水线实现PIPE-

上一篇已经介绍了SEQ+的实现,本篇介绍流水线的通用原理及其简单的流水线实现PIPE-.

SEQ/SEQ+的局限性

————

通过前面几篇文章介绍SEQ/SEQ+,不难发现SEQ/SEQ+的一些局限性.

-实际中的SEQ/SEQ+太慢, CPU的时钟太慢,性能太差.

-在每一个时钟周期中,必须更新一条指令的所有可见状态(包括存储器,寄存器文件,条件码和指令寄存器, PC).

-没有充分利用CPU的各个硬件单元(一个时钟周期内只有少量时间硬件单元是活动的).

基于以上几点, SEQ/SEQ+无法达到实际的需求,引入了流水线系统.


流水线的通用原理

————

1.流水线的引入

在设计一个流水线化的处理器之前,先介绍一下流水线化系统的通用原理.实际生产中,流水线的思想经常用于汽车的生产制造,通过将待执行的任务划分为若干个阶段,这样就容许多辆汽车通过生产线的不同阶段,而不用等到一辆汽车生产完成之后再生产下一辆汽车,增加了产能(专业术语:"吞吐量",后面介绍).

假定在一个非流水线化的硬件系统中,如下图所示,该系统由一个执行计算的逻辑和保存计算结果的寄存器构成.

设计一个简易的微处理器(6)-简单的流水线实现PIPE

在每个320ps的周期内,系统用300ps(1s=1012ps)计算组合逻辑函数, 20ps用来存储计算结果至寄存器中.

定义延迟(latency)和吞吐量(throughput).

延迟:执行一条指令所需要的时间,称为延迟.

吞吐量:延迟的倒数.

则:吞吐量 = 1/((20+320)*10-12)=3.12*109IPS =3.12GIPS(GIPS: 每秒千兆条指令)

如果将上述系统的执行的计算分为三个阶段A, B, C,每个阶段都为100ps.并且在阶段之间加入流水线寄存器(用来保留的中间结果).如下图所示:

设计一个简易的微处理器(6)-简单的流水线实现PIPE

可以知道:吞吐量=1000/(100+20) = 8.33GIPS

2.流水线的优点和局限性

优点-流水线的引入,通过流水线的深度提高了系统的吞吐量,更加了系统的处理性能.

局限性:

-不一致划分.理想的流水线可以均分,但是现实中往往会不一致的划分.系统的吞吐量受最慢阶段的制约,导致某些阶段并不完全处于活动状态 .

设计一个简易的微处理器(6)-简单的流水线实现PIPE

-流水线过深,收益下降.一方面,流水线过深,会导致存储占用时间的比重上升, 导致吞吐量并没有提高多少, 反而增加了延迟,当然硬件成本也上升了.

设计一个简易的微处理器(6)-简单的流水线实现PIPE

-现实中,流水线往往带有反馈.需要增加更多的控制逻辑.

流水线技术是典型的空间换时间的技术.现代处理器的流水线很深(15或者更多的阶段),来提高时钟频率(主频).

先睹为快:简单的流水线系统PIPE-

————

可以在SEQ+的基础上,在各个阶段之间,加上流水线寄存器,改造成PIPE-.先睹为快,稍后分析.

设计一个简易的微处理器(6)-简单的流水线实现PIPE

PIPE-的硬件结构

上图说明:

整个硬件框图.实际上大部分内容与SEQ+相同.变化有:

读书人网 >系统运维

热点推荐