X86-64 - 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-битном режиме); вместо этого используется набор из 32 векторных регистров по 128 бит каждый. (Каждый регистр может хранить одно или два числа с двойной точностью или от одного до четырех чисел с одинарной точностью или различные целочисленные форматы.) В 64-битном режиме инструкции модифицируются для поддержки 64-битных операндов и 64-битного режима адресации.

Режим совместимости, определенный в архитектуре, допускает 16- и 32-битные пользовательские приложения для запуска без изменений, сосуществующих с 64-битными приложениями, если 64-битная операционная система их поддерживает.[11][заметка 2] Поскольку полные 16-битные и 32-битные наборы инструкций x86 остаются реализованными на оборудовании без какой-либо промежуточной эмуляции, эти более старые исполняемые файлы может работать с незначительным снижением производительности или без него,[13]в то время как новые или модифицированные приложения могут использовать новые функции процессора для повышения производительности. Кроме того, процессор, поддерживающий x86-64, все еще работает в реальный режим для полного Обратная совместимость с 8086, поскольку процессоры x86, поддерживающие защищенный режим сделали с 80286.

Исходная спецификация, созданная AMD и выпущен в 2000 году, был реализован AMD, Intel и ЧЕРЕЗ. В AMD K8 микроархитектура, в Opteron и Athlon 64 процессоров, был первым, кто это реализовал. Это было первое существенное дополнение к x86 архитектура разработана не Intel. Intel была вынуждена последовать их примеру и представила модифицированный NetBurst семейство, которое было программно совместимо со спецификацией AMD. VIA Technologies представили x86-64 в своей архитектуре VIA Isaiah, с ВИА Нано.

Архитектура x86-64 отличается от Intel Itanium архитектура (ранее IA-64 ), который несовместим на уровне собственного набора команд с архитектурой x86. Операционные системы и приложения, скомпилированные для одного, не могут работать на другом.

AMD64

Логотип AMD64

История

AMD64 создавался как альтернатива кардинально иному IA-64 архитектура, разработанная Intel и Hewlett Packard. Первоначально анонсирован в 1999 г.[14] а полная спецификация стала доступна в августе 2000 г.,[15] Архитектура AMD64 с самого начала позиционировалась 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), Турион 64, Turion 64 X2, Семпрон (Степпинг "Palermo" E6 и все модели "Manila"), Феном (за которым следует "X3" или "X4", чтобы указать количество ядер), Феном II (за которыми следует «X2», «X3», «X4» или «X6», чтобы указать количество ядер), FX, Fusion / APU и Райзен /Эпик.[нужна цитата ]

Архитектурные особенности

Основной определяющей характеристикой AMD64 является наличие 64-разрядных универсальных регистры процессора (например rax и rbx), 64-битный целое число арифметические и логические операции и 64-битные виртуальные адреса.[нужна цитата ] Дизайнеры воспользовались возможностью, чтобы внести и другие улучшения.

Некоторые из наиболее значительных изменений[согласно кому? ] описаны ниже:[нужна цитата ]

