Принцип действия кэш-памяти
Содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных из основной памяти. Каждая запись включает:
· элементы данных;
· адрес, который этот элемент имеет в основной памяти;
· дополнительную информацию, которая используется для реализации алгоритма включает признак модификации и признак действительности данных.
При каждом обращении к основной памяти по физическому адресу просматривается содержимое кэш-памяти с целью определения, не находятся ли там нужные данные.
Кэш-память не является адресуемой, поэтому поиск нужных данных осуществляется по содержимому - по взятому из запроса значению поля адреса в оперативной памяти.
Далее возможны два варианта развития:
· данные обнаружены в кэш-памяти, т.е. произведено кэш-попадание (cache-hit), они считываются и передаются источнику запроса;
· нужные данные отсутствуют, т.е. произошел кэш-перенос (cache-miss), они считываются из основной памяти, передаются источнику запроса и одновременно копируются в кэш-память.
Эффективность кэширования зависит от вероятности попадания в кэш.
Если обозначить вероятность кэш-попадания через p, а время доступа к основной памяти через t1, время доступа через t2, то по формуле полной вероятности среднее время доступа будет равно:
t=t2p+t1(1-p)
Если p=1, время доступа равно t2.
Вероятность обнаружения данных в кэше зависит от различных факторов, таких как:
· объем кэша;
· объем кэшируемой памяти;
· алгоритм замещения данных в кэше;
· особенностей выполняемой программы и т.п.
На практике процент попаданий оказывается весьма высоким – порядка 90%. Такой процент объясняется наличием у данных объективных свойств таких как пространственной и временной локальности.
Пространственная локальность. Если произошло обращение по некоторому адресу, то с высокой вероятностью в ближайшее время произойдет обращение по соседним адресам.
Временная локальность. Если произошло обращение по некоторому адресу, то следующее обращение по тому же адресу с большой вероятностью произойдет в ближайшее время.
Поскольку при выполнении программы очень высока вероятность, что команды выбираются из памяти одна за другой из соседних ячеек, имеет смысл загружать в кэш целый фрагмент программы. Аналогично и с массивами данных.
В процессе работы содержимое кэш-памяти постоянно обновляется. Вытеснение данных означает либо просто объявление свободной некоторой области кэш-памяти (сброс бита действительности) менялись либо в дополнение к этому копирование данных в основную память, если они модифицировались.
Наличие в компьютере двух копий данных – в основной памяти и в кэше – порождает проблему согласования данных.
Существует два подхода к решению этой проблемы:
· сквозная запись (write through). При запросе к основной памяти (в том числе при записи) просматривается кэш. Если данные по запрашиваемому адресу отсутствуют, запись выполняется только в основную память. Если данные находятся в кэше, запись делается и в кэш ив память.
· обратная запись (write back). Выполняется просмотр кэша, если данных там нет, то запись делается в основную память. В противном случае запись делается только в кэш. При этом устанавливается признак модификации. При вытеснении данных из кэша эти данные будут переписаны в основную память.
Дата добавления: 2016-06-15; просмотров: 2058;