Qué beneficios tenemos en reducción de ciclos de reloj

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

Respuestas (1)

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.

¿Suponiendo que la potencia promedio de cada ciclo de reloj sea igual y que los ciclos de reloj se reduzcan en un 50 % entre dos modos de baja potencia? entonces mi consumo total de energía se reducirá exactamente en un 50%? o un poco mas o menos? Suponiendo también que la corriente de baja potencia para la implementación de ambos algoritmos sea igual.
@Hassan: En ese caso, la potencia general se reducirá en un 50 % como máximo. Esto se debe a que todavía se utiliza una potencia finita durante el intervalo de sueño. Esto puede ser importante si el intervalo de suspensión es largo en comparación con el intervalo de ejecución completo. Por ejemplo, considere una ejecución completa de 1 ms cada 10 segundos a 10 mA y 1 uA el resto del tiempo. La energía de funcionamiento y la energía de reposo son las mismas, y la mitad del tiempo de funcionamiento solo reducirá la potencia total en un 25 %.