stringtranslate.com

3 ГБ барьер

В вычислительной технике термин «барьер в 3 ГБ» относится к ограничению некоторых 32-разрядных операционных систем, работающих на микропроцессорах x86 . Он не позволяет операционным системам использовать все 4  ГиБ ( 4 × 1024 3 байта ) основной памяти. [1] Точный барьер зависит от материнской платы и конфигурации устройства ввода-вывода, в частности, от размера видеопамяти ; он может находиться в диапазоне от 2,75 ГБ до 3,5 ГБ. [2] Барьер отсутствует при использовании 64-разрядного процессора и 64-разрядной операционной системы или определенного оборудования x86 и операционной системы, такой как Linux или определенных версий Windows Server и macOS , которые позволяют использовать режим расширения физического адреса (PAE) на x86 для доступа к более чем 4 ГиБ оперативной памяти.

Независимо от фактического положения "барьера", нет кода в программном обеспечении операционной системы или какого-либо аппаратного архитектурного ограничения, которое бы его напрямую налагало. Скорее, "барьер" является результатом взаимодействия между несколькими аспектами обоих.

Ограничения по физическому адресу

Многие 32-разрядные компьютеры имеют 32 физических адресных бита и, таким образом, ограничены 4 ГиБ (2 32 слова ) памяти . [3] [4] Процессоры x86 до Pentium Pro имеют 32 или менее физических адресных бита; однако большинство процессоров x86 со времен Pentium Pro, который впервые был продан в 1995 году, имеют механизм расширения физического адреса (PAE), [5] : 445  , который позволяет адресовать до 64 ГиБ (2 36 слов) памяти. PAE — это модификация схемы трансляции адресов защищенного режима , которая позволяет транслировать виртуальные или линейные адреса в 36-битные физические адреса вместо 32-битных адресов, доступных без PAE. [6] : 3-15  Выводы ЦП также предоставляют 36 бит физических адресных линий для материнской платы. [7]

Многие операционные системы x86, включая любую версию Linux с ядром PAE и некоторые версии Windows Server и macOS , могут использовать PAE для адресации до 64 ГиБ памяти в системе x86. [8] [9] [10]

Существуют и другие факторы, которые могут ограничить эту возможность использовать до 64 ГиБ памяти и привести к «барьеру в 3 ГБ» при определенных обстоятельствах, даже на процессорах, реализующих PAE. Они описаны в следующих разделах.

Проблемы с чипсетом и другими материнскими платами

Хотя, как отмечено выше, большинство процессоров x86, начиная с Pentium Pro, способны генерировать физические адреса до 64 GiB, остальная часть материнской платы должна участвовать в том, чтобы позволить ОЗУ выше точки 4 GiB быть адресованной ЦП. Чипсеты и материнские платы, позволяющие более 4 GiB ОЗУ с процессорами x86, существуют, но в прошлом большинство из тех, которые предназначались для рынка серверов, отличных от high-end, могли получить доступ только к 4 GiB ОЗУ. [11]

Однако этого недостаточно для объяснения «барьера в 3 ГБ», который появляется даже при запуске некоторых версий Microsoft Windows x86 на платформах, которые могут получить доступ к более чем 4 ГиБ оперативной памяти.

Отображение ввода-вывода в памяти и отключенная оперативная память

Современные персональные компьютеры построены на основе набора стандартов, которые зависят, помимо прочего, от характеристик исходной шины PCI . Исходная шина PCI реализовала 32-битные физические адреса и 32-битные передачи данных. Устройства PCI (а также PCI Express и AGP ) представляют по крайней мере некоторые, если не все, интерфейсы управления хостом через набор отображенных в память ячеек ввода-вывода (MMIO). Адресное пространство, в котором появляются эти ячейки MMIO, совпадает с адресным пространством, используемым ОЗУ, и хотя ОЗУ может существовать и быть адресуемой выше точки 4 ГиБ, эти ячейки MMIO, декодируемые устройствами ввода-вывода, быть не могут. Они ограничены спецификациями шины PCI адресами 0xFFFFFFFF (2 32  − 1) и ниже. При установленном объеме ОЗУ 4 ГиБ или более и при том, что ОЗУ занимает непрерывный диапазон адресов, начиная с 0, некоторые ячейки MMIO будут перекрываться с адресами ОЗУ. На машинах с большим объемом видеопамяти области MMIO, как было обнаружено, занимают до 1,8 ГБ 32-битного адресного пространства. [12] Другие области, которые могут перекрываться с адресами RAM, могут включать области APIC , SMRAM и iGPU .

BIOS и чипсет отвечают за обнаружение этих конфликтов адресов и отключение доступа к ОЗУ в этих местах. [13] Из-за способа определения диапазонов адресов шины на шине PCI, это отключение часто имеет относительно большую гранулярность, что приводит к отключению относительно больших объемов ОЗУ. [ 14]

