¿Qué beneficios tenemos en la reducción de los ciclos de reloj?

1

Si implemento una función con múltiples algoritmos pero todos brindan la misma funcionalidad y mido la cantidad 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á en el modo de bajo consumo de energía rápidamente mejorando. Sin embargo, quiero preguntar si la reducción de los ciclos de reloj ahorrará la potencia de la conmutación de transistores, etc. ¿Y puedo decir con seguridad que también se reduce en un 50%? entonces no explique esto ya que no puedo comprender esta idea. Gracias

    
pregunta Hassan

1 respuesta

3

En la primera aproximación, sí, reducir el tiempo de ejecución entre los períodos de apagado de 1000 ciclos a 500 ciclos reducirá la potencia general consumida a la mitad.

En una mirada más cercana, hay varias razones por las cuales la reducción de potencia podría no ser exactamente la mitad, pero la potencia aún se reducirá significativamente. Por ejemplo, es probable que la CPU 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 operados por batería, a menudo es útil optimizar los ciclos de instrucción mínimos, por la razón que indique. Esto puede significar el uso de más memoria de programa y similares. Recuerda que el uso de la memoria solo importa si te acabas. Las técnicas como desenrollar los bucles críticos que se usan con frecuencia y las rutinas críticas cuidadosamente hechas a mano en ensamblador pueden hacer una diferencia. Sin embargo, su arquitectura de firmware en general probablemente hará la mayor diferencia. Esto incluye decisiones como qué hacer en las rutinas de interrupciones, ya sea para usar una arquitectura de bucle de eventos principal según se aplique a un programador de tareas cooperativo, etc.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas