Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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] Поскольку полные наборы 16-разрядных и 32-разрядных инструкций x86 остаются реализованными на оборудовании без какой-либо промежуточной эмуляции, эти старые исполняемые файлы могут работать с незначительным снижением производительности или без него, [13] в то время как новые или модифицированные приложения могут Воспользуйтесь преимуществами новых функций процессора для повышения производительности. Кроме того, процессор, поддерживающий x86-64, по-прежнему работает в реальном режиме для полной обратной совместимости с 8086., как это делали процессоры x86, поддерживающие защищенный режим , начиная с 80286 .

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

Архитектура 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. модели), Turion 64 , Turion 64 X2 , Sempron (степпинг «Palermo» E6 и все модели «Manila»), Phenom (за которым следует «X3» или «X4», чтобы указать количество ядер), Phenom II (за которым следует « X2, X3, X4 или X6 для обозначения количества ядер), FX ,Fusion / APU и Ryzen / Epyc .[ необходима цитата ]

Архитектурные особенности [ править ]

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

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

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

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

Адреса в канонической форме [ править ]

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

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

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

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

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

Структура таблицы страниц [ править ]

Режим 64-битной адресации (« длинный режим ») - это надмножество расширений физических адресов (PAE); из-за этого размеры страницы могут составлять 4  КиБ (2 12 байтов) или 2  МиБ (2 21 байта). [11] ( p120 ) В длинном режиме также поддерживаются страницы размером 1  ГиБ (1073741824 (2 30 ) байтов). [11] ( p120 ) Вместо трехуровневой системы таблиц страниц, используемой системами в режиме PAE, системы, работающие в длинном режиме, используют четыре уровня таблицы страниц: PAEТаблица указателей каталога страниц расширена с четырех до 512, и добавлена ​​дополнительная таблица Page-Map Level 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 поддерживают физическое адресное пространство объемом до 2 48 байт ОЗУ или 256 ТиБ. [18] Однако по состоянию на июнь 2010 года не было известных материнских плат x86-64 , поддерживающих 256 ТиБ ОЗУ. [25] [26] [27] [28] [ неудачная проверка ] Операционная система может накладывать дополнительные ограничения на объем оперативной памяти, который можно использовать или поддерживать. Подробности по этому поводу приведены в разделе « Совместимость и характеристики операционных систем » данной статьи.

Режимы работы [ править ]

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

  1. ^ a b 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] ( p14 ) ( p24 ) ( p118 ) 64-битные программы не могут быть запущены из устаревшего режима.

Реальный режим [ править ]

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

Intel 64 [ править ]

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

История [ править ]

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

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

Название Intel для этого набора инструкций менялось несколько раз. Имя, используемое в IDF, было CT (предположительно [ оригинальное исследование? ] Для Clackamas Technology , еще одно кодовое название реки Орегон ); через несколько недель они стали называть его IA-32e (для расширений IA-32 ), а в марте 2004 года обнародовали «официальное» название EM64T (Extended Memory 64 Technology). В конце 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, является версия Merom процессора Core 2 , выпущенная 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, начиная с« Мером-2М », Atom 230, 330, D410, D425, D510, D525, N450, N455, N470, N475, N550, N570, N2600 и N2800, все версии от Pentium D , Pentium Extreme Edition , Core 2 , ядро i9 , Core i7 , Core i5 , иПроцессоры Core i3 и процессоры серии Xeon Phi 7200.

Реализация VIA x86-64 [ править ]

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

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

Различия между AMD64 и Intel 64 [ править ]

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

Последние реализации [ править ]

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

Старые реализации [ править ]

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

Принятие [ править ]

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

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

