티스토리 뷰

🔦/ARM

ARM Cortex 시리즈에 대해 알려주세요

philBaek (백광록) 2021. 7. 27. 23:57
728x90

ARM Cortex 시리즈는 ARM11 이후에 나온 시리즈로 모든 ARM 시리즈 중 가장 잘나가는 시리즈이다. 역대 ARM 시리즈에 대한 정보는 아래에서 확인할 수 있다!

 

ARM 아키텍처의 역사

ARM Cortex-M3 시스템 프로그래밍 완전정복 1의 첫 번째 챕터인 Introduction 파트에서는 전체적인 ARM 제품군의 역사와 Cortex 시리즈의 특징에 대해 설명하고 있다. 먼저 ARM 아키텍처의 역사에 대해 중요

phil-baek.tistory.com

원래는 ARM11 이후에 ARM12가 나와야 하는데 이제껏 짝수 시리즈에서 항상 참패를 해서 Cortex라고 이름을 바꾼것일수도,,

 

Cortex 시리즈별 특징

 

Cortex 시리즈는 아래와 같이 크게 3가지 라인으로 구성된다.

ARM Cortex-(Microcontroller) - 저가형 응용프로그램에 최적화된 임베디드 프로세서 계열
- Thumb2 명령어 세트 지원
ARM Cortex-R (Real-Time) - 실시간 시스템을 위한 임베디드 프로세서 계열
- ARM, Thumb, Thumb2 명령어 세트 지원
ARM Cortex-A (Application) - 복잡한 OS 및 사용자 응용 프로그램에 사용하는 응용 프로그램 프로세서 계열
- ARM, Thumb, Thumb2 명령어 세트 지원

 

 

위 내용 외에, ARM Core의 보다 더 자세한 스펙은 위키피디아에서 확인할 수 있다. 그 중에서 Cortex-A 시리즈와 Cortex-M 시리즈에 대해서만 부분적으로 발췌해보면 아래와 같다.

 

 

여기서 Cache (I/D) 는 각각 Instruction Cache, Data Cache를 의미하며, MIPS는 Million Instructions Per Second의 약자로 1초당 수행되는 명령어의 개수를 의미한다. 이때 단위인 DMIPS는 Dhrystone MIPS의 약자로 드라이스톤 벤치마크 테스트의 결과를 정수화해서 하중한 값이다.

 

스펙에 대해 자세한 내용을 모르더라도 전체적으로 Cortex-A 시리즈의 컴퓨팅 파워나 기능들이 훨씬 우세한 것을 확인할 수 있다. (물론 그만큼 가격도 비싸고 전력 소모량도 어마어마하다)

 

▶ Cortex-A 시리즈의 MMU 섹션에서 TrustZone이란?

더보기

TrustZone

다중코어 시스템의 특징으로는 코어 중 하나가 보안을 담당하여 개인키, 사용자 데이터 등을 분리하여 보안할 수 있다는 것이다.

 

그렇다면 단일코어에서는 이러한 보안 문제를 어떻게 처리하는가?

바로 TrustZone을 통해 민감한 정보에 대한 보안을 수행한다. 간단히 말해서 TrustZone은 실행 환경의 메모리, 주변장치, 기능들을 보안 영역과 비보안 영역으로 분리하는 하드웨어 메커니즘이다. 전체적인 동작 과정은 다음과 같다.

 

먼저 부팅 시에 TEE(Trusted Execution Environment)를 먼저 부팅하고, REE(Rich Execution Environment)를 부팅해 부팅 단계부터 보안을 수행할 수 있다. 여기서 TEE와 REE는 API를 통해서만 통신이 가능하고, 서로 간의 모드 전환은 예외를 통해서만 가능하다. IoT 시대가 점점 가속화되면서 보안에 대한 문제도 점차 부상하고 있는데, TrustZone은 이러한 상황 속에서 펌웨어 보안 역할을 담당한다.

 

ARM은 팹리스 회사

ARM이 이토록 많은 프로세서 시리즈를 제공하다 보니 하드웨어 회사로 착각하는 경우가 있다. 하지만 ARM은 프로세서를 직접 만드는 회사가 아니라, 위에서 살펴본 Core를 IP(Intellectual Property) 형태로 판매하는 팹리스 회사이다. 여기서 팹리스란 반도체 공장이 없다는 것을 의미한다.

 

따라서 다양한 제조업체들은 ARM의 IP에 대해 라이센스 계약을 맺어 저마다의 커스터마이징이 적용된 제품을 출시하는데, 이러한 제조업체들을 파운드리 회사라고 한다. 예를들어 파운드리 부문에서 삼성전자의 라이벌이라 불리는 TSMC가 대표적인 파운드리 회사라고 할 수 있겠다.

 

그렇다면 ARM의 수익 모델인 IP란 무엇인가?

IP는 반도체 디바이스 내에 구현되기 위해 미리 정의된 기능들의 블록을 의미한다. 현재는 여기에서 더 확장하여 소프트웨어가 포함된 일종의 솔루션을 제공해 더 많은 부가가치를 창출하고 있다. 그럼 이제 ARM의 돈줄인 IP에 대해 Cortex-M0와 Cortex-M3를 통해 한 번 알아보겠다!

 

