Расширение физического адреса - Physical Address Extension

В вычисление, Расширение физического адреса (PAE), иногда называемый Расширение адреса страницы,[1]это функция управления памятью для архитектуры x86. PAE был впервые представлен Intel в Pentium Pro, а затем AMD в Athlon процессор.[2] Он определяет таблица страниц трехуровневая иерархия (вместо двух) с записями в таблице по 64 бита каждая вместо 32, что позволяет этим процессорам напрямую обращаться к физическому адресное пространство больше 4гигабайты (232 байтов).

Структура таблицы страниц, используемая x86-64 CPU при работе в длинный режим дополнительно расширяет иерархию таблицы страниц до четырех уровней, расширяя виртуальное адресное пространство, и использует дополнительные биты физического адреса на всех уровнях таблицы страниц, расширяя физическое адресное пространство. Он также использует самый верхний бит записи таблицы 64-битных страниц как неисполнение или Бит "NX", указывая, что код не может быть выполнен со связанной страницы. Функция NX также доступна в защищенный режим когда эти процессоры работают под управлением 32-разрядной операционной системы, при условии, что операционная система включает PAE.

История

PAE впервые был реализован в Intel Pentium Pro в 1995 г.[3] хотя сопутствующие наборы микросхем обычно не поддерживали требуемые дополнительные биты адреса.[4]

PAE поддерживается Pentium Pro, Pentium II, Pentium III, и Pentium 4 процессоры. Первый Pentium M семейные процессоры (Banias), представленные в 2003 году, также поддерживают PAE; однако они не показывают флаг поддержки PAE в своих CPUID Информация.[5] Он также был доступен на процессорах AMD, включая AMD Athlon[6][7] (хотя наборы микросхем для ограничены 32-битной адресацией[8]) и более поздних моделей процессоров AMD.

Когда AMD определили свое 64-битное расширение отраслевого стандарта x86 архитектура, AMD64 или x86-64, они также улучшили систему подкачки "длинный режим "на основе PAE.[9] Поддерживает 64-битные виртуальные адреса[10](стр. 24) (по состоянию на ноябрь 2018 г. Реализовано 48 бит[10](p120)[11]), 52-битные физические адреса,[10](стр. 24)и включает Бит NX При инициализации процессора x86-64 необходимо включить функцию PAE, прежде чем процессор переключится из устаревшего режима в длительный режим.[9]

Дизайн

С PAE запись в таблице страниц архитектуры x86 увеличена с 32 до 64 бит. Это дает больше места для физического адреса страницы или поля «номер страницы» в записи таблицы страниц. В первоначальных реализациях PAE поле номера кадра страницы было расширено с 20 до 24 бит. Размер «байтового смещения» от транслируемого адреса по-прежнему составляет 12 бит, поэтому общий размер физического адреса увеличивается с 32 бит до 36 бит (т.е. с 20 + 12 до 24 + 12). Это увеличило физическую память, которая теоретически может быть адресована ЦП, с 4 ГБ до 64 ГБ.

В первых процессорах, поддерживающих PAE, поддержка больших физических адресов очевидна в их распиновке корпуса, при этом обозначения контактов адресов идут до A35 вместо того, чтобы останавливаться на A31.[12] Более поздние семейства процессоров используют межсоединения, такие как Гипертранспорт или же QuickPath Interconnect, в которых отсутствуют сигналы адресации выделенной памяти, поэтому эта связь менее очевидна.

32-битный размер виртуального адреса не изменяется, поэтому обычное прикладное программное обеспечение продолжает использовать инструкции с 32-битными адресами и (в плоская модель памяти ) ограничено 4 гигабайтами виртуального адресного пространства. Операционные системы, поддерживающие этот режим, используют таблицы страниц для отображения обычного виртуального адресного пространства размером 4 ГБ в физическую память, которая, в зависимости от операционной системы и остальной аппаратной платформы, может достигать 64 ГБ. Сопоставление обычно применяется отдельно для каждого процесс, так что дополнительная оперативная память полезна, даже если ни один процесс не может получить доступ ко всем одновременно.

Более поздние работы, связанные с разработкой AMD x86-64 Архитектура расширила теоретический возможный размер физических адресов до 52 бит.[нужна цитата ]

Структуры таблиц страниц

