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

4.1.8. Поиск трансляции

Общая последовательность поиска и VHPT показана на рис. 4.16. При неудачном TLB поиске, если обходчик VHPT запрещен для региона обращения, то вызывается ошибка «Альтернативный промах TLB инструкций/данных». Если обходчик VHPT разрешен для региона обращения, то следует обращение к VHPT для локализации промахнувшейся трансляции. См. раздел 4.1.7 «Среда VHPT». Если дополнительные промахи TLB происходят в процессе обращений обходчика VHPT, то вызывается ошибка «Трансляция VHPT». Если обходчик VHPT не находит требуемую трансляцию в VHPT или поиск завершается аварийно, то вызывается ошибка «Промах TLB инструкций/данных». В противном случае элемент загружается в ITC или DTC. Если же упомянутые условия ошибки не обнаружены, то процессор может загрузить элемент в ITC или DTC, даже если порядок выполнения программы не требует трансляции.

Вставки обходчика VHPT в TC, следуют тем же самым правилам очистки перед выполнением, которым подчиняются программные вставки (см. табл. 4.1 «Поведение сброса инструкций TLB»). Вставки обходчика VHPT в DTC, ведут себя подобно itc.d; вставки обходчика VHPT в ITC, ведут себя подобно itc.i. Если обращение инструкции приводит в результате к обходу VHPT, который отсутствует в данных TLB, то вставка DTC для трансляции для VHPT, действует подобно itc.d. Вставки обходчика VHPT в элементы, которые существуют в регистрах TR, не разрешены. Установлено, что обходчик VHPT может искать любой виртуальный адрес, но если адрес отображается TR, то он не вставляется в TC. Программное обеспечение не должно создавать накладывающиеся трансляции в VHPT, которые являются большими, чем текущие существующие TR трансляции. Вставка обходчика VHPT может привести к аварийному завершению «Машинная проверка», если существует наложение между TR и вставляемым элементом VHPT.

После того как загружен элемент трансляции, проверяются дополнительные ошибки TLB; они включаются в приоритетном порядке: «Страница не представлена», «Употребление NaT-страницы», «Промах ключа», «Разрешение ключа», «Права доступа», «Бит доступа» и «Бит мусора». Табл. 4.9 описывает ошибки связанные с обходчиком VHPT и TLB.

При неудачном поиске TLB/VHPT, процессор загружает регистры прерывания и трансляцию по умолчанию, как это описано в разделе 8.1 «Описания вектора прерывания» при описании параметров ошибки трансляции. Если операционная система принимает значения по умолчанию, то только часть физического адреса элемента TLB, нужна для вставки TLB.

Virtual Address

found

Search TLB

not found

Alternate Instruction TLB Miss fault

no

Inst VHPT Walker Enabled

yes

VHPT walker TLB Miss

VHPT Instruction fault

Search VHPT

Instruction TLB Miss fault

failed search: tag mismatch or walker abort

found

Faults:

Page Not Present

NaT Page Consumption

Key Miss

Key Permission

Access Rights

Access Bit

Debug

TC Insert

fault checks

no fault

Access Memory

Instruction TLB VHPT Search

Virtual Address

Unimplemented Data Address fault

no

implemented VA?

yes

Data Nested TLB fault

Search TLB

0

PSR.ic

not

found

Alternate Data TLB Miss fault

Data VHPT Walker Enabled

Data Nested TLB fault

0

yes

PSR.ic

VHPT walker

VHPT Data

TLB Miss

fault

Search VHPT

Data Nested TLB fault

PSR.ic

failed search: tag mismatch

or walker abort

found

Data TLB Miss fault

Faults:

Page Not Present

NaT Page Consumption

Key Miss

Key Permission

Access Rights

Dirty Bit

Access Bit

Debug

Unaligned Data Reference

TC Insert

fault checks

no fault

Access Memory

Unsupported Data Reference

Data TLB VHPT Search

Рис. 4.16. Поиск TLB/VHPT

Табл. 4.9. Ошибки поиска TLB и VHPT

Ошибка

Описание

Инструкции/данные VHPT

Вызывается, если есть дополнительный промах TLB, когда обходчик VHPT пытается обратиться к VHPT. Обычно используется для создания отображения листа таблицы для конфигурации таблицы линейных страниц.

Альтернативный промах TLB инструкций/данных

Вызывается, когда обходчик VHPT не разрешен, а обращение к инструкциям или данным приводит к промаху TLB. Например, обходчик VHPT может быть запрещен в данном виртуальном регионе, так что могут быть использованы алгоритмы трансляции, зависимые от регионов.

Промах TLB инструкций/данных

