Arm

Armv8-M으로 성능 및 개발 효율성 극대화

<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="text" >Armv8-M으로 성능 및 개발 효율성 극대화</span>

Armv8-M으로 성능 및 개발 효율성 극대화하기

임베디드 산업은 빠르게 발전하고 있으며, 이에 따라 강력하고 안전하며 효율적인 마이크로컨트롤러에 대한 필요성도 커지고 있습니다. Cortex-M 제품군의 최신 도약인 Armv8-M 아키텍처를 소개합니다. 3부로 구성된 이 블로그 시리즈에서는 임베디드 시스템의 최신 과제를 해결하기 위해 설계된 Cortex-M23 및 Cortex-M33 마이크로컨트롤러에 도입된 새로운 기능과 개선 사항을 살펴볼 것입니다.

주요 내용은 다음과 같습니다:

1부: 새로운 C11 언어 지원 및 중요한 MPU(메모리 보호 장치) 업데이트. 이러한 개선 사항은 강력한 임베디드 시스템의 핵심 구성 요소인 데이터 무결성 및 메모리 보안을 보장하는 데 매우 중요합니다.

2부: 다음으로 하드웨어 분할, 긴 분기 명령어 추가, 보다 효율적인 MOV 작업 등 Cortex-M0/M0+의 성능 향상에 초점을 맞춰 살펴보겠습니다. 이러한 업데이트를 통해 개발자는 낮은 전력 소비를 유지하면서 성능 우위를 확보할 수 있습니다.

3부: 마지막으로 보안 개선 사항을 자세히 살펴보며 마무리합니다. 임베디드 디바이스가 네트워크에 점점 더 많이 연결됨에 따라 TrustZone 기술과 스택 보호는 위협으로부터 시스템을 보호하는 데 필수적인 요소가 되었습니다. 이러한 기능이 어떻게 보안을 강화하는지 살펴보겠습니다.

산업 자동화, IoT 또는 안전이 중요한 애플리케이션을 설계하는 경우 이 시리즈를 통해 Armv8-M이 임베디드 시스템의 미래를 어떻게 형성하고 있는지에 대한 귀중한 인사이트를 얻을 수 있습니다. 각 주제를 자세히 살펴보면서 계속 지켜봐 주세요!

블로그 2: Armv8-M으로 성능 및 개발 효율성 극대화: Cortex-M0/M0+ 성능 향상

Armv8-M으로 성능 향상

이 기사에서는 Armv8-M 베이스라인 아키텍처가 제공하는 성능 향상, 특히 Cortex-M0/M0+의 향상된 기능에 대해 살펴봅니다. 이러한 코어는 8/16비트 마이크로컨트롤러를 대체하거나 저비용 및 저전력 소비가 중요한 장치에 널리 사용됩니다. 이제 Cortex-M23(Armv8-M 기반)은 몇 가지 흥미로운 성능 향상을 통해 더욱 강력한 대안이 될 것입니다.

성능을 위한 Cortex-M23의 주요 개선 사항:
Cortex-M23은 몇 가지 주요 명령어 업그레이드를 통해 성능이 향상되었습니다. 자세히 살펴보겠습니다:

  1. 하드웨어 부문: 더 이상 소프트웨어 라이브러리에 의존해 분할을 처리할 필요가 없습니다.
  2. 비교 및 분기(CBZ, CBNZ) 명령어: 코드에서 더 간단하고 빠른 의사 결정을 내릴 수 있습니다.
  3. 롱 브랜치(B) 명령어: 더 큰 소프트웨어 프로젝트를 지원하기 위해 점프 범위가 확장되었습니다.
  4. 16비트 즉시 값이 포함된 MOV 명령어: 보다 효율적인 상수 처리.

이제 이러한 개선 사항을 각각 자세히 살펴보겠습니다.

1. 하드웨어 부문

