AMD64, x86_64
Офіційний логотип технології AMD64
Розробка AMD
Розрядність 64-біт, 32-біт
Поява квітень 2003 року
Тип архітектури CISC
Інструкції змінної довжини
Реалізація переходів умовні jmp
Порядок байтів little-endian
Регістри
Загального призначення 16
Рухома кома 16

x86-64 (x86_64, x64, AMD64, Intel 64) — 64-бітова архітектура мікропроцесора і відповідний набір інструкцій, розроблені компанією AMD. Це розширення архітектури x86 з повною зворотною сумісністю. Набір інструкцій x86-64 було впроваджено компанією AMD на процесорах для серверних платформ серії Opteron у квітні 2003 року, для процесорів домашнього використання, починаючи із процесорів серії Athlon 64 у вересні 2003 року. Всі подальші моделі процесорів (Athlon 64 FX, Athlon 64 X2, Phenom, Turion 64, а також пізнішні моделі Sempron) також були оснащені цим набором інструкцій. Цей набір інструкцій був ліцензований основним конкурентом AMD — компанією Intel (з незначними доповненнями) під назвою Intel 64 (раніше відомі як Em64t і Ia-32e) в пізніх моделях процесорів Pentium 4, Core 2, Xeon та інших. Корпорації Microsoft і Sun Microsystems використовують для позначення цього набору інструкцій термін «x64», проте каталог з файлами для архітектури в дистрибутивах Microsoft називається «amd64» (для порівняння: назва «i386» використовується для архітектури IA-32, оскільки першим процесором цієї архітектури був Intel 80386).

Архітектура і система команд

Архітектура вводить дві нові особливості:

  1. Розширені регістри:
    • 8 регістрів спільного призначення (R8 — R15);
    • всі 16 регістрів спільного призначення 64-бітні;
    • 8 нових 128-бітних регістрів SSE (XMM8 — XMM15);
    • новий командний префікс (REX) для доступу до розширених регістрів.
  2. Спеціальний режим «Long mode»:
    • до 64-біт віртуальних адрес;
    • 64-бітні вказівки команд (RIP);
    • плоский (flat) адресний простір.

Історія створення

AMD64 було створено як альтернативу до архітектури IA-64, що розвивалась компаніями Intel та HP. Анонсовано архітектуру ще в 1999 році з повною специфікацією в серпні 2000. AMD64 з самого початку позиціювалась як еволюційний шлях додавання 64-розрядних обчислювальних можливостей до існуючої архітектури х86, на відміну від підходу Intel, що створювала абсолютно нову архітектура IA-64. Першим процесором, що підтримував цю технологію був AMD Opteron, який був випущений в квітні 2003 року.

Недоліки архітектури

Однією з особливостей роботи з 64-розрядними регістрами є «затирання» їх верхньої половини командами, які оперують з 32-розрядними операндами.[1] Наприклад, від послідовності

   mov eax, 0F0F0AABBh
   shl rax, 32        ; Тепер RAX = F0F0AABB00000000h
   mov eax, 2

програміст може очікувати, що регістр RAX міститиме значення F0F0AABB00000002h. Однак це не так: значення RAX після наведеної послідовності операцій дорівнює 2, оскільки команда mov з 32-розрядним операндом обнулює всі верхні біти (таким чином, її поведінка стає аналогічною команді movzx). Дана поведінка процесора є повністю протилежною до випадку роботи з 32-бітними регістрами і їх половинками, де верхня половина значення завжди зберігається:

   mov ax, 0F0F0h
   shl eax, 16        ; Тепер EAX = F0F00000h
   mov ax, 2          ; Тепер EAX = F0F00002h, як і очікувалося

Значних недоліків 64-х бітна архітектура в 32-бітну не внесла. Варто зазначити лише:

Назви

Існує декілька варіантів назв цієї технології, які, деколи, приводять до плутанини і можуть ввести користувача в оману.

Відмінності між AMD64 і Intel 64

x86S

x86S — запропонована 2023-го року фірмою Intel подальша еволюція системи команд x86-64, спрямована на спрощення і відмову від застарілих режимів і особливостей процесора.[7] Запропоновано вилучити підтримку 16- і 32-розрядних операційних систем, але 32-розрядні програми користувача зможуть виконуватися у 64-розрядному режимі ОС. Важливою зміною є початкове завантаження процесора — воно відбуватиметься одразу у 64-розрядному режимі (на відміну від «класичного» завантаження x86 у 16-розрядному «реальному» режимі. Також з'явиться можливість активування 5-рівневих таблиць сторінок пам'яті без попереднього перемикання у режим з вимкненими сторінками.

Запропоновано вилучити наступні особливості і режими:[8]

На думку Intel, ці зміни логічно слідують за вилученням підтримки керування адресною лінією A20[en] (2008 рік), і вилученням підтримки 16- і 32-розрядних ОС у firmware Intel (2020 рік). Підтримка застарілих ОС у нових процесорах реалізовуватиметься за допомогою віртуалізації.[8]

Див. також

Джерела

  1. Why do x86-64 instructions on 32-bit registers zero the upper part of the full 64-bit register?. Stack Overflow (англ.). 24 червня 2012. Архів оригіналу за 8 лютого 2021. Процитовано 10 лютого 2021.
  2. а б в Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z (PDF). Intel. September 2013. Архів оригіналу (PDF) за 20 жовтня 2013. Процитовано 21 січня 2014.
  3. AMD Corporation (December 2016). Volume 2: System Programming (PDF). AMD64 Architecture Programmer's Manual. AMD Corporation. Архів оригіналу (PDF) за 13 липня 2018. Процитовано 25 березня 2017.
  4. How retiring segmentation in AMD64 long mode broke VMware. Pagetable.com. 9 листопада 2006. Архів оригіналу за 18 липня 2011. Процитовано 2 травня 2010.
  5. VMware and CPU Virtualization Technology (PDF). VMware. Архів оригіналу (PDF) за 17 липня 2011. Процитовано 8 вересня 2010.
  6. AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions (PDF). AMD. May 2018. Архів оригіналу (PDF) за 20 серпня 2018. Процитовано 2 серпня 2018.
  7. Intel Publishes "X86-S" Specification For 64-bit Only Architecture. www.phoronix.com (англ.).
  8. а б Envisioning a Simplified Intel Architecture for the Future. intel.com (англ.).
  Портал «Інформаційні технології»