Skip to content

Commit

Permalink
Merge pull request #77 from MPSU/decoder_append
Browse files Browse the repository at this point in the history
ЛР5. Дополнение кодирования SYSTEM инструкций
  • Loading branch information
HepoH3 authored Apr 2, 2024
2 parents eacb727 + 6d0af97 commit 370306f
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 0 deletions.
Binary file modified .pic/Labs/lab_05_decoder/rv32i_summary.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .pic/Labs/lab_05_decoder/rv32i_summary.xlsx
Binary file not shown.
2 changes: 2 additions & 0 deletions Labs/05. Main decoder/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ _Таблица 3. Инструкции набора RV32I с приведени

Обратите внимание на операции `slli`, `srli` и `srai` (операции сдвига на константную величину). У этих инструкций немного измененный формат кодирования **I\***. Формат кодирования **I** предоставляет 12-битную константу. Сдвиг 32-битного числа более, чем на 31 не имеет смысла. Для кодирования числа 31 требуется всего 5 бит. Выходит, что из 12 бит константы используется только 5 бит для операции сдвига, а оставшиеся 7 бит – не используются. А, главное (какое совпадение!), эти 7 бит находятся ровно в том же месте, где у других инструкций находится поле `func7`. Поэтому, чтобы у инструкций `slli`, `srli` и `srai` использующих формат **I** не пропадала эта часть поля, к ней относятся как к полю `func7`.

Также обратите внимание на инструкции `ecall`, `ebreak` и `mret`. Все эти инструкции I-типа имеют поле func3, равное нулю. С точки зрения декодирования инструкции I-типа, это одна и та же инструкция с разными полями. Однако конкретно в данном случае (SYSTEM_OPCODE и `func3 == 0`) эти инструкции должны рассматриваться как совокупность всех 32-бит сразу (см. _Таблицу 1_).

### Предлагаемая микроархитектура процессора RISC-V

На _рис. 1_ приводится микроархитектура ядра процессора RISC-V. Регистр `PC` (Program Counter – счетчик команд) подключен к адресному входу памяти инструкций. Считываемая инструкция декодируется основным дешифратором, после чего он выставляет управляющие сигналы для всех блоков процессора (мультиплексоры, АЛУ, интерфейс взаимодействия с памятью).
Expand Down

0 comments on commit 370306f

Please sign in to comment.