5-рівневі таблиці сторінок (Intel)

5-рівневі таблиці сторінок (англ. 5-level paging у документації Intel) — технологія розширення обсягу підтримуваної віртуальної пам'яті у процесорах архітектури x86-64, запропонована Intel у 2017-му році.[1]:11 Діапазон віртуальних адрес розширюється з 48 до 56 розрядів (іншими словами, максимальна адресована пам'ять розширюється з 256 терабайт до 128 петабайт). Підтримка даної технології реалізована у ядрі Linux починаючи з версії 4.14.[2]

Ілюстрація 5-рівневої сторінкової пам'яті

Історія

Наприкінці 1990-х років проблема обмеженості віртуальних адрес виникла спочатку у 32-розрядній архітектурі IA-32 з її дворівневою схемою адресації сторінкової пам'яті (каталог таблиць — таблиця сторінок), що обмежувала максимальний об'єм віртуальної і фізичної пам'яті 4-ма гігабайтами. Для вирішення даної проблеми було запропоновано схему PAE (англ. Physical Address Extension), яка запровадила третій рівень адресації.[3] Режим PAE вмикається спеціальним бітом у регістрі CR4.[4]:2799

Принцип роботи

Процесори, що реалізують систему команд x86-64, з самого початку підтримували 4-рівневу схему адресації сторінкової пам'яті при роботі у 64-розрядному режимі.[4]:2806 5-рівнева адресація також вмикається одним з бітів у регістрі CR4, а саме бітом 12 (відомим як «LA57»).[1]:16 Цей біт можна увімкнути лише тоді, коли процесор вже працює у 64-бітному режимі, а вимкнути — коли, навпаки, не працює. Якщо біт не встановлено, процесор працює зі звичайними 4-рівневими таблицями.

Так само, як і при 4-рівневій схемі, верхні біти 64-розрядної адреси не беруть участь у трансляції, і повинні мати таке саме значення, як і найвищий підтримуваний біт (тобто, біт 56)[1]:17

Реалізація

Підтримка 5-рівневих таблиць сторінок імплементована у процесорах Ice Lake, що засновані на архітектурі Sunny Cove.[5]

Для того, щоб програмно підтримати 5-рівневі таблиці, у ядрі Linux знадобилася переробка внутрішньої (уніфікованої) моделі сторінок, що використовувала лише 4 рівні.[6]

Переваги та недоліки

Очевидною перевагою 5-рівневої схеми є збільшення розрядності адресованої пам'яті (з 48 до 56 біт).

Проходження таблиць трансляції сторінок, що мають 5 рівнів, займає деякий час. У загальному випадку, процесор повинен пройти всі таблиці при трансляції будь-якої віртуальної адреси у фізичну, тобто шість разів здійснити доступ до фізичної пам'яті для отримання значення заданої комірки віртуальної пам'яті.[7] На практиці подібне сповільнення можна суттєво зменшити, застосовуючи буфер асоціативної трансляції (TLB).

Джерела

  1. 5-Level Paging and 5-Level EPT (англ.). Intel Corporation. May 2017.
  2. Tung, Liam. First Linux 4.14 release adds "very core" features, arrives in time for kernel's 26th birthday. ZDNet (англ.). Процитовано 25 квітня 2018.
  3. Hudek, Ted. Operating Systems and PAE Support - Windows 10 hardware dev. docs.microsoft.com (англ.). Процитовано 26 квітня 2018.
  4. Intel® 64 and IA-32 Architectures Software Developer's Manual (англ.). Intel Corporation. 2018.
  5. Cutress, Ian. Sunny Cove Microarchitecture: A Peek At the Back End. Intel's Architecture Day 2018: The Future of Core, Intel GPUs, 10nm, and Hybrid x86 (англ.). Процитовано 15 жовтня 2019.
  6. Shutemov, Kirill A. (8 грудня 2016). [RFC, PATCHv1 00/28] 5-level paging (англ.). Процитовано 26 квітня 2018.
  7. Levy, Hank (Autumn 2008). CSE 451: Operating Systems: Paging & TLBs. Університет Вашингтону (англ.). Процитовано 26 квітня 2018.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.