# Лекция 8. Однотактный процессор RISC-V

Микроархитектура — это физическая модель процессора, описывающее из каких конкретно функциональных модулей состоит процессор и как они все в нем взаимодействуют. Существуют три способа построения микроархитектуры:

- **Однотактная** — выполняет всю команду за один такт. Ее принцип работы легко объяснить, а устройство управления довольно простое. Из-за того, что все действия выполняются за один такт, эта микроархитектура не требует никакого неархитектурного состояния (то есть никаких дополнительных регистров, требуемых для работы процессора, но недоступных для использования программистом). Однако, длительность такта ограничена самой медленной командой, использующей самый длинный критический путь
- **Многотактная** — выполняет команду за несколько более коротких тактов. Простым командам нужно меньше тактов, чем сложным. Вдобавок, многотактная микроархитектура уменьшает количество необходимой аппаратуры путем повторного использования таких «дорогих» блоков, как сумматоры и блоки памяти
- **Конвейерная** — результат применения принципа конвейерной обработки к однотактной микроархитектуре.

Архитектура процессора — это функциональная модель его возможностей.

К особенностям архитектуры RISC-V относится регистровый файл на 32 32-битных регистра общего назначения, при том регистр по адресу 0 имеет константное значение 0. RISC-V имеет load/store архитектуру, это значит, что для выполнения действий над данными их необходимо предварительно разместить в регистровом файле. Основная память имеет побайтовую адресацию с выровненным доступом, и из нее могут быть считаны слова, полуслова или байты.

Архитектура процессора определяет не только какими функциональными возможностями обладает процессор, но и каким именно образом кодируются инструкции в этой архитектуре.

В базовом наборе целочисленных инструкций RISC-V предусмотрено 6 форматов кодирования инструкций. Каким именно из этих форматов закодирована инструкция определяется полем opcode (код операции). Вспомогательными полями, определяющими команду являются funct3 и funct7. Поля rs1 и rs2 кодируют адреса операндов в регистровом файле. Поле rd кодирует адрес результата, сохраняемого в регистровый файл. Поле imm хранит в себе константу, непосредственный операнд. Соответствие opcode'ов операциям можно посмотреть в документации на RISC-V.

![../.pic/Lectures/08.%20Singlecycle%20processor/fig_01.png](../.pic/Lectures/08.%20Singlecycle%20processor/fig_01.png)

Ввиду своей простоты, в первую очередь был разработан процессор с однотактной микроархитектурой с архитектурой RISC-V. Тракт данных процессора состоит из счетчика команд (регистр PC — program counter), памяти инструкций (Instruction Memory), регистрового файла (Register File), арифметико-логического устройства (ALU), памяти данных (Data Memory) и основного дешифратора (Main Decoder). На входе PC располагается схема вычисления адреса следующей инструкции. Выход PC подключен к адресному входу памяти инструкций, тем самым выбирая инструкцию для исполнения. Часть битов считанной инструкции отправляются в основной дешифратор, который в зависимости от поля opcode, funst3 и funct7 формирует управляющие сигналы для всех блоков процессора.

![../.pic/Lectures/08.%20Singlecycle%20processor/fig_02.png](../.pic/Lectures/08.%20Singlecycle%20processor/fig_02.png)

Например, если очередная считанная инструкция является инструкцией сохранения слова из регистрового файла в основную память sw, то основной дешифратор (Main Decoder) "поймет" это по полю opcode и func3, которые поступает к нему на вход прямо из инструкции. В зависимости от поступивших opcode и полей func основной дешифратор формирует соответствующие управляющие сигналы (синие на схеме) для всех блоков процессора. Другими словами — направляет данные в тракте данных.

![../.pic/Lectures/08.%20Singlecycle%20processor/fig_03.png](../.pic/Lectures/08.%20Singlecycle%20processor/fig_03.png)

Как можно видеть, основной дешифратор должен соответствовать некоторой таблице истинности, а значит является обычной комбинационной схемой.

Основным преимуществом однотактной микроархитектуры является простота понимания ее работы. К минусам можно отнести: (1) относительно высокие аппаратные затраты из-за использования дополнительных сумматоров и раздельной основной памяти (гарвардская архитектура, отдельно память команд, отдельно память данных), (2) низкая тактовая частота из-за длинного критического пути, (3) так как резные инструкции проходят разный путь, скорость работы ограничена скоростью самой медленной инструкции.

## Основные материалы лекции

1. [Ссылка](https://www.youtube.com/watch?v=JlNvkVwDsVs) на видеозапись лекции
2. К сожалению написанного материала по проектированию однотактного процессора именно с такой архитектурой на русском языке пока нет, поэтому в качестве альтернативы, если материалов озвученных на лекции недостаточно, можно познакомиться с очень похожим процессором, но с архитектурой MIPS. Полный процесс синтеза такого процессора можно посмотреть в этом источнике [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера* — параграфы 7.1 — 7.3.4]
3. Рекомендуется ознакомиться с документацией на RISC-V, которая находится в [облаке](https://1drv.ms/u/s!AlYsTGjsjfIfhP4GhdRLPQzK60vqGw) в папке "Литература (только для ознакомления)"

## Дополнительные материалы к лекции для саморазвития

1. Непохожий на рассматриваемый на лекции пример. Непохож и сам подход к реализации микроархитектуры с названием Mic-1. Рекомендуется ознакомиться для расширения кругозора [***Таненбаум и Остин***. *Архитектура компьютера* — Глава 7. начиная с параграфа «Процесс ассемблирования»]
2. Еще один синтез однотактного процессора, но с архитектурой ARM. Похоже на MIPS, но со своими тонкостями. А еще, чтобы усвоить материал придется предварительно прочитать всю первую главу книги про архитектуру ARM [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера. Дополнение по архитектуре ARM* — параграфы 2.1 — 2.3.4]
3. Так же в папке "Литература (только для ознакомления)" в облаке, в разделе "Дополнительно" можно найти документ "Однотактный PIC", в котором разбирается проектирование однотактного процессора с архитектурой PIC
