stringtranslate.com

Расширение физического адреса

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

Структура таблицы страниц, используемая процессорами x86-64 при работе в длинном режиме , дополнительно расширяет иерархию таблицы страниц до четырех или более уровней, расширяя виртуальное адресное пространство, и использует дополнительные биты физического адреса на всех уровнях таблицы страниц, расширяя физическое пространство. адресное пространство. Он также использует самый верхний бит записи 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] Это было исправлено в более поздней версии ядра «Dothan» в 2005 году. Оно также было доступно на процессорах AMD, включая AMD Athlon [6] [7] (хотя наборы микросхем ограничены 32-битной адресацией [8] ) и более поздние модели процессоров AMD.

Когда AMD определила свое 64-битное расширение стандартной архитектуры x86 , AMD64 или x86-64, они также усовершенствовали систему подкачки в « длинном режиме » на основе PAE. [9] Он поддерживает 64-битные виртуальные адреса [10] : 24  (по состоянию на июль 2023 года на некоторых процессорах реализовано 48 бит, а на других — 57 бит [10] : 139, 141–143  [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] Более поздние семейства процессоров используют межсоединения, такие как Hypertransport или QuickPath Interconnect , в которых отсутствуют сигналы адреса выделенной памяти, поэтому эта связь менее очевидна.

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

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

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

32-битная подкачка, страницы 4 КиБ, без PAE

Нет PAE, страницы по 4 КБ

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

32-битная подкачка, страницы 4 МБ, без PAE

Нет PAE, страницы по 4 МБ

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

32-битная подкачка, страницы 4 КиБ, с PAE

С ПАЭ; Страницы по 4 КБ

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

Поддержка 64-битных адресов в таблице страниц является существенным изменением, поскольку позволяет внести два изменения в адресацию процессора. Во-первых, средство обхода таблицы страниц, которое использует физические адреса для доступа к таблице страниц и каталогу, теперь может получать доступ к физическим адресам, превышающим 32-битные физические адреса, поддерживаемые в системах без PAE. Из CR3, обход таблицы страниц может получить доступ к каталогам страниц и таблицам, размер которых находится за пределами 32-битного диапазона. Во-вторых, физический адрес данных, к которым осуществляется доступ (хранящийся в таблице страниц), может быть представлен как физический адрес, больший, чем 32-битные адреса, поддерживаемые в системе без PAE. Опять же, это позволяет осуществлять доступ к данным для доступа к областям физической памяти за пределами 32-битного диапазона. [13]

32-битная подкачка, страницы 2 МБ, с PAE

С ПАЭ; Страницы по 2 МБ

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

Краткое описание 32-битной подкачки

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

x86-64 подкачка

На процессорах x86-64 в собственном длинном режиме схема трансляции адресов использует PAE, но добавляет четвертую таблицу, таблицу карты страниц уровня 4 с 512 записями, и расширяет таблицу указателей каталога страниц до 512 записей вместо исходных 4 записей, которые она использовала. имеет в защищенном режиме. Это означает, что преобразуются 48 бит номера виртуальной страницы, что дает виртуальное адресное пространство до 256 ТБ. Для некоторых процессоров режим можно включить с помощью пятой таблицы, таблицы карты страниц уровня 5 с 512 элементами ; это означает, что транслируются 57 бит номера виртуальной страницы, что дает виртуальное адресное пространство до 128 ПБ. [10] : 141–153  В записях таблицы страниц в исходной спецификации реализовано 40 бит физического номера страницы.

Аппаратная поддержка

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

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

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

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

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

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

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

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

macOS

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

Линукс

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

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

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

Дистрибутивы, которые по-прежнему предоставляют вариант без PAE, включая Debian (и производные, такие как LMDE 2 (Linux Mint Debian Edition) [31] ), Slackware и LXLE , обычно делают это с «i386», «i486» или «retro». этикетки. [32] [33] В статье «Облегченный дистрибутив 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. [34]

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

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

Haiku добавила первоначальную поддержку PAE где-то после выпуска R1 Alpha 2. С выпуском R1 Alpha 3 PAE теперь официально поддерживается.

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

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

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

  1. ^ Обновление спецификации двухъядерного процессора Intel® Xeon® 2,80 ГГц (PDF) . Корпорация Интел. Октябрь 2006. с. 18.
  2. ^ «Приложение Е». Руководство по оптимизации кода процессора AMD Athlon™ x86 (PDF) (редакция K). AMD, Inc., февраль 2002 г., с. 250 . Проверено 13 апреля 2017 г. 2-битный индекс, состоящий из битов PCD и PWT записи таблицы страниц, используется для выбора одного из четырех полей регистра PAT, когда PAE (расширение адреса страницы) включено или когда PDE не описывает большую страницу.
  3. ^ Т. Шэнли (1998). Системная архитектура Pentium Pro и Pentium II. Аддисон-Уэсли Профессионал. п. 439. ИСБН 978-0-201-30973-7.
  4. ^ «Операционные системы и поддержка PAE». Центр разработчиков оборудования . 1 июня 2017 года . Проверено 11 июля 2023 г.
  5. ^ ab "PAE - Вики-справка сообщества Ubuntu" .
  6. ^ «Приложение Е». Руководство по оптимизации кода процессора AMD Athlon™ x86 (PDF) (редакция K). AMD, Inc., февраль 2002 г., с. 250 . Проверено 13 апреля 2017 г. 2-битный индекс, состоящий из битов PCD и PWT записи таблицы страниц, используется для выбора одного из четырех полей регистра PAT, когда PAE (расширение адреса страницы) включено или когда PDE не описывает большую страницу.
  7. ^ «AMD Athlon 500 — AMD-K7500MTR51B C» . CPU-world.com . 26 марта 2014 года . Проверено 11 июля 2023 г.
  8. ^ «Системный контроллер AMD-762» (PDF) . п. 2. Поддерживает до 4 Гбайт памяти.
  9. ^ ab AMD Corporation (июнь 2023 г.). «Том 2: Системное программирование» (PDF) . Руководство программиста по архитектуре AMD64 . Корпорация АМД. п. 139 . Проверено 11 июля 2023 г. Трансляция страниц в длинном режиме требует использования расширений физических адресов (PAE). Перед активацией длительного режима необходимо включить PAE, установив для CR4.PAE значение 1. Активация длительного режима перед включением PAE приводит к возникновению исключения общей защиты (#GP).
  10. ^ abcde AMD Corporation (июнь 2023 г.). «Том 2: Системное программирование» (PDF) . Руководство программиста по архитектуре AMD64 . Корпорация AMD . Проверено 11 июля 2023 г.
  11. ^ «Том 3 (3A, 3B, 3C и 3D): Руководство по системному программированию» . Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 . Интел. Июнь 2023. с. 4-7 . Проверено 11 июля 2023 г.
  12. ^ Техническое описание процессора Pentium® III Xeon™ с частотой 500 и 550 МГц . Корпорация Интел. Февраль 2000. с. 86. 245094-002. A[35:03]# (I/O): Сигналы A[35:3]# (адрес) определяют адресное пространство физической памяти размером от 2 до 36 байт.
  13. ^ «4.4 Пейджинг» . Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 3A. Интел . Проверено 28 октября 2023 г.
  14. ^ "Coreinfo - Sysinternals" . Системные внутренние компоненты Windows . Майкрософт. 7 июня 2023 г. Проверено 11 июля 2023 г.
  15. ^ «Обнаружение вашего оборудования» . Генту. 8 октября 2008 г. Архивировано из оригинала 3 мая 2013 г. Проверено 28 апреля 2013 г.{{cite web}}: CS1 maint: unfit URL (link)
  16. ^ аб Марк Руссинович (21 июля 2008 г.). «Расширяя возможности Windows: физическая память». Архивировано из оригинала 25 июля 2008 г. Проверено 11 июля 2010 г.
  17. ^ «Ограничения памяти для выпусков Windows» . MSDN . Майкрософт . 5 декабря 2007 года. Архивировано из оригинала 17 декабря 2007 года . Проверено 16 ноября 2015 г.
  18. ^ «Расширения физической адресации Intel (PAE) в Windows 2000» . Поддерживать . Майкрософт . 26 октября 2007 г. Архивировано из оригинала 1 января 2008 г. Проверено 29 декабря 2007 г.
  19. ^ «Обзор Windows Server 2003 R2 Datacenter Edition» . ТехНет . Майкрософт . Архивировано из оригинала 28 ноября 2011 г. Проверено 15 мая 2009 г.
  20. ^ «Объем ОЗУ, указанный в диалоговом окне «Свойства системы» и инструменте «Информация о системе», меньше, чем вы ожидаете в Windows Vista или в Windows XP с пакетом обновления 2 или более поздней версии (MSKB 888137)». База знаний . Майкрософт. Архивировано из оригинала 4 февраля 2009 г. Проверено 30 января 2009 г.
  21. Хуршид, Усман (2 ноября 2012 г.). «Как проверить, поддерживает ли ваш процессор PAE, NX и SSE2 для установки Windows 8». technize.net . Техниз . Проверено 20 апреля 2014 г.
  22. ^ «Руководство по требованиям к поддержке PAE/NX/SSE2 для Windows 8» . Документы Майкрософт. 10 февраля 2014 года . Проверено 11 июля 2023 г.
  23. ^ «Путь к Mac OS X 10.6 Snow Leopard: 64-бит» . 26 сентября 2008 г. Проверено 26 сентября 2008 г.
  24. Молнар, Инго (20 октября 1999 г.). «Изменения в 2.3.23-pre4 x86 с 64 ГБ ОЗУ [патч HIGHMEM] немного объяснены». linux-kernel (список рассылки).
  25. Мауэрер, Вольфганг (11 марта 2010 г.). Профессиональная архитектура ядра Linux. Рисунок 3.16. Поток кода для paging_init. ISBN 978-1-118-07991-1. Также включена защита от отключения выполнения, если она поддерживается процессором и если ядро ​​было скомпилировано с поддержкой PAE; к сожалению, в противном случае эта функция недоступна.
  26. ^ «Особенности x86 для Fedora 11» . Архивировано из оригинала 4 июля 2010 г.
  27. ^ «Выпущен Xubuntu 12.04» . Xubuntu.org . 26 апреля 2012 года . Проверено 24 октября 2015 г. Ядро без PAE не будет доступно в будущих выпусках Xubuntu.
  28. ^ "ПАЭ". Вики-справка сообщества Ubuntu . Проверено 11 июля 2023 г.
  29. ^ «Примечания к выпуску RHEL 6, 12.6. Общие обновления ядра 12.6.1. Расширение физического адреса (PAE)» . Красная Шапка . Проверено 27 ноября 2013 г.
  30. ^ «Параметры командной строки ядра». Документация ядра Linux .
  31. ^ «Известные проблемы в Linux Mint Debian». Архивировано из оригинала 16 октября 2015 г. Проверено 24 октября 2015 г. Чтобы гарантировать совместимость с процессорами, не поддерживающими PAE, 32-битные версии Linux Mint Debian по умолчанию поставляются с ядром 486.
  32. ^ "Точный щенок". puppylinux.org . Щенок Linux. Архивировано из оригинала 13 августа 2014 г. Проверено 20 апреля 2014 г.
  33. ^ «2.1. Поддерживаемое оборудование» . Руководство по установке Debian GNU/Linux . СПИ. Архивировано из оригинала 13 мая 2014 г. Проверено 20 апреля 2014 г.
  34. ^ «Справочная страница FreeBSD i386 5.5-RELEASE PAE (4)» . 8 апреля 2003 г. Проверено 11 июля 2023 г.
  35. ^ «PAE для OpenBSD/i386, Майкл Шалаев, Нью-Йорк» . 2006 год . Проверено 3 февраля 2018 г.
  36. ^ pmap(9)  -  Руководство разработчика ядра OpenBSD.
  37. ^ «Добавлена ​​поддержка режима расширения физического адреса (PAE)» . Примечания к выпуску Solaris 7, 5/99 (выпуск платформы Intel), Приложение B: Список совместимого оборудования и руководство по настройке устройств (выпуск платформы Intel), 5/99 . 1999 . Проверено 23 марта 2018 г.
  38. ^ «ArcaOS 5.0 от Arca Noae — это новая версия OS/2 для 21 века». 2017 . Проверено 16 декабря 2019 г.

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