Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Системная архитектура часть 6..doc
Скачиваний:
21
Добавлен:
16.04.2013
Размер:
270.85 Кб
Скачать

6.5. Управление rse

Механизм RSEможет управляться на всех уровнях привилегий с помощью трех инструкций (cover, flushrsиloadrs) и обращения к четырем прикладным регистрам (movв/изRSC,BSP,BSPSTOREиRNAT). Этот раздел сначала описывает каждый прикладной регистрRSE, а затем, обсуждает три управляющие инструкции.

6.5.1. Регистр конфигурации стека регистров (rsc)

Схема прикладного регистра RSC(RegisterStackConfiguration) описана в разделе первого тома 3.1.8.2. Этот раздел описывает семантику режима, уровень привилегий и поля порядка байт дляRSC. Полеloadrsописано как часть инструкцииloadrsв разделе 6.5.4.

Режимы RSC. В регистреRSC, два бита задают режим (mode), когдаRSEгенерирует операции сливания/заливания регистров. Когда оба бита нулевые (режим ленивого слежения),RSEзапускает только принудительные загрузки и сохранения (когда инструкцииalloc, flushrs, loadrs, br.ret илиrfiтребуют сливания или заливания регистров). Бит 0 поляRSE.mode, разрешает активныеRSEзагрузки. Табл. 6.3 определяет все четыре возможных режимаRSE. Для будущей информации оRSEрежимах реализованных в конкретномItaniumпроцессоре, посмотрите документацию, специфицирующую процессор.

Табл. 6.3. Режимы RSE (RSE.mode)

Режим

Загрузки RSE

Сохранения RSE

RSE.mode

Ленивое слежение

Только принудительные

Только принудительные

00

Интенсивное сохран-е

Только принудительные

Активные и принудительные

01

Интенсивная загрузка

Активные и принудительные

Только принудительные

10

Активность

Активные и принудительные

Активные и принудительные

11

Алгоритм, который решает, нужно ли и когда нужно спекулятивно выполнить активные операции сливания и заливания, является зависимым от реализации. Если RSE.modeне равно нулю, то программное обеспечение не может делать произвольные предположения о поведенииRSEзагрузок и сохранений. Кроме того, доступ к прикладным регистрамBSPSTOREиRNAT, и выполнение инструкцийloadrs требует, чтобыRSE.modeбыл равен нулю (режим ленивого слежения). Если инструкцияloadrs, либо перемещение в/изBSPSTORE, либо перемещение в/изRNAT, выполнено, когдаRSE.modeне равно нулю, то вызывается ошибка «Нелегальная операция». Активные сливания/заливания регистраRNATв/из вспомогательной памяти, являются разрешенными, только если механизмRSEнаходится в режиме интенсивных или активных загрузок/сохранений. В режиме ленивого слежения, механизмRSEможет сливать/заливать регистрRNAT, только если требуется принудительно слить/залить последующий регистр.

Уровень привилегий RSE. Если допускается трансляция адреса (PSR.rt=1), то механизмRSEработает на уровне привилегий, определяемом двумя битами уровня привилегий в регистре конфигурации регистрового стека (RSC.pl). Проверки всех уровней привилегий для виртуальных обращенийRSE, выполняются, используя уровень привилегийRSC.pl. ЕслиRSCзаписывается, то биты уровня привилегий урезаются до текущего уровня привилегий процесса, то есть до числового максимума от текущего уровня привилегий и уровня привилегий в исходном регистре, записанном вRSC.pl.

Защита, также проверяется на основании текущих элементов в данных TLB. МеханизмRSEвсегда остается когерентным по отношению к даннымTLB. Если трансляция, которая используетсяRSE, изменена или сброшена, тоRSEнемедленно начнет использование новой трансляции, либо удовлетворится промахомTLB. Только принудительные загрузки и сохранения могут вызвать ошибкиRSEсвязанные с памятью. Детали о выдаче ошибокRSE, описаны в разделе 6.6 «ПрерыванияRSE». Хотя активныеRSEзагрузки и сохранения не вызывают прерываний, но при некоторых условиях, они могут вызвать обходVHPTи вставкуTLB. Детали о том, когдаRSEзагрузки и сохранения могут вызвать обходVHPT, описаны в разделе 4.1.7 «СредаVHPT».

Механизм RSEожидает, что его вспомогательная память отображается в кэшируемую спекулятивную память. Если транзакцииRSEсливания/заливания выполнены в не спекулятивной памяти, которая может содержать устройства ввода/вывода, то поведение системы не предсказуемо.

Порядок байт(byteorder)RSE. Поскольку,RSEработает асинхронно с процессором, то он может работать от имени контекста с упорядочением байтов, которое отличается от текущего. ПоэтомуRSEимеет бит, определяющий свое собственное упорядочивание байтов:RSC.be. ЕслиRSC.be=0, то регистры запоминаются с упорядочиванием байтов по убыванию (самые младшие по значимости байты располагаются в младших адресах). ЕслиRSC.be=1, то регистры запоминаются с упорядочиванием байтов по возрастанию (самые старшие по значимости байты располагаются в младших адресах). Кроме того, значениеRSC.beопределяет порядок байт при сливании/заливанииNaTсовокупности механизмомRSE. Код может быть записан вRSC.beна любом уровне привилегий. Изменения вRSC.beмогут быть сделаны программой только, еслиRSC.mode=0. Если изменения не удачны, то в результате содержимое вспомогательной памяти будет не определено.