Вызывается, если обходчик VHPT разрешен, но:

  • Процессор не может локализовать требуемый элемент VHPT

  • Процессор аварийно прерывает поиск VHPT, по причинам, определяемым реализацией

  • Не реализован обходчик VHPT

  • Регион обращения определяет привилегированный размер страницы не поддерживающий VHPT

  • В трансляции используются зарезервированные или не реализованные PPN биты

  • Хэш адрес попадает в не реализованное адресное пространство

  • Хэш адрес соответствует регистру отладки данных

По сути, обработчики промахов TLB инструкций/данных, являются программными обходчиками VHPT.

Вложенные данные TLB

Вызывается, если произошла одна из ошибок «Промах TLB данных», «Альтернативный промах TLB данных», «Трансляция данных VHPT» и PSR.ic=0 и нет летящего состояния (например, ошибка в обработчике промаха TLB). Ошибка вложенных данных TLB разрешает программному обеспечению для того, чтобы избежать накладных расходов для потенциальных ошибок промаха TLB данных.

Не представлена страница инструкций/данных

Вызывается, если Р-бит вызываемой трансляции равен 0.

Употребление NaT страницы инструкций/данных

Не спекулятивная загрузка, сохранение, принудительная RSE загрузка, сохранение, выполнение, либо семафорная операция обращается к странице, которая помечена в физической памяти атрибутом NaTPage. Детальнее см. раздел 4.4.8 «Атрибут не вещь (NaTPage)».

Промах ключа инструкций/данных

Ключ разрешения обращающейся трансляции не представлен в наборе регистров допустимых ключей защиты.

Разрешение ключа инструкций/данных

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

Права доступа инструкций/данных

Отклонено, постранично гранулированное чтение, запись выполнение и обращения привилегированного уровня.

Бит мусора данных

При сохранении или семафорной операции бит мусора обращающейся трансляции, равен 0.

Бит доступа инструкций/данных

Бит доступа обращающейся трансляции, равен 0.

4.1.9. 32-битная виртуальная адресация

32-битная виртуальная адресация данных поддерживается в архитектуре набора инструкций Itanium с помощью трех моделей: расширения нулями, расширения знаком и «swizzling» указателя. Обращения к памяти IA-32 используют модель расширения нулями, все линейные виртуальные 32-битные IA-32 адреса, расширяются нулями до 64-битного виртуального адреса.

Модель расширения нулями выполняет вычисление адреса с помощью инструкций add и shladd, только если программное обеспечение убедится, что старшие 32 бита всегда нули. Эта модель ограничивает 32-битную виртуальную адресацию виртуальным регионом 0. В этой модели регионы с 1 по 7 доступны только для 64-битной адресации.

В модели расширения знаком, программное обеспечение гарантирует, что старшие 32 бита виртуального адреса всегда равны биту 31. Вычисления адреса используют инструкции add, shladd и sxt. Эта модель разбивает 32-битное адресное пространство на две половины, которые распространяются на 231 байтов виртуальных регионов 0 и 7, внутри 64-битного адресного пространства. В этой модели регионы со 2 по 6 доступны только для 64-битной адресации.

Модель указателя «swizzling» выполняет вычисление адреса с помощью инструкций addp4 и shladdp4. Эти инструкции генерируют 32-битный адрес в пределах 64-битного виртуального адресного пространства, как это показано на рис. 4.17. 32-битное виртуальное адресное пространство делится на 4 секции, которые распространяются на 230 байтов виртуальных регионов от 0 до 3, внутри 64-битного адресного пространства. В этой модели регионы с 4 по 7 доступны только для 64-битной адресации.

base

offset

63

32

31

30

29

0

63

32

31

0

63

62

61

60

32

31

0

0

000000

Рис. 4.17. Генерация 32-битного адреса использующая addp4

В модели указателя «swizzling», отображения в пределах каждого региона не обязательно начинаются с нулевого смещения, т.к. старшие 2 бита 32-битного адреса служат внутри каждого региона и номером виртуального региона, и смещением. Биты виртуального адреса {62:61} не участвуют в сложении адреса, поэтому некоторые регионы могут быть на самом деле больше, чем 230 байтов из-за сложения 32-битного смещения и отсутствия переноса в биты {62:61}. Заметим, что преобразования является не разрушающим: преобразованный 64-битный указатель может быть использован как 32-битный указатель. Плоское 31- или 32-битное адресное пространство может быть создано путем назначения одного и того же идентификатора региона для регистров непрерывных регионов. Переходы в другой 230 байтовый регион выполняются путем вычисления адреса перехода в 32-битном виртуальном пространстве и дальнейшим преобразованием в 64-битный указатель с помощью addp4. В противном случае, адреса переходов будут расширены за 230 байтовую границу внутри первоначального региона.