Введение
Техника повышения эффективности распределения памяти в компьютере. В информатике, окрашивание кэша (также известное как раскраска страниц) — это процесс попытки выделения свободных страниц, которые являются смежными с точки зрения кэша процессора, чтобы максимизировать общее количество страниц, закэшированных процессором. Окрашивание кэша обычно используется в низкоуровневом коде динамического распределения памяти в операционной системе при сопоставлении виртуальной памяти с физической памятью. Подсистема виртуальной памяти, не использующая окрашивание кэша, менее предсказуема в отношении производительности кэша, поскольку различия в выделении страниц от одного запуска программы к другому могут приводить к значительным различиям в производительности программы.
In computer science, cache coloring (also known as page coloring) is the process of attempting to allocate free pages that are contiguous from the CPU cache's point of view, in order to maximize the total number of pages cached by the processor. Cache coloring is typically employed by low level dynamic memory allocation code in the operating system, when mapping virtual memory to physical memory. A virtual memory subsystem that lacks cache coloring is less deterministic with regards to cache performance, as differences in page allocation from one program run to the next can lead to large differences in program performance.
Подробности операций
Физически индексированный кэш ЦП устроен таким образом, что адреса в соседних физических блоках памяти занимают разные позиции ("линии кэша") в кэше, однако это не относится к виртуальной памяти; когда выделяются виртуально соседние, но не физически соседние блоки памяти, они потенциально могут занимать одну и ту же позицию в кэше. "Окраска" – это техника, реализованная в программном обеспечении управления памятью, которая решает эту проблему путем выбора страниц, не конфликтующих с соседними. Страницы физической памяти "окрашиваются" таким образом, что страницы с разными "цветами" занимают разные позиции в кэш-памяти процессора. При выделении последовательных страниц в виртуальной памяти процессам, ядро собирает страницы с разными "цветами" и отображает их в виртуальную память. Таким образом, последовательные страницы в виртуальной памяти не конкурируют за одну и ту же линию кэша.
Реализация
Этот код добавляет значительную сложность подсистеме выделения виртуальной памяти, но результат оправдывает затраченные усилия. Раскраска страниц делает виртуальную память столь же детерминированной, как и физическую, в плане производительности кэша. Раскраска страниц применяется в операционных системах, таких как Solaris, FreeBSD и Windows NT.