Иерархия запоминающих устройств в компьютере

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

Иерархия запоминающих устройств в компьютере - student2.ru

Рис. 2.4. Иерархия запоминающих устройств компьютера

Внешняя память (дисковая) компьютеров в настоящее время достигла объема десятки…сотни гигабайт, но скорость доступа к данным является невысокой.

Оперативная память компьютера обычно является динамической (DRAM), которая имеет среднее время доступа 10…20 нс. Для хранения данных, к которым необходимо обеспечить быстрый доступ, используется статическая оперативная память (SRAM), не требующая специальных циклов регенерации, а поэтому более быстродействующая.

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

Кэш-память

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

Кэш-память прозрачна для программ и пользователей. С ней работает только операционная система.

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

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

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

· значение элемента данных;

· адрес, который этот элемент данных имеет в основной памяти;

· дополнительную информацию, которая используется для реализации алгоритма замещения данных в кэше и обычно включает признак модификации (1/0) и признак действительности данных (1/0).

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

· если данные обнаруживаются в кэш-памяти (кэш-попадание), то они считываются из нее;

· если нужные данные отсутствуют в кэш-памяти (кэш-промах), то они считываются из основной памяти и одновременно с этим копируются в кэш-память.

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

Достигается высокая степень попаданий за счет учета пространственной и временной локальности данных.

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

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

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

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

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

Возможны два решения проблемы: сквозная и обратная запись.

Сквозная запись. При каждом запросе к основной памяти, в том числе и при записи просматривается кэш. Если данные в кэш отсутствуют, то запись выполняется только в основную память. Если же данные находятся в кэше, то запись выполняется одновременно в кэш и основную память. При вытеснении данных из кэш они просто теряются.

Обратная запись. Аналогично при возникновении запроса к памяти выполняется просмотр кэша. И если данных там нет, то запись выполняется только в основную память. В противном случае производится запись только в кэш-память, при этом в описателе данных кэша делается специальная отметка (признак модификации), которая указывает на то, что при вытеснении этих данных из кэша необходимо переписать их в основную память, чтобы обновить устаревшее содержимое основной памяти.

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

Наши рекомендации