流水线设计的疑问

[复制链接]
2758|6
 楼主| songchao01 发表于 2008-3-18 09:14 | 显示全部楼层 |阅读模式
看过一个介绍流水线设计的帖子,说采用流水线设计可以提高电路的工作频率,并举例说可以把32位计数器分割成12位和20位计数器,自己动手试了一下,果然综合后的最高频率由原来的168MHZ提高到169MHZ。有两点疑问:<br />1.&nbsp;&nbsp;&nbsp;&nbsp;ISE综合报告给出的最高频率和电路的实际工作频率有关系否?<br />2.&nbsp;&nbsp;&nbsp;&nbsp;流水线设计明明是通过插入寄存器来切割大的组合逻辑,从表面看,引入了新一级的寄存器只会增加信号的传输时延,为什么竟然可以提高频率?!!这个问题怎么想也想不明白!有的资料上说虽然流水设计增加了首次延迟,但是它极大的缩短了吞吐延迟,不太理解<br />
zhh124 发表于 2008-3-19 10:40 | 显示全部楼层

rt

没有流水<br />a&nbsp;-&gt&nbsp;100ns&nbsp;-&gt&nbsp;b<br />a,b使用同步时钟<br /><br />插入一级流水寄存器<br />a&nbsp;-&gt&nbsp;50ns&nbsp;-&gt&nbsp;c&nbsp;-&gt&nbsp;50ns&nbsp;-&gt&nbsp;b<br />a,b,c使用同步时钟<br />显然a&nbsp;-&gt&nbsp;c的频率可以比上面a-&gtb的频率高,以为a-&gtc之间的延迟只有50ns<br />总看起来a-c-b延迟会加大,但只是第一个数据延迟加大.<br />reg:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;-&nbsp;c&nbsp;-&nbsp;b<br />data:&nbsp;z&nbsp;y&nbsp;x&nbsp;&nbsp;&nbsp;--&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;y&nbsp;&nbsp;&nbsp;x&nbsp;&nbsp;--&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;x&nbsp;&nbsp;&nbsp;--&gt<br />x从a-&gtc花费50ns,同时y进入a;<br />x从c-&gtb花费50ns,同时y进入c;<br />x从b输出,同时y进入b,花费50ns;<br />所以:&nbsp;x从a-&gtb总共花费100ns,但是它后面的y则再经过50ns就出现在b的输出了.<br />看明白了吗?&nbsp;这就是流水
zhh124 发表于 2008-3-19 10:45 | 显示全部楼层

rt

我的blog--关于流水操作<br /><br />//流水线<br />当组合逻辑路径上的延迟较长时,可用寄存器将其隔开,来提高操作频率.<br />reg_i-------------------comb_logic------------------&gtreg_o<br />reg_i---1/2comb_logic---reg_insert---1/2comb_logic--&gtreg_o<br />第一组数据从输入reg到输出reg的延迟为T,但其后的数据从输入reg到输出reg的延迟就都降为T/2了.<br />这是因为当第一组数据到达reg_o时,其后的一组数据就已经到达中间插入的reg了,只需要再经过T/2的<br />延迟就可到达reg_o.这就是2级流水线,同理,更多级数的流水线可大大降低延迟,提高操作频率,但第一<br />组数据的延迟仍为没有采用流水线时的延迟.<br /><br />顺便废话几句..<br /><br />CPU的流水线级数和性能的关系<br /><br />多极流水线可提高操作频率,但程序不是总是顺序往下执行的,碰到跳转和分支指令,已经进入流水线的指<br /><br />令将被清空重新填入新的指令,越深的流水线则这个过程耗费的时间越长...<br /><br />地址:<br />http://www.edacn.net/index.php/59549/viewspace-5620.html
 楼主| songchao01 发表于 2008-3-20 16:37 | 显示全部楼层

感谢楼上的!!!

上网不方便,把网页保存下来回去慢慢看,嘿嘿<br />谢谢楼上的指点!!
 楼主| songchao01 发表于 2008-3-24 12:53 | 显示全部楼层

终于明白了!!

感谢&nbsp;zhh124&nbsp;的耐心讲解,举的例子很好,一下子就看明白了~<br />回&nbsp;qinxg:<br />&nbsp;&nbsp;那个例子只是单纯的一个计数器,并不是某个设计中的一部分,所以频率提升的不是很明显~“要看那个最影响频率的延时路径,在这个路径里插入流水线可以实实在在的提高系统频率”这个不错!!受教了!
niu9911 发表于 2008-3-24 17:52 | 显示全部楼层

学习

多极流水线可提高操作频率,但程序不是总是顺序往下执行的,碰到跳转和分支指令,已经进入流水线的指<br /><br />令将被清空重新填入新的指令,越深的流水线则这个过程耗费的时间越长...<br /><br />有空去支持一下BLOG
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

28

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部