автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Транслятор модифицированного языка программирования высокого уровня с неявным описанием параллелизма для реконфигурируемых вычислительных систем

кандидата технических наук
Гудков, Вячеслав Александрович
город
Таганрог
год
2010
специальность ВАК РФ
05.13.11
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Транслятор модифицированного языка программирования высокого уровня с неявным описанием параллелизма для реконфигурируемых вычислительных систем»

Автореферат диссертации по теме "Транслятор модифицированного языка программирования высокого уровня с неявным описанием параллелизма для реконфигурируемых вычислительных систем"

На правах рукописи

004618296

Гудков Вячеслав Александрович

Транслятор модифицированного языка программирования высокого уровня с неявным описанием параллелизма для реконфигурируемых вычислительных систем

Специальность 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

Автореферат

диссертации на соискаиие ученой степени кандидата технических наук

2 3 ДЕК 2010

Таганрог-2010

004618296

Работа выполнена на кафедре Интеллектуальных и многопроцессорных систем (ИМС) Технологического института Южного федерального университета в г. Таганроге и в Научно-исследовательском институте многопроцессорных вычислительных систем имени академика A.B. Каляева федерального государственного автономного образовательного учреждения высшего профессионального образования «Южный федеральный университет» (НИИ МВС ЮФУ).

НАУЧНЫЙ РУКОВОДИТЕЛЬ:

ОФИЦИАЛЬНЫЕ ОППОНЕНТЫ:

доктор технических наук, профессор

Левин Илья Израилевич

доктор технических паук, профессор

Кравченко Павел Павлович

кандидат технических наук, Иванов Андрей Игоревич

ВЕДУЩАЯ ОРГАНИЗАЦИЯ: ФГУП «НИИ «Квант», г. Москва

Защита диссертации состоится "24" декабря 2010 г. в 1420 на заседании диссертационного совета Д 212.208.24 при Южном федеральном университете по адресу: г. Таганрог, ул. Чехова, 2, корп. "И", комн. 347.

С диссертацией можно ознакомиться в зональной научной библиотеке ЮФУ по адресу: г. Ростов-на-Дону, ул. Пушкинская, 148.

Автореферат разослан " 23" ноября 2010 г.

Просим Вас прислать отзыв, заверенный печатью учреждения, по адресу: 347928, г. Таганрог, Ростовская область, ГСП-17А, пер. Некрасовский, 44, Технологический институт Южного федерального университета в г. Таганроге, Ученому секретарю диссертационного совета Д 212.208.24 Кухаренко Анатолию Павловичу.

Ученый секретарь

диссертационного совета /¡у

кандидат технических наук,

доцент А.П. Кухаренко

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

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

Однако, несмотря на высокую потенциальную эффективность РВС, в настоящий момент отсутствуют удобные и в то же время эффективные средства их программирования. Для программирования реконфигурируемых вычислительных систем используются языки HDL-группы и системы параллельного программирования РВС (Catapult С, Mitrion-C). Для достижения высокой удельной производительности РВС при создании приложений используются языки HDL-группы, которые ориентированы не столько на программистов, сколько на схемотехников, что сдерживает широкое распространения реконфигурируемых вычислителей и приводит к длительным срокам создания прикладных программ. Системы параллельного программирования РВС типа Catapult С, Mitrion-C создают в ПЛИС виртуальные процессы, что значительно снижает реальную производительность РВС.

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

элементарных процессоров, коммутаторов и контроллеров распределенной памяти. Версия языка программирования высокого уровня СОЬАМО позволяла оперативно создавать прикладные программы для решения задач различных предметных областей на РВС, однако использование базовых архитектур приводило к значительному снижению удельной производительности РВС по сравнению с приложениями, созданными на ШЗЬ-языках.

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

Объектом исследования являются методы и средства описания прикладных программ для реконфигурируемых вычислительных систем и алгоритмы трансляции.

Целью диссертационной работы является повышение удельной производительности РВС при выполнении прикладных программ, созданных на языке высокого уровня.

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

Для достижения поставленной цели необходимо решить следующие задачи исследования:

1) провести анализ методов и средств описания параллельных вычислений для

РВС;

2) разработать принципы модернизации языка программирования высокого уровня для программирования ПЛИС на уровне логических ячеек;

3) разработать новые конструкции языка, отвечающие предложенным принципам;

4) формализовать правила трансляции с языка программирования высокого уровня с неявным описанием параллелизма для РВС;

5) разработать основные этапы трансляции модернизированного языка для РВС;

6) разработать алгоритмы трансляции структурного компонента параллельной прикладной программы;

7) разработать алгоритмы трансляции потокового и процедурного компонентов параллельной прикладной программы;

8) создать транслятор модифицированного языка высокого уровня.

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

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

Научная новизна результатов диссертационной работы определяется тем, что в ней разработаны:

1) принципы трансляции языка СОЬАМО для программирования многокадровых параллельных прикладных программ для РВС на уровне логических ячеек ПЛИС, которые отличаются введением в вычислительную структуру прикладной задачи сдвоенных контроллеров распределенной памяти и дополнительных коммутационных структур для переключения информационных потоков;

2) расширение языка высокого уровня СОЬАМО, отличающееся от языка СОЬАМО 2000-го года поддержкой битовых переменных, операций и функций, конструкции для использования внутренней памяти ПЛИС и средства обеспечения процедурной организации вычислений;

3) формализованные правила трансляции языка программирования высокого уровня с неявным описанием параллелизма СОЬАМО на уровне логических ячеек ПЛИС, отличающиеся правилами организации доступа к памяти, правилами параллельной и конвейерной обработки данных, правилами обработки конструкций языка;

4) структура транслятора с модернизированного языка СОЬАМО, отличающаяся от трансляторов процедурных языков генерацией как структурного, так и процедурного компонентов параллельной прикладной программы в едином вычислительном контуре на основе описания на одном языке программирования;

