Я не понимаю что-то в памяти - PullRequest
3 голосов
/ 04 февраля 2012

У меня очень простой (n00b) вопрос.

20-битная внешняя адресная шина дала физическое адресное пространство 1 МБ (2 ^ 20 = 1 048 576). (Википедия)

Почему 1 МБ?

2^20 = 1,048,576 bit = 1Mbit = 128KByte not 1MB

Я что-то неправильно понял.

Ответы [ 3 ]

5 голосов
/ 04 февраля 2012

Если у вас есть 20 битов, вы можете адресовать до 2^20.Это ваш диапазон , а не количество бит.

Т.е. если у вас есть 8 бит, ваш диапазон составляет до 255 (без знака), а не 2 ^ 8 бит.

Таким образом, с 20 битами вы можете адресовать до 2 ^ 20 байтов, т.е. 1 МБ

Т.е. с 20 битами вы можете представлять адреса от 0 до 2^20 = 1,048,576.Т.е. вы можете ссылаться до 1МБ памяти.

2 голосов
/ 04 февраля 2012

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

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

Обратите внимание, что байт не имеет , чтобы быть 8-битным, строго говоря, хотя сейчас он повсеместен. Но независимо от размера байта, вы группируете биты, чтобы иметь возможность обрабатывать их большее количество.

2 голосов
/ 04 февраля 2012

1 << 20 адресов, то есть 1,048,576 байтов. Следовательно, 1 МБ физического адресного пространства.

...