Импульс С
Разработано | Импульсно-ускоренные технологии |
---|---|
Разработчик | Импульсно-ускоренные технологии |
Впервые появился | 2003 |
Стабильная версия | 3.60.а.8 / 30 сентября 2009 г. |
ТЫ | FPGA и соответствующие встроенные процессоры |
Лицензия | Компилятор FPGA продается и распространяется компанией Impulse Accelerated Technologies. |
Веб-сайт | www.ImpulseC.com [ мертвая ссылка ] |
Под влиянием | |
Язык программирования C , Streams-C |
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 и Xilinx от MicroBlaze и PowerPC .