موضوع مقاله: کمک‌پردازنده | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # کمک‌پردازنده | مقدمه: عملیاتی که توسط کمک پردازنده، انجام می‌شوند، ممکن است از نوع: محاسبات شناور، گرافیک، پردازش سیگنال، پردازش رشته‌های متنی، رمزنگاری یا رابط‌کاربری I / O با دستگاه‌های جانبی باشند. | ## بخش 1: کمک‌پردازنده | کمک پردازنده‌ها می‌توانند باعث تسریع عملکرد سیستم در وظایفی شوند که بار پردازشی بالایی را بر روی پردازنده اصلی، وارد می‌کنند. کمک پردازنده امکان سفارشی‌سازی کامپیوترها را فراهم می‌کند، ازاین‌رو دیگر لازم نیست تا مشتریان برای عملکرد بالاتر، هزینهٔ اضافی پرداخت کنند. اساس کار برخی از آنها (مانند FPU‌ها) بر روی کنترل مستقیم بوسیلهٔ دستورالعمل‌های کمک پردازنده است، که این دستورالعمل‌ها درون جریان دستورالعمل CPU تعبیه شده‌اند. برخی دیگر نیز شامل پردازنده‌های مستقلی هستند که قادر هستند تا به‌صورت همگام، کار کنند، آنها هنوز برای همه‌منظوره، بهینه نشده‌اند، یا قادر به انجام مجموعه دستورالعملهای محدود در وظایف تسریع کننده نیستند. این کمک پردازنده‌ها از دسترسی مستقیم به حافظه (DMA)در کنار پردازندهٔ میزبان استفاده می‌کنند که پردازنده میزبان بر روی لیستی از دستورها، ایجاد شده‌است. بزرگ رایانه به هیچ‌گونه پردازش I/O نیازی ندارد، درعوض از مجموعه‌ای از پارامترها برای هریک از عملیات ورودی یا خروجی استفاده می‌کند و سپس به کانال پردازنده، سیگنالی را ارسال می‌کند تا کل عملیات را به آن کانال، واگذار کند. با اختصاص پردازنده‌های فرعی برای مدیریت فرمت‌دهی و پردازش عملیات I/O زمان‌بر، عملکرد سیستم، بهبود یافت. کمک پردازنده‌ها ابتدا در دههٔ ۱۹۷۰، برای عملیات محاسبات ممیز شناور در رایانه‌های رومیزی استفاده شدند و در دههٔ ۱۹۸۰ و اوایل ۱۹۹۰ رواج بیشتری یافتند. پردازنده‌های ۸-بیت و ۱۶ بیت قدیمی از نرم‌افزار برای انجام عملیات محاسبات ممیز شناور، بهره می‌گرفتند. وقتی استفاده از کمک پردازنده‌ها در این زمینه، رایج شد، سرعت انجام محاسبات ممیز شناور، بیشتر شد. کمک پردازنده‌های محاسباتی، گزینهٔ محبوبی برای کاربرانی شدند که از نرم‌افزارهای طراحی رایانهای (CAD) و محاسبات مهندسی و علمی، استفاده می‌کردند. با توسعهٔ ریزپردازنده‌ها، هزینهٔ یکپارچه‌سازی وظایف محاسبات ممیز شناور با پردازنده، کاهش یافت. | ## بخش 2: کمک‌پردازنده | سرعت بالای پردازنده‌ها موجب گشت تا پیاده‌سازی پردازنده‌های بسیار یکپارچه، سخت‌تر شود. امروزه، استفاده از کمک پردازنده‌های جداگانه برای انجام محاسبات در رایانه‌های رومیزی، دیگر رایج نیست. تقاضا برای کمک پردازنده گرافیکی اختصاصی، بالا رفته‌است، هرچند، دلیل این رشد تقاضا تا حدی با افزایش تقاضا برای گرافیک‌های سه‌بعدی واقع‌گرا در بازی‌های رایانه‌ای، مرتبط است. در این معماری، کمک پردازنده به تسریع محاسب ممیز شناور تا پنجاه‌برابر، کمک می‌کند. کاربرانی که از رایانه‌های شخصی تنها برای پردازش کلمات، استفاده می‌کنند، هزینهٔ زیادی را در کمک پردازنده‌ها صرفه‌جویی می‌توانند بکنند، چرا که کمک پردازنده‌ها کمکی به افزایش عملیات دستکاری متن، نمی‌کنند. ۸۰۸۷ با 8086/8088 دارای یکپارچگی بالایی درکدهای عملیاتی ماشین ممیز شناور هستند که در جریان دستورالعمل‌های ۸۰۸۸ درج شده‌اند. این کمک پردازنده از تکنیک برنامه‌نویسی یکسانی با ۸۰۸۷ برای عملیات ورودی/خروجی استفاده می‌کند، برای مثال در انتقال داده از حافظه به دستگاه جانبی. اما IBM از طراحی IBM رایانه‌های شخصی استفاده نمی‌کند و اینتل، توسعهٔ این نوع کمک پردازنده را متوقف کرده‌است. ریزپردازنده Intel 80386از کمک پردازندهٔ محاسباتی اختیاری (۸۰۳۸۷) برای انجام عملیات ممیز شناور به‌صورت مستقیم در سخت‌افزار استفاده می‌کند. پیشرفتها در یکپارچه‌سازی، هزینهٔ فروش پردازشگر ممیز شناور را بعنوان عنصری اختیاری، حذف کرد. تطابق با تکنیک‌های برد-مدار با سرعت موردنیاز 75MHz در پردازنده، سخت بود، مخصوصاً اینکه بایستی به تأمین مواردی چون: تأخیر زمانی، مصرف برق و فرکانس رادیویی استاندارد موردنیاز در سرعت کلاک در محدودهٔ گیگاهرتز نیز توجه می‌شد. این پردازنده‌های ممیز شناور روی-چیپ هنوز بعنوان کمک پردازنده، مورد استفاده هستند، چرا که قادر به عملکرد موازی با CPU اصلی هستند Weitek دیگر نوع رایج برای کمک پردازنده‌های ممیز شناور در دوران استفاده از کامپیوترهای رومیزی ۸-بیت و ۱۶-بیتی بود. | ## بخش 3: کمک‌پردازنده | این کمک پردازنده‌ها دارای مجموعه دستورالعمل‌های متفاوتی نسبت به کمک پردازنده‌های اینتل بودند و سوکت متفاوتی را استفاده می‌کردند که در تمام بردهای اصلی پشتیبانی نمی‌شد. 412-413 موتورولا خانوادهٔ موتورولا ۶۸۰۰۰ دارای کمک پردازنده‌های 68881/68882بودند که باعث تسریع سرعت ممیز شناور مشابهی با پردازندهای اینتل می‌شدند. کامپیوترهایی که از خانوادهٔ ۶۸۰۰۰ استفاده می‌کردند اما با سخت‌افزار پردازندهٔ ممیز شناور، مجهز نبودند، می‌توانستند از دستورالعمل‌های ممیز شناور در نرم‌افزار خود تقلید کرده و استفاده کنند. این دستورالعمل‌ها دارای سرعت پایینی بودند و نسخهٔ باینری از برنامه را برای هر دو مورد، توزیع می‌کردند. کمک پردازنده‌های مدرن از سال ۲۰۰۱، واحدهای پردازش گرافیک (GPU) به شکل کارت‌های گرافیک، رایج شدند. این کارت برای بازی‌های ویدئویی، طراحی شده‌بود و هرچند محاسباتی نیز از تئوری، قابلیت انجام دیگر کارهای محاسباتی را نیز داشت. در سال ۲۰۱۰، برخی دستگاه‌های محاسبات سیار، هاب حسگر ی را بعنوان کمک پردازنده، پیاده‌سازی کردند. تا سال ۲۰۱۶، شرکت‌های مختلفی، کمک پردازنده‌هایی را توسعه دادند که هدف آنها تسریع شبکه‌های عصبی مصنوعی برای وظایف بینایی و دیگر وظایف شناختی بود (مثلاً واحدهای پردازش بینایی، ترونورتس (TrueNorth) و زئروتس(Zeroth و تا سال ۲۰۱۸، تراشه‌های دارای هوش مصنوعی برای گوشی‌های هوشمند مانند اَپل و چندین فروشندهٔ گوشی‌های اندروید، تولید شد. شتاب‌دهنده‌های TLS / SSL، استفاده شده بر روی سرورها، مانند شتاب‌دهنده‌های مورد استفاده در کارت‌ها، اما در دورهٔ مدرن، دستورالعمل‌هایی برای رمزگذاری و جریان اصلی CPUها هستند. برخی تراشه‌های چند هسته ای را می‌توان به گونه ای برنامه‌ریزی کرد که یکی از پردازنده‌های آنها پردازنده اصلی باشد و سایر پردازنده‌ها از کمک پردازنده‌های دیگر پشتیبانی کنند. این کمک پردازنده‌ها به جای کمک به پردازش‌های خاص گرافیکی یا کار بعنوان دستگاه‌های محاسباتی، به کمک CPUهای کاربرد عمومی می‌آیند (مانند ۸۰۸۶، زیلوگ (Z80 (Zilog یا ۶۵۰۲) و نوع خاصی از وظایف اختصاصی توسط سیستم‌عامل را انجام می‌دهند و بار CPU اصلی را کاسته و سرعت آن را افزایش می‌دهند. بعلاوه، BBC میکرو، به کمک پردازنده‌ای مجهز است که قادر به اجرای نرم‌افزار کد ماشین طراحی‌شده برای سایر سیستم‌ها است، ازجمله: CP/M و داس (DoS) که برای پردازنده‌های ۸۰۸۶ نوشته شده‌اند روندها در طول زمان، CPU رشد کردند که وظیفه‌مندی اغلب کمک پردازنده‌ها را جذب کردند. | ## جمع‌بندی | بااین‌وجود، واحدهای اختصاصی هنوز دارای محبوبیت خود در بین ماشین‌های رومیزی هستند و به خاطر داشتن قدرت بیشتر، امکان دارد به روند تکاملی خود به‌صورت مستقل از پردازنده، ادامه دهند.