تفاوت FPGA با پردازندهها
اولین برتری FPGAها نسبت به پردازندهها سرعت بسیار بیشتر آنها در انجام روتینهای مختلف پردازشی و کنترلی است. به طور معمول، یک الگوریتم مشخص را میتوان با سرعتی بسیار فراتر از یک پردازنده در FPGA پیادهسازی کرد. دو دلیل اصلی برای قابلیت انجام عملیات منطقی و ریاضی با سرعت زیاد در FPGAها وجود دارد.
شاید برای شما مفید باشد: آموزش FPGA
اول، FPGAها میتوانند تعداد نامحدودی از عملیات مختلف را به صورت موازی و مستقل از یکدیگر انجام دهند. در صورتی که انجام الگوریتمهای مختلف یا حتی بخشهای مختلف یک الگوریتم مشخص به نتیجه بخشهای دیگر الگوریتم بستگی نداشته باشد، میتوان آنها را به صورت موازی انجام داد. این موضوع در پردازندهها قابل انجام نیست.
در پردازندهها یک هسته پردازشی (CPU) با دستورات مشخص وجود دارد و در هر لحظه تنها یک دستور قابل اجرا است. بنابراین برای اجرای یک الگوریتم باید آن را به کمک دستورات از پیش تعیین شده پردازنده بازتعریف نمود و پردازنده یک به یک آنها را اجرا میکند.
شکل زیر این موضوع را به طور مفهومی نشان میدهد. در این شکل قرار است دستور C1 برای دیتای D1 و دستور C2 برای دیتای D2 اجرا شود. در پردازنده در هر لحظه یکی از این دستورات روی دیتای مورد نظر اجرا میشود. اما در FPGA میتوان مدار را به صورت موازی به گونهای طراحی کرد که هر دو دستور به طور همزمان روی دیتای مورد نظر اجرا شوند.
دلیل دوم که باعث افزایش سرعت پردازش در FPGAها میشود، امکان طراحی اختصاصی برای هر الگوریتم خاص است. همانطور که پیشتر گفته شد، برنامهنویس یک پردازنده مجبور است هر الگوریتمی را فقط به کمک تعداد محدودی دستورات از پیش تعیین شده برای پردازنده مورد استفاده پیادهسازی کند. بنابراین انعطافی در بهینه کردن زمان اجرای الگوریتم ندارد، به جز اینکه تا حد امکان بخشهای مختلف الگوریتم را با تعداد دستورات کمتری بازتعریف کند. اما طراح دیجیتال با FPGA میتواند برای هر الگوریتم از ابتدا مداری طراحی کند که برای آن بهینه باشد. به عبارت دیگر میتوان گفت که طراح دیجیتال برای اجرای هر بخش از یک الگوریتم، یک CPU مخصوص و بهینه شده طراحی و پیاده سازی میکند.
اگر با FPGA آشنایی ندارید اول مقاله FPGA چیست؟ را مطالعه نمایید.
چند نقطه ضعف FPGAها
به عنوان یک نقطه ضعف FPGAها باید به این نکته توجه داشت که پیادهسازی اختصاصی الگوریتمهای پیچیده ریاضی به کمک FPGAها، ممکن است منابع بسیار زیادی از FPGA را اشغال کند و در عمل نتوان تمام بخشهای پردازشی یک سیستم را به کمک آن پیادهسازی کرد. بنابراین معمولاً، الگوریتمهایی که پیچیدگی کم و یا متوسط دارند ولی نیاز به سرعت اجرای زیاد دارند به کمک FPGAها پیادهسازی میشوند و الگوریتمهای پیچیدهتر به کمک پردازندههای DSP که برای انجام الگوریتمهای پردازشی سیگنال دیجیتال اختصاصی شدهاند پیادهسازی میشوند.