Возможность 64-битного целого числа
Все регистры общего назначения (Георадаров) расширены с 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 наборы инструкций (например. PA-RISC, Питание ISA, и MIPS иметь 32 георадара; Альфа, 64-битная ARM, и SPARC иметь 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](p120) Это позволяет до 256TiB (248 байты ) виртуального адресного пространства. Определение архитектуры позволяет поднять этот предел в будущих реализациях до полных 64 бит,[11](p2)(p3)(p13)(p117)(p120) расширение виртуального адресного пространства до 16EiB (264 байтов).[16] Это по сравнению с 4ГиБ (232 байтов) для x86.[17]
Это означает, что с очень большими файлами можно работать с отображение весь файл в адресное пространство процесса (что часто намного быстрее, чем работа с вызовами чтения / записи файла), вместо того, чтобы отображать области файла в адресное пространство и из него.
Большее физическое адресное пространство
Первоначальная реализация архитектуры AMD64 реализована 40-битной физические адреса и поэтому может адресовать до 1 ТиБ (240 байтов) ОЗУ.[11](стр. 24) Текущие реализации архитектуры AMD64 (начиная с Микроархитектура AMD 10h ) расширить это до 48-битных физических адресов[18] и, следовательно, может адресовать до 256 ТиБ ОЗУ. Архитектура позволяет в будущем расширить это число до 52 бит.[11](стр. 24)[19] (ограничено форматом записи таблицы страниц);[11](p131) это позволит адресовать до 4PiB оперативной памяти. Для сравнения, 32-разрядные процессоры x86 ограничены 64 ГиБ ОЗУ в Расширение физического адреса (PAE) режим,[20] или 4 ГиБ ОЗУ без режима PAE.[11](p4)
Большее физическое адресное пространство в устаревшем режиме
При работе в устаревший режим архитектура AMD64 поддерживает Расширение физического адреса (PAE), как и большинство современных процессоров x86, но AMD64 расширяет PAE с 36 бит до архитектурного ограничения в 52 бит физического адреса. Поэтому любая реализация допускает такое же ограничение физического адреса, как и в длинный режим.[11](стр. 24)
Указатель инструкции относительный доступ к данным
Инструкции теперь могут ссылаться на данные относительно указателя команд (регистр RIP). Это делает независимый от позиции код, как это часто бывает общие библиотеки и код, загружаемый во время выполнения, более эффективен.
Инструкции SSE
Исходная архитектура AMD64 заимствовала SSE и SSE2 как основные инструкции. Эти наборы команд обеспечивают векторное дополнение к скаляру x87 FPU для типов данных с одинарной и двойной точностью. SSE2 также предлагает целочисленные векторные операции для типов данных с точностью от 8 до 64 бит. Это делает векторные возможности архитектуры такими же, как у самых продвинутых процессоров x86 своего времени. Эти инструкции также можно использовать в 32-битном режиме. Распространение 64-битных процессоров сделало эти векторные возможности повсеместными на домашних компьютерах, что позволило улучшить стандарты 32-битных приложений. Например, 32-разрядная версия Windows 8 требует наличия инструкций SSE2.[21] SSE3 инструкции и позже Потоковые расширения SIMD наборы команд не являются стандартными функциями архитектуры.
Бит без выполнения
Бит No-Execute или Бит NX (бит 63 записи таблицы страниц) позволяет операционной системе указывать, какие страницы виртуального адресного пространства могут содержать исполняемый код, а какие нет. Попытка выполнить код со страницы, помеченной как «не выполняется», приведет к нарушению доступа к памяти, подобно попытке записи на страницу, доступную только для чтения. Это должно затруднить захват системы вредоносным кодом с помощью "переполнение буфера "или" непроверенный буфер ". Подобная функция была доступна на процессорах x86 с момента 80286 как атрибут дескрипторы сегментов; однако это работает только для всего сегмента за раз.
Сегментированная адресация долгое время считался устаревшим режимом работы, и все текущие операционные системы ПК фактически обходят его, устанавливая для всех сегментов нулевой базовый адрес и (в их 32-битной реализации) размер 4 ГБ. AMD была первым поставщиком семейства x86, реализовавшим режим без выполнения в режиме линейной адресации. Эта функция также доступна в устаревшем режиме на процессорах AMD64 и последних процессорах Intel x86, когда используется PAE.
Удаление старых функций
Некоторые функции «системного программирования» архитектуры x86 либо не использовались, либо недостаточно использовались в современных операционных системах и либо недоступны на AMD64 в длинном (64-битном и совместимость) режиме, либо существуют только в ограниченной форме. К ним относятся сегментированная адресация (хотя сегменты FS и GS сохраняются в рудиментарной форме для использования в качестве дополнительных базовых указателей на структуры операционной системы),[11](стр70) в переключатель состояния задачи механизм, и виртуальный режим 8086. Эти функции остаются полностью реализованными в «устаревшем режиме», что позволяет этим процессорам работать с 32-битными и 16-битными операционными системами без изменений. Некоторые инструкции, которые оказались редко полезными, не поддерживаются в 64-битном режиме, включая сохранение / восстановление сегментных регистров в стеке, сохранение / восстановление всех регистров (PUSHA / POPA), десятичную арифметику, инструкции BOUND и INTO и " far "перескакивает и вызывает немедленные операнды.

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

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

Реализации канонического адресного пространства (диаграммы не в масштабе)
Текущая 48-битная реализация
56-битная реализация
64-битная реализация

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

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

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

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

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

Режим 64-битной адресации ("длинный режим ") - это надмножество Расширения физических адресов (PAE); из-за этого, страница размеры могут быть 4KiB (212 байтов) или 2МиБ (221 байтов).[11](p120) Длинный режим также поддерживает размер страницы 1ГиБ (230 байтов).[11](p120) Вместо трехуровневого таблица страниц система, используемая системами в режиме PAE, системы, работающие в длинный режим использовать четыре уровня таблицы страниц: PAE Таблица указателей страниц-каталогов расширен с четырех записей до 512, и дополнительно Таблица Page-Map уровня 4 (PML4) добавлен, содержащий 512 записей в 48-битных реализациях.[11](p131) Полная иерархия сопоставления страниц размером 4 КиБ для всего 48-битного пространства займет чуть больше 512 ГиБ памяти (около 0,195% виртуального пространства 256 ТиБ).

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

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

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

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

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

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

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

ОперационнаяОперационная система
требуется
Тип кода
запущен
размер
Режимподрежимадрес (по умолчанию)операнд (по умолчанию)операнд (поддерживается тип.)Зарегистрировать файл
Длинный
Режим
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 бит[м 1]8 регистров на файл
Виртуальный режим 808616-битный или 32-битный защищенный режимнекоторые из код реального режима16 бит16 бит8, 16 или 32 бит[м 1]8 регистров на файл
Настоящий
Режим
Нереальный режимн / дкод реального режима16, 20 или 32 бит16 бит8, 16 или 32 бит[м 1]8 регистров на файл
Реальный режимн / дкод реального режима16, 20 или 21 биты16 бит8, 16 или 32 бит[м 1]8 регистров на файл
  1. ^ а б c d Обратите внимание, что 16-битный код, написанный для 80286 и ниже, не использует 32-битные инструкции операнда. Код, написанный для 80386 и выше, может использовать префикс переопределения размера операнда (0x66). Обычно этот префикс используется кодом защищенного и длинного режима с целью использования 16-битных операндов, поскольку этот код будет выполняться в сегменте кода с размером операнда по умолчанию 32 бита. В реальном режиме размер операнда по умолчанию составляет 16 бит, поэтому префикс 0x66 интерпретируется по-другому, изменяя размер операнда на 32 бита.
Диаграмма состояний режимов работы x86-64

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

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

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

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

Устаревший режим - это режим, используемый 32-битными или 16-битными операционными системами «защищенного режима».[29] В этом режиме процессор действует как старый процессор x86, и может выполняться только 16-битный и 32-битный код. Устаревший режим позволяет использовать виртуальную адресацию максимум 32 бита, что ограничивает виртуальное адресное пространство до 4 ГиБ.[11](стр. 14)(стр. 24)(p118) 64-битные программы нельзя запускать из устаревшего режима.

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

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

