Как 4 ГБ могут быть равны 32-битному адресу памяти?

246
Qureshi

Простите за наивность, чтобы задать этот вопрос.

Как 4 ГБ могут быть равны 32-битному адресу памяти? Если я не ошибаюсь, 4 ГБ * 1024 * 1024 * 1024 = 4 294 697 296 байт ячеек памяти. Итак, почему мы не умножаем это на 8, чтобы привести его к битам, при условии, что 1 байт = 8 бит.

-2
НЕТ адресов битов. Существуют адреса только для байтов. Таким образом, мы должны считать и адресовать байты, а не биты. Поэтому мы не должны умножать на 8. Akina 5 лет назад 0
Прочитайте [этот ответ и комментарии] (https://superuser.com/a/593863/194694). gronostaj 5 лет назад 0
Итак, почему мы говорим, что 32 бита имеют 4 294 697 296 адресов памяти? В то время как на самом деле, 2 ^ 32 байта = 4 294 697 296 Qureshi 5 лет назад 0
32-битный адрес может хранить 2 ^ 32 = 4 294 697 296 различных адресов. Каждое значение обращается к одному байту => 4 ГБ. До этого был точный дубликат, но я не могу найти его, чтобы закрыть этот вопрос phuclv 5 лет назад 0

1 ответ на вопрос

2
Mokubai

Потому что нет смысла обращаться к памяти постепенно. Гораздо быстрее и эффективнее запрашивать байт памяти сразу, чем запрашивать каждый бит по отдельности.

Время внутренней обработки данных в процессоре измеряется в наносекундах. Время, необходимое для выбора адреса памяти, ожидания появления данных по этому адресу на шине и последующего их использования, составляет более микросекунд (на несколько порядков медленнее).

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

Используя более крупную базовую единицу (байт), мы сокращаем время доступа к данным на порядок меньше и переносим больше полезных данных одновременно.

Это было бы первоначальной причиной выбора адресации памяти с использованием байтов.

Мы по-прежнему используем байтовую адресацию ради простоты, это все еще очень полезный небольшой блок данных, но современная память теперь передает большие блоки данных в пакетах для поддержания производительности, поскольку мы вышли за пределы точки, в которой передача отдельных байтов является " эффективным».

Похожие вопросы