Cortex-M0

Cortex-M0는 가장 작고, 가장 적은 전력 소모를 가지는 프로세서로서 에너지 효율성이 높다. 그 구조는 아래와 같다.

 

Cortex-M0 Architecture

 

위 아키텍쳐에서 몇몇 블록만 설명을 하자면 아래와 같다.

 

WIC (Wake-up Interrupt Controller)

저전력 상태에서 프로세서 외부의 소형 블록이 인터럽트 감지 기능을 수행하도록 하는 컴포넌트 (Cortex-M의 저전력 지원 기능)

 

NVIC (Nested Vectored Interrupt Controller)

중첩된 인터럽트를 제어하는 컴포넌트.

모든 인터럽트에는 우선순위가 있다. 만약 인터럽트 수행 중에 보다 높은 우선순위를 가진 인터럽트가 발생했을 경우, NVIC를 통해 현재 인터럽트를 중단하고 해당 인터럽트를 처리할 수 있다.

(NVIC를 사용하기 위해서는 Peripheral의 인터럽트 뿐만 아니라, NVIC의 레지스터에도 해당 인터럽트를 가리키는 비트를 설정하여 둘 다 Enable 해줘야 한다)

 

AMBA (Advanced Microcontroller Bus Architecture)

ARM 프로세서에 사용되는 On-chip 버스 통신 규격으로, 그 종류로는 AHB, APB, AXI 등이 있다.

 

AHB (Advanced High performance Bus)

AHB 방식은 고속통신을 지원하고, 데이터를 전송할때 MUX를 기반으로 여러개의 버스를 활성화한다. 또한 클럭 단위로 데이터를 보내는 것이 아닌, 한 번에 많은 양의 데이터를 계속 보내는 Burst mode도 지원한다.

 

여기서 고속 통신은 파이프라인을 통해 매 클럭마다 데이터를 보낸다는 의미이다. 이것이 가능한 이유는 파이프라인덕에 새로운 Instruction 주소를 읽는 것과 이전에 읽은 Instruction 주소에 대해 데이터를 보내는 것을 동시에 수행할 수 있기 때문이다. 따라서 데이터 전송 시에 2 클럭이 아닌 1 클럭을 소모하므로 이를 고속 통신이라고 일컫는다.

(하지만, 파이프라인의 맨 처음에는 첫 주소를 읽고 난 뒤에 데이터를 보내야 하므로 2 클럭을 소모한다)

 

AHB-lite

AHB는 동시에 여러개의 버스 마스터를 활성화 하지만, AHB-lite는 하나의 버스 마스터만 활성화한다.

 

Cortex-M3

Cortex-M3는 제어 시스템이나 무선 네트워킹에 주로 사용되며, 32-bit 프로세서로 준수한 성능을 자랑하면서도 저렴하다는 특징이 있다.

 

Cortex-M3 Architecture

 

위 아키텍쳐에서 몇몇 블록만 설명을 하자면 아래와 같다.

 

ETM (Embedded Trace Macrocell)

Trace 정보를 수집하는 방법으로 디버깅 방식 중 하나이다.

 

SWV (Serial Wire Viewer)

SWO 핀을 통해 디버깅을 수행하는 방법으로 printf를 출력할 수 있고, 2개의 핀만 사용하므로 HW가 간단해진다는 장점이 있다.

 

FPB (Flash Patch and Breakpoint)

Flash Patch란 바이너리 코드를 수정하는 것을 의미한다.

 

DWT (Data Watchpoint and Trace)

프로세서가 접근할때마다 메모리 위치 정보(주소, 데이터 값 등)를 포착하는 등 선택적 데이터 트레이스를 가능케 해주는 컴포넌트이다.

이때 트레이스의 종류에 대해 간략히 설명하자면 아래와 같다.

 

  • 프로파일링 트레이스 : 다양한 동작에서 CPU가 사용하는 클럭 수 포착
  • 이벤트 트레이스 : 처리한 예외의 이력 및 기간 제공

 

DAP (Debug Access Port)

외부의 JTAG 디버거와의 인터페이스를 담당하는 컴포넌트이다.

이전에는 JTAG TAP 컨트롤러와 디버거가 직접 통신하였다. 하지만, 멀티코어 디버깅시, 각 컨트롤러가 코어마다 TDI와 TDO를 직렬로 엮어서 체인을 구성했었기 때문에 슬립모드와 같이 코어 하나의 클럭 또는 전력이 차단되는 경우, 다른 코어의 디버거 연결도 끊기는 문제가 있었다. 이를 해결하기 위해 DAP를 통해 각 코어가 DAP에 병렬 연결 됨으로써 문제를 해결.

 

 


참고 문헌

1. ARM Cortex-M3 시스템 프로그래밍 완전정복 1

728x90

'🔦 > ARM' 카테고리의 다른 글

Cortex-M3를 요약하자면?  (0) 2021.07.29
ARM 아키텍처 역사 탐험  (0) 2021.07.27