본문 바로가기
컴퓨터시스템

6. 가상 주소 변환 / TLB

6. 가상 주소 변환 / TLB - 2025/09

MMU (Memory Management Unit)

 

다중 프로세스 운영체제에서 프로세스는 저마다의 VMS (Virtual Memory Space) 를 가집니다.

프로그램 수준에서의 명령어는 모두 가상주소 기반입니다.

즉, Execution Unit 에서 사용되는 주소가 모두 가상 주소고,

실제 물리주소로의 변환 및 접근은 MMU라는 장치가 담당하게 됩니다.

 

CR3 레지스터와 변환 과정

가상 주소에서 물리주소로 변환시 가장 먼저 사용되는 장치는 CR3 레지스터 입니다.

운영체제는 컨텍스트 스위치시 이 CR3 레지스터의 값을 바꿉니다.

이 CR3 레지스터의 값을 시작으로, 가상함수의 각 비트셋을 이용한 몇번의 테이블 참조가 이루어 집니다

각 엔트리에서의 8바이트 내부에는 하위 엔트리의 주소를 비롯한 다양한 값이 표현됩니다.

 

결국 CR3 레지스터의 값을 시작으로,

몇번의 참조를 거쳐서 결국 페이지와 페이지 내에서의 오프셋을 구할 수 있게 되는 방식임을 알 수 있습니다.

주소를 제외한 나머지는 운영체제에서 관리하는 권한과 모드( 커널 / 유저) 등 의 값으로 쓰입니다.

 

TLB (Translation Lookaside Buffer)

MMU 내부에는 TLB라는 장치가 있습니다.

이름에서 알 수 있듯,

CR3를 이용한 변환 과정을 결과를 저장 시켜둔 캐시메모리 입니다.

 

TLB Flush & PCID 도입 (인텔 네할렘 이후)

TLB에 저장된 내용은 당연히 프로세스 독립적일 수 밖에 없습니다.

따라서, 운영체제가 CR3의 값을 바꿀때, TLB도 비워버립니다.

 

그래서 프로세스간 컨텍스트 스위치는 같은 프로세스내의 스레드간의 그것보다 성능적으로 손해를 볼 수 밖에 없습니다.

 

이것을 완화하기 위해, 인텔 네할렘 이후 부터 CR3 레지스터에 프로세스 구분을 위한 PCID라고 불리는 필드를 

두게 되었고,

TLB내에 다수 프로세스 주소 변환 결과가 공존할 수 있게 되었습니다.

 

 

 

 

 

 

 

'컴퓨터시스템' 카테고리의 다른 글

5. 분기 예측  (0) 2025.09.01
4. 캐시 메모리  (0) 2025.08.19
3. 비순차 실행, 슈퍼스칼라  (0) 2025.08.15
2. 프로세서 파이프라이닝  (0) 2025.08.15
1. 프로세서 인터페이스 ISA  (0) 2025.07.19