Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
417
Добавлен:
01.06.2015
Размер:
20 Мб
Скачать
☆

Емкость кэш-памяти

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

Реальная эффективность использования кэш-памяти зависит от характера решаемых задач, и невозможно заранее определить, какая ее емкость будет действительно оптимальной. Рисунок 5.25, а иллюстрирует зависимость вероятности промахов от емкости кэш-памяти для трех программ А, В и С [195]. Несмотря на очевидные различия, просматривается и общая тенденция: по мере увеличения емкости кэш-памяти вероятность промахов сначала существенно снижается, но при достижении определенного значения эффект сглаживается и становится несущественным. Установлено, что для большинства задач близкой к оптимальной является кэш-память емкостью от 1 до 512 Кбайт.

Рис. 5.25. Зависимость вероятности промахов от: а — емкости кэш-памяти;

б — размера строки

Размер строки

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

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

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

Зависимость между размером строки и вероятностью промахов во многом определяется характеристиками конкретной программы, из-за чего трудно рекомендовать определенное значение величины строки. Исследования [183, 195] показывают, что наиболее близким к оптимальному можно признать размер строки, равный 4-8 адресуемым единицам (словам или байтам). На практике размер строки обычно выбирают равным ширине шины данных, связывающей кэш-память с основной памятью.

Способы отображения оперативной памяти на кэш-память

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

Для облегчения понимания комплекса вопросов, возникающих при выборе способа отображения оперативной памяти на кэш-память, будем рассматривать систему, состоящую из основной памяти емкостью 256 Кслов, и кэш-памяти емкостью 2 К слова. Для адресации каждого слова основной памяти необходим 18-разрядный адрес (218 = 256К). ОП разбивается на блоки по 16 слов в каждом, следовательно, ее удобно рассматривать как линейную последовательность из 16 384 = 2 блоков. При такой организации 18-разрядный адрес можно условно разделить на две части: младшие 4 разряда определяют адрес слова в пределах блока, а старшие И номер одного из 16 384 блоков. Эти старшие 14 разрядов в дальнейшем будем называть адресом блока основной памяти. В свою очередь, для адресации любого ело в кэш-памяти требуется 11-разрядный адрес (211 = 2К). Кэш-память разбита на строки такого же размера, что и в ОП (напомним, что применительно к кэш-памяти вместо слова «блок» принято использовать термин «строка»), то есть содержит 128=27 строк. 11-разрядный адрес слова в кэш-памяти также можно представить состоящим из двух частей: адреса слова в строке (4 младших разряда) и адреса строки кэш-памяти (7 старших разрядов).

Поскольку ЦП всегда обращается к ОП (кэш-память для ЦП невидима) и формирует для этого 18-разрядный адрес, необходим механизм преобразования такого адреса в 11-разрядный адрес слова в кэше. Так как расположение слов в блоке ОП и строке кэш-памяти идентично, для доступа к конкретному слову в блоке ОП в строке кэш-памяти можно использовать младшие 4 разряда 18-разрядного адреса. Следовательно, остается лишь задача преобразования 14-разрядного адреса блока основной памяти в 7-разрядный адрес строки кэша.

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