В защищенный режим с включенной подкачкой (бит 31, PG, контрольного регистра CR0 установлен), но без PAE, x86 процессоры используют двухуровневую схему перевода страниц. Регистр управления CR3 содержит выровненный по страницам физический адрес одного 4-килобайтного каталог страниц. Он разделен на 1024 четырехбайтовых записей каталога страниц, которые, в свою очередь, если они действительны, содержат выровненные по страницам физические адреса таблицы страниц, каждый размером 4 КБ. Они также состоят из 1024 записей таблицы четырехбайтовых страниц, которые, если они действительны, содержат выровненные по страницам физические адреса длиной 4 КБ. страницы физической памяти (RAM).

Включение PAE (установив бит 5, PAE, системного реестра CR4) вызывает серьезные изменения в этой схеме. По умолчанию размер каждой страницы составляет 4 КБ. Каждая запись в таблице страниц и каталоге страниц становится длиной 64 бита (8 байтов) вместо 32 бита, чтобы учесть дополнительные биты адреса. Однако размер каждой таблицы не change, поэтому и таблица, и каталог теперь имеют только 512 записей. Поскольку это позволяет только половину записей исходной схемы, был добавлен дополнительный уровень иерархии, поэтому теперь CR3 физически указывает на Таблица указателей каталога страниц, короткая таблица, содержащая четыре указателя на каталоги страниц.

Записи в каталоге страниц имеют дополнительный флаг в бите 7, названный PS (за размер страницы). Если система установила этот бит в 1, запись каталога страниц указывает не на таблицу страниц, а на одну большую страницу размером 2 МБ (Расширение размера страницы ).

Во всех форматах таблиц страниц, поддерживаемых x86 и x86-64 12 младших битов записи таблицы страниц либо интерпретируются блоком управления памятью, либо зарезервированы для использования операционной системой. В процессорах, которые реализуют функцию «запретить выполнение» или «отключить выполнение», старший бит (бит 63) - это Бит NX. Следующие одиннадцать наиболее значимых битов (биты с 52 по 62) зарезервированы для использования операционной системой спецификациями архитектуры Intel и AMD. Таким образом, из 64 битов в записи таблицы страниц 12 младших и 12 старших битов используются для других целей, оставляя 40 бит (биты с 12 по 51) для физического номера страницы. В сочетании с 12 битами «смещения внутри страницы» от линейного адреса для адресации физической памяти доступно 52 бита. Это позволяет максимальную конфигурацию RAM 252 байта или 4 петабайта (около 4,5 × 1015 байтов).

На x86-64 процессоры в родном длинный режим, схема трансляции адресов использует PAE, но добавляет четвертую таблицу, 512-запись страница-карта уровня 4 table и расширяет таблицу указателей каталога страниц до 512 записей вместо исходных 4 записей, которые она имеет в защищенном режиме. В настоящее время транслируется 48 битов номера виртуальной страницы, что дает виртуальное адресное пространство размером до 256 ТБ.[10](p148)В записях таблицы страниц в исходной спецификации реализовано 40 бит физического номера страницы.

Поддержка оборудования

Программное обеспечение может идентифицировать через CPUID флаг PAE поддерживает ли ЦП режим PAE или нет. Доступна бесплатная программа для Microsoft Windows, в которой перечислены многие возможности процессора, включая поддержку PAE.[13] В Linux такие команды, как cat / proc / cpuinfo могу перечислить паэ флаг, когда присутствует,[14] а также другие инструменты, такие как SYSLINUX Инструмент обнаружения оборудования.

Чтобы запустить процессор в режиме PAE, Операционная система требуется поддержка. Чтобы использовать PAE для доступа к более чем 4 ГБ ОЗУ, требуется дополнительная поддержка в операционной системе, в наборе микросхем и на материнской плате. Некоторые наборы микросхем не поддерживают адреса физической памяти размером более 4 ГБ (FFFFFFFF в шестнадцатеричном формате), а на некоторых материнских платах просто не хватает разъемов RAM для установки более 4 ГБ ОЗУ. Тем не менее, даже если доступно и доступно не более 4 ГБ ОЗУ, ЦП с поддержкой PAE может работать в режиме PAE, например, чтобы разрешить использование Нет выполнения особенность.

Поддержка операционной системы

Майкрософт Виндоус

32-битные версии Майкрософт Виндоус поддерживайте PAE, если загружается с соответствующей опцией. По словам технического сотрудника Microsoft Марк Руссинович, некоторые драйверы оказались нестабильными при обнаружении физических адресов размером более 4 ГБ.[15]

