Скільки пам'яті може одночасно адресувати 64-бітну машину?


32

Якщо пам'ять є байт адресною, чи не має бути

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB ?

Загальний пошук Google говорить про 8 Гб або 16 ГБ макс.

Як це правда? Також, як це залежить від операційної системи?


8 ГБ, очевидно, від стіни, оскільки моя робоча машина має 12 ГБ і може вирішити все, плюс ГБ відео оперативної пам’яті, плюс все моє обладнання, а також вся моя віртуальна пам’ять просто чудово.

Newegg продає пакет об’ємом 32 ГБ, призначений для одного комп'ютера. 32-розрядний підтримується 3,2 ГБ, а 128-бітний підтримуватиме мільйони терабайт, тому я думаю, що 64-бітний набагато більше, ніж удвічі більше, ніж 32-бітний.
tkbx

Відповіді:


53

Існує кілька факторів переплетення.

Перш за все, ви ніколи не зможете зібрати систему, яка має 2 64 байти (16 екзибайт) фізичної оперативної пам’яті.

По-друге, те, що архітектура використовує 64-бітні покажчики, не означає, що фактично використовуються всі біти цих покажчиків. Зокрема, поточні процесори x86-64 (також AMD64 та поточні 64-бітні мікросхеми Intel) фактично використовують 48-бітні лінії адрес (AMD64) та 42-бітні адреси адреси (Intel) (див. Http://en.wikipedia.org/wiki / X86_64 # Virtual_address_space_details ), теоретично дозволяючи 256 терабайт фізичної оперативної пам’яті.

По-друге, у материнських плат є свої обмеження щодо кількості оперативної пам’яті, яку вони можуть підтримувати, як фізично, так і логічно. Фізично є тільки стільки слотів, доступних для оперативної пам'яті. Що стосується "логічних" меж, я не повністю розумію, чому це все ще стосується x86-64 (контролер пам'яті вже давно перенесений у сам процесор), але це так. Імовірно, кути вирізаються на адресних лініях, щоб заощадити кілька доларів на дизайні та виготовленні.

По-третє, операційна система може мати внутрішні обмеження щодо кількості оперативної пам’яті, яку вона може ефективно підтримувати. Частково це насправді для запобігання необхідності надмірно великих структур даних для відстеження використання пам’яті, якої насправді немає. Востаннє я перевірив, Linux дозволяє 128 ТБ віртуального адресного простору за процес на x86-64 і теоретично може підтримувати 64 ТБ фізичної оперативної пам’яті.

По-четверте, деякі операційні системи (наприклад, Windows) будуть штучно обмежувати, скільки оперативної пам’яті можна використовувати як тактику, щоб змусити користувачів перейти на більш дорогі версії, якщо вони хочуть більше оперативної пам’яті (Windows 7 Starter обмежений 2 Гб, Home Basic - 8, Home Premium до 16, а Professional і вище - 192 Гб, а випуски Windows Server мають набагато вищі межі).


1
+1 для згадування рядків фізичної адреси, як правило, << кількість біт в регістрі адрес для 64-розрядних архітектур
Paul R

3
Джерело для 42-бітних рядків адреси (додане анонімним редагуванням) буде вдячним. До цього часу я особисто не вважаю цю інформацію достовірною.
Боб

21
Ніколи не кажи ніколи. Закон Мура досі діє, останнє, що я чув, тому системи з 16 екзабайтами оперативної пам’яті цілком можуть з’явитися протягом нашого життя. Тоді нам усім доведеться перейти до 128-бітних операційних систем ...
Майкл Хемптон

Фізичні адреси також обмежені кількістю бітів, наданих для фізичних адрес у TLB (і розміром тегів кеша, що задаються тегами фізичної адреси), і бітами, доступними для фізичних адрес у записах таблиці сторінок (якщо такі визначені архітектура, як у x86-64, яка підтримує 52-бітний фізичний адресний простір зі сторінками 4KiB). Останнє є більш чітким (не заснованим на архітектурі) межею, хоча навіть архітектури можна змінити.
Пол А. Клейтон