이전 Cortex-M0/M0+에서는 하드웨어 분할이 없었기 때문에 개발자는 소프트웨어 라이브러리에 의존해 분할을 수행해야 했습니다. 이 방식은 기능적이지만 가장 빠른 방식은 아니었습니다. 이제 Armv8-M에는 하드웨어 분할 명령어가 내장되어 있어 분할 작업이 훨씬 더 빠르고 효율적이므로 실행 시간과 코드 크기가 모두 줄어듭니다. 실제로 Cortex-M0+에서 Cortex-M23으로 전환하면 코드 크기가 224바이트 절약됩니다.

재미있는 사실: 소프트웨어 라이브러리는 최대 5배 더 오래 걸리는 반면, Cortex-M23의 하드웨어 디바이더는 17주기(빠른 디바이더) 또는 34주기(느린 디바이더)에 연산을 완료합니다!

2. 비교 및 분기(CBZ, CBNZ) 지침

변수가 0인지 아닌지를 확인하는 코드를 얼마나 자주 작성하시나요? 꽤 자주, 그렇죠? Cortex-M0+에서는 일반적으로 두 개의 명령어가 필요합니다. 하지만 Cortex-M23에서는 새로운 CBNZ(0이 아닌 경우 비교 및 분기) 명령어를 사용하면 이러한 경우를 한 번에 처리할 수 있어 속도가 빨라지고 코드가 더 깔끔해집니다.

이 기능은 이미 Cortex-M3/M4/M7 시리즈에서 사용되고 있으므로 해당 코어에서 코드를 쉽게 재사용할 수 있습니다.

3. 롱 브랜치(B) 명령어

소프트웨어가 성장함에 따라 코드에서 장거리 점프에 대한 필요성도 커지고 있습니다. 이전 Cortex-M0+에서는 최대 -2048~2046단계까지만 점프할 수 있었지만, Cortex-M23은 이 범위를 -16,777,216~16,777,214로 크게 확장했습니다. 즉, 멀리뛰기를 달성하는 데 필요한 명령어 수가 줄어들어 시간이 절약되고 코드가 간소화됩니다.

4. 16비트 즉시 값을 사용하는 MOV 명령어

이전에는 Cortex-M0+에서 MOV 명령어는 최대 255까지만 즉시 값을 처리할 수 있었습니다. 하지만 301과 같은 값을 설정하려면 어떻게 해야 할까요? 이를 위해서는 여러 개의 명령어가 필요했을 것입니다. 더 이상은 아닙니다! Cortex-M23은 16비트 즉시 값을 처리할 수 있으므로 단일 명령어로 더 큰 상수를 설정할 수 있어 코드가 간소화됩니다.

Cortex-M23은 어떻게 구성되나요?

다음은 Cortex-M0, Cortex-M0+, Cortex-M23의 MHz당 CoreMark 벤치마크 점수입니다. 보시다시피 Cortex-M23은 이전 제품보다 소폭이지만 성능 향상을 제공합니다. 하지만 코드 크기 감소, 효율성 향상, 하드웨어 업그레이드와 함께 고려하면 Cortex-M23으로의 전환은 그만한 가치가 있습니다.

다음 단계는 무엇인가요?

다음 블로그에서는 Armv8-M 아키텍처의 보안 개선 사항을 살펴보고 TrustZone 및 기타 기능이 임베디드 시스템을 더욱 안전하게 만드는 방법을 살펴보겠습니다.

언제나 그렇듯이 Arm용 IAR 임베디드 워크벤치는 Armv8-M(Cortex-M23, Cortex-M33)을 포함한 전체 Cortex-M 제품군을 지원합니다. 이 통합 개발 환경을 통해 이 놀라운 마이크로컨트롤러로 가능성의 한계를 계속 뛰어넘을 수 있습니다.

지금 바로Arm용 IAR 임베디드 워크벤치 평가판을 다운로드하고 이러한 성능 향상을 통해 임베디드 프로젝트의 수준을 어떻게 높일 수 있는지 직접 확인해 보세요.

Hiroki akaboshi
Hiroki Akaboshi
Field Application Engineer APAC

참고 자료
[1] Armv8-M 메모리 모델 및 메모리 보호 버전 1.1 사용자 가이드