Este documento cita 60 DMIPS / mW para um Cortex M0, contra 31 DMIPS / mW para um M3. (O último não concorda com os números deste documento , que citam 1,25 DMIPS / MHz e 0,19 mW / MHz, fornecendo 6,6 DMIPS / mW.)
Alguém sabe como o desempenho / potência M0 se compara aos controladores de 8/16 bits como AVR, PIC e MSP430? E qual é o problema com os números do M3?
microcontroller
performance
Federico Russo
fonte
fonte
Respostas:
Aqui estão algumas dicas que eu posso fornecer. As especificações fornecidas pelo NXP são para todo o chip (núcleo, memória, periféricos). A especificação que o ARM fornece é baseada apenas no núcleo. Como os números são derivados de maneira diferente, é realmente difícil fazer a comparação.
Então, proponho que recuemos e analisemos dois dispositivos. Um MCU baseado em NXP M0 e um MCU baseado em MXP M3.
Para o MCU baseado em M0, vejamos o LPC1111. Quando este MCU estiver executando um loop ocioso ocupado, ele consumirá 3mA de corrente na taxa de clock de 12MHz. Isso produz 250uA / MHz, que em 3,3V é 825uW / MHz.
Para o MCU baseado em M3, vejamos o LPC1311. Quando este MCU estiver executando o mesmo loop ocioso ocupado, consumirá 4mA de corrente em 12MHz. Rendimento 333,3uA / MHz, que é 1,1mW / MHz.
Se olharmos para um MSP430C1101 MCU (16 bits), veremos que ele usará 240uA a 1MHz quando a tensão for de 3V. Isso produz 720uW / MHz.
A seguir, vejamos o ATMega328 (usado no Arduino Uno). Vemos 200uA usados em 1MHz com uma voltagem de 2V. Isso produz 400uA / MHz.
Também deve ser observado que o MSP430 e o AVR são especificados de maneira diferente. O consumo de energia é dado em 1 MHz, enquanto que o M0 e o M3 são dados em 12MHz. Isso significa que o M0 e o M3 têm ineficiências de escala de até 12MHz incorporadas em seus números.
Esses valores são todos os números de consumo atual ativos. Se você observar o consumo atual quando o dispositivo estiver no modo de suspensão, verá ordens de magnitude menos energia sendo usadas. A vantagem que o M0 de 32 bits oferece é que ele pode realizar muito mais trabalho em menos tempo que o MCU de 8 e 16 bits. Isso significa que, para uma determinada carga de trabalho, passará muito mais tempo no estado de suspensão. O M0 nas mãos de um bom engenheiro geralmente obtém uma eficiência de energia muito melhor do que um MCU de 8 bits nas mãos de um engenheiro menos qualificado, apesar das diferenças no consumo de energia ativo.
Pela minha experiência, o M0 é tão próximo do consumo de energia ativa de 16 e 8 bits que você pode compensar muitas diferenças de aplicação. Além disso, muitas vezes o consumo de energia de tudo o que você tem pendurado no MCU diminui o consumo do MCU. Portanto, para muitas aplicações, a eficiência da MCU não é a coisa mais importante.
Espero que ajude. É um longo caminho para dizer que o consumo de energia é um pouco pior, mas você faz muito mais com esses ciclos de clock do que outros chips. Então, isso realmente depende da sua aplicação.
fonte
A comparação de 12MHz a 1MHz é tendenciosa - as taxas de clock mais altas exigem menos corrente por MHz. Por exemplo, os MSP430 mais recentes podem chegar a 80-120uA por MHz, com 8 / 16MHz no modo ativo.
Vale ressaltar que o código escrito corretamente mantém o modo ativo do MCU abaixo de 1% (ou mesmo 0,1%) do tempo, portanto os modos de energia fazem muita diferença aqui.
Na vida real, é difícil vencer os MSP430 (eu não sou um funcionário da TI) devido a estados de baixa energia muito úteis nos quais outros MCUs demoram mais para serem ativados ou não mantêm o conteúdo da RAM, o que é ridículo.
fonte