TLB(Translation Lookaside Buffers)
이전에 살펴봤던 페이징에서 가상 주소와 실제 물리 메모리의 주소를 매핑해 주는 페이지 테이블이라는 자료구조가 있었다.
운영체제 - 페이징과 세그먼테이션
세그멘테이션(Segmentation)세그멘테이션은 메모리 관리 기법 중 하나로 메모리의 효율적인 사용과 프로그램의 보다 유연한 배치를 가능하게 해 준다. 세그멘테이션은 주소 공간을 논리적으로 분
hotechstory.tistory.com
페이지 테이블은 물리 메모리에 저장되는데 그로 인해서 프로세스가 가상 주소를 통해 메모리에 접근하게 되면 페이지 테이블을 참조하여 실제 물리 주소를 얻게 되는 주소 변환(Address Translation) 과정이 이뤄지게 된다.
문제는 이러한 주소 변환 과정을 수행하려면 추가적인 메모리 접근이 발생한다는 것이다.
프로세스가 메모리에 접근할 때마다 페이지 테이블을 읽어야 하므로 매번 두 번의 메모리 연산(페이지 테이블 읽기 + 실제 데이터 읽기 및 쓰기)이 필요하게 되고 그로 인한 심각한 성능 저하를 초래하게 된다.
이러한 문제를 해결하기 위해 하드웨어로 부터 도움을 받게 되는데 그것이 바로 TLB이다.
TLB는 특별한 하드웨어 장치로 CPU의 메모리 관리 장치(MMU) 내에 위치한 작고 빠른 하드웨어 캐시이다.
캐시에 대한 내용은 따로 정리한 글이 있으니 참고해 보자.
운영체제 - 메모리
메모리(Memory)메모리는 일시적 또는 장기간 데이터를 저장하는 디지털 시스템이다.CPU는 그저 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐이기 때문에 데이터와 명령어를 저장하기
hotechstory.tistory.com
TLB의 목적은 최근에 사용된 가상 주소와 물리 주소 간의 매핑 정보를 저장하여 주소 변환 속도를 향상한다.
프로세스가 가상 주소를 사용하여 메모리에 접근하면 하드웨어는 먼저 TLB에서 해당 가상 주소의 변환 정보를 찾아본다.
만약 TLB에 정보가 있다면(TLB Hit) 곧바로 물리 주소를 얻어 메모리에 접근할 수 있다.
이 경우에 기존 페이징 기법의 단점이었던 페이지 테이블을 읽는 추가 작업 없이 주소 변환을 완료할 수 있으므로 매우 빠르다.
반면에 원하는 정보가 TLB에 없는 경우(TLB Miss)에는 기존대로 페이지 테이블을 참조하여 주소 변환을 진행해야 한다.
이 과정에서 얻은 변환 정보는 향후 재사용을 위해 TLB에 저장된다.
적절한 크기의 TLB를 사용하면 대부분의 메모리 접근이 TLB Hit로 처리되므로 전체적인 주소 변환 속도가 크게 향상된다.
이를 통해 TLB를 사용함으로써 페이징의 성능 문제를 완화하고 가상 메모리를 실질적으로 사용 가능하게 만들 수 있다.
- TBL의 구성
- 가상 페이지 번호(VPN): 가상 주소에서 추출된 페이지 번호
- 물리 페이지 프레임 번호(PPFN): 물리 메모리에서 해당 페이지를 저장하는 페이지 프레임 번호
- 액세스 권한: 해당 페이지에 대한 액세스 권한(읽기, 쓰기, 실행)
- 유효 비트(Valid Bit): 해당 엔트리가 유효한지 여부
- ASID(Address Space Identifier): 프로세스 간 TLB 엔트리 충돌을 방지
TLB의 동작 과정
위에서 살펴봤던 것처럼 TLB도 하나의 캐시이기 때문에 이를 알고 있다면 TLB의 동작 과정을 이해하는 것이 조금 더 수월할 것이다.
아래의 그림을 보면서 동작 과정을 살펴보자.

TLB 검색 과정 가상 주소가 제공되면 해당 주소의 가상 페이지 번호를 추출하고 TLB에서 이 VPN(Virtual Page Number)에 해당하는 엔트리를 병렬적으로 검색한다.

일치하는 엔트리가 있는 경우를 TLB Hit라고 하며 해당 엔트리에 포함된 물리 페이지 번호로 물리 메모리에 액세스 한다.

일치하는 엔트리가 없는 경우 TLB Miss가 발생하며 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환한다.

