Files

60 lines
4.7 KiB
Markdown
Raw Normal View History

Конечно! Вот билеты с 5.5 по 10, написанные слово в слово, как в файле, для использования в Obsidian:
---
### Билет 5.5: Архитектура RISC-V
#### Набор инструкций RISC-V (базовые наборы, расширения, профили)
Беда старых архитектур: было введено огромное множество команд и инструкций, которые не могут быть удалены из-за большого количества программ, использующих их.
- **Базовый целочисленный набор команд:**
Обязательная часть архитектуры, на выбор:
- **RV32I** - 35 инструкций для работы с 32-бит. целыми и 32-бит. адресами
- **RV32E** - вариация RV32I с урезанным количеством регистров общего назначения
- **RV64I** - набор команд для поддержки 64-бит. целых и 64-бит. адресов
- **RV64E** - вариация RV64I с урезанным количеством регистров общего назначения
- **RV128I** - набор команд для поддержки расширенных целых и 128-бит. адресов. Доп. набор, для которого нет окончательного стандарта, есть только предварительный стандарт для 128-бит. адресов.
- **Расширения:**
В архитектуру заложена возможность реализации собственных расширений и встраивания их. Проработана на уровне архитектуры, ОС и стандартной библиотеки. Можно реализовать собственное расширение, встроить в железо и применять в своих приложениях на linux.
Самые важные имеют кодировку одной буквой:
- **М** - умножение и деление целых чисел
- **А** - атомарные инструкции, требуются для работы в concurrent системах, где реализована многопоточность или многоядерность/многопроцессорность.
- **F, D, Q** - инструкции для работы с FP числами одинарной, двойной и учетверенной точности.
- **C** - «сжатые» инструкции (весят 2 байта вместо 4).
- **V** - векторные инструкции (сильно повышают количество операций в секунду).
- **В** - битовые манипуляции.
Стандартизированные расширения начинаются с "Z":
- **Zicsr** - Control and Status Register (CSR) Instructions.
- **Zifencei** - инструкция FENCE.I (Instruction-Fetch Fence).
- **Zam** - атомарные операции с невыровненными адресами. Обращение по невыровненным адресам медленнее, чем по выровненным.
- **Ztso** - глобальное упорядочивание сохранения в память
Расширения уровня супервизора начинаются с "S":
- **Svinval** - Fast TLB invalidation.
Нестандартные (пользовательские) расширения начинаются с "X"
"General-Purpose" ISA: base ISA (RV32I or RV64I) + IMAFD + Zicsr + Zifencei
- **Профили:**
Профиль - стандартизированный набор основной архитектуры расширений, который рекомендуется для реализации и поддержки.
Профиль: стандартная базовая ISA + набор обязательных расширений + небольшой набор стандартных опций для расширения обязательных компонентов.
Определяют гораздо меньший общий набор вариантов ISA, которые приносят наибольшую пользу большинству пользователей.
Состав профиля:
- **Profile Family**
- **Profile Privilege Mode**
- **Profile ISA Features**
Пример: RVA22U64 = base RV64I + Mandatory MAFDC, Zicsr, Zifencei, Zihpm, ... + Optional Zfh, V, Zkn, Zks.