В информатике раскраска кэша (также известная как раскраска страниц ) — это процесс попытки выделить свободные страницы , которые являются смежными с точки зрения кэша ЦП , чтобы максимизировать общее количество страниц, кэшируемых процессором. Раскраска кэша обычно используется низкоуровневым динамическим кодом выделения памяти в операционной системе при отображении виртуальной памяти в физическую память . Подсистема виртуальной памяти, в которой отсутствует раскраска кэша, менее детерминирована в отношении производительности кэша, поскольку различия в выделении страниц от одного запуска программы к другому могут привести к большим различиям в производительности программы.
Физически индексированный кэш ЦП спроектирован таким образом, что адреса в смежных физических блоках памяти занимают разные позиции («строки кэша») в кэше, но это не так, когда речь идет о виртуальной памяти; когда выделяются виртуально смежные, но не физически смежные блоки памяти, они потенциально могут оба занять одну и ту же позицию в кэше. Раскрашивание — это метод, реализованный в программном обеспечении управления памятью, который решает эту проблему путем выбора страниц, которые не конкурируют с соседними страницами.
Страницы физической памяти «окрашены», так что страницы с разными «цветами» имеют разные позиции в кэш-памяти ЦП. При выделении последовательных страниц в виртуальной памяти для процессов ядро собирает страницы с разными «цветами» и отображает их в виртуальную память. Таким образом, последовательные страницы в виртуальной памяти не конкурируют за одну и ту же строку кэша.
Этот код значительно усложняет подсистему выделения виртуальной памяти, но результат стоит усилий. [1] Раскраска страниц делает виртуальную память такой же детерминированной, как и физическая память, в отношении производительности кэша. Раскраска страниц используется в таких операционных системах , как Solaris , [2] FreeBSD , [1] NetBSD , [3] и Windows NT . [4]