5) алгоритмы трансляции структурного компонента параллельной программы, отличающиеся представлением в виде отдельного информационно-эквивалентного графа транслируемой параллельной прикладной программы;

6) модернизированные алгоритмы генерации процедурных и потоковых компонентов, отличающиеся разделением вычислительных функций и операторов контроллеров распределенной памяти и обеспечивающие эффективную реализацию многокадровых прикладных программ на уровне логических ячеек ПЛИС.

Положения, выдвигаемые на защиту:

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

Результаты, выносимые на защиту:

- модернизированный язык СОЬАМО для эффективного программирования РВС на уровне логических ячеек ПЛИС;

- структура транслятора модернизированного языка программирования с неявным описанием параллелизма для создания прикладных программ РВС на уровне логических ячеек ПЛИС;

- алгоритмы трансляции структурного компонента параллельной прикладной программы;

- алгоритмы трансляции потокового и процедурного компонентов параллельной прикладной программы.

Практическая ценность работы. В диссертации решена важная научная задача, заключающаяся в создании средств описания параллельных прикладных программ для РВС и алгоритмов их трансляции на уровне ячеек ПЛИС, обеспечивающих увеличение удельной производительности РВС в 3-4 раза по сравнению с предыдущей версией транслятора, разработанного в начале 2000-х годов. По сравнению с разработкой приложений на уровне VHDL-описания и программой организации информационных обменов на языке ассемблера ARGUS программирование на модернизированном языке COLAMO-2010 позволяет в 7-10 раз сократить время создания прикладных программ при незначительном снижении реальной производительности системы.

Реализация и внедрение результатов работы. Результаты диссертации использовались при выполнении в НИИ многопроцессорных вычислительных систем ЮФУ ряда НИОКР, направленных на создание системного программного обеспечения реконфигурируемых вычислительных систем различных архитектур и конфигураций. Наиболее важными из них являются:

- НИР «Разработка теоретических основ построения, аппаратных средств и математического обеспечения интеллектуальных многопроцессорных вычислительных и управляющих систем с реконфигурируемой архитектурой» (шифр «Ладья», 2006), №ГР01.2.00707989;

- ОКР «Разработка технологии создания высокопроизводительных модульно-наращиваемых многопроцессорных вычислительных систем с программируемой архитектурой на основе реконфигурируемой элементной базы», шифр «Медведь», выполняемая в рамках Федеральной целевой программы «Исследования и разработки по приоритетным направлениям развития науки и техники на 2002-2006 гг.» по госконтракту №02.447.11.1007 от «6» июля 2005 года, №ГР0122.0510630;

- ОКР «Разработка технологии ресурсонезависимого параллельного программирования для многопроцессорных вычислительных систем различных классов» по государственному контракту от 22 июля 2005 г. № 02.447.11.1005 (шифр ИТ-22.4/005),№ГР0120.0511686;

- ОКР «Разработка эскизной конструкторской документации на макет базового модуля модульно-наращиваемой мультипроцессорной системы (МНМС) на основе реконфигурируемой элементной базы и программных средств поддержки масштабируемых программ для решения задач обработки информации и управления в реальном времени на различных конфигурациях МНМС, в том числе при деградации вычислительного ресурса» в рамках мероприятия 1.12-САЗ по программе Союзного

государства «Развитие и внедрение в государствах-участниках Союзного государства наукоёмких компьютерных технологий на базе мультипроцессорных вычислительных систем» (шифр «Триада», 2006 г.), №ГР 01.2.00611470;

- НИР «Исследование возможности создания модульно-наращиваемой многопроцессорной вычислительной системы на основе унифицированных базовых модулей для мониторинга систем цифровой связи», выполняемая в рамках договора с ФГУП РНИИРС, № ГР 01.2.00613841;

- ОКР «Создание семейства высокопроизводительных многопроцессорных вычислительных систем с динамически перестраиваемой архитектурой на основе реконфигурируемой элементной базы и их математического обеспечения для решения вычислительно трудоемких задач», выполняемой в рамках федеральной целевой программы «Исследования и разработки по приоритетным направлениям развития научно-технологического комплекса России на 2007-2012 годы» по государственному контракту № 02.524.12.4002 от 20.04.2007 г. на выполнение опытно-конструкторских работ, шифр «Большая медведица», №ГР 01.2.007 05707.

Созданные методы, алгоритмы и программные средства внедрены в ФГУП «Курский НИИ» МО РФ (г. Курск), НИВЦ МГУ (г. Москва), Южном научном центре РАН (г. Ростов-на-Дону), НИИ многопроцессорных вычислительных систем ЮФУ (г. Таганрог).

Апробация работы. Основные результаты работы докладывались и обсуждались на всероссийских и международных научно-технических конференциях.

- на международной научно-технической конференции «Информационный подход в естественных, гуманитарных и технических науках» (ИП-2004) (г. Таганрог, 2004); на IV республиканской научно-практической конференции «Дагинформ-2005» (г. Махачкала, 2005); на Международной научной конференции «Оптимальные методы решения научных и практических задач» (г. Таганрог, 2005); на научной молодежной школе «Высокопроизводительные вычислительные системы ВПВС-2005» (с. Дивноморское, Россия, 2005); на II, III, IV, VI Ежегодной научной конференции студентов и аспирантов базовых кафедр Южного научного центра (ЮНЦ) Российской академии наук (РАН) (2006, 2007, 2008, 2010 гг., г. Ростов-на-Дону); на Седьмой Международной научно-технической конференции «Интеллектуальные и многопроцессорные системы-2006» (с. Кацивели, Украина,, 2006); на Всероссийской научной конференции «Научный сервис в сети Интернет: технологии параллельного программирования» (г. Новороссийск, 2006); на Международной научно-технической конференции «Многопроцессорные вычислительные и управляющие системы - 2007, 2009» (с. Дивноморское, Россия, 2007, 2009); на Всероссийской научной конференции «Научный сервис в сети ИНТЕРНЕТ: многоядерный компьютерный мир. 15 лет РФФИ» (г. Новороссийск, 2007); на Пятой Международной научной молодежной школе «Высокопроизводительные вычислительные системы» (с. Кацивели, Украина, 2008); на Международной научной молодежной школе «Системы и средства искусственного интеллекта (ССИИ-2008) (с. Кацивели, Украина, 2008); на Третьей международной

