Сколько оперативной памяти может быть в x86 и почему

Обновлено: 03.07.2024

Оглавление документа

Основные особенности архитектуры

Реальный режим

Классический режим, использованный в ранних IBM PC. Позволяет адресовать 1 мегабайт памяти и не имеет встроенных средств для защиты памяти и переключения задач, что, впрочем, не мешает реализовать программную многозадачность.

Расширения

Дополнительный набор инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Обеспечивает только целочисленные вычисления.

Улучшенное расширение SSE. Появилось в процессорах Pentium 4. Производит потоковые вычисления с вещественными числами двойной точности (2 числа в одном регистре SSE). Кроме того, добавлены инструкции аналогичные расширению MMX, работающие с регистрами SSE (16 байт, 8 слов, 4 двойных слова или 2 учетверенных слова в одном регистре).

Продолжение SSE и SSE2, появилось в процессорах Prescott

SSSE3

Дополнение к SSE3 для работы с упакованными целыми.

3DNow!

Набор инструкций для потоковой обработки вещественных чисел одинарной точности. Поддерживается процессорами AMD начиная с K 6–2 . Процессорами Intel не поддерживается. Инструкции 3DNow! используют регистры MMX в качестве операндов (в один регистр помещается два числа одинарной точности). Поэтому при переключении задач не требуется отдельно сохранять контекст 3DNow! (в отличии от SSE).

64-битный режим

К началу 2000-х годов стало очевидно, что 32-битное адресное пространство архитектуры x86 ограничивает производительность приложений, работающих с большими объёмами данных. 32-разрядное адресное пространство позволяет процессору осуществлять непосредственную адресацию лишь 4 Гб данных, этого может оказаться недостаточным для некоторых приложений, связанных, например, с обработкой видео или обслуживанием баз данных.

Процессоры

Процессоры x86 Intel

16-разрядный процессор i8086 был создан в июне 1978 года, сначала работал на частотах 4,77 МГц, а затем и на 8 и на 10 МГц. Изготавливался по 3 мкм технологии и имел 29000 транзисторов.

80186

80286

Объявлен в 1982 году. Работал на частотах 6, а затем и на 8, 10 и 12 МГц. Производился по 1,5 мкм техпроцессу и содержал около 134 тысяч транзисторов. С его появлением появилось такое понятие, как защищённый режим (protected mode) и виртуальная память. Производительность процессора по сравнению с 8086 увеличилась в несколько раз (0, 99–2 ,6 млн. операций в секунду).

80386

Первый 32-разрядный процессор ( 16–33 МГц). Появился в 1985 году. Знаменовал собой революцию в мире процессоров x86. Основные принципы, заложенные в этом чипе, без кардинальных изменений дожили и до наших дней (за всё это время изменения касались, в основном, повышения производительности, расширения набора команд, увеличения разрядности).

Pentium

Pentium Pro

Pentium Pro (1995 год) – первый процессор шестого поколения. Идеи и технологии, заложенные в данный чип, определили архитектуры всех современных x86-процессоров: блоки предсказания ветвлений, переименование регистров, RISC-ядро, интегрированный кеш второго уровня. Однако технологическая сложность ядра данного процессора привела к сравнительно невысокому выходу годных чипов при технологиях того времени, что сказалось на высокой цене Pentium Pro. Поэтому данный процессор применялся только в High-End системах и серверах.

Pentium MMX

Pentuum MMX (январь 1997 года) – процессор пятого поколения, и по сути, просто модификация ядра Pentium. Был добавлен новый блок целочисленных матричных вычислений MMX (Multi-Media eXtensions) и увеличен до 32К объем кеша первого уровня.

Pentium II

Pentium II (май 1997 года) – модификация ядра Pentium Pro с целью сделать его более доступным. Интегрированный кеш был вынесен на отдельную микросхему с пониженной в два раза частотой. Это упростило и удешевило ядро, хотя и сделало его более медленным, чем Pentium Pro. Новая конструкция процессора потребовала размещение элементов на печатной плате, что, в свою очередь, привело к изменению конструктива процессора. Данные чипы выпускались в виде картриджей, устанавливающихся в специальный разъем на плате (Slot 1). Кроме этого, в ядро Pentuim II был добавлен блок MMX.

Celeron

Pentium III

Pentium III, изготовленный по 0,18 мкм технологическому процессу, отличается от P2 главным образом, добавлением SSE-инструкций.

Pentium 4

На практике же, первые модели работали даже медленнее, чем Pentium III.

Семейство процессоров, ориентированных на серверы и многопоточные вычисления.

Процессоры x86 AMD

Процессоры-аналоги i486. В то время, как Intel остановился на частоте 100 МГц у i486, AMD выпускала процессоры с частотами 120 МГц и 133 МГц. Также они отличались увеличенным объёмом кэша первого уровня (16 Кбайт).

Выпущен в апреле 1997 года. Принципиально новый процессор AMD, основанный на ядре, приобретенном у NextGen. Данный процессор имел конструктив пятого поколения, однако относился к шестому поколению и позиционировался как конкурент Pentuim II. Включал в себя блок MMX, и несколько переработанный блок FPU. Однако данные блоки все равно работали на 15–20 % медленнее, чем у аналогичных по частоте процессоров Intel. Процессор имел 64 Кбайт кэша первого уровня. В целом сравнимая с Pentum II производительность, совместимость со старыми материнскими платами и более ранний старт (AMD представила К6 на месяц раньше, чем Intel представила P-II) сделали его достаточно популярным, однако проблемы с производством у АМД значительно испортили репутацию данного процессора.

