260 Глава 5. Память
У рассматриваемого метода есть разновидность — метод флаговой обратной записи. Когда в какой-то строке кэша производится изменение, устанавливается связанный с этой строкой бит изменения (флажок). При замещении строка из кэш­памяти переписывается в ОП только тогда, когда ее флажок установлен в 1. Ясно, что эффективность флаговой обратной записи несколько выше. Такой метод ис­пользуется в микропроцессорах класса i486 и Pentium фирмы Cyrix.
В среднем обратная запись на 10% эффективнее сквозной записи, но для ее реа­лизации требуются и повышенные аппаратные затраты. С другой стороны, прак­тика показывает, что операции записи составляют небольшую долю от общего ко­личества обращений к памяти. Так, в [194] приводится число 16%. Другие авторы оценивают долю операций записи величинами в диапазоне от 5 до 34%. Таким обра­зом, различие по быстродействию между рассмотренными методами невелико.
Теперь рассмотрим ситуацию, когда в основную память из устройства ввода, минуя процессор, заносится новая информация и неверной становится копия, хра­нящаяся в кэш-памяти. Предотвратить подобную несогласованность позволя­ют два приема. В первом случае система строится так, чтобы ввод любой информа­ции в ОП автоматически сопровождался соответствующими изменениями в кэш-памяти. Для второго подхода «прямой» доступ к основной памяти допускает­ся только через кэш-память.
Смешанная и разделенная кэш-память
Когда в микропроцессорах впервые стали применять внутреннюю кэш-память, ее обычно использовали как для команд, так и для данных; Такую кэш-память При­нято называть смешанной, а соответствующую архитектуру — Принстонской (Prin- ' ceton architecture), по названию университета, где разрабатывались ВМ с единой памятью для команд и данных, то есть соответствующие классической архитекту­ре фон-Неймана. Сравнительно недавно стало обычным разделять кэш-память на две — отдельно для команд и отдельно для данных. Подобная архитектура полу­чила название Гарвардской (Harvard architecture), поскольку именно в Гарвард­ском университете был создан компьютер «Марк-1» (1950 год), имевший раздель­ные ЗУ для команд и данных.
Смешанная кэш-память обладает тем преимуществом, что при заданной емкости ей свойственна более высокая вероятность попаданий по сравнению с разделен­ной, поскольку в ней оптимальный баланс между командами и данными устанав­ливается автоматически. Так, если в выполняемом фрагменте программы обраще­ния к памяти связаны в основном с выборкой команд, а доля обращений к данным относительно мала, кэш-память имеет тенденцию насыщаться командами, и на­оборот.
С другой стороны, при раздельной кэш-памяти выборка команд и данных мо­жет производиться одновременно, при этом исключаются возможные конфликты. Последнее обстоятельство существенно в системах, использующих конвейериза­цию команд, где процессор извлекает команды с опережением и заполняет ими буфер или конвейер.
В табл. 5.7 приведены основные параметры внутренней кэш-памяти для наибо­лее распространенных типов микропроцессоров.
Кэш-память 2 61
Микропроцессор
Размер, Кбайт
DEC Alpha 21064
8-К/8-Д
IBM PowerPC 601
->^-'{^ Тяйттиця S 7 Орган
IBM PowerPC 603
8-К/8-Д
IBM PowerPC 604
16-К/16-Д
IBM PowerPC 620
32 - К/32-Д
Intel 486DX2
8-С
Intel Pentium
8-К/8-Д
MIPSR4000SC
8-К/8-Д
MIPS R10000
32-К/32-Д
Motorola 88110
8-К/8-Д
SUNSuperSPARC
20-К/16-Д
SUN UltraSPARC
16-К/16-Д
кэш
Следует добавить, что в некоторых ВМ, помимо кэш-памяти команд и кэш-па­мяти данных, может использоваться и адресная кэш-память (в устройствах управ­ления памятью и при преобразовании виртуальных адресов в физические).
Одноуровневая и многоуровневая кэш-память
Современные технологии позволяют разместить кэш-память и ЦП на общем кри­сталле. Такая внутренняя кэш-память строится по технологии статического ОЗУ и является наиболее быстродействующей. Емкость ее обычно не превышает 64 Кбайт. Попытки увеличения емкости обычно приводят к снижению быстродей­ствия, главным образом из-за усложнения схем управления и дешифрации адреса. Общую емкость кэш-памяти ВМ увеличивают за счет второй (внешней) кэш-па­мяти, расположенной между внутренней кэш-памятью и ОП. Такая система изве­стна под названием двухуровневой, где внутренней кэш-памяти отводится роль первого уровня (L1), а внешней — второго уровня (L2). Емкость L2 обычно на по­рядок больше, чем у L1, а быстродействие и стоимость — несколько ниже. Память второго уровня также строится как статическое ОЗУ. Типичная емкость кэш-па­мяти второго уровня — 256 и 512 Кбайт, реже — 1 Мбайт, а реализуется она, как правило, в виде отдельной микросхемы, хотя в последнее время L2 часто размеща­ют на одном кристалле с процессором, за счет чего сокращается длина связей и по­вышается быстродействие.
При доступе к памяти ЦП сначала обращается к кэш-памяти первого уровня. В слу­чае промаха производится обращение к кэш-памяти второго уровня. Если информа­ция отсутствует и в L2, выполняется обращение к ОП и соответствующий блок зано­сится сначала в L2, а затем и в L1. Благодаря такой процедуре часто запрашиваемая информация может быть быстро восстановлена из кэш-памяти второго уровня.
'К— кэш-память команд, Д — кэш-память данных, С — смешанная кэш-память.
2 6 2 Глава 5. Память
Среднее время доступа Г„ к одноуровневой кэш-памяти можно оценить как:
где 7*ш — 1время обращения при попадании; KLtmкоэффициент промахов; Тщ* ~~ потери на промах. Для двухуровневой кэш-памяти имеем:
Потенциальная экономия за счет применения L2 зависит от вероятности попа­даний как в L1, так и в L2. Ряд исследований показывает, что использование кэш­памяти второго уровня существенно улучшает производительность.
В большинстве семейств микропроцессоров предусмотрены специальное ИМС контроллеров внешней кэш-памяти, например микросхема 8291 для микропроцес­сора Intel 486 или 82491 — для Intel Pentium. Для ускорения обмена информацией между ЦП и L2 между ними часто вводят специальную шину, так называемую шину заднего плана, в отличие от шины переднего плана, связывающей ЦП с основной памятью.
Количество уровней кэш-памяти не ограничивается двумя. В некоторых ВМ уже можно встретить кэш-память третьего уровня (L3) и ведутся активные дис­куссии о введении также и кэш-памяти четвертого уровня (L4). Характер взаимо­действия очередного уровня с предшествующим аналогичен описанному для L1 и L2. Таким образом, можно говорить об иерархии кэш-памяти. Каждый последу­ющий уровень характеризуется большей емкостью, меньшей стоимостью, но и мень­шим быстродействием, хотя оно все же выше, чем у ЗУ основной памяти.
Дисковая кэш-память
Концепция кэш-памяти применима и к дисковым ЗУ. Принцип кэширования дис­ков во многом схож с принципом кэширования основной памяти, хотя способы доступа к диску и ОП существенно разнятся. Если время обращения к любой ячей­ке ОП одинаково, то для диска оно зависит от целого ряда факторов. Во-первых, нужно затратить некоторое время для установки головки считывания/записи на нужную дорожку. Во-вторых, поскольку при движении головка вибрирует, необ­ходимо подождать, чтобы она успокоилась. В-третьих, искомый сектор может ока­заться под головкой также лишь спустя некоторое время.
Дисковая кэш-память представляет собой память с произвольным доступом, «размещенную» между дисками и ОП. Емкость такой памяти обычно достаточно велика — от 8 Мбайт и более. Пересылка информации между дисками и основной памятью организуется контроллером дисковой кэш-памяти. Изготавливается дис­ковая кэш-память на базе такихже полупроводниковых запоминающих устройств, что И основная память, поэтому в ряде случаев с ней обращаются как с дополни­тельной основной памятью. С другой стороны, в ряде операционных систем, таких как UNIX, в качестве дискового кэша используется область основной памяти.
В дисковой кэш-памяти хранятся блоки информации, которые с большой веро­ятностью будут востребованы в ближайшем будущем. Принцип локальности, обес­печивающий эффективность обычной кэш-памяти, справедлив и для дисковой, приводя к сокращению времени ввода/вывода данных от величин 20-30 мс до зна­чений порядка 2-5 мс, в зависимости объема передаваемой информации.
Hosted by uCoz