Ограничения памяти в 16, 32 и 64-битных системах

Теоретические пределы памяти в 16, 32 и 64-битных машинах следующие:

  • 16 бит = 65, 536 байт (64 килобайта)

  • 32 бита = 4, 294, 967, 295 байтов (4 гигабайта)

  • 64 бита = 18, 446, 744, 073, 709, 551, 616 (16 эксабайт)

Я помню из DOS / Windows 3.11 дней, что 16-битная память могла быть разделена на сегменты, так что 16-битная машина могла получить доступ к большему объему памяти, чем 64 килобайта.

У меня есть машина с 16 ГБ памяти, и я загружаю 32-битную операционную систему и 64-битную операционную систему. Я могу получить доступ ко всем 16 ГБ из 64-битных, но только 3,21 ГБ в 32-битных.

Итак, мой вопрос: если 16-битные операционные системы допускают больший, чем 64-килобайтный доступ к памяти из-за сегментирования памяти, почему 32-битные машины не следуют одному и тому же тарифу?

6 ответов

Решение

Да, система называется расширением физического адреса (PAE). Ниже приведен список операционных систем Windows и их максимального объема памяти. Любая 32-битная система, которая позволяет использовать более 4 ГБ ОЗУ, использует PAE для доступа к памяти (например, 32-битный Windows 2003 R2 Datacenter позволяет использовать 128 ГБ ОЗУ).


Фактически, для Windows 8 требуется процессор с поддержкой PAE и минимальные требования.


Чтобы ответить на ваш "незаданный" вопрос о том, почему ваша 32-битная ОС не может получить доступ к оперативной памяти, если она существует: Лицензирование. Они предпочитают не допускать, чтобы объем ОЗУ превышал 4 ГБ для их 32-разрядных ОС, если только вы не платите за выпуск для центра обработки данных (поэтому они продают версию для центра обработки данных, если вам нужно столько оперативной памяти, вы, вероятно, можете позволить себе потратить больше деньги на ОС).

Вместо того, чтобы объяснять это сам, я позволю тому, кто должен поддерживать ядро ​​с поддержкой PAE, говорить своим очаровательным образом, Линус Торвальдс

Также имейте в виду, что поддержка PAE в 32-битных версиях Windows стоит больших денег. XP даже не сможет нормально использовать полные 4 ГБ ОЗУ, потому что MS решила не включать в нее функции PAE. Ядро, которое тесно связано, Windows 2003 Server, поддерживает PAE. Однако даже в этом случае ваша "Стандартная редакция" будет поддерживать только до 4 ГиБ (но обходя дыру в памяти BIOS), в то время как более дорогие версии будут поддерживать до 64 ГБ ОЗУ. То же самое относится и к 32-битной Vista.

Однако не во всех случаях это ограничение накладывается Windows. Если бы это было так, загрузка ядра Linux с поддержкой PAE все равно позволила бы вам использовать все 4 ГБ (или более). Не так, некоторые производители оборудования решили наложить это ограничение на уровне BIOS, хотя процессор и чипсет были бы способны обрабатывать PAE.


Просто примечание: ни один из существующих 64-битных процессоров на базе x86 не может даже физически обращаться ко всему диапазону 64-битного адресного пространства (для справки см. Этот вопрос и ответы).

8-битные процессоры обычно имели 16-битную адресную шину. (У Motorola унифицированная адресная шина, ОЗУ и периферийные устройства ввода-вывода совместно использовали одно и то же адресное пространство, Intel решила разделить их. В случае с Intel пределы адресов ввода-вывода 8088 и 8086 перенесли ограничения с 8080 8085 процессоров.)

Intel 8088 и 8086 имели 20-битную адресную шину памяти (1 МБ), в то время как у Motorola 68000 была 24-битная адресная шина (16 МБ). IIRC, [80]286 перешел на 24-битную адресную шину. Позже оба расширились до 32-битной адресной шины с [80]386 и 68020 соответственно.) С чипами Pentium адресная шина расширилась до 64-битной. (Я думаю, что чипы Motorola/IBM венчурного PowerPC также шли 64-битной адресной шины.)

Объем памяти, доступный ниже и вплоть до максимального значения, к которому центральный процессор мог непосредственно обращаться, ограничивался только поддерживаемыми аппаратными чипами (чипсетом) и ОС. В прошлом Билл Гейтс был известен тем, что заявлял, что никому не нужно более 640 КБ ОЗУ, поэтому DOS никогда не развивался для прямого доступа к большему объему ОЗУ. С HiMem.sys и EMM386 DOS был расширен для доступа к большей "верхней" памяти, а EMM386 использовался для прямого доступа ко всей доступной оперативной памяти. HiMem.sys обладал меньшей гибкостью и мог в основном использовать дополнительную память для хранения.

