Главная
Новости рынка
Рубрикатор



Архив новостей -->



 



   

П.Робертсон

Параллельное программирование процессоров ЦОС TMS320C6000 в среде 3L DIAMOND

Среда DIAMOND фирмы 3L (www.3l.com), ивестная ранее как среда 'PARALLEL С', является компактной средой разработки мультизадачных приложений для мультипроцессорных систем. Настоящая статья дает общее представление о среде 3L DIAMOND и принципах ее построения. В качестве примера аппаратной платформы рассмотрено функционирование среды 3L DIAMOND на мультипроцессоре ЦОС TORNADO-PX64XXQ фирмы "МИКРОЛАБ СИСТЕМС" (www.mlabs.com), который построен на базе четырех процессоров ЦОС TMS320C6416.

Известным традиционным методом описания мультипроцессорных систем является их интерпретация как множества процессоров, возможно, с некоторыми "мультипроцессорными ухищрениями", причем каждый из процессоров функционирует в своей однопроцессорной среде. Несмотря на то, что такой подход в общем-то правомерен, он, тем не менее, очень далек от "удовлетворительного" и оставляет разработчика наедине с большим числом сложных проблем, таких как загрузка программ, межпроцессорная коммуникация, синхронизация и т.п. Среда параллельного программирования 3L DIAMOND построена на базе принципиально другого подхода, а именно — описания системы как единого целого, и специально создавалась для "структурированной" разработки мультипроцессорного ПО для любого числа процессоров. Мультипроцессор ЦОС TORNADO-PX64xxQфирмы "Мик-роЛАБ Системе" является хорошим примером удачного сочетания мультипроцессорных аппаратных средств и концепции среды 3L DIAMOND.

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

Основополагающим принципом построения среды 3L DIAMOND является концепция последовательных коммунициирующих процессов (С. A. R. Ноаге. Communicating Sequential Processes. Prentice-Hall, 1985), которая описывает любое программное приложение в терминах независимых процессов (processes) (или задач (tasks)), которые самосинхронизируются и коммуницируют между собой путем обмена сообщениями (messages) через каналы связи (channels). В данном случае, сообщение — это просто блок данных, а канал связи — это механизм однонаправленной передачи данных между двумя задачами. Среда 3L DIAMOND удачно использует эту концепцию для сети из процессоров.

Аппаратная модель

Среда 3L DIAMOND использует простую аппаратную модель мультипроцессорной аппаратуры, в которой будет функционировать конечное приложение как множество процессоров, связанных между собой двунаправленными проводами (wires)'(или межпроцессорными связями (interprocessor links)). В рамках этой концепции всегда должен присутствовать корневой процессор ('root' processor), а все остальные процессоры могут иметь любые уникальные имена. На рис. 1 представлен пример трехпроцессорной системы, состоящей из процессоров с именами "Root", "P2" и "РЗ", которые попарно соединены с помощью трех связей: две связи между процессорами "Root" и "Р2", и ещё одна связь между процессорами "Р2" и "РЗ". Эта аппаратная модель легко масштабируется, и каждые новые дополнительные процессоры лишь привносят новые дополнительные коммуникационные ресурсы и никак не ограничивают коммуникацию между другими процессорами. Важным фактором является то, что программное приложение, разработанное с помощью среды 3L DIAMOND, пересылая данные по межпроцессорной связи, совершенно не обязано знать, как именно реализована эта связь.

Аппаратная модель
Рисунок 1. Аппаратная модель

В течение времени на рынке присутствовали различные процессоры, которые использовали встроенные контроллеры межпроцессорной связи по принципу "точка-точка". Одними из первых были транспьютеры фирмы INMOS, которые в этом смысле имели "идеальные" встроенные контроллеры межпроцессорной связи с полностью аппаратным управлением, что делало их исключительно простыми и эффективными в применении. Позже, фирма TEXAS INSTRUMENTS выпустила процессоры ЦОС TMS320C4x со встроенными "коммуникационными портами", которые были намного быстрее межпроцессорных связей транспьютеров фирмы INMOS, однако большая часть управления ими должна была осуществляться программно, что делало их значительно более сложными в управлении и применении. Ещё позже, фирма ANALOG DEVICES выпустила процессоры ЦОС SHARC со встроенными контроллерами межпроцессорной связи, которые практически полностью управлялись из ПО, что приводило к ещё более значительному усложнению в управлении и применении. Наконец, совсем недавно, встроенные контроллеры межпроцессорной связи полностью исчезли с выпуском процессоров ЦОС TMS320C6000 фирмой TEXAS INSTRUMENTS.

В связи с этим, разработчики аппаратуры на процессорах ЦОС TMS320C6000 вынуждены придумывать свои собственные механизмы межпроцессорной коммуникации с использованием ПЛИС, стандартных интерфейсов (Rrewire и др.), шин (PCI и др.), заказных БМК и так далее.

Возвращаясь к примеру мультипроцессора TORNADO-PX64xxQ фирмы "Мик-роЛАБ Системе", среда 3L DIAMOND использует двухуровневый принцип описания аппаратных межпроцессорных связей для этого устройства. Внутри устройства все процессоры ЦОС объединены общей высокоскоростной памятью с индивидуальным доступом, которая используется средой 3L DIAMOND как первый уровень для реализации шести высокоскоростных межпроцессорных связей, связывающих все возможные пары процессоров внутри одного устройства. При этом, оставшаяся часть общей памяти может быть использована в приложениях пользователя. Реальная скорость передачи данных через эти межпроцессорные связи в среде 3L DIAMOND превышает 160 Мбайт/с при мгновенной скорости внутри блока данных 400 Мбайт/с. В тоже время, "межплатные" межпроцессорные связи для нескольких объединяемых мультипроцессоров TORNADO-PX64xxQ осуществляются через внешние аппаратные последовательные порты (McBSP) процессоров ЦОС TMS320C6000 и соответствуют второму уровню межпроцессорных связей в среде 3L DIAMOND. Такая двухуровневая концепция межпроцессорных каналов среды 3L DIAMOND для мультипроцессора TORNADO-PX64xxQ отлично вписывается в аппаратную модель 3L DIAMOND, так как добавление новых таких устройств в мультипроцессорную систему расширяет суммарную пропускную способность всех межпроцессорных связей при увеличении суммарной производительности процессоров ЦОС. Это коренным образом отличается от аппаратной реализации мультипроцессорной системы с "общей шиной" в качестве единственного канала межпроцессорных связей, так как добавление новых процессоров в такой системе увеличивает нагрузку на шину и ведет к эффективному снижению пропускной способности каждой межпроцессорной связи.

Программная модель

На рис. 2 представлена простая программная модель, которую среда 3L DIAMOND использует для описания некоторого приложения.

Программная модель
Рисунок 2. Программная модель

В данном примере представлены четыре задачи, соединенные тремя каналами связи. Задача "А" может посылать данные задаче "С" через канал "С1" и задаче "В" через канал "С2". Задача "В", в свою очередь, может посылать данные задаче "D", используя канал "СЗ". В приведенном примере задача "С" не может передавать данные задаче "D", так как между ними нет прямого канала связи.

Задача и её порты ввода/вывода
Рисунок 3. Задача и её порты ввода/вывода

В среде 3L DIAMOND задача представляет собой законченную полностью скомпонованную (слинкованную) исполнительную программу без внешних ссылок, написанную на языке С, которая запускается с функции main. Каждая задача имеет два вектора портов ввода/вывода, которые автоматически передаются ей в момент запуска (рис. 3). Входные порты определяют список каналов связи, с которых данная задача может читать сообщения, а выходные порты определяют список каналов связи, в которые данная задача может отправлять сообщения. Задача не знает (и не должна знать), что подключено с другого конца каждого канала связи, который к ней подсоединен: это могут быть либо другие задачи, либо какие-то аппаратные устройства ввода/вывода. Как только задача запускается, она проявляет себя как "поток" (thread), функционирующий под управлением диспетчера задач. Каждый "поток" может динамически порождать новый "поток", и число "потоков", одновременно исполняемых на одном процессоре, ограничено лишь размером памяти, доступной этому процессору. Среда 3L DIAMOND распределяет вычислительную мощность процессора между всеми "потоками", исполняемыми в данном процессоре, в соответствии с их приоритетами.

