код компилятора c, оптимизированный для низкого энергопотребления

Я хочу сделать встроенный компилятор кода «C», который имеет возможность выполнять программу с минимальным количеством энергии, обычные компиляторы оптимизируют скорость или размер. Это будет означать, что компилятор уменьшит количество логических переключений как на адресных линиях, так и на линиях данных, потому что каждое переключение заряжает энергией.


person gary    schedule 14.09.2014    source источник
comment
Хорошо для вас, и каков ваш вопрос?   -  person EWit    schedule 14.09.2014
comment
Компилятор может сделать только так много с данным ему кодом - вы, вероятно, можете добиться гораздо большего снижения мощности, оптимизировав свой код - чем меньше ненужных вычислений и операций ввода-вывода вы выполняете, тем меньше энергии вы используете.   -  person Paul R    schedule 14.09.2014
comment
Для начала, если бы у меня была программа для счета от 32 до 0, и я хотел бы уменьшить требуемую энергию; В приведенной ниже программе 2 рассеиваемая мощность распределяется по микропроцессору, потому что младший значащий бит не подвергается перегрузке! Вероятно, я мог бы увеличить тактовую частоту процессора с 5 ГГц до 50 ГГц, потому что нет перегрузки LSB! Программа 1 For (x=32;x!=0;x--); Программа 2 – То же самое. х=0x80000000; do { x=x››1;} while (x) – gary 33 минуты назад   -  person gary    schedule 14.09.2014
comment
В качестве отправной точки мне нужна имитационная модель кремния микроконтроллера — емкости внутренних дорожек и токи утечки — а также полный эмулятор отладки с памятью трасс. Я помещаю файл трассировки в имитационную модель, и теоретическое количество энергии для запуска программы рассчитывается в джоулях. Затем я могу настроить свой программный код, чтобы избавиться от очевидных потерь.   -  person gary    schedule 14.09.2014
comment
простой пример чтения с опережением initialize vars: before c code source: a=0xaaaaaaaa; б=0x55555555; с=0xааааааааа; после оптимизации строки кода были перемещены: a=0xaaaaaaaa; с=0xааааааааа; б=0x55555555;   -  person gary    schedule 15.09.2014
comment
в ядре процессора есть несколько 128-битных регистров с основанием 1 и набор инструкций для их использования, они намного быстрее и потребляют гораздо меньше энергии, чем регистры с основанием 2. но может считать только от 0 до 128   -  person gary    schedule 17.05.2015


Ответы (2)


Удачи в достижении этой цели (разработка собственного компилятора C, оптимизирующего энергопотребление; для этого вам нужно получить докторскую степень). Возможно, вы могли бы попробовать использовать MELT для настройки GCC для этой цели.

См. также проект MAGEEC; но я думаю, вам не следует ожидать в ближайшее время найти компилятор, волшебным образом и автоматически оптимизирующий для маломощных. Это должна быть оптимизация всей программы. (вам может понадобиться помощь, полуавтоматическая оптимизация).

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

person Basile Starynkevitch    schedule 14.09.2014

Это похвальная цель и практичная, в зависимости от того, насколько современно ваше оборудование. Я не думаю, что вы можете многое сделать для старого оборудования. Я также не думаю, что оптимизация логических переключателей (для минимизации тока утечки?) принесет вам много пользы, если только ваша программа не будет очень-очень простой и очень-очень маленькой. Проводили ли вы какие-либо эксперименты, подтверждающие, что вы можете добиться значительных успехов?

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

Я выступаю с презентацией на тему того, как писать приложения для повышения энергоэффективности. Я не могу передать его вам, потому что он еще не опубликован. Я надеюсь написать серию блогов на ту же тему в течение следующих нескольких месяцев. Я написал и другие статьи о программном обеспечении и энергоэффективности, если вы хотите найти меня на веб-сайте программного обеспечения Intel. Хочу предупредить: большая часть моей работы, связанной с энергопотреблением, связана с процессорами Intel GP и HPC. Эти принципы по-прежнему применимы к мобильным процессорам Intel и другим современным архитектурам процессоров, предназначенным для рынка мобильных устройств и встраиваемых систем с низким энергопотреблением.

person Taylor Kidd    schedule 14.09.2014