关于 流水线 一直不知道应该怎样应用,求高手支招~~
小编是在设计RISC还是在设计什么控制器什么的?
那样的话流水线是必须的啊,可以参考下ARM SOC ARCHITECTURE
其实,也就是在延时比较大的地方,插入寄存器,减小关键路径的延时,提高整体运算速度。
流水线就是让 每个 时钟 周期都可以做事,不空闲
就我的理解就是流水线采用更多的硬件资源换来更快的处理速度。举个例子:
如果让一个人搬砖,从A地搬到B地需要5分钟。而A地呢每分钟收到一块砖,那么如果一个人干活,A地砖就累积起来了。而流水线的处理方式是找5个人来搬砖,其中第一个人用一分钟搬到A到B地中间一个位置,第二个人接着搬,依次类推。那么A地的砖就顺利到B地了。
当然一般流水线应用过程要复杂的多,其实就是让每个人都只干一件事,而这件事在一个时钟能完成,再衔接的好的情况下,就可以连续向下干。当然总体流程会延时多个时钟,但是每个时钟的数据都被处理了。
从计算机技术的角度看,在CPU上取指令机构与执行指令机构的分开,这样从CPU整体来看,CPU在执行上条指令的同时,又在并行地取下条指令。它使得CPU从串行工作变为并行工作,从而具有了流水线的雏型。
精辟!
多个寄存器同时使用
在现在主频飞速增长的时代流水线是必不可少的...
也就是说,流水线并不仅仅是多几个寄存器,可能是好几个执行不同动作的模块,多个模块连接到一起,各干各的在共用时钟的作用下,状态机的三段式写法是不是也算是流水线呢?
状态机3段式是为了将组合逻和时序逻辑分开处理,不能体现流水。
再打个比方吧:
洗衣机洗1件衣服,需要1分钟洗、1分钟漂、1分钟甩干,共需要3分钟。
情况1:使用1台洗衣机,洗3件,洗完1件洗下1件,共需要9分钟,这种属于串行处理;
情况2:使用3台洗衣机(a负责洗、b负责漂、c负责甩干),a洗完给b,b漂完给c,c烘干,这样洗3件衣服需要多久? 2分钟等待时间(就是延迟)+3分钟处理时间=5分钟,这种属于流水处理;
情况3:使用3台洗衣机同时洗3件衣服,共需要3分钟,这种属于全并行处理;
可以看出:
情况1只需要1台全功能洗衣机,占用资源最少,但时间最长;
情况2需要3台具有独立功能的洗衣机,占用资源多于1,但时间稍短,且存在延迟时间(流水越长,延迟越长);
情况3需要3台全功能洗衣机,占用资源最多,但时间最短,且没有延迟
例子很好。如果20件衣服,每分钟来一件,对于情况3就能连续无阻塞地处理,就像工厂的流水线一样,23分钟处理完。
请注意:情况3并不是流水,而是全并行操作。
实现中好像很少用到哦
还没用过流水线
流水线是数字设计的基本技能,没有用到说明你平时接触到的设计比较简单,一般在算法实现上都会用到流水线,因为组合逻辑级数太大会严重影响实现速度
你这个例子举得太形象了,多谢了。
个人理解,流水线就是将一个很大的模块分开,目的就是为了减少延迟……
你的理解有误,流水越长延迟越大
推荐看一本书《高级FPGA设计:结构、实现和优化》的第一章中对Throughput, Latency and Timing作了很好的关系说明
hhh hhhhh
但是在具体编程实现时是如何实现的?有的说要考虑流水段速率的问题,最好合理划分,前后时间一致,防止数据拥堵或者空闲,那如何确保前后时间一致?
这个例子解开了我长久的谜团,多谢
时序不满足的时候用
