إلى فترة قريبة كانت معظم البرمجيات (software) متخصصة العمل لتجهيزات مادية (hardware) محددة ولم يكن من المتاح تعديلُها، ولكن مع تطوّر التّكنولوجيا وجدت الشّركات المُصنّعة طُرُقاً لتحديث البرمجيّات بإضافة مَزِيّات في الأجهزة المادية.

الأن تخيّل مُستقبلاً أصبح فيه تحديث الأجهزة (المكوّنات المادية) ممكناً أيضاً؛ أليسَ ذلك مُدهشا”!

تندرج الأجهزة القابلة للبرمجة الّتي من الممكن تعديلُ إعدادات النّظام الفرعي الخاصّة بها بعد تصنيعها ضمنَ فئة الأنظمة القابلة لإعادة التشكيل والإعداد (Reconfigurable System)، إذ تُعدُّ الـ FPGA هي الدّارة المتكاملة الأكثر انتشاراً الدّاعمة للحوسبة القابلة لإعادة التشكيل والإعداد وهي اختصار لمصطلح Field Programmable Gate Array أيْ: مصفوفة البوّابات المنطقيّة القابلة للبرمجة.

هذه المصفوفات تسمح لك ببرمجة خصائص المُنتجات والتكيّف مع المعايير الجديدة وإعادة تركيب وإعداد الجزء المادي ليناسب تطبيقًا ما حتى بعد ادراج المُنتَج في طور العمل، ومن هنا جاء مصطلحُ القابل للبرمجة في طور العمل Field-Programmable ، في حين يشير مصطلح مصفوفات البوّابة gate-arrays إلى مصفوفة ثنائيّة الأبعاد مكوّنة من بوّابات منطقيَّة موجودة ضمنَ معماريتها.

تُعدُّ جميعُ الحواسيب الشّخصية الحديثة وفيها الحواسيب المكتبيّة والمحمولة والهواتف الذّكية والأجهزة اللّوحيّة هم أمثلة عن الحواسيب ذوات الأغراض العامّة، حيثُ تتبع الحوسبة ذات الأغراض العامّة معمارية Von Neumann؛ حيث  إّنه لا يمكن لعمليّتي جلب التعليمة وتشغيل البيانات أن يحدثا في نفس الوقت، ومن ثم، ونظراً لكونها آلات تسلسليّة فإنّ أداءَها محدود أيضاً، ومن جهة أُخرى لدينا الدّارات المتكاملة الخاصّة بالتّطبيقات Application Specific Integrated Circuits (ASICs) الّتي صُمّمت لمهامَّ خاصّة ومحدّدة مثل مسجّل الصّوت الرّقمي أو أجهزة التنقيب عن عملة البيت كوين (Bitcoin miner) (أجهزة ذات قدرات عالية تقوم بعمليات حسابية معقدة لتأكيد صحة الصفقات في ما يعرف بتقنية سلسلة الكتل أو block chain ويحصل المستخدمون لهذه الأجهزة على عملة رقمية مكافئةً لهم) عالي الكفاية، حيثُ تستخدم ASIC لتنفيذ تطبيق واحد فقط يقدم أقصى أداء ومع ذلك فلا يمكن استخدامه إلّا للمهامَّ الّتي صُمّمَ من أجلها.

 

مخطط بياني (حقوق الصورة: موقع realpars )
مخطط بياني (حقوق الصورة: موقع realpars )

 

إذاً، ماذا عن تكامل ميزات أداء دارات ASICs مع مرونة معالجات الأغراض العامّة؟

 

تعمل مصفوفة البوّابات FPGAs حلّاً وسطيّاً بين نماذج هذين التّصميمين، كما تُعدُ أقل كفاءة في استخدام الطّاقة مقارنةً بـ ASICs وتُعدُّ أيضاً غيرَ مُناسبة لعمليات الإنتاج بكميات كبيرة ومع ذلك فهي قابلة للبرمجة مع تكاليف هندسيّة منخفضة NRE (NRE تعبّر عن التّكاليف المدفوعة مرةً واحدة لتحسينِ مُنتج جديد وتصميمه وتطويره واختباره) مُقارنةً مع نموذج ASIC.

