Cortex M0은 8 비트 컨트롤러와 비교하여 어떻게 작동합니까?


10

이 문서 는 Cortex M0의 경우 60 DMIPS / mW, M3의 경우 31 DMIPS / mW를 인용합니다. (후자는 1.25 DMIPS / MHz 및 0.19 mW / MHz를 인용하여 6.6 DMIPS / mW를 제공하는 이 문서 의 숫자에 동의하지 않습니다 .)
M0 성능 / 전력이 8/16 비트 컨트롤러와 어떻게 비교되는지 아는 사람이 있습니까? AVR, PIC 및 MSP430과 같은? 그리고 M3 수치와의 거래는 무엇입니까?


3
@frederico 이것은 매우로드 된 질문이며 쉬운 대답이 없습니다. 프리 페치 기능, 버스 속도, 버스에 걸려있는 주변 장치 수, 플래시 액세스 속도 등과 같은 것들이 제 경험에 의해 결정됩니다. 시스템을 프로파일 링하면 거의 항상 데이터를 볼 수 있습니다. 병목이됩니다. 글쎄, 당신이 당신의 응용 프로그램을 자세히 설명한다면, 나는 프로세서를 선택하는 가장 좋은 경로가 무엇인지에 대한 통찰력을 기꺼이 제공 할 것입니다.
Frank

1
@ 프랭크 : Dhrystone 벤치 마크는 프리 페치 및 버스 속도와 같은 것을 암시 적으로 고려하지 않습니까? 특히 모순되는 NXP M3 수치를 정리하고 싶습니다. 세부 정보가 아직 존재하지 않기 때문에 앱에 대한 세부 정보를 제공 할 수 없습니다 :-)
Federico Russo

@ Frederico, 나는 건축가가 아닌 평범한 엔지니어보다 저 자신을 고려합니다. 데이터가 거의 항상 마사지되기 때문에 벤치 마크를 신뢰하지 않습니다. 예를 들어 고속 데이터 싱크를 사용하여 데이터를 송수신해야하고 메모리 및 기타 주변 장치에 액세스해야하는 동안이 경우 버스가 방해를받습니다. 이 프로세서는 일반적인 사용 사례에 맞게 설계되었습니다. 여러 메모리 읽기 / 쓰기가 필요한 특정 데이터를 소프트 디코딩하는 경우 데이터 경로가 오버플로되거나 굶어 질 수 있습니다. 이것은 보통 소프트웨어 사용자들에게 잠들지 않는 밤에 끝납니다.
Frank

요즘 Dhrystone은 재미있는 장난감이지만 많은 것을 말하지 않습니다. 일반적으로 벤치 마크는 많은 것을 말하지 않습니다. 응용 프로그램을 가져 와서 실행해야합니다. 코드 나 하드웨어를 변경하지 않기로 선택한 컴파일러는 몇 배의 성능 차이를 가감 할 수 있으므로 매우 어렵습니다. 원하는 숫자를 표시하는 벤치 마크를 만들 수 있습니다.
old_timer

ARM은 순수한 성능을 위해 나머지를 중심으로 원을 돌릴 것입니다. 8051조차 PIC만큼 느리다고 생각하지 않습니다. 유용한 시계를 잃어버린 시계 수를 추측 할 수 있습니까? asm을 사용하면 사람들은 C를 사용하고 볼 수 없게됩니다. msp430은 아마도 당신이 그것을 끄는 앱을 원할 것입니다. 푸른 달에 한 번 깨어 나면 몇 가지 일을 한 다음 TV 리모컨과 같은 잠을 자게됩니다.
old_timer

답변:


9

여기 내가 제공 할 수있는 몇 가지 포인터가 있습니다. NXP가 제공하는 사양은 전체 칩 (코어, 메모리, 주변 장치)에 대한 것입니다. ARM이 제공하는 사양은 핵심만을 기반으로합니다. 숫자가 다르게 파생되므로 비교하기가 실제로 어렵습니다.

그래서 저는 물러서서 두 개의 장치를 살펴볼 것을 제안합니다. NXP M0 기반 MCU 및 MXP M3 기반 MCU

M0 기반 MCU의 경우 LPC1111을 살펴 보겠습니다. 이 MCU가 사용중인 유휴 루프를 실행하면 12MHz 클록 속도에서 3mA의 전류를 소비합니다. 이는 250uA / MHz를 생성하며 3.3V에서 825uW / MHz입니다.