Intel 64

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

История

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

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

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

Первым процессором, реализовавшим 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 64 (в то время под названием EM64T) Intel в качестве процессоров для массовых настольных ПК стал Prescott-2M степпинга N0.

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

Реализации

Процессоры Intel, реализующие архитектуру Intel64, включают: Pentium 4 Серия F / серия 5x1, 506 и 516, Celeron D модели 3x1, 3x6, 355, 347, 352, 360, 365 и все более поздние Celerons, все модели Xeon поскольку "Nocona ", все модели Двухъядерный Pentium процессоров с "Мером-2М ", Атом 230, 330, D410, D425, D510, D525, N450, N455, N470, N475, N550, N570, N2600 и N2800, все версии Pentium D, Pentium Extreme Edition, Ядро 2, Core i9, Core i7, Core i5, и Core i3 процессоры, а Ксеон Пхи Процессоры серии 7200.

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

VIA Technologies представила свою первую реализацию архитектуры x86-64 в 2008 году после пяти лет разработки подразделением ЦП, Centaur Technology.[33]64-битная архитектура под кодовым названием Isaiah была представлена ​​24 января 2008 года.[34] и стартовал 29 мая под ВИА Нано имя бренда.[35]

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

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

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

Недавние реализации

  • Intel 64-х BSF и BSR инструкции действуют иначе, чем AMD64, когда источник равен нулю, а размер операнда составляет 32 бита. Процессор устанавливает нулевой флаг и оставляет верхние 32 бита места назначения неопределенными.
  • AMD64 требует другого формата обновления микрокода и управляет MSR (регистры, зависящие от модели), в то время как Intel 64 реализует микрокод обновление без изменений с их 32-битных процессоров.
  • Intel 64 не хватает некоторых MSR, которые считаются архитектурными в AMD64. К ним относятся SYSCFG, TOP_MEM, и TOP_MEM2.
  • Intel 64 позволяет SYSCALL/SYSRET только в 64-битном режиме (не в режиме совместимости),[38] и позволяет SYSENTER/SYSEXIT в обоих режимах.[39] AMD64 не хватает SYSENTER/SYSEXIT в обоих подрежимах длинный режим.[11]:33
  • В 64-битном режиме ближние ветви с префиксом 66H (переопределение размера операнда) ведут себя иначе. Intel 64 игнорирует этот префикс: инструкция имеет 32-битное расширенное смещение знака, а указатель инструкции не усекается. AMD64 использует в инструкции 16-битное поле смещения и очищает верхние 48 бит указателя инструкции.
  • Процессоры AMD вызывают недопустимое исключение с плавающей запятой при выполнении FLD или же FSTP 80-битного сигнального NaN, в то время как процессоры Intel этого не делают.
  • Intel 64 не имеет возможности сохранять и восстанавливать сокращенную (и, следовательно, более быструю) версию плавающая точка государство (с участием FXSAVE и FXRSTOR инструкции).
  • Процессоры AMD с тех пор Opteron Rev. E и Athlon 64 В Rev. D вновь введена ограниченная поддержка сегментации с помощью бита включения предела сегмента длинного режима (LMSLE), чтобы упростить виртуализация 64-битных гостей.[40][41]
  • При возврате на неканонический адрес с помощью SYSRET, Процессоры AMD64 выполняют общий обработчик сбоев защиты на уровне привилегий 3,[42] в то время как на процессорах Intel 64 он выполняется с уровнем привилегий 0.[43]

Старые реализации

  • Ранние процессоры AMD64 (обычно на Socket 939 и 940) не имели CMPXCHG16B инструкция, которая является расширением CMPXCHG8B инструкция присутствует на большинстве пост-80486 процессоры. Похожий на CMPXCHG8B, CMPXCHG16B позволяет атомарные операции на окта-словах (128-битные значения). Это полезно для параллельных алгоритмов, использующих сравнить и поменять местами на данных, превышающих размер указателя, обычно в алгоритмы без блокировки и ожидания. Без CMPXCHG16B нужно использовать обходные пути, такие как критическая секция или альтернативные подходы без блокировки.[44] Его отсутствие также мешает 64-битной Windows до Windows 8.1 от наличия пользовательский режим адресное пространство больше 8 терабайт.[45] 64-битная версия Windows 8.1 требуется инструкция.[46]
  • Не хватало ранних процессоров AMD64 и Intel 64 LAHF и SAHF инструкции в 64-битном режиме. AMD представила эти инструкции (также в 64-битном режиме) со своими процессорами Athlon 64, Opteron и Turion 64 версии D в марте 2005 г.[47][48][49] в то время как Intel представила инструкции для Pentium 4 G1 степпинга в декабре 2005 года. 64-разрядная версия Windows 8.1 требует этой функции.[46]
  • Ранние процессоры Intel с Intel 64 также не имеют Бит NX архитектуры AMD64. Эта функция требуется для всех версий Windows 8.x.
  • Ранние реализации Intel 64 (Прескотт и Кедровая мельница ) разрешен доступ только к 64 ГиБ физической памяти, в то время как в исходных реализациях AMD64 разрешен доступ к 1 ТиБ физической памяти. Последние реализации AMD64 обеспечивают 256 ТиБ физического адресного пространства (и AMD планирует расширение до 4 ПиБ),[нужна цитата ] в то время как некоторые реализации Intel 64 могут адресовать до 64 ТиБ.[50] Объем физической памяти такого размера подходит для крупномасштабных приложений (таких как большие базы данных) и высокопроизводительных вычислений (централизованно ориентированные приложения и научные вычисления).

