Термінологія - x86-64
Являє собою розширення x86-архітектури, має практично повну зворотну сумісність.
Компанії Microsoft і Oracle застосовують для індикації даного набору інструкцій термін «x64», хоча каталог з файлами в дистрибутивах Linux має назву «amd64» (у випадку з архітектурою x86, іменується як «i386»).
На сьогоднішній день, платформу x86-64 підтримують такі компанії:
- AMD. процесори Z-серії, C-серії, G-серії, E-серії, E1, E2, A4, A6, A8, A10, FX, Athlon 64, Athlon 64 FX, Athlon 64 X2, Athlon II, Phenom, Phenom II, Turion 64, Turion 64 X2, Turion II, Opteron, останні моделі Sempron;
- Intel. реалізує дану платформу, використовуючи назву «Intel 64» ( «EM64T» і «IA-32e»). Пізні моделі процесорів Pentium 4, серії Pentium D, Pentium Extreme Edition, Celeron D, Celeron G-серії, Celeron B-серії, Pentium Dual-Core, Pentium T-серії, Pentium P-серії, Pentium G-серії, Pentium B- серії, Core 2 Duo, Core 2 Quad, Core 2 Extreme, Core i3, Core i5, Core i7, Atom і Xeon;
- VIA. Nano, Eden, QuadCore.
Є кілька варіацій назви даної технології. Часом, протиріччя в іменуванні платформи в кожній окремій компанії створюють спільну плутанину. Спробуємо розібратися в термінології:
В даний час, найпоширенішими назвами виступають: «x64», «x86-64» і «AMD64». Часом це плутає AMD-користувачів - аж до відмови використання рідних дистрибутивів ОС: користувач не впевнений, чи буде працювати обрана версія на AMD процесорі. Насправді ж, розповсюджувачі програмного забезпечення застосовують назву amd64 лише для того, щоб підкреслити, що саме компанія AMD є новатором у розробці даної технології.
Найчастіше, користувачі самі плутають архітектуру Intel 64 з IA-64. Важливо пам'ятати, що Intel 64 і IA-64 - абсолютно різні, несумісні між собою платформи:
- Представники Intel 64. останні версії Pentium 4, деякі моделі Celeron D, лінійка Core 2, Core i3, Core i5, Core i7, деякі моделі Intel Atom;
- Представники IA-64. сімейства Itanium і Itanium 2.
Є два режими роботи даної архітектури:
«Довгий» режим, будучи рідною для AMD64, дозволяє скористатися всіма додатковими перевагами архітектури. Для активації даного режиму потрібно 64-бітна ОС. Наприклад, Windows 7 x64 або 64-бітові версії UNIX-подібних систем (GNU / Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Mac OS X - від версії 10.4.7 і вище).
«Довгий» режим не містить в собі деякі «рудименти» x86-архітектури. Наприклад, режим віртуального 8086, сегментированную модель пам'яті, апаратну мультизадачність, та інше.
«Довгий» режим має одну яскраву особливість: його активація здійснюється за допомогою установки прапора CR0.PG. Він застосовується для включення сторінкового MMU (якщо це перемикання дозволено (EFER.LME = 1). Якщо перемикання неприпустимо, включення MMU відбувається в «спадковому» режимі.
Так, виконання 64-бітного коду з забороненим сторінковим перетворенням неможливо, що призводить до певних складнощів в програмуванні, адже при перемиканні з «довгого» в «спадковий» режим (і назад) необхідний подвійний скидання MMU. Для цього код перемикання повинен бути в тотожно відображеної сторінці.
Цей режим зветься «спадковим» з тієї причини, що дає можливість процесору AMD64 працювати з інструкціями, які розраховані для x86-процесорів. Крім того, в рамках активації даного режиму, здійснюється повна сумісність з 32-бітовим кодом і відповідними ОС.
Процесор в «спадковому» режимі працює точно так само, як стандартний x86-процесор. Додаткові функції, доступні під архітектурою AMD64, стають неактивні.
При активації даного режиму, 64-бітові програми і відповідні операційні системи функціонувати не будуть.
Особливості
Платформа x86-64 включає в себе:
- Шістнадцять цілочисельних 64-бітових регістра загального призначення (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15);
- Вісім 80-бітових регістрів з плаваючою точкою (ST0 - ST7);
- Вісім 64-бітових регістрів Multimedia Extensions (MM0 - MM7, спільний простір з регістрами ST0 - ST7);
- Шістнадцять 128-бітних регістрів SSE (XMM0 - XMM15);
- 64-бітний покажчик RIP і 64-бітний регістр прапорів RFLAGS.
сегментування
В ході створення архітектури x86-64, фахівці компанії AMD прийшли до рішення остаточно покінчити з головним «рудиментом» архітектури x86 - сегментною моделлю пам'яті. Вона підтримувалася ще за часів 8086/80286.
При створенні нової версії продукту віртуалізації, програмісти VMware виявили ряд непереборних труднощів. Заковики виникали в процесі реалізації віртуальної машини для 64-бітових систем. Щоб відокремити код монітора від коду «гостя», програма застосовувала механізм сегментації, але дана задача так і не була реалізована на практиці.
Після низки невдалих експериментів, компанія AMD відновила обмежений варіант сегментної організації пам'яті (починаючи з ревізії D архітектури AMD64). Це дало можливість запускати 64-бітові операційні системи в віртуальних машинах. Компанія Intel не стала дотримуватися такого прикладу. Щоб здійснити перевірку процесора на предмет можливості запуску 64-бітових гостьових операційних систем, VMware постачає продукти необхідні інструменти.
Команди LAHF і SAHF. вирізані спочатку, були повернуті в систему команд через їх активного використання в програмному забезпеченні віртуалізації.
У міру розвитку засобів апаратної віртуалізації (Intel VT, AMD-V), необхідність в сегментації поступово втрачається.