Intel 5-уровневый пейджинг
5-уровневая подкачка Intel , называемая просто 5-уровневой подкачкой в документах Intel , представляет собой расширение процессора для x86-64 . линейки процессоров [1] : 11 Он расширяет размер виртуальных адресов с 48 бит до 57 бит за счет добавления дополнительного уровня к многоуровневым таблицам страниц x86-64 , увеличивая адресуемую виртуальную память с 256 ТБ до 128 ПБ . Расширение было впервые реализовано в процессорах Ice Lake . [2]
Технология
[ редактировать ]
В 4-уровневой схеме подкачки (ранее известной как подкачка IA-32e ) 64-битный адрес виртуальной памяти разделен на пять частей. Младшие 12 бит содержат смещение внутри страницы памяти размером 4 КиБ, а следующие 36 бит равномерно разделены между четырьмя 9-битными дескрипторами, каждый из которых связан с 64-битной записью таблицы страниц в таблице страниц с 512 элементами для каждого из четыре уровня пейджинга. Это позволяет использовать биты от 0 до 47 в виртуальном адресе, всего 256 ТБ. [3] : 4-2

При 5-уровневом подкачке добавляется еще один 9-битный дескриптор таблицы страниц, что позволяет использовать биты от 0 до 56. Это умножает адресное пространство на 512 и увеличивает предел до 128 ПБ.
При включенной 5-уровневой подкачке биты с 57 по 63 должны быть копиями бита 56. [1] : 17 Это то же самое, что и при 4-уровневом пейджинге, где старшие биты виртуального адреса, не участвующие в трансляции адреса, должны совпадать со старшим реализованным битом.
Пятиуровневый пейджинг включается установкой бита 12 регистра CR4 (известного как LA57). [1] : 16 Это используется только тогда, когда процессор работает в 64-битном режиме, и может быть изменено только в том случае, если это не так. [1] : 16 Если бит не установлен или функция 5-уровневой подкачки не поддерживается, процессор использует 4-уровневую структуру таблицы страниц при работе в 64-битном режиме. [3] : 4-22 Это похоже на расширение физического адреса (PAE), где третий уровень таблиц подкачки, позволяющий использовать 36-битную адресацию, был включен путем установки бита в регистре CR4 . [4] [3] : 4-14
Будущие процессоры могут обеспечить полное 64-битное виртуальное адресное пространство за счет увеличения размера дескрипторов таблицы страниц до 12 бит (4096 записей таблицы страниц) и смещения памяти до 16 бит (размер страницы 64 КиБ) в 4-уровневой схеме подкачки или до 21 бита. (размер страницы 2 МБ) в 5-уровневой схеме. [5] Увеличение размера записи таблицы страниц с 64 до 128 бит позволит использовать произвольные размеры страниц, поскольку дополнительные аппаратные флаги изменят размер и работу дескрипторов на более низких уровнях подкачки. [5]
Недостатки
[ редактировать ]Добавление еще одного уровня косвенности таблицы страниц . удлиняет «обход» [6] процессора Обход таблицы страниц происходит, когда либо блок управления памятью , либо код управления памятью в операционной системе перемещается по дереву таблиц страниц, чтобы найти запись таблицы страниц, соответствующую виртуальному адресу. [7] [3] : 4-22 Это означает, что в худшем случае процессору или диспетчеру памяти придется обращаться к физической памяти шесть раз для одного доступа к виртуальной памяти, а не пять раз, как в предыдущей итерации процессоров x86-64. Это приводит к незначительному снижению скорости доступа к памяти. [8] На практике эти затраты значительно снижаются за счет кэшей, таких как резервный буфер трансляции (TLB). [8] Будущие расширения могут сократить количество обходов страниц за счет ограничения виртуального адресного пространства для каждого приложения с помощью выделенных аппаратных флагов в расширенной 128-битной записи таблицы страниц, а также обеспечения более крупных размеров страниц 64 КиБ или 2 МиБ и обратной совместимости с операциями со страницами 4 КБ. [5]
Выполнение
[ редактировать ]5-уровневый пейджинг реализован микроархитектурой Lake Ice , [2] Процессоры серий EPYC 9004 и 8004 [9] [10] и серия Stormpeak Ryzen Threadripper PRO 7900WX. [11]
4.14 Ядро Linux добавляет его поддержку. [12] Поддержка расширения была представлена в виде набора исправлений для ядра Linux 8 декабря 2016 года. [13] Как сообщалось в списке рассылки ядра Linux , оно заключалось в расширении модели памяти Linux для использования пяти уровней вместо четырех. [14] Это связано с тем, что, хотя Linux абстрагирует детали таблиц страниц, он все равно зависит от наличия нескольких уровней в своем собственном представлении. Когда архитектура поддерживает меньшее количество уровней, Linux эмулирует дополнительные уровни, которые ничего не делают. [15] Ранее аналогичное изменение было внесено с трех уровней до четырех. [16]
Windows 10 и 11 с серверными версиями также поддерживают это расширение в своих последних обновлениях, где оно предоставляется отдельным образом ядра под названием ntkrla57.exe . [17]
Ссылки
[ редактировать ]- ^ Jump up to: а б с д «5-уровневый пейджинг и 5-уровневый EPT» . Корпорация Интел. Май 2017.
- ^ Jump up to: а б Катресс, Ян. «Микроархитектура Sunny Cove: взгляд на изнанку» . День архитектуры Intel 2018: будущее процессоров Core, графических процессоров Intel, 10-нм техпроцесса и гибридных процессоров x86 . Проверено 15 октября 2019 г.
- ^ Jump up to: а б с д Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32 . Том. 3А. Корпорация Интел .
- ^ Худек, Тед (июнь 2017 г.). «Операционные системы и поддержка PAE — разработка аппаратного обеспечения Windows 10» . Microsoft Learn . Проверено 27 января 2024 г.
- ^ Jump up to: а б с Патент США 9858198 , Ларри Зейлер, «Система страниц 64 КБ, поддерживающая операции со страницами 4 КБ», опубликован 29 декабря 2016 г., выдан 02 января 2018 г., передан корпорации Intel.
- ^ «CSALT: большой TLB с поддержкой переключения контекста». MICRO-50: 50-й ежегодный международный симпозиум IEEE/ACM по микроархитектуре: материалы . Кембридж, Массачусетс: Институт инженеров по электротехнике и электронике, Компьютерное общество IEEE, Специальная группа ACM по микропрограммированию. 14 октября 2017 г. с. 450. дои : 10.1145/3123939.3124549 . ISBN 978-1-4503-4952-9 . OCLC 1032337814 .
- ^ «Информационный центр АРМ» . infocenter.arm.com . Проверено 26 апреля 2018 г.
- ^ Jump up to: а б Леви, Хэнк (осень 2008 г.). «CSE 451: Операционные системы: пейджинг и TLB» (PDF) . Университет Вашингтона . Проверено 26 апреля 2018 г.
- ^ «Руководство по настройке процессоров AMD EPYC™ 9004» (PDF) . АМД . Сентябрь 2023 г.
- ^ «АРХИТЕКТУРА ПРОЦЕССОРА AMD EPYC™ 4-ГО ПОКОЛЕНИЯ» (PDF) . АМД . Май 2024.
- ^ «Дамп процессора для 96-ядерного процессора AMD Ryzen Threadripper PRO 7995WX (Storm Peak) Zen4» . Гитхаб . 19 октября 2023 г.
- ^ Тунг, Лиам. «Первая версия Linux 4.14 добавляет «очень основные» функции и выходит как раз к 26-летию ядра» . ЗДНет . Проверено 25 апреля 2018 г.
- ^ Майкл Ларабель (9 декабря 2016 г.). «Intel работает над 5-уровневым подкачиванием страниц для увеличения виртуального/физического адресного пространства Linux — Phoronix» . Фороникс . Проверено 26 апреля 2018 г.
- ^ Шутемов, Кирилл А. (8 декабря 2016 г.). «[RFC, PATCHv1 00/28] 5-уровневый пейджинг» . Список рассылки ядра Linux (Список рассылки) . Проверено 26 апреля 2018 г.
- ^ «Управление таблицей страниц» . www.kernel.org . Проверено 26 апреля 2018 г.
- ^ «Четырехуровневые таблицы страниц [LWN.net]» . lwn.net . 12 октября 2004 года . Проверено 26 апреля 2018 г.
- ^ @aionescu (23 июня 2019 г.). «Старперы вроде меня будут помнить времена ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe и ntkrpamp.exe» ( твит ) – через Twitter .