В следующей таблице показаны ограничения памяти для 32-разрядных версий Microsoft Windows:

Ограничения памяти в 32-битных выпусках Microsoft Windows,
с поддержкой PAE[16][17][18]
Версия для WindowsОграничение памяти
Windows 2000 Профессиональный, Серверный4ГБ
Windows 2000 Расширенный сервер8 ГБ
Windows 2000 Дата центр32 ГБ
Windows XP Стартер0,5 ГБ
Windows XP (Другие редакции)4ГБ
Windows Server 2003 Web SP22 ГБ
Windows Server 2003 Стандартный SP24ГБ
Windows Server 2003 Enterprise / Datacenter SP264 ГБ
Windows Storage Server 2003 Предприятие8 ГБ
Windows Storage Server 2003 (другие издания)4ГБ
Windows Home Server4ГБ
Виндоус виста Стартер1 ГБ
Виндоус виста (Другие редакции)4ГБ
Windows Server 2008 Стандарт, Интернет4ГБ
Windows Server 2008 Предприятие, Датацентр64 ГБ
Windows 7 Стартер2 ГБ
Windows 7 (Другие редакции)4ГБ
Windows 8 (все редакции)4ГБ
Windows 10 (все редакции)4ГБ

В исходных выпусках Windows XP и Windows XP SP1 использовался режим PAE, позволяющий расширять ОЗУ за пределы адреса в 4 ГБ. Однако это привело к проблемам совместимости со сторонними драйверами, из-за чего Microsoft удалила эту возможность в Windows XP с пакетом обновления 2. Windows XP SP2 и более поздние версии по умолчанию на процессорах с не выполнять (NX) или же выполнить-отключить (XD) функция, работает в режиме PAE, чтобы разрешить NX.[19] Бит NX находится в бите 63 записи таблицы страниц, и без PAE записи таблицы страниц в 32-битных системах имеют только 32 бита; поэтому режим PAE необходим для использования функции NX. Однако «клиентские» версии 32-битной Windows (Windows XP SP2 и более поздние версии, Windows Vista, Windows 7) ограничивают физическое адресное пространство до первых 4 ГБ для совместимости с драйверами. [15] через механизм лицензионных ограничений,[20] даже если эти версии работают в режиме PAE, если включена поддержка NX.

Windows 8 и более поздние версии будут работать только на процессорах, поддерживающих PAE, в дополнение к NX и SSE2.[21]

macOS

Mac OS X Tiger через Mac OS X Снежный барс поддержать PAE и Бит NX на процессорах IA-32; Snow Leopard была последней версией, поддерживающей процессоры IA-32. На процессорах x86-64 все версии macOS используйте 4-уровневую подкачку (подкачка IA-32e, а не PAE) для адресации памяти более 4 ГБ. Mac Pro и Xserve системы могут использовать до 64 ГБ ОЗУ.[22]

Linux

В Ядро Linux включает полную поддержку режима PAE, начиная с версии 2.3.23,[23] в 1999 г. обеспечил доступ к памяти до 64 ГБ на 32-разрядных машинах. Ядро Linux с поддержкой PAE требует, чтобы ЦП также поддерживал PAE. Ядро Linux поддерживает PAE в качестве варианта сборки, а основные дистрибутивы предоставляют ядро ​​PAE либо по умолчанию, либо в качестве опции.

Для битовой функции NX требуется ядро, построенное с поддержкой PAE.[24]

Дистрибутивы Linux теперь обычно по умолчанию используется ядро ​​с поддержкой PAE, и эта тенденция началась в 2009 году.[25] По состоянию на 2012 год многие, в том числе Ubuntu (и производные вроде Xubuntu и Linux Mint ),[26][27] Red Hat Enterprise Linux 6.0,[28] и CentOS, перестали распространять ядра без PAE, что делает оборудование, поддерживающее PAE, обязательным. Дистрибутивы Linux, требующие PAE, могут отказываться загружаться Pentium M семейство процессоров, потому что они не показывают флаг поддержки PAE в информации о CPUID (даже если он поддерживается внутри).[5] Однако этого легко обойти, по крайней мере, в Ubuntu, с forcepae вариант.[29]

Дистрибутивы, которые по-прежнему предоставляют вариант без PAE, включая Debian (и производные вроде LMDE 2 (Linux Mint Debian Edition)[30]), Slackware, и LXLE, как правило, это делается с ярлыками «i386», «i486» или «ретро».[31][32] Статья Легкий дистрибутив Linux перечисляет некоторые другие, позволяющие устанавливать Linux на старые компьютеры.