كما نرى لكل من تصميمي ASICs وFPGAs اقيمة مضافة مختلفة لذا يُفضل معظم مُصنّعي الأجهزة تصميم FPGAs للنماذج الأولية وتصميم ASICs للإنتاج بكميات كبيرة.

مخطط تحليلي لتكاليف الـ FPGA وASIC (حقوق الصورة: موقع realpars )
مخطط تحليلي لتكاليف الـ FPGA وASIC (حقوق الصورة: موقع realpars )

اُستخدِمت مصفوفات FPGAs في السّابق للتّصاميم ذات السرعة المنخفضة والتعقيد الأقلّ، ولكن في هذه الأيام يمكنها بسهولة أن تعمل بأداء يتجاوز 500 ميغاهرتز.

 

البنية الدّاخلية لمصفوفة البوّابات المنطقيّة القابلة للبرمجة FPGA:

صمّمَت شركة XILINX المخصوصة بتصنيع أنصاف النّواقل في عام 1985 أوّلَ مصفوفة بوابات منطقية قابلة للبرمجة وقابلة للتّطبيق تجاريّاً وهي مصفوفة XC2064. كما واصلت شركة Altera التي استحوذت عليها شركة Intel عامَ 2015 تطوير هذا المنتج إلى جانب شركة XILINX.

نشأت FPGA من تقنيات بسيطة نسبيّاً مثل ذاكرة القراءة فقط القابلة للبرمجة PROM والأجهزة المنطقيّة القابلة للبرمجة PLDs مثل PAL أوPLA أوPLD أوPLD المعقد (CPLD).

تحتوي هذه على ثلاثة أجزاء رئيسة:

  • الوحدات المنطقية القابلة لإعادة التشكيل – التي تنفذ الوظائف المنطقية.
  • الوصلات القابلة للبرمجة – التي تنفّذ التّوجيه.
  • وحدات الإدخال/الإخراج القابلة للبرمجة – التي تتصل بالمكوّنات الخارجيّة.
البنية الأساسيّة لـ FPGA (حقوق الصورة: موقع realpars )
البنية الأساسيّة لـ FPGA (حقوق الصورة: موقع realpars )

تنفذ الوحدات المنطقية الوظائف المنطقية التي يتطلبها التّصميم وتتألف من مكونات متعددة كأزواج الترانزستورات وجداول البحث LUTs والقلابات flipflop والنّواخب multiplexers، وأيضاً يمكنك التفكير بالوحدات المنطقية على أنها وحدات منفصلة مثل مكعبات الليغو Lego التي يمكنها أن تعمل عملاً مستقلاً، علماً أنّ الوحدات المنطقيّة هي قابلة لإعادة التشكيل والإعداد وذلك على عكس مكعبات الليغو؛ أيْ يمكن التحكم بحالتها الداخلية ويمكنك ربطها ببعضها ببرمجة الوصلات البينية لتحقيق شيء قيّم وهادف.

يُستخدم الترتيب الهرمي للوصلات البينية القابل للبرمجة لتخصيص الموارد بين الوحدات المنطقية القابلة لإعادة التشكيل والإعداد CLBs؛ حيث تحتوي مسارات التوجيه على مقاطع سلكيّة بأطوال متفاوتة يمكن توصيلها بتقنيات  anti-fuse  أو تقنيات معتمدة على الذّاكرة، ذلك أنه ترتبط كل وحدة CLB بمصفوفة مفتايح switch matrix لتسمح لها بالوصول إلى بنية التوجيه العامة (switch matrix أو مصفوفة المفتاح وهي نظامٌ من المكوّنات الإلكترونية المنفصلة المدمجة لتوجيه إشارات التردد اللاسلكي بين مداخل ومخارج متعددة)، حيث توفر هذه المصفوفة نواخب قابلة للبرمجة تُستخدَم لاختيار الإشارات في قناة التوجيه المُعطاة والمحددة وثم توصيل الخطوط الأفقية والعموديّة.

