가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시이다.
TLB는 page, frame 단위로 저장하고 있으며, 가상 주소 → 물리 메모리 주소로 변환할 때 속도를 높여준다.

- Page table 중 일부가 Associative Register에 보관
- 만약 해당 Page가 Associative Register에 있는 경우 바로 TLB Hit이 발생하여 Frame을 얻는다.
- 그렇지 않을 경우 Physical Memory에 있는 Page Table로 부터 Frame을 얻는다.
- TLB는 context switching 때 flush가 발생한다.
일반적인 Page Table로의 접근은 Logical Address만큼 이동하여 데이터를 빠르게 탐색할 수 있지만, TLB는 페이지 테이블의 일부만 갖고 있기에 전체 탐색이 요구된다. 그러므로 병렬 탐색이 가능한 Associative Registers를 사용한다.
TLB Flush
TLB 플러쉬란 CPU가 프로세스를 사용하면서 TLB에 저장한 (page, frame) 매핑 정보를 모두 지우는 과정이다.
주로 컨텍스트 스위칭 과정에서 TLB 플러쉬가 발생한다.
TLB Flush가 필요한 이유는 다음과 같다.
- 가상 주소 공간의 충돌 방지
- 주소 변환의 일관성 유지
추가적으로, 컨텍스트 스위칭시 무조건적으로 Flush가 발생하지는 않는다.
Context Switch
↓
다른 작업의 working set 사용
↓
기존 cache line eviction
↓
원래 작업 재실행
↓
cache miss 증가
↓
하위 캐시 또는 메모리 접근
Two-Level Page Table
32비트 환경에서는 의 주소 공간을 갖기에 약 1만개의 Page Table Entry가 필요하다.
그러나, 대부분의 프로그램은 4GB의 주소 공간 중 지극히 일부분만 사용되기에 공간 낭비된다.
그렇기에, Page Table 자체를 Page로 구성하여 공간을 절약한다.
