Сколько памяти может одновременно обрабатывать 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-разрядных архитектурах
Пол Р

3
Источник для 42-битных адресных строк (добавленных анонимным редактированием) был бы признателен. До тех пор я лично не считаю эту информацию достоверной.
Боб

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

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

2
@MichaelHampton - NecroReply, но не удержался :) Удвоение каждые 2 года (что быстрее, чем последние тенденции) все равно займет 60 лет, чтобы перейти с 16 ГБ на 16EB. К тому времени я сомневаюсь, что «законы» о кремниевых транзисторах будут иметь какое-либо значение;)
MatBailie

9

Если вы используете MS Windows, максимальный объем памяти ограничен операционной системой.

Для Windows 7 максимальные значения:

  • Стартер: 2 ГБ
  • Home Basic: 8 ГБ
  • Home Premium: 16 ГБ
  • Профессиональный: 192 ГБ
  • Предприятие: 192 ГБ
  • Окончательный: 192 ГБ

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

См. Http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx для получения полного списка.

Эти ограничения в основном по маркетинговым причинам. Ограничивая более дешевые версии, они делают высококачественные версии (сравнительно) более привлекательными.

Я думаю, что последние сборки Linux работают с 32 ТБ ОЗУ, хотя не все оборудование может это поддерживать.


4
Это не совсем технические ограничения. Это искусственные ограничения, введенные по деловым причинам.
Касперд

8

64-разрядная машина должна быть способна адресовать до 2 64 адресуемых блоков (в архитектурах, разработанных за последние несколько десятилетий, адресуемые блоки неизменно являются байтами, или октетами). Если вы определяете «гигабайт» как 2 30 адресуемых единиц, тогда да, 2 34 гигабайта были бы другим способом выразить то же количество.

Какой поиск в Google дал эти смешные крошечные результаты? Возможно, на найденной вами странице говорилось об объемах оперативной памяти, которые вы можете купить в достаточно дешевых коробках определенной модели - у вас определенно может быть гораздо больше ОЗУ (все адресуемо, конечно) даже в коробках, которые далеко не очень дороги. ,

Операционные системы наиболее определенно могут и действительно ограничивают объем адресуемой памяти (например, они могут сделать это, ограничивая размер таблиц страниц, возможно, до некоторого настраиваемого максимума, который может быть установлен путем перекомпиляции или иным образом переконфигурирования ОС - это трудно быть более конкретным, не сосредотачиваясь на какой-то конкретной группе ОС).


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

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

3

Вы можете иметь столько оперативной памяти, сколько захотите, но все зависит от операционной системы и приложения, которое вы используете - как сказал кто-то другой.

Если вы используете голодное приложение с интенсивным использованием ЦП, которое также интенсивно работает на другом оборудовании, например, на вашем жестком диске, то вам лучше всего рассмотреть второй ЦП на совершенно отдельной машине. Например, запуск приложения базы данных и почтового сервера на разных компьютерах.

Неважно, сколько у вас памяти - на сегодняшнем рынке вся система остановится. Отдельные процессоры просто не могут справиться с многозадачностью так, как вы ожидаете.

Для одной машины с большим количеством памяти лучше, но не так здорово, если в одной системе работает несколько приложений, независимо от объема установленной памяти. Это та самая причина, по которой крупные компании используют не только 64-битную архитектуру для адресации большего объема памяти, но и баланс нагрузки с двумя или более серверами.

Если вы действительно серьезно относитесь к производительности, то, безусловно, перейдите на 64-разрядную версию, но также подумайте о балансировке нагрузки со вторым сервером.

Я шел по этому пути - настраивал одну машину с максимальной оперативной памятью. Тем не менее, при запуске нескольких приложений он по-прежнему работает как собака. Это потому, что сам процессор просто не может справиться с этим.

Мой совет - сохранить ваши деньги в памяти и купить второй сервер, а затем распределить нагрузку на них. Плюс к этому гораздо проще - как только вы освоите его - его легко расширять, когда вам требуется больше вычислительной мощности и скорости.

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

Поскольку весь рынок становится 64-битным с точки зрения как аппаратного, так и программного обеспечения, я бы посоветовал перейти на 64-битную в долгосрочном плане, но забудьте о том, что все на одном компьютере можно объединить с большим количеством памяти, потому что вы будете разочарованы.

Если вы не уверены, что такое «балансировка нагрузки», воспользуйтесь этим.


2

Я думаю, что это может занять больше, чем exabyte "EB".

Посмотрите, этот 32-разрядный процессор может занять 2 32 B = 4 ГБ, но самое большее - 3 ГБ, «потому что это 1 ГБ для обращенных адресов»

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


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

Я думаю, что вы имеете в виду exbibyte , а не exabyte .
Мартино

1

Если взять в качестве примера процессор Intel или AMD, существует несколько ограничений как для физической памяти, так и для виртуальной памяти. Другие люди говорили об аппаратной разводке и ограничениях материнской платы, но есть и внутренние ограничения.

Запись таблицы страниц терминала в MMU содержит 52 значащих бита физического адреса и теоретически может отображать до 4096 ТБ физической ОЗУ.

MMU реализует четырехуровневую таблицу страниц, верхний уровень которой состоит из 512 × 512 ГБ записей. Таким образом, виртуальная память ограничена 256 ТБ.

Насколько я знаю, все 64-битные операционные системы реализуют DMAP (direct-map), что очень удобно. Однако поскольку виртуальная память ограничена 256 ТБ, размер DMAP также ограничен. Обычно 128 ТБ зарезервировано для пользовательского режима и 128 ТБ для ядра. Из этих 128 ТБ для ядра до половины может быть зарезервировано для DMAP. Из-за полезности DMAP операционные системы обычно ограничивают физическую память тем, что может обрабатывать DMAP.

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

-

Внутренние по отношению к ЦП кэши ЦП также имеют ограничение на количество физических битов адреса, которые они хранят, поскольку каждый дополнительный бит адреса съедает больше транзисторов в тег кеша. Ограничения выводов контроллера DRAM не обязательно являются последним словом, поскольку память также может быть адресована через ссылки DMI.

Различные архитектуры ЦП (например, ARM, PowerPC и т. Д.) Будут иметь разные ограничения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.