2010-05-25 4 views
13

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

+21

Используйте оператор '//' optimization. :) – SLaks

+0

Циклы, не используемые вашей программой, по-прежнему будут использоваться в качестве незанятых процессов. Я полагаю, если ваш процессор настроен, чтобы дать ему меньше энергии, когда ему нужно меньше циклов, вам просто нужно сделать свой код быстрее. В противном случае, ваш единственный вариант - '#include" gogreen.h "'. – corsiKa

+4

@ Исключает, что оптимизация доступна только для C++ (и новее, чем варианты ANSI C), поэтому лучше использовать/**/operator: -p – fortran

ответ

6

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

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

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

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

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

5

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

+0

Уход за выравниванием -1? – Jeriko

+0

Я не сделал -1, но мой ноутбук потребляет меньше энергии, если процессор работает медленнее, поэтому время выполнения обратно пропорционально потребляемой мощности. –

+0

Вы не можете требовать, чтобы время выполнения обратно пропорционально потребляемой мощности. Это означает, что я мог бы написать 10-летний сценарий и ожидать, что он потребляет один джоуль энергии. Я соглашусь на предыдущую двусмысленность. Как насчет «использования мощности пропорционально количеству операций ЦП, учитывая, что мощность, требуемая для каждой операции, обратна последовательности, с которой выполняются указанные операции (вместе с миллионом другие факторы, которые остаются неизменными, потому что я пытался написать общее правило, а не тавтологию, необходимую для того, чтобы встать в суде) »? : P – Jeriko

0

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

0

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

5

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

+0

, и я мог бы добавить: не держите периферийные устройства в «открытом» состоянии, если вы их действительно не используете (например, сохранение bluetooth/wi-fi open уменьшает * много * времени автономной работы в случае мобильных устройств. – INS

1

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

Вот как такие программы, как , уменьшают потребление энергии/тепло.

+0

Это должно –

+2

@Axel: Да, я упомянул об этом ... –

3

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

+0

В целом, я был довольно разочарован в упомянутой статье, к сожалению. –

+0

Теперь я, вероятно, никогда не прочту его. –

3

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

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

Смежные вопросы