أخيراً، تُستخدَم وحدات الإدخال/الإخراج لربط وحدات CLB وبنية التوجيه بالمكونات الخارجية.

في التصاميم السّابقة لمصفوفة البوابات لم يكن هناك أي معالجات لتشغيل البرامج، ومن ثم فإن تنفيذ أي تطبيق كان يعني تصميم الدارة من البداية، لذلك كان بمقدورنا إما إنشاء FPGA بسيطاً مثل بوابة OR وإمّا إنشاء مصفوفة معقدة مثل المعالج متعدد النواة، ولكننا منذ تصميم XC2064 قطعنا شوطاً طويلاً كما تطورت بنية FPGA لأساسيّة من خلال إضافة كثير من الوحدات الوظيفيّة القابلة للبرمجة المتخصصة مثل ALUs وblock RAM والنواخب وDSP-48 والمعالجات الصغرية.

 

المخطط التدفقي لـ FPGA:

يوضح المخطط التدفقي سلسلةً من عناصر معالجة البيانات (Pipline مخطط أنبوبي يُقصَد به استخدام زمرة من عناصر المعالجة ووصلها بسلسلة متتالية لها مخرج واحد) لتنفيذ وبرمجة أي منطق مُعطى على المنصة الفيزيائية، اخترت إطلاق اسم دورة حياة تطوير FPGA أو FDLC على هذا التّصميم، وذلك بسبب تشابهه مع دورة حياة تطوير النظام SDLC (System development life cycle)،

يشمل المخطط التدفقي لبنية FPGA التصميم ونكوين المنطق وتنفيذ التصميم وبرمجة الجهاز والتحقق من التصميم ومع ذلك تختلفُ الخطوات الدقيقة باختلاف شركات التصنيع.

المخطط التدفقي لـ FPGA (حقوق الصورة: موقع realpars )
المخطط التدفقي لـ FPGA (حقوق الصورة: موقع realpars )

التصميم:

يمكن وصف المنطق إما باستخدام محرّر schematic وإمّا محرّر (FSM (Finite state machine وإما باستخدام لغة وصف المكونات الماديّة HDL، وذلك من خلال اختيار المكونات من مكتبة معينة وتأمين تخطيط واضح لوظائف التصميم من أجل وحدات الحوسبة المُختارة وعندما يصعب إدارة التصاميم التي تحتوي على عدد كبير من الوظائف بيانيّاً ننتقل لاستخدام لغة HDL لتحديد التصميم إما بطريقة هيكلية وإمّا سلوكيّة، وذلك إلى جانب لغتي VHDL وVerilog وهما أكثر تطبيقاً وشهرة من لغة HDLs بالإضافة إلى توفّر كثير من اللغات المشابهة للغة C مثل Handel-C وImpulse C وSystem C.

 

تكوين المنطق:

تترجم هذه العملية كود VHDL المذكور أعلاه على هيئة تصميم إلكتروني لجهاز من أجل وصف الدارة وصفاً كاملاً مع العناصر المنطقيّة، ويتضمن التركيب أيضاً التحقق من بناء الكود وتحليل الترتيب الهرمي لبنية التصميم، بعد ذلك يُكتَب ويُعالَج الكود مع تصحيحه ويُحفَظ التصميم الإلكتروني المُنتَج كملف بصيغة (ngc).

 

تنفيذ التّصميم:

تتضمن عملية تنفيذ التّصميم الخطوات التالية:

الترجمة (النقل): تربط هذه العملية جميع مداخل التصاميم الإلكترونية بملف تصميم المنطق والذي يكون محفوظاً بصيغة ملف .ngd))، هنا يُحدّد ملف قيود المستخدم(user constraints file) المنافذَ للعناصر الفيزيائية.

