Научная статья на тему 'Экономия энергии посредством компрессии во встроенной среде Java'

Экономия энергии посредством компрессии во встроенной среде Java Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
193
40
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Чен Гуанджиу, Кандемир Махмут, Нарайанан Виджайкришнан, Ирвин Мэри, Вольф Уэйн

Экономия энергии и ресурсов — важный аспект проектирования встроенных цифровых систем. Сжатие — один из популярных механизмов для понижения требований систем к памяти. В этой статье рассматривается влияние сжатия на использование системных ресурсов встроенной виртуальной машиной Java (JVM), а также алгоритмы сжатия. Мы приводим краткий, «ознакомительный» перевод статьи; оригинальный текст доступен в Интернете по адресу http://www.cse.psu.edu/~mdl/paper/p081-chen.pdf.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Экономия энергии посредством компрессии во встроенной среде Java»

e

Компоненты и технологии, № 4'2004 Софт

Экономия энергии посредством компрессии

во встроенной среде Java

Экономия энергии и ресурсов — важный аспект проектирования встроенных цифровых систем. Сжатие — один из популярных механизмов для понижения требований систем к памяти. В этой статье рассматривается влияние сжатия на использование системных ресурсов встроенной виртуальной машиной Java (JVM), а также алгоритмы сжатия.

Мы приводим краткий, «ознакомительный» перевод статьи; оригинальный текст доступен в Интернете по адресу http://www.cse.psu.edu/~mdl/paper/p081-chen.pdf.

Гуанджиу Чен

gchen@cse.psu.edu Махмут Кандемир

kandemir@cse.psu.edu

Виджайкришнан Нарайанан

vijay@cse.psu.edu

Мэри Ирвин

mji@cse.psu.edu

Уэйн Вольф

wolf@princeton.edu

Java стала популярным средством мобильного сетевого программирования, где программируемые устройства обладают ограниченными ресурсами, например, сотовые телефоны или пейджеры. Здесь Java-система должна учитывать совершенно другой набор ограничений и особенностей по сравнению с высокоэффективными рабочими станциями. Три важнейших аспекта, которым удовлетворяют современные JVM, такие, как Sun KVM и HP ChaiVM: функционирование в реальном времени, ограниченный размер памяти и продолжительная сессия. Энергопотребление тоже является важным аспектом для устройств на батарейках, однако средства анализа и оптимизации энергопотребления устройств слабо развиты в таких встроенных JVM. Поэтому необходимо совершенствовать технологии по оптимизации энергопотребления устройств. Потребляемую устройствами памяти энергию можно разделить на две составляющие: динамическую и статическую. «Динамическая» составляющая энергии потребляется во время реального обращения к памяти. «Статическая» составляющая энергии потребляется все время, пока устройство памяти включено, даже если непосредственно к памяти нет обращений. Традиционно исследования оптимизируют «динамическую» составляющую энергии, потребляемой памятью (в дальнейшем для краткости именуемой «динамическая энергия»), посредством минимизации количества обращений к памяти. В то же время «статическая» составляющая (в дальнейшем для краткости именуемая «статическая энергия») достигает 30% общего потребления энергии.

В нашем исследовании мы анализируем «систему на кристалле» с двухуровневой иерархией памяти, где программно управляемая память (SPM — scratch pad memory) используется ядром процессора. Мы использовали компрессию, чтобы понизить размер требуемой памяти. В частности, мы храним код Java-машины и необходимые библиотеки классов в сжатом виде. Таким образом, эффективное число актив-

ных транзисторов, используемых для статического хранения информации, понижается. Мы также используем механизм, который выключает электропитание неиспользуемых областей памяти. Когда ядру процессора необходим сжатый код или классы, необходимый код локализуется и подвергается декомпрессии, после которой загружается в SPM. Таким образом, использование SPM-памяти в сочетании со сжатием хранимых данных понижает потребление динамической и статической энергии системы. Цель нашей работы — исследовать влияние различных параметров при проектировании таких систем. Ниже приводятся проблемы, рассмотренные нами:

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

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

Приложения, архитектура КУМ и БОС

Мы использовали KVM производства Sun, разработанную для ресурсоограниченных сред. Эта виртуальная машина рассчитана на устройства, имеющие всего несколько килобайт памяти, такие, как сотовые телефоны, пейджеры и т. д.

Архитектура «системы на кристалле» включает ядро процессора, SPM-память и два модуля основ------www.finestreet.ru-----------------------

e

Компоненты и технологии, № 4'2004

Софт

CPU Core

A Block of Data

JZ

I SH

Main Memory [KVM Code + Class Libraries)

(a)

Main Memory

(Heap + Runtime Stack +

+ Application + R/W Data)

ADDR(L)

ADDR(H)

SPM

Block

(Ь)

Рисунок. Архитектура памяти:

(а) общий вид, (Ь) блок SPM

