stringtranslate.com

x86-64

AMD Opteron , первый процессор, представивший расширения x86-64 в апреле 2003 г.
Пятитомный комплект « Руководства программиста по архитектуре x86-64» , опубликованный и распространенный AMD в 2002 году.

x86-64 (также известный как x64 , x86_64 , AMD64 и Intel 64 ) [примечание 1] — это 64-разрядная версия набора инструкций x86 , впервые анонсированная в 1999 году. Она представила два новых режима работы: 64-разрядный режим и режим совместимости, а также новый 4-уровневый режим подкачки страниц .

С 64-битным режимом и новым режимом страничного обмена он поддерживает значительно большие объемы виртуальной и физической памяти , чем это было возможно в его 32-битных предшественниках, что позволяет программам хранить большие объемы данных в памяти. x86-64 также расширяет регистры общего назначения до 64-битных и увеличивает их количество с 8 (некоторые из которых имели ограниченную или фиксированную функциональность, например, для управления стеком) до 16 (полностью общие), а также предоставляет множество других улучшений. Арифметика с плавающей точкой поддерживается через обязательные инструкции типа SSE2 [ требуется ссылка ] , а регистры в стиле x87 / MMX обычно не используются (но все еще доступны даже в 64-битном режиме); вместо этого используется набор из 16 векторных регистров , по 128 бит каждый. (Каждый регистр может хранить одно или два числа двойной точности или от одного до четырех чисел одинарной точности , или различные целочисленные форматы.) В 64-битном режиме инструкции модифицируются для поддержки 64-битных операндов и 64-битного режима адресации .

Режим совместимости, определенный в архитектуре, позволяет 16- и 32-разрядным пользовательским приложениям работать без изменений, сосуществуя с 64-разрядными приложениями, если 64-разрядная операционная система их поддерживает. [11] [примечание 2] Поскольку полные наборы инструкций x86 16- и 32-разрядных остаются реализованными на аппаратном уровне без какой-либо промежуточной эмуляции, эти старые исполняемые файлы могут работать с небольшим или нулевым снижением производительности, [13] в то время как более новые или измененные приложения могут использовать преимущества новых функций конструкции процессора для достижения улучшений производительности. Кроме того, процессор, поддерживающий 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 была быстро принята для настольных и портативных персональных компьютеров и серверов, которые обычно были сконфигурированы для 16 GiB ( гибибайт ) памяти или более. Она фактически заменила снятую с производства архитектуру Intel Itanium (ранее IA-64 ), которая изначально предназначалась для замены архитектуры x86. x86-64 и Itanium несовместимы на уровне собственного набора инструкций, а операционные системы и приложения, скомпилированные для одной архитектуры, не могут быть запущены на другой изначально.

AMD64

Логотип AMD64

История

AMD64 (также по-разному упоминаемая AMD в своей литературе и документации как «64-битная технология AMD» и «архитектура AMD x86-64») была создана как альтернатива радикально иной архитектуре IA-64, разработанной Intel и Hewlett-Packard , которая была обратно несовместима с IA-32 , 32-битной версией архитектуры x86 . AMD первоначально анонсировала AMD64 в 1999 году [14], а полная спецификация была доступна в августе 2000 года. [15] Поскольку AMD никогда не приглашалась стать стороной, вносящей вклад в архитектуру IA-64, и любое лицензирование казалось маловероятным, архитектура AMD64 с самого начала позиционировалась AMD как эволюционный способ добавления 64-битных вычислительных возможностей к существующей архитектуре x86 с поддержкой устаревшего 32-битного кода x86 , в отличие от подхода Intel по созданию совершенно новой, полностью несовместимой с x86 64-битной архитектуры с IA-64.

Первый процессор на базе AMD64 — Opteron — был выпущен в апреле 2003 года.

Реализации

Процессоры AMD, реализующие архитектуру AMD64, включают Opteron , Athlon 64 , Athlon 64 X2 , Athlon 64 FX , Athlon II (с последующими «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 ), 64-битных целочисленных арифметических и логических операций, а также 64-битных виртуальных адресов . [16] Разработчики воспользовались возможностью внести и другие улучшения.

Наиболее заметные изменения в 64-битных расширениях включают в себя:

Возможность работы с 64-битными целыми числами
Все регистры общего назначения (GPR) расширены с 32  до 64 бит, и все арифметические и логические операции, операции «память-регистр» и «регистр-память» и т. д. могут работать непосредственно с 64-битными целыми числами. Вставки и выталкивания в стеке по умолчанию имеют 8-байтовые шаги, а указатели имеют ширину 8 байт.
Дополнительные регистры
В дополнение к увеличению размера регистров общего назначения, число именованных регистров общего назначения увеличено с восьми (т. е. eax , ecx , edx , ebx , esp , ebp , esi , edi ) в x86 до 16 (т. е . rax , rcx , rdx , rbx , rsp , rbp , rsi , rdi , r8 , r9 , r10 , r11 , r12 , r13 , r14 , r15 ). Таким образом, можно хранить больше локальных переменных в регистрах, а не в стеке, и позволить регистрам хранить часто используемые константы; аргументы для небольших и быстрых подпрограмм также могут передаваться в регистрах в большей степени.
AMD64 по-прежнему имеет меньше регистров, чем многие наборы инструкций RISC (например, Power ISA имеет 32 GPR; 64-битные ARM , RISC-V I, SPARC , Alpha , MIPS и PA-RISC имеют 31) или машины типа VLIW , такие как IA-64 (у которой 128 регистров). Однако реализация AMD64 может иметь гораздо больше внутренних регистров, чем число архитектурных регистров, предоставляемых набором инструкций (см. переименование регистров ). (Например, ядра AMD Zen имеют 168 64-битных целочисленных и 160 128-битных векторных физических внутренних регистров с плавающей точкой.)
Дополнительные регистры XMM (SSE)
Аналогично, количество 128-битных регистров XMM (используемых для потоковых инструкций SIMD ) также увеличено с 8 до 16.
Традиционный стек регистров FPU x87 не включен в расширение размера файла регистра в 64-битном режиме, по сравнению с регистрами XMM, используемыми SSE2, которые были расширены. Стек регистров x87 не является простым файлом регистра, хотя он и обеспечивает прямой доступ к отдельным регистрам с помощью низкозатратных операций обмена.
Большее виртуальное адресное пространство
Архитектура AMD64 определяет 64-битный формат виртуального адреса, из которых младшие 48 бит используются в текущих реализациях. [11] : 120  Это позволяет использовать до 256  ТиБ (2 48 байт ) виртуального адресного пространства. Определение архитектуры позволяет увеличить этот предел в будущих реализациях до полных 64 бит, [11] : 2  : 3  : 13  : 117  : 120  расширяя виртуальное адресное пространство до 16  ЭиБ (2 64 байта). [17] Это сравнимо с 4  ГиБ (2 32 байта) для x86. [18]
Это означает, что с очень большими файлами можно работать, отображая весь файл в адресное пространство процесса (что часто намного быстрее, чем работа с вызовами чтения/записи файла), вместо того, чтобы отображать области файла в адресное пространство и из него.
Большее физическое адресное пространство
Первоначальная реализация архитектуры AMD64 реализовала 40-битные физические адреса и, таким образом, могла адресовать до 1 ТиБ (2,40 байт ) ОЗУ. [11] : 24  Текущие реализации архитектуры AMD64 (начиная с микроархитектуры AMD 10h ) расширяют это до 48-битных физических адресов [19] и, таким образом, могут адресовать до 256 ТиБ (2,48 байт ) ОЗУ. Архитектура позволяет расширить это до 52 бит в будущем [11] : 24  [20] (ограничено форматом записи таблицы страниц); [11] : 131  это позволило бы адресовать до 4 ПиБ ОЗУ. Для сравнения, 32-битные процессоры x86 ограничены 64 ГиБ ОЗУ в режиме расширения физических адресов (PAE) [21] или 4 ГиБ ОЗУ без режима PAE. [11] : 4 
Большее физическое адресное пространство в устаревшем режиме
При работе в устаревшем режиме архитектура AMD64 поддерживает режим Physical Address Extension (PAE), как и большинство современных процессоров x86, но AMD64 расширяет PAE с 36 бит до архитектурного предела в 52 бита физического адреса. Поэтому любая реализация допускает тот же предел физического адреса, что и в длинном режиме . [11] : 24 
Относительный доступ к данным указателя инструкции
Инструкции теперь могут ссылаться на данные относительно указателя инструкции (регистр RIP). Это делает позиционно-независимый код , который часто используется в общих библиотеках и коде, загружаемом во время выполнения, более эффективным.
Инструкции SSE
Первоначальная архитектура AMD64 приняла SSE и SSE2 от Intel в качестве основных инструкций. Эти наборы инструкций обеспечивают векторное дополнение к скалярному x87 FPU для типов данных одинарной и двойной точности. SSE2 также предлагает целочисленные векторные операции для типов данных с точностью от 8 до 64 бит. Это делает векторные возможности архитектуры наравне с возможностями самых передовых процессоров x86 своего времени. Эти инструкции также можно использовать в 32-битном режиме. Распространение 64-битных процессоров сделало эти векторные возможности повсеместными в домашних компьютерах, что позволило улучшить стандарты 32-битных приложений. Например, 32-битная версия Windows 8 требует наличия инструкций SSE2. [22] Инструкции SSE3 и более поздние наборы инструкций Streaming SIMD Extensions не являются стандартными функциями архитектуры.
Бит «No-Execute»
Бит No-Execute или бит NX (бит 63 записи таблицы страниц) позволяет операционной системе указывать, какие страницы виртуального адресного пространства могут содержать исполняемый код, а какие нет. Попытка выполнить код со страницы, помеченной как «no execute», приведет к нарушению доступа к памяти, аналогичному попытке записи на страницу, доступную только для чтения. Это должно затруднить вредоносному коду захват контроля над системой с помощью атак « переполнение буфера » или «непроверенный буфер». Подобная функция доступна на процессорах x86 с 80286 как атрибут дескрипторов сегментов ; однако это работает только для целого сегмента за раз.
Сегментированная адресация долгое время считалась устаревшим режимом работы, и все текущие операционные системы ПК фактически обходят ее, устанавливая для всех сегментов базовый адрес ноль и (в их 32-битной реализации) размер 4 ГиБ. AMD была первым поставщиком семейства x86, реализовавшим no-execute в режиме линейной адресации. Эта функция также доступна в устаревшем режиме на процессорах AMD64 и последних процессорах Intel x86, когда используется PAE.
Удаление старых функций
Несколько функций «системного программирования» архитектуры x86 либо не использовались, либо использовались недостаточно в современных операционных системах и либо недоступны на AMD64 в длинном (64-битном и совместимом) режиме, либо существуют только в ограниченной форме. К ним относятся сегментированная адресация (хотя сегменты FS и GS сохраняются в рудиментарной форме для использования в качестве указателей на внебазовые структуры операционной системы), [11] : 70  механизм переключения состояния задачи и виртуальный режим 8086. Эти функции остаются полностью реализованными в «устаревшем режиме», позволяя этим процессорам запускать 32-битные и 16-битные операционные системы без модификаций. Некоторые инструкции, которые оказались редко полезными, не поддерживаются в 64-битном режиме, включая сохранение/восстановление сегментных регистров в стеке, сохранение/восстановление всех регистров (PUSHA/POPA), десятичная арифметика, инструкции BOUND и INTO, а также «дальние» переходы и вызовы с непосредственными операндами.

Подробности виртуального адресного пространства

Каноническая форма адреса

Реализации канонического адресного пространства (диаграммы не в масштабе)

Хотя виртуальные адреса имеют ширину 64 бита в 64-битном режиме, текущие реализации (и все чипы, которые, как известно, находятся на стадии планирования) не позволяют использовать все виртуальное адресное пространство размером 2 64 байта (16  EiB ). Это было бы примерно в четыре миллиарда раз больше размера виртуального адресного пространства на 32-битных машинах. Большинству операционных систем и приложений не понадобится такое большое адресное пространство в обозримом будущем, поэтому реализация таких широких виртуальных адресов просто увеличит сложность и стоимость трансляции адресов без какой-либо реальной выгоды. Поэтому AMD решила, что в первых реализациях архитектуры только наименее значимые 48 бит виртуального адреса будут фактически использоваться в трансляции адресов ( поиск в таблице страниц ). [11] : 120 

Кроме того, спецификация AMD требует, чтобы самые значимые 16 бит любого виртуального адреса, биты с 48 по 63, были копиями бита 47 (подобно расширению знака ). Если это требование не выполняется, процессор выдаст исключение. [11] : 131  Адреса, соответствующие этому правилу, называются «канонической формой». [11] : 130  Адреса канонической формы располагаются от 0 до 00007FFF'FFFFFFFF и от FFFF8000'00000000 до FFFFFFFF'FFFFFFFF, что в общей сложности составляет 256  ТиБ используемого виртуального адресного пространства. Это все еще в 65 536 раз больше виртуального адресного пространства 4 ГиБ 32-битных машин.

Эта функция облегчает последующую масштабируемость до истинной 64-битной адресации. Многие операционные системы (включая, но не ограничиваясь, семейством Windows NT ) берут себе половину адресного пространства с более высоким адресом (называемую пространством ядра ) и оставляют половину с более низким адресом ( пространство пользователя ) для кода приложения, стеков пользовательского режима, куч и других областей данных. [23] Конструкция «канонического адреса» гарантирует, что каждая совместимая с AMD64 реализация имеет, по сути, две половины памяти: нижняя половина начинается с 00000000'00000000 и «растет вверх» по мере того, как становится доступным больше виртуальных адресных битов, в то время как верхняя половина «пристыкована» к верхней части адресного пространства и растет вниз. Кроме того, обеспечение «канонической формы» адресов путем проверки неиспользуемых битов адреса предотвращает их использование операционной системой в тегированных указателях в качестве флагов, маркеров привилегий и т. д., поскольку такое использование может стать проблематичным при расширении архитектуры для реализации большего количества виртуальных битов адреса.

Первые версии Windows для x64 даже не использовали все 256 ТиБ; они были ограничены всего 8 ТиБ пользовательского пространства и 8 ТиБ пространства ядра. [23] Windows не поддерживала все 48-битное адресное пространство до Windows 8.1 , которая была выпущена в октябре 2013 года. [23]

Структура таблицы страниц

64-битный режим адресации (« длинный режим ») является надмножеством расширений физических адресов (PAE); из-за этого размеры  страниц могут составлять 4 КиБ ( 2,12 байт) или 2  МиБ ( 2,21 байт). [11] : 120  Длинный режим также поддерживает размеры страниц 1  ГиБ ( 2,30 байт). [11] : 120  Вместо трехуровневой системы таблиц страниц , используемой системами в режиме PAE, системы, работающие в длинном режиме, используют четыре уровня таблиц страниц: Таблица указателей каталогов страниц PAE расширена с четырех записей до 512, а также добавлена ​​дополнительная таблица Page-Map Level 4 (PML4) , содержащая 512 записей в 48-битных реализациях. [11] : 131  Полная иерархия отображения страниц размером 4 КиБ для всего 48-битного пространства заняла бы чуть больше 512  ГиБ памяти (около 0,195% от 256 ТиБ виртуального пространства).

Intel реализовала схему с 5-уровневой таблицей страниц , которая позволяет процессорам Intel 64 поддерживать 57-битное виртуальное адресное пространство. [24] Дальнейшие расширения могут разрешить полное 64-битное виртуальное адресное пространство и физическую память с 12-битными дескрипторами таблицы страниц и 16- или 21-битными смещениями памяти для размеров выделения страниц 64 КиБ и 2 МиБ; запись таблицы страниц будет расширена до 128 бит для поддержки дополнительных аппаратных флагов для размера страницы и размера виртуального адресного пространства. [25]

Ограничения операционной системы

Операционная система также может ограничивать виртуальное адресное пространство. Подробности, где это применимо, приведены в разделе «Совместимость и характеристики операционной системы».

Подробности физического адресного пространства

