Организация данных для малой мощности - Data organization for low power
Потребляемая мощность относительно физического размера электронное оборудование увеличилось, поскольку компоненты стали меньше и более плотно упакованы. В сочетании с высокими рабочими частотами это привело к неприемлемому уровню рассеивания мощности. объем памяти приходится большая часть потребляемой мощности, и этот вклад можно уменьшить за счет оптимизации организации данных - способа хранения данных.[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] | B [0] [0] |
A [0] [2] | А [1] [0] |
А [0] [3] | B [0] [1] |
А [0] [0] | A [2] [0] |
А [1] [0] | B [0] [2] |
А [1] [1] | A [3] [0] |
. | B [0] [3] |
. | А [0] [1] |
B [0] [0] | B [1] [0] |
B [0] [1] | А [1] [1] |
B [0] [2] | B [1] [1] |
B [0] [3] | . |
B [1] [0] | . |
. | . |
. | A [3] [3] |
B [3] [3] | B [3] [3] |
Преобразования структуры данных
Этот метод предполагает исходный код преобразования, которые либо изменяют структуру данных, включенную в исходный код, либо вводят новые структуры данных, либо, возможно, изменяют режим доступа и пути доступа с целью снижения энергопотребления. Для выполнения таких преобразований используются определенные методы.
Сортировка объявления массива
Основная идея - изменить локальный множество упорядочение деклараций, так что массивы, к которым чаще всего обращаются, помещаются наверху стека таким образом, чтобы доступ к часто используемым ячейкам памяти осуществлялся напрямую. Для этого объявления массивов реорганизуются, чтобы на первое место помещались наиболее часто используемые массивы, что требует либо статической оценки, либо динамического анализа частоты доступа к локальным массивам.
Изменение области действия массива (с локального на глобальный)
В любой вычислительной программе локальные переменные хранятся в стеке программы и глобальные переменные хранятся в памяти данных. Этот метод включает преобразование локальных массивов в глобальные, чтобы они хранились в памяти данных, а не в стеке. Местоположение глобального массива может быть определено во время компиляции, тогда как местоположение локального массива может быть определено только при вызове подпрограммы и зависит от значения указателя стека. Как следствие, доступ к глобальным массивам осуществляется в режиме адресации со смещением с константой 0, в то время как к локальным массивам, за исключением первого, доступ осуществляется с постоянным смещением, отличным от 0, и это обеспечивает снижение энергии.
Изменение размера массива (временная вставка массива)
В этом методе элементы, к которым осуществляется более частый доступ, идентифицируются с помощью профилирования или статических соображений. Копия этих элементов затем сохраняется во временном массиве, к которому можно получить доступ без каких-либо промахов в кэше данных. Это приводит к значительному снижению энергопотребления системы, но также может снизить производительность.[1]
Использование оперативной памяти
Использование кешей на кристалле статическая RAM который потребляет от 25% до 50% общей мощности чипа и занимает около 50% общей площади чипа. Память блокнота занимает меньше места, чем кеш-память на кристалле. Это обычно снижает энергопотребление блока памяти, поскольку меньшая площадь подразумевает уменьшение общей коммутируемой емкости. Современные встроенные процессоры, особенно в области мультимедийных приложений и графических контроллеров, имеют встроенную память блокнота. В системах с кэш-памятью отображение элементов программы выполняется во время выполнения, тогда как в системах с оперативной памятью это выполняется либо пользователем, либо автоматически компилятором с использованием подходящего алгоритма.[4]
Смотрите также
Рекомендации
- ^ а б «ВЛИЯНИЕ ТРАНСФОРМАЦИИ ИСТОЧНИКА КОДА НА ЭНЕРГИЮ И ПОТРЕБЛЕНИЕ ЭНЕРГИИ». CiteSeerX 10.1.1.97.6254. Цитировать журнал требует
| журнал =
(помощь) - ^ Panda, P.R .; Patel, V .; Shah, P .; Sharma, N .; Srinivasan, V .; Сарма, Д. (3–7 января 2015 г.). Методы оптимизации энергопотребления для DDR3 SDRAM. 28-я Международная конференция по проектированию СБИС (VLSID), 2015. IEEE. С. 310–315. Дои:10.1109 / VLSID.2015.59.
- ^ «Методы оптимизации энергопотребления для DDR3 SDRAM»
- ^ «Электронная память: альтернативный дизайн для встроенной кэш-памяти во встроенных системах» (PDF). Цитировать журнал требует
| журнал =
(помощь)