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

از ویکی‌پدیا، دانشنامهٔ آزاد
تصویری از یک شتاب‌دهنده سخت افزاری

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

مزایای نرم‌افزاری نرم‌افزار عبارتند از: توسعه سریعتر (به سرعت سریعتر به بازار)، هزینه‌های مهندسی هزینه‌های غیر تکراری، انتقال قابلیت افزایش، و سهولت به روز رسانی ویژگیها یا تکه کردن اشکالات، به هزینه سربار برای محاسبه عملیات عمومی. مزایای سخت افزاری عبارتند از: سرعت بالا، کاهش مصرف برق،[۱] تأخیر کمتر، افزایش موازی بودن[۲] و پهنای باند و استفاده بهتر از قطعات و اجزای عملکردی موجود در یک مدار مجتمع؛ در هزینه توانایی کمتر برای به روز رسانی طرح‌ها، پس از آن بر روی سیلیکون پراکنده شده و هزینه‌های بالای تأیید عملیاتی و زمان به بازار افزایش می‌یابد. در سلسله مراتب سیستم‌های محاسباتی دیجیتال اعم از پردازنده همه منظوره به‌طور کامل سفارشی سخت افزار، یک معاوضه بین انعطاف‌پذیری و بهره‌وری وجود دارد، با راندمان افزایش سفارشات از قدر زمانی که هر برنامه با توجه به بالاتر که سلسله مراتب اجرا شده‌است.[۳][۴] این سلسله مراتب شامل پردازنده‌های عمومی مانند پردازنده‌ها، پردازنده‌های متفاوتی مانند پردازنده‌های گرافیکی، عملکرد ثابت ساخته شده در آرایه‌های دروازه قابل برنامه‌ریزی فازی (FPGAها) و عملکرد ثابت بر روی مدار یکپارچه برنامه کاربردی (ASICs) است.

شتاب دهنده سخت افزاری برای عملکرد بهتر است و زمانی که عملکردها ثابت می‌شوند، بنابراین به روز رسانی‌ها در مورد راه حل‌های نرم‌افزاری مورد نیاز نیست. با ظهور دستگاه‌های منطقی قابل برنامه‌ریزی مانند FPGAها، محدودیت شتاب سخت افزاری به الگوریتم‌های کاملاً ثابت از سال ۲۰۱۰ کاهش یافته‌است، به این ترتیب شتاب سخت افزاری برای حوزه‌های مشکوک که نیاز به اصلاح الگوریتم‌ها و پردازش جریان کنترل را دارند، کاهش می‌یابد.[۵][۶][۷]

بررسی اجمالی[ویرایش]

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

محاسبات ارزیابی از سخت افزار و نرم‌افزار[ویرایش]

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

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

برنامه ذخیره شده کامپیوتر[ویرایش]

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

سخت افزار واحدهای اجرایی[ویرایش]

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

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

در حال ظهور سخت افزار معماری[ویرایش]

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

سخت افزار سفارشی محدودیت در قابلیت پردازش موازی تنها توسط منطقه و بلوک‌های منطق موجود در مدار یکپارچه است.[۸] بنابراین، سخت افزار بسیار راحت‌تر برای ارائه موازی عظیم نسبت به نرم‌افزار در پردازنده‌های عمومی می‌باشد، که امکان اجرای مدل موقت تصادفی (PRAM) را فراهم می‌کند.

روش مرسوم برای ساخت چندین هسته و چند هسته ای پردازش واحد از نقشه‌ها هسته ریزپردازنده IP در FPGA یک یا ASICاست.[۹][۱۰][۱۱][۱۲][۱۳] به‌طور مشابه، واحدهای عملیاتی ویژه می‌توانند به صورت موازی در پردازش سیگنال دیجیتالی بدون درج در هسته پردازشگر 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 برای شتاب شبکه‌های عصبی[۱۶] و عبارت منظم شتاب سخت افزاری برای دادن کنترل در سرور صنعت در نظر گرفته شده برای جلوگیری از به‌طور منظم بیان محرومیت از خدمات (ReDoS) حملات.[۱۷] سخت افزاری است که انجام شتاب ممکن است بخشی از یک منظوره CPU یا واحد جداگانه است. در مورد دوم آن است که به عنوان یک شتاب دهنده سخت‌افزارو یا بیشتر به‌طور خاص به عنوان یک 3D شتاب دهندههای رمزنگاری شتاب دهنده،

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

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

واحدهای شتاب دهنده سخت افزاری توسط نرم‌افزار[ویرایش]

کاربرد شتاب دهنده سخت افزاری لغو (سرنام)
گرافیک کامپیوتری واحد پردازش گرافیکی GPU
  • GPGPU
  • CUDA
  • RTX