Другие

FreeBSD и NetBSD также поддерживает PAE как вариант сборки ядра. FreeBSD поддерживает PAE в серии 4.x, начиная с 4.9, в серии 5.x, начиная с 5.1, и во всех 6.x и более поздних выпусках. Для поддержки требуется ядро PAE вариант конфигурации. Загружаемые модули ядра может быть загружен в ядро ​​только с включенным PAE, если модули были собраны с включенным PAE; бинарные модули в дистрибутивах FreeBSD не собираются с включенным PAE и поэтому не могут быть загружены в ядра PAE. Не все драйверы поддерживают более 4 ГБ физической памяти; эти драйверы не будут правильно работать в системе с PAE.[33]

OpenBSD поддерживает PAE с 2006 года со стандартным ядром GENERIC i386. GeNUA mbH поддержал начальную реализацию.[34] Начиная с версии 5.0 PAE претерпел ряд изменений, в частности, изменения в обработке MMU i386 для PMAP, см. Pmap (9).[35]

Солярис поддерживает PAE, начиная с Solaris версии 7. Однако сторонние драйверы, используемые с версией 7, которые специально не включают поддержку PAE, могут работать беспорядочно или полностью отказываться в системе с PAE.[36]

Хайку добавлена ​​начальная поддержка PAE через некоторое время после выпуска R1 Alpha 2. С выпуском R1 Alpha 3 теперь официально поддерживается PAE.

ArcaOS имеет ограниченную поддержку PAE с целью создания RAM-дисков выше границы 4 ГБ.[37]

Смотрите также

