Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://fpga.parallel.ru/argus.html
Дата изменения: Fri Jun 20 16:38:01 2008 Дата индексирования: Mon Oct 1 19:43:14 2012 Кодировка: koi8-r |
КОМПЬЮТЕРЫ |
Изучившему язык Colamo будет полезно также ознакомиться с основными чертами языка Argus. Дело в том, что, несмотря на свою относительную простоту, Colamo является языком высокого уровня в том смысле, что, несмотря на ряд возможностей по фиксации используемых ресурсов , всё же он оперирует абстрактными переменными, массивами и структурами, а вот как всё это после трансляции будет реализовано на конкретной ПЛИС-плате, программисту на Colamo в целом неизвестно.
В этом плане возможности языка Argus соответствуют примерно возможностям языка ассемблера для традиционных ЭВМ. Однако, есть у него и некоторые особенности, связанные в основном с особенностями программирования на ПЛИС-архитектурах.
В языке Argus основные составляющие конструкции делятся на общие с другими языками для программирования ПЛИСов, общие вообще с большинством языколв программирования, и специфические для самого языка.
В языке Argus, как и в Colamo, основным понятием и структурой является кадр. В этом и заключается основное сходство двух языков разного уровня для ПЛИС: кадры выполняются друг за другом, а в рамках кадра операции могут быть исполнены как одновременно, так и последовательно. Но на этом сходство языков почти заканчивается: если в Colamo распределение и расписание операций в кадре определяется транслятором (с возможной оптимизацией), то в языке Argus, как в общем-то и должно быть в ассемблероподобном языке, всё расписание (причем не только арифметических и логических, но и сервисных) операций должно быть прописано в программе. Как это будет сделано - уже другой вопрос (скажем, можно взять на языке Argus в качестве основы результаты трансляции с Colamo, а потом этот текст видоизменить, соптимизировав его, если не устраивает внутренняя оптимизация транслятора).
Помимо кадра, у этих двух языков есть элементы, общие с многими другими языками программирования: операторы перехода, организация и вызов подпрограмм, циклы. Кроме этих конструкций и кадра, важными элементамим явлюется наличие типов размерности массива (векторные и потоковые), а также наличие "типов хранения" данных, но в этом уже Argus и отличается от Colamo тем, что в нём остутствует так называемый коммутационный тип, что и понятно: в ассемблере мало места виртуальным объектам, абстракциям, создаваемым для удобства.
Существенной отличительной стороной детального программирования ПЛИС является составление детального расписания ввода-вывода разного уровня: записей в распределённую память, передачи по каналам между компонентами вычислительной системы. Именно эти инструкции и составляют значительную часть языка Argus. Более того - именно для программирования настройки каналов обмена в этом ассемблере для ПЛИС предусмотрены макрооперации (которых, к слову, не предусмотрено для программирования "арифметики" - для неё предназначены так называемые структуры, в чём-то аналогичные подкадрам в Colamo). Настройка микросхем ПЛИС разного назначения (включая контроллеры распределённой памяти) как раз производится с помощью инструкций ввода-вывода и коммутаций каналов.
Ещё одной особеностью языка Argus как ассемблера для ПЛИС-архитектур является поддержка векторного сложения. Кроме этого, при составлении чёткого расписания операций бывает, что в определённые моменты нужны задержки. Для этого предусмотрен оператор паузы.
Как понятно из названия, язык Argus должен предусмотреть все мелочи работы ПЛИС-устройства. В этом плане пользоваться им может в принципе только тот программист, который досконально знает схемотехнику программируемой ПЛИС. Поэтому начинающим пользователям, желающим использовать ПЛИС при работе, мы не рекомендуем его изучения. Оно будет целесообразным только после долгого опыта программирования на ПЛИС, например, на языке Colamo.
© Лаборатория Параллельных информационных технологий НИВЦ МГУ