프린세스 다이어리

[OS] 다중단계 페이징 시스템의 개념, TLB 뜻 본문

운영체제, 컴퓨터 구조

[OS] 다중단계 페이징 시스템의 개념, TLB 뜻

개발공주 2022. 1. 30. 20:55
728x90

리눅스의 프로세스의 페이징 시스템에서는 0GB~4GB를 모두 4KB 단위 페이지로 나누어서 Page Table을 만들어서 가상 주소와 물리 주소로 매칭한다. 한편 페이지 테이블도 결국 메모리에 올려야 하는데 전체 4GB를 몽땅 쪼개서 테이블을 만들어 놓는다면 쓸데없이 많은 메모리 공간을 차지하게 된다. 만약 실제로 돌리는 간단한 C언어 프로그램이 10KB라면 4GB 전체를 페이지 테이블로 만드는 건 메모리 공간 낭비다.

 

1. 메모리 공간을 절약해주는 다중단계 페이징 시스템

 

다중단계 페이징 시스템이란, Page Directory로 영역을 구분하여, 그 중에 데이터가 있는 디렉터리만 페이지 테이블을 만들어 메모리 공간을 절약하는 개념이다.

 

 

전체 페이지 32bit 중, 12bit는 원래대로 페이지 주소로부터의 변위를 나타내는 정보고, 나머지 20bit 중 10bit는 페이지 디렉터리 정보, 10bit는 해당 디렉터리의 페이지 테이블이다. 리눅스에서는 3단계로 구분했다가, 요즘에는 더 복잡하게 4단계로 나누어 처리하는 경우도 있다고 한다.

 

 

1) CR3 레지스터의 전체 페이지 테이블의 맨 앞이 페이지 디렉터리의 맨 앞 주소를 가리키게 된다.

2) 해당 주소에 대응하는 디렉터리에 가면, 그 디렉터리에 대한 페이지 정보를 가진 페이지 테이블 주소의 맨 앞이다.

3) 그 페이지 테이블에서 해당 페이지 번호를 찾아서 페이지 정보와 offset 정보로 물리메모리 주소의 데이터를 가져온다.

 

2. 메모리에 오가는 시간을 절약해주는 TLB(Translation Lookaside Buffer)

MMU가 하는 일을 다시 정리해 보면, CPU가 가상주소를 가지고 데이터를 요청하면, MMU라는 별도의 하드웨어가 페이지 테이블을 참고해 물리 주소로 변환해서 CPU에게 해당 페이지의 데이터를 전달해주는 역할을 한다. 그런데 페이지 테이블도 물리 메모리에 적재돼 있고, CPU가 요청한 데이터 또한 물리 메모리에 적재돼 있기 때문에 MMU가 물리 메모리에 두 번이나 오가야 한다는 점에서 시간 효율이 떨어진다.

 

이를 해결하기 위해 TLB가 필요하다. TLB는 MMU가 가상 주소와 물리 주소를 변환하는 과정에 들이는 시간을 줄여 주는 또다른 별도의 캐싱 보조 하드웨어다.

 

 

MMU가 가상주소 A를 가지고 물리주소 A'를 한 번 얻었다면, 이렇게 최근에 변환된 매칭 정보를 TLB에 캐싱한다. 다음번부터 A 가상주소를 가지고 물리주소를 찾아야 한다면, MMU는 페이지 테이블을 확인하러 물리 메모리에 접근하지 않고, TLB에 캐싱된 정보가 있나 찾아본다. 과정을 정리해 보면 다음과 같다.

 

TLB가 없으면:

(1) CPU의 가상 주소 요청

(2) MMU가 CR3의 base 주소를 가지고 페이지테이블로 감 (물리 메모리 접근 1)

(3) MMU가 물리 주소를 가지고 옴

(4) MMU가 페이지의 물리 주소로 접근함 (물리 메모리 접근 2)

(5) 해당 페이지의 데이터를 CPU에 전달

 

TLB가 있고 && TLB에 기존에 가상주소-물리주소 캐싱이 되어 있으면:

(1) CPU의 가상 주소 요청

(2) MMU가 TLB에서 캐싱된 물리 주소를 가지고 옴 (시간 세이브)

(3) MMU가 페이지의 물리 주소로 접근함 (물리 메모리 접근 1)

(4) 해당 페이지의 데이터를 CPU에 전달

 

 

 

728x90
Comments