728x90
728x90
MMU(Memory Management Unit)
가상메모리 시스템에서 CPU는 가상 주소를 통해 물리 주소에 접근하여 작업한다.
이 때, 가상 주소를 물리 주소로 변환하는 하드웨어 디바이스를 MMU라고 한다.
- 가상 메모리 주소(논리 메모리 주소)를 실제 메모리 주소로 변환하는 역할을 한다.
- OS를 통해 페이지 테이블에 접근하고, 변환 작업을 진행한다.
- 일반적으로 CPU 내에 존재하지만, 별도의 통합 칩 (IC)에서 작동하기도 한다.
- Memory Protection 기능을 제공한다.
- 보호되는 메모리 영역에 접근하지 못하게 한다.
- 메모리의 실제 배열과 상관 없이 연속된 메모리로 취급할 수 있게 한다.
TLB(Translation Lookaside Buffer)
자주 참조되는 Page Table Entry를 저장하는 하드웨어 캐시이다.
- MMU 내부(CPU)에 위치한다.
- 메모리에 접근하는 대신 TLB에 접근하여 시간을 절약할 수 있다.
- TLB는 크기가 작기 때문에, 검색 시간이 짧다.
- 보통 빠르고 비싼 SRAM으로 구성된다.
- 메인 메모리는 느리고 저렴한 DRAM으로 구성된다.
- 보통 빠르고 비싼 SRAM으로 구성된다.
TLB 구성
VPN(Virtual Page Number)
- 가상 페이지 번호
PFN(Page Frame Number)
- 물리 메모리의 페이지 프레임 번호
Other bits
- Valid bit
- 페이지가 물리 메모리에 적재되어 있으면 1, 아니면 0 값을 가진다.
- Protection bit
- 읽기(read), 쓰기(write), 실행(execute) 등의 권한을 설정하여 메모리와 시스템을 보호한다.
- Recently Used bit
- 해당 엔트리가 최근에 사용되었는지 여부를 나타낸다.
- 보통 LRU 알고리즘을 사용하기 때문에 이 비트를 사용한다.
- 비트가 0인 엔트리를 우선적으로 교체
- Dirty bit
- 페이지에 Write 작업이 시행되었으면 1, 아니면 0 값을 가진다.
- ASID(Address Space Identifier)
- 프로세스를 구분하기 위해 사용한다.
작동 방식
- MMU가 TLB에 접근하여 Virtual Address를 이용해 테이블 엔트리를 찾는다.
- Page Number와 ASID를 이용한다.
- MMU는 CPU 내부의 레지스터 값을 통해 실행 중인 PID를 알 수 있다.
- 이를 TLB의 ASID와 비교한다.
- TLB에 해당 페이지 엔트리를 찾으면(TLB Hit), 해당 프레임 번호를 반환한다.
- TLB Miss의 경우
- Page Table에 접근하여 필요한 Page Table Entry를 찾는다.
- Page Fault 발생 시 Paging 기법과 동일한 방법으로 Page를 로드한다.
- 찾은 Page Table Entry를 TLB에 적재한다.
- 이후 TLB Hit 된다.
- Page Table에 접근하여 필요한 Page Table Entry를 찾는다.
- TLB Miss의 경우
- Frame Number와 Offset을 결합하여 물리 메모리 접근에 성공한다.
TLB Hit
- TLB에서 필요한 페이지 정보를 찾은 상황을 의미한다.
TLB Miss
- TLB에 필요한 페이지 정보가 존재하지 않아 찾지 못한 상황을 의미한다.
TLB Flushing
- TLB를 강제로 초기화 하는 것을 의미한다.
- Full flushing - 전부 초기화
- Partial Flushing - 부분 초기화
- Context Switching이 발생하면 이전 프로세스의 Entry는 필요하지 않으므로 초기화한다.
- 페이지 테이블이 변경되면 페이지의 위치가 변할 수 있으므로 초기화한다.
참고
What makes a TLB faster than a Page Table if they both require two memory accesses?
728x90
728x90
'Computer Science > Operating System' 카테고리의 다른 글
메모리 계층구조 (0) | 2023.04.05 |
---|---|
Segmentation(세그멘테이션) (0) | 2023.04.03 |
가상 메모리(Virtual Memory), 페이징(Paging) (1) | 2023.04.02 |
내부 단편화, 외부 단편화 (0) | 2023.04.02 |
Thread Pool(스레드 풀) / Monitor(모니터) / Fork-Join(포크-조인) (1) | 2023.03.08 |