Портал Phoronix обратил внимание на необычный патч, заметно повышающий производительность Raspberry Pi 5. Инженеры Igalia в результате экспериментов с эмуляцией NUMA на UMA-системах с чипами ARM64 (AArch64) добились повышения эффективности использования памяти. Так, простой патч для ядра Linux позволил улучшить результаты в Geekbench на 6 % в однопоточном режиме и на целых 18 % — в многопоточном.
Авторы патча пишут, что разделение RAM на несколько независимых блоков с последующим попеременными доступом (interleaving) позволяет контроллеру в Broadcom BCM2712 более полно использовать параллелизм на уровне физической организации чипов памяти (parallelism in physical memory chip organisation). Почему так происходит, авторы не уточняют, но, вероятно, это связано с особенностями организации кеша в SoC.
16-нм SoC BCM2712 включает четыре ядра Cortex-A76 (2,4 ГГц), каждому из которых полагается по 64 Кбайт кеша для инструкций и данных и 512 Кбайт L2-кеша. Объём общего L3-кеша составляет 2 Мбайт. Встроенный 32-бит контроллер памяти предлагает LPDRR4x-интерфейс, теоретическая пропускная способность которого достигает 17 Гбайт/с. Важно отметить, что этот чип не создавался эксклюзивно для Raspberry Pi — он был выбран среди актуальных массовых решений Broadcom из-за удачного сочетания цены, производительности и доступности.
Патч добавляет в Kconfig новую опцию, а для активации эмуляции NUMA (Non-uniform memory access) нужно передать соответствующий параметр при загрузке ядра. Дальнейшая работы осуществляется с помощью стандартной утилиты numactl.
Источник: