31

Если память адресуется в байтах, не должно ли это быть

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

Общий поиск Google говорит 8 ГБ или 16 ГБ макс.

Как это правда? Кроме того, как это зависит от операционной системы?

6 ответов6

50

Есть несколько факторов чередования.

Прежде всего, вы никогда не сможете собрать систему, которая имеет 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 имеют гораздо более высокие ограничения).

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 ТБ ОЗУ, хотя не все оборудование может это поддерживать.

8

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

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

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

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

Если взять в качестве примера процессор 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 и т.д.) Будут иметь разные ограничения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .