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

4.1.1.5. Формат вставки трансляции

Рис. 4.5 показывает взаимодействие регистров для вставки элементов в TLB. ВставкиTLBвыполняются с помощью инструкцийitc.d, itc.i(InsertTranslationCache– вставить кэш трансляции) иitr.d, itr.i(InsertTranslationRegisters– вставить регистры трансляции). Первое 64-битовое поле, содержащее физический адрес, атрибуты и разрешения, задается операндом регистра общего назначения. Дополнительная информация о ключе защиты и размере страницы задается регистром прерывания вставкиTLB(ITIR–InterruptionTLBInsertRegister). Регистр прерывания адреса ошибки (IFA–InterruptionFaultingAddress) задает виртуальный адрес дляTLBвставок инструкций и данных. РегистрыITIRиIFAописаны в разделе 3.3.3 «Регистры управления». Старшие три битаIFA(VRNбиты {63:61}) выбирают регистр виртуального региона, который задает полеRIDдля элементаTLB. ПолеRIDвыбранного региона отмечается для трансляции, поскольку оно вставляется вTLB. Если используются зарезервированные поля или зарезервированные коды, то на инструкции вставки вызывается ошибка «Зарезервированный регистр/поле».

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

63

53

52

51

50

49

32

31

12

11

9

8

7

6

5

4

2

1

0

GR[r]

ig

ed

rv

ppn

ar

pl

d

a

ma

rv

p

ITIR

rv

key

ps

rv

IFA

vpn

ig

RR[vrn]

rv

rid

ig

rv

ig

Рис.4.5. Формат вставки трансляции

Таблица 4.2 описывает все поля интерфейса трансляции.

Табл. 4.2. Поля интерфейса трансляции

Поле TLB

Исходное поле

Описание

rv

GR[r]{1,51:50},ITIR{1:0,63:32},RR[vrn]{1,63:32}

Зарезервировано

p

GR[r]{0}

Presentbit– бит существования. Если – 1, то обращения, использую­щие эту трансляцию, вызывают ошибку «Не существующая страница инструкций или данных». Большинство других полей игнорируется процессором, детали см. на рис. 4.6. Этот бит обычно используется процессором для указания того, что отображаемая физическая страница не находится в физической памяти. Бит существования не является битом правильности. Для каждогоTLBэлемента, процессор поддерживает дополнительный скрытый бит правильности, который показывает, является ли элемент допустимым.

ma

GR[r]{4:2}

Memory Attribute – атрибуты памяти. Описывает атрибуты кэшируемости, когерентности, политики записи и спекулятивности для отображаемой физической страницы. Детальнее см. раздел 4.4 «Атрибуты памяти»

a

GR[r]{5}

Accessed bit – бит доступа. Если – 0 иPSR.da=0, то обращения к данным для страницы, вызывают ошибку «Бит доступа к данным». Если – 0 иPSR.ia=0, то обращения к инструкциям для страницы, вызывают ошибку «Бит доступа к инструкциям». Если – 0, то обращенияIA-32 для страницы, вызывают ошибку «Бит доступа к данным». Этот бит может включить вызов ошибки на обращении для целей трассировки или отладки. Процессор не меняет бит доступа при обращении.

d

GR[r]{6}

Dirtybit– бит мусора. Если – 0 иPSR.da=0, то обращения сохране­ния, либо семафоры типаItanium, для страницы, вызывают ошибку «Бит мусора данных». Если – 0, тоIA-32 обращения сохранения, либо семафоры, для страницы, вызывают ошибку «Бит мусора данных». Процессор не обновляет бит мусора при обращениях записи.

pl

GR[r]{8:7}

PrivilegeLevel– уровень привилегий. Задает уровень привилегий или расширение уровня для страницы. Подробности см. в разделе 4.1.1.6 «Права доступа к странице».

ar

GR[r]{11:9}

AccessRights– права доступа. Управляет привилегиями и разрешениями чтения, записи и выполнения страницы. Подробности см. в разделе 4.1.1.6 «Права доступа к странице».

ppn

GR[r]{49:12}

PhysicalPageNumber– номер физической страницы. Наиболее значимые биты отображаемого физического адреса. В зависимости от размера страницы используемого при отображении, некоторые из наименее существенных битовPPNигнорируются.

ed

GR[r]{52}

ExceptionDeferral– отложенное исключение. Для спекулятивной загрузки, которая приводит к исключению, битTLB.edстраницы инструкций спекулятивной загрузки, является одним из условий, которое определяет, должно ли быть отложено исключение. Подробнее см. раздел 5.5.5 «Откладывание ошибок спекулятивной загрузки». Этот бит игнорируется в данныхTLBдля обращений к памяти данных и для обращений к памятиIA-32.

ig

GR[r]{63:53},IFA{11:0},RR[vrn]{0,7:2}

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

ps

ITIR{7:2}

PageSize– размер страницы. Размер страницы отображения. Для размеров страниц больших 4К байт, биты младших разрядовPPNиVPN– игнорируются.

key

ITIR{31:8}

Protection Key – ключ защиты. Уникально отмечает трансляцию для защищаемого домена. Если ключ трансляции не найден в регистрах ключей защиты (PKR–ProtectionKeyRegisters), то обращение отклоняется и вызывается ошибка «Промах ключа данных или инструкций». Детальнее см. раздел 4.1.3 «Ключи защиты».

vpn

IFA{63:12}

VirtualPageNumber– номер виртуальной страницы. В зависимости от размера страницы трансляции, в процессе трансляции игнорируются некоторые наименее существенные биты заданногоVPN. Регистр региона выбирается с помощьюVPN{63:61} (VRN).

rid

RR[VRN].rid

VirtualRegionIdentifier– идентификатор виртуального региона. При вставкахTLB, идентификатор региона, выбранный с помощьюVPN{63:61} (VRN), используется как дополнительные биты соответствия для последующих обращений и сбросов (очень похоже на битыvpn).

На рис. 4.6 описан формат для «не существующих» трансляций (Р-бит равен 0).

63

32

31

12

11

8

7

2

1

0

GR[r]

ig

0

ITIR

ig

ps

rv

IFA

vpn

ig

RR[vrn]

rv

rid

ig

rv

ig

Рис.4.6. Формат вставки трансляции типа «не существующей» (NotPresent)