Дальнейшее развитие ядра К-6. В этих процессорах была добавлена поддержка специализированного набора команд 3DNow!. Реальная производительность, однако, оказалась существенно ниже, чем у аналогичных по частоте Pentium II (это было вызвано тем, что прирост производительности с ростом частоты у P-II был выше благодаря внутреннему кешу), и конкурировать К 6–2 смогли лишь с Celeron. Процессор имел 64 Кбайт кэша первого уровня.

K6-III

Более успешная в технологическом плане, чем K 6–2 , попытка создания аналога Pentium III. Однако маркетингового успеха не имела. Отличается наличием 64 Кбайт кэша первого уровня и 256 Кбайт кэша второго уровня в ядре, что позволяло ему на равной тактовой тактовой частоте обгонять по производительности Intel Celeron и не очень существенно уступать ранним Pentiun III.

K6-III+

Аналог K6-III с технологией энергосбережения Power Now ?!. Изначально предназначался для ноутбуков, но устанавливался и в настольные системы.

Аналог К6-III+ с урезанным до 128 Кб кэшем второго уровня.

Athlon

Duron

Athlon XP

Sempron

Более дешёвый (за счёт уменьшенного кэша второго уровня) вариант процессоров Athlon XP и Athlon 64. Первоначально процессоры Sempron представляли из себя перемаркированные чипы Athlon XP на ядре Thorton, имевшим 256 Kb кэша 2-го уровня. Поздние представляют собой урезанные версии Athlon 64 (socket 754, одноканальный режим работы с памятью).

Athlon 64

Первый процессор, поддерживающий архитектуру x86_64.

Athlon 64 X2

Продолжение архитектуры Athlon 64, имеет 2 вычислительных ядра.

Athlon FX

Geode

Семейство процессоров, ориентированное на сектор встраиваемых решений, SOC.

Выпускала серию процессоров, часть из которых (ядро V20/V30) была программно совместима как с Intel x186, так и с Intel 8080. Переключение между режимами работы осуществлялось при помощи 3 дополнительных инструкций. Аппаратно они выглядели как сильно ускоренная версия 8088 или 8086.

Процессоры на основе ядра V33 не имели режима эмуляции 8080, зато поддерживали, при помощи двух дополнительных инструкций, расширенный режим адресации.

Процессоры МЦСТ

Вы наверняка знаете, что мир процессоров разбит на два лагеря. Если вы смотрите это видео со смартфона, то для вас работает процессор на архитектуре ARM, а если с ноутбука, для вас трудится чип на архитектуре x86.

А теперь еще и Apple объявила, что переводит свои Mac на собственные процессоры Apple Silicon на архитектуре ARM. Мы уже рассказывали, почему так происходит. А сегодня давайте подробно разберемся, в чем принципиальные отличия x86 и ARM. И зачем Apple в это все вписалась?

Итак, большинство мобильных устройств, iPhone и Android'ы работают на ARM'е. Qualcomm, HUAWEI Kirin, Samsung Exynos и Apple A13/A14 Bionic — это все ARM-процессоры.

А вот на компьютере не так — там доминирует x86 под крылом Intel и AMD. Именно поэтому на телефоне мы не можем запустить Word с компьютера.

x86 — так называется по последним цифрам семейства классических процессоров Intel 70-80х годов.


Чем же они отличаются?

Есть два ключевых отличия.

Первое — это набор инструкций, то есть язык который понимает процессор

x86 процессоры используют сложный набор инструкций, который называется CISC - Complex Instruction Set Computing.

ARM процессоры наоборот используют упрощенный набор инструкций — RISC - Reduced Instruction Set Computing.

Кстати ARM расшифровывается как Продвинутые RISC машины - Advanced RISC Machines.

Наборы инструкций ещё принято назвать архитектурой или ISA - Instruction Set Architecture.

Второе отличие — это микроархитектура. Что это такое?

От того на каком языке говорят процессоры, зависит и то, как они проектируются. Потому как для выполнения каждой инструкции на процессоре нужно расположить свой логический блок. Соответственно, разные инструкции — разный дизайн процессора. А дизайн — это и есть микроархитектура.

Но как так произошло, что процессоры стали говорить на разных языках?

История CISC



Памятка программиста, 1960-е годы. Цифровой (машинный) код «Минск-22».

Всё началось в 1960-х. Поначалу программисты работали с машинным кодом, то есть реально писали нолики и единички. Это быстро всех достало и появился Assembler. Низкоуровневый язык программирования, который позволял писать простые команды типа сложить, скопировать и прочее. Но программировать на Assembler'е тоже было несладко. Потому как приходилось буквально “за ручку” поэтапно описывать процессору каждое его действие.

