X86-64 - це
x86-64 (також x64 / AMD64 / Intel64 / EM64T) - 64 -бітний апаратна платформа. архітектура мікропроцесора і відповідний набір інструкцій і чіпсет. розроблені компанією AMD. Це розширення архітектури x86 з повною зворотною сумісністю. Набір інструкцій x86-64 в даний час підтримується процесорами AMD Athlon 64. Athlon 64 FX. Athlon 64 X2, Phenom. Phenom II. Turion 64. Opteron. останніми моделями Sempron. Цей набір інструкцій підтриманий компанією Intel (з незначними доповненнями) під назвою Intel 64 (раніше відомі як EM64T і IA-32e) в пізніх моделях процесорів Pentium 4. а також в Pentium D. Pentium Extreme Edition. Celeron D. Core 2 Duo. Core 2 Quad. Core i3, Core i5, Core i7 і Xeon. Корпорації Microsoft і Sun Microsystems використовують для позначення цього набору інструкцій термін "x64", проте каталог з файлами для архітектури в дистрибутивах Microsoft називається "amd64" (пор. "I386" для архітектури x86).
Як правильно називати
Існує кілька варіантів назв цієї технології, які, часом, приводять до плутанини і можуть ввести користувача в оману.
На сьогоднішній день найбільш поширеними є x64, x86-64 і AMD64. Часом згадка AMD вводить користувачів в оману, аж до того, що вони відмовляються завантажувати дистрибутиви рідних версій ОС, мотивуючи це тим, що на їх Intel-процесорі версія для AMD не піде. Насправді розповсюджувачі ПО використовують назву amd64 лише тому, що саме AMD була піонером у розробці цієї технології. Буває, що користувачі плутають архітектуру Intel 64 з IA-64, помилково викачувавши ПО для цієї архітектури, і з подивом виявляють, що програма не починається. Щоб уникнути подібних помилок, завжди слід пам'ятати, що Intel 64 і IA-64 це зовсім різні, несумісні один з одним, мікропроцесорні архітектури. Представники Intel 64 - це Pentium 4 (останні моделі), ряд моделей Celeron D. сімейство Core 2 і деякі моделі Intel Atom. Представники IA-64 - це сімейства Itanium і Itanium 2.
Режими роботи
Процесори архітектури підтримують два режими роботи: Long mode ( «довгий» режим) і Legacy mode ( «спадковий», режим сумісності з x86).
«Довгий» режим - «рідний» для процесорів AMD64. Цей режим дозволяє скористатися всіма додатковими можливостями, наданими архітектурою AMD64. Для використання цього режиму необхідна 64-бітна операційна система. наприклад, Windows XP Professional x64 Edition. Windows Vista x64, Windows 7 x64 або 64-бітові варіанти UNIX-подібних систем GNU / Linux. FreeBSD. OpenBSD. NetBSD (чисті 64-бітові збірки, однак, є можливість запуску 32-бітних додатків), 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-бітних програм). У «довгому» режимі скасований ряд «рудиментів» архітектури x86. таких, як режим віртуального 8086. сегментована модель пам'яті (проте, залишилася можливість використання сегментів FS і GS, що корисно для швидкого знаходження важливих даних потоку при перемиканні задач), апаратна мультизадачність. а також ряд команд, як реалізують скасовані можливості, так і працюючі з BCD -числами, які в нових програмах практично не використовувалися. Серед особливостей «довгого» режиму, слід зазначити той факт, що він активується установкою прапора CR0.PG, який використовується для включення сторінкового MMU (за умови що таке перемикання дозволено (EFER.LME = 1), в іншому випадку просто відбудеться включення MMU в «спадковому» режимі). Таким чином, неможливо виконання 64-бітного коду з забороненим сторінковим перетворенням. Це створює певні труднощі в програмуванні, оскільки при перемиканні з «довгого» в «спадковий» режим і назад (наприклад, для виклику функцій BIOS або 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-бітових регістрів Multimedia Extensions (MM0 - MM7, мають спільний простір з регістрами ST0 - ST7),
- 16 128-бітних регістрів SSE (XMM0 - XMM15),
- 64-бітний покажчик RIP і 64-бітний регістр прапорів RFLAGS.
Смерть і відродження сегментной моделі організації пам'яті
Розробляючи архітектуру x86-64, інженери корпорації AMD вирішили назавжди покінчити з головним «рудиментом» архітектури x86 - сегментною моделлю пам'яті, яка передавалася у спадщину ще з часів 8086/80286. Однак, як потім виявилося, вони дуже погарячкували. Архітектура стала абсолютно невіртуалізіруемой. При розробці нової версії свого продукту для віртуалізації програмісти компанії VMWare зіткнулися з непереборними труднощами при реалізації 64-бітної віртуальної машини. Оскільки, для відділення коду монітора від коду «гостя» програмою використовувався механізм сегментації, ця задача стала практично нерозв'язною. Усвідомивши свою помилку, AMD повернула обмежений варіант сегментної організації пам'яті починаючи з ревізії D архітектури AMD64, що дозволило запускати 64-бітові ОС у віртуальних машинах. Intel. однак, цього прикладу не послідувала, і тому ні на одному її процесорі, що не підтримує кошти апаратної віртуалізації, запустити 64-бітну віртуальну машину можна. З метою перевірки того, чи можливий на даному процесорі запуск 64-бітних гостьових ОС чи ні, VMWare надає разом зі своїми продуктами спеціальну утиліту. Також слід зазначити, що спочатку потрапили «під ніж» команди LAHF і SAHF, які також активно використовуються ПО віртуалізації, потім також були повернуті в систему команд. З поширенням засобів апаратної віртуалізації (Intel VT, AMD-V) потреба в сегментації знов поступово відпаде.