Thief of Wealth
article thumbnail

이번엔 ARM 프로세서의 예외 발생에 대해 알아보자.


1. ARM Exception


Exception은 앞서 설명했듯이 CPU내부에서 발생하는 예외이다.

Interrupt는 CPU외부 hw에서 발생하고

trap은 sw인터럽트로써 system call에 의해 호출된다.


이렇게 3가지로 나누어져 있으나, 여기 ARM Exception은 위 3개를 모두 "동일"한 것으로 취급해서 설명하겠다.


- Exception ( Interrupt ) 처리과정


1) 현재 CPSR 레지스터 내용이 SPSR <mode> 레지스터로 복사됨. 

(해당 exception의 종류에 맞게 적절하게 값을 설정해서 save)


2) Exception 종료 후 복귀할 pc값 (지금 pc값) 을 LR_ <mode> 레지스터에 저장. (LR이 뭐지)


3) pc 에 "vector table" 에서 해당하는 예외에 해당하는 대응 함수 주소를 넣음.


4) 그 Exception(interrupt) 전용 대응함수도 이동하여 수행.


5) Exception(interrupt) 처리


6) 아까전에 저장해뒀던 원래 명령어주소를 pc로 복구


7) 인터럽트 이전상태로 복구 


CPSR 복구

Restore CPSR from SPSR <mode>


pc 복구

Restore PC from LR_ <mode>


- Vector table

위에서 Exception(interrupt) 가 발생하면 그 종류에 맞는 대응 주소가 담긴 vector table이 있다고 했다.


아래와 같이 생겼다.



분석해보자.


1) Reset : 전원 공급 시 처음으로 실행되는 명령어, Initialization code로 분기함.


2) Undefined instruction : 시스템이 알아먹을 수 없는 명령어를 만났을떄의 Exception


3) Software interrupt : User모드에서 프로그램이 발생시키는 interrupt, Trap같은거임


4) Prefetch abort : "프로세서"가 접근하는데 권한이 없는 사용자가 액세스 시도할때 발생.


5) Data abort : "명령어"기 접근하는데 권한이 없는 사용자가 액세스 시도할때 발생.


6) Interrupt request (IRQ) : 일반적인 hw interrupt


7) Fast interrupt request (FIQ) : IRQ보다 빠르게 처리해야할 interrupt시 쓰면된다. 

( 적당한 register만 저장하고, [원래는 모든값 저장해놔야하지만] , table 가장아래쪽에 있어서 속도가 빠름. )



- 우선순위는 다음과 같다.


높은 순서대로 쓰자면

(Reset) - (Data Abort) - (FIQ) - (IRQ) - (Prefetch abort) - (SW interrupt), (undefined intruction) 순이다


빨리 처리하게 해주는 FIQ가 활성화된 것은 Reset과 FIQ 뿐이다.






==


이번엔

ARM Core에 사용되는 녀석들을 알아보자


- Cache


: 일반적인 캐시랑 비슷하다. 전반적인 시스템 성능 향상 but 예측성 떨어짐

- TCM ( Tight;y Coupled Memory )


: 예측성을 향상시키기위한 메모리다.

명령어나 데이터를 read하는데 필요한 clock cycle을 보장해서 그렇다.

멀티 태스킹시 cache보다 성능이 떨어질 수 있다.


그래서 Cache + TCM 조합은 꿀이다.


- Memory Management HardWare


- non-protected memory

일반적인 메모리 관리장치

- MPU

제한적인 범위의 메모리를 보호함

스레드 단위로 사용.


- MMU

메모리 영역의 완전한 보호를 제공함

가장 복잡함

가상메모리주소를 실제 물리주소에 맵핑하는 방법을 사용

프로세스단위로 동작


- Coprocessors


 : ARM의 instruction set (명량어 세트)에 없는 확장된 명령어를 처리하는 프로세서를 처리하는 녀석.


명령어를 받았을때 instruction set에 없으면 extended instruction인지 판단하고 

extended instruction 이면 coprocessor에게 전달

extended instruction 이 아니면 Undefined instruct exception 발생.


'개발 > 마이크로컴퓨팅' 카테고리의 다른 글

6. ARM 명령어  (0) 2019.04.18
5. ARM 디버깅  (0) 2019.04.18
3. ARM 프로세서에 대해  (0) 2019.04.17
2. ARM은 뭘까  (0) 2019.04.17
1. 임베디드 시스템이란 무엇일까  (0) 2019.04.17
profile on loading

Loading...