5-уровневая пейджинговая память Intel

Расширение процессора для линейки процессоров x86-64

Intel 5-уровневая страничная организация , называемая просто 5-уровневой страничной организацией в документах Intel , является расширением процессора для линейки процессоров x86-64 . [1] : 11  Оно расширяет размер виртуальных адресов с 48 бит до 57 бит путем добавления дополнительного уровня к многоуровневым таблицам страниц x86-64 , увеличивая адресуемую виртуальную память с 256  ТиБ до 128  ПиБ . Расширение было впервые реализовано в процессорах Ice Lake . [2]

Технологии

4-х уровневая подкачка 64-битного режима

В схеме 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-уровневом страничном разделении, где старшие биты виртуального адреса, которые не участвуют в трансляции адреса, должны быть такими же, как и самый старший реализованный бит.

5-уровневое страничное разделение включается установкой бита 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-уровневое страничное разделение реализовано в микроархитектуре Ice Lake [2] , процессорах серий EPYC 9004 и 8004 [9] [10] и серии Storm Peak Ryzen Threadripper PRO 7900WX. [11]

Ядро Linux 4.14 добавляет его поддержку. [12] Поддержка расширения была представлена ​​как набор исправлений для ядра Linux 8 декабря 2016 года. [13] Как сообщалось в списке рассылки ядра Linux , оно состояло в расширении модели памяти Linux для использования пяти уровней вместо четырех. [14] Это связано с тем, что, хотя Linux абстрагирует детали таблиц страниц, он по-прежнему зависит от наличия нескольких уровней в своем собственном представлении. Когда архитектура поддерживает меньшее количество уровней, Linux эмулирует дополнительные уровни, которые ничего не делают. [15] Аналогичное изменение было сделано ранее для расширения с трех уровней до четырех. [16]

Windows 10 и 11 с серверными версиями также поддерживают это расширение в своих последних обновлениях, где оно предоставляется отдельным образом ядра под названием ntkrla57.exe . [17]

Ссылки

  1. ^ abcd "5-уровневый пейджинг и 5-уровневый EPT". Корпорация Intel. Май 2017 г.
  2. ^ ab 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 г. .
  3. ^ abcd Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32. Том 3A. Корпорация Intel .
  4. ^ Худек, Тед (июнь 2017 г.). «Операционные системы и поддержка PAE — Windows 10 hardware dev». Microsoft Learn . Получено 27 января 2024 г.
  5. ^ Патент США 9858198, Ларри Сейлер, «Страничная система объемом 64 КБ, поддерживающая операции со страницами объемом 4 КБ», опубликован 29 декабря 2016 г., выдан 2 января 2018 г., передан корпорации Intel. 
  6. ^ "CSALT: Context Switch Aware Large TLB". MICRO-50: 50-й ежегодный международный симпозиум IEEE/ACM по микроархитектуре: труды . Кембридж, Массачусетс: Институт инженеров по электротехнике и электронике., IEEE Computer Society., ACM Special Interest Group on Microprogramming. 14 октября 2017 г. стр. 450. doi :10.1145/3123939.3124549. ISBN 978-1-4503-4952-9. OCLC  1032337814.
  7. ^ "ARM Information Center". infocenter.arm.com . Получено 26 апреля 2018 г. .
  8. ^ ab Levy, Hank (осень 2008 г.). "CSE 451: Операционные системы: подкачка страниц и буферы TLB" (PDF) . Вашингтонский университет . Получено 26 апреля 2018 г. .
  9. ^ "Руководство по настройке процессоров AMD EPYC™ 9004" (PDF) . AMD . Сентябрь 2023 г.
  10. ^ "АРХИТЕКТУРА ПРОЦЕССОРОВ AMD EPYC™ 4-ГО ПОКОЛЕНИЯ" (PDF) . AMD . Май 2024 г.
  11. ^ "Дамп CPUID для 96-ядерного AMD Ryzen Threadripper PRO 7995WX (Storm Peak) Zen4". GitHub . 19 октября 2023 г.
  12. ^ Танг, Лиам. «Первый релиз Linux 4.14 добавляет «очень основные» функции, прибывает вовремя к 26-му дню рождения ядра». ZDNet . Получено 25 апреля 2018 г.
  13. ^ Майкл Ларабель (9 декабря 2016 г.). "Intel работает над 5-уровневой подкачкой для увеличения виртуального/физического адресного пространства Linux - Phoronix". Phoronix . Получено 26 апреля 2018 г.
  14. ^ Шутемов, Кирилл А. (8 декабря 2016 г.). "[RFC, PATCHv1 00/28] 5-уровневая подкачка". Почтовая рассылка ядра Linux (Список рассылки) . Получено 26 апреля 2018 г. .
  15. ^ "Page Table Management". www.kernel.org . Получено 26 апреля 2018 г. .
  16. ^ "Четырехуровневые таблицы страниц [LWN.net]". lwn.net . 12 октября 2004 г. Получено 26 апреля 2018 г.
  17. ^ @aionescu (23 июня 2019 г.). «Старые пердуны вроде меня помнят дни ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe и ntkrpamp.exe» ( Твит ) – через Twitter .
Взято с "https://en.wikipedia.org/w/index.php?title=Intel_5-level_paging&oldid=1263772179"