Arch: new

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

View File

@ -0,0 +1,17 @@
#### Политики замещения Random, LRU, FIFO.
Когда происходит промах, контроллер кэша должен выбрать блок данных кэша для удаления из строки и замещения запрошенными данными. Выбор блока производится $1^{ным}$ из $3^{a}$ методов:
- **Произвольно:**
Блок для замещения выбирается случайным образом.
Простая реализация. Наиболее широко используемая политика.
- **Наиболее давно востребованный (LRU):**
Все обращения к блокам записываются и замещаются те блоки, к которым не было обращения в течение длительного времени.
Метод LRU быстро усложняется в реализации при увеличении числа блоков. Поэтому часто используется приближение, при котором биты использования периодически сбрасываются.
- **Первый вошел - первый вышел (FIFO):**
Так как LRU и является сложен в реализации, этот подход является приближением к LRU в определении наиболее старого блока.

View File

@ -0,0 +1,41 @@
#### Причины кэш-промахов. Уменьшение частоты промахов: дополнительный кэш «жертв», разделение кэша прямого доступа на 2 части, программная предвыборка данных, аппаратная предвыборка команд и данных.
**Причины кэш промахов:**
1) **Вынужденный**
При первом обращении к блоку. Блок должен быть помещен в кэш. Также называется промах холодного старта или промах первого обращения. При запуске программы miss rate $~ 100\%$.
Решаются увеличением объема блока и предвыборкой.
2) **Ограниченная емкость**
В случае, когда кэш не может вместить все блоки, востребованные кодом, и возникает «перетасовка» блоков (рабочий набор много больше емкости кэша).
Решается увеличением объема кэша.
3) **Конфликты**
В наборно-ассоциативном или кэше с прямым отображением стратегия размещения блоков вызывает конкуренцию нескольких блоков за одну строку кэша;
Также называется промахом из-за коллизий или интерференции.
**Способ совместить низкое время доступа кэша с прямым отображением и низкую частоту промахов из-за конфликтов 2-х канального наборно-ассоциативного кэша:**
- Разделим кэш. При промахе проверяем вторую половину кэша, если теперь происходит попадание, то это - «псевдо-попадание» (медленнее нормального).
- Недостаток: согласование конвейера CPU с переменной задержкой доступа в кэш ( 1 или 2 такта)Лучше для кэша, не связанного непосредственно с CPU (L2).
- Процессор может анализировать шаблон обращения к памяти и может пытаться предсказать адреса, по которым будет обращение к памяти в ближайшее время. Процессор сам инициирует доп. обращение к памяти, выполняя спекулятивную загрузку данных.
**Уменьшаем частоту промахов с помощью программной предвыборки данных:**
- Загрузка данных в регистры.
- Предвыборка в кэш.
- Спец. команды предвыборки, не вызывающие сбоев; разновидность спекулятивности.
- Обработка команд отнимает время.
Время на обработку команд предвыборки должно оправдываться сокращением промахов.
- Высокий уровень суперскалярности снижает «цену» выдачи доп. команд и одновременно повышает «цену» промахов кэша.
**Уменьшаем частоту промахов с помощью программной оптимизации компилятором:**
**Инструкции:**
- Расположение процедур в памяти так, чтобы сократить промахи из-за конфликтов.
- Профилирование для обнаружения конфликтов (используя собственное ПО).
**Данные:**
- Слияние массивов: увеличение пространственной локальности объединением нескольких массивов в 1
- Согласование вложенности циклов: согласование уровня вложенности циклов для обработки в соответствии с порядком хранения данных в памяти
- Слияние циклов: составление из независимых циклов, обрабатывающих одни данные, общего.
- Поблочная обработка массивов: улучшение временной локальности за счет повторной обработки блоков данных вместо полного обхода по строкам и столбцам.

View File

@ -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.