CS/운영체제

TLB (Translation Lookaside Buffer)

leah-only 2025. 2. 6. 19:36

메모리 관리 - 가상 메모리 페이지에도 TLB에 대해 작성했다. 

 

TLB (Translation Lookaside Buffer) 란?

메모리와 CPU 사이에 있는 주소 변환을 위한 캐시 

즉 MMU가 자주 참조하는 페이지 테이블의 일부를 캐시하는 작은 메모리 

TLB를 통해 페이지 테이블의 접근 횟수를 줄여 메모리 접근 속도를 향상시킴

 

TLB hit
TLB가 있으면 Page Table 거쳐갈 필요 없이 가상 주소를 실제 주소로 변환

 

TLB miss
TLB가 없으면 Memory에 있는 Page Table에서 가상 주소에 해당하는 정보를 가져와서 실제 주소로 변환

TLB가 나오게 된 배경

Paging 기법은 Paging Table을 기반으로 실제 메모리에 접근하기 때문에 메모리 낭비가 발생하고, 느리다.

이를 좀 더 빠르게 만들기 위해 TLB가 나오게 되었다.


질문 List>

Q1. TLB를 사용할 때 Context Switching이 발생한다면 어떻게 해결하는지 설명해주세요.(2가지 방안)

1. TLB flush

Context Switching시 TLB의 모든 내용을 지우는 방법

TLB의 각 항목에는 유효 비트 (valid bit)가 있는데, 이 비트를 0으로 설정하여 TLB의 내용을 무효화 한다간단하게 구현할 수 있다는 장점이 있지만 Context Switching 시마다 TLB를 초기화해야 하므로 오버헤드가 발생할 수 있다

 

2. ASID (Address Space Identifier)각 프로세스에 고유한 ASID를 부여하고, TLB의 각 항목에 ASID 정보를 함께 저장하는 방법Context Switching 시 새로운 프로세스의 ASID를 확인하여 해당 ASID에 해당하는 항목만 TLB에서 검색TLB flush에 비해 오버헤드를 줄일 수 있는 장점이 있지만 ASID를 관리해야 하는 추가적인 작업이 필요하다

 

Q2. TLB에 저장 가능한 공간이 꽉 찼을 경우 새로운 프로세스가 실행된다면, 어떤 프로세스를 빼고 새로운 것을 넣어야 하는지 과정에 대해 설명해주세요 (TLB Replacement Policy)

TLB 교체 정책의 목표는 TLB 미스율을 최소화하는 것이다. 즉, TLB 히트율을 최대화하는 것과 같다

 

1. LRU (Least Recently Used)최근에 사용하지 않은 항목을 제거하는 방법시간 지역성 (Temporal Locality)의 원리를 이용한다. 시간 지역성이란 최근에 사용된 데이터가 다시 사용될 가능성이 높다는 것을 의미

 

2. Random Policy무작위로 항목을 제거하는 방법


CS 로드맵 참고 : https://github.com/devSquad-study/2023-CS-Study

 

CS 질문 참고 : https://eunsun-zizone-zzang.tistory.com/48