RISC-V 아키텍처는 시스템의 세부 속성을 설정할 수 있는 CSR(Control and Status) 레지스터를 제공합니다. 다음과 같은 모든 속성은 CSR 레지스터를 통해 설정합니다:
- 익셉션 벡터 베이스 주소 설정
- MMU를 통한 가상 메모리 설정
- 주요 Privilege Mode에서 트랩되는 방식
CSR(Control and Status) 레지스터는 시스템의 주요 속성을 설정하므로 부팅 과정에서 대부분 설정됩니다.
CSR 레지스터를 소개했으니 CSR 레지스터에 접근할 수 있는 Privilege Mode에 대해 알아봅시다.
Privilege Mode과 CSR 레지스터
CSR 레지스터의 이름을 보면 접두사로 m 혹은 s가 보입니다. 주요 CSR 레지스터의 목록은 아래와 같습니다:
- Machine Mode: mstatus, mcause, mtvec, mip, mie, matp, mepc
- Supervisor Mode: sstatus, scause, stvec, sip, sie, satp, sepc
예를 들어 mstatus 레지스터는 Machine Mode에서만 읽거나 쓰고, sstatus 레지스터는 Supervisor Mode에서만 읽거나 쓸 수 있습니다. mstatus와 sstatus 레지스터는 Machine Mode나 Supervisor Mode에서 접근할 수 있을 뿐, mstatus와 sstatus 레지스터를 구성하는 비트 플래그는 같습니다.
어셈블리 명령어에서 CSR 레지스터를 보면, CSR 레지스터 이름의 접두사에 Privilege Mode를 나타내는 m 혹은 s를 확인할 수 있습니다.
관련 강의:
'RISC-V > 레지스터' 카테고리의 다른 글
[RISC-V] 레지스터: 범용 레지스터 (0) | 2024.07.07 |
---|