TLB와 주소 변환

TLB와 주소 변환

페이지 테이블을 매 메모리 접근마다 조회하면 주소 변환이 병목이 됩니다. TLB는 최근 사용한 page to frame 매핑을 CPU 가까이에 저장해 변환 비용을 크게 낮추는 작은 캐시입니다.

01

TLB 우선 확인

CPU가 만든 page number를 TLB에서 찾고 hit이면 frame number를 즉시 얻습니다.

hit
02

miss 처리

TLB에 없으면 페이지 테이블을 조회하고 유효한 매핑이면 TLB에 채웁니다.

miss
03

권한도 함께 검사한다

TLB entry에는 frame뿐 아니라 valid, dirty, protection 같은 정보가 함께 들어갈 수 있습니다.

permission
04

프로세스 경계를 지킨다

다른 프로세스의 같은 page number와 섞이지 않도록 ASID를 쓰거나 context switch 때 비웁니다.

ASID
TLB hit
주소 변환이 매우 빠르게 끝남 지역성이 좋을수록 hit rate가 올라가 실제 메모리 접근 비용이 줄어듭니다.
fast
TLB miss
페이지 테이블 walk 필요 다단계 페이지 테이블이면 miss 비용이 더 커집니다.
walk
Context switch
캐시된 변환의 소유자를 구분해야 함 ASID가 없으면 이전 프로세스의 변환을 쓰지 않도록 flush가 필요합니다.
isolation

지역성 · 보호 · 캐시 무효화 점검

지역성 작업 집합이 TLB 크기 안에 들어오는지 생각하면 hit rate를 이해하기 쉽습니다.
보호 TLB hit이어도 권한 검사가 생략되는 것은 아닙니다.
캐시 무효화 페이지 테이블이 바뀌면 관련 TLB entry를 무효화해야 합니다.