본문 바로가기
Embedded System/ARM

[ARM] Operating modes와 Exceptions

by 임아톰 2021. 12. 8.

ARM에는 7가지 동작 Mode가 있다. 그중 User Mode를 제외한 나머지 6가지 Mode는 Privileged Mode로 분류된다. Privileged Mode는 이름에서 알 수 있듯이 ARM의 상태 레지스터인 CPSR에 접근할 수 있는 특권을 가진다.

 

7가지 Operating Mode는 다음과 같다.

  • User Mode: Normal Program execution mode
  • System Modes: Run privileged operating system tasks
  • IRQ(Interrupt Request) Mode: : When a low priority (normal) interrupt is raised
  • FIQ(Fast Interrupt Request) Mode: When a high priority (fast) interrupt is raised
  • SVC(Supervisor) Mode: A protected mode for the operating system ,
                        entered when a SWI instruction is executed
  • Abort Mode: Used to handle memory access violations
  • Undefined mode: Used to handle undefined instructions

 

간단하게 각 Mode가 사용되는 상황은 다음과 같다.

  • User Mode는 일반적인 프로그래밍 연산
  • System Mode는 운영체제 프로그램을 실행해야 될 때
  • IRQ Mode는 외부장치가 인터럽트를 발생시켰을 때
  • FIRQ Mode는 외부장치가 Fast Interrupt를 발생시켰을 때 사용
  • SVC Mode는 파워 업 혹은 리셋에 진입 했을 때 혹은 SW interrupt가 발생했을 때
  • Abort Mode는 가져오면 안되는 메모리 영역에서 데이터를 가져왔을 때
  • Undefined Mode는 지원하지 않는 instruction을 가져왔을 때 

IRQ와 FIRQ 둘 다 인터럽트를 처리하지만 FIRQ가 말그대로 빠른 인터럽트를 처리할 때 사용하므로 우선순위도 IRQ 보다 높다. 2가지 인터럽트가 있기 때문에 인터럽트를 disable하는 bit도 각각 존재한다.

 

ARM에는 여러가지 Mode가 있는만큼 Mode 간에 변환도 많이 일어난다. 이를 위해 ARM에서 지원하는 기능이 Banked Register다. Mode 간 변환이 일어날 때는 컨텍스트 스위칭이 필요하다. Banked Register는 모드에 배정된 여분의 레지스터이다. 여분의 레지스터가 있으므로 데이터를 복구하는 시간을 줄일 수 있다.

 

*reference

ARM 동작 Modes - 나는 어느 mode를 서야 하나

반응형

'Embedded System > ARM' 카테고리의 다른 글

[ARM] Addressing mode  (1) 2021.12.08
[ARM] conditional execution이란  (0) 2021.10.01