Вы находитесь на странице: 1из 4

Компоненты и технологии, № 6’2004 Софт

Обзор аппаратных и программных


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

Михаил Долинский, Существующие подходы к аппаратной ную память, общей оперативной памяти нет. В со-
Алексей Толкачев реализации параллельной обработки ставе кластера могут быть узлы с различной архи-
тектурой и производительностью. В случае, когда
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