Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 1 по 294.doc
Скачиваний:
13
Добавлен:
16.04.2019
Размер:
6.2 Mб
Скачать

1.При блокированном чтении:

а) если требуемое данное не обнаруживается в кэш-памяти, используется данное с ма­гистрали; оно помещается в кэш, если оно копируемое в кэш-память;

б) если требуемое данное находится в неизмененном состоянии (S или Е), используется данное с магистрали;

в) если данное находится в кэш-памяти в измененном состоянии (М), используется дан­ное из кэш-памяти, а данное магистрали игнорируется, пока нет запроса обратной записи перед возбуждением контакта BRDY# циклом магистрали; если, однако, возникающий в процессе чтения запрос обратной записи переводит строку в S- или 1-состояние исполь­зуется данное магистрали.

2. При блокированном сохранении данное вводится в кэш-память сигнала на контакте BRDY# из магистрали. Отметим, что строка, записанная при блокированном сохранении , остается в состоянии М несмотря на сквозную запись на магистраль, так как длина дан­ного сквозной записи меньше размера строки из 32 байт.

Блокированные обращения являются полностью «выходящими» в том смысле, что:

до ввода первого блокированного обращения все загрузки и сохранения, которые предшествуют команде «lock» вводятся на магистраль (если они кэш-промахи); блокирован­ное обращение может быть введено до последнего сигнала на контакте BRDY# пред­шествующего цикла, если активирован контакт NA# в ответ на предшествующий цикл;

никакие данные по командам загрузки или сохранения после последнего блокированного обращения не поступают в кэш или на магистраль до последнего сигнала на контакте BRDY# для всех блокированных обращений.

Для достижения максимальной производительности выборки команд в ходе выполне­ния блокированной последовательности являются «не выходящими». Когда сигнал на кон­такте NA# вызывает конвейеризацию, выборки команд могут быть осуществлены, в то время как блокированные обращения к данным остаются на магистрали

3.2.5. Согласованность внутренних кэш-памятей

Просмотры как кэш-памяти команд, так и кэш-памяти данных могут быть обусловлены генерируемыми извне запросами циклов и результат кэш-просмотра представляется сиг­налами на выходных контактах Н1Т# и Н1ТМ#. Эти циклы помогают осуществить согласо­ванность с кэш-памятями других процессоров. Однако ПО должно принять на себя заботу не создавать несогласованностей, какие наблюдаются между внутренними кэш-памятями (включая и буферы страничной трансляции-TLB):

  • изменение адресного пространства, в то время как сохраняются теги виртуальных адре­сов предшествующего пространства в кэш-памяти команд или данных;

  • изменение команде памяти (или в кэш-памяти данных) без их изменения в кэш-памяти команд;

  • изменение информации в таблице страниц в памяти (или в кэш-памяти данных) без изменения той же самой информации в буферах TLB.

Некоторые обстоятельства, такие как обращение, к вводу/выводу, самоизменяющаяся машинная программа, обновления таблицы страниц или разделяемые данные в мультипро­цессорной системе необходимо обойти, установить некорректность или сбросить кэш-па­мяти. МП фирмы «Intel» обеспечивает это так.

Обход кэш-памятей команд и данных:

Сигнал на контакте KEN# запрещает копирование данного и команды из обращения к данному, если этот сигнал сброшен в ходе выполнения кэш-промаха.

  1. Если разряд CD из соответствующей таблицы страниц в единице, копирование в кэш­-память из этой страницы замаскировано. Значение разряда CD повторяется на выходном контакте РСО#для использования внешнего кэш-копирования.

  2. Если разряд WT из записи таблицы страниц установлен, кэш-копирование не маски­руется, а записи пропускаются сквозь кэш-память. Значение разряда WT дублируется зна­чением на выходном контакте PWT# и может быть использовано внешними кэш-памятями. (Заметим, что значение WT не воздействует на стратегию кэш-памяти команд, поскольку кэш-память команд является не записываемой. Однако, если команда из страницы, имею­щей разряд WT установленным в записи РТЕ, помещается в кэш-память данных, страте­гия сквозной записи применяется точно так же, как для страницы данных).

  3. Записи с некорректностью кэш-копий - установленный разряд ITI в регистре dirbase фиксирует, что каждая строка кэш-памятей адресной трансляции и команд некорректна. В кэш-памяти данных он фиксирует некорректности виртуальных тегов, но не физических,

  4. Сброс (очистка) кэш-памяти данных - кэш-память данных очищается программой ПО, которая использует команду «flush». Команда «flush» очень быстро реализует обрат­ные записи в памяти. Тот же эффект (обратная запись измененной строки) можно получить по команде загрузки, но это будет сделано в два раза медленнее - загрузка должна снача­ла сделать 4 передачи по магистрали, чтобы получить новое данное, затем сделать обрат­ую запись измененной строки. Команда «flush» реализует обратные записи, не требуя чтения данного из основной памяти, замещающего измененную строку.

