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

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

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

Российская академия наук Институт системного программирования

УДК 519 685 На правах рукописи

ии^446342

Рубанов Владимир Васильевич

АВТОМАТИЗАЦИЯ ПОСТРОЕНИЯ ИНСТРУМЕНТАРИЯ КРОСС-РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ РАСШИРЯЕМЫХ ВСТРАИВАЕМЫХ СИСТЕМ

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

АВТОРЕФЕРАТ

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

Москва 2008

2 2 СЕН 2003

003446342

Работа выполнена в Институте системного программирования РАН

Научный руководитель академик РАН

Иванников Виктор Петрович

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

Галатенко Владимир Антонович

доктор физико-математических наук Машечкин Игорь Валерьевич

Ведущая организация Институт точной механики и

вычислительной техники им. С. А. Лебедева Российской академии наук

Защита диссертации состоится «10» октября 2008 г в 15 часов на заседании диссертационного совета Д 002 087 01 при Институте системного программирования РАН по адресу

109004, Москва, ул Б Коммунистическая, д 25,

Институт системного программирования РАН, конференц-зал (комн 110)

С диссертацией можно ознакомиться в библиотеке Института системного программирования РАН

Автореферат разослан « сентября 2008 г

Ученый секретарь диссертационного совета канд физ -мат наук

/Прохоров СП/

Общая характеристика работы

Актуальность темы

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

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

аппаратуры, что, в свою очередь, играет ключевую роль при решении следующих задач

1 Прототипирование целевой аппаратуры и исследование проектных альтернатив (design space exploration) - разработка тестовых программ для целевой машины, их симуляция и профилирование на различных потенциальных вариантах аппаратуры позволяет получать оценки эффективности того или иного проектного варианта и принимать решения о, например, изменении системы команд ядра, добавлении / удалении памятей, регистров и целых сопроцессоров.

2 Раннее создание приложений - программное обеспечение для целевой платформы должно быть создано и предварительно отлажено еще до появления реальной аппаратуры для сокращения времени выхода на рынок полного решения в виде «аппаратура + программы».

3. Верификация спецификаций аппаратуры - построенный кросс-симулятор позволяет проводить его взаимную верификацию с VHDL/Venlog симуляторами (после появления VHDL/Venlog спецификаций на позднем этапе проектирования) Такая верификация играет важную роль в процессе финального обеспечения качества перед запуском аппаратуры в производство.

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

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

системы «ядро + расширения» Кроме того, в случае расширяемых встраиваемых систем важно разделить разработку базового кросс-инструментария (для основного ядра) и разработку соответствующих модулей/инструментов для различных расширении, с возможностью комбинации соответствующих компонентов при построении кросс-инструментария для полной системы. Это необходимо для разграничения ответственности и прав интеллектуальной собственности при разработке ядра и различных расширений, за которые часто отвечают разные компании

Для построения кросс-инструментов необходимо задать машинно-читаемую спецификацию модели целевой аппаратной системы Можно выделить три группы языков, потенциально пригодных для этой цели Это HDL языки (Hardware Definition Languages) для детального описания аппаратуры (например, Venlog/VHDL), ADL-языки (Architecture Description Languages) для высокоуровневого описания аппаратуры и, наконец, языки программирования общего назначения (например, C/C++)

Существенными недостатками симуляторов на основе HDL описаний являются низкая скорость работы (разница в 3 порядка в сравнении с вручную разработанными симуляторами) и необходимость в детальном структурном описании аппаратуры Низкая скорость работы делает использование таких симуляторов мало пригодным для прототипирования аппаратуры и отладки приложений. Кроме того, на основе VHDL/Venlog описания невозможно построение ассемблера и дисассемблера, так как явное описание системы команд в этих языках отсутствует

ADL-языки активно развиваются в последнее десятилетие, разработаны и соответствующие программные средства, позволяющие проводить высокоуровневое прототипирование аппаратуры на уровне системы команд, в том числе с построением кросс-инструментов Такой подход действительно хорошо работает на ранних этапах проектирования, когда принимаются «крупные» архитектурные решения, однако, по мере уточнения деталей конструкции, рано или поздно приходится сталкиваться с ограничениями соответствующего языка ADL и построить на основе такого описания достаточно точный и быстрый симулятор становится невозможно Поэтому кросс-инструментарий, построенный полностью автоматически на основе ADL-описания, невозможно использовать для создания и отладки реальных программ, так как качество такого инструментария достаточно только для

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

Ручное программирование кросс-инструментов на языке общего назначения (обычно С/С++) позволяет учитывать все необходимые детали и получать инструментарий производственного качества Но необходимы существенные усилия и, самое главное, большое время для создания и модификации инструментов вручную, что делает этот подход малопригодным для прототипирования целевой аппаратуры ввиду слишком длинного цикла разработки и внесения изменений

Таким образом, перспективным направлением исследований представляется изучение возможности объединения в себе преимуществ высокоуровневого описания на языках типа АБЬ и эффективного описания деталей на языках программирования общего назначения с разделением спецификаций процессорного ядра и расширений Создание соответствующего метода автоматизированного построения кросс-инструментов на основе такого модульного комбинированного описания позволило бы быстро получать кросс-инструментарий для расширяемых встраиваемых систем нужного качества (с достаточной скоростью работы и точностью моделирования) с возможностью оперативного обновления для отражения различных вариантов аппаратуры

Цель и задачи работы

Основной целью данной работы является исследование и разработка способа комбинированного описания модели расширяемой встраиваемой системы на языке типа АБЬ и языке программирования общего назначения и разработка соответствующего метода автоматизированного построения кросс-инструментария на основе таких описаний Для достижения этой цели были поставлены следующие задачи

1 Исследовать характеристики современных архитектур расширяемых встраиваемых систем, выделить достаточно широкий класс целевой аппаратуры и построить обобщенную модель выделенного класса, которая будет задавать четкую декомпозицию компонентов системы по необходимой степени глубины их описания (АЮЬ или С++) с точки зрения автоматического построения кросс-инструментов

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

3. Разработать способ модульного описания конкретных моделей полной расширяемой встраиваемой системы с использованием разработанного АБЬ-подобного языка и языка программирования общего назначения С++1. Должно поддерживаться раздельное описание ядра и конкретных расширений, позволяющее проводить их независимую разработку с последующей интеграцией в виде различных комбинаций для получения определенной конфигурации полной системы

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

5. Провести апробацию разработанного метода и мета-инструментальных средств на современных архитектурах расширяемых встраиваемых систем

Использование описаний Автоматическое построение

иодалей целевой системы кросо-инструментов

ас** Новый „ А£М_-язык „, V ч Генераторы «еда Библюгам и готовь» компоненты ■к Ассемблер, дисассемблер Симуляюр, - оттад'*«.

Средства описания конкретных моделей в рамках обобщенной модели Мета-инструментальные средства для построения кросс-инструментов Целевые фосо-инструменты для разработки приложений

Рис. 1. Общая схема рассматриваемого подхода.

1 Язык программирования общего назначения эффективно использовать для описания сложных, но редко изменяющихся аспектов проектируемой системы К счастью, такие описания обычно невелики М)Ь-подобный язык эффективен для специализированного описания часто меняющихся основных аспектов, реализация которых в итоговом коде кросс-инструментов при этом составляет основную часть

