Files
Kirill 3a96c27c48 Arch: new
Все теоритические билеты по Архитектуре ЭВМ в основном были написаны,
кроме: 8.4; 13.4; 14.4; 15.4. Задачи будут позже.
2025-01-14 19:40:01 +03:00

60 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Конечно! Вот билеты с 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.