شتاب‌دهنده سخت‌افزاری

در رایانش، شتاب دهنده سخت‌افزاری برای استفاده از سخت‌افزار رایانه‌ای است که به‌طور خاص ساخته شده‌است تا برخی از توابع را کارآمد تر از آنچه در نرم‌افزار در حال اجرا بر روی یک  عمومی انجام دهد. هر گونه تغییر داده یا روال که می‌تواند محاسبه شود، می‌تواند صرفاً در نرم‌افزار در حال اجرا بر روی یک پردازندهٔ عمومی، صرفاً در سخت‌افزار سفارشی یا در برخی ترکیب هر دو، محاسبه شود. عملیات را می‌توان سریع تر در سخت‌افزار خاص برنامه‌ریزی شده یا برنامه‌ریزی شده برای محاسبه عملیات نسبت به نرم‌افزار مشخص شده و بر روی یک پردازنده رایانه ای عمومی انجام شده‌است. هر رویکرد دارای مزایا و معایب است. پیاده‌سازی وظایف محاسباتی در سخت افزار برای کاهش تاخیر و افزایش کارایی به عنوان شتاب سخت افزاری شناخته می‌شود.

مزایای نرم‌افزاری نرم‌افزار عبارتند از: توسعه سریعتر (به سرعت سریعتر به بازار)، هزینه‌های مهندسی هزینه‌های غیر تکراری، انتقال قابلیت افزایش، و سهولت به روز رسانی ویژگیها یا تکه کردن اشکالات، به هزینه سربار برای محاسبه عملیات عمومی. مزایای سخت افزاری عبارتند از: سرعت بالا، کاهش مصرف برق، تأخیر کمتر، افزایش موازی بودن "FPGA Architectures from 'A' to 'Z'" by Clive Maxfield 2006 و پهنای باند و استفاده بهتر از قطعات و اجزای عملکردی موجود در یک مدار مجتمع؛ در هزینه توانایی کمتر برای به روز رسانی طرح‌ها، پس از آن بر روی سیلیکون پراکنده شده و هزینه‌های بالای تأیید عملیاتی و زمان به بازار افزایش می‌یابد. در سلسله مراتب سیستم‌های محاسباتی دیجیتال اعم از پردازنده همه منظوره به‌طور کامل سفارشی سخت افزار، یک معاوضه بین انعطاف‌پذیری و بهره‌وری وجود دارد، با راندمان افزایش سفارشات از قدر زمانی که هر برنامه با توجه به بالاتر که سلسله مراتب اجرا شده‌است. این سلسله مراتب شامل پردازنده‌های عمومی مانند پردازنده‌ها، پردازنده‌های متفاوتی مانند پردازنده‌های گرافیکی، عملکرد ثابت ساخته شده در آرایه‌های دروازه قابل برنامه‌ریزی فازی (FPGAها) و عملکرد ثابت بر روی مدار یکپارچه برنامه کاربردی (ASICs) است.

شتاب دهنده سخت افزاری برای عملکرد بهتر است و زمانی که عملکردها ثابت می‌شوند، بنابراین به روز رسانی‌ها در مورد راه حل‌های نرم‌افزاری مورد نیاز نیست. با ظهور دستگاه‌های منطقی قابل برنامه‌ریزی مانند FPGAها، محدودیت شتاب سخت افزاری به الگوریتم‌های کاملاً ثابت از سال ۲۰۱۰ کاهش یافته‌است، به این ترتیب شتاب سخت افزاری برای حوزه‌های مشکوک که نیاز به اصلاح الگوریتم‌ها و پردازش جریان کنترل را دارند، کاهش می‌یابد. " بررسی شتاب دهنده‌های مبتنی بر FPGA برای شبکه‌های عصبی تحریک پذیر "، S. Mittal, NCAA، 2018 

 بررسی اجمالی 
مدارهای مجتمع را می‌توان برای انجام عملیات دلخواه در سیگنال‌های آنالوگ و دیجیتال ایجاد کرد. اغلب در محاسبات، سیگنال‌های دیجیتال هستند و می‌توانند به عنوان داده‌های دودویی تفسیر شوند. سخت افزار و نرم‌افزار کامپیوتر بر روی اطلاعات در نمایش دودویی برای انجام محاسبات عمل می کنند؛ این کار با محاسبه توابع بولی در بیت ورودی انجام می‌شود و خروجی را به دستگاه‌های خروجی پایین دست برای ذخیره‌سازی یا پردازش بیشتر منتقل می‌کند.

 محاسبات ارزیابی از سخت افزار و نرم‌افزار 
نرم‌افزار یا سخت افزار می‌تواند تابع‌های محاسبه‌کننده را محاسبه کنند. سخت افزارهای سفارشی عملکرد بالاتری را در هر وات برای همان توابعی که در نرم‌افزار مشخص شده ارائه می‌دهند.

