Михаил Долинский, Существующие подходы к аппаратной ную память, общей оперативной памяти нет. В со-
Алексей Толкачев реализации параллельной обработки ставе кластера могут быть узлы с различной архи-
тектурой и производительностью. В случае, когда
dolinsky@gsu.unibel.by Основными широко применяемыми архитектура- все узлы кластера имеют одинаковую архитектуру
ми вычислительных систем с распределенными ресур- и производительность, кластер называют однород-
сами являются многопроцессорные системы, вычис- ным, иначе — неоднородным.
лительные кластеры, векторные процессоры, VLIW- Архитектура вычислительного кластера подобна
процессоры, суперскалярные процессоры и процессо- суперкомпьютерам MPP, кластеры часто использу-
ры, ориентированные на конкретную задачу. ются в качестве их дешевой альтернативы, посколь-
1. Многопроцессорные системы ку могут быть построены на базе уже имеющихся
Многопроцессорные вычислительные системы в организации персональных компьютеров. Любой
представлены двумя типами. Первый, наиболее кластер можно рассматривать как единую аппарат-
распространенный — это многопроцессорные сер- но-программную систему, имеющую единую ком-
веры с общей памятью. Ведущие производители муникационную систему, единый центр управле-
выпускают многопроцессорные серверы, стремясь ния и планирования загрузки. Часто в целях умень-
предоставить пользователям программное окруже- шения стоимости кластера в качестве узлов исполь-
ние, доступное в среде традиционных однопроцес- зуются доступные в данный момент компьютеры,
сорных компьютеров. Типичными представителя- имеющие разные характеристики, и, возможно, ча-
ми данного класса являются системы SMP (symmet- стично загруженные решением других задач.
ric multiprocessors) — симметричные мультипро- Вычислительные сети (GRID) объединяют ресур-
цессоры, в которых все процессоры обладают рав- сы множества кластеров, многопроцессорных и од-
ной производительностью, являются равноправ- нопроцессорных компьютеров, имеющих различ-
ными при доступе к общей памяти и время доступа ное географическое расположение, принадлежащих
к памяти является одинаковым. разным организациям и подчиняющихся разным
Второй тип многопроцессорных систем — парал- дисциплинам использования. Особая разновид-
лельные суперкомпьютеры MPP (massive parallel ность систем данного класса — глобальные вычис-
processing) с большим количеством процессоров лительные сети, использующие Интернет в качест-
и разделяемой памятью. Использующие подобную ве коммуникационной среды.
модель суперкомпьютеры построены как массив от- Программное обеспечение неоднородных клас-
дельных машин (узлов), взаимодействующих через теров и вычислительных сетей должно обеспечи-
высокоскоростные каналы связи. Каждый узел по- вать адаптацию к динамическому изменению кон-
лучает доступ только к локальной памяти, выпол- фигурации, учитывать неоднородность архитекту-
няемое параллельное приложение оказывается раз- ры и возможность сбоев отдельных узлов.
деленным на ряд параллельно выполняемых слабо Особенностью реализации параллельной обра-
взаимодействующих процессов, обменивающихся ботки является то, что обрабатываемая информа-
информацией путем передачи и приема сообщений. ция должна распределяться между узлами относи-
Системы обоих классов часто строятся из тех же тельно большими порциями, поскольку интервалы
микропроцессоров, на базе которых выпускаются времени, необходимые для передачи информации
персональные компьютеры и рабочие станции. между узлами, обычно на несколько порядков пре-
2. Вычислительные кластеры и вычисли- восходят время передачи в пределах одного узла.
тельные сети 3. Векторные процессоры
Вычислительные кластеры представляют собой Альтернативное название — процессоры SIMD-ар-
системы, состоящие из множества узлов, связанных хитектуры. Имеется один поток команд, содержащий
коммуникационной средой. В качестве узлов могут векторные инструкции. Одна векторная инструкция
использоваться компьютеры в составе локальной выполняет определенную арифметическую операцию
или глобальной сети. Каждый узел имеет локаль- одновременно для всех элементов вектора данных.
152 www.finestreet.ru
Компоненты и технологии, № 6’2004 Софт
Процессоры различных архитектур могут ются для решения задач, требующих огром- 2. Технология OpenMP для систем с об-
иметь векторные инструкции для ускорения ных объемов вычислений. щей памятью
выполнения некоторых операций. Вектор- Многопроцессорные SMP-серверы также Наиболее распространенным средством
ные процессоры применяются в некоторых широко используются для обработки дан- программирования многопроцессорных сис-
суперкомпьютерах. Недостатком векторных ных в реальном времени, например, в качест- тем с общей памятью является технология
процессоров является их высокая стоимость. ве веб-серверов. OpenMP.
4. Использование VLIW-технологии Другое направление использования парал- Данная технология позволяет легко добав-
Процессоры с длинным словом инструкции лельной обработки — увеличение произво- лять использование параллельной обработ-
(Very Long Instruction Word, VLIW) реализуют дительности отдельных микропроцессоров. ки в существующие последовательные про-
простейший способ параллельной обработки Универсальные микропроцессоры, использу- граммы.
на уровне отдельных инструкций. Каждая емые в персональных компьютерах и много- При использовании OpenMP исходный опе-
команда VLIW-процессора может состоять процессорных системах, имеют суперскаляр- раторный код программы остается таким же,
из нескольких параллельно исполняемых ин- ную архитектуру. В некоторых суперкомпью- как и для последовательной архитектуры.
струкций, работающих с разными данными. терах применяются и векторные процессоры. С помощью специальных директив препро-
При использовании VLIW-процессоров рас- Отдельно следует отметить процессоры, ис- цессора разработчик указывает в исходном ко-
параллеливание алгоритма осуществляется ли- пользуемые во встроенных системах. При вы- де программы параллельные области, в кото-
бо компилятором на этапе компиляции про- боре процессора для встроенной системы осо- рых один и тот же исполняемый код может
граммы, либо программистом при программи- бое внимание уделяется производительности, быть выполнен сразу на нескольких процессо-
ровании на ассемблере. Архитектура процессо- стоимости и потребляемой энергии. Парал- рах. В параллельных блоках могут использо-
ров данного типа накладывает существенные лельная обработка часто позволяет наиболее ваться локальные и общие для всех потоков
ограничения на возможность параллельного эффективно использовать аппаратные ресур- данные. Препроцессор заменяет директивы па-
исполнения, поскольку в них невозможно со- сы. Поэтому во встроенных системах часто раллелизма обращениями к какой-либо биб-
здание нескольких параллельно исполняемых применяются VLIW-процессоры, а также спе- лиотеке, реализующей функции параллельной
потоков инструкций. Фактически существует циализированные решения, аппаратно реали- обработки для конкретной архитектуры.
только один поток инструкций, но каждая из зованные с использованием ПЛИС или СБИС. Таким образом, с помощью директив пре-
них может содержать несколько команд обра- процессора программа разбивается на после-
ботки, выполняемых одновременно. довательные и параллельные участки. Дан-
Универсальные средства разработки
5. Суперскалярные процессоры ный способ реализации параллелизма полу-
программного обеспечения
Исполняемый код суперскалярных про- чил название «вилочного» или «пульсирую-
вычислительных систем
цессоров обычно не содержит информации щего» параллелизма.
с распределенными ресурсами
о параллельной обработке. Распараллелива- Технология OpenMP реализована в по-
ние инструкций происходит на этапе испол- 1. Система программирования на осно- следних версиях компиляторов компании
нения программы. Для этого в процессоре ве передачи сообщений MPI Intel для эффективного использования воз-
присутствует специальный блок анализа. Библиотека MPI (Message Passing Interface, можностей многопроцессорных систем,
Архитектура таких процессоров значитель- интерфейс передачи сообщений) является а также процессоров, поддерживающих тех-
но сложнее VLIW-архитектуры, поэтому самым распространенным средством про- нологию Hyper Threading.
они редко применяются при проектирова- граммирования для параллельных вычисли- При программировании кластеров, состо-
нии встроенных систем. тельных систем с разделяемой памятью, в ча- ящих из многопроцессорных узлов, часто
Наиболее часто такие процессоры использу- стности, вычислительных кластеров и мно- используется гибридный подход MPI +
ются в качестве более производительных моде- гопроцессорных суперкомпьютеров с разде- OpenMP, когда взаимодействие между узла-
лей, совместимых с предыдущими, не имев- ляемой памятью. ми программируется с использованием MPI,
шими возможностей параллельной обработки. В вычислительной модели MPI программа а реализация задач на отдельных узлах осу-
Например, процессоры компании Intel, начи- является множеством процессов, каждый ществляется с помощью OpenMP.
ная c Pentium, относятся к этому классу. На ба- из которых выполняется в собственном ад- 3. Использование директив параллель-
зе суперскалярных процессоров построены ресном пространстве. Процессы взаимодей- ной обработки в системе DVM
практически все современные персональные ствуют посредством передачи сообщений. Система разработки параллельных про-
компьютеры и многопроцессорные системы. Существуют реализации MPI для языков грамм DVM была разработана в Институте
6. Процессоры, ориентированные на кон- C/C++ и Fortran 77/90 для большинства мно- прикладной математики им. М. В. Келдыша
кретную задачу гопроцессорных суперкомпьютеров и сетей РАН. Существуют две реализации — C-DVM
Разрабатываются специально для решения рабочих станций UNIX и Windows NT. и Fortran-DVM.
некоторой задачи. Параллельная обработка Библиотека MPI предоставляет разработчи- Основная особенность системы DVM —
может осуществляться на уровне аппаратной ку множество функций для межпроцессного использование модели параллелизма по дан-
реализации некоторых алгоритмов. взаимодействия, предоставляющих возмож- ным и вычислениям. Программисту предо-
Разработка таких процессоров осуществ- ности обмена сообщениями между процесса- ставляются следующие возможности реали-
ляется с помощью языков описания аппара- ми, выбор режимов передачи сообщений, кол- зации параллельной обработки:
туры, например, VHDL или Verilog. лективные операции, множество редукцион- • Объявление «распределенных» массивов, эле-
Недостатком такого подхода является ных операций, эффективно работающих менты которых распределяются между парал-
сложность проектирования и отладки, а так- с данными на разных процессорах, возмож- лельными процессами (все остальные пере-
же отсутствие высокоуровневых средств раз- ность указания типов передаваемых данных. менные «размножаются» по всем процессо-
работки программного обеспечения для по- Существует две версии MPI — первый рам). Имеются директивы выравнивания мас-
лученного процессора. стандарт был принят в 1993 году, а в 1997 сивов, то есть явного указания того, какие эле-
7. Сравнение эффективности и воз- был разработан проект стандарта MPI-2, рас- менты различных массивов следует распреде-
можности применения различных мето- ширяющий MPI и предусматривающий ди- лять на один и тот же процессор; описания
дов построения параллельных систем намическое создание и уничтожение процес- различных типов удаленных данных (храня-
Вычислительные системы с распределен- сов, использование общей памяти и опера- щихся на других процессорах) и др.
ными ресурсами применяются для решения ции параллельного ввода-вывода. • Распределение витков циклов между па-
самых различных задач. Стандарты MPI и MPI-2 достаточно слож- раллельными процессорами, выравнива-
Многопроцессорные суперкомпьютеры ны и громоздки, поэтому на сегодняшний ние витков циклов с элементами массивов
различных архитектур, вычислительные день не существует реализации MPI, полно- (указание того, что определенные витки
кластеры и вычислительные сети применя- стью соответствующей стандартам. циклов следует выполнять на тех процес-
www.finestreet.ru 153
Компоненты и технологии, № 6’2004 Софт
сорах, на которые распределены указан- Язык mpC имеет средства описания функ- Windows всех версий, HP-UX для различ-
ные элементы массивов). ций оценки производительности узлов, что ных процессоров, существуют кросс-ком-
• Создание параллельных задач — параллель- позволяет замерять производительность пиляторы для ARM, Atmel AVR, некоторых
но выполняющихся блоков программы. именно на нужном типе задач. Замеры могут DSP-процессоров семейства TMS от Texas
• Множество редукционных операций. осуществляться динамически непосредст- Instruments. GCC является системным компи-
Используемая модель параллелизма удобна венно перед созданием процесса. Это позво- лятором большинства Unix-систем. Может
для реализации алгоритмов численных ме- ляет создавать программы, в которых вычис- использоваться как кросс-компилятор.
тодов решения математических задач. ления распределяются в соответствии с ре- Процесс компиляции в GCC состоит
Система DVM ориентирована на исполь- альной производительностью узлов на мо- из следующих шагов:
зование многопроцессорных систем с разде- мент выполнения вычислений. • Синтаксический анализ: front-end для ис-
ляемой памятью. Распределение данных Благодаря перечисленным возможностям, ходного текста строит бинарное представ-
и вычислений между параллельными про- mpC позволяет эффективно использовать ление в виде синтаксических деревьев для
цессорами осуществляется динамически сис- вычислительные кластеры, построенные каждой функции в исходном коде.
темой поддержки выполнения DVM-про- из компьютеров с различными характерис- • Генерация представления функций в виде
грамм. Многопроцессорной системой может тиками и, возможно, одновременно исполь- древовидных GIMPLE-структур. На этом
служить группа MPI-процессов. зуемых для решения других задач. этапе осуществляется окончательная се-
Программа DVM представляет собой после- 5. Динамическое распараллеливание про- мантическая проверка компилируемого
довательную программу, в которую с помо- грамм в Т-системе кода. Полученное представление структур
щью специальных директив препроцессора до- Т-система реализует автоматическое дина- GIMPLE является независимым от исход-
бавляются спецификации параллелизма. Про- мическое распараллеливание программ ного языка и используется компилятором
грамма может быть скомпилирована обычным за счет использования функциональной па- на следующих шагах.
компилятором, не поддерживающим директи- радигмы: участки программы, которые мо- • Менеджер проходов выполняет запуск
вы DVM. Это дает возможность использовать гут быть распараллелены, должны быть опи- проходов компилятора в правильном по-
обычные средства отладки последовательных саны в виде «чистых» функций (Т-функций). рядке. Для каждого прохода имеется опре-
программ. Затем параллельная DVM-програм- Все данные для вычислений в теле Т-функ- деленный набор структур, необходимых
ма может быть выполнена в режиме отладки, ции должны быть явно получены через ее ар- для его запуска. Менеджер следит за тем,
когда промежуточные результаты вычислений гументы, все результаты вычислений — пе- чтобы все структуры были подготовлены
сравниваются с результатами, полученными реданы через результаты. перед запуском очередного прохода.
при последовательном выполнении. Т-система ориентирована на решение за- • Выполнение проходов оптимизации для
4. Язык mpC для программирования дач, имеющих следующие характеристики: GIMPLE-представления. Выполняется боль-
неоднородных вычислительных систем • большой объем вычислений; шое количество шагов, порядок выполне-
Язык mpC разработан для программиро- • сложная логика вычислительного процесса; ния которых определяется менеджером
вания параллельных вычислений на неодно- • обработка нечисловых данных или дан- проходов (удаление неиспользуемых выра-
родных вычислительных кластерах. ных, имеющих сложное представление — жений, построение графа потока управле-
Параллельная программа на mpC — мно- динамически порождаемые списки, дере- ния, оптимизация циклов, предсказание
жество параллельных процессов, взаимодей- вья, графы и др. частот выполнения операторов, удаление
ствующих (синхронизирующих свою работу • наличие параллелизма, скрытого до мо- хвостовой рекурсии, выполнение других
и обменивающихся данными) посредством мента исполнения программы. платформо-независимых оптимизаций).
передачи сообщений. Программист не может Для программирования в Т-системе исполь- • Выполнение RTL-проходов — оптимиза-
управлять тем, сколько процессов составляет зуется язык t2cp — расширение языка С конст- ция на низком уровне, генерация объект-
программу и на каких узлах эти процессы рукциями, предназначенными для описания ного кода. На этом этапе используется опи-
выполняются. Это делается внешними по от- Т-функций, передачи Т-значений, вызовов сание инструкций целевой платформы.
ношению к языку средствами. Исходный код Т-функций и операций над Т-структурами. Настройка GCC на целевую платформу со-
на mpC управляет лишь тем, какие именно Основные разработчики Т-системы — Ин- стоит из двух частей: описания шаблонов ин-
вычисления выполняются каждым из про- ститут программных систем РАН и Исследова- струкций, используемых в ходе выполнения
цессов, составляющих программу. тельский центр мультипроцессорных систем. RTL-проходов компиляции, и описания мак-
Параллелизм описывается в терминах про- В настоящий момент Т-система реализована росов для управления процессом компиляции.
цессов и сетей (групп из множества процес- для платформ класса «IP-сеть рабочих станций Возможности описания шаблонов инст-
сов). Сети могут создаваться и уничтожаться с ОС Linux» (Intel, PC, mono или SMP). Т-систе- рукций первоначально не были ориенти-
в процессе работы программы. Процессы ма применяется для разработки программного рованы на использование параллельных
распределяются между физическими процес- обеспечения суперкомпьютера СКИФ. целевых архитектур. Несмотря на это, име-
сорами динамически во время исполнения. ются некоторые возможности оптимиза-
Особое внимание в mpC уделяется неодно- ции для суперскалярных и VLIW-процес-
Средства разработки компиляторов
родности вычислительной системы. Среда вы- соров на уровне отдельных инструкций.
для систем с распределенными
полнения оценивает производительность каж- Использование peephole-оптимизации поз-
ресурсами
дого узла вычислительного кластера, на кото- воляет дополнительно оптимизировать
ром выполняется программа, и распределяет 1. Программный комплекс для проек- сгенерированный объектный код за счет
процессы таким образом, чтобы минимизиро- тирования трансляторов GCC изменения порядка рядом стоящих ко-
вать общее время выполнения программы. Настраиваемый компилятор языков высо- манд, замены одних последовательностей
По умолчанию система считает, что все про- кого уровня GCC (GNU Compiler Collection) команд другими и т. д. Однако на сего-
цессы программы выполняют примерно одина- является свободно распространяемым в соот- дняшний день GCC нельзя назвать подхо-
ковые объемы вычислений. Исходя из этого, ветствии с GPL (GNU Public License) с откры- дящим средством разработки компилято-
процессы распределяются на узлы кластера та- тым исходным кодом. Изначально GCC был ров для целевых архитектур, использую-
ким образом, чтобы их количество было пропор- разработан для операционной системы UNIX щих мелкозернистый параллелизм.
ционально производительности данного узла. и затем перенесен на множество других плат- Основная область применения GCC для про-
В случае, когда объемы вычислений, вы- форм. В настоящее время существуют front- граммирования вычислительных систем с рас-
полняемых различными процессами, значи- end-компиляторы с языков C, C++, Java, пределенными ресурсами — это реализация
тельно отличаются, программист имеет воз- Fortran, Objective C, Ada 9X, Modula-3, Pascal, компиляторов для многопроцессорных систем,
можность указывать относительные объемы Cobol и др. Поддерживается большое количе- узлов MPP-систем и вычислительных класте-
вычислений процессов сети. ство целевых платформ — Unix, Microsoft ров. Многие библиотеки для параллельного
154 www.finestreet.ru
Компоненты и технологии, № 6’2004 Софт
программирования (MPI, OpenMP) позволяют Для DSP-процессоров используется язык кода для DSP- или VLIW-процессоров с воз-
использовать компилятор GCC, например, су- DSP-C — расширение языка С, позволяющее можностью параллельного исполнения
ществует реализация GCC для SMP-компьюте- разработчикам использовать специфические на уровне инструкций (примеры — CoSy,
ров на базе процессоров Intel Itanium. характеристики целевого процессора. настройки GCC для некоторых процессо-
2. Настраиваемый компилятор LCC Реализовано множество алгоритмов оптими- ров). Оптимизация и распараллеливание
Компилятор языка ANSI C, настраивае- зации для эффективного использования дан- инструкций выполняется после генерации
мый на целевую платформу. Существуют ре- ных архитектур, в том числе модуль анализа для кода с помощью peephole-оптимизации.
ализации для процессоров Alpha, Sparc, MIPS распараллеливания на уровне инструкций для Существует две причины, приводящие
R3000 и семейства Intel x86, а также LCC.NET параллельных VLIW- и DSP-процессоров. к увеличению требований к средствам разра-
для виртуальной машины MSIL, входящей Программный комплекс CoSy использует- ботки компиляторов:
в состав Microsoft .NET. ся производителями микропроцессоров для • Расширение возможностей параллельной
Исходный код LCC открыт, компилятор разработки компиляторов для новых архи- обработки на уровне инструкций в суще-
может свободно использоваться в некоммер- тектур, производителями программного ствующих процессорах. Peephole-оптими-
ческих целях. обеспечения, а также в исследованиях микро- зация позволяет внести лишь локальные
Промежуточное представление програм- процессорных архитектур и технологий про- улучшения в имеющийся исполняемый
мы обеспечивает взаимодействие платфор- ектирования компиляторов. код, наиболее же эффективное использо-
мо-независимого front-end и back-end кодо- вание ресурсов процессора может дать
генератора для целевой платформы. Интер- анализ потока данных и управления в про-
Перспективные направления
фейс состоит из нескольких структур дан- грамме до генерации исполняемого кода.
автоматизации разработки
ных, операторного языка из 33 операторов, • Распространение конфигурируемых архи-
параллельных систем
с помощью которого исходная программа тектур позволяет разработчику самостоя-
кодируется в виде ориентированных ацик- На основе анализа существующих аппарат- тельно спроектировать процессор либо ап-
личных графов (ОАГ), и 18 функций для ных и программных средств разработки вы- паратную схему, эффективно выполняю-
операций с ОАГ и структурами данных. Реа- числительных систем с распределенными ре- щую определенные алгоритмы обработки.
лизация этих функций для большинства сурсами можно сделать следующие выводы: В настоящее время такой подход весьма
платформ очень проста. • практически все распространенные средст- трудоемок, поскольку отсутствуют средст-
Front-end и back-end реализованы в составе ва разработки ПО для вычислительных си- ва автоматизации проектирования эффек-
одной программы и вызывают функции друг стем с распределенными ресурсами ориен- тивных аппаратных решений, выполняю-
друга. Front-end вызывает back-end для гене- тированы на многопроцессорные архитек- щих сложные алгоритмы обработки.
рации и сохранения объектного кода; back- туры и вычислительные кластеры; Актуальной задачей является разработка
end вызывает front-end для выполнения вы- • возможности разработки ПО для процес- новых методов и программных средств про-
вода, резервирования памяти, работы с типа- соров с поддержкой параллельного испол- ектирования компиляторов для вычисли-
ми, узлами ОАГ, символами и строками. нения на уровне инструкций ограничива- тельных систем с распределенными ресурса-
Внутренняя структура LCC весьма проста ются использованием алгоритмов peep- ми, имеющих следующие характеристики:
и хорошо документирована, исходный код hole-оптимизации после первичной гене- • Наличие алгоритмов автоматического вы-
написан в одном стиле со множеством ком- рации исполняемого кода. явления параллелизма в последователь-
ментариев. Все это в сочетании с простотой Существующие средства проектирования ных программах. Алгоритм выявления па-
интерфейса делает настройку LCC нетрудо- компиляторов для вычислительных систем раллелизма должен осуществлять анализ
емкой задачей. Процесс настройки LCC с распределенными ресурсами можно разде- потока данных и управления и находить
на целевую платформу и описания правил лить на два класса: отдельные операторы и целые блоки про-
оптимизации значительно проще, чем GCC, • настраиваемые компиляторы, не имеющие граммы, которые могут выполняться па-
при этом производительность генерируемо- встроенных средств поддержки параллель- раллельно. Результатом работы алгоритма
го LCC кода для платформы x86 выше. ных архитектур (например, GCC и LCC). является параллельный граф передачи уп-
В LCC отсутствуют встроенные средства Они используются в качестве компилято- равления.
поддержки целевых архитектур с возможно- ров для узлов многопроцессорных систем • Низкая трудоемкость описания входного
стью параллельного исполнения на уровне или вычислительных кластеров, построен- языка высокого уровня. Описание синтак-
отдельных инструкций. Однако благодаря ных на основе последовательных или су- сиса входного языка должно осуществ-
простой и открытой структуре компилятора перскалярных процессоров. Для поддерж- ляться с использованием РБНФ с под-
могут быть реализованы при необходимости ки параллельной обработки применяются держкой достаточно широкого класса
дополнительные блоки для поддержки архи- высокоуровневые библиотеки (например, грамматик.
тектур с мелкозернистым параллелизмом, MPI, OpenMP, DVM и др.), не входящие • Универсальность по отношению к входно-
например, VLIW-процессоров. в состав компилятора; му языку и целевой архитектуре.
3. Программный комплекс разработки • настраиваемые компиляторы, имеющие • Интеграция с универсальной отладочной
компиляторов CoSy специальные возможности для генерации средой.
Система для проектирования оптимизиру-
ющих компиляторов CoSy разработана орга-
низацией ACE (Associated Compiler Experts).
CoSy позволяет проектировать компиляторы
с языков C, C++ и DSP-C для широкого клас-
са DSP, NPU, RISC, VLIW, а также 8/16/32-
разрядных микропроцессоров.
Компилятор имеет модульную структуру.
В основе лежит универсальное промежуточ-
ное представление, которое может расши-
ряться при необходимости. Разработчик мо-
жет подключать модули оптимизации, гене-
рации кода и др., необходимые для целевой
архитектуры. Имеется более 50 модулей, ко-
торые могут быть использованы при проек-
тировании компилятора.
www.finestreet.ru 155