Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M7 / Кэширование.doc
Скачиваний:
26
Добавлен:
16.04.2013
Размер:
276.48 Кб
Скачать

Характеристики элементов кэша для процессоров Pentium

Средство

Характеристики

Кэш трассировки

Pentium 4: 12K-микроопераций, 8WSA

Кэш инструкций L1

Pentium 4: отсутствует

P6 и Pentium: 8/16 КB(2WSAв первыхPentium’ax).

Кэш данных L1

Pentium 4: 8KB, 4WSA

P6 и Pentium: 8/16 КB, 4WSA (2WSA в первых процессорахPentiumи Р6).

Объединенный кэш L2

Pentium 4: 256/512КВ, 8WSAS

P6: 128/256/512/1024/2048 Кбайт, 4WSA

Pentium: внешний, на плате, обычно 256/512 КВ, 4WSA

Объединенный кэш L3

Pentium 4: 512/1024КВ, 8WSAS

P6, Pentium: отсутствует

TLBинструкций для 4КBстраниц

Pentium 4: 128 элементов, 4WSA

P6, Pentium: 32 элемента, 4WSA

Pentium MMX: 32 элемента, ассоциативный

TLB данных для 4КBстраниц

Pentium 4: 64 элемента, ассоциативный; общий сTLBданных для больших страниц

P6, Pentium: 64 элемента, 4WSA

Pentium MMX: 64 элемента, ассоциативный; общий сTLBданных для больших страниц

TLB инструкций для больших страниц

Pentium 4: большие страницы фрагментируются

P6: 2 элемента, ассоциативный тип

Pentium: тот же, что и для 4КВ страниц

TLB данных для больших страниц

Pentium 4: тот же, что и для 4КВ страниц

P6: 8 элементов, 4WSA

Pentium: 8 элементов, 4WSA

Pentium MMX: тот же, что и для 4КВ страниц

Буферы записи

Pentium 4: 24 элемента

P6: 12 элементов

Pentium: 2 буфера по 1 элементу

Pentium MMX: 4 буфера по 1 элементу

WC-буферы

Pentium 4: 6 элементов

P6: 4 элемента

Pentium: отсутствует

Пояснения.

  • nWSA –n-канальный наборно-ассоциативный кэш (WaysSet-Associative),

  • nWSAS–n-канальный наборно-ассоциативный, секторированный кэш (WaysSet-Associative,Sectored)

Кэш-память процессоров строится с учетом возможности обращений к памяти со стороны внешних абонентов – других процессоров или иных контроллеров шины. Процессоры имеют механизмы внешнего слежения за состоянием собственного кэша с соответствующими аппаратными интерфейсами. Для поддержания согласованности данных кэша и основной памяти процессор отрабатывает циклы слежения или опроса (SnoopCycleилиInquireCycle), инициированные внешней (для него) системой. В этих циклах, происходящих при обращении к памяти со стороны внешнего абонента, процессор определяет присутствие затребованной области в своем собственном кэше. Если область отображается в кэше, то действия процессора зависят от состояния соответствующей строки кэша и типа внешнего обращения. Обращение по записи вызовет аннулирование данной строки. Обращение по чтению к области, соответствующей модифицированной («грязной») строке, вызовет выгрузку ее содержимого в основную память, прежде чем внешний абонент выполнит реальное считывание. В процессорахP6+ обращение к «грязной» строке со стороны другого процессора может вызывать выгрузку ее содержимого непосредственно в обращающийся процессор, что экономит время. Выгрузка этой строки в основную память будет произведена позже, согласно алгоритму обратной записи.

Кэш процессоров, начиная с Pentium, поддерживаетпротоколMESI, названный по определяемым им состояниямМ (Modified),E (Exclusive),S(Shared) иI(Invalid). Состояния строк для каждого процессора определяются следующим образом:

  • М-состояние – строка присутствует в кэше только этого процессора и модифицирована, то есть отличается от содержимого основной памяти. Запись в эту строку не приведет к генерации внешнего (по отношению к локальной шине) цикла обращения;

  • E-состояние – строка присутствует в кэше только этого процессора, но не модифицирована (ее копия в основной памяти действительна). Запись переведет ее в М-состояние, не вызывая внешнего цикла обращения;

  • S-состояние – строка присутствует в кэше этого процессора и потенциально может присутствовать в кэшах других процессоров, копия в памяти действительна. Запись в нее должна сопровождаться сквозной записью в основную память, что повлечет аннулирование соответствующих строк в других кэшах;

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