변환된 주소는 TLB에 추가되어 다음 접근 시 빠르게 찾을 수 있도록 한다.
TLB Miss 처리 방법
앞서 살펴봤던 TBL 동작 과정에서 원하는 주소 변환 정보를 찾지 못할 때 발생하는 TLB Miss를 알아보았다.
이러한 TLB Miss를 처리하는 방법은 두 가지가 있는데 어떤 방식인지 살펴보자.
- 하드웨어 관리 방식
하드웨어 관리 방식은 주로 복잡한 명령어 집합인 CISC(Complex Instruction set Computers) 구조에서 사용된다.
하드웨어가 TLB 미스를 처리하려면 페이지 테이블에 대한 정보를 갖고 있어야 한다. TLB 미스가 발생하면 하드웨어가 페이지 테이블에서 필요한 정보를 추출하고 TLB를 갱신한 후 명령어를 재실행한다.
- 운영 체제 관리 방식
운영 체제 관리 방식은 최근에 등장한 RISC(Reduced Instruction set Computing) 구조에서 주로 사용된다.
TLB 미스가 발생하면 하드웨어가 예외 시그널을 발생시키고 이를 받은 운영 체제가 커널 모드로 전환하여 트랩 핸들러(내부 인터럽트)를 실행한다.
트랩 핸들러는 페이지 테이블을 검색하여 변환 정보를 찾고 TLB를 갱신한 후에 명령어를 재실행한다.
TLB에서 발생하는 컨택스트 스위칭 문제
다른 프로세스는 다른 가상 주소 공간을 사용하기 때문에 컨택스트 스위칭이 발생하면 현재 프로세스의 TLB 엔트리가 유효하지 않게 된다.

그림과 같이 프로세스 A, B의 VPN은 같지만 PFN은 서로 다른 것을 알 수 있다. 문제는 이렇게 같은 VPN의 정보가 TLB에 저장되면 어떤 프로세스의 VPN인지 알 수 없는 상황이 발생하게 된다.
이러한 문제를 해결하기 위해 2가지 방법을 사용할 수 있다.
- TBL Flush
프로세스 간 컨택스트 스위칭이 발생할 때마다 TLB를 비우는 방법으로 많은 TBL Miss를 발생시킬 수 있는 문제가 있다.
- ASID(Address Space Identifier)

