tlbaddress-translationlocality
TLB가 무엇이고 주소 변환에서 왜 필요한가요?
- 예상 시간
- 8분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
TLB hit와 miss는 무엇인가요?
TLB miss가 나면 어떤 일이 생기나요?
컨텍스트 스위칭이 TLB에 영향을 주는 이유는 무엇인가요?
큰 page size는 TLB에 어떤 영향을 주나요?
TLB와 CPU cache는 같은가요?
부가 설명
가상 메모리는 편하지만 공짜는 아닙니다. 배열 원소 하나를 읽는 것처럼 보이는 작업도 실제로는 가상 주소 변환을 거쳐야 합니다. page table이 메모리에 있으니, 변환을 위해 다시 메모리를 읽어야 하는 이상한 상황이 생깁니다.
TLB는 이 반복을 줄이는 작은 캐시입니다. 프로그램이 같은 page 안의 데이터를 자주 접근하면 locality 덕분에 TLB hit가 많이 납니다. 반대로 큰 메모리를 무작위로 훑거나 프로세스 전환이 잦으면 TLB miss와 flush 비용이 커질 수 있습니다. 성능 이야기를 할 때 cache와 함께 TLB를 언급하면 메모리 계층을 더 입체적으로 설명할 수 있습니다.
한 줄 정리
TLB는 가상 주소 변환 결과를 캐싱해 page table 탐색 비용을 줄이는 하드웨어 캐시입니다.