在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2800|回复: 3

[求助] 新手问个低级问题--关于流水线中的寄存器模块的问题,谢谢

[复制链接]
发表于 2012-4-14 15:15:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在CPU设计中,寄存器模块通常都是用的时序器件,这样的话不是相当于在流水线中间插入了一级吗?




在CPU设计中,寄存器模块通常都是用的时序器件,这样的话不是相当于在流水线中间插入了一级吗?

                               
登录/注册后可看大图



如图所示,图中的Regfile就是是时序器件。




补充说明一下:
举个MIPS五级流水线的例子,IF,ID,EX,MEM,WB
时钟1上升沿时,在ID级输出访问的寄存器地址,但是由于寄存器模块是时序的(我的理解是:时钟上升沿输出,如下面代码所示),到时钟2的上升沿,才会输出结果;
而ID/EX寄存器又是时序的;
这样的话。ID级访问寄存器,访问结果不是需要两个时钟才能输出到EX段吗?
而且看到好多代码中都是这样写的(OR1200 、ucore )。。求指导。谢谢。。


  always @(posedge clk_i or posedge rst_i)
  begin
    if(rst_i)
    begin:INITIAL_SECTION
      integer i;
      for(i=0;i<32;i=i+1) mem <= 32'b0;
    end
    else begin
      douta <= ena?mem[porta]:32'b0;
      doutb <= enb?mem[portb]:32'b0;

      if (enc && portc != 0)
      begin

mem[portc] <= dinc;
      end
    end
  end




发表于 2012-4-14 20:02:54 | 显示全部楼层
流水线就是靠寄存器来实现的,只是在第一个时钟上升沿慢一个时钟周期,以后再读寄存器时,同时也在往里写数据。以此类推,总的时间减少了
发表于 2012-8-24 10:49:32 | 显示全部楼层
寄存器存的是上一个cycle的值, 2号cycle 的输入在3号cycle才能输出
发表于 2012-8-24 21:43:31 | 显示全部楼层
学习了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-8 19:39 , Processed in 0.022298 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表