PSTATE
PSTATE
PSTATE는 ARM 아키텍처에서 프로세서의 현재 상태(Processor State)를 제어하는 특수 목적 레지스터로, 주로 AArch64(64비트 실행 상태) 아키텍처에서 사용된다. 이 레지스터는 프로세서의 동작 모드, 인터럽트 허용 상태, 예외 레벨(EL), 정밀도 제어 등 다양한 실행 환경을 동적으로 제어하는 데 핵심적인 역할을 한다. 운영체제 커널, 예외 처리 루틴, 실시간 시스템 등에서 프로세서의 상태를 효율적으로 관리하기 위해 PSTATE를 조작한다.
개요
PSTATE는 물리적인 레지스터가 아니라, ARM 아키텍처에서 논리적인 상태 집합을 나타내는 개념이다. 즉, 실제 하드웨어 레지스터로 존재하지 않지만, 프로세서의 현재 상태를 구성하는 여러 필드를 하나의 논리적 단위로 묶어 표현한 것이다. 이러한 설계는 레지스터 파일의 크기를 줄이고, 예외 처리 시 상태 저장/복원을 효율적으로 수행할 수 있도록 한다.
PSTATE는 주로 예외 레벨(Exception Level, EL) 전환 시, 인터럽트 처리 시, 또는 시스템 호출 수행 시에 변경되며, 개발자나 운영체제는 [MSR](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/MSR)(Move to System Register) 또는 [MRS](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/MRS)(Move from System Register) 명령어를 통해 일부 필드를 직접 제어할 수 있다.
주요 필드 구성
PSTATE는 여러 개의 비트 필드로 구성되며, 각 필드는 프로세서의 특정 동작을 제어한다. 주요 필드는 다음과 같다:
| 필드 이름 | 비트 위치 | 설명 |
|---|---|---|
| NZCV | 28:31 | 조건부 연산을 위한 플래그 (Negative, Zero, Carry, oVerflow) |
| DAIF | 6:9 | 인터럽트 마스크 비트 (Debug, SError, IRQ, FIQ) |
| CurrentEL | 2:3 | 현재 예외 레벨 (EL0 ~ EL3) |
| SPSel | 0 | 스택 포인터 선택 (0: SP_EL0, 1: SP_ELx) |
| M | 0 | 실행 모드 (AArch32에서 사용됨, AArch64에서는 CurrentEL 사용) |
| SS | 21 | 샘플링된 단일 스텝 (Single-Step) 활성화 |
| IL | 20 | 잘못된 명령 길이 감지 |
| PAN | 22 | Privileged Access Never 비트 |
| UAO | 23 | User Access Override |
주요 필드 설명
1. NZCV 플래그
- N(Negative): 연산 결과가 음수일 때 설정됨
- Z(Zero): 연산 결과가 0일 때 설정됨
- C(Carry): 산술 연산에서 캐리 또는 빌림 발생 시 설정
- V(oVerflow): 부호 있는 산술 연산에서 오버플로 발생 시 설정
이 플래그들은 조건부 분기([B.EQ](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/B.EQ),[B.LT](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/B.LT)등) 명령어의 실행 여부를 결정한다.
2. DAIF 인터럽트 마스크
- D(Debug): 디버그 모니터 인터럽트 마스킹
- A(SError): 비동기 시스템 에러(ASE) 마스킹
- I(IRQ): 일반 인터럽트 요청 마스킹
- F(FIQ): 빠른 인터럽트 요청 마스킹
예:MSR [DAIFSet](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/DAIFSet), #0xF는 모든 인터럽트를 비활성화한다.
3. SPSel (Stack Pointer Select)
- 현재 예외 레벨에서 사용할 스택 포인터를 선택한다.
0: 사용자 스택 포인터(SP_EL0) 사용1: 현재 예외 레벨 전용 스택 포인터(SP_EL1 등) 사용
4. PAN (Privileged Access Never)
- 특권 모드(커널)가 사용자 메모리에 접근하는 것을 차단할 수 있음.
- 보안 및 권한 분리를 강화하는 데 사용.
5. CurrentEL
- 현재 실행 중인 예외 레벨을 나타냄 (EL0: 사용자, EL1: OS 커널, EL2: 하이퍼바이저, EL3: 보안 모니터).
- 이 값은 직접 변경되지 않으며, 예외 발생 또는 복귀 시 자동 갱신됨.
PSTATE와 예외 처리
ARMv8 아키텍처에서 예외가 발생하면, 하드웨어는 현재 PSTATE를 Synchronous Exception Link Register(ELR)과 Saved Program Status Register(SPSR)에 저장한다. 이후 예외 처리 루틴은 SPSR을 참조하여 원래의 실행 상태를 복원할 수 있다.
예외 복귀 시([ERET](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/ERET) 명령어 사용), 저장된 SPSR이 PSTATE로 로드되어 프로세서가 이전 상태로 복귀한다. 이는 시스템 안정성과 상태 일관성을 보장하는 핵심 메커니즘 중 하나이다.
// 예외 처리 예시 (가상 코드)
Exception_Handler:
stp x29, x30, [sp, #-16]! // 프레임 저장
mrs x0, SPSR_EL1 // 이전 PSTATE 저장
// 예외 처리 로직 수행
eret // 상태 복원 및 복귀
관련 시스템 레지스터
PSTATE는 직접 접근할 수 없지만, 일부 필드는 다음 시스템 레지스터를 통해间接 제어 가능:
- DAIF:
DAIFSet,[DAIFClr](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/DAIFClr)명령어 또는[CPSIE](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/CPSIE),[CPSID](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%20%EB%AA%85%EB%A0%B9%EC%96%B4/CPSID)와 유사한 기능 제공 - NZCV:
MRS/MSR로NZCV시스템 레지스터를 통해 접근 - CurrentEL:
MRS x0, CurrentEL로 읽기 가능
참고 자료
- ARM Architecture Reference Manual (ARMv8, DDI 0487)
- ARM Cortex-A Series Programmer’s Guide
- ARM Developer Portal - PSTATE
관련 문서
PSTATE는 ARM 아키텍처의 효율성과 보안성을 높이는 핵심 요소로, 시스템 소프트웨어 개발자와 운영체제 설계자에게 깊은 이해가 요구된다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.