Организация данных для низкого энергопотребления
Потребление энергии по отношению к физическому размеру электронного оборудования возросло, поскольку компоненты стали меньше и более плотно упакованы. В сочетании с высокими рабочими частотами это привело к неприемлемому уровню рассеиваемой мощности. На память приходится значительная часть потребляемой мощности, и этот вклад можно уменьшить за счет оптимизации организации данных – способа их хранения. [1]
Мотивация
[ редактировать ]Оптимизация энергопотребления в электронных системах с высокой плотностью памяти стала одной из основных задач для таких устройств, как мобильные телефоны , встроенные системы и беспроводные устройства. По мере увеличения количества ядер на одном чипе увеличивается и энергопотребление устройств. Исследования распределения энергопотребления в смартфонах и дата-центрах показали, что подсистема памяти потребляет около 40% от общей мощности. Исследование показывает, что в серверных системах память потребляет примерно в 1,5 раза больше энергии, чем ядро. [2]
Организация данных памяти адресной шины с низким энергопотреблением
[ редактировать ]системного уровня, Шины такие как внекристальные шины или длинные внутрикристальные шины между IP-блоками, часто являются основными источниками энергопотребления из-за их большой нагрузочной емкости. Результаты экспериментов показали, что за счет организации данных активность шины при доступе к памяти можно снизить до 50%. Рассмотрим случай компиляции кода, написанного на языке программирования C :
int A[4][4], B[4][4];
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
B[i][j] = A[j][i];
}
}
Большинство существующих компиляторов C помещают многомерный массив в построчной форме, то есть построчно: это показано в «неоптимизированном» столбце в соседней таблице. В результате доступ к памяти во время выполнения этого кода не имеет последовательного доступа к памяти, поскольку доступ к элементам в столбцах осуществляется последовательно. Но можно изменить способ их размещения в памяти, чтобы максимизировать количество последовательных обращений к памяти. Этого можно добиться, упорядочив данные, как показано в «оптимизированном» столбце таблицы. Такое перераспределение данных компилятором позволяет существенно снизить энергопотребление за счет доступа к памяти. [3]
неоптимизированный | оптимизированный |
---|---|
А[0][0] | А[0][0] |
А[0][1] | Б[0][0] |
А[0][2] | А[1][0] |
А[0][3] | Б[0][1] |
А[0][0] | А[2][0] |
А[1][0] | Б[0][2] |
А[1][1] | А[3][0] |
. | Б[0][3] |
. | А[0][1] |
Б[0][0] | Б[1][0] |
Б[0][1] | А[1][1] |
Б[0][2] | Б[1][1] |
Б[0][3] | . |
Б[1][0] | . |
. | . |
. | А[3][3] |
Б[3][3] | Б[3][3] |
Преобразования структуры данных
[ редактировать ]Этот метод включает в себя преобразования исходного кода , которые либо изменяют структуру данных, включенную в исходный код, либо вводят новые структуры данных, либо, возможно, изменяют режим доступа и пути доступа с целью снижения энергопотребления. Для выполнения таких преобразований используются определенные методы.
Сортировка объявлений массива
[ редактировать ]Основная идея состоит в том, чтобы изменить порядок объявления локальных массивов так, чтобы наиболее часто используемые массивы располагались на вершине стека таким образом, чтобы к часто используемым ячейкам памяти можно было обращаться напрямую. Для достижения этой цели объявления массивов реорганизуются так, чтобы сначала размещались массивы, к которым чаще всего обращаются, что требует либо статической оценки, либо динамического анализа частоты доступа к локальным массивам.
Изменение области массива (от локального к глобальному)
[ редактировать ]В любой вычислительной программе локальные переменные хранятся в стеке программы, а глобальные переменные хранятся в памяти данных. Этот метод включает преобразование локальных массивов в глобальные массивы, чтобы они хранились в памяти данных, а не в стеке. Местоположение глобального массива может быть определено во время компиляции, тогда как местоположение локального массива может быть определено только при вызове подпрограммы и зависит от значения указателя стека. Как следствие, доступ к глобальным массивам осуществляется в режиме адресации со смещением с константой 0, тогда как доступ к локальным массивам, за исключением первого, осуществляется с постоянным смещением, отличным от 0, и это обеспечивает снижение энергии.
Изменение размера массива (вставка временного массива)
[ редактировать ]В этом методе элементы, к которым обращаются чаще, идентифицируются с помощью профилирования или статических соображений. Копии этих элементов затем сохраняются во временном массиве, доступ к которому можно получить без каких-либо ошибок в кэше данных. Это приводит к значительному снижению энергопотребления системы, но также может снизить производительность. [1]
Использование оперативной памяти
[ редактировать ]Встроенные кэши используют статическое ОЗУ , которое потребляет от 25% до 50% общей мощности чипа и занимает около 50% общей площади чипа. Память блокнота занимает меньше места, чем встроенный кэш. Обычно это снижает энергопотребление блока памяти, поскольку меньшая площадь подразумевает уменьшение общей коммутируемой емкости. Современные встроенные процессоры, особенно в области мультимедийных приложений и графических контроллеров, имеют встроенную блокнотную память. В системах с кэш-памятью отображение элементов программы выполняется во время выполнения, тогда как в системах с блокнотной памятью это делается либо пользователем, либо автоматически компилятором с использованием подходящего алгоритма. [4]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б Брандолезе, Карло; Форначари, Уильям; Саличе, Фабио; Сьюто, Донателла (октябрь 2002 г.). «Влияние преобразований исходного кода на мощность и энергопотребление программного обеспечения» . Журнал схем, систем и компьютеров . 11 (5): 477–502. дои : 10.1142/S0218126602000586 .
- ^ Панда, PR; Патель, В.; Шах, П.; Шарма, Н.; Шринивасан, В.; Сарма, Д. (3–7 января 2015 г.). Методы оптимизации энергопотребления для DDR3 SDRAM . 28-я Международная конференция по проектированию СБИС (VLSID), 2015. IEEE. стр. 310–315. дои : 10.1109/VLSID.2015.59 .
- ^ «Методы оптимизации энергопотребления для DDR3 SDRAM»
- ^ «Блокнотная память: альтернатива конструкции встроенной кэш-памяти во встраиваемых системах» (PDF) .