[Arm프로세서] Armv8: 시스템 레지스터에 접근할 수 있는 명령어
Post
원문 보기 →[Arm프로세서] Armv8: 시스템 레지스터에 접근할 수 있는 명령어
이전 포스트에서 Armv8 아키텍처에서 정의된 레지스터에 대해 알아봤습니다. 레지스터마다 각자 주어진 기능이 있지만 결국 Arm 코어가 사용하는 변수라는 점은 같습니다. 레지스터의 용법을 파악하면 다음과 같은 의문이 생길 수 있습니다. "레지스터의 값을 어떻게 읽거나 쓸 수 있을까?" 레지스터의 값을 읽거나 쓰려면 명령어를 실행해야 합니다. 그런데 레지스터의 종류에 따라 사용할 수 있는 명령어가 다음과 같이 제한돼 있습니다. * 범용 레지스터: 모든 명령어 * 시스템 레지스터: MSR, MRS 명령어 Armv8에서 정의된 범용 레지스터는 Armv8에서 정의된 모든 명령어에서 볼 수 있습니다. 데이터를 산술 연산하거나 메모리에 위치한 데이터를 읽을 때 사용됩니다. 시스템 레지스터의 값
Related Posts
3 posts[Arm프로세서] GIC: 인터럽트 소스와 타입
GIC는 4가지 타입의 인터럽트 소스를 처리하며 그 종류는 다음 테이블에서 확인할 수 있습니다. 표 16.2 GIC를 구성하는 인터럽트 소스의 종류 GIC는 4가지 인터럽트 입력을 처리하는데 기능에 따라 다음과 같이 분류할 수 있습니다. ● PPI, SPI, LPI: 외부 I/O 디바이스에서 발생하는 하드웨어 인터럽트 ● SGI: 외부 I/O 장치가 아닌 소프트웨어적으로 유발되는 인터럽트 외부 I/O 장치에서 인터럽트가 발생하면 SPI나 PPI를 통해 CPU 코어로 전달됩니다. 먼저 SPI와 PPI에 대해 알아볼까요?
[Arm프로세서] GIC의 기본 구조
효율적으로 인터럽트를 설정 및 처리하기 위해 GIC를 사용합니다. GIC를 구성하는 하드웨어 블록을 제대로 이해하고 GIC에서 정의한 레지스터의 용도와 사용 방법만 익히면 됩니다. GIC의 가장 중요한 기능은 무엇일까요? 이 질문에는 다음과 같이 답할 수 있습니다. ● 인터럽트의 우선 순위를 각 I/O 장치에 적용해 설정 ● 입력으로 받은 인터럽트를 CPU에 전달 GIC는 인터럽트 콘트롤러이므로 GIC의 주된 기능은 다른 인터럽트 콘트롤러와 다르지 않습니다. 대신 GIC에서 인터럽트를 4가지로 분류해 관리합니다. 이어서 GIC에서 정의된 4가지 인터럽트 소스를 소개하고 인터럽트 상태 머신을 설명합니다.
[Arm프로세서] GIC 버전과 주요 기능
Armv7, Armv8와 같은 아키텍처 버전이 있듯이 GIC에도 버전이 있습니다. GIC 버전은 GICv1 ~ GICv4인데 GIC 버전마다 지원하는 기능이 달라 GIC 버전 별로 사용되는 Arm 프로세서가 어느 정도 정해져 있습니다. 다음 표에서 GIC 버전 별로 사용되는 프로세서 목록을 확인할 수 있습니다. 표 16.1 GIC 버전 별 특징 사실 어느 Arm 프로세서에서 어떤 GIC 버전을 선택할지는 개발자의 선택에 달려 있지만, 표 16.1와 같은 조합으로 사용됩니다. 1세대 GIC 버전인 GICv1은 Cortex-A5, Cortex-A9 프로세서에서 주로 사용됩니다. GICv2는 Cortex-A7, Cortex-A15, Cortex-A17 프로세서에 적용됩니다. 주로 32비트 Arm



