From afc529f37190766370d1145b11e47a9b743ada67 Mon Sep 17 00:00:00 2001 From: Andrei Solodovnikov Date: Thu, 7 Mar 2024 12:24:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=20rv32i?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - исправление битой ссылки на раздел - исправление тире - вставка пропущенного слова - добавление цветов в картинку кодирования констант --- .pic/Other/rv32i/ISBUJ.drawio.svg | 4 ++++ .pic/Other/rv32i/ISBUJ.png | Bin 86195 -> 0 bytes Other/rv32i.md | 24 ++++++++++++------------ 3 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 .pic/Other/rv32i/ISBUJ.drawio.svg delete mode 100644 .pic/Other/rv32i/ISBUJ.png diff --git a/.pic/Other/rv32i/ISBUJ.drawio.svg b/.pic/Other/rv32i/ISBUJ.drawio.svg new file mode 100644 index 00000000..c431dfed --- /dev/null +++ b/.pic/Other/rv32i/ISBUJ.drawio.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.pic/Other/rv32i/ISBUJ.png b/.pic/Other/rv32i/ISBUJ.png deleted file mode 100644 index e756381d2eec87beaf0720b5bef49eb8d6c6086e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86195 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 Большая часть данного документа в той или иной степени является переводом спецификации RISC-V[[1]](https://github.com/riscv/riscv-isa-manual), распространяемой по лицензии [CC-BY-4.0 ](https://creativecommons.org/licenses/by/4.0/). ## Краткая справка по RISC-V и RV32I -RISC-V — открытая и свободная система набора команд (ISA) на основе концепции RISC. Чтобы понять архитектуру любого компьютера, нужно в первую очередь выучить его язык, понять, что он умеет делать. Слова в языке компьютера называются «инструкциями», или «командами», а словарный запас компьютера – «системой команд»[2, стр. 355]. +RISC-V — открытая и свободная система набора команд (ISA) на основе концепции RISC. Чтобы понять архитектуру любого компьютера, нужно в первую очередь выучить его язык, понять, что он умеет делать. Слова в языке компьютера называются «инструкциями», или «командами», а словарный запас компьютера — «системой команд»[2, стр. 355]. -В архитектуре RISC-V имеется обязательный для реализации минимальный список команд – набор инструкций **I** (Integer). В этот набор входят различные логические и арифметические операции с целыми числами, работа с памятью, и команды управления. Этого достаточно для обеспечения поддержки компиляторов, ассемблеров, компоновщиков и операционных систем (с дополнительными привилегированными инструкциями). Плюс, таким образом обеспечивается удобный "скелет" ISA и программного инструментария, вокруг которого могут быть построены более специализированные ISA процессоров путем добавления дополнительных инструкций. +В архитектуре RISC-V имеется обязательный для реализации минимальный список команд — набор инструкций **I** (Integer). В этот набор входят различные логические и арифметические операции с целыми числами, работа с памятью, и команды управления. Этого достаточно для обеспечения поддержки компиляторов, ассемблеров, компоновщиков и операционных систем (с дополнительными привилегированными инструкциями). Плюс, таким образом обеспечивается удобный "скелет" ISA и программного инструментария, вокруг которого могут быть построены более специализированные ISA процессоров путем добавления дополнительных инструкций. -Строго говоря RISC-V — это семейство родственных ISA, из которых в настоящее время существует четыре базовые ISA. Каждый базовый целочисленный набор инструкций характеризуется `шириной целочисленных регистров` и соответствующим `размером адресного пространства`, а также `количеством целочисленных регистров`. Существует два основных базовых целочисленных варианта, `RV32I` и `RV64I`, которые, соответственно, обеспечивают 32- или 64-битное адресное пространство и соответствующие размеры регистров регистрового файла. На основе базового набора инструкций `RV32I` существует вариант подмножества `RV32E`, который был добавлен для поддержки небольших микроконтроллеров и имеет вдвое меньшее количество целочисленных регистров – 16, вместо 32. Разрабатывается вариант `RV128I` базового целочисленного набора инструкций, поддерживающий плоское 128-битное адресное пространство. Также, стоит подчеркнуть, что размеры регистров и адресного пространства, во всех перечисленных стандартных наборах инструкций, не влияют на размер инструкций – во всех случаях они кодируются 32-битными числами. То есть, и для `RV32I`, и для `RV64I` одна инструкция будет кодироваться 32 битами. Базовые целочисленные наборы команд используют представление знаковых целых чисел в дополнительном коде. +Строго говоря RISC-V — это семейство родственных ISA, из которых в настоящее время существует четыре базовые ISA. Каждый базовый целочисленный набор инструкций характеризуется `шириной целочисленных регистров` и соответствующим `размером адресного пространства`, а также `количеством целочисленных регистров`. Существует два основных базовых целочисленных варианта, `RV32I` и `RV64I`, которые, соответственно, обеспечивают 32- или 64-битное адресное пространство и соответствующие размеры регистров регистрового файла. На основе базового набора инструкций `RV32I` существует вариант подмножества `RV32E`, который был добавлен для поддержки небольших микроконтроллеров и имеет вдвое меньшее количество целочисленных регистров — 16, вместо 32. Разрабатывается вариант `RV128I` базового целочисленного набора инструкций, поддерживающий плоское 128-битное адресное пространство. Также, стоит подчеркнуть, что размеры регистров и адресного пространства, во всех перечисленных стандартных наборах инструкций, не влияют на размер инструкций — во всех случаях они кодируются 32-битными числами. То есть, и для `RV32I`, и для `RV64I` одна инструкция будет кодироваться 32 битами. Базовые целочисленные наборы команд используют представление знаковых целых чисел в дополнительном коде. В рамках дисциплины АПС затрагивается только `RV32I`, то есть стандартный набор целочисленных инструкций, предусматривающий в процессоре регистровый файл из 32-х 32-битных регистров, и использующий 32-битное адресное пространство памяти. @@ -35,9 +35,9 @@ RISC-V — открытая и свободная система набора к > Чтобы устройство управления понимало, когда оно имеет дело с набором сжатых команд **C**, то есть с 16-битными инструкциями, а когда с другими наборами команд, то есть с инструкциями длиной 32 бита, каждая 32-битная инструкция в младших битах имеет `11`. Если в двух младших битах что-то отличное от `11`, значит это 16-битная инструкция! -На рисунке ниже показана видимая пользователю структура для основного подмножества команд для целочисленных вычислений `RV32I`. Она содержит `регистровый файл`, состоящий из 31 регистра общего назначения **x1** – **x31**, каждый из которых может содержать целочисленное значение, и регистра **x0**, жестко привязанного к константе 0. В случае `RV32`, регистры **xN**, и вообще все регистры, имеют длину в 32 бита. Также есть `АЛУ`, выполняющее операции над данными в регистровом файле (концепция RISC - load&store), и `память` с побайтовой адресацией и шириной адреса 32 бита. +На рисунке ниже показана видимая пользователю структура для основного подмножества команд для целочисленных вычислений `RV32I`. Она содержит `регистровый файл`, состоящий из 31 регистра общего назначения **x1** — **x31**, каждый из которых может содержать целочисленное значение, и регистра **x0**, жестко привязанного к константе 0. В случае `RV32`, регистры **xN**, и вообще все регистры, имеют длину в 32 бита. Также есть `АЛУ`, выполняющее операции над данными в регистровом файле (концепция RISC - load&store), и `память` с побайтовой адресацией и шириной адреса 32 бита. -Также существует еще один дополнительный видимый пользователю регистр: счетчик команд – `pc` (program counter), который содержит адрес текущей инструкции. `pc` изменяется либо автоматически, указывая на следующую инструкцию, либо в результате использования инструкций управления (операции условного и безусловного переходов). +Также существует еще один дополнительный видимый пользователю регистр: счетчик команд — `pc` (program counter), который содержит адрес текущей инструкции. `pc` изменяется либо автоматически, указывая на следующую инструкцию, либо в результате использования инструкций управления (операции условного и безусловного переходов). ![../.pic/Labs/rv_model.png](../.pic/Labs/rv_model.png) @@ -45,23 +45,23 @@ RISC-V является load&store архитектурой (все операц - Операции на АЛУ над числами в регистровом файле - Операции обмена данными между регистровым файлом и памятью -- Манипуляции с `pc` (другими словами – управление программой) +- Манипуляции с `pc` (другими словами — управление программой) Как было сказано ранее, память имеет 32-битную шину адреса и имеет побайтовую адресацию. Это значит, что каждый из 232 байт памяти имеет свой уникальный адрес, по которому к нему можно обратиться, чтобы считать из него или записать в него новую информацию. Однако, инструкции кодируются 32-битными числами, а один байт это всего 8 бит, значит одна инструкция занимает сразу 4 адреса в памяти. Подразумевается, что из такой памяти можно читать одновременно из нескольких последовательных адресов, то есть устройство управления процессора сообщает памяти начальный адрес требуемой ячейки, и количество ячеек (одну, две или четыре), которые нужно прочитать или записать. -Одна ячейка называется `байт` - 8 бит. Две последовательные 8-битные ячейки называются `полуслово` - 16 бит. Четыре последовательные 8-битные ячейки называются `словом` - 32 бита. Например, если процессор собирается выполнить инструкцию, которая занимает четыре байта по адресам `0x00000007 – 0x00000004`, то он обращается к памяти, сообщая, что "нужны 4 байта начиная с адреса 0x00000004", взамен процессор получает 32-битное число – инструкцию, которая была слеплена из байт, хранящихся в памяти по адресам: 4, 5, 6 и 7, для данного примера. К памяти также можно обратиться за полусловом или за байтом. Предполагается реализация выровненного доступа к памяти, то есть адреса слов и полуслов должны быть кратны 4 и 2, соответственно. +Одна ячейка называется `байт` - 8 бит. Две последовательные 8-битные ячейки называются `полуслово` - 16 бит. Четыре последовательные 8-битные ячейки называются `словом` - 32 бита. Например, если процессор собирается выполнить инструкцию, которая занимает четыре байта по адресам `0x00000007 — 0x00000004`, то он обращается к памяти, сообщая, что "нужны 4 байта начиная с адреса 0x00000004", взамен процессор получает 32-битное число — инструкцию, которая была слеплена из байт, хранящихся в памяти по адресам: 4, 5, 6 и 7, для данного примера. К памяти также можно обратиться за полусловом или за байтом. Предполагается реализация выровненного доступа к памяти, то есть адреса слов и полуслов должны быть кратны 4 и 2, соответственно. Аппаратное обеспечение компьютера «понимает» только нули и единицы, поэтому инструкции закодированы двоичными числами в формате, который называется машинным языком. Инструкция компьютера кодирует в себе операцию, которую нужно исполнить, и данные, которые ей для этого потребуются. Такими данными могут быть адреса операндов и результата, различные константы. -В архитектуре RISC-V каждая несжатая инструкция представлена 32-разрядным словом. Микропроцессоры – это цифровые системы, которые читают и выполняют команды машинного языка. Для людей чтение и разработка компьютерных программ на машинном языке представляются нудным и утомительным делом, поэтому мы предпочитаем представлять инструкции в символическом формате, который называется языком ассемблера[2, стр. 356]. Ассемблер позволяет выполнить взаимооднозначный переход от машинного кода к тестовому и обратно. +В архитектуре RISC-V каждая несжатая инструкция представлена 32-разрядным словом. Микропроцессоры — это цифровые системы, которые читают и выполняют команды машинного языка. Для людей чтение и разработка компьютерных программ на машинном языке представляются нудным и утомительным делом, поэтому мы предпочитаем представлять инструкции в символическом формате, который называется языком ассемблера[2, стр. 356]. Ассемблер позволяет выполнить взаимно однозначный переход от машинного кода к тестовому и обратно. ## RV32I В таблице ниже приводятся 40 команд стандартного набора целочисленных инструкций `RV32I`: мнемоники языка ассемблера, функции, описания, форматы кодирования и значения соответствующих полей при кодировании. В RISC-V предусмотрено несколько форматов кодирования инструкций (следующий рисунок, еще ниже), то есть договоренность какая информация в каком месте 32-битной инструкции хранится и как она представлена. У всех операций есть поле `opcode` (operation code - код операции), в котором закодировано "что нужно сделать". По полю `opcode` устройство управления понимает, что требуется сделать процессору и каким именно способом закодирована инструкция (**R**, **I**, **S**, **B**, **U** или **J**). В 32-битных инструкциях два младших бита всегда равны `11`. -Почти все инструкции имеют поле `Func3`, и некоторые – поле `Func7`. Их названия определены их разрядностью: 3 и 7 бит, соответственно. В этих полях, если они есть у инструкции, закодировано уточнение операции. Например, код операции 0010011 указывает на то, что будет выполняться некоторая операция на АЛУ между значением из регистрового файла и константой. Поле `Func3` уточняет операцию, для данного примера, если оно будет равно 0x0, то АЛУ выполнит операцию сложения между значением из регистра и константой из инструкции. Если `Func3` равно 0x6, то будет выполнена операция "логическое ИЛИ". +Почти все инструкции имеют поле `Func3`, и некоторые — поле `Func7`. Их названия определены их разрядностью: 3 и 7 бит, соответственно. В этих полях, если они есть у инструкции, закодировано уточнение операции. Например, код операции 0010011 указывает на то, что будет выполняться некоторая операция на АЛУ между значением из регистрового файла и константой. Поле `Func3` уточняет операцию, для данного примера, если оно будет равно 0x0, то АЛУ выполнит операцию сложения между значением из регистра и константой из инструкции. Если `Func3` равно 0x6, то будет выполнена операция "логическое ИЛИ". ![../.pic/Labs/lab_05_decoder/rv32i_summary.png](../.pic/Labs/lab_05_decoder/rv32i_summary.png) @@ -95,7 +95,7 @@ RISC-V является load&store архитектурой (все операц ### Способы кодирования непосредственных операндов -Существует еще формата кодирования констант в инструкции (**B**/**J**-типа), представленные на рисунке ниже. +Существует еще два формата кодирования констант в инструкции (**B**/**J**-типа), представленные на рисунке ниже. Единственное различие между форматами **S** и **B** заключается в том, что в формате **B**, 12-битная константа используется для кодирования кратных двум смещений адреса при ветвлении (примечание: кратность двум обеспечивается сдвигом числа на 1 влево). Вместо того, чтобы сдвигать непосредственный операнд относительно всех бит инструкции на 1 влево, средние биты (`imm[10:1]`) и знаковый бит остаются в прежних местах, а оставшийся младший бит константы формата **S** (`inst[7]`) кодирует `imm[11]` бит константы в формате **B**. @@ -105,7 +105,7 @@ RISC-V является load&store архитектурой (все операц На рисунке ниже показаны непосредственные значения (константы), создаваемые каждым из основных форматов команд, также они помечены, чтобы показать, какой бит команды (`inst[y]`) какому биту непосредственного значения соответствует. -![../.pic/Other/rv32i/ISBUJ.png](../.pic/Other/rv32i/ISBUJ.png) +![../.pic/Other/rv32i/ISBUJ.drawio.svg](../.pic/Other/rv32i/ISBUJ.drawio.svg) > Знаковое расширение — одна из самых важных операций над непосредственными значениями (особенно в `RV64I`). Поэтому в RISC-V знаковый бит всех непосредственных значений всегда содержится в 31-м бите инструкции. Это позволяет выполнять знаковое расширение параллельно с декодированием команды. >