ARM сейчас добавляет поддержку 128-битных page-table entries через
FEAT_D128 и режим VMSAv9-128. Это не означает, что обычный процесс внезапно получает адресное пространство 2¹²⁸. У PTE есть не только адрес physical page. В нём также нужны биты для управления памятью: permissions, attributes, security и другие MMU-флаги.
В 64-битном PTE пространство уже становится тесным для будущих расширений:
┌──────────────────────────────┐
│ physical address │
├──────────────────────────────┤
│ permissions / attributes │
├──────────────────────────────┤
│ MMU / software metadata │
└──────────────────────────────┘
64 bit
D128 удваивает размер записи:64-bit PTE → 128-bit PTE
Это позволяет одновременно расширять диапазоны VA/PA и оставляет больше места под дополнительные функции MMU. При этом сама геометрия таблиц меняется: в одном уровне теперь меньше entries, поэтому размеры mappings на уровнях также отличаются.
Например, для 4-KB страниц:
D64 D128
PMD 2 MB 1 MB
PUD 1 GB 256 MB
То есть переход на 128-bit PTE - это не просто «адресов стало в два раза больше». Меняется сама организация translation tables.
Причём текущая реализация ещё не использует весь потенциал FEAT_D128: поддержка некоторых возможностей, включая 52-bit VA/PA и skip levels, пока отсутствует.
⚡️Главная идея здесь не «нам срочно понадобилось адресовать
2¹²⁸ байт». ARM заранее расширяет сам формат описания страницы, потому что 64 бит PTE постепенно становятся ограничением уже не только для адреса, но и для metadata, которую MMU должен хранить рядом с ним.