Поэтому, если бы вы ужинали с процессором, и попросили передать его вам соль, это выглядело бы так:

  • Эй процессор, посмотри в центр стола.
  • Видишь соль? Возьми её.
  • Теперь посмотри на меня.
  • Отдай мне соль. — Ага, спасибо!
  • А теперь снова возьми у меня соль.
  • Поставь её откуда взял
  • Спасибо большое! Продолжай свои дела.
  • Кхм… Процессор, видишь перец?
  • И так далее.

Этот подход стал настоящим спасением как для разработчиков, так и для бизнеса. Захотел клиент новую инструкцию — не проблема, были бы деньги — мы сделаем. А деньги у клиентов были.

Недостатки CISC

Но был ли такой подход оптимальным. С точки зрения разработчиков — да. Но вот микроархитектура страдала.

Представьте, вы купили квартиру и теперь вам нужно обставить её мебелью. Площади мало, каждый квадратный метр на счету. И вот представьте, если бы CISC-процессор обставил мебелью вам гостиную, он бы с одной стороны позаботился о комфорте каждого потенциального гостя и выделил бы для него своё персональное место.

С другой стороны, он бы не щадил бюджет. Диван для одного человека, пуф для другого, кушетка для третьего, трон из Игры Престолов для вашей Дейенерис. В этом случае площадь комнаты бы очень быстро закончилась. Чтобы разместить всех вам бы пришлось увеличивать бюджет и расширять зал. Это не рационально. Но самое главное, CISC-архитектура существует очень давно и те инструкции, которые были написаны в 60-х годах сейчас уже вообще не актуальны. Поэтому часть мебели, а точнее исполнительных блоков, просто не будут использоваться. Но многие из них там остаются. Поэтому появился RISC…

Преимущества RISC

С одной стороны писать на Assembler'е под RISC процессоры не очень-то удобно. Если в лоб сравнивать код, написанный под CISC и RISC процессоры, очевидно преимущество первого.

Так выглядит код одной и той же операции для x86 и ARM.

x86

Представьте, что вы проектируете процессор. Расположение блоков на х86 выглядело бы так.


Каждый цветной квадрат — это отдельные команды. Их много и они разные. Как вы поняли, здесь мы уже говорим про микроархитектуру, которая вытекает из набора команд. А вот ARM-процессор скорее выглядит так.


Ему не нужны блоки, созданные для функций, написанных 50 лет назад.

По сути, тут блоки только для самых востребованных команд. Зато таких блоков много. А это значит, что можно одновременно выполнять больше базовых команд. А раритетные не занимают место.

Еще один бонус сокращенного набора RISC: меньше места на чипе занимает блок по декодированию команд. Да, для этого тоже нужно место. Архитектура RISC проще и удобнее, загибайте пальцы:

  • проще работа с памятью,
  • более богатая регистровая архитектура,
  • легче делать 32/64/128 разряды,
  • легче оптимизировать,
  • меньше энергопотребление,
  • проще масштабировать и делать отладку.

Поэтому наши смартфоны, которые работают на ARM процессорах с архитектурой RISC, долго живут, не требуют активного охлаждения и такие быстрые.

Лицензирование

Но это все отличия технические. Есть отличия и организационные. Вы не задумывались почему для смартфонов так много производителей процессоров, а в мире ПК на x86 только AMD и Intel? Все просто — ARM это компания которая занимается лицензированием, а не производством.

Даже Apple приложила руку к развитию ARM. Вместе с Acorn Computers и VLSI Technology. Apple присоединился к альянсу из-за их грядущего устройства — Newton. Устройства, главной функцией которого было распознавание текста.

Даже вы можете начать производить свои процессоры, купив лицензию. А вот производить процессоры на x86 не может никто кроме синей и красной компании. А это значит что? Правильно, меньше конкуренции, медленнее развитие. Как же так произошло?


Ну окей. Допустим ARM прекрасно справляется со смартфонами и планшетами, но как насчет компьютеров и серверов, где вся поляна исторически поделена? И зачем Apple вообще ломанулась туда со своим Apple Silicon.

Что сейчас?

Допустим мы решили, что архитектура ARM более эффективная и универсальная. Что теперь? x86 похоронен?

На самом деле, в Intel и AMD не дураки сидят. И сейчас под капотом современные CISC-процессоры очень похожи на RISC. Постепенно разработчики CISC-процессоров все-таки пришли к этому и начали делать гибридные процессоры, но старый хвост так просто нельзя сбросить.


Но уже достаточно давно процессоры Intel и AMD разбивают входные инструкции на более мелкие микро инструкции (micro-ops), которые в дальнейшем — сейчас вы удивитесь — исполняются RISC ядром.

Да-да, ребята! Те самые 4-8 ядер в вашем ПК — это тоже RISC-ядра!

Надеюсь, тут вы окончательно запутались. Но суть в том, что разница между RISC и CISC-дизайнами уже сейчас минимальна.

А что остается важным — так это микроархитектура. То есть то, насколько эффективно все организовано на самом камне.

Ну вы уже наверное знаете, что Современные iPad практически не уступают 15-дюймовым MacBook Pro с процессорами Core i7 и Core i9.


А что с компьютерами?

Недавно компания Ampere представила свой 80-ядерный ARM процессор. По заявлению производителя в тестах процессор Ampere показывает результат на 4% лучше, чем самый быстрый процессор EPYC от AMD и потребляет на 14% меньше энергии.


