Для чего 64 битные программы

На момент написания курса, наиболее известными являются две 64-битные архитектуры микропроцессоров: IA64 и Intel 64.

  • IA-64 64-битная микропроцессорная архитектура, разработанная совместно компаниями Intel и Hewlett Packard. Реализована в микропроцессорах Itanium и Itanium 2. Для более подробного знакомства с архитектурой IA-64 можно обратиться к следующим статьям в Wikipedia: «IA-64», «Itanium», «Itanium 2».
  • Intel 64 (EM64T / AMD64 / x86-64 / x64) — данная архитектура представляет собой расширение архитектуры x86 с полной обратной совместимостью. Существует множество вариантов названия данной архитектуры, что приводит к путанице, хотя, по сути, все эти названия обозначают одно и тоже: x86-64, AA-64, Hammer Architecture, AMD64, Yamhill Technology, EM64T, IA-32e, Intel 64, x64. Более подробно узнать о том, как появилось так много названий, можно в статье из Wikipedia: «X86-64».

Важно понимать, что IA-64 и Intel 64 — это совершенно разные, несовместимые друг с другом, микропроцессорные архитектуры. В рамках курса мы будем рассматривать только архитектуру Intel 64 (x64 / AMD64) как более популярную среди разработчиков прикладного программного обеспечения для операционной системы Windows. Соответственно, когда будет упоминаться операционная система Windows, то будут иметься в виду ее 64-битные версии для архитектуры Intel 64. Примеры: Windows XP Professional x64 Edition, Windows Vista x64, Windows 7 x64. Для краткости программную модель Intel 64, доступную программисту в 64-битной системе Windows, называют Win64.

Как перейти с 32 на 64 битную Windows? Легко и без потерь!

Архитектура Intel 64

Рассматриваемая архитектура Intel 64 — простое, но в то же время мощное обратно совместимое расширение устаревшей промышленной архитектуры x86. Она добавляет 64-битное адресное пространство и расширяет регистровые ресурсы для поддержки большей производительности перекомпилированных 64-битных программ. Архитектура обеспечивает поддержку устаревшего 16-битного и 32-битного кода приложений и операционных систем без их модификации или перекомпиляции.

Необходимость 64-битной архитектуры определяется приложениями, которым необходимо большое адресное пространство. В первую очередь это высокопроизводительные серверы, системы управления базами данных, САПР и, конечно, игры. Такие приложения получат существенные преимущества от 64-битного адресного пространства и увеличения количества регистров. Малое количество регистров, доступное в устаревшей x86 архитектуре, ограничивает производительность в вычислительных задачах. Увеличенное количество регистров обеспечивает достаточную производительность для многих приложений.

Подчеркнем основные достоинства архитектуры x86-64:

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

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

Практически все современные операционные системы сейчас имеют версии для архитектуры Intel 64. Например, Microsoft предоставляет Windows XP x64. Крупнейшие разработчики UNIX систем также поставляют 64-битные версии, как, например, Linux Debian 3.5 x86-64. Однако это не означает, что весь код такой системы является полностью 64-битным.

Как из 32 разрядной системы сделать 64 разрядную?

Часть кода ОС и многие приложения вполне могут оставаться 32-битными, так как Intel 64 обеспечивает обратную совместимость. Так, 64-битная версия Windows использует специальный режим WoW64 (Windows-on-Windows 64), который транслирует вызовы 32-битных приложений к ресурсам 64-битной операционной системы.

Адресное пространство

Хотя 64-битный процессор теоретически может адресовать 16 экзабайт памяти (2^64), Win64 в настоящий момент поддерживает 16 терабайт (2^44). Этому есть несколько причин. Текущие процессоры могут обеспечивать доступ лишь к 1 терабайту (2^40) физической памяти. Архитектура (но не аппаратная часть) может расширить это пространство до 4 петабайт (2^52). Однако в этом случае необходимо огромное количество памяти для страничных таблиц, отображающих память.

Помимо перечисленных ограничений, объем памяти, который доступен в той или иной версии 64-битной операционной системе Windows, зависит также от коммерческих соображений компании Microsoft. Различные версии Windows имеют различные ограничения, представленные в таблице.

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

01_What_64-bit_systems_are_ru/image1.png

Таблица 1 — Поддерживаемый объем оперативной памяти в различных версиях Windows

Программная модель Win64

Также как и в Win32, размер страниц в Win64 составляет 4Кб. Первые 64Кб адресного пространства никогда не отображаются, то есть наименьший правильный адрес- это 0x10000. В отличие от Win32, системные DLL загружаются выше 4Гб.

