mirror of
https://github.com/MPSU/APS.git
synced 2025-11-20 23:00:40 +00:00
Compare commits
2 Commits
ef64adf60b
...
a51d46faae
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a51d46faae | ||
|
|
11720db8e8 |
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
## Цель
|
## Цель
|
||||||
|
|
||||||
Реализовать простейшее программируемое устройство с архитектурой `CYBERcobra 3000 Pro 2.1`
|
Реализовать простейшее программируемое устройство.
|
||||||
|
|
||||||
## Ход работы
|
## Ход работы
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
4. изменяется значение `PC`;
|
4. изменяется значение `PC`;
|
||||||
5. цикл повторяется с `п.1`.
|
5. цикл повторяется с `п.1`.
|
||||||
|
|
||||||
Любая инструкция приводит к изменению состояния памяти. В случае процессора с архитектурой `CYBERcobra 3000 Pro 2.1` есть два класса инструкций: одни изменяют содержимое регистрового файла — это инструкции записи. Другие изменяют значение `PC` — это инструкции перехода. В первом случае используются вычислительные инструкции и инструкции загрузки данных из других источников. Во втором случае используются инструкции перехода.
|
Любая инструкция приводит к изменению состояния памяти. В случае процессора, рассматриваемого в данной лабораторной работе, есть два класса инструкций: одни изменяют содержимое регистрового файла — это инструкции записи. Другие изменяют значение `PC` — это инструкции перехода. В первом случае используются вычислительные инструкции и инструкции загрузки данных из других источников. Во втором случае используются инструкции перехода.
|
||||||
|
|
||||||
Если процессор обрабатывает вычислительную инструкцию, то `PC` перейдет к следующей по порядку инструкции. В ЛР№3 мы реализовали память инструкций с [побайтовой адресацией](../03.%20Register%20file%20and%20memory/#1-Память-инструкций). Это означает, что каждый байт памяти имеет свой собственный адрес. Поскольку длина инструкции составляет `4 байта`, для перехода к следующей инструкции `PC` должен быть увеличен на `4` (`PC = PC + 4`). При этом, регистровый файл сохранит результат некоторой операции на АЛУ или данные с порта входных данных.
|
Если процессор обрабатывает вычислительную инструкцию, то `PC` перейдет к следующей по порядку инструкции. В ЛР№3 мы реализовали память инструкций с [побайтовой адресацией](../03.%20Register%20file%20and%20memory/#1-Память-инструкций). Это означает, что каждый байт памяти имеет свой собственный адрес. Поскольку длина инструкции составляет `4 байта`, для перехода к следующей инструкции `PC` должен быть увеличен на `4` (`PC = PC + 4`). При этом, регистровый файл сохранит результат некоторой операции на АЛУ или данные с порта входных данных.
|
||||||
|
|
||||||
@@ -48,9 +48,9 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
В качестве первого разрабатываемого программируемого устройства предлагается использовать архитектуру специального назначения `CYBERcobra 3000 Pro 2.1`, которая была разработана в **МИЭТ**. Главным достоинством данной архитектуры является простота её понимания и реализации. Главным её минусом является неоптимальность ввиду неэффективной реализации кодирования инструкций, что приводит к наличию неиспользуемых битов в программах. Но это неважно, так как основная цель разработки процессора с архитектурой `CYBERcobra 3000 Pro 2.1` — это более глубокое понимание принципов работы программируемых устройств, которое поможет при разработке более сложного процессора с архитектурой **RISC-V**.
|
В качестве первого разрабатываемого программируемого устройства предлагается использовать архитектуру специального назначения `CYBERcobra 3000 Pro 2.1` (далее "CYBERcobra"), которая была разработана в **МИЭТ**. Главным достоинством данной архитектуры является простота её понимания и реализации. Главным её минусом является неоптимальность ввиду неэффективной реализации кодирования инструкций, что приводит к наличию неиспользуемых битов в программах. Но это неважно, так как основная цель разработки процессора с архитектурой `CYBERcobra` — это более глубокое понимание принципов работы программируемых устройств, которое поможет при разработке более сложного процессора с архитектурой **RISC-V**.
|
||||||
|
|
||||||
Простота архитектуры `CYBERcobra 3000 Pro 2.1` проявляется, в том числе, за счёт отсутствия памяти данных. Это значит, что данные c которыми работает программа могут храниться только в регистровом файле. Также в таком процессоре почти полностью отсутствует устройство управления (формально оно существует, но состоит только из проводов и пары логических вентилей).
|
Простота архитектуры `CYBERcobra` проявляется, в том числе, за счёт отсутствия памяти данных. Это значит, что данные c которыми работает программа могут храниться только в регистровом файле. Также в таком процессоре почти полностью отсутствует устройство управления (формально оно существует, но состоит только из проводов и пары логических вентилей).
|
||||||
|
|
||||||
Архитектурой предусмотрена поддержка 19 инструкций (5 типов команд):
|
Архитектурой предусмотрена поддержка 19 инструкций (5 типов команд):
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ _Рисунок 0. Размещение на схеме основных бло
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Таблица 1. Кодирование вычислительных инструкций в архитектуре CYBERcobra 3000 Pro v2.1._
|
_Таблица 1. Кодирование вычислительных инструкций в архитектуре CYBERcobra._
|
||||||
|
|
||||||
``` C
|
``` C
|
||||||
reg_file[WA] ← reg_file[RA1] {alu_op} reg_file[RA2]
|
reg_file[WA] ← reg_file[RA1] {alu_op} reg_file[RA2]
|
||||||
@@ -258,7 +258,7 @@ _Таблица 5. Кодирование безусловного перехо
|
|||||||
|
|
||||||
Кроме того, при безусловном переходе в регистровый файл также ничего не пишется. А значит, необходимо обновить логику работы сигнала разрешения записи `WE`, который будет равен 0 если сейчас инструкция условного или безусловного перехода.
|
Кроме того, при безусловном переходе в регистровый файл также ничего не пишется. А значит, необходимо обновить логику работы сигнала разрешения записи `WE`, который будет равен 0 если сейчас инструкция условного или безусловного перехода.
|
||||||
|
|
||||||
На _рис. 5_ приводится итоговый вариант микроархитектуры процессора `CYBERcobra 3000 Pro 2.1`.
|
На _рис. 5_ приводится итоговый вариант микроархитектуры процессора `CYBERcobra`.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -266,7 +266,7 @@ _Рисунок 5. Реализация безусловного переход
|
|||||||
|
|
||||||
### Финальный обзор
|
### Финальный обзор
|
||||||
|
|
||||||
Итого, архитектура `CYBERcobra 3000 Pro 2.1` поддерживает 5 типов инструкций, которые кодируются следующим образом (символами `x` помечены биты, которые не задействованы в данной инструкции):
|
Итого, архитектура `CYBERcobra` поддерживает 5 типов инструкций, которые кодируются следующим образом (символами `x` помечены биты, которые не задействованы в данной инструкции):
|
||||||
|
|
||||||
1. 10 вычислительных инструкций `0 0 01 alu_op RA1 RA2 xxxx xxxx WA`
|
1. 10 вычислительных инструкций `0 0 01 alu_op RA1 RA2 xxxx xxxx WA`
|
||||||
2. Инструкция загрузки константы `0 0 00 const WA`
|
2. Инструкция загрузки константы `0 0 00 const WA`
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
_Рисунок 1. Микроархитектура будущего процессорного ядра._
|
_Рисунок 1. Микроархитектура будущего процессорного ядра._
|
||||||
|
|
||||||
Предложенная микроархитектура похожа на микроархитектуру процессора **CYBERcobra 3000 Pro 2.0** из ЛР№4, но с некоторыми изменениями.
|
Предложенная микроархитектура похожа на микроархитектуру процессора `CYBERcobra` из ЛР№4, но с некоторыми изменениями.
|
||||||
|
|
||||||
В первую очередь изменились входы и выходы процессора:
|
В первую очередь изменились входы и выходы процессора:
|
||||||
|
|
||||||
@@ -298,7 +298,7 @@ _Таблица 6. Расширенное описание инструкций
|
|||||||
|
|
||||||
Поскольку операция `sw` не является операцией перехода, сигналы `jal_o`, `jalr_o` и `branch_o` и `mret_o` должны быть равны нулю (иначе процессор совершит переход, а инструкция `sw` этого не подразумевает). Точно так же, поскольку во время записи во внешнюю память, в регистровый файл и регистры контроля и статуса ничего не должно быть записано, сигналы `gpr_we_o` и `csr_we_o` также должны быть равны нулю.
|
Поскольку операция `sw` не является операцией перехода, сигналы `jal_o`, `jalr_o` и `branch_o` и `mret_o` должны быть равны нулю (иначе процессор совершит переход, а инструкция `sw` этого не подразумевает). Точно так же, поскольку во время записи во внешнюю память, в регистровый файл и регистры контроля и статуса ничего не должно быть записано, сигналы `gpr_we_o` и `csr_we_o` также должны быть равны нулю.
|
||||||
|
|
||||||
Иными словами, крайне важно следить выходными сигналами, влияющими на изменение архитектурного состояния процессора, не затрагиваемые инструкцией в явном виде.
|
Иными словами, крайне важно следить за выходными сигналами, влияющими на изменение архитектурного состояния процессора, не затрагиваемые инструкцией в явном виде.
|
||||||
|
|
||||||
А вот сигнал `wb_sel` может принять любое значение (поскольку сигнал разрешения записи в регистровый файл равен нулю, не важно, каким будет источник данных для записи в регистровый файл, т.к. в него все равно ничего не будет записано).
|
А вот сигнал `wb_sel` может принять любое значение (поскольку сигнал разрешения записи в регистровый файл равен нулю, не важно, каким будет источник данных для записи в регистровый файл, т.к. в него все равно ничего не будет записано).
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Лабораторная работа 6 "Основная память"
|
# Лабораторная работа 6 "Основная память"
|
||||||
|
|
||||||
Процессор CYBERcobra 2000 использовал в качестве основного хранилища данных регистровый файл, однако на практике 31-го регистра недостаточно для выполнения сложных программ. Для этих целей используется **основная память**, роль которой в нашей системе будет выполнять **память данных**.
|
Процессор `CYBERcobra` использовал в качестве основного хранилища данных регистровый файл, однако на практике 31-го регистра недостаточно для выполнения сложных программ. Для этих целей используется **основная память**, роль которой в нашей системе будет выполнять **память данных**.
|
||||||
|
|
||||||
## Цель
|
## Цель
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ endmodule
|
|||||||
|
|
||||||
_Рисунок 1. Микроархитектура ядра процессора RISC-V._
|
_Рисунок 1. Микроархитектура ядра процессора RISC-V._
|
||||||
|
|
||||||
Предложенная микроархитектура имеет схожую структуру c процессором `CYBERcobra 3000 Pro 2.0` из [ЛР№4](../04.%20Primitive%20programmable%20device/), с некоторыми изменениями.
|
Предложенная микроархитектура имеет схожую структуру c процессором `CYBERcobra` из [ЛР№4](../04.%20Primitive%20programmable%20device/), с некоторыми изменениями.
|
||||||
|
|
||||||
В первую очередь изменились входы и выходы процессора:
|
В первую очередь изменились входы и выходы процессора:
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ _Листинг 2. Программа из Листинга 1, представ
|
|||||||
1. Внимательно ознакомьтесь микроархитектурной реализацией процессорного ядра. В случае возникновения вопросов, проконсультируйтесь с преподавателем.
|
1. Внимательно ознакомьтесь микроархитектурной реализацией процессорного ядра. В случае возникновения вопросов, проконсультируйтесь с преподавателем.
|
||||||
2. Замените файл `program.mem` в `Design Sources` проекта новым файлом [program.mem](program.mem), приложенном в данной лабораторной работе. Данный файл содержит программу из _листинга 1_.
|
2. Замените файл `program.mem` в `Design Sources` проекта новым файлом [program.mem](program.mem), приложенном в данной лабораторной работе. Данный файл содержит программу из _листинга 1_.
|
||||||
3. Опишите модуль процессорного ядра с таким же именем и портами, как указано в задании.
|
3. Опишите модуль процессорного ядра с таким же именем и портами, как указано в задании.
|
||||||
1. Процесс реализации модуля похож на процесс описания модуля cybercobra, однако теперь появляется:
|
1. Процесс реализации модуля похож на процесс описания модуля CYBERcobra, однако теперь появляется:
|
||||||
1. декодер
|
1. декодер
|
||||||
2. дополнительные мультиплексоры и знакорасширители.
|
2. дополнительные мультиплексоры и знакорасширители.
|
||||||
2. Сперва рекомендуется создать все провода, которые будут подключены к входам и выходам каждого модуля на схеме.
|
2. Сперва рекомендуется создать все провода, которые будут подключены к входам и выходам каждого модуля на схеме.
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ https://github.com/MPSU/APS/assets/17159587/4daac01f-dc9a-4ec8-8d3f-c5dc1ef97119
|
|||||||
|
|
||||||
## 6. Основная память
|
## 6. Основная память
|
||||||
|
|
||||||
Процессор CYBERcobra 2000 использовал в качестве основного хранилища данных регистровый файл, однако на практике 31-го регистра недостаточно для выполнения сложных программ. Для этих целей используется **основная память**.
|
Процессор `CYBERcobra` использовал в качестве основного хранилища данных регистровый файл, однако на практике 31-го регистра недостаточно для выполнения сложных программ. Для этих целей используется **основная память**.
|
||||||
|
|
||||||
## 7. Тракт данных
|
## 7. Тракт данных
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user