Компания Ampere лезет в сегменты Cloud и Workstation, и показывает там отличные цифры. Самый быстрый суперкомпьютер в мире сегодня работает на ARM ISA. С обратной стороны, Intel пытается все таки влезть в сегмент low power и для этого выпускает новый интересный процессор на микроархитектуре lakefield.

Пока у ноутбуков и процессоров от Intel есть одно неоспоримое достоинство - (охлаждение и) единство архитектуры. Пока на рынке ARM-процессоров существуют Qualcomm, Samsung, MediaTek, в мире x86 творится монополия и разработчикам сильно легче делать софт и игры под “взрослые” процессоры.

И Apple та компания, которая способна мотивировать достаточное количество разработчиков пилить под свой ARM. Но суть этого перехода скорее не в противостоянии CISC и RISC. Поскольку оба подхода сближаются, акцент смещается на микроархитектуру, которую делает Apple для своих мобильных устройств. И судя по всему микроархитектура у них крута. И они хотели бы ее использовать в своих компьютерах.

И если бы Intel лицензировал x86 за деньги другим людям, то вероятно Apple просто адаптировали свою текущую микроархитектуру под x86. Но так как они не могут этого сделать, они решили просто перейти на ARM. Проблема для нас с микроархитектурой в том, что она коммерческая тайна. И мы про нее ничего не знаем.

Итоги


Спрос на ARM в итоге вырастет. Для индустрии это не просто важный шаг, а архиважный. Линус Торвальдс говорил, что пока рабочие станции не станут работать на ARM — на рынке серверов будут использовать x86.

И вот это случилось — в перспективе это миллионы долларов, вложенных в серверные решения. Что, конечно, хорошо и для потребителей. Нас ждет светлое будущее и Apple, действительно, совершила революцию!

Редактор материала: Антон Евстратенко. Этот материал помогли подготовить наши зрители Никита Куликов и Григорий Чирков. Спасибо ребята!

в этом разделе описываются ограничения памяти для поддерживаемых выпусков Windows и Windows Server.

Ограничения памяти и адресного пространства зависят от платформы, операционной системы и от того, используется ли значение _ _ большого _ адреса _ файла образа для загруженной структуры _ образа и Настройка 4 гигабайта (4GT). Изображение _ Для файла с _ _ _ поддержкой большого адреса задается или снимается использование параметра компоновщика /LARGEADDRESSAWARE .

Настройка 4 гигабайта (4GT), также известная как Настройка памяти приложения или параметр/3GB, — это технология (применима только к 32-разрядным системам), которая изменяет объем виртуального адресного пространства, доступного приложениям пользовательского режима. При включении этой технологии уменьшается общий размер системного виртуального адресного пространства и, следовательно, максимальное количество системных ресурсов. Дополнительные сведения см. в разделе что такое 4GT.

ограничения на физическую память для 32-разрядных платформ также зависят от расширения физических адресов (PAE), которое позволяет 32-разрядным Windowsным системам использовать более 4 гб физической памяти.

Ограничения памяти и адресного пространства

В следующей таблице указаны ограничения памяти и адресного пространства для поддерживаемых выпусков Windows. Если не указано иное, ограничения в этой таблице применяются ко всем поддерживаемым выпускам.

ограничения физической памяти: Windows 11

в следующей таблице указаны ограничения физической памяти для Windows 11.

Версия Ограничение на x86 Ограничение в x64 Ограничение на ARM64
Windows 10 Корпоративная 4 Гб
6 TБ
6 TБ
Windows 10 для образовательных учреждений 4 Гб
2 ТБ
2 ТБ
Windows 10 Pro для рабочих станций 4 Гб
6 TБ
6 TБ
Windows 10 Pro 4 Гб
2 ТБ
2 ТБ
Windows 10 Домашняя 4 Гб
128 ГБ
128 ГБ

Ограничения физической памяти: Windows 10

В следующей таблице указаны ограничения на физическую память для Windows 10.

Версия Ограничение на x86 Ограничение в x64
Windows 10 Корпоративная 4 Гб
6 TБ
Windows 10 для образовательных учреждений 4 Гб
2 ТБ
Windows 10 Pro для рабочих станций 4 Гб
6 TБ
Windows 10 Pro 4 Гб
2 ТБ
Windows 10 Домашняя 4 Гб
128 ГБ

Ограничения физической памяти: Windows Server 2016

В следующей таблице указаны ограничения на физическую память для Windows Server 2016.

Версия Ограничение в x64
Windows Server 2016 Datacenter 24 ТБ
Windows Server 2016 Standard 24 ТБ

Ограничения физической памяти: Windows 8

В следующей таблице указаны ограничения на физическую память для Windows 8.

Версия Ограничение на x86 Ограничение в x64
Windows 8 Корпоративная 4 Гб
512 ГБ
Windows 8 Профессиональная 4 Гб
512 ГБ
Windows 8 4 Гб
128 ГБ

Ограничения физической памяти: Windows Server 2012

В следующей таблице указаны ограничения на физическую память для Windows Server 2012. Windows Server 2012 доступен только в выпусках X64.

Версия Ограничение в x64
Windows Server 2012 Datacenter 4 TБ
Windows Server 2012 Standard 4 TБ
Windows Server 2012 Essentials 64 ГБ
Windows Server 2012 Foundation 32 ГБ
Windows Storage Server 2012 Workgroup 32 ГБ
Windows Storage Server 2012 Standard 4 TБ
Hyper-V Server 2012 4 TБ

