13

Теоретические пределы памяти в 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-битные машины не следуют одному и тому же тарифу?

5 ответов5

12

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


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


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

12

Вместо того, чтобы объяснять это сам, я позволю кому-то, кому нужно поддерживать ядро с поддержкой 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-битного адресного пространства (для справки см. Этот вопрос и ответы).

1

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 КБ ОЗУ.

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

1

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

0

Теоретические ограничения памяти в 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-битной машиной. Нужно ли продолжать?)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .