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 |