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

از ویکی‌پدیا، دانشنامهٔ آزاد

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

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

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

تاریخچه[ویرایش]

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

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

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

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

پردازنده‌های بشکه‌ای در سیستم‌های نهفته نیز وجود داشته‌اند و به طور خاص برای عملکرد مناسب ریسمان‌ها به صورت بی‌درنگ خود مفید هستند.به عنوان مثال XMOS XCore XS1 (2007)، یک پردازنده بشکه‌ای چهار مرحله‌ای با توانایی اجرای ۸ رشته در هر هسته است. (پردازنده های جدیدتر XMOS نیز از همین نوع معماری برخوردارند.) XS1 در اترنت، USB، دستگاه‌های صوتی و کنترلی و سایر برنامه هایی که عملکرد وردوی/خروجی در آن‌ها مهم است یافت می‌شوند. هنگامی که XS1 با زبان «XC» برنامه ریزی می‌شود، دسترسی مستقیم به حافظه کنترل شده توسط نرم افزار پیاده‌سازی می‌شود.

پردازنده‌های بشکه‌ای نیز در دستگاه های تخصصی مانند پردازنده ۸ رشته‌ای Ubicom IP3023 (2004) استفاده شده است. برخی از ریزپردازنده‌های ۸ بیتی Padauk Technology دارای پردازنده‌های بشکه‌ای با حداکثر ۸ رشته در هر هسته هستند.

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

مزایا[ویرایش]

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

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

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

با وجود این مزایایی که برای پردازنده‌های بشکه‌ای ذکر شد،‌ آن‌ها معایبی نیز دارند:

  • وضعیت هر ریسمان باید روی تراشه (on-chip) و به طور معمول روی ثبات‌ها نگهداری شود، تا از تعویض زمینه‌های پرهزینه خارج از تراشه (off-chip) جلوگیری کند. پیاده‌سازی این قابلیت به ثبات‌های بیشتری نسبت به پردازنده‌های معمولی نیاز دارد.
  • یا باید همه ریسمان‌ها حافظه نهان یکسانی داشته باشند یا باید یک واحد حافظه نهان برای هر رشته اجرایی وجود داشته باشد. مورد اول عملکرد کلی سیستم را کند می‌کند و مورد دوم می‌تواند عدد ترانزیستورها و در نتیجه هزینه تولید CPU را به میزان قابل توجهی افزایش دهد. با این حال، در سیستم‌های نهفته بلادرنگ که اغلب در آن‌ها از پردازنده‌های بشکه‌ای استفاده می‌شود، هزینه‌های دسترسی به حافظه، معمولا با فرض بدترین رفتار حافظه نهان محاسبه می‌شود، بنابراین این موضوع نگرانی قابل توجهی را ایجاد نمی‌کند. از این رو برخی از پردازنده‌های بشکه‌ای به طور کلی حافظه نهان ندارند.

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

ویکی‌پدیای انگلیسی