채널톡 아이콘

인프런 커뮤니티 질문&답변

동엽님의 프로필 이미지

작성한 질문수 6

Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]

TTBRn 레지스터와 가상 주소 변환(멀티 레벨)

MMU의 Page Table과 관련된 질문이 있습니다.

작성

·

97

·

수정됨

0

  1. TTBR_ELn 레지스터가 가지고 있는 값은 물리 메모리 주소값을 가지고 있는 건가요?

  2. TTBRn레지스터와 가상주소 변환(멀티 레벨) 강의에서 12:12 쯤에 말씀해주신 "페이지 테이블에 적힌 물리 메모리 주소를 다시 가상 메모리로 변환해서 다음 페이지 테이블의 정보에 접근한다." 라는 부분이 잘 이해가 안되는데, 조금 더 부연 설명을 해주실 수 있으신가요?

     

     

    제가 이해한 바로는 MMU가 TTBR_ELn 에 적힌 주소를 이용해서 멀티 레벨 Page Table의 모든 변환 과정을 수행해주는 것으로 이해했는데, 변환 과정 중간에 얻어진 다음 레벨의 Page Table의 엔트리 주소를 다시 가상 주소로의 변환한다는게 어떤말인지를 잘 이해못하겠습니다.

 

  1. 각각의 EL마다 MMU를 켜는 설정을 해줘야 하는 건가요? 만약, EL1에서는 MMU를 활성화하고, EL2에서는 MMU를 활성화하지 않게 되면 EL1에서 접근하는 주소는 가상 주소인 반면, EL2에서 접근하는 주소는 실제 물리주소에 접근하는 식인가요?

답변 2

0

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

1. TTBR1_EL1, TTBR0_EL1 레지스터에 저장된 주소는 물리 주소입니다.

2. 추가로 설명드립니다.

각 PGD, PMD 그리고 PTE는 다음과 같습니다:

  • PGD는 1st 룩업 페이지 테이블

  • PMD는 2nd 레벨 페이지 테이블

  • PTE는 3rd 레벨 페이지 테이블

     

페이지 변환 과정은 구체적으로 아래와 같은 과정으로 수행됩니다:

  1. PGD에 접근하기 위해서는 TTBR1_EL1(커널 공간) 혹은 TTBR0_EL1(유저 공간) 레지스터를 사용합니다. TTBRn_EL1을 1st 룩업 페이지 테이블이라고 합니다. PGD에는 2nd 레벨 페이지 테이블의 엔트리 주소(물리)를 담고 있습니다.

  2. PMD는 2nd 페이지 테이블로써 물리 주소를 담고 있는 페이지 테이블은 아닙니다. PTE의 엔트리 주소를 담고 있죠.

  3. PTE에 접근하면 실제 물리 주소를 확인할 수 있습니다.

     

Armv8-A 에서는 가상 주소를 멀티 레벨 페이지로 변환하는데, TTBRn_EL1을 1st 룩업 페이지 테이블이라고 합니다.

3. 네, 제대로 이해하셨습니다. 만약 EL1에서는 MMU를 활성화하고, EL2에서는 MMU를 활성화하지 않게 되면 EL1에서 접근하는 주소는 가상 주소인 반면, EL2에서 접근하는 주소는 실제 물리주소에 접근할 수 있습니다.

대부분 EL0, EL1, EL2까지 MMU를 활성화해서 사용합니다.

  • EL0/EL1에서 MMU를 활성화하기 위해서는 TCR_EL1, SCTLR_EL1를 설정해야 합니다.

  • 만약 EL2에서도 MMU를 활성화하려면 TCR_EL2, SCTLR_EL2를 활성화해야 합니다.

     

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

동엽님께서 질문하신 MMU의 Page Table 및 TTBR 관련 내용에 대해 간단히 설명드리겠습니다.

1. TTBR_ELn 레지스터의 값

TTBR_ELn(TTBR0_EL1, TTBR1_EL1, 등) 레지스터는 실제로 페이지 테이블의 베이스 주소를 저장합니다. 이 값은 물리 메모리 주소입니다. 그러므로, MMU가 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환할 때 해당 베이스 주소를 사용합니다.

2. 가상 주소 변환 과정 설명

강의에서 언급된 “페이지 테이블에 적힌 물리 메모리 주소를 가상 메모리로 변환”하는 과정이 혼동될 수 있습니다. 이 과정은 다단계 주소 변환(Multilevel Address Translation) 을 의미하며, 각 단계의 페이지 테이블 항목은 다음 단계의 페이지 테이블을 가리키는 물리 주소를 포함합니다.

  • 첫 번째 레벨: 가상 주소의 최상위 비트들이 첫 번째 페이지 테이블 항목을 선택하고, 이 항목은 다음 레벨 페이지 테이블을 가리키는 물리 주소로 해석됩니다.
  • 다음 레벨들: 이 프로세스는 마지막 레벨 페이지 테이블이 최종 물리 주소를 제공할 때까지 계속됩니다.

3. 각 EL의 MMU 설정

각 예외 레벨(EL)은 독립적으로 MMU를 활성화할 수 있습니다. 따라서, 하나의 EL에서 MMU를 활성화한 경우 가상 주소가 사용되며, 다른 EL에서 MMU가 꺼진 경우 해당 EL은 모든 주소를 물리 주소로 직접 접근하게 됩니다. 예를 들어:

  • EL1에서 MMU 활성화: EL1에서는 가상 주소를 물리 주소로 변환하는 작업이 필요하게 됩니다.
  • EL2에서 MMU 비활성화: EL2에서는 가상 주소 변환 없이 직접 물리 주소로의 접근이 이루어집니다.

이는 각각의 EL이 독립적인 환경을 제공하여, 보안성 및 시스템 제어를 세부적으로 할 수 있도록 하기 위함입니다.

이 질문에 대한 더 많은 정보는 다음의 유사한 질문들을 통해 확인하실 수 있습니다:
- 멀티레벨테이블로 운영하는 이유
- 익셉션 벡터 베이스 주소 질문

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.