Почему на моем компьютере Windows 7 x64 работает быстрее, чем версия x86?

11

Почему Windows 7 x64 работает быстрее, чем x86-версия на моем ПК, хотя я в основном использую x86? Что со мной не так и чего мне не хватает?

Большинство вещей, которые я использую, - x86 (например, DAW, игры, медиаплееры). Однако значительная их часть - x64 (хотя их аналоги x86 работают просто отлично).

Я пытался использовать одни и те же вещи в одной и той же системе, но всегда получал, что Windows 7 x64 работает немного быстрее, чем x86. Я очень наблюдательный. Я даже замечаю мельчайшие оконные анимации.

Система : Windows 7 Ultimate x64
Процессор : Intel Core 2 Duo E7500 @ 2,93 ГГц
ОЗУ : 2 ГБ x 2 = 4 ГБ DDR2 @ 332 МГц
Материнская плата : Intel D945GCNL
Графика : ATI Radeon HD 4350 @ 1 ГБ Выделенное
аудио : M-Audio FastTrack Pro
HDD : Samsung HD753LJ 733 ГБ и Samsung HD160JJ 156 ГБ

Как видите, моя система старая.

Джаспер
источник
4
Для начала, 64-битная Windows будет использовать всю вашу выделенную оперативную память.
3
Почему тебя волнует, что это быстрее? Вы должны быть рады, что это так.
Мэтт H
@Randolph Я понимаю, но как это влияет на вещи x86? @ Мэтт Нет, я рад, конечно. Мне просто очень любопытно. Я не могу, по жизни, понять, ПОЧЕМУ это происходит.
Джаспер
Вы в значительной степени представляете этот эффект, потому что ожидаете увидеть его. Скорость отличается от ПК к ПК и даже внутри одного ПК по ряду факторов, которые гораздо более значительны, чем шаг от 32 до 64 бит. Любой недавно установленный ПК выглядит быстрее просто благодаря тому, что у него установлено меньше сборок.
JamesRyan

Ответы:

8

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

Разница набора команд процессора

Как описано Джоэлом Кехорном , для нативного кода x64 доступен больший набор регистров, а также некоторые дополнительные инструкции (например, гарантируется, что все процессоры x64 реализуют инструкции SSE и SSE2). Это означает, что родная операционная система x64 и драйверы могут быть более эффективными.

Лучшее использование оперативной памяти

64b может использовать полные 4 ГБ (и даже больше, когда доступно). Более того, некоторые внутренние ограничения ОС (выгружаемый / невыгружаемый пул, максимальный размер кэша) увеличиваются в 64-битной ОС . В результате как подкачка памяти, так и кеширование файлов могут быть более эффективными.

Различная позиция жесткого диска

Если на двух разделах одного и того же диска установлены две ОС, один из этих двух разделов закрывается по внешнему краю, что обычно быстрее .

Разное состояние ОС

Когда у вас есть две ОС, каждая из них может быть в несколько другом состоянии. Один из них может быть более фрагментированным, чем другой, у одного из них может быть немного более чистый реестр или меньше установленных служб или фоновых приложений, чем у другого.

Лучше водителей

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

Адресация 64b

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

Если у вас есть приложение, которое обрабатывает огромные объемы данных (например, работа в Photoshop с огромными изображениями), использование 64-битной версии может иметь огромное значение, если у вас установлено 4 ГБ или более ОЗУ.

Что на самом деле означает «быстрее»?

Вот список из комментария к другому ответу , какие именно «быстрые вещи» Джаспер может видеть:

  • анимация окон более гладкая

Сложно объяснить. Анимация Windows выполняется графическим процессором в Windows 7, и графический процессор такой же. Нагрузка на процессор незначительна. (Я полагаю , вы которые с помощью Aero рабочего стола).

  • некоторые программы для редактирования фотографий рисуют быстрее (как x86, так и x64)
  • HD-видео работает более плавно (на MPC-HC x64) и в целом более стабильно.

Могут быть лучше настроенные драйверы или драйверы, использующие преимущества x64.

  • файлы копируются намного быстрее

Может быть вызвано более быстрым разделом (вообще не связанным с ОС) или лучшей обработкой кэша в ОС x64.

  • Игры не показали никаких изменений.

Понятный. Производительность игр определяется процессором и графическим процессором. В случае ограничения процессора ограничивающим кодом является сама игра, то есть тот же код x86 с небольшим взаимодействием с x64 OS. Следовательно, производительность процессора одинакова. GPU такой же. Затраты на драйвер и ОС в хорошо запрограммированной игре невелики, поэтому различия между драйверами и ОС вряд ли здесь проявятся.

