Handel-C - Handel-C - Wikipedia

Handel-C
ParadigmaZorunlu (prosedürel, yapılandırılmış ), eşzamanlı
Tarafından tasarlandıOxford Üniversitesi Bilgisayar Laboratuvarı
GeliştiriciESL; Celoxica; Çeviklik; Mentor Graphics
İlk ortaya çıktı1996
Kararlı sürüm
v3.0
Yazma disipliniStatik, belirgin, nominal, çıkarsanmış
işletim sistemiÇapraz platform (çoklu platform)
Dosya adı uzantıları.hcc, .hch
İnternet sitesiwww.mentor.com/Ürün:% s/ fpga/ handel-c/
Majör uygulamalar
Celoxica DK http://192.168.100.187
Tarafından etkilenmiş
C, CSP, Occam

Handel-C üst düzey Programlama dili düşük seviyeli donanımı hedefleyen, en yaygın olarak programlamada kullanılan FPGA'lar. Zengin bir alt kümesidir C, paralellik vurgusuyla donanım somutlaştırmasını kontrol etmek için standart olmayan uzantılarla. Handel-C, CPU'ları programlamak için ilk üst düzey programlama dillerinin ne olduğunu donanım tasarlamaktır. Belirli bir mimariyi hedefleyen diğer birçok tasarım dilinin aksine, Handel-C bir dizi tasarım diline göre derlenebilir ve ardından ilgili donanıma sentezlenebilir. Bu, geliştiricilerin belirli bir tasarım dilinin ve mimarisinin kendine özgü özellikleri yerine eldeki programlama görevine konsantre olmalarını sağlar.

Ek özellikler

C'nin alt kümesi, karmaşıklığı tanımlamak için gerekli tüm yaygın C dili özelliklerini içerir. algoritmalar. Birçok gömülü C derleyicisi gibi, kayan nokta veri türleri çıkarıldı. Kayan nokta aritmetiği, çok verimli olan harici kitaplıklar aracılığıyla desteklenir.

Paralel programlar

Tanımlamanın bir yolunu kolaylaştırmak için paralel davranış Bazıları CSP anahtar sözcükler, genel dosya yapısı ile birlikte kullanılır Occam.

Örneğin:[1]

eşit {         ++c;     a = d + e;     b = d + e;}

Kanallar

Kanallar için bir mekanizma sağlamak ileti geçişi arasında paralel ipler. Kanallar, eşzamansız veya eşzamanlı olarak tanımlanabilir (sırasıyla, çıkarılmış bir depolama öğesi olan veya olmayan). Senkronize bir kanala yazılan bir ileti dizisi hemen bloke ilgili dinleme dizisi mesajı almaya hazır olana kadar. Aynı şekilde, alıcı evre, gönderen evre bir sonraki gönderimi gerçekleştirene kadar bir okuma deyimini bloke edecektir. Böylece bir araç olarak kullanılabilirler eşitleniyor İş Parçacığı.[1]