Кэш инструкций L1 реализует протокол лишь в части «SI», поскольку он не допускает записи. Процессор контролирует операции записи в память на попадание в область, представленную в кэше инструкций. Контроль выполняется на уровне физических адресов, в случае попадания строка аннулируется. На случай самомодифицирующегося кода в Р5+ дополнительно выполняется контроль на попадание записи в предварительно выбранные инструкции. Этот контроль выполняется на уровне линейных адресов, в случае попадания очередь предварительно выбранных инструкций аннулируется. Если программа модифицирует область кода, обращаясь к нему через иной линейный адрес, чем тот, что используется в потоке инструкций (например путем наложения сегментов данных и инструкций), то перед выполнением модифицированной инструкции должна выполняться сериализация (см. раздел ??).

Процессоры 486 опирались на механизм, работающий аналогично протоколу MESI и контроль модификации предварительно выбранных инструкций не производился. Для корректного выполнения кода после его модификации, должна была выполняться инструкция перехода, что приводило к аннулированию очереди выбранных инструкций.

В пространстве памяти компьютера имеются области, для которых кэширование принципиально недопустимо (например, разделяемая память адаптеров) или для которых непригодна политика обратной записи. Кроме того, кэширование иногда полезно отключать при выполнении однократно исполняемых участков программы (например, инициализации) с тем, чтобы из кэша не вытеснялись более полезные фрагменты.

В процессорах шестого поколения в связи с их «беспорядочностью» и «спекулятивностью» обращения к памяти могут производиться с различными методами повышения эффективности. По возможностям кэширования память можно классифицировать следующим образом.

  • Некэшируемая память UC (Uncacheable). Все обращения процессора по чтению и записи выполняются строго в порядке, предписанном программным кодом, и выходят на системную шину. Никакие спекулятивные чтения и предварительные выборки не используются. Такой тип требуется для ввода/вывода, отображенного на память. Работа процессора в таком режиме с обычным ОЗУ приведет к значительному снижению производительности. Некэшируемая память делится на два подтипа:

  • Строго не кэшируемая память (StrongUncacheable). К ней полностью относится приведенное определение, и она обычно обозначаетсяUC.

  • Мягко не кэшируемая память (UC-), которая может быть переопределена вWC, с помощью перепрограммирования регистровMTRR.

  • Память с комбинируемой записью WC (Write Combining). Некэшируемая память, когерентность памяти не поддерживается протоколом шины. Спекулятивное чтение допустимо, записи могут комбинироваться и откладываться вWCбуфер для снижения обращений к памяти. ПокаWCбуфер не заполнен, записи могут откладываться до любого события, вызывающего сериализацию (выполнение инструкцииSFENCE, MFENCE, CPUID, обращение к некэшируемой памяти, прерывание, либо выполнение инструкции типаLOCK). Такой тип применим, например, для видеопамяти графического адаптера (порядок записей не важен).

  • Память со сквозной записью WT (Write-through). Кэшируемая память, все операции записи и отражаются в кэше, и выходят на системную шину. Чтения по возможности выполняются из кэша, кэш-промахи вызывают заполнение строк кэша. Спекулятивное чтение и комбинирование записей разрешено. Данный тип применим, например, для буферов кадров, а также для памяти, к которой могут обращаться устройства, подключенные к шине и не поддерживающие протоколов обеспечения когерентности.

  • Память с обратной записью WB (Write-back). Кэшируемая память, все операции чтения и записи по возможности выполняются только с кэш-памятью. Запись на системную шину выходит только при необходимости освобождения строк или по требованию от других абонентов шины, что уменьшает необязательный трафик шины. Спекулятивное чтение и комбинирование записи разрешено. Этот тип самый производительный, но требует поддержки протокола обеспечения когерентности от всех абонентов шины, обращающихся к данной области памяти.

  • Память с защищенной записью WP (Write protected). Кэшируемая память, чтения по возможности выполняются из кэша, промахи вызывают заполнение строк. Записи выходят на системную шину и вызывают аннулирование строк в кэшах всех остальных абонентов шины (процессоров).

Доступные методы кэширования зависят от возможностей процессора (табл. $.3). Базовые методы (сквозная и обратная запись или отмена кэширования) управляются атрибутамиPCD(PageCacheDisable– запрет кэширования страницы) иPWT(PageWriteThrough– сквозная запись для страницы) системы управления страничной переадресации, более совершенные методы программируются только через регистрыMTRRилиPAT(см. ниже), если таковые имеются в процессоре.

Таблица $.3.