2
@MichaelHampton - NecroReply, але не втримався :) Подвоєння кожні 2 роки (що швидше, ніж останні тенденції) все одно займе 60 років, щоб отримати від 16 ГБ до 16 ЕБ. До того часу я сумніваюся, що "закони" про кремнієві транзистори матимуть будь-яке значення;)
MatBailie

9

Якщо ви використовуєте MS Windows, максимальна пам'ять обмежена операційною системою.

Для Windows 7 максимум:

  • Стартер: 2 Гб
  • Головна Basic: 8 Гб
  • Головна премія: 16 Гб
  • Професіонал: 192 Гб
  • Підприємство: 192 Гб
  • Ultimate: 192 Гб

Windows Server 2008 коливається від 8 ГБ для рівня входу до 2 ТБ для верхньої частини рядка.

Дивіться http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx для повного списку результатів.

Ці обмеження в основному з маркетингових причин. Обмежуючи більш дешеві версії, вони роблять версії високого класу (порівняно) більш привабливими.

Я думаю, що останній Linux будує роботу з близько 32 ТБ оперативної пам’яті, хоча не все обладнання може це підтримувати.


4
Це насправді не технічні обмеження. Це штучні межі, запроваджені з ділових причин.
kasperd

8

64-розрядна машина повинна мати можливість приймати до 2 64 адресних одиниць (в архітектурах, розроблених протягом останніх декількох десятиліть, адресовані одиниці незмінно є байтами, відомими також октетами). Якщо ви визначите "гігабайт" як 2 30 адресних одиниць, то так, 2 34 гігабайти було б ще одним способом вираження того ж рахунку.

Який пошук Google дав такі смішні крихітні результати? Можливо, на сторінці, яку ви знайшли, йдеться про кількість оперативної пам’яті, яку ви можете придбати у досить дешевих коробках певної моделі - ви, безумовно, можете мати набагато більше оперативної пам’яті (звичайно, все адреси), навіть у коробках, які далеко не дуже дорогі. .

Операційні системи, безумовно, можуть і обмежують об'єм пам'яті, що адресується (наприклад, вони можуть це зробити, обмеживши розмір таблиць сторінок, можливо, до деякого настроюваного максимуму, який можна встановити шляхом перекомпіляції або іншим чином переконфігурувати ОС - це важко бути більш конкретним, не орієнтуючись на якусь конкретну групу ОС).


Чому 2 ^ 30 адресних одиниць становить 1 ГБ? Кожен адресний блок зберігає 1 біт, отже, 2 ^ 30 адресних одиниць зберігають стільки бітів, що становлять 0,134217728 гігабайт. Що я пропускаю?
Даршан Чадхарі

1
@DarshanChaudhary 2 ^ 30 - це кількість різних адрес. Кожна адреса ідентифікує один байт пам'яті, а не один біт.
Девід Молес

3

Ви можете мати стільки оперативної пам’яті, скільки хочете, але все залежить від операційної системи та програми, яку ви працюєте - як це сказав хтось інший.

Якщо ви працюєте з голодним інтенсивним процесорним додатком, яке також інтенсивно на інших технічних засобах, таких як ваш жорсткий диск, то вам найкраще серйозно розглянути другий процесор у повністю окремій машині. Наприклад, запуск програми бази даних та сервера електронної пошти на обох машинах.

Не важливо, скільки пам’яті у вас є - на сучасному ринку вся система перемелиться. Одні CPU просто не можуть впоратися з багатозадачністю так, як ви очікували.

Для однієї машини із завантаженням пам’яті краще, але не настільки яскраво, якщо у вас в одній системі працює декілька додатків - незалежно від обсягу встановленої пам’яті. Саме це є причиною того, що великі компанії використовують не тільки 64-бітну архітектуру для адреси більшої кількості пам'яті, але вони також завантажують баланс всього партії з двома або більше серверами.