يوضح عملية الترجمة (حقوق الصورة: موقع realpars )
يوضح عملية الترجمة (حقوق الصورة: موقع realpars )

الربط Map: يتضمن ذلك ربطَ المنطق المُحدد كملف بصيغة (ngd) بمكونات FPGA وبعد ذلك إنشاء ملف بصيغة (ncd).

يوضح عملية الربط (حقوق الصورة: موقع realpars )
يوضح عملية الربط (حقوق الصورة: موقع realpars )

التوجيه والتموضع Place and Route: تحدد أماكن الوحدات الفرعية الناتجة عن العملية السابقة في وحدات المنطق على وَفق القيود وبعدها توصل تلك الوحدات.

يوضح عملية التوجيه (حقوق الصورة: موقع realpars )
يوضح عملية التوجيه (حقوق الصورة: موقع realpars)

 

برمجة الجهاز:

يجب تحميلُ التصميم الموجّه المُشار إليه أعلاه وتحويله إلى صيغة تَدعَمه FPGA، إذن، يُعطى الملف الموجَّه. (ncd) إلى برنامج BitGen الذي يُنشئ ملفَ bitstreams (سلسلة من البتات) الذي يضم جميع المعلومات البرمجيّة لمصفوفة البوابات FPGA.

التحقق من التصميم:

يُنفَّذ ذلك بالتزامن مع المخطط التدفقي للتأكد من أن المنطق يعمل عملاً مطلوباً، تُضمَّن أنواع المحاكاة التالية ضمنَ هذه العملية:

  • المحاكاة السلوكية (محاكاة RTL).
  • المحاكاة الوظيفية.
  • Static Timing Simulation

تُنفّذ هذه المحاكاة لمحاكاة سلوك المكوّنات بتأمين أنماط اختبار لمداخل التصميم ومراقبة المخارج.

مستقبل FPGA:

تقود اتجاهات الصناعة مصفوفات FPGA لأن تكون جزءاً كبيراً في نموذج الحوسبة غير المتجانسة، وتشير هنا الحوسبة غيرُ متجانسة إلى الأنظمة الّتي تستخدِم غيرَ نوعٍ واحد من المعالجات لتقديم قدرات معالجة متخصصة مع العلم أنه بالإمكان برمجةُ جميع هذه المعالجات وفيها FPGA عبر منصة Open CL وهي منصّة تطوير متوافقة مع معايير الصناعة، ومن الجدير ذكرُه أنّ مصفوفة FPGA تؤمن قوة حوسبة بفاعليّة قوية وتكلِفة قليلة مما يجعلها مناسبة لإنشاء النماذج الأوليّة السّريعة، وتوجد حالاتٌ تتفوق فيها FPGA على وحدة المعالجة الرسوميّة GPU وذلك عند اختبار الشبكات العصبونية قد تكون  وحدة المعالجة GPU تكون جيِّدة للتدريب ولكن عندما يتعلق الأمر بتطبيقات الزمن الحقيقي تكون FPGA هي الأنسب والأكثر قابليةً للتكيّف.

تضع Microsoft في الحقيقة Intel stratix FPGA ضمنَ خدمات Microsoft Azure السحابية لتسريع الذكاء الصنعي.

ملاحظة: تقدم FPGA تنوعاً معيناً يروق لمجموعة كبيرة من المستخدمين، فمن السيارات إلى التشفير ومن تطوير الرقاقات إلى نماذج الذكاء الصنعي مما يجعل المستقبل يبدو أكثر إشراقاً.

 


المصدر: هنا
ترجمة: سارة خضر, مراجعة: علي العلي, تدقيق لغوي: محمد بابكر, تصميم: علي العلي, تحرير: كرم ديوب