Как ОЗУ может получить доступ к любому месту в памяти со скоростью O (1)
Нас учат, что абстракция оперативной памяти представляет собой длинный массив байтов. И что для процессора требуется столько же времени для доступа к любой его части. Какое устройство имеет возможность доступа к любому байту из 4 гигабайт (на моем компьютере) одновременно? Поскольку это не кажется тривиальной задачей для меня.
Я спросил коллег и моих профессоров, но никто не может точно определить, как можно решить эту задачу с помощью простых логических элементов, и если это не просто сложная комбинация элементов логики, то что же это?
Мое личное предположение состоит в том, что вы можете получить доступ к любой памяти со скоростью O (log (n)), где n будет размером памяти. Потому что каждый вентиль разделит память на две части и отправит вам инструкцию доступа к памяти для следующего разбиения памяти на две шлюза. Но это требует ОДНОГО ворот. Я не могу придумать другое обоснованное предположение, и я даже не знаю название устройства, которое я должен искать в Google.
Пожалуйста, помогите моему мучительному любопытству, и спасибо заранее.
править <Это то, что я узнал!
процитируйте вашу цитату: «ОЗУ может отправлять значение из ячейки с адресом X на некоторые выходные выводы», здесь каждый пропускает (снова) то, что для меня нетривиально. На мой взгляд, для того, чтобы построить вентиль, который из 64 выводов решает, какой байт из 2 ^ 64 получить, каждый вывод должен разделить общий возможный диапазон памяти на два. Если бит с индексом 0 равен 0 ->, то адрес находится в памяти 0-2 ^ 64/2, иначе адрес находится в памяти 2 ^ 64 / 2-2 ^ 64. И так далее, однако количество шлюзов (давайте их назовем), через которые будет извлекаться память, будет 64 (константа). Однако количество необходимых затворов равно N, где N - количество байтов памяти.
То, что имеется 64 контакта, не означает, что вы все равно можете декодировать его в один выбор из диапазона 2 ^ 64. 4 гигабайта памяти идут с воротами 4 гигабайта в контроле памяти ???
теперь это может быть улучшено, потому что, как я яростно читаю все больше и больше о том, как устроена эта память, если вы поместите память в матрицу со строками sqrt (N) и столбцами sqrt (N), то количество вентилей, которое извлекает память нужно будет пройти через O (log (sqrt (N) * 2)), и количество необходимых затворов будет 2 * sqrt (N), что намного лучше, и я думаю, что это, вероятно, коммерческая тайна.
/ Изменить <