Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПиП МПС(Ассемблер Левицкий экт 4) / MProc / M9 / Системная архитектура часть 4..doc
Скачиваний:
70
Добавлен:
16.04.2013
Размер:
751.1 Кб
Скачать

4.4.11.2. Передача атрибутов физической адресации – отключение предвыборок/спекуляций и удаление кэшируемости

Когда не спекулятивное обращение делается к физическому адресу с атрибутом WBL, то 4К-байтная страница, содержащая этот адрес, становится спекулятивно доступной. Это позволяет процессору, который делает не спекулятивное обращение, в последствии, сделать спекулятивное обращение к этой странице. (См. описание ограниченной спекулятивности в разделе 4.4.6 «Атрибуты спекулятивности»).

Если к той же самой физической памяти должны затем обращаться с атрибутом UC, то программа должна сначала сделать все такие обращения спекулятивно недоступными и слить любые копии кэша из кэша. Иначе, некэшируемая ссылка может вызвать кэш попадание, что приведет к аварийному завершению «Машинная проверка».

Также, если физическая память должна быть удалена из системы, либо если физическая память должна быть реконфигурирована таким образом, что некоторый физический адрес Х, который используется для соответствия некоторой части памяти, теперь не будет ни чему соответствовать в системе, то программа сделает те же самые действия. Иначе процессор может инициировать спекулятивную предвыборку после того, как память была удалена или реконфигурирована, что приведет к аварийному завершению «Машинная проверка».

При процессорной инициализации замены, выполняются следующие шаги:

1. Вызов процедуры PAL_PREFETCH_VISIBILITY

Вызов процедуры PAL_PREFETCH_VISIBILITYс входным аргументомtrans_typeравным единице показывает, что заменяется атрибут физической памяти. ЭтотPAL-вызов прекращает права процессора делать спекулятивные обращения к любым страницам с ограниченной спекулятивностью (т.е. он делает всеWBLстраницы спекулятивно недоступными – см. обсуждение ограниченной спекулятивности в разделе 4.4.6).

Возвращаемый из этой процедуры аргумент информирует – необходим ли вызов этой процедуры для удаленного процессора или нет. Если вызов этой процедуры не необходим для удаленного процессора, то программа может пропустить IPIв шаге 2 и сразу перейти к шагу 3.

2. Используя механизм IPI, описанный в разделе 5.8.4.1 «Сообщения межпроцессорных прерываний», для достижения всех процессоров в когерентном домене, выполните шаг 1 во всех процессорах в когерентном домене и прежде чем продолжать, дождитесь пока все вызовы процедурыPAL_PREFETCH_VISIBILITYзавершаться во всех процессорах в когерентном домене.

В процессоре, инициализирующем процесс отключения, последовательность продолжается:

3. fc [X] // Сливаем все процессорные кэши в когерентном домене

fc [X+32]

fc [X+64]

. . .// … для всех страниц «Х» (размер страницы равенps)

fc [X+ps-32] ;;

// Убедимся, что сливы кэша также видны процессорной инструкции fetch

sync.i ;;

После шага 3, все инструкции слива кэшей, инициализированные в шаге 3, являются видимыми для всех процессоров в когерентном домене, т.е. в когерентном домене нет процессора, который ответил бы кэш попаданием на обращение к памяти по адресу принадлежащему странице «Х».

4. Вызвать процедуру PAL_MC_DRAIN

5. Используя механизм IPI, описанный в разделе 5.8.4.1 «Сообщения межпроцессорных прерываний», для достижения всех процессоров в когерентном домене, выполните шаг 4 во всех процессорах в когерентном домене и прежде чем продолжать, дождитесь пока все вызовы процедурыPAL_MC_DRAINзавершаться во всех процессорах в когерентном домене.

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

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