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

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

Рис. 4.5 показывает взаимодействие регистров для вставки элементов в TLB. Вставки TLB выполняются с помощью инструкций itc.d, itc.i (Insert Translation Cache – вставить кэш трансляции) и itr.d, itr.i (Insert Translation Registers – вставить регистры трансляции). Первое 64-битовое поле, содержащее физический адрес, атрибуты и разрешения, задается операндом регистра общего назначения. Дополнительная информация о ключе защиты и размере страницы задается регистром прерывания вставки TLB (ITIR – Interruption TLB Insert Register). Регистр прерывания адреса ошибки (IFA – Interruption Faulting Address) задает виртуальный адрес для 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}

Present bit – бит существования. Если – 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}

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

pl

GR[r]{8:7}

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

ar

GR[r]{11:9}

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

ppn

GR[r]{49:12}

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

ed

GR[r]{52}

Exception Deferral – отложенное исключение. Для спекулятивной загрузки, которая приводит к исключению, бит 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}

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

key

ITIR{31:8}

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

vpn

IFA{63:12}

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

rid

RR[VRN].rid

Virtual Region Identifier – идентификатор виртуального региона. При вставках 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. Формат вставки трансляции типа «не существующей» (Not Present)