- •4. Адресация и защита
- •4.1. Виртуальная адресация
- •4.1.1. Буфер трансляции адресов (tlb)
- •4.1.1.1. Регистры трансляции (tr)
- •4.1.1.2. Кэш трансляции (tc)
- •4.1.1.3. Объединенные буфера трансляции адресов
- •4.1.1.4. Сбрасывающее поведение вставок и сбросов tlb
- •4.1.1.5. Формат вставки трансляции
- •4.1.1.6. Права доступа к странице
- •4.1.1.7. Размеры страниц
- •4.1.2. Регистры регионов (rr)
- •4.1.3. Ключи защиты
- •4.1.4. Инструкции трансляции
- •4.1.5. Таблица виртуальных хэш страниц (vhpt)
- •4.1.5.1. Конфигурация vhpt
- •4.1.5.2. Поиск vhpt
- •4.1.5.3. Короткий формат базирования региона vhpt
- •4.1.5.4. Длинный формат vhpt
- •4.1.6. Хэширование vhpt
- •4.1.6.1 Индекс короткого формата vhpt базирования региона
- •4.1.6.2. Длинно форматный vhpt хэш
- •4.1.7. Среда vhpt
- •4.1.8. Поиск трансляции
- •4.1.10. Виртуальное совмещение (aliasing)
- •4.2. Физическая адресация
- •4.3. Не реализованные адресные биты
- •4.3.1. Не реализованные физические адресные биты
- •4.3.2. Не реализованные виртуальные адресные биты
- •4.3.3 Поведение инструкций с не реализованными адресами
- •4.4. Атрибуты памяти
- •4.4.1. Атрибуты памяти виртуальной адресации
- •4.4.2. Атрибуты памяти физической адресации
- •4.4.3. Атрибуты кэшируемости и когерентности
- •4.4.4. Атрибут политики записи кэша.
- •4.4.5. Атрибут объединения
- •4.4.6. Атрибуты спекулятивности
- •4.4.7. Атрибуты последовательности и упорядочивание
- •4.4.8. Атрибут «не вещь» (NaTPage)
- •4.4.9. Эффекты атрибутов памяти в инструкциях обращения к памяти
- •4.4.10. Эффекты атрибутов памяти в предварительных и проверяемых загрузках
- •4.4.11. Передача атрибутов памяти
- •4.4.11.1. Передача атрибутов памяти виртуальной адресации
- •4.4.11.2. Передача атрибутов физической адресации – отключение предвыборок/спекуляций и удаление кэшируемости
- •4.5. Выравнивание элементов памяти и атомистичность
4.3. Не реализованные адресные биты
Основываясь на модели процессора, некоторые биты физического и/или виртуального адреса не могут быть реализованы. Не зависимо от количества реализованных адресных битов, во всех процессорах, все регистры общего назначения, регистры переходов, управления, а также прикладные регистры, реализуют все 64 бита регистра. Аналогично, не зависимо от количества реализованных адресных битов, во всех процессорах, регистры контрольных точек инструкций и данных должны реализовывать все 64 адресных бита и все 54 бита маски.
4.3.1. Не реализованные физические адресные биты
Как показано на рис. 4.18, 64-битный физический адрес состоит из трех полей: атрибута физической памяти (PMA – Physical Memory Attribute), не реализованных и реализованных битов.
63 |
62 |
IMPL_PA_MSB |
0 |
PMA |
не реализовано |
реализовано |
|
1 |
62 - IMPL_PA_MSB |
IMPL_PA_MSB + 1 |
|
Рис. 4.18. Битовые поля физического адреса
Все модели реализации процессоров имеют, как минимум, 32 бита физического адреса (от 0 до 31), плюс бит атрибута физической памяти. Дополнительные реализованные физические биты должны быть непрерывны, и начинаться с бита 32. IMPL_PA_MSB – это позиция наиболее значимого реализованного бита физического адреса, которая определяется реализацией. В процессоре, который реализует все биты физического адреса IMPL_PA_MSB равно 62. Для дальнейшей информации о количестве битов физического адреса реализованных в Itanium процессоре, посмотрите документацию, специфицирующую процессор.
Если не реализованные физические биты устанавливаются программным обеспечением, то в процессе инструкций вставки TLB (itc, itr) вызывается ошибка «Не реализованный адрес данных». Вставки, выполненные обходчиком VHPT, как отмечено в разделе 4.1.6. «Хэширование VHPT», аварийно завершают поиск VHPT, если используются не реализованные или зарезервированные поля. Для трансляций отмеченных как не представленные (TLB.p=0), процессор не проверяет допустимость PPN и некоторых зарезервированных битов, как это отмечено на рис. 4.6.
Когда модель процессора реализует не все биты физического адреса, пропущенные биты считаются нулевыми. Физические адреса, в которых биты PA{62:min(IMPL_PA_MSB+1,62)} не являются нулевыми, рассматриваются как «нереализованные» физические адреса в данной модели процессора. Физические адреса проверяются на корректность использования путем контроля того, что биты PA{62:min(IMPL_PA_MSB+1,62)} являются нулевыми.
4.3.2. Не реализованные виртуальные адресные биты
Как показано на рис. 4.19, 64-битный виртуальный адрес состоит из трех полей: номера виртуального региона (VRN – Virtual Region Number), не реализованных и реализованных битов.
63 |
61 |
60 |
IMPL_VA_MSB |
0 |
VRN |
не реализовано |
реализовано |
||
3 |
60 - IMPL_VA_MSB |
IMPL_VA_MSB + 1 |
||
Рис. 4.19. Битовые поля виртуального адреса
Все модели процессоров обеспечивают три VRN-бита в VA{63:61}. IMPL_VA_MSB – это позиция наиболее значимого реализованного бита виртуального адреса, которая определяется реализацией. В дополнение к трем VRN битам, все модели процессоров реализуют, как минимум, 51 бит виртуального адреса, т.е. наименьшее значение IMPL_VA_MSB равно 50. В процессоре, который реализует все 64 бита виртуального адреса, IMPL_VA_MSB равно 60. Для дальнейшей информации о количестве битов виртуального адреса реализованных в Itanium процессоре, посмотрите документацию, специфицирующую процессор.
Если модель процессора реализует не все биты виртуального адреса, то пропущенные биты заполняются с помощью знакового расширения бита VA{IMPL_VA_MSB}. Виртуальные адреса, в которых биты VA{60:min(IMPL_VA_MSB+1,60)} не соответствуют биту VA{IMPL_VA_MSB}, рассматриваются как «не реализованные адреса» в данной модели процессора. Виртуальные адреса проверяются на корректность использования путем контроля того, что биты VA{60:min(IMPL_VA_MSB+1,60)} являются идентичными биту VA{IMPL_VA_MSB}.
