캐시 컬러링(페이지 컬러링)

2019-12-03

캐시 컬러링Cache coloring(=페이지 컬러링Page coloring)

출처 : 위키피디아

프로세서에 의해 캐시된 총 페이지 수를 최대화하기 위해,
CPU 캐시에게 인접한 free page를 할당하려는 시도의 과정
OS의 low-level dynamic memory allocation code에 가상 메모리를 물리 메모리로 매핑할 때 자주 사용됨
한 프로그램에서 다음 것까지로의 페이지 할당에서의 차이는 프로그램 퍼모먼스의 큰 차이로 이어질 수 있음에 따라,
캐시 컬러링이 안되는 가상 메모리 서브시스템은 캐시 퍼포먼스 관련하여 덜 deteministic 함

물리적으로 인덱스된 CPU 캐시는 인접한 주소의 물리 메모리 블럭들이 다른 위치에 캐시되도록 디자인되어 있지만, 가상 메모리 경우는 아니다.
가상 메모리에서 인접했지만 물리 메모리에서 인접하지 않은 메모리 블럭들이 할당될 때, 그들은 잠재적으로 같은 위치에 캐시될 수 있다.
컬러링은 이웃 페이지들과 경쟁하지 않을 페이지를 선택하는 방법으로 위 문제를 해결하는 메모리 관리 소프트웨어에 적용되는 기법이다.
캐시 컬러링에서 물리 메모리 페이지들은 다른 "colors"의 페이지들이 CPU 캐시 메모리의 다른 위치에 캐시되도록 "colored"된다.
가상 메모리에 프로세스들을 위해 연속된 페이지를 할당할 때, 커널은 다른 "colors"의 페이지들을 모으고 그것들을 가상 메모리에 매핑한다.
이 방법으로, 연속된 페이지들은 가상 메모리에서 같은 캐시 라인에 캐시되기 위해 경쟁하지 않게 된다.