TLB

TLB 란?

Translation Lookaside Buffer, (변환 색인 버퍼)

정의

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

  • 일종의 주소 변환 캐시로 최근에 일어난 가상 메모리 주소와 물리 주소의 변환 테이블을 저장

특징

  • 하드웨어적으로 지원하며 페이지 테이블의 임시저장 캐시 역할을 함

  • 캐시 메모리(하드웨어)에 별도로 페이지 넘버 - 프레임 넘버에 대한 매핑 정보를 담고 있는 테이블

  • 여러가지 다른 레벨의 캐시들 사이에서 주소를 변환하는데 사용

    • EX) CPU와 CPU캐시 사이, CPU캐시와 메인 메모리 사이 등

  • 현재 모든 데스크탑 및 서버용 프로세서는 하나 이상의 TLB를 메모리 관리 하드웨어에 가지고 있음

  • 페이지, 세그먼트 단위로 처리하는 가상 메모리를 사용하는 거의 모든 하드웨어는 TLB를 사용

  • 작은 크기

    • 64~1024 entry 정도로 작은 크기

    • TLB에 내용이 있을 경우, 메모리에 접근하기 전에 사용해야하므로 크기를 작게하여 속도를 높임

    • 보통 SRAM으로 구성

실행

  1. CPU는 1차적으로 TLB에 접근해 원하는 페이지가 존재하는지 탐색

MMU는 CPU 내부에 존재하며, 일반적으로 MMU안에 TLB가 포함되어 있다.

사용 이유

  • 페이지 테이블은 메인 메모리에 저장되기에 프로그램에 의한 모든 메모리 접근은 최소 두 번 필요함

    • 실제 주소를 얻기 위한 메모리 주소 접근 (가상 주소 → 실제 주소)

    • 데이터를 얻기 위한 접근

  • 결과적으로 접근 시간이 2배 걸리는 것을 해결하기 위해 사용

Hit & Miss & Flushing

  • TLB Hit

    • TLB에 페이지 넘버가 존재하는 경우

    • 메모리에 1번 접근

      • TLB에 접근하며 페이지 테이블에 접근하지 않음

  • TLB Miss

    • TLB에 페이지 넘버가 없는 경우

    • TLB엔 없지만 main memory에는 올라가 있는 상태

    • 기존보다 더 많은 시간 소요

      • 기존 방식 + TLB 접근 시간 추가

  • TLB Flushing

    • TLB를 강제로 초기화

      • Full flushing - 전부 초기화

      • Partial Flushing - 부분 초기화

    • Context Switching이 발생하면 이전 프로세스의 Entry는 필요하지 않으므로 초기화

    • 페이지 테이블이 변경되면 페이지의 위치가 변할 수 있으므로 초기화

  • Hit ratio

    • 접근하려는 메모리의 페이지 번호가 TLB에서 발견되는 비율

    • 이를 통해 평균 접근 시간 EAT(effective memory access time) 계산 가능

      • EAT = (Hit ratio) * (TLB Hit시 접근시간) + (1 - Hit ratio) * (TLB Miss시 접근 시간)

이와 같은 이유로 TLB Miss를 줄이는 방법(TLB replacement)가 필요하다. 여기에 해당하는 알고리즘으로 LRU, FIFO, RANDOM등이 있다.

TLB 구성

  • VPN(Virtual Page Number)

    • 가상 페이지 번호

  • PFN(Page Frame Number)

    • 물리 메모리의 페이지 프레임 번호

  • Other bits

    • Vaild bit

      • 페이지가 물리 메모리에 적재되어 있으면 1, 아니면 0 값

    • Protection bit

      • 읽기(read), 쓰기(write), 실행(execute) 등의 권한을 설정하여 메모리와 시스템을 보호

    • Drity bit

      • TLB의 내용의 write가 있었는지 확인하는 비트

        • 1일 경우: write되었으므로 TLB에서 나갈때 메모리에 write 해줌

        • 0일 경우: 기존의 메모리에 있는 값가 동일함으로 그냥 나감

    • Reference bit

      • 메모리에서 값이 참조 될 때 1로 변환

      • TLB가 꽉 찼을때 내보낼 페이지 선택시 LRU알고리즘 사용

        • Reference bit를 기준으로 비트가 0인 페이지부터 교체

        • Reference bit가 모두 1이 되면 주기적으로 0으로 변환

    • ASID(Address Space Identifier)

      • 프로세스 구분을 위해 사용

ASID

  • 프로세스는, 프로세스 마다 다른 페이지 테이블을 가짐

  • TLB는 전역에 있기에 전체 프로세스에 대한 캐시를 다뤄야 함

  • 따라서 TLB는 테이블에 단순히 페이지 넘버 뿐 아니라, 프로세스 아이디도 가지고 있어야 함

    • 이를 ASID(Address-space Identifier)라고 함

Ref

빽 투더 기본기 [OS 7편]. 메모리 관리 2 MMU, TLB

Last updated