Techinically, role of main memory is to decrease gab between speed of processor and one of disk. Even though size of memory gets larger, data processing at server computing environment for big data, which is one of the hottest keywords in the world nowdays, or memory size at mobile computing environment still make it important to manage memory resource eectively. One of ways for it is to use Page Locality Detection. MABF(Memory Accessed Based Filtering), which we propose, support several key features, which are to detect page locality per thread, not process and to give TLB information, which is to see
if each page number is in TLB, as well as the number of each page access. MABF also achieves at least about 90% accuracy with minimal performance degradation.
최근 아키텍쳐들은 대부분 프로세서와 디스크 사이의 처리속도 차이를 줄이기 위해 메인 메모리를 사용하고 있다. 비록 최근 추세가 메모리의 크기가 커져가고 있다 할지라도 서버나 모바일 환경에서 여전히 메모리가 부족하기 때문에 메모리를 잘 관리하는 것은 중요한 일 중 하나이다. 효율적인 메모리 관리를 위한 많이 사용되는 기법 중 하나가 Page Locality Detection 즉, 핫 페이지 찾기이다. 말 그대로 사용 빈도가 높은 페이지를 찾는 것이다. 원격 메모리 접근이 지역 메모리 접근보다 상대적으로 느린 NUMA 아키텍처의 경우 자주 사용되는 페이지를 빠른 메모리에
위치시키는 것이 유리하다. NUMA 아키텍처 뿐 아니라 최근 많이 연구가 되고 있는 3D-stacked DRAM 이나 PRAM, PCM의 경우 메인 메모리를 지원하기 위해 계층적 메모리 구조를 가지게 되는데 이 역시 각 메모리 별 접근 속도가 다르게 된다. 이처럼 접근 속도가 다른 메모리들로 구성된 아키텍처에서 빠른 메모리에 자주 사용하는 페이지들을 위치시키는 것이 유리하다. 이 뿐 아니라 NUCA 처럼 각 뱅크별 hit latency가 다른 cache 에서도 사용될 수 있으며 자주 사용되는 페이지들의 내용을 cache coloring을 이용하여 특정영역에 고정시킬 수 도 있다. 이처럼 다양하게 사용될 수 있는 새로운 Page Locality Detection인 MABF(Memory Access Based
Filtering)을 제안한다.
MABF는 모든 메모리 접근시 가상 주소를 물리주소로 변화하기 위해 접근해야하는 TLB의 모든 엔트리에 카운터를 추가한다. 이 카운터를 이용하여 샘플링 방식을 사용하지 않고도 성능하락을 최소화 하면서 각 페이지의 접근 빈도를 높은 정확도를 가지고 구할 수 있다. TLB 의 엔트리는 다른 페이지 정보를 저장하기 위해 TLB 로 부터 쫓겨날 수 있는데 이 때 카운터에 저장된 접근 빈도도 사라지게 된다. 이를 위해 Eviction 발생시 해당 페이지 접근 빈도를 메모리에 위치한 Page Counter Table 에 저장하도록 한다. 또한 다양한 환경에서 다양한 목적으로 사용될 수 있게 Page Counter Table에 저장된 각 페이지 별 접근 빈도를 소프트웨어를 이용하여 가공할 수 있다.
여기서 제안하는 MABF는 TLB entry의 태그 매치를 할 때 병렬로 카운터가 증가하기 때문에 성능에 영향을 주지 않는다. 그러면서도 샘플링을 사용하지 않기 때문에 최소 90% 이상의 정확도를 보여준다. TLB의 각 엔트리에 추가되는 카운터는 128 개의 엔트리를 가지는 ITLB와 DTLB, 512개의 엔트리를 가지는 L2 TLB를 사용한다고 가정했을 때 2.5KB 정도의 무시할 수 있을 정도의 스토리지 오버헤드만 존재할 뿐이다.