ной памяти (рис. 1). Процессор работает на частоте 100 MГц, оба модуля основной памяти и SPM поделены на блоки. Каждый блок основной памяти может быть загружен в один блок SPM. Каждый SPM-блок имеет тег, показывающий, какой именно блок основной памяти в него загружен. Теги устанавливаются SPM-менеджером, встроенным в систему.

Когда процессор генерирует адрес, старшие биты этого адреса сравниваются с каждым тегом параллельно. Если какой-то тег совпадает со старшими битами адреса, то выбирается соответствующий блок SMP-памяти. Младшие биты используются для доступа к содержимому блока. Если же совпадающий тег не найден, то генерируется исключение, после которого нужный блок загружается из основной памяти. Если свободных SPM-блоков нет, то один из ненужных блоков замещается. Признаком «ненужности» служит специальный бит, который после обращения к блоку сразу устанавливается в 1, но периодически сбрасывается в 0. Если в рассматриваемом блоке этот бит равен 0, значит, к блоку давно не обращались, и его можно заменить. Если же «ненужных» блоков не нашлось, то замещается один из «нужных» блоков в циклическом порядке. Основная память делится на 2 части: в одной содержится код KVM и библиотеки классов, а в другой, наряду с кодом приложений, — непосредственно данные, включая кучу и стек.

Количество параметров в этой архитектуре настраиваемо. Объем SPM и основной памяти может модифицироваться. Также может меняться период сброса бита «нужности» в 0 и размер одного блока.

Для тестирования эффективности нашей стратегии экономии энергии мы использовали 12 приложений: калькулятор, встроенный веб-браузер для игр, карманный компьютер и т. д.

----------------------www.finestreet.ru-

Сжатый KVM-код и библиотеки классов

Потребление статической энергии блоками памяти пропорционально их размеру, а также продолжительности времени их включения. Мы пытаемся понизить число включенных блоков памяти посредством хранения в сжатом виде данных только для чтения, включая код KVM и библиотек классов Java. Данные для записи хранятся в несжатом виде. Когда фрагмент данных, принадлежащий сжатому блоку, требуется процессору, весь этот блок декомпрессируется и записывается в SPM-память. Сжатые данные требуют меньше блоков для хранения и, следовательно, потребляют меньше статической энергии. Объем памяти, который занимают данные, зависит от коэффициента используемого алгоритма сжатия. Недостаток заключается в том, что декомпрессия требует времени и дополнительной энергии. Величина этого «штрафа» зависит от того, как часто требуется декомпрессия, и сколько времени (и, соответственно, энергии) требуется на декомпрессию одного блока. Число декомпрессий напрямую зависит от числа блоков, не найденных в SPM (что определяется поведением устройства и конфигурацией SPM). Время (энергия), затраченные на распаковку, зависят от эффективности применяемого алгоритма.

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

Первый представляемый алгоритм сжатия называется X-Match. Он использует словарь данных, составленный из уже встречавшихся слов, и пытается сравнить текущее слово с одним из имеющихся в словаре. Если совпадение встречается, то это слово заменяется коротким кодом из словаря, а иначе пересылаются как есть с добавлением специального бита в начало. Каждый элемент данных состоит ровно из 4 байтов. Полное совпадение происходит, когда все байты во входном слове совпадают с байтами какого-то слова в словаре. Частичное совпадение — когда совпадают хотя бы два символа. Тогда байты, которые не совпали, пересылаются побайтно. Функция, обрабатывающая совпадения, кодирует 3 отдельных поля:

1) место совпадения;

2) тип совпадения, определяющий, какие

именно символы совпали;

3) символы, которые не совпали.

Оригинальный алгоритм X-Match поддерживает стратегию move-to-front, когда новое слово кладется в словарь сверху, а остальные слова сдвигаются на одну позицию вниз. Когда словарь переполняется, последнее слово вытесняется. Это реализуется с помощью сдвига данных в ячейках памяти, и поэтому требует больших энергозатрат. Мы преобра-

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

Кроме того, мы пришли к выводу, что эффективными по экономии энергии могут оказаться алгоритмы Хаффмана и Лемпела-Зива.

Методология симуляции

Данные по энергозатратам были получены симулятором, встроенным в инструментарий SPARC-симуляции. В качестве входных данных симулятор берет KVM-систему, выполняющую Java-приложение, и вычисляет характеристики затрат энергии. Наш симулятор отслеживает потребление энергии в ядре процессора, SPM и основных блоках памяти. Энергия, использованная в ядре процессора, оценивается посредством подсчета числа инструкций каждого типа и умножения этого числа на количество энергии, расходующейся на выполнение соответствующей инструкции.

Энергопотребление в SPM и основной памяти делится на динамическое и статическое. При подсчете потребления динамической энергии мы использовали CACTI — инструментарий версии 2.0, предполагающий 0,10-микронные технологии. При подсчете статической энергии мы предположили, что ее величина за полный цикл работы основной памяти равна величине динамической энергии, израсходованной за один доступ.

При подсчете полного энергопотребления в основной памяти и SPM-блоке мы предположили, что блок памяти (или SPM-блок) в любой момент времени может находиться в одном из трех состояний: R/W, активном и неактивном. В режиме R/W память подвергается чтению или записи и потребляет максимум динамической и статической энергии. В активном состоянии память включена, но не подвергается воздействию. В этом состоянии потребляется в полном объеме статическая энергия, но не потребляется динамическая. И, наконец, модули памяти, которые не нужны системе, отключены и не потребляют энергии вообще. Очевидно, что для того, чтобы минимизировать количество потребляемой энергии, необходимо как можно больше блоков привести в неактивное состояние. Единственный способ добиться этого — снизить объем данных, хранящихся в памяти, что достигается путем компрессии.

Энергопотребление делится на 4 компонента: динамическая энергия в SPM, статическая энергия в SPM, и, соответственно, динамическая и статическая энергия в основной памяти. Доля процессора в распределении всей энергии невелика — около 10%, и влияние декомпрессии здесь незначительно. Поэтому мы заостряем внимание на энергии основной и SPM-памяти. Результаты показали, что по---------------------------------- 177

e

Компоненты и технологии, № 4'2004

Софт

требление статической энергии составляет большой процент от общего энергобюджета — в среднем около 60%, и поэтому является подходящей целью для оптимизаций.

Результаты

В этом разделе мы представляем данные, показывающие эффективность нашей стратегии в экономии энергии, а также демонстрируем ее чувствительность к различным параметрам, таким, как объем вРМ-памяти, размер блока и затраты на декомпрессию.

Опыты показали, что экономия энергии составляет в среднем 21%. В большинстве приложений экономия достигает 10%. В двух приложениях (калькулятор и планировщик) декомпрессия играет большую роль, и поэтому результаты получаются хуже, чем в случае оригинала.

В общем, два фактора определяют эффективность нашей стратегии — время исполнения приложения и число 8РМ-промахов. Поскольку основную выгоду наша стратегия приносит в статической энергии, то чем продолжительнее работает приложение, тем больше становится эта выгода. Напомним, что каждый вРМ-промах влечет акт декомпрессии. Поэтому количество 8РМ-прома-хов — важный фактор при определении энергии, затраченной на декомпрессию во время исполнения приложения. Причины, по которым планировщик и калькулятор не получают выгоды из нашей стратегии, различны. В калькуляторе время выполнения довольно короткое и энергия, потраченная на декомпрессию, не оправдывается. В планировщике время выполнения

достаточно большое, но стратегия проигрывает из-за большого числа SPM-промахов.

Поскольку наша стратегия направлена на экономию энергии в части основной памяти, предназначенной только для чтения, мы представляем результаты, касающиеся только этой части и SPM.

Чувствительность к «стоимости» декомпрессии

Чтобы посмотреть, как воздействует на результаты более или менее эффективная реализация алгоритма X-Match, мы провели другую серию экспериментов. Мы пришли к выводу, что декомпрессия 4 байтов требует трех обращений к SPM-памяти. Мы нормализовали этот показатель к 1 и, сравнивая уровень стоимости декомпрессии с этим показателем, выяснили, что декомпрессия со стоимостью 2 увеличивает потребление энергии на 5-7%, а декомпрессия со стоимостью 0,25 — уменьшает на 20%. Эти результаты подтверждают необходимость эффективной реализации алгоритма декомпрессии.

Чувствительность к размеру SPM-памяти

Опыты показали, что если размер SPM слишком мал, то частые SPM-промахи сильно повышают энергопотребление. Однако слишком большая SPM-память также плохо влияет на энергопотребление устройства. Здесь имеют место два фактора. Во-первых, она потребляет много динамической и статической энергии. Во-вторых, для каждого приложения существует критический объем SPM-памяти, фиксирующий его рабочую сеть. После превышения этого объема количество SPM-промахов перестает снижаться. Эта стабильность уровня промахов в сочета-

нии с первым фактором приводит к возрастанию энергопотребления устройства. В проектировании встроенных систем максимально возможный размер SPM определяется бюджетом кристалла. Поэтому проектировщики встроенных систем должны выбирать подходящий размер SPM исходя из особенностей приложений.

Чувствительность к размеру блока

По умолчанию в наших экспериментах размер блока составлял 1 кбайт. Опыты показали, что этот размер оказывает большое влияние на энергопотребление. Для большинства алгоритмов сжатия больший размер блока повышает коэффициент сжатия. Однако нужно помнить, что слишком большой блок одновременно увеличивает количество SPM-промахов и стоимость декомпрессии. В результате экспериментов выяснилось, что размер 0,5 кбайт дает лучший результат, чем 1 кбайт. А вот увеличение размера до 2 кбайт повышает энергопотребление более чем в 2 раза.

Заключение

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

178

- www.finestreet.ru -

i Надоели баннеры? Вы всегда можете отключить рекламу.