هاندل-سي

لغة هاندل-سي هي لغة وصف أجهزة عالية المستوى مصممة خصيصًا للأجهزة منخفضة المستوى، وتُستخدم بشكل شائع في برمجة مصفوفات البوابات المنطقية القابلة للبرمجة (FPGAs) . تُعدّ هاندل-سي في تصميم الأجهزة بمثابة لغات البرمجة عالية المستوى الأولى في برمجة وحدات المعالجة المركزية (CPUs) . وهي مجموعة فرعية غنية ومتكاملة من لغة البرمجة سي ، مع التركيز على الحوسبة المتوازية .

على عكس العديد من لغات تصميم الأجهزة الأخرى (HDL) التي تستهدف بنية حاسوبية محددة، يمكن ترجمة لغة Handel-C إلى عدد من لغات تصميم الأجهزة ثم تركيبها على الأجهزة المقابلة. وهذا يتيح للمطورين التركيز على مهمة البرمجة بدلاً من الانشغال بخصائص لغة تصميم وبنية حاسوبية محددة.

ميزات إضافية

تتضمن مجموعة Handel-C الفرعية من لغة C جميع ميزات لغة C الشائعة اللازمة لوصف الخوارزميات المعقدة . وكما هو الحال في العديد من مترجمات لغة C المضمنة، تم حذف أنواع بيانات الفاصلة العائمة . ويتم دعم العمليات الحسابية للفاصلة العائمة من خلال مكتبات خارجية عالية الكفاءة.

البرامج المتوازية

من أجل تسهيل طريقة لوصف السلوك المتوازي، يتم استخدام بعض الكلمات الرئيسية لعمليات الاتصال التسلسلي (CSP)، إلى جانب بنية الملف العامة للغة برمجة Occam .

على سبيل المثال: [ 1 ]

قدم المساواة { ++ ج ; أ = د + ه ; ب = د + ه ; }

القنوات

توفر القنوات آلية لتبادل الرسائل بين الخيوط المتوازية . يمكن تعريف القنوات بأنها غير متزامنة أو متزامنة (مع أو بدون عنصر تخزين مُستنتج على التوالي). سيتم حظر الخيط الذي يكتب إلى قناة متزامنة فورًا حتى يصبح خيط الاستماع المقابل جاهزًا لاستقبال الرسالة. وبالمثل، سيتم حظر خيط الاستقبال عند عبارة القراءة حتى يُنفذ خيط الإرسال عملية الإرسال التالية. وبالتالي، يمكن استخدامها كوسيلة لمزامنة الخيوط. [ 1 ]

