Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСиC / Организация, адресация, кэширование памяти.doc
Скачиваний:
121
Добавлен:
29.03.2015
Размер:
830.46 Кб
Скачать

Способы отображения основной памяти на кэш (архитектура кэш-памяти).

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

Итак, архитектура кэш-памяти определяется тем, каким образом достаточно большая по размеру основная память отобража­ется на сравнительно небольшой кэш. Существуют, вообще го­воря, три разновидности отображения: кэш-память с прямым отображением (direct-mapped cache), частично, или наборно-ассоциативная (set-associative cache) и полностью ассоциативная (fully associative cache). Все эти архитектуры, так или иначе, используются для построения кэш-памяти современных микропроцессоров.

Кэш-память с прямым отображением.

Самой простой организацией обладает кэш-память с прямым отображением. В этом случае адрес памяти полностью определяет используемую строку кэша. Таким образом, один или несколько блоков оперативной памяти строго соответствуют одной строке кэша, однако поскольку занимать ее в одно и то же время может только один из них, то для каждой строки используется специ­альный признак — тег (tag). Более подробно рассмотрим работу кэш-памяти с прямым отображением по схеме, изображенной на рисунке 28.

Рисунок 29. Кэш память с прямым отображением.

Допустим, что некоторый микропроцессор использует 10-разрядный адрес, размер кэша составляет 8 строк, а длина каждой строки — 8 байт. В какой-то момент времени процессор хочет прочитать два байта информации, хранимой в оперативной памяти, с адреса 0010001100. Для кэш-памяти этот адрес подразделяется на три части. В данном случае три младших разряда называются смещением (offset) и полностью определяют положение каждого из восьми байт в строке. Средние три разряда позволяют однозначно выбрать одну из восьми строк (line) кэша. Оставшиеся старшие разряды несут информацию о теге. И только в том случае, если тег строки кэша совпадает со значением, определяемым старшими разрядами адреса, байты информации считываются из кэш - памяти. В противном случае чтение должно идти из основной па­мяти или информация в строке должна быть заменена. Разумеется, в случае ее замены меняется и значение ее тега.

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

Полностью ассоциативная кэш - память.

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

Рисунок 29. Полностью ассоциативный кэш.

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

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