Більшість людей переходять із 32-розрядних обчислень до 64-розрядних обчислень, щоб пробити обмеження 4 Гб оперативної пам'яті, але як далеко чи можете ви пробити цю межу, як тільки ви увійдете у сферу 64-розрядних комп'ютерів?
Сьогоднішня сесія запитань і відповідей надійшла до нас люб’язно від SuperUser - підрозділу Stack Exchange, угруповання веб-сайтів із питань та відповідей на основі спільноти. Зображення Петро Кратохвіл .
Питання
Зчитувач SuperUser KingNestor цікавиться, скільки оперативної пам'яті вміщує 64-розрядний комп'ютер:
Я читаю свою книгу з архітектури комп’ютерів і бачу, що в x86, 32-бітному процесорі лічильник програм має 32 біти.
Отже, кількість байтів, яку він може адресувати, становить 2 ^ 32 байта, або 4 ГБ. Тому для мене є сенс, що більшість 32-розрядних машин обмежують обсяг оперативної пам'яті до 4 Гб (ігноруючи PAE).
Чи правильно я вважаю, що 64-бітна машина теоретично може адресувати 2 ^ 64 байти або 16 екзабайти барана ?!
Екзабайти, які ви кажете? Зараз, зараз, давайте не будемо жадібними. Ми були б раді розпочати з терабайта або двох.
Відповідь
Відповіді на запит KingNestor - це цікава суміш практичних та теоретичних міркувань. Метт Болл вскакує прямо з теоретичною відповіддю:
Теоретично: 16,8 мільйона терабайт. На практиці: корпус вашого комп’ютера занадто малий, щоб вмістити всю цю оперативну пам’ять.
http://en.wikipedia.org/wiki/64-bit#Limitations_of_practical_processors
Конрад Дін вступає з приміткою про те, наскільки абсолютно непрактично було б максимально обмежувати теоретичну межу оперативної пам'яті, використовуючи сучасні технології:
Як доповнення до відповіді Метта Болла, на сьогодні найбільший накопичувач оперативної пам’яті, який я можу знайти у певного інтернет-магазину, становить 32 Гб. Для досягнення 1 терабайта знадобиться 32 з них. Приблизно півдюйма на палицю це призводить до 16-дюймового простору на вашій материнській платі для терабайта комерційного оперативної пам'яті. Щоб досягти 16,8 мільйона терабайт, знадобиться материнська плата в 4242,42 милі. Відстань від Лос-Анджелеса до Нью-Йорка становить близько 2141 милі, тому материнська плата буде тягнутися по всій країні і назад, щоб вмістити стільки оперативної пам'яті.
Очевидно, що це недоцільно.
Як би не ми поставили нашу оперативну пам’ять всю в один ряд, як на більшості материнських плат, а натомість розмістили її поруч. Я хочу сказати, що середня палиця барана довжиною близько шести дюймів, тому, якщо ми дозволимо ширину півдюйма, ви можете отримати квадратну одиницю з 12 палиць барана на 6 дюймовому квадраті. Давайте назвемо цей квадрат RAM-плиткою. Потім плитка оперативної пам'яті вміщує 384 ГБ оперативної пам'яті. Щоб досягти необхідних 16,8 мільйона терабайт у 384 ГБ плитки, знадобиться 44,8 мільйона плиток. Давайте будемо брудними і скористаємося квадратним коренем цього, щоб зробити висновок, що це вміститься на квадраті 6693 на 6694 плитки, або 13386 на 13388 футів, що досить близько до 2,5 футів у квадраті, достатньо, щоб покрити центр Сіетла в тіні, ніби їм уже не вистачало скарги.
Нарешті, Девід Шварц зазначає, що навіть теоретична межа заглиблюється сучасною архітектурою процесора:
Зверніть увагу, що жоден існуючий 64-розрядний процесор x86 насправді не може цього зробити. У їх кешах недостатньо бітів тегів, у їх адресних шин недостатньо ширини тощо. 46-біт (8 ТБ) - це максимум для багатьох сучасних процесорів x86.
Є що додати до пояснення? Звук у коментарях. Хочете прочитати більше відповідей від інших досвідчених користувачів Stack Exchange? Ознайомтесь із повним обговоренням тут .