step_into_mips icon indicating copy to clipboard operation
step_into_mips copied to clipboard

lab3的一些问题

Open Silent-wqh opened this issue 1 year ago • 1 comments

问题:

  1. 设置Block Memory Generator的时候,如果勾选Port A Options中的Primitives Output Register会导致存储器输出延迟2个周期。根据我之前看的计组的书,一般情况下应该是1个周期。
  2. jumpbranch指令中,产生跳转信号相比PC会延迟1~2个周期(取决于指令存储器的延迟),因此会多取出1~2个指令,但在实验指导书我没有看到关于阻止多取出的指令执行的内容。
  3. 由于指令存储器的延迟,会导致产生跳转信号时PC的值已经不是branch指令的地址了,因此跳转地址的偏移量会计算错误。

关于上述问题,我用了一些解决方法:

  1. 取消勾选Primitives Output Register,这样存储器延迟为1个周期。
  2. mips.v文件中添加插入空指令的逻辑。在检测到跳转信号后,下一个周期会劫持原指令并替换为32'h0000_0024,内容是and 0, 0, 0,是一条没有意义的指令。
  3. 因为现在存储器延迟为1个周期,因此我使用PC而非PCplus4,这样可以计算出正确的跳转地址。

但我并不知道我提到的那些问题是我的理解偏差还是真的笔误,也不知道我的解决方法合适不合适,希望能得到关于这些问题的澄清与指导。

Silent-wqh avatar May 23 '24 10:05 Silent-wqh

Primitives Output Register是在同步时钟控制下,才能输出。单周期cpu模型中,输出是不受时钟控制的


该邮件从移动设备发送

--------------原始邮件-------------- 发件人:"Silent Wang @.>; 发送时间:2024年5月23日(星期四) 晚上6:48 收件人:"lvyufeng/step_into_mips" @.>; 抄送:"Subscribed @.***>; 主题:[lvyufeng/step_into_mips] lab3的一些问题 (Issue #3)

问题:

设置Block Memory Generator的时候,如果勾选Port A Options中的Primitives Output Register会导致存储器输出延迟2个周期。根据我之前看的计组的书,一般情况下应该是1个周期。

在jump和branch指令中,产生跳转信号相比PC会延迟1~2个周期(取决于指令存储器的延迟),因此会多取出1~2个指令,但在实验指导书我没有看到关于阻止多取出的指令执行的内容。

由于指令存储器的延迟,会导致产生跳转信号时PC的值已经不是branch指令的地址了,因此跳转地址的偏移量会计算错误。

关于上述问题,我用了一些解决方法:

取消勾选Primitives Output Register,这样存储器延迟为1个周期。

在mips.v文件中添加插入空指令的逻辑。在检测到跳转信号后,下一个周期会劫持原指令并替换为32'h0000_0024,内容是and 0, 0, 0,是一条没有意义的指令。

因为现在存储器延迟为1个周期,因此我使用PC而非PCplus4,这样可以计算出正确的跳转地址。

但我并不知道我提到的那些问题是我的理解偏差还是真的笔误,也不知道我的解决方法合适不合适,希望能得到关于这些问题的澄清与指导。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

ntGrace avatar May 23 '24 12:05 ntGrace