Принятие

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

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

По состоянию на 2020 год, а Fujitsu A64FX -на базе суперкомпьютера под названием Фугаку номер один. Первый суперкомпьютер на базе ARM появился в списке в 2018 году[52] а в последние годы сопроцессоры без CPU архитектуры (ГПГПУ ) также сыграли большую роль в производительности. Intel Ксеон Пхи "Уголок рыцарей" сопроцессоры, реализующие подмножество x86-64 с некоторыми векторными расширениями,[53] также используются вместе с процессорами x86-64 в Тяньхэ-2 суперкомпьютер.[54]

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

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

BSD

DragonFly BSD

Предварительные инфраструктурные работы были начаты в феврале 2004 года для порта x86-64.[55] Позже это развитие застопорилось. Разработка снова началась в июле 2007 г.[56]и продолжалось во время Google Summer of Code 2008 и SoC 2009.[57][58] Первым официальным выпуском, который содержал поддержку x86-64, была версия 2.4.[59]

FreeBSD

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.

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) работает на порте OpenBSD AMD64, начиная с версии 3.6 от 1 ноября 2004 г.

ДОС

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

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

Linux

Linux было первым ядром операционной системы, которое запускало архитектуру x86-64 в длинный режим, начиная с версии 2.4 2001 г. (до появления оборудования).[61][62] Linux также обеспечивает обратную совместимость для запуска 32-разрядных исполняемых файлов. Это позволяет перекомпилировать программы в длинный режим, сохраняя при этом использование 32-битных программ. Несколько дистрибутивов Linux в настоящее время поставляются с собственными ядрами x86-64 и пользовательские земли. Некоторые, например Arch Linux,[63] 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-битные указатели и поля данных.[64][65][66]Хотя это ограничивает программу виртуальным адресным пространством 4 ГБ, это также уменьшает объем памяти, занимаемый программой, и в некоторых случаях может позволить ей работать быстрее.[64][65][66]

64-битный Linux позволяет до 128Туберкулез виртуального адресного пространства для отдельных процессов и может адресовать примерно 64 ТБ физической памяти с учетом ограничений процессора и системы.[67]

macOS

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.[68]Ядро и все расширения ядра только 32-разрядные.

Mac OS X 10.5 поддерживает 64-битные приложения с графическим интерфейсом, используя Какао, Кварцевый, OpenGL, и X11 на 64-битных машинах на базе Intel, а также на 64-битных PowerPC машины.[69]Все библиотеки и фреймворки без графического интерфейса также поддерживают 64-разрядные приложения на этих платформах. Ядро и все расширения ядра только 32-разрядные.

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

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-битные ядра.

Солярис

Солярис 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-битные исполняемые файлы, библиотеки и системные вызовы.

Windows

64-разрядные версии клиента и сервера Microsoft Windows -Windows XP Professional x64 Edition и Windows Server 2003 x64 Edition - выпущены в марте 2005 года.[73] Внутренне это одна и та же сборка (5.2.3790.1830 SP1),[74][75] поскольку они используют одну и ту же исходную базу и двоичные файлы операционной системы, поэтому даже системные обновления выпускаются в унифицированных пакетах, во многом аналогично выпускам Windows 2000 Professional и Server для x86. Виндоус виста, который также имеет множество различных редакций, был выпущен в январе 2007 года. Windows 7 был выпущен в июле 2009 года. Windows Server 2008 R2 продавался только в версиях x64 и Itanium; более поздние версии Windows Server предлагают только версию x64.

