پردازنده بشکه‌ای

یک پردازنده بشکه‌ای یک پردازنده است که در هر چرخه بین ریسمان‌های اجرایی سوئیچ می‌کند. این تکنیک طراحی پردازنده با نام‌های چندرشته زمانی «درهم» یا «ریزدانه» نیز شناخته می‌شود. برخلاف چندریسمانی همزمان در معماری‌های سوپراسکالر مدرن، این تکنیک معمولاً اجازه اجرای چندین دستورالعمل در یک چرخه را نمی‌دهد.

مانند پیش‌اجرایی، هر رشته اجرا به شمارنده برنامه و سایر ثبات‌های سخت‌افزاری (وضعیت معماری هر رشته) اختصاص داده می‌شود. یک پردازنده بشکه‌ای می‌تواند تضمین کند که هر رشته در هر n چرخه یک دستور را اجرا می‌کند، برخلاف یک ماشین پیش‌اجرایی، که معمولاً یک رشته اجرایی را برای ده‌ها میلیون چرخه در حالی که همه رشته‌ها منتظر نوبت خود هستند، اجرا می‌کند.

تکنیکی به نام C-slowing می‌تواند به‌طور خودکار یک طراحی پردازشگر بشکه‌ای متناظر را از طراحی یک پردازنده تک‌وظیفه ایجاد کند. یک پردازنده بشکه ای n- way که به این روش تولید می‌شود، بسیار شبیه به n نسخه چند پردازشی جداگانه از پردازنده اصلی تک وظیفه ای عمل می‌کند که هر کدام تقریباً با سرعت 1/ n سرعت اصلی کار می‌کنند.

تاریخچه 
یکی از اولین نمونه‌های پردازشگر بشکه‌ای، سیستم پردازش ورودی/خروجی در ابررایانه‌های سری CDC 6000 بود. اینها قبل از بازگشت به اولین پردازنده، یک دستورالعمل (یا بخشی از یک دستورالعمل) را از هر یک از ۱۰ پردازنده مجازی مختلف (که پردازنده‌های جانبی نامیده می‌شوند) اجرا می‌کردند. از سری CDC 6000 برداشت می‌شود که «پردازنده‌های جانبی به طور گروهی به عنوان یک پردازنده بشکه ای پیاده سازی می‌شوند. هر کدام به طور مستقل روند را اجرا می‌کنند. آنها یک نمونهٔ سابق ضعیف برای BUS یا دستیابی مستقیم به حافظه هستند.»

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

مثال دیگر Honeywell ۸۰۰ است که دارای ۸ گروه ثبات بود که اجرای حداکثر ۸ برنامه را به صورت همزمان امکان‌پذیر می‌کرد. پس از هر دستورالعمل، پردازنده (در اکثر موارد) به ترتیب به برنامه فعال بعدی می‌رود.

همچنین پردازنده‌های بشکه‌ای به عنوان پردازنده‌های مرکزی در مقیاس‌های بزرگ مورد استفاده قرار گرفته‌اند. Tera MTA (1988) (ترا کامپیوتر) یک پردازشگر بشکه‌ای در مقیاس بزرگ شده بود که با ۱۲۸ رشته در هر هسته طراحی شده بود. معماری MTA شاهد توسعهٔ پی در پی محصولات متوالی مانند Cray Urika-GD بوده‌است که در ابتدا در سال ۲۰۱۲ معرفی شد (به عنوان YarcData uRiKA) و برنامه‌های کاربردی داده کاوی را هدف قرار داد.

علاوه بر این پردازنده‌های بشکه‌ای در سامانه‌های توکار (تعبیه شده) یافت می‌شوند، جایی که آنها به‌ویژه برای عملکرد ریسمان رایانش بی درنگ خود مفید هستند.

یک مثال اکسموس اکسور۱ (۲۰۰۷) است که یک پردازنده بشکه ای چهار مرحله ای با هشت رشته در هر هسته می‌باشد. (همچنین پردازنده‌های جدیدتر از اکسموس هم همان نوع معماری را دارند) ایکس اس ۱ای که در اترنت،  USB و دستگاه‌های کنترل و سایر برنامه‌هایی که عملکرد ورودی/خروجی حیاتی است، یافت می‌شود. هنگامی که برنامهٔ ایکس اس ۱ در زبان 'XC' نوشته می‌شود، نرم‌افزار کنترل دستیابی مستقیم به حافظه ممکن است اجرا شود.

پردازنده‌های بشکه‌ای نیز در دستگاه‌های تخصصی مانند پردازنده هشت رشته‌ای Ubicom IP3023 ورودی/ خروجی شبکه (۲۰۰۴) استفاده شده‌است. برخی از ریزکنترلگرهای ۸ بیتی Padauk Technology دارای پردازنده‌های بشکه‌ای با حداکثر ۸ رشته در هر هسته هستند.

مقایسه با پردازنده‌های تک رشته‌ای

مزایا 
یک پردازنده تک وظیفه‌ای زمان زیادی را در حالت بیکار سپری می‌کند و هروقت حافظه نهان یا حباب رخ دهد هیچ کار مفیدی انجام نمی‌دهد. مزایای استفاده از پردازنده‌های بشکه ای نسبت به پردازنده‌های تک وظیفه ای عبارتند از:
 توانایی انجام کار مفید رشته‌های دیگر در حالی که رشتهٔ متوقف شده در انتظار است.
 طراحی یک پردازنده بشکه ای n طرفه با خط لوله ای با عمق n بسیار ساده‌تر از طراحی یک پردازنده تک وظیفه ای است، زیرا یک پردازنده بشکه ای هرگز دچار حباب نمی‌شود و به مدارهای مخاطره نیاز ندارد.
 برای کاربردهای رایانش بی درنگ، یک پردازندهٔ بشکه‌ای می‌تواند تضمین کند که یک رشتهٔ «زمان واقعی» می‌تواند با زمان‌بندی دقیق اجرا شود بدون اینکه اهمیتی داشته باشد برای رشته‌های دیگر چه اتفاقی می‌افتد، حتی اگر رشته‌های دیگر در یک حلقه بی‌نهایت به بن‌بست برسند یا به‌طور مداوم توسط وقفه‌های سخت‌افزاری قطع شوند.

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

جستارهای وابسته 
 چندرشته زمانی
 چند کارگی (رایانه)
 چند ریسمانی همزمان (SMT)
 فراریسمانی
 پردازنده برداری
 کری XMT

منابع

پیوند به بیرون 
 Soft peripherals Embedded.com article examines Ubicom's IP3023 processor
 An Evaluation of the Design of the Gamma 60
 Histoire et architecture du Gamma 60 (French and English)