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
Жесткий диск: Samsung HD753LJ 733 ГБ и Samsung HD160JJ 156 ГБ

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

7 ответов7

16

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

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 такой же. Затраты на драйвер и ОС в хорошо запрограммированной игре невелики, поэтому различия между драйверами и ОС вряд ли будут здесь показаны

6

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

Прежде всего, ситуация с видеопамятью. Вся память видеокарты не видна (по крайней мере, обычно) непосредственно в адресном пространстве процессора. Обычно у вас есть "окно" около 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 может выполнять две операции с плавающей запятой над двумя отдельными частями данных. Хотя это не обязательно удваивает скорость, это обычно улучшает скорость, по крайней мере, немного.

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

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

3

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

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

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

2

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

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

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

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

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, так как большее количество ОС может быть загружено в память и более эффективно обрабатываться процессором.

-1

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

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