Пятиуровневая подкачка Intel - Intel 5-level paging

Схема пяти уровней подкачки

Пятиуровневая подкачка Intel, обозначаемый просто как 5-уровневая подкачка в Intel документы, является расширением процессора для x86-64 линейка процессоров.[1]:11 Увеличивает размер виртуальные адреса с 48 бит до 57 бит, увеличивая адресуемость виртуальная память от 256TiB до 128PiB. Расширение было впервые реализовано в Ледяное озеро процессоры,[2] и 4.14 Ядро Linux добавляет поддержку для него.[3]

Технологии

x86-64 процессоры без этой функции используют четырехуровневую структуру таблицы страниц при работе в 64-битном режиме.[4]:2806 Похожая ситуация возникла, когда 32-битный IA-32 процессоры использовали два уровня, что позволяло использовать до четырех ГиБ памяти (как виртуальной, так и физической). Для поддержки более 4 ГБ баран, дополнительный режим трансляции адресов называется Расширение физического адреса (PAE), включая третий уровень.[5] Это было включено путем установки бита в регистр CR4.[4]:2799 Точно так же новое расширение включается установкой бита 12 регистра CR4 (известного как LA57).[1]:16 Это используется только тогда, когда процессор работает в 64-битном режиме, и может быть изменено только тогда, когда это не так.[1]:16 Если бит не установлен, процессор работает с четырьмя уровнями подкачки.

Поскольку добавление еще одной таблицы страниц увеличивает адресное пространство на 512, виртуальный лимит увеличился с 256 ТиБ до 128 ПиБ. Дополнительные девять бит виртуального адреса индексируют новую таблицу, поэтому, если раньше использовались биты с 0 по 47, теперь используются биты с 0 по 56.

Как и в случае с четырехуровневым поисковым вызовом, старшие биты виртуального адреса, которые не участвуют в трансляции адресов, должны быть такими же, как самый старший реализованный бит. При включенном пятиуровневом пейджинге это означает, что биты с 57 по 63 должны быть копиями бита 56.[1]:17 Intel переименовала существующую систему подкачки в «4-уровневую подкачку», которая раньше была известна как IA-32e пейджинг.[4]:2788

Расширение записи таблицы страниц до 128 бит позволяет использовать полное 64-битное адресное пространство в 4-уровневой схеме поискового вызова и делает возможными произвольные размеры единиц распределения в 5-уровневой схеме.[6]

Выполнение

5-уровневая подкачка реализована Ледяное озеро микроархитектура.[2]

Поддержка расширения была представлена ​​в виде набора исправлений в Ядро Linux 8 декабря 2016 г.[7] Как сообщалось на Список рассылки ядра Linux, он заключался в расширении модели памяти Linux для использования пяти уровней, а не четырех.[8] Это потому, что, хотя Linux рефераты детали таблиц страниц, это все еще зависит от наличия нескольких уровней в собственном представлении. Когда архитектура поддерживает меньшее количество уровней, Linux имитирует дополнительные уровни, которые ничего не делают.[9] Ранее было внесено аналогичное изменение с трех уровней до четырех.[10]

Недостатки

Добавление еще одного уровня косвенности делает таблица страниц «гуляет» дольше.[11] Обход таблицы страниц происходит, когда процессор блок управления памятью или код управления памятью в операционной системе перемещается по дереву таблиц страниц, чтобы найти запись в таблице страниц соответствующий виртуальному адресу.[12][4]:2806 Это означает, что в худшем случае процессор или диспетчер памяти должны обращаться к физической памяти шесть раз для одного доступа к виртуальной памяти, а не пять раз для предыдущей итерации процессоров x86-64. Это приводит к небольшому снижению скорости доступа к памяти.[13] На практике эта стоимость значительно снижается за счет кешей, таких как резервный буфер перевода (TLB).[13] Дальнейшие расширения могут сократить количество обходов страниц за счет использования 4096 128-битных записей таблицы страниц и обеспечить больший размер выделения страницы 64 КиБ и обратную совместимость с операциями со страницами 4 КиБ. [6]

Рекомендации

  1. ^ а б c d «5-уровневый пейджинг и 5-уровневый EPT» (PDF). Корпорация Intel. Май 2017.
  2. ^ а б Катресс, Ян. "Микроархитектура Санни Коув: взгляд в глубину". День архитектуры Intel 2018: будущее процессоров Core, графических процессоров Intel, 10-нм и гибридных x86. Получено 15 октября 2019.
  3. ^ Тунг, Лиам. «Первый выпуск Linux 4.14 добавляет« самые основные »функции, он прибыл как раз к 26-летию ядра | ZDNet». ZDNet. Получено 25 апреля 2018.
  4. ^ а б c d Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32 (PDF). Корпорация Intel. 2018.
  5. ^ Худек, Тед. «Операционные системы и поддержка PAE - аппаратное обеспечение Windows 10». docs.microsoft.com. Получено 26 апреля 2018.
  6. ^ а б Патент США 9858198, Ларри Сейлер, "Система страниц размером 64 КБ, поддерживающая работу со страницами 4 КБ", опубликовано 29 декабря 2016 г., выпущено 02 января 2018 г., передано Intel Corp. 
  7. ^ Майкл Ларабель (9 декабря 2016 г.). «Intel работает над 5-уровневым пейджингом для увеличения виртуального / физического адресного пространства Linux - Phoronix». Фороникс. Получено 26 апреля 2018.
  8. ^ Шутемов, Кирилл А. (8 декабря 2016 г.). "[RFC, PATCHv1 00/28] 5-уровневая подкачка". Список рассылки ядра Linux (Список рассылки). Получено 26 апреля 2018.
  9. ^ «Управление таблицей страниц». www.kernel.org. Получено 26 апреля 2018.
  10. ^ "Четырехуровневые таблицы страниц [LWN.net]". lwn.net. 12 октября 2004 г.. Получено 26 апреля 2018.
  11. ^ MICRO-50: 50-й ежегодный международный симпозиум IEEE / ACM по микроархитектуре: протоколы: 14-18 октября 2017 г., Кембридж, Массачусетс. Институт инженеров по электротехнике и электронике, Компьютерное общество IEEE, Специальная группа ACM по микропрограммированию. Нью Йорк, Нью Йорк. 14 октября 2017. ISBN  9781450349529. OCLC  1032337814.CS1 maint: другие (связь)
  12. ^ «Информационный центр АРМ». infocenter.arm.com. Получено 26 апреля 2018.
  13. ^ а б Леви, Хэнк (Осень 2008 г.). «CSE 451: Операционные системы: пейджинг и TLB» (PDF). Вашингтонский университет. Получено 26 апреля 2018.