From 3a96c27c4880d747182b3fd8746eb704738a21d4 Mon Sep 17 00:00:00 2001 From: Kirill Date: Fri, 20 Dec 2024 12:10:10 +0300 Subject: [PATCH] Arch: new MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Все теоритические билеты по Архитектуре ЭВМ в основном были написаны, кроме: 8.4; 13.4; 14.4; 15.4. Задачи будут позже. --- 2 курс/1 семестр/Архитектура ЭВМ/Задачи.md | 5 + .../1 семестр/Архитектура ЭВМ/Лекции/1 билет/1.md | 30 ++++++ .../1 семестр/Архитектура ЭВМ/Лекции/1 билет/2.md | 31 ++++++ .../1 семестр/Архитектура ЭВМ/Лекции/1 билет/3.md | 18 ++++ .../Архитектура ЭВМ/Лекции/10 билет/1.md | 12 +++ .../Архитектура ЭВМ/Лекции/10 билет/2.md | 20 ++++ .../Архитектура ЭВМ/Лекции/10 билет/3.md | 43 ++++++++ .../Архитектура ЭВМ/Лекции/11 билет/1.md | 4 + .../Архитектура ЭВМ/Лекции/11 билет/2.md | 44 +++++++++ .../Архитектура ЭВМ/Лекции/11 билет/3.md | 17 ++++ .../Архитектура ЭВМ/Лекции/12 билет/1.md | 7 ++ .../Архитектура ЭВМ/Лекции/12 билет/2.md | 7 ++ .../Архитектура ЭВМ/Лекции/12 билет/3.md | 9 ++ .../Архитектура ЭВМ/Лекции/13 билет/1.md | 29 ++++++ .../Архитектура ЭВМ/Лекции/13 билет/2.md | 34 +++++++ .../Архитектура ЭВМ/Лекции/13 билет/3.md | 19 ++++ .../Архитектура ЭВМ/Лекции/13 билет/4.md | 2 + .../Архитектура ЭВМ/Лекции/14 билет/1.md | 29 ++++++ .../Архитектура ЭВМ/Лекции/14 билет/2.md | 67 +++++++++++++ .../Архитектура ЭВМ/Лекции/14 билет/3.md | 18 ++++ .../Архитектура ЭВМ/Лекции/14 билет/4.md | 3 + .../Архитектура ЭВМ/Лекции/15 билет/1.md | 13 +++ .../Архитектура ЭВМ/Лекции/15 билет/2.md | 34 +++++++ .../Архитектура ЭВМ/Лекции/15 билет/3.md | 4 + .../Архитектура ЭВМ/Лекции/15 билет/4.md | 2 + .../Архитектура ЭВМ/Лекции/16 билет/1.md | 6 ++ .../Архитектура ЭВМ/Лекции/16 билет/2.md | 16 +++ .../Архитектура ЭВМ/Лекции/16 билет/3.md | 26 +++++ .../Архитектура ЭВМ/Лекции/16 билет/4.md | 19 ++++ .../Архитектура ЭВМ/Лекции/17 билет/1.md | 5 + .../Архитектура ЭВМ/Лекции/17 билет/2.md | 21 ++++ .../Архитектура ЭВМ/Лекции/17 билет/3.md | 6 ++ .../Архитектура ЭВМ/Лекции/17 билет/4.md | 10 ++ .../Архитектура ЭВМ/Лекции/18 билет/1.md | 37 +++++++ .../Архитектура ЭВМ/Лекции/18 билет/2.md | 10 ++ .../Архитектура ЭВМ/Лекции/18 билет/3.md | 16 +++ .../Архитектура ЭВМ/Лекции/19 билет/1.md | 28 ++++++ .../Архитектура ЭВМ/Лекции/19 билет/2.md | 5 + .../1 семестр/Архитектура ЭВМ/Лекции/2 билет/1.md | 20 ++++ .../1 семестр/Архитектура ЭВМ/Лекции/2 билет/2.md | 10 ++ .../1 семестр/Архитектура ЭВМ/Лекции/2 билет/3.md | 10 ++ .../Архитектура ЭВМ/Лекции/20 билет/1.md | 17 ++++ .../Архитектура ЭВМ/Лекции/20 билет/2.md | 41 ++++++++ .../Архитектура ЭВМ/Лекции/20 билет/3.md | 15 +++ 2 курс/1 семестр/Архитектура ЭВМ/Лекции/21.md | 12 +++ .../1 семестр/Архитектура ЭВМ/Лекции/3 билет/1.md | 13 +++ .../1 семестр/Архитектура ЭВМ/Лекции/3 билет/2.md | 13 +++ .../1 семестр/Архитектура ЭВМ/Лекции/4 билет/1.md | 11 +++ .../1 семестр/Архитектура ЭВМ/Лекции/4 билет/2.md | 14 +++ .../1 семестр/Архитектура ЭВМ/Лекции/4 билет/3.md | 30 ++++++ .../1 семестр/Архитектура ЭВМ/Лекции/4 билет/4.md | 7 ++ .../1 семестр/Архитектура ЭВМ/Лекции/5 билет/1.md | 16 +++ .../1 семестр/Архитектура ЭВМ/Лекции/5 билет/2.md | 10 ++ .../1 семестр/Архитектура ЭВМ/Лекции/5 билет/3.md | 18 ++++ .../Архитектура ЭВМ/Лекции/5.5 билет/1.md | 59 +++++++++++ .../Архитектура ЭВМ/Лекции/5.5 билет/2.md | 26 +++++ .../1 семестр/Архитектура ЭВМ/Лекции/6 билет/1.md | 21 ++++ .../1 семестр/Архитектура ЭВМ/Лекции/6 билет/2.md | 7 ++ .../1 семестр/Архитектура ЭВМ/Лекции/6 билет/3.md | 8 ++ .../1 семестр/Архитектура ЭВМ/Лекции/6 билет/4.md | 17 ++++ .../1 семестр/Архитектура ЭВМ/Лекции/7 билет/1.md | 7 ++ .../1 семестр/Архитектура ЭВМ/Лекции/7 билет/2.md | 11 +++ .../1 семестр/Архитектура ЭВМ/Лекции/7 билет/3.md | 19 ++++ .../1 семестр/Архитектура ЭВМ/Лекции/8 билет/1.md | 9 ++ .../1 семестр/Архитектура ЭВМ/Лекции/8 билет/2.md | 7 ++ .../1 семестр/Архитектура ЭВМ/Лекции/8 билет/3.md | 26 +++++ .../1 семестр/Архитектура ЭВМ/Лекции/8 билет/4.md | 3 + .../1 семестр/Архитектура ЭВМ/Лекции/8 билет/5.md | 6 ++ .../1 семестр/Архитектура ЭВМ/Лекции/9 билет/1.md | 9 ++ .../1 семестр/Архитектура ЭВМ/Лекции/9 билет/2.md | 16 +++ .../1 семестр/Архитектура ЭВМ/Лекции/9 билет/3.md | 33 +++++++ .../1 семестр/Архитектура ЭВМ/Лекции/9 билет/4.md | 16 +++ .../1 семестр/Архитектура ЭВМ/Лекции/data/1.png | Bin 0 -> 110183 bytes .../1 семестр/Архитектура ЭВМ/Лекции/data/2.png | Bin 0 -> 107772 bytes .../1 семестр/Архитектура ЭВМ/Лекции/data/3.png | Bin 0 -> 9140 bytes .../1 семестр/Архитектура ЭВМ/Лекции/data/4.png | Bin 0 -> 17279 bytes .../1 семестр/Архитектура ЭВМ/Лекции/data/5.png | Bin 0 -> 6412 bytes .../1 семестр/Архитектура ЭВМ/Лекции/data/6.png | Bin 0 -> 6585 bytes .../1 семестр/Архитектура ЭВМ/Лекции/data/7.png | Bin 0 -> 6495 bytes 2 курс/1 семестр/Архитектура ЭВМ/Темы.md | 92 ++++++++++++++++++ 80 files changed, 1355 insertions(+) create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Задачи.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/21.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/5.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/1.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/2.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/3.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/4.md create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/1.png create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/2.png create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/3.png create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/4.png create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/5.png create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/6.png create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/7.png create mode 100644 2 курс/1 семестр/Архитектура ЭВМ/Темы.md diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Задачи.md b/2 курс/1 семестр/Архитектура ЭВМ/Задачи.md new file mode 100644 index 0000000..a437e17 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Задачи.md @@ -0,0 +1,5 @@ +Задача 1. Напишите на C и псевдоассемблере код, решающий некоторую задачу. +Задача 2. Нарисуйте изменение стека при работе заданной программы. +Задача 3. Для конвейера с указанными характеристиками рассчитайте время выполнения программы. (Возможное доп. задание: предложите более производительный вариант программы). +Задача 4. Сформируйте потактовую диаграмму выполнения заданной программы на конвейере с указанными характеристиками. +Задача 5. Сформируйте потактовую диаграмму выполнения заданной программы на конвейере, использующем Табло или алгоритм Томасуло. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/1.md new file mode 100644 index 0000000..6e5ff08 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/1.md @@ -0,0 +1,30 @@ +# Уровни абстракции электронной вычислительной системы. Фон Неймановская модель компьютера. + +#### Уровни абстракции + +1. **Физика (электроны)** + - Поведение электронов описывается квантовой механикой и системой уравнений Максвелла. + +2. **Полупроводниковые устройства (транзисторы, диоды и т.д.)** + - Каждое устройство имеет четко определенные точки соединения с другими подобными устройствами - контакты. + +3. **Аналоговые схемы** + - Полупроводниковые устройства соединены в функциональные компоненты (усилители и фильтры). Переход на аналоговом уровне занимает время, что сказывается на скорости выполнения вычислений (время такта). + +4. **Цифровые схемы** + - С помощью дополнительного уровня абстракции вводятся новые понятия (хранения бит) и новые операции над ними. + +5. **Логические элементы (сумматоры, арифметико-логические устройства)** + - Предназначены для обработки информации в цифровой форме. Если есть 4 вещи: хранение, конъюнкция, дизъюнкция, отрицание, то можно реализовать компьютер. На практике хватает «не и». + +6. **Микроархитектура** + - Есть требования по ресурсам процессора, командам процессора. Разработчики архитектуры должны собрать процессор под эти требования. Микроархитектура - соединение простейших цифровых элементов в логические блоки, предназначенные для выполнения команд, определенных какой-либо архитектурой. + +7. **Архитектура (инструкции, регистры)** + - Описывает компьютер с точки зрения программиста. В архитектуре описываются модель процессора, его характеристики (сколько регистров, какие операции позволяются, сколько памяти он может адресовать) и функциональные возможности (контракт между разработчиками ПО и разработчиками аппаратного обеспечения). + +8. **Операционная система** + - Управляет операциями нижнего уровня, такими как: доступ к жесткому диску или управление памятью. + +9. **Программное обеспечение** + - Использует ресурсы аппаратуры и ОС для разрешения конкретных задач пользователя. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/2.md new file mode 100644 index 0000000..058708d --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/2.md @@ -0,0 +1,31 @@ +# Фон Неймановская модель компьютера + +**Принципы фон Неймана:** + +1. **Принцип однородности памяти** + - В любой ячейке памяти может храниться как элемент данных, так и элемент программы. Нельзя определить тип данных в ячейке по содержимому. + +2. **Принцип адресности** + - Вся память является адресуемой. Нулевая ячейка имеет уникальный адрес. + +3. **Принцип программного управления** + - Ход вычисления определяется программой, сохраненной в памяти. + +4. **Принцип двоичного кодирования** + - Код программы и данные закодированы в двоичном виде. + +**Фон Неймановская модель компьютера:** + +![Фон Неймановская модель компьютера](../data/1.png) + +**Компоненты:** + +- **Центральный обрабатывающий блок (CPU):** + - **Блок управления (Control Unit):** Декодирование инструкций, порядок операций. + - **Тракт данных (Datapath):** Регистры, арифметико-логическое устройство, шины. + +- **Память (Memory):** Хранение инструкций и их операндов. + +- **Подсистема ввода/вывода (I/O Devices):** Шина I/O, интерфейсы, устройства. + +**Концепция хранения программ:** Инструкции из набора команд выбираются из общей памяти и исполняются последовательно. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/3.md new file mode 100644 index 0000000..56da605 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/3.md @@ -0,0 +1,18 @@ +# Шаги обработки инструкций в CPU + +1. **Выборка инструкции** + - Выбрать инструкцию программы из памяти. Программный счетчик (Program Counter, PC / Instruction Pointer, IP) указывает на следующую для обработки инструкцию. + +2. **Декодирование инструкции** + - Определить требуемые действия и размер инструкции. + +3. **Выборка операндов** + - Найти и получить данные операндов. + +4. **Исполнение** + - Вычислить значение результата или статус. + +5. **Сохранение результата** + - Записать результаты в запоминающее устройство для последующего использования. + +![Шаги обработки инструкций в CPU](../data/2.png) diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/1.md new file mode 100644 index 0000000..38d1bf5 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/1.md @@ -0,0 +1,12 @@ +#### Определение параллелизма уровня инструкций (ILP). Определение базового блока инструкций. + +**Параллелизм уровня инструкций (ILP)** - возможность одновременного выполнения нескольких инструкций в конвейере ЦП. + +ILP существует, когда инструкции в последовательности независимы и поэтому могут исполняться параллельно (с перекрытием). Конвейеры с большим ILP (меньшим числом зависимостей) показывают лучшую производительность на CPU с конвейером. +**Базовый блок инструкций** - линейная последовательность инструкций без переходов внутрь, за исключением точки входа, и без переходов наружу, за исключением точки выхода из последовательности. Пример: тело цикла. + +- ILP в базовом блоке определяется имеющимися зависимостями между инструкциями и размером блока. +- В типичном целочисленном коде частота условных переходов около $15\%$, что дает средний размер базового блока - 7 инструкций. +- Любой статический метод, увеличивающий размер базового блока, расширяет блок инструкций для оптимального статического планирования конвейера компилятором и увеличивает ILP. +Один из таких методов - разворачивание цикла. +**Статический метод** - метод, который не имеет доступа к полям объекта, и для вызова такого метода не нужно создавать экземпляр класса, в котором он объявлен. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/2.md new file mode 100644 index 0000000..176ed18 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/2.md @@ -0,0 +1,20 @@ +#### Статическая оптимизация с разворачиванием циклов. Требования к разворачиванию циклов. + +**Стандартный способ увеличения ILP** состоит в использовании параллелизма между итерациями цикла, т.е параллелизма уровня цикла (Loop Level Parallelism, LLP) +Достигается путем разворачивания цикла, либо статически компилятором, либо динамически аппаратурой, чтобы увеличить размер имеющегося базового блока; +Больший размер базового блока позволяет удалить больше тактов простоя, тк больше инструкций могут переупорядочиваться. + +- **Статическая оптимизация с разворачиванием цикла.** + +Реализуется компилятором, но приводит к изменению кода на языке высокого уровня. +Пример: был цикл от 1 до 100 с шагом 1. Теперь делаем цикл от 1 до 100 с шагом 4 и на каждой итерации выполняем последовательно 4 тела цикла. Увеличивается размер базового блока, что позволяет удалить больше тактов простоя, тк инструкции могут переупорядочиваться. + +- **Разворачивание циклов.** + +Больший размер базового блока - больше инструкций для перепланирования. +Исполняется меньше инструкций переходов и инструкций для поддержки циклов. +Разворачивание циклов еще эффективнее при реализации векторных команд. +**Необходимые требования для разворачивания цикла:** + +- Независимость итераций цикла. +- Большое количество регистров для предотвращения конфликтов по именам регистров (WAR, WAW). \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/3.md new file mode 100644 index 0000000..743911f --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/3.md @@ -0,0 +1,43 @@ +#### Пример разворачивания цикла. + +```assembly +for (i = 1000; i>0; i = i-1) + x[i]= x[i] + s; +Без оптимизации: +Loop: LD [R1], F0 1 + простой 2 + ADD F2, F0, F4 3 + простой 4 + простой 5 + ST F4, [R1] 6 + ADD R1, R3, R1 7 + простой 8 + BNE R1, R2, Loop 9 + простой 10 +``` + +- 4 копии цикла развернуты без повторного использования регистров. +- Размер базового блока увеличен с 5 до 14 инструкций. +- 3 перехода и 3 уменьшения R1 удалены. +- Адреса загрузки и сохранения изменены. +- 7 тактов для исходной итерации. + +Разворачивание цикла сразу с оптимизацией: + +| Loop: | LD [R1], F0 | 1 | +| :--: | :--: | :--: | +| | LD [R1-8], F6 | 2 | +| | LD [R1-16], F10 | 3 | +| | LD [R1-24], F14 | 4 | +| | ADD F2, F0, F4 | 5 | +| | ADD F2, F6, F8 | 6 | +| | ADD F2, F10, F12 | 7 | +| | ADD F2, F14, F16 | 8 | +| | ST F4, [R1] | 9 | +| | ST F8, [R1-8] | 10 | +| | ADD R1, R3, R1; | R3 -=32; 11 | +| | ST F12, [R1+16] | 12 | +| | BNE R1, R2, Loop | 13 | +| | ST F16, [R1+8]; | 8-32 = -24 | + +Время итерации цикла сократилось до 14 тактов или $\frac{14}{4}=3.5$ для исходной итерации; Ускорение $\frac{6}{3.5}=1.7$ \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/1.md new file mode 100644 index 0000000..23f1d20 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/1.md @@ -0,0 +1,4 @@ +#### Классификация зависимостей между инструкциями (по данным, по именам, по управлению). + +Зависимые инструкции не являются параллельными и не могут быть переупорядочены ни компилятором, ни аппаратурой. +Зависимости между инструкциями классифицируются как: зависимости по данным, зависимости по именам, зависимости по управлению. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/2.md new file mode 100644 index 0000000..a309da2 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/2.md @@ -0,0 +1,44 @@ +#### Истинная зависимость по данным, антизависимость, выходная зависимость. Граф зависимостей. + +Пусть есть 2 инструкции $i$, $j$. где $i$ предшествует $j$ в программе. + +- **Инструкция $j$ зависит по данным от инструкции $i$, если:** +- $i$ выдает результат, используемый $j$ (конфликт RAW), если порядок выполнения не сохраняется. +- $j$ зависит по данным от $k$ и $k$ зависит по данным от $i$ (цепочка конфликтов RAW). + +**Пример зависимости по данным:** +```assembly +Loop: LD [R1], F0 +DADD F2, F0, F4 +ST F4, [R1] +``` + +**Зависимость по именам** возникает, когда 2 инструкции используют один и тот же регистр или место в памяти, т.е. общее имя места. +Между инструкциями, имеющими зависимость по именам, нет потока данных (нет отношения выдает/использует). +Может существовать два типа зависимостей по именам: + +- **Антизависимость.** +- Существует, когда $j$ пишет в тот же регистр или место в памяти, которое $i$ читает. + +Нарушение антизависимости (относительный порядок чтения/записи изменен): приводит к конфликту WAR и потому относительный порядок чтения/записи и исполнения должен сохраняться. +$i$ считывает значение по имени, $j$ записывает значение по тому же имени. $j$ антизависима от $i$. +Изменение относительного порядка исполнения $i$, $j$ нарушает эту зависимость по именам и приводит к конфликту WAR и некорректному исполнению. + +- **Выходная зависимость (зависимость записи).** +- Существует, когда $i$ и $j$ пишут в один и тот же регистр или место в памяти. + +Нарушение выходной зависимости (относительный порядок записи изменен): приводит к конфликту WAW и потому порядок записи и исполнения должен сохраняться. +$i$, $j$ пишут по одинаковому имени. Тогда $j$ зависима по выходу от $i$. +Изменение относительного порядка исполнения $i$, $j$ нарушает эту зависимость по именам и приводит к конфликту WAW и некорректному исполнению. + +**Пример:** +```assembly +1 LD F0, [R1] +2 DADD F2, F0, F4 +3 ST F4, [R1] +4 LD F0, [R1-8] +5 DADD F2, F0, F4 +6 ST F4, [R1-8] +``` + +В графе можем переупорядочивать инструкции только если сохраняется порядок стрелок. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/3.md new file mode 100644 index 0000000..9cb2af3 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/3.md @@ -0,0 +1,17 @@ +#### Зависимость по управлению. + +Определяют порядок инструкции с учетом инструкций перехода. +Каждая инструкция в программе кроме тех, которые находятся в самом первом базовом блоке программы, зависима по управлению от некоторого множества переходов. +Инструкцию, зависимую по управлению от перехода нельзя переместить перед переходом так, что ее исполнение более не будет управляться переходом. +Инструкцию, не зависимую по управлению от перехода нельзя переместить так, что ее исполнение будет управляться переходом (в часть then). +В некоторых случаях возможно обойти эти ограничения и сохранить корректное исполнение. + +**Пример зависимости:** +```c +if p1{ +s1; s1 зависима по управлению от p1. s2 зависима по управлению от p2, но не от p1. +} +if p2{ +s2; +} +``` \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/1.md new file mode 100644 index 0000000..e1f98d7 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/1.md @@ -0,0 +1,7 @@ +#### Отличия от конвейера без обработки вещественных операций. + +Инструкции с плавающей точкой выполняются на том же конвейере, что и целочисленные со следующими отличиями: + +- стадия EX может повторяться столько раз, сколько потребуется. +- может быть несколько FP функциональных устройств. +- простои возникают, если выпускаемая инструкция вызывает структурный конфликт в функциональном устройстве или конфликт данных. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/2.md new file mode 100644 index 0000000..37d5905 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/2.md @@ -0,0 +1,7 @@ +#### Определения задержки и периода запуска. Конвейеризуемые и неконвейеризуемые функциональные блоки. + +**Задержка функциональных устройств** - количество тактов между инструкцией, производящей результат и инструкцией, которая его использует. Обычно равно числу тактов простоя при использовании пересылки. +**Период запуска или интервал повтора** - число тактов, которое должно пройти между выдачами инструкции заданного типа на данное функциональное устройство. + +**Конвейеризуемые вещественные блоки** - операции, которые могут быть разбиты на стадии и обслуживаться в виде конвейера. Например: сложение и умножение. +**Неконвейеризуемые блоки** - операции, которые не могут быть разбиты на стадии. Например: деление. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/3.md new file mode 100644 index 0000000..5efa6bb --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/3.md @@ -0,0 +1,9 @@ +#### Характеристики конвейера с поддержкой вещественных операций. + +- Инструкции обрабатываются упорядоченно на стадиях IF, ID, EX - одна инструкция за такт. +- Простои из-за конфликта RAW растут (в тактах) в силу более долгих FP задержек. +- Структурные конфликты возможны в силу различного времени выполнения инструкций и FP задержек. Блок FP может быть занят (блок деления). +Ступени MEM, WB достигаются несколькими инструкциями одновременно. +- Могут возникать конфликты WAW, так как инструкции могут достичь WB в порядке, отличном от исходного. +- Конфликты WAR невозможны, так как чтение регистров происходит упорядоченно на стадии ID. +- Внеочередное завершение инструкций требует специальных мер для обеспечения точных исключений. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/1.md new file mode 100644 index 0000000..aafa433 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/1.md @@ -0,0 +1,29 @@ +#### Определение динамического планирования. Принципы реализации динамического планирования. + +**Динамическое планирование** (неупорядоченное исполнение, out-of-order execution) - аппаратный механизм переупорядочивания (изменения порядка исполнения инструкций) во время исполнения. + +Не может преодолеть истинные зависимости данных, но пытается сократить или даже предотвратить простои. +Позволяет обрабатывать случаи, когда зависимости между инструкциями неизвестны во время компиляции. + +**Концепции:** + +- Инструкциям разрешается исполняться неупорядоченно, как только становятся доступны их операнды. +- Разрешение инструкциям неупорядоченно завершаться. + +**Реализация динамического планирования:** + +- Ступень декодирования инструкций ID делится на 2 ступени: + +1. **Выдача** - декодирование инструкций, проверка структурных конфликтов. Всегда выполняется в порядке, указанном в программе. +Зависимости под данными записываются по мере того, как инструкции выдаются (динамически создается эквивалент графа зависимостей для множества инструкций, которые находятся в ЦП) +2. **Чтение операндов** - ожидание разрешения конфликтов данных, если они есть, и последующее чтение операндов по мере их доступности. Может происходить в порядке, отличном от указанного в программе. + +- На ступени выборки инструкции IF производится выборка дополнительной инструкции в специальный регистр или нескольких инструкций в очередь в каждом такте. +- Увеличивается число функциональных устройств для исполнения большего числа инструкций на ступени EX без структурных конфликтов. +- Два подхода к реализации: + +1) **Табло (Scoreboard)**, 1963. +2) **Алгоритм Томасуло**, 1966. + +Будем считать, что стадия выборки выполняется на соответствующем для нее такте, что конфликтов управления у нас не возникает, что выборка всегда успевает поставить нам очередную инструкцию. +Предполагаем, что может быть реализовано несколько исполняющих блоков на стадии исполнения. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/2.md new file mode 100644 index 0000000..dcb9345 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/2.md @@ -0,0 +1,34 @@ +#### Определение табло. Структура табло и контролируемые параметры. + +**Табло** - централизованный аппаратный механизм, поддерживающий скорость выдачи инструкций на исполнение не более 1 за такт, за счет выдачи инструкции, как только ее операнды доступны и нет блокирующих ее конфликтов. + +- Ступень ID заменяется на ID1, ID2. +- Однопортовый (1 инструкция - 1 такт) неупорядоченный конвейер без изменений на ступени выборки инструкции (IF). +- Смысл алгоритма Табло в том, что внутри ЦП есть отдельный блок, который хранит информацию о всех текущих выполняющихся инструкциях и текущем состоянии ресурсов. +- Реализация: +- ЦП имеет несколько функциональных устройств, которые сообщают табло информацию о своем состоянии. +- Каждая инструкция проходит сквозь табло, где строится запись о ее зависимостях по данным. +- Если табло определяет, что инструкция не может быть выдана на исполнение немедленно, ее исполнение откладывается. +- Табло отслеживает статус зависимостей и аппаратных блоков и решает, когда отложенная инструкция может быть направлена на исполнение. +- Табло выдает инструкции разрешение для записи результата в регистры. + +**Контролируемые параметры:** + +- **Статус инструкции:** + +На каком из 4 этапов находится. + +- **Статус функционального устройства (9 полей):** + +**Busy** - занято устройство или нет +**Op** - Операция, выполняемая на устройстве +$F_i$ - регистр назначения +$F_j,F_k$ - регистры - источники операндов +$Q_j,Q_k$ - функциональные устройства, заполняющие регистры - источники операндов $F_j,F_k$ +$R_j,R_k$ - флаги, показывающие готовность $F_j,F_k$ : +Устанавливаются в True после того, как операнды стали доступны для чтения, затем оба операнда считываются из регистров одновременно. + +- **Статус регистра:** + +Какое функциональное устройство собирается писать в регистр (если такое есть) +Пуст, когда никакие незаконченные инструкции не будут писать в указанный регистр. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/3.md new file mode 100644 index 0000000..813c5cd --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/3.md @@ -0,0 +1,19 @@ +#### Ступени конвейера, использующего табло. Обработка инструкции на различных ступенях. + +- **Выборка инструкции (IF)** - последовательна. +- **Выдача (ID1).** Инструкция выдается, если: +- Функциональное устройство для инструкции доступно (нет структурного конфликта). +- Регистр назначения для результата инструкции не помечен для записи другой раннее запущенной инструкцией (нет конфликта WAW). +- **Чтение операндов (ID2)** +- Табло отслеживает доступность операндов. +- Когда все операнды доступны, табло указывает функциональному устройству считать все операнды из регистров (пересылка не поддерживается) и начать исполнение. +- Таким образом, конфликты RAW разрешаются динамически. + +Между стадией ID2 и EX не может быть простоев. В табло хранится информация кто от кого зависит, и как только необходимые регистры появились, мы их сразу забираем. + +- **Исполнение (EX).** Заменяет EX+MEM в MIPS. +- Функциональное устройство начинает исполнение, как только получит операнды. +- Когда результаты готовы, оно уведомляет табло. +- **Запись результата (WB)** +- Когда табло уведомляется о том, что функциональный блок завершил исполнение, оно выполняет проверку на конфликты WAR и приостанавливает запись результата, если необходимо. +- Функциональное устройство помечается как доступное для других инструкций после того, как ступень WB завершена. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/4.md new file mode 100644 index 0000000..6095032 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/4.md @@ -0,0 +1,2 @@ +#### Пример обработки участка кода. +??? \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/1.md new file mode 100644 index 0000000..71e6598 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/1.md @@ -0,0 +1,29 @@ +#### Определение динамического планирования. Принципы реализации динамического планирования. + +**Динамическое планирование** (неупорядоченное исполнение, out-of-order execution) - аппаратный механизм переупорядочивания (изменения порядка исполнения инструкций) во время исполнения. + +Не может преодолеть истинные зависимости данных, но пытается сократить или даже предотвратить простои. +Позволяет обрабатывать случаи, когда зависимости между инструкциями неизвестны во время компиляции. + +**Концепции:** + +- Инструкциям разрешается исполняться неупорядоченно, как только становятся доступны их операнды. +- Разрешение инструкциям неупорядоченно завершаться. + +**Реализация динамического планирования:** + +- Ступень декодирования инструкций ID делится на 2 ступени: + +1. **Выдача** - декодирование инструкций, проверка структурных конфликтов. Всегда выполняется в порядке, указанном в программе. +Зависимости под данными записываются по мере того, как инструкции выдаются (динамически создается эквивалент графа зависимостей для множества инструкций, которые находятся в ЦП) +2. **Чтение операндов** - ожидание разрешения конфликтов данных, если они есть, и последующее чтение операндов по мере их доступности. Может происходить в порядке, отличном от указанного в программе. + +- На ступени выборки инструкции IF производится выборка дополнительной инструкции в специальный регистр или нескольких инструкций в очередь в каждом такте. +- Увеличивается число функциональных устройств для исполнения большего числа инструкций на ступени EX без структурных конфликтов. +- Два подхода к реализации: + +1) **Табло (Scoreboard)**, 1963. +2) **Алгоритм Томасуло**, 1966. + +Будем считать, что стадия выборки выполняется на соответствующем для нее такте, что конфликтов управления у нас не возникает, что выборка всегда успевает поставить нам очередную инструкцию. +Предполагаем, что может быть реализовано несколько исполняющих блоков на стадии исполнения. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/2.md new file mode 100644 index 0000000..1501c8d --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/2.md @@ -0,0 +1,67 @@ +#### Принципы работы алгоритма Томасуло. "Станции резервации"(reservation stations), переименование регистров, общая шина данных (Common Data Bus, CDB). Поля станций резервации. + +**Управление распределено по функциональным устройствам (в Табло - централизовано).** + +- **FU** имеют специальные буферы - **«станции резервации» (Reservation Station)**, которые содержат: +- Незавершенные инструкции. +- Операнды незавершенных инструкций. +- Информацию о статусе инструкций (включая зависимости данных). +- Станции резервации иногда называют «физическими регистрами» или «переименованными регистрами» в противоположность регистрам архитектуры, заданным в ISA. +Регистры ISA в инструкциях заменяются либо их значениями (если доступны), либо указателями на станции резервации, которые предоставят значение позже. +- Этот процесс называется **переименованием регистров**. +- Переименование регистров исключает конфликты WAR, WAW (зависимости по именам). +- Позволяет использовать аппаратное разворачивание циклов. + +- Станций резервации может быть больше, чем регистров ISA, что ведет к аппаратной оптимизации, которая невозможна для компиляторов, а также предотвращает узкое место из-за количества регистров ISA. + +**Недостатки:** + +- Сложность реализации. +- Требуется большое число высокоскоростных ассоциативных портов чтения результатов с CDB. +- Производительность может ограничиваться одной CDB. + +Возможное решение - несколько CDBs. + +**Принцип работы:** + +- **Стадия выдачи** + +Проверяем ожидает ли регистр какое-то значение от RS. Если ожидает - делаем пометку, что мы тоже ожидаем значение от той же RS, что и регистр. Иначе просто копируем значение регистра в аргумент. По итогу у нас либо есть все аргументы, либо мы знаем, от какой RS мы ожидаем аргументы. Потом помечаем, что наша станция busy. В конце помечаем выходной регистр, что он ожидает значения от нашей станции резервации. + +- **Исполнение** + +Если готовы оба аргумента - начинаем исполнение. + +- **Запись результата** +1) Если какой-то регистр ожидает ответа от нашей станции резервации, то записываем результат и помечаем, что регистр больше не ожидает - свободен. +2) Всем станциям, которые в качестве параметра ожидали значение от нашей станции - записываем это значение. +3) Если ожидала станция сохранения, то записываем +4) Помечаем текущую станцию незанятой. + +**Общая шина данных (CDB):** данные + адрес назначения (шина «куда) + +- 64 бит для данных + 4 бита для адреса функционального устройства - источника. +- данные записываются в ждущую RS, если адрес источника совпадает с адресом RS, которая производит операнд источник. +- передача результата происходит через рассылку ждущим RS, включая регистровый файл. + +**Поля станции резервации:** + +- **Busy** - RS занята. +- **Op** - операция, выполняемая в устройстве. +- $V_j,V_k$ - значения операндов источников S1, S2. + +Буферы записи имеют одно V поле, показывающее результат, который надо сохранить. + +- $Q_j,Q_k$ - RS, производящие операнды - источники. + +Нет флагов готовности, как в Табло: $Q_j,Q_k=0=>$ операнды готовы. +Буферы сохранения имеют только Q, для RS, производящей результат. + +- **A** - информация об адресах для операций load/store. + +Сначала поле прямого адреса инструкции, потом реальный адрес, когда он вычислен. + +- $Q_i$ - показывает, какая RS будет записывать в регистр, если такая есть. + +Пустой (или 0), когда нет незаконченных инструкций (где-то в RS), которые будут записывать в тот регистр. +Регистровый файл ведет себя как RS. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/3.md new file mode 100644 index 0000000..b496ad1 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/3.md @@ -0,0 +1,18 @@ +#### Ступени конвейера, использующего алгоритм Томасуло. Обработка инструкции на различных ступенях. + +- **Выборка (IF)** - обрабатывается последовательно. +- **Выдача (ID)** - обрабатывается последовательно. +- Получить инструкцию из очереди выбранных инструкций (IQ). +- Выдать инструкцию в свободную RS, если нет структурного конфликта. +- Пометить выбранную RS как занятую. +- Переслать доступные значения операндов инструкции (из регистров ISA) в выбранную RS. +- Переименовать еще не доступные операнды в указатели на RS, которые их произведут (переименование регистров, динамическое построение графа зависимостей данных). +- Указать для выходного регистра, что он ожидает значение от используемой RS. +- **Исполнение (EX)** +- если оба операнда готовы, начинается исполнение на назначенном FU. + +- если не все операнды готовы, следим за CDB в ожидании требуемого результата (через CDB происходит пересылка). +т.е. предотвращаем RAW и соблюдаем зависимости по данным. +- **Запись результата (WB)** +- результат выдается на CDB для всех ожидающих RS, т.е результат рассылается по CDB. +- станция резервации помечается как свободная. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/4.md new file mode 100644 index 0000000..67be9f3 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/4.md @@ -0,0 +1,3 @@ + +#### Пример обработки участка кода. +??? \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/1.md new file mode 100644 index 0000000..f30c1c3 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/1.md @@ -0,0 +1,13 @@ +#### Принцип и цель суперскалярности. Характерные особенности применения. + +**Суперскалярность** - выдача более одной команды в такте. + +- Различные CPU могут выдавать от 2-х до 8-ми инструкций за такт. +- В простейшем случае за эффективную загрузку CPU отвечает оптимизирующий компилятор. +- Все современные суперскалярные микропроцессоры используют аппаратную логику анализа ILP перед выдачей инструкций. +- Компилятор + аппаратная логика не могут полностью обойти все конфликты RAW, задержки доступа к памяти и обеспечить 100% нагрузку CPU. +- Следствие: фактическое число выданных в такте инструкций колеблется от 0 до макс. возможного для данного CPU. +CPI может быть <1 (самое лучшее CPI = 0.125). +ILP является мерой того, какое множество операций в компьютерной программе может выполняться одновременно. + +**Первичное представление суперскалярной архитектуры:** есть память, кэш инструкций, декодер, умеющий выдавать N инструкций за такт, есть функциональные устройства и станции резервации, которые могут выдавать задания на вычислительные устройства. Может быть несколько RS и они могут выдавать задания на несколько устройств. Из регистрового файла можем брать значения для RS. Есть буфер переупорядочивания. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/2.md new file mode 100644 index 0000000..6944104 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/2.md @@ -0,0 +1,34 @@ +#### Простейшая реализация суперскалярности (x2). Пример. + +**Суперскалярный конвейер:** 2 инструкции, 1 FP +1 не только FP +**Требования:** + +- Выборка 64-бит/такт +- Декодирование 2-х инструкций/такт +- Много портов для FP регистров, чтобы загружать FP в паре с FP обработкой + +| Тип | Стадии конвейера | | | | | | | | +| :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | +| Int instruct | IF | ID | EX | MEM | WB | | | | +| FP instruct | IF | ID | EX | EX | EX | WB | | | +| Int instruct | | IF | ID | EX | MEM | WB | | | +| FP instruct | | IF | ID | EX | EX | EX | WB | | +| Int instruct | | | IF | ID | EX | MEM | WB | | +| FP instruct | | | IF | ID | EX | EX | EX | WB | + +**Сложности аппаратной реализации:** + +- Следствие ограничений ILP: сложные механизмы предсказания ветвлений и высокий уровень спекулятивности. +- Задержки блоков, планирующих и обрабатывающих множество операций в такте. +- Большое количество портов к регистровому файлу (пропускная способность внутренних шин). +- Обслуживание частого непоследовательного доступа к памяти. + +| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +| :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | +| LD F6, [R2] | IF | EX | WB | | | | | +| LD F2, [R3] | IF | EX | WB | | | | | +| DMUL F2, F4, F0 | | IF | EX | EX | EX | EX | WB | +| DSUB F6, F2, F8 | | IF | EX | EX | WB | | | +| DDIV F0, F6, F10 | | | IF | | | | EX | +| DADD F8, F2, F6 | | | IF | | EX | EX | WB | +| DMUL F2, F4, F12 | | | | | IF | | ... | diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/3.md new file mode 100644 index 0000000..2758103 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/3.md @@ -0,0 +1,4 @@ +#### Динамическое планирование при суперскалярности. + +Есть зависимости между инструкциями, их надо соблюдать. +Когда вы компилируете программу, если вы используете оптимизацию, то выполняете оптимизацию для конкретной модели ЦП. При использовании ДП программа запустится эффективно на разных моделях ЦП. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/4.md new file mode 100644 index 0000000..67b9d93 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/4.md @@ -0,0 +1,2 @@ +#### Масштабируемость и перспективы суперскалярности. +??? \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/1.md new file mode 100644 index 0000000..57657fa --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/1.md @@ -0,0 +1,6 @@ +#### Определение динамического предсказания ветвлений. + +**Динамическое предсказание ветвлений** - аппаратные схемы, которые динамически предсказывают переходы на основе поведения программы при исполнении, т.е. информация о предыдущих ветвлениях используется, чтобы динамически предсказать исход текущего перехода. ЦП отслеживает выполнение условных переходов в течение работы программы и куда выполнится переход. +Позволяет сократить время простоя за счёт предварительной загрузки и исполнения инструкций, которые должны выполниться после выполнения инструкции условного перехода. +Прогнозирование ветвлений играет критическую роль, так в большинстве случаев (точность предсказания переходов $\geq 90\%$) позволяет оптимально использовать вычислительные ресурсы процессора. + diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/2.md new file mode 100644 index 0000000..15302fd --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/2.md @@ -0,0 +1,16 @@ +#### Структура ВТВ. + +Эффективное предсказание переходов требует наличие цели перехода на ранней стадии конвейера, можно использовать доп. сумматоры на стадии ID, чтобы цель могла быть выбрана, но будет 1 такт простоя. Проблему решает буфер целей перехода (ВТВ). +**ВТВ** - аппаратный механизм, снижающий число тактов простоя при корректно предсказанном переходе до 0. +**ВТВ** - буфер целей перехода, доп. набор логики, который располагается на стадии IF и который помогает предсказывать переходы. +Цель: переходы без простоев. +Если мы угадали с помощью ВТВ, значит после выполнения IF мы знаем адрес следующей инструкции. + +**Простейший вариант** - когда в ВТВ хранится целевой адрес. Вид ВТВ: + +| Адрес перехода | Цель перехода, если он предсказан выполняющимся. | Бит валидности | +| :-- | :-- | :-- | +| ... | ... | ... | + +Бит валидности - признак актуальности строки. +Кэш полностью ассоциативный. Адрес текущей инструкции ищется в первом столбце. Если он там есть, тогда текущая инструкция - условный переход, причем выполняющийся. Тогда считываем адрес из второго столбца. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/3.md new file mode 100644 index 0000000..9085f8c --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/3.md @@ -0,0 +1,26 @@ +#### Алгоритм заполнения и использования ВТВ. + +- **Адрес есть в ВТВ.** + +Берем адрес перехода из буфера. На следующем такте проверяем, выполнился ли переход. + +- **Угадали.** + +Продолжаем выполнение, убираем запись из буфера. + +- **Не угадали.** + +Очищаем эту запись в ВТВ и отбрасываем результаты выполнения. + +- **В таблице ВТВ не нашли наш адрес.** + +Пытаемся спекулятивно выполнить со следующего адреса. + +- **Перехода нет** + +Продолжаем выполнение и результат сохраняется, запись из буфера убирается. + +- **Переход есть.** + +Результат отбрасывается, вычисляем новый адрес и на новом такте считываем новый адрес. Информацию о том, что переход состоялся записываем в ВТВ. +Получается конструкция с запоминанием последнего результата выполнения перехода. Штраф ветвления - 2 такта. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/4.md new file mode 100644 index 0000000..849107a --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/4.md @@ -0,0 +1,19 @@ +#### Структура РНТ. Алгоритм изменения и использования. Интерференция адресов. Структура ВНТ. + +**ВНТ:** Таблица признаков, происходил переход или нет. Хранится выполнение/невыполнение перехода. Берем какое-то число младших бит адреса инструкции, они являются номером записи в ВНТ. Каждая запись ВНТ содержит бит, индицирующий, выполнялось ли ветвление или нет в прошлый раз. Когда мы проверим, выполняется/не выполняется переход, при необходимости обновим запись в ВНТ. +**Простейший метод (одноуровневый):** + +- ВНТ индексируется младшими битами адреса инструкции ветвления. +- Каждая запись ВНТ содержит бит индицирующий выполнялось ли ветвление или нет в прошлый раз. 0 - не выполнялось. 1 - выполнялось. +- Используемый счетчик (предсказатель) обновляется после обработки инструкции перехода. Увеличить счетчик, если есть переход, уменьшить - если нет перехода. +- Всегда ошибается на первой и последней итерациях цикла. + +**Интерференция** - возникает, когда разные переходы отображаются на один и тот же счетчик (одни и те же младшие биты адреса). +Для улучшения точности предсказания используется 2-битовое предсказание: + +- Прогноз должен промахнуться дважды, прежде чем он изменится. + +Поэтому переход в цикле будет предсказан неверно только 1 раз при повторной встрече, вместо 2 раз при 1-битной схеме. + +- 2-битовое предсказание - частный случай n-битного счетчика с насыщением наращиваемого при выполнении ветвления и уменьшаемого, когда ветвление не выполняется. +- В большинстве случаев используется 2-битный счетчик предсказаний, поскольку наблюдения показывают, что эффективность предсказания 2-битной ВНТ сравнима с эффективностью n-битной. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/1.md new file mode 100644 index 0000000..4e53ef8 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/1.md @@ -0,0 +1,5 @@ +#### Определение динамического предсказания ветвлений. + +**Динамическое предсказание ветвлений** - аппаратные схемы, которые динамически предсказывают переходы на основе поведения программы при исполнении, т.е. информация о предыдущих ветвлениях используется, чтобы динамически предсказать исход текущего перехода. ЦП отслеживает выполнение условных переходов в течение работы программы и куда выполнится переход. +Позволяет сократить время простоя за счёт предварительной загрузки и исполнения инструкций, которые должны выполниться после выполнения инструкции условного перехода. +Прогнозирование ветвлений играет критическую роль, так в большинстве случаев (точность предсказания переходов $\geq 90\%$) позволяет оптимально использовать вычислительные ресурсы процессора. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/2.md new file mode 100644 index 0000000..08a497b --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/2.md @@ -0,0 +1,21 @@ +#### Описание двухуровневого механизма динамического предсказания ветвлений с учетом корреляции. + +Соседние переходы могут коррелировать: поведение недавно выполненных переходов влияет на предсказание текущего перехода. +Это имеет место в ветвлениях, использованных для реализации конструкций if-then-else. +Предполагается, что есть 2 уровня предсказаний: + +1) **Глобальный** + +Запись истории поведения m последних переходов как выполнившихся или нет. Обычно используется m -битный регистр сдвига. + +2) **На один адрес ветвления** + +- $2^m$ таблиц предсказания, каждая запись таблицы - это n-битный счетчик с насыщением. +- Запись истории $1^{го}$ уровня используется для выбора соответствующей из таблиц предсказания $2^{го}$ уровня. Таким образом каждая с $2^m$ таблиц содержит $2^N$ записей и каждая запись - 2-битный (к примеру счетчик). +- Общее количество необходимых для $2^{го}$ уровня бит: $2^m \times n \times 2^N$. n - количество бит, используемое для предсказания. +**GAp** - Global Adaptive per address. +Используется обозначение GAp $(m,n)$, которое означает: +- Записываются последние $m$ ветвлений для выбора между $2^m$ таблицами истории. +- Каждая таблица истории $2^{го}$ уровня использует n-битные счетчики (имеет разрядность n бит). +- Одноуровневая схема бимодальной ВНТ с 2-битными счетчиками обозначается как предсказатель $(0,2)$ + diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/3.md new file mode 100644 index 0000000..9ce1163 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/3.md @@ -0,0 +1,6 @@ +#### Схема MCFarling'a gshare. Преимущества схемы. + +**gshare** = global history with index sharing +McFarling предложил использовать и глобальную историю и адрес ветвления, объединяя их хешированием. Функция хеширования: XOR от регистра глобальной истории ветвлений (BHR) и адреса ветвления. Он ожидал, что такой хеш содержит больше информации, чем каждая из компонент. В результате предложенная схема превзошла GAp при малых размерах таблиц. +Новая схема обладает меньшими требованиями к оборудованию для реализации по сравнению с GAp, поскольку использует одну общую таблицу предсказателей. +Требуется на k бит истории $2 \times 2^k$ в таблице 2-битных счетчиков. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/4.md new file mode 100644 index 0000000..e646681 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/4.md @@ -0,0 +1,10 @@ +#### Определение и принцип работы гибридных/турнирных/комбинированных предсказателей. + +**Гибридные (турнирные, комбинированные) предсказатели** - комбинации 2 или более механизмов предсказания переходов. +McFarling заметил, что использование глобальной истории поведения переходов может быть менее эффективно, чем просто использование адреса инструкции перехода, особенно для маленьких таблиц предсказателей. McFarling исследовал несколько различных комбинаций 2-х механизмов предсказания переходов. +Он предложил использовать дополнительный массив 2-бит счетчиков как селекторов для выбора более эффективной схемы предсказания для каждого перехода. +1 схема предсказания соответствует 2 большим значениям селектора, другая $-2^{ом}$ меньшим. +Если $1^{ый}$ предсказатель ошибся, а $2^{ой}$ - нет, счетчик уменьшается. +Если $1^{ый}$ предсказатель прав, а $2^{ой}$ - нет, счетчик увеличивается. + +Никаких изменений, если оба оказались правы или ошиблись. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/1.md new file mode 100644 index 0000000..f0b546f --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/1.md @@ -0,0 +1,37 @@ +#### Определение кэша и кэширования. Уровни иерархии памяти. + +**Кэш** - быстродействующая буферная память между CPU и основной памятью, в которую помещаются фрагменты кода и данные, активно используемые программой в текущий момент времени. +**Кэширование памяти** - временное хранение в более быстрой памяти данных из более медленной памяти. +Эффективность кэширования основывается на локальности доступа к памяти. Дополнительно может решаться задача снижения требований к пропускной способности основной памяти. +Размер кэша меньше, чем размер основной памяти. +Кэширование используется на нескольких разных уровнях. С точки зрения процессора, кэш - это механизм устранения задержек. К памяти обращаться долго, но если использовать кэш, то время обращения будет намного меньше. +Часто данные одного уровня иерархии являются подмножеством данных нижележащего уровня: данные дублируются в более медленном нижележащем уровне - инклюзивное кэширование. +**Иерархия памяти** состоит из нескольких уровней. Меньший по объему, более скоростной уровень памяти расположен ближе к ЦП: + +- регистры +- основной кэш $(L_1)$ +- дополнительные вторичные кэши $(L_2,L_3,...)$ +- основная память +- устройства массового хранения (виртуальная память) + +Или + +- регистры +- кэш-память +- оперативная память +- долговременная память +- сторонние устройства + +Каждый уровень проецирует адреса более емкой памяти на менее емкий уровень, ближе к ЦП. +Когда для CPU требуется инструкция или операнд, производится поиск по всем уровням иерархии памяти, начиная с ближайшего с CPU (кэш $1^{го}$ уровня): + +- Если элемент найден, он доставляется в ЦП без поиска по нижележащим уровням. Происходит попадание в кэш (частота попаданий $=H_1$). +- Если элемент отсутствует в верхнем уровне, происходит кэш-промах, и поиск продолжается на нижестоящем уровне (частота промахов $=1-H_1$). +- Для систем с несколькими уровнями кэша, поиск последовательно продолжается на уровнях 2,3, и тд +- Если поиск в кэшах завершился промахами, запрашиваются данные из основной памяти. + +Взаимодействие «ЦП» $\Rightarrow$ «КЭШ» $\Rightarrow$ «Память» реализовано аппаратно. + +- Если элемент не найден в основной памяти, происходит обращение к диску (вирт. память). Это называется page fault. +Взаимодействие «Память» $\Rightarrow$ «Диск» реализовано в ОС при аппаратной поддержке. + diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/2.md new file mode 100644 index 0000000..119cb71 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/2.md @@ -0,0 +1,10 @@ +#### Определения: блок, попадание, частота попаданий, время попадания, промах, частота промахов, штраф за промах. + +**Блок (cache block/cache line)** - наименьшая единица информации, передаваемая между уровнями. Обычно размер блока - размер самого большого регистра. +**Попадание** - элемент найден в кэше верхнего уровня. +**Частота попаданий ($H_1$)** - доля обращений к памяти с попаданием в кэш. +**Время попадания** - время обращения к верхнему уровню, которое зависит от времени доступа к (S)RAM + время на определение попадание/промах. В идеале - 1 такт. +**Промах** - элемент должен быть получен из блока с нижнего уровня. +**Частота промахов** $=1-$ «частота попаданий» $=1-H_1$ +**Штраф за промах** - время на замену блока в верхнем уровне + время на доставку отсутствующего блока в ЦП + diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/3.md new file mode 100644 index 0000000..d73ccc9 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/3.md @@ -0,0 +1,16 @@ +#### Принцип локальности. Два вида локальности. + +Программы обычно обращаются к относительно небольшой области адресного пространства (инструкции и данных) в любой момент времени - к рабочему набору (working set) +**Working set** - набор адресов, с которыми программа работала в течение небольшого интервала времени. +Два вида локальности доступа: + +- **Временная** + +Обращение к элементу (инструкции или данным) имеет тенденцию повторяться. +Пример: инструкции во вложенном цикле. + +- **Пространственная** + +После обращения к некоторому элементу скорее всего вскоре произойдет обращение к другим элементам с близкими адресами. +Примеры: последовательное выполнение инструкций, последовательный доступ к элементам массива. +Пример программы, где нет временной локальности: поиск максимума в несортированном массиве, так как нам в любом случае придется просматривать содержимое массива от начала и до конца. Кэширование в этом случае практически бесполезно. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/1.md new file mode 100644 index 0000000..ee6be76 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/1.md @@ -0,0 +1,28 @@ +#### Кэш прямого отображения(Direct mapped cache). Поля строки/блока кэша. Проецирующая функция. + +**Кэш прямого отображения** - стратегия размещения блока основной памяти в кэше, где блок размещается в одном строго определенном месте, определяемом функцией размещения. +Существует три стратегии размещения или проецирования блока основной памяти в кэш: + +1) **Direct mapped cache** + +Строго в одно определенное место, определяемое функцией проецирования: index = (адрес блока) MOD (число блоков в кэше) +2) **Fully associative cache** + +В любом месте (нет проецирующей функции). +3) **Set associative cache:** + +В ограниченном наборе мест. Набор - группа блоков в кэше. Блок проецируется строго на один набор, но он может размещен в любом месте набора. Функция проецирования: +index = (адрес блока) MOD (число блоков в кэше) +Кэш, имеющий n блоков в наборе называется $n$-канальным наборно-ассоциативным ($n$-way set-associative). +**Функция проецирования** - функция, определяющая место размещения данных из основной памяти в кэше. +Для любой строки кэша нужно хранить: +1) Кэшированные данные. +2) **Tag** - адрес оперативной памяти, из которой данные кэшированы. Если адрес совпадает с адресом, к которому мы обратились, значит там наши данные. В противном случае надо читать данные из памяти. +3) Бит валидности - признак того, что содержимое записи кэша актуально, т.е строка действительно содержит закэшированные данные. +32-битный адрес разбивается на следующие поля: +1) Последние 2 бита - биты смещения. + +Относятся к адресации внутри кэш-блока, т.е это внутри блока байты с номерами 0,1,2,3. +2) Предыдущие 3 бита - биты, которые были получены от операции: +(адрес блока) MOD (число блоков в кэше) +3) Все остальное - тег. Возможные адреса блоков, которые могут храниться в конкретной записи в кэше. Если тэг из кэша равен тэгу из адреса, по которому обратились, и бит валидности установлен, то диагностируем попадание и берем данные из кэша. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/2.md new file mode 100644 index 0000000..6c4ce9d --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/2.md @@ -0,0 +1,5 @@ +#### Наборно-ассоциативный кэш (Set associative cache), полностью ассоциативный кэш (Fully associative cache). + +**Наборно-ассоциативный кэш** требует параллельного сравнения тегов и более сложную логику проверки попадания, что может увеличить задержку доступа. +В наборно-ассоциативном кэше меньше промахов в результате уменьшения числа конфликтов между блоками, которые были бы спроецированы в одну и ту же строку в кэше прямого отображения. +У **полностью ассоциативного кэша** никакого разбиения адреса нет, адрес блока является тэгом. В полностью ассоциативном кэше преимущество: высокая скорость считывания. Недостаток: сложность аппаратной реализации. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/1.md new file mode 100644 index 0000000..77a7aaf --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/1.md @@ -0,0 +1,20 @@ +# Определение микрооперации. Определение "среднее CPI программы" + +**Микрооперация** +- Элементарное аппаратное действие, которое может быть произведено за 1 такт CPU. +- Микрооперация соответствует одной микроинструкции в микропрограммируемых CPU. + +**Набор RISC команд** +- Множество микроопераций, которые выполняет процессор. + +**Набор CISC команд** +- Множество микроопераций, получаемых при декодировании процессором CISC команд. + +**CPI (Cycles Per Instruction)** +- Такт на инструкцию. + +**Среднее CPI программы** +- CPI, усредненное для всех инструкций, выполненных в программе на CPU с заданным дизайном. + +**IPC (Instruction Per Cycle)** +- Число инструкций за такт, $$ IPC = 1/CPI. $$ diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/2.md new file mode 100644 index 0000000..742a289 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/2.md @@ -0,0 +1,10 @@ +#### Уравнение производительности CPU + +**Формула:** + +$$ T = I \times CPI \times C $$ + +**Где:** +- $I$ - число исполняемых инструкций программы. +- $CPI$ - число тактов на инструкцию. +- $C$ - фиксированное время такта, $C = \frac{1}{\text{тактовая частота}}$. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/3.md new file mode 100644 index 0000000..1d3a828 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/3.md @@ -0,0 +1,10 @@ +**Факторы, влияющие на производительность CPU:** + +- **Число исполняемых инструкций \( I \):** + - Зависит от используемой программы, компилятора, ISA. + +- **Среднее CPI:** + - Зависит от используемой программы, компилятора, ISA, организации CPU. + +- **Время такта \( C \):** + - Зависит от организации CPU и технологии (СБИС). \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/1.md new file mode 100644 index 0000000..39d3953 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/1.md @@ -0,0 +1,17 @@ +#### Политики замещения Random, LRU, FIFO. + +Когда происходит промах, контроллер кэша должен выбрать блок данных кэша для удаления из строки и замещения запрошенными данными. Выбор блока производится $1^{ным}$ из $3^{a}$ методов: + +- **Произвольно:** + +Блок для замещения выбирается случайным образом. +Простая реализация. Наиболее широко используемая политика. + +- **Наиболее давно востребованный (LRU):** + +Все обращения к блокам записываются и замещаются те блоки, к которым не было обращения в течение длительного времени. +Метод LRU быстро усложняется в реализации при увеличении числа блоков. Поэтому часто используется приближение, при котором биты использования периодически сбрасываются. + +- **Первый вошел - первый вышел (FIFO):** + +Так как LRU и является сложен в реализации, этот подход является приближением к LRU в определении наиболее старого блока. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/2.md new file mode 100644 index 0000000..04967f8 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/2.md @@ -0,0 +1,41 @@ +#### Причины кэш-промахов. Уменьшение частоты промахов: дополнительный кэш «жертв», разделение кэша прямого доступа на 2 части, программная предвыборка данных, аппаратная предвыборка команд и данных. + +**Причины кэш промахов:** + +1) **Вынужденный** + +При первом обращении к блоку. Блок должен быть помещен в кэш. Также называется промах холодного старта или промах первого обращения. При запуске программы miss rate $~ 100\%$. +Решаются увеличением объема блока и предвыборкой. +2) **Ограниченная емкость** + +В случае, когда кэш не может вместить все блоки, востребованные кодом, и возникает «перетасовка» блоков (рабочий набор много больше емкости кэша). +Решается увеличением объема кэша. +3) **Конфликты** + +В наборно-ассоциативном или кэше с прямым отображением стратегия размещения блоков вызывает конкуренцию нескольких блоков за одну строку кэша; +Также называется промахом из-за коллизий или интерференции. +**Способ совместить низкое время доступа кэша с прямым отображением и низкую частоту промахов из-за конфликтов 2-х канального наборно-ассоциативного кэша:** + +- Разделим кэш. При промахе проверяем вторую половину кэша, если теперь происходит попадание, то это - «псевдо-попадание» (медленнее нормального). +- Недостаток: согласование конвейера CPU с переменной задержкой доступа в кэш ( 1 или 2 такта)Лучше для кэша, не связанного непосредственно с CPU (L2). +- Процессор может анализировать шаблон обращения к памяти и может пытаться предсказать адреса, по которым будет обращение к памяти в ближайшее время. Процессор сам инициирует доп. обращение к памяти, выполняя спекулятивную загрузку данных. +**Уменьшаем частоту промахов с помощью программной предвыборки данных:** +- Загрузка данных в регистры. +- Предвыборка в кэш. +- Спец. команды предвыборки, не вызывающие сбоев; разновидность спекулятивности. +- Обработка команд отнимает время. + +Время на обработку команд предвыборки должно оправдываться сокращением промахов. + +- Высокий уровень суперскалярности снижает «цену» выдачи доп. команд и одновременно повышает «цену» промахов кэша. +**Уменьшаем частоту промахов с помощью программной оптимизации компилятором:** +**Инструкции:** +- Расположение процедур в памяти так, чтобы сократить промахи из-за конфликтов. +- Профилирование для обнаружения конфликтов (используя собственное ПО). + +**Данные:** + +- Слияние массивов: увеличение пространственной локальности объединением нескольких массивов в 1 +- Согласование вложенности циклов: согласование уровня вложенности циклов для обработки в соответствии с порядком хранения данных в памяти +- Слияние циклов: составление из независимых циклов, обрабатывающих одни данные, общего. +- Поблочная обработка массивов: улучшение временной локальности за счет повторной обработки блоков данных вместо полного обхода по строкам и столбцам. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/3.md new file mode 100644 index 0000000..899fe53 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/3.md @@ -0,0 +1,15 @@ +#### Описание стратегий записи в кэш Write Through и Write Back + +По способу синхронизации содержимого кэша с основной памятью можно разделить кэш на: + +1) **Write Through.** Данные записываются одновременно в кэш и в основную память. + +- Нижние уровни всегда содержат обновленные данные; важная особенность для I/O и многопроцессорности. +- Проще в реализации, чем Write Back. +- Часто используется буфер записи для уменьшения простоя CPU, пока данные пишутся в основную память. + +2) **Write Back.** Данные обновляются только в кэше. Модифицированный блок из кэша записывается в основную память, когда он замещается в кэше. + +- Запись данных CPU происходит на скорости кэша. +- Бит статуса, называемый dirty bit или modified bit показывает, что блок был изменен; иначе блок не записывается обратно в основную память. +- Преимущество: требует меньшей пропускной способности памяти, чем стратегия Write Through. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/21.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/21.md new file mode 100644 index 0000000..a4e66c9 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/21.md @@ -0,0 +1,12 @@ +#### Понятие вектора и векторных операций. Способы использования векторных операций. + +**Вектор** - набор однотипных данных. Длина вектора определяется архитектурой. +Позволяют за одну инструкцию выполнить арифметическую операцию над несколькими парами операндов. Имеются унарные, бинарные и тернарные операции. +**Использование векторизации:** + +- Спец директивы или intrinsic +- Автоматическая векторизация компилятором + +**Векторизация компилятора** - компилятор сам может оптимизировать программу, представляя что-то через вектор. +**Спец директивы** - программист сам может напрямую сказать, что можно векторизовать. +**Intrinsic** - явный набор действий, которые надо сделать над векторами. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/1.md new file mode 100644 index 0000000..e9f7aed --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/1.md @@ -0,0 +1,13 @@ +#### Список метрик производительности + +1. **Физические характеристики (тактовая частота)** +2. **Теоретически посчитанные характеристики (мегабайты в секунду)** +3. **Характеристики, связанные с производительностью (MIPS, GFLOPS)** + +**MIPS (Million Instructions Per Second)** +- Миллионы инструкций в секунду. +- Оценка MIPS = $\frac{\text{частота}}{\text{CPI} \times 10^6}$. + +**GFLOPS (Billion FLOating-Point operation Per Second)** +- Миллиард операций с плавающей точкой. +- Оценка $$GFLOPS = \frac{\text{число floating-point операций}}{\text{время выполнения} \times 10^9}$$ \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/2.md new file mode 100644 index 0000000..9a7b2a3 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/2.md @@ -0,0 +1,13 @@ +#### Типы программ для оценки производительности + +1. **Целевая нагрузка** + - Полноценные приложения. Дают правильное представление о работе системы, но очень специфичны, непереносимы и сложны. + +2. **Бенчмарки** + - Основаны на реальных полноценных приложениях. Обеспечивают типовые варианты нагрузки на подсистемы компьютера. Переносимы, измерения полезны в реальности, но менее представительны, чем реальная нагрузка. + +3. **Небольшие тестовые «ядра»** + - Типовые фрагменты реальных программ. Лучше всего подходят для тестирования специфических аспектов машины. Легко использовать на ранних стадиях разработки приложений, но легко одурачить с помощью проектирования под них hardware. + +4. **Микро-бенчмарки** + - Пытаются оценить отдельный тип производительности. Используется один тип операций. Идентифицируют пиковую производительность и потенциальные узкие места, но пиковые цифры производительности могут быть далеки от производительности в реальных приложениях. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/1.md new file mode 100644 index 0000000..2b75d78 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/1.md @@ -0,0 +1,11 @@ +#### Определение ISA + +ISA определяет вычислительную систему с точки зрения программиста, т.е. функциональную структуру и принципиальное поведение, независимо от организации потоков данных, схем управляющей логики и физической реализации. + +**К ISA относятся:** +1. Тип данных, способ кодирования. +2. Организация программируемых мест хранения. +3. Набор допустимых инструкций. +4. Режимы адресации и доступ к элементам данных и инструкциям. +5. Формат инструкций. +6. Условия возникновения исключений. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/2.md new file mode 100644 index 0000000..72ad063 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/2.md @@ -0,0 +1,14 @@ +#### Архитектуры, использующие различные программируемые места хранения + +1. **Машины Memory-To-Memory** + - Операнды выбираются из памяти и результат сохраняется в памяти для любой инструкции, требующей операнды. + - В тракте данных CPU (datapath) регистры не используются. + +2. **1-адресные машины (аккумулятор)** + - Один локальный регистр CPU (аккумулятор) используется как источник одного из операндов и приемник результата. + +3. **0-адресные машины** + - Внутри CPU стек регистров. + +4. **Машины с регистрами общего назначения (General Purpose Register, GPR)** + - Тракт данных CPU содержит несколько регистров общего назначения, которые можно использовать как место хранения операндов или результата. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/3.md new file mode 100644 index 0000000..9683bb6 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/3.md @@ -0,0 +1,30 @@ +#### Режимы адресации + +1. **Регистровый** + - ADD R1, R2, R1. + +2. **Прямой** + - MOV 15, R1. + - ADD R1, #3, R1. + +3. **Абсолютный** + - ADD R1, [1001], R1. + +4. **Косвенный** + - ADD R1, [R2], R1. + +5. **Со смещением** + - ADD R1, [10+R2], R1. + +6. **Индексный** + - ADD R1, [R2+R3], R1. + +7. **Косвенный в памяти** + - ADD R1, [[R2]], R1. + +8. **Автоинкремент, автодекремент** + - ADD R1, [R2++], R1. + - ADD R1, [R2--], R1. + +9. **С масштабированием** + - ADD R1, [8+R2(R3)], R1. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/4.md new file mode 100644 index 0000000..d9a70f2 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/4.md @@ -0,0 +1,7 @@ +#### Архитектуры Load-Store/Register-To-Register + +**Системы Load-Store/Register-To-Register** +- Машины с GPR, в которых только инструкции перемещения данных (load, store) могут получать операнды из памяти и сохранять в нее результаты. +- Упрощает архитектуру CPU. +- Регистры быстрее, чем память. +- Компилятору проще использовать регистры. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/1.md new file mode 100644 index 0000000..4e74e73 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/1.md @@ -0,0 +1,16 @@ +#### Перечисление типов команд + +1. **Перемещение данных** + - Сохранить в регистре заданное константное значение: MOV 123, R0. + - Скопировать значения из памяти в регистр, или из регистра в память, или из регистра в регистр: LD [Addr], R0; ST R0, [Addr]; MOV R0, R1. + - Чтение и запись данных с/на устройство ввода-вывода: OUT R0, IOPort1; IN IOPort2, R1. + +2. **Арифметико-логические операции** + - Сложить, вычесть, умножить, разделить: ADD R0, R1, R2; SUB, MUL, DIV, FADD, FSUB, FMUL, FDIV. + - Побитовые операции: AND R0, R1, R2; NOT, OR, XOR, SHL, SHR, SAR, ROL, ROR, BT. + - Сравнение двух значений: CMP R0, R1. + +3. **Управление порядком выполнения программы** + - Безусловный переход: JMP [Addr]. + - Условный переход: JE [Addr]; JE (Equal), JNE (Not Equal), JG (Greater), JGE (Greater Equal), JL (Less), JLE (Less Equal), JZ (Zero). + - Вызов функции: PUSH R0; CALL [AddrFunc]; POP R0; RET. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/2.md new file mode 100644 index 0000000..9975c59 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/2.md @@ -0,0 +1,10 @@ +#### Кодирование инструкций + +**Кодирование инструкций** +- Представление инструкции в двоичном виде и хранение в оперативной памяти. ЦП считывает и интерпретирует ее. +- Желательно иметь как можно больше регистров и режимов адресации (CISC - подход). +- Размер регистрового файла и размер поля режима адресации влияют на размер средней инструкции и на размер средней программы в целом. +- Желательно ограничить длину кода инструкции ради эффективной обработки при реализации (как минимум должна быть целым числом байт). +- Фиксированная длина - работает быстрее и проще реализовывается аппаратно. +- Переменная длина - позволяет уменьшить средний размер инструкции. +- Гибридная. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/3.md new file mode 100644 index 0000000..db66266 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/3.md @@ -0,0 +1,18 @@ +#### Определение и особенности CISC и RISC + +**Сложная система команд (CISC)** +- Нефиксированное значение длины команды. +- Арифметические действия кодируются в одной команде. +- Небольшое число регистров, каждый из которых выполняет строго определенную функцию. +- Акцент: больше работы на каждую команду. +- Мотив: высокая цена оперативной и дисковой памяти в то время, когда CISC возникли (1980). + +**Сокращенный набор команд (RISC)** +- Фокусируется на уменьшении числа и сложности инструкций ISA. +- Уменьшенное CPI (Цель: 1 инструкция за такт). +- Разработан с учетом конвейерности процессора. +- Фиксированная длина кода инструкций. +- Только инструкции load и store обращаются к памяти. +- Ограничены количеством и сложностью режимов адресации. +- Задержанные загрузки и ветвления. +- Упреждающая выборка инструкций и спекулятивное исполнение. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/1.md new file mode 100644 index 0000000..ca13dc4 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/1.md @@ -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. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/2.md new file mode 100644 index 0000000..35b654f --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/2.md @@ -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)** - «непосредственное значение - регистр». Используется, когда возможно взять адрес следующей выполняемой инструкции. +Стадия декодирования облегчена максимально: анализируем битовые поля и отправляем в известные позиции на промежуточном регистре перед след. стадией. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/1.md new file mode 100644 index 0000000..40e44b4 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/1.md @@ -0,0 +1,21 @@ +#### Принцип конвейерной обработки инструкций. Определение ступени/стадии конвейера. Ступени конвейера MIPS (пример-иллюстрация). + +Конвейерная обработка инструкций - метод реализации CPU, при котором множество операции над несколькими инструкциями перекрываются. + +- Конвейер, исполняющий инструкцию, состоит из множества шагов, где на каждом завершается этап обработки инструкции. Каждый шаг называется ступенью конвейера или стадией конвейера. +- Ступени и стадии конвейера соединены линейным образом: инструкции входят с одного конца, проходят по ступеням и выходят на другом конце. +- Конвейеризация не сокращает время выполнения отдельной инструкции. + +- **Ступени конвейера MIPS:** + +**IF (Instruction Fetch)** - выборка инструкций. +**ID (Instruction Decode)** - декодирование инструкции +**EX (Execution)** - исполнение. +**MEM (MEMory Access)** - обращение к памяти. +**WB (Write Back)** - запись рез-та. Имеется в виду запись в регистр. +![](../data/4.png) +![Ступени конвейера MIPS](../data/3.png) + +Число тактов до заполнения = время разгона = число ступеней -1 +Время разгона $=4$ такта $\mathrm{CPI}=\frac{9}{5}=1.8$ +Идеальное CPI $=1$. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/2.md new file mode 100644 index 0000000..262d1b8 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/2.md @@ -0,0 +1,7 @@ +#### Латентность и пропускная способность (+определение). + +**Латентность** - время, требуемое для завершения всех шагов по обработке инструкции (время задержки завершения инструкции). + +Мин. время задержки завершения инструкции равно числу ступеней конвейера. +Конвейеризация увеличивает пропускную способность CPU. +**Пропускная способность** - среднее число инструкций, завершенных за такт. Величина, обратная СРІ. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/3.md new file mode 100644 index 0000000..7ea9bc3 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/3.md @@ -0,0 +1,8 @@ +#### Упорядоченный конвейер команд (+определение). + +Вышеописанный конвейер - упорядоченный. + +**Упорядоченный конвейер** - конвейер, где инструкции выполняются в порядке, указанном в исходной программе. + +Время перемещения инструкции на один шаг дальше по конвейеру равно 1 такту. +Длительность такта определяется ступенью с наиб. временем обработки. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/4.md new file mode 100644 index 0000000..637e208 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/4.md @@ -0,0 +1,17 @@ +#### Производительность CPU с конвейером по сравнению с CPU без конвейера. + +В идеальном случае (без тактов простоя) происходит завершение $1^{nd}$ инструкции за машинный такт, т.е. идеальное $\mathrm{CPI}=1$. + +- **CPU без конвейера:** + +Время такта $=1$ нс +4 такта для ALU и переходов. 5 тактов для операций с памятью. +Соотношение ALU:переходы:память $=40: 20: 40$ +Среднее время выполнения инструкции без конвейера = время такта $\times$ среднее CPI $=$ $=1 \mathrm{нc} \times((0.4+0.2) \times 4+0.4 \times 5)=1 \mathrm{нc} \times 4.4=4.4 \mathrm{нc}$. + +- **СRU с конвейером:** + +Время такта $=1$ нс +0.2 нс (за счет конвейеризации) +5 ступеней используются со средним временем выполнения 1.2 нс. +$\mathrm{CPI}=1$ +Ускорение $=\frac{\text { время без конвейера }}{\text { время с конвейером }}=\frac{4.4 \mathrm{нc}}{1.2 \mathrm{нc}}=3.7$ раз \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/1.md new file mode 100644 index 0000000..d525878 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/1.md @@ -0,0 +1,7 @@ +#### Определение конфликта. + +**Конфликт** - такая ситуация в конвейерной обработке, которая препятствует выполнению очередной команды в предназначенном для нее такте. + +Конфликт может привести к $\geq 1$ тактам простоя или ожидания (stalls). +Конфликты уменьшают идеальное время конвейера, повышая CPI (CPI $>1$ ). +Приводят к необходимости приостановки выполнения команд. Обычно в простейших конвейерах, если приостанавливается какая-либо команда, то все след. за ней тоже приостанавливаются, не выбирается ни одна новая команда. Команды, предшествующие приостановленной, могут продолжать выполнение. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/2.md new file mode 100644 index 0000000..10dd30e --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/2.md @@ -0,0 +1,11 @@ +#### Классификация конфликтов (определения: структурные конфликты, конфликты данных, конфликты управления). Обработка конфликтов. + +1) **Структурные конфликты (IF/MEM)** + +Возникают из-за недостатка аппаратных ресурсов, когда доступное аппаратное обеспечение не в состоянии поддерживать исполнение всех возможных комбинаций инструкций. +2) **Конфликты данных (RAW, WAW, WAR, RAR)** + +Возникают, когда инструкция зависит от рез-та выполнения предыдущей инструкции таким образом, что это проявляется при перекрытии инструкций в конвейере. +3) **Конфликты управления (JMP, J??, CALL, RET)** + +Возникают при конвейеризации условных переходов и др. инструкций, которые изменяют IP/PC. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/3.md new file mode 100644 index 0000000..942be96 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/3.md @@ -0,0 +1,19 @@ +#### Причина возникновения структурных конфликтов. Изменение СРІ из-за структурных конфликтов. + +Причиной возникновения структурного конфликта может быть: +a. **Не полностью конвейеризованная структура процессора.** + +Некоторые стадии отдельных команд могут выполняться более $1^{го}$ такта. В этом случае последовательные команды, которые используют данное функц. устройство, не могут поступать в него в каждом такте. +b. **Недостаточное дублирование некоторых ресурсов.** + +Препятствует выполнению произвольной последовательности команд в конвейере без его приостановки. Например, машина может иметь только 1 порт записи в регистровый файл, но конвейеру может потребоваться выполнить 2 записи в регистровый файл в $1^{ом}$ такте. +с. **Общая память для инструкций и данных, и единственный порт памяти.** + +Когда одна команда содержит обращение к памяти за данными, оно будет конфликтовать с выборкой более поздней команды из памяти. Чтобы разрешить эту ситуацию, можно просто приостановить конвейер на 1 такт, когда происходит обращение к памяти за данными. Это конвейерный пузырь. + +CPI = идеальное CPI + средн. число тактов простоя на инструкцию. +Но простои из-за разных конфликтов могут накладываться. +В случае с структурным конфликтом при обращении к памяти (простой 1 такт), если обращение к памяти составит 40\% для некоторой программы, то без учета других потерь производительности: + +CPI $=(1+0.4) \times$ CPI идеальное +Т.е. CPU без структурного конфликта в 1.4 раза быстрее. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/1.md new file mode 100644 index 0000000..2310426 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/1.md @@ -0,0 +1,9 @@ +#### Определение и причина возникновения конфликтов данных. Определение параллелизма на уровне инструкций (ILP). + +**Конфликты данных** возникают, когда инструкция зависит от рез-та выполнения предыдущей инструкции таким образом, что это проявляется при перекрытии инструкций в конвейере. +Происходят, когда рез-тат предыдущей инструкции, от которой зависит данная, неизвестен вовремя, или когда в конвейере меняется порядок чтения/записи операндов так, что результирующий порядок доступа отличается от исходного порядка доступа к операндам на машине без конвейера, что может привести к некорректному рез-ту выполнения программы. +ADD R1, R2, R1; +SUB зависит от ADD. +SUB R3, R1, R3; +**Распараллеливаемые (независимые)** - инструкции, не имеющие между собой зависимостей. +**Высокая степень параллелизма на уровне инструкций (Instruction Level Parallelism, ILP)** - присутствует в заданной последовательности команд, если она имеет большое число распараллеливаемых инструкций. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/2.md new file mode 100644 index 0000000..16db55c --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/2.md @@ -0,0 +1,7 @@ +#### Пересылка данных (Forwarding). + +**Пересылка данных (Forwarding)** - аппаратный метод, также называемый обходом регистров (register bypassing) или закорачиванием (short-circuiting), используемый для исключения или минимизации простоев изза конфликтов данных. + +- Рез-тат выполнения инструкции пересылывается напрямую из места, где он был получен, туда, где он нужен последующим инструкциям. +- Рез-тат ALU из буферного регистра EX/MEM может перенаправлен к входным триггерам ALU вместо записи и последующего чтения операнда из регистра на ступени ID. +- Рез-тат чтения данных из памяти из буферного регистра MEM/WB может перенаправлен на входные триггеры ALU. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/3.md new file mode 100644 index 0000000..1c5b84d --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/3.md @@ -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)** - нет конфликта. diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/4.md new file mode 100644 index 0000000..56bcb7f --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/4.md @@ -0,0 +1,3 @@ +#### Обработка конфликтов данных в конвейере. + +??? \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/5.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/5.md new file mode 100644 index 0000000..68a1198 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/5.md @@ -0,0 +1,6 @@ +#### Статическое планирование инструкций. + +**Цель:** избегание или сокращение числа тактов простоя. +**Метод:** переупорядочивание или планирование инструкций - изменение последовательности исполнения инструкций с целью избегания или сокращения числа тактов простоя. +**Статическое планирование** - производится компилятором во время компиляции программы. +**Динамическое планирование** - производится CPU во время исполнения программы. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/1.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/1.md new file mode 100644 index 0000000..8fc2f12 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/1.md @@ -0,0 +1,9 @@ + +#### Определение и причина возникновения конфликтов управления. + +**Конфликты управления** возникают, когда неизвестен вовремя адрес след. исполняемой инструкции. Конфликт имеет место при выполнении любой управляющей инструкции. + +- При выполнении условного перехода может измениться Instruction Pointer. + +Для корректной обработки требуется остановить конвейер на много тактов, пока не будет вычислено условие перехода и определится направление перехода, иначе IP может неверным, когда потребуется на ступени IF. + diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/2.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/2.md new file mode 100644 index 0000000..15f4bf6 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/2.md @@ -0,0 +1,16 @@ +#### Аппаратные способы сокращения числа тактов простоя (+пример). + +1) Как можно раньше выяснить, выполняется ли переход +2) Как можно раньше вычислить адрес следующей исполняемой инструкции. + +**Пример.** В рассматриваемом примере (MIPS): + +- Инструкции условного перехода проверяют значение регистра на равенство 0. + +Это действие можно завершить в такте ID, перемещая проверку на этот такт. + +- Оба IP (выбранный и невыбранный) должны быть вычислены заранее. + +Требуется доп. сумматор, тк имеющееся ALU не может использовано до такта EX +В таком случае будет только 1 такт простоя при переходах. + diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/3.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/3.md new file mode 100644 index 0000000..8c8a0d8 --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/3.md @@ -0,0 +1,33 @@ + +#### Статические методы обработки условных переходов. + +**Задержанный/отложенный переход** - инструкция, след. после перехода (из слота задержки перехода) исполняется независимо от того, произошел переход или нет (введена частью ISA). + +- **Предположение, что переход никогда не происходит.** + +Продолжается выполнение инструкций, начиная с инструкции, след. за инструкцией перехода, но состояние машины не меняется до тех пор, пока рез-тат перехода точно не определен. Если переход не произошел - состояние сохраняется, если произошел - рез-таты отбрасываются, фактически произошел простой. + +- **Предположение, что переход всегда происходит.** + +Продолжается выполнение инструкций, начиная с места перехода, ... +Труднее реализовать, чем предыдущий вариант. + +**Пример: схема предсказания «переход не произойдет»:** + +**Переход не произошел, нет простоя:** + +| I (untaken branch instruction) | IF | ID | EX | MEM | WB | | | | | +| :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | +| I+1 | | IF | ID | EX | MEM | WB | | | | +| I+2 | | | IF | ID | EX | MEM | WB | | | +| I+3 | | | | IF | ID | EX | MEM | WB | | +| I+4 | | | | | IF | ID | EX | MEM | WB | + +**Переход произошел, простой:** + +| I (taken branch instruction) | IF | ID | EX | MEM | WB | | | | | +| :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | +| I+1 | | IF | Idle | Idle | Idle | idle | | | | +| Branch target | | | IF | ID | EX | MEM | WB | | | +| Branch target +1 | | | | IF | ID | EX | MEM | WB | | +| Branch target +2 | | | | | IF | ID | EX | MEM | WB | diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/4.md b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/4.md new file mode 100644 index 0000000..adaf24d --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/4.md @@ -0,0 +1,16 @@ +#### Статическое предсказание переходов. + +- Выполняется компилятором. +- Кодируется в инструкциях условного перехода, используя один бит предсказания. + +Например: 0 - переход обычно не происходит, 1 - происходит. + +- Требует поддержки на уровне ISA. + +**Два основных метода статич. предсказания переходов на этапе компиляции:** + +- **Сбор информации о поведении программы при ее запусках и ее использование при перекомпиляции (профилирование).** +Например: профиль программы может показать, что большинство условных переходов вперед и назад (часто вызвано циклами) происходят. В данном случае нужно всегда предсказывать, что переход происходит. +- **Эвристическое предсказания переходов на основе направления перехода.** + +Например: помечая переходы назад как происходящие и переходы вперед как не происходящие. \ No newline at end of file diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/1.png b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/1.png new file mode 100644 index 0000000000000000000000000000000000000000..44e8f5db943c887647afa3468ff93871e3edb7b2 GIT binary patch literal 110183 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 Ku6hZS*ZvPI^fw*= literal 0 HcmV?d00001 diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/2.png b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/2.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa6557c4f6cdee2980a43f1ba74786a54533474 GIT binary patch literal 107772 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

