Примечание. Эти ответы относятся к стандартным процессорам ПК на базе x86 (Intel и AMD) и Windows (как правило, настраиваются для конечных пользователей). Другие 32-разрядные или 64-разрядные микросхемы, другие ОС и другие конфигурации ОС могут иметь различные компромиссы.
С технической точки зрения 64-битная ОС дает вам:
Позволяет отдельным процессам обращаться к более чем 4 ГБ ОЗУ каждый (на практике большинство, но не все 32-разрядные ОС также ограничивают общий объем используемой оперативной памяти системы менее 4 ГБ, а не только максимум для каждого приложения).
Все указатели занимают 8 байтов вместо 4 байтов. Влияние на использование ОЗУ минимально (поскольку маловероятно, что приложение будет заполнено гигабайтами указателей), но в худшем теоретическом случае это может сделать кэш-память ЦП способной удерживать в 1/2 раза больше указателей (делая это будет эффективно 1/2 размера). Для большинства приложений это не так уж важно.
В 64-битном режиме гораздо больше регистров ЦП общего назначения. Регистры являются самой быстрой памятью во всей вашей системе. В 32-битном режиме есть только 8 и 16 регистров общего назначения в 64-битном режиме. В написанных мной приложениях для научных вычислений я наблюдал повышение производительности до 30% за счет перекомпиляции в 64-битном режиме (мое приложение действительно могло использовать дополнительные регистры).
Большинство 32-разрядных ОС позволяют отдельным приложениям использовать только 2 ГБ ОЗУ, даже если у вас установлено 4 ГБ. Это связано с тем, что остальные 2 ГБ адресного пространства зарезервированы для обмена данными между приложениями, с ОС и для связи с драйверами. Windows и Linux позволят вам изменить этот компромисс до 3 ГБ для приложений и 1 ГБ для общего доступа, но это может вызвать проблемы для некоторых приложений, которые не ожидают изменений. Я также предполагаю, что это может нанести вред видеокарте с 1 ГБ ОЗУ (но я не уверен). 64-разрядная ОС может дать отдельным 32-разрядным приложениям более полные 4 ГБ для игры.
С точки зрения пользователя:
Скорость приложения обычно выше для 64-разрядного приложения в 64-разрядной ОС по сравнению с 32-разрядной версией приложения в 32-разрядной ОС, но большинство пользователей не увидят этого ускорения. Большинство приложений для обычных пользователей на самом деле не используют дополнительные регистры, или преимущества компенсируются большими указателями, заполняющими кэш.
Если у вас есть приложения для захвата памяти (например, фоторедакторы, обработка видео, научные вычисления и т. Д.), Если у вас есть (или вы можете купить) более 3 ГБ ОЗУ, и вы можете получить 64-разрядную версию приложения, Выбор прост: используйте 64-битную ОС.
Некоторое оборудование не имеет 64-битных драйверов. Проверьте свою материнскую плату, все подключаемые карты и все USB-устройства перед переключением. Обратите внимание, что на заре Windows Vista было много проблем с драйверами. В наши дни все в целом лучше.
Если вы одновременно запускаете так много приложений, что у вас заканчивается ОЗУ (обычно вы можете сказать это, потому что ваш компьютер начинает работать очень медленно и вы слышите хруст жесткого диска), тогда вам понадобится 64-разрядная ОС (и достаточно оперативной памяти).
Вы можете запускать 32-битные приложения (но не драйверы) в 64-битной Windows без проблем. Наихудшее замедление, которое я измерил для 32-разрядного приложения в 64-разрядной Windows, составляет около 5% (это означает, что если на выполнение 32-разрядной Windows потребовалось 60 секунд, потребуется не более 60 * 1,05 = 65 секунд с то же самое 32-битное приложение в 64-битной Windows).
Что 32-битный против 64-битный не означает:
В системах x86 32-битные и 64-битные напрямую относятся к размеру указателей. Это все.
Это не относится к размеру C
int
типа. Это зависит от конкретной реализации компилятора, и большинство популярных компиляторов выбирают 32-битныеint
в 64-битных системах.Он не имеет прямого отношения к размеру обычных регистров без указателей. Однако использование 64-битных арифметических регистров требует, чтобы приложение и ОС работали также в режиме 64-битных указателей.
Он не имеет прямого отношения к размеру шины физического адреса. Например, системе с 64-разрядными строками кэша и максимум 512 ГБ памяти требуется только 33 бита в ее адресной шине (т.е.
log2(512*1024**3) - log2(64) = 33
).Это не относится к размеру физической шины данных: это больше связано с производственными затратами (количеством контактов в сокете ЦП) и размерами линий кэша.