Long mode

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Long Mode)
Перейти до навігації Перейти до пошуку

В архітектурі x86-64, long mode - це режим в якому 64-бітна операційна система може використовувати 64-бітні інструкції та регістри. 64-бітні програми працюють в підрежимі що називається 64-бітним, а 32-бітні програми і 16-бітні програми захищеного режиму виконуються в підрежимі що називається режим сумісності. Програми реального режиму або режиму віртуального 8086[en] не можуть нативно виконуватись у 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 біти для адресації. Тому, блок(и) завантаження-збереження[en], теги кешу, модулі керування пам'яттю та буфери асоціативної трансляції можуть бути спрощеними без втрат пам'яті доступної до використання. Незважаючи на ці обмеження, програми пишуться з використанням повних 64-бітних вказівників, і таким чином будуть здатними використовувати все більші адресні простори, коли такі будуть підтримуватися майбутніми процесорами та операційними системами.

Поточні обмеження[ред. | ред. код]

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

Обмеження на максимальну можливу адресу фізичної пам'яті можуть відігравати значну роль у великих комп'ютерних системах. Зокрема, у багатопроцесорних архітектурах 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. Архів оригіналу (PDF) за 13 липня 2018. Процитовано 9 квітня 2015.
  2. BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors (PDF). Архів оригіналу (PDF) за 9 серпня 2017. Процитовано 9 квітня 2015. Physical address space increased to 48 bits.
  3. 5-Level Paging and 5-Level EPT (PDF). software.intel.com. Intel. May 2017. Архів оригіналу (PDF) за 5 грудня 2018. Процитовано 17 червня 2017.

Посилання[ред. | ред. код]