大家好,又见面了,我是你们的朋友全栈君
一、什么是流水线
流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。 目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作能并行执行,所以能提高数据吞吐率(提高处理速度)。
二、什么时候用流水线设计
使用流水线一般是时序比较紧张,对电路工作频率较高的时候。典型情况如下:
- 1)功能模块之间的流水线,用乒乓 buffer 来交互数据。代价是增加了 memory 的数量,但是和获得的巨大性能提升相比,可以忽略不计。
- 2) I/O 瓶颈,比如某个运算需要输入 8 个数据,而 memroy 只能同时提供 2 个数据,如果通过适当划分运算步骤,将大操作分解成小操作就有可能每次只需要2个数据,使用流水线也会减少面积。
- 3)片内 sram 的读操作,因为 sram 的读操作本身就是两级流水线,除非下一步操作依赖读结果,否则使用流水线是自然而然的事情。
- 4)组合逻辑太长,比如(a b)*c,那么在加法和乘法之间插入寄存器是比较稳妥的做法。
三、使用流水线的优缺点
1)优点: 流水线缩短了在一个时钟周期内信号必须通过的通路长度,增加了数据吞吐量,从而可以提高时钟频率,但也导致了数据的延时。举例如下:
例如:一个 2 级组合逻辑&#
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170385.html原文链接:https://javaforall.cn