Чому 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 ГБ х 2 = 4 ГБ DDR2 @ 332 МГц
Материнська плата : Intel D945GCNL
Графіка : ATI Radeon HD 4350 @ 1 ГБ Виділений
аудіо : M-Audio FastTrack Pro
Жорсткий диск : Samsung HD753LJ 733 ГБ та Samsung HD160JJ 156 Гб

Як бачите, моя система стара.


4
Для початку 64-розрядна Windows буде використовувати всю виділену оперативну пам’ять.

3
Чому тебе хвилює, що це швидше? ви повинні бути раді, що це так.
Метт H

@Randolph Я розумію, але як це впливає на речі x86? @Matt Ні, я радий, звичайно. Мені просто дуже цікаво. Я не можу за все життя зрозуміти, ЧОМУ це відбувається.
Джаспер

Ви багато в чому уявляєте цей ефект, тому що очікуєте його побачити. Швидкість відрізняється від ПК до ПК і навіть в межах одного ПК низкою факторів, які набагато більші, ніж крок від 32 до 64 біт. Будь-який щойно встановлений ПК здається швидшим, лише встановивши менше накопиченого шару.
JamesRyan

Відповіді:


8

Це спроба надати повну відповідь шляхом узагальнення бітів з окремих вже наявних відповідей з деяким доданим вмістом. Список намагається включити всі можливості для загальної справи, навіть якщо деякі можуть бути виключені для цього конкретного випадку.

Різниця набору інструкцій процесора

Як описав Joel Coehoorn , для рідного коду x64 доступний більший набір реєстрів, а також деякі додаткові інструкції (наприклад, всі процесори x64 гарантовано реалізують інструкції SSE та SSE2). Це означає, що рідна ОС 64 і драйвери можуть бути ефективнішими.

Краще використання оперативної пам’яті

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

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

Якщо у вас дві ОС встановлені на двох розділах одного і того ж диска, один із цих двох розділів закривається до зовнішнього краю, що, як правило, швидше .

Інший стан ОС

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

Кращі водії

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

64b адресація

Я додаю це лише заради повноти, оскільки для більшості повсякденних застосувань ця різниця не грає ніякої ролі, і це, безумовно, не має відношення до того, що Джаспер описує у своєму питанні.

Якщо у вас є додаток, який обробляє величезну кількість даних (наприклад, робота в Photoshop з величезними зображеннями), запуск 64b версії може змінити велику кількість, якщо у вас встановлено 4 Гб або більше оперативної пам’яті.

Що насправді означає "швидше"?

Ось список із коментаря до іншої відповіді , які саме "швидші речі" Джаспер може побачити:

  • windows анімація плавніша

Важко пояснити. Анімація Windows виконується графічним процесором у Windows 7, а GPU - тим самим. Навантаження на процесор незначна. (Я вважаю , ви які з допомогою Aero робочого столу).

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

Можуть бути краще налаштовані драйвери або драйвери, які користуються x64,.

  • файли копіюються набагато швидше

Може бути викликано швидшим розділом (зовсім не пов'язаним з ОС) або кращим керуванням кешем в x64 ОС.

  • Ігри не показали жодних змін.

Зрозуміло. Продуктивність ігор визначається процесором і графічним процесором. У разі обмеження процесора обмежувальним кодом є сама гра, яка є тим самим кодом x86 з невеликим взаємозв'язком з ОС x64. Отже, продуктивність процесора однакова. GPU - те саме. Накладні витрати на драйвери та ОС у добре запрограмованій грі низькі, тому тут, швидше за все, не відображатимуться різниці драйверів та ОС.


Я прокоментував свій досвід щодо відповіді GrandmasterB. Яким чином досвід може бути збігом з однаковими (кількістю) речей, встановлених (особливо, власними функціями Windows) на одній машині ДВАХ? Чи був Windows 7 якось більш оптимізованим для того, щоб він був x64? Чи постачальники обладнання більш уважно ставляться до своїх драйверів x64? Якщо і програми, і машина залишаються однаковими з постійною різницею, схоже, що деякі речі краще оптимізовані в один спосіб, ніж в інший.
Джаспер

Я не стверджую, що досвід є випадковим у вашому конкретному випадку. Однак для повного пояснення таку можливість слід розглянути в загальному випадку. Наприклад, внутрішній / зовнішній розділ - це те, що може суттєво змінити час завантаження, і це жодним чином не пов'язане з ОС 64b / 32b.
Сума

Я хотів би додати трохи інформації. Щоразу, коли я встановлював 7 (у цьому випадку перші дві установки x86 і останні два установки x64), я завжди свіжо встановлював її на одному диску, повністю стираючи попередню інсталяцію. Жодні подвійні чоботи не були залучені ні до чого. Лол. Так, я навіть залишив диски недоторканими.
Джаспер

Докладніше: я використовую Aero на моніторі 1080p. Також я завжди виконував швидкий формат замість повного формату.
Джаспер

"Я завжди свіжо встановлював його на одному диску, повністю стираючи попередню інсталяцію. Чудово знати, це виключає можливість" зовнішнього розділу швидше ", а також можливість стану ОС.
Сума

16

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


Власне, лише 3,25 Гбайт можна використовувати з 4 ГБ навіть у x64. Я очікував, що це буде виправлено з моїм оновленням з x86, але цього не сталося.
Джаспер

+1 для відеопам'яті, навіть не помітив, що у нього є відеокарта.
Суперсереальний

3
@Jasper: Не впевнений, чи правильно я ставлюся, але один з моїх комп'ютерів використовує весь 8 Гб оперативної пам’яті, який я встановив (Win 7 x64 Ultimate)
xbonez

Це справді єдине, що має для мене сенс. Усі інші речі однакові при запуску версій 32b і 64b однієї ОС в одній системі. Є лише дві відмінності: 1) розширений набір регістрів та наборів інструкцій 2) адресний простір 64b, що дозволяє звертатися до повних 4 ГБ або оперативної пам’яті та більше
Suma

Проте, для повноти, частина про 1 Гб картки, що приховує 1 ГБ оперативної пам’яті, безумовно, не відповідає дійсності, тому що кожен, хто має 4 ГБ оперативної пам’яті, 32b ОС та подібну карту, може легко засвідчити (див. Також мій коментар до відповіді Піта).
Сума

7

Попередження: це дещо складніше питання, ніж ви могли зрозуміти, і, звичайно, більше, ніж більшість відповідей. Щоб спробувати висвітлити хоча б трохи більше історії, ця публікація досить довга ...

Перш за все ситуація з відеопам'яттю. Повна пам'ять відеокарти не є (принаймні нормально) безпосередньо видимою в адресному просторі процесора. Зазвичай у вас є "вікно" близько 128-256 мегабайт відеопам'яті, видимого для процесора. Графічний процесор може зіставити різні частини своєї пам’яті у цьому вікні, тому типово ти можеш записати в більшість пам’яті GPU з процесора, але перед тим, як ти можеш це зробити, потрібно повідомити GPU до того, що ти збираєшся написати. Наприклад, коли ви використовуєте DirectX і хочете записати безпосередньо у графічну пам'ять, ви можете це зробити - але для цього ви почнете, зателефонувавши, LockRectщоб отримати GPU для відображення потрібної пам'яті у вікно (і як як тільки ти закінчиш, дзвонишUnlockRectщоб він міг зіставити іншу пам'ять за потребою). Принаймні у типовому випадку ви можете налаштувати розмір вікна відео в налаштуваннях BIOS.

По-друге, навіть у 32-бітному режимі процесори x86 підтримують те, що називається Physical Address Extensions (PAE), що дозволяє процесору звертатися до більш ніж 4 Gig. пам'яті. Microsoft підтримує PAE в деяких версіях Windows, але лише відносно дорогий Enterprise Edition 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 біт.

З вашої публікації незрозуміло, що ви маєте на увазі під «64bit швидше». Чи варто взяти з цього те, що ви знову встановили 64-бітну Windows на машині, на якій раніше була 32-бітова Windows? Якщо так, то «скидання» структури файлу може легко пояснити зміни швидкості. Нова установка, особливо якщо ви переформатуєтеся, часто чутливіша, ніж старіші, де файли роздроблені, простір на диску зменшується, реєстр стає захаращеним тощо.

Можливо, це також є одним із драйверів ... наприклад, новіші драйвери відео можуть бути швидшими та краще оптимізовані постачальником, ніж старі версії x86. Або драйвер жорсткого диска може перетворитись краще.


1
Чудова ідея. Знаючи більше, що насправді означає "швидше", може допомогти. Чи швидше завантажуються програми? Анімація вікна швидше? Чи мають ігри більш високі fps? Чи швидше копіюються файли? Цілком можливі всі пояснення тут, хоча цікаво зрозуміти різницю ОС 32b і 64b, насправді не мають значення для реальної різниці, яку описує Джаспер.
Сума