하드웨어의 도움을 받아 TLB 엔트리에 ASID를 추가하여 프로세스별 TLB 엔트리를 구분하여 해결할 수 있다.
위의 그림과 같이 TLB에 ASID라는 정보를 추가하여 어떤 프로세스의 VPN 정보인지 표시하여 컨택스트 스위칭 시 발생하는 문제를 해결할 수 있게 된다.
TLB의 페이지 교체 정책
TLB Miss가 발생하면 TLB에 새 엔트리를 추가해야 한다는 것을 앞에서 살펴보았다. 하지만 TLB는 굉장히 작은 크기의 캐시이기 때문에 어떤 엔트리를 교체해야 할지 결정하는 정책이 필요하다.
교체 정책은 어떤 페이지를 교체할 것인지 정하는 페이지 교체 알고리즘으로 TLB에서는 제한된 공간과 성능 요구 사항을 충족하기 위해 매우 중요하다. 각 알고리즘은 특정 시나리오에서의 성능 최적화를 목표로 한다.
아래의 페이지 교체 알고리즘을 참고하면 좋을 것 같다.
운영체제 - 페이지 교체 알고리즘
페이지 교체 알고리즘이전 포스팅에서 요구 페이징에 대해서 알아보았다. 요구 페이징에서 Backing Store에 있는 페이지를 물리 메모리로 불러오는 작업을 진행하게 되는데 여기서 물리 메모리에
hotechstory.tistory.com
참고 자료
페이징: 더 빠른 변환 (TLB) — 운영체제 2024
페이징: 더 빠른 변환 (TLB) 페이징은 가상 메모리 관리 기법 중 하나로, 프로세스의 주소 공간을 일정한 크기의 페이지 단위로 나누어 관리합니다. 이 기법은 메모리 활용도를 높이고 프로세스
os2024.halla.ai
[OS] Paging 메모리 관리를 빠르게 하기 위한 TLB - OS 공부 13
안녕하세요 Pingu입니다! 지난 글에서는 메모리를 고정 크기로 할당하여 사용하는 paging에 대해 알아봤습니다. 하지만 지난 글에서 알아본 paging 기법에는 두 가지 큰 문제점이 있었는데요, 잦은
icksw.tistory.com
'CS > OS' 카테고리의 다른 글
운영체제 - 교착 상태(Deadlock) (0) | 2024.07.08 |
---|---|
운영체제 - 동기화 (0) | 2024.07.08 |
운영체제 - 페이지 교체 알고리즘 (0) | 2024.07.03 |
운영체제 - 요구 페이징 (0) | 2024.07.02 |
운영체제 - 페이징과 세그먼테이션 (0) | 2024.07.02 |
TLB(Translation Lookaside Buffers)
이전에 살펴봤던 페이징에서 가상 주소와 실제 물리 메모리의 주소를 매핑해 주는 페이지 테이블이라는 자료구조가 있었다.
운영체제 - 페이징과 세그먼테이션
세그멘테이션(Segmentation)세그멘테이션은 메모리 관리 기법 중 하나로 메모리의 효율적인 사용과 프로그램의 보다 유연한 배치를 가능하게 해 준다. 세그멘테이션은 주소 공간을 논리적으로 분
hotechstory.tistory.com
페이지 테이블은 물리 메모리에 저장되는데 그로 인해서 프로세스가 가상 주소를 통해 메모리에 접근하게 되면 페이지 테이블을 참조하여 실제 물리 주소를 얻게 되는 주소 변환(Address Translation) 과정이 이뤄지게 된다.
문제는 이러한 주소 변환 과정을 수행하려면 추가적인 메모리 접근이 발생한다는 것이다.
프로세스가 메모리에 접근할 때마다 페이지 테이블을 읽어야 하므로 매번 두 번의 메모리 연산(페이지 테이블 읽기 + 실제 데이터 읽기 및 쓰기)이 필요하게 되고 그로 인한 심각한 성능 저하를 초래하게 된다.
이러한 문제를 해결하기 위해 하드웨어로 부터 도움을 받게 되는데 그것이 바로 TLB이다.
TLB는 특별한 하드웨어 장치로 CPU의 메모리 관리 장치(MMU) 내에 위치한 작고 빠른 하드웨어 캐시이다.
캐시에 대한 내용은 따로 정리한 글이 있으니 참고해 보자.
운영체제 - 메모리
메모리(Memory)메모리는 일시적 또는 장기간 데이터를 저장하는 디지털 시스템이다.CPU는 그저 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐이기 때문에 데이터와 명령어를 저장하기
hotechstory.tistory.com
TLB의 목적은 최근에 사용된 가상 주소와 물리 주소 간의 매핑 정보를 저장하여 주소 변환 속도를 향상한다.
프로세스가 가상 주소를 사용하여 메모리에 접근하면 하드웨어는 먼저 TLB에서 해당 가상 주소의 변환 정보를 찾아본다.
만약 TLB에 정보가 있다면(TLB Hit) 곧바로 물리 주소를 얻어 메모리에 접근할 수 있다.
이 경우에 기존 페이징 기법의 단점이었던 페이지 테이블을 읽는 추가 작업 없이 주소 변환을 완료할 수 있으므로 매우 빠르다.
반면에 원하는 정보가 TLB에 없는 경우(TLB Miss)에는 기존대로 페이지 테이블을 참조하여 주소 변환을 진행해야 한다.
이 과정에서 얻은 변환 정보는 향후 재사용을 위해 TLB에 저장된다.
적절한 크기의 TLB를 사용하면 대부분의 메모리 접근이 TLB Hit로 처리되므로 전체적인 주소 변환 속도가 크게 향상된다.
이를 통해 TLB를 사용함으로써 페이징의 성능 문제를 완화하고 가상 메모리를 실질적으로 사용 가능하게 만들 수 있다.
- TBL의 구성
- 가상 페이지 번호(VPN): 가상 주소에서 추출된 페이지 번호
- 물리 페이지 프레임 번호(PPFN): 물리 메모리에서 해당 페이지를 저장하는 페이지 프레임 번호
- 액세스 권한: 해당 페이지에 대한 액세스 권한(읽기, 쓰기, 실행)
- 유효 비트(Valid Bit): 해당 엔트리가 유효한지 여부
- ASID(Address Space Identifier): 프로세스 간 TLB 엔트리 충돌을 방지
TLB의 동작 과정
위에서 살펴봤던 것처럼 TLB도 하나의 캐시이기 때문에 이를 알고 있다면 TLB의 동작 과정을 이해하는 것이 조금 더 수월할 것이다.
아래의 그림을 보면서 동작 과정을 살펴보자.

TLB 검색 과정 가상 주소가 제공되면 해당 주소의 가상 페이지 번호를 추출하고 TLB에서 이 VPN(Virtual Page Number)에 해당하는 엔트리를 병렬적으로 검색한다.

일치하는 엔트리가 있는 경우를 TLB Hit라고 하며 해당 엔트리에 포함된 물리 페이지 번호로 물리 메모리에 액세스 한다.

일치하는 엔트리가 없는 경우 TLB Miss가 발생하며 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환한다.

변환된 주소는 TLB에 추가되어 다음 접근 시 빠르게 찾을 수 있도록 한다.
TLB Miss 처리 방법
앞서 살펴봤던 TBL 동작 과정에서 원하는 주소 변환 정보를 찾지 못할 때 발생하는 TLB Miss를 알아보았다.
이러한 TLB Miss를 처리하는 방법은 두 가지가 있는데 어떤 방식인지 살펴보자.
- 하드웨어 관리 방식
하드웨어 관리 방식은 주로 복잡한 명령어 집합인 CISC(Complex Instruction set Computers) 구조에서 사용된다.
하드웨어가 TLB 미스를 처리하려면 페이지 테이블에 대한 정보를 갖고 있어야 한다. TLB 미스가 발생하면 하드웨어가 페이지 테이블에서 필요한 정보를 추출하고 TLB를 갱신한 후 명령어를 재실행한다.
- 운영 체제 관리 방식
운영 체제 관리 방식은 최근에 등장한 RISC(Reduced Instruction set Computing) 구조에서 주로 사용된다.
TLB 미스가 발생하면 하드웨어가 예외 시그널을 발생시키고 이를 받은 운영 체제가 커널 모드로 전환하여 트랩 핸들러(내부 인터럽트)를 실행한다.
트랩 핸들러는 페이지 테이블을 검색하여 변환 정보를 찾고 TLB를 갱신한 후에 명령어를 재실행한다.
TLB에서 발생하는 컨택스트 스위칭 문제
다른 프로세스는 다른 가상 주소 공간을 사용하기 때문에 컨택스트 스위칭이 발생하면 현재 프로세스의 TLB 엔트리가 유효하지 않게 된다.

그림과 같이 프로세스 A, B의 VPN은 같지만 PFN은 서로 다른 것을 알 수 있다. 문제는 이렇게 같은 VPN의 정보가 TLB에 저장되면 어떤 프로세스의 VPN인지 알 수 없는 상황이 발생하게 된다.
이러한 문제를 해결하기 위해 2가지 방법을 사용할 수 있다.
- TBL Flush
프로세스 간 컨택스트 스위칭이 발생할 때마다 TLB를 비우는 방법으로 많은 TBL Miss를 발생시킬 수 있는 문제가 있다.
- ASID(Address Space Identifier)

하드웨어의 도움을 받아 TLB 엔트리에 ASID를 추가하여 프로세스별 TLB 엔트리를 구분하여 해결할 수 있다.
위의 그림과 같이 TLB에 ASID라는 정보를 추가하여 어떤 프로세스의 VPN 정보인지 표시하여 컨택스트 스위칭 시 발생하는 문제를 해결할 수 있게 된다.
TLB의 페이지 교체 정책
TLB Miss가 발생하면 TLB에 새 엔트리를 추가해야 한다는 것을 앞에서 살펴보았다. 하지만 TLB는 굉장히 작은 크기의 캐시이기 때문에 어떤 엔트리를 교체해야 할지 결정하는 정책이 필요하다.
교체 정책은 어떤 페이지를 교체할 것인지 정하는 페이지 교체 알고리즘으로 TLB에서는 제한된 공간과 성능 요구 사항을 충족하기 위해 매우 중요하다. 각 알고리즘은 특정 시나리오에서의 성능 최적화를 목표로 한다.
아래의 페이지 교체 알고리즘을 참고하면 좋을 것 같다.
운영체제 - 페이지 교체 알고리즘
페이지 교체 알고리즘이전 포스팅에서 요구 페이징에 대해서 알아보았다. 요구 페이징에서 Backing Store에 있는 페이지를 물리 메모리로 불러오는 작업을 진행하게 되는데 여기서 물리 메모리에
hotechstory.tistory.com
참고 자료
페이징: 더 빠른 변환 (TLB) — 운영체제 2024
페이징: 더 빠른 변환 (TLB) 페이징은 가상 메모리 관리 기법 중 하나로, 프로세스의 주소 공간을 일정한 크기의 페이지 단위로 나누어 관리합니다. 이 기법은 메모리 활용도를 높이고 프로세스
os2024.halla.ai
[OS] Paging 메모리 관리를 빠르게 하기 위한 TLB - OS 공부 13
안녕하세요 Pingu입니다! 지난 글에서는 메모리를 고정 크기로 할당하여 사용하는 paging에 대해 알아봤습니다. 하지만 지난 글에서 알아본 paging 기법에는 두 가지 큰 문제점이 있었는데요, 잦은
icksw.tistory.com
'CS > OS' 카테고리의 다른 글
운영체제 - 교착 상태(Deadlock) (0) | 2024.07.08 |
---|---|
운영체제 - 동기화 (0) | 2024.07.08 |
운영체제 - 페이지 교체 알고리즘 (0) | 2024.07.03 |
운영체제 - 요구 페이징 (0) | 2024.07.02 |
운영체제 - 페이징과 세그먼테이션 (0) | 2024.07.02 |