Skip to content

9.6. Address Translation


TLB는 가상메모리를 물리메모리로 변환하는 과정에 매번 Page Table을 참조해야 하는 비효율성을 줄이기 위해 MMU 안에 탑재된 공간을 의미.

TLB Hit#

tlb-hit.jpeg

  1. CPU가 VA를 생성한다.
  2. MMU는 TLB에 VPN(Virtual Page Number)과 연관된 PTE를 쿼리하고
  3. TLB Hit가 발생하여 PTE 값을 가져온다.
  4. MMU는 PTE에 들어있는 물리주소의 값을 캐시/물리메모리에 요청한다.
  5. 캐시/물리메모리는 해당 위치에 들어있는 워드를 CPU에게 반환한다.

TLB Miss#

tlb-miss.jpeg

  1. CPU가 VA를 생성한다.
  2. MMU는 TLB에 VPN과 연관된 PTE를 쿼리하고 TLB Miss가 발생함을 인지한다.
  3. OS는 인터럽트 핸들러를 호출해 페이지 테이블을 검색하여 Page Table Entry를 구한다.
  4. 이렇게 구한 PTE는 TLB에 업데이트 된다.
  5. PTE로부터 물리주소를 알아내 캐시/물리메모리에 요청한다.
  6. 캐시/물리메모리는 해당 위치에 들어있는 워드를 CPU에게 반환한다.
  7. OS는 해당 명령을 다시 실행하여 프로세스를 계속 진행한다.

TLB에 Virtual Address를 넣으면 어떻게 Physical Address가 튀어나오나요?#

TLB는 기본적으로 n-way set associative 방식을 사용합니다. VA 하위비트 -> VPN -> TLBI(index)와 TLBT(tag)를 생성합니다. MMU는 TLB의 TLBI번째 인덱스의 TLBT태그에 적혀있는 PPN(Physical Page Number)와 valid 비트를 확인합니다. 이때 valid 비트가 꺼져있으면 MMU는 하드웨어 예외를 발생시키고 켜져있으면 PPN을 곧장 사용합니다.