2017-01-15 22 views
6

Я заметил, что бит PAE в регистре CR4 включен на моей машине Linux (3.19) x86-64. Функция PAE позволяет получить доступ к физическим адресам до 64 ГБ, но я не понимаю, почему это необходимо, когда включен режим long-mode. Я искал его некоторое время, но не нашел удовлетворительного ответа.PAE в x86-64 бит-процессорах - ядро ​​Linux

Любые предложения?

ответ

7

Используется пейджинг IA-32e.

Логический процессор использует IA-32e пейджинг, если CR0.PG = 1, CR4.PAE = 1, и IA32_EFER.LME = 1.
С IA-32e пейджинга, линейный адрес преобразуются с использованием иерархии структур подкачки в памяти, расположенных с использованием содержимого CR3.
Подкачка IA-32e переводит 48-битные линейные адреса на 52-битные физические адреса.
Хотя 52 бита соответствуют 4 PBytes, линейные адреса ограничены 48 битами; не более 256 Тбайт линейно-адресного пространства можно получить на любом заданном времени.


x86 процессоры поддерживают три режима пейджинга:

  1. 32-битный пейджинг (CR0.PG = 1 и CR4.PAE = 0)
  2. РАЕ пейджинг (CR0.PG = 1, CR4.PAE = 1 и IA32_EFER.LME = 0)
  3. IA-32e пейджинга (CR0.PG = 1, CR4.PAE = 1, и IA32_EFER.LME = 1)

Таблица подведении различия сообщается здесь (как изображение , к сожалению)

Differences between the three paging modes on x86