Suma
источник
Я прокомментировал мой опыт ответа GrandmasterB. Как опыт может совпадать с тем же (количеством) вещей, установленных (особенно с собственными функциями Windows) на одной машине ДВАЖДЫ? Была ли Windows 7 как-то более оптимизирована для того, чтобы быть x64? Производители оборудования более осторожны относительно своих драйверов x64? Если и программы, и машина остаются неизменными с постоянной разницей, кажется, что некоторые вещи лучше оптимизированы для одного способа, чем для другого.
Джаспер
Я не утверждаю, что опыт является случайным в вашем конкретном случае. Однако для полного объяснения такую ​​возможность следует рассмотреть в общем случае. Например, внутренний / внешний раздел может существенно повлиять на время загрузки и никак не связан с 64-битной / 32-битной ОС.
Сума
Я хотел бы добавить немного информации, хотя. Каждый раз, когда я устанавливал 7 (в данном случае первые две установки x86 и последние две установки x64), я всегда заново устанавливал его на тот же диск, полностью стирая предыдущую установку. Никакие двойные ботинки не были вовлечены вообще. Лол. Да, я даже оставил диски нетронутыми.
Джаспер
Более того: я использую Aero на мониторе 1080p. Кроме того, я всегда выполнял быстрый формат вместо полного формата.
Джаспер
«Я всегда заново устанавливал его на один и тот же диск, полностью стирая предыдущую установку». Интересно знать, это исключает возможность «ускорения внешнего раздела», а также возможность состояния ОС.
Сума
16

Переход с 32 на 64 бита - не единственное изменение в архитектуре x64. x64 также добавляет больше регистров процессора и новые инструкции процессора. Операционная система, которая знает, как использовать эти преимущества, может получить незначительное повышение производительности на том же оборудовании. Да, и получение 1 ГБ оперативной памяти, которая раньше была адресована вашей видеокарте, также не повредит.

Джоэл Коухорн
источник
На самом деле из 4 ГБ даже в x64 можно использовать только 3,25 ГБ. Я ожидал, что это будет исправлено с моим обновлением с x86, но это не так.
Джаспер
+1 за видеопамять, даже не заметил у него видеокарту.
Supercereal
3
@Jasper: Не уверен, правильно ли я вас понимаю, но один из моих компьютеров использует все 8 ГБ ОЗУ, который я установил (Win 7 x64 Ultimate)
xbonez
Это действительно единственная вещь, которая имеет смысл для меня. Все остальные вещи одинаковы при запуске 32-разрядных и 64-разрядных выпусков одной и той же ОС в одной системе. Есть только два отличия: 1) расширенный набор регистров и инструкций 2) адресное пространство 64b, позволяющее полностью заполнить 4 ГБ или ОЗУ и более
Suma
Тем не менее, для полноты картины, часть о 1 ГБ карте, скрывающей 1 ГБ ОЗУ, определенно не соответствует действительности, поскольку любой человек с 4 ГБ ОЗУ, 32-битной ОС и такой картой может легко засвидетельствовать это (см. Также мой комментарий к ответу Пита).
Сума
7

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

Прежде всего, ситуация с видеопамятью. Вся память видеокарты не видна (по крайней мере, обычно) непосредственно в адресном пространстве процессора. Обычно у вас есть «окно» около 128-256 мегабайт видеопамяти, видимой для процессора. Графический процессор может отображать различные части своей памяти в это окно, так что вы обычно можете записывать большую часть памяти графического процессора из ЦП, но вам нужно заранее сообщить графическому процессору, что вы собираетесь записывать, прежде чем вы сможете это сделать. Например, когда вы используете DirectX и хотите писать напрямую в графическую память, вы можете сделать это, но чтобы сделать это, вы начинаете с вызова LockRectграфического процессора, чтобы отобразить правильную память в окне (и как как только вы закончите, вы звонитеUnlockRectпоэтому он может отображать другую память по мере необходимости). По крайней мере, в типичном случае вы можете настроить размер видео окна в настройках BIOS.

Во-вторых, даже в 32-разрядном режиме процессоры x86 поддерживают так называемые расширения физических адресов (PAE), что позволяет процессору обрабатывать более 4 гигабайт. памяти. Microsoft поддерживает PAE в некоторых версиях Windows, но только в относительно дорогой версии Enterprise Server Windows Server. Кроме того, программа должна быть написана специально для использования AWE. Есть только несколько программ (например, SQL Server Enterprise Edition), которые когда-либо делали это. Итог: это возможно, но довольно редко.

