您当前的位置:首页 > 今日分享头条 > 正文

流水线的设计包括什么设计(一文详细了解流水线设计)

流水线的设计包括什么设计(一文详细了解流水线设计)

一、什么是流水线?

流水线设计是系统划分组合逻辑,在各部分(级)之间插入寄存器,临时存储中间数据的方法。目的是把一个大的操作分解成几个小的操作,每个小操作的时间短,所以可以增加频率,每个小操作可以并行执行,所以可以提高数据吞吐率(处理速度)。

二、什么时候用流水线设计?

流水线的使用通常是在时序比较紧,电路工作频率比较高的时候。典型情况如下:

1)功能模块之间的流水线使用乒乓缓冲来交换数据。代价是增加内存的数量,但与巨大的性能提升相比,可以忽略不计。

2) I/O瓶颈。比如某个操作需要输入8个数据,而memroy只能同时提供2个数据。如果操作步骤划分得当,使用流水线反而会减少面积。

3)片内sram的读操作,因为sram的读操作本身就是一个两极流水线,除非下一步操作依赖于读结果,否则自然要用流水线。

4)组合逻辑过长,如(a b)*c,所以在加法和乘法之间插入寄存器比较安全。

三、使用管道的优缺点

1)优点:流水线缩短了给定信号在一个时钟周期内必须经过的路径长度,提高了数据吞吐量,从而提高了时钟频率,但也导致了数据延迟。例子如下:例如一个2级组合逻辑,假设每一级的延迟与Tpd相同,

1.无流水线总延迟为2Tpd,一个时钟周期即可完成,但时钟周期限制为2 tpd

2.装配线:

每一级加入寄存器后(延迟为Tco),单级的延迟为Tpd Tco,每一级消耗一个时钟周期。流水线需要两个时钟周期才能得到第一个计算结果,称为第一个延迟,需要2*( Tpd Tco)。但是,当重复运算时,只需要一个时钟周期就可以得到最终的计算结果,这就是所谓的吞吐量延迟(Tpd Tco)。可见,只要Tco小于Tpd,流水线就能提速。特别是流水线减少的不是单个操作的时间,而是整个数据的操作时间。请仔细感受。

2)缺点:功耗增加,面积增大,硬件复杂度增加。特别是对于cpu等复杂逻辑的流水线,流水线越深,需要hold流水线或reset流水线时,时间损耗越大。所以,用流水线不是有利无害的,需要权衡。

第四个8位流水线加法器的一个小例子

非管道:

模块添加8(

一,

b,

c);

输入[7:0]a;

输入[7:0]b;

输出[8:0]c;

赋值c[8:0]={1'd0,a} {1'd0,b };

末端模块

采用两级流水线:第一级低4位,第二级高4位,所以第一个输出需要2个时钟周期才有效,后续数据都是1个周期。

之后就有效了。

模块地址8_2(

clk,

cin,

西纳,

cinb,

总和,

cout);

输入clk

输入CIN;

输入[7:0]Cina;

输入[7:0]cinb;

输出[7:0]sum;

输出cout

注册cout

reg cout1//插入的寄存器

reg[3:0]sum 1;//插入的寄存器

reg[7:0]sum;

cina _ reg

reg[3:0]cinb _ reg;//插入的寄存器

Always @(posedge clk) //第一级流水

开始

{cout1,sum 1 }=Cina[3:0]cinb[3:0]CIN;

结束

始终@(posedge时钟)

开始

Cina _ reg=Cina[7:4];

cinb _ reg=cinb[7:4];

结束

Always @(posedge clk) //第二级流水

开始

{cout,sum[7:0]}={

标签:流水线数据逻辑


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 联想B470怎么样有什么缺点吗?联想笔记本b470内存多大

下一篇: 网络流行用语的看法作文(网络流行用语)



推荐阅读