По состоянию на 2020 год суперкомпьютер на базе Fujitsu A64FX под названием Fugaku является номером один. Первый суперкомпьютер на базе ARM появился в списке в 2018 году [53], и в последние годы сопроцессоры с архитектурой без процессора ( GPGPU ) также сыграли большую роль в производительности. Сопроцессоры Intel Xeon Phi "Knights Corner" , которые реализуют подмножество x86-64 с некоторыми векторными расширениями [54] , также используются вместе с процессорами x86-64 в суперкомпьютере Tianhe-2 . [55]

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

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

BSD [ править ]

DragonFly BSD [ править ]

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

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 [ править ]

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

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

Linux [ править ]

Linux был первым ядром операционной системы, которое запускало архитектуру x86-64 в долгом режиме , начиная с версии 2.4 в 2001 году (до появления оборудования). [62] [63] Linux также обеспечивает обратную совместимость для запуска 32-битных исполняемых файлов. Это позволяет перекомпилировать программы в длинный режим, сохраняя при этом использование 32-битных программ. Некоторые дистрибутивы Linux в настоящее время поставляются с ядрами x86-64 и пользовательскими областями . Некоторые, такие как Arch Linux , [64] SUSE , Mandriva и Debianпозволяют пользователям устанавливать набор 32-разрядных компонентов и библиотек при установке с 64-разрядного DVD, что позволяет большинству существующих 32-разрядных приложений работать вместе с 64-разрядной ОС. Другие дистрибутивы, такие как Fedora , Slackware и Ubuntu , доступны в одной версии, скомпилированной для 32-битной архитектуры, а в другой - для 64-битной архитектуры. Fedora и Red Hat Enterprise Linux позволяют одновременно устанавливать все пользовательские компоненты как в 32-битной, так и в 64-битной версиях в 64-битной системе.

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

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

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

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

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

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

macOS 10.15 включает только 64-битное ядро ​​и больше не поддерживает 32-битные приложения.

64-битное ядро ​​не поддерживает 32-битные расширения ядра , а 32-битное ядро ​​не поддерживает 64-битные расширения ядра.

macOS использует универсальный двоичный формат для упаковки 32- и 64-разрядных версий кода приложения и библиотеки в один файл; наиболее подходящая версия автоматически выбирается во время загрузки. В Mac OS X 10.6 универсальный двоичный формат также используется для ядра и для тех расширений ядра, которые поддерживают как 32-битные, так и 64-битные ядра.

Солярис [ править ]

Solaris 10 и более поздние версии поддерживают архитектуру x86-64.

Для Solaris 10, как и для архитектуры SPARC , существует только один образ операционной системы, который содержит 32-битное ядро ​​и 64-битное ядро; он помечен как образ DVD-ROM "x64 / x86". По умолчанию загружается 64-разрядное ядро, что позволяет запускать как 64-разрядные, так и существующие или новые 32-разрядные исполняемые файлы. 32-битное ядро ​​также можно выбрать вручную, и в этом случае будут работать только 32-битные исполняемые файлы. Команда isainfoможет использоваться, чтобы определить, работает ли система с 64-битным ядром.

Для Solaris 11 предоставляется только 64-битное ядро. Однако 64-битное ядро ​​поддерживает как 32-битные, так и 64-битные исполняемые файлы, библиотеки и системные вызовы.

