Si implemento una función con varios algoritmos, pero todos proporcionan la misma funcionalidad y mido el número total de ciclos de reloj necesarios para ejecutar el programa en una plataforma MCU, ¿qué beneficios tendrá la reducción en el recuento de ciclos de reloj?
Por ejemplo, algo A para la función my_function() requiere 1000 CC y Algo B para la misma función requiere 500 CC. Después de la ejecución, mi sistema pasa al modo de bajo consumo.
Un beneficio obvio es que debido a que he reducido el tiempo de ejecución en un 50%, mi sistema entrará rápidamente en modo de bajo consumo, mejorando así. Sin embargo, quiero preguntar si la reducción en los ciclos de reloj en sí misma ahorrará energía de la conmutación del transistor, etc. y puedo decir con seguridad que también se reduce en un 50%? no entonces por favor explique esto ya que no puedo entender esta idea. Gracias
En una primera aproximación, sí, reducir el tiempo de ejecución entre los períodos de apagado de 1000 ciclos a 500 ciclos reducirá a la mitad la potencia total consumida.
Al mirar más de cerca, hay varias razones por las que la reducción de potencia podría no ser exactamente la mitad, pero la potencia aún se reducirá significativamente. Por ejemplo, la CPU probablemente no consuma la misma corriente promedio para cada instrucción, la potencia de suspensión no es completamente cero, etc.
Al escribir el código del microcontrolador para dispositivos que funcionan con baterías, a menudo es útil optimizar para la menor cantidad de ciclos de instrucción, por la razón que usted indica. Esto puede significar usar más memoria de programa y cosas por el estilo. Recuerde que el uso de la memoria solo importa si se queda sin ella. Técnicas como desenrollar bucles críticos de uso frecuente y crear rutinas críticas cuidadosamente a mano en ensamblador pueden marcar la diferencia. Sin embargo, su arquitectura general de firmware probablemente marcará la mayor diferencia. Esto incluye decisiones como qué hacer en las rutinas de interrupción, si usar una arquitectura de bucle de eventos principal en lugar de un programador de tareas cooperativas, etc.
Hasan
olin lathrop