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

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

Ответы [ 9 ]

6 голосов
/ 25 мая 2010

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

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

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

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

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

5 голосов
/ 25 мая 2010

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

5 голосов
/ 25 мая 2010

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

3 голосов
/ 26 мая 2010

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

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

3 голосов
/ 25 мая 2010

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

1 голос
/ 25 мая 2010

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

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

0 голосов
/ 25 мая 2010

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

0 голосов
/ 25 мая 2010

Держите IO до минимума.

0 голосов
/ 25 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...