Переработка лабораторных работ, связанных с памятью (#89)

* Переработка лабораторных работ, связанных с памятью

Существенно переработаны ЛР3 и ЛР7:

Из ЛР3 убрано задание реализовать память данных. Эта память
использовалась только студентами ИВТ и только в рамках одной лабы.
В итоге использовалась готовая память, и ничего не мешает использовать
ее с самого начала.

Задание по реализации памяти инструкций также претерпело изменения.
Теперь код памяти инструкций предоставляется сразу. Это объясняется тем,
что код модуля состоит в общем-то из 4х строк, на которые тратится
слишком много времени (с учетом добавления тестбенча и проверок).
Кроме того, использование готового кода позволяет дать модуль чуть
посложнее (с параметризацией размера).

По итогу правок, третья лабораторная работа превращается чисто в
лабораторную по написанию регистрового файла, что должно положительно
сказаться на кривой сложности лаб. После второй лабы происходит слишком
резкий скачок в объемах работы.

Соответственно, в связи с тем, что память данных больше не делается на
третьей лабе, дополнительная ЛР по памяти данных с byte enable
необходимо перенести до реализации тракта данных.

* ЛР3, 5, 6. Правки из ревью

* ЛР7. Добавление иллюстраций
This commit is contained in:
Andrei Solodovnikov
2024-07-02 10:24:41 +03:00
committed by GitHub
parent 06dc07c03f
commit 85883858ac
36 changed files with 278 additions and 368 deletions

View File

@@ -15,8 +15,8 @@
- [3. Регистровый файл и внешняя память (RF)](#3-регистровый-файл-и-внешняя-память-rf)
- [4. Простейшее программируемое устройство (PPD)](#4-простейшее-программируемое-устройство-ppd)
- [5. Основной дешифратор команд (MD)](#5-основной-дешифратор-команд-md)
- [6. Тракт данных (DP)](#6-тракт-данных-dp)
- [7. Внешняя память](#7-внешняя-память)
- [6. Основная память](#6-основная-память)
- [7. Тракт данных (DP)](#7-тракт-данных-dp)
- [8. Блог загрузки и сохранения данных (LSU)](#8-блог-загрузки-и-сохранения-данных-lsu)
- [9 Интеграция LSU](#9-интеграция-lsu)
- [10. Подсистема прерывания (IC)](#10-подсистема-прерывания-ic)
@@ -53,7 +53,7 @@
4. Простейшее программируемое устройство ([04. Primitive programmable device](04.%20Primitive%20programmable%20device))
5. Основной дешифратор ([05. Main decoder](05.%20Main%20decoder))
6.
1. Тракт данных ([06. Datapath](06.%20Datapath))
1. Тракт данных ([07. Datapath](07.%20Datapath))
2. Интеграция блока загрузки и сохранения ([09. LSU Integration](09.%20LSU%20Integration))
3. Интеграция подсистемы прерываний ([11. Interrupt Integration](11.%20Interrupt%20integration))
7. Периферийные устройства ([13. Peripheral units](13.%20Peripheral%20units))
@@ -66,7 +66,7 @@
1. Память ([03. Register file and memory](03.%20Register%20file%20and%20memory)),
2. Простейшее программируемое устройство ([04. Primitive programmable device](04.%20Primitive%20programmable%20device))
3. Основной дешифратор ([05. Main decoder](05.%20Main%20decoder))
4. Тракт данных ([06. Datapath](06.%20Datapath))
4. Тракт данных ([07. Datapath](07.%20Datapath))
5.
1. Модуль загрузки и сохранения ([08. Load-store unit](08.%20Load-store%20unit))
2. Интеграция блока загрузки и сохранения ([09. LSU Integration](09.%20LSU%20Integration))
@@ -131,17 +131,17 @@ https://github.com/MPSU/APS/assets/17159587/4daac01f-dc9a-4ec8-8d3f-c5dc1ef97119
![../.pic/Labs/lab_05_md.drawio.svg](../.pic/Labs/lab_05_md.drawio.svg)
Пятая лабораторная посвящена разработке устройства управления основному дешифратору команд. Функция основного дешифратора — получать на вход коды выполняемых операций и преобразовывать их в управляющие сигналы для всех блоков процессора (АЛУ, память, регистровый файл, мультиплексоры). Работа требует внимательности в реализации, а ее результат проверяется заранее подготовленными автоматическими тестами.
## 6. Тракт данных (DP)
![../.pic/Labs/lab_06_datapath.drawio.svg](../.pic/Labs/lab_06_datapath.drawio.svg)
Разработанные блоки объединяются, образуя тракт данных, управляемый основным дешифратором команд. Результатом шестой лабораторной работы является однотактный процессор, с архитектурой RISC-V, поддерживающий стандартный набор целочисленных инструкций RV32I. В качестве проверки на процессоре запускаются программы, заранее написанные на языке ассемблера RISC-V. Сравнивается результат полученный на симуляторе и на разработанном процессоре.
## 7. Внешняя память
## 6. Основная память
Недостатком реализации процессора из предыдущей лабораторной работы была его неспособность выполнять операции `LB`, `LBU`, `SB`, `LH`, `LHU`, `SH`. Отчасти это связано с ограничением реализованной ранее памяти (в этой памяти не было возможности обновить отдельный байт в ячейке памяти).
Данная вспомогательная лабораторная работа позволяет реализовать память без этого ограничения.
## 7. Тракт данных (DP)
![../.pic/Labs/lab_07_datapath.drawio.svg](../.pic/Labs/lab_07_datapath.drawio.svg)
Разработанные блоки объединяются, образуя тракт данных, управляемый основным дешифратором команд. Результатом шестой лабораторной работы является однотактный процессор, с архитектурой RISC-V, поддерживающий стандартный набор целочисленных инструкций RV32I. В качестве проверки на процессоре запускаются программы, заранее написанные на языке ассемблера RISC-V. Сравнивается результат полученный на симуляторе и на разработанном процессоре.
## 8. Блог загрузки и сохранения данных (LSU)
![../.pic/Labs/lab_08_lsu.drawio.svg](../.pic/Labs/lab_08_lsu.drawio.svg)