Рекомендации

  1. ^ Обновление спецификации двухъядерного процессора Intel® Xeon® 2,80 ГГц (PDF). Корпорация Intel. Октябрь 2006. с. 18.
  2. ^ AMD, Inc. (февраль 2002 г.). «Приложение Е». Руководство по оптимизации кода процессора AMD Athlon ™ x86 (PDF) (Редакция К. ред.). п. 250. Получено 2017-04-13. 2-битный индекс, состоящий из битов PCD и PWT записи таблицы страниц, используется для выбора одного из четырех полей регистра PAT, когда PAE (расширения адреса страницы) включен, или когда PDE не описывает большую страницу.
  3. ^ Т. Шенли (1998). Системная архитектура Pentium Pro и Pentium II. Эддисон-Уэсли Профессионал. п. 439. ISBN  978-0-201-30973-7.
  4. ^ «Операционные системы и поддержка PAE». Центр разработчиков оборудования. 14 июля 2006 г.. Получено 20 апреля 2014.
  5. ^ а б PAE - вики-справка сообщества Ubuntu
  6. ^ AMD, Inc. (февраль 2002 г.). «Приложение Е». Руководство по оптимизации кода процессора AMD Athlon ™ x86 (PDF) (Редакция К. ред.). п. 250. Получено 2017-04-13. 2-битный индекс, состоящий из битов PCD и PWT записи таблицы страниц, используется для выбора одного из четырех полей регистра PAT, когда PAE (расширения адреса страницы) включен, или когда PDE не описывает большую страницу.
  7. ^ «AMD Athlon 500 - AMD-K7500MTR51B C». Cpu-world.com. 26 марта 2014 г.. Получено 20 апреля 2014.
  8. ^ Системный контроллер AMD-762 (стр. 2): «Поддерживает до 4 Гбайт памяти»
  9. ^ а б Корпорация AMD (март 2017 г.). «Том 2: Системное программирование» (PDF). Руководство программиста по архитектуре AMD64. Корпорация AMD. п. 130. Получено 2017-05-23. Трансляция страниц в длинном режиме требует использования расширений физических адресов (PAE). Перед активацией длительного режима необходимо включить PAE, задав для CR4.PAE значение 1. Активация длительного режима перед включением PAE вызывает исключение общей защиты (#GP).
  10. ^ а б c d Корпорация AMD (сентябрь 2018 г.). «Том 2: Системное программирование» (PDF). Руководство программиста по архитектуре AMD64. Корпорация AMD. Получено 2018-12-19.
  11. ^ «Том 3 (3A, 3B, 3C и 3D): Руководство по системному программированию». Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Intel. Ноябрь 2018. с. 4-6. Получено 2018-12-19.
  12. ^ Процессор Pentium® III Xeon ™ с частотой 500 и 550 МГц.. Корпорация Intel. Февраль 2000 г. с. 86. 245094-002. A [35:03] # (I / O): сигналы A [35: 3] # (Address) определяют адресное пространство физической памяти размером от 2 до 36 байтов.
  13. ^ «Microsoft Sysinternals: Coreinfo». Windows Sysinternals. Microsoft. 19 декабря 2013 г.. Получено 20 апреля 2014.
  14. ^ «Обнаружение вашего оборудования». Gentoo. 8 октября 2008 г.. Получено 2013-04-28.
  15. ^ а б Марк Руссинович (21.07.2008). «Расширяя границы Windows: физическая память». Получено 2010-07-11.
  16. ^ «Ограничения памяти для выпусков Windows». MSDN. Microsoft. 5 декабря 2007 г. Архивировано с оригинал 17 декабря 2007 г.. Получено 2015-11-16.
  17. ^ «Intel Physical Addressing Extensions (PAE) в Windows 2000». Поддерживать. Microsoft. 26 октября 2007 г.. Получено 2007-12-29.
  18. ^ «Обзор Windows Server 2003 R2 Datacenter Edition». TechNet. Microsoft. Получено 2009-05-15.
  19. ^ «ОЗУ, указанное в диалоговом окне« Свойства системы »и в средстве« Сведения о системе », меньше, чем вы ожидали в Windows Vista или Windows XP с пакетом обновления 2 или более поздней версии (MSKB 888137)». База знаний. Microsoft. Получено 2009-01-30.
  20. ^ Чаппелл, Джефф. «Лицензионная память в 32-битной Windows Vista». geoffchappell.com. РГ: СПС. Получено 20 апреля 2014.
  21. ^ Хуршид, Усман (2 ноября 2012 г.). «Как проверить, поддерживает ли ваш процессор PAE, NX и SSE2 для установки Windows 8». technize.net. Technize. Получено 20 апреля 2014.
  22. ^ «Дорога к Mac OS X 10.6 Snow Leopard: 64-бит». 2008-09-26. Получено 2008-09-26.
  23. ^ "2.3.23-pre4 x86 64 ГБ RAM изменения [патч HIGHMEM] немного объяснены".
  24. ^ Профессиональная архитектура ядра Linux, Рисунок 3.16 Поток кода для paging_init, «Execute Disable Protection также активирован, если поддерживается процессором и если ядро ​​было скомпилировано с поддержкой PAE; к сожалению, в противном случае эта функция недоступна».
  25. ^ "Особенности x86 для Fedora 11".
  26. ^ «Выпущен Xubuntu 12.04». Xubuntu.org. 26 апреля 2012 г.. Получено 24 октября 2015. Ядро без PAE не будет доступно в будущих выпусках Xubuntu.
  27. ^ «Включение ПАЭ». Получено 2013-04-28.
  28. ^ «Примечания к выпуску RHEL 6, 12.6. Общие обновления ядра 12.6.1. Расширение физического адреса (PAE)». Красная шляпа. Получено 27 ноября 2013.
  29. ^ PAE, расширение физического адреса, Справочная вики сообщества Ubuntu.
  30. ^ «Известные проблемы в Linux Mint Debian». Чтобы гарантировать совместимость с процессорами без PAE, 32-разрядные версии Linux Mint Debian по умолчанию поставляются с ядром 486.
  31. ^ "Точный щенок". puppylinux.org. PuppyLinux. Получено 20 апреля 2014.
  32. ^ «2.1. Поддерживаемое оборудование». Руководство по установке Debian GNU / Linux. SPI. Получено 20 апреля 2014.
  33. ^ "Справочная страница FreeBSD PAE (4)". 2003-04-08. Получено 2007-11-26.
  34. ^ "PAE для OpenBSD / i386, Майкл Шалаев, Нью-Йорк". 2006. Получено 2018-02-03.
  35. ^ pmap (9) – OpenBSD Ядро разработчика Руководство
  36. ^ «Добавлена ​​поддержка режима расширения физических адресов (PAE)». Примечания к выпуску Solaris 7 5/99 (Intel Platform Edition), Приложение B: Список совместимого оборудования и Руководство по настройке устройств (Intel Platform Edition) 5/99. 1999. Получено 2018-03-23.
  37. ^ «ArcaOS 5.0 от Arca Noae - это новый выпуск OS / 2 для 21 века». 2017. Получено 2019-12-16.

дальнейшее чтение