Как 32-разрядный процессор с размером слова 32 бита может использовать 4 ГБ ОЗУ? - PullRequest
0 голосов
/ 05 января 2019

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

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

1 Ответ

0 голосов
/ 05 января 2019

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

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

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 соответствуют размеру виртуального адреса.

...