|
|
|
|
|
|
|
|
|
 |
发表于:2008-5-8 10:57:00
|
 |
3 楼
|
|
|
|
|
|
|
 |
级别:
|
|
积分:125分 |
|
注册:2006年08月13日
|
|
|
rt
没有流水 a -> 100ns -> b a,b使用同步时钟
插入一级流水寄存器 a -> 50ns -> c -> 50ns -> b a,b,c使用同步时钟 显然a -> c的频率可以比上面a->b的频率高,以为a->c之间的延迟只有50ns 总看起来a-c-b延迟会加大,但只是第一个数据延迟加大. reg: a - c - b data: z y x --> z y x --> z y x --> x从a->c花费50ns,同时y进入a; x从c->b花费50ns,同时y进入c; x从b输出,同时y进入b,花费50ns; 所以: x从a->b总共花费100ns,但是它后面的y则再经过50ns就出现在b的输出了. 看明白了吗? 这就是流水
* - 本贴最后修改时间:2008-3-19 10:42:12 修改者:zhh124 |
|
|
|
|
|
|
 |
发表于:2008-5-8 10:57:00
|
 |
4 楼
|
|
|
|
|
|
|
![]() |
级别:一星
|
|
积分:分 |
|
注册:2008年11月22日
|
|
|
rt
我的blog--关于流水操作
//流水线 当组合逻辑路径上的延迟较长时,可用寄存器将其隔开,来提高操作频率. reg_i-------------------comb_logic------------------>reg_o reg_i---1/2comb_logic---reg_insert---1/2comb_logic-->reg_o 第一组数据从输入reg到输出reg的延迟为T,但其后的数据从输入reg到输出reg的延迟就都降为T/2了. 这是因为当第一组数据到达reg_o时,其后的一组数据就已经到达中间插入的reg了,只需要再经过T/2的 延迟就可到达reg_o.这就是2级流水线,同理,更多级数的流水线可大大降低延迟,提高操作频率,但第一 组数据的延迟仍为没有采用流水线时的延迟.
顺便废话几句..
CPU的流水线级数和性能的关系
多极流水线可提高操作频率,但程序不是总是顺序往下执行的,碰到跳转和分支指令,已经进入流水线的指
令将被清空重新填入新的指令,越深的流水线则这个过程耗费的时间越长...
地址: http://www.edacn.net/index.php/59549/viewspace-5620.html
|
|
|
|
|
|
|
|
|
|