Intel 5-уровневая подкачка

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

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

Intel 5-уровневая подкачка, называемая просто 5-уровневой подкачкой в ​​документах Intel, является расширением процессора для линейки процессоров x86-64. Он увеличивает размер виртуальных адресов с 48 бит до 57 бит, увеличивая адресуемую виртуальную память с 256 TiB до 128 PiB. Расширение было впервые реализовано в процессорах Ice Lake, а ядро ​​4.14 Linux добавляет его поддержку.

Содержание

  • 1 Технология
  • 2 Реализация
  • 3 Недостатки
  • 4 Ссылки

Технология

x86-64 Процессоры без этой функции используют четырехуровневую структуру таблицы страниц при работе в 64-битном режиме. Аналогичная ситуация возникла, когда 32-битные процессоры IA-32 использовали два уровня, позволяя использовать до четырех гигабайт памяти (как виртуальной, так и физической). Для поддержки более 4 ГБ RAM был определен дополнительный режим преобразования адресов, называемый Physical Address Extension (PAE), включающий третий уровень. Это было разрешено установкой бита в регистре CR4. Точно так же новое расширение включается установкой бита 12 регистра CR4 (известного как LA57). Это используется только тогда, когда процессор работает в 64-битном режиме, и может быть изменено только тогда, когда это не так. Если бит не установлен, процессор работает с четырьмя уровнями подкачки.

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

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

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

Реализация

5-уровневая подкачка реализована с помощью Ice Lake микроархитектуры.

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

Недостатки

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

Ссылки

Последняя правка сделана 2021-05-24 03:56:23
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте