Ключевые вопросы

Лекция № 10. Внешние устройства. Часть 1

Продолжительность:2 часа (90 мин.)

 

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

· Принцип действия кэш-памяти

· Кэш-память

21.2 Текст лекции

 

21.2.1 Иерархия запоминающих устройств — до 30 мин.

 

Память вычислительной машины представляет собой иерархию запоминающих устройств (ЗУ), отличающихся средним временем доступа к данным, объемом и стоимостью хранения одного бита (рис. 5.24). Фундаментом этой пирамиды за­поминающих устройств служит внешняя память, как правило, представляемая жестким диском. Она имеет большой объем (десятки и сотни гигабайт), но ско­рость доступа к данным является невысокой. Время доступа к диску измеряется миллисекундами.

На следующем уровне располагается более быстродействующая (время доступа1 равно примерно 10-20 наносекундам) и менее объемная (от десятков мегабайт до нескольких гигабайт) оперативная память, реализуемая на относительно мед­ленной динамической памяти DRAM.

Для хранения данных, к которым необходимо обеспечить быстрый доступ, ис­пользуются компактные быстродействующие запоминающие устройства на ос­нове статической памяти SRAM, объем которых составляет от нескольких де­сятков до нескольких сотен килобайт, а время доступа к данным обычно не превышает 8 не.

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

Оно стоит дороже и, как правило, имеет сравнительно небольшой объем. «Мед­ленное» ЗУ далее будем называть основной памятью, противопоставляя ее вспо­могательной кэш-памяти.

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

 

21.2.2 Принцип действия кэш-памяти — до 20 мин.

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

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

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

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

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

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

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

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

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

 

21.2.3 Кэш-память— до 20 мин.

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

Неотъемлемым свойством кэш-памяти является ее прозрачность для программ и пользователей. Система не требует никакой внешней информации об интенсив­ности использования данных; ни пользователи, ни программы не принимают ни­какого участия в перемещении данных из ЗУ одного типа в ЗУ другого типа, все это делается автоматически системными средствами.

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

Интуитивно понятно, что эффективность кэширования зависит от вероятности попадания в кэш. Покажем это путем нахождения зависимости среднего време­ни доступа к основной памяти от вероятности кэш-попаданий. Пусть имеется ос­новное запоминающее устройство со средним временем доступа к данным tl и кэш-память, имеющая время доступа t2, очевидно, что t2<tl. Пусть t -- среднее Время доступа к данным в системе с кэш-памятью, ар— вероятность кэш-попа­дания. По формуле полной вероятности имеем:

t = t1(1 - р) + t2p = (t2 –t1)p + t1

Среднее время доступа к данным 13 системе с кэш-памятью линейно зависит от вероятности попадания в кэш и изменяется от среднего времени доступа в ос­новное запоминающее устройство tl при р=0 до среднего времени доступа непо­средственно в кэш-память t2 при р=1. Отсюда видно, что использование кэш-па­мяти имеет смысл только при высокой вероятности кэш-попадания.

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

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

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

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

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