Текущие процессоры AMD64 поддерживают физическое адресное пространство до 248 байт ОЗУ или 256  ТиБ . [19] Однако по состоянию на 2020 год не было известно ни одной материнской платы x86-64 , поддерживающей 256 ТиБ ОЗУ. [26] [27] [28] [29] [ проверка не пройдена ] Операционная система может накладывать дополнительные ограничения на объем ОЗУ, который можно использовать или поддерживать. Подробности по этому вопросу приведены в разделе «Совместимость и характеристики операционных систем» этой статьи.

Режимы работы

Архитектура имеет два основных режима работы: длительный режим и унаследованный режим.

  1. ^ abcd Обратите внимание, что 16-битный код, написанный для 80286 и ниже, не использует 32-битные инструкции операнда. Код, написанный для 80386 и выше, может использовать префикс переопределения размера операнда (0x66). Обычно этот префикс используется кодом защищенного и длинного режима для использования 16-битных операндов, так как этот код будет работать в сегменте кода с размером операнда по умолчанию 32 бита. В реальном режиме размер операнда по умолчанию составляет 16 бит, поэтому префикс 0x66 интерпретируется по-другому, изменяя размер операнда на 32 бита.
Диаграмма состояний режимов работы x86-64

Длинный режим

Режим Long — это основной режим работы архитектуры, он представляет собой комбинацию собственного 64-битного режима процессора и комбинированного 32-битного и 16-битного режима совместимости. Он используется 64-битными операционными системами. В 64-битной операционной системе 64-битные программы работают в 64-битном режиме, а 32-битные и 16-битные приложения защищенного режима (которым не нужно использовать ни реальный режим, ни виртуальный режим 8086 для выполнения в любое время) работают в режиме совместимости. Программы реального режима и программы, которые используют виртуальный режим 8086 в любое время, не могут работать в режиме long, если эти режимы не эмулируются программно. [11] : 11  Однако такие программы могут быть запущены из операционной системы, работающей в режиме long на процессорах, поддерживающих VT-x или AMD-V, путем создания виртуального процессора, работающего в желаемом режиме.

Поскольку базовый набор инструкций тот же, производительность при выполнении защищенного режима кода x86 практически не снижается. Это отличается от IA-64 от Intel , где различия в базовом наборе инструкций означают, что запуск 32-битного кода должен выполняться либо в эмуляции x86 (что делает процесс медленнее), либо с помощью выделенного сопроцессора x86. Однако на платформе x86-64 многие приложения x86 могут выиграть от 64-битной перекомпиляции из-за дополнительных регистров в 64-битном коде и гарантированной поддержки FPU на основе SSE2, которую компилятор может использовать для оптимизации. Однако приложения, которые регулярно обрабатывают целые числа шире 32 бит, такие как криптографические алгоритмы, потребуют переписывания кода, обрабатывающего огромные целые числа, чтобы воспользоваться преимуществами 64-битных регистров.

Устаревший режим

Режим Legacy — это режим, в котором находится процессор, когда он не находится в режиме long. [11] : 14  В этом режиме процессор действует как старый процессор x86, и может выполняться только 16- и 32-битный код. Режим Legacy допускает максимум 32-битную виртуальную адресацию, что ограничивает виртуальное адресное пространство 4 ГиБ. [11] : 14  : 24  : 118  64-битные программы не могут быть запущены из режима legacy.

Защищенный режим

Защищенный режим преобразован в подрежим устаревшего режима. [11] : 14  Это подрежим, в котором работают 32-разрядные операционные системы и 16-разрядные операционные системы защищенного режима при запуске на процессоре x86-64. [11] : 14 

Реальный режим

Реальный режим — это начальный режим работы, когда процессор инициализируется, и является подрежимом устаревшего режима. Он обратно совместим с оригинальными процессорами Intel 8086 и Intel 8088. Реальный режим в основном используется сегодня загрузчиками операционных систем, которые требуются архитектурой для настройки деталей виртуальной памяти перед переходом в более высокие режимы. Этот режим также используется любой операционной системой, которой необходимо взаимодействовать с системной прошивкой с помощью традиционного интерфейса в стиле BIOS . [30]

Интел 64

Intel 64 — это реализация x86-64 компанией Intel, используемая и реализованная в различных процессорах, производимых Intel.

История

Исторически AMD разрабатывала и производила процессоры с наборами инструкций, созданными по образцу оригинальных разработок Intel, но с появлением x86-64 роли поменялись местами: Intel оказалась в ситуации, когда ей пришлось принять ISA , созданную AMD в качестве расширения собственной линейки процессоров Intel x86.

Первоначально проект Intel носил кодовое название Yamhill [31] (в честь реки Ямхилл в долине Уилламетт в штате Орегон). После нескольких лет отрицания его существования, Intel объявила на IDF в феврале 2004 года , что проект действительно находится в стадии реализации. Председатель Intel в то время, Крейг Барретт , признал, что это был один из их самых плохо охраняемых секретов. [32] [33]

Название Intel для этого набора инструкций менялось несколько раз. Название, используемое на IDF, было CT [34] (предположительно [ оригинальное исследование? ] для Clackamas Technology , еще одно кодовое название от реки Орегон ); в течение нескольких недель они начали называть его IA-32e (для расширений IA-32 ), а в марте 2004 года представили «официальное» название EM64T (Extended Memory 64 Technology). В конце 2006 года Intel начала вместо этого использовать название Intel 64 для своей реализации, параллельно с использованием AMD названия AMD64. [35]

Первым процессором, реализовавшим Intel 64, был многосокетный процессор Xeon под кодовым названием Nocona в июне 2004 года. Напротив, начальные чипы Prescott (февраль 2004 года) не поддерживали эту функцию. Впоследствии Intel начала продавать Pentium 4 с поддержкой Intel 64, используя версию E0 ядра Prescott, продаваемую на рынке OEM как Pentium 4, модель F. Версия E0 также добавляет eXecute Disable (XD) (название Intel для бита NX ) к Intel 64 и была включена в тогдашний текущий Xeon под кодовым названием Irwindale . Официальным запуском Intel Intel 64 (под названием EM64T в то время) в массовых настольных процессорах был степпинг N0 Prescott-2M.

Первым мобильным процессором Intel , реализующим Intel 64, стала версия процессора Core 2 Merom , выпущенная 27 июля 2006 года. Ни один из более ранних процессоров Intel для ноутбуков ( Core Duo , Pentium M , Celeron M , Mobile Pentium 4 ) не реализует Intel 64.

Реализации

Процессоры Intel, реализующие архитектуру Intel64, включают Pentium 4 серии F/5x1, 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.

X86S

X86S — это упрощение x86-64, предложенное Intel в мае 2023 года для своих продуктов «Intel 64». [36] Новая архитектура уберет поддержку 16- и 32-разрядных операционных систем, в то время как 32-разрядные программы по-прежнему будут работать под управлением 64-разрядной ОС. Процессор больше не будет иметь устаревшего режима и будет запускаться непосредственно в 64-разрядном длинном режиме . Будет возможность переключиться на 5-уровневую страничную подкачку, не проходя через нестраничный режим. Конкретные удаленные функции включают в себя: [37]

Intel полагает, что изменение логически вытекает из удаления шлюза A20 в 2008 году и удаления поддержки 16- и 32-разрядных ОС в прошивке Intel в 2020 году. Поддержка устаревших операционных систем будет осуществляться посредством аппаратно-ускоренной виртуализации и/или эмуляции кольца 0. [37]

Расширенные возможности производительности

Advanced Performance Extensions — это предложение Intel 2023 года по новым инструкциям и 16 дополнительным регистрам общего назначения.

Реализация x86-64 от VIA

VIA Technologies представила свою первую реализацию архитектуры x86-64 в 2008 году после пяти лет разработки ее подразделением CPU Centaur Technology . [38] Под кодовым названием «Isaiah» 64-битная архитектура была представлена ​​24 января 2008 года, [39] и запущена 29 мая под торговой маркой VIA Nano . [40]

Процессор поддерживает ряд специфичных для VIA расширений x86, разработанных для повышения эффективности в маломощных устройствах. Ожидается, что архитектура Isaiah будет в два раза быстрее в целочисленной производительности и в четыре раза быстрее в производительности с плавающей точкой , чем предыдущее поколение VIA Esther при эквивалентной тактовой частоте . Потребляемая мощность также, как ожидается, будет на одном уровне с процессорами VIA предыдущего поколения, с тепловой расчетной мощностью в диапазоне от 5 Вт до 25 Вт. [41] Будучи совершенно новым дизайном, архитектура Isaiah была построена с поддержкой таких функций, как набор инструкций x86-64 и виртуализация x86 , которые были недоступны в его предшественниках, линейке VIA C7 , при сохранении их расширений шифрования.

