2017-02-08 11 views
0

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

Скажем, у меня есть адресная система памяти с 64-битными словами. Сколько памяти можно получить с помощью 32-разрядного адреса?

64-битное слово составляет 8 байтов, поэтому мы имеем дело с 8-байтовым словом. 8-байтовое слово может содержать до 2^8 (256).

Учитывая, что у нас есть 32-разрядный адрес, у нас есть 2^32, но поскольку каждое слово занимает 256 из них, (2^32)/256 = 1677216 байт.

Чтобы положить это в метрические члены, имеем 2^24 = (2^4) * (2^20) = 16 Мб.

Это правильный способ сделать это? У меня нет возможности проверить ответ, и у меня есть несколько вопросов, которые выглядят так. Хотел бы удостовериться, что я не отправляю барахло!

+0

Ценности не занимают адресное пространство. У вас есть 2^32 почтовых ящика, с 64 включенными/выключенными коммутаторами, хранящимися в каждом из них. Сколько у вас коммутаторов? – doynax

ответ

1

32-разрядный адрес предоставляет 4 294 967 296 возможных адресов. Если наименьший адресуемый элемент представляет собой 64-битное слово из 8 байтов (по сравнению с байтом), тогда общая сумма адресного пространства будет равна 4 294 967 296 x 8 = 34 359 738 368 байтов = 34 ГБ.

Что касается емкости 8-байтового слова, то это 8 байт, а не 2^8 = 256 байт.

Обратите внимание, что на некоторых старых компьютерах была базовая система адресации, которая адресовала только слова. Для доступа к байтам требуется индекс байта или смещение от словарного адреса. Я не думаю, что какие-либо современные компьютеры используют такую ​​схему.

+0

Ого, я даже не был близко. – Podo

+0

Я знаю, что это другой вопрос, просто проверяя, понимаю ли я, что вы говорили в обратном порядке. Итак, если каждое слово 64 бит, сколько битов адреса необходимо для 512 Мб? Это 512mb = 2^29, поэтому требуется 2^29/8 = 2^26 бит? – Podo

+0

@JeffreyDilley - Mb обычно означает мегабиты, вы имели в виду MB - мегабайты? Принимая MB, каждый адрес представляет 8 байтов, поэтому для 512 Мбайт вам понадобится 512 МБ/8 = 2^9 (512) x 2^20 (мегабайт)/2^3 (8 байт за слово) = 2^(9 + 20 -3) = 2^26 = 67 108 864 адреса или 26-битный адрес. – rcgldr

1

Вы принимаете 32-разрядный адрес, что означает, что можно адресовать 2^32 бита, но если вы хотите, сколько байтов может быть адресом, тогда просто разделите его, как 2^32/8 = 2^29, потому что 1 байт имеет 8 бит и если вы хотите, сколько слов может быть адресовано, то 2^29/8, потому что 1 слово содержит 8 байтов, поэтому можно решить 2^26 слов.

И поскольку одно слово имеет 8 байт, мы можем адресовать (2^26) * 8 байтов. Надеюсь, это поможет!

 Смежные вопросы

  • Нет связанных вопросов^_^