[ARM프로세서] ARMv7: 인터럽트 타입 익셉션을 유발할 때 ARM 코어의 세부 동작
By Guillermo Austin Kim | 2020년 12월 3일 |
이어서 IRQ 익셉션이 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.10 인터럽트 타입 익셉션을 유발할 때 변경되는 레지스터 그림 8.10은 IRQ 인터럽트 익셉션의 전체 실행 흐름을 나타내는데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어적으로 처리되는 부분이 슈도 코드로 표기돼 있습니다. 이어서 슈도 코드를 분석하면서 ARM 코어의 세부 동작을 알아보겠습니다. 먼저 01번째 줄을 봅시다. 01 R14_irq = 0xc000d000 + 0x4 IRQ 익셉션이 발생했으니 ARM 코어는 IRQ 모드로 변경할 준비를 하는데, 먼저 IRQ 모드에서만 사용되는 R14_irq 레지스터에 인터럽트가 발생한 주소에 0x8를 더해 저장합니다. IRQ 인터럽트가 발생할 시점에 실행된
[Arm프로세서] Armv7: subs와 movs 명령어를 실행해 Arm 동작 모드 변경
By Guillermo Austin Kim | 2021년 10월 1일 |
Arm 동작 모드를 바꾸는 다른 방법은 spsr 레지스터의 [7:0] 비트를 변경하고 다음과 같은 형식의 명령어를 실행하는 것입니다. ❑ subs pc, lr, #4 ❑ movs pc, lr sub은 뺄셈 연산, mov는 레지스터의 값을 이동시키는 연산을 수행하는 명령어입니다. 그런데 위 명령어를 보면 각 명령어의 끝에 s와 같은 접미사가 있습니다. Arm 코어가 위와 같은 ‘subs’ 혹은 ‘movs’ 명령어를 보면 내부적으로 다음과 같이 실행합니다. ❑ spsr 레지스터의 값을 cpsr 레지스터에 백업하자. ❑ spsr 레지스터의 M[4:0]에 저장된 모드로 변경하자. 위와 같은 동작은 하드웨어적으로 수행됩니다. [중요]mov와
[Arm프로세서] 하이퍼바이저는 어디에 사용될까?
By Guillermo Austin Kim | 2022년 1월 23일 |
클라우드 아키텍처로 하이퍼바이저를 적용하는 제품이 점검 늘어나는 추세입니다. 이번 절에서는 하이퍼바이저는 어느 제품군에 활용되는지 소개하겠습니다. 오토모티브(Automotive): 전기 자동차 먼저 오토모티브 분야에서 하이퍼바이저는 많이 활용됩니다. 특히 자동차의 계기판과 네비게이션 부품으로 구성되는 인포테이먼트 분야에서는 자동차 고객사가 하이퍼바이저를 소프트웨어 아키텍처로 선택하고 있습니다. 그렇다면 하이퍼바이저는 인포테이먼트 분야에서 어떻게 활용될까요? 다음 그림과 같이 운전자 입장에서 높은 안정성이 요구되는 계기판은 보안성이 높은 RTOS을 실행하고, 네비게이션은 범용적인 안드로이드나 네이티브 리눅스를 실행할 수 있습니다. 그림 12.2 하이퍼바이저가 사용되는 사례 다양한 시장 조사 보고서에
[Arm프로세서] Armv7: 범용 레지스터에서 뱅크드 레지스터란
By Guillermo Austin Kim | 2022년 4월 18일 |
그림 2.1의 아랫 부분을 보면 r13_svc와 r14_svc 라는 레지스터가 보입니다. 오른쪽에는 r13_irq와 r14_irq 레지스터가 보입니다. 이런 종류의 레지스터의 정체는 무엇일까요? Arm 동작 모드에 뱅크드된 레지스터라고 합니다. 뱅크드 레지스터를 주로 기계적인 관점으로 설명해서 소프트웨어 개발자가 이해하기 어렵습니다. 이해를 돕기 위해 다음과 같은 명령어를 봅시다. sub, sp, sp, #4 sp 레지스터인 r13 레지스터의 값을 4만큼 빼는 명령어입니다. 여기서 sub은 뺄셈 연산 명령어입니다. 위와 같은 명령어를 실행하면 그림 2.1기준으로 어느 레지스터의 값이 업데이트될까요? r13의 종류는 r13_svc, r13_irq, r13_abt 이니, 이 중 하나입니다. ‘sub