Введение

Техника повышения эффективности распределения памяти в компьютере. В информатике, окрашивание кэша (также известное как раскраска страниц) — это процесс попытки выделения свободных страниц, которые являются смежными с точки зрения кэша процессора, чтобы максимизировать общее количество страниц, закэшированных процессором. Окрашивание кэша обычно используется в низкоуровневом коде динамического распределения памяти в операционной системе при сопоставлении виртуальной памяти с физической памятью. Подсистема виртуальной памяти, не использующая окрашивание кэша, менее предсказуема в отношении производительности кэша, поскольку различия в выделении страниц от одного запуска программы к другому могут приводить к значительным различиям в производительности программы.

Подробности операций

Физически индексированный кэш ЦП устроен таким образом, что адреса в соседних физических блоках памяти занимают разные позиции ("линии кэша") в кэше, однако это не относится к виртуальной памяти; когда выделяются виртуально соседние, но не физически соседние блоки памяти, они потенциально могут занимать одну и ту же позицию в кэше. "Окраска" – это техника, реализованная в программном обеспечении управления памятью, которая решает эту проблему путем выбора страниц, не конфликтующих с соседними. Страницы физической памяти "окрашиваются" таким образом, что страницы с разными "цветами" занимают разные позиции в кэш-памяти процессора. При выделении последовательных страниц в виртуальной памяти процессам, ядро собирает страницы с разными "цветами" и отображает их в виртуальную память. Таким образом, последовательные страницы в виртуальной памяти не конкурируют за одну и ту же линию кэша.

Реализация

Этот код добавляет значительную сложность подсистеме выделения виртуальной памяти, но результат оправдывает затраченные усилия. Раскраска страниц делает виртуальную память столь же детерминированной, как и физическую, в плане производительности кэша. Раскраска страниц применяется в операционных системах, таких как Solaris, FreeBSD и Windows NT.