پروژهی دورهی کارشناسی
در رشتهی مهندسی کامپیوتر گرایش سختافزار
. مقدمه
دو روش در محاسبات سنتی برای اجرای یک الگوریتم وجود دارد. روش اول بکار بردن ASIC ها میباشد تا الگوریتم مورد نظر را در سختافزار پیادهسازی کند. چون این قطعات برای هر الگوریتم خاص ساخته میشوند، سریع و کارا میباشند. اما مدارات آنها پس از ساخت تغییر نمیکند. ریزپردازندهها راه حل بسیار با انعطافتری هستند. آنها مجموعهای از دستورات را اجرا میکنند. و کارایی سیستم بدون تغییر سختافزار تغییر میکند. ام همانند یک ASIC دارای قابلیت انعطاف نمیباشد. یک سیستم قابل پیکربندی مجدد توسعه یافتهاست تا فاصله را میان سختافزار و نرمافزار را کم کند. و به یک کارایی بسیار بالاتر از نرمافزار و قابلیت انعطاف بیشتر سختافزار برسد.
در این پایان نامه ابتدا تاریخچهای مختصر از توسعهی سیستمهای قابل پیکربندی مجدد ارائه شده است.سپس مفهوم قابلیت پیکربندی مجدد و انواع آن بیان شده است.پس از آن نگاهی کلی به دو طبقه بندی مختلف معماریهای این سیستمها شده است و همچنین مروری بر روشهای طراحی و ملزومات آن کردهایم. در فصل پنجم انواع تکنولوژیهای سخت افزار قابل پیکربندی مجدد بحث شده است. در فصل ششم روند طراحی سیستم قابل پیکربندی مجدد بر روی تراشه ( SoC ) آورده شده است. و نهایتا در فصل هفت ویژگیهای طراحی سیستم با یک زبان برنامه نویسی بر مبنای C به نام SystemC بیان شده است.
2. تاریخچه محاسبات قابل پیکر بندی مجدد
مفهوم محاسبات قابل پیکربندی مجدد از دهه 1960 پدیدار شد . موقعی که مقاله جرالد استرین(Gerald Estrin) مفهوم یک کامپیوتر ساخته شده از یک پردازنده ی استاندارد و آرایه ای از سخت افزار قابل پیکربندی مجدد را پیشنهاد کرد . پردازنده اصلی باید رفتار سخت افزار قابل پیکربندی مجدد را کنترل کند . در نتیجه این سخت افزار قابل پیکربندی مجدد برای انجام کاری خاص مناسب خواهد بود برای مثال می توان کارهایی نظیر پردازش تصویر و تطبیق الگو را با سرعت بالایی انجام داد . به محض اتمام کار ، سخت افزار می تواند برای انجام کار جدید پیکربندی مجدد شود. چنین خاصیتی با ترکیب انعطاف پذیری یک نرم افزار و سرعت یک سخت افزار در یک ساختار کامپیوتری ترکیبی میسر شده است . متاسفانه چنین ایده ای در زمان پیدایش بسیار جلوتر از تکنولوژی ساخت سخت افزار مورد نیازش بود.
در دهه ی اخیر یک رنسانس در عرصه ی تحقیقات درباره ی معماری های قابل پیکربندی مجدد بوجود آمد . این معماری ها هم در دانشگاهها و هم در صنعت توسعه می یافتند معماری هایی نظیر : Matrix , Gorp , Elixent , XPP , Silicon Hive , Montium , Pleiades , Morphosys , PiCOGA چنین طرحهایی عملی بودند . و این مرهون پیشرفت مداوم فناوری سیلیکونی بود که پیاده سازی طرح های پیچیده را روی یک تراشه میسر میساخت .
اولین مدل تجاری کامپیوتر قابل پیکربندی مجدد در جهان به نام Algotronix CHS 2*4 در سال 1991 تکمیل شد این یک موفقیت تجاری نبود اما آنقدر امیدبخش بود که شرکت Xilinx (مخترع FPGA) تکنولوژی را خرید و محققان Algotronix را به خدمت گرفت .
هم اکنون تعدادی فروشنده ی کامپیوتر های قابل پیکربندی مجدد وجود دارند که بازار کامپیوترهای با کارایی بالا را مورد توجه قرار داده اند . این شرکت ها شامل SRC Computers , SGL , Cray می شوند . شرکت ابر رایانه ای Cray (که به SRC ارتباطی پیدا نمی کند ) Octigabay و بستر محاسبات قابل پیکربندی مجدد آنرا به دست آورد که Cray آنرا به عنوان XD1 تا کنون به فروش رسانده است . SGI رایانه ی RASC را همراه با سری ابر رایانه های Altix به فروش می رساند . شرکت SRC Computers یک خانواده از رایانه های قابل پیکربندی مجدد را توسعه داده است . این خانواده بر اساس معماری ضمنی + صریح خود شرکت و پردازنده MAP می باشد .
تمام آنچه که گفته شد رایانه های هیبرید Estrin هستندکه این رایانه ها با ریزپردازنده های سنتی که FPGA ها همراه شده اند ساخته می شوند . FPGA ها توسط کاربر برنامه ریزی می شوند این سیستم ها می توانند به عنوان رایانه های دسته ای سنتی بدون استفاده از FPGA ها به کاربرده شوند ( در حقیقت FPGA ها گزینه ای در XD1 و SGIRASC هستند ) پیکربندی XD1 و SGIFPGA از طریق زبانهای توصیف سخت افزار (HDL ) سنتی تکمیل شده است . و یا با به کارگیری زبانهای سطح بالایی نظیر ابزار گرافیکی Star bridge viva یا زبانهایی مانند C مثل Handel-C از Celoxica و Lmpulse-C از Impulse Accelerated technologies یا Mitrpn-C از Mitrionics کامل شده اند . به قول راهنمای برنامه نویسی XD1 «توسعه ی فایل منطقی یک FPGA خام یک فرآیند پیچیده است که نیازمند دانش و ابزار تخصصی است ».
SRC کامپایلری را توسعه داده است که زبان سطح بالایی مثل C یا Fortran را گرفته و با اندکی تغییرات آنها را برای اجرا روی FPGA در ریزپردازنده کامپایل می کند . به نقل از مستندات SRC « ... الگوریتم های کاربردی با زبانهای سطح بالا همانند C و Fortran نوشته می شوند . Carte (همان کامپایلر) حداکثر موازی سازی را از کد استخراج می کند و منطق سخت افزار خط لوله ای را تولید می کند که در MAP مقدار دهی شده اند . همچنین این کامپایلر تمام کدهای واسطی که برای مدیریت انتقال داده به داخل و خارج MAP نیاز است را تولید می کند . این کدهای واسط وظیفه ی هماهنگ سازی ریزپردازنده ی با منطق در حال اجرا در MAP را دارند » ( توجه شود که SRC همچنین اجازه استفاده از یک HDL سنتی را داده است ).
XD1 بین ریزپردازنده و FPGA بوسیله ی شبکه ی اتصال داخلی Rapid Array اش ارتباط برقرار میکند . سیستم های SRC از طریق واسط حافظه SNAP و یا سویچ اختیاری Hi-Bear ارتباط برقرار می کند . واضح است که دسته بندی معماری های قابل پیکربندی مجدد هنوز توسعه می یابند و این بدلیل عرضه شدن معماری های جدید است . هیچ طبقه بندی واحدی تا کنون پیشنهاد نشده است . به هر حال چندین پارامتر دوری میتوانند برای دسته بندی چنین سیستم هایی استفاده شوند .
هنگامی که مفاهیم پایه ی محاسبات قابل پیکربندی مجدد در دهه ی 1960 شکل گرفت . RC در شکل جدی و عملی خود با پدیدار شدن FPGA ها در اواخردههی 1980 آغاز شد . FPGA ها IC هایی بودندکه شکل سختافزاری آنها می توانست از نو به راحتی تعریف شود . یعنی با بارگذاری یک پیکربندی جدید درست همانند نرمافزار جدیدی که می تواند بر روی یک ریزپردازنده یا DSP بارگذاری شود نگاشت داده و سپس پردازش آن و الگوریتم های فشرده ی FPGA ها می توانست IC های متمایز شده به وسیله کاربرد ( Application Specific (ASIC) IC ) را حاصل سازد . محققان در ایالات متحده و فرانسه به دنبال پایه های اولیه ی با بازدهی بالا و انعطاف پذیری مطلوب ابر رایانه ای را در سر می پروراندند که متشکل بود از اجزا سخت افزاری قابل برنامه ریزی مجدد که برای هر کاربرد می توانست بهینه شود . که در نتیجه یک تا دو برابر کارایی را در پردازنده هایی با طول دستور ثابت و قراردادی افزایش می داد . اولین رایانه های قابل پیکربندی مجدد بوسیله IDA Supercomputing Research Center ( SRC که در سال 1994 به Center for Computing Sciences تغییر نام داد ) در آمریکا ساخته شد . در فرانسه به وسیله DEC Paris Research Lab که پس از فروش Digital Equipment Co بسته شد ساخته شد .
دو نسخه آرایه انقباضی Spalsh در SRC ساخته شدند . مدار اصلی Spalsh در سال 1989 با قیمت تقریبی 13000 دلار ساخته شد که می توانست از ابر رایانه ی موجود در آن زمان به نام Cray 2 برای کاربردهای تطبیق الگوی بیتی پیشی گیرد .این سیستم حاوی 32عدد FPGA از سری 3090 شرکت Xilinx بود که بصورت یک ارایه ی خطی متصل شده بودند . FPGA ها ی مجاور از یک بافر حافظه ای اشتراکی بهره مند بودند .
RC در ایستگاه کاری SUN از طریق ارتباط داخلی VME معرفی شد . Splash 1 می توانست مقایسه ی یک رشته ی DNA را 45 برابر سرعت یک ایستگاه کاری با کارایی بالا را در دهه ی 1990 انجام دهد . سه سال بعد Splash 2 ساخته شد که تعداد FPGA های خود را به 16 کاهش داده بود . با این وجود به خاطر رشد سریع تراکم در FPGA ، Splash 2 با شانزده عدد FPGA مدل 4010 از شرکت Xilinx حاوی 5/1 برابر منطق بیشتر از Splash 1 بود . برای بهبود انعطاف ارتباطات داخلی Splash 2 ارتباط داخلی خطی را به وسیله یک میله عرضی تقویت کرد که اجازه می داد که هر FPGA با هر FPGA دیگر ارتباط برقرار کند .
در سالهای بین 1987 تا 1990 رایانه ی قابل پیکربندی مجدد Splash توسط مرکز تحقیقات ابر رایانه ای SRC توسعه یافت . از خصوصیات این طراحیمی توان به این نکات اشاره کرد :
این رایانه در LDG یا در طرح شماتیک برنامه نویسی شده بود . سخت افزار فوق العاده و تسریع قابل توجهی داشت. اما با وجود تمام این مزایا برنامه نویسی اش مشکل بود در نتیجه تعداد برنامه های کاربردی آن محدود بود . همین شرکت یعنی SRC در سالهای 1992 تا 1994 مشغول توسعه و تکمیل Splashبود و سرانجام موفق شد تا Splash 2 را طراحی کند . زبان شبیه سازی این رایانه VHDL بود همانند مدل پیشین دارای سخت افزار بسیار خوبی بود . برنامه ریزی اش غیر استاندارد بود اما دارای قابلیت برنامه نویسی خوبی بود . از 1986 تا 1995 حافظههای فعال قابل برنامه ریزی (PAMETTe , PAM) توسط شرکت فرانسوی DEC Paris معرفی شدند . برنامه نویسی این نوع حافظه ها در زبان C++ بود اما همان عیب Splash از SRC را داشتند یعنی سخت افزار خوبی داشتند اما برنامه های کاربردی پشتیبانی شده توسط آنان محدود بود .
Abstract
Reconfigurable computing is becoming an important part of research in computer architectures and software systems. By placing the computationally intense portions of an application onto the reconfigurable hardware, the overall application can be greatly accelerated. This is because reconfigurable computing combines the benefits of both software and ASIC implementations. Like software, the mapped circuit is flexible, and can be changed over the lifetime of the system or even the execution time of an application. Similar to an ASIC, reconfigurable systems provide a method to map circuits into hardware, achieving far greater performance than software as a result of bypassing the fetch-decode-execute cycle of traditional microprocessors, and parallel execution of multiple operations.
Reconfigurable hardware systems come in many forms, from a configurable functional unit integrated directly into a CPU, to a reconfigurable co-processor coupled with a host microprocessor, to a multi-FPGA stand-alone unit. The level of coupling, granularity of computation structures, and form of routing resources are all key points in the design of reconfigurable systems.