Что касается одновременного чтения 64 бит: последним процессором, считывающим данные только 32 бита, был 486. Начиная с Pentium, все процессоры имели 64-битные шины данных. Обратите внимание, что адресная шина не совпадает с шиной данных, поэтому расширение до 64-битной шины данных не позволило процессору работать с большим объемом памяти (хотя, как это бывает, PAE был добавлен в Pentium Pro, поэтому был почти одновременно с расширением до 64-битной шины данных).

Несмотря на то, что Pentium мог считывать 64 бита данных за один такт, он внутренне (в основном) обрабатывал данные 32 бита за раз. Более широкая шина в первую очередь помогла компенсировать разницу в скорости между процессором и основной памятью. MMX-инструкции Pentium MMX поддерживали обработку данных в 64-битных блоках, но использовать их было довольно неуклюже, и (в частности) большинство компиляторов не генерировали MMX-код, поэтому вам пришлось писать на ассемблере, чтобы использовать его. , Pentium также поддерживает 64-битные (и 80-битные) операции для чисел с плавающей запятой, но это используется только для довольно небольшого меньшинства большинства программ (и в целом медленнее, чем работа с целыми числами).

Дизайн x86-64 имеет в два раза больше регистров общего назначения, чем 32-битный дизайн x86, и каждый из этих регистров имеет ширину 64 бита. Однако, когда ЦП работает в 32-разрядном режиме, можно использовать только подмножество регистров, которые существовали на 32-разрядных ЦП.

Возвращаясь к моменту с плавающей запятой, в 32-битном режиме математика с плавающей запятой выполняется с использованием набора инструкций, изначально разработанного для математического сопроцессора Intel 8087. При этом используется модель, которая затрудняет полное использование ее возможностей. Intel (и AMD) недавно добавили «Потоковые SIMD-расширения», или SSE. Большинство 64-битных компиляторов генерируют код, который может использовать SSE вместо 8087-совместимой плавающей запятой. «SIMD» в SSE означает «одна инструкция, несколько данных». Это означает, что одна инструкция SSE может выполнять две операции с плавающей запятой над двумя отдельными частями данных. Хотя это не обязательно удваивает скорость, это обычно улучшает скорость, по крайней мере, немного.

Наконец, я, вероятно, должен отметить, что есть одна часть сравнения, которая обычно немного несправедлива. Когда вы устанавливаете новую ОС, она почти всегда, по крайней мере, немного быстрее, чем ОС, которая использовалась довольно долгое время. Программы хранят данные в реестре, на жестком диске и т. Д. Чем больше данных вы добавляете, тем больше работы требуется для поиска нужных вам данных в любой момент времени. Хотя компании, продающие «очистители реестра» и тому подобное, часто преувеличивают этот эффект, в любом случае это правда. Таким образом, если все, что вы сделали, это переформатировали жесткий диск и переустановили точно такую ​​же ОС, вы могли бы ожидать некоторого улучшения скорости - и если у вас установлена ​​старая ОС и она интенсивно использовалась в течение длительного времени , что улучшение (само собой) можетбыть довольно существенным. По крайней мере, часть улучшения скорости, которое вы видите, может не зависеть от реальной разницы между двумя ОС.

Конечно, есть нечто большее, но вы начинаете понимать это. Дело не столько в том, что одна особенность имеет огромное значение, сколько во многих функциях, которые обычно имеют довольно небольшие отличия по отдельности, но многие из них складываются (или даже умножаются) вместе, чтобы получить довольно существенную разницу в целом.

Джерри Гроб
источник
Это очень хорошее объяснение. Важно знать, что многие 32-битные двоичные файлы предназначены для работы под многими версиями Windows, включая XP и, возможно, ранее. Они должны работать на i386 или, по крайней мере, на i586. AMD64 не нуждается в поддержке чего-либо меньшего, чем Pentium 4. Конечно, если с открытым исходным кодом вы можете перекомпилировать, есть степени SSE, что является одной из причин, по которой Silverlight так плохо работает.
mckenzm
4

Это может не иметь ничего общего с 32 против 64 бит.

Из вашего поста неясно, что вы подразумеваете под «64-битной скоростью». Должны ли мы исходить из того, что вы переустановили 64-разрядную версию Windows на компьютере, на котором ранее была установлена ​​32-разрядная версия Windows? Если это так, то «сброс» структуры файла может легко объяснить изменения скорости. Новая установка, особенно если вы переформатировали, часто более отзывчива, чем старая установка, где файлы фрагментированы, дисковое пространство заканчивается, реестр перегружен и т. Д.