Научная новизна

Научной новизной характеризуются следующие результаты работы.

1 Обобщенная моде пь расширяемых встраиваемых систем

2 Новый язык для описания наиболее часто меняющихся в процессе проектирования компонентов предложенной обобщенной модели

3 Новый метод комбинированного описания конкретных моделей (в рамках обобщенной модели) системы на предложенном языке и языках C/C++ и соответствующий метод автоматизированного построения кросс-инструментария для расширяемых встраиваемых систем.

Практическая значимость

Предложенные средства модульного описания на основе разработанного языка ISE (Instruction Set Extension) позволяют описывать системы команд и структуры памяти отдельных компонентов расширяемых встраиваемых систем, что совместно с разработанными мета-инструменгальными средствами может служить основой для построения различных программных комплексов имитационного моделирования, анализа, верификации и прототипирования таких систем

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

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

Апробация и публикации

Результаты работы докладывались на семинарах НИИСИ РАН в 2003 и 2008 годах, на конференции «10 лет ИСП РАН» в 2004 году, на семинарах ИСП РАН в 2002-2008 гг, на конференции SYRCoSE 2007 (МГУ)

По теме диссертации автором опубликовано 7 работ (из них 1 в изданиях по перечню ВАК), список которых приведен в конце автореферата

Структура и объем диссертации

Диссертация состоит из введения, пяти глав, заключения, списка литературы (97 наименований) и 3 приложений Основной текст диссертации (без приложений и списка литературы) занимает 167 страниц

Краткое содержание диссертации

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

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

1 языки HDL (Hardware Definition Languages) для описания аппаратуры с возможностью синтеза реальных спецификаций для производства микросхем,

2 языки ADL (Architecture Description Languages) для высокоуровневого описания аппаратуры на уровне системы команд,

3 языки программирования общего назначения

Из первой группы рассматриваются Venlog, VHDL, SystemC, из второй - nML, ISDL, EXPRESSION, в качестве примеров третьей группы используются С и С++.

Третий раздел содержит сравнительный анализ рассмотренных решений, из которого делаются следующие выводы.

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

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

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

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

Таким образом, наиболее близким (хотя и с существенными недостатками) из рассмотренных методов построения кросс-инструментов для решения поставленных задач является метод автоматической генерации кросс-инструментов на основе спецификации на некотором АБЬ-языке Однако анализ существующих АОЬ-языков показывает, что ни один из них не позволяет описывать потактово-точные модели аппаратуры, включающие в себя все типичные для встраиваемых архитектур возможности конвейер, прерывания, зависимости между командами и операндами, периферию и т п

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

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

Во второй главе вводятся необходимые для дальнейшего изложения определения и термины, и описывается обобщенная модель целевого класса расширяемых встраиваемых систем Данная модель задает абстрактные структурные компоненты, общие алгоритмы их работы и протоколы взаимодействия между ними Декомпозиция системы на компоненты в модели учитывает степень их изменчивости в процессе проектирования аппаратуры и уровень необходимой глубины их описания (ADL-язык или С++), достаточный для автоматического построения кросс-инструментов

В рассматриваемом классе расширяемых встраиваемых систем выделяются следующие реальные структурные элементы:

• основной процессор (ядро) - RISC микропроцессор с прямолинейным конвейером без суперскалярности,

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

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

• набор локальных памятей данных акселераторов (доступ к каждой из таких памятей имеет только соответствующий акселератор),

• разделяемая память (к ней имеют доступ как основной процессор, так и все акселераторы)

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

Предлагаемая обобщенная модель системы включает модель базового процессорного ядра Madelp и набор моделей акселераторов Model4'

Модель ядра Model* = {Sp,F",Dp,ExJ',Up} включает следующие элементы: Sp - полная память процессора, Fp - блок выборки команд процессора, I? - декодер процессора, Ехер - исполнительный блок процессора, UF - управляющий блок процессора

Полная память процессора состоит из основной памяти процессора мр и внутренней памяти процессора, включающей в свою очередь исполнительную память Е" и управляющую память Хр.

Исполнительная память Ер включает набор из пронумерованных троек ячеек Е' = {.Р, Р, Т}р, именуемых исполнительными слотами Ер. Слот в состоянии {/, р, (}' = {0,0,0} называется свободным, в ином случае активным

В каждом активном исполнительном слоте ячейка содержит код операции (КОП) выполняющейся команды, ячейка - содержит набор операндов

Р1У сформированный из конкретного кода команды, ячейка Т. - стадию выполнения этой команды (начиная с 1)

Model -

Model1' Model*'}"'' ]

Sp ={MF,E',Xr}

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

Операциями процессора называются функции у, заданные на произведении множества состояний основной памяти процессора {m}f и множества состояний управляющей памяти процессора {х}р и имеющие набор целочисленных параметров {р,} Такие функции формируют на основе текущего состояния памяти процессора изменения этого состояния и соответствуют простым действиям, которые могут быть выполнены за один такт (например, элементарные арифметические действия или операции манипулирования данными)

V({A}) WpXWf-i^l^bK}

Каждый процессор способен выполнять ненулевое множество операций Это тожество обозначим = В Ч" всегда входит пустая операция, не изменяющая состояние

В модели процессор имеет некоторое множество ресурсов, каждый элемент которого характеризуется типом ресурса Ресурсы одного типа неразличимы Набор пар, включающих в себя тип ресурса и количество экземпляров этого типа, будем называть вектором ресурсов г = |{/,л}| J Для

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

Вектор ресурсов, включающий в себя все типы имеющихся в процессоре ресурсов и их количества, назовем максимальным вектором ресурсов и обозначим ¡^ Будем говорить, что вектор ресурсов г, = {{/,«}"} не

превышает вектор г2 =[{'.»}"'}>то есть 1 ¿г2, если

V{/,n}« еЧ 3{/,„}? ег2 (,« -|»)А (»« <„?>)

Вектор ресурсов любой операции не должен превышать максимальный вектор ресурсов процессора Множество всех векторов, не превышающих максимальный вектор ресурсов процессора, обозначим Р' и назовем множеством допустимых векторов ресурсов (г ePF 01 ¿г^)

Функция res", отображающая множество операций Ч" на множество Рр, называется функцией ресурсов Она задает вектор ресурсов для каждой операции в Y': res' Ч'р р*

Параллельной композицией операций у„ назовем функцию

® = Vi liV: II IIV» (заданную на том же множестве состояний памяти, что и

операции, и параметризуемую объединением всех параметров составляющих операций), получаемую следующим образом пусть А,- множество адресов памяти, входящих в изменение состояния, порождаемое операцией <р, а\ еА, о а) е{д$, =(с,0} Если все адреса, входящие в объединение всех A,,i=l л, различны, то значение ю есть простое объединение всех изменений, порожденных операциями из параллельной композиции, в ином случае значение функции формируется только из тех пар, которые имеют уникальные адреса (то есть исключаются изменения, приводящие к конфликту записи в одну и ту же ячейку)

{в, coo (a,v}'; с у,0 л Wj б A, Vaf е Л, • {k,l} * {', Л => а\ * а'

Суммой векторов ресурсов назовем вектор, включающий в себя объединение всех типов ресурсов слагаемых, с количеством ресурсов для каждого типа, равным сумме ресурсов соответствующего типа в слагаемых г = г.+''2={{'.«,},} W=W® и Мга>", = я,0)+«,<г>

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

V v

о е О' о < г/„, где Vl е Ч", о = {у/,},

i-t

Таким образом, элемент множества Ор задает группу операций {v,}, которые могут выполняться параллельно [в рамках одного такта] Каждому элементу множества 0е сопоставим функцию а, получаемую применением параллельной композиции (см выше) составляющих этот элемент операций -°> = Vi II IIV, Множество таких функций обозначим Cf, а его элементы будем

называть комплекс-операциями процессора Заметим, что Ч?' с: Пр

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

Пусть {/>,} - набор целочисленных параметров. Тогда декодером параметров dp({p,}) для некоторой комплекс-операции <аеОр назовем

функцию, отображающую параметры {/?} на параметры этой комплекс-операции

Управляющей операцией npoijeccopa назовем операцию, которая вызывает изменения только управляющей памяти и не меняет основную

Вычислительной стадией команды процессора или просто командной стадиен, заданной комплекс-операцией aeClF, декодером параметров Ф({л}) и управляющей операцией <р, будем называть функцию stagep,

которая задана на произведении множества состояний основной памяти процессора {т}р и множества состояний управляющей памяти процессора

{*}.,, имеет набор целочисленных параметров {pt} (операндов), и определяется следующим образом:

stage'{{P¡}) {т}рх{х}р «W ){д/}х{./}

Таким образом, командная стадия представляет собой параллельную композицию комплекс-операции а еПр (с преобразованными декодером параметров ф({р,}) параметрами) и управляющей операции q>

Дескриптором команды процессора называется набор из КОП и масок операндов команды (задающих положение операндов в машинном слове) в совокупности с упорядоченным множеством вычислительных стадий (включая соответствующие комплекс-операции, декодеры параметров и управляющие операции) с параметрами, соответствующими операндам команды Такой дескриптор будем отождествлять с командой npotfeccopa Множество дескрипторов команд задает систему команд процессора Iе

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

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

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

степени изменчивости в процессе проектирования аппаратуры Что касается практических примеров применимости, то данная модель позволяет описывать такие современные встраиваемые процессоры (включая расширения) как ARM, Analog Devices ADSP 2100, ARC 6XX Core, Improv Systems Jazz DSP Core, Freehand Platform 2, VIA MicroDSP, VIA ZAC

Глава 3 посвящена описанию разработанного автором ADL-подобного языка ISE (Instruction Set Extension), предназначенного для спецификации основных компонентов введенной в предыдущей главе модели целевой аппаратуры - структуры памяти и системы команд процессора и акселераторов Также язык позволяет задавать дополнительную информацию (ассемблерный синтаксис и т.п), необходимую для полной настройки ассемблера, дисассемблера, компоновщика и отладчика

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

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

В отличие от классических АБЬ языков ¡БЕ не предназначен для полного описания имитационной модели процессора Его задача облегчить описание только тех элементов, которые можно найти в достаточно широком классе встраиваемых систем и которые составляют большую часть описания системы, причем наиболее часто меняющуюся Остальная часть имитационной модели задается на С/С++ (см далее) Такой подход позволяет сохранять гибкость в построении качественных симуляторов для широкого класса архитектур с обеспечением как хорошей (потактовой) точности, так и высокой скорости При этом, в случае акселераторов, ввиду их относительной простоты (отсутствие собственного управляющего блока), имитационную модель удается задавать почностъю на 1ЭЕ

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

В четвертой главе описывается разработанный автором метод автоматизированного построения инструментария кросс-разработки на основе предложенного комбинированного описания модели системы на языках КЕ и С/С++ В первом разделе дается общее описание метода в виде следующих основных стадий (см. Рис 2)

1 Разработка базовых кросс-инструментов для процессорного ядра системы с использованием языков С/С++ и 1БЕ, а также разработанных мета-инструментальных средств, именуемых МйаОЗР

2 Разработка модулей-расишрений для акселераторов с использованием языка 1БЕ и мета-инструментов Ме1аБ5Р

3 Получение полного кросс-инструментария путем комбинации базовых кросс-инструментов и необходимого набора модулей-расширений

Разработчики акселераторов

Рис. 2. Построение кросс-инструментария для расширяемых встраиваемых систем.

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

Первым уровнем описания процессора для построения базового кросс-инструментария является задание базовых управляющих и вычислительных возможностей (в основном управляющего блока Vе и основных операций Ч") процессора на языке С/С++. Описание проводится с использованием шаблонов исходного кода, готовых библиотек и автоматически настраиваемых компонентов, предоставляемых Ме1аБ8Р. В случае простого процессора, когда возможностей готовых компонентов достаточно, такое описание может быть вырожденным.

На втором уровне используется язык КЕ для определения структуры памяти и конкретной системы команд 1Р (в описании команд можно использовать определенные на первом уровне базовые операции).

В случае акселераторов в КЕ задается полное описание, так как все остальные необходимые для моделирования акселераторов возможности реализуются предоставляемыми Ме1а05Р компонентами.

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

Л

к

Разработчик полной системь (интегратор)

Для построения симулятора основного процессора разработчик задает на С/С++ следующие элементы обобщенной модели - Хр - управляющую память процессора, Ч"" - множество базовых операций, Р'' - блок выборки команд и управляющий блок процессора ир. Кроме того, могут быть определены необходимые компоненты, моделирующие периферию системы, а также методы инициализации и сброса состояния системы.

Для описания указанных элементов Ме1аВ8Р предоставляет шаблоны исходного кода, в которых уже реализовано простое поведение по умолчанию в рамках обобщенной модели. Эти шаблоны можно расширить за счет дополнительных описаний на С/С++, реализующих необходимые возможности для моделирования конкретной аппаратуры - управляющая память обычно задается в виде глобальных переменных, а остальные элементы являются функциями языка С, при описании которых разработчик может вызывать функции предоставляемых МйаОБР библиотек и пользоваться мета-данными, извлекаемыми из 18Е описания. Функции, которые таким образом задает разработчик, а также функции, которые генерируются средствами Ме1аВЯР из 18 Е описаний, вызываются контроллером симулятора в соответствии с обобщенной моделью (Рис. 3).

: Реализация функций ; поведения стадии команд

Библиотека шддержки ¡БЕ

1Конгроллв| симулятора

. Модуль работы с ! настройками

Модуль работы с мета-данными 15£

Шдули-расщнрення гжсаператоров

.Имя

Генерируется МейПЗР на основе 1ЭЕ описания

Готовый компонент Ме1а0оР

Им»

Задается на С/С++ ...... Р

Внешний компонент ---►

Вызов АР)

Обмен данными

Условные обозначения

Рис. 3. Структура базового симулятора.

Таким образом, комбинация С/С++ и ГЗЕ спецификаций задает все элементы модели процессора, а модели акселераторов полностью определяются своими 1БЕ описаниями Совокупность таких описаний задает модульное комбинированное описание модели полной расширяемой встраиваемой системы

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

Последний раздел четвертой главы содержит описание архитектуры конструкции кросс-инструментов и соответствующий способ их построения на основе введенного двухуровневого описания Отдельно рассматриваются процессы построения базового инструментария для процессорного ядра и построение модулей-расширений для акселераторов Основными средствами в этих процессах являются генераторы различных С/С++ модулей на основе КЕ-описаний, готовые программные компоненты, в процессе выполнения динамически настраивающиеся на целевую аппаратуру, а также различные библиотеки, предоставляемые мета-инструментальной системой Ме1аБ8Р

В предложенном подходе использование С/С++ позволяет обеспечивать высокое качество получаемых кросс-инструментов (прежде всего скорости работы и точности моделирования) Использование же специализированного языка ГЗЕ для задания наиболее емких, но часто меняющихся в процессе проектирования аспектов, которые, благодаря мета-инструментам Ме1а08Р, согласованно отражаются во всех кросс-инструментах (например, бинарное кодирование отдельной команды влияет на симулятор, ассемблер и дисассемблер) позволяет эффективно модифицировать кросс-инструменты для отражения различных вариантов аппаратуры При этом объем кода, который задается непосредственно на С/С++, составляет малую часть в сравнении с кодом, генерируемым из 18Е спецификаций, и готовым кодом Ме1а1Э8Р модулей Акселераторы же вообще полностью задаются на ЕЕ

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

Пятая глава посвящена описанию мета-инструментальных средств (framework) поддержки предлагаемого метода, объединенных единым названием MetaDSP, и практическим применениям этих средств. В первом разделе описывается архитектура мета-инструментальной системы MetaDSP и рассматривается ее состав по отдельным компонентам (см. Рис 4).

¡¡Интегрированнаясреда MetaD - ... ' '-■

^JM^ Инструмент MetaDSP Готовый код MetaDSP

Щ Ручной код

Сгенерированный код

-► Управление и запуск

---Поток данных

Условные обозначения

Рис. 4. Компоненты н схема работы системы MetaDSP.

Среди основных компонентов выделяются

1 Средства работы с ШЕ-описаниями - визуальный редактор со встроенными механизмами автоматической верификации как в виде отдельного прохода, так и непосредственно по мере ввода данных, средства анализа системы команд и построения статистик

2. Трансляторы 1БЕ-описаний, генерирующие С/С++ код необходимых модулей кросс-инструментов на основе 1БЕ

3 Повторно используемые программные компоненты

4 Интегрированная среда мета-разработки, предоставляющая пользователю единый графический многооконный интерфейс для работы с выше перечисленными компонентами и для взаимодействия со средой программирования С/С++.

Использование таких мета-инструментов позволяет реализовать заложенный в предлагаемом методе уровень автоматизации создания кросс-инструментов и внесения в них изменений как на уровне процессорного ядра, так и на уровне отдельных акселераторов. Визуальный редактор 1БЕ-описаний и средства встроенной диагностики обеспечивают быстрое нахождение нужного для изменения места, повышают наглядность и согласованность самих изменений и интерактивно выполняют проверку их корректности, тем самым сокращая время на внесение изменений в спецификацию и количество связанных с этим ошибок. Средства анализа спецификаций и построения статистик обеспечивают разработчика дополнительными данными, которые, наряду с данными профилировщиков времени выполнения, помогают принимать решения о возможных путях оптимизации встраиваемой системы (как аппаратуры, так и программ). Наконец, трансляторы КЕ-описаний и повторно используемые программные компоненты минимизируют количество кода С/С++, который необходимо создать разработчику кросс-инструментов При этом используются отлаженные модули и обеспечивается согласованность внесения изменений в кросс-инструменты за счет локализации специфичных для конкретной системы описаний в 18Е-спедафикациях и (в случае базового симулятора) в отдельных С/С-н- модулях

Также, кроме непосредственного использования системы М^аББР для построения кросс-инструментов в рамках предложенного сценария работы, компоненты системы могут использоваться для построения других специализированных систем мета-разработки кросс-инструментов Например, для создания встроенного в целевую среду интегрированной разработки редактора и генератора модулей-расширений акселераторов Это особенно актуально в случае расширяемых встраиваемых систем, так как позволяет интерактивно вносить изменения в описания акселераторов и в соответствующую прикладную программу в рамках единой среды для оптимизации целевого решения «аппаратура + программа»

В разделе 5 3 представлены результаты практического применения предлагаемого в данной работе метода и мета-инструментов на примере 5 промышленных проектов ИСП РАН, выполнявшихся в 2001 - 2005 гг Результаты этого применения по сравнению с ручной разработкой кросс-инструментов представлены в Таблице 1.

Таблица 1. Результаты применения метода и системы ]У^аР8Р.

Характеристика Результат

Количество строк описания для построения ассемблера, дисассемблера и симулятора сокращение более чем в 12 раз

Размер команды разработчиков сокращение с 10 до 3 человек

Количество ошибок, связанных с неверным отражением спецификаций аппаратуры в кросс-инструментах сокращение более чем в 10 раз

Средний цикл обновления кросс-инструментов при изменении спецификаций аппаратуры сокращение с нескольких дней до нескольких часов (в ряде случаев минут)

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

Основные результаты работы

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

2. Разработан новый специализированный язык ВЕ для эффективного описания основных компонентов предложенной обобщенной модели

3 Разработан метод модульного комбинированного описания конкретных моделей расширяемых встраиваемых систем на языках КЕ и С/С++2 и соответствующий метод автоматизированного построения кросс-инструментария на основе таких описаний, позволяющий эффективно строить и модифицировать кросс-инструменты с обеспечением их высокого производственного качества (прежде всего скорости работы и точности моделирования)

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

Перечисленные результаты получены лично автором

Под непосредственным руководством и при участии автора реализованы следующие мета-инструментальные средства поддержки предложенного метода

1. визуальный редактор 1БЕ-описаний со встроенными инструментами верификации, анализа и статистики,

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

2 трансляторы ISE-описаний, генерирующие C/C++ код необходимых модулей кросс-инструментов на основе ISE-описаний,

3 повторно используемые программные компоненты для построения кросс-инструментов, в том числе средства динамической настройки кросс-инструментов на основе информации, извлекаемой на этапе их работы из ISE-описаний

Предложенный метод и мета-инструментальные средства были успешно апробированы на 5 современных архитектурах расширяемых встраиваемых систем (Freehand Platform 2, VIA MicroDSP 1 0 и 1 1, VIA DSP 2, ZAC)

Работы автора по теме диссертации

1 В.В Рубанов, Д А Марковцев, А И Гриневич Особенности кросскомпилятора языка С для ЦПОС

//Программирование. 2006 Л» 1. С 26-40.

2 В В. Рубанов, Д А Марковцев, А И Гриневич, М А Миткевич Динамическая поддержка расширений процессора в кросс-системе НТрудыИСПРАН,том5 М,2004 С 63-S8

3 В В Рубанов, Д А Марковцев, А И Гриневич Использование особенностей процессоров цифровой обработки сигналов в компиляторе языка 'С'

//Труды ИСП РАН, том 8, часть 1.М, 2005 С 137-158.

4 В В Рубанов, А С Михеев Интегрированная среда описания системы команд для сигнальных процессоров

//Труды ИСП РАН, том 9 М,200б С 143-158

5 V.V Rubanov Dynamic Support of Processor Extensions m Cross Development Toob // Proceedings of SYRCoSE 2007 (Moscow). P. 17-28

6 B.B Рубанов Обзор методов описания встраиваемой аппаратуры и построения инструментария кросс-разработки

// Труды ИСП РАН, том 15 М, 2008 С 7-40

7 BJ3 Рубанов. Метод автоматизированного построения инструментария кросс-разработки для расширяемых встраиваемых систем Препринт №20 М: ИСП РАН, 2008.98 с

Подписано в печать 03 09 2008 г

Печать трафаретная

Заказ № 685 Тираж 100 экз

Типография «11-й ФОРМАТ» ИНН 7726330900 115230, Москва, Варшавское ш, 36 (499) 788-78-56 www autoreferat ru

Оглавление автор диссертации — кандидата физико-математических наук Рубанов, Владимир Васильевич

Введение.

Глава 1. Методы описания встраиваемой аппаратуры и построения инструментария кросс-разработки.

1.1 Проектирование встраиваемых систем.

1.1.1 Обобщенная схема проектирования встраиваемых систем.

1.1.2 Разработка программ с помощью кросс-инструментария.

1.1.3 Прототипирование на основе кросс-инструментария.

1.2 Языки описания моделей аппаратуры и соответствующие методы построения кросс-инструментов.

1.2.1 Языки синтезируемого описания аппаратуры.

1.2.2 АЕ)Ь языки.

1.2.3 Языки программирования общего назначения.

1.3 Анализ существующих подходов и постановка задачи.

1.3.1 Сравнительные характеристики рассмотренных методов.

1.3.2 Постановка задачи.

Глава 2. Обобщенная модель расширяемых встраиваемых систем.

2.1 Общее описание целевой системы и требования к модели.

2.1.1 Общее описание целевой системы.

2.1.2 Процесс проектирования расширяемой аппаратуры.

2.1.3 Требования к обобщенной модели.

2.2 Модельная память системы.

2.2.1 Определения.

2.2.2 Память процессора.

2.2.3 Память акселератора.

2.2.4 Память системы.

2.3 Модельное поведение системы.

2.3.1 Система команд процессора.

2.3.2 Система команд акселератора.

2.3.3 Вычислительные блоки процессора.

2.3.4 Вычислительные блоки акселератора.

2.3.5 Исполнительный блок.

2.3.6 Модельная работа системы.

2.3.7 Запуск команд акселераторов.

2.4 Модель системы.

2.4.1 Модель процессора.

2.4.2 Модель акселератора.

2.4.3 Модель полной системы.

2.4.4 Симулятор полной системы.

2.5 Анализ применимости модели.

Глава 3. Язык описания моделей аппаратуры 1ЭЕ.

3.1 Обозначения.

3.2 Лексика языка 1ЭЕ.

3.3 Описание процессора и акселераторов на языке 18Е.

3.3.1 Подмножество 18Е-С для описания выражений и поведения.

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

3.3.3 Описание структуры памяти.

3.3.4 Описание типов ассемблерных лексем.

3.3.5 Описание типов операндов команд.

3.3.6 Описание системы команд.

3.3.7 Сквозные характеристики команд.

3.3.8 Описание межкомандных конфликтов.

3.4 Выводы.

Глава 4. Метод построения инструментария кросс-разработки.

4.1 Общее описание метода.

4.2 Двухуровневое описание расширяемых встраиваемых систем.

4.2.1 Описание базовых возможностей процессора на С/С++.

4.2.2 Описание памяти и системы команд на ISE.

4.3 Построение инструментария кросс-разработки.

4.3.1 Построение базового инструментария ядра.

4.3.2 Построение модулей расширений для акселераторов.

4.3.3 Построение полного кросс-инструментария.

4.4 Выводы.

Глава 5. Среда MetaDSP для построения кросс-инструментария и ее практические применения.

5.1 Компоненты системы MetaDSP.

5.2 Интегрированная среда мета-разработки.

5.2.1 Визуальный редактор и верификатор ISE-описаний.

5.2.2 Средства анализа системы команд и построения статистик.

5.2.3 Средства интеграции и работа с системой MetaDSP.

5.3 Практические применения метода и инструментов.

5.4 Выводы.

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

Современные достижения в удешевлении и сокращении сроков проектирования и создания цифровой аппаратуры наряду с развитием рынка разнообразных электронных устройств обусловили широкое распространение специализированных вычислительных систем (так называемых встраиваемых систем), ориентированных на решение узкого класса задач в рамках заданных жестких целевых характеристик (площадь кристалла, энергопотребление, быстродействие). Такие системы можно встретить практически в каждом электронном устройстве, начиная от бытовой техники и кончая самолетами и военными комплексами. При этом большую популярность приобретают расширяемые встраиваемые системы, которые проектируются на основе некоторого базового микропроцессорного ядра (soft core), которое дополняется в процессе проектирования специфическими для конкретной системы расширениями в виде сопроцессоров и/или дополнительных функциональных блоков, пополняющих систему команд и подсистему памяти ядра. При таком подходе спецификация одного и того же ядра повторно используется в системах . различного назначения, существенно сокращая затраты на проектирование, а использование специализированных для каждой системы расширений обеспечивает хорошие показатели производительности и энергопотребления.

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

1. Прототипирование целевой аппаратуры и исследование проектных альтернатив (design space exploration) — разработка тестовых программ для целевой машины, их симуляция и профилирование на различных потенциальных вариантах аппаратуры позволяет получать оценки эффективности того или иного проектного варианта и принимать решения о, например, изменении системы команд ядра, добавлении / удалении памятей, регистров и целых сопроцессоров.

2. Раннее создание приложений — программное обеспечение для целевой платформы должно быть создано и предварительно отлажено еще до появления реальной аппаратуры для сокращения времени выхода на рынок полного решения в виде «аппаратура + программы».

3. Верификация спецификаций аппаратуры — использование построенного кросс-симулятора позволяет проводить его взаимную верификацию с VHDL/V erilog симуляторами (после появления VHDL/Verilog спецификаций на позднем этапе проектирования). Такая верификация играет важную роль в процессе финального обеспечения качества перед запуском аппаратуры в производство.

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

Таким образом, актуальной задачей является раннее построение необходимых кросс-инструментов еще в процессе проектирования целевой аппаратуры (для нужд производителя аппаратуры) с возможностью дальнейшего их производственного использования для создания программ внешними пользователями (прикладные и системные программисты, разработчики новых расширений и новых комбинаций «ядро + расширения»). При этом кроме создания первой версии необходимо оперативно обеспечивать согласованное внесение дальнейших изменений в компоненты кросс-инструментария для отражения различных вариантов аппаратуры, возникающих как в процессе проектирования ядра, так и в процессе разработки расширений и при выборе конфигурации полной системы «ядро + расширения». Кроме того, в случае расширяемых встраиваемых систем важно разделить разработку базового кросс-инструментария (для основного ядра) и разработку соответствующих модулей/инструментов для различных расширений, с возможностью комбинации соответствующих компонентов при построении кросс-инструментария для полной системы. Это необходимо для разграничения ответственности и прав интеллектуальной собственности при разработке ядра и различных расширений, за которые часто отвечают разные компании.

Для построения кросс-инструментов необходимо задать машинно-читаемую спецификацию модели целевой аппаратной системы. Можно выделить три группы языков, потенциально пригодных для этой цели. Это HDL-языки (Hardware Definition Languages) для детального описания аппаратуры (например, Verilog/VHDL), ADL-языки (Architecture Description Languages) для высокоуровневого описания аппаратуры и, наконец, языки программирования общего назначения (например, C/C++).

Существенными недостатками симуляторов на основе HDL-описаний являются низкая скорость работы (разница в 3 порядка в сравнении с вручную разработанными симуляторами) и необходимость в детальном структурном описании аппаратуры. Низкая скорость работы делает использование таких симуляторов мало пригодным для прототипирования аппаратуры и отладки приложений. Кроме того, на основе VHDL/Verilog описания невозможно построение ассемблера и дисассемблера, так как явное описание системы команд в этих языках отсутствует.

АБЬ-языки активно развиваются в последнее десятилетие, разработаны и соответствующие программные средства, позволяющие проводить высокоуровневое прототипирование аппаратуры на уровне системы команд, в том числе с построением кросс-инструментов. Такой подход действительно хорошо работает на ранних этапах проектирования, когда принимаются «крупные» архитектурные решения, однако, по мере уточнения деталей конструкции, рано или поздно приходится сталкиваться с ограничениями соответствующего языка АХ)Ь и построить на основе такого описания достаточно точный и быстрый симулятор становится невозможно. Поэтому кросс-инструментарий, построенный полностью автоматически на основе АБЬ-описания, невозможно использовать для создания и отладки реальных программ, так как качество такого инструментария достаточно только для получения грубых оценок и не позволяет выполнять точное моделирование производительности приложений.

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

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

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

1. Исследовать характеристики современных архитектур расширяемых встраиваемых систем, выделить достаточно широкий класс целевой аппаратуры и построить обобщенную модель выделенного класса, которая будет задавать четкую декомпозицию компонентов системы по необходимой степени глубины их описания (АОЬ-уровня или С++) с точки зрения автоматического построения кросс-инструментов.

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

3. Разработать способ модульного описания конкретных моделей полной расширяемой встраиваемой системы с использованием разработанного АОЬ-подобного языка и языка программирования общего назначения С++1. Должно поддерживаться раздельное описание ядра и конкретных расширений, позволяющее проводить их независимую разработку с последующей интеграцией в виде различных комбинаций для получения определенной конфигурации полной системы.

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

5. Провести апробацию разработанного метода и мета-инструментальных средств на современных архитектурах расширяемых встраиваемых систем.

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

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

1 Язык программирования общего назначения эффективно использовать для описания сложных, но редко изменяющихся аспектов проектируемой системы. К счастью, такие описания обычно невелики. АБЬ-подобный язык эффективен для специализированного описания часто меняющихся основных аспектов, реализация которых в итоговом коде кросс-инструментов при этом составляет основную часть. разработки. Получаемые таким методом кросс-инструменты пригодны как для прототипирования аппаратуры и верификации УНОЬ/Уеп^ спецификаций в процессе проектирования, так и для разработки и отладки реальных приложений для целевой аппаратуры.

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

Результаты работы докладывались на семинаре НИИСИ РАН в 2003 году, на конференции «10 лет ИСП РАН» в 2004 году, на семинарах ИСП РАН в 2002-2008 гг., на конференции БУЯСоЗЕ 2007 (МГУ).

По теме диссертации опубликовано 7 работ [91]-[97], раскрывающих все основные результаты диссертации.

Диссертация состоит из введения, пяти глав, заключения, списка литературы и 3 приложений. Список литературы включает 97 наименований. Основной текст диссертации (без приложений и списка литературы) занимает 167 страниц.

Заключение диссертация на тему "Автоматизация построения инструментария кросс-разработки программного обеспечения для расширяемых встраиваемых систем"

5.4 Выводы

В данной главе были рассмотрены мета-инструментальные средства (framework) поддержки предлагаемого в работе метода, объединенных общим названием MetaDSP, и представлены результаты их практического применения.

Среди основных компонентов таких средств выделяются инструменты работы с ISE-описаниями (визуальный редактор и верификатор, средства анализа и статистики), трансляторы ISE-описаний (генерирующие C/C++ код необходимых модулей кросс-инструментов на основе ISE), повторно используемые программные компоненты и, наконец, интегрированная среда мета-разработки, объединяющая все выше перечисленные компоненты в единые сценарии использования на уровне интерфейса пользователя.

Использование таких мета-инструментов позволяет реализовать заложенный в предлагаемом методе уровень автоматизации создания кросс-инструментов и внесения в них изменений как на уровне процессорного ядра, так и на уровне отдельных акселераторов. Визуальный редактор ISE-описаний и средства встроенной диагностики обеспечивают быстрое нахождение нужного для изменения места, повышают наглядность и согласованность самих изменений и интерактивно выполняют семантическую проверку их корректности, тем самым сокращая время на внесение изменений в спецификацию и количество связанных с этим ошибок. Также автоматически обеспечивается синтаксическая корректность получаемых 18Е-описаний. Средства анализа спецификаций и построения статистик обеспечивают разработчика дополнительными данными, которые, наряду с данными профилировщиков времени выполнения, помогают принимать решения о возможных путях оптимизации встраиваемой системы (как аппаратуры, так и программ). Наконец, трансляторы 18Е-описаний и повторно используемые программные компоненты минимизируют количество кода С/С++, который необходимо создать разработчику кросс-инструментов. При этом используются отлаженные модули и обеспечивается согласованность внесения изменений в кросс-инструменты за счет локализации специфичных для конкретной системы описаний в 1БЕ-спецификациях и (в случае базового симулятора) в отдельных С/С++ модулях.

Также, кроме непосредственного использования системы Ме1а08Р для построения кросс-инструментов в рамках предложенного сценария работы, компоненты системы могут использоваться для построения других специализированных систем мета-разработки кросс-инструментов. Например, для создания встроенного в целевую среду интегрированной разработки редактора и генератора модулей-модулей расширений акселераторов. Это особенно актуально в случае расширяемых встраиваемых систем, так как позволяет интерактивно вносить изменения в описания акселераторов и в соответствующую прикладную программу в рамках единой среды для оптимизации целевого решения «аппаратура + программа».

Разработанный метод и мета-инструментальные средства были успешно применены в 5 проектах по созданию кросс-инструментов, выполнявшихся в Институте системного программирования РАН (ИСП РАН) в 2001-2005 гг. по заказу промышленных партнеров.

Заключение

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

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

2. Разработан новый специализированный язык ШЕ для эффективного описания основных компонентов предложенной обобщенной модели.

3. Разработан метод модульного комбинированного описания конкретных моделей расширяемых встраиваемых систем на языках 18Е и С/С++1 и соответствующий метод автоматизированного построения кросс-инструментария на основе таких описаний, позволяющий эффективно строить и модифицировать кросс-инструменты с обеспечением их высокого производственного качества (прежде всего скорости работы и точности моделирования).

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

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

Реализованы следующие мета-инструментальные средства поддержки предложенного метода:

1. визуальный редактор ISE-описаний системы команд и структуры памяти ядра и его расширений;

2. инструменты верификации и анализа ISE-описаний;

3. транслятор ISE-описаний ядра в код дешифратора и блока исполнения команд для построения симулятора ядра;

2. транслятор ISE-описаний расширений ядра в соответствующие модули для построения расширенного кросс-инструментария;

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

7. средства динамической настройки ассемблера, дисассемблера, компоновщика, отладчика и интегрированной среды разработки на целевую аппаратуру на основе информации, извлекаемой на этапе их работы (in run-time) из ISE-описаний ядра и соответствующих расширений.

Проведена апробация предложенного метода и мета-инструментальных средств на 5 современных архитектурах расширяемых встраиваемых систем (Freehand Platform 2, VIA MicroDSP 1.0 и 1.1, VIA DSP 2, ZAC).

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

1. Я.А. Хетагуров. Из истории развития специализированных бортовых вычислительных машин. HTML. ('http://www.computer-museum.ru/liistussr/special.htm).

2. В.В. Липаев. Из истории развития отечественной вычислительной техники для военных систем управления в реальном времени. HTML. rhttp://www.computer-museum.ru/histussr/l 6.htm).

3. К. Колпаков. История развития авиационных бортовых цифровых вычислительных машин в России. HTML. fhttp://www.computer-museum.m/histussr/stpc.htm).

4. Lei Yang, Robert P. Dick, Haris Lekatsas, and Srimat Chakradhar. RAM for Free // IEEE Spectrum. August 2008.

5. А. Бухтев. Проектирование встроенных систем: от концепции до кристалла. // Электронные компоненты. 2007. №1.

6. A. Parker, etc. System-Level Design.

7. The VLSI Handbook—2nd ed. CRC Press, 2007.

8. Donald R. Cottrell. Design Automation Technology Roadmap. // The VLSI Handbook—2nd ed. CRC Press, 2007.

9. Software-Hardware Codesign.

10. IEEE Design & Test of Computers. January-March 2000. P.92-99.

11. M L Vallejo, J С Lopez. On the hardware-software partitioning problem: System Modeling and partitioning techniques.1. ACM TODAYS. 2003. Vol.8.

12. R Ernst, J Henkel, T Benner. Hardware-software co-synthesis for microcontrollers. // IEEE Design and Test. 1993. Vol.10.

13. Wayne Wolf. Embedded Computing Systems and Hardware/Software Co-Design. // The VLSI Handbook—2nd ed. CRC Press, 2007.

14. Embedded С. Стандарт ISO/IEC TR 18037:2004.

15. ExecutabIe and Linking Format in Wikipedia. HTML. (http://en.wikipedia.org/wiki/Executable and Linkable Format).

16. Generic ELF Specification. HTML. fhttp://www.linux-foundation.org/spec/book/ELF-generic/ELF-generic/book 1 .html).

17. M. Hartoog, J. Rowson, P. Reddy. Generation of Software Tools from Processor Descriptions for Hardware/Software Codesign.

18. Proc. of Design Automation Conference (DAC) 1997.

19. Lin Yung-Chia. Hardware/Software Co-design with Architecture • Description Language. // Programming Language Lab. NTHU, 2003.

20. Д.Ю. Булычев. Разработка программно-аппаратных систем на основе описания макроархитектуры.

21. Сборник Системное программирование. Санкт-Петербург, 2004.

22. Z. Navabi. Languages for Design and Implementation of Hardware. // The VLSI Handbook—2nd ed. CRC Press, 2007.

23. A.K. Поляков. Языки VHDL и VERILOG в проектировании цифровой аппаратуры. // М.: Солон-Пресс, 2003. 320 с.

24. П.Н. Бибило. Синтез логических схем с использованием языка VHDL. // М.: СОЛОН-Р, 2002. 384 с.

25. Volnei A. Pedroni. Circuit Design with VHDL // MIT Press, 2004.

26. IEEE Standard VHDL Language Reference Manual. IEEE Std 1076-1987. 25.IEEE Standard Multivalue Logic System for VHDL Model Interoperability. IEEE Std 1164.

27. IEEE Standard VHDL Synthesis Packages. IEEE Std 1076.3-1997.

28. M. Rofoue, Z. Navabi. RT Level Hardware Description with VHDL. // The VLSI Handbook—2nd ed. CRC Press, 2007.

29. Weng Fook Lee. Verilog Coding for Logic Synthesis. John Wiley & Sons, 2003.

30. IEEE Standard Hardware Description Language Based on the Verilog Hardware Description Language. IEEE Std 1364-2005.

31. Z. Navabi. Register Transfer Level Hardware Description with Verilog. // The VLSI Handbook—2nd ed. CRC Press, 2007.

32. Open SystemC Initiative. HTML. (http ://ww w. système .org).

33. IEEE Standard System C Language Reference Manual. IEEE Std 1666-2005.

34. S. Mirkhani and Z. Navabi. Register-Transfer Level Hardware Description with SystemC. // The VLSI Handbook—2nd ed. CRC Press, 2007.

35. Stephen Bailey. Comparison of VHDL, Verilog and SystemVerilog // Model Technology White Paper. 2005.35.Synopsys VCS. HTML, PDF.http.V/www.synopsys.com/products/simulation/simulation.html) (http://www.synopsys.com/products/simulation/vcs ds.pdf).

36. Mentor Graphics ModelSim. HTML. (http://www.mentor.com/products/fV/digitalverification/index.cfm).

37. Cadence NC-Sim. PDF. (http://www.cadence.com/datasheets/4492C Incisive Verilog DSfhl.pdf).

38. Cadence Incisive Simulators. HTML.http :// cadence.com/products/functionalver/ simulation/index, aspx).

39. P. Mishra and N. Dutt. Architecture description languages for programmable embedded systems // IEEE Proceedings Computers and Digital Techniques. Vol. 152, No. 3, May 2005.

40. W. Qin, and S. Malik. Architecture description languages for retargetable compilation // The Compiler Design Handbook, CRC Press, 2002.

41. H. Tomiyama, A. Halambi, P. Grun, N. Dutt, A. Nicolau. Architecture Description Languages for Systems-on-Chip Design.

42. Proc. Asia Pacific Conf. on Chip Design Language. 1999. P. 109-116.

43. Rainer Leupers. Retargetable Code Generation for Digital Signal Processors. Kluwer Academic Publishers, 1997.43 .M. Freericks. The nML Machine Description Formalism

44. Technical Report 1991/15. TU Berlin, Fachbereich Informatik, 1991.

45. A. Fauth, J. Van Praet, M. Freericks. Describing instruction set processors using nML//Proc. ofED&TC. 1995.

46. Chess/Checkers Products. Target Compiler Technology. HTML. (http://www.retarget.com/).

47. ISDL Project Homepage. HTML. (http://caa.lcs.mit.edu/caa/home.htmn.

48. G. Hadjiyannis, S. Hanono, S. Devadas. ISDL: An Instruction Set Description Language for Retargetability

49. Proc. of Design Automation Conference (DAC). 1997.

50. EXPRESSION Homepage. HTML. (http://www.cecs.uci.edu/~aces/index.html').

51. Ashok Halambi, Peter Grun, Vijay Ganesh, Asheesh Khare, Nikil Dutt and Alex Nicolau. EXPRESSION: A Language for Architecture Exploration through Compiler/Simulator Retargetability // Proc. of DATE. 1999.

52. P. Mishra, A. Shrivastava, N. Dutt. ADL-driven Software Toolkit Generation for DSE // ACM Transactions on Design Automation of Electronic Systems. 2006. P. 1-31.

53. M. Reshadi, N. Dutt, P. Mishra. A Retargetable Framework for Instruction-Set Architecture Simulation. // ACM Transactions on Embedded Computing Systems. Vol. 5, No. 2, May 2006. P. 431^452.

54. B.B. Липаев, JI.A, Серебровский, B.B, Филиппович. Принципы построения и основные требования к системам автоматизации программирования и отладки программ для управляющих систем. //Программирование. 1975. №2.

55. В.В. Липаев, Л.А, Серебровский, В.В, Филиппович. Система автоматизации программирования и отладки комплексов программ управления ЯУЗА-6. // Программирование. 1977. №2.

56. Analog Devices Processor Development Tools. HTML. (http://www.analog.com/processors/platforms/processorDevTools.html).

57. Texas Instruments Tools & Software Overview. HTML. ('http://focus.ti.com/dsp/docs/dspfindtoolswbytooltype.tsp?sectionId=3& tabId=2088&toolTvpeId=l&familyId=44).

58. Freescale Code Warrior Development Tools. HTML. (http://www.freescale.com/webapp/sps/site/homepage.isp? nodeld=012726&tid=FSH).

59. LSI DSP Products. HTML. (http://www.lsi.com/networking home/networking products/dsps/ index.html).

60. NXP (Philips Semiconductors) Development Tools for Microcontrollers. HTML. (http://www.nxp.com/products/microcontrollers/ support/developmenttools/).

61. ARM RealView Development Tools. HTML. (http://www.arm.com/products/DevTools/).

62. TASKING Embedded Software Development Tools. HTML. (http://www.tasking.com/).61 .Raisonance Embedded Development Tools. HTML. (http://www.raisonance.com/).

63. Signum Embedded Development Tools. HTML. fhttp://signum.com/).

64. Nohau (ICE Technology) Development Tools. HTML. (http://www.icetech.com/).

65. Keil Embedded Development Tools. HTML. (http://yyww.keil.com/).

66. Green Hills MULTI Integrated Development Environment. HTML. (http://www.ghs.com/products/MULTI IDE.html).

67. IAR Embedded Development Tools. HTML. (http://www.iar.com/).67.iSystem Solutions for Embedded System Development. HTML. (http://www.isystem.com/).

68. ARM Processor Families. HTML. (http://www.arm.com/products/CPUs/families.html).

69. ADSP-21xx Processor Manuals. HTML. (http://www.analog.com/processors/adsp/technicalLibrary/manuals/).

70. ARC 600 Core Family. HTML. (http://www.arc.com/configurablecores/arc60Q/).

71. Improv Systems Jazz DSP Core. HTML.http://ww w. impro v sys. com/Products/JazzD SP/ Jazz%2 OD SP. cfm).

72. Xtensa Configurable Processors Overview. HTML. (http://www.tensilica.com/products/xtensa overview.htm).

73. VIA Embedded. HTML. (http://www.via.com.tw/en/products/embedded/)

74. Булычев Д.Ю. Прототипирование встроенных систем на основе описания макроархитектуры // Диссертация на соискание ученой степени кандидата физико-математических наук. СПб.: СПбГУ, 2004.

75. В. Kernighan and D. Ritchie. The С Programming Language. Prentice Hall, 1988.

76. B. Stroustroup, The С++ Programming Language. Addison Wesley Publishing Company, 1997.

77. ISO/IEC 9899:1999 Programming languages - C.

78. ISO/IEC 14882:2003 Programming languages - С++.

79. ISO/IEC 18037 Programming languages -- С — Extensions to support embedded processors.

80. MicroDSP Architecture Specification // VIA Technologies Manual. 2004.

81. MicroDSP 2 Instruction Set Description // VIA Technologies Manual. 2005.

82. M68000 Family Programmer's Reference Manual. PDF.www.freescale.com/files/archives/doc/ref manual/M68000PRM.pdf).

83. DSP56000 Digital Signal Processing Family Manual. PDF. (http://ppd.fiial.gov/experiments/e907/TPC/DAQ/DSP56000UM.pdf).

84. Xtensa Architecture and Performance // Tensilica whitepaper. 2005. PDF. ("http://www.tensilica.com/pdf/xtensaarchwhitepaper.pdf).

85. TMS320C54x DSP Reference Set. Volume 1: CPU and Peripherals. // Texas Instruments Literature Number SPRU131G. PDF. (http://focus.ti.com/lit/ug/sprul3 lg/spru!3 lg.pdf).

86. TMS320C54x DSP Reference Set. Volume 2: Mnemonic Instruction Set. // Texas Instruments Literature Number SPRU172C. PDF. (http://focus.ti.com/lit/ug/sprul72c/sprul72c.pdf).

87. TMS320C6000 CPU and Instruction Set Reference Guide. // Texas Instruments Literature Number SPRU189F. PDF. (http://focus.ti.com/lit/ug/sprul 89g/sprul 89g.pdf).

88. Библиотека Windows Fibers. HTML. (http://msdn2.microsoft.com/en-us/librarv/ms682661.aspxy

89. Библиотека QuickThreads. HTML. (http://www.cs.washington.edU/research/compiler/papers.d/ quickthreads.html).

90. Семейство компиляторов GNU GCC. HTML. (http://gcc.gnu.org/).

91. B.B. Рубанов, Д.А. Марковцев, А.И. Гриневич, М.А. Миткевич. Динамическая поддержка расширений процессора в кросс-системе // Труды ИСП РАН, том 5. М., 2004. С. 63-88.

92. В.В. Рубанов, Д.А. Марковцев, А.И. Гриневич. Использование особенностей процессоров цифровой обработки сигналов в компиляторе языка 'С'

93. Труды ИСП РАН, том 8, часть 1. М., 2005. С. 137-158.

94. В.В. Рубанов, Д.А. Марковцев, А.И. Гриневич. Особенности кросскомпилятора языка С для ЦПОС

95. Программирование. 2006. №1. С. 26-40.

96. В.В. Рубанов, A.C. Михеев. Интегрированная среда описания системы команд для сигнальных процессоров

97. Труды ИСП РАН, том 9. М., 2006. С. 143-158.

98. V.V. Rubanov. Dynamic Support of Processor Extensions in Cross Development Tools // Proceedings of SYRCoSE 2007 (Moscow). P. 17-28.

99. B.B. Рубанов. Обзор методов описания встраиваемой аппаратуры и построения инструментария кросс-разработки

100. Труды ИСП РАН, том 15. М., 2008. С. 7-40.

101. В.В. Рубанов. Метод автоматизированного построения инструментария кросс-разработки для расширяемых встраиваемых систем. Препринт №20. М.: ИСП РАН, 2008. 98 с.