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