Конфигурация

Последним этапом в разработке приложения, работающего под управлением среды 3L DIAMOND, и именно то, что отличает 3L DIAMOND от традиционных мультипроцессорных систем, является конфигурация (рис. 4), которая задает соответствие между логической структурой приложения (в терминах задач и каналов связи) и аппаратной моделью (в терминах процессоров и межпроцессорных связей конкретного устройства). Это осуществляется с помощью утилиты конфигуратора среды 3L DIAMOND, которая объединяет задачи со всеми программными модулями, необходимыми для запуска и исполнения конкретного приложения. В некотором смысле, конфигуратор среды 3L DIAMOND является специализированным мультипроцессорным компоновщиком (linker).

Конфигурация
Рисунок 4. Конфигурация

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

Конфигуратор управляется с помощью конфигурационного файла, который содержит текстовое описание структуры конкретного приложения и устройства и их взаимного соответствия. На рис. 5 представлен пример конфигурационного файла для приложения, приведенного на рис. 1 и 2.

Конфигурационный файл
Рисунок 5. Конфигурационный файл

В начале конфигурационного файла содержится описание трех процессоров с указанием их уникальных имен и типов. Тип процессора необходим конфигуратору для определения числа встроенных контроллеров межпроцессорной связи (если таковые имеются), карты памяти и т.п. Ключевое слово "WIRE" используется для описания межпроцессорных связей. Так, например, связь "W1" указывает, что межпроцессорная связь 3 процессора "Root" соединяется с межпроцессорной связью 3 процессора "Р2". На этом описание аппаратной модели в конфигурационном файле заканчивается.

После описания аппаратной модели в конфигурационном файле следует описание структуры программной модели в терминах задач, каналов и связей между ними. Для каждой задачи указывается число входных и выходных портов и объем необходимой памяти для стека и данных. Каналы описываются с помощью ключевого слова "CONNECT" и включают номера входных и выходных портов конкретных задач. Например, канал "С1" определяется как канал, связывающий первый выходной порт задачи "TaskA" с первым входным портом задачи "TaskC".

Наконец, аппаратная и программная модели ставятся в соответствие друг другу путем распределения четырех задач по трем процессорам.

Типы каналов
Рисунок 6. Типы каналов

Настоящий пример показывает, что среда 3L DIAMOND должна организовать три различных типа каналов. Канал "С2" соединяет две задачи на одном процессоре, канал "С1" соединяет две задачи на двух разных процессорах, которые физически соединены межпроцессорной связью, и канал "СЗ" соединяет две задачи на двух разных процессорах, которые физически не соединены межпроцессорной связью, но соединены между собой через другой процессор ("Р2"). В терминах среды 3L DIAMOND, "C2" называется внутренним каналом, "С1" — физическим каналом, а "СЗ" — виртуальным каналом (рис. 6). Даже если это приложение использует различные типы каналов связи, конкретные задачи об этом не знают. Так, если бы мы захотели разместить задачу "TaskB" на процессоре "Р2", то каналы "С2" и "СЗ" реально стали бы физическими каналами, однако никакой переделки ПО не потребовалось бы, включая перекомпиляцию и перелинковку. Для модификации приложения достаточно было бы перезапуска только конфигуратора.

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

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

Микроядро ОС

Потоки (threads)в среде 3L DIAMOND управляются с помощью компактного микроядра ОС, представляющего собой высоко оптимизированный код, осуществляющий управление диспетчеризацией задач, управление прерываниями и управления другими системными ресурсами. Размер микроядра ОС для среды 3L DIAMOND для процессоров ЦОС TMS320C6000 составляет всего 5,5 Кбайт для кода и 1,5 Кбайт для данных. Другие системные компоненты (драйверы и т.п.) включаются в конечное приложение только тогда, когда это необходимо. В связи с тем, что высокая эффективность исполнительного кода является ключевым условием для процессоров ЦОС, то микроядро ОС для среды 3L DIAMOND было разработано и оптимизировано таким образом, чтобы внести только абсолютный минимум избыточности (эффективной потери производительности) в приложение пользователя, и активизируется только тогда, когда приложение делает непосредственный запрос к нему (за исключение таймера, который активизируется каждую миллисекунду на несколько процессорных тактов).

