Files
Kirill 3a96c27c48 Arch: new
Все теоритические билеты по Архитектуре ЭВМ в основном были написаны,
кроме: 8.4; 13.4; 14.4; 15.4. Задачи будут позже.
2025-01-14 19:40:01 +03:00

42 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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