چندپردازشی

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