Все потоки в среде 3L DIAMOND диспетчеризируются с использованием простейшей схемы с "вытеснением" (preemptive) и "циклическими" (round-robin) приоритетами с помощью опционального механизма временного разделения (time-slicing). Диспетчеризация осуществляется очень быстро. Так, время полного переключения задач (известного как время переключения контекста] для мультипроцессора ЦОС TORNADO-PX64xxQ составляет всего 170 нс.

Среда 3L DIAMOND является открытой. Так, стандартное микроядро ОС для среды 3L DIAMOND для процессоров ЦОС TMS320C6000 содержит только минимум необходимого для работы самой среды 3L DIAMOND. Однако, при необходимости пользователь может добавить свои собственные системные модули драйверов устройств ввода/вывода, обработки прерываний и т.п., которые также будут автоматически загружаться конфигуратором среды 3L DIAMOND.

Коммуникация с управляющим компьютером

Приложения, функционирующие в среде 3L DIAMOND, имеют полный доступ к сервисам на управляющем ПК. Это достигается с помощью приложения Windows Server, которое функционирует в среде Windows, осуществляет загрузку мультипроцессорных приложений и предоставляет полную поддержку функций ввода/вывода для всех задач приложения. Так, любая задача приложения в среде 3L DIAMOND может использовать функцию printf из любого процессора. В этом случае, механизм виртуальных каналов среды 3L DIAMOND автоматически маршрутизирует запрос ввода/вывода между управляющим ПК и конкретной задачей.

Для мультипроцессора ЦОС TOR-NADO-PX64xxQ связь между управляющем ПК и процессорами ЦОС осуществляется через HPI-порты процессоров ЦОС. Среда 3L DIAMOND не использует медленный JTAG-порт процессоров ЦОС, который используется средой разработки и отладки приложений ДОС Code Composer фирмы TEXAS INSTRUMENTS. Очень важно, что встроенные аппаратные приложения, которые не используют в своем составе ПК, могут также разрабатываться и отлаживаться с помощью Windows Server cpeды 3L DIAMOND путем ввода/вывода диагностических сообщений на экран ПК л т.п., но после отладки могут быть перекомпилированы с запрещенными функциями ввода/вывода, чтобы исключить коммуникацию с ПК.

Простота

Среда 3L DIAMOND представляется обманчиво простой, и именно эта простота является главным привлекательным моментом. В то время как другие среды программирования процессоров ЦОС "наращивают слой за слоем" своей логической организации, представляя пользователю озадачивающе бесконечный набор сервисов и опций, среда 3L DIAMOND специально использует простейший способ создания приложений при сохранении максимальной эффективности, которая проявляется как в минимизации избыточности системы, гак и в минимизации усилий разработчика. При этом, среда 3L DIAMOND "незримо" управляет большинством внутрисистемных задач и другими деталями, слабо влияющими на производительность приложений, предоставляя пользователю возможность сконцентрироваться на разработке конкретного приложения.

Управление размещением памяти является простым примером того, как среда 3L DIAMOND позволяет ускорить разработку приложений. Возвращаясь с рис. 5, можно увидеть, что единственное управление памятью задач осуществляется с помощью ключевого слова 'DATA=", указывающего размер стека и области данных для задачи, и Вы нигде не встретите указания конкретного типа памяти и метода его использования, (конфигуратор среды 3L DIAMOND автоматически анализирует тип каждого процессора в системе, определяет размеры памяти и размещает секции кода и данных. Как только отладка логической части приложения будет закончена и наступит этап оптимизации, среда 3L DIAMOND позволяет пользователю осуществлять полный контроль над распределением памяти, который может включать в себя как простое приоритетное размещение секций кода/данных, так и явное указание адреса памяти для критических секций. Кроме того, конфигуратор среды 3L DIAMOND автоматически выделяет память для секций, которые явно не были указаны разработчиком. Интересно отметить, что начинающие пользователи среды 3L DIAMOND обычно предполагают, что им необходим максимально возможный контроль над распределением памяти, однако, в конце концов, используют самый простейший, обнаружив, что конфигуратор делает это сам практически идеально.

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

