Какие принципы лежат в основе реализации иерархии памяти современных компьютеров
В основе реализации иерархии памяти современных компьютеров лежат два принципа: принцип локальности обращений и соотношение стоимость/производительность.
Принцип локальности обращений говорит о том, что большинство программ к счастью не выполняют обращений ко всем своим командам и данным равновероятно, а оказывают предпочтение некоторой части своего адресного пространства.
Иерархия памяти современных компьютеров строится на нескольких уровнях, причем более высокий уровень меньше по объему, быстрее и имеет большую стоимость в пересчете на байт, чем более низкий уровень. Уровни иерархии взаимосвязаны: все данные на одном уровне могут быть также найдены на более низком уровне, и все данные на этом более низком уровне могут быть найдены на следующем нижележащем уровне и так далее, пока мы не достигнем основания иерархии.
Иерархия памяти обычно состоит из многих уровней, но в каждый момент времени мы имеем дело только с двумя близлежащими уровнями. Минимальная единица информации, которая может либо присутствовать, либо отсутствовать в двухуровневой иерархии, называется блоком. Размер блока может быть либо фиксированным, либо переменным. Если этот размер зафиксирован, то объем памяти является кратным размеру блока.
Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием или промахом.
Попадание – есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне.
Поскольку повышение производительности является главной причиной появления иерархии памяти, частота попаданий и промахов является важной характеристикой. Время обращения при попадании есть время обращения к более высокому уровню иерархии, которое включает в себя, в частности, и время, необходимое для определения того, является ли обращение попаданием или промахом. Потери на промах есть время для замещения блока в более высоком уровне на блок из более низкого уровня плюс время для пересылки этого блока в требуемое устройство (обычно в процессор). Потери на промах далее включают в себя две компоненты: время доступа – время обращения к первому слову блока при промахе, и время пересылки – дополнительное время для пересылки оставшихся слов блока. Время доступа связано с задержкой памяти более низкого уровня, в то время как время пересылки связано с полосой пропускания канала между устройствами памяти двух смежных уровней.
Чтобы описать некоторый уровень иерархии памяти надо ответить на следующие четыре вопроса.
1) Где может размещаться блок на верхнем уровне иерархии? (размещение блока).
2) Как найти блок, когда он находится на верхнем уровне? (идентификация блока).
3) Какой блок должен быть замещен в случае промаха? (замещение блоков).
4) Что происходит во время записи? (стратегия записи).
5.1. Организация кэш-памяти
Cегодня кэш-память имеется практически в любом компьютере. Как правило, конструктивно современная кэш-память неотделима от процессора
5.1.1. Где может размещаться блок в кэш-памяти?
Принципы размещения блоков в кэш-памяти определяют три основных типа их организации.
1) Если каждый блок основной памяти имеет только одно фиксированное место, на котором он может появиться в кэш-памяти, то такая кэш-память называется кэшем с прямым отображением. Это наиболее простая организация кэш-памяти, при которой для отображения адресов блоков основной памяти на адреса кэш-памяти просто используются младшие разряды адреса блока.
2) Если некоторый блок основной памяти может располагаться на любом месте кэш-памяти, то кэш называется полностью ассоциативным.
3) Если некоторый блок основной памяти может располагаться на ограниченном множестве мест в кэш-памяти, то кэш называется множественно-ассоциативным.
В современных процессорах как правило используется либо кэш-память с прямым отображением, либо двух- (четырех-) канальная множественно-ассоциативная кэш-память.
Иерархия памяти — различные виды памяти образующие иерархию, на различных уровнях которой расположены памяти с отличающимися временем доступа, сложностью, стоимостью и объемом. Возможность построения иерархии памяти вызвана тем, что большинство алгоритмов обращаются в каждый промежуток времени к небольшому набору данных, который может быть помещен в более быструю, но дорогую и поэтому небольшую, память. Использование более быстрой памяти увеличивает производительность вычислительного комплекса. Под памятью в данном случае подразумевается устройство хранения данных в вычислительной технике или компьютерная память.
При проектировании высокопроизводительных компьютеров и систем необходимо решить множество компромиссов, например, размеры и технологии для каждого уровня иерархии. Можно рассматривать набор различных памятей, находящихся в иерархии, то есть каждый mi уровень является как бы подчиненным для mi-1 уровня иерархии. Для уменьшения времени ожидания на более высоких уровнях, низшие уровни могут подготавливать данные укрупненными частями с буферизацией и, по наполнению буфера, сигнализировать верхнему уровню о возможности получения данных.
Часто выделяют 4 основных уровня иерархии:
1. Внутренняя память процессора.
2. ОЗУ системы и вспомогательных карт памяти.
3. Накопители с «горячим» доступом — или вторичная компьютерная память. Жесткие диски и твердотельные накопители, не требующие длительных (секунды и больше) действий для начала получения данных
4. Накопители, требующие переключения носителей — или третичная память. Сюда относятся магнитные ленты, ленточные и дисковые библиотеки, требующие длительной перемотки либо механического (или ручного) переключения носителей информации.
В большинстве персональных компьютеров рассматривается следующая иерархия памяти:
- Регистры процессора, организованные в регистровый файл — наиболее быстрый доступ (порядка 1 такта), но размером лишь в несколько сотен или, редко, тысяч байт.
- Кэш процессора 1го уровня (L1) — время доступа порядка нескольких тактов, размером в десятки килобайт
- Кэш процессора 2го уровня (L2) — большее время доступа (от 2 до 10 раз медленнее L1), около полумегабайта или более
- Кэш процессора 3го уровня (L3) — время доступа около сотни тактов, размером в несколько мегабайт (в массовых процессорах используется недавно)
- ОЗУ системы — время доступа от сотен до, возможно, тысячи тактов, но огромные размеры в несколько гигабайт, вплоть до сотен. Время доступа к ОЗУ может варьироваться для разных его частей в случае комплексов класса NUMA (с неоднородным доступом в память)
- Дисковое хранилище — многие миллионы тактов, если данные не были закэшированны или забуферизованны заранее, размеры до нескольких терабайт
- Третичная память — задержки до нескольких секунд или минут, но практически неограниченные объемы.
В любой ЭВМ данные хранятся в памяти. Функции памяти обеспечиваются запоминающимися устройствами (ЗУ), предназначенными для фиксации, хранения и выдачи информации в процессе работы ВМ. Процесс фиксации информации в ЗУ называется записью, процесс выдачи информации из ЗУ – чтением, в совместно их определяются как процессы обращения к ЗУ,
По месту расположение ЗУ делятся на 3 типа:
1. Процессорные (РОНы, cache-память 1ур.) – в кристалле процессора.
2. Внутренние - на системной плате (cache 2 ур. и выше, ОЗУ, ПЗУ, буферы контроллера шины внешнего ЗУ).
3. Внешние (HDD, гибкие оптич. накопители, магнитные ленты, перфоркарты).
Иерархия памяти (быстродействие уменьшается, объём увеличивается):
РОН – наиболее быстродействующие, работают на частоте процессора, время доступа 10 нс, взаимодействие определяет компилятор и программа, объём до 512байт.
КЭШ1 – работает на частоте процессора, время доступа 10-15 нс, взаимодействие определяет аппаратура, объём до 128 кб.
КЭШ2 – работает на частоте процессорной шины, время доступа 15-30 нс, взаимодействие определяет аппаратура, объём скорость до 1 Мб.
ОП – строится на базе динамической памяти, время доступа 20-40 мкс, взаимодействие определяет аппаратура, объём до 10Гб.
FIFO –буфер контроллера шины внешнего ЗУ, время доступа до 100мкс, взаимодействие определяет аппаратура, располагается в контролере шины внешнего ЗУ.
Основные направления развития подсистемы памяти:
1. Увеличение ёмкости.
2. Увеличение пропускной способности.
3. Повышение надёжности (новые технологии изготовления, новая элементная база схемные решения – RAID-массивы, для ОП – CRC коды).
4. Снижение стоимости.
5. Уменьшение энергопотребления.
6. Уменьшение массы/габаритов.
Основные пути повышения производительности:
1) Повышение размеров кэш-памяти.
2) Многоуровневая организация кэш-памяти.
3) Расширение регистрового файлы.
4) Повышение полосы пропускания системной шины.
5) Увеличение разрядности канала данных памяти.
6) Использование памяти с расслоением (конвейерное обращение к банкам памяти).
КЭШ-память
Cache – «скрытый», «спрятанный».
Обычно строится на основе статической памяти (не требует регенерации).
Основная идея, принцип:
При обращении процессора к памяти сначала происходит поиск данных в КЭШ. Если они найдены, то обращения к ОП не происходит. В противном случае при считывании из ОП происходит отображение участка ОП в КЭШ.
Если при обращении необходимые данные есть в КЭШ – КЭШ-попадание (hit). Если отсутствуют – КЭЩ-промах (miss).
При построении КЭШ-памяти нужно учитывать:
· Объём аппаратных затрат.
Каждое слово в ОП имеет N-разрядный адрес. По отношению к КЭШ ОП – это M блоков фиксированной длины по K слов в блоке.
Кэш состоит из C блоков (строк).
Размер строки = размеру блока ОП.
Тэг – поле признака (суть – определить, какой из блоков ОП в КЭШе). Часто в качестве тэга используется часть адреса блока ОП.
Коэффициент удачный обращений – должен стремиться к оптимуму.
- Размера строки КЭШ-памяти.
- Алгоритма управления КЭШ-памятью.
- Дисциплины организации КЭШ-памяти (способ отображения, алгоритм согласования).
Типы КЭШ-памяти
3 условия отображения
1) отображение должно обеспечивать быструю проверку КЭШа на наличие в нём блока ОП.
2) Должно обеспечивать быстрое преобразование адреса блока ОП в адреса строки КЭШа.
Реализовать подсистему оперативной памяти в универсальных компьютерах при использовании одной технологии невозможно. Каждая из рассмотренных технологий не обеспечивает выполнение всех требований, которые предъявляются к подсистеме оперативной памяти. В частности, использование полупроводниковой технологии, не может обеспечить энергонезависимость и требуемые объемы оперативной памяти при достаточной стоимости.
Разрешить эту дилемму можно, использовав в подсистеме памяти разные технология хранения информации, реализовав некую иерархию подсистемы памяти. Типичная иерархия подсистемы памяти схематически представлена на рис. 5.1.
Рис. 5.1. Иерархия подсистемы памяти компьютера
Принцип иерархии подразумевает выполнение следующих условий:
количество уровней иерархии может быть произвольным;
каждый уровень иерархии выполняет строго определенный набор функций;
обращение извне всегда происходит к верхнему уровню иерархии;
если i-й уровень иерархии может выполнить полученный запрос, то он его выполняет и передает результат источнику запроса – (i-1)-му уровню иерархии;
если i-й уровень иерархии не может выполнить полученный запрос, то он формирует запрос к (i+1)-му уровню иерархии;
по мере перехода от верхних уровней иерархии подсистемы памяти к нижним уровням:
снижается относительная стоимость хранения информации;
снижается частота обращений с предыдущего уровня иерархии;
на некотором уровне иерархии обеспечивается энергонезависимость.
Таким образом, менее емкие, но более быстродействующие технологии памяти дополняются менее быстродействующими технологиями, но зато обладающими большей емкостью.
Ключевыми вопросами, решение которых обеспечивает успех иерархического проекта подсистемы памяти, являются:
организация потоков информации в компьютере, обеспечивающая по мере переходе от устройств памяти верхних уровней иерархии к устройствам памяти нижних уровней снижение интенсивности обращений;
вложенность информации, содержащейся в памяти более высоких уровней, в память более низких уровней (т.е., информация в памяти более высокого уровня иерархии является подмножеством памяти более низкого уровня).
Предположим, что процессор в системе может обращаться к памяти двух уровней. Память 1-го уровня содержит N слов и имеет время доступа 1 нс, а память 2-го уровня — 1000 N слов и время доступа 10 нс. Предположим, что если нужное слово находится в памяти 1-го уровня, то процессор извлекает его непосредственно, а если в памяти 2-го уровня, то затребованное слово сначала записывается в память 1-го уровня, а уже оттуда его извлекает процессор. Для простоты анализа не будем учитывать время, необходимое процессору для того, чтобы выяснить, где именно находится искомое слово, — в памяти 1-го или 2-го уровня.
Пусть параметр Н характеризует долю запросов к памяти первого уровня во всем потоке запросов, параметр Т1 — время доступа к памяти первого уровня, а Т2— время доступа к памяти второго уровня. Нет ничего неожиданного в том, что чем выше значение Н, т.е. чем большая часть всех обращений процессора за данными приходится в самый быстрый уровень, тем меньше среднее время обращения к иерархической подсистеме памяти, и тем ближе оно к значению Т1.
Среднее время обращения к такой подсистеме памяти может быть выражено формулой:
Предположим, что 95% всех обращений приходится в память первого уровня (т.е., H=0.95). Тогда среднее время извлечения одного слова из иерархической подсистемы памяти будет равно:
Итак, из всего сказанного следует, что концепция иерархической организации подсистемы памяти в принципе является довольно здравой, но принесет практический успех лишь в том случае, если при конструировании системы будут реализованы все упомянутые ранее принципы.
Среди существующих на сегодняшний день технологий памяти, не так уж сложно подобрать ряд, обладающий следующими свойствами:
необходимое быстродействие памяти верхнего уровня;
снижение относительной стоимости хранения информации;
на некотором уровне иерархии обеспечивается энергонезависимость;
реализация требования о вложенности.
Однако обеспечение свойства снижения частоты обращений по мере продвижения по уровням иерархии подсистемы памяти зависит в значительной степени не от конструктора компьютера, а от свойств выполняемых программ.
Выводы
1. Если быстродействие процессора и быстродействие энергонезависимой полупроводниковой памяти близки, то подсистема оперативной памяти может быть реализована с одним уровнем иерархии.
2. Если быстродействие процессора и быстродействие энергонезависимой полупроводниковой памяти существенно отличаются, то подсистема оперативной памяти должна быть иерархической с несколькими уровнями иерархии.
3. Количество и параметры памятей уровней иерархии зависят от области применения компьютера.
4. В высокопроизводительных современных компьютерах существует до 6 уровней иерархии подсистемы памяти.
5. Количество уровней иерархии может быть произвольным.
6. Каждый уровень иерархии выполняет строго определенный набор функций.
7. Обращение к иерархической подсистеме памяти извне всегда происходит к верхнему уровню иерархии.
8. Если i-й уровень иерархии может выполнить полученный запрос, то он его выполняет и передает результат источнику запроса – (i-1)-му уровню иерархии.
9. Если i-й уровень иерархии не может выполнить полученный запрос, то он формирует запрос к (i+1)-му уровню иерархии.
10. По мере перехода от верхних уровней иерархии подсистемы памяти к нижним уровням:
снижается относительная стоимость хранения информации;
снижается частота обращений с предыдущего уровня иерархии;
обеспечивается вложенность информации, содержащейся в памяти более высоких уровней, в память более низких уровней (т.е., информация в памяти более высокого уровня иерархии является подмножеством памяти более низкого уровня);
на некотором уровне иерархии обеспечивается энергонезависимость.
Локальность ссылок
Суть термина локализация ссылок (locality reference) состоит в том, что обращения к оперативной памяти в процессе выполнения фрагмента программы имеют тенденцию "скапливаться" в ограниченной области (кластере) адресного пространства оперативной памяти. По мере выполнения достаточно сложной программы текущий кластер смещается в адресном пространстве, но на достаточно коротком отрезке времени можно считать, что обращения идут к фиксированному кластеру.
Интуитивно предположение о локализации ссылок кажется вполне резонным. Рассмотрим следующие доводы в пользу этого предположения.
1. Значительная часть потока управления программы носит последовательный
характер. Исключением являются команды условного и безусловного переходов, вызова процедур и возврата из процедур, которые в процентном отношении составляют незначительную долю команд в программе. Следовательно, в подавляющем большинстве случаев очередная выполняемая команда извлекается из ячейки оперативной памяти, следующей за той, в которой находилась текущая команда.
2. Очень редко случается так, что команды вызова процедур следуют одна
за другой непрерывным потоком, а затем следует такой же поток команд
возврата из процедур. Как правило, программа имеет достаточно небольшую вложенность вызовов процедур. Следовательно, в течение некоторого, пусть и ограниченного, отрезка времени программа выполняет команды, сконцентрированные в небольшом количестве процедур.
3. Большинство итерационных вычислительных процедур состоит из небольшого количества команд, повторяемых довольно много раз. Таким образом,
в течение выполнения итерационной процедуры ядро процессора обращается фактически к одной и той же области оперативной памяти, где находятся эти команды.
4. Во многих случаях вычислительный процесс включает обработку структурированных данных — массивов или последовательностей записей определенной структуры. При этом последовательно обрабатываются элементы
таких структур, которые, как правило, компактно размещены в адресном
пространстве оперативной памяти.
Эти интуитивные соображения были подтверждены множеством исследований. В ряде работ изучался характер типичных приложений разного назначения, разработанных с применением языков программирования высокого уровня. Некоторые результаты этих исследований приведены в таблице 5.1. В ней представлена относительная частота использования операторов разного типа в программах различного назначения.
Как видно из приведенной таблицы, результаты исследований программ разного назначения дали достаточно близкие результаты — из них следует, что команды перехода и вызова процедур составляют весьма незначительную часть всех выполняемых во время работы программы команд. Таким образом, скрупулезные исследования подтвердили первое из интуитивных предположений.
Таблица 5.1. Относительная частота выполнения операторов разного типа в программах на языках высокого уровня
Динамическая частота появления | Взвешенная оценка количества машинных команд | Взвешенная оценка количества обращений в память | |||
Pascal | C | Pascal | C | Pascal | C |
Присваивание (ASSING) | |||||
Возврат на начало цикла (LOOP) | |||||
Вызов процедур (CALL) | |||||
Условный переход (IF) | |||||
Безусловный переход (GO TO) | - | - | - | - | |
Другие |
На рис. 5.1 представлен график, показывающий характер работы с процедурами в процессе выполнения типовой программы.
Рис. 5.1. Характер обращения к процедурам в процессе выполнения программы
По оси ординат графика отсчитывается текущая глубина вложенности выполняемой процедуры, а по оси абсцисс — время в относительных единицах (циклах выполнения команд "вызов/возврат"). Каждый вызов процедуры представлен на графике наклонной линией, идущей вниз-вправо (погружающей программу "в глубину"), а команда возврата — линией вверх-вправо (поднимающей программу "на поверхность"). На графике выделены прямоугольниками участки, в которых относительная глубина вложенности не превышает 5. Такой прямоугольник (окно заданной вложенности)смещается только в том случае, когда глубина вложенности с момента, зафиксированного его левой кромкой, превысит 5. Как видно на графике, программа остается в указанном диапазоне вложенности достаточно продолжительное время, а это означает, что все это время ядро процессора обращается только к командам из пяти текущих вложенных процедур. Исследование ряда программ, написанных на языках высокого уровня, показало, что только в 1% всех команд вызова процедур глубина вложенности превосходит значение 8.
Свойство локализации ссылок подтверждается и более поздними исследованиями приложений, характерных для настоящего времени. Например, на рис. 5.2 показаны результаты статистического исследования доступа к страницам отдельного Web-сервера.
Рис. 5.2. Локализация ссылок на Web-страницы
Существует различие между пространственной и временнойлокализацией. Под пространственной локализацией понимается тенденция к концентрации ссылок в определенном кластере (объеме) адресного пространства оперативной памяти. В частности, это имеет место при выполнении команд, размещенных в соседних ячейках оперативной памяти, т.е. при естественном порядке выполнения программы. Пространственная локализация имеет место и при обработке элементов структурированных наборов данных, размещенных в последовательных ячейках оперативной памяти.
Под временной локализацией понимается тенденция обращаться к одним и тем же ячейкам оперативной памяти (группе ячеек) в течение достаточно продолжительного времени. Это имеет место, например, при выполнении повторяющихся циклов, даже если в теле цикла имеется несколько процедур (чаще всего вложенных одна в другую), размещенных в разных сегментах оперативной памяти. Главное в том, что временная локализация позволяет скопировать определенные ячейки оперативной памяти в какой-либо буфер и затем достаточно долго с ними работать.
Следовательно, можно так распределить информацию между запоминающими устройствами разного уровня иерархии, что доля обращений к памяти нижних уровней иерархии будет меньше, чем доля обращений к памяти верхних уровней.
Вернемся опять к примеру с двухуровневой памятью. Предположим, что все команды и данные программы хранятся в запоминающем устройстве 2-го уровня. Временно скопируем текущие кластеры в запоминающее устройство 1-го уровня. Время от времени один из скопированных (и, возможно, измененных в процессе выполнения программы) кластеров нужно будет возвращать обратно в запоминающее устройство 2-го уровня, а в образовавшееся "окно" копировать другой кластер. Но, среднестатистически большинство обращений в ходе выполнения программы придется на те кластеры, которые уже присутствуют в запоминающем устройстве первого уровня.
Этот же принцип можно применить и в системе, имеющей не два, а три или больше запоминающих устройств разных уровней иерархии.
Самой быстрой, но и самой маленькой по объему, а также самой дорогой (по отношению к объему хранимой информации) будет память, состоящая из внутренних регистров процессора. Как правило, количество таких регистров ограничивается несколькими десятками, хотя существуют и архитектуры, включающие сотни регистров.
Несколькими уровнями ниже находится оперативная память компьютера. Каждая ячейка оперативной памяти имеет уникальный атрибут — адрес, причем в машинных командах для идентификации подавляющего большинства обрабатываемых данных используется именно адрес соответствующего элемента в оперативной памяти.
В современных компьютерах выше оперативной памяти в иерархии размещается кэш-память, которая имеет значительно меньшую емкость, чем оперативная память (и значительно, большую, чем набор внутренних регистров ядер процессора), но обладает на несколько десятичных порядочков большим быстродействием. Кэш-память обычно скрыта от программиста, т.е. он никак не управляет из программы размещением данных в кэш-памяти или обращениями к ней. Это промежуточное запоминающее устройство "держит наготове" данные и команды программы, которые, скорее всего, могут в ближайшее время понадобиться ядру процессора, и таким образом "сглаживает" поток информации между регистрами ядер процессора и оперативной памятью.
Запоминающие устройства, выполняющие в компьютере роль памяти первых уровней иерархии, как правило, по своей конструкции являются статическими полупроводниковыми энергозависимыми устройствами. Но каждое из них обычно изготавливается по технологии, которая обеспечивает оптимальное соотношение между емкостью, скоростью и стоимостью для памяти данного уровня. Для длительного хранения информации используются внешние устройства памяти большой емкости (по отношению к таким устройствам очень часто используется термин массовая память). Очень часто это жесткие магнитные диски или твердотельные устройства, которые дополняются устройствами со съемными носителями — магнитными, оптическими и магнитооптическими дисками и магнитной лентой. Во внешних запоминающих устройствах хранятся файлы выполняемых программ и обрабатываемых данных, и, как правило, программист обращается к этой информации в терминах файлов или отдельных записей, а не в терминах отдельных байтов или слов.
Иерархические уровни могут быть организованы не только посредством включения в состав технических средств компьютера тех или иных устройств, но и программно. Часть оперативной памяти может быть использована операционной системой в качестве буфера при обмене данными между полупроводниковой оперативной и внешней дисковой памятью. Такая методика, для которой был изобретен специальный термин "дисковый кэш", способствует некоторому повышению производительности системы по двум причинам:
1. Записи на дисках имеют четко выраженную кластерную структуру. Буферизация позволяет передавать данные большими порциями, примерно равными кластеру, вместо того, чтобы отправлять их мелкими порциями "дергая" каждый раз механизм привода диска.
2. Некоторые данные, предназначенные для записи на диск, могут неоднократно запрашиваться программой (так часто происходит при работе с фрагментами баз данных). Поэтому желательно как можно дольше хранитьих в быстрой полупроводниковой памяти, а не считывать каждый раз с диска.
Контрольные вопросы
1. Какие функции подсистемы памяти в компьютере?
2. Перечислите требования к подсистеме памяти?
3. Как соотносятся между собой основные требования к подсистеме памяти?
4. Что такое энергонезависимость памяти?
5. Назовите основные особенности статической полупроводниковой памяти.
6. Назовите основные особенности динамической полупроводниковой памяти.
7. Назовите основные особенности магнитной памяти.
8. Почему нельзя реализовать в быстродействующем универсальном компьютере подсистему памяти при использовании одной технологии?
В основе реализации иерархии памяти современных компьютеров лежат два принципа: принцип локальности обращений и соотношение стоимость/производительность. Принцип локальности обращений говорит о том, что большинство программ к счастью не выполняют обращений ко всем своим командам и данным равновероятно, а оказывают предпочтение некоторой части своего адресного пространства.
Иерархия памяти современных компьютеров строится на нескольких уровнях, причем более высокий уровень меньше по объему, быстрее и имеет большую стоимость в пересчете на байт, чем более низкий уровень. Уровни иерархии взаимосвязаны: все данные на одном уровне могут быть также найдены на более низком уровне, и все данные на этом более низком уровне могут быть найдены на следующем нижележащем уровне и так далее, пока мы не достигнем основания иерархии.
Иерархия памяти обычно состоит из многих уровней, но в каждый момент времени мы имеем дело только с двумя близлежащими уровнями. Минимальная единица информации, которая может либо присутствовать, либо отсутствовать в двухуровневой иерархии, называется блоком. Размер блока может быть либо фиксированным, либо переменным. Если этот размер зафиксирован, то объем памяти является кратным размеру блока.
Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием (hit) или промахом (miss). Попадание - есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне. Доля попаданий (hit rate) или коэффициент попаданий (hit ratio) есть доля обращений, найденных на более высоком уровне. Иногда она представляется процентами. Доля промахов (miss rate) есть доля обращений, которые не найдены на более высоком уровне.
Поскольку повышение производительности является главной причиной появления иерархии памяти, частота попаданий и промахов является важной характеристикой. Время обращения при попадании (hit time) есть время обращения к более высокому уровню иерархии, которое включает в себя, в частности, и время, необходимое для определения того, является ли обращение попаданием или промахом. Потери на промах (miss penalty) есть время для замещения блока в более высоком уровне на блок из более низкого уровня плюс время для пересылки этого блока в требуемое устройство (обычно в процессор). Потери на промах далее включают в себя две компоненты: время доступа (access time) - время обращения к первому слову блока при промахе, и время пересылки (transfer time) - дополнительное время для пересылки оставшихся слов блока. Время доступа связано с задержкой памяти более низкого уровня, в то время как время пересылки связано с полосой пропускания канала между устройствами памяти двух смежных уровней.
Чтобы описать некоторый уровень иерархии памяти надо ответить на следующие четыре вопроса:
1. Где может размещаться блок на верхнем уровне иерархии? (размещение блока).
2. Как найти блок, когда он находится на верхнем уровне? (идентификация блока).
Читайте также: