5-рівневі таблиці сторінок (англ. 5-level paging у документації Intel) — технологія розширення обсягу підтримуваної віртуальної пам'яті у процесорах архітектури x86-64, запропонована Intel у 2017 році:11. Діапазон віртуальних адрес розширюється з 48 до 56 розрядів (іншими словами, максимальна адресована пам'ять розширюється з 256 терабайт до 128 петабайт). Підтримка даної технології реалізована у ядрі Linux починаючи з версії 4.1.
Історія ред.
Наприкінці 1990-х років проблема обмеженості віртуальних адрес виникла спочатку у 32-розрядній архітектурі IA-32 з її дворівневою схемою адресації сторінкової пам'яті (каталог таблиць — таблиця сторінок), що обмежувала максимальний об'єм віртуальної й фізичної пам'яті 4 гігабайтами. Для вирішення даної проблеми було запропоновано схему PAE (англ. Physical Address Extension), яка запровадила третій рівень адресації. Режим PAE вмикається спеціальним бітом у регістрі CR4.:2799.
Принцип роботи ред.
Процесори, що реалізують систему команд x86-64, із самого початку підтримували 4-рівневу схему адресації сторінкової пам'яті при роботі у 64-розрядному режимі:2806. 5-рівнева адресація також вмикається одним із бітів у регістрі CR4, а саме бітом 12 (відомим як «LA57»):16. Цей біт можна увімкнути лише тоді, коли процесор вже працює у 64-бітному режимі, а вимкнути — коли, навпаки, не працює. Якщо біт не встановлено, процесор працює зі звичайними 4-рівневими таблицями.
Як і при 4-рівневій схемі, верхні біти 64-розрядної адреси не беруть участь у трансляції, і повинні мати таке саме значення, як і найвищий підтримуваний біт (тобто, біт 56):17.
Реалізація ред.
Підтримка 5-рівневих таблиць сторінок імплементована у процесорах Ice Lake[d], що засновані на архітектурі Sunny Cove.
Для того, щоб програмно підтримати 5-рівневі таблиці, у ядрі Linux знадобилася переробка внутрішньої (уніфікованої) моделі сторінок, що використовувала лише 4 рівні.
Переваги та недоліки ред.
Очевидною перевагою 5-рівневої схеми є збільшення розрядності адресованої пам'яті (з 48 до 56 біт).
Проходження таблиць трансляції сторінок, що мають 5 рівнів, займає деякий час. У загальному випадку, процесор повинен пройти всі таблиці при трансляції будь-якої віртуальної адреси у фізичну, тобто шість разів здійснити доступ до фізичної пам'яті для отримання значення заданої комірки віртуальної пам'яті. На практиці подібне сповільнення можна суттєво зменшити, застосовуючи буфер асоціативної трансляції (TLB).
Джерела ред.
- ↑ (англ.). Intel Corporation. May 2017. Архів оригіналу за 5 грудня 2018. Процитовано 13 грудня 2019.
- Tung, Liam. . ZDNet (англ.). Архів оригіналу за 3 січня 2020. Процитовано 25 квітня 2018.
- Hudek, Ted. . docs.microsoft.com (англ.). Архів оригіналу за 13 грудня 2019. Процитовано 26 квітня 2018.
- ↑ (англ.). Intel Corporation. 2018. Архів оригіналу за 22 квітня 2020. Процитовано 13 грудня 2019.
- Cutress, Ian. . Intel's Architecture Day 2018: The Future of Core, Intel GPUs, 10nm, and Hybrid x86 (англ.). Архів оригіналу за 6 грудня 2019. Процитовано 15 жовтня 2019.
- Shutemov, Kirill A. (8 грудня 2016). (англ.). Архів оригіналу за 3 грудня 2021. Процитовано 26 квітня 2018.
- Levy, Hank (Autumn 2008). . Університет Вашингтону (англ.). Архів оригіналу за 15 вересня 2020. Процитовано 26 квітня 2018.