par { chan int a ; // تعريف قناة متزامنة int x ;// بدء إرسال سلسلة الرسائل seq ( i = 0 ; i < 10 ; i ++ ) { a ! i ; // إرسال القيم من 0 إلى 9 بالتسلسل إلى القناة }// بدء سلسلة استقبال البيانات seq ( j = 0 ; j < 10 ; j ++ ) { a ? x ; // تنفيذ سلسلة من 10 عمليات قراءة من القناة إلى المتغير x delay ; // إضافة تأخير لمدة دورة ساعة واحدة بين عمليات القراءة المتتالية // يؤدي هذا إلى حظر سلسلة الإرسال بين عمليات الكتابة } }

توفر القنوات غير المتزامنة مساحة تخزين محددة للبيانات المارة عبرها على شكل مخزن بيانات FIFO . طالما أن مخزن البيانات هذا ليس ممتلئًا ولا فارغًا، يمكن لكل من خيوط الإرسال والاستقبال العمل دون توقف. مع ذلك، عندما يكون مخزن البيانات فارغًا، يتوقف خيط الاستقبال عند القراءة التالية. وعندما يكون ممتلئًا، يتوقف خيط الإرسال عند الإرسال التالي. تُعتبر القناة التي تضم جهات فاعلة في نطاقات زمنية مختلفة غير متزامنة تلقائيًا نظرًا للحاجة إلى عنصر تخزين واحد على الأقل للتخفيف من عدم الاستقرار .

قد ينتظر مؤشر الترابط في وقت واحد على قنوات متعددة، متزامنة أو غير متزامنة، ويتصرف على أول قناة متاحة وفقًا لترتيب أولوية محدد أو يقوم اختياريًا بتنفيذ مسار بديل إذا لم يكن أي منها جاهزًا.

نطاق المشاركة والمتغيرات

يقتصر نطاق التصريحات على كتل التعليمات البرمجية ( { ... }) التي تم التصريح فيها، ويكون النطاق هرميًا بطبيعته حيث تكون التصريحات ضمن نطاق الكتل الفرعية. [ 1 ]

على سبيل المثال:

int a ;void main ( void ) { int b ; /* "a" و "b" ضمن النطاق */ { int c ; /* "a" و "b" و "c" ضمن النطاق */ } { int d ; /* "a" و "b" و "d" ضمن النطاق */ } }

إضافات إلى لغة C

بالإضافة إلى تأثيرات الدلالات القياسية للغة C على توقيت البرنامج، فإن الكلمات الرئيسية التالية [ 1 ] محجوزة لوصف الجوانب العملية لبيئة FPGA أو لعناصر اللغة المستمدة من Occam:

الأنواع والكائناتتعابير الوجهالبيانات
شان< ... > (موضح النوع)! (إرسال إلى القناة)
شانين[  : ] (تحديد نطاق البتات)؟ (مقروء من القناة)
شانوت\\ (يسقط)تأخير
تعبير الماكرو<- (خذ)إذا حدد
خارجي@ (عامل الربط)ضبط العرض الداخلي
التقسيم الخارجييختارلنفترض ...  ؛ في
مضمنعرضبار
واجهة المستخدمبريالت
داخليإطلاق سيما
التقسيم الداخليضبط الساعة
mpramمجموعة عائلية
معالجة الماكروجزء المجموعة
كبشإعادة ضبط
ذاكرة للقراءة فقطتسلسل
سيماحاول { ... } إعادة التعيين
تمت المشاركةتريسيما
إشارةمع
نوع
غير محدد
النساء

الجدولة

في لغة هاندل-سي، تستغرق عملية الإسناد وأمر التأخير دورة واحدة. أما باقي العمليات فهي "مجانية". [ 1 ] يتيح هذا للمبرمجين جدولة المهام يدويًا وإنشاء مسارات معالجة فعّالة . ومن خلال ترتيب الحلقات بالتوازي مع التأخيرات المناسبة، يمكن لمسارات المعالجة زيادة إنتاجية البيانات بشكل كبير، على حساب زيادة استخدام موارد الأجهزة.

تاريخ

تعود الجذور التاريخية للغة Handel-C إلى سلسلة من لغات وصف الأجهزة التي طورتها مجموعة تجميع الأجهزة في مختبر الحوسبة بجامعة أكسفورد . تطورت لغة Handel HDL إلى Handel-C في أوائل عام 1996 تقريبًا . ثم انفصلت التقنية التي طُورت في أكسفورد لتصبح منتجًا أساسيًا لشركة Embedded Solutions Limited (ESL) في عام 1996. وفي سبتمبر 2000، أُعيد تسمية ESL إلى Celoxica.

تم اعتماد لغة Handel-C من قبل العديد من مجموعات أبحاث الأجهزة الجامعية بعد إصدارها من قبل ESL، ونتيجة لذلك تمكنت من ترسيخ نفسها كأداة تصميم أجهزة مفضلة داخل المجتمع الأكاديمي، وخاصة في المملكة المتحدة.

في أوائل عام 2008، استحوذت شركة Agility على قسم اللغة الإنجليزية كلغة ثانية التابع لشركة Celoxica، والتي قامت بتطوير وبيع أدوات اللغة الإنجليزية كلغة ثانية التي تدعم لغة Handel-C، من بين منتجات أخرى.

في أوائل عام 2009، توقفت شركة Agility عن العمل بعد فشلها في الحصول على المزيد من الاستثمارات الرأسمالية أو الائتمان [ 2 ].

في يناير 2009، استحوذت شركة Mentor Graphics على أصول توليف لغة C الخاصة بشركة Agility. [ 3 ]

ومن بين لغات وصف الأجهزة الأخرى من المجموعة الفرعية C التي تم تطويرها في نفس الوقت تقريبًا، نجد Transmogrifier C في عام 1994 في جامعة تورنتو (وهو الآن مشروع FpgaC مفتوح المصدر) وStreams-C في مختبر لوس ألاموس الوطني (مرخص الآن لشركة Impulse Accelerated Technologies تحت اسم Impulse C ).

انظر أيضاً

مراجع

  1. 1 2 3 4 5 "نسخة مؤرشفة" (PDF) . مؤرشفة من النسخة الأصلية (PDF) بتاريخ 31-03-2010 . تم الاطلاع عليها بتاريخ 31-03-2010 .{{cite web}}: CS1 maint: archived copy as title ( link ) Handel-C language reference Manual
  2. غابي موريتي (19 يناير 2009). "شركة أجيليتي دي إس ضحية للأزمة الائتمانية" . EETimes.com.
  3. ديلان ماكغراث (22 يناير 2009). "شركة مينتور تستحوذ على أصول توليف لغة C من شركة أجيليتي" . EETimes.com.
  • موارد لغة هاندل-سي في شركة مينتور جرافيكس
  • أكسفورد هاندل-سي
  • أحمد أبلاك؛ عصام داماج؛ الجامعة الأمريكية في الكويت (2016). "HTCC: مُترجم هاسكل إلى هاندل-سي للأجهزة". مؤتمر يوروميكرو 2016 لتصميم الأنظمة الرقمية (DSD) . الصفحات 192-199 . arXiv : 1907.07764 . doi : 10.1109/DSD.2016.24 . ISBN  978-1-5090-2817-7. S2CID 13213191 .