x86-64

Эта статья входит в число готовых статей
Эта статья прошла проверку экспертом
Материал из «Знание.Вики»

x86-64
Разработчик AMD
Разрядность 32 и/или 64 бита
Представлена в 2002 году[1]
Архитектура 64-битное расширение для архитектуры x86
Кодирование СК Переменной длины (1..15 байт)
Реализация переходов флаги условий
Порядок байтов Little-endian
Размер страницы в дополнение к страницам, существующим в архитектуре x86, добавлены 1 GiB страницы.
Открытая? Для некоторых дополнительных функций x86-64 архитектуры может потребоваться лицензия от AMD.
Регистры
Общего назначения Количество РОН при использовании 32-х разрядного режима - 8,
при использовании 64-х разрядного режима - 16[2].
SIMD SSE: 16 x 128 бит,
MMX: 8 x 64 бит,
AVX-512: 32 x 512 бит[3]

x86-64 — аппаратная платформа (аппаратно-программный комплекс вычислительной системы), реализующая 64-битовое расширение набора команд для 32-разрядной архитектуры x86. Позволяет работать с 64-разрядными программными приложениями, обладает практически полной обратной совместимостью. Автором технологии является компания AMD[4].

Компании Microsoft и Oracle применяют название «x64», однако, в каталоге файлов для 64-разрядных версий Microsoft Windows он известен как «amd64» (в то время как для архитектуры x86 используется название «i386»). Подобная практика также применяется в репозиториях (от англ. repository — хранилище) многих дистрибутивов (форма распространения программного обеспечения) Linux. Наборы инструкций AMD64 и Intel 64 практически идентичны.

История

AMD Opteron, первый процессор, работающий в режиме расширения архитектуры x86-64

AMD64 (также именуемая AMD в своей литературе и документации как «64-разрядная технология AMD» и «Архитектура AMD x86-64») была создана как альтернатива 64-разрядной архитектуре IA-64, разработанной Intel и Hewlett-Packard, которая была обратно несовместима с 32-разрядной версией архитектуры x86.

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

Первый процессор на базе AMD64 был выпущен в апреле 2003 года, далее список пополнился следующими моделями:

  • Opteron, Athlon 64, Athlon 64 X2, Athlon 64 FX, Athlon II (за которыми следуют «X2», «X3» или «X4» для обозначения количества ядер и моделей XLT).
  • Turion 64, Turion 64 X2.
  • Sempron («Palermo» E6 stepping и все модели «Manila»).
  • Phenom (за которыми следуют «X3» или «X4» для обозначения количества ядер), Phenom II (за которым следуют «X2», «X3», «X4» для обозначения количества ядер).
  • FX, Fusion/APU и Ryzen/EPYC.

Позже платформу x86-64 стали поддерживать следующие компании:

  • Intel Corporation реализует данную платформу на процессорах:
    • Pentium (Pentium Dual-Core, Pentium T-серии, Pentium P-серии, Pentium G-серии, Pentium B-серии);
    • Intel Movidius, Intel Xeon и Intel Max Series
    • Celeron;
    • Core
    • Intel Atom и Xeon (линейка серверных микропроцессоров производства Intel);
  • VIA Technologies реализует платформу на процессорах Nano, Eden, QuadCore.

Архитектурные особенности. Режимы адресации

x86-64 относится к типу CISC (англ. complex instruction set computing — компьютер с комплексным набором команд). Является практически единственной современной CISC-архитектурой. Другие популярные архитектуры строятся по принципу RISC (англ. reduced instruction set computer — компьютер с сокращённым набором команд). Термин «сокращённый» в названии описывает тот факт, что сокращён объём (и время) работы, выполняемый каждой отдельной машинной командой — как максимум один цикл доступа к памяти, тогда как сложные инструкции CISC-процессоров могут требовать многих циклов доступа к памяти для своего выполнения[6].

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

Дополнительные регистры

В дополнение к увеличению размера регистров общего назначения, их количество увеличено с 8 до 16. Таким образом, можно хранить больше локальных переменных в регистрах, а не в стеке, и позволять регистрам хранить часто используемые константы. Несмотря на то, что у AMD64 меньше регистров, чем у многих наборов команд RISC, его архитектура позволяет иметь больше внутренних регистров.

При этом современные х86-процессоры, хотя и CISC-совместимы, являются процессорами с RISC-ядром, и в формальном смысле считаются гибридными. В таких гибридных CISC-процессорах CISC-инструкции преобразовываются в набор внутренних RISC-команд, при этом одна команда x86 может порождать несколько RISC-команд, исполнение команд происходит на суперскалярном конвейере одновременно по несколько штук. Небольшие инструкции можно выполнять одновременно[7].

Инструкции кодируются последовательностью байт переменной длины, на практике от 1 до 15 байт.

Режимы адресации