bXA+TpEzzs;ad$sDYRtHjQiXOdXZT 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 B_A3AY literal 0 HcmV?d00001 diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/3.png b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5b5365e4cacc6e805988b9a5a1ad087887aec1 GIT binary patch literal 9140 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 F{|`N4#N_}0 literal 0 HcmV?d00001 diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/4.png b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/4.png new file mode 100644 index 0000000000000000000000000000000000000000..90a5f9eb353eb02542e00ab9f618a0e5060631fe GIT binary patch literal 17279 zcmXtAby!nh+#fx9bl0d+(%mpZL`u3Fq(M4Ik8Y$v5KtN^X`~ww>5>L%kgj*X_kG^` z2hX;<-JP9#&i8!k5Tl`{go{Oq1pokWUn@hk001O3#A8DsGUBh4(Qgd^fFAG~Dy!|A zchqT@ZanWte;c$ORO_Lqw}&dwM$kq8R|Sj%QK3BgpP5D*tpm6;zfBcfJ!duG*?A{Q zRvMhXs6|5?b++2?Q!K)O-|PLmn- z!gE7~75fBwynh4c=Q}PFMV<6hVZPz%7=Z(1KqIoS&Eo!{=0K;XCo0nr=bQDQ9+f=1+W z-Qk2%sNw^9=pk_AUH~V07BTYfbn%~ox6@(U(_C0CeUppk+5)a4JlX#*_;su zwkKnTB16HPh7qC3!z2Y4AJ7`ik+_h-VQ|i>bW25aGFfQ+Au;`|>SfY|lmGBx0CX7K zYmO>dywWp&!OPu)Tvo2h017|cz8YlvT@M)=hePDR#Z4f#YDtAe*hMm^2MDsHuSV_R z0gGOXhW4~#s*v0M_$rG8022?$CrJgq+&}1^F5C^i+@AR4=Hv)D2Nrb*lmfEQu#-7% zIq7kf@#5-`%8-wJV&%5 zJr9zBf*6Rwgamm8Pz?ZoE^QfxyC%SFwYj15(C~zdl%0mW?l-dJu!8SqOLJ!V=6EqN zF+}v;9>Mg^*fGtq9@Kg=@BaEa(VCAU1}awLEv{h0Rn7I|n3J1S8&;{yZQAVlsS+du zyd;;v&7#=$Uk1n$zhNi1>mO=yS#Uf3!8r81toL#~vhM%yWR?S@c`H_))=7;R;s9qa6p>EW~_XBCnGYGhkT^G*@+B{{SHy#s6 zM@7_OBHwXv#;Q|N^6lHVPeGD+_mz4zaH!nrZL=-%xVe8%hkzofEd9?YBW~|Nr?Dts zPF=S-0Z=v}ZSC>Gx?fXym9-QIsE>;K+dXb)kQ~gXI6pt7#_}#j8IqyGz&@l&l92)O z*qhZOB=`Um;QTo^7jXV-)@F?CJ(9w3rm6zg4qyQk&eH(o)94A;Twnlz&{auTgm$CO+hXTBFJQhn1PamN?~fI|w~};#PWQDPQ*QDp8$teF>eM?;Zzo!A;E4 zW_cE2y`g3}h zF4!PTG=rU;?RBg&Cux(?Rt%(An|KIY$qMkzAZT~|pt+d?tcWI$8hrsLjQ>*Nqs@kf zJV!1KV}{f2EYNv_e0LDr}OS9nG`DzNOCTP!KM2C z=8EPT=sX6*@1Ua6;q=LM{UsZIO&OVZ7yo(yQOMx9D4Jvlc0XfGB|I_Q8&}rW`Vp1D zPDm11WOD>VR>pzs17WawR`bc89%K|**l`mjP6-e>4j&nU3IjViqfe%2`1p_kK5M;( zLPx)Xfh@kG=~{z>?lja?G!Bx>VLfJvpF!#62ZLBOw3510yBYFki?SPW>Rgki-y~ z#b4_2in9k$ZNeMs!fT5!gp+`r7LUEPiMzu=W;zD#!$z+f+|u@)= zO1JA&!DV%|fPvU&19}{ZN<0I zZ(`W0T_7q;`GOx+vg(Xfv9|qaByy+#tN5>9Yhs~bMSk$r&DGQD{LAFc(`oSOL(Sp$ zng_d(YdgEif?2~ft#PE2El<0j6N+}b<2BFYc7=i0tkR+(pAs~}>Y9Nmgsx z$qsgQb}qadw=*;}G!1#Ws(m?LmwK5gyuP`433++y4!H?fM}rdFP2-2$3Wr>hSlHIH z#Mz_L{gD4nkDg!={<+z8`TBa<)v@~JpZZHD0^PRQFwitHk9v zKODj-DA)uDLmLy{`lDMCeQ3W*Ye8yjT32*X5O8Ap&D#Chnsfw`?PiY5T*6ZVDS^lf z46<_+4NQljlYF1FA0#4$%2B1*gexa%`K$*`StUtc|C>>N`IBu&5A4~|BK4R<=3n>x z5)szl@b~cf<5b8=VelEZ-IR%w>)~T1_fy8!myp|`5E0MYpEoZrvkVC;Dk>_O`R$P9 zp0t;XWqipsL4y$yWpDaA9p^L|z!-47yhe7$DyH(p+TFK0bx}XT8PQR3G>ihw`~y3h z`C3D6a)Fld?j}Byd7@L&FOR*E*i-r9L*q4vQjceSm3p<_)X~{3PHPuewL!B9ECs>$ z*zG=@q(6m5V{NYXMUM5_=cm*W`pB4>ncKaO{r`R~$D@_-y}Q^EbexM% zN~$%kzfgZUQtx`)dGRqfFDkRub#|`adq1x;vr^BGYg@$#0GLzOpg|zW2pCJq1f_@b zM9Zm3&|*if&>tv~E654xQcvloD|>zY`YJL$ued9L~W4%lWx7u&*&!EO> z!>pj{%L8S_Tn-upJZeXBP$&x>Q+iMaUqcsPNFM(dVy$287*ZEeX+DKw6Wa`_bR@vJ_el17!XfxR$W zzz4c4eIxdejSA?3=21BLyjQA1%+(>C@6**hZJ^sbPEy=x6X$=G%cf6jH(kp!GbY;U zZt^Y)HUp1$mqanXuMNHupwOe{#eU5yi7V04{mh=GZA9zA!)UHQ{)l!dCca!*QK?&P z=ym0wCsE)=-Euja5pwr2M01qul^XBm@GzWLkt$!0KwA6vEs2HVgAo$F+vuLeg%DcK zhjaR1>%%$GtE-F*5*?i#Fl~xeJg)Te?|2Zu;a)c(Gd*0Y7^Mg)R4^J8xkz^`d=3Nx zv^3pET&1ttdv0$T>7;!wwB28ikae9!M#hoF$<!e-nJ_!?@ulAM_-7I0x49dp|N$_z-T-dHs*> z$zmaaBf9HM$?V?MW&UF=THmP^q7##<_3ahJ~( z6}#Ne7jGEm*|^@aDIryO`pZQSr1PR{I>pnu?m0eEGL+|&eNm;ij1YhT=szdq(#e4V z@3UH9)HeFC^aOT(4Jpn%{KMCOrl(fTP*F!!-lgdG^Ke8HDby>`1@!BDil+6`*GL{# zY*45Y*T&=^od?iUGI80XOhm|<_m`E2Umvuuzf6|}oU}Sl@P)pH=85~9gxssYkcp&D z`m!d{%JIIOOufj7n#U=BP)u1M#>cTPl2KEz`oT$6+B z*&^wqnt)h9nkY-z0pLTfn^SfX zN@D=yo$xoo__19G{OfQ=kn3wvBhWw#KqNv2at&y46E?sS01E|PPF_%3lKc$MxH3Fc z6%x;$(0_FVVUC9a!TnuzBBUe9SrlwwNT1b~UK=_wyP|+{RHQL6mr$fyXwg~5v*#QN zD(+@lvIPKn2ZE%%pG?lw+}O|Ql$DJZ=2>R!k#fb-5EL+e1WdE$6=oAK?B7*F0#n*P z5Kqt|rxIBbuq4Ui_~J-~DNl+zIRpBZVCwzw;sm7Ti#`TSq+$yOEocvCFQ1T9O_L^8 zcyVcVj9v>+vW~Y1Kw!`h%%UIT8zvWYYUpJsTtopNTk8X4*!T*Pid;TpvR;?@8^UNy6#tjD%Pyp7+k(C@@ad9;r z)&fxGmvADCB513m%yFnPFZD1i>y`fiCOAl1ahj36fYDJ(aN9e>b~mCs^GhR|p>v54 zPfu{J;7IYlwZ8;$EW4-V6ow}&%Zy^rLS^~|>Qc==0YPEcAm5Vk=2%>bGP}a==7TQr z(RTx{Vo}g#U)`t&9~M4mYYzCg-qu1$=mhB(YQD{9{JJFyKSRZUg4kZ;Jq1wK8?pzQluP^s0D&MhHJDx@1jo;(;|g^^RAJQgQ|Buh-980>jzILY|W^Ob>{ zfd#Hzk1MZ6x%NgjSPnWcpir49yeu%~hwJ5p0~8uBED5F6H%PPC`v;QlzO)w5y#8I1 z`^GW~(BlgL{6Pl9j{T_v#DP+gq7@=K;3%)yqJNOByAR*u{GpHhbuj*;WnJp*dbyN@ zr2FNox~_Ic0xmAd5en)9fT5g4BC6(8WD%+E!GAZ}(NYe~-oevuw8C{N>K<~?&!7>2 zEsNW2#v5@(iqZx`DL;pEBUhS4Xi4R1UWn3%ckUAGo8fHe4%VI&)tPo4uBAm|gYm_1 zifZn+vMyMy`+BctpQQsSpH?c66wKCx4~?tuL~X zw;7>KkB*XXW_HP5TL~oi_K!|kg#bi~WRA{bVnP$ukfQOutjy)*If&|{oAsy&R>yM`TUh54xtzDJSB8k@6P@SIgV&08XgF1& z@2)XKdPXL9 ziwJP+N|Fi~cu$)yvnsyo%I|q5lkB(rBJoN=G2j70_=^p5~ zxM2cZCz$`+{(3o)a9Ki6{0|e_x{)eZ*FwKBR?X$5@b@P8g@5EPW#LouXz>W>I|M>5 z&_UJ%(^M}ne@tM4=bvLJ;76Jh$thRGvAJYJGQYA zL@1RD4Erp>5|tc|hrV(AzF_f&PZG&oJBM0UPAg2dRk7=B5)jBwz?CH&at~)^fQNp(A0DN0Xq%1kO{;oyO40V8R22dLsdx zEb}PRXpSrV8+-*P)?ihbn429(v;p9~bz z7`A$7LZFZ^b0?2ugmI?ahoOu=w}%M;XN`nu);HKK>(%Oy_Tmx7*vg{k7WfBAJ4aGd z(|BO^dly3ipzS;>Z-;b!(ER8!A!iMcFaQs0sfU)m{%Nvbgx(!ZQNk@k|0gRcP{Nc zlzkKUnjCc8s{6HD_T4BFN8NiVxH7q?>A;}}1`@!x;-^^mX*vrdFqWP^DlkwU0Mo>Q zLo9i4!qOeTprPd~{Khjs^@f77>FdHhxb$7a$T`uKDfcEN1IlbpI{Z`w&{Fo_v+gl^ zAYk^7+dd3DpgBPS5;?RX~df7%5}qP?HG<^^B#x(I~A;J#DShjS;yw7zT~5#;>=f6 zF>+h^FXO+r-C6DpkvJt+1iFufR6|#>@t`nrduz{#bzzbh4A~ zO@>pN3lF6lX@MtBqzE@<9X&nMu9Yqazck)3NM3`0t-wm+P$yYk3Wm7`=il*z4{0KnjbNQ$KKww#CRL+*FDO>}mmA0O4Bbk{0%e2Z?}LUt zGA_fTqV2${)9WIm4;Id4bk-SLlQ||K=UR3Kcb1Xp*w<{&ZWy=0e}p7E%Eb-Hc8Bf# zodPX)Vr{S#L^$?$A1~0Fx!16qE>>l#?rI3W*1NBbaXTB;7qd~K*$z_aS`GfFR>hAz z3*IHy|AoBAZTh9ACRU+um_lxR-Q&K~l_%J>b%z<%NZBwQ_%WT-=L&xgQF7r?#zTg{ z>(FdJqHbsPZVZqOQ{Lol_1=`ApfDkYH9E>WuGsSDM-~_lIcWJX(Bu4rx6T3K=q!{p1?R>G;y76dp+eP?tSXYzE5F{(}f9xG>tcLnbyG4 zlr5jB1ho@8SwxxLZolhTv>6`Q5-KJpmbqFV;bb$VY8QTrg0(j}$W**B`t8?T<_Ajc zS7?#gmWlj0E;jyIx;A%}rY_QEZ7aIEx`epmcP2O#mpcxp`^Igj#)AL;KMN2kPb72= z?_sia={u^-&o>BH1VWQ3LeY}3`5$e8E2G!{9`eZeiBjg4_&sWxY$pDa&`X6K2jH4N zEU(^<7`?{G({M@T7vn9W$~2G{rg*d;cj9X z&b0?su02G(F#USeEPv;D^hW^l_#zxi3!tC(rOS>a=I9q~5){9tC2ok9sdqlcXP?)n zHs7rpboT#_cSL0kumzd*&MS6QML1|-Mh98xr>BX#j@EU&=Uu99s{kZ32B4zaqVzD2 z*spkD_@g_FriD?+q7)YuNjQ}Kcaf}MOaM%--7ymcpb-!BJlGr<)f^vm&^SGpZTVZV zhJy+q6P%C^e)Qcbdw?v|Fxw{+ZCq<;NC6R+&4^T>?*p9Ge3!X=S=A^}y9+FkOUe$9#L`>;D=??8Lf# zA9Y`%lr-U(L!*VtY2T^J&;H5>;ZK_(_qOJL$XfKm9EP7`A6~9YhF=M%(E{|@bhJ_} zLpP?+V^c*?xo+(iz#aUO3q{!c;H9%T)QoohB62VcX!>zLu-f;=mVQPZ@_3IIIdDp~ zh9rK;ocd$NxeW>U4X~g_r0j$ucJ-R?iW1vw7q=z* znQF~V;zb;*?oHtQQbtPMx7Ei_J<|Ezbw%0lHmqFQbZ2Oz?|y$Vj!yma)$L;zox|d~PwUO8n-BSJ_#r}@<-*|6c zC)@M@ks+KSL1vLjQd=$ke;%X=7LPBX{qA`k6GTqjel(IRs24(nUE+O&^{s1*zcxVt zY{y2f(E%jPoX=>IV`wgF_`MJ0hS z51REGOrS=6-JzJFBl3rQgfTW6^aNdV&aO3@>8-tREQ&vjA{%n&^xIa;c6c9?wOm?nZrl3H?R$X{+T$I|;O~C{OU=U905VU* z9^;EcFS72LicxLUK2w(|TR>f>-);V@7Dx-~4o`)YxRV0g@KNO6pFSWSG|=)>S;g}Likh;svIGY8p9Mrk4<5Sq{1W92xYI^%d$%73 zZyLsz=A#7f3)E4Gh=>dWkR^nKTyRie2+=~~0nEx8?y^v@=T~6IAD884Y1w-zG2{;I zzwB@la=hAAWwDB{r{+x?v9Ctzxe2n0e>(D`wciriekg$Z79=Sz%`-A?>CR5tHe{>n zvSo}|bG|B_c@G`8=JTdAeb5+#No!T3KqKH;e!jj7aJa-2WAVRR5l6Fl zS+JQSlCm93#^L9oUn*>+)ay4~VPH#yjy7Tq_~|8Yn5)Xd0WLT-ICey|EjH}DUXynT z(ST1eF`Ot4ng6z#*z=T=LeGD|YyF&hKTs>_Q&}Cg`4wOQ(hgp?v+Dax;3CHoQz`OV z3hpA^X;)WqoXSS zdn;;dPuu7~P~LynriUHBK2H4YI-w=oJ~VsCAwAmfXtP^?M%Z55_72bIAEu_V`ETf6 zHt2|AiV;xMq{H|9=~@sYV~M!;QQ%gB35Q;dwo1^kqnWtZ-`|Ne;-s&f?yr5iyiShp z3QnHq=H`Ug7f9Yjgj{dFDP<-xd%0hKWp8*^?fPWpYId`*uz%Bi^R%%seSLkcXX>}J zKV1U%-T(Os1p}|+Vw58xA;IkFuijLi=*;?hxA~7SL^&2Frmq(leoZW=H+>mjb zA`G^@qs4~qi;P-?Cr2$EyyCS=W)|pOKKDI}+%r2mIH97TSZ%O7Ju^7{oEIo{BabCV&a;!aFY-ssb{CC#ON!)#N`=sR>%2-b){lGmCv+#!dsp?zBuJp^t zmv2RW=Qqy>*_UM8iRDAjdmp9>#J%{oMP81_LT2WsS65dXzW4>(+3kIjkER}4YL2vFBinEezUU7YgsQu^t&1nqjK&*`LzYks#cTZ(Fdh<6xj z2*R;5vlsQb|2Hx+;u+#Pm2quup`gP`GnOrH# z+qdUih@rnmfz{NU*cJHg zBCZK#KeTyxcxakKB;*t$lxY37C&f>lTwT{&TAz!O-7^-B)u)Q&JB{x3}N5*d+^S zsi`?RI2wK}lQ+1ockKmVY)z*SRC|d@t}V}tJI+<*i?54#|GWM3=jYqD>p&wH|xGz38|@sL+&grtgJIcM~)VlLajvYerMbp#;4n8awx^r{%$i* zMnaMxkJk;;;P`L82Q(QvI*#+JCR&Em9d09g(k}xSv7=6NbQCm3?I$k6#0G&w-*T36 z5I1%_$0Ux)%E}5cp*jLvtAi(3qC^pjp;4W~EPE*kGs8nnymlq%M)KUZ_}jOO{umENU7uS6fY%^aMaDJUq|+1M0Op|44qWvyMdR;E)@CKD$o za)sM#93!fUZ2>5~bQHgM1|g+ctq23Xyj;n#yQRg)+WLEABQzogL=clKt5zu0Y0-y> z=V=<5T+ZdXcHQk#0m%~-OH#hfQKG`_WoH8Cb%@g50}Ar;R$3kR&bNlxE7@~$b8Tm5 zU6$%h8NhG?T3U*le4TejdTFZtEUbzxFPmg~OJeaBNd|FwVnG*swU1TB9q9wWVH2O) zhx{ptov4+xay6D%LgufjpFVy1m8xY+OG|0`(t}d?e7ug(i1!Q)iRz*5e13bQ8S0XE zUkBchvcy{A;(qvRH)R^~5)^w@KScY~KU63KJD;xi<&^R{SwU2q&CN|gpY>8X2HCTO zW+B|?Z(b+>;*>O2^)-m|WnshO(b<{XTd%iz>OQX(L;=laC-4Yxlc3jA=MzZ=iC(+- z7{}-_{r$tk*yyN#n>dZq-@mpDo5J1aNx8xyoY|@w89I1)IJh{*l@%2NN6~#Q0+g-Z z&fkkWDiEDp)$zThMVwgotG0)yXO)P-{cf(SV##z{Tieo-A;8|zQN2`UbZm^lv5#@!>t;cLDR<@J-@m4T z=K}+AWO{mfWF#bBK0cAgtSQRz2?_Js^WNU3k^$FFuU{L0DIA@hzalPPUF~Jk^5u&? zSdst}F_N$&0jGLGV&b4>%s*eTY*mB~g?J`B z{+?VtDWX@+$7lYq_IRno&oSufNMrbQ`AoJd3vE(TLIPVUdJQgO6+_(CnwlC!&PJbe z*Uz*VA|~R-rK$bftBI8uYyS7|HkU6UZuF!Hw`oM-ot-;2%r3*SdUplBOCU|o6lL|# zs~W>MPu6^*0s`8)y0!*=0R}BLW0{}ec_QwcgJ@ijv2YbOGe^gL#xx#?_Tc;%;malEqJEdx@K^(CvZhIq#H|PP6sPSm@+tT90S}}4uj!VgfJO}LC{~cj z7|O>_@Kx9TE<<{`_4&k-ECaS7G4OFLKb4#XDbyo)>k-OT-L(255ds1v z10i3c^JwEA&lq~vSJ({(okS=APP48@noW1YKiNARey8MAik?|$ z5d{7A_!-DdxpNlr1Qy`Zpc3u6WB?4pDMqGA09Aq+L<~S@Oo=UK@f5@uVE5g&4!(u%hJL zzj=&PlLMwe-Awmnq7*wh_%JvUnj4aN`k=xV5FDJ}uvm52hCl~k!ngtB`Jg1%laFCG z;N&eEm9KeO3Z?11aK&WhetHIQNgdEA*onvsiVA|_qy+5#Yt`o@jfr5dR9U=zC59Z@ zsI6iXME5#f&Z=tSZ4K6)q4;MRSR_qkW*Zg(r!Shf1wp)!x07F}BC3!=rm}&!5gUfg zLY?b^PNJ(m6;BVZuz-+|uC_KRAT5n3N;GXmzkE1h?M$xBo3X>HD@t--B=L$14onH( zwzrZY06@^jtAH}`ZZfNL#4J##O*{cFc+edMcSsX2Zq+v7HQRbFFtT^aMU!oOJh23d z1J*z7q6wm9~}`ZeLb$iVS%0T+@!Edys$_&;GV%t&iu6Y{Uh!&L`oC}U+ zJ`Z(2CWTxTz7%H8={oURt_7Ue?pqZMGgs zMQ}DXRofPce+%lt7imz5Hjf=F-sg?JXwvaQVY|tyr-y4q#dcY!`_$6ny4K;Rltj~g z`ixuKb$?01ky$9>E8V# zks&(xrQoyH>S6Bo2SfVS!p~r*>}{@EzS!*A+S}YRq@A}_CM^3)*-QCL7_4Mb@pD6eeKNl9hG||%0sWTBC&Q%*B zM$pIZ$DIT!;lZtQ{0Lf3iaeV0dSoUrZE$h+Qy4G`xJfRd4e~u~eaDLU5TBh|-(MY{uIGEaAuqb6`!mFOllHmg zpCaOv3FC$Hf!9us;FRwkrB;X@LHxk>)2;{a(=`N34BGoEIPrFZhK7c_>lO@?r(q z*ddtv{F46*3Svi66fV_&WNeq>XFz#$?t_s6H0w?5JNjSV2Oh)jjGx@bTIVKfy0FQ( zul{*?c^U^El)fB*y6#7(qA{Y3cU+zp<`|ang zNiypSv~hFW{xy(@A?)00HS+6k#pvYqnEKOoTD|`E#ZGhV#pv@hk_;sc&EJEQHsABd zS&n>X=Z{i%BkFmQ0ZaB%1{^4fpR zT=f$rwIC#rKgWG)OxOEcg)1TZ$}ea3W2Mc)H?-vB)Swgu<`wj*F=+8V-ai|5taW+m zCn}6r++SUI@}gMgINzQ9VRVNGK3t=RX&`l1>Z0h#5lUMZ8`0=6}k# zE|+G$A)CBgJR+id=^xp$Yj5{QctI;&Pdn4o3|1ZE{ROX(YW)tHw%Zf*F=n4Fx}`Mq;c&~kIir_guh ziT~**OV@u7pPu9qdK2oOkEZ^ii{k~7j&~O}hheX7k%k#@cXfo?Fjds^^J(YAR$`E8du~o0L2sK?F9$oU`I$2^mWeS9PMJp`oCq zjS5?7U|R{^+v)U^P=jjF=Z>rd+(>rq9WQo@Q)5l!i_equJ9qHCh=DtczC1lTj~#6%e5yn1gB zA+|tKi8K~g1rTjn8RTO!%UPvu^)bqC2FQrysNLY>@zJB4Ab2!}kdww}lbE~!p}Vpu zw8jJdKDxnxE+u|LyQ05B7?D$F{grJmlF6we*=Tck_H!62_F;R!{)$SNeTYr1ls06O z=q)yxn2Ya5@c>=OV~q6e${vmIXKFow$-JcB#docWR=-ara+kZWoSf{t=A?=7q5<~y zZb#z>mp*HL9}gq44En#ZR1CMFh0hgf*s#zt>9e0|CuTMy#72Nn`-F_mXzR;*%V3qupZKhH11BOsN7l*m*( z;M&>xVQVm;*8=?v&{4n0k<0dar5Fz$J?1@WZj8;;N z%FWp&`ic+=(XdI4zq>I|<3-DTN=d12!KXEBbr1}PL|R0XP8Ryqls0u)xTvo;`GRTH zq3^zK?{ZObu#a*{>dXJ@1S~w3B4`a2W@I)7I>uB}Bd1}9@7m)X!o}iZW6Pi6Q9pEI z;qUUE$oHD{s@|J?Sc1$;hHM}cR2wv~P$rnR1uo)7V??9p0`}U1+NXJC4y?5hmG=qaErXN9X z5NAvc3@~L3b8BiU5sPDwIo090jh_wXioBplKy(w|;P3Y^_ulcf#8|^g_Y8n&a zdlwg};76!|!Q$W9$^>2n+a3GJU0Ypg(i~{Op7E{bd~|fwO+=!+YwfZFp`k?fZ6Kr{ zj*oHg24-hl^C&A9y&rvwO{(_&DO~)q2*pJDMPV&4&*k{otI6Q z+BQFQ%+Agts!In#ukRg=q!PZ?)0@Y`qb>9k<9lSM}-#)x&pO5Yu5D*}DvDje8{{k^oVO|x) zGy|6iQVBBr8kBqg6FPiY7=kdO{oP)qpxWBn{I=k~_ed;JMz?=ACW*ot}i>>U+n0np8U zP9UY0Ho=y@K$K$OIwOP9Z_YL|Y3T{sx~fl(%P8Nf-}9aCe1-Q6mUKTqZtcYFCDBPI z>fF|Kj-*ehaz*96m<-c3v0h# z0X?!=hG{$w-eWm*Co*5ed2K}SdP55xz^=&8f7MmeOjV}d;($pQ$d2555r_O<%yzui zrzWpBF)Z=2s^5YCgS5#RT>}EUQ)===~KcXz7Y6#PuF3LCui*L$Bo> z^h_Nrm6&aAKL7yb)qnpN;0x|s`k$oqOyKPJOC%MO4JJ&I*c=E1tf6>CgDQs3oJ}?J z%C@*v#@hc^JphZZ^@(al!?f>UP%hLqlKSsLR$G!{Y};!x3Uh$rXGdGI;;dC$jUZp& z?>w|Xud~WAG=>A@IjC^v6Hm*;e8H(rVMT)h$%n?bn8KRB`VQlRQFNrLtTx^@L}a!7yWW^7iUIT8gT>1-hXwWOrfI7m_fC zUzpBrZd;j3%*L2q14I2b9EHr|AMyb*B_SbjCH3nP>5EH~w{zMegkSDQ`pa9`XT50* zyV*$pAy^Ovr)Fy(?Saw-le8EmUNpi~I9=~HGcaJI+U7Sgg5Y-w8AXO7LjqO9G%FVB zi(>=3Ymg~l>kUSPd7gg%)td16yOMF6d=dAWHR-#Z(sXlkrT+=@0Sx}WXrW9=!Z=q; zudibtVP;Ft0W|xrP>x7pDFh|6m&-$syqDHLT^_1rMHfh#?#vR1E_j4VDK|^dMx4_*xSBlvu)N@#Zf63MsQ&+XjQd z#>U2AFgQLw-r3n%C=dN@I~F}r&%T&{@&oNH2EK0UV;QHK0>o4dINymy#6F8usgKMAGi`P7SL3ZWNg2md z?FI-sL*nT{Tb!3OYOP;OXDDjs$#Vu<`{0+(S9x?*H=WYVmrf$mkKuV?Bj!UK`(?hap&B8l zq5GW6)_u=h%T&imapoaQY7eSrQl9BaH%reERj3(-GvCtr)eCuN9`GT_kvUCW z7|&M`$H&KQ+YX1r;c&RQx#>%Y`I zXFyX|8^_Nb86*J`kQt^#f{Fvgy+9ODan(V!V%@fAt5xf0ogG?ReOqfC)r!@+2QC~H zK|vG{EGh^=_LP}~5y-gX{QxL|gk?n3`}@Yd=Q*64^S@_2_nhZIBuN4aiZ=}WwhKV< zK|tw@q9f3;&MVGHzRpLYKL!{fF}W z^c=DBwenEL{XEgddD8!qaUB(kqGg)X8J4*JlVNWC2Kjy;A!|)uim3euB9*=T7Y=6t zpa|bQ+Re>-YlK`qk@DfslLopCTW~a^Q8i=nzkW2R|F~_@+Es+bZ*{lt*0ulYyRU?- z5Es0Vwn=#O!3+Fd@R)=9B071y`(8n6MG?8u5rrTKg1h*g7HdyePvzygmI!_Db`eIB zB#EW|Jd_Th4qx6?G)$y=xV|S10Ep@Fdp53izihW7FD zvDRKB#4+GXc4=PN+P-N0B@Dv>iK(!bN~fNWt?xJ&xa7vUf6LoqM$vw>R%%t~$t$_^ zAu~6AHNzPx4?Pw1qWP+n-@kdM47MFMvRj=7P@%V{0L7BRLUUgAkmB%&C%B=|$r6@5 z2#KhCWiGiB_MZ~%;pHPh004j}h&q2F_=y-Ve|&8H+^JLNtUWEl03ZqtO=TJtp1ijtSSFgk|ar1MDOsjq(O9(?n6g;3=nW>5Y1}h zzC?M0@>ZVlnnpv(E6Mqf@xB!T7&k;3SEq>=?>`7=yMYHzPFZu_+t~ z?XfnxVZF(&&bNeNqmR$jje`{7Upk=lp+BdVo|wvoQQ@llb*bfdzUYb|HlKym3$NnH z1O`Oc*Js&G{VPdEk}|QlhE&%XiAnNO6aJiH1fzmQ=bwp0qLgg0iX=%{_(~@l+{N>! zm|D$aFRm|hX2J%e_cVA@RF5~g&>+3>f0ef9SEFbv8v9M+#l=&%D-1kmOf-c7Kpdt| zAHq~VI(sTXtIr9`&CF4duo>S9ZE%$}+kOKe!mU8EQ4(K*~q#bXR*C0JS z<8DX_1^@t9a#%zzY2q<%YDVsSYM!3Kt0wG0hCe1>s|!idm#B>=>W z@Q7!G`B3*hC~Pu%v@0D;ymLDj2LR6ry_<|14)+T zlIX~K9we(cTo}uIo~C-4j>$D(LWHzTOnK2d0<`HRJoWUMC^^&B4!VE!YV9SGlH!1N5$h-wjQ}2V35|`=3gGwEI8?0Kmp;RL}L1 zk8X#SE}swGxf_qMJ$yzPG|H9E(Dc8W2QMltA&AN=t30kWx`Wum4PF8mK@kXGDixsU z0GjFyOE`7*k&;wJ?VLGrr~0j|izmXiyN_izu>lZMj{%XmLaqdW)!;g8?(OYL3yr%I zRXfyLx+A{PtI5$lVCW zeF^I7?QPk9nKfA3gj!jdBSdZu!_m#nNV^3gE|I86$jHg$y` z*lUClSsb?S_pk!E*BBqW_Eb2;V9+5#T2}gUfKTu3KGY1Zxp(GlR&ygSEGsjYfLL}8 z)|AdVf<`)%g`K#RO&W}vGS;|pLQ~&q9)>_1a{6+i29GVn#ia*=7bhn)ap%(ej`g&L zO7DdHhZ_%Zccs6)!5Qf_l!Ir6+!B!jPamO%kz&iBj>4`eS#o3V&lf^(o;nbefC0Am z@-K(zSKM0TJA3i*UU5=HM+{#tW}}-h)*;#)1rIoT(y7 zlEe#cZ5i*tfnN>1Aexc$f>W=|sxJDQ)I0D>r1INwMF%cttlpO}`P--&n`6E?_$=^x zR>YIig3=m-AT)b~DB1!<>T2D#^1B~tI8{pTXtaz_-p~6E#Pw; z_-u||y9S!-BxY13WLEfj@L~8pX*+fBqr3#MpSyAOjj!(}CMf(gdUHDm%EYHHY(}r# zFu%2X=dN`wWhF*r7gnd`%Tn{I!k?67zL0S_Gy$I@;Ijo*>~4IHkwHrh zrY2HyD+8}*Kg+CGGpm~ci`I@DIvcud&nR$$%rB`)%a_%S@bY9R3e`4swQZh-F%yDX zZlZRae17{;2>`&9$Jq3#P-w0H=F9$Op>*~JAxW}Cs;rw*_Sit8vSZZ~1D^$ex6VIJIS1H@J@#gJA>8#U{malcUECNG)91LqJ3d^hBv2}A) zzuCFKadN^pQ7TNWQp}AQ{hfGjLT+DyA&ZH=i{mq0`e`X%pWKp~T9Gkma9@F;n-kAX z$mMrwmDjB^L+Pw@QC_8*?r!NOkLKzG?4Z_N^9$r1N zW5v{dPJ;tZKW{_CCi%61p4PU*x5mB69fp+7-fd_DzrGO@6Z0@GJ}IlX@ag$YKKzQf z19QeNy;Rg{&quprl(Z3QeD?l;aC?5V^-@o>$-}<5d34RT*9E;ZkVy zv#c^X&B)$m%&hq{`kBB00HP%B^7Z(8FJqJ>!w}oaYuaE-xEZ7N(V?q%DReu22x-1t(4}ZXBA3i^2|yI0J*$XGtzb$X@b(( z`v+E7SV91}i!u5exM*pQuSoBD-A$Qul)@iF0kc-Yw{+B6deR;;6Fp{ zJQprqx^!v4;k5UWYQ-peX2OuqHMSv`1c77gaj zI$s~76-(baoB<)`-doS#zHxH@g{P{Pj5Nunr7}0UQgiEzZhAChpS@`qNs@S8;1p9D z(|$>CB}tN`B6_1Mhh{i*+v7F`?5EHrwbhJg?H|jn+bjh^2#v+#cON`q(RU}~O4Z^B zSH|odXU(WfM>8M3>fG_A4h;T+YcGRPYludM&7VK<6U6usT*GiA|9tXIFKzV)u9A^>^Ym+Bw`A_C8Vb&36x( z9Q*Hid7MZRmm+~6sJ|1hzf;{-&9_}Nok8jB?Ld-bTD~k+B#9MCGYVuq?DT8pWo^o8 z+4voV(piU6AydVrNMl8kxD+Wz5AE;7?eE0v?O?#5z30amP&#|#-~=hku8d8Q#EPW( zB{jVr3~S|OZq(!mzV{bOXDvVwWKcxGGSWQ0h8Xg~l(gzDPF;=L^`J_O*nT`EGC}O_(xr=G%b}eyoJh>9 zh!sg=lO?4UN>@kj04H9+&{(T-nRxfXR=K!q;?f>j+3D$2J8fKTWRy0IZxL7(38RTgn$@@;H$sHbwe0 zz1-SVufG$|&57q^&3SL4vcEn}Uvu@i4KSj|wR9XX_S1j`9yZOrl!~bR2O^cdzF9b& z(Ks6jf)N^vXXP|#+?>U8Mp(bmcbk-CCOl2Z7uFs^MIXGt-(~OCgZm|wH`k8pt|{|x`}o5M42ec7&45ZeP{>pRY6{rwx~ z{w<#}t?9v`O-akIT7NJ}sva;=CdU`=ikB-10Dzm2>pR4J;36xGy9vo5@9RCJd`H}{dxFGY_^Oe81YHKyvABW?A?buzz^@MC;y2f+PS0aSZe|PsuS+RBSP!=i9G$ zvqLYKMx#LhqA}<%v#E^vdD=%CLQ1(#{d<|K5>8w_aq!@|-8avE-je|Uz%vd_85|H? z0vlR8*mCjWkSk}8>{?~jSJi3|Xc znkS=9fo(V1+A}PE->iw3Q9#H`Q{&>&$lhNZ`}=b(p%t*)%p3&?oAIrhiRut@cyIELGKN_Rt>1#C5V`NZ&*I+$l}nTtN8)TZD6E@ zFb~q3|6I%m7XI6IPIq7e0IWT~Js*sW_4qbY{TZ#T%waMyFFOYS&FARhIH|`#rj6v+ zo)=MBt$D^1mm(eGW~${Eqi7CoIwNb!@^Ww(kXVfzLVz^>;L^DU%;Q_em}!`yipAw5 z1REG~o7^K_M4vwyO<)*Ckg)N{Z8xs3b*pdm6ptexN`b*pLrHYxOJQIt4j0BUpQovS z%_}dQ<}eS+XR%KzNtXL)_g7;wmb2$jt4)#lYNcRu4VVxiEfZ_|6%Yg()cRzZvtE#AGpkK+36qWtmygVlwXq{n#5Ep z62J)B)GJ9Jy(jnP5~IqrTYHu--g0B}>@|I&{_x?|W?NKPLJ*Z#R(V`$WQEwnb&72^ z%mYzUQbxc=78WgiCxj6cfdHmzZOnaB9>bK!7~)*l_*KYi4`q^-mQ&lK+evHY0f>>y zg5TC&zPjl8jSF{xpI_tq5L1rGxi33-LGLWAcSox?9KpnVIKaMYCK}e&RxF!?2PoFjKAj0K2+QwEdZFZ#X%D; zuThW?PfxEE532zKHqF(M>*~mDpE(6+_4iGfW5i=XKvq+&;U?0>#25mZWyQrf;A-`Y z@y4$De87qI4+Hn!UVYGq4FGCoWsVTJH4H~LHzQ3JErof2Ei6r8A|orai~yGPT{eMZ zjmPqYxJ05NAtO_&%X@3IZtZ|F{nWABQj*rwt)GUwh?RpK2PX2e8c*~ZB@_D3_cS2# zE*uOhA^-sN-tI%q;F^19&Sq)eX3t5yaBZ73>TeQyKLFAWy_WYEd1EBx7(7-MNH?3i9&w$_gZ#M(xAi~uSNb&G+Fp&za_s1h1@*5YoUktw@>LN>P|AE zEHNn$N1a?;+SzYX=zu1X5E{m9004pzh9TeCW7hh=W6N-D(GwIg>w2OvciKtm%S%|& zPeb((!zsta4HMQxtZ~+ZS)O~c>;756tu5mnI1Sb{Kr|!g1*dXq|5eMeA*$kjpVC#Y zE(OBvJMZwrv-8YpmJ5PkCAsKt0;9rJ_Z6)V2SK4@bhIu=`CxUgk-t^Vx%B+7uhvuj zw1G=AVx!_S#R^p4%(jP1Ux87>2C3!P5Q-O%BOZvvsHMxuVUA6FD~iwnq4y!$($K`+ zBi`bAr4Jn)=~WfCp$`q=&%au!qYQOL&Fug?gw|tiG}W5DO?0(}80|ZM;Ye2D)#KO7 zbd;lRklr|UF_$@X;X=0$eMRfrMQ3Z(5&O9tS9{wRCnj_zU#2qg=?k0DD>uv+yyyFg zIy=-p6pD`EL)?2q(eY3^qv!}Iol$fIl+GwR0!n8T9RZ~?ijIKN8AV4x>5QTypmavj a5&R!(+NYxyYu^|E0000Sv literal 0 HcmV?d00001 diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/6.png b/2 курс/1 семестр/Архитектура ЭВМ/Лекции/data/6.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e1b4fe750c4145a1dc37fd8fc7f4a71c2f016c GIT binary patch literal 6585 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 literal 0 HcmV?d00001 diff --git a/2 курс/1 семестр/Архитектура ЭВМ/Темы.md b/2 курс/1 семестр/Архитектура ЭВМ/Темы.md new file mode 100644 index 0000000..0c0f44d --- /dev/null +++ b/2 курс/1 семестр/Архитектура ЭВМ/Темы.md @@ -0,0 +1,92 @@ +1. Уровни абстракции электронной вычислительной системы. Фон Неймановская модель компьютера. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/1|– Перечисление уровней с указанием формируемых абстракций. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/2|– Фон Неймановская модель компьютера (4 идеи, диаграмма). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/1 билет/3|– Шаги обработки инструкций в CPU. ]] +2. Оценка производительности CPU +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/1|– Определение микрооперации. Определение "среднее CPI программы". ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/2|– Уравнение производительности CPU. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/2 билет/3|– Факторы, влияющие на производительность CPU (описание влияния на параметры уравнения). ]] +3. Оценка производительности вычислительной системы +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/1|– Список метрик производительности. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/3 билет/2|– Типы программ для оценки производительности. Применимость каждого типа. ]] +4. Классификация архитектур систем команд (Instruction Set Architecture, ISA) по способу адресации операндов. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/1|– Определение ISA. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/2|– Описание архитектур, использующих различные программируемые места хранения: Memory-To-Memory; 0- адресная; 1-адресная; с регистрами общего назначения. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/3|– Режимы адресации. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/4 билет/4|– Архитектуры Load-Store/Register-To-Register. ]] +5. Набор инструкций Архитектуры системы команд (Instruction Set Architecture, ISA). +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/1|– Перечисление типов команд с кратким описанием и примерами: команды перемещения данных, арифметико-логических операций, управления порядком выполнения программы и т.д. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/2|– Кодирование инструкций. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/5 билет/3|– Определение и особенности CISC и RISC. ]] + 5.5 Архитектура RISC-V +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/1|– Набор инструкций RISC-V (базовые наборы, расширения, профили). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/5.5 билет/2|– Программируемые места хранения (типы регистров, особенности использования векторных регистров, способы формирования адреса). ]] +6. Однопортовый упорядоченный конвейер команд (in-order pipeline) +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/1|– Принцип конвейерной обработки инструкций. Определение ступени/стадии конвейера. Ступени конвейера MIPS (пример-иллюстрация).]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/2|– Латентность и пропускная способность (+определение). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/3|– Упорядоченный конвейер команд (+определение). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/6 билет/4|– Производительность CPU c конвейером по сравнению с CPU без конвейера. ]] +7. Конфликты в конвейере. Структурные конфликты. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/1|– Определение конфликта. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/2|– Классификация конфликтов (определения: структурные конфликты, конфликты данных, конфликты управления). Обработка конфликтов. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/7 билет/3|– Причина возникновения структурных конфликтов. Изменение CPI из-за структурных конфликтов. ]] +8. Конфликты данных в конвейере. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/1|– Определение и причина возникновения конфликтов данных. Определение параллелизма на уровне инструкций (ILP). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/2|– Пересылка данных (Forwarding). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/3|– Классификация конфликтов данных (RAW/WAW/WAR/RAR). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/4|– Обработка конфликтов данных в конвейере. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/8 билет/5|– Статическое планирование инструкций. ]] +9. Конфликты управления в конвейере. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/1|– Определение и причина возникновения конфликтов управления. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/2|– Аппаратные способы сокращения числа тактов простоя (+пример). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/3|– Статические методы обработки условных переходов. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/9 билет/4|– Статическое предсказание переходов. ]] +10. Использование параллелизма уровня инструкций (Instruction-Level Parallelism, ILP). +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/1|– Определение параллелизма уровня инструкций (ILP). Определение базового блока инструкций. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/2|– Статическая оптимизация с разворачиванием циклов. Требования к разворачиванию циклов. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/3|– Пример разворачивания цикла. ]] +11. Взаимозависимости между инструкциями +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/1|– Классификация зависимостей между инструкциями (по данным, по именам, по управлению). ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/2|– Истинная зависимость по данным, антизависимость, выходная зависимость. Граф зависимостей.]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/11 билет/3|– Зависимость по управлению. ]] +12. Расширение конвейера для обработки вещественных операций. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/1|– Отличия от конвейера без обработки вещественных операций. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/2|– Определения задержки и периода запуска. Конвейеризуемые и неконвейеризуемые функциональные блоки. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/12 билет/3|– Характеристики конвейера с поддержкой вещественных операций.]] +13. Динамическое планирование с помощью Табло. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/1|– Определение динамического планирования. Принципы реализации динамического планирования. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/2|– Определение табло. Структура табло и контролируемые параметры. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/3|– Ступени конвейера, использующего табло. Обработка инструкции на различных ступенях. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/13 билет/4|– Пример обработки участка кода. ]] +14. Динамическое планирование с использованием алгоритма Томасуло. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/1|– Определение динамического планирования. Принципы реализации динамического планирования. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/2|– Принципы работы алгоритма Томасуло. “Станции резервации”(reservation stations), переименование регистров, общая шина данных (Common Data Bus, CDB). Поля станций резервации. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/3|– Ступени конвейера, использующего алгоритм Томасуло. Обработка инструкции на различных ступенях. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/14 билет/4|– Пример обработки участка кода. ]] +15. Суперскалярность. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/1|– Принцип и цель суперскалярности. Характерные особенности применения. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/2|– Простейшая реализация суперскалярности (x2). Пример.]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/3|– Динамическое планирование при суперскалярности. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/15 билет/4|– Масштабируемость и перспективы суперскалярности. ]] +16. Динамическое предсказание ветвлений микропроцессором. Буфер целей переходов (Branch Target Buffer, BTB). Буфер предсказания ветвлений (Branch History Table, BHT или Pattern History Table, PHT). Алгоритм Смита. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/1|– Определение динамического предсказания ветвлений. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/2|– Структура BTB. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/3|– Алгоритм заполнения и использования BTB. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/16 билет/4|– Структура PHT. Алгоритм изменения и использования. Интерференция адресов. Структура BHT. ]] +17. Динамическое предсказание ветвлений микропроцессором. Двухуровневый механизм динамического предсказания ветвлений с учетом корреляции (GAp). Схема MCFarling’а gshare. Гибридные предсказатели. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/1|– Определение динамического предсказания ветвлений. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/2|– Описание двухуровневого механизма динамического предсказания ветвлений с учетом корреляции. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/3|– Схема MCFarling’а gshare. Преимущества схемы. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/17 билет/4|– Определение и принцип работы гибридных/турнирных/комбинированных предсказателей. ]] +18. Кэш. Основные понятия и определения. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/1|– Определение кэша и кэширования. Уровни иерархии памяти. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/2|– Определения: блок, попадание, частота попаданий, время попадания, промах, частота промахов, штраф за промах. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/3|– Принцип локальности. Два вида локальности. ]] +19. Организация кэша. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/1|– Кэш прямого отображения(Direct mapped cache). Поля строки/блока кэша. Проецирующая функция. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/19 билет/2|– Наборно-ассоциативный кэш (Set associative cache), полностью ассоциативный кэш (Fully associative cache). ]] +20. Политика замещения в кэше. Уменьшение кэш-промахов. Стратегии записи в кэш. +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/1|– Политики замещения Random, LRU, FIFO. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/2|– Причины кэш-промахов. Уменьшение частоты промахов: дополнительный кэш «жертв», разделение кэша прямого доступа на 2 части, программная предвыборка данных, аппаратная предвыборка команд и данных. ]] +[[2 курс/1 семестр/Архитектура ЭВМ/Лекции/20 билет/3|– Описание стратегий записи в кэш Write Through и Write Back. ]] +21. [[2 курс/1 семестр/Архитектура ЭВМ/Лекции/21|Векторные инструкции. Понятие вектора и векторных операций. Способы использования векторных операций. ]] \ No newline at end of file