Версии Windows для x64 до Windows 8.1 и Windows Server 2012 R2 предлагают следующее:

  • 8 ТиБ виртуального адресного пространства на процесс, доступное как из пользовательского режима, так и из режима ядра, называемое адресным пространством пользовательского режима. Программа x64 может использовать все это с учетом ограничений резервного хранилища в системе и при условии, что она связана с опцией «большой адрес».[76] Это в 4096 раз больше, чем виртуальное адресное пространство пользовательского режима по умолчанию в 2 ГиБ, предлагаемое 32-разрядной Windows.[77][78]
  • 8 ТиБ виртуального адресного пространства режима ядра для операционной системы.[77] Как и в случае адресного пространства пользовательского режима, это 4096-кратное увеличение по сравнению с 32-разрядными версиями Windows. Увеличение пространства в первую очередь приносит пользу кэшу файловой системы и "кучам" режима ядра (невыгружаемый пул и выгружаемый пул). Windows использует всего 16 ТиБ из 256 ТиБ, реализованных процессорами, потому что ранние процессоры AMD64 не имели CMPXCHG16B инструкция.[79]

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

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

  • Возможность запускать существующие 32-битные приложения (.EXE программ) и библиотеки динамической компоновки (.dlls) использование WoW64 если WoW64 поддерживается этой версией. Более того, 32-битная программа, если она была связана с опцией «большой адрес»,[76] может использовать до 4 ГиБ виртуального адресного пространства в 64-битной Windows вместо 2 ГиБ по умолчанию (необязательно 3 ГиБ с / 3 ГБ вариант загрузки и вариант ссылки "большой адрес"), предлагаемый 32-разрядной Windows.[80] В отличие от использования / 3 ГБ вариант загрузки на x86, это не уменьшает виртуальное адресное пространство режима ядра, доступное операционной системе. Таким образом, 32-разрядные приложения могут выиграть от работы в x64 Windows, даже если они не перекомпилированы для x86-64.
  • И 32-, и 64-битные приложения, если они не связаны с функцией «большие адреса», ограничены 2 ГиБ виртуального адресного пространства.
  • Возможность использования до 128 ГиБ (Windows XP / Vista), 192 ГиБ (Windows 7), 512 ГиБ (Windows 8), 1 ТиБ (Windows Server 2003), 2 ТиБ (Windows Server 2008 / Windows 10), 4 ТиБ ( Windows Server 2012) или 24 ТиБ (Windows Server 2016/2019) физической памяти с произвольным доступом (RAM).[81]
  • LLP64 модель данных: типы int и long имеют ширину 32 бита, long long - 64 бита, а указатели и типы, производные от указателей, имеют ширину 64 бита.
  • Драйверы устройств в режиме ядра должны быть 64-разрядными версиями; в 64-разрядной операционной системе невозможно запустить 32-разрядные исполняемые файлы режима ядра. Драйверы устройств пользовательского режима могут быть 32-разрядными или 64-разрядными.
  • 16-разрядные приложения Windows (Win16) и DOS не будут работать в версиях Windows x86-64 из-за удаления виртуальная машина DOS подсистема (NTVDM), которая полагалась на возможность использовать виртуальный режим 8086. В виртуальный режим 8086 нельзя войти во время работы в длительном режиме.
  • Полная реализация NX (No Execute) функция защиты страницы. Это также реализовано в последних 32-битных версиях Windows, когда они запускаются в режиме PAE.
  • Вместо дескриптора сегмента FS в версиях x86 Windows NT В семействе GS дескриптор сегмента используется для указания двух структур, определенных операционной системой: информационного блока потока (NT_TIB) в пользовательском режиме и области управления процессором (KPCR) в режиме ядра. Так, например, в пользовательском режиме GS: 0 - адрес первого члена информационного блока потока. Соблюдение этого соглашения упростило перенос x86-64, но потребовало от AMD сохранения функции сегментов FS и GS в долгом режиме, даже несмотря на сегментированную адресацию. как таковой на самом деле не используется ни одной современной операционной системой.[77]
  • В ранних отчетах утверждалось, что планировщик операционной системы не будет сохранять и восстанавливать состояние машины x87 FPU при переключении контекста потока. Наблюдаемое поведение показывает, что это не так: состояние x87 сохраняется и восстанавливается, за исключением потоков, работающих только в режиме ядра (ограничение, которое существует и в 32-разрядной версии). В самой последней документации, доступной от Microsoft, говорится, что x87 / MMX / 3DNow! инструкции могут использоваться в длинном режиме, но они устарели и могут вызвать проблемы совместимости в будущем.[80]
  • Некоторые компоненты, такие как Ядро базы данных Microsoft Jet и Объекты доступа к данным не будет перенесен на 64-битные архитектуры, такие как x86-64 и IA-64.[82][83]
  • Microsoft Visual Studio может компилировать родные приложения для архитектуры x86-64, которая может работать только в 64-битной Microsoft Windows, или IA-32 архитектура, которая может работать как 32-битное приложение в 32-битной Microsoft Windows или 64-битной Microsoft Windows в WoW64 режим эмуляции. Управляемые приложения может быть скомпилирован в режимах IA-32, x86-64 или AnyCPU. Программное обеспечение, созданное в первых двух режимах, ведет себя как их аналоги в собственном коде IA-32 или x86-64 соответственно; Однако при использовании режима AnyCPU приложения в 32-битных версиях Microsoft Windows работают как 32-битные приложения, а в 64-битных версиях Microsoft Windows они работают как 64-битные приложения.

Приставки для видеоигр

Обе PlayStation 4 и Xbox One и их варианты включают процессоры AMD x86-64, основанные на Ягуар микроархитектура.[84][85] Прошивки и игры написаны в коде x86-64; никакой устаревший код x86 не используется.

Их следующие поколения, PlayStation 5 и Xbox Series X и Series S соответственно, также включают процессоры AMD x86-64 на основе Дзен 2 микроархитектура [86][87].

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

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

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

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

  • amd64
    • Наиболее BSD такие системы как FreeBSD, MidnightBSD, NetBSD и OpenBSD ссылаются как на AMD64, так и на Intel 64 под названием архитектуры «amd64».
    • Немного Дистрибутивы Linux Такие как Debian, Ubuntu, Gentoo Linux ссылаются как на AMD64, так и на Intel 64 под названием архитектуры «amd64».
    • Майкрософт Виндоус В версиях x64 внутреннее название AMD64 используется для обозначения различных компонентов, которые используют эту архитектуру или совместимы с ней. Например, переменная окружения PROCESSOR_ARCHITECTURE присваивается значение «AMD64», а не «x86» в 32-разрядных версиях, а системный каталог на установочном компакт-диске Windows x64 Edition называется «AMD64», в отличие от «i386» в 32-разрядных версиях. .[88]
    • Солнце Солярис ' исалист Команда идентифицирует системы на базе AMD64 и Intel 64 как «amd64».
    • Комплект для разработки Java (JDK): имя «amd64» используется в именах каталогов, содержащих файлы x86-64.
  • x86_64
    • В Ядро Linux[89] и Коллекция компиляторов GNU относится к 64-битной архитектуре как «x86_64».
    • Некоторые дистрибутивы Linux, такие как Fedora, openSUSE, Arch Linux, Gentoo Linux назовите эту 64-битную архитектуру «x86_64».
    • яблоко macOS относится к 64-битной архитектуре как «x86-64» или «x86_64», как показано в команде Терминала. арка[3] и в их документации для разработчиков.[2][4]
    • Разрыв с большинством других систем BSD, DragonFly BSD относится к 64-битной архитектуре как «x86_64».
    • Хайку относится к 64-битной архитектуре как «x86_64».

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

