CS

[CS] TLB(Translation Lookaside Buffer)

soom22 2023. 12. 10. 23:19

1. TLB 의미와 구성

TLB 정의

: 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시

: 최근에 일어난 가상 메모리 주소와 물리 주소의 변환 테이블 저장

: 일종의 주소 변환 캐시

TLB 발생 이유

: 모든 가상메모리 참조는 두 번의 물리 메모리 참조 수반

  • 해당 페이지테이블 항목 참조
  • 요구된 데이터 접근을 위한 참조

: 두 배의 메모리 접근 시간을 갖게 됨

→ 그래서 가상에서 물리주소로 변환을 위한 전용 하드웨어 캐시

mmu의 chip 부분 → table로 가기 전에 한번 tlb에 있는 지 검사

💡 TLB가 나오게 된 배경은 무엇이고, TLB 개념에 대해 설명해 주세요.
💡 TLB를 사용한 전체적인 페이지 탐색과정에 대해 설명해 주세요.

TLB 구성

  • VPN(VPFS Virtual Page Frame Number)
    • TLB KEY
    • CPU 코어가 요청한는 가상주소(Virtual Address)는 VPN과 VPO(offset)로 구성
    • TLB 에서는 코어에서 요청한 가상주소에서 VPN을 추출해 내부 검색
  • PPN(PPFN Physical Page Frame Number)
    • VPN과 1:1 대응되는 TLB VALUE
    • 코어가 요청한 가상주소에 해당하는 페이지의 주기억장치 주소를 저장
    • PFO(offet)와 결합해 주기억창지 주소 완성
  • other bits 상태관리비트들
    • valid
      • hit/miss 여부를 표시
      • 시스템 시작시 invalid 로 초기화됨
    • protection
      • TLB 페이지 접근 방식에 대한 표시, read/write/execute 에 대한 상태 표시
      • 일종의 보호 비트
    • ASID(Address Space ID)
      • 단일 프로세스 환경
        • VPN 충돌이 일어나지 않아 사용되지 않음
      • 다중 프로세스 환경
        • TLB가 하나인 경우 프로세스가 TLB에 접근하려 할 때 충돌 방지목적으로 프로세스 별 ID 부여하고 ID 별로 VPN 을 관리하게 됨.
        • ASID가 등장하기 전에는 새로운 프로세스가 TLB에 접근시 매번 초기화 하는 방법을 사용했으나 큰 오버헤드 발생으로 고안됨.
    • dirty
      • 페이지가 TLB에 적재된 이후 수정 여부를 나타내는 비트

tlb 순서

1) 가상주소가 주어지면, 처음에 TLB 살펴봄

2-1) 가상주소가 TLB에 존재 (TLB hit) ---> 바로 프레임 번호 추출 --> 실주소 구성

2-2) 해당 페이지테이블 항목 부재(TLB miss) ---> 페이지 번호로 페이지 테이블 인덱싱 ---> 페이지테이블 항목 참조

3-1) 존재비트 1일 경우, 해당 페이지 주기억장치에 존재 ---> 페이지테이블 항목의 프레임 번호 이용 ---> 실주소 구성 및 TLB 갱신

3-2) 존재비트 0일 경우, 해당 페이지 주기억장치에 존재X ---> 메모리 접근 오류 발생 (Page fault)

 

사상의 종류

  1. 직접사상
    1. 메인 메모리와 캐시를 똑같은 크기로 나누어 순서대로 매핑하는 것
    2. 블럭 하나, 캐시하나 매치
  2. 연관사상
    1. 페이지 번호가 순서대로 매치되지 않는 것
    2. 페이지 번호를 tlb 인덱스로 사용 x
    3. 특정 페이지 번호랑 일치하는 tlb 항목이 있는 지 조사하는 하드웨어 장착

TLB Hit

  • TLB에서 주소변환이 성공한 것을 TLB Hit이라고 한다.

TLB MISS

TLB Miss TLB Hit TLB Hit TLB Miss TLB Hit TLB Hit TLB Hit TLB Miss TLB Hit TLB Hit

 

TLB는 Locality로 인해 성능을 향상

Spatical Locality

메모리 x를 접근했다면, x 근처의 메모리를 접근할 확률이 높다.

예) For문 등이 연속된 주소(공간)를 접근하기 때문에

다음에 수행될 부분이 TLB에 저장되어 있을 확률이 높다.

Temporal Locality

최근에 접근된 데이터는 또 다시 접근될 확률이 높다.

예) 첫 For문 이후에, 또 동일한 For문을 돌리는 경우

모든 경우에 대해서 Hit이 수행될 수 있다.

💡 TLB가 메모리 성능을 어떻게 향상시키는지 TLB hit rate 와 Spatial Locality 개념과 연관지어 설명해 주세요.

0. TLB -> hit,  Cache -> hit,  Virtual Memory -> hit

  • Best, 먼저, TLB가 hit이므로 페이지 테이블을 볼 필요 없다. 즉, 메인 메모리 접근 필요없음. 그리고, cache hit이므로 TLB에 의해 가상 주소 -> 실제 주소, 이 실제주소를 가지고 cache에 접근해 페이지를 접근함.

1. TLB -> hit, Cache -> miss, Virtual Memory -> hit

  • 이 경우는 TLB가 hit이므로 page table에 접근하지는 않는다. 그러나, cache가 miss이므로 페이지를 읽기 위해 메모리 접근 1회가 필요하다.

2. TLB -> miss, Cache -> hit, Virtual Memory -> hit

  • 이 경우는 TLB가 miss이므로 page table에 접근해 가상 주소 -> 실제 주소 변환 작업이 필요하다. (메모리 접근 1회) 만약, page table을 접근했는데 valid bit이 0 이라면 page fault가 발생한다.
  • cache는 hit이므로 더 이상의 메모리 접근은 없다.

3. TLB -> miss, Cache -> miss, Virtual Memory -> hit

  • 이 경우는 TLB가 miss이므로 page table에 접근한다. 또한, cache도 miss 이므로 메모리에 접근해 페이지를 가져온다. 즉, 메모리 접근 2번이다.

4. TLB -> miss, Cache -> miss, Virtual Memory -> miss

  • 이 경우는 최악의 경우로 메모리에서 miss가 발생했으므로 page fault가 발생한다. 즉, 가장 페이지의 Valid bit가 0이므로 운영체제가 제어를 넘겨받게 된다.(디스크로부터 페이지를 가져옴 - 시간이 오래걸려 성능이 저하된다. )

5,6,7. 불가능한 경우

  • 가상 메모리와 캐시 시스템은 계층구조를 이루며 같이 동작한다. 따라서, 데이터가 메인 메모리에 없다면 그 데이터는 캐시에 있을 수 없다.(디스크 -> 메모리 -> 캐시 )