Amd64 - це

AMD64 (також x86-64 / Intel64 / EM64T / x64) - 64-бітна архітектура мікропроцесора і відповідний набір інструкцій, розроблені компанією AMD. Це розширення архітектури x86 з повною зворотною сумісністю. Набір інструкцій x86-64 в даний час підтримується процесорами AMD Athlon 64. Athlon 64 FX. Athlon 64 X2. Phenom. Turion 64. Sempron. Цей набір інструкцій був ліцензований основним конкурентом AMD - компанією EM64T (Intel 64) (раніше відомі як EM64T і IA-32e) в пізніх моделях процесорів Pentium 4. а також в Pentium D. Pentium Extreme Edition. Celeron D. Core 2 Duo і Microsoft і Sun Microsystems використовують для позначення цього набору інструкцій термін x64, однак, каталог з файлами для архітектури в дістрібьютівах Microsoft називається amd64 (пор. I386 для архітектури x86).

Як правильно називати

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

На сьогоднішній день найбільш поширеними є AMD64, x86-64 і x64. Часом згадка AMD вводить користувачів в оману, аж до того, що вони відмовляються завантажувати дистрибутиви рідних версій ОС, мотивуючи це тим, що на їх Intel-процесорі версія для AMD не піде. Насправді розповсюджувачі ПО використовують назву amd64 лише тому, що саме AMD була піонером у розробці цієї технології. Буває, що користувачі плутають архітектуру Intel 64 з IA-64, помилково викачувавши ПО для цієї архітектури, і з подивом виявляють, що програма не починається. Щоб уникнути подібних помилок, завжди слід пам'ятати, що Intel 64 і. Представники Intel 64 - це Pentium 4 (останні моделі), ряд моделей Celeron D. сімейство Core 2 і деякі моделі Intel Atom. Представники IA-64 - це сімейства Itanium 2.

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

Процесори архітектури підтримують два режими роботи: Long mode ( «довгий» режим) і Legacy mode ( «спадковий», режим сумісності з x86).

«Довгий» режим - «рідний» для процесорів AMD64. Цей режим дозволяє скористатися всіма додатковими можливостями, наданими архітектурою AMD64. Для використання цього режиму необхідна 64-бітна операційна система. наприклад, Windows XP Professional x64 Edition, Windows Vista x64 або 64-бітові варіанти GNU / Linux. Solaris (змішана 32/64 збірка з різними ядрами для 32- і 64-бітових процесорів), Mac OS X (змішана 32/64 збірка з 32-бітовим ядром, починаючи з версії 10.4.7). Цей режим дозволяє виконувати 64-бітові програми; також (для забезпечення сумісності) надається підтримка виконання 32-бітного коду, наприклад, 32-бітних додатків, хоча 32-бітові програми не зможуть використовувати 64-бітові системні бібліотеки, і навпаки. Щоб впоратися з цією проблемою, більшість 64-розрядних операційних систем надають два набору необхідних системних файлів: один - для рідних 64-бітних додатків, і інший - для 32-бітних програм. (Цією ж методикою користувалися ранні 32-бітові системи - наприклад, Windows 95 - для виконання 16-бітних програм). У «довгому» режимі скасований ряд «рудиментів» архітектури 8086, сегментована модель пам'яті (проте, залишилася можливість використання сегментів FS і GS, що корисно для швидкого знаходження важливих даних потоку при перемиканні задач), апаратна мультизадачність. а також ряд команд, як реалізують скасовані можливості, так і працюючі з BCD -числами, які в нових програмах практично не використовувалися. Серед особливостей «довгого» режиму, слід зазначити той факт, що він активується установкою прапора CR0.PG, який використовується для включення сторінкового MMU (за умови що таке перемикання дозволено (EFER.LME = 1), в іншому випадку просто відбудеться включення MMU в «спадковому» режимі). Таким чином, неможливо виконання 64-бітного коду з забороненим сторінковим перетворенням. Це створює певні труднощі в програмуванні, оскільки при перемиканні з «довгого» в «спадковий» режим і назад (наприклад, для виклику функцій DOS, монітором віртуальної машини. І т. Д.) Потрібно подвійний скидання MMU, для чого код перемикання повинен знаходитися в тотожно відображений сторінці.

Legacy Mode

Даний «спадковий» режим дозволяє процесору AMD64 виконувати інструкції, розраховані для процесорів x86, і надає повну сумісність з 32/16-бітовим кодом і операційними системами. В цьому режимі процесор поводиться точно так само, як x86-процесор, наприклад Pentium 4, і додаткові функції, що надаються архітектурою AMD64 (наприклад, додаткові регістри) недоступні. В цьому режимі 64-бітові програми та операційні системи працювати не будуть (якщо, звичайно, не використовується віртуалізація).

особливості архітектури

Архітектура x86_64 має:

  • 16 цілочисельних 64-бітових регістра загального призначення (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15),
  • 8 80-бітових регістрів з плаваючою точкою (ST0 - ST7),
  • 8 64-бітових регістрів (MM0 - MM7, мають спільний простір з регістрами ST0 - ST7),
  • 16 128-бітних регістрів
  • 64-бітний покажчик RIP і 64-бітний регістр прапорів RFLAGS.

Смерть і відродження сегментной моделі організації пам'яті

Розробляючи архітектуру x86-64, інженери корпорації AMD вирішили назавжди покінчити з головним «рудиментом» архітектури x86 - сегментною моделлю пам'яті, яка передавалася у спадщину ще з часів 8086/80286. Однак, як потім виявилося, вони дуже погарячкували. Архітектура стала абсолютно невіртуалізіруемой. При розробці нової версії свого продукту для віртуалізації програмісти компанії VMWare зіткнулися з непереборними труднощами при реалізації 64-бітної віртуальної машини. Оскільки, для відділення коду монітора від коду «гостя» програмою використовувався механізм сегментації, ця задача стала практично нерозв'язною. Усвідомивши свою помилку, AMD повернула обмежений варіант сегментної організації пам'яті починаючи з ревізії D архітектури AMD64, що дозволило запускати 64-бітові ОС у віртуальних машинах. VMWare надає разом зі своїми продуктами спеціальну утиліту. Також слід зазначити, що спочатку потрапили «під ніж» команди LAHF і SAHF, які також активно використовуються ПО віртуалізації, потім також були повернуті в систему команд. З поширенням засобів апаратної віртуалізації (Intel VT, AMD-V) потреба в сегментації знов поступово відпаде, проте VMWare як і раніше активно її використовує, і підтримки AMD-V навіть на сьогоднішній день в її продуктах немає.