Особенность компиляторов для Intel 64 в том, что они могут наиболее эффективно использовать регистры для передачи параметров в функции вместо использования стека. Это позволило разработчикам Win64 архитектуры избавиться от такого понятия, как соглашение о вызовах (calling convention). В Win32 можно использовать разные соглашения: __stdcall, __cdecl, __fastcall и так далее. В Win64 есть только одно соглашение о вызовах. Рассмотрим пример, как передаются в регистрах четыре аргумента типа integer:

  • RCX: первый аргумент
  • RDX: второй аргумент
  • R8: третий аргумент
  • R9: четвертый аргумент

Аргументы после первых четырех integer передаются на стеке. Для float аргументов используются XMM0-XMM3 регистры, а также стек.

Разница в соглашениях о вызове приводит к тому, что в одной программе нельзя использовать и 64-битный, и 32-битный код. Другими словами, если приложение скомпилировано для 64-битного режима, то все используемые библиотеки (DLL) также должны быть 64-битными.

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

Источник: pvs-studio.ru

64-битные технологии – еще одно направление в современном программном обеспечении

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

Что такое 64-битные технологии (аппаратная и программная часть)?

Под 64-битными технологиями понимают как аппаратные, так и программные средства.

К аппаратным средствам относятся 64-битные процессоры (Intel 64, Intel Itanium). «Бытовые» процессоры делятся на x86-совместимые (Intel 64, AMD64) и несовместимые с ними процессоры Intel Itanium. Естественно, что для 64-битных процессоров должны быть соответствующие материнские платы, но, как правило, их в отдельный класс не выделяют.

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

Это уже есть или еще надо ждать?

Что касается аппаратной составляющей 64-битных технологий, то она уже давно готова, внедрена и более того, наверняка находится у вас на рабочем столе. Спорим, что у большинства читателей будет 64-битный процессор (см. ark.intel.com)?

С программной составляющей дело обстоит сложнее. 64-битные операционные системы как в Unix-мире, так и в Windows-мире давно уже существуют. Но вот их распространенность пока не велика. Причиной этого является небольшое количество программ, которые не имеют проблем в 64-битном окружении. Дошло даже до того, что Microsoft в Windows 7 встроила виртуальную машину в операционную систему, чтобы решить проблемы старых программ.

Причина недостаточного количества 64-битных программ кроется в замкнутом круге, который, надеемся, все-таки прорвется со временем. Разработчики программ не хотят вкладываться в 64-битный софт, поскольку у малого количества пользователей 64-битная операционная система, а пользователи не устанавливают 64-битные операционные системы, так как мало 64-битных программ. Разорвать этот круг может кто-то третий. Так, например, Microsoft выпустила Windows Server 2008 R2 только в 64-битном варианте.

Так что с одной стороны, вроде бы все готово к массовому переходу на 64 бита, но с другой – этот переход только начинается.

Точка зрения пользователей

Для пользователя 64-битные технологии — это возможность получить для приложений больше двух гигабайт оперативной памяти. Где это нужно? В «тяжелых» задачах (видео, звук, графика, архивация), в играх и даже в браузерах (когда открыто несколько десятков вкладок). Вроде бы привлекательно, но пользователи пока не спешат переходить на 64 бита, так как есть проблемы взаимодействия 64-битного и 32-битного программного обеспечения. Это проблемы решаются, но видимо не так быстро как хотелось бы пользователям.

Читайте также:
Pw11 free что это за программа

Но 64-битные технологии актуальны не только для «тяжелых» задач. Даже если программа использует немного оперативной памяти (около гигабайта), то при распространении многоядерных процессоров, 64-битные технологии окажутся востребованными. Ведь в 32-битной операционной системе всего доступно не более 4 Гбайт (2^32), хотя на практике даже меньше. А если на машине с четырьмя ядрами запущено несколько приложений? Да еще и каждому из них нужно по гигабайту оперативной памяти… Так что тут уже без 64-битных систем никуда.

Точка зрения программистов

Как говорилось выше, программисты не особо спешат делать 64-битные версии своих приложений. Хотя все инструменты для этого уже есть – есть компиляторы 64-битных приложений для большинства языков программирования (как от Intel, так и от Microsoft), есть сторонние инструменты (как, например, анализатор кода PVS-Studio, предназначенный для выявления ошибок, характерных для 64-битных и параллельных приложений).

Основная причина, почему не спешат программисты, это необходимость поддерживать две версии программы – 32-битную и 64-битную. В теории достаточно просто скомпилировать 32-битное приложение для 64-битной системы, однако на практике возникают многочисленные нюансы. Из-за чего и приходится поддерживать две версии. И пока можно обойтись только одной (как например, для 32-битных игр), то стараются обходиться одной версией приложения.

Перспективы

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

Что есть в сети 64-битного?

