Skip to content

Commit 1c85c1e

Browse files
committed
ЛР5. Добавление причин неподдерживаемых инструкций
1 parent f6ffc3a commit 1c85c1e

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

Labs/05. Main decoder/README.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,13 @@ _Таблица 2. Значения сигнала `mem_size_o` при пере
155155

156156
## Обработка нелегальной инструкции
157157

158+
Существует множество причин, почему процессору может прийти на исполнение неподдерживаемая инструкция, в том числе:
159+
160+
- ошибка компиляции: либо баг в самом компиляторе, либо компиляция с неверными параметрами;
161+
- ошибка в аппаратуре (например сбой в работе памяти);
162+
- намеренная вставка неподдерживаемой инструкции (например для эксплуатации какой-нибудь уязвимости);
163+
- инструкция, которая на самом деле поддерживается процессором, но требует большего уровня привилегий и потому не может быть выполнена.
164+
158165
В случае появления инструкции, которая не поддерживается процессором, устройство управления должно обеспечить стабильность системы. В самом простом случае, такую инструкцию необходимо пропустить, сохранив так называемое **архитектурное состояние** процессора — т.е. сохранив значение всех элементов системы, характеризующих состояние системы в текущий момент. К таким элементам относятся: содержимое регистрового файла, основой памяти, содержимое регистров контроля и статуса и т.п. Значение программного счетчика также входит в архитектурное состояние процессора, однако в контексте пропуска инструкции с сохранением архитектурного состояния, его значение нужно изменить, иначе система оказалась бы в бесконечном цикле (неизменный счетчик бы указывал на ту же самую инструкцию, которая не должна менять архитектурного состояния).
159166

160167
Иными словами, в случае появления нелегальной инструкции, устройство управления (роль которого в нашей системе по большей части играет декодер) должно проследить за тем, чтобы в системе не изменилось ничего кроме программного счетчика. К сигналам, влияющим на изменение архитектурного состояния относятся:
@@ -166,9 +173,11 @@ _Таблица 2. Значения сигнала `mem_size_o` при пере
166173
- branch_o,
167174
- jal_o,
168175
- jalr_o,
169-
- mret_o.
176+
- mret_o,
177+
178+
то есть, должны быть запрещены все запросы на запись, обращения в память и любые "прыжки" программного счетчика.
179+
170180

171-
Иными словами, должны быть запрещены все запросы на запись, обращения в память и любые "прыжки" программного счетчика.
172181

173182
Давайте теперь разберемся с тем, какие именно инструкции должен будет поддерживать наш процессор.
174183

0 commit comments

Comments
 (0)