Четыре гигабайта памяти - недостижимая цель?
Новую (для платформы PC/386) технологию назвали расширением физических адресов (PAE) и воплотили ее в процессорах Pentium Pro. Компьютеры на этих и всех последующих процессорах могут (при наличии соответствующей системной платы, конечно) использовать не 32-х, а 36-разрядную шину адреса, что дает возможность установить до 64 Гб ОЗУ.
Следует подчеркнуть, что речь идет о расширении именно физических адресов. Процессор при этом остается 32-разрядным, все программы также используют 32-разрядную адресацию и напрямую могут обращаться только к четырем гигабайтам.
При использовании расширения физических адресов, во-первых, процессору становится доступной память в физических адресах выше четырех гигабайт. Во-вторых, системная плата может «перекинуть» в область выше четырех гигабайт ту оперативную память, расположенную в четвертом гигабайте, которая заблокирована из-за возможности конфликтов с устройствами.
В окне свойств XP SP2 тоже есть такая надпись. Значит, эта система тоже работает в режиме расширения физических адресов? Но почему же тогда ей доступно лишь три с небольшим гигабайта?
Да, Windows XP SP2 в данном случае по умолчанию включила режим PAE для обеспечения поддержки DEP. Но, в отличие от Windows Server 2003, в Windows XP расширение физических адресов реализовано лишь частично. Эта система не поддерживает 36-разрядную адресацию памяти, Даже с включенным PAE она имеет то же самое 32-разрядное адресное пространство, что и без этого режима.
Так что даже принудительное включение РАЕ не добавит в распоряжение системы ни одного байта.
Впрочем, если установить Windows XP с первым пакетом исправлений или исходную версию вообще без пакетов (что автор по некоторым причинам категорически не рекомендует делать на современных компьютерах), то расширение физических адресов даст системе возможность увидеть все четыре гигабайта. Но стоит только добавить SP2, как количество памяти сразу уменьшится.
Причина в том, что в 32-разрядных Windows XP SP2 (а также будущем SP3) и Windows Vista расширение физических адресов есть, но в то же время его как бы и нету. Причина проста и банальна – обеспечение совместимости с драйверами, написанными без учета возможного включения РАЕ. Остановимся на этом чуть подробнее.
Все программы и сама ОС работают в виртуальных адресных пространствах. Пересчет (трансляция) виртуального адреса в физический происходит не в один этап, а в два без режима расширения физических адресов и в три этапа при включении этого режима. После того, как в ходе разработки второго пакета исправлений режим РАЕ был включен по умолчанию, оказалось, что не все драйверы умеют работать в этом режиме. Расширение физических адресов испокон веков (фигурально выражаясь, конечно) было особенностью серверных систем. Поскольку драйверы работают с физическими адресами, они должны понимать усложненный процесс трансляции адресов при включенном РАЕ. И разработчики драйверов для серверных версий это учитывали.
Разработчики же драйверов, предназначенных для обычных рабочих и, тем более, домашних компьютеров могли и упростить себе работу - зачем предусматривать алгоритм работы с включенным РАЕ, если он не используется? Ведь без него и программировать меньше надо, и работы по тестированию меньше делать. Но если такой драйвер оказывался в системе с включенным расширением физических адресов, то с достаточно высокой вероятностью он мог «порушить» управление памятью системы, что привело бы в лучшем случае к неработоспособности устройства, а в худшем – повреждению данных или сбою в работе системы (синему экрану).
А ведь для повышения безопасности системы надо было включать в процессоре защиту от исполнения данных и, как следствие, режим расширения адресов. Поэтому для совместимости со всеми ранее написанными для Windows XP драйверами было принято компромиссное решение - чтобы режим РАЕ включался, добавлял третий этап в процесс транслирования адреса, но ничего на этом третьем этапе не изменял. Фактически это означает, что расширения адресного пространства не происходит и система имеет те же четыре гигабайта физических адресов. А часть этих адресов, как мы помним, заняты устройствами.
Источник:
http://www.ixbt.com/soft/windows-4gb.shtml
Проблемы совместимости драйверов в режиме расширения физических адресов
Проблемы совместимости драйверов с предотвращением выполнения данных типичны для режима расширения физических адресов.
Примечание. Режим расширения физических адресов необходимо использовать только на компьютерах с процессорами, на аппаратном уровне поддерживающими предотвращение выполнения данных.
Функция DEP может быть несовместима с драйверами, которые динамически создают программный код или используют другие методы для создания программного кода в режиме реального времени. Многие драйверы с таким поведением необходимо было исправить, так как для тех из них, которые работают в 64-разрядных версиях Windows, предотвращение выполнения данных включено всегда. Таким образом, нет гарантии, что все драйверы обновлены. С другой стороны, поскольку только небольшое число драйверов выполняет такие действия, маловероятно, что сама функция DEP будет являться причиной несовместимости.
Основная проблема совместимости драйверов связана с использованием режима РАЕ в 32-разрядных системах. Режим PAE позволяет процессору адресовать более чем 4 ГБ памяти. Основное отличие между схемами разбиения памяти на страницы в PAE и не в PAE заключается в дополнительном уровне разделения, необходимом в режиме PAE. В режиме PAE требуются три уровня разбиения памяти на страницы вместо двух.
Если включен режим расширения физических адресов, некоторые драйверы не загружаются, поскольку устройство не поддерживает 64-разрядную адресацию или драйвер полагает, что режим расширения физических адресов требует более 4 ГБ оперативной памяти. Такой драйвер исходит из того, что в режиме расширения физических адресов будут поступать только 64-разрядные адреса, которые он (или соответствующее устройство) не в состоянии обрабатывать.
Другие драйверы загружаются в режиме РАЕ, но нарушают стабильность системы, пытаясь напрямую изменять записи в системной таблице страниц (PTE). В режиме РАЕ такие драйверы вместо ожидаемых 32-разрядных записей получают 64-разрядные записи таблицы страниц.
Наибольшая трудность связана с прямым доступом к памяти (DMA) и выделением реестров отображения. Многие устройства, которые поддерживают прямой доступ к памяти (как правило, 32-разрядные адаптеры), не могут выполнять 64-разрядную физическую адресацию. Если устройство запущено в 32-разрядном режиме, ему доступен весь диапазон физических адресов. В режиме расширения физических адресов данные могут располагаться по физическим адресам за пределами диапазона в 4 ГБ. Для включения устройств с этими ограничениями семейство Windows 2000 Server и более поздние версии Windows снабжены системой двойной буферизации транзакций DMA. Семейство Windows 2000 Server и более поздние версии Windows осуществляют это с помощью передачи 32-битного адреса, указанного в регистре отображения. Устройство выполняет операцию DMA с 32-разрядным адресом, а ядро копирует память по 64-разрядному адресу, который выделен драйверу. Если режим РАЕ выключен, драйверам 32-разрядных устройств не требуется поддержка регистров отображения со стороны реальной памяти, т. е. двойная буферизация не нужна, поскольку все устройства и драйверы располагаются в 32-разрядном диапазоне адресов. В результате тестирования драйверов 32-разрядных устройств на компьютерах с 64-битной архитектурой процессоров выяснилось, что большинство драйверов с поддержкой прямого доступа к памяти используют неограниченные регистры отображения.
Источник:
http://support.microsoft.com/kb/888137
Драйверы NVIDIA и режим работы с оперативной памятью PAE
Режим работы с оперативной памятью PAE операционных систем Windows 2000 и более новых используется в следующих случаях:
—Для работы с оперативной памятью больше 4 Гб в 32-битных версиях серверных операционных системах Windows. Определить использование функции PAE можно, зайдя в свойства системы в панели управления, в сведениях о компьютере будет указано, что используется режим Physical Address Extension (расширение физических адресов). Также можно открыть скрытый файл boot.ini в корне загрузочного диска (обычно диск C: ) и посмотреть наличие в строке операционной системы ключа /PAE
—Для использования аппаратных функций NX (XD) bit процессоров AMD и Intel в технологии предотвращения выполнения данных (DEP) в операционных системах Windows XP с установленным Service Pack 2 и Windows 2003 Server с установленным Service Pack 1, и более новых. При обнаружении процессора с поддержкой функций NX/XD Bit автоматически используется режим PAE. В системах без поддержки NX/XD Bit режим PAE для работы DEP не требуется.
—В случае, если в компьютер установлена оперативная память с «горячей» заменой (встречается только в серверах) в операционных системах Windows 2003/2008 Server режим PAE включается автоматически.
Для работы в режиме PAE драйверы устройств должны обладать специальной поддержкой. Отсутствие поддержки может приводить к тому, что обмен устройства с оперативной памятью окажется невозможен или данные в оперативной памяти будут испорчены. Драйверы NVIDIA для видеокарт имеют поддержку PAE начиная с версии 56.64. К сожалению, поддержка PAE не реализована для видеокарт на базе графических процессоров Riva TNT/TNT2/Vanta и GeForce 256/2 (для GeForce 2 MX поддержка есть). В системах с такими видеокартами для надежной работы компьютера придется отключить PAE. Для этого в скрытом файле boot.ini в корне загрузочного диска нужно удалить ключ /PAE из строки операционной системы, если он есть, ключ /noexecute надо привести к виду /noexecute=alwaysoff и добавить в конец строки ключ /NOPAE. После этого объем доступной оперативной памяти будет ограничен 4 Гб, а технология предотвращения выполнения данных DEP будет отключена.
Отключение PAE также рекомендуется в случаях фатальных ошибок 3D приложения и операционной системы, если обновление драйвера NVIDIA не помогает. Следует отметить, что 64-разрядные версии операционных систем не используют режим PAE.
Источник:
http://nvworld.ru/faq/pae/