پردازنده پیمانه ای
پردازنده پیمانهای (به انگلیسی: barrel) یک CPU است که بین رشتههای اجرا (به انگلیسی: threads of execution) در هر چرخه دستورالعمل سوییچ میکند. تکنیک طراحی این CPU به عنوان چندرشتهای زمانی دانهریز (به انگلیسی: fine-grained) یا درهمگذاریشده (به انگلیسی: interleaved) هم شناخته میشود. این گونه از طراحی بر خلاف طراحی چندرشتهای همزمان در معماریهای سوپراسکالر مدرن، شرایط اجرای دستورالعملهای چندگانه در یک چرخه را فراهم نمیکند.
مانند چندوظیفهای پیشگیرانه (به انگلیسی: preemptive multitasking)، به هر رشته اجرایی یک شمارنده برنامه و دیگر رجیسترهای سختافزاری (هر حالت معماری رشته) اختصاص داده میشود. یک پردازنده پیمانهای میتواند تضمین کند که هر یک از رشتهها، بر خلاف یک ماشین چندوظیفهای پیشگیرانه، یک دستورالعمل را در هر n چرخه اجرا میکنند و به طور معمول یک رشته اجرایی را برای دهها میلیون چرخه اجرا میکند، در حالی که همه رشتهها منتظر نوبت اجرای خود هستند.
یک تکنیک به نام کندسازی C (به انگلیسی: C-slowing) میتواند به طور اتوماتیک طراحی پردازنده پیمانهای متناظر را از یک طراحی پردازنده تکوظیفهای تولید کند. یک پردازنده پیمانهای n سویه شبیه به n نسخه چندپردازشی متمایز از پردازنده تکوظیفه اصلی کار می کند، که هر کدام تقریبا با سرعتی برابر با سرعت اصلی اجرا میشوند.
تاریخچه[ویرایش]
یکی از قدیمیترین نمونههای یک پردازنده پیمانهای، سیستم پردازش I/O در ابرکامپیوترهای سری CDC 6000 بود. آنها قبل از بازگشت به اولین پردازنده، یک مجموعۀ دستورالعمل (یا بخشی از یک مجموعه دستورالعمل) از هر ۱۰ پردازنده مجازی مختلف (به نام پردازندههای محیطی) را اجرا میکردند. [۱] در سری CDC 6000 پردازندههای محیطی به طور جمعی به عنوان یک پردازنده پیمانهای پیادهسازی میشوند. هر کدام امور عادی خود را مستقل از پردازنده های دیگر اجرا میکنند. آنها یکی از اجداد فناوری راهبری گذرگاهی (به انگلیسی: bus mastering) یا دسترسی مستقیم به حافظه محسوب میشوند.
یکی از انگیزههای پردازندههای پیمانهای کاهش هزینههای سختافزاری بود. در مورد CDC 6x00 PPUs، منطق دیجیتالی پردازنده بسیار سریعتر از حافظه اصلی بود، بنابراین به جای داشتن ده پردازنده جداگانه، ده واحد حافظه اصلی جداگانه برای PPUs وجود داشت، اما همه آنها یک مجموعه واحد از منطق پردازنده را به طور مشترک در اختیار داشتند.
مثال دیگر هانیول ۸۰۰ (به انگلیسی: Honeywell 800) است که ۸ گروه رجیستر دارد که شرایط اجرای ۸ برنامه همزمان را فراهم میکند. پس از هر دستور، پردازنده (در اغلب موارد) به برنامه فعال بعدی در دنباله سوییچ میکند.
پردازندههای پیمانهای همچنین به عنوان پردازندههای مرکزی با مقیاس بزرگ نیز مورد استفاده قرار گرفتهاند. پردازنده Tera MTA در 1998 بعنوان یک پردازنده مقیاس بزرگ با ۱۲۸ رشته در هر هسته توسعه یافت. [۲] [۳] معماری MTA توسعه مستمری را در محصولات بعدی مانند Cray Urika-GD تجربه کرده است که در سال ۲۰۱۲ (با عنوان YarcData uRiKA) معرفی شد و در برنامههای کاربردی داده کاوی مورد استفاده قرار گرفت. [۴]
پردازشگرهای پیمانهای نیز در سیستمهای تعبیهشده هم بکار گرفته می شوند، که به ویژه برای عملکرد رشته بلادرنگ قطعی خود مفید هستند.
یک نمونه در این زمینه XMOS XCore XS1 (2007) است که یک پردازنده پیمانهای چهار مرحلهای با هشت رشته در هر هسته می باشد. (پردازنده های جدیدتر از XMOS نیز دارای همان نوع معماری هستند.) XS1 در اترنت، USB، دستگاه های صوتی، کنترل و دیگر کاربردها یافت میشود که در آن ها عملکرد I / O بسیار حیاتی است. هنگامی که XS1 به زبان 'XC' برنامهنویسی میشود، دسترسی مستقیم به حافظه تحت کنترل نرمافزار میتواند اجرا شود.
پردازندههای پیمانهای همچنین در دستگاههای تخصصی از قبیل پردازنده I/O شبکه Ubicom IP3023 هشت رشتهای مورد استفاده قرار گرفتهاند. برخی از میکروکنترل های ۸ بیتی از پردازندههای پیمانهای مبتنی بر تکنولوژی پاداوک با ۸ رشته در هر هسته استفاده میکنند.
مقایسه با پردازنده های تک رشته ای[ویرایش]
مزایا[ویرایش]
یک پردازشگر تکرشته، زمان زیادی را بیکار میکند و هر زمان که یک عدم اصابت (به انگلیسی: Miss) حافظه نهان یا وقفه در خط لوله رخ میدهد، هیچ کار مفیدی انجام نمیدهد. مزایای استفاده از پردازندههای پیمانهای نسبت به پردازندههای تکرشته شامل موارد زیر هستند:
- توانایی انجام کار مفید روی رشتههای دیگر در حالی که رشته دچار وقفه شده منتظر است.
- طراحی یک پردازنده پیمانهای n سویه با یک خط لوله n - عمیق بسیار سادهتر از طراحی یک پردازنده تکوظیفهای است، زیرا یک پردازنده پیمانهای هرگز یک وقفه خطلولهای (حباب) ندارد و نیازی به مدارهای فیدفوروارد (به انگلیسی: feed-forward) ندارد.
- برای کاربردهای بلادرنگ، یک پردازنده پیمانهای میتواند تضمین کند که یک رشته بلادرنگ (به انگلیسی: real-time thread) میتواند با زمانبندی دقیق اجرا شود، مهم نیست که چه اتفاقی برای رشتههای دیگر میافتد، حتی اگر برخی دیگر از رشتهها در تله یک حلقه نامحدود قفل شوند و یا به طور مداوم توسط وقفه های سختافزاری متوقف شوند.
معایب[ویرایش]
پردازنده های پیمانهای با چندین نقص مواجه هستند.
- حالت هر رشته باید بر روی تراشه (به طور معمول در رجیستر)، حفظ شود تا از سوئیچهای زمینه خارج از تراشه که هزینه زیادی دارند اجتناب شود. این امر در مقایسه با پردازندههای معمولی نیازمند تعداد زیادی رجیستر است.
- یا هر یک از رشتهها باید حافظه نهان یکسانی داشته باشند، که عملکرد کلی سیستم را کاهش میدهد، یا باید یک واحد حافظه نهان برای هر رشته اجرایی وجود داشته باشد، که میتواند به طور قابلتوجهی عدد ترانزیستور را افزایش دهد و در نتیجه هزینه CPU را افزایش دهد. با این حال، در سیستمهای تعبیهشده بلادرنگ سخت که در آن ها پردازشگرهای پیمانهای اغلب یافت میشوند، هزینههای دسترسی به حافظه معمولا با فرض بدترین رفتار حافظه نهان مورد محاسبه قرار میگیرند، بنابراین این یک نگرانی ناچیز محسوب می شود. برخی از پردازندههای پیمانهای مانند XMOS XS1 اصلا حافظه نهان ندارند.
همچنین ببینید[ویرایش]
منابع[ویرایش]
لینک های خارجی[ویرایش]
This article "پردازنده پیمانه ای" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:پردازنده پیمانه ای. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.
- ↑ CDC Cyber 170 Computer Systems; Models 720, 730, 750, and 760; Model 176 (Level B); CPU Instruction Set; PPU Instruction Set -- See page 2-44 for an illustration of the rotating "barrel".
- ↑ "Archived copy". Archived from the original on 2012-02-22. Retrieved 2012-08-11.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Archived copy". Archived from the original on 2014-07-12. Retrieved 2014-08-19.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Cray's YarcData division launches new big data graph appliance" (Press release). Seattle, WA and Santa Clara, CA: Cray Inc. February 29, 2012. Retrieved 2017-08-24.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.