چندپردازشی
در مهندسی سختافزار، چندپردازشی به بکارگیری دو یا چند واحد پردازش مرکزی در یک سامانه رایانهای میگویند. این واژه به توانایی یک سامانه در بکارگیری چند پردازنده و تقسیم وظایف بین آنها نیز اطلاق میشود. بسته به اینکه واحدهای پردازشگر مرکزی چگونه تعریف میشود (چند هسته روی یک قاب، چند چیپ درون یک بسته، چند بسته در یک سامانه و غیره)، تعریف واژه چندپردازی نیز میتواند تغییر کند.
این واژه گاهی به اجرای همزمان چند فرایند نرمافزاری گفته میشود. هرچند که واژه چندعملگری در این باره مناسبتر است چرا که منحصراً در مهندسی نرمافزار کاربرد دارد در حالی که چندپردازی بیشتر دربارهٔ واحد پردازش مرکزی چندسختافزاره کاربرد دارد.
ایده اصلی
ایده اصلی در پس بکارگیری چندپردازنده در یک سامانه این است که عملکرد چنین سامانههایی در مقایسه با سامانههای تکپرداز بسیار بیشتر است. اما این عملکرد به این سادگیها حاصل نخواهد شد و برای این منظور سامانه باید همه موارد زیر را همزمان داشته باشد:
- پشتیبانی مادربورد: مادربورد باید سوکتهای کافی برای تراشههای اضافه و تراشهای برای بکارگیری پردازندهها داشته باشد.
- پشتیبانی پردازنده: تنها برخی از پردازندهها میتوانند در سامانههای چندپرداز مورد استفاده قرار گیرند.
- پشتیبانی سیستمعامل: سیستمعاملی که از چندپردازی پشتیبانی کُنَد. مانند ویندوز انتی یا یونیکس
تقارن پردازش
یکسان بودن واحدهای پردازش مرکزی و شیوه بکارگیری آنها توسط سیستمعامل، تعیینکننده متقارن یا نامتقارن بودن پردازش است. برای نمونه، دستورها هسته سیستمعامل ممکن است تنها توسط یک واحد پردازش مرکزی اجرا شود و دستورها کاربر به نحو مشخصی بین سایر پردازندهها توزیع شود. طراحی سامانههای چندپرداز در صورتی که چنین محدودیتهایی وجود داشته باشد سادهتر است اما عملکرد این نوع سامانهها در مقایسه با سامانههایی که واحدهای پردازش مرکزی در آنها یکسان به کار گرفته میشود و هر واحد پردازش مرکزی میتواند توسط هسته سیستمعامل یا برنامههای کاربردی به کار گرفته شود ضعیفتر است.
سیستمعامل سان(SunOS v۴) نامتقارن و سیستمعاملهای سولاریس و ویندوز انتی متقارن هستند.
درگیری پردازشگرها
- سامانههای چندپرداز سخت-درگیر دارای چند واحد پردازش مرکزی هستند که در سطح باس (bus) به هم مربوط شدهاند.
- سامانههای چندپرداز نرم-درگیر (که معمولاً با عنوان خوشه از آنها یاد میشود) شامل چند کامپیوتر جداگانه هستند که توسط سامانههای ارتباطی با سرعت بالا (معمولاً گیگابیت اترنت) به هم وصل شدهاند.
برنامهنویسی چندتاری و سامانههای چندپردازنده
برای اینکه سامانه چندپرداز بتواند به خوبی به کار گرفته شود علاوه بر موارد بالا نیاز است که نرمافزار ما برای سامانه چندپرداز بهینه شود. در چنین نرمافزاری نیاز است چند فرایند (برای نمونه چند تابع از کد برنامه) همزمان اجرا شوند که به آن چندتاری میگویند. اجرای همزمان چند فرایند به سیستمعامل اجازه میدهد تا بتواند اجرای آنها را به بیش از یک پردازنده بسپارد. اگر نرمافزار کاربردی مزبور نتواند همزمان چند فرایند را اجرا کند نمیتواند از مزایای سامانههای چندپرداز بهره بگیرد هرچند که با اجرای همزمان چند نرمافزار همچنان میتوانید از پردازندههای اضافی بهره بگیرید.
پروتکل ارتباط بین پردازندهها
برای این که پردازندهها در یک سامانه چندپرداز با هم ارتباط داشته باشند باید از یک پروتکل استاندارد پیروی کنند. این پروتکل ارتباط بین پردازندهها با هم و با مادربورد را ممکن میسازد. اینتل پروتکل APIC را به نام خود ثبت کردهاست (ثبت اختراع). در نتیجه ایامدی (AMD) و سایریکس (Cyrix) با اینکه میتوانند پردازندههای سازگار با اینتل بسازند پردازندههای آنها بر روی مادربوردهای اینتل کار نخواهد کرد. این یکی از دلایلی است که اینتل بازار سامانههای چندپردازنده را در اختیار گرفتهاست.
شایان ذکر است که ایامدی و سایریکس از استاندارد OpenPIC استفاده میکنند.