Научная статья на тему 'Расширение функционала dataflow-системы императивной парадигмой вычислений'

Расширение функционала dataflow-системы императивной парадигмой вычислений Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
165
113
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВЫЧИСЛИТЕЛЬНАЯ СИСТЕМА С УПРАВЛЕНИЕМ ПОТОКОМ ДАННЫХ / ИМПЕРАТИВНАЯ ПАРАДИГМА ПРОГРАММИРОВАНИЯ / МУЛЬТИПАРАДИГМЕННОСТЬ / КОМПИЛЯТОР

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

Главная проблема dataflow-вычислительных систем неудобство программирования последовательного алгоритма. С этой проблемой столкнулись разработчики объектно-атрибутной (ОА) архитектуры вычислительной системы, относящейся к этому классу. Для ее преодоления dataflow-система была расширена возможностью организации последовательных (императивной) вычислений. Данная работа включила разработку архитектурного решения, позволяющего объединить две парадигмы, и расширение функционала ОА-языка программирования, предназначенного для управления ОА-вычислительной системой. ОА-язык был дополнен Си-подобными командами, что потребовало доработки компилятора ОА-языка. В результате доработок ОА-система стала мультипарадигменной, что позволило значительно повысить удобство программирования и сделало программу для ОА-системы более компактной. Ключевые слова: Вычислительная система с управлением потоком данных, Императивная парадигма программирования, Мультипарадигменность, Компилятор

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

Functionality Expansion of the Dataflow-Computing System by Imperative Paradigm pp. 66-71 Sergey M. Salibekyan, Alexey Y. Beloysov The primary problem of dataflow-computation systems is disadvantage for consecutive algorithm programming. The developers of object-attribute (OA) computing system architecture belonging to this class faced to this problem. For its overcoming the dataflow-system was expanded with possibility of the organization consecutive (imperative) calculations. This work included development of the architectural concept allowing to unite two paradigms, and expansion of functionality of the OA-programming language intended for control of the OA-computing system. OA-language was expanded with C-like instructions that demanded completion of the compiler of this language. As a result of completions the OA-system became a multiparadigm computation system that allowed to increase considerably convenience of programming and made a program for OA-system more compact. Keywords: Dataflow, Imperative paradigm of computation, Multiparadigm, Compiler

Текст научной работы на тему «Расширение функционала dataflow-системы императивной парадигмой вычислений»

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

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

Литература

1. С.В Гудин, Р.Ш. Хабибулин. Объектно-ориентированный подход при определении пожарных рисков на территории производственных объектов // Материалы двадцать третьей международной научно-технической конференции "Системы безопасности - 2014". М.: Академия ГПС МЧС России, 2014. - С. 20-22.

2. Хабибулин Р.Ш. Разработка объектно-ориентированных информационных систем в области предупреждения и ликвидации чрезвычайных ситуаций // Инновации в образовательном процессе: сб. трудов науч.-практ. конф. - Вып. 13. - Чебоксары: ЧПИ, 2015. - С. 64-66.

3. Силич В.А., Силич М.П. Проектирование сложной системы на основе объектно-ориентированного подхода / Известия Томского политехнического университета, 2003. Т. 306, № 2.С. 99-103.

4. Гудин, С.В. Структура интеллектуальной системы поддержки принятия решений на базе исследовательской платформы FireRisks [Текст] / С.В Гудин, РШ. Хабибулин // Материалы школы-семинара молодых ученых " Фундаментальные проблемы системной безопасности". -Елец, 2014. -С. 206-208.

5. С.В Гудин, Р.Ш. Хабибулин. Структура классов в объектно-ориентированном подходе к управлению пожарными рисками на территории производственных объектов // Материалы двадцать четвертой международной научно-технической конференции "Системы безопасности - 2015". М.: Академия ГПС МЧС России, 2015. - С. 184-186.

УДК 004.432.2, 004.042

