IoT 용으로 배터리로 작동되는 각종 디바이스들에 대한 수요가 빠르게 늘어나고 있다. 이러한 추세에 따라서 마이크로컨트롤러와 여타 부품들에 대해서 갈수록 더 높은 에너지 효율이 요구되고 있다. 그럼으로써 제품 마케팅에 초저전력(ULP)이라는 용어가 흔히 사용되는 것을 볼 수 있으며, 특히 마이크로컨트롤러를 설명할 때 그렇다. 초저전력의 정확한 뜻이 무엇인지를 알아보기에 앞서서, 먼저 현재 어떤 다양한 뜻으로 사용되고 있는지부터 살펴보자.
예를 들어서 전원 소스가 심하게 제한적인 경우에는(에너지 포집 같은 경우) 동적 전류를 극히 낮게 해야 한다. 또 시스템이 대부분의 시간을 대기 모드 또는 슬립 모드로 보내고 가끔씩만 깨어나서 일을 처리하는 경우에는 슬립 모드 전류를 매우 낮게 해야 한다. 또 어떤 경우에 초저전력은 에너지 효율을 의미할 수도 있다. 그러므로 배터리로 작동되는 디바이스는 이러한 모든 점들을 종합적이면서도 절충적으로 충족해야 한다.
물론 초저전력은 어떻게 정의하느냐와 어떤 기능을 수행하느냐에 따라서 달라질 것이다. 예를 들어서 마이크로컨트롤러 유닛(MCU)은 동적 모드로 30?A/MHz~40?A/MHz이고 셧다운 전류가 50nA~70nA이면 초저전력이라고 할 수 있을 것이다. 하지만 어떤 마이크로컨트롤러를 초저전력으로 분류하기 위해서는 아키텍처, SoC 디자인, 프로세스 기술, 지능적 주변장치 기능, 딥 슬립 모드 같은 여러 요인들을 종합적으로 고려해야 한다.
이 글에서는 Analog Devices의 2개 마이크로컨트롤러를 예로 들어서 이러한 맥락에서 초저전력의 진정한 의미를 어떻게 해석할지를 살펴본다. 이와 함께 EEMBC 컨소시엄의 인증 메커니즘을 살펴본다. 이 점수는 시스템 개발자들이 자신의 솔루션으로 가장 적합한 마이크로컨트롤러를 선택하는 데 도움이 될 수 있다.
초저전력 측정 및 최적화
초저전력이 무엇인가를 이해하기 위해서는 먼저 이것을 어떻게 측정하는지부터 이해해야 한다. 개발자들은 흔히 데이터 시트를 참고하는데, 여기에는 MHz당 전류나 다양한 슬립 모드로 전류 같은 것들이 나와 있다. 그런데 문제는, 당장 동적 전류 소모만 보더라도 이 값을 구하기 위해서 사용된 조건들(코드, 전압, 플래시 대기 상태 등)이 설명되어 있지 않다는 것이다.
어떤 업체들은 EEMBC CoreMark 같은 동적 모드 레퍼런스를 사용하기도 하고, 또 어떤 업체들은 “while 1” 문을 실행하는 것 같은 간단한 것을 사용하기도 한다. 플래시로 대기 상태가 필요하면 마이크로컨트롤러 유닛의 성능이 저하되고, 그러므로 실행 시간을 증가시키고 어떤 작업을 수행하기 위해서 필요한 에너지 소모를 증가시킨다.
어떤 업체들은 정격 전압일 때의 사양이고, 또 어떤 업체들은 최소 전압일 때의 사양이고, 또 어떤 업체들은 어떤 전압도 표기하지 않기도 한다. 이러한 것들이 아주 작은 차이인 것 같겠지만, 어떤 기준이 없이는 정확한 비교가 불가능할 것이다.
대체적으로 데이터 시트들에서는 딥 슬립 모드에 대해서 꽤 잘 설명하고 있다. 하지만 역시나 마찬가지로 이러한 모드일 때의 전류 소모를 구하기 위해서 사용된 조건들(유지되는 메모리 양, 전압 등)은 업체들마다 다르다. 또한 실제 애플리케이션에서는 이러한 모드로 들어가고 나올 때 소모되는 에너지 또한 반영해야 한다.
이 양은 아주 미미할 수도 있고, 디바이스가 얼마만큼의 시간을 슬립 모드로 지내고 얼마나 자주 깨어나는지에 따라서 달라질 수도 있다. 초저전력을 달성하기 위해서는 동적 모드와 슬립 모드를 잘 최적화해야 한다. EEMBC는 ULPMark-CoreProfile(ULPMark-CP)에 1초의 피리어드를 사용하고 있다.
ULPMark-CP는 많은 마이크로컨트롤러 업체들에서 데이터 시트 표준으로 사용하고 있는 벤치마크이다. 1초를 사용하기로 한 합의는 EEMBC 워킹 그룹에서 만장일치로 이루어졌다. 이 벤치마크는 디바이스를 1초마다 한 번 깨우고, 소량의 작업을 수행하고(동적 사이클), 다시 슬립 모드가 된다.
동적 모드일 때 아날로그 회로에 따라서 전류 소모에 차이가 있을 수 있다. 동적 전류를 최소화하고 딥 슬립 모드를 효과적으로 사용함으로써 시스템의 에너지 사용을 최적화할 수 있다. 주파수를 낮추면 동적 전류를 낮출 수 있으나 시간이 늘어날 수 있다. 그렇다면 이런 모든 점들을 감안해서 마이크로컨트롤러를 어떻게 선택해야 할 것인가? 애플리케이션의 듀티 사이클과 딥 슬립 전류는 이 에너지에 어떻게 영향을 미칠까?
사이클당 에너지는 다음과 같은 간단한 공식을 사용해서 구할 수 있다. 온 및 오프로 전환할 때의 에너지는 미미한 것으로 간주하였다.
그림 1에서 기울기는 ION에 의해서 결정된다. ISLEEP은 ION보다 훨씬 낮으며 미미한 수준이다. 그러므로 이 공식에서 동적 전류가 슬립 전류보다 훨씬 중요하다는 것을 알 수 있다.
초저전력 테스트 플랫폼
그러면 서두에서 말했듯이 Analog Devices의 2개 마이크로컨트롤러에 대해서 초저전력 에너지를 비교해 보자. 이 두 마이크로컨트롤러는 ADuCM4050과 ADuCM302x이다. ULPMark 결과 표를 보면, ADuCM4050과 ADuCM302x가 각각 203점과 245.5점이라는 것을 알 수 있다. 한 가지 유의할 점은, 이 벤치마크는 마이크로컨트롤러 유닛의 코어에만 관한 것이라는 점이다. 그래서 이름이 CoreProfile이다. 그렇다면 18%의 차이는 어떻게 설명할 수 있을까?
ADuCM4050은 ARMv7E-M 아키텍처를 적용한 ARM Cortex-M4F를 사용하고 있다. ADuCM302x는 ARMv7-M 아키텍처를 적용한 ARM Cortex-M3을 사용하고 있다. 두 코어 모두 3스테이지 파이프라인에 분기 추론을 사용하고 있으며 둘 다 명령 셋 아키텍처에 있어서 유사하다. 다만 Cortex-M4F만이 DSP와 부동소수점 명령을 지원한다. ULPMark-CoreProfile은 DSP 명령을 사용하지 않으므로 Cortex-M4F 제품이라 하더라도 FPU를 활용하지는 않는다.
벤치마크 분석을 위해서 ADuCM4050과 ADuCM302x를 각각 52MHz와 26MHz로 실행했다. ADuCM4050은 ULPMark 워크로드를 실행하기 위해서 약 11,284 사이클을 필요로 하고, ADuCM302x는 10,920 사이클을 필요로 한다. 그러므로 전자는 1초의 피리어드 중에서 217μs에 동적 모드 부분을 완료하고, 후자는 이 동작 시간이 420μs이다. ADuCM4050이 ADuCM3029보다 좀더 많은 사이클을 사용하는 것은 사용된 주파수 때문이다(각각 52MHz와 26MHz).
ADuCM4050은 플래시로 한 번의 대기 상태를 필요로 하고, ADuCM3029는 플래시로 대기 상태를 필요로 하지 않는다. ADuCM4050은 캐시 메모리를 사용하기 때문에 플래시로 대기 상태를 추가하더라도 크게 불리하지 않다. 많은 명령들을 캐시 메모리로부터 실행하며, 추가적인 대기 상태를 필요로 하지 않고서 최대 속도(52MHz)로 액세스할 수 있기 때문이다. 실행 시간을 보면, 예상대로 ADuCM4050이 ADuCM3029보다 워크로드를 더 빠르게 실행한다. ADuCM3029의 두 배의 주파수로 실행되기 때문이다.
(EEMBC 벤치마크 코드를 사용하려면 회원이거나 워킹 그룹에 소속되어야 합니다. 회원 신청은 여기서 할 수 있습니다. Monica Redon은 Analog Devices를 대표해서 EEMBC 위원회에 참여하고 있습니다.)
그렇다면 왜 ADuCM4050이 ADuCM3029보다 10μA/MHz를 더 소모하는 것일까? 이것은 전자가 후자의 두 배의 주파수로 동작하기 때문에 더 높은 주파수로 타이밍 제약을 완수하기 위해서 추가적인 버퍼를 필요로 하기 때문이다. ADuCM4050은 또한 ADuCM3029와 비교해서 다음과 같은 추가적인 기능들을 사용한다:
▶ 두 배의 메모리 크기(SRAM과 플래시 둘 다): 128kB와 512kB 대 ADuCM3029는 64kB와 256kB. 애플리케이션 필요에 따라서 추가적인 저장 용량이 필요할 수 있다.
▶ 두 배의 주파수: 52MHz 대 ADuCM3029는 26MHz. 그러므로 ADuCM4050이 성능이 더 우수하다.
▶추가적인 RGB 타이머
▶ 새로운 보안 기능: 키 랩-언랩을 사용한 키 보호 저장, 키 언랩을 사용한 키 방식 HMAC
▶3개의 추가적인 SensorStrobe 출력
▶ 최대의 SRAM 용량: ADuCM4050은 최대 124kB인 것에 비해서 ADuCM3029는 최대 32kB.
그러므로 애플리케이션의 필요(전력 최적화, 저장 용량, 동적 성능 등)에 따라서 ADuCM4050을 사용할지 ADuCM302x를 사용할지 결정할 수 있다.
컴파일러의 영향
위에서 설명했듯이, ULPMark는 두 동작 상태로 이루어진다. 동적 상태와 슬립 모드인 저전력 상태이다. 두 상태를 합쳐서 정확히 1초이다. 동적 상태일 때마다 동일한 워크로드를 실행한다. 그런데 앞서도 보았듯이 이 작업의 효율은 아키텍처에 따라서 영향을 받는다. 또한 컴파일러에 의해서도 영향을 받는다. 컴파일러가 명령 문들을 변경하고 최적화함으로써 명령 조합이 변화될 수 있기 때문이다.
애플리케이션의 필요에 따라서 크기로 최적화하거나, 속도로 최적화하거나, 또는 크기와 속도 둘 다로 최적화할 수도 있다. “loop unrolling”은 루프 내의 코드에 대해서 실행되는 분기 비율이 변화되는 간단한 예가 될 것이다. 컴파일러는 같은 일을 더 나은 방법으로 할 수 있도록 큰 역할을 한다.
예를 들어서 ADuCM3029의 ULPMark-CP 결과 점수가, 속도에 대해서 높은 수준으로 최적화했을 때는 245.5점, 중간 수준으로 최적화했을 때는 232점, 낮은 수준으로 최적화했을 때는 209점으로 차이가 날 수 있다. 컴파일러의 중요성을 보여주는 또 다른 사례로는 Texas Instruments의 MSP430FR5969에 대한 ULPMark 결과를 들 수 있다. 이 경우에는 최신 버전의 IAR Embedded Workbench 컴파일러를 적용함으로써 점수가 5%까지 향상되었다(eembc.org/ulpbench/).
다만 컴파일러 내부적으로 어떤 변경들이 이루어졌기에 이러한 향상을 달성하게 되었는지는 확인되지 않는다. 마찬가지로 컴파일러 기술을 들여다보지 않고서는 STMicroelectronics의 STM32L476RG가 어떻게 ARMCC 컴파일러에서 IAR 컴파일러로 바꾸고서 점수가 16% 향상되었는지 설명할 수 없을 것이다.
Analog Devices의 두 MCU는 서로 다른 버전의 IAR 컴파일러를 사용해서 코드를 컴파일했다. ADuCM4050은 IAR EWARM 7.60.1.11216 및 ADuCM302x는 7.50.2.10505를 사용했다. 하지만 역시나 어떤 내부적 변경이 이루어졌는지는 알 수 없다. 두 점수 모두 속도를 최적화하기 위한 no_size_constraints 옵션을 사용해서 제출되었다.
ULPMark를 에너지 값으로 환산
ULPMark-CoreProfile을 역으로 해서 에너지 값을 구할 수 있다(10 사이클에 걸쳐서 초당 평균 에너지의 5배의 중간값).
또 이 에너지는 디바이스가 워크로드를 실행하는 동안(동적 모드) 소모되는 에너지와 동면 모드일 때 소모되는 에너지를 합한 것으로 구할 수 있다.
ADuCM3029의 데이터 시트에 따르면, 소수 코드를 실행할 때 동적 전류의 정격 값은 980uA이다. 이 코드는 캐시 안에 들어가며 이의 낮은 전력 소모를 활용할 수 있다. ULPMark-CoreProfile 코드는 주로 선형적 코드이므로 캐시를 사용하더라도 크게 유리하지 않다. 그러므로 전류 소모는 데이터 시트에서 캐시를 작동하지 않고서 표기하고 있는 1.28mA와 비슷한 수준이 될 것이다.
동면 전류를 위해서는 ULPMark-CoreProfile이 LFXTAL과 RTC를 실행해야 한다. 그러므로 슬립 모드일 때 전류 소모는 데이터 시트에 따라서 830nA이다. 동적 지속 시간은 위에서 언급한 것처럼 420Os이다.
데이터 시트 수치와 실행 시간에 따르면, 동적 전류의 에너지는 1.61uJ이고, 슬립 시간일 때 소모되는 에너지는 2.49uJ이다. 이 수치들을 가지고 나온 점수가 EEMBC EnergyMonitor 소프트웨어를 사용해서 측정된 것과 일치한다는 것을 알 수 있다.
1세대 ULPMark의 한 가지 단점은, 실행 규칙이 동작 전압을 3V로 제한한다는 것이다. (워킹 그룹에서 이런 식으로 구현한 것은 모든 디바이스들로 공통적인 기준을 설립하기 위해서였다.) 하지만 대부분의 최신 MCU들은 이보다 더 낮은 전압으로 실행될 때 에너지 효율이 훨씬 더 우수하다(온도와 동작 주파수에 따라서 약간의 차이는 있을 수 있다). 예를 들어서 STMicroelectronics의 STM32L476RG의 ULPMark는 dc-dc 컨버터를 사용해서 전압을 3V에서 1.8V로 낮춤으로써 점수가 19%까지 향상된다.
dc-dc 컨버터를 사용함으로써 점수가 영향을 받는 것은 STMicroelectronics의 STM32L476RG만이 아니다. 그런데 ADuCM302x와 ADuCM4050 같은 일부 디바이스들은 자체 내로 컨버터를 통합하고 있다. 그러므로 전력 성능을 향상시키기 위해서 외부적 IC가 필요하지 않다. 그렇더라도 dc-dc 컨버터를 사용하면 디바이스가 최대의 에너지 효율로 동작할 수 있으므로 좀더 공정한 비교를 할 수 있다.
예를 들어서 3V로 동작하는 디바이스는 dc-dc 컨버터를 사용하더라도 별로 유익하지 않을 것이다. 이미 최적의 효율로 동작하고 있기 때문이다. 반면에 최저 1.8V에 이르기까지 동작할 수 있으나 dc-dc 컨버터를 사용하지 않는 디바이스는 공급된 에너지의 64%를 낭비하고 있는 것이다. 뿐만 아니라 에너지 효율이 무엇보다도 중요한 요구인 경우라면, 시스템으로 3V 배터리를 사용할 때 외부적 dc-dc 컨버터를 사용하기 위해서 추가적인 비용이 들어가는 것이 별 문제가 되지 않을 것이다.
다만 dc-dc 컨버터를 사용할 때는 MCU가 아닌 컨버터의 에너지 효율을 측정하지 않도록 주의해야 한다. 또 한 가지 유의할 점은, 실제 애플리케이션에서는 dc-dc 동작을 위해서 동적 모드에서 슬립 모드로 및 슬립 모드에서 동적 모드로 전환하는 시간이 늘어날 수 있다는 것이다.
dc-dc 컨버터를 사용할 때 또 다른 유의사항은 컨버터 타입이다. 어떤 컨버터는 인덕티브 기반일 수 있다. 그러면 더 많은 면적을 차지하고, 가격이 더 비싸고, 전자기 간섭(EMI) 문제가 있을 수 있다. ADuCM4050과 ADuCM302x 디바이스는 커패시티브 기반 컨버터를 사용함으로써 이러한 문제들을 피할 수 있다. 이와 관련해서는 사용자 가이드 UG-1091 “ADuCM3027/ADuCM3029 마이크로컨트롤러 셋업 및 사용” 참조.
ULPMark-CP 점수나 데이터 시트 값을 분석할 때는 디바이스에 따른 변동성이 있을 수 있다는 점도 유의해야 한다. 어떤 디바이스의 에너지 효율을 측정할 때는 누설 전류가 큰 영향을 미칠 수 있다. 특히 슬립 모드일 때 그렇다. 전통적인 성능 벤치마크는 그렇지 않으나, 디바이스의 누설 전류에 대해서는 온도나 습도 같은 다양한 요인들이 어느 정도 영향을 미칠 수 있고, 이것은 다시 ULPMark-CP 결과에도 영향을 미칠 수 있다. 제조 단계에서 같은 업체의 디바이스라 하더라도 오늘 생산한 것과 내일 생산한 것이 다를 수 있고 이 웨이퍼와 저 웨이퍼가 다를 수 있다.
같은 디바이스로도 때에 따라서 에너지 소모가 달라질 수 있다. (측정을 언제 어디서 하느냐에 따라서 5%에서 15%까지도 차이가 나는 것을 볼 수 있다.) 그러므로 ULPMark-CP 점수는 에너지 효율을 가늠하기 위한 대략적인 지침으로서 사용되어야 한다. 어떤 디바이스의 ULPMark 점수가 245점이라고 했을 때 이 점수는 각기 다른 웨이퍼로 생산된 디바이스에 따라서 233점부터 257점까지도 될 수 있다(5% 편차라고 했을 때).
인증 메커니즘 - 신뢰 구축
자사 디바이스의 점수를 인증하고자 하는 업체들은 EEMBC Technology Center(ETC)로 해당 보드 및 툴과 플랫폼 구성 파일을 보내면 된다. EEMBC는 이 플랫폼 구성 파일을 시스템 파일과 통합하고 다양한 보드들을 사용해서 점수를 여러 회 측정한다. 그리고 모든 측정의 평균을 내서 점수를 도출한다. 모든 측정을 동일한 조건들로 한다(동일한 워크로드, 동일한 에너지 모니터 보드, 비슷한 온도 등).
그림 4는 ADuCM3029 EZ-Kit로 ULPMark-CP를 측정하기 위한 연결 셋업을 보여준다.
이 점수를 측정하기 위해서 EEMBC는 EnergyMonitor라고 하는 소프트웨어를 제공한다. Run ULPBench 버튼을 클릭하면 EnergyMonitor 하드웨어가 ADuCM3029 EZ-Kit 보드를 구동하고, 프로파일을 실행하면서 소모되는 에너지를 측정한다. 이 실행이 끝나면 소프트웨어가 점수를 계산하고 이것을 화면에 보여준다. 이 소프트웨어는 또 이력 창에 이전에 소모된 평균 에너지를 보여준다.
MCU 효율 분석
EEMBC의 궁극적인 목적은 사용자들이 MCU를 철저하게 평가할 수 있도록 여러 가지 종류의 벤치마크를 제공하는 것이다. ULPMark-CP는 MCU의 코어 효율에 관한 것이고, 새롭게 제공되는 ULPMark-PeripheralProfile(ULPMark-PP)는 ADC, PWM, SPI, RTC 같은 다양한 MCU 주변장치에 초점을 맞추고 있다. ULPMark-PP에서는 동적 및 슬립 모드 전류 소모가 특히 더 중요하다. 워크로드를 실행하기 위해서는 다양한 주변장치 트랜잭션을 실행하기 때문이다. ULPMark-PP 점수 결과는 EEMBC 웹사이트에서 볼 수 있다. ULP-Mark-CP와 ULPMark-PP를 결합한 것도 사용할 수 있다.
또한 현재 개발하고 있는 것으로는 IoTMark-BLE와 SecureMark 스위트를 들 수 있다. 전자는 블루투스를 통해서 송신 및 수신할 때 MCU와 무선의 효율을 측정하기 위한 것이고, 후자는 IoT 디바이스 용으로 다양한 암호화 요소를 구현하기 위한 에너지와 성능 부담을 측정하기 위한 복잡한 보안 스위트이다. 둘 다 2017년 말부터 제공된다.
이들 벤치마크는 자동차와 같다. 자동차는 사람이 운전을 해야 쓸모가 있다. 마찬가지로 이들 벤치마크도 MCU 업체들에서 사용되기 위한 것이다. 이것을 사용해서 MCU 업체들이 자사 디바이스에 대해서 프로파일을 실행하고 점수를 발표할 수 있다. 그리고서 자사 데이터 시트로 ULPMark 결과를 포함시킬 것을 권장한다.
Ambiq Micro, Analog Devices, STMicroelectronics, TI 같은 회사들은 이미 이렇게 하고 있다. 그럼으로써 데이터 시트에 대한 신뢰도를 높이고 사양들을 실제적으로 비교할 수 있는 기준을 제시할 수 있다. 더 나아가서 만약에 어떤 MCU 회사가 이러한 공인된 결과를 제공하지 않는다면 이렇게 물어야 할 것이다. “왜 그러지 않는가? 뭔가 숨기는 것이라도 있기 때문인가?”
<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>