Arch: new

Все теоритические билеты по Архитектуре ЭВМ в основном были написаны,
кроме: 8.4; 13.4; 14.4; 15.4. Задачи будут позже.
This commit is contained in:
Kirill
2024-12-20 12:10:10 +03:00
committed by Sweetbread
parent 2625f17247
commit 3a96c27c48
80 changed files with 1355 additions and 0 deletions

View File

@ -0,0 +1,9 @@
#### Определение и причина возникновения конфликтов данных. Определение параллелизма на уровне инструкций (ILP).
**Конфликты данных** возникают, когда инструкция зависит от рез-та выполнения предыдущей инструкции таким образом, что это проявляется при перекрытии инструкций в конвейере.
Происходят, когда рез-тат предыдущей инструкции, от которой зависит данная, неизвестен вовремя, или когда в конвейере меняется порядок чтения/записи операндов так, что результирующий порядок доступа отличается от исходного порядка доступа к операндам на машине без конвейера, что может привести к некорректному рез-ту выполнения программы.
ADD R1, R2, R1;
SUB зависит от ADD.
SUB R3, R1, R3;
**Распараллеливаемые (независимые)** - инструкции, не имеющие между собой зависимостей.
**Высокая степень параллелизма на уровне инструкций (Instruction Level Parallelism, ILP)** - присутствует в заданной последовательности команд, если она имеет большое число распараллеливаемых инструкций.

View File

@ -0,0 +1,7 @@
#### Пересылка данных (Forwarding).
**Пересылка данных (Forwarding)** - аппаратный метод, также называемый обходом регистров (register bypassing) или закорачиванием (short-circuiting), используемый для исключения или минимизации простоев изза конфликтов данных.
- Рез-тат выполнения инструкции пересылывается напрямую из места, где он был получен, туда, где он нужен последующим инструкциям.
- Рез-тат ALU из буферного регистра EX/MEM может перенаправлен к входным триггерам ALU вместо записи и последующего чтения операнда из регистра на ступени ID.
- Рез-тат чтения данных из памяти из буферного регистра MEM/WB может перенаправлен на входные триггеры ALU.

View File

@ -0,0 +1,26 @@
#### Классификация конфликтов данных (RAW/WAW/WAR/RAR).
Пусть А стоит раньше В в потоке инструкций.
- **RAW (Read After Write)** - истинная зависимость по данным.
![WAW](../data/5.png)
В пытается читать операнд-источник данных прежде, чем А туда пишет, поэтому В получает неправильное значение (старое).
A (Write)
Data
B (Read) $\star$
- **WAW (Write After Write)** - зависимость по именам регистров.
В пытается записать операнд прежде, чем он записан A, т.е запись происходит в неправильном порядке.
![WAW](../data/6.png)
- **WAR (Write After Read)** - зависимость по именам регистров.
![WAW](../data/7.png)
В пытается записать результат в приемник прежде, чем он считывается A, поэтому А получает неправильное значение (новое).
A (Read) $\qquad$
B (Write) $\qquad$ Data
- **RAR (Read After Read)** - нет конфликта.

View File

@ -0,0 +1,3 @@
#### Обработка конфликтов данных в конвейере.
???

View File

@ -0,0 +1,6 @@
#### Статическое планирование инструкций.
**Цель:** избегание или сокращение числа тактов простоя.
**Метод:** переупорядочивание или планирование инструкций - изменение последовательности исполнения инструкций с целью избегания или сокращения числа тактов простоя.
**Статическое планирование** - производится компилятором во время компиляции программы.
**Динамическое планирование** - производится CPU во время исполнения программы.