Научная статья на тему 'Метод компактного представления программ на основе частотных характеристик их поведения'

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

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Шалимов А.В.

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

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

The article contains the description of a new programs compression method based on the frequency characteristics of programs behavior. Also the results of the theoretical and experimental research are shown demonstrated the possibility of this method application to embedded real-time controlling systems.

Текст научной работы на тему «Метод компактного представления программ на основе частотных характеристик их поведения»

УДК 519.6

МЕТОД КОМПАКТНОГО ПРЕДСТАВЛЕНИЯ ПРОГРАММ НА ОСНОВЕ ЧАСТОТНЫХ ХАРАКТЕРИСТИК ИХ ПОВЕДЕНИЯ

© Шалимов А.В.

Московский Государственный Университет им. М.В. Ломоносова факультет Вычислительной Математики и Кибернетики Ленинские горы, ГСП-1, г. Москва, 119899, Россия

e-mail: ashalimov@lvk.cs.msu.su

Abstract. The article contains the description of a new programs compression method based on the frequency characteristics of programs behavior. Also the results of the theoretical and experimental research are shown demonstrated the possibility of this method application to embedded real-time controlling systems.

Введение

Проблема компактного представления программ является актуальной, особенно для встроенных систем управления реального времени [1, 2], В таких системах, как правило, критическим ресурсом является оперативная память, т.к. внешняя память у них обычно отсутствует. Ограничения по памяти проистекают из двух основных причин: ограничения массо-габаритных параметров и ограничения по энергопотреблению, В этих условиях важной характеристикой программы опять (как и в начале развития ЭВМ) стал необходимый программе объем оперативной памяти. Вышесказанное объясняет важность методов компактного представления программ (методы КПП) в современных условиях,

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

1, Описание задачи

Данный метод КПП разрабатывается для применения в бортовых вычислительных системах (ВВС), Это связано с тем, что в большинстве используемых сейчас бортовых цифровых вычислительных машинах доступно ограниченное количество оперативной памяти. Например, объем памяти для ВВС самолетов находится в диапазоне от 0,5 до 4,5 МБ [3], Применение методов КПП позволит расширить функциональные возможности ВВС, Кроме того, современные подходы к проектированию

и реализации программного обеспечения для ВВС предполагают использование низкоуровневого программирования в большом объеме и отказ от языков программирования высокого уровня. Причина в том, что большинство систем программирования на ЯВУ порождает громоздкий по памяти код.

Перечислим особенности ВВС, которые надо учитывать при применении методов КПП.

1, Повышенные требования к надежности и безопасности функционирования,

2, Работа в режимах жесткого реального времени, В ВВС не допустим выход времени выполнения программы за директивные сроки,

3, Ограничение по памяти, ВВС характеризуются малым количеством основной памяти,

4, Жесткие ограничения на массо-габаритные параметры системы. Появление дополнительных аппаратных блоков ведёт к увеличению габаритов, массы и энергопотребления.

Тогда для применения в ВВС любой метод КПП должен удовлетворять следующим условиям применимости в ВВС:

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

2, Накладные расходы по памяти при использовании метода КПП не должны превышать суммарного выигрыша по памяти от сжатия набора программ ВВС,

Из проведенного во время исследовательской работы обзора методов КПП и анализа их применимости в ВВС [5] были сделаны следующие выводы:

1, Возможность применения в ВВС методов КПП без процесса распаковки,

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

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

2, Общее описание предложенного метода

Идея предложенного метода восходит к работам [6, 7, 8] и основана на двух фактах. Первое: в последовательной программе исполнение 15-20% кода программы занимает 80% времени её исполнения [6, 7], Второе: программа в интерпретируемой форме, как правило, занимает меньше места, чем в откомпилированной [8], На основе этих двух фактов было предложено исследовать метод, который заключается в том, что редко выполняемые фрагменты кода программы [10] хранятся в сжатой

интерпретируемой форме и динамически, но мере необходимости, распаковываются и выполняются, а часто выполняемый код компилируется.

Исследуемый метод компактного представления программы состоит из двух основных частей: сжатие программы и выполнение сжатой программы. Рисунок 1 показывает основные принципы работы метода.

