본문 바로가기
한국으로/ARM

ARM Mode(모드) and Exception(예외)

by 영킴. 2018. 7. 24.

ARM Mode and Exception


파이프라인 구조

ARM 아키텍처는 다음과 같은 3 스테이지 걸쳐 실행된다.

1. Fetch

메모리로부터 명령을 파이프라인으로 불러온다.

2. Decode

명령을 decode해서 ARM 프로세서에게 보낸다.

3. Execute

ARM 프로세서 내부의 ALU 연산 결과가 레지스터값에 저장된다.




ARM은 위와 같이 명령이 다음 실행 단계로 넘어갈 때 다음 명령을 새로 불러온다. 
따라서 한 사이클에 최대 3개의 명령 스테이지가 동시에 진행될 수 있다.





프로세서 모드


1. User (usr)

일반적인 사용자 프로그램이 실행되는 모드.

2. System (sys)

Privileged OS task가 수행되는 모드.

3. Supervisor (svc)

OS를 위한 protected mode.

4. FIQ (fiq)

빠른 인터럽트의 처리를 위한 모드.

5. IRQ (irq)

일반적인 인터럽트 처리를 위한 모드.

6. Abort (abt)

메모리 접근에 관한 오류를 처리하는 모드.

7. Undefined (und)

정의되지 않은 명령어 처리에 사용되는 모드.

8. Monitor (mon)

Secure State에서 모니터용으로 사용되는 모드. Secure State는 비공개 코드 영역이다.






Exceptions

Exception Vectors:


Exception Vector Base의 설정

Secure State: Vector Base + Offset

Nonsecure State: Vector Base _ Offset 또는 0xffff0000 + Offset (V=1)


Interrupt Controller

1. 여러 인터럽트 소스들의 허용 여부 결정.
2. 우선순위 결정
3. IRQ, FIQ 결정


Undefined Exception

발생원인: 명령 디코딩 시 정의되어있지 않은 명령어로 판단될 때.

Exception Handler: Breakpoint 지점에 undefined 명령을 삽입하여 디버깅 용도로 활용할 수 있다.


Supervisor Call Exception

발생원인: SVC 명령을 수행한 경우.
Exception Handler: OS의 시스템 함수를 호출하여 사용하는 경우.

Prefetch Abort Exception

발생원인: Fetch한 코드 메모리가 invalid한 경우.
Exception Handler: S/W breakpoint로 활용할 수 있다 (BKPT 명령).

Data Abort Exception

발생원인: Invalid한 데이터 메모리를 load 혹은 store하는 경우.

IRQ Exception 

발생원인: 프로세서 외부로부터 IRQ 신호가 인가된 경우.
Exception Handler: 하드웨어적인 인터럽트 처리

FIQ Exception

발생원인: 프로세서 외부로부터 FIQ 신호가 인가된 경우
Exception Handler: 긴급 인터럽트 처리





특수용도 레지스터


SP / R13

Stack Pointer. 동작 모드별로 별도의 스택을 운영할 수 있다. 일반 레지스터로 사용 가능.

LR / R14

Link Register. 일반적으로 호출된 모드로 되돌아갈 주소 저장. 일반 레지스터로 사용 가능.
'BL' 명령 수행 시 LR에 PC-4 가 자동으로 저장된다 (ARM state).

PC / R15

Program Counter. 현재 실행중인 명령의 주소를 가리킨다. 모드와 무관하게 단 하나만 존재. 
ARM state 에서 4 byte 단위로 증가, THUMB state에서 2 byte 단위로 증가.
파이프라인 구조에서 PC는 현재 수행 중인 명령의 다음 명령의 주소를 가지고 있게 된다.
명령 실행 단계에서 PC는 다음 다음 주소 (ARM state의 경우 PC+8, THUMB state의 경우 PC+4)를 가진다.

CPSR

Current Program Status Register. 모드와 무관하게 단 하나만 존재. 
연산결과, IRQ, FIQ금지, 동작모드 등을 나타낸다.

APSR

Application Program Status Register. CPSR의 Application Level View.

SPSR

Saved Program Status Register. 모든 Exception 모드는 하나씩 소유하며, 모드 전환 시 이전 모드의 CPSR을 저장한다.







'한국으로 > ARM' 카테고리의 다른 글

MMU  (0) 2018.07.29
Cortex-A9 Coprocessor  (0) 2018.07.29
Interrupt Controller  (0) 2018.07.29
Tail Call  (0) 2018.07.24
정수 승격과 형변환 문제  (0) 2018.07.22
다중 메모리 이동: LDM, STM  (0) 2018.07.22
AAPCS와 레지스터 테이블  (0) 2018.07.21
ARM의 특수 용도 레지스터  (0) 2018.07.21