Пейджинг и виртуальная память



В оставшейся части этой главы описывается организация памяти и адресного пространства, основных регистров выполнения программы и режимов адресации. Обратитесь к следующим главам этого тома для описания других ресурсов выполнения программы, показанных на рисунке 3-1: • x87 FPU-регистры - см. Главу 8 «Программирование с помощью FDA» x87. • Регистры MMX - см. Главу 9, «Программирование с помощью технологии Intel® MMX ™». • Регистры XMM - см. Главу 10 «Программирование с помощью Intel® Streaming SIMD Extensions (Intel® SSE)», «Глава 11», «Программирование с помощью потоковых мультимедийных расширений Intel® 2 (Intel® SSE2)» и главы 12 «Программирование с Intel ® SSE3, SSSE3, Intel® SSE4 и Intel® AESNI ». • Регистры YMM - см. Главу 14, «Программирование с помощью AVX, FMA и AVX2». • Регистры BND, BNDCFGU, BNDSTATUS - См. Главу 13 «Управление состоянием с использованием набора функций XSAVE» и Глава 17 «Intel® MPX». • Выполнение вызовов стека и процедуры - см. Главу 6, «Процедурные вызовы, прерывания и исключения». 3.2.1. Режим выполнения 64-битного режима Среда выполнения для 64-битного режима аналогична среде выполнения, описанной в разделе 3.2. В следующих параграфах описываются различия, которые применяются. • Адресное пространство. Задача или программа, работающая в 64-битном режиме на процессоре IA-32, может определять линейное адресное пространство до 264 байтов (с учетом требования канонической адресации, описанного в разделе 3.3.7.1), и физическое адресное пространство вверх до 246 байт. Программное обеспечение может запрашивать CPUID для размера физического адреса, поддерживаемого процессором. • Базовые регистры выполнения программы. Число доступных регистров общего назначения (GPRs) равно 16. GPR имеют ширину 64 бит и поддерживают операции по байтам, словам, двойным словам и целым числам quadword. Доступ к байтовым регистрам осуществляется равномерно до 8 разрядов. Регистр указателя инструкций становится 64 битами. Регистр EFLAGS расширяется до 64 бит в ширину и называется регистром RFLAGS. Верхние 32 бита RFLAGS зарезервированы. Нижние 32 бита RFLAGS такие же, как EFLAGS. См. Рисунок 3-2. • Регистры XMM. Для SIMD-операций имеется 16 регистров данных XMM. См. Раздел 10.2 «Программирование SSE Окружающая среда ", для получения дополнительной информации об этих регистрах. • Регистры YMM. Для SIMD-операций имеется 16 регистров данных YMM. См. Главу 14 «Программирование с помощью AVX, FMA и AVX2 "для получения дополнительной информации об этих регистрах. • Регистры BND, BNDCFGU, BNDSTATUS - См. Главу 13, «Управление состоянием с использованием набора функций XSAVE», и главу 17 «Intel® MPX». • Stack - размер указателя стека составляет 64 бита. Размер стека не контролируется бит в дескрипторе SS (как в не 64-битные режимы), и размер указателя не может быть переопределен префиксом команды. • Контрольные регистры - регистры управления расширяются до 64 бит. Новый регистр управления (регистр приоритета задачи: CR8 или TPR). См. Главу 2 «Архитектуры Intel® 64 и IA-32» в этом томе. • Регистры отладки - регистры отладки расширяются до 64 бит. См. Главу 17 «Отладка, профиль филиала, TSC и Качество обслуживания ", в Руководстве разработчика программного обеспечения Intel® 64 и IA-32, том 3A. Регистры дескрипторной таблицы. Регистр таблицы глобального дескриптора (GDTR) и регистр таблицы дескриптора прерывания (IDTR) расширяются до 10 байтов, так что они могут содержать полный 64-разрядный базовый адрес. Регистр таблицы локального дескриптора (LDTR) и регистр задач (TR) также расширяются для хранения полного 64-разрядного базового адреса.

ОРГАНИЗАЦИЯ ПАМЯТИ