Для памяти, превышающей этот предел, требуется MMU (модуль управления памятью), чтобы разбить память на сегменты и отобразить ее в адресуемую область памяти ЦП. Именно так CoCo 3, Commodore 128 и другие 8-битные компьютеры могут получить доступ к более чем 64 КБ ОЗУ.

Более выгодным сейчас является использование виртуальной памяти для расширения пределов физической памяти, хотя и с учетом ограничений, установленных ОС.

Потому что нет практической причины для этого. Расширения физических адресов предоставляют практически те же функции, и их использование по-прежнему очень ограничено среди пользователей. В дни Windows 3.1 были ограничения, которых сегодня просто нет.

Теоретические пределы памяти в 16, 32 и 64-битных машинах следующие...

Принципиальным недостатком здесь является представление о том, что "битовая ширина" процессора, которая обычно равна размеру регистров общего назначения машины, обязательно равна ширине адресов ОЗУ.

В x86 с включенной подкачкой, но без PAE адреса, которые используют программный код и код операционной системы, называются Intel "линейными адресами" - мы обычно называем их "виртуальными адресами". Их ширина 32 бита. Это позволяет виртуальное адресное пространство 4 ГиБ.

Но это более или менее совпадение, просто артефакт формата записей таблицы страниц в том, что размер физического (RAM) адреса также составляет 32 бита.

С PAE последний составляет 36 бит (сначала... шире в последующих реализациях). Таким образом, то, что это, например, "32-разрядный компьютер", не означает, что адреса физической памяти ограничены 32-разрядными.

Промышленность имеет долгую историю машин, чья "битовая ширина" не соответствовала их максимальному размеру физического адреса. Например, архитектура VAX определяет 32-битный компьютер, а виртуальные адреса (которые являются адресами, используемыми кодом после включения преобразования адресов) действительно имеют ширину 32 бита... но физические адреса VAX имеют ширину всего 30 бит - и половина физического адресного пространства отводится регистрам устройств ввода-вывода, поэтому максимальный объем ОЗУ составлял всего 512 МБ.

Даже без аппаратного обеспечения преобразования адресов не обязательно, чтобы "битовая ширина" машины определяла максимальный адрес ОЗУ. Пример: CDC серии "upper 3000" были 36-битными машинами. Как вы думаете, они могли бы адресовать 64 ГиБ оперативной памяти? Не вряд ли! Эти машины появились в середине 60-х! Черт, в те дни у нас не было даже 64 ГБ дискового пространства. (Серия CDC 6000 была 60-битной машиной. Нужно ли продолжать?)

Это взято с этой страницы Википедии: https://en.m.wikipedia.org/wiki/RAM_limit Википедия говорит, что у нее есть несколько проблем, но вот что говорит

Ограничение оперативной памяти вашего компьютера зависит от количества Ram Pins на вашем компьютере. Если бы у вас был 16-битный компьютер под управлением Windows 3.0, для которого требуется 1 мегабайт оперативной памяти, он имел бы от 20 до 24 контактов RAM. Формула — 2^X, чтобы определить, какую площадь могут адресовать штифты Ram. 16-битные компьютеры имели до 24* контактов оперативной памяти, которые могли адресовать 16 мегабайт оперативной памяти, а 32-битные компьютеры имели до 36* контактов оперативной памяти, которые могли адресовать 64 гигабайта оперативной памяти. Ваш средний 64-битный компьютер имеет примерно 36,40 или 52 контакта оперативной памяти (64 ГБ, 1 ТБ или 4 ПБ (Windows 10 Professional допускает до 2 ТБ оперативной памяти)). *Вероятно, процессор мог бы иметь больше контактов Ram Pin, но обычно их не делают выше по определенным причинам.

Вера в то, что количество битов вашего процессора определяет, сколько оперативной памяти он может обработать, вероятно, связано с тем, что 32-битные компьютеры в основном изготавливались с 32 выводами оперативной памяти, которые могли адресовать только 4 гигабайта. В дополнение к ограничениям потребительской операционной системы.

Я до сих пор не совсем уверен, как работают ограничения Ram и насколько авторитетна эта вики-страница. Но объяснение, которое я получил на вики-странице, имеет некоторый смысл. Надеюсь, это поможет ответить на ваш вопрос

Другие вопросы по тегам