Это также может быть один из драйверов ... например, новые драйверы видео могут быть быстрее и лучше оптимизированы производителем, чем старые версии x86. Или драйвер жесткого диска может быть лучше.

GrandmasterB
источник
1
Отличная идея. Знание большего, что на самом деле означает «быстрее», может помочь. Приложения загружаются быстрее? Окно анимируется быстрее? У игр выше фпс? Файлы копируются быстрее? Вполне возможно, что все объяснения здесь, хотя интересно понять разницу между 32-битной и 64-битной ОС, на самом деле не имеют отношения к реальной разнице, описанной Джаспером.
Suma
Хорошо, позвольте мне дать вам более ясную картину того, о чем я говорю. Некоторое время у меня была Windows 7 x86 со 100% необходимого программного обеспечения и игр. Я переустанавливал ту же систему на той же машине вместе с тем же количеством программного обеспечения и игр, и это дало мне идентичный опыт. Я очищаю свои реестры один раз в день, разбиваю жесткие диски каждые несколько дней и всегда поддерживаю приличное количество свободного места на каждом диске. Как бы то ни было, после этого я дважды установил Windows 7 x64 со 100% необходимыми мне вещами только для того, чтобы оба последних опыта были идентичными. [Продолжить]
Джаспер
Вещи, которые стали лучше: анимация окон более плавная, файлы копируются намного быстрее, некоторые программы для редактирования фотографий рисуются быстрее (как x86, так и x64), HD-видео работает более плавно (на MPC-HC x64), и в целом более стабильный процесс. Игры не показали никаких изменений.
Джаспер
Вы видите, это мелочи. Но я не понимаю, ПОЧЕМУ происходят такие мелочи, которые породили этот вопрос. =) Я бы не стал беспокоиться, если бы у меня было 4+ ГБ оперативной памяти. Я бы сказал, что Windows 7 x64 способна справиться с этим, но здесь дело обстоит не так, что делает его немного более сложным.
Джаспер
2

Проще говоря, это потому, что ваш компьютер может обрабатывать 64 бит (8 байтов) данных за такт. Ваш процессор получает данные в виде заранее установленных битов, известных как слова. Слова в архитектуре x64 в два раза больше слов в архитектуре x86. Хотя ваш процессор может на самом деле не обрабатывать данные быстрее (ваш Core 2 имеет частоту 2,93 ГГц на обеих установках), он обрабатывает данные более эффективно. Кроме того, как уже упоминалось в комментариях, это позволит вам обращаться ко всей вашей оперативной памяти, поскольку ваш процессор читает из нее 64-битные слова. Из Википедии :

Очень часто, ссылаясь на размер слова современного компьютера, также описывают размер адресного пространства на этом компьютере. Например, компьютер, который называется «32-разрядным», также обычно допускает 32-разрядные адреса памяти; Адресно-байтовый 32-разрядный компьютер может адресовать 2 ^ 32 = 4 294 967 296 байт памяти или 4 гигабайта (ГБ). Это кажется логичным и полезным, поскольку позволяет эффективно хранить один адрес памяти в одном слове.

Для 64-битных процессоров это число не кратно 2, оно увеличивается экспоненциально:

Современный 64-разрядный компьютер с адресацией в байтах - при надлежащей поддержке ОС может адресовать 2 ^ 64 байта (или 16 exbibytes), что по состоянию на 2011 год считается практически неограниченным.

Эта статья , хотя и немного устаревшая, является очень информативным прочтением о том, как работает 64-битная обработка.

Я хочу отметить, что это на самом деле не приводит к увеличению производительности в 2 раза, потому что фактическая производительность зависит от многих других переменных (скорость диска, скорость шины, кэш-память процессора, доступная память и т. Д.). Но вы должны увидеть увеличение производительности в Windows, поскольку большее количество ОС может быть загружено в память и более эффективно обрабатываться процессором.

