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个时钟周期。
时钟周期:
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个时钟周期。
这个解决方案是由 沙申克·沙克尔·哈雷 . 这个问题的小测验