¿311 }

I

сзИ Г.ЫиЬ

Т

саИ д.* ¡иЬ 6& К

rti.LHi-.if. киД

Рис. 1, Схема предложенного метода КПП

Рассмотрим программу с тремя редко выполняемыми фрагментами кода /, д и /г, как показано в левой части рисунка 1, Структура метода и организация сжатого кода показана в правой части рисунка 1, Каждый выбранный фрагмент кода программы при её сжатии заменяется в программе очень короткой последовательностью команд заглушкой, которая вызывает декомпрессор, чья работа заключается в распаковке интерпретируемого кода этого фрагмента в буфер выполнения и передаче управления интерпретатору, который будет выполнять распакованный код. Таблица смещения фрагментов определяет, где внутри сжатого кода начинается код для данного фрагмента. Заглушка для каждого фрагмента передает декомпрессору аргумент, который является индексом в этой таблице; этот аргумент показан меткой ((0),(1),,,,) на дуге от каждой заглушки до декомпрессора. Декомпрессор использует этот аргумент для индексации в таблице смещения фрагментов, извлекает начальный адрес сжатого кода соответствующего фрагмента и начинает генерацию несжатого интерпретируемого кода в буфер выполнения. Затем декомпрессор передает управление интерпретатору сгенерированного кода. Когда распакованный фрагмент заканчивает свое выполнение, он обычным способом возвращает управление вызывающей программе.

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

Предложенная идея компактного представления программ обладает рядом возможностей и преимуществ по сравнению с существующими методами КПП,

1, Использование свойства программ: 80/20, Использование схемы компрессор/декомпрессор позволяет учитывать свойства программ: 80/20 [6, 7], Для последовательных программ большую часть времени их работы составляет исполнение меньшей части кода программы. Поэтому сжатие редко выполняемого кода программы не приведет к значительному увеличению времени выполнения программы,

2, Такая организация метода позволяет управлять степенью сжатия программы в зависимости от требований к скорости выполнения программы и доступного размера памяти. Эта возможность для бортовых вычислительных систем позволяет учитывать директивные сроки выполнения программ,

3, Использование программной реализации схемы компрессор/декомпрессор позволяет использовать в ЭВМ сжатые программы, которые целиком не помещаются в основную память, за счет хранения редко выполняемых фрагментов кода программы во внешней памяти,

4, Использование метода не требует специального аппаратного обеспечения, добавление которого в бортовые вычислительные системы является дорогостоящей и трудоемкой задачей,

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

3, Применение предложенного метода в ВВС

В ходе исследовательской работы [5] получены математические зависимости, позволяющие для заданной ВВС определить возможность применения исследованного метода. Введем следующие обозначения,

• 0 порог - входной параметр разработанного метода КПП, Доля выполняемого кода программы, которая впоследствии будет переведена в сжатое интерпретируемое представление,

• г > 1 коэффициент возможного увеличения времени выполнения программы. Заданный коэффициент нужен для использования «зазора» между фактическим временем выполнения программы и директивным сроком её выполнения,

• Х(в) коэффициент сжатия предложенного метода КПП, Определяется экспериментально для конкретной реализации данного метода КПП,

• / количество машинных команд на выполнение одной команды интерпретируемого кода,

• М(КПП) - дополнительный расход памяти на использование метода КПП в ВВС.

Заметим, что последние три параметра - это характеристики конкретной реализации метода. Подробнее об этом будет сказано далее.

Тогда для использования предложенного метода в ВВС необходимо

1, Выбрать параметр в < у—¡-,

о тэ "г- г- ШК1Ш)

2, Выорать программы для сжатия, суммарный ооъем которых оолыне ■

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

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

4, Испытания реализации предложенного метода

Напомним, что основная идея исследуемого метода заключается в том, что редко выполняемые фрагменты кода программы хранятся в сжатой интерпретируемой форме и динамически, по мере необходимости, распаковываются и выполняются, а часто выполняемый код компилируется.

Система компактного представления программы, реализующая предложенный метод, написана на языке С++, Она состоит из двух частей (рисунок 2): сжатие программы и выполнение сжатой программы. На вход система получает программу па языке Си, функции распределения входных параметров этой программы и максимальную долю сжимаемого кода программы. На выходе имеем сжатую программу и файлы с таблицей смещения и сжатым интерпретируемым кодом.

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

Декомпрессор состоит, главным образом, из интерпретатора и функциональности распаковки интерпретируемого представления.

Рис. 2, Схема предложенного метода КПП

Рис. 3, Схема предложенного метода КПП

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

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

1, Коррекция координат самолета,

2, Полет на очередной и внеочередной пункт маршрута,

3, Маловысотный полет с огибанием рельефа,

4, Горизонтальный полет.

Для каждой тестовой программы производилось 10 запусков системы с разными значениями в (0,1, 0,2, ... , 1), Для каждого запуска запоминался получаемый коэффициент сжатия Л, После проведения всех экспериментов производилось усреднение полученных значений, В результате была получена зависимость А(0), представленная на рисунке 3,

Таким образом, при 9 = 1 (сжатию подвергается вся программа) достигается максимальный коэффициент сжатия Л = 77%. При в = 0.5 достигается коэффициент сжатия Л = 89%. При 0.2 < в < 0.4 па тестовых программах происходит

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

Проведя анализ кода программы, реализующей декомпрессор предлагаемого метода, были получены следующие характеристики реализации метода:

1, В среднем на выполнение одной команды интерпретируемого кода происходит выполнение шести машинных команд (1 = 6),

2, Для работы декомпрессора необходимо 100 Кб оперативной памяти ВВС (М(КПП) = 100 Кб).

Тогда для целесообразности применимости реализации предложенного метода в ВВС необходимо:

1. выбрать параметр 0 < | * (т — 1), где т > 1 - коэффициент возможного увеличения времени выполнения сжатой программы по сравнению с временем выполнения исходной

2. выбрать программы для сжатия, суммарный объем которых больше уз^уКб, где Л (0) - это средний коэффициент сжатия (из рисунка 3) системы при заданном в.

Если условия двух выше описанных пунктов одновременно не могут выполняться или надо получить более высокий коэффициент сжатия программы, то необходимо наложить на ВВС требование об увеличении производительности процессора в р = раз. Например, при 0.2 < в < 0.4 и т = 1.2 необходимо увеличить производительность процессора в 1.5 < р < 1.8, при этом будет достигнут коэффициент сжатия равный 0.85. А без увеличения производительности процессора максимальный коэффициент сжатия был бы равен 0.95.

Заключение

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

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

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

список литературы

1. Kozuch М., Wolfe A. Compression of embedded system programs. 2000 IEEE International Conference on Computer Design: VLSI in Computers & Processors [HTML, PDF] (http://www.computer.org/portal/site/csdl/)

2. Embedded Computing Design [HTML] (www.embedded-computing.com)

3. Колпаков К. История развития бортовых цифровых вычислительных машин в России // PCWeek, N32, 1999

4. Лаборатория вычислительных комплексов ВМК МГУ [HTML] (http://lvk.cs.msu.su)

5. Шалимов А.В. Дипломная работа на тему «Исследование метода компактного представления программ на основе частотных характеристих их поведения», МГУ 2007 [PDF] (http://lvk.cs.msu.su/~ashalimov/doc/diplom_ashalimov.pdf)

6. Смелянский Р.Л., Гурьев Д.Е., Бахмуров А.Г. Об одной математической модели для расчета динамических характеристик программы. Программирование, N6, 1986

7. Smelianski R.L., Alanko Т. On the calculation of control transition probabilities in a program Inform.Processing Letters N.3, 1986

8. Brown P. Macros without tears // Software: Practice and Experience. Volume 9, Issue 6, Pages 433-437, 1979

9. НИР DrTesy [HTML] (http://lvk.cs.msu.su/index.php/articles/65)

10. Смелянский P.Л., Шалимов А.В. Метод оценки частот выполнения фрагментов кода последовательной программы. // Программные системы и инструменты. Тематический сборник № 7, М.: Изд-во факультета ВМиК МГУ, 2006

Статья поступила в редакцию 13,05,2008

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