Arch: new
Все теоритические билеты по Архитектуре ЭВМ в основном были написаны, кроме: 8.4; 13.4; 14.4; 15.4. Задачи будут позже.
This commit is contained in:
37
2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/1.md
Normal file
37
2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/1.md
Normal file
@ -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$ «Диск» реализовано в ОС при аппаратной поддержке.
|
||||
|
10
2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/2.md
Normal file
10
2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/2.md
Normal file
@ -0,0 +1,10 @@
|
||||
#### Определения: блок, попадание, частота попаданий, время попадания, промах, частота промахов, штраф за промах.
|
||||
|
||||
**Блок (cache block/cache line)** - наименьшая единица информации, передаваемая между уровнями. Обычно размер блока - размер самого большого регистра.
|
||||
**Попадание** - элемент найден в кэше верхнего уровня.
|
||||
**Частота попаданий ($H_1$)** - доля обращений к памяти с попаданием в кэш.
|
||||
**Время попадания** - время обращения к верхнему уровню, которое зависит от времени доступа к (S)RAM + время на определение попадание/промах. В идеале - 1 такт.
|
||||
**Промах** - элемент должен быть получен из блока с нижнего уровня.
|
||||
**Частота промахов** $=1-$ «частота попаданий» $=1-H_1$
|
||||
**Штраф за промах** - время на замену блока в верхнем уровне + время на доставку отсутствующего блока в ЦП
|
||||
|
16
2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/3.md
Normal file
16
2 курс/1 семестр/Архитектура ЭВМ/Лекции/18 билет/3.md
Normal file
@ -0,0 +1,16 @@
|
||||
#### Принцип локальности. Два вида локальности.
|
||||
|
||||
Программы обычно обращаются к относительно небольшой области адресного пространства (инструкции и данных) в любой момент времени - к рабочему набору (working set)
|
||||
**Working set** - набор адресов, с которыми программа работала в течение небольшого интервала времени.
|
||||
Два вида локальности доступа:
|
||||
|
||||
- **Временная**
|
||||
|
||||
Обращение к элементу (инструкции или данным) имеет тенденцию повторяться.
|
||||
Пример: инструкции во вложенном цикле.
|
||||
|
||||
- **Пространственная**
|
||||
|
||||
После обращения к некоторому элементу скорее всего вскоре произойдет обращение к другим элементам с близкими адресами.
|
||||
Примеры: последовательное выполнение инструкций, последовательный доступ к элементам массива.
|
||||
Пример программы, где нет временной локальности: поиск максимума в несортированном массиве, так как нам в любом случае придется просматривать содержимое массива от начала и до конца. Кэширование в этом случае практически бесполезно.
|
Reference in New Issue
Block a user