Якщо пам'ять є байт адресною, чи не має бути
2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB
?
Загальний пошук Google говорить про 8 Гб або 16 ГБ макс.
Як це правда? Також, як це залежить від операційної системи?
Якщо пам'ять є байт адресною, чи не має бути
2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB
?
Загальний пошук Google говорить про 8 Гб або 16 ГБ макс.
Як це правда? Також, як це залежить від операційної системи?
Відповіді:
Існує кілька факторів переплетення.
Перш за все, ви ніколи не зможете зібрати систему, яка має 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 мають набагато вищі межі).
Якщо ви використовуєте MS Windows, максимальна пам'ять обмежена операційною системою.
Для Windows 7 максимум:
Windows Server 2008 коливається від 8 ГБ для рівня входу до 2 ТБ для верхньої частини рядка.
Дивіться http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx для повного списку результатів.
Ці обмеження в основному з маркетингових причин. Обмежуючи більш дешеві версії, вони роблять версії високого класу (порівняно) більш привабливими.
Я думаю, що останній Linux будує роботу з близько 32 ТБ оперативної пам’яті, хоча не все обладнання може це підтримувати.
64-розрядна машина повинна мати можливість приймати до 2 64 адресних одиниць (в архітектурах, розроблених протягом останніх декількох десятиліть, адресовані одиниці незмінно є байтами, відомими також октетами). Якщо ви визначите "гігабайт" як 2 30 адресних одиниць, то так, 2 34 гігабайти було б ще одним способом вираження того ж рахунку.
Який пошук Google дав такі смішні крихітні результати? Можливо, на сторінці, яку ви знайшли, йдеться про кількість оперативної пам’яті, яку ви можете придбати у досить дешевих коробках певної моделі - ви, безумовно, можете мати набагато більше оперативної пам’яті (звичайно, все адреси), навіть у коробках, які далеко не дуже дорогі. .
Операційні системи, безумовно, можуть і обмежують об'єм пам'яті, що адресується (наприклад, вони можуть це зробити, обмеживши розмір таблиць сторінок, можливо, до деякого настроюваного максимуму, який можна встановити шляхом перекомпіляції або іншим чином переконфігурувати ОС - це важко бути більш конкретним, не орієнтуючись на якусь конкретну групу ОС).
Ви можете мати стільки оперативної пам’яті, скільки хочете, але все залежить від операційної системи та програми, яку ви працюєте - як це сказав хтось інший.
Якщо ви працюєте з голодним інтенсивним процесорним додатком, яке також інтенсивно на інших технічних засобах, таких як ваш жорсткий диск, то вам найкраще серйозно розглянути другий процесор у повністю окремій машині. Наприклад, запуск програми бази даних та сервера електронної пошти на обох машинах.
Не важливо, скільки пам’яті у вас є - на сучасному ринку вся система перемелиться. Одні CPU просто не можуть впоратися з багатозадачністю так, як ви очікували.
Для однієї машини із завантаженням пам’яті краще, але не настільки яскраво, якщо у вас в одній системі працює декілька додатків - незалежно від обсягу встановленої пам’яті. Саме це є причиною того, що великі компанії використовують не тільки 64-бітну архітектуру для адреси більшої кількості пам'яті, але вони також завантажують баланс всього партії з двома або більше серверами.
Якщо ви дійсно серйозно ставитеся до продуктивності, тоді, безумовно, перейдіть на 64 біт, але також врахуйте балансування навантаження з другим сервером.
Я пішов по цій дорозі - налаштувавши одну машину з максимальною оперативною пам’яттю. Однак при запуску декількох додатків він все ще працює як собака. Це тому, що сам процесор просто не впорається з цим.
Моя порада - зберегти свої гроші на пам'яті та придбати другий сервер, а потім завантажити баланс двох. Це набагато простіший плюс - як тільки ви потрапите в цілі, - це легко розширити, коли вам потрібно більше потужності та швидкості обробки.
Крім того, 64-розрядна архітектурна машина може впоратися з 32-бітовим програмним забезпеченням, але з 32-бітною машиною ви обмежені лише 32-бітовими або меншими програмами - включаючи операційну систему.
Оскільки весь ринок працює на 64 біт як з точки зору апаратури, так і програмного забезпечення, я б радив перейти на 64-бітну перспективу, але забудьте ідею розбити все на одній машині з великою кількістю пам'яті, тому що ви будете розчаровані.
Якщо ви не впевнені, що таке "врівноваження навантаження", тоді виконайте пошук у Google.
Я думаю, що це може зайняти більше, ніж "ЕБ".
Подивіться, що цей 32-розрядний процесор може зайняти 2 32 B = 4 Гб, але, максимум, це займе 3 ГБ, "оскільки вони мають 1 Гб для зворотних адрес"
Це означає, що 64-розрядний процесор може приймати 2 64 B = 16 EB, але я не можу, як використовуються адреси, заблоковані для зворотного зв'язку. тому ми можемо сказати, що 64-бітний процесор займає більше 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 тощо) матимуть різні обмеження.