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

531
user1683642

Я вижу, что есть много мест, упоминающих ограничение ОЗУ 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 на самом деле не предел ...

0
может быть, вы перепутали бит и байт? если так, то до 16 ЕБ Schwertspize 9 лет назад 0
[`64-битный регистр может хранить 2 ^ 64 различных значений. Следовательно, процессор с 64-битными адресами памяти может напрямую обращаться к 2 ^ 64 байтам (= 16 exbibytes) байтово-адресуемой памяти.] (Https://en.wikipedia.org/wiki/64-bit_computing) Почему вы умножить еще на 8? MC10 9 лет назад 0
64-битный регистр = 8 байтов и 16 EB, кажется, указывают на регистр, имеющий только 8-битные регистры user1683642 9 лет назад 0
@ user1683642 Память адресуется в байтах, а не в sizeof (регистре), поэтому размер регистра не имеет значения. Darth Android 9 лет назад 0
спасибо Darth Android, твой ответ был самым полезным user1683642 9 лет назад 0

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

1
Sebastian R.

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

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

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

так что регистр 8 бит ... если так, как сохраняется 64 битная шина данных? в 8 разных регистрах? Разве это не потребует 8 циклов? user1683642 9 лет назад 0
64-битный регистр содержит 64 ** бит **, что составляет 8 ** байт **. Sebastian R. 9 лет назад 0
@ user1683642 - Откуда вы взяли 8-битные регистры. Я не вижу упоминания об этом в этом ответе. Ramhound 9 лет назад 0
Да, есть ... если вы знаете, как создается ОЗУ, 2 декодера, которые могут указывать (в 64-битной системе) на 2 ^ 64 регистров ... каждый регистр должен быть 8 бит для общего предела, равного 16 EB поскольку 2 ^ 64 ссылается на: 1844674407 × 10¹⁹ регистров * 1 байт = 1,844674407 × 10¹⁹ байтов = 16 EB user1683642 9 лет назад 0
Я думаю, что вы прочитали некоторую документацию о том, сколько лет DRAM был подключен 20 лет назад и получил много назад. Современная оперативная память работает по-другому. Но это не место, чтобы обсуждать это дальше. Sebastian R. 9 лет назад 1
Хорошо, спасибо ... Я открою новый поток для этого после прочтения некоторых новых источников ... (если я все еще не понимаю) кажется странным, что они изменили бы его, потому что старый действительно увеличил бы предел ( 128 ЭБ) user1683642 9 лет назад 0
Я исследовал его и поставил ответ на свой вопрос: большинство современных компьютеров используют ОЗУ с байтовой адресацией ... user1683642 9 лет назад 0
0
user1683642

Хорошо, я исследовал дальше, и кажется, что регистр адресов указывает на 8-битные регистры (байтово-адресуемые), и если данные слишком велики, чтобы их можно было хранить в одном байте, остальная часть помещается в последовательные адреса ... Тем не менее, существуют типы ОЗУ, которые имеют больший регистр на адресное место (адресуемый словом), что увеличило бы объем памяти ОЗУ, но заставило бы ЦП разделить «слово» на несколько отдельных байтов, если требуется ASCII. ... если бы современные компьютеры были созданы с использованием этого метода, емкость увеличилась бы в 8 раз для 64-битного регистра, но потребовала бы больше обработки и больше кода для управления значениями, чтобы разделить их или сохранить их вместе ... Спасибо за помощь ,

просто чтобы уточнить, тип ОЗУ, о котором я здесь говорю, не для современных компьютеров ... он подходит для очень специфических компьютеров, которые были запрограммированы для этого типа ОЗУ user1683642 9 лет назад 0