РАСШИРЕНИЕ ФУНКЦИОНАЛА DATAFLOW-СИСТЕМЫ ИМПЕРАТИВНОЙ

ПАРАДИГМОЙ ВЫЧИСЛЕНИЙ

Салибекян Сергей Михайлович, к.т.н., доцент Национального исследовательского университета «Высшая школа экономики», Московский институт электроники и математики, Россия, Москва,

salibek@yandex.ru

Белоусов Алексей Юрьевич, студент, Московский государственный университет технологий и управления имени Г.К. Разумовского, Россия, Москва, 3ret@rambler.ru

Уже долгое время идет работы в области объектно-атрибутной (ОА) архитектуры вычислительной системы (ВС). Архитектура относится к классу dataflow - управление вычислениями с помощью потока данных, - что обеспечивает самораспараллеливание вычислений. Еще одним свойством ОА-ВС является возможность создания и обработки семантической сети, способной моделировать сложные системы, а также обеспечивать объектный принцип программирования ВС, т.к. в семантическую сеть можно добавлять фрагменты программы [1]. Для ОА-ВС был разработан специализированный язык программирования (ОА-язык), с помощью которого можно как управлять функциональными устройствами (ФУ), производящими вычисления, так и описывать фрагменты семантической сети. Однако слабой стороной ОА-ВС оставалась организация последовательных вычислений: последовательные алгоритмы на ОА-языке записывались весьма громоздко. Причина тому - достаточно прецизионное описание вычислительного процесса, т.к. описывается пересылка каждого операнда и существует необходимость начальной инициализации ФУ-в, что занимает достаточно большой объем программного кода. На рис. 1 представлена программа генерации последовательности чисел Фибоначчи на языке Си и ОА-

66

языке, где видна разница в объеме кода. Поэтому возникла необходимость исправить этот недостаток, чтобы сделать процесс программирования ОА-ВС более комфортным.

ОА-язык

NewFU=(Mnemo= "ALU* FUType=FUlntAlu} ft Счетчик итераций

MewF U ■ (Mnemo= "AL U_F i b" FUType=FUI ntAlu} ft Предыдущее число NewFU=(Mnemo="ALU_Fib2r FUType=FUInlAlu}\\ Предыдущее число

ALU_Flb Set=l V\ Установить первое число последовательности ALU_FIУстановить второе число последовательности AL U Set=10 \\ Установить число итераций (число генерируемы* ч исел)

ALU BlgQaPrajStiH \\vbianM*iib ссылку на ннппипрогрэмму.

tt S3 Пускаемую При установи? флага «больше* ALU_Fih2 POpMk=ALU_Fiti Add\\ вычислить следующее число ALU_Ftb.PopMk=Console Outtt Вывести текущий член посл-тп A LU_Fi b .Pop=temp tt Выдать текущий член последовательности ALU_Fib2 PiipMK=ALU_Fiti &et\\ Запомнить предыдущий член лоел ти ALU_Fib2 Set^temptO^W Запомнить текущий член пяспедоеэтепьности ALU ЙиЬ=1 Уменьшить СЧёТЧн* иТйрЭЦИЙ № единицу

)

ALU Sub=01Д Запуск вычислительного процесса (установить флаги) Рис. 1 - Программа генерации последовательности чисел Фибоначчи на языке Си и ОА-языке

Решением проблемы стало расширение ОА-ВС возможностью работать в императивном (последовательном - control-flow) стиле, т.е. было решено сделать ОА-ВС мультипарадигменной. Однако задача совмещения dataflow и control-flow (управлением вычислениями с помощью потока команд) парадигм не представляется тривиальной ввиду их кардинального различия в принципах организации вычислительного процесса. Однако в истории вычислительной техники встречались подобные мультипарадигменные архитектуры ВС и языки программирования: мультитредовые ВС [2], язык программирования DCF [3] и т.д. Поэтому было принято решение о расширении ОА-ВС и ОА-языка императивной парадигмой.

Для достижения поставленной цели было необходимо решить несколько взаимосвязанных задач: совершенствование архитектуры ОА-ВС; добавление в ОА-язык синтаксических конструкций, описывающих императивный вычислительный процесс; доработка компилятора ОА-языка [4]. Теоретические наработки в данной области реализовывались путем расширения функционала ОА-среды программирования и моделирования, позволяющей создавать виртуальную копию ОА-ВС, производить имитационное моделирование вычислительного процесса на ней. В состав ОА-среды входит компилятор ОА-языка, а также различные инструментальные средства для облегчения труда программиста. Среда является «экспериментальной площадкой» для отработки различных технических решений в области ОА-архитектуры. Работа по расширению функционала ОА-среды была разделена на этапы: 1) разработка архитектурного решения проблемы, 2) программная реализация архитектурного решения, 3) разработка синтаксических конструкций ОА-языка для описания последовательных вычислений, 4) расширение функционала ОА-языка, т.е. доработка ОА-компилятора.

