Мы можем оптимизировать код для сокращения потребляемой мощности?

Есть ли любые методы для оптимизации кода для обеспечения меньшей потребляемой мощности. Архитектура является ARM.language, C

14
задан Manik Mahajan 24 October 2012 в 11:22
поделиться

9 ответов

С сайта технической справки ARM:

Характеристики ARM11 MPCore процессор, улучшающий энергию Эффективность включает:

  • точное предсказание перехода и возврата подпрограммы, сокращение количества неправильной выборки инструкций и операции декодирования
  • использование кешей с физической адресацией, что уменьшает количество кешей промывает и доливает, экономя энергию в в системе
  • использование MicroTLB снижает энергопотребление при трансляции и поиски защиты каждый цикл
  • кеши используют информацию о последовательном доступе, чтобы уменьшить количество доступ к RAM тегов и к нежелательные данные RAM.

В процессоре ARM11 MPCore широко используются также закрытые часы и ворота для отключения входов в неиспользуемые функциональные блоки. Только логика активно используется для выполнения расчет потребляет любые динамические власть.

Основываясь на этой информации, я бы сказал, что процессор делает за вас много работы по экономии энергии. Любая потеря мощности будет происходить из-за плохо написанного кода, который выполняет больше обработки, чем необходимо, что вам все равно не нужно. Если вы хотите сэкономить электроэнергию, общий дизайн вашего приложения будет иметь больший эффект. Доступ к сети, рендеринг экрана и другие энергоемкие операции будут иметь большее значение для энергопотребления.

6
ответ дан 1 December 2019 в 12:26
поделиться

Оптимизация кода для использования меньшего количества энергии, по сути, просто оптимизация кода. Независимо от того, являются ли ваши мотивы денежными, социальными, политическими или тому подобными, меньшее количество циклов процессора = меньше потребляемой энергии. Я пытаюсь сказать, что вы, вероятно, можете заменить «энергопотребление» на «время выполнения», поскольку они, по сути, были бы прямо пропорциональны - и, следовательно, вы можете добиться большего успеха, если не «отпугиваете» людей вопрос, связанный с питанием. Однако я могу поправиться :)

5
ответ дан 1 December 2019 в 12:26
поделиться

В июльском выпуске журнала ACM за июль 2010 г. есть статья об энергоэффективных алгоритмах, которая может вас заинтересовать. Я еще не читал его, поэтому не могу поделиться своей мудростью.

3
ответ дан 1 December 2019 в 12:26
поделиться

Да. Используйте профайлер и посмотрите, какие программы используют большую часть процессора. На ARM вы можете использовать некоторые JTAG разъемы, если они доступны (я использовал Lauterbach как для отладки, так и для профилирования). Основная проблема заключается в том, чтобы перевести процессор, когда он простаивает, в состояние с низким потреблением (глубокий сон). Если вы не можете значительно снизить процент использования процессора (например, с 80% до 50%), это не будет иметь большого значения. В зависимости от того, в какой операционной системе вы работаете, опции могут отличаться.

5
ответ дан 1 December 2019 в 12:26
поделиться

Старайтесь оставаться в памяти чипа (кэше) для незадействованных циклов, сведите ввод-вывод к минимуму, сведите к минимуму переключение битов на шинах. NV память, такая как proms и flash потребляют больше энергии для хранения нулей, чем единиц (вот почему они стираются до единиц, на самом деле это ноль, но транзистор(ы) инвертируют бит, прежде чем вы увидите его, нули хранятся как единицы, единицы хранятся как нули, это также почему они деградируют до единиц, когда они выходят из строя), я не знаю о летучей памяти, dram использует вдвое меньше транзисторов, чем sram, но должен быть обновлен.

Чтобы все это имело значение, вам нужно начать с системы с меньшим энергопотреблением, так как вышеперечисленное может быть незаметно. Не используйте ничего от intel, например.

3
ответ дан 1 December 2019 в 12:26
поделиться

Сведите количество операций ввода-вывода к минимуму.

0
ответ дан 1 December 2019 в 12:26
поделиться

Если вы не используете Windows XP+ или более новую версию Linux, вы можете запустить фоновый поток, который не делает ничего, кроме HLT.

Именно так программы типа CPUIdle снижают энергопотребление/перегрев.

1
ответ дан 1 December 2019 в 12:26
поделиться

На некоторых процессорах ARM можно снизить энергопотребление, переведя регулятор напряжения в режим ожидания.

0
ответ дан 1 December 2019 в 12:26
поделиться

Если процессор настроен на использование меньшего количества энергии, когда ему требуется меньше циклов, то простым решением будет просто заставить ваш код работать более эффективно. В противном случае вы мало что можете сделать, если операционная система не предоставляет какие-либо функции управления питанием.

0
ответ дан 1 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: