- 가상 메모리 시리즈 모아 보기-
https://microelectronics.tistory.com/99
TLB를 이용한 가상 메모리 성능 최적화
1. 가상 메모리 비용: 성능 저하 문제
가상 메모리 시스템에서는 각 메모리 접근마다 페이지 테이블을 조회하고 주소 변환 작업을 수행해야 한다.
페이지 테이블이 컴퓨터 구조 내부에 어디에 적재되냐를 따지기 이전에,
직관적으로 생각해보면 이러한 과정은 기본적으로 두 번의 메모리 접근이 필요하므로, 단순히 가상 메모리를 사용할 경우 메모리 접근 횟수가 두 배로 증가하며 이는 성능 저하의 원인이 된다.
2. 가상 메모리를 빠르게: TLB의 필요성
TLB(Translation Lookaside Buffer)는 이러한 성능 저하를 막기 위해 사용되는 페이지 테이블 캐시이다. 가상 주소에서 물리 주소로 빠르게 변환할 수 있도록 하는 작은 고속 메모리로, 메모리 접근 시마다 TLB에서 페이지 테이블 항목을 빠르게 조회한다. TLB가 가상 메모리 접근 시간을 줄여주는 방법은 다음과 같다:
- 빠른 접근 속도: TLB는 일반적으로 코어 내부에 존재해, 한 사이클 이내에 조회할 수 있도록 설계되었으며, 따라서 TLB가 변환 정보를 가지고 있는 경우 매우 빠른 메모리 접근이 가능하다.
- 별도의 데이터와 명령어 TLB: 데이터 접근과 명령어 접근을 동시에 빠르게 수행할 수 있도록, 현대의 프로세서는 데이터 TLB와 명령어 TLB를 분리하여 운영한다.
3. TLB 미스와 성능 문제
TLB가 페이지 테이블 항목을 가지고 있지 않을 때(TLB 미스), 프로세서는 전체 페이지 테이블을 참조해야 하며, 이 과정에서 추가적인 메모리 접근 시간이 소요된다. 이는 수십에서 수천 사이클이 걸릴 수 있으며, 반복될 경우 프로그램 성능에 큰 영향을 미친다. 특히 페이지가 디스크에 있을 경우 디스크 접근이 추가되며, 이는 수백만 사이클에 달하는 시간이 소요되어 매우 큰 성능 저하가 발생한다.
4. TLB 성능 최적화 방법
가상 메모리 성능을 극대화하기 위해 TLB를 더욱 효과적으로 사용할 수 있는 방법들은 다음과 같다:
- 페이지 크기 증가: TLB에 더 큰 페이지를 저장할 경우, 같은 TLB 항목으로 더 많은 메모리 공간을 커버할 수 있다. 예를 들어, 4KB 페이지 대신 2MB 페이지를 사용하면 TLB가 커버하는 데이터 양이 크게 증가하여 TLB 미스 횟수가 감소한다.
- 2단계 TLB 사용: 현대의 프로세서들은 1차 TLB와 2차 TLB로 구성된 계층형 TLB를 사용한다. 1차 TLB에서 원하는 항목을 찾지 못할 경우 2차 TLB를 참조하는 방식으로, 메모리에 접근하지 않고도 빠르게 주소 변환이 가능하다.
- 하드웨어 기반 페이지 테이블 관리: 일부 프로세서(예: Intel)는 하드웨어에서 직접 페이지 테이블을 조회하여 TLB에 로드하는 기능을 제공한다. 이를 통해 TLB 미스 발생 시 운영체제를 거치지 않고 직접 페이지 테이블을 관리할 수 있어 성능 저하를 줄일 수 있다.
가상 주소 변환 과정과 TLB 미스
1. 기본 변환 예제 (빈 TLB)
먼저 TLB가 비어 있는 상황에서 가상 주소를 변환하는 과정을 살펴보자. 가상 주소는 페이지 오프셋과 가상 페이지 번호로 구성된다. 페이지 오프셋은 그대로 물리 주소의 페이지 오프셋으로 전달되지만, 가상 페이지 번호는 TLB에서 물리 페이지 번호로 변환되어야 한다.
- 첫 번째 접근: 가상 주소가 TLB로 들어오지만, TLB에 저장된 항목이 없으므로 미스가 발생한다.
- 페이지 테이블 접근: TLB 미스가 발생했으므로, 메인 메모리에 있는 페이지 테이블로 가서 가상 페이지 번호에 해당하는 항목을 찾는다.
- TLB 업데이트: 가상 페이지 번호와 물리 페이지 번호를 TLB에 캐시하여, 이후 동일한 가상 페이지 접근 시 빠른 변환이 가능하도록 한다.
2. TLB 히트 예제
이번에는 TLB에 필요한 페이지 테이블 항목이 이미 저장되어 있는 경우이다.
- 가상 주소 접근: TLB에 이미 해당 가상 페이지 번호의 항목이 있기 때문에, TLB에서 바로 물리 페이지 번호를 얻을 수 있다.
- 변환 완료: 페이지 테이블을 거치지 않고 바로 물리 주소로 변환하여 빠르게 메모리에 접근할 수 있다. 이 경우 성능이 가장 좋다.
3. TLB 미스와 페이지 테이블 접근 예제
다음은 TLB 미스가 발생하고 페이지 테이블에서 항목을 가져와야 하는 상황이다.
- 가상 주소 접근: 가상 주소가 TLB로 들어왔지만, 해당 가상 페이지 번호에 대한 항목이 없어서 미스가 발생한다.
- 페이지 테이블 조회 및 TLB 업데이트: 메인 메모리의 페이지 테이블에서 해당 가상 페이지 번호를 찾아 물리 페이지 번호를 얻고, 이를 TLB에 저장해 후속 접근에 대비한다.
4. TLB 미스 + 항목 교체 (Eviction)
TLB가 가득 차 있어 새로운 항목을 추가할 수 없는 상황에서, 오래된 항목을 제거하고 새로 추가하는 과정이다.
- 가상 주소 접근: 새로운 가상 페이지 번호에 대해 TLB에 항목이 없으므로 미스가 발생한다.
- 항목 교체: TLB에 자리가 없으므로, 최근에 사용하지 않은 항목(예: LRU 방식)을 제거한다.
- 페이지 테이블 조회 및 TLB 업데이트: 페이지 테이블에서 물리 페이지 번호를 가져와 TLB에 새 항목으로 추가한다.
5. TLB 미스 + 페이지 폴트
마지막으로, TLB 미스가 발생하고 필요한 페이지가 메모리에 없는 경우(즉, 디스크에 있는 경우)다.
- 가상 주소 접근: TLB 미스가 발생하고, 페이지 테이블에서 해당 가상 페이지 번호를 조회해야 한다.
- 페이지 테이블 조회: 페이지 테이블에서 가상 페이지 번호에 해당하는 물리 페이지 번호를 찾으려 하지만, 이 페이지가 메모리에 없고 디스크에 있다는 정보를 확인한다. (보통 PTE 는 Valid Bit, Present Bit 가 존재해서.. TLB 에 로드 하기전에 해당 페이지가 메모리에 존재하는지 여부를 알 수 있다.)
- 페이지 폴트 처리: 페이지 폴트가 발생해 운영체제가 디스크에서 페이지를 메모리로 로드하는 작업을 수행하며, 이 과정은 매우 오래 걸린다.
이와 같은 일련의 과정에서 TLB는 성능을 높이는 데 중요한 역할을 하며, TLB 미스가 발생할 경우에는 페이지 테이블 접근이나 디스크 접근을 통해 추가적인 시간 비용이 발생하게 된다.
결론
가상 메모리는 메모리 관리의 유연성을 제공하지만, 추가적인 메모리 접근 비용을 발생시킬 수 있다.
TLB는 이러한 성능 저하 문제를 해결하는 핵심 장치로서, 페이지 크기 조절, 다단계 TLB, 하드웨어 페이지 테이블 관리 등의 기법을 통해 가상 메모리 시스템의 성능을 최대화할 수 있다.
Reference
'Computer Architecture > Virtual Address & Cache' 카테고리의 다른 글
MMU(Memory Management Unit)와 캐시 메모리 (0) | 2024.10.30 |
---|---|
Multi-level Page Tables(다단계 페이지 테이블) (0) | 2024.10.29 |
Virtual Memory(가상 메모리)의 컨텍스트와 메모리 관리 (0) | 2024.10.27 |
페이지 폴트(Page Fault) (0) | 2024.10.26 |
페이지 테이블과 주소 변환(Address Translation) (0) | 2024.10.25 |
댓글