زبان توصیف سخت‌افزار (HDLs) مانند Verilog و VHDL می‌تواند مدلی که به صورت نرم‌افزار یا سنتز طراحی به صورت netlist است را برنامه‌ریزی کند و به وسیلهٔ یک FPGA یا گیت‌های منطقی تشکیل شده از یک مدارهای مجتمع با کاربرد خاص توصیف کند.

 برنامه ذخیره شده کامپیوتر 
اکثر محاسبات مبتنی بر نرم‌افزار در ماشین‌هایی که از معماری فون نویمان استفاده می‌کنند، به‌طور کلی به عنوان کامپیوترهای ذخیره شده شناخته می‌شوند. برنامه‌های کامپیوتری به عنوان داده‌ها ذخیره می‌شوند و توسط پردازنده‌ها اجرا می‌شوند، معمولاً یک یا چند هسته CPU. چنین پردازنده باید واکشی و رمزگشایی دستورالعمل و همچنین عملوند داده از حافظه به عنوان بخشی از چرخه دستورالعمل به اجرای دستورالعمل‌های تشکیل دهنده برنامه نرم‌افزار. تکیه بر یک حافظه رایج برای کد و داده‌ها، منجر به تنگنای فون نویمان می‌شود، محدودیت اساسی بر روی توانایی نرم‌افزار در پردازنده‌های معماری فون نویمان. حتی در معماری هاروارد اصلاح شده، که در آن دستورالعمل‌ها و داده‌ها را جداگانه انبارهای در سلسله مراتب حافظه است، وجود دارد سربار به آموزش رمزگشایی شناسنده‌های و تسهیم دسترس واحدهای اجرایی در ریزپردازنده یا میکروکنترلر، که منجر به استفاده از مدار پایین. تکنولوژی Hyper-Threading اینتل با استفاده از استفاده کمتر از واحدهای عملکردی پردازنده موجود و هماهنگی سطح آموزش در میان موضوعات سختافزاری، چندینپرداز همزمان را فراهم می‌کند.

 سخت افزار واحدهای اجرایی 
سخت افزار واحدهای اجرایی نیست و به‌طور کلی تکیه می‌کنند فون نویمان یا تغییر دانشگاه هاروارد معماری و لازم نیست برای انجام این آموزش واکشی و رمزگشایی مراحل یک چرخه آموزش و متحمل کسانی که مراحل' سربار. در صورت نیاز محاسبات مشخص شده در ثبت نام انتقال سطح طراحی سخت افزار و مدار منطقه هزینه خواهد بود که متحمل شده توسط آموزش واکشی و رمزگشایی مراحل را می‌توان اصلاح قرار داده و به دیگر استفاده می‌کند.

این احیا موجب صرفه جویی در زمان، انرژی و مدار در محاسبات می‌شود. منابع بازیافت شده را می‌توان برای افزایش محاسبات موازی، توابع دیگر، ارتباطات یا حافظه، و نیز افزایش توانایی ورودی / خروجی استفاده کرد. این در هزینه فرصت کمتری برای ابزار کلی وجود دارد.

 در حال ظهور سخت افزار معماری 
سفارشی سازی RTLهای بزرگ از ساختارهای سخت افزاری، معماری‌های جدیدی مانند محاسبات حافظه درونی، معماری های مجهز به حمل و نقل (TTA) و شبکه‌های درون تراشه (NoC) را فراهم می‌کند تا از موقعیت مکانی افزایش یافته و در نتیجه کاهش محاسبات و ارتباطات زمان تأخیر بین ماژول و کاربردی واحدرا به همراه دارد.

سخت افزار سفارشی محدودیت در قابلیت پردازش موازی تنها توسط منطقه و بلوک‌های منطق موجود در مدار یکپارچه است.MicroBlaze Soft Processor: Frequently Asked Questions  بنابراین، سخت افزار بسیار راحت‌تر برای ارائه موازی عظیم نسبت به نرم‌افزار در پردازنده‌های عمومی می‌باشد، که امکان اجرای مدل موقت تصادفی (PRAM) را فراهم می‌کند.

