ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.


Вся информация здесь: восстановление usb флешки - вся актуальная информация у нас на сайте!

 

Часть 13

Глава 12   Кеширование
-----------------------------------------------------------------
Процессор i486 имеет встроенный в микросхему внутренний кеш для
хранения 8Кбайт команд и данных. Кеш увеличивает быстродействие
системы, отвечая на внутренние запросы чтения быстрее, чем при
выполнении цикла чтения оперативной памяти по шине. Это средство
уменьшает также использование процессором внешней шины.
Внутренний кеш прозрачен для работающих программ.
Процессор i486 может использовать внешний кеш второго уровня вне
микросхемы процессора. Обычно внешний кеш позволяет увеличить
быстродействие и уменьшить полосу пропускания шины, требуемую
процессором i486.
Кеши в мультипроцессорных системах требуют особого рассмотрения.
Если один процессор выполняет доступ к данным, кешируемым в
другом процессоре, требуется обеспечить правильность принимаемых
им данных. Если же он выполняет модификацию данных, то все
остальные процессоры, обращающиеся к этим данным, должны верно
принять модифицированные данные. Это свойство называется
непротиворечивостью кеша. Процессор i486 обеспечивает механизм,
гарантирующий непротиворечивость кеша при наличии нескольких
процессоров и внешних кешей.
Работа внутреннего и внешнего кешей прозрачна для прикладного
программного обеспечения, но знание поведения этих кешей может
быть полезным с точки зрения оптимизации быстродействия
программного обеспечения. В многопроцессорных системах
обеспечение непротиворечивости кеша может потребовать
вмешательства со стороны системного программного обеспечения.
Кеш доступен во всех режимах работы: реальном режиме, защищенном
режиме и виртуальном режиме 8086. Для правильно разработанных
однопроцессорных систем кеш после инициализации не требует
дальнейшего управления своей работой.
12.1  Введение в кеширование
-----------------------------------------------------------------
Кеши часто реализуются в виде ассоциативной памяти.
Ассоциативная память имеет дополнительную область для каждого
блока памяти, которая называется тегом. Когда в ассоциативную
память передается адрес, каждый тег одновременно сравнивается с
этим адресом. Если тег совпадает с адресом, то обеспечивается
доступ к блоку памяти, связанному с этим тегом. Это называется
кеш-попаданием. Если такое совпадение не произошло, то кеш
сообщает о кеш-промахе. В случае кэш-промаха требуется цикл шины
для обращения в оперативную память.
Для того, чтобы выиграть в эффективности за счет внутреннего
кеша, при его реализации память разбивается на участки по 128
байт, которые называются строками кеша. Нежелательно, чтобы
внешние кеши работали со строками, меньшими по размеру, чем
строки внутреннего кеша.
Кеш процессора i486 не поддерживает частичное заполнение строк
кеша, поэтому для кеширования одного двойного слова требуется
кеширование четырех двойных слов. Такой способ использования
кеша наверняка был бы неэффективным, если бы не тот факт, что
процессор редко выполняет доступ к произвольным адресам памяти.
Практически все время процессор обращается к небольшому числу
областей памяти, таких как сегмент кода или стека, и выполняет в
них доступ к множеству смежных адресов.
Для упрощения аппаратной реализации строки кеша могут быть
выравнены только по границе 128-битовых блоков главной
оперативной памяти. (Выравненный 128-битовый блок начинается
всегда с адреса, четыре младшие бита которого очищены). При
распределении новой строки кеша процессор загружает в строку
кеша блок из главной памяти. Эта операция называется заполнением
строки кеша. Строки кеша, которые были распределены, называются
достоверными. Нераспределенные строки кеша называются
недостоверными.
Кеширование может быть со сквозной записью и с обратной записью.
При чтении обе формы кеширования работают, как было описано
выше. При записи кеширование со сквозной записью обновляет как
кеш-память, так и главную память; кеширование с обратной записью
обновляет только кеш-память. Кеширование с обратной записью
обновляет главную память только при выполнении операции обратной
записи. Операции обратной записи запускаются при необходимости
отменить распределение строк кеша, например для распределения
новых строк памяти в уже заполненном кеше. Операции обратной
записи также запускаются механизмами, используемыми для
поддержания непротиворечивости кеша.
Внутренний кеш процессора i486 является кешом со сквозной
записью. Он может быть использован с внешними кешами,
являющимися кешами со сквозной записью, с обратной записью, либо
комбинацией того и другого.
12.2  Работа внутреннего кеша
-----------------------------------------------------------------
Программное обеспечение управляет режимом работы кеша.
Кеширование может быть разрешено (это состояние, следующее после
инициализации), запрещено при существовании достоверных строк
кеша (режим, в котором кеш работает как внутренняя
сверхоперативная память), либо кеширование может быть запрещено
полностью.
При запрещении кеша требуется принимать меры предосторожности.
Когда CD установлен в 1, процессор i486 не будет выполнять
чтение внешней памяти, если в кеше еще находится копия. При NW,
установленном в 1, процессор i486 не будет выполнять запись во
внешнюю память, если данные находятся в кеше. Это означает, что
в кеше центрального процессора i486 могут храниться данные о
состоянии. Эти данные не будут записаны во внешнюю память при
последующей установке NW в 0, либо при затирании этой строки
кеша в результате кеш-промаха. В целом, при запрещении кеша
следует выполнять его очистку.
Можно заморозить  данные  в  кеше,  загрузив  его при помощи
тестовых регистров при  установленных  CD  и  NW.  Это  позволяет
гарантировать кеш-попадания для кодов и данных, критичных к
времени доступа.
Отметим, что все сегменты должны начинаться с границы адреса,
кратного 16, что позволит программам выравнивать код/данные в
строке кеша.
12.12.1  Биты запрещения кеша
-----------------------------------------------------------------
Режимы, устанавливаемые при помощи битов CD и NW, приведены в
Таблице 12-1.
                Таблица 12-1. Режимы работы кеша