Уровни микроархитектуры

В 2020 году в результате сотрудничества AMD, Intel, Red Hat и SUSE были определены три уровня микроархитектуры (или уровня функций) поверх базовой линии x86-64: x86-64-v2, x86-64-v3 и x86-64-v4. [42] [43] Эти уровни определяют конкретные функции, которые могут быть нацелены программистами для обеспечения оптимизации времени компиляции. Функции, предоставляемые каждым уровнем, следующие: [44]

Уровни функций микроархитектуры x86-64 также можно найти как AMD64-v1, AMD64-v2 .. или AMD64_v1 .. в настройках, где используется номенклатура "AMD64". Они используются как синонимы с номенклатурой x86-64-vX и, таким образом, функционально идентичны. Например, документация языка Go или дистрибутив Fedora Linux.

Все уровни включают функции, найденные в предыдущих уровнях. Расширения набора инструкций, не связанные с вычислениями общего назначения, включая AES-NI и RDRAND , исключены из требований уровня.

Различия между AMD64 и Intel 64

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

Последние внедрения

Более старые реализации

Принятие

Диаграмма областей, показывающая представительство различных семейств микропроцессоров в рейтинге суперкомпьютеров TOP500 с 1993 по 2020 год [78]

В суперкомпьютерах , отслеживаемых TOP500 , появление 64-битных расширений для архитектуры x86 позволило 64-битным процессорам x86 от AMD и Intel заменить большинство архитектур RISC-процессоров, ранее использовавшихся в таких системах (включая PA-RISC , SPARC , Alpha и другие), а также 32-битную x86, хотя сама Intel изначально безуспешно пыталась заменить x86 на новую несовместимую 64-битную архитектуру в процессоре Itanium .

По состоянию на 2023 год суперкомпьютер на базе HPE EPYC под названием Frontier занимает первое место. Первый суперкомпьютер на базе ARM появился в списке в 2018 году [79] , а в последние годы сопроцессоры не-CPU архитектуры ( GPGPU ) также играют большую роль в производительности. Сопроцессоры Intel Xeon Phi "Knights Corner" , которые реализуют подмножество x86-64 с некоторыми векторными расширениями [80] , также используются вместе с процессорами x86-64 в суперкомпьютере Tianhe-2 . [81]

Совместимость и характеристики операционных систем

Следующие операционные системы и выпуски поддерживают архитектуру x86-64 в длинном режиме .

БСД

DragonFly BSD

Предварительная работа по созданию инфраструктуры была начата в феврале 2004 года для порта x86-64. [82] Позднее эта разработка застопорилась. Разработка возобновилась в июле 2007 года [83] и продолжилась во время Google Summer of Code 2008 и SoC 2009. [84] [85] Первым официальным релизом, содержащим поддержку x86-64, стала версия 2.4. [86]

FreeBSD

FreeBSD впервые добавила поддержку x86-64 под названием "amd64" в качестве экспериментальной архитектуры в 5.1-RELEASE в июне 2003 года. Она была включена в качестве стандартной архитектуры дистрибутива с 5.2-RELEASE в январе 2004 года. С тех пор FreeBSD обозначила ее как платформу Tier 1. Версия 6.0-RELEASE устранила некоторые странности с запуском исполняемых файлов x86 под amd64, и большинство драйверов работают так же, как и на архитектуре x86. В настоящее время ведется работа по более полной интеграции двоичного интерфейса приложений x86 (ABI) таким же образом, как в настоящее время работает совместимость Linux 32-bit ABI.

NetBSD

Поддержка архитектуры x86-64 впервые была включена в исходное дерево NetBSD 19 июня 2001 года. Начиная с NetBSD 2.0, выпущенной 9 декабря 2004 года, NetBSD/amd64 является полностью интегрированным и поддерживаемым портом. 32-битный код по-прежнему поддерживается в 64-битном режиме с уровнем совместимости ядра netbsd-32 для 32-битных системных вызовов. Бит NX используется для предоставления неисполняемого стека и кучи с гранулярностью по страницам (гранулярность по сегментам используется на 32-битной x86).

OpenBSD

OpenBSD поддерживает AMD64 с OpenBSD 3.5, выпущенной 1 мая 2004 года. Полная реализация поддержки AMD64 в дереве была достигнута до первоначального выпуска оборудования, поскольку AMD предоставила несколько машин для хакатона проекта в том году. Разработчики OpenBSD взяли платформу из-за ее поддержки бита NX , что позволило легко реализовать функцию W^X .

Код для порта AMD64 OpenBSD также работает на процессорах Intel 64, которые содержат клонированное использование расширений AMD64, но поскольку Intel исключила бит таблицы страниц NX в ранних процессорах Intel 64, на этих процессорах Intel нет возможности W^X; более поздние процессоры Intel 64 добавили бит NX под названием "бит XD". Симметричная многопроцессорность (SMP) работает на порте AMD64 OpenBSD, начиная с версии 3.6 от 1 ноября 2004 года.

ДОС

В DOS можно войти в длинный режим без расширителя DOS [87] , но пользователь должен вернуться в реальный режим, чтобы вызвать прерывания BIOS или DOS.

Также возможно войти в длинный режим с помощью расширителя DOS , похожего на DOS/4GW , но более сложного, поскольку в x86-64 отсутствует виртуальный режим 8086. Сама DOS об этом не знает, и не следует ожидать никаких преимуществ, если только DOS не запущена в эмуляции с соответствующим бэкэндом драйвера виртуализации, например: интерфейсом массового хранения данных.

Линукс

Linux был первым ядром операционной системы, которое запускало архитектуру x86-64 в длинном режиме , начиная с версии 2.4 в 2001 году (до появления оборудования). [88] [89] Linux также обеспечивает обратную совместимость для запуска 32-битных исполняемых файлов. Это позволяет перекомпилировать программы в длинном режиме, сохраняя при этом использование 32-битных программ. Текущие дистрибутивы Linux поставляются с ядрами x86-64-native и пользовательскими пространствами . Некоторые из них, такие как Arch Linux , [90] SUSE , Mandriva и Debian , позволяют пользователям устанавливать набор 32-битных компонентов и библиотек при установке с 64-битного дистрибутивного носителя, что позволяет большинству существующих 32-битных приложений работать вместе с 64-битной ОС.

x32 ABI (Application Binary Interface), представленный в Linux 3.4, позволяет программам, скомпилированным для x32 ABI, работать в 64-битном режиме x86-64, используя только 32-битные указатели и поля данных. [91] [92] [93] Хотя это ограничивает программу виртуальным адресным пространством в 4 ГиБ, это также уменьшает объем памяти, занимаемый программой, и в некоторых случаях может позволить ей работать быстрее. [91] [92] [93]

64-разрядная версия Linux допускает до 128  ТиБ виртуального адресного пространства для отдельных процессов и может адресовать приблизительно 64 ТиБ физической памяти, в зависимости от ограничений процессора и системы, [94] или до 128 ПиБ (виртуальной) и 4 ПиБ (физической) с включенным 5-уровневым подкачиванием. [95]

macOS

Mac OS X 10.4.7 и более поздние версии Mac OS X 10.4 запускают 64-битные инструменты командной строки, используя библиотеки POSIX и math на 64-битных компьютерах на базе Intel, так же как все версии Mac OS X 10.4 и 10.5 запускают их на 64-битных компьютерах PowerPC. Никакие другие библиотеки или фреймворки не работают с 64-битными приложениями в Mac OS X 10.4. [96] Ядро и все расширения ядра являются только 32-битными.

Mac OS X 10.5 поддерживает 64-битные приложения GUI с использованием Cocoa , Quartz , OpenGL и X11 на 64-битных машинах на базе Intel, а также на 64-битных машинах PowerPC . [97] Все библиотеки и фреймворки, не являющиеся GUI, также поддерживают 64-битные приложения на этих платформах. Ядро и все расширения ядра являются только 32-битными.