1. Форум компании Intel «Разработка 64-битных приложений» на русском языке.
2. Статья «20 ловушек переноса Си++ — кода на 64-битную платформу».
3. Ресурсы для разработчиков 64-битных и параллельных программ на русском языке.
4. Инструмент PVS-Studio – поиск проблем в 64-битных и параллельных программах.

Источник: habr.com

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

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

64-битная система Windows: вопросы архитектуры

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

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

Немного истории

На заре создания персональных компьютеров и оборудование, и программное обеспечение, которое осуществляло управление им, сначала подразумевало использование архитектуры 8 бит. Если кто помнит старые 8-битные игровые приставки, это как раз из той серии. Затем компьютерные системы стали 16-битными.

Эволюция процессоров Intel

И только с появлением IBM-совместимых компьютеров Intel 80386 как раз на базе процессоров i386 стала использоваться технология 32 бита, которая до нынешних пор обозначается последними двумя цифрами тогдашней модели процессора.

64-битный процессор Athlon

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

Читайте также:
Что за программа msi command center

Windows XP 64 бита

Все изменилось только с выходом ОС Windows XP х64 Edition, разработанной корпорацией Microsoft.

Преимущества архитектуры х64

Если с оборудованием все более или менее понятно (повышение производительности в вычислениях всегда являлось и является приоритетом), то для чего понадобилось выпускать 64-битные системы Windows и другие подобные ОС? Поддержка процессоров? Да, несомненно! Однако суть даже не в этом, поскольку абсолютно все современные процессоры имеют поддержку так называемых 64-битных инструкций.

Главная особенность такой архитектуры связана с объемами оперативной памяти. Если вы внимательно посмотрите на сведения об установленной операционной системе х86, например, при наличии ОЗУ на уровне 4 Гб, можно будет заметить, что доступной оперативной памяти оказывается всего где-то в районе 2,75-3,5 Гб. Если же планок памяти больше, они вообще не будут определены. Таким образом, становится очевидно, что системы архитектурой 32 бита оперативную память более 4 Гб не поддерживают, а для работы с такими объемами и выше как раз и нужны 64-битные системы. Считается, что ограничение по поддерживаемой памяти составляет 16 Тб.

Недостатки 64-битных технологий

Однако не все так безоблачно (пока что). Несмотря на то что 32-битные приложения в среде 64-битных систем работать могут, для некоторых типов оборудования требуются драйверы как раз с новой архитектурой. А они устаревшее программное обеспечение поддерживают не всегда. Да и сами производители ПО до недавнего времени не спешили переводить свои программные продукты на новые рельсы.

Связано это было, если можно так сказать, с обратным эффектом. Дело в том, что 32-битные приложения в 64-битных ОС работать могут, а наоборот – нет.

Как узнать, 32- или 64-битная система установлена на компьютере

Что же касается того, как сразу определить, какая перед вами система, тут не все так просто. По внешнему виду графического интерфейса сделать это невозможно. В случае покупки официального установочного дистрибутива, конечно, разрядность будет указана непосредственно на упаковке. Но как узнать 64-битную систему, если Windows уже присутствует на компьютере?

Как узнать разрядность системы

Для этого можно воспользоваться разделом свойств компьютера, командами msinfo32 или dxdiag, вводимыми в консоли «Выполнить» и т. д.

Как узнать разрядность системы

Вариантов достаточно много.

Какую систему предпочесть при установке?

Наконец, какая модификация Windows (32- или 64-битная система) в идеале подойдет для установки на домашний ПК или ноутбук? Само собой разумеется, основным критерием тут выступает ранее упомянутый объем оперативной памяти. Если у вас имеется 4 Гб и более, тут и думать нечего. Инсталлировать нужно только систему х64, иначе объемами свыше этого лимита вы воспользоваться просто не сможете.

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

Связь оперативной и виртуальной памяти

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

Отключение файла подкачки

Зато в системах с объемами ОЗУ на уровне 8 Гб и выше файл подкачки можно совершенно элементарно отключить, что никоим образом не скажется на общей производительности аппаратной части компьютера. Как уже понятно, без системы с архитектурой х64 здесь не обойтись.

Послесловие

Что же касается перспектив развития 64-битных технологий, практически все разработчики оборудования и программного обеспечения так или иначе все равно приходят к их использованию. И кто знает, вполне возможно, что и это еще не предел, а со временем (как прогнозируется) в недалеком будущем мы увидим и 128-битные системы или даже с архитектурами выше. А это уже не за горами. Кстати сказать, очень сильно развитие таких технологий заметно по игровой индустрии. Ведь не секрет, что в свое время очень часто выпускались игры такого уровня, что для них не было даже поддержки со стороны аппаратных ресурсов.

Источник: www.syl.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru