본문 바로가기
Computer Architecture/Virtual Address & Cache

페이지 테이블과 주소 변환(Address Translation)

by FastBench 2024. 10. 25.
반응형

- 가상 메모리 시리즈 모아 보기-

https://microelectronics.tistory.com/99

 

페이지 테이블 (Page Table)

페이지 테이블이란?

페이지 테이블은 가상 주소(virtual address, VA)를 물리 주소(physical address, PA)로 매핑하는 데 사용되는 데이터 구조이다. 가상 메모리 시스템에서 프로그램이 사용하는 가상 주소를 물리 메모리로 변환하여 실제 데이터를 접근할 수 있도록 돕는다. 페이지 테이블은 가상 주소와 물리 주소 간의 매핑을 기록한 항목으로 구성되며, 이를 페이지 테이블 엔트리(Page Table Entry, PTE)라고 부른다.

왜 페이지라고 불리는가?

가상 주소 공간이 크기 때문에, 각 가상 주소마다 하나의 엔트리를 할당하면 페이지 테이블의 크기가 매우 커질 수 있다.

 

페이지 테이블의 크기를 줄이기 위해 페이지(page)라는 더 큰 단위로 메모리를 관리한다. 즉, 개별 주소를 매핑하는 대신, 여러 주소를 묶어 하나의 페이지로 관리하는 방식이다. 일반적으로 4KB 크기의 페이지를 사용하며, 이 경우 하나의 페이지에 1024개의 워드가 포함된다. 이를 통해 페이지 테이블 엔트리의 수를 크게 줄일 수 있다.

  • 4KB 페이지
    • 하나의 페이지는 1024개의 word 에 해당하는 주소를 포함한다.
    • 따라서 32비트 주소 공간에서는 10억 개의 워드(2^30 이 대략 10억에 해당)를 1024개씩 묶어 약 100만 개 (10억 / 1024 는 대략 100만)의 페이지 테이블 엔트리만 필요하다. 
  • 페이지 크기로 인한 trade off
    • 페이지 크기를 늘리면 페이지 테이블의 크기를 줄일 수 있지만, 데이터를 이동할 때는 더 큰 단위(예: 4KB 또는 2MB)의 페이지를 한 번에 이동해야 하므로 유연성이 떨어진다. 즉, 페이지 크기가 커질수록 메모리 관리는 더 단순해지지만, 세밀한 제어는 어려워진다.

주소 변환 방식

이제 페이지 단위로 가상 주소와 물리 주소를 매핑하므로, 주소 변환은 페이지 내부의 오프셋(offset)을 사용해 처리한다.

예를 들어, 가상 주소 4는 페이지 0에 속하며, 페이지 테이블은 가상 페이지 0을 물리 페이지 1에 매핑할 수 있다. 이때 가상 주소 4는 물리 페이지 1의 시작 주소에 4바이트를 더한 주소가 된다.

  • 가상 주소 4 → 물리 주소 4100: 가상 페이지 0이 물리 페이지 1에 매핑되었다면, 가상 주소 4는 물리 주소 496부터 시작하는 페이지에서 4바이트 떨어진 위치에 해당하므로, 물리 주소 4100이 된다.
반응형

주소 변환(Address Translation)

주소 변환은 가상 주소(virtual address, VA)를 물리 주소(physical address, PA)로 변환하는 과정이다. 이 과정은 페이지 테이블을 통해 이루어지며, 가상 주소를 물리 주소로 매핑하여 데이터를 정확히 접근하게 한다.

 

예시: 32비트 시스템과 256MB RAM

  1. 32비트 가상 주소: 32비트 시스템에서는 32비트 가상 주소를 제공하므로, 각 프로그램은 최대 4GB의 가상 메모리 주소 공간을 사용할 수 있다.
  2. 28비트 물리 주소: 이 시스템에는 256MB의 물리 메모리(RAM)만 설치되어 있으므로, 물리 주소는 28비트이다. 이는 물리 메모리에서 사용할 수 있는 총 주소 범위가 256MB임을 나타낸다.

페이지 테이블을 통한 변환

  1. 페이지와 오프셋:
    • 시스템에서 4KB 크기의 페이지를 사용한다면, 각 페이지는 4096바이트(2^12)를 저장할 수 있다.
      따라서 가상 주소의 하위 12비트는 페이지 오프셋(page offset)으로, 페이지 내부에서 데이터를 어디서 접근할지를 나타낸다.
    • 상위 20비트는 가상 페이지 번호(virtual page number, VPN)로, 해당 페이지가 어느 가상 메모리 주소 공간에 위치하는지를 나타낸다.
  2. 주소 변환 과정:
    • 가상 주소에서 상위 20비트(VPN)는 페이지 테이블을 통해 물리 주소로 변환된다. 하지만 하위 12비트인 페이지 오프셋은 변환되지 않고, 가상 주소와 물리 주소에서 동일하게 유지된다.
    • 페이지 테이블은 가상 페이지 번호를 물리 페이지 번호로 변환하고, 변환된 물리 페이지 번호와 페이지 오프셋을 결합해 최종 물리 주소가 계산된다.

예시: 32비트 시스템과 8GB RAM

만약 8GB의 RAM이 설치된 32비트 시스템이라면, 물리 주소 공간이 더 커진다.

8GB는 33비트의 물리 주소 공간을 필요로 하지만, 가상 주소는 여전히 32비트이므로 물리 주소가 가상 주소보다 클 수 있다. 이 경우, 페이지 테이블은 32비트 가상 주소의 상위 20비트를 33비트 물리 주소의 상위 21비트로 변환할 수 있으며, 페이지 오프셋은 변하지 않는다.

상위 20비트의 VPN은 1이 늘어날 수록 표현할 수 있는 범위가 4096만큼 늘어난다. 따라서 8GB (2^33 사이즈)는 문제가 되지 않는다.

주소 변환 예시

0x00003204 의 VPN 은 0x3이고 Offset 은 0x204 이다.  페이지 테이블에 따르면, 가상주소 0x3 에 대한 PPN은 0x0006 이다. 따라서 물리 주소는 0x0006204 가 된다.

 

만약 VPN 이 0이었다면?

만약 페이지 테이블에서 가상 페이지 번호가 디스크에 저장된 것으로 표시되어 있으면, 데이터를 물리 메모리로 로드해야 한다. 이 경우, 디스크에서 데이터를 가져와 물리 메모리에 적재하고, 페이지 테이블을 업데이트한다. 이를 페이지 폴트라고 하고 다음 게시글에서 자세히 다룬다.

Page Table Entry 의 구조 예시

 

각 가상 페이지에 대해 하나의 페이지 테이블 엔트리가 존재하며, 엔트리에는 유효 비트(R)더티 비트(D)가 포함된다.

  • 유효 비트(R): 페이지가 주 메모리에 있는지 여부를 나타낸다.
  • 더티 비트(D): 페이지가 수정되었는지 여부를 나타내며, 수정된 페이지는 교체 시 디스크에 기록해야 한다.

페이지 테이블의 저장

페이지 테이블 또한 물리적으로 어딘가에 저장되어야 하는 데이터 구조인데, 특수한 메모리 대신 메인 메모리를 사용하여 페이지 맵을 저장할 수 있다. 페이지 맵 포인터 레지스터를 통해 페이지 맵의 시작 주소를 가리키고, 가상 페이지 번호를 인덱스로 사용하여 해당 엔트리에 접근할 수 있다.

 

추후 별도의 게시글을 통해 MMU(Memory Management Unit)에 대해 다룰 예정이니, 그때 자세히 살펴보도록 하자.

결론

페이지 테이블은 가상 주소를 물리 주소로 매핑하여 가상 메모리 시스템에서 프로그램이 실제 데이터를 접근할 수 있도록 돕는 데이터 구조이다

주소 변환은 가상 주소의 일부를 페이지 테이블을 통해 물리 주소로 변환하는 과정이다. 이 과정에서 페이지 오프셋은 그대로 유지되며, 가상 페이지 번호만 물리 페이지 번호로 변환된다. 페이지 크기가 커질수록 오프셋 비트도 늘어나고, 페이지 테이블의 엔트리도 줄어든다.

 

페이징은 가상 메모리물리적 메모리를 분리하여, 프로세스가 필요한 데이터만 메모리에 올려놓고 나머지는 디스크에 보관하는 방식으로 동작한다. 즉, 프로그램이 실제 물리 메모리 크기보다 더 많은 메모리를 필요로 하더라도, 필요한 부분만 메모리에 로드하여 효율성을 높인다.

 

페이징 시스템은 프로세스가 실제로 사용하는 메모리 양에 맞게 메모리 공간을 나누고, 필요한 페이지만 메모리에 로드하여 프로그램이 원활하게 실행되도록 한다.

 

 

Reference

반응형

댓글