Arch: new
Все теоритические билеты по Архитектуре ЭВМ в основном были написаны, кроме: 8.4; 13.4; 14.4; 15.4. Задачи будут позже.
This commit is contained in:
59
2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/1.md
Normal file
59
2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/1.md
Normal file
@ -0,0 +1,59 @@
|
||||
Конечно! Вот билеты с 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.
|
26
2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/2.md
Normal file
26
2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/2.md
Normal file
@ -0,0 +1,26 @@
|
||||
#### Программируемые места хранения
|
||||
|
||||
**Типы регистров:**
|
||||
|
||||
1) **Целочисленные регистры**
|
||||
x0 - константа 0; x1 - return address; x2 - stack pointer; x3 - global pointer;
|
||||
x4-thread pointer ; x5-x7, x28-x31 - временные; x8-x9, x18-x27 - сохраняемые при вызове;
|
||||
$x10-x17$ - argument registers;
|
||||
2) **Вещественные регистры**
|
||||
f0-f7, f28-f31 - временные; f8-f9, f18-f27 - сохраняемые при вызове; f10-f17 - параметры и возвращаемые значения;
|
||||
3) **Векторные регистры**
|
||||
v0-v31- временные; vl - vector length; vtype - vector datatype register; vxrm - vector fixed-point rounding mode register; vxsat - vector fixed-piont saturation flag register; vcsr - vector control and status register; vlenb - vector register length in bytes; vstart- vector start position;
|
||||
**Особенности использования векторных регистров:**
|
||||
|
||||
- Векторные регистры появятся дополнительно при использовании векторных инструкций.
|
||||
- Длина зависит от инструкции (умолч. 128 бит)
|
||||
- Можно выполнять работы как над вектором, так и над какой-то из частей.
|
||||
- Вектора могут объединяться для формирования более длинных векторов.
|
||||
|
||||
**Формат представления команд:**
|
||||
|
||||
- **R (Register)** - «регистр-регистр-регистр»
|
||||
- **I (Immediate)** - «непосредственное значение - регистр - регистр»
|
||||
- **S (Store)** - «регистр-регистр-непосредственное значение». $1^{й}$ регистр - источник, который сохраняется в память, $2^{й}$ регистр и непосредств. значение используют для формирования адреса.
|
||||
- **U (Upper)** - «непосредственное значение - регистр». Используется, когда возможно взять адрес следующей выполняемой инструкции.
|
||||
Стадия декодирования облегчена максимально: анализируем битовые поля и отправляем в известные позиции на промежуточном регистре перед след. стадией.
|
Reference in New Issue
Block a user