Mac OS X 10.6 — первая версия macOS , которая поддерживает 64-битное ядро . Однако не все 64-битные компьютеры могут запускать 64-битное ядро, и не все 64-битные компьютеры, которые могут запускать 64-битное ядро, будут делать это по умолчанию. [98] 64-битное ядро, как и 32-битное ядро, поддерживает 32-битные приложения; оба ядра также поддерживают 64-битные приложения. 32-битные приложения имеют ограничение виртуального адресного пространства в 4 ГиБ под любым ядром. [99] [100] 64-битное ядро ​​не поддерживает 32-битные расширения ядра , а 32-битное ядро ​​не поддерживает 64-битные расширения ядра.

OS X 10.8 включает только 64-битное ядро, но продолжает поддерживать 32-битные приложения; однако она не поддерживает 32-битные расширения ядра.

macOS 10.15 включает только 64-битное ядро ​​и больше не поддерживает 32-битные приложения. Это удаление поддержки создало проблему для WineHQ (и коммерческой версии CrossOver ), поскольку ему по-прежнему необходимо иметь возможность запускать 32-битные приложения Windows. Решение, названное wine32on64 , состояло в добавлении thunks , которые переводят ЦП в режим совместимости с 32-битной версией и из него в номинально 64-битном приложении. [101] [102]

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 года. [103] Внутренне они фактически являются одной и той же сборкой (5.2.3790.1830 SP1), [104] [105], поскольку они используют одну и ту же исходную базу и двоичные файлы операционной системы, поэтому даже системные обновления выпускаются в унифицированных пакетах, во многом подобно редакциям 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 предлагают следующее:

В Windows 8.1 и Windows Server 2012 R2 виртуальные адресные пространства пользовательского режима и режима ядра были расширены до 128 ТиБ. [23] Эти версии Windows не будут устанавливаться на процессоры, у которых отсутствует эта CMPXCHG16Bинструкция.

Следующие дополнительные характеристики применимы ко всем версиям Windows x64:

Игровые приставки

И PlayStation 4 , и Xbox One , и все варианты этих консолей оснащены процессорами AMD x86-64, основанными на микроархитектуре Jaguar . [116] [117] Прошивки и игры написаны на коде x86-64; устаревший код x86 не задействован.

Текущее поколение PlayStation 5 и Xbox Series X и Series S соответственно также включают процессоры AMD x86-64, основанные на микроархитектуре Zen 2. [118] [119]

Хотя Steam Deck считается ПК, он использует специальный ускоренный процессор AMD x86-64 (APU), основанный на микроархитектуре Zen 2. [120]

Соглашения об именовании в отрасли

Поскольку AMD64 и Intel 64 в значительной степени схожи, многие программные и аппаратные продукты используют один нейтральный по отношению к поставщику термин для обозначения своей совместимости с обеими реализациями. Первоначальное обозначение AMD для этой архитектуры процессора, «x86-64», до сих пор используется для этой цели, [2] как и вариант «x86_64». [3] [4] Другие компании, такие как Microsoft [6] и Sun Microsystems / Oracle Corporation , [5] используют сокращение «x64» в маркетинговых материалах.

Термин IA-64 относится к процессору Itanium , и его не следует путать с x86-64, поскольку это совершенно другой набор инструкций.

Многие операционные системы и продукты, особенно те, в которых поддержка x86-64 появилась до выхода Intel на рынок, используют термин «AMD64» или «amd64» для обозначения как AMD64, так и Intel 64.

Лицензирование

x86-64/AMD64 был разработан исключительно AMD. До апреля 2021 года, когда истек срок действия соответствующих патентов, AMD владела патентами на технологии, используемые в AMD64; [123] [124] [125] эти патенты должны были быть лицензированы у AMD для внедрения AMD64. Intel заключила соглашение о кросс-лицензионном соглашении с AMD, лицензировав AMD свои патенты на существующие технологии x86 и лицензировав у AMD свои патенты на технологии, используемые в x86-64. [126] В 2009 году AMD и Intel урегулировали несколько судебных исков и разногласий по кросс-лицензионному соглашению, продлив свои соглашения о кросс-лицензионном соглашении. [127] [128] [129]

Смотрите также

Примечания

  1. ^ Для набора инструкций используются различные названия. До запуска использовались x86-64 и x86_64, а после выпуска AMD назвала его AMD64. [1] Intel изначально использовала названия IA-32e и EM64T , прежде чем окончательно остановилась на «Intel 64» для его реализации. Некоторые в отрасли, включая Apple , [2] [3] [4] используют x86-64 и x86_64, в то время как другие, в частности Sun Microsystems [5] (теперь Oracle Corporation ) и Microsoft , [6] используют x64. Семейство ОС BSD и несколько дистрибутивов Linux [7] [8] используют AMD64, как и Microsoft Windows внутри. [9] [10]
  2. ^ На практике 64-разрядные операционные системы обычно не поддерживают 16-разрядные приложения, хотя современные версии Microsoft Windows содержат ограниченный обходной путь, который эффективно поддерживает 16-разрядные установщики InstallShield и Microsoft ACME, молча заменяя их 32-разрядным кодом. [12]
  1. ^ The Register сообщил, что степпинг G1 (0F49h) Pentium 4 будет представлен 17 октября и поступит в продажу в больших объемах 14 ноября. [66] Однако в документе Intel говорится, что образцы будут доступны 9 сентября, тогда как 17 октября — это «дата первой доступности материалов после преобразования», которую Intel определяет как «прогнозируемую дату, когда заказчик может ожидать получения материалов после преобразования. ... заказчики должны быть готовы получить материалы после преобразования в эту дату». [67]