На рис. 7 и 8 приведен пример, иллюстрирующий простоту процесса разработки приложений для среды 3L DIAMOND. В качестве примера используется простейшее приложение, которое выводит строку текста из одного из процессоров мультипроцессора ЦОС ЦОС TORNADO-PX64xxQ.

Исходная программа HelloTask.c
Рисунок 7. Исходная программа HelloTask.c

Конфигурационный файл Hello.cfg
Рисунок 8. Конфигурационный файл Hello.cfg

На рис. 9 приведен список команд, необходимых для компиляции, компоновки, конфигурирования и запуска приложения из командной строки Windows, а на рис. 10 приведено окно Windows Server среды 3L DIAMOND, которое отображает результат работы приложения.

Команды создания и запуска приложения
Рисунок 9. Команды создания и запуска приложения

Окно Windows Server
Рисунок 10. Окно Windows Server

Области применения

Среда 3L DIAMOND успешно используется в мире уже в течение 16 лет в различных областях применения процессоров ЦОС: восстановление старых кинолент, стабилизация телескопов, подавление шума, подземные радары, сонары, управление оборудованием на лесопилке (обработка изображений от нескольких рентгеновских камер для управления распилочным станком) и многое др. Типовые системы используют от одного до четырех процессоров ЦОС, однако имеется также и опыт применения среды 3L DIAMOND на сети из более чем 1000 процессоров. Интеграция среды 3L DIAMOND и мультипроцессора ЦОС TORNADO-PX64xxQ фирмы "МикроЛАБ Системе" позволяет существенно упростить и ускорить разработку и обеспечить переносимость кода для мультипроцессорных приложений ЦОС. Очень важно отметить, что архитектура мультипроцессора ЦОС TORNADO-PX64xxQ и функционирующая на нём среда 3L DIAMOND отвечают требованиям производительности большинства мультипроцессорных приложений ЦОС и одновременно позволяют просто и эффективно наращивать количество устройств для приложений, требующих супервысокой производительности.

Мультипроцессор ЦОС TORNADO-PX64XXQ

Мультипроцессор ЦОС TORNADO-PX64xxQ фирмы "МикроЛАБ Системе" (рис. 11 и 12) построен на основе четырех процессоров ЦОС TMS320C64xx (С6414/С6415/С6416) фирмы TEXAS INSTRUMENTS и имеет суммарную производительность ЦОС 23,040 MIPS.

Блок-схема мультипроцессора ЦОС TORNADO-PX64xxQ


Рисунок 11. Блок-схема мультипроцессора ЦОС TORNADO-PX64xxQ

Мультипроцессор ЦОС TORNADO-PX64xxQ
Рисунок 12. Мультипроцессор ЦОС TORNADO-PX64xxQ

Мультипроцессор ЦОС TORNADO-PX64xxQ имеет два типа межпроцессорных связей (общая память и последовательные каналы), позволяет объединение неограниченного числа таких же и совместимых с ним устройств (сопроцессоры цифрового радиоприема и др.) в единую мультипроцессорную систему, а также обеспечивает возможности ввода/ вывода сигналов в реальном времени с внешних модулей АЦП/ЦАП и различных специализированных устройств. Детальное описание можно найти на www.mlabsys.com/t_copr.htm.

С вопросами по среде 3L DIAMOND обращайтесь на фирму "МикроЛАБ Системе" — авторизованному дистрибьютору фирмы 3L в России. Тел./факс: +7 (095) 900-6208; e-mail: info@mlabsys.com.







Реклама на сайте
тел.: +7 (495) 514 4110. e-mail:admin@eust.ru
1998-2014 ООО Рынок микроэлектроники