Почему 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 ГБ
Как видите, моя система старая.
Ответы:
Это попытка дать полный ответ путем суммирования битов из отдельных уже существующих ответов с некоторым дополнительным содержанием. Список пытается включить все возможности для общего случая, даже если некоторые могут быть исключены для этого конкретного случая.
Разница набора команд процессора
Как описано Джоэлом Кехорном , для нативного кода x64 доступен больший набор регистров, а также некоторые дополнительные инструкции (например, гарантируется, что все процессоры x64 реализуют инструкции SSE и SSE2). Это означает, что родная операционная система x64 и драйверы могут быть более эффективными.
Лучшее использование оперативной памяти
64b может использовать полные 4 ГБ (и даже больше, когда доступно). Более того, некоторые внутренние ограничения ОС (выгружаемый / невыгружаемый пул, максимальный размер кэша) увеличиваются в 64-битной ОС . В результате как подкачка памяти, так и кеширование файлов могут быть более эффективными.
Различная позиция жесткого диска
Если на двух разделах одного и того же диска установлены две ОС, один из этих двух разделов закрывается по внешнему краю, что обычно быстрее .
Разное состояние ОС
Когда у вас есть две ОС, каждая из них может быть в несколько другом состоянии. Один из них может быть более фрагментированным, чем другой, у одного из них может быть немного более чистый реестр или меньше установленных служб или фоновых приложений, чем у другого.
Лучше водителей
Другая возможность заключается в том, что драйверы для x64 могут быть более качественными, чем x86, не из-за некоторых фундаментальных различий в архитектуре, а просто потому, что их поставщик приложил больше усилий для их оптимизации и точной настройки.
Адресация 64b
Я добавляю это только для полноты картины, поскольку в подавляющем большинстве повседневных приложений это различие не играет роли, и оно определенно не имеет отношения к тому, что Джаспер описывает в своем вопросе.
Если у вас есть приложение, которое обрабатывает огромные объемы данных (например, работа в Photoshop с огромными изображениями), использование 64-битной версии может иметь огромное значение, если у вас установлено 4 ГБ или более ОЗУ.
Что на самом деле означает «быстрее»?
Вот список из комментария к другому ответу , какие именно «быстрые вещи» Джаспер может видеть:
Сложно объяснить. Анимация Windows выполняется графическим процессором в Windows 7, и графический процессор такой же. Нагрузка на процессор незначительна. (Я полагаю , вы которые с помощью Aero рабочего стола).
Могут быть лучше настроенные драйверы или драйверы, использующие преимущества x64.
Может быть вызвано более быстрым разделом (вообще не связанным с ОС) или лучшей обработкой кэша в ОС x64.
Понятный. Производительность игр определяется процессором и графическим процессором. В случае ограничения процессора ограничивающим кодом является сама игра, то есть тот же код x86 с небольшим взаимодействием с x64 OS. Следовательно, производительность процессора одинакова. GPU такой же. Затраты на драйвер и ОС в хорошо запрограммированной игре невелики, поэтому различия между драйверами и ОС вряд ли здесь проявятся.
источник
Переход с 32 на 64 бита - не единственное изменение в архитектуре x64. x64 также добавляет больше регистров процессора и новые инструкции процессора. Операционная система, которая знает, как использовать эти преимущества, может получить незначительное повышение производительности на том же оборудовании. Да, и получение 1 ГБ оперативной памяти, которая раньше была адресована вашей видеокарте, также не повредит.
источник
Предупреждение: это немного более сложный вопрос, чем вы, возможно, поняли, и, конечно, больше, чем большинство ответов изобразили. Чтобы попытаться раскрыть хотя бы немного больше истории, этот пост довольно длинный ...
Прежде всего, ситуация с видеопамятью. Вся память видеокарты не видна (по крайней мере, обычно) непосредственно в адресном пространстве процессора. Обычно у вас есть «окно» около 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 против 64 бит.
Из вашего поста неясно, что вы подразумеваете под «64-битной скоростью». Должны ли мы исходить из того, что вы переустановили 64-разрядную версию Windows на компьютере, на котором ранее была установлена 32-разрядная версия Windows? Если это так, то «сброс» структуры файла может легко объяснить изменения скорости. Новая установка, особенно если вы переформатировали, часто более отзывчива, чем старая установка, где файлы фрагментированы, дисковое пространство заканчивается, реестр перегружен и т. Д.
Это также может быть один из драйверов ... например, новые драйверы видео могут быть быстрее и лучше оптимизированы производителем, чем старые версии x86. Или драйвер жесткого диска может быть лучше.
источник
Проще говоря, это потому, что ваш компьютер может обрабатывать 64 бит (8 байтов) данных за такт. Ваш процессор получает данные в виде заранее установленных битов, известных как слова. Слова в архитектуре x64 в два раза больше слов в архитектуре x86. Хотя ваш процессор может на самом деле не обрабатывать данные быстрее (ваш Core 2 имеет частоту 2,93 ГГц на обеих установках), он обрабатывает данные более эффективно. Кроме того, как уже упоминалось в комментариях, это позволит вам обращаться ко всей вашей оперативной памяти, поскольку ваш процессор читает из нее 64-битные слова. Из Википедии :
Для 64-битных процессоров это число не кратно 2, оно увеличивается экспоненциально:
Эта статья , хотя и немного устаревшая, является очень информативным прочтением о том, как работает 64-битная обработка.
Я хочу отметить, что это на самом деле не приводит к увеличению производительности в 2 раза, потому что фактическая производительность зависит от многих других переменных (скорость диска, скорость шины, кэш-память процессора, доступная память и т. Д.). Но вы должны увидеть увеличение производительности в Windows, поскольку большее количество ОС может быть загружено в память и более эффективно обрабатываться процессором.
источник
Я думаю, что самая глубокая причина, по которой система быстрее использует 64-битную ОС, заключается в том, что 32-битная ОС не способна использовать всю оперативную память в системе.
32-битная ОС сможет контролировать 32 бита, то есть 4 ГБ физического адресного пространства. Это адресное пространство включает в себя системную память, видеопамять, устройства ввода-вывода и т. Д. Таким образом, если у вас есть выделенная видеопамять объемом 1 ГБ, вы можете вычесть первые ГБ из доступной памяти. Тогда другие устройства, вероятно, вычтут еще 200 МБ или около того.
Это оставляет вам только 2,8 ГБ оперативной памяти для приложений. Не много на Windows 7;)
64-битная ОС, с другой стороны, способна использовать всю вашу оперативную память.
источник
Я установил 32-разрядную и 64-разрядную версии на два одинаковых ноутбука Lenovo x100e. 32-разрядный имел оперативную память 2G, а 64-разрядную - оперативную память 4G, и 32-разрядная система по-прежнему работала быстрее, плавнее, более отзывчиво с гораздо меньшей задержкой, чем 64-разрядная, которая была отложенной и вялой. Процессор представляет собой 64-битный процессор. Установлены одинаковые драйверы и обновлены окна на обоих. Я думаю, что 64-разрядная версия предназначена для компьютеров высшего класса, а не для начального уровня даже с процессорами x64.
источник