Long mode

В архітектурі x86-64, long mode - це режим в якому 64-бітна операційна система може використовувати 64-бітні інструкції та регістри. 64-бітні програми працюють в підрежимі що називається 64-бітним, а 32-бітні програми і 16-бітні програми захищеного режиму виконуються в підрежимі що називається режим сумісності. Програми реального режиму або режиму віртуального 8086 не можуть нативно виконуватись у long mode.

Огляд

Процесор x86-64 працює ідентично процесору IA-32 коли працює в реальному або захищеному режимі, які є підтримуваними підрежимами для випадків коли процесор не є в режимі long mode.

Біт в розширених атрибутах CPUID інформує програми в реальному або захищеному режимах що процесор може перемкнутись в long mode, що дозволяє програмам виявляти процесор x86-64. Цей біт аналогічний біту атрибутів CPUID який процесори Intel IA-64 використовують щоб дозволити програмам виявляти чи вони запущені в емуляції IA-32. Коли комп'ютер вмикається, процесор запускається в реальному режимі і починає завантажуватись. Якщо комп'ютер має традиційний BIOS, 64-бітна операційна система перевіряє наявність і перемикає процесор в Long mode після чого запускає нові потоки ядра які виконують 64-бітний код. Якщо комп'ютер має UEFI, він перемикається в long mode майже одразу після завантаження, і ще до передачі контролю операційній системі.

Обмеження пам'яті

Хоча розміри регістрів збільшуються до 64 біт, порівняно з попередньою архітектурою x86, адреси пам'яті поки ще не збільшуються до 64. Наразі не є практичним виготовляти комп'ютери з розміром пам'яті що потребує всі 64 біти для адресації. Тому, блок(и) завантаження-збереження, теги кешу, модулі керування пам'яттю та буфери асоціативної трансляції можуть бути спрощеними без втрат пам'яті доступної до використання. Незважаючи на ці обмеження, програми пишуться з використанням повних 64-бітних вказівників, і таким чином будуть здатними використовувати все більші адресні простори, коли такі будуть підтримуватися майбутніми процесорами та операційними системами.

Поточні обмеження

Першими процесорами з підтримкою архітектури x86-64 були AMD Athlon 64 / Opteron (K8). Максимально допустима віртуальна адреса у них обмежувалася 48 бітами[1]:129–130, а фізична — 40 бітами.[1]:4 Віртуальний адресний простір цих процесорів розділено на два регіони, розрядністю 47 біт кожен: один починається з адреси 0 і зростає «угору», інший — з адреси 0xFFFFFFFFFFFFFFFF і простягається «вниз». Спроба адресації за межами цих регіонів призводить до general protection fault.

Обмеження на максимальну можливу адресу фізичної пам'яті можуть відігравати значну роль у великих комп'ютерних системах. Зокрема, у багатопроцесорних архітектурах ccNUMA процесор може безпосередньо адресувати (і кешувати) оперативну пам'ять не лише «свого» вузла, а й інших вузлів. Обмеження у 1 TB (40-біт) може здатися несуттєвим для настільних персональних комп'ютерів, але може стати перепоною у побудові великих суперкомп'ютерних систем. Як наслідок, у наступній реалізації 64-розрядних процесорів AMD, а саме у мікроархітектурі K10 (або «10h»), розрядність фізично-адресованої пам'яті підвищено що 48 біт (256 терабайт).[2]:30

Даний підхід дозволяє здійснити розширення максимального об'єму адресованої пам'яті (як фізичної, так і віртуальної) без впровадження несумісностей у вже наявному 64-розрядному програмному забезпеченні. Технологія 5-рівневих таблиць сторінок розширює простір віртуальних адрес з 48 до 57 біт, шляхом запровадження ще одного, п'ятого рівня таблиць трансляції адрес — таким чином можна адресувати вже 128 петабайт пам'яті.[3] У майбутньому при потребі цей ліміт можна підняти до повних 264 байт (16 ексабайт).

Див також.

Джерела

  1. AMD64 Architecture Programmer’s Manual Volume 2: System Programming (PDF) (англ.). 2016. Процитовано 9 квітня 2015.
  2. BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors (PDF). Процитовано 9 квітня 2015. «Physical address space increased to 48 bits.»
  3. 5-Level Paging and 5-Level EPT. software.intel.com. Intel. May 2017. Процитовано 17 червня 2017.

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.