MIPS中的内存访问

时间:2011-09-25 18:43:54

标签: assembly mips

我们正在为周二的计算机组织与设计中期学习,我们都不理解以下问题:

procedure:
    addi $sp, $sp, -4
    sw $ra, 0($sp)
    ... Some unknown work is done ...
    addi $sp, $sp, 4
    lw $ra, -4($sp)
    jr $ra

(1-H)再次考虑上面的代码,并假设它有效。如果在执行期间,'未知 work'部分导致从内存中读取100个单词,将从中读取多少个单词 整个程序执行期间的内存? (考虑所有内存访问。

答案如下:106。对于未知工作读取100个存储器,读取显示的指令加上5个存储器读取,在“lw”指令期间读取1个存储器。

如果有人能够帮助我们准确理解这6个内存读取的确切位置,那将非常感激!

1 个答案:

答案 0 :(得分:3)

让我们从明显的开始:在“未知工作”部分执行100次读取,留下6次读取。一次读取是针对lw指令(lw $ra, -4($sp)),它从内存中读取单词。最后5次读取由指令提取阶段的CPU隐式完成。

addi $sp, $sp, -4                   # 1 read (CPU reads the instruction word)
sw $ra, 0($sp)                      # 1 read -------------- ## --------------
... Some unknown work is done ...   # 100 reads (given in question)
addi $sp, $sp, 4                    # 1 read (CPU reads the instruction word)
lw $ra, -4($sp)                     # 2 reads (CPU reads the instruction word, lw instruction also reads)
jr $ra                              # 1 read (CPU reads the instruction word)