Найденное архитектурное решение «примерило» две различные парадигмы вычислений. Первая - dataflow - управляется параллельным потоком данных, вторая -последовательным потоком команд. Control-flow парадигма основывается на понятии программного счетчика - указателя на ячейку памяти, где хранится выполняемая команда (один счетчик соответствует одной вычислительной нити - thread). Поэтому было решено ввести новый тип функционального устройства, реализующего вычислительную нить

Язык Си

in! ajbj;

«-1;

b-2:

(

pnnlf(H%d -.a), swapfa.b};

(thread), в который входит виртуальный программный счетчик. Т.к. любое ФУ управляется с помощью милликоманд, то и программа для такого ФУ представляет собой последовательность милликоманд, объединенную в информационную капсулу (ИК). Милликоманда - это совокупность операнда и атрибута, идентифицирующего операнд, которая поступает на ФУ. ФУ должно обеспечивать выполенние минимального набора программных конструкций, необходимых для организации последовательных вычислений. Данные конструкции были взяты из структурного программирования, разработанного Эдсгером Дейкстрой [5]: последовательность команд, условное ветвление, цикл с предусловием и постусловием, множественный выбор. Однако любое устройство, реализующее вычислительную нить, кроме устройства управления включает в себя и арифметико-логическое устройство (АЛУ). Например, условные переходы осуществляются исходя из значений флагов, устанавливаемых по результатам вычислений. Поэтому наделим разрабатываемый тип ФУ функционалом по вычислению арифметико-логических выражений и назовем его ФУ АЛУ.

Для реализации такого функционала ФУ должен содержать следующие внутренние регистры: Accumulator - хранит текущие результаты вычислений; ThenProg и ElseProg -указатели на программы, запускаемые при выполнении или невыполнения логического условия, Switch - указатель на список альтернатив оператора множественного выбора, CycleMode - режим цикла (0 - без цикла, 1 - цикл с предусловием, 2 - цикл с постусловием); ProgramCounter (PC) - программный счетчик (адрес выполняемой милликоманды). ФУ управляется с помощью милликоманд; перечислим некоторые из них:

1. установить тип цикла - CycleModeSet;

2. установить ссылку на список альтернатив множественного ветвления - SwitchSet;

3. установить ссылку на ThenProg - ThenProgSet;

4. установить ссылку на ElseProg - ElseProgSet;

5. установить милликоманду для выдачи результата вычисления - MkOutSet;

6. установить Program counter (PC) (безусловный переход) - PCSet;

7. совершить условный переход - If (если в нагрузке милликоманды находится true, то в PC записывается адрес из ThenProg, иначе - из ElseProg); с милликомандой также может передаваться указатель на ИК, содержащую последовательность милликоманд для вычисления логического выражения, по результату которого производится переход;

8. начать выполнение программы - Run.

Функциональная схема ФУ АЛУ представлена на рис. 2.

