Почему в конвейере нет MEM.flu sh для исключений? - PullRequest
0 голосов
/ 28 апреля 2020

Вот изображение RIS C -V трубопровода с гриппом sh для исключений

У меня вопрос по конвейеру flu sh для исключений. В RIS C -V в конвейере имеются исключения IF.flu sh, ID.flu sh и EX.flu sh. Но мне интересно, почему в конвейере нет MEM.flu sh для исключений. Я думаю, что если мы обнаружим исключение на этапе MEM (например, недопустимый доступ к памяти данных), нам нужно выполнить этап sh MEM, чтобы значение MEM.RegWrite было равно 0.

Спасибо.

1 Ответ

0 голосов
/ 28 апреля 2020

Диаграммы такого рода обязательно являются неполными, поэтому я бы не отнесся к этому слишком серьезно.

В тексте ничего не упоминается о виртуальной памяти, трансляции адресов, сбоях загрузки / сохранения или даже переводах и сбоях адресов памяти команд и т. Д. c ..

Другие вещи, которые обычно отсутствуют на этих диаграммах включает в себя:

  • захват команд типа pc для jal - нет пути к данным, который перенаправляет pc в регистры.
  • изменение pc из регистра, для регистра перехода для jr -типа - для регистра нет пути к go инструкциям pc.
  • там также нет ничего такого в диаграммах такого рода для пропусков кэша (I $ или D $)
  • Я уже упоминал о пропущенном преобразовании адресов для памяти данных и команд
  • инструкция AUIP C также пропущены некоторые пути к данным

Итак, диаграмма, конечно, неполная.

Очень вероятно, что некоторая обработка исключений для обращений к памяти данных (также для обращений к памяти команд) - это просто не упоминается на этой диаграмме, так как эта диаграмма игнорирует преобразование адресов в целом.

...