Ссылки

  1. ^ "Debian AMD64 FAQ". Debian Wiki . Архивировано из оригинала 26 сентября 2019 г. Получено 3 мая 2012 г.
  2. ^ abc "x86-64 Code Model". Apple. Архивировано из оригинала 2 июня 2012 г. Получено 23 ноября 2012 г.
  3. ^ abc arch(1) –  Руководство по основным командам Darwin и macOS
  4. ^ abc Кевин Ван Вехтен (9 августа 2006 г.). "re: Intel XNU bug report". Список рассылки Darwin-dev . Apple Computer . Архивировано из оригинала 1 февраля 2020 г. Получено 5 октября 2006 г. Ядро и инструменты разработчика стандартизировали "x86_64" для имени архитектуры Mach-O.
  5. ^ ab "Solaris 10 на AMD Opteron". Oracle. Архивировано из оригинала 25 июля 2017 г. Получено 9 декабря 2010 г.
  6. ^ ab "Microsoft 64-Bit Computing". Microsoft. Архивировано из оригинала 12 декабря 2010 г. Получено 9 декабря 2010 г.
  7. ^ "AMD64 Port". Debian. Архивировано из оригинала 26 сентября 2019 г. Получено 23 ноября 2012 г.
  8. ^ "Gentoo/AMD64 Project". Gentoo Project. Архивировано из оригинала 3 июня 2013 г. Получено 27 мая 2013 г.
  9. ^ "Подробности реализации WOW64". Архивировано из оригинала 13 апреля 2018 г. Получено 24 января 2016 г.
  10. ^ "ProcessorArchitecture Class". Архивировано из оригинала 3 июня 2017 г. Получено 24 января 2016 г.
  11. ^ abcdefghijklmnopqrstu AMD Corporation (декабрь 2016 г.). "Volume 2: System Programming" (PDF) . AMD64 Architecture Programmer's Manual . AMD Corporation. Архивировано (PDF) из оригинала 13 июля 2018 г. . Получено 25 марта 2017 г. .
  12. Raymond Chen (31 октября 2013 г.). «Если в 64-битной Windows нет слоя эмуляции 16-битной версии, почему некоторым 16-битным установщикам разрешено работать?». Архивировано из оригинала 14 июля 2021 г. . Получено 14 июля 2021 г. .
  13. ^ "IBM WebSphere Application Server 64-bit Performance Demystified" (PDF) . IBM Corporation. 6 сентября 2007 г. стр. 14. Архивировано (PDF) из оригинала 25 января 2022 г. . Получено 9 апреля 2010 г. Рисунки 5, 6 и 7 также показывают, что 32-разрядная версия WAS запускает приложения с полной собственной производительностью оборудования на платформах POWER и x86-64. В отличие от некоторых 64-разрядных архитектур процессоров, оборудование POWER и x86-64 не эмулирует 32-разрядный режим. Поэтому приложения, которые не получают выгоды от 64-разрядных функций, могут работать с полной производительностью на 32-разрядной версии WebSphere, работающей на вышеупомянутых 64-разрядных платформах.
  14. ^ "AMD раскрывает новые технологии на форуме Microporcessor" (пресс-релиз). AMD. 5 октября 1999 г. Архивировано из оригинала 8 марта 2012 г. Получено 9 ноября 2010 г.
  15. ^ "AMD выпускает архитектурную спецификацию x86-64; обеспечивает рыночную миграцию на 64-разрядные вычисления" (пресс-релиз). AMD. 10 августа 2000 г. Архивировано из оригинала 8 марта 2012 г. Получено 9 ноября 2010 г.
  16. ^ Руководство программиста по архитектуре AMD64 (PDF) . стр. 1.
  17. ^ Мауэрер, В. (2010). Профессиональная архитектура ядра Linux. Джон Уайли и сыновья.
  18. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A: Руководство по системному программированию, часть 1" (PDF) . стр. 4–7. Архивировано (PDF) из оригинала 16 мая 2011 г. Получено 10 июля 2019 г.
  19. ^ ab "Руководство разработчика BIOS и ядра (BKDG) для процессоров AMD семейства 10h" (PDF) . стр. 24. Архивировано (PDF) из оригинала 18 апреля 2016 г. Получено 27 февраля 2016 г. Физическое адресное пространство увеличено до 48 бит.
  20. ^ "Миф и факты о 64-битном Linux" (PDF) . 2 марта 2008 г. стр. 7. Архивировано из оригинала (PDF) 10 октября 2010 г. . Получено 30 мая 2010 г. Физическое адресное пространство увеличено до 48 бит
  21. ^ Shanley, Tom (1998). Архитектура систем Pentium Pro и Pentium II . Серия «Архитектура систем ПК» (второе издание). Addison-Wesley. стр. 445. ISBN 0-201-30973-4.
  22. ^ Корпорация Microsoft. «Что такое PAE, NX и SSE2 и почему мой ПК должен их поддерживать для работы Windows 8?». Архивировано из оригинала 11 апреля 2013 г. Получено 19 марта 2013 г.
  23. ^ abcd "Memory Limits for Windows Releases". MSDN . Microsoft . 16 ноября 2013 г. Архивировано из оригинала 6 января 2014 г. Получено 20 января 2014 г.
  24. ^ "5-уровневый пейджинг и 5-уровневый EPT" (PDF) . Intel. Май 2017. Архивировано (PDF) из оригинала 5 декабря 2018 г. . Получено 17 июня 2017 г. .
  25. Патент США 9858198, Ларри Сейлер, «Система страниц 64 КБ, которая поддерживает операции со страницами 4 КБ», опубликован 29 декабря 2016 г., выдан 2 января 2018 г., передан корпорации Intel. 
  26. ^ "Opteron 6100 Series Motherboards". Supermicro Corporation. Архивировано из оригинала 3 июня 2010 г. Получено 22 июня 2010 г.
  27. ^ "Supermicro XeonSolutions". Supermicro Corporation. Архивировано из оригинала 27 мая 2010 г. Получено 20 июня 2010 г.
  28. ^ "Opteron 8000 Series Motherboards". Supermicro Corporation. Архивировано из оригинала 27 мая 2010 г. Получено 20 июня 2010 г.
  29. ^ "Tyan Product Matrix". MiTEC International Corporation. Архивировано из оригинала 6 июня 2010 г. Получено 21 июня 2010 г.
  30. ^ ab "Из архивов AMI: AMIBIOS 8 и переход на EFI". American Megatrends . 8 сентября 2017 г. Архивировано из оригинала 25 октября 2021 г. Получено 25 октября 2021 г.
  31. ^ "Intel продолжает проект Yamhill?". Neowin . Архивировано из оригинала 5 июня 2022 г. Получено 5 июня 2022 г.
  32. ^ "Крейг Барретт подтверждает 64-битные расширения адресов для Xeon. И Prescott". The Inquirer. 17 февраля 2004 г. Архивировано из оригинала 12 января 2013 г. Получено 20 августа 2017 г.
  33. ^ ""Обзор 64-битных вычислений", с internetnews.com". Архивировано из оригинала 25 сентября 2012 г. Получено 18 сентября 2006 г.
  34. ^ Лапедус, Марк (6 февраля 2004 г.). «Intel продемонстрирует линейку 64-битных процессоров CT на IDF». EDN . AspenCore Media. Архивировано из оригинала 25 мая 2021 г. . Получено 25 мая 2021 г. .
  35. ^ "Архитектура Intel 64". Intel . Архивировано из оригинала 29 июня 2011 г. Получено 29 июня 2007 г.
  36. ^ "Intel публикует спецификацию "X86-S" только для 64-битной архитектуры". www.phoronix.com .
  37. ^ ab «Представление упрощенной архитектуры Intel для будущего». Intel .
  38. ^ "VIA выпустит новую архитектуру процессора в 1Q08" (требуется подписка) . DigiTimes . 25 июля 2007 г. Архивировано из оригинала 3 декабря 2008 г. Получено 25 июля 2007 г.
  39. Стоукс, Джон (23 января 2008 г.). «Раскрыт Isaiah: новая архитектура VIA с низким энергопотреблением». Ars Technica. Архивировано из оригинала 27 января 2008 г. Получено 24 января 2008 г.
  40. ^ "VIA запускает семейство процессоров VIA Nano" (пресс-релиз). VIA . 29 мая 2008 г. Архивировано из оригинала 3 февраля 2019 г. Получено 25 мая 2017 г.
  41. ^ "VIA Isaiah Architecture Introduction" (PDF) . VIA . 23 января 2008 г. Архивировано из оригинала (PDF) 7 сентября 2008 г. Получено 31 июля 2013 г.
  42. ^ Weimer, Florian (10 июля 2020 г.). «Новые уровни микроархитектуры x86-64». llvm-dev (список рассылки). Архивировано из оригинала 14 апреля 2021 г. . Получено 11 марта 2021 г. .
  43. ^ Weimer, Florian (5 января 2021 г.). «Сборка Red Hat Enterprise Linux 9 для уровня микроархитектуры x86-64-v2». Блог разработчиков Red Hat . Архивировано из оригинала 20 февраля 2022 г. Получено 22 марта 2022 г.
  44. ^ "System V Application Binary Interface Low Level System Information". x86-64 psABI repo . 29 января 2021 г. Архивировано из оригинала 2 февраля 2021 г. Получено 11 марта 2021 г. – через GitLab .
  45. ^ "QEMU version 7.2.0 released - QEMU". www.qemu.org . Архивировано из оригинала 21 декабря 2022 г. Получено 9 января 2023 г.
  46. ^ "ChangeLog/7.2 - QEMU". wiki.qemu.org . Архивировано из оригинала 9 января 2023 г. . Получено 9 января 2023 г. .
  47. ^ Wasson, Scott (23 марта 2005 г.). "64-битные вычисления в теории и практике". The Tech Report . Архивировано из оригинала 12 марта 2011 г. Получено 22 марта 2011 г.
  48. ^ "Обсуждение Stack Overflow". Март 2021 г. Архивировано из оригинала 11 января 2023 г. Получено 2 марта 2021 г.
  49. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A–Z" (PDF) . Intel. Сентябрь 2013 г. С. 4–397. Архивировано (PDF) из оригинала 20 октября 2013 г. Получено 21 января 2014 г.
  50. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, AZ" (PDF) . Intel. Сентябрь 2013 г. С. 4–400. Архивировано (PDF) из оригинала 20 октября 2013 г. Получено 21 января 2014 г.
  51. ^ "Как отказ от сегментации в режиме AMD64 long mode сломал VMware". Pagetable.com. 9 ноября 2006 г. Архивировано из оригинала 18 июля 2011 г. Получено 2 мая 2010 г.
  52. ^ "VMware and CPU Virtualization Technology" (PDF) . VMware. Архивировано (PDF) из оригинала 17 июля 2011 г. . Получено 8 сентября 2010 г. .
  53. ^ "Архив ядра Linux: [ИСПРАВЛЕНИЕ 2/5] KVM: svm: Запретить EFER.LMSLE на оборудовании, которое его не поддерживает". lkml.indiana.edu . Получено 3 ноября 2023 г.
  54. ^ "AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions" (PDF) . AMD. Май 2018. стр. 419. Архивировано (PDF) из оригинала 20 августа 2018 г. . Получено 2 августа 2018 г. .
  55. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, AZ" (PDF) . Intel. Сентябрь 2014 г. стр. 4–412. Архивировано (PDF) из оригинала 13 января 2015 г. Получено 28 декабря 2014 г.
  56. ^ Хади Браис, Значение инструкции x86 LFENCE, 14 мая 2018 г. Архивировано 10 июня 2023 г.
  57. ^ "Live Migration with AMD-V™ Extended Migration Technology" (PDF) . developer.amd.com . Архивировано (PDF) из оригинала 6 декабря 2022 г. . Получено 30 июня 2022 г. .
  58. ^ Магед М. Майкл. "Практические реализации LL/SC/VL без блокировки и ожидания с использованием 64-битного CAS" (PDF) . IBM. Архивировано (PDF) из оригинала 2 мая 2013 г. . Получено 21 января 2014 г. .
  59. ^ darwou (20 августа 2004 г.). «Почему виртуальное адресное пространство вообще равно 4 ГБ?». The Old New Thing . Microsoft. Архивировано из оригинала 26 марта 2017 г. . Получено 25 марта 2017 г. .
  60. ^ ab "Системные требования — Windows 8.1". Архивировано из оригинала 28 апреля 2014 г. Получено 27 апреля 2014 г. Для установки 64-разрядной ОС на 64-разрядный ПК ваш процессор должен поддерживать CMPXCHG16b, PrefetchW и LAHF/SAHF.
  61. ^ Петков, Борислав (10 августа 2009 г.). "Re: [PATCH v2] x86: clear irregularly forceed X86_FEATURE_LAHF_LM flag". Список рассылки ядра Linux . Архивировано из оригинала 11 января 2023 г. Получено 30 июня 2022 г.
  62. ^ "Revision Guide for AMD Athlon 64 and AMD Opteron Processors" (PDF) . AMD. Архивировано (PDF) из оригинала 24 августа 2009 г. . Получено 18 июля 2009 г. .
  63. ^ "Уведомление об изменении продукта 105224 - 01" (PDF) . Intel. Архивировано из оригинала (PDF) 17 ноября 2005 г.
  64. ^ "Обновление спецификаций процессоров Intel® Pentium® D серии 800 и Intel® Pentium® Extreme Edition 840" (PDF) . Архивировано (PDF) из оригинала 18 мая 2021 г. . Получено 30 июня 2022 г. .
  65. ^ "Intel Xeon 2.8 GHz - NE80551KG0724MM / BX80551KG2800HA". CPU-World . Архивировано из оригинала 28 июня 2020 г. Получено 30 июня 2022 г.
  66. ^ Смит, Тони (23 августа 2005 г.). «Intel tweaks EM64T for full AMD64 compatible». The Register . Архивировано из оригинала 30 июня 2022 г. . Получено 30 июня 2022 г. .
  67. ^ "Уведомление об изменении продукта 105271 – 00" (PDF) . Intel. Архивировано из оригинала (PDF) 17 ноября 2005 г.
  68. ^ 0F47h ​​дебютировал в степпинге B0 Pentium D 21 октября, [63] [64] но 0F48h, который также поддерживает LAHF/SAHF, был выпущен 10 октября в двухъядерном Xeon . [65] [a]
  69. ^ "Уведомление об изменении продукта 104101 – 00" (PDF) . Intel. Архивировано из оригинала (PDF) 16 июля 2004 г.
  70. ^ "64-разрядный процессор Intel® Xeon™ MP с кэшем L3 объемом до 8 МБ, техническое описание" (PDF) . Архивировано (PDF) из оригинала 17 ноября 2022 г. . Получено 17 ноября 2022 г. .
  71. ^ "Justin Boggs's at Microsoft PDC 2008". стр. 5. Архивировано из оригинала 17 ноября 2022 г. Получено 17 ноября 2022 г.
  72. ^ Уолдекер, Брайан. «Многоядерные процессоры AMD Opteron» (PDF) . стр. 13. Архивировано (PDF) из оригинала 13 декабря 2022 г. Получено 17 ноября 2022 г.
  73. ^ "Intel® Xeon® Processor 7500 Series Datasheet, Volume 2" (PDF) . Архивировано (PDF) из оригинала 17 ноября 2022 г. . Получено 17 ноября 2022 г. .
  74. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32". Сентябрь 2014 г. стр. 2–21. Архивировано из оригинала 14 мая 2019 г. Архитектура Intel 64 увеличивает линейное адресное пространство для программного обеспечения до 64 бит и поддерживает физическое адресное пространство до 46 бит.
  75. Логан, Том (14 ноября 2011 г.). «Обзор Intel Core i7-3960X». Архивировано из оригинала 28 марта 2016 г. Получено 1 июля 2022 г.
  76. ^ Ye, Huaisheng. «Введение в 5-уровневую страничную память в масштабируемых процессорах Intel Xeon 3-го поколения с Linux» (PDF) . Lenovo. Архивировано (PDF) из оригинала 26 мая 2022 г. . Получено 1 июля 2022 г. .
  77. ^ Кеннеди, Патрик (10 ноября 2022 г.). «AMD EPYC Genoa превосходит Intel Xeon в потрясающей моде». ServeTheHome . стр. 2. Архивировано из оригинала 17 ноября 2022 г. Получено 17 ноября 2022 г.
  78. ^ "Статистика | TOP500 Supercomputer Sites". Top500.org. Архивировано из оригинала 19 марта 2014 г. Получено 22 марта 2014 г.
  79. ^ "Sublist Generator | TOP500 Supercomputer Sites". www.top500.org . Архивировано из оригинала 7 декабря 2018 г. . Получено 6 декабря 2018 г. .
  80. ^ "Справочное руководство по архитектуре набора инструкций сопроцессора Intel® Xeon PhiTM" (PDF) . Intel. 7 сентября 2012 г. раздел B.2 Ограничения режима 64-разрядного сопроцессора Intel Xeon Phi. Архивировано (PDF) из оригинала 21 мая 2014 г. . Получено 21 мая 2014 г. .
  81. ^ "Intel Powers the World's Fastest Supercomputer, Reveals New and Future High Performance Computing Technologies". Архивировано из оригинала 22 июня 2013 г. Получено 21 июня 2013 г.
  82. ^ "cvs commit: src/sys/amd64/amd64 genassym.c src/sys/amd64/include asm.h atomic.h bootinfo.h coredump.h cpufunc.h elf.h endian.h exec.h float.h fpu.h frame.h globaldata.h ieeefp.h limits.h lock.h md_var.h param.h pcb.h pcb_ext.h pmap.h proc.h profile.h psl.h ..." Архивировано из оригинала 4 декабря 2008 г. Получено 3 мая 2009 г.
  83. ^ "AMD64 port". Архивировано из оригинала 18 мая 2010 г. Получено 3 мая 2009 г.
  84. ^ "DragonFlyBSD: GoogleSoC2008". Архивировано из оригинала 27 апреля 2009 г. Получено 3 мая 2009 г.
  85. ^ "Summer of Code приняты студенты". Архивировано из оригинала 4 сентября 2010 года . Получено 3 мая 2009 года .
  86. ^ "DragonFlyBSD: release24". Архивировано из оригинала 23 сентября 2009 г. Получено 3 мая 2009 г.
  87. ^ "Учебник по входу в защищенный и длинный режим из DOS". Архивировано из оригинала 22 февраля 2017 г. Получено 6 июля 2008 г.
  88. ^ Энди Клин (26 июня 2001 г.). "Перенос Linux на x86-64". Архивировано из оригинала 10 сентября 2010 г. Статус: Ядро, компилятор, цепочка инструментов работают. Ядро загружается и работает на симуляторе и используется для переноса пользовательского пространства и запуска программ
  89. ^ Энди Клин. "Страница Энди Клин". Архивировано из оригинала 7 декабря 2009 г. Получено 21 августа 2009 г. Это была оригинальная статья, описывающая порт ядра Linux x86-64, когда x86-64 был доступен только на симуляторах.
  90. ^ "Arch64 FAQ". 23 апреля 2012 г. Архивировано из оригинала 14 мая 2012 г. Получено 11 мая 2012 г. Вы можете использовать пакеты multilib или chroot i686.
  91. ^ ab Thorsten Leemhuis (13 сентября 2011 г.). "Журнал ядра: x32 ABI обходит недостатки 64-битной архитектуры". www.h-online.com. Архивировано из оригинала 28 октября 2011 г. Получено 1 ноября 2011 г.
  92. ^ ab "x32 - собственный 32-битный ABI для x86-64". linuxplumbersconf.org. Архивировано из оригинала 5 мая 2012 г. Получено 1 ноября 2011 г.
  93. ^ ab "x32-abi". Google Sites. Архивировано из оригинала 30 октября 2011 г. Получено 1 ноября 2011 г.
  94. ^ "AMD64 Port". debian.org. Архивировано из оригинала 26 сентября 2019 г. Получено 29 октября 2011 г.
  95. ^ "5-уровневое пейджинговое разбиение". kernel.org . Получено 7 февраля 2024 г. .
  96. ^ "Apple – Mac OS X Xcode 2.4 Release Notes: Compiler Tools". Apple Inc. 11 апреля 2007 г. Архивировано из оригинала 22 апреля 2009 г. Получено 19 ноября 2012 г.
  97. ^ "Apple – Mac OS X Leopard – Technology - 64-bit". Apple Inc. Архивировано из оригинала 12 января 2009 г. Получено 19 ноября 2012 г.
  98. ^ "Mac OS X v10.6: Mac, использующие 64-битное ядро". Apple Inc. Архивировано из оригинала 31 августа 2009 г. Получено 29 ноября 2012 г.
  99. ^ Джон Сиракуза. "Mac OS X 10.6 Snow Leopard: обзор Ars Technica". Ars Technica LLC. Архивировано из оригинала 9 октября 2009 г. Получено 20 июня 2010 г.
  100. ^ "Mac OS X Technology". Apple Inc. Архивировано из оригинала 28 марта 2011 г. Получено 19 ноября 2012 г.
  101. ^ Schmid, J; Thomases, K; Ramey, J; Czekalla, U; Mathieu, B; Abhiram, R (10 сентября 2019 г.). «So We Don't Have a Solution for Catalina... Jet». Блог CodeWeavers . Архивировано из оригинала 29 сентября 2021 г. . Получено 29 сентября 2021 г. .
  102. ^ Thomases, Ken (11 декабря 2019 г.). "win32 на macOS". WineHQ . Архивировано из оригинала 11 ноября 2020 г. . Получено 29 сентября 2021 г. .
  103. ^ «Microsoft повышает предел скорости с появлением 64-разрядных версий Windows Server 2003 и Windows XP Professional». Центр новостей Microsoft (пресс-релиз). 25 апреля 2005 г. Получено 29 января 2024 г.
  104. ^ "Описание версий Windows Server 2003 и Windows XP Professional x64 Edition на базе x64". Поддержка Microsoft . Архивировано из оригинала 20 апреля 2016 г. Получено 14 августа 2016 г.
  105. ^ "Windows Server 2003 SP1 Administration Tools Pack". Центр загрузки Microsoft . Архивировано из оригинала 27 августа 2016 г. Получено 14 августа 2016 г.
  106. ^ ab "/LARGEADDRESSAWARE (обработка больших адресов)". Документация Visual Studio 2022 – Справочник по компоновщику MSVC – Параметры компоновщика MSVC . Microsoft. Архивировано из оригинала 21 декабря 2022 г. . Получено 21 декабря 2022 г. Параметр /LARGEADDRESSAWARE сообщает компоновщику, что приложение может обрабатывать адреса размером более 2 гигабайт.
  107. ^ abc Мэтт Пьетрек (май 2006 г.). «Все, что вам нужно знать для начала программирования 64-битных систем Windows». Microsoft . Получено 18 апреля 2023 г. .
  108. ^ Крис Сент-Аманд (январь 2006 г.). «Переход на x64». Microsoft . Получено 18 апреля 2023 г. .
  109. ^ "Behind Windows x86-64's 44-bit Virtual Memory Addressing Limit". Архивировано из оригинала 23 декабря 2008 г. Получено 2 июля 2009 г.
  110. ^ ab "64-битное программирование для разработчиков игр" . Получено 18 апреля 2023 г.
  111. ^ "Ограничения памяти для выпусков Windows и Windows Server". Microsoft . Получено 18 апреля 2023 г. .
  112. ^ Кингсли-Хьюз, Адриан (23 августа 2010 г.). «AMD прощается с набором инструкций 3DNow!». ZDNet . Архивировано из оригинала 8 января 2023 г. Получено 8 января 2023 г.
  113. ^ "General Porting Guidelines". Руководство по программированию для 64-битной Windows. Microsoft Docs . Получено 18 апреля 2023 г.
  114. ^ "История драйверов для Microsoft SQL Server". Microsoft Docs . Получено 18 апреля 2023 г.
  115. ^ «Microsoft OLE DB Provider for Jet и Jet ODBC driver доступны только в 32-разрядных версиях». Office Access. Microsoft Docs . KB957570 . Получено 18 апреля 2023 г.
  116. Anand Lal Shimpi (21 мая 2013 г.). "Xbox One: Hardware Analysis & Comparison to PlayStation 4". Anandtech. Архивировано из оригинала 7 июня 2013 г. Получено 22 мая 2013 г.
  117. ^ "The Tech Spec Test: Xbox One Vs. PlayStation 4". Game Informer. 21 мая 2013 г. Архивировано из оригинала 7 июня 2013 г. Получено 22 мая 2013 г.
  118. ^ «Чего ожидать от запуска Sony „PlayStation 5“ в ноябре». The Indian Express . 31 августа 2020 г. Архивировано из оригинала 19 сентября 2020 г. Получено 14 сентября 2020 г.
  119. ^ Катресс, д-р Ян. «Живой блог Hot Chips 2020: Архитектура системы Microsoft Xbox Series X (18:00 по тихоокеанскому времени)». www.anandtech.com . Архивировано из оригинала 17 сентября 2020 г. . Получено 14 сентября 2020 г. .
  120. ^ Холлистер, Шон (12 ноября 2021 г.). «Steam Deck: Пять важных вещей, которые мы узнали из саммита разработчиков Valve». The Verge . Архивировано из оригинала 7 февраля 2022 г. Получено 12 ноября 2021 г.
  121. ^ "ProcessorArchitecture Fields". Архивировано из оригинала 28 апреля 2015 г. Получено 4 сентября 2013 г.
  122. ^ "Пример файла из исходного дерева ядра Linux 3.7.8, демонстрирующий использование термина x86_64". Архивировано из оригинала 23 сентября 2005 г. Получено 17 февраля 2013 г.
  123. ^ США 6877084 
  124. ^ США 6889312 
  125. ^ США 6732258 
  126. ^ «Патентное кросс-лицензионное соглашение между AMD и Intel». 1 января 2001 г. Архивировано из оригинала 21 июня 2007 г. Получено 23 августа 2009 г.
  127. ^ "Соглашение об урегулировании спора AMD Intel". Архивировано из оригинала 7 июля 2017 г. Получено 18 сентября 2017 г.
  128. Стивен Шенкленд и Джонатан Э. Скиллингс (12 ноября 2009 г.). «Intel заплатит AMD $1,25 млрд в рамках антимонопольного урегулирования». CNET. Архивировано из оригинала 8 ноября 2012 г. Получено 24 апреля 2012 г.
  129. ^ Смит, Райан (12 ноября 2009 г.). "AMD и Intel урегулировали свои разногласия: AMD становится самостоятельным производителем". AnandTech . Архивировано из оригинала 13 мая 2010 г.

Внешние ссылки