Jump to content

Гендель-С

Гендель-С
Парадигма Императивный ( процедурный , структурированный ), совпадающий
Разработано Вычислительная лаборатория Оксфордского университета
Разработчик английский как английский язык; Целоксика; Ловкость; Наставник Графика; Сименс ЭДА
Впервые появился 1996
Стабильная версия
v3.0
Дисциплина набора текста Статический , явный , номинальный , предполагаемый
ТЫ Кроссплатформенность (мультиплатформенность)
Расширения имен файлов .hcc, .hch
Веб-сайт Эда .sw .siemens /en-US /IC /точность /
Основные реализации
Целоксика ДК
Под влиянием
С , КСП , Оккам

Handel-C — это язык описания аппаратного обеспечения высокого уровня, предназначенный для аппаратного обеспечения низкого уровня и чаще всего используемый при программировании FPGA . Handel-C предназначен для проектирования аппаратного обеспечения тем же, чем первые языки программирования высокого уровня были для программирования процессоров . Это полное по Тьюрингу подмножество языка программирования C с упором на параллельные вычисления .

В отличие от многих других языков проектирования аппаратного обеспечения (HDL), ориентированных на конкретную компьютерную архитектуру, Handel-C можно скомпилировать в несколько HDL, а затем синтезировать на соответствующем оборудовании. Это позволяет разработчикам сосредоточиться на текущей задаче программирования, а не на особенностях конкретного языка дизайна и архитектуры.

Дополнительные возможности [ править ]

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

Параллельные программы [ править ]

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

Например: [1]

по   {           ++  с  ;       а   =   d   +   е  ;       б   знак равно   d   +   е  ;  } 

Каналы [ править ]

Каналы предоставляют механизм передачи сообщений между параллельными потоками . Каналы могут быть определены как асинхронные или синхронные (с предполагаемым элементом хранения или без него соответственно). Поток, записывающий в синхронный канал, будет немедленно заблокирован до тех пор, пока соответствующий прослушивающий поток не будет готов принять сообщение. Аналогично, поток-получатель блокирует оператор чтения до тех пор, пока поток-отправитель не выполнит следующую отправку. Таким образом, их можно использовать как средство синхронизации потоков. [1]

пар   {      чан   int   a  ;   // объявляем синхронный канал      int   x  ;      // начинаем отправку потока      seq   (  i   =   0  ;   i   <   10  ;   i  ++  )   {          a   !   я  ;    // отправляем значения от 0 до 9 последовательно в канал      }      // начинаем получать поток      seq   (  j   =   0  ;   j   <   10  ;   j  ++  )   {          a   ?   х  ;    // выполняем последовательность из 10 чтений из канала в переменную x          задержки  ;    // вводим задержку в 1 такт между последовательными чтениями                  // это приводит к блокировке потока отправки между операциями записи      }  } 

Асинхронные каналы предоставляют определенный объем хранилища для проходящих через них данных в форме FIFO . Хотя этот FIFO не полон и не пуст, потоки отправки и получения могут продолжаться без блокировки. Однако если FIFO пуст, принимающий поток заблокируется при следующем чтении. Когда он заполнится, отправляющий поток заблокируется при следующей отправке. Канал с участниками в разных тактовых доменах автоматически становится асинхронным из-за необходимости наличия хотя бы одного элемента хранилища для смягчения метастабильности .

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

Совместное использование области действия и переменных [ править ]

Область объявлений ограничена блоками кода ( { ... }), в котором они были объявлены, область действия носит иерархический характер, поскольку объявления находятся в области действия внутри подблоков. [1]

Например:

инт   а  ;  void   main  (  void  )  {     int   b  ;     /* "a" и "b" находятся в области видимости */     {       int   c  ;       /* "a", "b" и "c" находятся в области видимости */      }     {       int   d  ;       /* "a", "b" и "d" находятся в области видимости */       }  } 

Расширения языка C [ править ]

В дополнение к влиянию стандартной семантики C на время выполнения программы, следующие ключевые слова [1] зарезервированы для описания практических аспектов среды FPGA или для элементов языка, взятых из Occam:

Типы и объекты Выражения Заявления
тян <...> (уточнитель типа) ! (отправить в канал)
количество [ : ] (выбор битового диапазона) ? (читать с канала)
Чаноут \\ (уронить) задерживать
выражение макроса <- (взять) если выбрать
внешний @ (оператор конкатенации) установить по ширине
external_divide выбирать позволять ... ; в
в соответствии ширина для
интерфейс приальт
внутренний выпускема
внутренний_делитель установить часы
мпрам установить семью
макрос часть набора
баран установить сброс
ПЗУ последовательность
сема попробуйте { ... } сбросить
общий тризема
сигнал с
типоф
неопределенный
женщина

Планирование [ править ]

В Handel-C назначение и команда задержки занимают один цикл. Все остальные операции «бесплатны». [1] Это позволяет программистам вручную планировать задачи и создавать эффективные конвейеры . Организуя параллельные циклы с правильными задержками, конвейеры могут значительно увеличить пропускную способность данных за счет увеличения использования аппаратных ресурсов.

История [ править ]

Исторические корни Handel-C лежат в серии языков описания аппаратного обеспечения вычислительной лаборатории Оксфордского университета, разработанных группой компиляции аппаратного обеспечения. Handel HDL превратился в Handel-C примерно в начале 1996 года. Технология, разработанная в Оксфорде, была выделена в качестве краеугольного продукта для Embedded Solutions Limited (ESL) в 1996 году. ESL была переименована в Celoxica в сентябре 2000 года.

Handel-C был принят многими университетскими группами по исследованию аппаратного обеспечения после его выпуска ESL, в результате чего он смог зарекомендовать себя в качестве предпочтительного инструмента проектирования аппаратного обеспечения в академическом сообществе, особенно в Соединенном Королевстве.

В начале 2008 года бизнес Celoxica ESL был приобретен компанией Agility, которая разработала и продала, среди других продуктов, инструменты ESL, поддерживающие Handel-C.

В начале 2009 года Agility прекратила свою деятельность из-за того, что ей не удалось получить дальнейшие капитальные вложения или кредит. [2]

В январе 2009 года Mentor Graphics приобрела активы Agility по синтезу C. [3]

Другими подмножествами C HDL, разработанными примерно в то же время, являются Transmogrifier C в 1994 году в Университете Торонто (ныне проект с открытым исходным кодом FpgaC ) и Streams-C в Национальной лаборатории Лос-Аламоса (теперь лицензированный Impulse Accelerated Technologies под названием Impulse C ).

См. также [ править ]

Ссылки [ править ]

  1. Перейти обратно: Перейти обратно: а б с д и «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 31 марта 2010 г. Проверено 31 марта 2010 г. {{cite web}}: CS1 maint: архивная копия как заголовок ( ссылка ) Справочное руководство по языку Handel-C
  2. ^ Гейб Моретти (19 января 2009 г.). «Agility DS — жертва кредитного кризиса» . EETimes.com.
  3. ^ Дилан МакГрат (22 января 2009 г.). «Mentor покупает активы Agility по синтезу C» . EETimes.com.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 15dd5597b04fecccda9c18cbf57434d7__1718374020
URL1:https://arc.ask3.ru/arc/aa/15/d7/15dd5597b04fecccda9c18cbf57434d7.html
Заголовок, (Title) документа по адресу, URL1:
Handel-C - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)