5-рівневі таблиці сторінок (Intel)![]() 5-рівневі таблиці сторінок (англ. 5-level paging у документації Intel) — технологія розширення обсягу підтримуваної віртуальної пам'яті у процесорах архітектури x86-64, запропонована Intel у 2017 році[1]:11. Діапазон віртуальних адрес розширюється з 48 до 56 розрядів (іншими словами, максимальна адресована пам'ять розширюється з 256 терабайт до 128 петабайт). Підтримка даної технології реалізована у ядрі Linux починаючи з версії 4.1[2]. ІсторіяНаприкінці 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[d], що засновані на архітектурі Sunny Cove[5]. Для того, щоб програмно підтримати 5-рівневі таблиці, у ядрі Linux знадобилася переробка внутрішньої (уніфікованої) моделі сторінок, що використовувала лише 4 рівні[6]. Переваги та недолікиОчевидною перевагою 5-рівневої схеми є збільшення розрядності адресованої пам'яті (з 48 до 56 біт). Проходження таблиць трансляції сторінок, що мають 5 рівнів, займає деякий час. У загальному випадку, процесор повинен пройти всі таблиці при трансляції будь-якої віртуальної адреси у фізичну, тобто шість разів здійснити доступ до фізичної пам'яті для отримання значення заданої комірки віртуальної пам'яті[7]. На практиці подібне сповільнення можна суттєво зменшити, застосовуючи буфер асоціативної трансляції (TLB). Джерела
|
Portal di Ensiklopedia Dunia