Память, которую процессор адресует на своей шине, называется физической памятью. Физическая память организована как последовательность 8-битных байтов. Каждому байту присваивается уникальный адрес, называемый физическим адресом. Физическое адресное пространство колеблется от нуля до максимума 236 - 1 (64 ГБ), если процессор не поддерживает архитектуру Intel 64. Архитектура Intel 64 представляет изменения в физическом и линейном адресном пространстве; они описаны в разделе 3.3.3, разделе 3.3.4 и разделе 3.3.7.

Практически любая операционная система или исполнительный директор, предназначенные для работы с процессором IA-32 или Intel 64, будут использовать средства управления памятью процессора для доступа к памяти. Эти средства предоставляют такие функции, как сегментация и пейджинг, которые позволяют эффективно и надежно управлять памятью. Управление памятью подробно описано в главе 3 «Управление памятью с защищенным режимом» в Руководстве разработчика программного обеспечения Intel® 64 и IA-32, том 3A. В следующих параграфах описываются основные методы адресации памяти при использовании управления памятью.

Модели памяти IA-32

При использовании средств управления памятью процессора программы напрямую не адресуют физическую память. Вместо этого они получают доступ к памяти с использованием одной из трех моделей памяти: плоский, сегментированный или реальный адресный режим:

• Модель с плоской памятью. Память отображается программой как единое непрерывное адресное пространство (рисунок 3-3). Это пространство называется линейным адресным пространством. Код, данные и стеки содержатся в этом адресном пространстве. Линейное адресное пространство является адресным адресом, с адресами, последовательно идущими от 0 до 232 - 1 (если не в режиме 64 бит). Адрес для любого байта в линейном адресном пространстве называется линейным адресом.

• Сегментированная модель памяти. Память появляется в программе как группа независимых адресных пространств, называемых сегментами. Код, данные и стеки обычно содержатся в отдельных сегментах. Для обращения к байту в сегменте программа выдает логический адрес. Это состоит из селектора сегментов и смещения (логические адреса часто называются дальними указателями). Селектор сегментов идентифицирует сегмент, к которому нужно получить доступ, и смещение идентифицирует байт в адресном пространстве сегмента. Программы, запущенные на процессоре IA-32, могут обрабатывать до 16383 сегментов разных размеров и типов, а каждый сегмент может достигать 232 байта.

Внутри все сегменты, определенные для системы, отображаются в линейное адресное пространство процессора. Чтобы получить доступ к памяти, процессор таким образом переводит каждый логический адрес в линейный адрес. Этот перевод является прозрачным для прикладной программы.

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

• Модель памяти режима реального времени. Это модель памяти для процессора Intel 8086. Он поддерживается для обеспечения совместимости с существующими программами, написанными для работы на процессоре Intel 8086. Режим realaddress использует определенную реализацию сегментированной памяти, в которой линейное адресное пространство для программы и операционной системы / исполнительной системы состоит из массива сегментов размером до 64 Кбайт каждый. Максимальный размер линейного адресного пространства в режиме реального адреса составляет 220 байт.

См. Также: Глава 20, «Эмуляция 8086», Руководство разработчика программного обеспечения Intel® 64 и IA-32, том 3B.

Пейджинг и виртуальная память

С моделью с плоской или сегментированной памятью линейное адресное пространство отображается в физическое адресное пространство процессора либо напрямую, либо через пейджинг. При использовании прямого сопоставления (пейджинг отключен) каждый линейный адрес имеет взаимно однозначное соответствие физическому адресу. Линейные адреса отправляются на адресные строки процессора без перевода.

При использовании пейджингового механизма архитектуры IA-32 (с поддержкой пейджинга) линейное адресное пространство делится на страницы, которые сопоставляются с виртуальной памятью. Затем страницы виртуальной памяти отображаются в физической памяти. Когда операционная система или исполнитель использует пейджинг, механизм поискового вызова прозрачен для прикладной программы. Все, что видит приложение, - это линейное адресное пространство.

Кроме того, механизм поискового вызова архитектуры IA-32 включает в себя расширения, которые поддерживают:

• Расширения физических адресов (PAE) для адресации физического адресного пространства более 4 ГБ.

• Расширения размера страницы (PSE) для отображения линейного адреса на физический адрес на 4-мегабайтных страницах.

См. Также: Глава 3 «Управление памятью с защищенным режимом» в программном обеспечении Intel® 64 и IA-32

Руководство разработчика, том 3A.


Дата добавления: 2018-02-28; просмотров: 286; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!