Якщо ви дійсно серйозно ставитеся до продуктивності, тоді, безумовно, перейдіть на 64 біт, але також врахуйте балансування навантаження з другим сервером.

Я пішов по цій дорозі - налаштувавши одну машину з максимальною оперативною пам’яттю. Однак при запуску декількох додатків він все ще працює як собака. Це тому, що сам процесор просто не впорається з цим.

Моя порада - зберегти свої гроші на пам'яті та придбати другий сервер, а потім завантажити баланс двох. Це набагато простіший плюс - як тільки ви потрапите в цілі, - це легко розширити, коли вам потрібно більше потужності та швидкості обробки.

Крім того, 64-розрядна архітектурна машина може впоратися з 32-бітовим програмним забезпеченням, але з 32-бітною машиною ви обмежені лише 32-бітовими або меншими програмами - включаючи операційну систему.

Оскільки весь ринок працює на 64 біт як з точки зору апаратури, так і програмного забезпечення, я б радив перейти на 64-бітну перспективу, але забудьте ідею розбити все на одній машині з великою кількістю пам'яті, тому що ви будете розчаровані.

Якщо ви не впевнені, що таке "врівноваження навантаження", тоді виконайте пошук у Google.


2

Я думаю, що це може зайняти більше, ніж "ЕБ".

Подивіться, що цей 32-розрядний процесор може зайняти 2 32 B = 4 Гб, але, максимум, це займе 3 ГБ, "оскільки вони мають 1 Гб для зворотних адрес"

Це означає, що 64-розрядний процесор може приймати 2 64 B = 16 EB, але я не можу, як використовуються адреси, заблоковані для зворотного зв'язку. тому ми можемо сказати, що 64-бітний процесор займає більше 1 ЕБ. і ця специфікація не залежить від того, якою ОС використовувався ПК чи якою є його модель.


1
На практиці 64-бітні процесори зазвичай мають 48-бітний адресний простір, якого вистачає на 256 терабайт пам'яті.
465544

Я думаю, ви маєте на увазі exbibyte , а не екзабайт .
мартіно

1

Взявши за приклад процесор Intel або AMD, існує декілька обмежень як фізичної пам'яті, так і віртуальної пам'яті. Інші люди говорили про обмеження програмного забезпечення та обмеження на материнській платі, але є й внутрішні обмеження.

Запис таблиці термінальної сторінки в MMU містить 52 значущі біти фізичної адреси і теоретично може відображати до 4096 ТБ фізичної оперативної пам'яті.

MMU реалізує таблицю сторінок на 4 рівні, верхній рівень якої складається з записів 512 × 512 ГБ. Тож віртуальна пам'ять обмежена 256 ТБ.

Наскільки мені відомо, всі 64-бітні операційні системи реалізують DMAP (пряму карту), що супер зручно. Однак, оскільки віртуальна пам'ять обмежена 256 ТБ, розмір DMAP також обмежений. Зазвичай 128 ТБ зарезервовано для користувальницького режиму, а 128 ТБ для ядра. З цих 128 ТБ для ядра, до половини може бути зарезервовано для DMAP. Завдяки корисності DMAP, операційні системи, як правило, обмежують фізичну пам’ять лише тим, чим може управляти DMAP.

Отже, більшість (усіх?) 64-бітних операційних систем для Intel / AMD фізична пам'ять, що підтримується, обмежена приблизно 64 ТБ, залишаючи 64 ТБ для загальної віртуальної пам'яті ядра та 128 ТБ для віртуальної пам'яті користувача.

-

Внутрішній процесор, кеші CPU також мають обмеження на кількість бітів фізичної адреси, які вони зберігають, оскільки кожен додатковий біт адреси їсть більше транзисторів до тегу кешу. Обмеження контактів контролера DRAM не обов'язково є заключним словом, оскільки пам'ять також може бути адресована за допомогою посилань DMI.

Різні архітектури процесора (наприклад, ARM, PowerPC тощо) матимуть різні обмеження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.