научная статья по теме РЕАЛИЗАЦИЯ ВИРТУАЛЬНОЙ АППАРАТУРЫ НА МУЛЬТИПРОЦЕССОРЕ СТ3400 Энергетика

Текст научной статьи на тему «РЕАЛИЗАЦИЯ ВИРТУАЛЬНОЙ АППАРАТУРЫ НА МУЛЬТИПРОЦЕССОРЕ СТ3400»

УДК 004.272.26

РЕАЛИЗАЦИЯ ВИРТУАЛЬНОЙ АППАРАТУРЫ НА МУЛЬТИПРОЦЕССОРЕ СТ3400

А. А. Можейко, Л. П. Кузнецова

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

ВВЕДЕНИЕ

Один из способов ускорения и удешевления процесса разработки цифровых систем — применение виртуальной аппаратуры. Трактовка термина "виртуальная аппаратура" в основном совпадает с представленной в работе [1], но допускает более широкое толкование. Виртуальной аппаратурой будем называть такую цифровую аппаратуру, которая реализована абстрактно, в виде кода. Этот код необходимо циклически исполнять на некоторой реальной аппаратуре для того, чтобы реализовывалась функция, заложенная в виртуальную аппаратуру. Виртуализация цифровой аппаратуры сама по себе недостаточно эффективна [1]. При ее разработке следует учитывать особенности исполняющей платформы и применять такие зернистость (granularity) и элементную базу, которые в совокупности обеспечат достаточно эффективную эмуляцию виртуальной аппаратуры.

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

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

— улучшается переносимость;

— облегчаются исправление ошибок, модификация и доработка;

— продлевается время жизни системы;

— значительно ускоряется и удешевляется разработка;

— снижается коммерческий риск разработки.

МУЛЬТИПРОЦЕССОР СТ3400 КАК ПЛАТФОРМА ДЛЯ ВИРТУАЛЬНОЙ АППАРАТУРЫ

Мультипроцессор СТ3400 [2] фирмы Cradle Technologies может быть использован в качестве платформы для реализации виртуальной аппаратуры. Мультипроцессор СТ3400 имеет в составе одного кластера 4 универсальных процессора и 8 более мощных 32-разрядных сопроцессоров ЦОС с тактовой частотой 275 МГц.

Каждый сопроцессор содержит собственную память команд на 512 20-разрядных команд, собственную регистровую память на 128 32-разрядных слов, имеет свой собственный счетчик команд и работает независимо от других сопроцессоров, взаимодействуя с ними через разделяемую память данных объемом 64 Кбайт. Скоростной конвейеризованный канал обращения к памяти данных позволяет обслуживать запросы к памяти со стороны всех сопроцессоров без конфликтов.

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

Один из четырех универсальных процессоров применяется как управляющий: для загрузки кода в сопроцессоры, загрузки значений констант и первоначальной установки регистров сопроцессоров, инициализации регистров, ячеек ЗУ и ПЗУ виртуальной аппаратуры в памяти данных класте-

pa, запуска сопроцессоров на исполнение кода и принудительного их останова в случае необходимости.

ТРАНСЛЯТОР ВИРТУАЛЬНОЙ АППАРАТУРЫ В КОД МУЛЬТИПРОЦЕССОРА СТ3400

Транслятор виртуальной аппаратуры в код мультипроцессора СТ3400 реализован на языке Turbo Prolog 2.0 [3]. На входе транслятора дано описание виртуальной аппаратуры в текстовом виде; в качестве языка описания применялся язык Turbo Prolog 2.0. На выходе транслятора — два файла: сегмент кода для сопроцессоров, где находятся программы на ассемблере для заданного числа сопроцессоров, и сегмент кода для процессора, где находится управляющая программа. Далее эти файлы используются как входные для последующей трансляции, отладки и подготовки загрузочных файлов для мультипроцессора (фирменный инструмент для программирования мультипроцессора СТ3400 — UMS Inspector) [4].

Трансляция состоит из следующих основных этапов.

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

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

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

4. На основании индивидуальных оценок происходит размещение групп команд по сопроцессорам с целью минимизации такта виртуальной аппаратуры.

5. Для каждого сопроцессора в целях дальнейшей оптимизации из групп команд, привязан-

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

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

7. Генерируются загрузочная и управляющая части программы, формируется сегмент кода для процессора.

Далее ассемблерный код для мультипроцессора СТ3400 подлежит обработке стандартными средствами, предлагаемыми фирмой "Cradle Technologies".

ОПТИМИЗАЦИЯ КОДА

ДЛЯ МУЛЬТИПРОЦЕССОРА СТ3400

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

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

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

Третья проблема оптимизации также связана с особенностями мультипроцессора СТ3400, а именно: использование в командах сопроцессоров только двух адресов приводит при трансляции к появлению большого числа команд пересылки данных. В некоторых случаях за счет переименования переменных удается избавиться от большого количества таких команд.

50

Sensors & Systems • № 3.2006

ЗАКЛЮЧЕНИЕ

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

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

— высокой степенью конвейеризации тракта выборки, подготовки и обработки инструкций;

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

— широковещательным режимом обмена данными между процессорами;

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

ЛИТЕРАТУРА

1. Lange S., Kebschull U. Virtual Hardware Byte Code as a Design Platform for Reconiigurable Embedded Systems // Proc. of DATE'03. — Munich, 2003.

2. CT3400 Multiprocessor DSP (MDSP). (http://www.cradle. com/products/ct3400.shtm).

3. Ин Ц., Соломон Д. Использование Турбо-Пролога. — М.: Мир, 1993.

4. Software Development Kit (SDK). (http://www.cradle.com/ products/tools/development_tools-software.shtm).

Статья представлена Институтом Систем Информатики

Для дальнейшего прочтения статьи необходимо приобрести полный текст. Статьи высылаются в формате PDF на указанную при оплате почту. Время доставки составляет менее 10 минут. Стоимость одной статьи — 150 рублей.

Показать целиком