M3 기반 MCU의 경우 LPC1311을 살펴 보겠습니다. 이 MCU가 동일한 사용 중 유휴 루프를 실행하면 12MHz에서 4mA의 전류를 소비합니다. 수율 333.3uA / MHz, 이는 1.1mW / MHz입니다.

MSP430C1101 MCU (16 비트)를 보면 전압이 3V 일 때 1MHz에서 240uA를 사용한다는 것을 알 수 있습니다. 이는 720uW / MHz를 생성합니다.

다음으로 ATMega328 (Arduino Uno에서 사용)을 살펴 보겠습니다. 우리는 2V의 전압으로 1MHz에서 200uA가 사용되는 것을 본다. 이는 400uA / MHz를 생성합니다.

또한 MSP430과 AVR은 다르게 지정되어 있습니다. 전력 소비는 1MHz에서 제공되며 M0 및 M3은 12MHz에서 제공됩니다. 이것은 M0과 M3가 최대 12MHz까지 스케일링하는 비 효율성을 의미합니다.

이 값은 모두 활성 전류 소비량입니다. 장치가 휴면 상태 일 때 전류 소비량을 살펴보면 사용되는 전력이 훨씬 적습니다. 32 비트 M0이 제공하는 이점은 8 비트 및 16 비트 MCU보다 적은 시간에 더 많은 작업을 수행 할 수 있다는 것입니다. 이는 주어진 워크로드에 대해 휴면 상태에서 더 많은 시간을 소비 함을 의미합니다. 우수한 엔지니어의 M0은 종종 능동적 인 전력 소비의 차이에도 불구하고 숙련되지 않은 엔지니어의 8 비트 MCU보다 훨씬 더 나은 전력 효율을 얻습니다.

내 경험상 M0은 16 및 8 비트 유효 전력 소비에 매우 가깝기 때문에 응용 프로그램의 많은 차이점을 보완 할 수 있습니다. 또한 MCU에 걸려있는 모든 것의 전력 소비가 여러 번 MCU보다 줄어 듭니다. 따라서 많은 애플리케이션에서 MCU의 효율성을 다루는 것이 가장 중요한 것은 아닙니다.

도움이 되길 바랍니다. 전력 소비가 조금 더 나쁘다는 말은 먼 길이지만 다른 칩보다 클럭 사이클을 많이 사용하면 더 많은 일을 할 수 있습니다. 따라서 실제로 응용 프로그램에 따라 다릅니다.


1
첫 번째 단락 : ARM 수치가 핵심에 가까운 경우 주변 전력을 포함하는 NXP 수치보다 높아야합니다. 그러나 그들은 더 낮습니다. 나도 그것을 설명 할 수 없다.
stevenvh

1
또한 컨트롤러를 동일한 전압에서 비교해야합니다. MSP430과 같이 3V에서 LPC1111을 실행하면 전력 소비가 매우 가깝습니다. NXP ARM에는 나쁘지 않습니다. MSP430은 저전력으로 유명합니다.
stevenvh

1
MSP430과 비교하여 ARM 피질 장치에서 겪었던 한 가지 큰 문제는 ARM 장치가 저전력 모드에서 실행 상태로 돌아가는 많은 프로세서주기를 태울 수 있다는 것입니다. RAM 데이터가 손실되고 PLL 및 클럭 시스템을 다시 시작해야합니다 (배터리 지원 SRAM 제외). MSP는 잠자기 상태에서 모든 RAM을 그대로 유지하면서 다음 명령에서 다시 시작합니다. 프로세스가 활성 모드와 절전 모드 사이를 자주 전환하면 ARM이 손실됩니다.
uɐɪ

3

12MHz ~ 1MHz를 비교하는 것은 편향되어 있습니다. 높은 클럭 속도는 MHz 당 더 적은 전류를 필요로합니다. 예를 들어 최신 MSP430은 활성 모드에서 8 / 16MHz로 MHz 당 80-120uA까지 낮아질 수 있습니다.

올바르게 작성된 코드는 MCU의 활성 모드를 1 % (또는 0.1 %) 미만의 시간으로 유지하므로 전력 모드는 여기서 큰 차이를 만듭니다.

실제로 MSP430은 다른 MCU가 깨어나거나 RAM 내용을 유지하지 못하는 매우 유용한 저전력 상태로 인해 이길 수 없습니다 (TI 직원이 아닙니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.