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

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

Ответы

Ответ 1

С технического сайта ARM:

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

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

Удерживайте IO до минимума.

Ответ 9

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