Windows [ править ]

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

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

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

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

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

  • Возможность запускать существующие 32-разрядные приложения ( .exeпрограммы) и библиотеки (библиотеки) динамической компоновки .dllс помощью WoW64, если WoW64 поддерживается этой версией. Более того, 32-битная программа, если она была связана с опцией «большой адрес», [77] может использовать до 4 ГиБ виртуального адресного пространства в 64-битной Windows вместо 2 ГиБ по умолчанию (необязательно 3 ГиБ с /3GBопцией загрузки и опцией ссылки «большой адрес»), предлагаемой 32-битной Windows. [81] В отличие от использования параметра /3GBзагрузки на 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). [82]
  • Модель данных 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 в долгом режиме - даже несмотря на то, что сегментированная адресация сама по себе не используется ни одной современной операционной системой. [78]
  • В ранних отчетах утверждалось, что планировщик операционной системы не будет сохранять и восстанавливать состояние машины x87 FPU при переключении контекста потока. Наблюдаемое поведение показывает, что это не так: состояние x87 сохраняется и восстанавливается, за исключением потоков, работающих только в режиме ядра (ограничение, которое существует и в 32-битной версии). В самой последней документации, доступной от Microsoft, говорится, что x87 / MMX / 3DNow! инструкции могут использоваться в длинном режиме, но они устарели и могут вызвать проблемы совместимости в будущем. [81]
  • Некоторые компоненты, такие как Microsoft Jet Database Engine и объекты доступа к данным , не будут перенесены на 64-разрядные архитектуры, такие как x86-64 и IA-64. [83] [84]
  • 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, основанные на микроархитектуре Jaguar . [85] [86] Прошивки и игры написаны в коде x86-64; никакой устаревший код x86 не используется.

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

Отраслевые соглашения об именах [ править ]

Поскольку 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.

  • amd64
    • Большинство систем BSD , таких как FreeBSD , MidnightBSD , NetBSD и OpenBSD, относятся к AMD64 и Intel 64 под именем архитектуры «amd64».
    • Некоторые дистрибутивы Linux, такие как Debian , Ubuntu , Gentoo Linux, ссылаются на AMD64 и Intel 64 под названием архитектуры «amd64».
    • Версии Microsoft Windows x64 используют внутреннее название AMD64 для обозначения различных компонентов, которые используют эту архитектуру или совместимы с ней. Например, переменной среды PROCESSOR_ARCHITECTURE присвоено значение «AMD64» в отличие от «x86» в 32-разрядных версиях, а системный каталог на установочном компакт-диске Windows x64 Edition называется «AMD64», в отличие от «i386». "в 32-битных версиях. [89]
    • Компании Sun Solaris ' isalist команда идентифицирует как AMD64- и Intel систем , как „amd64“ 64 на основе.
    • Java Development Kit (JDK): имя «amd64» используется в именах каталогов, содержащих файлы x86-64.
  • x86_64
    • Linux ядро [90] , и GNU Compiler Collection относятся к 64-битной архитектуре , как "x86_64".
    • Некоторые дистрибутивы Linux, такие как Fedora , openSUSE , Arch Linux , Gentoo Linux, называют эту 64-битную архитектуру «x86_64».
    • Apple macOS называет 64-битную архитектуру «x86-64» или «x86_64», как показано в команде Терминала arch[3] и в документации для разработчиков. [2] [4]
    • В отличие от большинства других систем BSD, DragonFly BSD называет 64-битную архитектуру «x86_64».
    • Haiku называет 64-битную архитектуру «x86_64».

Лицензирование [ править ]

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

См. Также [ править ]

  • Общая инкапсулированная программная архитектура AMD (AGESA)

Заметки [ править ]

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

Внешние ссылки [ править ]

  • Руководства, руководства и документы AMD для разработчиков
  • x86-64: Расширение архитектуры x86 до 64-бит - технический доклад архитектора AMD64 ( видеоархив ) и второй доклад того же докладчика ( видеоархив )
  • AMD «Расширенная защита от вирусов»
  • Intel настраивает EM64T для полной совместимости с AMD64
  • Аналитик: Intel Reverse-Engineered AMD64
  • Ранний отчет о различиях между Intel IA32e и AMD64
  • Перенос на 64-битные системы GNU / Linux , автор Андреас Джагер из GCC Summit 2003. Отличный документ, объясняющий почти все практические аспекты перехода с 32-битной на 64-битную.
  • Архитектура Intel 64
  • Сеть программного обеспечения Intel: «64 бита»
  • Учебники TurboIRC.COM, включая примеры того, как войти в защищенный и долгий режим прямо из DOS.
  • Семь шагов по переносу программы в 64-битную систему
  • Ограничения памяти для выпусков Windows