پردازش سیگنال دیجیتال پردازنده سیگنال دیجیتال DSP
پردازش سیگنال آنالوگ آرایه آنالوگ قابل برنامه‌ریزی فیلد
  • RF قابل برنامه‌ریزی میدان
FPAA
  • FPRF
پردازش صدا کارت صدا و میکسر کارت صدا N / A
شبکه کامپیوتری پردازنده شبکه و کنترل‌کننده رابط شبکه NPU و NIC
  • NoC
  • TCPOE یا TOE
  • I / OAT یا IOAT
رمزنگاری شتاب دهنده رمزنگاری و رمزنگاری پروتکل امن
  • رمزگذاری مبتنی بر سخت افزار
  • حمله سخت افزاری سفارشی
  • مولد عددی تصادفی سخت افزاری
N / A
هوش مصنوعی شتاب دهنده AI
  • واحد پردازش دید
  • شبکه عصبی فیزیکی
  • مهندسی نئومورفیک
N / A
  • VPU
  • PNN
  • N / A
جبر چند خطی واحد پردازش تنسور TPU
شبیه‌سازی فیزیک واحد پردازش فیزیک PPU
عبارات منظم[۱۷] مخلوط‌کننده عبارات منظم N / A
فشرده سازی داده‌ها[۱۸] شتاب دهنده فشرده سازی اطلاعات N / A
در حافظه پردازش شبکه در تراشه و آرایه سیستولیک NoC; N / A
هر کار محاسباتی سخت‌افزار رایانه HW (گاهی اوقات)
  • FPGA
  • ASIC
  • CPLD
  • SoC
    • MPSoC
    • PSoC

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. "Microsoft Supercharges Bing Search With Programmable Chips". WIRED. 16 June 2014.
  2. "Archived copy". Archived from the original on 2007-10-08. Retrieved 2012-08-18.{{cite web}}: نگهداری یادکرد:عنوان آرشیو به جای عنوان (link) "FPGA Architectures from 'A' to 'Z'" by Clive Maxfield 2006
  3. "Mining hardware comparison - Bitcoin". Retrieved 17 July 2014.
  4. "Non-specialized hardware comparison - Bitcoin". Retrieved 25 February 2014.
  5. Morgan, Timothy Pricket (2014-09-03). "How Microsoft Is Using FPGAs To Speed Up Bing Search". Enterprise Tech. Retrieved 2018-09-18.
  6. "Project Catapult". Microsoft Research.
  7. MicroBlaze Soft Processor: Frequently Asked Questions بایگانی‌شده در ۲۰۱۱-۱۰-۲۷ توسط Wayback Machine
  8. István Vassányi. "اجرای آرایه‌های پردازنده در FPGA ها". 1998. [۱][پیوند مرده]
  9. ژوکان وانگ و عمر حاممی "A 24 سیستم پردازنده در طراحی تراشه FPGA با شبکه در تراشه". [۲]
  10. جان کنت. "Micro16 Array - یک آرایه CPU ساده" [۳]
  11. کیت ایتون. "پردازنده 1000 هسته ای به دست آمده: دسکتاپ آینده شما یک سوپر کامپیوتر" خواهد بود. [۴]
  12. "دانشمندان بیش از 1000 هسته را بر روی یک چیپ فشار می‌دهند". [۵] بایگانی‌شده در ۵ مارس ۲۰۱۲ توسط Wayback Machine
  13. Kienle, Frank; Wehn, Norbert; Meyr, Heinrich (December 2011). "On Complexity, Energy- and Implementation-Efficiency of Channel Decoders". IEEE Transactions on Communications (به انگلیسی). 59 (12): 3301–3310. doi:10.1109/tcomm.2011.092011.100157. ISSN 0090-6778.
  14. Hillis, W. Daniel; Steele, Jr., Guy L. (December 1986). "Data parallel algorithms". Communications of the ACM. 29 (12): 1170–1183. doi:10.1145/7902.7903.
  15. ۱۷٫۰ ۱۷٫۱ "Regular Expressions in hardware". Retrieved 17 July 2014.
  16. "Compression Accelerators - Microsoft Research". Microsoft Research (به انگلیسی). Retrieved 2017-10-07.
  17. ۱۹٫۰ ۱۹٫۱
    Farabet, Clément, et al. " سخت افزار شبکه‌های عصبی کانولوشن را برای سیستم‌های بینایی مصنوعی افزایش داد[پیوند مرده] ." مدار و سیستم (ISCAS)، مقالات 2010 سمپوزیوم بین‌المللی IEEE در. IEEE، 2010.