Как 32-битный процессор с 32-битным размером слова может использовать 4 ГБ ОЗУ?

Однако я видел некоторые объяснения моего вопроса в Интернете, но я все еще не чувствую, что понимаю проблему.

Я понимаю, что память 32-битного ЦП будет разделена на дискретные единицы, называемые словами, каждая из которых может хранить до 32 бит данных. Общее количество ячеек памяти, которые может адресовать 32-битный ЦП, составляет 2^32 или 4294967295 адресов. Теперь, поскольку каждый адрес может содержать до 32 бит данных, общий объем памяти, который может использовать этот процессор в битах, должен быть 2 ^ 32 x 32, верно? Однако это значение не соответствует 4 ГБ, в чем и заключается мое замешательство. Я хотел бы понять, как рассчитывается это значение в 4 ГБ.


person weary27    schedule 05.01.2019    source источник
comment
Это действительно зависит от архитектуры ЦП, но в большинстве современных систем типа ПК используется байтовая адресация вместо слова.   -  person Some programmer dude    schedule 05.01.2019
comment
На данный момент этот вопрос почти больше подходит для дочернего сайта Retrocomputing Stack Exchange. ;-)   -  person Basil Bourque    schedule 05.01.2019
comment
@Someprogrammerdude - означает ли это, что каждый адрес памяти имеет фиксированный размер, не зависящий от типа процессора. Таким образом, 32-битный ЦП будет иметь те же адреса памяти емкости, что и 64-битный ЦП?   -  person weary27    schedule 05.01.2019
comment
Нет, я имею в виду, что один адрес на ЦП ссылается на один 8-битный байт.   -  person Some programmer dude    schedule 05.01.2019


Ответы (1)


Вы допустили 2 ошибки в своей оценке:

1/Адресация (почти) всегда на уровне байтов. В противном случае большинство программ на C были бы сломаны. Это делает объем памяти независимым от размера внутренних регистров процессоров.

2/Размер памяти указан в БАЙТАХ, а не в БИТах. Таким образом, с 32-битным физическим адресом у вас может быть 2 ^ 32 байта памяти, то есть 4 ГБ.

Обратите внимание, что размер физической памяти частично не коррелирует с размером регистра процессора. В течение года в таблице страниц было несколько системных взломов, позволяющих преодолеть барьер в 4 ГБ. См., например, https://en.wikipedia.org/wiki/Physical_Address_Extension. на виртуальных адресах, которые были ограничены 32 битами (следовательно, 4 ГБ/процесс)

Теперь процессоры имеют 64-битные регистры. Виртуальные адреса имеют разрядность 64 бита (более или менее). Но 2 ^ 64 — это безумный объем памяти, и для снижения затрат физические адреса обычно ограничиваются 40 или 48 битами. Это 256 ТБ, и этого в значительной степени достаточно для современных компьютеров (и процессоров в ближайшем будущем).

Таким образом, значения 32 или 64 соответствуют размеру виртуального адреса.

person Alain Merigot    schedule 05.01.2019
comment
Спасибо, что развеяли заблуждение. Я никогда не слышал о расширении физических адресов, прежде чем это тоже было довольно интересно. - person weary27; 05.01.2019