Відкрити головне меню

X86-64

64-бітна версія набору інструкцій x86

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

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

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

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

  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-бітну не внесла. Варто зазначити лише:

  • трохи збільшені вимоги програм до пам’яті зумовлені збільшенням адрес і операндів;
  • відсутнє суттєве збільшення продуктивності: при перекомпіляції програм можна очікувати приріст лише в межах 5-15%;
  • збільшені вимоги до місця на жорсткому диску 64-х бітними ОС: системі потрібно зберігати окремо 64-х та 32-х бітні бібліотеки для забезпечення сумісності.

НазвиРедагувати

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

  • x86-64. Первинний варіант. Саме під цією назвою фірмою AMD була опублікована перша попередня специфікація.
  • AA-64. Так архітектуру охрестив популярний неофіційний довідник sandpile.org (внісши інформацію практично відразу після публікацій першої попередньої специфікації) за аналогією з Ia-64, і що як і раніше так її називає, як AMD Architecture 64.
  • Hammer Architecture. Інколи зустрічалася назва по перших ядрах процесорів, що розроблялися, отримали назви Clawhammer (обценьки) і Sledgehammer (кувалда) інколи званих просто Hammer (молоток).
  • Amd64. Після випуску перших Hammer'ів в назві архітектури з'явилася назва фірми-розробника Advanced Micro Devices. Зараз є офіційним для реалізації AMD.
  • Yamhill Tehnology. Перша назва реалізації технології від Intel. Інколи згадувалася назва CT (Clackamas Technology).
  • EM64T. Перша офіційна назва реалізації Intel. Розшифровувалося як Extended Memory 64 Technology.
  • IA-32E. Інколи зустрічалося спільно з EM64T, частіше для позначення довгого режиму, який в документації Intel називається «Режимом IA-32E».
  • Intel 64. Поточна офіційна назва архітектури Intel. Поступово Intel відмовляється від найменувань IA-32, IA-32E і EM64T на користь цієї назви, яка тепер є єдиною офіційною для цієї архітектури.
  • x64 Офіційна назва версій операційних систем Windows і Solaris, також використовувана як назва архітектури фірмами Microsoft і Sun Microsystems.

Відмінності між AMD64 і Intel 64Редагувати

  • Робота інструкцій BSF і BSR у Intel 64 відрізняється від AMD64, у випадку коли джерело дорівнює нулю, а розмір операнда 32 біти. Процесор Intel встановлює прапор «нуль» і залишає верхні 32 розряди цілі невизначеними.
  • Формат оновлення мікрокоду, а також регістри MSR, пов'язані з мікрокодом, відрізняються у AMD64 і Intel 64. Intel зберігає схему оновлення мікрокоду такою ж, як вона була у їх 32-розрядних процесорах.
  • Intel 64 не має деяких регістрів MSR, які вважаються архітектурно важливими у AMD64, зокрема: SYSCFG, TOP_MEM, TOP_MEM2.
  • Інструкції SYSCALL/SYSRET у Intel 64 працюють лише у 64-розрядному режимі (не працюють у режимі сумісності),[1]:4-397 натомість інструкції SYSENTER/SYSEXIT дозволені у обох режимах.[1]:4-400 AMD64 не підтримує SYSENTER/SYSEXIT у обох підрежимах long mode.[2]:33
  • У 64-розрядному режимі ближні переходи з префіксом 66H (англ. operand size override) діють по-різному: Intel 64 ігнорує даний префікс і команда має 32-розрядние зміщення зі знаком, а вказівник інструкції не відсікається. У AMD64 зміщення 16-розрядне, а верхні 48 розрядів вказівника інструкцій процесор очищує.
  • Процесори AMD при виконанні інструкцій FLD або FSTP над 80-розрядним значенням signalling NaN призводять до виняткової ситуації обробки чисел з рухомою комою, в той час як процесори Intel таку ситуацію не спричиняють.
  • У Intel 64 відсутня можливість збереження і відновлення зменшеного варіанту стану співпроцесора рухомої коми (за допомогою інструкцій FXSAVE і FXRSTOR).
  • У процесорах AMD, починаючи з Opteron Rev. E і Athlon 64 Rev. D, знову з'явилася обмежена підтримка сегментації за допомогою біту Long Mode Segment Limit Enable (LMSLE). Дане нововведення призначалося «для полегшення віртуалізації гостьового 64-розрядного коду».[3][4]
  • При поверненні інструкцією SYSRET, якщо адреса неканонічна, процесори AMD64 викликають обробник general protection fault[en] з рівнем привілеїв 3,[5] в той час як процесори Intel 64 викликають його з рівнем привілеїв 0.[1]:4-412

Див. такожРедагувати

ДжерелаРедагувати

  1. а б в Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z. Intel. September 2013. Процитовано January 21, 2014. 
  2. AMD Corporation (December 2016). Volume 2: System Programming (PDF). AMD64 Architecture Programmer's Manual. AMD Corporation. Процитовано March 25, 2017. 
  3. How retiring segmentation in AMD64 long mode broke VMware. Pagetable.com. November 9, 2006. Процитовано May 2, 2010. 
  4. VMware and CPU Virtualization Technology (PDF). VMware. Процитовано September 8, 2010. 
  5. AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions. AMD. May 2018. с. 419. Процитовано August 2, 2018. 

ПосиланняРедагувати