Добре, дозвольте дати вам чіткішу картину того, про що я говорю. Я мав деякий час Windows 7 x86 зі встановленим 100% необхідного програмного забезпечення та ігор. Я перевстановив ту саму систему на одній машині разом з тим самим обсягом програмного забезпечення та ігор, і це дало мені однаковий досвід. Я прибираю свої реєстри раз на день, фрагментую жорсткі диски кожні кілька днів, і завжди підтримую пристойну кількість вільного місця на кожному диску. У будь-якому випадку, після цього я двічі встановив Windows 7 x64, зі 100% необхідних речей, щоб знайти обидва останні досвіди однакові. [Продовжити]
Джаспер

Те, що відчувало себе краще - вікна, що анімують плавніше, файли копіюються набагато швидше, певні програми для редагування фотографій малюють швидше (як x86, так і x64), відео з більш високою швидкістю відео (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 екбібайт), що станом на 2011 рік вважається практично необмеженим.

Ця стаття , хоч і трохи датована, є дуже інформативним прочитанням про те, як працює 64-бітна обробка.

Хочу зазначити, що це насправді не означає збільшення продуктивності в 2 рази, це тому, що фактична продуктивність залежить від багатьох інших змінних (швидкість диска, швидкість шини, кеш-пам'ять процесора, наявна пам'ять тощо). Але ви повинні побачити підвищення продуктивності в Windows, оскільки більша частина ОС може завантажуватися в пам'ять і адресована процесором ефективніше.


13
"може обробити 64 біти (8 байт) даних за тактовий цикл", це може здатися розумним, але насправді це нісенітниця. Майже жоден обчислення не використовує 8 байт для нічого корисного. Що стосується трафіку пам'яті, то базовий процесор є однаковим, кеш і трафік пам'яті використовують один і той же BUS.
Сума

5
"оскільки більшість ОС можна знову завантажити в пам'ять", неправда. Це було б правдою, якби "більше ОС" було б понад 4 Гб. Адреса 64b взагалі не допомагає під час роботи з даними в 4 Гб.
Сума

6
@Kyle: прочитайте питання ще раз. Процесор такий самий, як і на одній машині. Йдеться про різницю поведінки ОС на одній машині, а не про різницю між двома машинами. і фій, я хотів би продовжувати аргументи. Кричати на людей ніколи нікому не допомагали. Плюс до цього, я - користувач комп’ютера, і це питання користувачів комп’ютера. То чому б мені не відповісти на це?
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 GPU, і у мене було 3,6 ГБ оперативної пам’яті. Питання про адресний простір досить складне: наприклад, кожен процес має 4 ГБ віртуального адресного простору. Водієві потрібно зіставити оперативну пам’ять GPU у віртуальний адресний простір, щоб вони могли отримати доступ до нього, але ОС не потребує перенесення пам’яті GPU у фізичну оперативну пам’ять.
Сума

@Suma, можливо, не всі VRAM не відображаються на фізичний баран. Але 32-бітні Windows XP, Vista та 7 не зможуть використовувати більше 4 Гб фізичного адресного простору. Деякі версії 32-бітових серверів Windows зможуть адресувати більше, проте використовуючи розширення фізичної адреси (хоча ви можете ввімкнути розширення фізичної адреси у 32-бітних вікнах робочого столу, вони все одно відмовляться адресувати більше 4 Гб фізичного адресного простору). Тож розмістіть 4 Гб оперативної пам’яті у 32-бітовому Windows 7, і ви не зможете цим усім користуватися. Віртуальний адресний простір для процесів не має нічого спільного з цим обмеженням
Піт,

"Але 32-бітні Windows XP, Vista та 7 не зможуть використовувати більше 4 Гб фізичного адресного простору." Так, це правда. Для більш докладного пояснення см codinghorror.com/blog/2007/03 / ... . Графічний процесор напевно з’їдає частину 4 Гб місця. Я хотів лише виправити поширене неправильне уявлення, що з'їдений адресний простір потребує доступу до оперативної пам’яті GPU, що насправді це не так. Опис у superuser.com/questions/242562/… є правильним у цьому відношенні.
Сума

-1

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


це неправильно, "досвід користувачів" з машиною x64 іноді буває досить поганим, оскільки на ньому працює майже 90% x86 додатків.
Франсіско Тапія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.