流水线设计在现今的电路中已是非常普遍的做法。通过流水线设计,我们可以充分利用电路运行时间,使电路更好地运作。经典的cpu中的流水线设计一般为指令预取、译码、执行、写回结果,分为四级流水。当然,你也可以做成更多级的流水线设计。流水线的每一级都可以有加、减、乘、除和比较等运算。这些基本运算结构称为运算单元,也叫算子。
然而,有时流水线过长,会带来输出负载过重的后果。乒乓缓存是一个能够隔离流水线的一个存储结构。不过,它是在某级流水线前后进行的隔离操作,并不是作为一级流水设计。通常上,流水线由于太长以致不能驱动下一级负载的时候,即输入输出负载问题,乒乓缓存可以被插入这两级流水之间来消除这些影响。
如上图所示,输入数据流通过“输入数据选择单元”将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口 RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”;在第2个缓冲周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,同时将“数据缓冲模块1”缓存的第1个周期数据通过“输出数据选择单元”的选择,送到 “数据流运算处理模块”进行运算处理;在第3个缓冲周期通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,同时将“数据缓冲模块2”缓存的第2个周期的数据通过“输出数据选择单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。
简而言之,乒乓缓存的控制原理为,通过“输入数据选择单元”和“输出数据选择单元”,按节拍、相互配合地切换,将经过缓冲的数据流不停顿地送到“数据流运算处理模块”,进行运算及处理。
就网络流量控制的设计中,三级插入一级乒乓缓存来隔离流水线,基本上能满足要求。
参考:
阅读(6166) | 评论(0) | 转发(1) |