сколько памяти может быть доступно 32-битной машине? - PullRequest
54 голосов
/ 15 января 2012

Что подразумевается под 32-битной или 64-битной машиной?

Это архитектура процессора… 32-битная машина может одновременно считывать и записывать 32-битные данные на 64-битной машине….

Каков максимальный объем памяти, к которому может получить доступ 32-разрядный компьютер?

Это 2^32=4Gb (4 Гигабит = 0,5 Гигабайта)

Что означает 4 ГБ ОЗУ?

Если я считаюто же самое для 64-битной машины, тогда я могу иметь оперативную память 16ExbiBytes .. это возможно?

Верны ли мои концепции?

Ответы [ 7 ]

45 голосов
/ 15 января 2012

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

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

И да, теоретически 64-разрядная архитектура может адресовать 16,8 миллиона терабайт памяти или 2 ^ 64 байта.Но я не верю, что современные популярные реализации полностью поддерживают это;например, архитектура AMD64 может адресовать только до 1 терабайта памяти.Кроме того, ваша операционная система также накладывает ограничения на объем поддерживаемой адресуемой памяти.Многие версии Windows (особенно версии, предназначенные для домашнего или другого несерверного использования) произвольно ограничены.

21 голосов
/ 06 января 2014

Под 32-битной или 64-битной машиной обычно подразумевается размер видимых извне («архитектурных») целочисленных регистров общего назначения.

Это очень мало связано с тем, как строится аппаратное обеспечение. Например, давайте рассмотрим (давно устаревший) Intel Pentium Pro. Обычно он считается «32-разрядным» процессором, хотя он поддерживает до 36-разрядных физических адресов, имеет 64-разрядную шину данных, а внутренние вычисления для всех поддерживаемых типов операндов выполняются в одном наборе регистров ( следовательно, шириной 80 бит для поддержки самого большого типа с плавающей запятой).

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

Переход на 64-битные машины в основном включал изменение того, что было сделано видимым для пользователя (или для кодирования на уровне ассемблера). Опять же, то, что вы видите, редко совпадает с тем, что реально. Например, в большинстве 64-битных кодов указатели / адреса рассматриваются как 64-битные, но реальные процессоры не поддерживают такие большие адреса. Современные процессоры поддерживают 48-битные виртуальные адреса и (по крайней мере, насколько я заметил) не более 40 бит физической адресации. С другой стороны, они спроектированы таким образом, чтобы в будущем, когда увеличится объем памяти, они могли расширить физическую адресацию до 48 бит без какого-либо влияния на программное обеспечение. Даже когда они увеличивают 48-битную виртуальную адресацию, в типичном случае это повлияет только на небольшое количество ядра операционной системы (нормальный код не затронут, потому что он уже предполагал, что адреса являются 64-битными).

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

9 голосов
/ 26 ноября 2014

Возвращаясь к действительно базовой идее, у нас есть 32 бита для наших адресов памяти.Это работает до 2 ^ 32 уникальных комбинаций адресов.По соглашению каждый адрес указывает на 1 байт данных.Следовательно, мы можем получить до 2 ^ 32 байтов данных.

В 32-битной ОС каждый регистр хранит 32 бита или 4 байта.32 бита (1 слово) информации обрабатываются за такт.Если вы хотите получить доступ к конкретному 1 байту, концептуально мы можем «извлечь» отдельные байты (например, байт 0, байт 1, байт 2, байт 3 и т. Д.), Выполняя побитовые логические операции.

Напримерполучить "dddddddd", взять "aaaaaaaabbbbbbbbccccccccdddddddd" и логическое И с "00000000000000000000000011111111".

5 голосов
/ 15 января 2012

в основном 32-битная архитектура может адресовать 4 ГБ, как вы и ожидали.Есть несколько методов, которые позволяют процессору адресовать больше данных, например AWE или PAE .

4 голосов
/ 15 января 2012

Да, на 32-битной машине максимальный объем используемой памяти составляет около 4 ГБ. На самом деле, в зависимости от ОС оно может быть меньше из-за части зарезервированного адресного пространства: в Windows вы можете использовать только 3,5 ГБ, например.

На 64-битной памяти вы действительно можете адресовать 2 ^ 64 байта памяти. Не то, чтобы вы когда-либо имели их - но опять же, давным-давно было то же самое, что когда-либо требовалось больше 640 КБ памяти ...

2 голосов
/ 18 января 2012

Нет, ваши понятия не верны.И чтобы все исправить, вам нужен ответ на вопрос, на который вы неправильно ответили:

Что означает 32-битная или 64-битная машина?

ОтветНа вопрос "что-то значимое в ЦП является 32-разрядным или 64-разрядным".Итак, вопрос в том, что это значимое?Многие люди говорят о ширине шины данных, которая определяет, является ли машина 32-битной или 64-битной.Но ни один из последних 32-битных процессоров не имеет 32-битных или 64-битных шин данных.большинство 32-битных систем будут иметь по крайней мере 36 бит для поддержки большего объема оперативной памяти.Большинство 64-битных процессоров имеют шину данных шириной не более 48 бит, потому что это уже чертовски много памяти.

Итак, по моему мнению, 32-битная или 64-битная машина определяетсяразмер его регистров общего назначения, используемых в вычислениях, или «натуральный размер слова», используемый компьютером.

Обратите внимание, что 32-битная ОС - это совсем другое.У вас может быть 32-битная ОС, работающая на 64-битном компьютере.Кроме того, у вас может быть 32-битное приложение, работающее на 64-битной ОС.Если вы не понимаете разницу, напишите другой вопрос.

Таким образом, максимальный объем ОЗУ, на который может обращаться процессор, равен 2 ^ (ширина шины данных в битах), учитывая, что в нем включен надлежащий режим адресации.процессор.

Кроме того, ничто не мешает кому-то ввести мультиплекс между шиной данных и банками памяти, который выберет банк и затем обратится к ОЗУ (в два этапа).Таким образом, вы можете использовать еще больше оперативной памяти.Но это непрактично и крайне неэффективно.

0 голосов
/ 27 октября 2013

По сути, термин «x-bit machine» не зависит от вашей машины.Вот почему нам не нужно менять наши процессоры или другое оборудование для перехода с 32-битной системы на 64-битную (или наоборот).

32-битная и 64-битная расшифровка означает возможность адресации операционной системына вашем компьютере.

Однако это еще не означает, что x-битная операционная система способна адресовать 2 ^ x ГБ памяти.Потому что «B» в «GB» означает «байт», а не «бит».1 байт равен 8 битам.

На самом деле 32-битная система не может даже адресовать 2 ^ 32/8 = 2 ^ 29 ГБ памяти, хотя для ОС должна быть зарезервирована некоторая память.что-то чуть ниже 3 ГБ.

...