Рис. 2 - ФУ Арифметико-логическое устройство

Например, для того, чтобы организовать цикл с предусловием необходимо выполнить следующую ОА-программу:

ALU.Run= // Запустить программу на выполнение

{

ALU.ElseProgSet=nil ALU.ThenProgSet=[тело цикла] ALU.CycleModeSet=1

ALU.If =[логическое выражение] // установить условие // и начать выполнение цикла

}

Здесь ALU - имя ФУ, после точки приводится мнемоника милликоманды, после «=» помещается операнд (константа или ссылка), передаваемый ФУ. Однако программисту не потребуется писать подобные ОА-программмы, т.к. все всю работу по генерации последовательности милликоманд для ФУ АЛУ из последовательности императивных (последовательных) команд, включенных в ОА-программу, берет на себя компилятор ОА-языка.

За основу синтаксиса языковых конструкций последовательного программирования был взят язык Си по причине, во-первых, его удобства и компактности; во-вторых, распространенности. Было решено реализовать в ОА-языке операторы if, switch; break; continue; циклы for, while, do - while. Ранее в компиляторе были реализованы арифметические выражения, записанные в Си-подобном синтаксисе. Программный блок (группа последовательных команд) в ОА-языке, как и в Си, выделяется с помощью фигурных скобок. Внутри фигурных скобок располагаются обозначения как Си-подобных инструкций, так и милликоманд. По сути, последовательный участок кода представляет собой ИК, содержащую последовательность милликоманд, - ОА-компилятор преобразует классические команды в несколько милликоманд, управляющих ФУ АЛУ. Например, мультипарадигменная ОА-программа может выглядеть так:

for(i=2;i<=10;i++)

if(i<5) {

Console.LnOut="---"

};

else {

ALU.Add=2;

ALU.PopMk=Console.LnOut }

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

switch(x)

{

case 0.5..1.5, 2.1..2.5:

Cons.LnOut="Between 0.5 and 1.5, Between 2.1 and 2.5";

break;

case > 2.5:

Cons.LnOut="Bigger 2.5"

}

switch(IC)

{

case {Atr=10 Var="Test"}:

Cons.LnOut="Test";

Break;

case {Var="Test2" Var="Test3"}:

Cons.LnOut="Test2, Test3"

}

где x - константа или переменная, IC - ссылка на ИК.

Семантическая сеть, синтезированная ОА-компилятором из программы (1), приведена на рис. 3. Как видно из рис. 3, программа в императивном стиле в ОА-системе не представляет собой линейную структуру. Дело в том, что программный блок оформляется в виде отдельной ИК, переходы же между блоками задаются с помощью ссылок - в результате получается семантическая сеть (ОА-граф) [6], вершинами которой являются ИК с последовательностями милликоманд для ФУ АЛУ. ИК с последовательными программами могут быть встроены в любую часть семантической сети и быть запущены, когда происходят какие-либо события. Запуск же такой последовательноти милликоманд осуществляется путем записи указателя на ИК в прогрммный счетчик (PC) ФУ АЛУ и запуска ФУ АЛУ.

_ п

ALU.CydeModeSet = 1 Й ALU.ThenProgSet ^ ALU.Inc =nil В ALU.BodyProgSet

ALU.CydeModeSet = О В ALU.ThenProgSet

Console. LnOut = — В ALU.ElseProgSet h ALU. Add = 2 :>— ALU.PopMk = 2130 □ ■ALU.Ifttun

L-ALU.Less = 5 В ALU.Ifkun

1 ALU.Less = 10

Рис. 3 - ОА-граф (семантическая сеть) последовательной программы