Согласованность пространства адресов. В мультизадачных системах с виртуальной адресацией ОС может управлять памятью так, что несколько процессов используют одну и ту же физическую память при доступах по разным виртуальным адресам. Когда ОС пере­ключает процессы, она изменяет поле DTB регистра базы таблицы страничных директо­рий для указания другой страничной директории, задающей новое адресное пространство, При этом все кэш-памяти должны стать некорректными: поскольку из TLB-буферов долж­ны читаться новые страничные директории, а не кэш-памяти данных и команд, потому что, виртуальные адреса из нового адресного пространства, очевидно, не совпадают со скопи­рованными в кэш-память виртуальными адресами из старого пространства.

Некорректность кэш-памятей фиксируется путем установки разряда ITI при записи со­держимого в регистр базы таблицы страничных директорий. Некорректность кэш-команд относится как к физическим, так и виртуальным тегам, поскольку кэш-память команд име­ет один разряд корректности, общий для физического и для виртуального тегов. Для кэш­памяти данных установка разряда ITI фиксирует некорректность только виртуальных те­гов. Тем не менее, некоторые измененные строки будут возможно перезаписаны в память, когда их место потребуется для строк из нового адресного пространства или когда вне­шние устройства, подключенные к магистрали, запросят измененные данные через циклы запросов.

Как уже сказано, некорректность кэш-памятей фиксируется установкой разряда ITI при занесении содержимого в регистр базы таблицы страничных директорий. Тем не менее отметим, что программа ОС, которая очищает кэш-памяти, должна находиться в памяти в ходе очистки. Обычно эта программа имеет один и тот же виртуальный адрес для всех процессов.

Разрешение или маскирование (запрещение) адресной трансляции (с помощью разря­да APG) подобно изменению поля DTB, так как в этом случае также изменяется распреде­ление памяти. Перед изменением состояния разряда APG виртуальные теги в кэш-памятях команд и данных должны быть помечены как некорректные.

Согласованность кэш-памяти команд. Когда ПО модифицирует некоторую страницу, со­держащую команды [например, отладчик помещает некоторую команду с командой «trap» (ло­вушка] для указания точки останова) кэш-память команд может оказаться несогласованной по следующим причинам:

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

  • изменения в командах не приводят к автоматическому обновлению кэш-памяти команд;

  • кэш-промахи при обращениях к кэш-памяти команд не проверяются в кэш-памяти данных.

ПО должно удостовериться, что измененные строки, содержащие команды, записаны в основную память до попытки прочитать их в кэш-памяти команд. Для этого пригодны два способа:

  1. очистка кэш-памяти данных с применением команды «flush»; заметим, что для того чтобы сделать кэш-память команд согласованной с кэш-памятью данных, кэш-память дан­ных должна быть очищена перед фиксацией некорректности кэш-памяти команд;

  2. пометить все страницы команд как страницы со сквозной записью установкой разря­да WT в записях страниц, так чтобы изменения в командах приводили к немедленной пере­записи в память; этот вариант, пожалуй, самый лучший.

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

Согласованность таблиц страниц. Данные в TLB-буферах становятся некорректными, когда ОС изменяет таблицы страниц или страничных директорий по следующим причинам:

  • так как кэш-память данных использует стратегию обратной записи, обновления кэш-копий таблиц страниц не приводят к незамедлительному обновлению памяти;

  • изменения таблиц страниц не сопровождаются автоматическим обновлением TLB-буферов;

  • в процессе трансляции МП «Intel» обращаются за страничными директориями и таблица­ми страниц, размещенными только во внешней памяти; он не использует кэш-данных (дан­ные не передаются из кэш-памяти данных в TLB-буферы в ходе циклов замещения TLB-буферов).

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