운영체제

14. TLB(Translation Look-aside Buffers) 심화

ggomjiu 2025. 2. 10. 04:02

TLB

: MMU(Memory Management Unit)의 일부분이자, 주소 변환의 하드웨어 캐시

- TLB에는 자주 사용하는 VPN(Virtual Page Number)와 PFN(Pysical Frame Number)정보가 쌍으로 존재하며 이를 사용해 가상 주소를 실제 주소로 변환하도록 도와주는 HardWare Cache

- 이를 사용해 CPU가 Paging기법으로 주소 변환을 할 때, Page Table이 아닌 TLB에 접근

-> CPU가 원하는 VPN과 PFN의 정보가 TLB에 있다면 해당 정보로 빠르게 주소 변환을 할 수 있음

- 특징

  • 장점 : 해당 정보를 Page Table없이 TLB로 가져오기 때문에 주소 변환이 빠르게 수행됨
  • 단점 : 해당 정보가 TLB에 없다면 어쩔 수 없이 Page Table에서 가져와야 함

 

1. 배경

- Paging 기법을 사용하여 메모리 가상화를 지원한다면 오버헤드가 발생

- Page Table에 한 번 접근하고, Page Table을 기반으로 실제 메모리에 접근

-> 메모리 낭비가 발생

- Paging 기법은 메모리 낭비가 발생하고 느리기 때문에 이를 해결하기 위해서 나오게 됨

 

2. TLB entry

- TLB는 Full Associative method에 의해 관리됨

  • 일반적인 TLB는 32 or 64 or 128개의 항목을 가질 수 있음
  • 하드웨어는 전체 TLB를 병렬로 검색하여 원하는 변환을 찾음
  • Other Bits : valid bits, protection bits, address-space identifier, dirty bit

 

3. Problem

1) TLB를 사용할 때 Context Switching이 발생할 때, 두 개의 프로세스는 VPN이 동일하지만 서로 PFN은 다름

-> 어떤 정보가 어떤 Process의 정보인지 알 수 없음

-> ASID라는 정보를 추가해서 문제를 해결

  • 어떤 프로세스의 정보인지 구별하기 위해서 TLB에서 ASID를 제공
  • 이를 통해 프로세스마다 다른 ASID 정보를 저장하여 주소 변환을 성공적으로 수행

2) TLB에 저장 가능한 공간이 꽉 찼을 경우, 새로운 프로세스가 실행될 때

- 목표는 TLB miss rate를 최소화하는 것

  1. LRU : 최근에 사용하지 않는(예전에 사용하고 지금은 사용하지 않는) 프로세스를 내보냄
  2. Random Policy : 랜덤하게 제거

 


cf) ASID(Address-space Identifier)

: 프로세스 아이디

- TLB에 매핑되어 있는 정보가 어디 프로세스로부터 온 정보인지 기록해두는 것

 


 

 

 

 

 

 

 

 

 

 

Reference

https://velog.io/@tg-96/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9CTLB