Иерархия памяти, кэш-память

Память ЭВМ представляет собой иерархию запоминающих устройств (внутренние регистры процессора, различные типы сверхоперативной и оперативной памяти, диски, ленты), отличающихся объемом, средним временем доступа и стоимостью хранения данных в расчете на один бит.

Например:

  • Регистровая память процессора – время доступа – 1 такт процессора.
  • КЭШ первого уровня или внутренний КЭШ – время доступа – 1-2 такта процессора.
  • КЭШ второго уровня или внешний КЭШ – время доступа – 3-5 тактов процессора.
  • ОЗУ – время доступа – 12-55 тактов процессора.
  • Внешняя память – время доступа значительно больше.

В основе иерархии памяти современных ЭВМ лежит принцип «стоимость/производительность», т.е. с увеличением производительности возрастает и стоимость памяти, при этом пользователь всегда стремится иметь недорогую и быструю память. Кэш-память представляет некоторое решение этой проблемы.

Кэш-память – это способ организации совместного функционирования двух типов ЗУ, отличающихся временем доступа и стоимостью хранения данных, который позволяет уменьшить среднее время доступа к данным за счет динамического копирования в «быстрое» ЗУ наиболее часто используемой информации из «медленного» ЗУ.

Кэш-памятью называют не только способ организации работы двух типов запоминающих устройств, но и одно из устройств – «быстрое» ЗУ. Оно стоит дороже и, как правило, имеет сравнительно небольшой объем. Важно, что механизм кэш-памяти является прозрачным (то есть невидимым) для пользователя, который не должен сообщать никакой информации об интенсивности использования данных и не должен никак участвовать в перемещении данных из ЗУ одного типа в ЗУ другого типа, все это делается автоматически системными средствами.

Таким образом, иерархия памяти вычислительной системы может быть схематично изображена, как это показано на рисунке 1.

Иерархия памяти, кэш-память Иерархия памяти, кэш-память

Рис. 1. Иерархия ЗУ

В системах, оснащенных кэш-памятью, каждый запрос к «медленному» ЗУ выполняется в соответствии со следующим алгоритмом:

1. Просматривается содержимое кэш-памяти с целью определения, не находятся ли нужные данные в ней;

2. Если данные обнаруживаются в кэш-памяти, то они считываются из нее, и результат передается в процессор в более «быстрое» ЗУ

3. Если нужных данных нет, то они копируются из «медленного» ЗУ в кэш-память, и результат выполнения запроса передается в «быстрое» ЗУ. При копировании данных может оказаться, что в кэш-памяти нет свободного места, тогда выбираются данные, к которым в последний период было меньше всего обращений, для вытеснения из кэш-памяти. Если вытесняемые данные были модифицированы за время нахождения в кэш-памяти, то они переписываются в оперативную память. Если же эти данные не были модифицированы, то их место в кэш-памяти объявляется свободным.

На практике в кэш-память считывается не один элемент данных, к которому произошло обращение, а целый блок данных, это увеличивает вероятность так называемого «попадания в кэш», то есть нахождения нужных данных в кэш-памяти.

Принцип действия кэш-памяти основан на наличии у данных объективных свойств: пространственной и временной локальности.

Пространственная локальность состоит в следующем – если произошло обращение по некоторому адресу, то с высокой степенью вероятности в ближайшее время произойдет обращение к соседним адресам.

Временная локальность состоит в следующем – если произошло обращение по некоторому адресу, то следующее обращение по этому же адресу с большой вероятностью произойдет в ближайшее время.

Виртуальная память

Достаточно давно пользователи столкнулись с проблемой размещения в памяти программ, размер которых превышал имеющуюся в наличии свободную память. Решением было разбиение программы на части, называемые оверлеями. 0-ой оверлей начинал выполняться первым. Когда он заканчивал свое выполнение, он вызывал другой оверлей. Все оверлеи хранились на диске и перемещались между памятью и диском средствами операционной системы. Однако разбиение программы на части и планирование их загрузки в оперативную память должен был осуществлять программист.

Развитие методов организации вычислительного процесса в этом направлении привело к появлению метода, известного под названием виртуальная память. Виртуальным называется ресурс, который пользователю или пользовательской программе представляется обладающим свойствами, которыми он в действительности не обладает. Так, например, пользователю может быть предоставлена виртуальная оперативная память, размер которой превосходит всю имеющуюся в системе реальную оперативную память.

Таким образом, виртуальная память – это совокупность программно-аппаратных средств, позволяющих использовать ОП, размер которой превосходит реально имеющуюся в системе ОП. Для организации виртуальной памяти вычислительная система должна решать следующие задачи:

  • ·размещение данных в ЗУ разного типа, например, часть ОП, а часть на диске;
  • ·перемещение по мере необходимости данные между ЗУ разного типа, например, подгрузка нужной части программы с диска в ОП;
  • ·преобразование виртуальных адресов в физические.

Все эти действия выполняются автоматически, без участия программиста, то есть механизм виртуальной памяти является прозрачным по отношению к пользователю.

Лекция 4. Иерархия памяти. Разделяемая память


Похожие статьи.

Понравилась статья? Поделиться с друзьями: