32 битная программа 64 системе. Windows XP x64: обещания и реальность. Как определить разрядность установленной на компьютере операционной системы

Перед тем, как сравнивать 32-битную и 64-битную редакции Windows следует понять, что представляют из себя эти редакции, и какого их значение. Сначала расскажем о процессорах. Многие, возможно слышали о существовании 32-битных и 64-битных процессоров. Рассмотрим, что же означают эти биты.

Наверное не стоит говорить о том, что процессор – это достаточно сложное устройство. Он состоит из множества разных блоков, среди которых и кэш-память, и разные уровни, и блоки выбора и декодирования команд, блоки предсказывающие переходы, разные типы вычислительных блоков. В некоторых современных процессорах также имеются контроллеры памяти, контроллер шины PCI-Express и графическое ядро. В этой статье для нас важны вычислительные блоки.

Процессор может иметь разные типы таких блоков. Одни производят вычисления с целыми числами, другие — операции с вещественными числами или числами с плавающей запятой. Кроме того существуют блоки для т.н. сложных инструкций. В качестве примера рассмотрим блоки выполняющие вычисления с целыми числами или ALU. Во время работы эти блоки где-то должны хранить промежуточные данные. Для этих временных хранилищ были созданы регистры. От обычной памяти и кеш памяти их отличают прежде всего минимальные задержки и очень высокая скорость работы. Так вот эти самые регистры и скрывают главное отличие т.н. 32-битных и 64-битных процессоров. Рассмотрим это более подробно.

Так называемые 32-битные процессоры имеют 8 регистров общего назначения, объем которых составляет 32 бита. А 64-битные процессоры имеют в двое больше таких регистров, а объем их составляет 64 бита. Вот это и есть основное различие между 32-битными и 64-битными процессорами. Стоит сказать о том, что почти все современные процессоры являются 64-битными.

А теперь расскажем о том, для чего на практике нужны эти регистры. Если сказать обобщенно, то процессор на 64-бит в нормальном 64-битном режиме сможет работать с 64-битными числами не используя какие-либо ухищрения, как например, разбивку одной сложной операции на две. Кроме того таким образом могут быть объединены 2 простые операции над 32-битными числами в 1 сложную. Тем не менее не каждую операцию можно объединить с другой, но и это не мало.

Важно: производительность можно увеличить лишь работая с 64-битным наборам инструкций х86-64. Также следует сказать о том, что помимо блока вычислений с целыми числами ALU, процессор также имеет блок вычислений чисел с плавающей точкой или FPU. В нем содержатся более объемные 80-битные регистры и используются инструкции х87. Помимо этого процессор имеет другие блоки и регистры. Например, SSE-регистры. Их длина составляет 128 бит.

Мы помним о том, что есть 64-битный режим работы. Но есть и другие. 64-битный процессор имеет поддержку и так называемого режима совместимости, в котором дополнительные восемь регистров выключаются и поведение 64-хбитного процессора становится таким же как 32-битного. Это требуется прежде всего для того, чтобы обеспечить совместимость системного ПО и программ, не умеющих работать с 64-битным процессором. Почему он собственно и назван режимом совместимости.

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

Важно: некоторые читатели могут вполне справедливо спросить о том, как 32-битные программы смогут работать в 64-битной ОС. Эту проблему удалось решить вполне логично: система имеет 2 набора системных библиотек для 64-битных и 32-битных приложений.

Но у разрядности регистров есть и более актуальная проблема. Дело в том, что ограничено адресное пространство для памяти. А попросту говоря, процессор способен адресовать лишь 4 Гб адресного пространства. Так ведь ноутбук и имеет 4Гб оперативной памяти, и системе должно быть видно все эти 4Гб. Но помимо оперативной памяти, есть и память видеокарты, буферы разных устройств и BIOS может для этого же видеоядра выделить еще какую-то память. В результате память, которая была доступна пользователю уменьшится 2.5 — 3.5 Гб. И это ограничение не зависит от операционной системы. Перейдем к более детальному рассмотрению этой проблемы.

Тут нет ничего сложного. Регистры хранят как данные, так и указатели адресов. В 32-битном процессоре объем этого регистра составляет 32 бита. Вот откуда появилось это ограничение в 4 Гб или 232 байт.

Подводя итог всего изложенного выше, стоит сказать, что любая 32-битная ОС не может работать используя все 4 Гб ОЗУ по той причине, что большинству системных устройств для работы требуется часть адресного пространства, а оно ограничено 4Гб. Поэтому системе приходится отбирать его у оперативной памяти. Неиспользованная оперативная память может быть использована в качестве временного диска, для этого потребуется утилита RAM Disk.

Важно: для 32-битных ОС создан механизм, позволяющий использовать адресное пространство более 4Гб. Это т.н. PAE (Physical Address Extension), в этом случае ОС может адресовать до 64 Гб памяти. Эту технологию с самого начала разрабатывали для серверных систем. Для того, чтобы она могла нормально работать требуются соответствующие исправленные драйвера. Так как таких рабочих драйверов почти нет, то эта технология даже на серверных ОС по умолчанию отключена. В обычных редакциях ОС Windows она также была отключена по умолчанию. И по той же причине. Сегодня есть специалисты, которые научились ее включать, система может видеть всю оперативную память, которая доступна ей, но происходят ошибки в самых разных местах. А их диагностика не так проста. Поэтому если вы хотите использовать более 3 — 4 Гб ОЗУ, то вам нужно установить 64-битную ОС.

Как можно видеть, в 64-битном режиме работы имеются следующие преимущества и недостатки:

  • 64-битная ОС работает со всем объемом ОЗУ;
  • Некоторые из операций на 64-битном процессоре могут быть выполнены намного быстрее;
  • Для 64-битных указателей требуется больше памяти, что делает объем занимаемой приложениями ОЗУ больше.

Как видите, не все так однозначно. Рассмотрим теперь как же это проявляется на практике.

Сравнение производительности 32-bit и 64-bit версий Windows

Сначала расскажем о том какая методика тестирования использовалась.