-----------------------------------------------------------------
  CD      NW                       Описание
-----------------------------------------------------------------
  1       1       Кеширование запрещено, но достоверные строки
                  кеша продолжают   "отзываться".   Для   полного
                  запрещения кеша войдите в данный режим и
                  выполните очистку кеша. Для использования кеша
                  в качестве внутренней сверхоперативной памяти
                  предварительно загрузите кеш достоверными
                  строками, специально выбирая для этого нужные
                  операции с памятью или при помощи тестовых
                  регистров. В этом режиме запись в достоверные
                  строки кеша обновляет кеш, но не влияет на
                  содержимое главной памяти.
  1       0       Новые строки кеша не распределяются, но
                  достоверные строки кеша продолжают "отзываться"
  0       1       Неверная установка. Генерируется исключение
                  общей защиты с кодом ошибки, равным нулю.
  0       0       Кеширование разрешено
-----------------------------------------------------------------
12.2.2  Команды организации кеша
-----------------------------------------------------------------
Для аннулирования содержимого внутреннего и внешнего кешей
используются команды INVD и WBINVD. Команда INVD очищает
внутренний кеш и генерирует специальный цикл шины, указывающий
на то, что внешний кеш также должен быть очищен. (Реакция
аппаратного обеспечения на прием цикла очистки кеша зависит от
конкретной реализации: аппаратное обеспечение может использовать
другой механизм, обеспечивающий непротиворечивость кеша).
Между командами WBINVD и INVD существует всего два различия.
Команда WBINVD генерирует специальный цикл шины, означающий, что
внешние кеши с обратной записью должны выполнить обратную запись
модифицированных данных в главную оперативную память. Этот цикл
выдается непосредственно перед циклом очистки кеша.
12.2.3  Само-модифицирующийся код
-----------------------------------------------------------------
Запись в команду в кеше приведет к ее модификации как в кеше,
так и в оперативной памяти, но если выборка команды была
выполнена перед записью, то может быть выполнена именно старая
версия команды. Для предупреждения такой ситуации следует
очистить модуль предварительной выборки данной команды,
запрограммировав непосредственно после любой модифицирующей
данную команду записи команду перехода.
12.3  Организация кеша на уровне страниц
-----------------------------------------------------------------
Процессор i486 определяет в элементах каталога страниц и
страничных таблиц второго уровня два бита, которые для
процессоров 386 являлись зарезервированными. Эти биты служат для
управления состоянием выходных штырьков процессора. Они
используются для организации кеширования на страничном уровне.
12.3.1  Биты организации кеширования
-----------------------------------------------------------------
Биты PCD и PWT управляют кешированием на страничном уровне. Бит
PCD (запрещение кеширования на страничном уровне) влияет на
работу внутреннего кеша. Оба бита, PCD и PWT (бит обратной
записи на страничном уровне), определяют состояние выходных
штырьков процессора, которые управляют внешними кешами.
Обработка этих сигналов внешним аппаратным обеспечением в
зависимости от конкретной реализации: например, некоторые
аппаратные системы могут управлять кешированием страниц,
декодируя несколько из старших адресных битов.
Существует три потенциальных источников битов, используемых для
управлением состояниями выходов PCD и PWT процессора: регистр
CR3, каталог страниц и таблицы страниц второго уровня. Выходы
процессора могут управляться регистром CR3 для тех циклов шины,
где механизм подкачки страниц не используется для генерации
адреса, например загрузка элемента в каталог страниц. Выходы
управляются элементом каталога страниц при доступе к элементу
таблицы страниц второго уровня. Выходы управляются элементом
таблицы страниц второго уровня при доступе к команде или данным
в оперативной памяти.
12.3.1.1  Бит PCD
-----------------------------------------------------------------
При установленном бите PCD (позиция бита 4) элемента таблицы
страниц кеширование страницы запрещено, даже если аппаратное
обеспечение запрашивает кеширование, воздействуя для этого на
вход KEN#. При очищенном бите PCD кеширование может быть
запрошено аппаратным обеспечением по циклам.
Запрещение кеширования обязательно для страниц, содержащих порты
ввода/вывода, управляемые оперативной памятью. Это также полезно
делать для страниц, не дающих выигрыша в быстродействии при
кешировании, например если там находится программное обеспечение
инициализации.
Независимо от элементов каталога страниц процессор i486
принудительно установит выход PCD в высокое (HIGH) состояние при
установленном бите CD (Запрещение Кеширования) регистра CR0.
12.3.1.2  Бит PWT
-----------------------------------------------------------------
При установленном бите  PWT  (позиция  бита  3)  в  элементе
таблицы страниц  для  данных  соответствующей  страницы  задается
стратегия кеширования со сквозной записью.  Очистка бита PWT дает
возможность использовать    для    данной    страницы   стратегию
кеширования с  обратной   записью.   Поскольку   внутренный   кеш
процессора i486  является  кешем со сквозной записью,  бит PWT на
его работу не влияет.  Однако,  внешние кеши  могут  использовать
кеширование с  обратной  записью,  и  потому  могут  использовать
выходной сигнал, зависящий от бита PWT, для управления стратегией
кеширования на постраничной основе.
В мультипроцессорных системах разрешение сквозной записи может
быть выгодным для разделяемой памяти, в частности для таких
позиций памяти, в которые нечасто выполняется запись одним
процессором, но из которых часто выполняется чтение другими
процессорами.


Яндекс цитирования