Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем
.pdfКэш-память 2 5 7
торах основной и кэш-памяти совпадает, для выбора блока внутри сектора в обоих случаях можно использовать четыре младших разряда адреса блока ОП. В резуль тате задача преобразования адресов сводится к переходу от 10-разрядного номера сектора основной памяти к трехразрядному номеру сектора в кэш-памяти. Такое преобразование осуществляется с помощью ассоциативной памяти тегов на 8 слов (по числу секторов в кэш-памяти). Каждая ячейка памяти тегов содержит 13 раз рядов: 10 старших хранят тег — номер сектора ОП, а три младших разряда — но мер сектора кэш-памяти, куда отображен данный сектор ОП. Для проверки того, имеется ли копия сектора в кэш-памяти, производится ассоциативный поиск по 10 старшим разрядам памяти тегов. Если произошло совпадение, то для доступа к нужному сектору в памяти данных кэш-памяти используются три младших раз ряда соответствующей ячейки памяти тегов.
Поскольку размер сектора велик, в рассматриваемой схеме отображения копи руется не весь сектор целиком, а только требуемый его блок. Для этого к каждой строке, хранимой в кэш-памяти, добавляется один бит информации, называемый битом достоверности, показывающий, относится ли данный блок к текущему сек тору или в нем осталась информация из сектора, хранившегося на этом месте до смены секторов.
При заполненной кэш-памяти, когда необходимо заменить один из его секто ров, в ассоциативной памяти тегов делается запись о новом секторе, как при заме не всего сектора полностью. Фактически же в кэш-память пересылается только тот блок сектора, к которому в данный момент обращается процессор, и в соответ ствующей строке памяти данных бит достоверности устанавливается в единицу.
Вто же время биты достоверности остальных строк этого сектора сбрасываются
в0. Далее, по мере копирования других блоков этого сектора, их биты достоверно сти устанавливаются в единицу.
При такой процедуре заполнения секторов кэш-памяти, в случае обнаружения в ней нужного сектора, предварительно требуется проанализировать состояние бита достоверности соответствующей строки. Если он установлен в 1, значит, обраще ние к данной ячейке кэш-памяти возможно. При нулевом значении бита достовер ности сначала производится копирование нужного блока в кэш-память, его бит достоверности устанавливается в единицу, и лишь после этого разрешается дос туп к указанному адресу в кэш-памяти. •
В том случае, когда при замене сектора в кэш-памяти необходимо сохранить его старое содержимое в основной памяти, в ОП пересылаются только заменяе мые блоки сектора.
Алгоритмы замещения информации в заполненной кэш-памяти
Когда кэш-память заполнена, занесение в нее нового блока связано с замещением содержимого одной из строк. При прямом отображении каждому блоку основной памяти соответствует только одна определенная строка в кэш-памяти, и никакой иной выбор удаляемой строки здесь невозможен. При полностью и частично ассо-
циативных способах отображения требуется какой-либо алгоритм замещения (выбора удаляемой из кэш-памяти строки).
2 6 0 Глава 5. Память
У рассматриваемого метода есть разновидность — метод флаговой обратной записи. Когда в какой-то строке кэша производится изменение, устанавливается связанный с этой строкой бит изменения (флажок). При замещении строка из кэш памяти переписывается в ОП только тогда, когда ее флажок установлен в 1. Ясно, что эффективность флаговой обратной записи несколько выше. Такой метод ис пользуется в микропроцессорах класса i486 и Pentium фирмы Cyrix.
В среднем обратная запись на 10% эффективнее сквозной записи, но для ее реа лизации требуются и повышенные аппаратные затраты. С другой стороны, прак тика показывает, что операции записи составляют небольшую долю от общего ко личества обращений к памяти. Так, в [194] приводится число 16%. Другие авторы оценивают долю операций записи величинами в диапазоне от 5 до 34%. Таким обра зом, различие по быстродействию между рассмотренными методами невелико.
Теперь рассмотрим ситуацию, когда в основную память из устройства ввода, минуя процессор, заносится новая информация и неверной становится копия, хра нящаяся в кэш-памяти. Предотвратить подобную несогласованность позволя ют два приема. В первом случае система строится так, чтобы ввод любой информа ции в ОП автоматически сопровождался соответствующими изменениями в кэш-памяти. Для второго подхода «прямой» доступ к основной памяти допускает ся только через кэш-память.
Смешанная и разделенная кэш-память
Когда в микропроцессорах впервые стали применять внутреннюю кэш-память, ее обычно использовали как для команд, так и для данных; Такую кэш-память При нято называть смешанной, а соответствующую архитектуру - Принстонской (Prin ceton architecture), по названию университета, где разрабатывались ВМ с единой памятью для команд и данных, то есть соответствующие классической архитекту ре фон-Неймана. Сравнительно недавно стало обычным разделять кэш-память на две — отдельно для команд и отдельно для данных. Подобная архитектура полу чила название Гарвардской (Harvard architecture), поскольку именно в Гарвард ском университете был создан компьютер «Марк-1» (1950 год), имевший раздель ные ЗУ для команд и данных.
Смешанная кэш-память обладает тем преимуществом, что при заданной емкости ей свойственна более высокая вероятность попаданий по сравнению с разделен ной, поскольку в ней оптимальный баланс между командами и данными устанав ливается автоматически. Так, если в выполняемом фрагменте программы обраще ния к памяти связаны в основном с выборкой команд, а доля обращений к данным относительно мала, кэш-память имеет тенденцию насыщаться командами, и наоборот.
С другой стороны, при раздельной кэш-памяти выборка команд и данных мо жет производиться одновременно, при этом исключаются возможные конфликты. Последнее обстоятельство существенно в "системах, использующих' конвейериза цию команд, где процессор извлекает команды с опережением и заполняет ими буфер или конвейер. '.
В табл. 5.7 приведены основные параметры внутренней кэш-памяти для наибо лее распространенных типов микропроцессоров.