научной конференции «Суперкомпьютерные системы и их применение. SSA'2010» (Республика Беларусь, Минск, 2010); на Международной научно-технической конференции «Суперкомпьютерные технологии: разработка, программирование, применение (СКГ-2010)» (с. Дивноморское, Россия, 2010); на Седьмой Международной научной молодежной школе «Высокопроизводительные вычислительные системы» (с. Дивноморское, Россия, 2010).

Личный вклад автора. Все научные результаты получены автором лично.

Публикации. По результатам диссертации опубликована 21 печатная работа, из них - 6 статей, из которых 2 статьи опубликованы в ведущем рецензируемом научном журнале, входящем в Перечень ВАК РФ, тезисы и материалы 15 докладов на международных и российских научно-технических конференциях. По теме исследования получено 2 свидетельства об официальной регистрации программ для ЭВМ, результаты работы отражены в 15 отчетах о НИОКР.

Структура и объем диссертации. Диссертация состоит из введения, четырех глав, заключения, списка использованных источников и пяти приложений. Работа содержит 156 страниц основного текста, 52 рисунка, список используемой литературы из 87 источников, 56 страниц приложений.

КРАТКОЕ СОДЕРЖАНИЕ РАБОТЫ

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

В первой главе проведен анализ реконфшурируемых вычислительных систем. Показано, что РВС обладают потенциально более высокой удельной производительностью, чем многопроцессорные вычислительные системы (МВС) с традиционной архитектурой, вследствие возможности обеспечить адекватность структуры виртуального вычислителя, синтезированного в архитектуре системы, информационному графу (подграфу) решаемой задачи. В то же время традиционные языки параллельного программирования МВС не эффективны для программирования реконфшурируемых вычислительных систем, поскольку ориентированы на построение управляющих графов программ, в то время как для ПЛИС целесообразна явная реализация информационных графов задачи. Анализ средств программирования реконфшурируемых вычислительных систем показал, что одним из наиболее удобных средств для программирования РВС является язык высокого уровня COLAMO. Данный язык является языком неявного описания параллелизма: распараллеливание достигается за счет объявления типов массивов переменных и организации доступа к элементам массива (индексации). Массивы в COLAMO различаются по типу доступа: Stream (последовательный доступ) и Vector (параллельный доступ). Переменные различаются также по способу хранения в памяти: Мет (мемориальная переменная - ячейка памяти), Reg (регистровая переменная - регистр), Com (коммутационная переменная - точка на графе, физически не хранится, связывает результаты вычислений).

Язык COLAMO позволяет оперативно создавать прикладные программы для РВС, однако семантика и конструкции языка версии 2000 года ориентированы на программирование РВС на уровне элементарных процессоров, что не позволяет задействовать все возможности современных ПЛИС и, как следствие, приводит к снижению удельной производительности РВС. В этой связи необходима модернизация конструкций языка COLAMO и алгоритмов трансляции.

Определены принципы разработки многокадровых параллельных программ для РВС на уровне логических ячеек:

- при трансляции на уровне логических ячеек ПЛИС параллельная программа на языке высокого уровня COLAMO должна быть представлена в виде трех компонентов: структурного, представляющего аппаратно-реализуемые информационные подграфы задачи; потокового, организующего потоки данных через вычислительный конвейер структурного компонента; процедурного, описывающего последовательность смены кадров (в настоящее время структурный компонент эффективной параллельной программы создает на языке VHDL схемотехник, а потоковый и структурный компоненты аа языке ARGUS создает прикладной программист);

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

- для повышения эффективности программирования РВС на уровне логических элементов предложены расширения языка высокого уровня COLAMO: поддержка битовых переменных, поддержка битовых операций и функций, возможность использования внутренней памяти ПЛИС и возможность процедурной реализации вычислений.

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

CadrCadrl;

я, =/,(&'.,¿Ч....Й'..);

а2=МЬ\Ь\....,Ь\г);

ак ~ ;

EndCadr; (1)