Supercereal
источник
13
«может обрабатывать 64 бита (8 байтов) данных за такт», это может показаться разумным, но на самом деле это чепуха. Почти никакие вычисления не используют 8 байтов для чего-либо полезного. Что касается трафика памяти, базовый процессор одинаков, кеш и трафик памяти используют одну и ту же шину.
Сума
5
«поскольку больше ОС может быть загружено в память», опять же, это не так. Это было бы верно, если бы «больше ОС» было бы больше 4 ГБ. Адресация 64b совсем не помогает при работе с данными менее 4 ГБ.
Сума
6
@ Кайл: прочитайте вопрос еще раз. Процессор такой же, как и на той же машине. Речь идет о разнице в поведении ОС на одной машине, а не о разнице между двумя машинами. и к вашему сведению, я бы хотел придерживаться этого аргумента. Кричать на людей никогда не помогал никому. Плюс, я пользователь компьютера, и это вопрос пользователя компьютера. Так почему бы мне не ответить на это?
Joris Meys
6
Вы не можете ответить на публичном форуме без достаточно толстой кожи, чтобы принять некоторые комки. Вы также должны уметь справляться с педантичной природой компьютерных ботаников, выбирая каждую деталь вопроса и ответа. Не тяните свои удары, но убедитесь, что вы хорошо продумали сообщения. внесите исправления, если вы доказали свою неправоту, и отстаивайте свои позиции, когда вы правы.
WernerCD
6
Часть о том, что «больше операционной системы может быть загружено в память и обрабатывается процессором более эффективно», является полной фигней. Мой Win7 использует около 500 МБ оперативной памяти, что намного ниже предела 4 ГБ, который ограничен 32-разрядными процессорами. Адресация, во всяком случае, менее эффективна, так как указатели в два раза больше в памяти и используют больше кеша ценных данных. Реальный выигрыш в производительности достигается за счет большего набора регистров; работа с данными в кеше L1 - 3 такта, работа с данными в регистре - 1 такт.
zvrba
2

Я думаю, что самая глубокая причина, по которой система быстрее использует 64-битную ОС, заключается в том, что 32-битная ОС не способна использовать всю оперативную память в системе.

32-битная ОС сможет контролировать 32 бита, то есть 4 ГБ физического адресного пространства. Это адресное пространство включает в себя системную память, видеопамять, устройства ввода-вывода и т. Д. Таким образом, если у вас есть выделенная видеопамять объемом 1 ГБ, вы можете вычесть первые ГБ из доступной памяти. Тогда другие устройства, вероятно, вычтут еще 200 МБ или около того.

Это оставляет вам только 2,8 ГБ оперативной памяти для приложений. Не много на Windows 7;)

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

Пит
источник
«Поэтому, когда у вас есть 1 ГБ выделенного видеопамяти, вы можете вычесть первые ГБ из имеющегося в наличии оперативной памяти». Мне жаль, что я здесь такая неприятность, но это не похоже на правду. У меня была система WinXP с 4 ГБ ОЗУ и 1 ГБ выделенного графического процессора VRAM, и у меня было 3,6 ГБ ОЗУ для системы. Вопрос об адресном пространстве довольно сложен: например, каждый процесс имеет 4 ГБ виртуального адресного пространства. Драйверу необходимо отобразить ОЗУ графического процессора в виртуальное адресное пространство, чтобы они могли получить к нему доступ, но ОС не требуется отображать ОЗУ графического процессора в физическое ОЗУ.
Сума
@Suma тогда, возможно, не все VRAM не сопоставлены с физическим ОЗУ. Но 32-битные Windows XP, Vista и 7 не смогут использовать более 4 ГБ физического адресного пространства. Некоторые версии Windows на 32-битных серверах смогут адресовать больше, однако используя физические адреса (хотя вы можете включить физические адреса в 32-битных операционных системах Windows, он все равно откажется адресовать более 4 ГБ физического адресного пространства). Поэтому поместите 4 ГБ ОЗУ в 32-битную Windows 7, и вы не сможете использовать все это. Виртуальное адресное пространство для процессов не имеет ничего общего с этим ограничением
Пит
«Но 32-битные Windows XP, Vista и 7 не смогут использовать более 4 ГБ физического адресного пространства». Да, это правда. Для подробного объяснения см. Codinghorror.com/blog/2007/03/… . Графический процессор определенно съедает часть 4 ГБ пространства. Я только хотел исправить распространенное заблуждение, что потребляемое адресное пространство - это необходимость доступа к ОЗУ графического процессора, чего на самом деле нет. Описание в superuser.com/questions/242562/… является правильным в этом отношении.
Сума
-1

Я установил 32-разрядную и 64-разрядную версии на два одинаковых ноутбука Lenovo x100e. 32-разрядный имел оперативную память 2G, а 64-разрядную - оперативную память 4G, и 32-разрядная система по-прежнему работала быстрее, плавнее, более отзывчиво с гораздо меньшей задержкой, чем 64-разрядная, которая была отложенной и вялой. Процессор представляет собой 64-битный процессор. Установлены одинаковые драйверы и обновлены окна на обоих. Я думаю, что 64-разрядная версия предназначена для компьютеров высшего класса, а не для начального уровня даже с процессорами x64.

Чарльз
источник
это неправильно, «пользовательский опыт» с x64-машиной иногда довольно плохой, так как на нем запущено почти 90% x86-приложений.
Франциско Тапиа