روش مرسوم برای ساخت چندین هسته و چند هسته ای پردازش واحد از نقشه‌ها هسته ریزپردازنده IP در FPGA یک یا ASICاست. István Vassányi. "اجرای آرایه‌های پردازنده در FPGA ها". 1998.   ژوکان وانگ و عمر حاممی "A 24 سیستم پردازنده در طراحی تراشه FPGA با شبکه در تراشه".   جان کنت. "Micro16 Array - یک آرایه CPU ساده"    کیت ایتون. "پردازنده 1000 هسته ای به دست آمده: دسکتاپ آینده شما یک سوپر کامپیوتر" خواهد بود.   "دانشمندان بیش از 1000 هسته را بر روی یک چیپ فشار می‌دهند".    به‌طور مشابه، واحدهای عملیاتی ویژه می‌توانند به صورت موازی در پردازش سیگنال دیجیتالی بدون درج در هسته پردازشگر IP قرار بگیرند؛ بنابراین، شتاب دهنده سخت افزاری اغلب برای کارهای تکراری و ثابت که شامل شاخه‌های شرطی کمی هستند، به ویژه در مقادیر زیادی از داده‌ها مورد استفاده قرار می‌گیرد. این نحوه استفاده از GPUهای CUDA Nvidia است.

 معیارهای پیاده‌سازی 
با افزایش قابلیت تحرک دستگاه، عملکرد نسبی پروتکل‌های شتاب مخصوص نیازمند معیارهای جدید است، با توجه به ویژگی‌های مانند ابعاد، سخت افزار فیزیکی، مصرف برق و عملیات عملیاتی آن‌ها را می‌توان به سه دسته تقسیم کرد: کارایی کار، بهره‌وری پیاده‌سازی، و انعطاف‌پذیری. معیارهای مناسب، مساحت سخت افزار را همراه با عملیات مربوط به عملیات مربوطه و انرژی مصرف شده در نظر می‌گیرند.

 نمونه کارهای شتاب دهنده 
 جمع دو آرایه در یک آرایه دیگر 
 مجموع یک میلیون عدد صحیح 
فرض کنید ما مایل به محاسبه مجموع  اعداد صحیح هستیم. فرض کنید اعداد صحیح بزرگ با عنوان bignum در دسترس هستند که به اندازه کافی بزرگند، برای نگهداری مجموع این اعداد می‌توان با کمک نرم‌افزار (در C++)آن را محاسبه نمود:constexpr int N = 20;
constexpr int two_to_the_N = 1 <<N;

bignum array_sum(const std::array<int, two_to_the_N>& ints) {
    bignum result = 0;
    for (std::size_t i = 0; i <two_to_the_N; i++) {
        result += ints[i];
    }
    return result;
}این الگوریتم در زمان خطیهای  در نماد O بزرگ اجرا می‌شود. در سخت افزار این عملیات در تراشه به صورت موازی تنها در ۲۰ مرحله با استفاده از پیشوند مجموع الگوریتم محاسبه می‌شود. این الگوریتمدارای پیچیدگی زمانی لگاریتمی و است:parameter int N = 20;
parameter int two_to_the_N = 1 <<N;

function int array_sum;
    input int array[two_to_the_N];
    begin
        for (genvar i = 0; i <N; i++) begin
            for (genvar j = 0; j <two_to_the_N; j++) begin
                if (j>= (1 <<i)) begin
                    array[j] = array[j] + array[j - (1 <<i)];
                end
            end
        end
        return array[two_to_the_N - 1];
    end
endfunction این مثال مزایای استفاده از منابع موازی بیشتر در سختافزارهای کاربردی خاص را در مقایسه با اکثر نرم‌افزارها و پارادایمهای رایج عمومی و معماری به کار می‌برد.

 پردازش جریان 
شتاب دهنده سخت افزاری را می‌توان برای پردازش جریان استفاده کرد.

 برنامه‌های کاربردی 
نمونه‌هایی از شتاب سخت افزاری شامل بیت blit شتاب عملکرد در واحد پردازش گرافیکی (gpuها) با استفاده از memristors برای شتاب شبکه‌های عصبی"بررسی ReRAM مبتنی بر معماری برای پردازش در حافظه و شبکه‌های عصبی", S. Mittal ماشین یادگیری و دانش استخراج 2018 و عبارت منظم شتاب سخت افزاری برای دادن کنترل در سرور صنعت در نظر گرفته شده برای جلوگیری از به‌طور منظم بیان محرومیت از خدمات (ReDoS) حملات. سخت افزاری است که انجام شتاب ممکن است بخشی از یک منظوره CPU یا واحد جداگانه است. در مورد دوم آن است که به عنوان یک شتاب دهنده سخت‌افزارو یا بیشتر به‌طور خاص به عنوان یک 3D شتاب دهندههای رمزنگاری شتاب دهنده،

به‌طور سنتی، پردازنده‌ها متوالی بودند (دستورالعمل‌ها به صورت یکجا اجرا می‌شوند) و برای اجرای الگوریتم‌های هدف کلی، کنترل شده با استفاده از دستورالعمل فکتوری (fetch) (به عنوان مثال نتایج موقت حرکت به درون و از یک فایل رجیستر) طراحی شده‌اند. شتاب دهنده سخت افزار با اجازه دادن بیشتر برای بهبود اجرای یک الگوریتم خاص همزمانی، داشتن خاص مسیر داده برای خود متغیرهای موقت و کاهش سربار کنترل آموزش در واکشی رمزگشایی-چرخه اجرا عمل می‌کنند.