x86-64 / AMD64 была разработана исключительно AMD. AMD владеет патентами на технологии, используемые в AMD64;[90][91][92] эти патенты должны быть лицензированы AMD для реализации AMD64. Intel заключила с AMD соглашение о перекрестном лицензировании, лицензируя AMD их патенты на существующие технологии x86 и лицензируя AMD их патенты на технологии, используемые в x86-64.[93] В 2009 году AMD и Intel урегулировали несколько судебных процессов и разногласий по перекрестному лицензированию, продлив свои соглашения о перекрестном лицензировании.[94][95][96]

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

Примечания

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

Рекомендации

  1. ^ «Часто задаваемые вопросы о Debian AMD64». Debian Wiki. Получено 3 мая, 2012.
  2. ^ а б c "Модель кода x86-64". яблоко. Получено 23 ноября, 2012.
  3. ^ а б c арка (1) – Дарвин и macOS Общие команды Руководство
  4. ^ а б c Кевин Ван Вехтен (9 августа 2006 г.). "re: отчет об ошибке Intel XNU". Список рассылки Darwin-dev. Компьютер Apple. Получено 5 октября, 2006. Ядро и инструменты разработчика стандартизированы на "x86_64" для названия архитектуры Mach-O.
  5. ^ а б «Solaris 10 на AMD Opteron». Oracle. Получено 9 декабря, 2010.
  6. ^ а б «64-битные вычисления Microsoft». Microsoft. Архивировано из оригинал 12 декабря 2010 г.. Получено 9 декабря, 2010.
  7. ^ «Порт AMD64». Debian. Получено 23 ноября, 2012.
  8. ^ "Проект Gentoo / AMD64". Gentoo Project. Получено 27 мая, 2013.
  9. ^ «Подробности реализации WOW64».
  10. ^ «Класс ProcessorArchitecture».
  11. ^ а б c d е ж грамм час я j k л м п о п q р Корпорация AMD (декабрь 2016 г.). «Том 2: Системное программирование» (PDF). Руководство программиста по архитектуре AMD64. Корпорация AMD. Получено 25 марта, 2017.
  12. ^ Раймонд Чен (31 октября 2013 г.). «Если в 64-битной Windows нет уровня 16-битной эмуляции, почему определенные 16-битные установщики могут работать?».
  13. ^ Корпорация IBM (6 сентября 2007 г.). "Раскрытие тайны 64-разрядной производительности IBM WebSphere Application Server" (PDF). п. 14. Получено 9 апреля, 2010. На рисунках 5, 6 и 7 также показано, что 32-разрядная версия WAS запускает приложения с полной аппаратной производительностью на платформах POWER и x86-64. В отличие от некоторых архитектур 64-разрядных процессоров, оборудование POWER и x86-64 не эмулирует 32-разрядный режим. Следовательно, приложения, не использующие 64-битные функции, могут работать с полной производительностью в 32-битной версии WebSphere, работающей на вышеупомянутых 64-битных платформах.
  14. ^ «AMD раскрывает новые технологии на форуме микропроцессоров» (Пресс-релиз). AMD. 5 октября 1999 г. Архивировано с оригинал 8 марта 2012 г.. Получено 9 ноября, 2010.
  15. ^ «AMD выпускает архитектурную спецификацию x86-64; обеспечивает рыночный переход на 64-разрядные вычисления» (Пресс-релиз). AMD. 10 августа 2000 г. Архивировано с оригинал 8 марта 2012 г.. Получено 9 ноября, 2010.
  16. ^ Мауэрер, В. (2010). Профессиональная архитектура ядра Linux. Джон Вили и сыновья.
  17. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A: Руководство по системному программированию, часть 1" (PDF). стр. 4–7. Получено 10 июля, 2019.
  18. ^ а б «Руководство разработчика BIOS и ядра (BKDG) для процессоров AMD семейства 10h» (PDF). п. 24. Получено 27 февраля, 2016. Физическое адресное пространство увеличено до 48 бит.
  19. ^ «Мифы и факты о 64-битном Linux» (PDF). 2 марта 2008 г. с. 7. Архивировано из оригинал (PDF) 10 октября 2010 г.. Получено 30 мая, 2010. Физическое адресное пространство увеличено до 48 бит
  20. ^ Шенли, Том (1998). Системная архитектура Pentium Pro и Pentium II. Серия системной архитектуры ПК (второе изд.). Эддисон-Уэсли. п.445. ISBN  0-201-30973-4.
  21. ^ Корпорация Майкрософт. «Что такое PAE, NX и SSE2 и почему мой компьютер должен поддерживать их для работы с Windows 8?». Получено 19 марта, 2013.
  22. ^ а б c d «Ограничения памяти для выпусков Windows». MSDN. Microsoft. 16 ноября 2013 г.. Получено 20 января, 2014.
  23. ^ «5-уровневый пейджинг и 5-уровневый EPT» (PDF). Intel. Май 2017 г.. Получено 17 июня, 2017.
  24. ^ Патент США 9858198, Ларри Сейлер, «Система страниц размером 64 КБ, поддерживающая работу со страницами 4 КБ», опубликовано 29 декабря 2016 г., выпущено 02 января 2018 г., передано Intel Corp. 
  25. ^ «Материнские платы серии Opteron 6100». Корпорация Supermicro. Получено 22 июня, 2010.
  26. ^ «Supermicro XeonSolutions». Корпорация Supermicro. Получено 20 июня, 2010.
  27. ^ «Материнские платы Opteron серии 8000». Корпорация Supermicro. Получено 20 июня, 2010.
  28. ^ «Матрица продуктов Тянь». Международная корпорация MiTEC. Получено 21 июня, 2010.
  29. ^ Чарни, Марк. «Определения машинного режима Xed». Xed. Корпорация Intel. Получено 16 июня, 2019.
  30. ^ «Крейг Барретт подтверждает 64-битные расширения адресов для Xeon. И Прескотт». Спрашивающий. 17 февраля 2004 г.
  31. ^ «Обзор 64-битных вычислений», с сайта internetnews.com
  32. ^ «Архитектура Intel 64». Intel. Получено 29 июня, 2007.
  33. ^ «VIA запустит новую архитектуру процессора в 1К08» (требуется подписка). DigiTimes. Получено 25 июля, 2007.
  34. ^ Стоукс, Джон (23 января 2008 г.). "Исайя раскрыл: новую маломощную архитектуру VIA". Ars Technica. Получено 24 января, 2008.
  35. ^ «VIA запускает семейство процессоров VIA Nano» (Пресс-релиз). ЧЕРЕЗ. 29 мая 2008 г.. Получено 25 мая, 2017.
  36. ^ «Введение в архитектуру VIA Isaiah» (PDF). ЧЕРЕЗ. 23 января 2008 г. Архивировано с оригинал (PDF) 7 сентября 2008 г.. Получено 31 июля, 2013.
  37. ^ Уоссон, Скотт. «64-битные вычисления в теории и на практике». Технический отчет. Технический отчет. Получено 22 марта, 2011.
  38. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 2 (2A, 2B и 2C): Справочник по набору команд, A – Z" (PDF). Intel. Сентябрь 2013. С. 4–397.. Получено 21 января, 2014.
  39. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 2 (2A, 2B и 2C): Справочник по набору команд, A – Z" (PDF). Intel. Сентябрь 2013. С. 4–400.. Получено 21 января, 2014.
  40. ^ «Как отказ от сегментации в длинном режиме AMD64 сломал VMware». Pagetable.com. 9 ноября 2006 г.. Получено 2 мая, 2010.
  41. ^ «VMware и технология виртуализации ЦП» (PDF). VMware. Получено 8 сентября, 2010.
  42. ^ "Руководство программиста по архитектуре AMD64, том 3: Общие и системные инструкции" (PDF). AMD. Май 2018. с. 419. Получено 2 августа, 2018.
  43. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 2 (2A, 2B и 2C): Справочник по набору команд, A – Z" (PDF). Intel. Сентябрь 2014. С. 4–412.. Получено 28 декабря, 2014.
  44. ^ Магед М. Майкл. «Практические реализации LL / SC / VL без блокировки и ожидания с использованием 64-битного CAS» (PDF). IBM. Получено 21 января, 2014.
  45. ^ Дарвоу (20 августа 2004 г.). "Почему вообще виртуальное адресное пространство 4 ГБ?". Старая новая вещь. Microsoft.
  46. ^ а б «Системные требования - Windows 8.1». Получено 27 апреля, 2014. Чтобы установить 64-разрядную ОС на 64-разрядный ПК, ваш процессор должен поддерживать CMPXCHG16b, PrefetchW и LAHF / SAHF.
  47. ^ «Руководство по редактированию процессоров AMD Athlon 64 и AMD Opteron» от AMD
  48. ^ «AMD Turion 64 на изображении и работает», из The Inquirer
  49. ^ «Athlon 64 версии E не будет работать на некоторых платах Nforce 3/4», из The Inquirer
  50. ^ «Архитектура Intel 64 увеличивает линейное адресное пространство для программного обеспечения до 64 бит и поддерживает физическое адресное пространство до 46 бит». на странице Vol. 1 2-21 из Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, сентябрь 2014 г.
  51. ^ «Статистика | ТОП500 суперкомпьютерных сайтов». Top500.org. Получено 22 марта, 2014.
  52. ^ «Генератор подсписок | ТОП500 суперкомпьютерных сайтов». www.top500.org. Получено 6 декабря, 2018.
  53. ^ «Справочное руководство по архитектуре набора команд сопроцессора Intel® Xeon PhiTM» (PDF). Intel. 7 сентября 2012 г. раздел B.2. Ограничения 64-разрядного режима сопроцессора Intel Xeon Phi.
  54. ^ «Intel обеспечивает самый быстрый в мире суперкомпьютер, открывает новые и будущие высокопроизводительные вычислительные технологии». Получено 21 июня, 2013.
  55. ^ "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 ... " Получено 3 мая, 2009.
  56. ^ «Порт AMD64». Получено 3 мая, 2009.
  57. ^ "DragonFlyBSD: GoogleSoC2008". Получено 3 мая, 2009.
  58. ^ «Лето Кодекса приняло студентов». Получено 3 мая, 2009.
  59. ^ "DragonFlyBSD: release24". Получено 3 мая, 2009.
  60. ^ «Учебник по входу в защищенный и длинный режим из DOS». Архивировано из оригинал 22 февраля 2017 г.. Получено 6 июля, 2008.
  61. ^ Энди Клин (26 июня 2001 г.). «Перенос Linux на x86-64». Архивировано из оригинал 10 сентября 2010 г. Статус: ядро, компилятор, инструментальная цепочка работают. Ядро загружается и работает на симуляторе и используется для переноса пользовательской среды и запуска программ.
  62. ^ Энди Клин. "Пейдж Энди Клин". Это был оригинальный документ, описывающий порт ядра Linux x86-64, когда x86-64 был доступен только на симуляторах.
  63. ^ "Arch64 FAQ". 23 апреля 2012 г. Вы можете использовать пакеты Multilib или chroot i686.
  64. ^ а б Торстен Лемхейс (13 сентября 2011 г.). «Журнал ядра: x32 ABI устраняет 64-битные недостатки». www.h-online.com. Архивировано из оригинал 28 октября 2011 г.. Получено 1 ноября, 2011.
  65. ^ а б «x32 - собственный 32-битный ABI для x86-64». linuxplumbersconf.org. Получено 1 ноября, 2011.
  66. ^ а б "x32-abi". Сайты Google. Получено 1 ноября, 2011.
  67. ^ «Порт AMD64». debian.org. Получено 29 октября, 2011.
  68. ^ «Apple - Mac OS X Xcode 2.4: примечания к выпуску: инструменты компилятора». Apple Inc. 11 апреля 2007 г. Архивировано с оригинал 22 апреля 2009 г.. Получено 19 ноября, 2012.
  69. ^ «Apple - Mac OS X Leopard - Технологии - 64-бит». Apple Inc. Архивировано с оригинал 12 января 2009 г.. Получено 19 ноября, 2012.
  70. ^ «Mac OS X v10.6: Mac с 64-разрядным ядром». Apple Inc.. Получено 29 ноября, 2012.
  71. ^ Джон Сиракуза. «Mac OS X 10.6 Snow Leopard: обзор Ars Technica». ООО «Арс Техника». Получено 20 июня, 2010.
  72. ^ «Технология Mac OS X». Apple Inc. Архивировано с оригинал 28 марта 2011 г.. Получено 19 ноября, 2012.
  73. ^ «Microsoft повышает предел скорости с выпуском 64-разрядных версий Windows Server 2003 и Windows XP Professional | Центр новостей». news.microsoft.com. Получено 14 августа, 2016.
  74. ^ «Описание 64-разрядных версий Windows Server 2003 и Windows XP Professional x64 Edition». Служба поддержки Microsoft. Получено 14 августа, 2016.
  75. ^ «Пакет средств администрирования Windows Server 2003 SP1». Центр загрузки Microsoft. Архивировано из оригинал 27 августа 2016 г.. Получено 14 августа, 2016.
  76. ^ а б "/ LARGEADDRESSAWARE (обработка больших адресов)". Документация по Visual Studio 2005 - Visual C ++ - Параметры компоновщика. Microsoft. Получено 19 июня, 2010. Параметр / LARGEADDRESSAWARE сообщает компоновщику, что приложение может обрабатывать адреса размером более 2 гигабайт.
  77. ^ а б c Мэтт Пьетрек (Май 2006 г.). «Все, что вам нужно знать, чтобы начать программировать 64-битные системы Windows». Microsoft. Получено 24 мая, 2010.
  78. ^ Крис Сент-Аманд (январь 2006 г.). «Переход к x64». Microsoft. Получено 24 мая, 2010.
  79. ^ «За 44-битным пределом адресации виртуальной памяти Windows x86-64». Получено 2 июля, 2009.
  80. ^ а б «64-битное программирование для разработчиков игр». Получено 21 августа, 2013.
  81. ^ «Ограничения памяти для выпусков Windows». Microsoft. Получено 20 февраля, 2013.
  82. ^ Microsoft Developer Network - Общие рекомендации по переносу (программирование для 64-битной Windows)
  83. ^ Сеть разработчиков Microsoft - Дорожная карта доступа к данным[постоянная мертвая ссылка ]
  84. ^ Ананд Лал Шимпи (21 мая 2013 г.). «Xbox One: анализ оборудования и сравнение с PlayStation 4». Анандтех. Получено 22 мая, 2013.
  85. ^ «Тест технических характеристик: Xbox One против PlayStation 4». Информер игры. 21 мая, 2013. Получено 22 мая, 2013.
  86. ^ «Чего ожидать от запуска Sony PlayStation 5 в ноябре». Индийский экспресс. 31 августа 2020 г.. Получено 14 сентября, 2020.
  87. ^ Катресс, доктор Ян. «Блог Hot Chips 2020 Live: Системная архитектура Microsoft Xbox Series X (18:00 по тихоокеанскому времени)». www.anandtech.com. Получено 14 сентября, 2020.
  88. ^ ПроцессорАрхитектура Поля
  89. ^ «Пример файла из дерева исходных текстов ядра Linux 3.7.8, отображающий использование термина x86_64». Архивировано из оригинал 23 сентября 2005 г.. Получено 17 февраля, 2013.
  90. ^ США 6877084 
  91. ^ США 6889312 
  92. ^ США 6732258 
  93. ^ «Соглашение о перекрестной патентной лицензии между AMD и Intel». 1 января 2001 г. Архивировано с оригинал 21 июня 2007 г.. Получено 23 августа, 2009.
  94. ^ «Мировое соглашение AMD Intel».
  95. ^ Стивен Шенкленд и Джонатан Э. Скиллингс (12 ноября 2009 г.). «Intel выплатит 1,25 млрд драмов в рамках антимонопольного урегулирования». CNET. Получено 24 апреля, 2012.
  96. ^ Смит, Райан (12 ноября 2009 г.). «AMD и Intel улаживают свои разногласия: AMD становится безупречной». АнандТех. Архивировано из оригинал 13 мая 2010 г.

внешняя ссылка