stringtranslate.com

Импульс С

Impulse C — это подмножество языка программирования C в сочетании с C-совместимой библиотекой функций, поддерживающей параллельное программирование , в частности, для программирования приложений, предназначенных для устройств FPGA . Он разработан компанией Impulse Accelerated Technologies из Киркланда, штат Вашингтон.

Обзор

Инструмент высокоуровневого синтеза CoDeveloper включает в себя компилятор Impulse C и соответствующую библиотеку функций, предназначенную для разработки приложений на основе FPGA. Impulse C совместим со стандартом ANSI C , что позволяет использовать стандартные инструменты C для проектирования и отладки приложений, предназначенных для FPGA. Компилятор Impulse C принимает подмножество C и генерирует оборудование FPGA в виде файлов языка описания оборудования (HDL) . Impulse C позволяет разработчикам встраиваемых систем и программистам использовать устройства FPGA для ускорения приложений на языке C.

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

Инструменты Impulse C включают инструменты совместного аппаратного и программного моделирования, а также технологию планирования/оптимизации C-to- RTL , используемую для сопоставления элементов приложения с аппаратным обеспечением с помощью инструментов логического синтеза FPGA.

Модель программирования

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

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

Используя Impulse C, приложение можно разделить для создания многопроцессной реализации, которая разделена на аппаратные и программные компоненты или полностью реализована в устройстве FPGA. Например, приложение фильтрации изображений можно описать с помощью Impulse C как набор параллельных конвейерных процессов, каждый из которых описан с использованием одной или нескольких подпрограмм C.

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

На аппаратной стороне приложения функции библиотеки Impulse C и другие операторы C компилируются для создания эквивалентных параллельных аппаратных реализаций в форме синтезируемых файлов HDL. Эти файлы обрабатываются инструментами FPGA для создания растровых изображений оборудования FPGA.

В основе модели потокового программирования Impulse C лежат процессы и потоки. Процессы независимо синхронизируются, одновременно выполняя сегменты приложения. Аппаратные процессы написаны с использованием подмножества стандарта C и выполняют работу приложения, принимая данные, выполняя вычисления и генерируя выходные данные. В типичном приложении данные передаются от процесса к процессу посредством буферизованных потоков или, в некоторых случаях, посредством сообщений и/или разделяемой памяти. Характеристики каждого потока, включая ширину и глубину генерируемых FIFO, могут быть указаны в приложении C.

Приложения

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

Целевые платформы

Impulse C поддерживает FPGA от Xilinx и Altera, включая доступные программные и аппаратные процессоры Altera Nios II и MicroBlaze и PowerPC от Xilinx .

Рекомендации

Внешние ссылки