Пределы памяти в 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 Exabytes)

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

У меня есть машина с 16 ГБ памяти и двойная загрузка 32-разрядной операционной системы и 64-битной операционной системы. Я могу получить доступ ко всем 16GB от 64bit, но только 3.21GB в 32bit.

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

9 голосов | спросил series0ne 23 FebruaryEurope/MoscowbSat, 23 Feb 2013 01:39:54 +0400000000amSat, 23 Feb 2013 01:39:54 +040013 2013, 01:39:54

5 ответов


10

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


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


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

ответил Scott Chamberlain 23 FebruaryEurope/MoscowbSat, 23 Feb 2013 02:02:05 +0400000000amSat, 23 Feb 2013 02:02:05 +040013 2013, 02:02:05
11

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

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

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


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

ответил 0xC0000022L 23 FebruaryEurope/MoscowbSat, 23 Feb 2013 02:18:00 +0400000000amSat, 23 Feb 2013 02:18:00 +040013 2013, 02:18:00
1

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

ответил OCDtech 23 FebruaryEurope/MoscowbSat, 23 Feb 2013 01:46:55 +0400000000amSat, 23 Feb 2013 01:46:55 +040013 2013, 01:46:55
1

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

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

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

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

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

ответил William 19 J0000006Europe/Moscow 2015, 09:56:16
0
  

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

Основным недостатком здесь является то, что «ширина бита» процессора, который обычно является размером регистров общего назначения, обязательно совпадает с шириной адресов RAM.

В x86 с включенным пейджингом, но без PAE, адреса, которые используют программа и код ОС, называются «линейными адресами» от Intel - мы обычно называем их «виртуальными адресами». Они шириной 32 бита. Это позволяет использовать виртуальное адресное пространство размером 4 гигабайта.

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

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

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

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

ответил Jamie Hanrahan 21 +03002016-10-21T03:29:45+03:00312016bEurope/MoscowFri, 21 Oct 2016 03:29:45 +0300 2016, 03:29:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132