Доступ к памяти в MIPS - PullRequest
       2

Доступ к памяти в MIPS

2 голосов
/ 25 сентября 2011

Мы учимся на среднесрочном уровне по организации и дизайну компьютеров во вторник, и никто из нас не понимает следующий вопрос:

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) Снова рассмотрите приведенный выше код и предположим, что он работает. Если во время исполнения рабочий раздел приводит к тому, что из памяти читается 100 слов, сколько слов будет прочитано память при выполнении всей процедуры? (Учитывайте все обращения к памяти.

Вот ответ: 106. 100 операций чтения памяти для неизвестной работы, плюс 5 операций чтения памяти для чтения показанных инструкций, плюс 1 чтение памяти во время инструкции «lw».

Если бы кто-нибудь мог помочь нам понять, где именно происходит каждое из этих 6 чтений памяти, это было бы очень признательно!

1 Ответ

3 голосов
/ 25 сентября 2011

Давайте начнем с очевидных: 100 операций чтения выполняются в разделе «неизвестная работа», что оставляет 6 операций чтения. Одно чтение для инструкции lw (lw $ra, -4($sp)), которая читает слова из памяти. Последние 5 чтений неявно выполняются ЦП на этапе извлечения инструкций.

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)
...