Potencia medida Atmel AVR32 UC3L

¿Alguien sabe de una hoja de cálculo o herramienta de estimación de potencia, o ha medido datos de potencia para la serie Atmel AVR32 UC3L cuando se ejecuta mucho en una aplicación real?

La hoja de datos en sí no es muy útil, ya que enumera en su mayoría números de potencia mínimos en pocas configuraciones ligeras (por ejemplo, números de Fibonacci giratorios, que son solo sumas y bifurcaciones, con todas las funciones posibles de MCU deshabilitadas) con declaraciones como "Estos números son válidos para el valor medido". condición única y no debe extrapolarse a otras frecuencias". [ Hoja de datos AVR32UC3L , tabla 7-5, página 44].

EDITAR: pensé que la pregunta era bastante clara, pero para ser específicos: estoy interesado en los datos de potencia medidos o en una hoja de cálculo de estimación de potencia para este microcontrolador en particular, no en la teoría de potencia del microcontrolador en general .

¿Has probado a preguntarle a Atmel?
@León sí; si obtengo una respuesta significativa de ellos, publicaré la información aquí. Honestamente, estoy más interesado en datos de usuarios reales. Los proveedores hacen todo lo posible para mostrar cuán bajos pueden ser. Son menos habladores sobre el uso de gama alta o incluso "típico".
@WJL, he usado dos líneas de chips y en ambos chips la información del proveedor ha sido precisa para el consumo de energía. En ambos casos, debe comprender todas las características que usan energía, ya que dividen el consumo de energía en partes muy discretas para que pueda determinar el consumo de energía en muchos casos específicos.
Creo que aquí hay una gran confusión. @WJL afirma que la potencia varía con las instrucciones utilizadas, PERO es muy probable que lo que se ve sean variaciones en la proporción de vigilia: sueño, como han señalado otros. Es esencial que @WJL proporcione una declaración más clara de su comprensión si se quieren lograr los mejores resultados.
@Russell Su afirmación no coincide con la hoja de datos , que dice que extrae 260 uA/MHz cuando ejecuta un bucle numérico de Fibonaci y 165 uA/MHz cuando ejecuta un bucle de algoritmo de división. Esta diferencia de poder dependiendo de lo que esté funcionando concuerda con mi experiencia con otros microcontroladores. Si dice que esto no se debe a diferencias en las instrucciones, ¿cuál es su explicación alternativa?
@Kortuk dice que la información del proveedor es "puntual", pero ¿debería esperar 260 uA/MHz o 165 uA/MHz o ("válido solo para la condición medida y no debe extrapolarse") algo más? De todos modos, no estoy preguntando sobre los microcontroladores en general, estoy preguntando sobre el Atmel AVR32 UC3L.
@Wjl, entiendo, como expertos en un área, tratamos de compartir el conocimiento que tenemos para ayudar.
@Kortuk no me malinterpreten, aprecio los comentarios y hago lo mismo cuando respondo otras preguntas. Y podría tener toda la razón , pero hasta ahora no cuadra y no estoy más cerca de una respuesta a mi pregunta. =)

Respuestas (2)

Sin afirmaciones mías :-) - No sé lo suficiente sobre esta CPU para afirmar nada. Lo siguiente se basa en la experiencia, la hoja de datos y una buena ayuda de estimación de invitados.

Resumen: No hay suficientes datos PERO

  • 200 +/- 50uA/MHz + asignación para periféricos activados según la Tabla 7-6 p46 en la hoja de datos

Copiado a continuación.

En tu posición yo

  • Apóyate fuertemente en Atmel.

  • Hacer algunas medidas yo mismo.

  • Refine el método rudimentario que se sugiere a continuación.

ingrese la descripción de la imagen aquí

Curiosamente, el total de corrientes periféricas por debajo suma alrededor de 100 uA/MHz, por lo que predomina el consumo central. Esta sugerencia

  • un mínimo de unos 150 uA/MHz (un poco menos de 165) y

  • un máximo de alrededor de 360 ​​uA/MHz (basado en los dos ejemplos de hoja de datos mal definidos = 260 + 100 de la tabla).

No descartaría a la ligera los números de Fibonacci como una "carga ligera".
Una parte significativa del consumo de corriente de un procesador CMOS proviene de la carga y descarga de nodos capacitivos, ya sean bits de memoria, pines de puerto, registros o lo que sea. Cualquier cosa que provoque más cambios de bits es probable que requiera más potencia. No sé por qué sus rutinas de división tienen menos potencia, pero algo que "simplemente agrega" es potencialmente capaz de cambiar tantos bits como la mayoría de las cosas.

