大门| 2007大门|问题41

下表显示了产生结果的指令和使用结果的指令之间的操作延迟。 2007_41

null

Load R1, Loc 1;     Load R1 from memory location Loc1
Load R2, Loc 2;     Load R2 from memory location Loc 2
Add R1, R2, R1;     Add R1 and R2 and save result in R1
Dec R2;     Decrement R2
Dec R1;     Decrement R1
Mpy R1, R2, R3;     Multiply R1 and R2 and save result in R3
Store R3, Loc 3;     Store R3 in memory location Loc 3


假设每条指令执行一个周期,那么执行上述代码段所需的周期数是多少? (A) 7. (B) 10 (C) 13 (D) 14 答复: (C) 说明:

在给定的问题中有7条指令,每条指令需要1个时钟周期才能完成。(可以使用管道) 如果指令处于执行阶段 还有其他指示吗 s 不能在执行阶段。因此,至少需要7个时钟周期。 现在,根据两条指令的操作,它们之间应该存在延迟或延迟。Ex-1 表中的第行表示,在两个操作之间,第一个操作生成ALU操作的结果,第二个操作生成ALU操作的结果 如果使用结果,则应延迟2个时钟周期。

时钟周期:

图片[2]-大门| 2007大门|问题41-yiteyi-C++库 1) 荷载R1,位置1;从内存中加载R1 位置1 需要1个时钟周期,只需在loc1上加载R1。

2) 荷载R2,位置2;从内存中加载R2 位置2 需要1个时钟周期,只需在loc2上加载r2。

3) 加上R1,R2,R1;添加R1和R2,并将结果保存在R1中 R1=R1+R2;

因此,该指令使用R1和R2的结果,即指令1和指令2的结果。

因为指令1是加载操作,指令3是ALU操作。因此,指令1和指令3之间应该有1个时钟周期的延迟。由于I2的原因,它已经存在了。 因为指令2是加载操作,指令3是ALU操作。因此,指令2和指令3之间应该有1个时钟周期的延迟。 4) 12月2日;减量R2 该指令依赖于指令2,指令2和指令4之间应有一个时钟周期的延迟。因为指令2是load,指令4是ALU。由于指令3,已经存在。

5) 12月R1减量R1 本指令依赖于指令3 由于指令I3是ALU,而I5也是ALU,因此它们之间应该有2个时钟周期的延迟,其中1个时钟周期的延迟由于I4而已经存在,因此I4和I5之间有一个时钟周期的延迟。

6) MPY R1、R2、R3;将R1和R2相乘,并将结果保存在R3中 R3=R1*R2; 该指令使用指令5的结果,因为指令5和6都是ALU,所以应该有2个时钟周期的延迟。

7) 存储R3,Loc 3在内存位置Loc3中存储R3 该指令依赖于指令6,指令6是ALU,指令7是存储的,因此它们之间应该有2个时钟周期的延迟。

因此,总共有13个时钟周期。

这个解决方案是由 沙申克·沙克尔·哈雷 . 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享