Режимы адресации в 64-разрядном режиме аналогичны, но не идентичны x86:

  • инструкции, относящиеся к 64-разрядным регистрам, автоматически выполняются с 64-разрядной точностью;
  • для 64-разрядных непосредственных констант или постоянных адресов добавлена специальная форма инструкции mov. Для всех других инструкций непосредственные константы или постоянные адреса по-прежнему имеют 32 бита;
  • x64 предоставляет новый режим относительной адресации RIP (англ. relative instruction-pointer). Инструкции, относящиеся к одному постоянному адресу, кодируются как смещения от RIP[8].

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

Имеются два режима работы данной архитектуры[9]:

Схематичное представление работы микропроцессоров
  • Long mode («длинный» режим) — режим, в котором 64-разрядная операционная система (ОС) получает доступ к 64-разрядным командам и регистрам. Для использования этого режима необходима любая 64-битная операционная система (Windows, Linux или какая-то ещё).

Этот режим позволяет выполнять 64-битовые программные приложения. Также, для обратной совместимости, предусмотрена поддержка выполнения 32-битового кода, включая 32-битные приложения. Однако при запуске 32-битовых программ в 64-разрядной системе они не смогут использовать 64-битовые системные библиотеки и наоборот. Для решения этой задачи большинство 64-разрядных операционных систем предоставляет два набора необходимых системных файлов (для родных 64-битовых приложений и для их 32-битовых версий). Этот подход аналогичен методике, использовавшейся в ранних 32-разрядных системах, таких как Windows 95 и Windows NT, для выполнения 16-битовых программ.

  • Legacy mode («наследственный»). Этот режим зовется «наследственным» по той причине, что дает возможность процессору AMD64 работать с инструкциями, которые рассчитаны для x86-процессоров. Кроме того, в рамках активации данного режима осуществляется полная совместимость с 32-битным кодом и соответствующими ОС.

Процессор в «наследственном» режиме работает точно так же, как стандартный x86-процессор. Дополнительные функции, доступные под архитектурой AMD64, становятся неактивны.

При активации данного режима 64-разрядные операционные системы и 64-битовые программные приложения работать не будут.

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

Дополнительное определение: современные процессоры используют концепции физической памяти и виртуальной памяти. Таблица страниц — это структура данных, используемая системой виртуальной памяти в операционной системе компьютера для хранения сопоставления между виртуальным адресом и физическим адресом[10].

Вместо двухуровневой системы таблиц страниц, используемой системами с 32-битовой архитектурой x86, системы, работающие в «длинном» режиме, используют четыре уровня таблицы страниц.

X86 Paging 64bit.svg

Возможные размеры страниц:

  • 4 KB (212 байт) — наиболее часто используется (как и в x86)
  • 2 MB (221 байт)
  • 1 GB (230 байт)

Операционные системы, поддерживаемые платформой х86-64

Ниже приведён перечень некоторых ОС, которые работают на платформе х86-64:

Архитектура x86S

Начиная с 2023 года компания Intel представила упрощённую процессорную архитектуру x86S (x86 Simplification), реализующую только 64-разрядный режим и избавленную от поддержки устаревших концепций. Несмотря на то, что непосредственная поддержка 16- и 32-разрядных операционных систем в x86S прекращена, их можно будет запускать при помощи виртуализации. Возможность запуска 32-разрядных приложений в окружении 64-разрядной ОС сохранится.

Процессоры с новой архитектурой будут запускаться сразу в 64-разрядном режиме, минуя промежуточные переключения в 16- и 32-разрядные режимы в процессе инициализации. В x86S также реализована возможность переключения на использование 5-уровневой структуры таблицы страниц памяти, без предварительного отключения страничной адресации и минуя переход в бесстраничный режим[11].

Литература

Дорот, Вячеслав Леонидович. Толковый словарь современной компьютерной лексики. — 3-е изд. — СПб.: БХВ-Петербург, 2004. — 608 с. — ISBN 5-94-157491-6.

Примечания

  1. 64-битные x86 процессоры. Дата обращения: 3 сентября 2024.
  2. Assembly Language Регистры. Дата обращения: 3 сентября 2024.
  3. Расширения SSE и AVX/AVX2 (18 октября 2023). Дата обращения: 3 сентября 2024.
  4. AMD Releases x86-64™ Architectural Specification; Enables Market Driven Migration to 64-Bit Computing
  5. 64-битные x86 процессоры. Краткая историческая справка (5 декабря 2013). Дата обращения: 5 сентября 2024.
  6. Sivarama P. Dandamudi. Guide to RISC Processors. RISC Principles. — New York: Springer, 2005. — С. 39—44. — ISBN 978-0-387-21017-9.
  7. Виды популярных архитектур процессоров (16 июля 2018). Дата обращения: 4 сентября 2024.
  8. Евгений Попов. Код, независимый от позиции (29 сентября 2023). Дата обращения: 5 сентября 2024.
  9. x86-64. ООО "Альтербит". Дата обращения: 5 сентября 2024.
  10. Виртуальная память. Архитектурные средства поддержки виртуальной памяти. НОУ «ИНТУИТ». Дата обращения: 5 сентября 2024.
  11. Intel развивает упрощённую архитектуру x86S, работающую только в 64-разрядном режиме (20 мая 2023). Дата обращения: 14 сентября 2024.

Ссылки

Операционные системы на базе набора команд х86-64