Измерения были проведены на ноутбуке Asus N61Vn имеющим четырехьядерный процессор Intel Core 2 Quad Q9000, использовалась видеокарта nVidia GeForce GT 240M с 1 Гб выделенной памяти. Важно заметить, что ноутбук имел 4 Гб ОЗУ DDR3-1066. При сравнении были использованы 32- и 64-битные версии Windows Vista SP2 с установленными последними обновлениями. Драйвера имели одинаковые версии, что позволило нивелировать разницу в производительности между различными версиями. По указанным выше причинам 32-битная версия Windows имела приблизительно 3Гб доступной оперативной памяти, а 64-битная редакция — примерно 4 Гб.

Важно также заметить то, что этот тест был проведен на Windows XP и Windows 7 на ноутбуке Acer Timeline 3810T с одноядерным процессором Intel Core 2 Duo SU3500 и 4Гб оперативной памяти, у которого были более ограниченные возможности. Результаты и в этих случаях не изменились и были приблизительно такие же.

Сравнение производительности для удобства мы разделили на 2 части:

  • 1. Сначала мы исследовали производительность обычных 32-битных программ на 32-битной и 64-битной версиях систем;
  • 2. Затем мы измеряли скорости работы 32-битной и 64-битной версий программ на соответствующих редакциях Windows.

Тестирование производительности прикладных 32-битных программ

Цель этого тестирования — определить увеличение производительности при переходе с 32-битной на 64-битную версию системы Windows. Данное исследование является актуальным, так как сегодня у многих игр и программ отсутствуют специальные оптимизированные 64-битные версии. Важно отметить и то, что 32-битная система может работать с 3 Гб памяти, а 64-битная версия — с 4 Гб.

Сравнить производительность помогли следующие приложения:

  • 3DMark03 3.6;
  • 3DMark05 1.3;
  • 3DMark06 1.1;
  • PCMark05 1.2.

Эти приложения были выбраны, так как они достаточно точно отражают реальную производительность большей части программ и игр. Если бы в данном исследовании были использованы различные прикладные программы, то методика исследования стала бы намного сложней. А процент погрешности измерений был бы увеличен из-за худшего повторения того или иного теста и ограничения точности в средствах измерения.

Приложения были настроены по умолчанию. Разрешение экрана 1024 х768:

Приложения были настроены по умолчанию. Разрешение экрана 1280 х720:

4. Результаты сравнения производительности в PCMark05

В этом тесте были проведены отдельные дополнительные тесты. Ниже представлены результаты каждого.

Виден результат полученный благодаря дополнительному гигабайту ОЗУ у 64-битной системы.

Итоги сравнения производительности обычных приложений

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

В результате этого сравнения производительности также было выявлено, что реальную пользу 4 гигабайта ОЗУ в этом наборе приложений не приносят. Здесь необходимо подчеркнуть, что в действительности для тяжелых приложений, к которым относятся графические редакторы, системы автоматизированного проектирования (CAD) и другие, объем ОЗУ очень важен. В них дополнительные гигабайты ОЗУ действительно полезны.

Сравнение производительности 32- и 64-битных программ

Цель данного исследования — измерить увеличение производительности во время использования оптимизированных 64-битных приложений на 64-битной ОС.

Для сравнения производительности были также использованы программы:

  • Архиватор 7-Zip версии 4.65;
  • Тестовый пакет PCMark Vantage.

Здесь он используется как тестовое приложение, так как он имеется и в 32-битной и в 64-битной версиях, он может работать с многоядерными процессорами, он способен достаточно сильно нагружать процессор, в нем имеется набор встроенных средств позволяющих тестировать производительность. Во время тестирования размер словаря насчитывал 32 Мб.

А теперь посмотрим на результаты:

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

2. Тестирование при помощи тестового пакета PCMark Vantage

Существует как 32-битная, так и 64-битная версии тестового пакета PCMark Vantage. В этом тестовом пакете имеются разные тесты. Рассмотрим каждый из них.

Как и 7-Zip, в целом 64-битный тестовый пакет PCMark Vantage показал большую производительность чем 32-битный на 32-битной ОС. Здесь важным моментом оказались оптимизации под 64-битные процессоры, и больше объема доступной памяти: 4 Гб у 64-битной системы и 3 у ее 32-битной версии.

Итог сравнения производительности 32-битной версии Windows с 64-битной

Пришло время подвести итог данного теста:

  • Наибольшее увеличение производительности в 64-битных версиях Windows XP, Vista, 7 наблюдалось в случае, когда были использованы оптимизированные 64-битные версии приложений и игр. Во время работы с обычными приложениями, без оптимизации под 64-битную версию производительность не увеличивается;
  • Многие программы и игры не смогли показать заметного роста производительности когда был увеличен объем доступной ОЗУ больше 3 Гб. Исключением можно назвать сложные программы, которые позволяют работать с видео, изображениями, системы проектирования и прочие. В дальнейшем этих приложений будет больше. Для таких программ использовать 64-битную систему будет весьма обоснованно.
  • Некоторые из приложений на 64-битной ОС показали нестабильную работу по разным причинам. Но этих приложений не так много.

В конце хочется отметить то, что вы сами выбираете версию Windows для своих нужд. И если это исследование смогло вам помочь, то мы будем только рады.

Вскоре после выпуска Windows XP Professional x64 Edition компания Microsoft попыталась привлечь потребителей к новой версии, предлагая бесплатную программу замены Windows. Владельцы Windows XP Professional могут перейти на версию x64 совершенно бесплатно - только лицензия на 32-битную версию уже будет недействительна.

Но покупать кота в мешке не слишком удобно, поскольку 64-битные драйверы для ряда старых устройств и периферии так и не вышли. После перехода на x64 сканеры и мультимедийные устройства вроде web-камер могут просто не заработать, поскольку мелкие производители и так называемые "no-name" компании часто не торопятся переводить драйверы под Windows XP x64. Одна из причин - ограниченные ресурсы. Другая - побудить потребителя купить новый продукт с драйвером x64, если он этого желает.

Решив многие проблемы с запуском, Windows XP Professional x64 Edition поддерживает 64-битные процессоры. Система позволяет адресовать больше 4 Гбайт системной памяти, а увеличенная разрядность данных позволяет увеличить производительность приложений, перенесённых или написанных для 64-битной Windows.

Однако преимущество памяти может легко стать недостатком, если её у вас мало. Поскольку каждый элемент данных имеет длину 64 бита, 32-битные элементы для наследственных 32-битных приложений будут занимать в два раза больше памяти по сравнению с 32-битной ОС. С этой точки зрения, вряд ли имеет смысл переходить на Windows XP x64 с небольшим объёмом памяти. Если же вы хотите перейти на x64, то мы рекомендуем установить не меньше гигабайта ОЗУ.

Для нашего проекта мы взяли большую часть нашего стандартного тестового пакета (только 32-битные приложения) и сравнили производительность 32-битной Windows XP с Windows XP x64 Edition. Тестовая система Athlon 64 была оснащена двумя 512-Мбайт DIMM DDR400. Мы провели тесты как на самом быстром одноядерном процессоре Athlon 64 FX-57, так и на его двуядерном сопернике Athlon 64 X2 4800+.

Определить, готова ли ваша система для запуска 64-битной Windows, можно по процессору. Что касается AMD, то здесь необходим процессор с поддержкой AMD64 - вроде линейки Athlon 64 или новых Sempron. В случае Intel следует искать чип с включёнными расширениями EM64T (ранее известными как Yamhill или Clackamas) вроде линейки Pentium 4 600, Pentium D, Pentium Extreme Edition или Celeron D, если номер 300-й модели заканчивается на 1 или 6.

С точки зрения набора возможностей, никаких причин переходить на Windows XP Professional x64 Edition нет. Система по ощущениям и работе точно такая же, как и 32-битная Windows. Кроме того, x64 Edition сегодня продаётся, по большей части, в виде OEM-версии вместе с новыми компьютерами, так что купить её в рознице довольно проблематично.

Самой главной проблемой новой ОС является поддержка драйверов для устройств и периферии. Поэтому перед переходом на x64 следует всё тщательно взвесить. Если у вас есть устройство, которое вы не можете или не хотите заменить, и для которого нет 64-битных драйверов, то лучше остаться на 32-битной Windows. Особенно это касается периферии: принтеров, сканеров, мультимедийных устройств и т.д.

Версия x64 может работать с памятью вплоть до 32 Гбайт и запускать одновременно и 64-битные, и 32-битные приложения. Windows x64 использует уровень трансляции под названием WOW64 (Windows on Windows 64), который преобразует 32-битные команды, параметры и данные для 64-битного ядра. Хотя традиционная Windows XP способна адресовать до 4 Гбайт памяти (2 32), для приложений доступно только 2 Гбайт. У версии x64 Edition ситуация иная: для 32-битных приложений доступны все 4 Гбайт памяти. Ещё большее преимущество достигается при использовании 64-битных приложений, поскольку объём адресуемой памяти здесь ограничивается только объёмом установленной ОЗУ.

Поскольку за один такт теперь можно обрабатывать больше данных, то 64-битные приложения под Windows XP могут дать существенный прирост производительности. Однако до того, пока большая часть приложений будет переведена на 64-битную платформу, пройдёт ещё немало времени. Если вы используете, в основном, 32-битные приложения, то следует учитывать упомянутые проблемы.

Сегодня AMD и Intel выпускают процессоры с поддержкой 64-битных вычислений. Однако роль пионера в этом переходе принадлежит AMD, поскольку линейка Athlon 64 вышла почти два года назад. Intel, напротив же, не видела каких-либо преимуществ для 64-битных вычислений на массовых настольных ПК до начала этого года.

На данный момент все процессоры AMD Athlon 64 и ряд настольных чипов Intel для Socket 775 поддерживают 64-битные вычисления. Они включают:

  • Pentium 4 от 630 до 670;
  • Pentium D 820, 830, 840;
  • Pentium Extreme Edition (двуядерный);
  • Celeron D 326, 331, 336, 341, 346, 351, 355.

Если только Mobile Sempron не поддерживает 64-битные вычисления, то Intel не планирует переводить мобильные процессоры на 64 бита в ближайшее время - попросту их архитектура ещё не готова. Как мы ожидаем, процессор Yonah - как одноядерная линейка 7x6, так и двуядерные процессоры, скорее всего, из линейки 800 - выйдет на рынок в начале первого квартала 2006, после чего должна последовать версия Merom с поддержкой 64-битных вычислений.

Режимы 64-битного процессора

AMD Athlon 64 работает с 32-битной Windows в наследственном режиме, при этом расширения x86 64 не используются. Если запустить 64-битную ОС, то процессор AMD64 будет работать в 64-битном Long Mode, а чипы Intel включат режим IA32e. Оба режима, конечно же, одинаковы, поскольку Intel использует технологию AMD64, благодаря лицензионному соглашению с AMD.

В режиме Long Mode процессор способен выполнять 64-битные "родные" инструкции, при этом доступны подрежимы совместимости, в которых процессор становится совместим по двоичному коду с 16-битными и 32-битными приложениями. Хотя сегодня разница и не ощутима, но физическое адресное пространство ограничено у AMD 52 битами, а у Intel - 40 битами. Впрочем, вряд ли это проявит себя в ближайшем будущем, поскольку 40 бит хватает для адресации 1 Тбайт (терабайта) или 1024 Гбайт памяти.

Дополнительную информацию о 64-битной поддержке можно найти на следующих ресурсах.

Тестовая конфигурация

Процессор
Одноядерный CPU AMD Athlon 64 FX-57 (2,8 ГГц, кэш L2 1 Мбайт)
Двуядерный CPU AMD Athlon 64 X2 4800+ (2,4 ГГц, 2x 1 Мбайт кэша L2)
Память
Платформа AMD (DDR400) 2x 512 Мбайт - DDR400 (200 МГц)
Corsair Pro Series CMX512-3200XL (XMS3208 V1.1)
(CL2,0-2-2-5-1T @ 200 МГц)
Материнская плата
Платформа AMD Asus A8N-SLI Deluxe (Rev. 1.02, BIOS 1007)
Чипсет nVidia nForce4 SLI
Системное аппаратное обеспечение
Графическая карта (PCIe) nVidia GeForce 6800 GT (эталонная плата)
GPU: nVidia GeForce 6800 GT (350 МГц)
Память: 256 Мбайт DDR SDRAM (500 МГц)
Жёсткий диск Western Digital WD740 Raptor
74 Гбайт, кэш 8 Мбайт, 10 000 об/мин
Сеть Встроенная nVidia GbE Ethernet
DVD-ROM Gigabyte GO-D1600C (16x)
Блок питания Tagan TG480-U01, ATX 2.0, 480 Вт
Программное обеспечение
Драйверы чипсета nVidia Forceware 6.53
Драйверы чипсета x64 nVidia Forceware 6.66
Драйвер процессора AMD CPU Driver 1.1.0.18
Графический драйвер nVidia Forceware 71.84
DirectX Версия: 9.0c (4.09.0000.0904)
32-битная ОС Windows XP Professional 5.20.3790,
Service Pack 2
64-битная ОС Windows XP Professional 5.10.2600,
Service Pack 2

Тесты и настройки

OpenGL
Doom III Version: 1.0.1262
1024x768 - 32 bit
Video Quality = High Quality
"custom timedemo"
Graphics detail = High Quality
Wolfenstein Version: 2.56 (Patch V 1.02)
Enemy Territory 1280x1024 - 32 bit
Timedemo 1 / demo demo4
Geometric detail = high
Texture detail = high
DirectX 8
Unreal Tournament 2004 Version: 3204
1280 x 1024 / 32 bit / Audio = off
THG8-assault-single
3DMark2003 Version 3.6.0
1024x768 - 32 bit
DirectX 9
FarCry Version 1.1 Build 1256
1280x1024 - 32 bit
Quality options = low
3DMark 2005 Version 1.0
1024x768 - 32 bit
Graphics and CPU Default Benchmark
Видео
Mainconcept MPEG Encoder Version: 1.4.2
1.2 GB DV to MPEG II
(720x576, Audio) converting
Pinnacle Studio 9 Plus Version: 9.1.2
From: 352x288 MPEG-2 41 MB
to: 720x576 MPEG-2 95 MB
Encoding and Transition Rendering to MPEG-2/DVD
no Audio
Auto Gordian Knot
DivX 5.2.1
XviD 1.0.2
Version: 1.95
Audio = AC3 6ch
Custom size = 100 MB
Resulution settings = Fixed width
Codec = XviD and DivX 5
Audio = CBR MP3, kbps 192
182 MB VOB MPEG2-source
Windows Media Encoder Version: 9.00.00.2980
720x480 DV to WMV
320x240 (29.97 fps)
282 kbps streaming
Windows Media Player 10 Version: 10.00.00.36.46
Аудио
Lame MP3 Version 3.96
Wave 17:14 minutes (182 MB) to mp3
32 - 320 kbit
VBR = level 3
Приложения
Winrar Version 3.42
283 MB, 246 Files
Compression = Best
Dictionary = 4096 kB
3D Studio Max 6.0
Discreet
Characters "Dragon_Charater_rig"
Pixel: 1024 x 768
Rendering Single
Синтетические тесты
PCMark 2004 Pro Version: 1.3.0
CPU and Memory Tests
SiSoftware Sandra Pro Version 2005, SR1
CPU Test = MultiMedia / CPU Arithmetic
Memory Test = Bandwidth Benchmark
Wstream Version: 5
100 Operations with 25 MB file
  • Подобные результаты сравнения между 32-битной и 64-битной версиями одинаковы и для одноядерных, и для двуядерных процессоров.
  • Учитывая отсутствие разницы в производительности 32-битных приложений, вряд ли имеет смысл переходить на Windows XP Professional x64 Edition, если вы, по большей части, работаете именно с ними. Конечно, если вы не желаете почувствовать себя первопроходцем. В принципе, уровень Microsoft WOW64 (Windows on Windows 64) работает хорошо и позволяет выполнять 32-битные приложения под Windows x64 без заметного падения производительности. Собственно, ситуация напоминает нам переход от Windows for Workgroups 3.11 к Windows 95: если в компьютере установлено достаточно памяти, то производительность проблемой не является.

    В ближайшие месяцы мы планируем тщательно протестировать производительность 64-битных приложений, по мере того, как они будут появляться на рынке..

    Современные компьютеры в большинстве случаев поставляются с установленной операционной системой Windows 10 64 bit. Даже бюджетные модели уже имеют 3 и более Гбайт оперативной памяти, что позволяет задействовать системе всю мощь 64-битной разрядности обработки данных.

    Подробнее о преимуществах 64 bit над 32 bit Windows вы можете прочитать в нашей статье « ».

    Но, как бы не была привлекательна 64-разрядная система, зачастую пользователь просто не имеет в своем распоряжении 64-битной программы, с которой он давно работает и которая его полностью устраивает, т.к. производитель ее просто не выпустил. Как правило, такие программы устанавливаются в Windows в отдельную папку \Program Files (x86) и их запуск осуществляется в 32-разрядном режиме.

    Если в процессе запуска программа выдает ошибку или вообще не запускается, а в Windows 32 bit она работала без проблем, есть шанс запустить ее в специальном режиме, который разработчики назвали «Режим совместимости».

    Для этого в Windows 7 щелкните правой кнопкой мыши на ярлыке нужной программы, а затем выберите в контекстном меню «Свойства». В открывшемся окне перейдите на вкладку «Совместимость» и установите флажок «Запустить программу в режиме совместимости с …» и в выпадающем списке укажите вариант системы для запуска.
    Нажмите кнопку «OK». После этого попробуйте запустить вашу программу.

    Кроме того, в контекстном меню Проводника также имеет смысл попытаться автоматически решить задачу, кликнув по строке «Исправление неполадок совместимости» - в Windows 7.

    В Windows 10 при настройке запуска в совместимом режиме на вкладке «Совместимость» имеется отдельная кнопка «Запустить средство устранения проблем с совместимостью». После чего вам предложат либо использовать рекомендованные параметры, либо провести диагностику программы.

    Если и после этого программа не запустилась, то стоит подойти к проблеме более основательно и попробовать варианты, указанные на официальном сайте Microsoft .

    Более радикальным методом запуска программы является ее установка и использование в виртуальной машине с установленной Windows 7 32 bit. Подробнее, как установить и настроить виртуальную машину вы можете почитать в нашей статье « ».

    У вас работает 64-битная операционная система? Если вы не знаете ответа на этот вопрос, то наверняка нет. 32- и 64-битные версии Windows очень похожи друг на друга, так что отличить внешне вариант ОС не так легко. Проще всего вызвать окно просмотра сведений о компьютере, выбрав "Панель управления" -> "Система" (или нажав правой клавишей на "Компьютер" и выбрав "Свойства"). В окне будут выведены детальные сведения о версии Windows и типе системы. В нашем случае это "64-разрядная операционная система". Но в чём кроются различия между 32- и 64-разрядными системами?

    Разница между 32- и 64-битными системами

    Когда мы говорим о 64-битных или 64-разрядных операционных системах, нам нужно различать 64-битные вычисления, которые важны для высокой производительности, а также 64-битную адресацию для поддержки больших объёмов памяти. У 64-битной операционной системы используются регистры шириной 64 бита, 64-битные типы данных, и система внутри себя может адресовать данные с помощью 64-битной адресации (что даёт поддержку максимального объёма памяти 16 экзабайт вместо 4 гигабайт). Впрочем, внешняя адресация и шины могут отличаться. В качестве примера можно привести адресацию памяти, которая обычно ограничена 40 или 48 битами.

    64-битная ОС для своей работы требует использование 64-битного процессора. Большинство 64-битных систем могут выполнять 32-битное программное обеспечение в так называемом "режиме совместимости", который важен по причине того факта, что "родные" 64-битные приложения всё ещё встречаются довольно редко. Процессор при необходимости переключается в 32-битный режим. Запуск же 32-битной ОС на 64-битном CPU обычно приводит к тому, что процессор всё время работает в наследственном режиме. Если 64-битное программное обеспечение может на 64-битной ОС работать быстрее (если оно должным образом оптимизировано), то 32-битные приложения на 64-битных ОС обычно дают прежний уровень производительности.

    Преимущества 64 бит

    У 64-битных операционных систем есть несколько преимуществ. Во-первых, 32-битная версия Windows ограничена поддержкой максимум 4 Гбайт памяти, и даже при этом она не будет отдавать весь объём вашим приложениям - система Windows будет использовать часть памяти для собственных нужд, в результате вы получите 3 Гбайт или чуть больше. Поэтому максимальный объём памяти 32-битной Windows на самом деле ограничен 3+ Гбайт. 64-битная версия Windows будет поддерживать любой объём памяти, доступный сегодня.

    Во-вторых, 64-битные ОС с большим количеством памяти лучше работают с большими файлами. Представьте себе 5-Гбайт файл под 32-битной версией Windows, где доступно всего 3 Гбайт памяти: системе придётся работать с файлом, загружая его в память по частям.

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

    Недостатки 64 бит

    Недостатком 64-битных вычислений является другая модель памяти, которая позволила увеличить максимальную ёмкость, а также отсутствие 64-битных приложений в целом. С одной стороны, не все приложения выигрывают от перехода на 64 бита. С другой стороны, низкоуровневые компоненты, такие как драйверы, доступны не для всех устройств, с которыми вы планируете работать. Драйверы являются прослойкой между операционной системой и "железом", то есть почти все они не могут выполняться в 32-битном режиме совместимости. Другими словами, если для сканера, принтера, звуковой карты или любого другого устройства нет 64-битного драйвера, то вы не сможете использовать его в 64-битном окружении.

    Детали и проблемы операционных систем

    Розничные версии Windows обычно доступны как в 32-, так и в 64-битных версиях. Есть специальные диски для разработчиков, которые содержат обе версии системы: например, Vista DVD для подписчиков Microsoft MSDN. Однако при установке уделите внимание тому, правильную ли версию Windows вы устанавливаете, поскольку после установки изменить версию не получится.

    Сколько памяти вам нужно?

    Переход на 64-битную операционную систему и большой объём памяти даст не только дополнительное "жизненное пространство", но и позволит операционным системам, таким как Windows Vista, работать более эффективно. Во-первых, операционная система будет реже записывать данные в медленный файл подкачки на жёстком диске, что она выполняет при нехватке оперативной памяти. Во-вторых, Vista может использовать дополнительную память с помощью функции SuperFetch, предварительно загружающей данные приложений в порядке значимости: то есть самые популярные приложения уже будут буферизованы в памяти после загрузки ОС. В итоге приложения будут запускаться практически мгновенно. Комплекты памяти на 4 или даже 8 гигабайт сегодня стоят вполне доступно, поэтому мы рекомендуем оснастить компьютер, по крайней мере, 4 Гбайт памяти. Опытным пользователям и энтузиастам сегодня можно рекомендовать уже 8 Гбайт памяти для 64-битной системы. 2 Гбайт памяти - тоже популярный объём, но при этом вы не получите особого выигрыша от возможностей адресации 64-битной системы (фактически, 64-битная ОС занимает чуть больше места в памяти, чем 32-битная, поэтому ставить 64-битную ОС на компьютер с памятью 3, 2 или 1 Гбайт можно только с точки зрения будущего апгрейда).

    32-битные проблемы Windows

    Как мы уже упоминали выше, 32-битная версия Windows не даст вам полный объём 4 Гбайт памяти, которую вы установили в систему, поскольку компоненты и устройства Windows требуют выделенного адресного пространства в пределах первых 32 бит (4 Гбайт) оперативной памяти. Видеокарта с 512 Мбайт памяти требует привязки этой памяти к оперативной, что снижает доступную ёмкость на 512 Мбайт. Windows Vista обычно ограничивает доступную память 3,12 Гбайт, но, в зависимости от "железа", эффективный доступный объём может быть ещё ниже. Добавления, такие как оснастка Microsoft .NET, могут потреблять 200 Мбайт или больше. Linux делает всё несколько по-иному, поскольку ядро никогда не требует больше 1 Гбайт; поэтому процессам можно отводить до 3 Гбайт памяти.

    Physical Address Extension вместо 64-битной Windows?

    Некоторые версии Windows поддерживают функцию под названием Physical Address Extension (PAE), позволяющую использовать больше 4 Гбайт памяти благодаря специальной технологии переадресации. Но Windows при этом использует систему переадресации с тремя уровнями страниц, а не с двумя. Технология PAE успешно зарекомендовала себя в серверах, но в настольных системах её поддержка сталкивалась с проблемами совместимости драйверов из-за недостаточной стандартизации.

    Проблемы с драйверами

    Поскольку драйверы работают между "железом" и операционной системой, вы не сможете установить 32-битные драйверы на 64-битную операционную систему, пусть даже почти все 32-битные приложения будут работать под вашей 64-битной Windows. Поэтому первым шагом при подготовке перехода на 64-битную версию является тщательная проверка доступности драйверов в 64-битных вариантах. Если вы просто хотите познакомиться и поработать с версией x64 Windows, то можете временно установить её на компьютер - Microsoft даёт 30-дневный ознакомительный период, который позволяет поработать с системой, протестировать её и проверить появление проблем с драйверами. А уже потом активируйте вашу копию Windows.

    XP и Vista

    Вы обычно можете использовать многие драйверы Windows XP под Windows Vista, но это не касается 64-битных версий. 32-битный драйвер Windows XP для звуковой карты или игрового контроллера обычно работает под Vista-32. Но для Vista x64 и драйверов вы такого исключения не получите, поскольку Vista не будет устанавливать драйвер, если он не подписан должным образом.

    Некритичные драйверы

    Вам не потребуются драйверы чипсета или видеокарты, если им насчитывается несколько лет. В таком случае Windows Vista x64 сможет поддержать вашу систему благодаря встроенным драйверам, пусть даже их производительность будет чуть хуже. AMD и Intel обычно быстро выпускают драйверы платформы для важных операционных систем, да и AMD/ATI и Nvidia вовремя предоставляют драйверы для актуальных видеокарт Radeon и GeForce. Причём сегодня они поддерживают концепцию унифицированного драйвера, когда в одном комплекте вы получаете набор всех необходимых драйверов, то есть искать и скачивать драйверы по отдельности не нужно.

    Критичные драйверы

    Намного сложнее найти драйверы для нестандартных компонентов, особенно периферии. Каждый принтер, сканер, "картовод", мышь, клавиатура и сетевая карта несут потенциальный риск несовместимости, если им исполнилось больше полутора-двух лет. Поэтому проверьте наличие драйверов для вашей старой периферии, пусть даже она выпущена такими крупными игроками, как Brother, Canon, HP, Samsung и другими. Даже популярные марки просто не гарантируют наличие 64-битных драйверов.

    64-битная операционная система на ноутбуках

    Хотя ноутбуки выглядят иначе, чем обычные настольные ПК, да и стоят дороже, технологически они недалеко от них ушли. Они используют меньшие по размеру 2,5" или 1,8" жёсткие диски, более эффективные процессоры и видеокарты, да и все комплектующие сделаны компактными, лёгкими и эффективными. Но принцип построения компьютера такой же, что и у ПК.

    В результате почти все ноутбуки, продаваемые сегодня, могут работать с 64-битными операционными системами, да и падение цен на память для ноутбуков было таким же существенным, что и для настольных ПК, то есть сегодня можно установить 4 Гбайт памяти в ноутбук за совершенно разумные деньги.

    Некоторые ноутбуки, базирующие на чипсете Intel GM45, например, многие модели Lenovo, поддерживают до 8 Гбайт памяти. Но большинство ноутбуков такой поддержкой не обладают.

    Много памяти на ноутбуке

    Большой объём памяти необходим для настольного ПК если вы хотите выжать из него максимальную производительность, и у ноутбуков ситуация сравнимая, пусть и немного иная. В данном случае дополнительная память тоже не помешает, но если вы хотите избежать лишних падений производительности. Помните, что жёсткие диски для ноутбуков по-прежнему примерно на 50% медленнее настольных моделей, то есть нужно как можно реже обращаться к винчестеру за данными. Конечно, можно купить быстрый твёрдотельный накопитель (SSD) на флэш-памяти, но такой апгрейд обойдётся существенно дороже, чем добавление памяти.

    Ноутбуки тоже страдают из-за ограничения 3+ Гбайт в 32-битной версии Windows, но никто не мешает установить 64-битную версию Windows Vista для поддержки полного объёма 4 Гбайт. Некоторые ноутбуки позволяют установить даже 8 Гбайт памяти, но большинство ограничивают память 4 Гбайт. Подобный объём памяти позволяет снизить использование файла подкачки, да и функция SuperFetch будет работать более эффективно. Единственный недостаток при этом кроется во времени гибернации - чем больше объём памяти, тем дольше будет выполняться этот процесс.

    64-битные проблемы ноутбуков

    Все проблемы с драйверами, которые мы упоминали выше, также можно отнести и к ноутбукам. Причём в данном случае проблемы будут более острыми, поскольку ноутбуки обычно содержат больше встроенной периферии по сравнению с настольным ПК, и каждому устройству требуется драйвер. Каждый ноутбук содержит тач-пад, который программируемый, но драйвер ему тоже нужен. Встроенные компоненты, такие как модуль Bluetooth, чип TPM, датчик отпечатка пальцев и другие тоже требуют драйверы.

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

    Потенциальные проблемы с накопителями

    Мы уже обсудили некоторые проблемы, но есть ещё один фактор, который станет всё более значимым в будущем: накопители. Здесь есть два "подводных камня", из которых только второй связан с 32 битами против 64. Но мы рассмотрим оба.

    GPT вместо MBR позволяет создавать разделы больше 2 Тбайт. Однако для загрузки с такого раздела требуется расширенная версия EFI вместо обычного BIOS.

    В ожидании EFI

    Возможно, вы уже знаете об ограничениях записи Master Boot Record (MBR), являющейся частью тома жёсткого диска. Из неё BIOS берёт код загрузки для запуска операционной системы. К сожалению, MBR ограничивается ёмкостью в 2 Тбайт, и, как все мы знаем, жёсткие диски уже достигли подобного объёма. Проблему можно решить, установив последний пакет обновления (Service Pack) на Windows XP и Windows Server 2003, либо перейдя на Windows Vista или Server 2008. Во всех случаях MBR будет заменена так называемой GPT, GUID Partition Table, для разделов размером больше 2 Тбайт. В отличие от MBR, GUID поддерживает разделы до 256 Тбайт, чего на данный момент вполне достаточно.

    Однако если GPT поддерживает создание крупных разделов для чтения и записи, загружаться с такого раздела вы сможете только если ваша платформа основана на Extensible Firmware Interface (EFI) или Unified EFI (UEFI, также известный как EFI 2.0) вместо классического BIOS. Рано или поздно этот интерфейс станет стандартом общения между операционной системой и "железом". К сожалению, EFI медленно распространяется в мире ПК; только Apple достаточно умно сразу же перешла на EFI для компьютеров Mac на процессорах Intel. Поэтому если вы хотите загружаться с раздела больше 2 Тбайт, то приготовьтесь к апгрейду платформы. Ситуация осложняется тем, что MBR нельзя конвертировать в GPT, поэтому с RAID-массивами могут возникнуть проблемы: если вы превысите ёмкость массива 2 Тбайт, то можете потерять возможность загрузки с него.

    Список функций, которые добавляет EFI, включает DRM, поддержку сетевых функций администрирования, поддержку видеокарты до загрузки ОС, оболочку для запуска приложений EFI, а также драйверы, которые работают как модули EFI. В результате разработка драйверов будет идти на уровне, более близком к "железу", то есть они могут стать независимы от ОС. Windows 7 на системах EFI не придётся запускать драйверы; они будут активироваться в момент загрузки ПК.

    Проблемы с драйвером

    Наконец, могут возникнуть проблемы с накопителями ёмкостью больше 2 Тбайт и под 64-битной операционной системой, несмотря на наличие драйверов для 64-битных окружений. Некоторые драйверы, которые заявлены для 64-битных окружений и подписаны соответствующим образом, могут внутри использовать 32-битную адресацию секторов - в результате Windows будет неправильно отображать ёмкость. Когда мы тестировали накопитель LaCie 4big Quadra , то обнаружили, что на одной тестовой системе он распознался с ёмкостью около 800 Гбайт, хотя суммарная ёмкость должна была составлять 2800 Гбайт (2,8 Гбайт, то есть 3-Гбайт конфигурация RAID 5 с четвёртым 1-Тбайт жёстким диском внутри LaCie). Вероятно, первые 32 бита адресации не работали, в результате чего операционная система смогла адресовать только ёмкость за пределами 2 Гбайт.

    Всё это может привести к печальным результатам: представьте себе конфигурацию, в которой вы создаёте массив RAID 0 с полной ёмкостью 4 Тбайт. Вы форматируете раздел и начинаете с ним работать. Когда вы достигнете 2 Тбайт, то Windows не сможет использовать оставшийся объём, из-за сбойного драйвера Windows начнёт повторную запись с первых секторов, уничтожая записанные там данные. Вряд ли с восстановлением такого кошмара легко справятся даже соответствующие компании.

    Поэтому перед использованием накопителя с ёмкостью больше 2 Тбайт мы рекомендуем тщательно проверить его ёмкость с помощью Diskpart. Или даже провести тесты с ёмкостью больше 2 Тбайт, чтобы убедиться, что всё в порядке.

    Заключение

    Некоторые проблемы, рассмотренные в нашей статье, разочаровывают, особенно если учесть небольшой прирост производительности при переходе на 64-битную версию Windows (а потенциально и отсутствие прироста). Однако есть несколько ключевых моментов, которые следует принимать во внимание:

    • 64-битная версия ОС даёт больше преимуществ, чем недостатков, особенно поддержку конфигураций с памятью больше 3 Гбайт, которые в свете недорогих 8-Гбайт наборов смотрятся всё привлекательнее;
    • 64-битная ОС работает примерно так же, как и 32-битные системы за исключением некоторых high-end приложений;
    • Ситуация с драйверами за последние месяцы улучшилась, но будьте готовы столкнуться с проблемами поиска 64-битного драйвера для некоторого "железа";
    • Поиск драйвера для ноутбука может быть по-прежнему проблематичным;
    • Нет ничего страшного в использовании 32-битной версии Windows, но учтите тот факт, что 64-битная версия потребует полной переустановки (в том числе и приложений);
    • Любая конфигурация с системным разделом больше 2 Тбайт требует использования EFI вместо привычного BIOS для загрузки операционной системы;

    Настало время перейти к выводам:

    • Комплекты памяти на 4 или даже 8 Гбайт сегодня стоят очень доступно, при этом подобный объём заметно ускоряет работу системы из-за снижения обращений к файлу подкачки и работы функции SuperFetch под Windows Vista;
    • Энтузиастам настоятельно рекомендуется переходить на 64-битную систему, пусть даже при этом придётся заменить старую периферию или "железо";
    • 64-битное окружение на ноутбуке имеет меньше смысла, поскольку платформа обычно ограничивает память объёмом 4 Гбайт. Впрочем, если есть все необходимые драйверы, мы рекомендуем сделать подобный переход в целях повышения производительности;
    • Сегодня использовать 64-битную систему вполне безопасно, если вы покупаете новый ПК или ноутбук, особенно если она уже входит в комплект;
    • Перенос существующей системы на 64-битное окружение требует предварительной работы по поиску совместимых драйверов, также следует обратить внимание и на другие проблемы, описанные выше.


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

    WoW64 (Windows-on-Windows 64-bit) - подсистема операционной системы Windows, позволяющая запускать 32-битные приложения на всех 64-битных версиях Windows.

    Подсистема WoW64 не поддерживает следующие программы:

    • программы, скомпилированные для 16-разрядных операционных систем;
    • программы режима ядра, скомпилированные для 32-разрядных операционных систем.

    Накладные расходы

    Существуют различия WoW64 в зависимости от архитектуры процессора. Например, 64-битная версия Windows разработанная для процессора Intel Itanium 2 использует WoW64 для эмуляции инструкций. Такая эмуляция весьма ресурсоемка по сравнению с WoW64 для архитектуры , так как происходит переключение с 64-битного режима в режим совместимости при выполнении 32-битных программ.

    WoW64 на архитектуре Intel 64 (AMD64 / x64) не требует эмуляции инструкций. Здесь подсистема WoW64 эмулирует только 32-битное окружение за счет дополнительной прослойки между 32-битным приложением и 64-битным Windows API. Где-то эта прослойка тонкая, где-то не очень. Для средней программы потери в производительности из-за наличия такой прослойки составят около 2%. Для некоторых программ это значение может быть больше. Два процента - это немного, но следует учитывать, что 32-битные приложения работают немного медленнее под управлением 64-битной операционной системы Windows, чем в 32-битной среде.

    Компиляция 64-битного кода не только исключает необходимость в WoW64, но и дает дополнительный прирост производительности. Это связано с архитектурными изменениями в микропроцессоре, такими, как увеличение количества регистров общего назначения. Для средней программы можно ожидать в пределах 5-15% прироста производительности от простой перекомпиляции.

    Преимущество 64-битной среды для 32-битных программ

    Из-за наличия прослойки WoW64 32-битные программы работают менее эффективно в 64-битной среде, чем в 32-битной. Но все-таки простые 32-битные приложения могут получить одно преимущество от их запуска в 64-битной среде. Вы, наверное, знаете, что программа, собранная с ключом /LARGEADDRESSAWARE:YES, может выделять до 3-х гигабайт памяти, если 32-битная операционная система Windows запущена с ключом /3gb. Так вот, эта же 32-битная программа, запущенная на 64-битной системе, может выделить почти 4 GB памяти (на практике около 3.5 GB).

    Перенаправления

    Подсистема WoW64 изолирует 32-разрядные программы от 64-разрядных путем перенаправления обращений к файлам и реестру. Это предотвращает случайный доступ 32-битных программ к данным 64-битных приложений. Например, 32-битное приложение, которое запускает файл DLL из каталога %systemroot%\System32, может случайно обратиться к 64-разрядному файлу DLL, который несовместим с 32-битной программой. Во избежание этого подсистема WoW64 перенаправляет доступ из папки %systemroot%\System32 в папку %systemroot%\SysWOW64. Это перенаправление позволяет предотвратить ошибки совместимости, поскольку при этом требуется файл DLL, созданный специально для работы с 32-разрядными приложениями.

    Подробнее с механизмами перенаправления файловой системы и реестра можно познакомиться в разделе MSDN "Running 32-bit Applications ".

    Почему невозможно использовать в 64-битной программе 32-битные DLL? Можно ли это обойти?

    Загрузить 32-битную DLL из 64-битного процесса и выполнить код из неё невозможно. Невозможно в силу дизайна 64-битных систем. В принципе, невозможно. Не помогут ни хитрости, ни недокументированные пути. Для этого нужно загрузить и проинициализировать WoW64, не говоря уже о структурах в ядре. Фактически нужно будет на лету превратить 64-битный процесс в 32-х битный. Подробнее эта тема рассмотрена в посте "Недокументированные функции; Загрузка 32-х битных DLL в 64-х битный процесс ". Единственное, что можно порекомендовать, - это создание суррогатного процесса и взаимодействия с ним посредством технологии COM. Об этом рассказывается в статье "Accessing 32-bit DLLs from 64-bit code ".

    А вот загрузить ресурсы из 32-битной DLL в 64-битный процесс совсем несложно. Это можно сделать, если при вызове LoadLibraryEx указать флаг LOAD_LIBRARY_AS_DATAFILE.

    Постепенный отказ от поддержки 32-битных программ

    Вполне естественно, если компания Microsoft будет стимулировать переход на 64-битные системы, постепенно отказываясь от поддержки 32-битных программ в ряде версий операционной системы Windows. Конечно, это будет очень медленный процесс. Но все-таки первые шаги в этом направлении уже сделаны.

    Многие администраторы знают про относительно новый режим установки и работы серверной версии операционной системы под названием Server Core. Это тот режим, о котором участники войн "Windows vs Linux" говорили очень давно. Одним из аргументов сторонников использования Linux на сервере была возможность установить серверную ОС без графического интерфейса (GUI). Но вот и в Windows Server появилась такая возможность. Установка в этом режиме позволяет получить только командную строку без пользовательского интерфейса.

    Эта возможность (установка Server Core) появилась в Windows Server 2008. Но в Windows Server 2008 R2 появилось нововведение, приближающее 64-битное будущее. При установке Windows Server 2008 R2 (Server Core) поддержка запуска 32-битных приложений стала опциональной . Причем по умолчанию эта поддержка выключена. И при попытке запуска 32-битного приложения в режиме Server Core пользователь получит сообщение о невозможности запуска. Конечно, можно добавить поддержку 32-битных программ:

    start /w ocsetup ServerCore-WOW64

    В обычном (Full Installation) режиме 32-битные приложения по умолчанию запускаются, а вот в Server Core уже нет.

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

    Дополнительная информация

    Интересным источником информации по системе WoW64 является блог Алексея Пахунова: http://blog.not-a-kernel-guy.com/ . Алексей является сотрудником компании Microsoft и принимает непосредственное участие в разработке подсистемы WoW64.