где Л = {а,,а,,...,(!,} - множество мемориальных переменных, соответствующих процессу записи, B = {6,',6î,...,i>',} - множество мемориальных переменных, соответствующих

процессу чтения, ^ = ...../*} - множество функций преобразования информации,

включающих условные и циклические преобразования, а к - число операторов в теле кадра.

Показано, что язык СОЬАМО при помощи ограниченного правила однократного присваивания (переменная в теле кадра может получить значение один раз а, ф а,, если

/ ф у) и правила единственной подстановки (переменная может быть использована или в левых, или в правых частях оператора присваивания АП-В = 0) позволяет на синтаксическом уровне предотвратить возможность некорректного одновременного доступа к памяти нескольким процессам.

Доказана теорема 1: возможно организовать несколько процессов чтения для одного канала памяти, если все адресные генераторы процессов, обращающихся к памяти, сводимы к одному общему адресному генератору.

Если генераторы Г, (г) и Г2(/) эквивалентны, то элементы потоков адресов я, и а]

в каждый момент времени равны и одновременный доступ к памяти соответствующих им процессов является корректным. Если генераторы не равны, Г, (0 ф Г2 (/), но при этом между сгенерированными ими информационными потоками данных X, и X1 существует некоторая биективная функция Р такая, что Х/ =F(X,.), то генераторы Г, и Г2 могут быть сведены к одному общему генератору и функциональному

преобразованию потока данных (см. рис. 1).

П

(^п)—айг ¿ай

Рис. I. Схема доступа к памяти с общим генератором

Здесь П - блок распределенной памяти.

Данное утверждение можно расширить по индукции для N процессов.

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

Формализованы правила параллельной и конвейерной обработки данных для массивов данных в РВС. Массив в языке СОЬАМО может быть определен следующим образом: М = V и 5, где V - подмножество параметров, для которых определен параллельный тип доступа, а Я ~ подмножество параметров, для которых определен последовательный тип доступа. В этом случае степень максимального

п-1

распараллеливания для переменной будет определяться по формуле А = ^^, где

V, е V, а п - число параметров массива, для которых определен параллельный тип доступа.

Для определения потенциальной степени распараллеливания вычислительного фрагмента введено множество К = {Л1,Лг,...,Лт}, где Л, - максимальная степень

распараллеливания _/-й переменной во фрагменте, т - количество переменных, принадлежащих вычислительному фрагменту. Получена формула для определения

• т.

потенциальной степени распараллеливания вычислительного фрагмента: А =Мт(Л

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

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

т

А(К-11

ем ер] •■• сри]

Рис. 2. Вычислительная структура согласования вектора и потока

Сформулированы следствия:

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

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

Определены правила трансляции условных операторов языка высокого уровня СОЬАМО для РВС. Показано, что трансляция условного оператора зависит не только от способа обработки соответствующих ему переменных, но и от способа хранения переменной, для которой выполняется данный оператор. Формализованы правила

трансляции условного оператора для мемориальной, коммутационной и регистровой переменной.

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

Условный оператор перехода можно представить следующим образом: If a Then Р Else Q, где а - логическое выражение, Р и Q - множество альтернативных операторов, имеющих следующий вид:

Р = {А = рг =F2(cf,cl...„с,;),...>Л =-F„(C|\<',...,<)} и Q = {д, = GMIA.- A). <Ъ = .....di),...,?„= Gn(d:,dl,...,d"k)}.

Если существуют и qt е Q такие, что г(р.) - г(дл), где г(х) - результат

оператора присваивания х, то оператор условного перехода можно представить следующим образом:

= (2) Здесь дизъюнкция соответствует ключевому слову if, конъюнкция - ключевому слову then, а ключевое слово else - конъюнкции с инверсией логического выражения.

Оператор условного перехода, представленный в виде выражения (2), может быть представлен в виде функции: 1Г/ипс(а, p^qj). Если все элементы в выражениях а , р, и q! являются векторными, то функция IFfunc мультиплицируется в соответствии с параметрами цикла.

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

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

распределенной памяти с согласованным управлением и возможностью одновременного

чтения и записи по разным каналам. Автоматическое использование сдвоенного КРП

транслятором языка позволяет упростить схемотехническую организацию потоков

данных в вычислительной системе. На рис. 3 представлены двухкадровая параллельная

программа и ее информационно-эквивалентный граф, в котором переключение

информационных потоков выполняется при помощи сдвоенного контроллера

распределенной памяти (Doubl eKRP). Var а, Ь, с, d, е : Array Integer [100 : Stream] Mem; Var i : Number, Const n = 100;

Let Argument (In : Inl, In2, In3; Out : Outl, Out2); Var Inl, In2, In3, Outl, Out2, Coml : Integer Com; Comí F(Inl, In2); Outl r= Coml + In3; Out2 Coml - In3; EndLet; Cadr One;

For i -.=■ 0 to n - 1 do

Argument(a[i], b[i], c[i], d[i], e[i]); EndCadr, Cadr Two; For i — 0 to n - 1 do

Argument(e[i], b[i], c[i], d[i], a[i]); EndCadr;

Рис. 3. Реализация двухкадровой параллельной программы с использованием сдвоенного контроллера распределенной памяти

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

(Ьмвн, констант,.-)

I

геюратеркдо

("«нора«« потокового и лрочмурноп» яомюнвтм

Генерация структурного компонента гцхжранъы

Рис. 4. Структура транслятора Разработан обобщенный модернизированный алгоритм генерации структурного компонента параллельной программы:

Iе. Преобразование фрагментов параллельной программы к единой степени распараллеливания;

2°. Обработка операторов цикла и операторов, расположенных в теле цикла.

3°. Преобразование операторов во внутреннее представление транслятора;

4°. Обработка операторов присваивания;

5°. Обработка условных операторов;

6°. Построение информационного графа на основе информационной зависимости между всеми операторами параллельной программы;

7°. Обработка конструкций Let при работе с многокадровой параллельной программой;

8°. Генерация структурного компонента в виде XML-файла для передачи в синтезатор, выполняющий размещение информационного графа задачи на структуру РВС.

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

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

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

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

Разработаны новые алгоритмы обработки условных операторов в зависимости от способа хранения используемых переменных в информационно-эквивалентные им подграфы, минимизирующие аппаратные затраты.

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

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

В четвертой главе на основании разработанных в главе 2 формальных правил трансляции разработан обобщенный модернизированный алгоритм генерации процедурного компонента параллельной программы:

Iе. Анализ и преобразование фрагментов параллельной программы во внутреннее представление транслятора;

2°. Обработка межкадровых операторов цикла;

3°. Обработка межкадровых условных операторов перехода;

4°. Обработка кадровых конструкций;

5°. Организация управления потоками данных многокадровых параллельных программ;

6°. Генерация процедурного компонента в виде проекта параллельно-конвейерной программы.

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

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

Разработан обобщенный модернизированный алгоритм генерации потокового компонента параллельной программы:

1 Поиск объектов, соответствующих конструкции Сас1г;

2°. Обработка операторов присваивания и формирование информационных потоков;

3°. Обработка операторов цикла;

4°. Обработка условных операторов перехода;

5". Описание объектов, созданных на этапах 2-4, в виде операторов контроллеров распределенной памяти.

Разработан алгоритм обработки операторов присваивания и формирования

информационного потока данных для потокового компонента. Созданные алгоритмы

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

минимизировать время выполнения параллельно-конвейерной прикладной программы на РВС.

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

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

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

На рис. 5 приведен пример экрана интегрированной среды разработки, позволяющей создавать параллельные прикладные программы на языке СОЬАМО.

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

Рис. 6. Синтезированный информационный граф программы

Результаты диссертации были использованы при создании системного программного обеспечения для различных РВС, созданных в НИИ многопроцессорных вычислительных систем ЮФУ в течение ряда лет как для реконфигурируемых ускорителей персонального компьютера, так и для высокопроизводительных вычислительных комплексов, содержащих несколько тысяч ПЛИС. С помощью транслятора разработано прикладное программное обеспечение для ряда РВС, в том числе прикладные программы, содержащие десятки тысяч строк исходного текста, а сгенерированный код задействует сотни ПЛИС в едином вычислительном контуре.

Созданный транслятор с модернизированного языка СОЬАМО позволяет в 3-4 раза увеличить удельную производительность РВС по сравнению с предыдущей версией транслятора, разработанного в начале 2000-х годов, а также позволяет в 7-10 раз сократить временные затраты на разработку и портацию параллельных прикладных программ по сравнению с разработкой прикладных программ на языках ШЗЬ-группы, что подтверждается актами внедрения результатов диссертационного исследования в производственных и научно-исследовательских организациях.

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

ОСНОВНЫЕ РЕЗУЛЬТАТЫ И ВЫВОДЫ

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

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

1) принципы трансляции языка СОЬАМО для программирования многокадровых параллельных прикладных программ для РВС на уровне логических ячеек ПЛИС, которые отличаются введением в вычислительную структуру прикладной задачи сдвоенных контроллеров распределенной памяти и дополнительных коммутационных структур для переключения информационных потоков;

2) расширение языка высокого уровня СОЬАМО, отличающееся от языка СОЬАМО 2000-го года поддержкой битовых переменных, операций и функций, конструкций для использования внутренней памяти ПЛИС и средств обеспечения процедурной организации вычислений;

3) формализованные правила трансляции языка программирования высокого уровня с неявным описанием параллелизма СОЬАМО в части использования мемориальных коммутационных переменных, а также параллельной и конвейерной обработки данных для РВС на уровне логических ячеек ПЛИС;

4) структура транслятора с модернизированного языка СОЬАМО, отличающаяся от трансляторов процедурных языков генерацией как структурного, так и процедурного компонентов параллельной прикладной программы в едином вычислительном контуре на основе описания на одном языке программирования;

5) алгоритмы трансляции структурного компонента параллельной программы, отличающиеся представлением в виде отдельного информационно-эквивалентного графа транслируемой параллельной прикладной программы;

6) модернизированные алгоритмы генерации процедурных и потоковых компонентов, отличающиеся разделением вычислительных функций и операторов контроллеров распределенной памяти и обеспечивающие эффективную реализацию многокадровых прикладных программ на уровне логических ячеек ПЛИС.

ОСНОВНЫЕ ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ

1. Гудков, В.А. Средства программирования реконфигурируемых многопроцессорных вычислительных систем [Текст] / В.А. Гудков, И.И. Левин, А.И. Дордопуло, Л.М. Сластен // Известия ТРТУ. - Таганрог: Изд-во ТРТУ, 2006. - №16. Специальный выпуск. - С. 16-20.

2. Гудков, В.А. Методы трансляции операторов условного перехода на языке СОЬАМО в структурную составляющую [Текст] / В.А. Гудков // Материалы Международной научно-технической конференции «Суперкомпьютерные технологии: разработка, программирование, применение (СКТ-2010)». Т.1. - Таганрог: Изд-во ТТИ ЮФУ, 2010.-С.202-206.

3. Гудков, В.А. Реализация операторов условного перехода в структурной' составляющей параллельной программы на языке СОЬАМО [Текст] / В.А. Гудков // Материалы Седьмой Международной научной молодежной школы «Высокопроизводительные вычислительные системы». - Таганрог: Изд-во ТТИ ЮФУ, 2010.-С.196-201.

4. Гудков, В.А. Функции языка программирования COLAMO для обработки битовых операций [Текст] / В.А. Гудков // Материалы Седьмой Международной научной молодежной школы «Высокопроизводительные вычислительные системы». -Таганрог: Изд-во ТГИ ЮФУ, 2010. - С.304-308.

5. Гудков, В.А. Ресурсонезависимое программирование многопроцессорных систем [Текст] / И.И. Левин, А.И. Дордопуло, В.А. Гудков // Известия ТРТУ. - Таганрог: Изд-во ТРТУ, 2006. - №9(64). Специальный выпуск. - С. 174-178.

6. Левин, И.И. Семантические особенности описания переменных на языке программирования COLAMO [Текст] / И.И. Левин, А.И. Дордопуло, В.А. Гудков // Труды Третьей международной научной конференции «Суперкомпьютерные системы и их применение. SSA'2010». Республика Беларусь, Минск. - С. 176-179.

7. Дордопуло, А.И. Реализация битовых операций на языке программирования COLAMO [Текст] / А.И. Дордопуло, В.А. Гудков // Материалы Международной научно-технической конференции «Суперкомпьютерные технологии: разработка, программирование, применение (СКТ-2010)». Т.2. - Таганрог: Изд-во ТТИ ЮФУ, 2010. - С.184-188.

В совместных работах автором получены следующие результаты: в работе [1] показана возможность использования языка COLAMO для ресурсонезависимого программирования; в [5] отражены принципы программирования конвейерных архитектур с распределенной памятью; в [6] представлены семантические особенности описания переменных, соответствующих внутренней памяти ПЛИС, показаны особенности параллельной и конвейерной обработки данных; в [7] показаны принципы обработки битовых переменных.

ЛР №020565 от 23 июня 1997г. Подписано к печати_.11.2010 г.

Формат 60х84Ш6. Бумага офсетная. Печать офсетная. Усл. пл.« Ы^Уч.-издл. -1,1. Заказ Кг." 7/6 Тираж 120 экз.

ГСП 17А, Таганрог, 28, Некрасовский, 44 Типография Технологического института Южного федерального университета в г. Таганроге

Оглавление автор диссертации — кандидата технических наук Гудков, Вячеслав Александрович

ВВЕДЕНИЕ.:.

1. АНАЛИЗ* СРЕДСТВ РАЗРАБОТКИ ПАРАЛЛЕЛЬНЫХ

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

1.1!.;Жыкишрр1раммированиЯ'.-МВС^.

1.2; Особенности РВС.;.':.; . 20>

1.31 Языки программирования РВС.

1.4. Язык программирования высокого уровня СОЕАМО.

1.5. Принципы , модернизации языка СОЬАМО для; программирования . ПЛИС'на-уровне логических'ячеек.

1.6. Выводы. —.•••••■•.

2 ФОРМАЛИЗАЦИЯ ПРАВИЛ ТРАНСЛЯЦИИ С ЯЗЫКА ВЫСОКОГО УРОВНЯ СОЬАМО;.1.

2.1. Организация доступа к памяти.'.';.45г'

2.2. Сцепление переменных. I.

2.3'.Параллельная и конвейернаяобработка данных.

2.4. Особенности обработки условных операторов:.

215; Особенности-.обработки.оператора-цикла.

2.6. Особенности трансляции вычислительных конструкций языка СОЬАМО.::.

2.7. Выводы:.!.:.;.:.

3; СИНТЕЗ СТРУКТУРНОГО КОМПОНЕНТА ПАРАЛЛЕЛЬНО

КОНВЕЙЕРНОЙ ПРОГРАММЫ ДЛЯ РВС.;.:.

3.1. Основные этапы трансляции модифицированного языка' СОЬАМО для рве.1.:.93;

3.2. Обобщенный алгоритм генерации структурного компонента параллельной программы.

3.3. Преобразование фрагментов программы к единой степени распараллеливания.

3 .4. Обобщенный алгоритм обработки операторов цикла.

3.5. Преобразование операторов во внутреннее представление транслятора:.:.'.'.

3.6. Алгоритм обработки вычислительных выражений:.

3 .7. Генерация информационного графа структурного компонента.

3:8; Обобщенный алгоритм трансляции конструкций Ье1.1.

3.9. Выводы.

4. СИНТЕЗ ПРОЦЕДУРНОГО КОМПОНЕНТА ПАРАЛЛЕЛЬНО-КОНВЕЙЕРНОЙ ПРОГРАММЫ ДЛЯ РВС.

4.1. Основные этапы генерации процедурного компонента параллельной программы.

4.1.1. Трансляция межкадровых операторов цикла.

4.2. Основные этапы генерации потокового компонента параллельной программы.

4.2.1. Обработка операторов присваивания и формирование информационного потока.

4.2.2. Обработка операторов цикла при генерации потокового компонента.

4.2.3. Обработка условных операторов при генерации потокового компонента.

4.3. Выводы.

Заключение диссертация на тему "Транслятор модифицированного языка программирования высокого уровня с неявным описанием параллелизма для реконфигурируемых вычислительных систем"

4.3. Выводы

1) Разработан обобщенный модернизированный алгоритм генерации процедурного компонента параллельной программы, включающий в себя обработку межкадровых операторов и кадровых конструкций языка COLAMO и процедуру представления вызовов кадров параллельно-конвейерной программы на' языке ассемблера контроллеров распределенной памяти (ARGUS).

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

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

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

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

6) Разработан алгоритм обработки операторов цикла для потокового компонента, который, в отличие от известных алгоритмов, позволяет определять не только шаг и количество обрабатываемых элементов в информационном потоке, но и организовать повторное выполнение вложенных циклов с переменными параметрами.

7) Разработан алгоритм обработки условного оператора, который, в отличие от известных алгоритмов, позволяет не только реализовать переключение информационных потоков, но и минимизировать аппаратные затраты для адресации к сегментам распределенной памяти РВС.

8) На основе разработанных алгоритмов разработан и создан транслятор с модифицированного языка высокого уровня с неявным описанием параллелизма, обеспечивающий трансляцию параллельных прикладных программ на уровне логических ячеек ПЛИС. Созданный транслятор позволяет в 3-4 раза увеличить удельную производительность РВС по сравнению с предыдущей версией транслятора, разработанного в начале 2000-х годов.

ЗАКЛЮЧЕНИЕ

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

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

- принципы трансляции языка СОЬАМО для программирования многокадровых параллельных прикладных программ для РВС на уровне логических ячеек ПЛИС, которые отличаются введением в вычислительную структуру прикладной задачи сдвоенных контроллеров распределенной памяти и дополнительных коммутационных структур для переключения информационных потоков;

- расширение языка высокого уровня СОЬАМО, отличающееся от языка СОЬАМО 2000-го года поддержкой битовых переменных, операций и функций, конструкций, для использования внутренней памяти ПЛИС и средств обеспечения процедурной организации! вычислений;

- формализованные правила трансляции языка программирования высокого уровня с неявным описанием параллелизма СОЬАМО в части использования мемориальных коммутационных переменных, а также параллельной и конвейерной обработки данных для РВС на уровне логических ячеек ПЛИС;

- структура транслятора с модернизированного языка СОЬАМО, отличающаяся от трансляторов процедурных языков генерацией как структурного, так и процедурного компонентов параллельной прикладной программы в едином вычислительном контуре на основе описания на одном языке программирования;

- алгоритмы трансляции структурного компонента параллельной программы, отличающиеся представлением в виде отдельного информационно-эквивалентного графа транслируемой параллельной прикладной программы;

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

Основные научные результаты диссертационной работы опубликованы в работах [63, 64, 72, 73, 81].

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

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

Таким образом, в диссертации решена новая научная задача, которая является актуальной и имеет существенное научно-практическое значение. Внедрение полученных в диссертации результатов вносит значительный вклад в развитие системного программного обеспечения высокопроизводительных вычислительных систем.

Результаты диссертации внедрены в ФГУП «Курский НИИ» МО РФ (г. Курск), НИВЦ МГУ (г. Москва), Южном научном центре РАН (г. Ростов-на-Дону), НИИ МВС ЮФУ (г. Таганрог).

Библиография Гудков, Вячеслав Александрович, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. Spartan-3 FPGA Family: Complete Data Sheet Электронный ресурс. / Xilinx Inc., 2005

2. Зотов, В.Ю. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx в САПР WebPACK ISE Текст.: монография / В.Ю. Зотов.- М.: Горячая линия-Телеком, 2006. 520 с.

3. Botros, Nazeih "HDL Основы программирования VHDL И Verilog" Текст.: монография / Nazeih Botros. Изд-во "Da Vinci инженерно Пресс", 2006. - 506 с.

4. Грушвицкий, Р.И. Проектирование систем на микросхемах программируемой логики Текст.: монография / Р.И. Грушвицкий, А.Х. Мурсаев, Е.П. Угрюмов. СПб.: БХВ-Петербург, 2002. - 608 с.

5. Система CATAPULT С SYNTESIS. С++ FPGA Текст. / А. Лохов, И. Селиванов // ЭЛЕКТРОНИКА: Наука, Технология, Бизнес «Системы проектирования». - Выпуск № 5/2005.6. http://www.parallel.ru

6. Каляев A.B. Модульно-наращиваемые многопроцессорные системы со структурно-процедурной организацией вычислений Текст.: монография / A.B. Каляев, И.И. Левин; под ред. A.B. Каляева. М.: Янус-К, 2003. - 380 с.

7. Левин, М.П. Параллельное программирование с использованием ОрепМР Текст.: монография / М.П. Левин. Изд-во Бином. Лаборатория знаний, 2008.

8. Воеводин, В.В. Параллельное программирование Текст.: монография / В.В. Воеводин, Вл.В. Воеводин. С-Пб. Изд-во «БХВ-Петербург», 2002.

9. Barbara Chapman. Using ОрепМР: Portable Shared Memory Parallel Programming Текст.: Изд-во МИТ Пресс MIT Press, Cambridge, Massachusetts., 2008.150 ' /'v

10. Хьюз, К. Параллельное . и, распределенное программирование с использованием С:н- Текст.: монография / К. Хьюз, Т. Хьюз. Изд-во Вильяме, 2004.

11. Hempel, R. The Argonne/GMD Macros in FORTRAN for Portable Parallel Programming using the Message Passing Programming Model, Feb. 1991.

12. Меткалф, M., Рид Дж. Описание языка программирования Фортран 90 : монография / М. Меткалф,Дж.Рид. М.:Мир, 1995.

13. ДенисовШ.А. -Параллельное программирование новытобраз мысли. http://www.rapas.ru/computerra.html.

14. High Performance' Fortran Language Specification: High' Performance Fortran Forum, May 3, 1993, Version 1.0.

15. Lastovetsky A.: Parallel Computing on Heterogeneous Networks, John Wiley & Sons, New Jersey, 2003, 159-254.18. http:/Avww.paràllel.ru/tecli/mpc/mpG-rus.html19.http ://u-pereslavl.botik.ru/~vadim/MCS Ьаф/index.ru.php

16. Сердюк Ю.П., Петров A.B. Параллельное программирование; для?! многоядерных ' процессоров; Электронная книга. http://www.intuit.ru/department/supercomputing/ppmcp/

17. Джоунз, F. Программирование, на языке Оккам Текст. : монография / Г. Джоунз; пер: с.англ.- Mi :'МирЦ989^-208?с::- ISBN=S-03M)01155r2:„

18. Хоар Ч. Взаимодействующие последовательные процессы. М::.Мир, 1989:-265с. . : \ , . , : .

19. Де Сантис, И Язьш Ада Текст. : монография / Пабло де Сантис. Изд-во ACT, 2005.

20. Бен-Ари, М-. Языки программирования. Практический сравнительный? анализ Текст.: монография / М. Бен-Ари. М.: Мир, 2000.25. http://clusters.top500.org

21. Воеводищ Вл.В. "Вычислительное дело и кластерные системы" Текст.: монография / Вл.В: Воеводин, С.А. Жуматий. М.: Изд-во МГУ, 2007. -150 с. ; . . ' •

22. Савин, Г.И., Кластеры Беовульф Текст. / Г.И. Савин, Г1.Н. Телегин, Б.М! Шабанов// Известия^ Вузов: Электроника. - Mi : Изд-во МГИЭТ, 2004. -№1. - С. 7-12. ' .

23. Кузелин, М. Основные семейства ПЛИС фирмы Xilinx Текст. / М. Кузелин // Электроника: наука, технология, бизнес. №5, 2004. http://www.electronics.ru/pdf/52004/16.pdf.

24. Hartenstein R. W., Hirschbiel A. G., Weber M. Xputers: An open family of non-von neumann architectures. Universität Kaiserslautern, Bau 12, Postfach 3049, D-675, Kaiserslautern, Germany.

25. Xputer Page //http://xpiitersinformatik.uni-kl.de/xputer/indexxputer.htrnl39. http://systemc.dax.ru/book/Lhtml40. http:/^ga.parallel.ru/lang.html41. www.stretchinc.com42. http:// www.rosta.ru

26. Каляев, A.B. Многопроцессорные вычислительные системы с программируемой архитектурой Текст.: монография / A.B. Каляев. М.: Радио и Связь, 1984. - 240 с.

27. Каляев, A.B. Многопроцессорные системы, с перестраиваемой архитектурой: концепции развития и применения Текст. / A.B. Каляев, И.И. Левин // Наука производству, 1999. - № 11. - С.11-19.

28. Каляев, A.B. Многопроцессорные системы с распределенной памятью, универсальной коммутацией и программируемой структурой микропроцессоров Текст. / A.B. Каляев // Электронное моделирование. Киев, 1979. -№ 1.-С. 31-41.

29. Каляев, A.B. Принципы организации многопроцессорных систем сверхвысокой производительности Текст. / A.B. Каляев // Микропроцессорные средства и системы. Москва, 1984. - № 2. - С. 31-35.

30. Botros, Nazeih HDL. Основы программирования VHDL И Verilog" Текст.: монография / Nazeih Botros. Изд-во "Da Vinci инженерно Пресс, 2006. - 506 с.

31. ГОСТ Р 50754-95. Язык описания аппаратуры цифровых систем VHDL. Описание языка Текст. / Российский НИИ информационных систем (РосНИИ ИС); Всероссийская ассоциация организаций, заинтересованных в применении языка VHDL (ВАЯПС), 01.01.1996.

32. Поляков, А.К. Языки VHDL и VERILOG в проектировании цифровой аппаратуры Текст.: монография / А.К. Поляков. Издательство: Солон-Пресс ISBN: 5-98003-016-6, 2003. - 320 с.

33. Максфилд, К. Проектирование на ПЛИС. Курс молодого бойца Текст.: монография / К. Максфилд. М.: Издательский дом «Додэка-ХХ1» 2007.

34. Стешенко, В.Б. ПЛИС фирмы ALTERA: элементная база, система проектирования и языки описания аппаратуры Текст. / В.Б. Стешенко // Издание 3-е, стереотипное. М.: Издательский дом «ДодэкаХХ1», 2007.53. www.ImpulseC.com

35. Левин, И.И. Язык программирования вы-сокого уровня для многопроцессорной системы с программируемой архитектурой Текст.:сборник трудов / И.И. Левин, В.Ф. Гузик, О.О. Сафронов // Распределенная обработка информации. Новосибирск, 1991.

36. Левин, И.И. Ресурсонезависимое параллельное программирование Текст. / И.И. Левин // Искусственный интеллект. Донецк: Наука i освгга, 2002.-№3.-С. 277-285.

37. Левин, И.И. О языке макроассемблера комплекта БИС с програм-мно-перестраиваемой структурой Текст. / И.И. Левин, О.О. Сафронов // Архитектура ЭВМ и машинное моделирование. Таганрог: Изд-во ТРТИ, 1989.

38. Семерников, Е.А. Два подхода к созданию макрообъектов для реконфигурируемых вычислительных систем на основе ПЛИС Текст. /Е.А. Семерников, В.Б. Коваленко, М.С. Кочерга // Материалы Второй

39. Международной научной конференции «Суперкомпьютерные системы и их применение» (SSA'2008). Минск: ОИПИ HAH Беларуси, 2008. - С. 60-64.

40. Левин, И.И. Структурно-процедурное программирование. Тезисы докладов Международой научной конференции "Искусственный интеллект2000", п. Кацивели, 2000. С. 148-150.

41. Левин И.И. Методика организации высокоэффективных параллельных вычислений в многопроцессорных системах. Тезисы докладов Международной научной конференции "Искусственный интеллект-2000", п. Кацивели, 2000. -С. 142-144.

42. Клоксин, У. Программирование на языке Пролог Текст.: монография / У. Клоксин, К. Меллиш. М.: Мир, 1987.

43. Стерлинг, Л. Искусство программирования на языке Пролог Текст.: монография / Л. Стерлинг, Э. Шапиро. М.: Мир, 1990. - 235 с.71. http://digital.sibsutis.ru/digital/MS.htm

44. Гудков, В.А. Методы трансляции операторов условного перехода на языке COLAMO в структурную составляющую Текст. / В.А. Гудков // Материалы Международной научно-технической конференции

45. Суперкомпьютерные технологии: разработка, программирование, применение (СКТ-2010)». ТА.-Таганрог: Изд-во ГШЮФУ, 2010. -С.202-206.

46. Карпов, Ю.Г. Теория и технология программирования. Основы построения трансляторов Текст.: монография / Ю.Г. Карпов: СПб.: БХВ-Петербург, 2005. - 272 с.

47. Хантер, Р: Проектирование и конструирование компиляторов Текст. : монография / Р. Хантер; пер. с англ. М.: Финансы и статистика, 1984. - 232 с.

48. Вайнгартен, Ф. Трансляция языков: программирования Текст.: монография /Ф. Вайнгартен.-М.: Мир, 1977.

49. Ахо, А. Теория синтаксического анализа, перевода и компиляции Текст.: монография / А. Ахо, Дж. Ульман. М.: Мир, 1978.

50. Вьюкова, Н.И. Многомерная конвейеризация циклов Текст. / Н.И. Вьюкова, C.B. Самборский //Программные продукты и системы, 2008. -№4.

51. Lamport Leslie. The Parallel execution of DO loops, Communications of ACM, 17(2): 83-93, 1974.

52. Самборский, C.B. Формулировка задачи планирования линейных и циклических участков кода Текст. / C.B. Самборский // Программные продукты и системы. 2007. - № 3.

53. Лебедев, В.Н. Введение в системы программирования Текст.: монография / В.Н. Лебедев. М.: Статистика, 1975. - 312 с.

54. Федотов, И.Е. Некоторые приемы параллельного программирования: Текст.: учебное пособие / И.Е. Федотов. М.: Изд-во МГИРЭА (ТУ), 2008. -188 с.