Computer Science/Etc

ARM 프로세서 동작모드

TwinParadox 2017. 11. 2. 20:55
728x90

프로세서가 프로그램 실행할 때 권한을 설정하며 6개의 특권 모드(Privileged Mode)와 1개의 사용자 모드(User Mode)로 총 7개의 동작모드가 존재함.




Privileged Mode

예외 처리, 시스템 자원에 접근하며, 아래 모드로 구성됨.


- System

OS를 위한 동작모드로 OS 커널 작업을 실행하며, 시스템 자원에 접근이 가능함. 예외 발생 없이 진입하며, User Mode와 동일한 레지스터 셋을 사용함.


- Abort

명령어, 데이터 메모리 접근에 오류가 발생하면 나오는 Abort 예외 발생 시 진입. 명령어 접근 오류(Pre-fetch abort)는 명령어 Pre-fetch 과정에서 발생하는 오류이며 데이터 접근 오류(Data abort)는 데이터 alignment, 가상 어드레스 변환, 메모리 도메인, 접근 권한 위반 같은 오류를 지칭함. 내부 abort는 MMU, L1/L2 캐시에서 발생하고, 외부 abort는 메모리 버스 컨트롤러에서 발생. 


- Undefined

Undefined 예외가 발생할 경우 진입. 정의되지 않은 명령어가 디코딩 되었을 경우, 부 프로세서 명령어인 경우 부 프로세서가 인식하지 못하는 명령어인 경우가 이에 해당함. 디버깅 작업/명령어 셋 확장에 사용할 수 있음.


- IRQ

IRQ 발생 시 진입하며, 일반 인터럽트를 처리하는 모드임. 별도의 레지스터 뱅킹 셋(R13_irq, R14_irq, SPSR_irq)을 보유함.


- FIQ

FIQ 발생 시, 진입하며 레지스터 뱅킹 셋을 확장(R8_frq~R12_frq)하여 모두 8개의 레지스터를 뱅킹함. IRQ에 비해서 빠르게 인터럽트 처리가 가능.


- Supervisor

OS를 위한 예외, 보호 모드. 시스템 리셋 시 초기 동작 모드로 활용함. 시스템에 전웡니 공급되면 가장 먼저 진입하는 모드로, SWI를 사용해 진입이 가능함. 별도의 레지스터 뱅킹 셋(R13_svc, R14_svc, CPSR)을 보유함.




User Mode

사용자의 프로그램 실행 상태, 시스템 자원에 대해서는 접근이 제한되어 OS에 요청하는 방식으로 접근하며, 동작 모드 변경이 불가능함.


R0~R12 = 범용 레지스터, R13 = 스택 포인터, R14 = 링크 레지스터, R15 = 프로그램 카운터, 상태 레지스터(CPSR)




Exception Mode

시스템 모드를 제외한 나머지 모든 특권 모드들이 해당하며, HW/SW에서 예외 발생 시 진입함. 동작 모드 전환 시 속도 향상을 위해서 레지스터 셋을 뱅킹하며, 시스템 자원에 접근할 수 있음.

728x90
728x90