Перераспределение адресов

Наборы микросхем x86, которые могут адресовать более 4 ГиБ ОЗУ, обычно также позволяют переназначать память (называемое в некоторых экранах настройки BIOS « переназначением дыры памяти »). В этой схеме BIOS обнаруживает конфликт адресов памяти и фактически перемещает мешающие ОЗУ так, чтобы они могли быть адресованы процессором по новому физическому адресу, который не конфликтует с MMIO. [ необходима цитата ] Со стороны Intel эта функция когда-то была ограничена серверными чипсетами; однако более новые наборы микросхем для настольных ПК, такие как Intel 955X и 965 и более поздние, также имеют ее (см. «Восстановление памяти» в техническом описании чипсета [15] ). Со стороны AMD , встроенный контроллер памяти процессоров AMD K8 и более поздних имел ее с самого начала. [ необходима цитата ]

Поскольку новые физические адреса превышают точку 4 ГиБ, адресация этой ОЗУ требует, чтобы операционная система могла использовать физические адреса больше 2 32 . [16] Эта возможность предоставляется PAE. Обратите внимание, что операционная система не обязательно должна поддерживать более 4 ГиБ ОЗУ , поскольку общий объем ОЗУ может составлять всего 4 ГиБ; просто часть ее отображается для ЦП по адресам в диапазоне от 4 ГиБ и выше. [16]

Эта форма барьера в 3 ГБ затрагивает одно поколение MacBook , [17] просуществовавшее 1 год (Core2Duo (Merom) – с ноября 2006 года по октябрь 2007 года): предыдущее поколение было ограничено 2 ГиБ, в то время как более поздние поколения (ноябрь 2007 года – октябрь 2009 года) допускали 4 ГиБ за счет использования PAE и перераспределения отверстий памяти, а последующие поколения (с конца 2009 года) используют 64-разрядные процессоры и, следовательно, могут адресовать более 4 ГиБ.

Зависимости версии Windows

«Несерверные» или «клиентские» версии x86 Windows XP и более поздних версий по умолчанию работают с процессорами x86 в режиме PAE, когда присутствующий ЦП реализует бит NX . Тем не менее, эти операционные системы не разрешают адресацию физической памяти выше границы адреса 4 ГиБ. Это не архитектурное ограничение; это ограничение, наложенное Microsoft в качестве обходного пути для проблем совместимости драйверов устройств , которые были обнаружены во время тестирования. [18]

Таким образом, «барьер в 3 ГБ» в операционных системах x86 Windows «клиент» может возникнуть в двух немного разных сценариях. В обоих случаях ОЗУ около точки 4 GiB конфликтует с отображенным в память пространством ввода-вывода. Либо BIOS просто отключает конфликтующую ОЗУ; либо BIOS переназначает конфликтующую ОЗУ на физические адреса выше точки 4 GiB, [ необходима ссылка ] но клиентские редакции x86 Windows отказываются использовать физические адреса выше этого, даже если они работают с включенным PAE. Таким образом, конфликтующая ОЗУ недоступна для операционной системы независимо от того, переназначена она или нет.

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