Gracias por tu respuesta, haces algunos buenos puntos. Todavía prefiero los datos reales y estoy esperando una respuesta de Atmel, pero mientras tanto, estoy adoptando un enfoque similar al que ha sugerido.

Un microcontrolador no funciona "pesadamente". O se está ejecutando o no se está ejecutando. Algunos sabores tienen un modo de espera adicional, pero eso no es relevante para su pregunta. El consumo de energía será una función de la frecuencia del reloj, el voltaje de la energía y qué periféricos están encendidos.

El consumo de energía no es realmente una función de qué instrucciones se ejecutan. A la misma velocidad de reloj y voltaje de alimentación, se necesitará prácticamente la misma potencia, ya sea que se encuentre en un bucle NOP/JUMP o que intente calcular Pi hasta el millonésimo lugar decimal.

En sistemas grandes con cachés y un sistema operativo que puede suspender procesos, el consumo de energía puede aumentar a medida que el procesador realiza más trabajo. Esto se debe a que el sistema operativo pone el procesador en modo inactivo o baja el reloj cuando no hay nada que hacer. Cuando le asigne una tarea, tendrá algo que hacer y el sistema operativo no lo pondrá en modo inactivo. Sin embargo, los microcontroladores no funcionan de esa manera.

En realidad, el consumo de energía depende mucho de las instrucciones ejecutadas en la mayoría de los microcontroladores. Notará que en la hoja de datos vinculada hay una diferencia del 60% en el poder entre sus ejemplos de pruebas de algoritmo "Fibonacci" y "división". He visto diferencias del 500% en otros microcontroladores según lo que se esté ejecutando. Entonces, lo que quise decir con "fuertemente" es "ejecutar continuamente haciendo un trabajo real (por ejemplo, lo que sea que la aplicación necesite hacer), sin girar en un pequeño bucle de ejemplo no representativo".
@wjl: No estoy tan al tanto de los AVR, pero otros micros con los que estoy familiarizado no muestran muchos cambios en el poder dependiendo de las instrucciones. No hay caché, por lo que cada instrucción debe ser recuperada, decodificada, la PC actualizada, etc. Encuentro una diferencia del 500% muy difícil de creer para un microcontrolador . ¿Estás seguro de que no iba a dormir cuando no tenía nada que hacer? En sistemas grandes con cachés, reloj variable y otras cosas sofisticadas, ciertamente puede variar mucho, pero usted preguntó acerca de un microcontrolador.
¿Pero no haces algo similar en cualquier firmware de microcontrolador sensible a la energía? ¿En algún lugar del bucle principal puso el micro en modo de suspensión/bajo consumo de energía, para que lo despierte una interrupción?
@Markrages, eso no es lo mismo, lo hicimos, pero puede caracterizar cuánto tiempo está encendido y apagado fácilmente, si cada instrucción tuviera un poder diferente, sería frustrante como mínimo. He usado el MSP430 extensivamente y no tuvo una gran variación cuando se midió. ¿Es posible que el controlador que está usando wjl use mucho menos en promedio y que la instrucción tenga muy poco que ver con el consumo de corriente total, pero solo tenga una pequeña adición que varía ampliamente?
se refería a la respuesta de Olin, "el consumo de energía puede aumentar a medida que el procesador trabaja más". Eso es lo que sucede cuando duermes en mainloop, por las mismas razones que el sistema operativo real en el procesador "real".
No me apresuraría a descartar la idea de que diferentes instrucciones tengan un consumo diferente. Después de todo, es el consumo dinámico el que domina, cambiando bits por así decirlo. Normalmente, las cosas pueden promediarse, pero puede ver cómo, conceptualmente, incluso datos diferentes a la misma instrucción podrían tener un consumo diferente si se repiten lo suficiente como para ser medibles. Considere también diferentes áreas de lógica que pueden activarse para diferentes tipos de instrucciones (este chip tiene un multiplicador dedicado separado de su ALU).
@ChrisStratton, comparto lo que Olin ya tiene, tomé medidas detalladas en el MSP430 y leí bastantes hojas de datos y normalmente dan un promedio. La idea de que podrían ser diferentes es posible, pero me parece que la mayoría de las instrucciones ejecutan los mismos pasos dentro del procesador y parece que eso cubriría la mayoría de los transistores. Vale la pena investigar.