Количество джоулей, используемых для каждой команды, зависит от используемого процессора и инструкции, на которую вы смотрите. Я считаю, что ARM и процессоры Atmel AVR не имеют реального управления электропитанием, что упрощает работу.
Сколько энергии использует инструкция, сколько и какой тип схемы на кремнии используется. Это означает, что попытка теоретически вычислить количество джоулей будет сложной, поскольку она не просто связана с количеством циклов, которые использует инструкция.
Так что вам придется делать это экспериментально. Вот что я буду делать.
- Удалить все оптимизации компилятора
- ли частотный анализ, чтобы найти горячие операции и выбрать наиболее часто используемых. (Я предполагаю, что мы не говорим инструкции ASM, но инструкции «C».)
- Запишите цикл, повторяющий команду, скажем, 20 раз, и пропустите цикл в течение нескольких секунд как минимум
- Заменить ваш аккумулятор с электропитанием.
- Используйте резистор серии для измерения мощности, как указано в комментарии, но (конечно) масштабируйте напряжение соответствующим образом.
- Запустите программу циклирования и получите статистическую выборку мощности.
- Сделайте это для всех ваших горячих операций.
- Compute потребления энергии для вашей программы
- Validate использование мощности от измерений реальной мощности выполнения вашей программы
- Adjust (т.е. нормализует) ваши вычислений по мере необходимости
Вы также должны учитывать иерархию памяти. Доступ к памяти чипа берет энергию. Когда операции или данные кэшируются, это изменит ваше уравнение энергии.
Я полагаю, что это должно работать, но не знаю. Удачи.
Возможно ... В джоулях? Во всяком случае, поставьте (маленький) резистор последовательно с батареей, чтобы измерить ток. Измерьте также напряжение. Таким образом, вы можете получить мгновенную мощность. Интегрируйте его во времени, и вы получите энергию. – frarugi87