mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 01:30:10 +00:00
Перенос drawio-изображений в svg-формат
This commit is contained in:
@@ -96,7 +96,7 @@ _Таблица 1. Регистры контроля и состояния ма
|
||||
|1110011 | 110 | I | csrrsi rd, csr, rs1 | Чтение и Установка бит CSR| rd = csr, csr = csr \| imm |
|
||||
|1110011 | 111 | I | csrrci rd, csr, rs1 | Чтение и Очистка бит CSR | rd = csr, csr = csr & ~imm |
|
||||
|
||||
_Таблица 2. Список инструкций для работы с регистрами контроля и статуса_
|
||||
_Таблица 2. Список инструкций для работы с регистрами контроля и статуса._
|
||||
|
||||
Для удобства программирования на языке ассемблера RISC-V существуют псевдоинструкции для работы с CS-регистрами.
|
||||
|
||||
@@ -105,7 +105,7 @@ _Таблица 2. Список инструкций для работы с ре
|
||||
| csrr rd, csr | csrrs rd, csr, x0 | Чтение CSR | rd = csr |
|
||||
| csrw csr, rs1 | csrrw x0, csr, rs1 | Запись CSR | csr = rs1 |
|
||||
|
||||
_Таблица 3. Псевдоинструкции для работы с регистрами контроля и статуса_
|
||||
_Таблица 3. Псевдоинструкции для работы с регистрами контроля и статуса._
|
||||
|
||||
Операция логического ИЛИ нулевого регистра с содержимым CS-регистра не меняет его содержимого, поэтому при использовании инструкции `csrr` происходит только операция чтения. Подобным образом реализована псевдоинструкция `csrw`.
|
||||
|
||||
@@ -120,7 +120,7 @@ _Таблица 3. Псевдоинструкции для работы с ре
|
||||
|0x341 | MRW | mepc | Регистр, хранящий адрес перехваченной инструкции. |
|
||||
|0x342 | MRW | mcause | Причина перехвата |
|
||||
|
||||
_Таблица 4. Список регистров, подлежащих реализации в рамках лабораторной работы_
|
||||
_Таблица 4. Список регистров, подлежащих реализации в рамках лабораторной работы._
|
||||
|
||||
По адресу `0x304` должен располагаться регистр, позволяющий маскировать прерывания. Например, если на 5-ом входе системы прерывания генерируется прерывание, то процессор отреагирует на него только в том случае, если 5-ый бит регистра `mie` будет равен 1.
|
||||
|
||||
@@ -143,7 +143,7 @@ _Таблица 4. Список регистров, подлежащих реа
|
||||
|
||||

|
||||
|
||||
_Таблица 5. Кодирование причины перехвата в регистре `mcause`_
|
||||
_Таблица 5. Кодирование причины перехвата в регистре `mcause`._
|
||||
|
||||
Нас интересуют части, выделенные красным. В первую очередь то, как кодируется старший бит регистра `mcause`. Он зависит от типа причины перехвата (`1` в случае прерывания, `0` в случае исключения). Оставшиеся 31 бит регистра отводятся под коды различных причин. Поскольку мы создаем учебный процессор, который не будет использован в реальной жизни, он не будет поддерживать большую часть прерываний/исключений (таких как невыровненный доступ к памяти, таймеры и т.п.). В рамках данного курса мы должны поддерживать исключение по нелегальной инструкции (код 0x02) и должны уметь поддерживать прерывания периферийных устройств (под которые зарезервированы коды начиная с 16-го). В рамках данной лабораторной работы процессор будет поддерживать только один источник прерывания, поэтому для кодирования причины прерывания нам потребуется только первый код из диапазона _"Designated for platform use"_.
|
||||
|
||||
@@ -187,7 +187,7 @@ _Таблица 5. Кодирование причины перехвата в
|
||||
|
||||
Контроллер прерываний позволит обрабатывать входящие запросы на прерывания: маски́ровать их, выбирать один запрос из нескольких, а также игнорировать запросы во время обработки текущего прерывания.
|
||||
|
||||

|
||||

|
||||
|
||||
_Рисунок 3. Место разрабатываемых блоков в структуре процессора._
|
||||
|
||||
@@ -197,9 +197,9 @@ _Рисунок 3. Место разрабатываемых блоков в с
|
||||
|
||||
Рассмотрим один из возможных вариантов организации блока **Control and Status Registers**. Основная работа по описанию схемы блока состоит в описании мультиплексора и демультиплексора. Мультиплексор подает на выход **read_data_o** значение регистра, который соответствует пришедшему адресу. В свою же очередь, демультиплексор маршрутизирует сигнал разрешения на запись **write_enable_i** (en) на тот же регистр.
|
||||
|
||||

|
||||

|
||||
|
||||
_Рисунок 4. Структурная схема контроллера CS-регистров_
|
||||
_Рисунок 4. Структурная схема контроллера CS-регистров._
|
||||
|
||||
3-битный вход **opcode_i** определяет операцию, которая будет производиться над содержимым CSR по адресу **addr_i**.
|
||||
|
||||
@@ -211,9 +211,9 @@ _Рисунок 4. Структурная схема контроллера CS-
|
||||
|
||||
Рассмотрим один из возможных способов реализации простейшего контроллера прерываний, представленного на _рис. 5_.
|
||||
|
||||

|
||||

|
||||
|
||||
_Рисунок 5. Структурная схема контроллера прерываний_
|
||||
_Рисунок 5. Структурная схема контроллера прерываний._
|
||||
|
||||
Контроллер состоит из логики:
|
||||
|
||||
|
Reference in New Issue
Block a user