ограничения физической памяти: Windows 7

в следующей таблице указаны ограничения физической памяти для Windows 7.

Версия Ограничение на x86 Ограничение в x64
Windows 7 Максимальная 4 Гб
192 ГБ
Windows 7 Корпоративная 4 Гб
192 ГБ
Windows 7 Профессиональная 4 Гб
192 ГБ
Windows 7 Домашняя расширенная 4 Гб
16 Гб
Windows 7 Домашняя базовая 4 Гб
8 Гб
Windows 7 Начальная 2 Гб
Н/Д

ограничения физической памяти: Windows Server 2008 R2

в следующей таблице указаны ограничения на физическую память для Windows Server 2008 R2. Windows Сервер 2008 R2 доступен только в 64-разрядных выпусках.

Версия Ограничение в x64 Ограничение на IA64
Windows Server 2008 R2 Datacenter 2 ТБ
Windows Server 2008 R2 Enterprise 2 ТБ
Windows Server 2008 R2 для систем на базе Itanium 2 ТБ
Windows Server 2008 R2 Foundation 8 Гб
Windows Server 2008 R2 Standard 32 ГБ
Windows HPC Server 2008 R2 128 ГБ
Windows Web Server 2008 R2 32 ГБ

ограничения физической памяти: Windows Server 2008

в следующей таблице указаны ограничения на физическую память для Windows Server 2008. ограничения, превышающие 4 гб для 32-разрядных Windows предполагают, что PAE включен.

Версия Ограничение на x86 Ограничение в x64 Ограничение на IA64
Windows Server 2008 Datacenter 64 ГБ
1 TБ
Windows Server 2008 Enterprise 64 ГБ
1 TБ
Windows Server 2008 HPC Edition 128 ГБ
Windows Server 2008 Standard 4 Гб
32 ГБ
Windows Server 2008 для систем на базе процессоров Itanium 2 ТБ
Windows Small Business Server 2008 4 Гб
32 ГБ
Windows Web Server 2008 4 Гб
32 ГБ

ограничения физической памяти: Windows Vista

в следующей таблице указаны ограничения на физическую память для Windows Vista.

Версия Ограничение на x86 Ограничение в x64
Windows Vista Ultimate 4 Гб
128 ГБ
Windows Vista Enterprise 4 Гб
128 ГБ
Windows Vista Business 4 Гб
128 ГБ
Windows Vista Home Premium 4 Гб
16 Гб
Windows Vista Home Basic 4 Гб
8 Гб
Windows Vista Starter 1 ГБ

ограничения физической памяти: Windows Home Server

Windows Home Server доступен только в 32-разрядном выпуске. Ограничение физической памяти — 4 ГБ.

ограничения физической памяти: Windows Server 2003 R2

в следующей таблице указаны ограничения на физическую память для Windows Server 2003 R2. ограничения свыше 4 гб для 32-разрядных Windows предполагают, что PAE включен.

Версия Ограничение на x86 Ограничение в x64
Windows Сервер 2003 R2 Datacenter Edition
64 ГБ
(16 ГБ с 4GT)
1 TБ
Windows сервер 2003 R2 выпуск Enterprise
64 ГБ
(16 ГБ с 4GT)
1 TБ
Windows сервер 2003 R2 выпуск Standard
4 Гб
32 ГБ

ограничения физической памяти: Windows Server 2003 с пакетом обновления 2 (SP2)

в следующей таблице указаны ограничения на физическую память для Windows Server 2003 с пакетом обновления 2 (SP2). ограничения свыше 4 гб для 32-разрядных Windows предполагают, что PAE включен.

Версия Ограничение на x86 Ограничение в x64 Ограничение на IA64
Windows Сервер 2003 с пакетом обновления 2 (SP2), Datacenter Edition
64 ГБ
(16 ГБ с 4GT)
1 TБ
2 ТБ
Windows сервер 2003 с пакетом обновления 2 (sp2), выпуск Enterprise
64 ГБ
(16 ГБ с 4GT)
1 TБ
2 ТБ
Windows сервер 2003 с пакетом обновления 2 (sp2), выпуск Standard
4 Гб
32 ГБ

ограничения физической памяти: Windows Server 2003 с пакетом обновления 1 (SP1)

в следующей таблице указаны ограничения на физическую память для Windows Server 2003 с пакетом обновления 1 (SP1). ограничения свыше 4 гб для 32-разрядных Windows предполагают, что PAE включен.

Версия Ограничение на x86 Ограничение в x64 Ограничение на IA64
Windows Сервер 2003 с пакетом обновления 1 (SP1), Datacenter Edition
64 ГБ
(16 ГБ с 4GT)
1 ТБ
1 ТБ
Windows сервер 2003 с пакетом обновления 1 (SP1), выпуск Enterprise
64 ГБ
(16 ГБ с 4GT)
1 ТБ
1 ТБ
Windows сервер 2003 с пакетом обновления 1 (SP1), выпуск Standard
4 Гб
32 ГБ

ограничения физической памяти: Windows Server 2003

