Схема системной логической памяти
Первоначальный ПК в общей сложности имел 1 МБ адресуемой логической памяти и верхние 384 КБ были зарезервированы для использования системой. Размещение этого зарезервированного пространства сверху (между 640 КБ и 1024 КБ, а не снизу, между 0 КБ и 640 КБ) привело к тому, что часто называют обычным барьером памяти.
Логическая память
Постоянное давление на производителей систем и периферийных устройств с целью обеспечения совместимости, не нарушая первоначальную схему логической памяти первого ПК, привело к (мягко говоря) беспорядочной структуре системной памяти. Через три десятилетия после появления первого ПК, даже самые новые системы во многих важных аспектах ограничены картой памяти первых компьютеров.
Оригинальный ПК использовал процессор Intel 8088, и мог выполнять только 16-битные инструкции или код, который работал в так называемом реальном режиме процессора. У этих ранних процессоров было достаточно адресных линий для доступа только к 1 МБ памяти, а последние 384 КБ были зарезервированы для использования видеокартой в качестве видеопамяти, другими адаптерами (для встроенного BIOS или буферов RAM) и, наконец, BIOS ROM материнской платы.
Процессор 286 принёс больше адресных строк, достаточно для использования до 16 МБ RAM, и новый режим, называемый защищённым режимом, который вы должны были использовать. Но из-за того, что оперативная память теперь была не смежной; то есть ОС может использовать первые 640 КБ и последние 15 МБ, но не 384 КБ системной зарезервированной области, которая находится между ними, появилась путаница.
Когда в 1985 году
Когда
Для обеспечения обратной совместимости 64-разрядные процессоры могут работать в 64-разрядном, 32-разрядном или 16-разрядном режимах, а 32-разрядные процессоры могут работать в 32-разрядных или 16-разрядных режимах, каждый с различными ограничениями логической памяти. Например, 64-разрядный процессор, работающий в 32-разрядном режиме, может адресовать только 4 ГБ RAM, а 64-разрядный или 32-разрядный процессор, работающий в 16-разрядном режиме, может адресовать только 1 МБ RAM. Все Intel-совместимые процессоры ПК, при включении, начинают работу в 16-битном реальном режиме. Когда загружается 32-битная или 64-битная ОС, именно этот код ОС инструктирует процессор переключаться в 32-битный или 64-битный защищённый режим.
Когда загружается 32-разрядная ОС, например Windows, процессор в начале последовательности загрузки, переключается в 32-разрядный защищённый режим. Затем можно загрузить 32-разрядные драйверы для всего оборудования, и остальную часть ОС. В 32-битном защищённом режиме ОС и приложения могут получить доступ ко всей памяти в системе - до 4 ГБ. Аналогично, в 64-битной ОС система в начале процесса загрузки, переключается в 64-битный защищённый режим и загружает 64-битные драйверы, а затем оставшуюся часть ОС.
32-разрядные версии Windows поддерживают 4 ГБ физической памяти (RAM). Многие не понимают, что системное оборудование ПК использует для BIOS, ресурсов материнской платы, I/O с отображением памяти, пространства конфигурации PCI, памяти устройства (графическая апертура), памяти VGA и т. д., часть или весь четвёртый гигабайт. Это означает, если вы установите 4 ГБ (или более) RAM, то ни один из них после 4 ГБ не будет виден вообще, и большая часть или весь четвёртый гигабайт (то есть RAM между 3 ГБ и 4 ГБ) будет отключён, поскольку он уже занят другим системным оборудованием. Это называется пределом в 3 ГБ, который аналогичен, бывшему в 16-разрядных системах в 1980-х годах, пределу памяти в 640 КБ. 16-разрядная адресация поддерживала 1 МБ, но верхние 384 КБ уже использовались системным оборудованием (BIOS, видео, адаптер ROM и т. д.).
На рисунке ниже показана карта памяти для системы, использующей чипсет Intel G45, который поддерживает максимум 16 ГБ ОЗУ. Для 32-битной ОС строка с надписью «Top of usable DRAM (32-битная ОС)» имеет размер 4096 МБ. Обратите внимание, что диапазон памяти PCI, FLASH, APIC (Advanced Programmable Interrupt Controller) и зарезервированные области занимают в общей сложности 770 МБ памяти ниже 4 ГБ. Вы также можете увидеть 384 КБ (0,375 МБ) памяти ниже 1 МБ, которая используется системой. Это означает, если вы работаете с 32-битной ОС, даже если у вас установлено 4 ГБ RAM логической памяти, используемый ОС объём, будет составлять 4 096 МБ - 770 МБ - 0,375 МБ, что составляет 3 325,625 МБ (или около 3,24 ГБ, округлено в меньшую сторону).
Можно ли "добыть" какую-либо часть из этой неиспользуемой логической памяти от 3 до 4 ГБ? Для тех, кто работает с 32-битной ОС, ответ - нет. Однако, если вы работаете с 64-битной ОС в системе, которая поддерживает перераспределение памяти (в основном это функция чипсета материнской платы и BIOS), ответ будет положительным. Большинство современных чипсетов для материнских плат имеют функцию, которая позволяет перераспределять неактивное ОЗУ в четвёртом гигабайте в пятый (или выше) гигабайт, где оно будет как видимой, так и доступной для 64-битной ОС.
Однако, обратите внимание, если материнская плата не поддерживает переназначение, даже когда запущена 64-битная ОС, память будет потеряна.
Обратите внимание, что ограничение в 3 ГБ не так строго определено, как при ограничении в 640 КБ. Это означает, если вы установите 4 ГБ, вы можете использовать до 3,5 ГБ, возможно, всего 2,5 ГБ или меньше.
Это во многом зависит от типов шин в системе, а также от типа и количества установленных видеокарт. С одной бюджетной видеокартой у вас может быть доступ к 3,5 ГБ. Однако в более новой системе с двумя или более слотами PCIe x16, особенно с двумя или более высокопроизводительными видеокартами PCI Express, вы можете снизить допустимый предел до 2 ГБ.
При работе с 32-разрядными версиями Windows обычно рекомендуется устанавливать до 3 ГБ ОЗУ, поскольку большинство, если не весь четвёртый ГБ, непригодны для использования. Однако в поддерживающих двухканальную память системах, чтобы получить 4 ГБ, обычно дешевле установить два модуля по 2 ГБ, чем, чтобы получить 3 ГБ, устанавливать два модуля по 1 ГБ и два по 512 МБ. В поддерживающих двухканальную память настольных системах, устанавливать три модуля по 1 ГБ не стоит, поскольку в этом случае не вся логическая память будет работать в двухканальном режиме.