x86-64 (также известный как x64, x86_64, AMD64 и Intel 64 ) - это 64-битная версия набора инструкций x86 . В нем представлены два новых режима работы, 64-разрядный режим и режим совместимости, а также новый 4-уровневый режим подкачки. В 64-битном режиме и новом режиме подкачки он поддерживает значительно большие объемы виртуальной памяти и физической памяти, чем это возможно в его 32-битных предшественниках, что позволяет программам хранить большие объемы данных в памяти. x86-64 также расширяет регистры общего назначения до 64-битных, а также увеличивает их количество с 8 (некоторые из которых имеют ограниченную или фиксированную функциональность, например, для управления стеком) до 16 (полностью общие), и предоставляет множество других улучшений. Операции с плавающей запятой поддерживаются посредством обязательных инструкций, подобных SSE2, и регистры стиля x87 / MMX обычно не используются (но все еще доступны даже в 64-битном режиме); вместо этого используется набор из 32 векторных регистров по 128 бит каждый. (Каждый может хранить одно или два числа с двойной точностью или от одного до четырех чисел с одинарной точностью или различные целочисленные форматы.) В 64-битном режиме инструкции модифицируются для поддержки 64-битных операндов и 64-битного режима адресации. Режим совместимости позволяет 16- и 32-битным пользовательским приложениям работать без изменений, сосуществуя с 64-битными приложениями, если 64-битная операционная система их поддерживает. Поскольку полные 16-битные и 32-битные наборы инструкций x86 остаются реализованными на оборудовании без какой-либо промежуточной эмуляции, эти старые исполняемые файлы могут работать с незначительным снижением производительности или без него, в то время как новые или модифицированные приложения могут использовать преимущества новых особенности конструкции процессора для достижения повышения производительности. Кроме того, процессор, поддерживающий x86-64, все еще включается в реальном режиме для полной обратной совместимости с 8086, поскольку процессоры x86, поддерживающие защищенный режим было выполнено с момента выпуска 80286.
Исходная спецификация, созданная AMD и выпущенная в 2000 году, была реализована AMD, Intel и VIA. Микроархитектура AMD K8 в процессорах Opteron и Athlon 64 была первой, кто ее реализовал. Это было первое существенное дополнение к архитектуре x86, разработанное не Intel, а другой компанией. Intel была вынуждена последовать их примеру и представила модифицированное семейство NetBurst, которое было программно совместимо со спецификацией AMD. VIA Technologies представила x86-64 в своей архитектуре VIA Isaiah с VIA Nano.
Архитектура x86-64 отличается от архитектуры Intel Itanium (ранее IA-64 ), который несовместим на уровне собственного набора команд с архитектурой x86. Операционные системы и приложения, скомпилированные для одного, не могут работать на другом.
AMD64 был создан как альтернатива радикально другой архитектуре IA-64, которая была разработана Intel и Hewlett Packard. Архитектура AMD64, первоначально анонсированная в 1999 году, а полная спецификация стала доступной в августе 2000 года, с самого начала позиционировалась AMD как эволюционный способ добавления 64-битных вычислительных возможностей к существующей архитектуре x86, в отличие от Подход Intel к созданию совершенно новой 64-битной архитектуры с IA-64.
Первый процессор на базе AMD64, Opteron, был выпущен в апреле 2003 года.
Процессоры AMD, реализующие архитектуру AMD64, включают Opteron, Athlon 64, Athlon 64 X2, Athlon 64 FX, Athlon II (за которым следует "X1", «X2», «X3» или «X4» для обозначения количества ядер и моделей XLT), Turion 64, Turion 64 X2, Sempron (Степпинг «Palermo» E6 и все модели «Manila»), Phenom (за которым следует «X3» или «X4», чтобы указать количество ядер), Phenom II (за которым следует «X2», «X3», «X4» или «X6» для обозначения количества ядер), FX, Fusion / APU и Ryzen / Epyc.
Основной определяющей характеристикой AMD64 является наличие 64-битных регистров процессора общего назначения (например, rax и rbx), 64-битных целочисленных арифметических операций. и логические операции, и 64-битные виртуальные адреса. Дизайнеры воспользовались возможностью, чтобы внести и другие улучшения. Некоторые из наиболее значительных изменений описаны ниже.
Хотя виртуальные адреса имеют ширину 64 бита в 64-битном режиме, текущие реализации (и все микросхемы, которые, как известно, находятся на стадии планирования) не позволяют использовать все виртуальное адресное пространство 2 байта (16 EiB). Это будет примерно в четыре миллиарда раз больше размера виртуального адресного пространства на 32-битных машинах. Большинству операционных систем и приложений в обозримом будущем не потребуется такое большое адресное пространство, поэтому реализация таких широких виртуальных адресов просто увеличит сложность и стоимость трансляции адресов без реальной выгоды. Поэтому AMD решила, что в первых реализациях архитектуры только 48 младших битов виртуального адреса будут фактически использоваться при трансляции адресов (таблица страниц поиск).
Кроме того, спецификация AMD требует, чтобы 16 старших битов любого виртуального адреса, биты с 48 по 63, были копиями бита 47 (аналогично расширению знака ). Если это требование не выполнено, процессор вызовет исключение. Адреса, соответствующие этому правилу, называются «канонической формой». Адреса канонической формы варьируются от 0 до 00007FFF'FFFFFFFF и от FFFF8000'00000000 до FFFFFFFF'FFFFFFFF, в общей сложности 256 ТиБ используемого виртуального адресного пространства. Это все еще в 65 536 раз больше, чем виртуальное адресное пространство 4 ГиБ 32-разрядных машин.
Эта функция упрощает последующее масштабирование до истинной 64-битной адресации. Многие операционные системы (включая, помимо прочего, семейство Windows NT ) берут для себя половину адресного пространства с более высоким адресом (именуемую пространство ядра ) и оставляют нижнюю часть адресного пространства. адресная половина (пользовательское пространство ) для кода приложения, стеков пользовательского режима, кучи и других областей данных. Дизайн «канонического адреса» гарантирует, что каждая реализация, совместимая с AMD64, по сути, имеет две половины памяти: нижняя половина начинается с 0000000000000000 и «растет вверх» по мере того, как становится доступным больше битов виртуального адреса, а верхняя половина «закрепляется» в верхнюю часть адресного пространства и растет вниз. Кроме того, обеспечение «канонической формы» адресов путем проверки неиспользуемых битов адреса предотвращает их использование операционной системой в тегированных указателях в качестве флагов, маркеров привилегий и т. Д., Поскольку такое использование может стать проблематичным, если архитектура расширен для реализации большего количества битов виртуального адреса.
Первые версии Windows для x64 даже не использовали полные 256 ТиБ; они были ограничены всего 8 ТиБ пользовательского пространства и 8 ТиБ пространства ядра. Windows не поддерживала все 48-битное адресное пространство до Windows 8.1, выпущенной в октябре 2013 года.
64-битный режим адресации ( «длинный режим ») является расширенным набором расширений физического адреса (PAE); из-за этого размеры страницы могут быть 4 KiB (2 байта) или 2 MiB (2 байта). В длинном режиме также поддерживаются страницы размером 1 ГиБ (2 байта). Вместо трехуровневой системы таблицы страниц, используемой системами в режиме PAE, системы, работающие в длинном режиме, используют четыре уровня таблицы страниц: Таблица указателей страниц-каталогов PAE расширена с четырех записей до 512, и добавлена дополнительная таблица Page-Map Level 4 (PML4), содержащая 512 записей в 48-битных реализациях. Полная иерархия сопоставления страниц размером 4 КиБ для всего 48-битного пространства займет чуть больше 512 ГиБ памяти (около 0,195% виртуального пространства 256 ТиБ).
Intel реализовала схему с 5-уровневой таблицей страниц, которая позволяет процессорам Intel 64 поддерживать 57-битное виртуальное адресное пространство. Дальнейшие расширения могут обеспечить полное 64-битное виртуальное адресное пространство и физическую память за счет увеличения размера записи таблицы страниц до 128-битного и уменьшить количество обходов страниц в 5-уровневой иерархии за счет использования большего размера выделения страниц 64 КиБ, который по-прежнему поддерживает 4 КиБ операции со страницами для обратной совместимости.
Операционная система также может ограничивать виртуальное адресное пространство. Подробности, где это применимо, приведены в разделе «Совместимость и характеристики операционной системы ».
Текущие процессоры AMD64 поддерживают физическое адресное пространство объемом до 2 байтов ОЗУ или 256 ТиБ. Однако по состоянию на июнь 2010 г. не было известных материнских плат x86-64 , поддерживающих 256 ТиБ ОЗУ. Операционная система может накладывать дополнительные ограничения на объем оперативной памяти, который можно использовать или поддерживать. Подробности по этому поводу приведены в разделе «Совместимость и характеристики операционной системы » данной статьи.
Архитектура имеет три основных режима работы: длительный режим, традиционный режим и реальный режим.
Операционная | Операционная система. Требуется | Тип кода., который выполняется | размер | ||||
---|---|---|---|---|---|---|---|
режим | подрежим | адрес (по умолчанию) | операнд (по умолчанию) | операнд (тип. Поддерживается) | Регистровый файл | ||
Длинный режим. | 64- битовый режим | 64-битный | 64-битный код | 64-битный | 32-битный | 8, 16, 32 или 64 бит | 16 регистров на файл |
Режим совместимости | 32-битный код | 32-битный | 32-битный | 8-, 16- или 32-битный | 8 регистров на файл | ||
16-битный код | 16 бит | 16 бит | 8, 16 или 32 бит | 8 регистров на файл | |||
Устаревший режим. | Защищенный режим | 32-битный | 32-битный код | 32-битный | 32-битный | 8, 16 или 32-битный | 8 регистров на файл |
16-битный защищенный режим | 16-битный код | 16 бит | 16 бит | 8, 16 или 32 бит | 8 регистров на файл | ||
Виртуальный режим 8086 | 16-битный или 32-битный защищенный режим | некоторые из промышленного режима | 16 бит | 16 бит | 8, 16 или 32 бит | 8 регистров на файл | |
Реальный. режим | Нереальный режим | нет | код реального режима | 16, 20 или 32 бит а | 16 бит | 8, 16 или 32 бита | 8 регистров на файл |
Реальный режим | нет | код реального режима | 16, 20 или 21 бит | 16 бит | 8, 16 или 32 бит | 8 регистров в файле |
Длинный режим - предполагаемый основной режим работы архитектуры; это комбинация собственного 64-битного режима процессора и комбинированного 32-битного и 16-битного режима совместимости. Он используется 64-битными операционными системами. В 64-битной операционной системе 64-битные программы работают в 64-битном режиме, а 32-битные и 16-битные приложения в защищенном режиме (не нужно использовать ни реальный режим, ни виртуальный режим 8086 для выполнения в любом времени) режим совместимости. Программы реального режима и программы, которые используют виртуальный режим 8086 в любом время, не могут работать в длительном режиме, если эти режимы не эмулируются в программном режиме. Однако такие программы могут быть запущены из операционной системы, работающей в длительном режиме на процессоре, поддерживающих VT-x или AMD-V, путем создания виртуального процессора, работающего в желаемом режиме.
Временный базовый набор инструкций тот же, почти нет потери производительности для выполнения кода x86 в защищенном режиме. Это отличается от Intel IA-64, где разные в базовом наборе команд означают, что запуск 32-битного кода должен быть либо в режиме эмуляции x86 (что замедляет процесс), либо с помощью специального сопроцессора x86. Однако на платформе x86-64 многие приложения x86 могут выиграть от 64-битной перекомпиляции из-за дополнительных регистров в 64-битном коде и гарантированной поддержки FPU на основе SSE2, что компилятор можно использовать для оптимизации. Приложения, которые регулярно обрабатывают целые числа шириной более 32, такие как криптографические алгоритмы, требуют переписать код, обрабатывающие целые числа, чтобы использовать преимущества 64-битных регистров.
Устаревший режим - это режим, используемым 32-битными или 16-битными операционными системами «защищенного режима». В этом режиме работает как старый процессор x86, так и работает только 16-битный и 32-битный код. Устаревший режим позволяет использовать виртуальную адресацию максимум 32 бита, что ограничивает виртуальное адресное пространство до 4 ГиБ. 64-битные программы нельзя запускать из устаревшего режима.
Реальный режим - это начальный режим работы при инициализации процессора. Он обратно совместим с исходными процессорами 8086 и 8088. Реальный режим сегодня в основном используется загрузчиками операционной системы, требуются архитектурные настройки для настройки деталей виртуальной памяти перед переходом в более высокие режимы.
Intel 64 - это реализация Intel x86-64, используемая и реализуемая в различных процессорах Intel.
Исторически AMD разработала и производила процессоры с наборами инструкций поцу оригинальных разработок Intel, но с x86-64 роли поменялись местами: Intel оказалась в позиции принятия ISA, которую AMD создала расширение собственной линейки процессоров Intel x86.
Первоначально проект Intel был под кодовым названием Ямхилл (от реки Ямхилл в долине Уилламетт в Орегоне). После нескольких лет отрицания своего существования Intel объявила на IDF в феврале 2004 г., что проект действительно находится в стадии реализации. В то время председатель Intel, Крейг Барретт, признал, что это был один из их худших секретов.
Название Intel для этого набора инструкций менялось несколько раз. Имя, используемое в IDF, было CT (предположительно для Clackamas Technology, еще одно кодовое название из реки Орегон ); через несколько недель они стали называть его IA-32e (для расширений IA-32 ), в марте 2004 г. обнародовали «официальное» название EM64T (технология Extended Memory 64). В конце 2006 года Intel начала вместо этого использовать название Intel 64 для реализации, с использованием AMD AMD64.
Первым процессором, реализовавшим Intel 64, был код многопроцессорного процессора Xeon. под названием Nocona в июне 2004 года. Напротив, первые чипы Prescott (февраль 2004 года) не поддерживали эту функцию. Впервые Intel начала продавать процессоры Pentium 4 с процессором Intel 64, использующие версию E0 ядра Prescott, продаваемую на рынке OEM как Pentium 4, модель F. В версии E0 также добавлена функция eXecute Disable (XD) (название Intel для NX bit ) в Intel 64 и был включен в текущую версию Xeon под кодовым названием Irwindale. Официальным выпуском Intel 64 (в то время под названием EM64T) Intel в качестве процессоров для массовых настольных ПК стал Prescott-2M степпинга N0.
Первым мобильным процессором Intel , реализующим Intel 64, является версией Merom процессора Core 2, выпущенная 27 июля 2006 г. Ни один из более ранних процессоров Intel для ноутбуков (Core Duo, Pentium M, Celeron M, Mobile Pentium 4 ) не поддерживает Intel 64.
Процессоры Intel, реализующие архитектуру Intel64, включая Pentium 4 F-series / 5x1 series, 506 и 516, Celeron D модели 3x1, 3x6, 355, 347, 352, 360 и 365 и все более поздние Celeron, все модели Xeon начиная с «Nocona », все модели Процессоры Pentium Dual-Core начиная с "Merom-2M ", Atom 230, 330, D410, D425, D510, D525, N450, N455, N470, N475, N550, N570, N2600 и N2800, все версии Pentium D, Pentium Extreme Edition, Core 2, Core i9, Core i7, Core i5 и Core i3 процессоры, а Xeon Phi Процессоры серии 7200.
VIA Technologies представила свою первую работу архитектуры x86-64 в 2008 г. году после пяти лет разработки ее подразделением по процессорам, Centaur Technology. 64-разрядная архитектура под кодовым названием «Isaiah» была представлена 24 января 2008 г. и запущена 29 мая под торговой маркой VIA Nano.
Процессор поддерживает ряд VIA- специальные расширения x86, предназначенные для повышения эффективности устройств с низким энергопотреблением. Ожидается, что Isaiah будет вдвое быстрее по производительности целых чисел и в четыре раза быстрее по производительности с плавающей запятой, чем предыдущее поколение VIA Esther при эквивалентном тактовая частота. Ожидается, что энергопотребление будет на уровне процессоров VIA предыдущего поколения с расчетной тепловой мощностью в диапазоне от 5 Вт до 25 Вт. Архитектура Isaiah представляет собой полностью новую конструкцию и поддерживает все функции. например, набор команд x86-64 и виртуализация x86, которые были недоступны в его предшественниках, строка VIA C7 при сохранении их расширений шифрования.
Хотя они почти идентичны, есть некоторые различия между двумя наборами инструкций в семантике редко используемых машинных инструкций (или действий), которые в основном используются для системного программирования. Компиляторы обычно исполняемые файлы (то есть машинный код ), которые избегают каких-либо различий, по крайней мере, для обычных прикладных программ. Поэтому это представляет интерес в основном для компиляторов, операционных систем и т.п., которым приходится иметь дело с отдельными системными инструкциями.
BSF
и BSR
Следует иначе, чем AMD64, когда равенство источника нулю а размер операнда составляет 32 бита. Процессор устанавливает нулевой флаг и оставляет верхние 32 бита места назначения неопределенными.SYSCFG
, TOP_MEM
и TOP_MEM2
.SYSCALL
/ SYSRET
только в 64-битном режиме (не в режиме совместимости) и позволяет SYSENTER
/ SYSEXIT
в обоих режимах. AMD64 не хватает SYSENTER
/ SYSEXIT
в обоих подрежимах длинного режима.FLD
или FSTP
80-битного сигнального NaN, в то время как процессоры Intel этого не делают.FXSAVE
и FXRSTOR
).CMPXCHG16B
, которая является расширением инструкции CMPXCHG8B
, присутствующая на большинстве пост- 80486 процессоров. Подобно CMPXCHG8B
, CMPXCHG16B
допускает атомарные операции с окта-словами (128-битные значения). Это полезно для параллельных алгоритмов, которые используют сравнение и замену для данных, размер которых превышает размер указателя, что является обычным для алгоритмов без блокировки и без ожидания. Без CMPXCHG16B
необходимо использовать обходные пути, такие как критический раздел или альтернативные подходы без блокировок. Его отсутствие также не позволяет 64-битной Windows до Windows 8.1 иметь адресное пространство пользовательского режима размером более 8 терабайт. 64-разрядная версия Windows 8.1 требует инструкции.LAHF
и SAHF
в 64-битовый режим. AMD представила эти инструкции (в том числе в 64-битном режиме) со своими процессорами Athlon 64, Opteron и Turion 64 версии D в марте 2005 года, а Intel представила инструкции для Pentium 4 G1 степпинга в декабре 2005 года. 64-битная версия Windows 8.1 требуется эта функция.В суперкомпьютерах, отслеживаемых TOP500, появление 64-битных расширений для архитектуры x86 позволило 64-битным процессоры x86 от AMD и Intel для замены большинства архитектур процессоров RISC, ранее использовавшихся в таких системах (включая PA-RISC, SPARC, Alpha и другие), а также как 32-битный x86, хотя сама Intel изначально безуспешно пыталась заменить x86 на новую несовместимую 64-битную архитектуру в процессоре Itanium.
По состоянию на 2020 год суперкомпьютер на базе Fujitsu A64FX под названием Fugaku является номером один. Первый суперкомпьютер на базе ARM появился в списке в 2018 году, и в последние годы сопроцессоры с архитектурой без процессора (GPGPU ) также сыграли большую роль в производительности. Сопроцессоры Intel Xeon Phi "Knights Corner", которые реализуют подмножество x86-64 с некоторыми векторными расширениями, также используются вместе с процессорами x86-64 в Tianhe-2 суперкомпьютер.
Следующие операционные системы и выпуски поддерживают архитектуру x86-64 в длинном режиме.
Предварительные инфраструктурные работы были начаты в феврале 2004 года для порта x86-64. Позже это развитие застопорилось. Разработка снова началась в июле 2007 г. и продолжалась в течение Google Summer of Code 2008 и SoC 2009. Первым официальным выпуском, который содержал поддержку x86-64, была версия 2.4.
FreeBSD Впервые поддержка x86-64 была добавлена под названием «amd64» в качестве экспериментальной архитектуры в 5.1-RELEASE в июне 2003 года. Она была включена в стандартную архитектуру распространения с версии 5.2-RELEASE в январе 2004 года. С тех пор FreeBSD обозначила ее в качестве платформы уровня 1. В версии 6.0-RELEASE устранены некоторые причуды при запуске исполняемых файлов x86 под amd64, и большинство драйверов работают так же, как и на архитектуре x86. В настоящее время ведется работа по более полной интеграции двоичного интерфейса приложения x86 (ABI) таким же образом, как в настоящее время работает совместимость с 32-битным ABI Linux.
x86-64 впервые была передана в дерево исходных текстов NetBSD 19 июня 2001 г. Начиная с версии NetBSD 2.0, выпущенной 9 декабря 2004 г., NetBSD / amd64 - это полностью интегрированный и поддерживаемый порт. 32-битный код по-прежнему поддерживается в 64-битном режиме с уровнем совместимости ядра netbsd-32 для 32-битных системных вызовов. Бит NX используется для предоставления неисполняемого стека и кучи с гранулярностью по страницам (сегментная гранулярность используется на 32-разрядной платформе x86).
OpenBSD поддерживает AMD64 с момента выпуска OpenBSD 3.5, выпущенного 1 мая 2004 года. Полная реализация поддержки AMD64 в дереве была достигнута до первого выпуска оборудования, поскольку AMD предоставила в аренду несколько машин для проекта хакатона в том же году. Разработчики OpenBSD перешли на платформу из-за ее поддержки NX bit, что позволило легко реализовать функцию W ^ X.
Код для порта AMD64 OpenBSD также работает на процессорах Intel 64, которые содержат клонированное использование расширений AMD64, но поскольку Intel не включила бит NX таблицы страниц в ранних процессорах Intel 64, W ^ Возможность X на этих процессорах Intel; позже процессоры Intel 64 добавили бит NX под названием «бит XD». Симметричная многопроцессорная обработка (SMP) работает на порте OpenBSD AMD64, начиная с версии 3.6 от 1 ноября 2004 года.
Можно ввести длинный режим в DOS без расширителя DOS, но пользователь должен вернуться в реальный режим, чтобы вызывать прерывания BIOS или DOS.
Также возможно войти в длинный режим с расширителем DOS, аналогичным DOS / 4GW, но более сложным, поскольку x86-64 отсутствует виртуальный режим 8086. Сама DOS не знает об этом, и не следует ожидать каких-либо преимуществ, если DOS не запускается в эмуляции с адекватным внутренним интерфейсом драйвера виртуализации, например: m интерфейс хранения задницы.
Linux был первым ядром операционной системы, которое запускало мощность оборудования x86-64 в длинном режиме, начиная с версии 2.4 в 2001 году (предшествовавшей доступности оборудования). Linux также обеспечивает обратную совместимость для запуска 32-разрядных исполняемых файлов. Это позволяет перекомпилировать программы в длинный режим, сохраняя при этом использование 32-битных программ. Некоторые дистрибутивы Linux поставляются с собственными ядрами x86-64 и пользовательскими областями. Некоторые, такие как Arch Linux, SUSE, Mandriva и Debian, позволяют устанавливать набор 32-битных компонентов и библиотек. при установке с 64-битного DVD, что позволяет большинству установки 32-битных приложений работать вместе с 64-битной ОС. Другие дистрибутивы, такие как Fedora, Slackware и Ubuntu, доступны в одной версии, скомпилированной для 32-разрядной архитектуры, а другой - для 64-разрядной архитектуры.. Fedora и Red Hat Enterprise Linux допускают одновременную установку всех компонентов пользовательского пространства как в 32-битной, так и в 64-битной версии в 64-битной системе.
x32 ABI (двоичный интерфейс приложения), представленный в Linux 3.4, позволяет программам, скомпилированным для x32 ABI, работать в 64-битном режиме x86-64, используя только 32-битные указатели и поля данных. Хотя это ограничивает программу виртуальным адресным пространством в 4 ГБ, это также уменьшает объем памяти, занимаемой программой, и в некоторых случаях позволяет ей работать быстрее.
64-разрядная версия Linux позволяет использовать до 128 ТБ виртуального адресного пространства для отдельных процессов и может адресовать примерно 64 ТБ физического с учетом ограничений процессора и системы.
Mac OS X 10.4.7 и выше версии Mac OS X 10.4 запускают 64-битные инструменты строки с использованием POSIX и математических библиотек на 64-битных машинах на базе Intel, так же как все версии Mac OS X 10.4 и 10.5 запускают их на 64-битные машины PowerPC. Никакие другие библиотеки или фреймворки не работают с 64-битными приложениями в Mac OS X 10.4. Ядро и все расширения только 32-разрядные.
Mac OS X 10.5 поддерживает приложения с 64-битным графическим интерфейсом, использующие Cocoa, Quartz, OpenGL и X11 на 64-битные машины на базе Intel, а также 64-битные машины PowerPC. Все библиотеки и фреймворки без графического интерфейса также поддерживают 64-разрядные приложения на этих платформах. Ядро и все расширения ядра только 32-разрядные.
Mac OS X 10.6 - это первая версия macOS, которая поддерживает 64-битное ядро . Однако не все 64-битные компьютеры могут запускать 64-битное ядро, и не все 64-битные компьютеры, которые могут запускать 64-битное ядро, будут делать это по умолчанию. 64-битное ядро, как и 32-битное ядро, поддерживает 32-битные приложения; оба ядра также поддерживают 64-битные приложения. 32-разрядные приложения имеют ограничение виртуального адресного пространства в 4 ГБ для любого ядра.
OS X 10.8 включает только 64-разрядное ядро, но продолжает поддерживать 32-разрядные приложения.
macOS 10.15 включает только 64-битное ядро и больше не поддерживает 32-битные приложения.
64-битное ядро не поддерживает 32-битные расширения ядра, а 32-битное ядро не поддерживает 64-битные расширения ядра.
macOS использует универсальный двоичный формат для упаковки 32- и 64-разрядных версий кода приложения и библиотеки в один файл; наиболее подходящая версия автоматически выбирается во время загрузки. В Mac OS X 10.6 универсальный двоичный формат также используется для ядра и для тех расширений ядра, которые поддерживают как 32-битные, так и 64-битные ядра.
Solaris 10 и более поздние версии поддерживают архитектуру x86-64.
Для Solaris 10, как и в архитектуре SPARC, существует только один образ операционной системы, который содержит 32-битное ядро и 64-битное ядро; он помечен как образ DVD-ROM "x64 / x86". По умолчанию загружается 64-разрядное ядро, что позволяет запускать как 64-разрядные, так и существующие или новые 32-разрядные исполняемые файлы. 32-битное ядро также можно выбрать вручную, и в этом случае будут работать только 32-битные исполняемые файлы. Команда isainfo
может использоваться, чтобы определить, работает ли система с 64-битным ядром.
Для Solaris 11 предоставляется только 64-битное ядро. Однако 64-битное ядро поддерживает как 32-, так и 64-битные исполняемые файлы, библиотеки и системные вызовы.
версии x64 клиента и сервера Microsoft Windows - Windows XP Professional x64 Edition и Windows Server 2003 x64 Edition - были выпущены в марте 2005. На самом деле они представляют собой одну и ту же сборку (5.2.3790.1830 SP1), поскольку они используют одну и ту же исходную базу и двоичные файлы операционной системы, поэтому даже системные обновления выпускаются в унифицированных пакетах, во многом аналогично выпускам Windows 2000 Professional и Server для x86. Windows Vista, которая также имеет множество различных редакций, была выпущена в январе 2007 года. Windows 7 была выпущена в июле 2009 года. Windows Server 2008 R2 продавалась только в редакции x64 и Itanium; более поздние версии Windows Server предлагают только версию x64.
Версии Windows для x64 до Windows 8.1 и Windows Server 2012 R2 предлагают следующее:
CMPXCHG16B
.В Windows 8.1 и Windows Server 2012 R2, как в пользовательском режиме, так и в режиме ядра виртуальные адресные пространства увеличены до 128 ТиБ. Эти версии Windows не устанавливаются на процессоры, в которых отсутствует инструкция CMPXCHG16B
.
Следующие дополнительные характеристики применимы ко всем версиям Windows x64:
.exe
) и библиотеки динамической компоновки (.dll
s) с использованием WoW64, если WoW64 поддерживается этой версией. Более того, 32-битная программа, если она была связана с опцией «большой адрес», может использовать до 4 ГиБ виртуального адресного пространства в 64-битной Windows вместо 2 ГиБ по умолчанию (необязательно 3 ГиБ с / 3GB
вариант загрузки и вариант ссылки «большой адрес»), предлагаемые 32-разрядной Windows. В отличие от использования параметра загрузки / 3GB
на x86, это не уменьшает виртуальное адресное пространство режима ядра, доступное для операционной системы. Следовательно, 32-разрядные приложения могут выиграть от работы в x64 Windows, даже если они не перекомпилированы для x86-64.GS: 0
- это адрес первого члена блока информации о потоке. Соблюдение этого соглашения упростило перенос x86-64, но потребовало от AMD сохранить функцию сегментов FS и GS в долгом режиме, хотя сегментированная адресация сама по себе не используется ни одной современной операционной системой.И PlayStation 4, и Xbox One, и их варианты включают в себя процессоры AMD x86-64 на основе микроархитектуры Jaguar . Прошивки и игры написаны в коде x86-64; никакой устаревший код x86 не используется.
Их следующие поколения, PlayStation 5 и Xbox Series X и Series S соответственно, также включают процессоры AMD x86-64 на основе Zen 2 микроархитектура.
Поскольку AMD64 и Intel 64 по существу схожи, многие программные и аппаратные продукты используют один термин, не зависящий от производителя, для обозначения их совместимости с обеими реализациями. Оригинальное обозначение AMD для этой архитектуры процессора, «x86-64», до сих пор иногда используется для этой цели, как вариант «x86_64». Другие компании, такие как Microsoft и Sun Microsystems / Oracle Corporation, используют сокращение «x64» в маркетинговых материалах.
Термин IA-64 относится к процессору Itanium, и его не следует путать с x86-64, поскольку это совершенно другой набор инструкций.
Многие операционные системы и продукты, особенно те, которые представили поддержку x86-64 до выхода Intel на рынок, используют термин «AMD64» или «amd64» для обозначения как AMD64, так и Intel 64.
arch
и в документации разработчика.x86-64 / AMD64 была разработана исключительно AMD. AMD владеет патентами на технологии, используемые в AMD64; эти патенты должны быть лицензированы AMD для реализации AMD64. Intel заключила соглашение о перекрестном лицензировании с AMD, лицензируя AMD их патенты на существующие технологии x86 и лицензируя AMD их патенты на технологии, используемые в x86-64. В 2009 году AMD и Intel урегулировали несколько судебных процессов и разногласий по перекрестному лицензированию, продлив свои соглашения о перекрестном лицензировании.