26 lines
2.6 KiB
Markdown
26 lines
2.6 KiB
Markdown
![]() |
#### Программируемые места хранения
|
||
|
|
||
|
**Типы регистров:**
|
||
|
|
||
|
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)** - «непосредственное значение - регистр». Используется, когда возможно взять адрес следующей выполняемой инструкции.
|
||
|
Стадия декодирования облегчена максимально: анализируем битовые поля и отправляем в известные позиции на промежуточном регистре перед след. стадией.
|