eşit {    chan int a; // eşzamanlı bir kanal bildir    int x;    // ileti dizisi göndermeye başla    sıra (ben = 0; ben < 10; ben++) {        a ! ben;  // 0 ile 9 arasındaki değerleri sırayla kanala gönder    }    // iş parçacığı almaya başla    sıra (j = 0; j < 10; j++) {        a ? x;  // kanaldan değişken x'e 10 okuma dizisi gerçekleştirin        gecikme;  // birbirini izleyen okumalar arasında 1 saat döngüsü gecikmesi ekleyin                // bu, yazma işlemleri arasında gönderen evreyi engelleme etkisine sahiptir    }}

Eşzamansız kanallar, içlerinden geçen veriler için belirli bir depolama alanı sağlar. FIFO. Bu FIFO ne dolu ne de boş iken, hem ileti gönderme hem de alma işlemi engellenmeden devam edebilir. Bununla birlikte, FIFO boş olduğunda, alıcı iş parçacığı bir sonraki okumada bloke olacaktır. Dolu olduğunda, gönderen iş parçacığı bir sonraki gönderimde engellenecektir. Farklı aktörlerin olduğu bir kanal saat alanları azaltmak için en az bir depolama öğesi gerekmesi nedeniyle otomatik olarak eşzamansızdır metastabilite.

Bir iş parçacığı eşzamanlı olarak birden fazla kanalda bekleyebilir, eşzamanlı veya eşzamansız, belirli bir öncelik sırasına göre mevcut olan ilk kanal üzerinde hareket edebilir veya isteğe bağlı olarak hiçbiri hazır değilse alternatif bir yolu çalıştırabilir.

Kapsam ve değişken paylaşımı

Bildirimlerin kapsamı kod blokları ile sınırlıdır ({ ... }) bildirildiklerinde, bildirimler alt bloklar içinde kapsam içinde olduğundan kapsam doğası gereği hiyerarşiktir.[1]

Örneğin:

int a;geçersiz ana(geçersiz){   int b;   / * "a" ve "b" kapsam dahilindedir * /   {     int c;     / * "a", "b" ve "c" kapsam dahilindedir * /    }   {     int d;     / * "a", "b" ve "d" kapsam dahilindedir * /     }}

C dilinin uzantıları

Efektlere ek olarak, standart semantiği C programın zamanlamasına sahip, aşağıdaki anahtar kelimeler[1] FPGA ortamının pratikliklerini açıklamak veya Occam'dan elde edilen dil unsurları için ayrılmıştır:

Türler ve Nesnelerİfadeİfadeler
chan<...> (açıklayıcı yazın)! (kanala gönder)
Chanin[:] (bit aralığı seçimi)? (kanaldan oku)
Chanout (düşürmek)gecikme
makro ifadesi<- (al)ifselect
dış@ (bitiştirme operatörü)genişliğini ayarlamak
external_divideseçİzin Vermek ... ; içinde
ÇizgideGenişlikeşit
arayüzprialt
Releaseasesema
internal_dividesaati ayarla
mpramaile kurmak
makro işlemparça ayarla
Veri deposusıfırlamayı ayarla
ROMsıra
semasıfırlamayı {...} dene
paylaşılantrisema
sinyalile
bir çeşit
Tanımsız
wom

Planlama

Handel-C'de, atama ve gecikme komutu bir döngü alır. Diğer tüm işlemler "ücretsizdir".[1] Bu, programcıların görevleri manuel olarak planlamasına ve etkili boru hatları. Doğru gecikmelerle paralel olarak döngüleri düzenleyerek, ardışık düzenler, artan donanım kaynağı kullanımı pahasına veri çıkışını büyük ölçüde artırabilir.

Tarih

Handel-C'nin tarihsel kökleri bir dizi Oxford Üniversitesi Bilgisayar Laboratuvarı donanım derleme grubu tarafından geliştirilen donanım tanımlama dilleri. Handel HDL, 1996'nın başlarında Handel-C'ye dönüştü. Oxford'da geliştirilen teknoloji, 1996 yılında Embedded Solutions Limited (ESL) için bir temel ürün olarak olgunlaşmak üzere ayrıldı. ESL, Eylül 2000'de Celoxica olarak yeniden adlandırıldı.

Handel-C, ESL tarafından piyasaya sürüldükten sonra birçok Üniversite Donanım Araştırma grubu tarafından benimsenmiştir ve bunun sonucunda, özellikle Birleşik Krallık'ta akademik topluluk içinde tercih edilen bir donanım tasarım aracı olarak kendini kurmayı başarmıştır.

2008'in başlarında, Celoxica'nın ESL işi, diğer ürünlerin yanı sıra Handel-C'yi destekleyen ESL araçlarını geliştiren ve satan Agility tarafından satın alındı.

2009'un başlarında, Agility daha fazla sermaye yatırımı veya kredi elde edemediği için faaliyetlerini durdurdu.[2]

Ocak 2009'da Mentor Graphics, Agility'nin C sentez varlıklarını satın aldı.[3]

Aynı zamanda gelişen diğer alt küme C HDL'ler, 1994'te Transmogrifier C'dir. Toronto Üniversitesi (Şimdi FpgaC açık kaynak projesi) ve Streams-C Los Alamos Ulusal Laboratuvarı (şimdi lisanslı Impulse Accelerated Teknolojileri adı altında Dürtü C )

Referanslar

  1. ^ a b c d e "Arşivlenmiş kopya" (PDF). Arşivlenen orijinal (PDF) 2010-03-31 tarihinde. Alındı 2010-03-31.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı) Handel-C Language Referans Kılavuzu
  2. ^ Gabe Moretti (19 Ocak 2009). "Çeviklik DS kredi sıkıntısının kurbanı". EETimes.com.
  3. ^ Dylan McGrath (22 Ocak 2009). "Mentor, Agility'nin C sentezi varlıklarını satın alır". EETimes.com.

Dış bağlantılar