Из Википедии, свободной энциклопедии
Перейти к навигацииПерейти к поиску

PCI отверстие или памяти PCI отверстие является ограничением 32-разрядного аппаратного и 32-разрядных операционных системах , что приводит к компьютеру по всей видимости, имеют меньше памяти , доступной , чем физически установлено. [1] Это ограничение адресации памяти и более поздние обходные пути, необходимые для его преодоления, функционально схожи с ограничениями памяти ранней архитектуры памяти IBM PC 8088 (см. Обычная память ).

Подобные ситуации часто возникали в истории вычислительной техники, когда оборудование, предназначенное для использования до определенного уровня ресурсов, предназначено для обработки в несколько раз превышающего максимально ожидаемое количество, что в конечном итоге становится серьезным ограничением, поскольку закон Мура увеличивает экономически доступные ресурсы. Оригинальный IBM PC обычно поставлялся с 64 КБ памяти или меньше; он был разработан, чтобы занимать максимум 640 КБ, что намного больше, чем предполагалось когда-либо. Это быстро стало ограничением, с которым пришлось справляться сложным управлением памятью DOS . Подобные последовательные ограничения на размер были наложены и преодолены на жестких дисках .

Недоступная память

Потеря полезной памяти, вызванная отверстием PCI, при использовании ввода-вывода с отображением памяти , вызвана использованием одного и того же адресного пространства как для физической памяти, так и для связи с аппаратными устройствами. Таким образом, установленным аппаратным устройствам требуется некоторая часть адресного пространства для связи с процессором и системным программным обеспечением. Поскольку 32-битное оборудование имеет в общей сложности четыре гигабайта адресуемой памяти, [a] некоторая реальная физическая память 32-битной машины, когда установлено достаточно памяти, должна быть принесена в жертву, сделав ее скрытой, чтобы на устройствах было место общаться. Какая часть физической памяти будет заменена пространством связи устройства, зависит от машины, но обычно это что-то от 2,5 до 3,5 ГБ.

Объем скрытой и недоступной системной памяти сильно зависит от реальной материнской платы и набора микросхем, BIOS, объема физической памяти, объема видеопамяти, установленной на видеокартах, а также количества и типа карт PCI, установленных в системе. . Если установлено четыре гигабайта физической памяти и несколько карт 3D с большим объемом видеопамяти, может быть недоступно более гигабайта 32-разрядной системной памяти; на некоторых материнских платах размер отверстия всегда составляет не менее одного гигабайта, независимо от установленных карт расширения .

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

Обходной путь, впервые разработанный в Pentium Pro, известный как расширение физического адреса (PAE), позволяет некоторым 32-разрядным операционным системам обращаться к 36-разрядным адресам памяти, даже если отдельные программы по-прежнему ограничены работой в 32-разрядном адресном пространстве. . При условии, что установлено достаточно памяти, каждая программа может иметь собственное адресное пространство размером четыре гигабайта, вместе используя до 64 гигабайт памяти для всех программ.

Но одного PAE недостаточно для решения проблемы дырки PCI, поскольку адреса памяти и адреса ввода-вывода PCI все еще перекрываются где-то между 3-м и 4-м гигабайтом. Операционная система, совместимая с PAE, вместе с процессором, совместимым с PAE, не может быть лучше, чем доступ к памяти с 1-го по 3-й гигабайт, а затем с 5-го по 64-й гигабайт. Отверстие PCI все еще там. На хосте 4 ГБ и при отсутствии того или иного дополнительного обходного пути PAE ничего не делает для доступа к ~ 1 ГБ памяти, перекрытой PCI I / O.

PAE полностью поддерживался в Windows XP до выпуска Service Pack 1 (SP1), но затем был исключен для SP2; единственные 32-разрядные версии Microsoft Windows, которые полностью поддерживают это, - это определенные серверные версии Windows Server 2003 и более ранние версии ; по состоянию на 2014 год он в основном используется 32-разрядными дистрибутивами Linux ; Ubuntu сделала его обязательным для своей 32-разрядной версии с 2013 года. Microsoft отключила поддержку в Windows XP SP2 и более поздних операционных системах, потому что было много проблем совместимости с видеокартой и другими устройствами, которым требовались драйверы с поддержкой PAE, отличные от обоих стандартных. 32-битные и более поздние 64-битные драйверы. [2]Многие версии MS Windows могут активировать то, что до сих пор называется PAE, с целью использования бита NX , но это больше не расширяет адресное пространство.

Заполнение дыры в памяти

Как указывалось ранее, в 32-разрядных системах с включенным PAE и даже в 64-разрядных системах доступна память ниже и выше «дыры в памяти», но от 512 МБ до 1,5 ГБ ОЗУ недоступно, около 3-го гигабайта, потому что это использует там адреса памяти, необходимые для устройств. С уменьшением стоимости памяти это может не быть серьезной проблемой, но есть способы восстановить доступ к отсутствующей памяти.

Сопоставление устройств с адресами более 4 ГБ

Ограничения 32-битного отверстия PCI могут повлиять на чисто 64-битные операционные системы, поскольку системный BIOS должен обслуживать все операционные системы, которые поддерживаются оборудованием (16-, 32- и 64-битные операционные системы все работают на такое же оборудование). BIOS должен иметь возможность загружать отображение всех устройств ниже четырех гигабайт, хотя 64-разрядная система этого не требует. Многие BIOS могут быть настроены пользователем так, чтобы заполнить дыру в памяти, отображая устройства вверху в 64-битном адресном пространстве, если все устройства, их драйверы и набор микросхем поддерживают это. Машина, настроенная таким образом, не может загружаться в 16- или 32-разрядную операционную систему; если машина настроена таким образом, настройку BIOS необходимо временно изменить для загрузки в 16- или 32-разрядную операционную систему, например, с загрузочного компакт-диска или USB-накопителя.

Сопоставление памяти с адресами выше 4 ГБ

Другой способ удалить отверстие PCI, который полезен только для 64-разрядных операционных систем и тех 32-разрядных систем, которые поддерживают метод расширения физического адреса, описанный выше, - это «переназначить» часть или всю память между двумя и ограничение в четыре гигабайта для адресов выше четырех гигабайт. Это должно поддерживаться набором микросхем компьютера и обычно может быть активировано в программе настройки BIOS. Это переназначение работает на уровне физических адресов , в отличие от высокоуровневого переназначения виртуальных адресов на физические, которое происходит внутри ядра ЦП . Активация этого для традиционных 32-битных операционных систем приносит больше вреда, чем пользы, поскольку переназначенная память (часто больше, чем само отверстие PCI) непригодна для таких операционных систем, даже если, например,Windows Vista покажет, что такая память физически существует на странице «Свойства системы».

См. Также

Примечания

  1. ^ С 16 битами два в степени 16 равняются 65 536 различным адресам, которые могут быть адресованы; с 32 битами это 4 294 967 296 ячеек, а с 64 битами - 18 446 744 073 709 551 616.

Ссылки

  1. ^ «Дыра в памяти в системах на базе X86 с большой памятью» (PDF) . techfiles.de . Sun Microsystems. 19 мая, 2014. Архивировано из оригинального (PDF) 19 июля 2011 года . Проверено 7 ноября 2014 года .
  2. ^ Dansdata: Что с барьером памяти 3Gb?