в следующей таблице указаны ограничения на физическую память для Windows Server 2003. ограничения свыше 4 гб для 32-разрядных Windows предполагают, что PAE включен.

Версия Ограничение на x86 Ограничение на IA64
Windows Server 2003, Datacenter Edition
64 ГБ
(16 ГБ с 4GT)
512 ГБ
Windows Server 2003, Enterprise Edition
64 ГБ
(16 ГБ с 4GT)
512 ГБ
Windows Server 2003, Standard Edition
4 Гб
Windows Сервер 2003, Web Edition
2 Гб
Windows Small Business Server 2003
4 Гб
Windows Compute Cluster Server 2003
32 ГБ
Windows служба хранилища Server 2003 выпуск Enterprise
8 Гб
Windows Storage Server 2003
4 Гб

ограничения физической памяти: Windows XP

в следующей таблице указаны ограничения на физическую память для Windows XP.

Версия Ограничение на x86 Ограничение в x64 Ограничение на IA64
Windows XP 4 Гб
128 ГБ
128 ГБ (не поддерживается)
Windows XP Starter Edition 512 Мб
Н/Д
Н/Д

ограничения физической памяти: Windows Embedded

в следующей таблице указаны ограничения на физическую память для Windows Embedded.

Версия Ограничение на x86 Ограничение в x64
Windows XP Embedded
4 Гб
Windows Embedded Standard 2009
4 Гб
Windows Embedded Standard 7
4 Гб
192 ГБ

Влияние графических карт и других устройств на ограничения памяти

устройства должны сопоставлять память ниже 4 гб для совместимости с Windows выпусками, не поддерживающими PAE. Таким образом, если в системе имеется 4 ГБ ОЗУ, некоторые из них отключены или повторно сопоставлены с BIOS 4 ГБ. при повторном отображении памяти память X64 Windows может использовать эту память. клиентские версии Windows X86 не поддерживают физическую память свыше 4 гб, поэтому они не могут получить доступ к этим переназначенным регионам. любой выпуск X64 Windows или X86 Server может.

Версии клиента x86 с включенным PAE имеют доступное 37-разрядное (128 ГБ) физическое адресное пространство. Ограничением, которое накладывает эти версии, является максимально допустимый физический электронный адрес, а не размер пространства операций ввода-вывода. Это означает, что драйверы, поддерживающие PAE, могут фактически использовать физическое пространство свыше 4 ГБ при необходимости. Например, драйверы могут сопоставлять "потерянные" области памяти, расположенные выше 4 ГБ, и предоставлять эту память как электронный диск.

В прошлой статье было показанои, что все пользовательские версии x86, начиная с Windows XP SP2, не могут использовать физическую память больше 4-гигабайт из-за установленного в ядре ограничения. Мы нашли объяснение Microsoft, что это ограничение было сделано для того, чтобы избежать неустойчивой работы драйверов устройств, написанных без поддержки режима PAE (Physical Address Extension).
Остановились мы на том, что ограничение 4 гигабайта оперативной памяти не только делает невозможным использование физической памяти большего объема, но и, как мы скоро увидим, приводит к проблемам и в этом диапазоне.
Перейдем от теории к практике и на реальном примере покажем, почему в самом начале мы определили границу «большой памяти» для 32-разрядных операционных систем на уровне около 3, а не 4 ГБ.


Посмотрим, сколько памяти видит windows 7, и что говорит об использовании физической памяти в этом компьютере сама операционная система

Такая вот картина. Если верить тому, что мы видим, а не верить, вроде, оснований пока нет, то получается, что 1,51 ГБ – “деньги на ветер”.
Как же так? А все очень просто.

Посмотрим еще несколько отчетов. Запустим “Диспетчер задач”, затем “Монитор ресурсов” и откроем вкладку “Память”


Ну вот, собственно, и готовый ответ на вопрос об использовании физической памяти — сколько памяти видит windows 7, или куда исчезли полтора гигабайта физической памяти. Они зарезервированы под нужды оборудования. Нет, не так. Под нужды оборудования зарезервирована не память, а 1,5 ГБ адресного пространства в интервале 4 ГБ. Так как одно и тоже адресное пространство не может быть одновременно использовано и устройствами и памятью компьютера из-за неизбежного конфликта, “лишней” физической памяти стало просто некуда деться и она оказалась недоступна. Именно зарезервировано и именно виртуального адресного пространства из 4ГБ. На первый взгляд такое положение вещей не кажется правильным и, естественно, не вызывает радости. Однако, как показала история развития компьютерной техники, решение разместить порты ввода-вывода устройств в основном адресном пространстве процессора было исключительно верным. Это позволило многократно увеличить скорость обмена данными с устройствами и разгрузить центральный процессор. Как мы помним, первым процессором, который имел возможность адресовать 4 гигабайта оперативной памяти, был Intel 80386 выпущенный в 1985 году. Когда разрабатывался компьютер на его основе, было принято решение выделить адреса портов ввода-вывода устройств в верхней части 4-гигабайтного виртуального адресного пространства доступного процессору, а нижнюю часть отдать под физическую память.
Представить себе в то время клиентский компьютер с 4 гигабайтами оперативной памяти было практически невозможно. И действительно, долгие годы адреса устройств и максимальный адрес установленной физической памяти шли на встречу друг другу, но не пересекались, и никаких конфликтов не возникало. Выглядело это примерно так.


Некоторое время назад реально появились клиентские компьютеры с 3 — 4 гигабайтами оперативной памяти (а сейчас то этим уже никого не удивишь) и адреса оперативной памяти и устройств “встретились” и пересеклись. Вот так условно можно представить картину рспределения адресного пространства и использования физической памяти для компьютера с установленными 4 гигабайтами оперативной памяти


Красная зона в адресном пространстве, занятом устройствами, отражает конфликт, который всегда решается не в пользу физической памяти – это реальные потери, те самые 1,5 ГБ на рисунке выше.
Величина “потерь” зависит от того, как много физической памяти установлено в компьютере, и какое адресное пространство резервируют под себя устройства. На разных компьютерах она будет различной. Например, на одном из находящихся под рукой компьютеров под нужды оборудования резервируется в два раза меньше — около 0,75 ГБ, но так как физической памяти установлено 6 ГБ, то потери в 32-битной Windows составят уже примерно 2,7ГБ, то есть почти половину.
Воспользуемся маленькой диагностической утилитой MemInfo от Alexa Ionescu. Запустим ее с правами администратора на нашем ноутбуке с ключом –r и посмотрим как используется физическая память


А теперь откроем “Диспетчер устройств” в “Управление компьютером”. Переключим “Вид” на “Ресурсы по типу” и откроем блок “Память”

Сравниваем верхнюю границу физической памяти “9F800000”, определенную утилитой MemInfo, с нижней границей диапазона адресов, зарезервированных устройствами. В нашем случае это “A0000000” для видеокарты AMD Radeon HD. Все сходится. Есть еще окно в нижней части в диапазоне 640 КБ – 1 МБ. Как не трудно догадаться, это атавизм, пришедший к нам от 16-разрядного процессора 8086 и ДОС.
Вот так обстоят дела в “классических” 32-разрядных системах. В нашем случае система не является “классической” из-за включенного режима PAE, но выглядит абсолютно так же благодаря Microsoft-овскому ограничению. Очевидно, что задействовать в таких системах полностью 4 ГБ оперативной памяти невозможно в принципе.
Microsoft, некоторым образом, вводит пользователей в заблуждение, декларируя поддержку 4 гигабайт оперативной памяти. На самом деле, как мы уже поняли, система не может задействовать всю память из-за того, что адресное пространство ограничено сверху “FFFFFFFF” (4 ГБ), а именно это и делает Microsoft не смотря на то, что процессор может адресовать несоизмеримо больше и сама ОС давно поддерживает PAE. Одну из наиболее вероятных причин по которой это было сделано мы затронули в первой части.


По-хорошему, для того, чтобы продемонстрировать, как можно вернуть “потерянную” память, нужно установить на нашем ноутбуке Linux с ядром PAE или серверную 32-разрядную версию Windows, причем такую, для которой заявлена поддержка более 4 ГБ памяти. Это, например, Windows Server 2003 или 2008 в редакции Enterprise. Если же снять ограничения на 4ГБ, а об єтом ниже, то получится что-то вроде этого.


Как видим, “потерянная” память сразу нашлась. Еще раз открываем монитор ресурсов


Видно, что внизу добавился новый диапазон размером 1,4 ГБ. Это и есть наша “потерянная” память. Из-за того, что мы продолжаем оперировать 32-х разрядными адресами, получился, как бы, конфликт. На самом деле никакого конфликта нет в силу того, что добавившийся диапазон физических адресов лежит выше “FFFFFFFF”. Если графически изобразить то, что получилось после того, как было снято 4-гигабайтное ограничение

“Умный” чипсет и BIOS компьютера перенесли конфликтную часть физической памяти выше 4 Гбайтной границы. Благодаря этому и работающему режиму PAE, этот участок физической памяти стал доступен операционной системе.
Тут не лишним будет отметить, что для того, чтобы “потерянная” память могла вернуться, нужен не только процессор с поддержкой PAE, но и материнская плата, которая, во-первых, поддерживает больше 4 ГБ ОЗУ, во-вторых, умеет перемещать адресные блоки физической памяти, конфликтующие с оборудованием, выше “FFFFFFFF”. В BIOS по поводу последнего даже может быть отдельная настройка, что-то типа “Memory Remapping”, либо это происходит автоматически.

Как убрать ограничение на 4ГБ
Внимание! Это действие может выполняться только в исследовательских целях на свой страх и риск. Делайте резервную копию своих данных.

Ограничение максимально доступной физической памяти установлено в PAE ядре, которое в Windows 7 / Vista называется NTKRNLPA.EXE. Внутренняя процедура MxMemoryLicense вызывает недокументированную функцию ZwQueryLicenseValue. Такая проверка выполняется два раза. Патч, предложенный исследователем Джефф Шапель (Geoff Chappell), подразумевает очень небольшие изменения в ядре – всего по 7 байт в каждом из двух вхождений. После сделанных изменений ядро продолжает вызывать ZwQueryLicenseValue, но результаты этой проверки подменяются так, что разрешенный верхний предел физической памяти устанавливается в 128 ГБ.
Предполагается, что в дальнейшем модифицированное ядро будет называться NTKR128G.EXE.
Полученное новое ядро может теперь работать со всей установленной памятью, но есть некоторые препятствия для его использования. Первое - это контрольная сумма.
Для всех исполняемых файлов, загружаемых WINLOAD, в число которых, естественно, входит ядро, контрольная сумма, записанная в заголовке исполняемого файла, должна быть правильной. В результате модификации ядра контрольная сумма изменилась и стала недействительной. Ее нужно привести в соответствие. Это можно сделать с помощью, например, EDITBIN из Microsoft Visual Studio.
editbin /release ntkr128g.exe

