|
||
Кэш-память 249
|
||
|
||
тем упорядочивания тех разрядов, которые были замаскированы и не участвовали в признаке поиска. В другом варианте для этих целей выделяются специальные разряды. Существует целый ряд алгоритмов, позволяющих организовать упорядоченную выборку из АЗУ. Подробное их описание и сравнительный анализ можно найти в [14].
Существенные отличия в архитектурах АЗУ могут быть связаны с выбранным принципом записи информации. Ранее был описан вариант с записью в незанятую ячейку с наименьшим номером. На практике применяются и иные способы (рис. 5.23), из которых наиболее сложный — запись с сортировкой информации на входе АЗУ по величине ассоциативного признака. Здесь местоположение ячейки, куда будет помещено новое слово, зависит от соотношения ассоциативных признаков вновь записываемого слова и уже хранящихся в АЗУ слов.
|
||
|
||
|
||
|
||
Из-за относительно высокой стоимости АЗУ редко используется как самостоятельный вид памяти.
|
||
|
||
Кэш-память
Как уже отмечалось, в качестве элементной базы основной памяти в большинстве ВМ служат микросхемы динамических ОЗУ, на порядок уступающие по быстродействию центральному процессору. В результате процессор вынужден простаивать несколько тактовых периодов, пока информация из ИМС памяти установится на шине данных ВМ. Если ОП выполнить на быстрых микросхемах статической памяти, стоимость ВМ возрастет весьма существенно. Экономически приемлемое решение этой проблемы было предложено М. Уилксом в 1965 году в процессе разработки ВМ Atlas и заключается оно в использовании двухуровневой памяти, когда между ОП и процессором размещается небольшая, но быстродействующая буферная память. В процессе работы такой системы в буферную память копируются те участки ОП, к которым производится обращение со стороны процессора. В общепринятой терминологии — производится отображение участков ОП на буферную память. Выигрыш достигается за счет ранее рассмотренного свойства локальности — если отобразить участок ОП в более быстродействующую буферную память
|
||
|
||
|
|||
250 Глава5. Память
|
|||
|
|||
и переадресовать на нее все обращения в пределах скопированного участка, можно добиться существенного повышения производительности ВМ.
Уилкс называл рассматриваемую буферную память подчиненной (slave memory). Позже распространение получил термин кэш-память (от английского слова cache — убежище, тайник), поскольку такая память обычно скрыта от программиста в том смысле, что он не может ее адресовать и может даже вообще не знать о ее существовании. Впервые кэш-системы появились в машинах модели 85 семейства IBM 360.
В общем виде использование кэш-памяти поясним следующим образом. Когда ЦП пытается прочитать слово из основной памяти, сначала осуществляется поиск копии этого слова в кэше. Если такая копия существует, обращение к ОП не производится, а в ЦП передается слово, извлеченное из кэш-памяти. Данную ситуацию принято называть успешным обращением или попаданием (hit). При отсутствии слова в кэше, то есть при неуспешном обращении — промахе (miss),— требуемое слово передается в ЦП из основной памяти, но одновременно из ОП в кэш-память пересылается, блок данных, содержащий это слово.
|
|||
|
|||
|
|
||
|
|||
Рис. 5.24. Структура системы с основной и кэш-памятью
|
|||
|
|||
На рис. 5.24 приведена структура системы с основной и кэш-памятью. ОП состоит из Т адресуемых слов, где каждое слово имеет уникальный и-разрядный адрес. При взаимодействии с кэшем эта память рассматривается как М блоков фиксированной длины по Кспоъ в каждом (М = Т/К). Кэш-память состоит из С блоков аналогичного размера'(блоки в кэш-памяти принято называть строками), причем их число значительно меньше числа блоков в основной памяти (С « М). При считывании слова из какого-либо блока ОП этот блок копируется в одну из строк кэша. Поскольку число блоков ОП больше числа строк, отдельная строка не может быть выделена постоянно одному и тому же блоку ОП. По этой причине каждой строке кэш-памяти соответствует тег (признак), содержащий сведения о том, копия какого блока ОП в данный момент хранится в данной строке. В качестве тега обычно используется часть адреса ОП. :
|
|||
|
|||
|
|||
Кэш-память 251
|
|||
|
|||
На эффективность применения кэш-памяти в иерархической системе памяти влияет целый ряд моментов. К наиболее существенным из них можно отнести:
емкость кэш-памяти;
• размер строки;
• способ отображения основной памяти на кэш-память;
• алгоритм замещения информации в заполненной кэш-памяти;
• алгоритм согласования содержимого основной и кэш-памяти;
• число уровней кэш-памяти.
Емкость кэш-памяти
Выбор емкости кэш-памяти — это всегда определенный компромисс. С одной стороны, кэш-память должна быть достаточно мала, чтобы ее стоимостные показатели были близки к величине, характерной для ОП. С другой — она должна быть достаточно большой, чтобы среднее время доступа в системе, состоящей из основной и кэш-памяти, определялось временем доступа к кэш-памяти. В пользу уменьшения размера кэш-памяти имеется больше мотивировок. Так, чем вместительнее кэш-память, тем больше логических схем должно участвовать в ее адресации. Как следствие, ИМС кэш-памяти повышенной емкости работают медленнее по сравнению с микросхемами меньшей емкости, даже если они выполнены по одной и той же технологии.
Реальная эффективность использования кэш-памяти зависит от характера решаемых задач, и невозможно заранее определить, какая ее емкость будет действительно оптимальной. Рисунок 5.25, а иллюстрирует зависимость вероятности промахов от емкости кэш-памяти для трех программ А, В и С [195]. Несмотря на очевидные различия, просматривается и общая тенденция: по мере увеличения емкости кэш-памяти вероятность промахов сначала существенно снижается, но при достижении определенного значения эффект сглаживается и становится несущественным. Установлено, что для большинства задач близкой к оптимальной является кэш-память емкостью от 1 до 512 Кбайт.
|
|||
|
|||
|
|
||
|
|||
Рис. 5.25. Зависимость вероятности промахов от: а —емкости кэш-памяти;
б — размера строки
|
|||
|
|||