Мне интересно, подразумевает ли 4 ГБ "гигабит" или "гигабайт" по отношению к 32-битной ОС с адресацией "только 4 ГБ адресного пространства"?

Другие сообщения упоминают 2 ^ 32 бит, равный 4294967296 байт. Но если они говорят о 32-битном, то как получается, что результат дается в байтах?

Или я что-то упустил?

3 ответа3

10

На большинстве архитектур адресация памяти осуществляется в байтах.

32-битное поле адреса позволяет вам указать 2 ^ 32 (около 4,3 миллиарда) адресов.

Это означает, что ЦП, который использует 32-разрядную адресацию и адресацию ОЗУ в виде байтов, может изначально адресовать 2 ^ 32 байта, что равно 4 ГиБ (гибибайтам).

На многих современных архитектурах необходимо учитывать и другие проблемы, такие как выравнивание адресов запросов памяти, которое ограничивает то, какие адреса можно использовать для фактического доступа. Но это не меняет объем ОЗУ, который может адресовать ЦП, а только то, как он может быть адресован, и если вы не работаете очень близко к ЦП, это обычно отвлекается от программиста и, конечно, от пользователя.

Существуют способы (такие как расширение физического адреса, PAE), чтобы обойти ограничение, налагаемое 32-разрядной шириной адреса, так же, как 16-разрядные ЦП использовали различные методы (включая сегментацию), чтобы иметь возможность адресовать более 64 КиБ (2 ^ 16 байт) оперативной памяти. Кроме того, если адресация была выполнена в другом модуле (например, 16-разрядных слов, а не 8-разрядных байтов), то фактический объем памяти, который может быть адресован, изменится соответственно; Например, при использовании 16-битных слов, а не 8-битных байтов, 32-битная ширина адреса позволила бы адресовать 8 ГиБ, потому что каждый адрес фактически адресует два байта.

0

4 ГБ относится к 4 гигабайтам, а 32-разрядная в ОС никак не связана с цифрами.

Он не считается в битах, он учитывается в байтах при использовании 2 ^ 32. Но это ограничение не связано с чем-то одним и может варьироваться в зависимости от различных конфигураций ввода / вывода на mobo, поэтому оно может сильно варьироваться от 2 гигабайт до почти 4 гигабайт. И с PAE это можно преодолеть.

0

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

Объем памяти, к которому вы можете обратиться, - это возможные значения адресной шины (2 ^ 32), умноженные на размер каждого блока памяти (1 байт), поэтому 2 ^ 32 * 1 байт = 4294967296 байт.

Вы также можете выразить это как биты, если хотите, то есть 2 ^ 32 * 8 бит = 34359738368 бит.

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

Если, например, у вас есть 16-битная адресная шина, и каждый блок памяти будет иметь 4 байта, вы можете получить доступ к 2 ^ 16 * 4 байта = 262144 байта.

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