TLB(Translation Lookaside Buffer)는 가상 주소를 물리 주소로 변환하는 페이지 테이블의 캐시다. 주소 변환 시 매번 메모리를 참조하는 비용을 줄이기 위해 CPU 내부에 위치하며, 최근 사용 변환을 저장한다.
동작 원리
가상 주소 → TLB 조회
├─ TLB Hit (90~99% 경우): 물리 주소 즉시 반환
└─ TLB Miss: 페이지 테이블 참조 → TLB에 엔트리 추가
└─ Page Fault: 디스크에서 페이지 로드
TLB 구조
TLB 엔트리:
┌──────────┬──────────────┬──────────┬──────┐
│ VPN │ PFN (물리) │ Valid │ 보호 │
│ (가상PPN)│ │ Dirty │ 비트 │
└──────────┴──────────────┴──────────┴──────┘
ASID (Address Space ID): 컨텍스트 스위치 시 TLB flush 최소화
성능 지표
Effective Access Time (EAT):
EAT = (TLB Hit Rate × TLB 접근시간)
+ (TLB Miss Rate × (TLB + 페이지테이블 + 메모리) 시간)
예: Hit Rate=0.98, TLB=1ns, 메모리=100ns
EAT = 0.98×(1+100) + 0.02×(1+100+100) ≈ 103ns
(TLB 없으면 200ns)
TLB Shootdown
멀티코어 환경에서 한 CPU가 페이지 테이블 변경 시 다른 CPU의 TLB를 무효화해야 한다. IPI(Inter-Processor Interrupt)를 사용한다.
관련 개념