Второе - цифровая подпись.
Ядро является одним из исполняемых файлов, который должен быть подписан сертификатом, полученным от одного из немногочисленных корневых центов. Публичные ключи корневых центров жестко прописаны в загрузчике. Исправленное ядро будет иметь недействительные цифровые подписи. Но и это препятствие можно преодолеть.
Одним из таких способов является использование тестового режима, который Microsoft предоставляет для тестирования драйверов в процессе их разработки. В тестовом режиме загрузчик позволяет выполнять файлы, подписанные любым корневым сертификатом. Можно создать свой собственный тестовый сертификат и подписать им измененную копию ядра. После этого оно будет загружаться при старте Windows в тестовом режиме (TESTSIGNING). Несущественной неприятностью этого варианта будет появление предупреждающей надписи в правом нижнем углу рабочего стола.
Подходящими инструментами для реализации такого способа могут служить Windows Software Development Kit (SDK) или Windows Driver Kit (WDK). С их помощью можно сделать свой собственный сертификат:
makecert -r -ss my -n "CN=My Own Testing Authority"
Это команда создаст корневой сертификат с именем “My Own Testing Authority» и установит его в личное хранилище сертификатов. Подписать модифицированное ядро ​этим сертификатом можно выполнив команду:
signtool sign -s my -n "My Own Testing Authority" ntkr128g.exe

Теперь имеется модифицированное ядро для тестирования возможности использования в 32-разрядной Windows физической памяти выше 4 ГБ. Его нужно скопировать в каталог C:\Windows\System32 и создать новый вариант загрузки с помощью bcdedit.exe.
Новую загрузочную запись создаем путем копирования текущей (current) и даем ей новое имя, например, «Windows Using All My Memory»:
bcdedit /copy /d "Windows Using All My Memory"
Если запустить bcdedit без параметров то можно узнать новой записи.

Дальше необходимо добавить директивы:

bcdedit /set kernel ntkr128g.exe
– указываем, какое ядро нужно загрузить;
bcdedit /set testsigning Yes
– говорим, что работаем в тестовом режиме;
bcdedit /set pae ForceEnable
– на всякий случай.


Если после патчевания и перезагрузки с новым ядром посмотреть сведения о памяти то можно увидеть


Судя по тому, что говорит о себе система, она теперь работает со всеми 6 ГБ физической памяти

Как и ожидалось, добавился новый большой диапазон памяти выше 4 ГБ.

Применительно к Windows 7 x86 делать все описанное выше “ручками”, скорее всего, не понадобится. В свободном доступе есть программы, которые автоматизируют весь этот процесс. Найти их в сети очень легко.
Один из комплектов назывался ReadyFor4GB. Он примечателен тем, что состоит из трех отдельных модулей, первые два из которых повторяют описанные выше этапы. Третий модуль представляет собой утилиту для удаления Watermark (предупреждающая надпись на рабочем столе после загрузки с новым ядром).
Учитывая, что в комплекте есть руководство на русском языке, в котором четко прописана последовательность запуска программ и ответы на их вопросы, подробное описание процесса будет здесь излишним. Достаточно делать все строго по порядку. Все программы нужно запускать с правами администратора. Проще всего в проводнике Windows — «подсвечиваем» мышью файл программы, которую нужно запустить, нажимаем правую кнопку мыши и в появившемся контекстном меню выбираем «Запуск от имени администратора». Или запустить от имени администратора cmd
В силу того, что “родное” ядро остается в неизменном виде, систему в любой момент можно вернуть в исходное состояние. Благодаря этому, описанный патч можно считать относительно безопасным.

Совершенно не лишним будет до начала запуска патчеров сделать экспорт содержимого системного хранилища в файл. Файл можно сохранить в любом месте и дать ему произвольное имя (главное вспомнить потом название файла и где он лежит). Эту копию впоследствии можно использовать для быстрого и простого восстановления первоначального состояния системного хранилища, что равносильно отмене всех сделанных изменений.
Достаточно запустить командную строку с правами администратора:
bcdedit /export "C:\Backup\bcd-backup"
где C:\Backup\ – произвольно выбранная для хранения папка, а bcd-backup – произвольное имя файла копии хранилища.
Когда захочется прекратить все эксперименты с памятью, достаточно будет набрать:
bcdedit /import "C:\Backup\bcd-backup"

Еще один вариант патчера называется 4GB-7600_RTM_x86. В нем вообще один единственный исполняемый файл, то есть «все в одном флаконе». Не так давно появился патч, который позиционируется как универсальный для всех версий Windows, включая и Windows 8.

Как видно, ограничение на 4ГБ в 32-х разрядных ОС - это "творение" исключительно Microsoft, которое, к счастью, можно обойти.

Читайте также: