이전 포스팅에서 가상 메모리 및 메모리 관리 유닛(MMU) 에 대해 알아봤었습니다. 실제 ARM 아키텍처에서는 MMU 를 어떻게 지원하고 동작할까요? 이번 글에서는 대표적인 고성능 ARM 프로세서인 ARM Cortex-A72를 통해 자세히 알아보겠습니다.
ARM Cortex-A72의 MMU는 CPU가 가상 주소(VA)를 물리 주소(PA)로 변환하고 메모리 접근을 제어하는 핵심 구성 요소입니다. 앞으로 Cortex-A72의 MMU가 어떻게 작동하는지, 관련 레지스터와 동작 방식을 자세히 살펴보겠습니다.
1. MMU란?
MMU는 주소 변환과 메모리 접근 제어를 담당합니다. 이는 현대 CPU에서 효율적인 메모리 사용과 시스템 보안을 보장하는 데 필수적입니다. ARM Cortex-A72는 ARMv8-A 아키텍처를 기반으로 AArch64(64비트)와 AArch32(32비트) 실행 상태에서 MMU를 지원합니다.
2. MMU 관련 레지스터
MMU의 동작은 다양한 레지스터로 제어되며, 대표적인 레지스터는 다음과 같습니다.
1) AArch64 실행 상태
• TTBR0_EL1, TTBR1_EL1
페이지 테이블 시작 주소를 설정하는 레지스터입니다.
TTBR0_EL1: 사용자 공간(하위 주소 영역)에 사용.
TTBR1_EL1: 커널 공간(상위 주소 영역)에 사용.
• TCR_EL1
주소 변환 동작을 제어하는 레지스터로, 페이지 크기(4KB, 64KB 등), 물리 주소 크기, 캐싱 정책 등을 설정합니다.
• MAIR_EL1
메모리 속성(캐싱, 버퍼링 등)을 정의합니다. 각 속성은 인덱스를 통해 참조됩니다.
• SCTLR_EL1
MMU 활성화 및 캐시 제어를 포함한 시스템 동작을 제어합니다. MMU를 활성화하려면 M 비트를 설정해야 합니다.
2) AArch32 실행 상태
• TTBR0, TTBR1
페이지 테이블의 시작 주소를 설정합니다.
• DACR (Domain Access Control Register)
메모리 도메인별 접근 권한을 정의합니다.
• SCTLR
MMU와 관련된 시스템 동작을 제어하며, M 비트를 설정하여 MMU를 활성화합니다.
3. MMU의 동작 방식
1) 주소 변환 (VA → PA)
MMU는 가상 주소를 물리 주소로 변환합니다. 변환 과정은 다음 단계로 이루어집니다.
1. 페이지 테이블 탐색:
TTBR0_EL1 또는 TTBR1_EL1에 설정된 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환합니다.
2. TLB(Translation Lookaside Buffer):
변환 결과를 TLB라는 캐시에 저장하여 변환 속도를 높입니다. Cortex-A72는 L1 TLB와 L2 TLB를 통해 빠른 주소 변환을 지원합니다.
2) 메모리 속성 적용
변환된 물리 주소는 MAIR_EL1에 정의된 속성을 따릅니다.
• 캐싱 가능 여부
• 쓰기 버퍼링 허용 여부
• 접근 권한
3) 접근 제어
MMU는 접근 권한을 확인하여 권한 위반 시 예외(Exception)를 발생시킵니다.
4. MMU 활성화 과정
MMU를 활성화하려면 다음 단계를 따라야 합니다.
1. 페이지 테이블 구성:
TTBR0_EL1과 TTBR1_EL1에 페이지 테이블 시작 주소를 설정합니다.
2. TCR_EL1 및 MAIR_EL1 설정:
페이지 크기, 주소 크기, 캐싱 정책 등을 설정하고, 메모리 속성을 정의합니다.
3. SCTLR_EL1에서 MMU 활성화:
SCTLR_EL1.M 비트를 1로 설정하여 MMU를 활성화합니다.
5. MMU 예외 처리
MMU는 동작 중 다음과 같은 상황에서 예외를 발생시킬 수 있습니다.
• TLB 미스: 변환 캐시에 없는 경우.
• 페이지 테이블 미스: 잘못된 페이지 테이블 항목 참조 시.
• 접근 권한 위반: 허가되지 않은 메모리 영역에 접근하려고 시도한 경우.
6. Cortex-A72 MMU의 특징 요약
• ARMv8-A 아키텍처 지원
• AArch64와 AArch32 실행 상태를 모두 지원.
• 효율적인 캐시 구조
• L1 및 L2 TLB를 통한 빠른 주소 변환.
• 유연한 메모리 속성 제어
• MAIR_EL1을 사용해 캐싱 및 버퍼링 정책 설정.
Cortex-A72의 MMU는 고성능, 저전력 설계를 바탕으로 강력한 메모리 제어 기능을 제공합니다. 더 자세한 사항은 Cortex-A72의 Reference Manual를 통해 확인할 수 있습니다. MMU의 정확한 이해와 설정은 시스템의 성능과 안정성을 높이는 핵심입니다.
'임베디드' 카테고리의 다른 글
SPI (Serial Peripheral Interface) 통신의 이해 (0) | 2025.03.11 |
---|---|
Bare-metal 시스템에서 부트로더의 동작 방식 (2) | 2024.12.24 |
MMU와 페이지 테이블의 이해: 가상 메모리 관리의 핵심 (7) | 2024.12.21 |
SoC와 MCU의 차이점: 반도체 칩 선정 가이드 (5) | 2024.12.21 |
무엇이 다를까 - CPU / MCU / MPU / 마이크로컨트롤러 (6) | 2024.12.19 |