x86-64 (также AMD64/Intel64/EM64T) — 64-битная версия (в начале расширение) архитектуры x86, разработанная компанией AMD и представленное в 2000 году[1], позволяющее выполнять программы в 64-разрядном режиме.
Это расширение архитектуры x86 а ныне версия архитектуры x86, почти полностью обратно совместима с 32-разрядной версией архитектуры x86, известной ныне как IA-32.
Корпорации Microsoft и Oracle используют для обозначения этой версии архитектуры x86 термин «x64», однако каталог с файлами для архитектуры в 64-разрядных Microsoft Windows и называется «amd64» («i386» для соответственно архитектуры x86). Подобное наблюдается и в репозиториях большинства Linux-дистрибутивах.
Набор команд x86-64 в настоящее время поддерживается:
Существует следующие варианты названий этой 64-битной версии x86:
Ныне наиболее распространенные наименования 64-битной версии x86 есть: «x64», «x86-64» и «AMD64».
Иногда упоминание AMD вводит пользователей в заблуждение, вплоть до того, что они отказываются использовать дистрибутивы родных версий операционной системы, мотивируя это тем, что на их процессоре Intel версия для AMD не будет работать, — на самом деле распространители ПО используют название amd64 лишь потому, что именно AMD была пионером в разработке 64-битной версии x86.
Часто пользователи путают архитектуру x86-64 с IA-64, ошибочно скачивая ПО для этой архитектуры, и затем обнаруживают, что программа не запускается... Во избежание подобных ошибок следует помнить, что Intel 64 и IA-64 — это совершенно разные, несовместимые между собой микропроцессорные архитектуры. Последняя несовместима с x86-64.
Представители Intel 64:
Представители IA-64: семейства Itanium и Itanium 2.
Процессоры данной архитектуры поддерживают два режима работы: Long mode («длинный» режим) и Legacy mode («унаследованный» — режим совместимости с 32-битным x86).
«Длинный» режим — «родной» для процессоров AMD64. Этот режим даёт возможность воспользоваться всеми преимуществами архитектуры x86-64. Для использования этого режима необходима любая 64-битная операционная система. (Например, Windows Server 2003/2003R2/2008/2008R2/2012, Windows XP Professional x64 Edition, Windows Vista x64, Windows 7/8/8.1/10 x64 или 64-битные варианты UNIX-подобных систем GNU/Linux, FreeBSD, OpenBSD, NetBSD (чистые 64-битные сборки, однако, имеют возможность запуска 32-битных приложений), Solaris (смешанная 32/64 сборка с разными ядрами для 32- и 64-битных процессоров), Mac OS X (смешанная 32/64 сборка с 32-битным ядром, начиная с версии 10.4.7).
Этот режим позволяет выполнять 64-битные программы. Также (для обратной совместимости) предоставляется поддержка выполнения 32-битного а, — например, 32-битных приложений. (Естественно 32-битные программы даже будучи запущенными в 64-битной системе, не смогут использовать 64-битные системные библиотеки, и наоборот.) Чтобы сся с этой проблемой, большинство 64-разрядных операционных систем предоставляют два набора необходимых системных API: один — для родных 64-битных приложений, и другой — для 32-битных программ. (Этой же методикой пользуются ранние 32-битные системы — например, Windows 95 и Windows NT — для выполнения 16-битных программ).
В «длинном» режиме упразднён ряд «рудиментов» архитектуры x86-32, — в частности таких, как режим виртуального 8086, сегментная модель памяти (однако, осталась возможность использования сегментов FS и GS, что полезно для быстрого нахождения важных данных потока при переключении задач), аппаратная многозадачность, а также ряд команд, как реализующих упраздненные возможности, так и работающие с BCD-числами, которые в новых программах практически не использовались. «Длинный» режим активируется установкой флага CR0.PG, который используется для включения страничного MMU (при условии что такое переключение разрешено (EFER.LME=1), в противном случае просто произойдет включение MMU в «унаследованном» режиме). Таким образом, невозможно исполнение 64-битного а с запрещённым страничным преобразованием. Это создаёт определённые трудности в программировании, поскольку при переключении из «длинного» в «унаследованный» режим и обратно (например, для вызова функций BIOS или DOS, монитором виртуальной машины, и т. д.) требуется двойной сброс MMU, для чего переключения должен находиться в тождественно отображённой странице.
Данный «унаследованный» режим позволяет x86-64-процессору выполнять команды для процессоров x86, и таким образом реализует полную совместимость с 32-битным ом и 32-хбитным операционными системами для x86. В этом режиме процессор ведёт себя точно так же, как x86-процессор (например как Athlon или Pentium III). Функции и возможности, предоставляемые архитектурой x86-64 (например, 64-битные регистры), в этом режиме естественно недоступны. В этом режиме 64-битные программы и операционные системы работать не будут.
Разработанный компанией AMD набор инструкций x86-64 (позднее переименованный в AMD64) — расширение архитектуры Intel IA-32 (x86-32). Основной отличительной особенностью AMD64 является поддержка 64-битных регистров общего назначения, 64-битных арифметических и логических операций над целыми числами и 64-битных виртуальных адресов. Для адресации новых регистров для команд введены так называемые «префиксы расширения регистра», для которых был выбран диапазон ов 40h-4Fh, использующихся для команд INC <регистр> и DEC <регистр> в 32-битных режимах. Команды INC и DEC в 64-битном режиме должны ироваться в более общей, двухбайтовой форме.
Архитектура x86-64 имеет:
Для улучшения этой статьи желательно:
|
Разрабатывая архитектуру AMD64 (AMD-реализации x86-64), инженеры корпорации AMD решили навсегда покончить с главным «рудиментом» архитектуры x86 — сегментной моделью памяти, которая поддерживалась ещё со времён 8086. Однако из-за этого при разработке новой на то время — первой x86-64-версии — своего продукта для виртуализации программисты компании VMware столкнулись с непреодолимыми трудностями при реализации виртуальной машины для 64-битных гостевых систем[2]: поскольку для отделения а монитора от а «гостя» программой использовался механизм сегментации, эта задача стала практически неразрешимой.
Осознав ошибку, AMD вернула ограниченный вариант сегментной организации памяти, начиная с ревизии D архитектуры AMD64, что позволило запускать 64-битные ОС в виртуальных машинах. Intel этому примеру не последовала, и на её процессорах, не поддерживающих средства аппаратной виртуализации Intel VT (Intel Virtualization Technology)[3], запустить 64-битную виртуальную машину невозможно[4]. Для проверки того, возможен ли на процессоре запуск 64-битных гостевых ОС, VMware предоставляет вместе со своими продуктами специальную утилиту.
Запуск, установка 64-битных гостевых систем на данный момент (с 2013 г.) уже возможна. (продукт компании VMware — ESXi (workstation и тд.) — прекрасно поддерживает архитектуру x86-64.)
Следует отметить, что первоначально попавшие «под нож» команды LAHF и SAHF, которые также активно используются ПО виртуализации, затем были возвращены в систему команд. С распространением средств аппаратной виртуализации (Intel VT, AMD-V) потребность в сегментации постепенно отпадет.
![]() Технологии цифровых процессоров | |||||||||
---|---|---|---|---|---|---|---|---|---|
Архитектура | |||||||||
Архитектура набора команд | |||||||||
Машинное слово | |||||||||
Параллелизм |
| ||||||||
Реализации | |||||||||
Компоненты | |||||||||
Управление питанием |
Для улучшения этой статьи желательно:
|