پردازنده‌های مدرن چند هسته ای و اغلب ویژگی‌های موازی «یک دستور العملی با داده‌های متعدد» با واحدی به نام (SIMD) هستند. همچنان شتاب دهنده‌های سخت افزاری بازدهی دارند.. شتاب دهنده‌های سخت افزاری مناسب برای هر گونه محاسبات برای فشرده سازی الگوریتم‌ها هستند که اغلب در یک کار یا برنامه اجرا می‌شوند. بسته به چند قسمتی بودن، شتاب دهنده‌های سخت افزاری می‌تواند از یک واحد کارکردی زیادی به عملکرد بلوک (مثل motion estimation در MPEG-2) با هم متفاوت باشد.

 واحدهای شتاب دهنده سخت افزاری توسط نرم‌افزار 
+ کاربرد شتاب دهنده سخت افزاری لغو (سرنام) گرافیک کامپیوتری
 وظایف عمومی
 کارت گرافیک انویدیا
 ردیابی اشعه واحد پردازش گرافیکی
 محاسبات عمومی بر روی GPU
 معماری CUDA
 ردیابی سخت افزار GPU
 GPGPU
 CUDA
 RTX پردازش سیگنال دیجیتال پردازنده سیگنال دیجیتال DSP پردازش سیگنال آنالوگ آرایه آنالوگ قابل برنامه‌ریزی فیلد
 RF قابل برنامه‌ریزی میدان FPAA
 FPRF پردازش صدا کارت صدا و میکسر کارت صدا N / A شبکه کامپیوتری
 بر روی تراشه
 TCP
 ورودی /خروجی پردازنده شبکه و کنترل‌کننده رابط شبکه
 شبکه در تراشه
 موتور تخلیه TCP
 فناوری شتاب در I / O NPU و NIC
 NoC
 TCPOE یا TOE
 I / OAT یا IOAT رمزنگاری
 رمزگذاری
 ISA
 SSL / TLS
 حمله
 تولید تعداد تصادفی شتاب دهنده رمزنگاری و رمزنگاری پروتکل امن
 رمزگذاری مبتنی بر سخت افزار
 دستورالعمل AES مجموعه
 شتاب دهنده SSL
 حمله سخت افزاری سفارشی
 مولد عددی تصادفی سخت افزاری N / A هوش مصنوعی
 بینایی ماشین / دید کامپیوتر
 شبکه‌های عصبی
 شبیه‌سازی مغز شتاب دهنده AI
 واحد پردازش دید
 شبکه عصبی فیزیکی
 مهندسی نئومورفیک N / A
 VPU
 PNN
 N / A جبر چند خطی واحد پردازش تنسور TPU شبیه‌سازی فیزیک واحد پردازش فیزیک PPU عبارات منظم مخلوط‌کننده عبارات منظم N / A فشرده سازی داده‌ها شتاب دهنده فشرده سازی اطلاعات N / A در حافظه پردازش شبکه در تراشه و آرایه سیستولیک NoC; N / A هر کار محاسباتی سخت‌افزار رایانه
 آرایه دروازه قابل برنامه‌ریزی فیلد Farabet, Clément, et al. " سخت افزار شبکه‌های عصبی کانولوشن را برای سیستم‌های بینایی مصنوعی افزایش داد ." مدار و سیستم (ISCAS)، مقالات 2010 سمپوزیوم بین‌المللی IEEE در. IEEE، 2010. 
 مدارهای مجتمع کاربردی خاص
 دستگاه منطق قابل برنامه‌ریزی مجتمع
 سیستم بر روی تراشه
 چند پردازنده سیستم بر روی تراشه
 سیستم عامل بر روی تراشه برنامه‌ریزی شده HW (گاهی اوقات)
 FPGA
 ASIC
 CPLD
 SoC
 MPSoC
 PSoC

 جستارهای وابسته 
 دسترسی مستقیم به حافظه (DMA)
 طبقه‌بندی فلین‌ها
 دستورالعمل تک، اطلاعات چندگانه (SIMD)
 دستورالعمل‌های چندگانه، چندین داده (MIMD)

 منابع 

رده:آرایه‌های دریچه‌ای
رده:بهینه‌سازی رایانه
رده:سخت‌افزارهای گرافیک
رده:شتاب‌دهنده سخت‌افزاری
رده:صفحات با ترجمه بازبینی‌نشده
رده:مدارهای مجتمع با کاربرد خاص
رده:واحد پردازشگر مرکزی