En informática , la coloración de caché (también conocida como coloración de páginas ) es el proceso de intentar asignar páginas libres que son contiguas desde el punto de vista de la caché de la CPU, para maximizar el número total de páginas almacenadas en caché por el procesador. La coloración de caché generalmente se emplea mediante código de asignación de memoria dinámica de bajo nivel en el sistema operativo , cuando se asigna memoria virtual a memoria física . Un subsistema de memoria virtual que carece de coloración de caché es menos determinista con respecto al rendimiento de la caché, ya que las diferencias en la asignación de páginas de un programa ejecutado a otro pueden generar grandes diferencias en el rendimiento del programa.
Un caché de CPU indexado físicamente está diseñado de manera que las direcciones en bloques de memoria física adyacentes tomen diferentes posiciones ("líneas de caché") en el caché, pero este no es el caso cuando se trata de memoria virtual; cuando se asignan bloques de memoria virtualmente adyacentes pero no físicamente adyacentes, ambos podrían potencialmente ocupar la misma posición en la memoria caché. La coloración es una técnica implementada en el software de administración de memoria, que resuelve este problema seleccionando páginas que no compiten con las páginas vecinas.
Las páginas de la memoria física están "coloreadas" para que las páginas con diferentes "colores" tengan diferentes posiciones en la memoria caché de la CPU. Al asignar páginas secuenciales en la memoria virtual para procesos, el kernel recopila páginas con diferentes "colores" y las asigna a la memoria virtual. De esta manera, las páginas secuenciales en la memoria virtual no compiten por la misma línea de caché.
Este código agrega una cantidad significativa de complejidad al subsistema de asignación de memoria virtual, pero el resultado vale la pena el esfuerzo. [1] El color de página hace que la memoria virtual sea tan determinista como la memoria física con respecto al rendimiento de la caché. La coloración de páginas se emplea en sistemas operativos como Solaris , [2] FreeBSD , [1] NetBSD , [3] y Windows NT . [4]