ARM SoC 구조 이해하기

2022. 12. 7. 21:04임베디드 시스템 설계/ARM

-      ARM 코어 아키텍처 구조

 

ARM 코어 데이터 흐름.

 

데이터 버스

데이터(명령어, 데이터)는 데이터 버스를 통해 코어로 입력됩니다.

 

명령어 디코더

멸령어가 실행 전 명령어를 해독합니다.

 

폰노이만 아키텍처

CPU, 메모리, 프로그램 3요소로 구성됩니다.

Stored program 구조이고, Fetchdecode, execute로 구성됩니다.

 

하버드 아키텍처

데이터와 명령어 메모리가 분리됨으로 인한 성능이 개선되는 결과를 가진 구조입니다.

 

Load / Store 아키텍처

프로세서 외부로 데이터를 전송하는 명령어는 단 2개 입니다.

데이터 처리는 레지스터 안에서만 수행합니다.

ALU를 거쳐 주소 연산을 마무리한 후 주소 버스로 출력합니다.

 

부호확장기(Sign Extend)

레지스터 파일은 32비트 레지스터로 구성됩니다.

Signed or unsigned 8비트 / 16비트 값은 32비트로 확장된 후 저장 및 사용됩니다.

 

ALUMAC

Multiply-Accumulate Unit / Arithmetic Logic Unit

 

소스 및 목적지 레지스터

Rn, Rm : 소스 오퍼랜드는 내부버스와 AB를 통해 레지스터 파일로부터 읽혀집니다.

RmALU로 입력되기 전에 배럴 시프터를 거쳐 미리 선처리 작업을 할 수 있습니다.

Functional Unit을 거친 후 결과 버스를 통해 Rd에 결과값을 저장 합니다.

 

Incrementer

로드-스토어 계열의 명령에서, 코어가 연속적인 메모리 접근 명령에서 다음 레지스터 값을 읽고 쓰기를 할 때 자동으로 주소 레지스터를 업데이트 합니다.

 

 

 

-      ARM 레지스터의 종류와 특징

 

ARM 레지스터

 

ARM 레지스터 32-bits 길이의 37개 레지스터

Program counter : 1 / CPSR : 1 / CPSR : 5 / General purpose registers : 30

CPSR : 현재의 PSR입니다.

SPSR : 이전에 저장된 PSR입니다.

Banked register

20개의 레지스터는 매번 프로그램에 따라 숨겨지게 됩니다.(회색)

이들은 프로세서가 특정 모드에 있을 때에만 사용 가능합니다.

, 현재 프로세서 모드에 따라 어떤 레지스터 뱅크에 접근할지 결정하게 됩니다.

 

 

E.g.,abourt 모드

R13_abt, r14_abt, spsr_abt 사용 가능합니다.

 

범용 레지스터 : 데이터나 주소 저장 가능합니다, r과 숫자를 이용해 표현합니다.

 

한번에 최대 18개까지 활성화

16개 데이터 레지스터로 구성되고, 2개의 프로그램 상태 레지스터로 구성됩니다.

 

R14, r15, cpsr 등에 대한 접근은 특별한 명령으로 처리되기도 합니다.

 

프로그램 상태 레지스터(PSR)

ARM 코어 내부 동작을 모니터링하고 제어합니다. (CPSR, SPSR)

CPSR 레지스터

8비트씩 4가지 영역으로 나뉩니다. (플래그, 상태, 확장, 제어)

제어 필드 : 프로세서 모드와 상태, 인터럽트 마스크 비트가 포함됩니다.

플래그 필드 : 상태 플래그를 저장합니다.

 

 

상태 플래그

 

인터럽트 플래그

인터럽트 마스크 : 특정한 인터럽트 요청을 중단하고자 할 때 사용됩니다.

I = 1 : disables the IRQ

F = 1 : disables the FIQ

 

 

-      ARM 프로세서 특권모드

 

-      조건부 실행

상태 플래그 설정값에 기반

코어가 어떤 명령어를 실행할 지 여부를 제어 가능합니다.

대부분의 명령어는 코어가 그것을 실행할 지 여부를 결정할 수 있는 조건 인자를 가집니다.

명령어 실행 전 코어는 자신의 조건인자와 CPSR 상태 플래그를 비교합니다.

 

조건 니모닉

 

-      파이프라인

파이프라이닝 : RISC 프로세서가 명령어를 실행하는 데 사용하는 매커니즘

 

파이프라인 Depth가 길어지면?

1.     각 단계에서 처리 가능한 일의 양 감소합니다.

2.     더 높은 동작 주파수 실현 가능합니다.

3.     파이프 라인 길이가 증가하며 개별 명령어의 실행 delay가 증가하게 됩니다.

4.     의존도가 증가하는데 각 stage 내 데이터가 서로 영향을 끼치게 됩니다.

5.     명령어 스케줄링이 필요합니다.

 

-      코어 확장

캐쉬 : 시스템 성능 향상을 의미합니다.

TCM : 결정적(Deterministic) 실시간 응답성 개선을 의미합니다.

코어의 처리 기능 확장

명령어 집합을 확장하거나 설정 레지스터를 제공합니다.

 

 

벡터의 부동소수점 연산(Vector Floating-Point : VFP)

IEEE754.1985 부동소수점 표준과 호환

CP10 / CP11

 

시스템 제어 코프로세서(System Control Coprocessor)

CP15 / Cache, TCM, MPU, MMU

 

 

-      ARM 개발환경

임베디드 개발환경

IDEs / Compilers

NXP LPCXpresso (Free up to 128 kB flash)

KEIL / ARM MDK

IAR Embedded Workbench

 

NXP LPCLink (on LPCXpresso Boards)

Segger J-Link

IAR / Signum I-Jet / JTAGiet

KEIL / ARM ULink2

Code Red Red Probe

Hitex Tantino

Lauterbach Trace32

 

임베디드 평가 보드

NXP LPCXpresso

Embedded Artists

IAR

KEIL / ARM(including mbed)

Intel Edison

Arduino Rasberry PI

 

 

FreeRTOS

FreeRTOS is a royalty-free mini Real-Time Kernel with a very small footprint

Free download – www.freertos.org

Ported to 30+ architectures and 17 toolchains

Example projects for many architectures and IDEs

 

uC/OS-II or III

Priority-based real-time multitasking operating system kernel for microprocessors

Very small footprint

Board Support Package for various board

Linux Cortex-M Release 1.4.

 

 

개발환경

MDK ARM 다운로드

 

 

USB 디바이스 드라이버, Device Support 선택

 

IDE 초기화면 : 새 프로젝트 생성

프로젝트 Configuration

 

빌드 및 실행