TLB

TLB 주소 변환 캐시

CPU는 매 메모리 접근마다 가상 주소를 물리 주소로 바꿔야 한다. TLB hit가 나면 페이지 테이블 walk를 피하고, miss가 나면 번역 비용이 드러난다.

01

페이지 번호 탐색

가상 주소는 page number와 offset으로 나뉘고 offset은 번역 뒤에도 유지된다.

02

TLB를 먼저 조회한다

최근 번역이 TLB에 있으면 물리 frame 번호를 바로 얻어 메모리에 접근한다.

03

miss 비용 처리

TLB miss는 페이지 테이블 walk를 유발하고, 페이지가 없으면 page fault로 커널이 개입한다.

Hit
빠른 번역 TLB entry가 유효하면 추가 페이지 테이블 접근 없이 물리 주소를 만든다.
지역성이 중요하다.
Miss
page table walk 다단계 페이지 테이블을 따라가 번역 정보를 찾는다.
캐시 miss와 겹치면 비용이 커진다.
Flush
문맥 전환 비용 주소 공간이 바뀌면 오래된 번역을 비워야 할 수 있다.
ASID/PCID가 완화한다.
Huge page
entry 효율 큰 페이지는 같은 TLB entry로 더 넓은 범위를 덮는다.
내부 단편화와 trade-off가 있다.

offset · miss · 전환 점검

offset 페이지 offset은 번역 전후 동일하게 유지된다는 점을 이해하는가.
miss TLB miss와 page fault를 혼동하지 않는가.
전환 문맥 전환 때 TLB가 왜 성능 비용이 되는지 설명할 수 있는가.

주소 번역

VA = VPN | offset
TLB[VPN] -> PFN
PA = PFN | offset