Ссылки

  1. ^ Microsoft Corporation. "Memory Limits for Windows Releases" . Получено 2017-08-07 . Устройства должны отображать свою память ниже 4 ГБ для совместимости с не поддерживающими PAE выпусками Windows. Поэтому, если в системе 4 ГБ ОЗУ, часть ее либо отключена, либо переназначена BIOS выше 4 ГБ. Если память переназначена, X64 Windows может использовать эту память. Клиентские версии X86 Windows не поддерживают физическую память выше отметки 4 ГБ, поэтому они не могут получить доступ к этим переназначенным областям.
  2. ^ Руссинович, Марк (21 июля 2008 г.). «Расширяя границы Windows: физическая память». Microsoft TechNet . Microsoft . Архивировано из оригинала 8 августа 2019 г. . Получено 14 декабря 2022 г. .
  3. ^ Мюррей, Мэтью (2009-10-27). "Windows 7: 64-битный вопрос". PCMag . Получено 2017-08-07 . 32-битная система ограничена использованием 4 ГБ оперативной памяти (2 32 адреса)
  4. ^ Патрицио, Энди (2002-07-22). "AMD Answers the 64-Bit Question". Wired . Архивировано из оригинала 2008-12-16 . Получено 2017-08-07 . 32-битные процессоры, такие как Intel Pentium III/IV и AMD Athlon, имеют ограничение памяти в 4 ГБ на ЦП. Больше памяти адресовать нельзя.
  5. ^ Shanley, Tom (1998). Архитектура систем Pentium Pro и Pentium II . Серия «Архитектура систем ПК» (второе издание). Addison-Wesley . стр. 445. ISBN 0-201-30973-4.
  6. ^ "Том 1: Характеристики" (PDF) . Руководство разработчика семейства Pentium Pro . Корпорация Intel . Январь 1996 г. стр. 3–15 . Получено 12 декабря 2018 г. Физическое адресное пространство процессора Pentium Pro составляет 2 36 байт или 64 гигабайта (64 Гбайт).
  7. ^ "Том 1: Характеристики" (PDF) . Руководство разработчика семейства Pentium Pro . Корпорация Intel . Январь 1996 г. стр. 15–5 . Получено 12 декабря 2018 г. . Номер контакта: C1; Имя сигнала: A35#
  8. ^ Корпорация Microsoft. "Ограничения памяти для выпусков Windows" . Получено 07.08.2017 . Windows Server 2008 Enterprise; Ограничение в 32-разрядной версии Windows: 64 ГБ
  9. ^ "Включение PAE". Документация Ubuntu . 2010-05-19 . Получено 2010-06-07 . Physical Address Extension — это технология, которая позволяет 32-разрядным операционным системам использовать до 64 ГБ памяти... Сегодня PAE поддерживается большинством компьютеров, и включить его в Ubuntu, если это еще не сделано, несложно.
  10. ^ "Linux Kernel". Документация Fedora . 2010-05-18 . Получено 2010-06-07 . Fedora 8 включает следующие сборки ядра: ... Ядро PAE для использования в 32-разрядных системах x86 с более чем 4 ГБ ОЗУ или с процессорами, имеющими функцию NX (No eXecute).
  11. ^ Intel Corporation (февраль 2005 г.). "Intel Chipset 4 GB System Memory Support" (PDF) . Pentium Pro Family Developer's Manual . стр. 7. Архивировано из оригинала (PDF) 2007-03-06 . Получено 2017-08-07 . В однопроцессорных системах для мобильных устройств, настольных компьютеров, рабочих станций и серверов начального уровня чипсеты могут быть ограничены 4 ГБ максимальной памяти. В современных двухпроцессорных серверных чипсетах Intel и рабочих станциях максимальный размер системной памяти может превышать 16 ГБ.
  12. ^ Руссинович, Марк Юджин (2008-07-21). «Расширяя границы Windows: Физическая память». Архивировано из оригинала 2019-08-08 . Получено 2017-08-07 . Windows XP SP2 также включила поддержку Physical Address Extensions (PAE) по умолчанию на оборудовании, реализующем память no-execute, поскольку это требуется для предотвращения выполнения данных (DEP), но это также обеспечивает поддержку более 4 ГБ памяти.
  13. ^ Intel Corporation (февраль 2005 г.). "Поддержка системной памяти Intel Chipset 4 GB" (PDF) . Архивировано из оригинала (PDF) 2007-03-06 . Получено 2017-08-07 . На платформах, заполненных физическими размерами памяти, приближающимися к 4 ГБ и более, требования к ресурсам бортовой системы, скорее всего, не позволят операционной системе использовать всю заполненную физическую память из-за требований спецификации PCI и других ресурсов ввода-вывода, отображаемых в памяти. Части физической памяти могут перекрываться с пространством памяти, выделенным для других подсистем, и становиться недоступными для операционной системы.
  14. ^ Корпорация Intel (февраль 2005 г.). "Поддержка системной памяти Intel Chipset 4 GB" (PDF) . Руководство разработчика семейства Pentium Pro . стр. 8. Архивировано из оригинала (PDF) 2007-03-06 . Получено 2017-08-07 .
  15. ^ Семейство чипсетов Intel 965 Express
  16. ^ ab Intel Corporation (февраль 2005 г.). "Поддержка системной памяти Intel Chipset 4 GB" (PDF) . Руководство разработчика семейства Pentium Pro . стр. 13, 14. Архивировано из оригинала (PDF) 2007-03-06 . Получено 2017-08-07 . Для использования переназначения операционная система должна иметь возможность адресовать диапазоны памяти размером более 4 ГБ.
  17. ^ "Понимание Intel Mac RAM". Архивировано из оригинала 2010-03-02 . Получено 2010-03-11 .
  18. ^ Руссинович, Марк Юджин (2008-07-21). «Преодоление границ Windows: физическая память». Архивировано из оригинала 2019-08-08 . Получено 2017-08-07 . Windows XP SP2 также включила поддержку Physical Address Extensions (PAE) по умолчанию на оборудовании, которое реализует память no-execute, поскольку это требуется для предотвращения выполнения данных (DEP), но это также обеспечивает поддержку более 4 ГБ памяти. […] Проблемная экосистема клиентских драйверов привела к решению для клиентских SKU игнорировать физическую память, которая находится выше 4 ГБ, хотя теоретически они могут ее решить. […] 4 ГБ — это лицензированный предел для 32-разрядных клиентских SKU.

Внешние ссылки