본문 바로가기

RISC-V/레지스터

[RISC-V] CSR (Control and Status) 레지스터 소개

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