Ограничение ОЗУ на 64-битной арке

ОРИГИНАЛЬНЫЙ ВОПРОС: (вы можете прочитать этот беспорядок вопроса, но я предлагаю перейти к переписанному вопросу)

Я вижу, что есть много мест, где упоминается ограничение ОЗУ 16 EB... Однако разве современный регистр не 64-битный? и если да, то 2^64 должно указывать на количество возможных регистров, и, поскольку каждый из них составляет 8 байтов, фактический предел должен составлять 128 EB ((2^64)*8 байтов). Пример: 32 бита поступают на один декодер 32X(2^32), а остальные 32 бита - на другой 32X(2^32) декодер, чтобы включить правильные провода в каждом декодере и, следовательно, получить доступ к определенному регистру (2^32)^2 доступных регистра, каждый из которых имеет 64-битные данные (для сохранения 64-битной шины).

Очевидно, я либо что-то упустил, либо есть странный шанс, что я прав, и 16 EB не совсем предел...

РЕДАКТИРОВАТЬ:

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

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

ВОПРОС: (написано так, что это более полезно для других людей)

Когда я задавал этот вопрос, я очень свободно использовал термин "регистр" для обозначения места в памяти и предполагал, что в ОЗУ используется адресная обработка по словам (следовательно, для 64-битной архитектуры используется 8 байтов). Если бы ОЗУ было адресуемым словом, каждая ячейка памяти содержала бы 8 байт и, следовательно, 16E * 8 байт = 128EB.

Поскольку большинство современных компьютеров используют байтовую адресацию, фактический размер каждой ячейки памяти будет 1 байт (8 бит) и, следовательно, 16E * 1 байт = 16EB.

ПОЛЕЗНОЕ ПРИМЕЧАНИЕ:

Наличие ОЗУ с байтовой адресацией облегчает управление, так что разница между 32-битной и 64-битной не столь велика, но при обращении к ОЗУ все равно будет получено все 64-битное слово (игнорируя последние 3 бита адреса для часть поиска, тогда, если требуется только 1 байт, остальные 7 байтов можно игнорировать).

Еще одно полезное примечание: при 64-битной адресации, как правило, используется только 40-52 бит, это оставляет достаточный объем максимальной оперативной памяти (между 1 ТБ и 4 ПБ).

1 ответ

В 32-разрядной архитектуре указатели содержат 32 (используемых) бита и могут адресовать 2^32 (=4294967296) различных адресов. Каждый адрес указывает на байт, поэтому ваше адресное пространство составляет 4294967296 байт или 4 ГиБ.

В 64-разрядной архитектуре действует тот же аргумент: вы можете адресовать 2 ^ 64 разных адресов, и каждый адрес указывает на байт, поэтому ваше адресное пространство имеет размер 2 ^ 64 байта, что в точности равно 16 EiB.

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

Другие вопросы по тегам