Таким образом, расширение функционала компилятора ОА-языка заключается в наделении его способностью транслировать императивные команды в последовательность милликоманд для ФУ АЛУ и встраивать его в семантическую сеть (ОА-граф). В составе ОА-ВС может присутствовать несколько параллельно работающих ФУ АЛУ, благодаря чему можно реализовать мультитредовую ВС [2]. Причем ФУ АЛУ работает по принципам ОА-архитектуры и поэтому органично вписывается в ОА-ВС. Еще одним преимуществом такого архитектурного решения является то, что ФУ АЛУ может синхронизироваться по принципам ёа1айо,^парадигмы вычислительного процесса, что значительно упрощает программирование параллельных ВС.

В итоге, императивная парадигма достаточно органично вписалась в ОА-ВС: она не нарушила основные принципы ОА-архитектуры, облегчила программирование последовательных фрагментов алгоритмов, не снизила параллелизим вычислений, минимальным образом изменила синтаксис ОА-языка, не нарушила объектный принцип работы ОА-ВС.

Литература

1. Салибекян С.М., Панфилов П.Б. ОА-архитектура - новый подход к созданию объектных систем // Объектные системы - 2011: материалы III Международной научно-практической конференции (Ростов-на-Дону 10-12 мая 2011 г.) / Под общ. ред. П.П. Олейника. - Ростов-на-Дону, 2011. - С. 73-79 URL: http://objectsystems.ru/files/Object Systems 2011 Proceedings.pdf

2. Jurij Silk, Borut Robic and Theo Ungerer «Asynchrony in parallel computing: From dataflow to multithreading» Institut Jozef Stefan, Technical Report CDS-97-4, September 1997.

3. Головков С.Л., Ефимкин К.Н. Реализация языка программирования для модели вычислений, основанной на принципе потока данных. Москва: ИПМ им. М.В.Келдыша РАН. 2002

4. Салибекян С.М., Панфилов П.Б. Анализ языка с помощью вычислительной системы объектно-атрибутной архитектуры. // Объектные системы - 2012: материал VI Международной научно-практической конференции (Ростов-на-Дону, 10-12 мая 2012 г.) / Под общ. ред. П.П. Олейника. - Ростов-на-Дону: ШИ ЮРГТУ (НПИ), 2012. - C. 31-37 URL: http://objectsystems.ru/files/2012/0bject_Systems_2012_Proceedings.pdf

5. Дал У., Дейкстра Э., Хоор К. Структурное программирование. М.: Мир, 1975. — 245 с.

6. Салибекян С.М., Белоусов А.Ю. Сетевая база данных, построенная по объектно-атрибутному принципу. // Объектные системы - 2014 (зимняя сессия): материал IX Международной научно-практической конференции (Ростов-на-Дону, 10-12 мая 2014 г.) / Под общ. ред. П.П. Олейника. - Ростов-на-Дону: ШИ (ф) ЮРГТУ (НПИ) им. М.И. Платова, 2014. с. 70-76 URL: http://objectsystems.ru/files/2014WS/0bject Systems 2014 Winter session Proceedings.pdf

УДК 681.3

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРЕДСТАВЛЕНИЕ МНОГОУРОВНЕВЫХ

СЕМАНТИЧЕСКИХ МОДЕЛЕЙ4

Грегер Сергей Эдуардович, Уральский федеральный университет имени первого Президента России

Б.Н.Ельцина, Нижнетагильский технологический институт (филиал), Факультет экономики и менеджмента, кафедра информационных технологий, доцент. Россия. Нижний Тагил,

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

segreger@gmail.com

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

В [1] предложили методологию разработки программного обеспечения, в дальнейшем отображенную в метамодели IS024744, в которой введены понятия power type и clabject. Целью предложенной методологии является: предоставление возможности построения множества классификационных уровней, объединенных в мультиуровневую модель. Основная проблема, решенная в представленной методологии, состояла в построении унифицированного и адаптируемого метода классификации элементов предметной области. Под унифицированием понимается возможность отображения всех моделей всех уровней

4 Лауреат номинации "Лучший доклад по UML-моделированию". Автор доклада награждается правом бесплатной публикации одного доклада по данной тематике на следующей конференции

71

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