نمودار یک سیستم چندپردازی متقارن
**چندپردازی متقارن** شامل سیستم سخت‌افزاری و نرم‌افزاری چندپردازنده‌ متقارنی می‌شود که در آن دو پردازنده ایدئال یا بیشتر در تماس با یک حافظه اصلی اشتراکی دسترسی کاملی به ادوات ورودی/خروجی دارند و به وسیلهٔ یک سیستم عملیاتی مجزا در نظر گرفته می‌شوند که همه پردازنده‌ها در آن به صورت برابر برخورد کرده با ذخیره مواردی با اهداف خاص همراه‌ هستند. اکثر سیستم‌های چندپردازی امروزه یک معماری SMP را به کار می‌بندند. در مورد پردازنده‌های چندهسته‌ای، معماری SMP به هسته‌ها اعمال شده و آن‌ها را به صورت پردازنده‌های جداگانه مطرح می‌سازد.

Design
------

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

> چالش‌های جدی برنامه‌نویسی با توجه به نوع معماری مطرح شده زیرا نیازمند دو حالت متمایز برنامه‌نویسی است؛ یکی برای خود CPUها و یکی هم برای ارتباط درونی میان CPUها. یک زبان برنامه‌نویسی متداول ممکن است توانایی قسمت‌بندی جریان کاری را نیز داشته باشد، اما همچنین با درک موقعیت حافظه نیز همراه است که در معماری مبتنی بر گره شدیدتر مطرح شده‌است.  
> 
> 
> 

سیستم‌های SMP به هر پردازنده یا کاری برای وظیفه صرف نظر از اینکه داده کجای حافظه باشد اجازه فعالیت می‌دهد. این موضوع نیز در نظر گرفته شده که هر وظیفه در سیستم در زمان اجرا با دو پردازنده یا بیشتر به صورت هم‌زمان همراه است. با حمایت سیستم عملیاتی مناسب، سیستم‌های SMP می‌توانند به سادگی وظایف را در میان پردازنده‌ها جابه‌جا کنند تا کارآمدی جریان کاری را متعادل سازند.

تاریخچه
-------

سیستم تولید اولیه با پردازنده‌های ایدهآل چندگانه b5000 است که در حوالی سال ۱۹۶۱ عمل می‌کرده‌است. با وجود این در زمان اجرای کار، این مورد نامتقارن بوده و با یک
پردازنده محدود به کاربرد برنامه‌ها در حین اینکه دیگر پردازنده‌ها سیستم عملیاتی و تداخلهای سختافزاری را در نظر می‌گیرند می‌شد.

IBM سیستم‌های رایانهای با پردازنده دوگانه را براساس مدل سیستم/۳۶۰ و مدل ۶۷ مرتبط در نظر می‌گرفت؛ و سیستم‌های عملیاتی ۶۷–۲ که بر این دستگاه‌ها سوار می‌شد OS/360 از نوع M65MP و TSS/360 بود. دیگر نرمافزار توسعه یافته در دانشگاه‌ها که قابل اشاره است سیستم پایانهی میشیگان است که هر دو CPU را به کار می‌بست. هر دو پردازنده ممکن است به کانال‌های داده‌ها دسترسی داشته و I/O را آغاز کنند. در بخش OS/360 m65mp لوازم جانبی اصولاً به پردازنده‌های دیگر می‌رسد زیرا سیستم عملیاتی روی هر دو پردازنده عمل می‌کند. مراقب MTS قابلیت اجرا روی هر دو CPU را در سیستم IBM مربوط به مدل ۶۷–۲ را داراست. قفلهای ناظر کوچک بوده و برای محافظت از ساختارهای داده متداول مطرح می‌شوند که ممکن است دسترسی هم‌زمان از هر CPU داشته باشند.

سیستم VAX چندپردازنده نخست شرکت تجهیزات دیجیتال، VAX-11/782 نامتقارن بود، اما سیستم‌های بعدی چندپردازی VAX به صورت SMP است. نخستین استقرار یونیکس SMP تجاری مبتنی بر سیستم‌های اطلاعاتی هانیول ایتالیایی XPS-100 است که به وسیلهٔ دن جیلن در شرکت VAST در سال ۱۹۸۵ طراحی شد. طرح او ۱۴ پردازنده را پشتیبانی می‌کرد، اما متناظر با محدودیتهای الکتریکی، بزرگترین نسخهی بازاریابیشدهی آن یک سیستم پردازشگر دوگانه بود. سیستم عملیاتی به شکل خاصی به دست آمده و به وسیلهٔ شرکت VAST در کد SysVr3 درون AT&T مورد توجه قرار می‌گیرد.

کاربردها
--------

سیستم‌های به اشتراک‌گذاری زمان و سروری می‌توانند اغلب اوقات SMP را بدون تغییرات در مورد کاربردها به کار برند، چرا که آن‌ها ممکن است فرایندهای چندگانه را به صورت موازی اجرا کرده و سیستمی با بیش از این پردازش در نظر گیرد که روی پردازنده‌های مختلف عملیات‌های گوناگون را در نظر گیرد.

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

برنامه‌های چندرشتهای می‌تواند در سیستم‌های سرور و به اشتراک‌گذاری زمانی به کار رود که از چندرشتهای بود پشتیبانی می‌کند و آن‌ها را در کاربردی‌سازی پردازنده‌های چندگانه یاری دهد.

در SMP، همهی پردازنده‌ها در جعبهای یکسان با یک پایانه یا کلید پیوند خورنده است. برخی از مؤلفه‌هایی که به اشتراک گذارده شده حافظهای جهانی، دیسکها و ادوات ورودی/خروجی است. تنها یک رونوشت از OS در همهی پردازنده‌ها اعمال شده و OS باید برای برگرفتن مزیتهای این پیکربندی مورد توجه قرار گیرد. برخی از این مزایا شامل روش‌های مقرون به صرفه جهت افزایش خروجی است. برای حل مسائل مختلف و
وظایف مورد نیاز، SMP پردازنده‌های چندرشتهای را به شکلی اعمال می‌کند تا یک مسئله به نام برنامهنویسی موازی مورد نظر قرار گیرد. همچین نه تنها سیستم تکپردازنده در یک SMP به کار می‌رود، بلکه می‌تواند برای بهاشتراکگذاری داده نیز مورد توجه قرار گیرد؛ با این مورد گفته شده همهی داده‌ها به صورت پیوسته به وسیلهٔ منطق جاسوسی مورد توجه قرار می‌گیرند که به عنوان برگرفتن پایانهای نامیده می‌شود.

با وجود همهی این اطلاعات گفته شده، محدودیتهایی برای مدل SMP وجود دارد. برای مثال، چون SMP نیاز به پردازندهای دارد که چندپردازندگی را توانمند می‌سازد، پردازنده‌هایی که نقطهی شناوری را در نظر گرفت نمی‌تواند در SMP به کار رود. علاوه بر این، برخی محدودیتها در مورد مقیاسپذیری SMP متناظر با انسجام حافظهٔ نهان و اشیای بهاشتراکگذاشته است.

برنامه‌نویسی
------------

سیستم‌های تکپردازنده و SMP نیازمند روش‌های متفاوت برنامهنویسی برای بدستآوردن بیشینه عملکرد هستند. اجرای برنامه‌ها در سیستم‌های SMP ممکن است افزایشی در عملکرد را حتی هنگامی که برای سیستم‌های تکپردازنده مدنظرند به همراه داشته باشد. این بدین خاطر است که وقفه‌های سختافزاری معمولاً اجرای برنامه را معلق می‌کنند درحالی‌که هستهای که آن را سامان می‌دهد می‌تواند به جای آن روی پردازندهی منفردی انجام شود. این اثر در اکثر برنامه‌ها به حدی نیست که افزایش عملکرد به صورت اجرای هموارتر برنامه مدنظر باشد. برخی برنامه‌های کاربردی، به خصوص کامپایلرها و برخی پروژه‌های رایانهای توزیعشده با توجه به عامل تعداد پردازنده‌های اضافی سریعتر انجام می‌شوند.[].

برنامه نویسان سیستمی باید پشتیبانی برای SMP در سیستم عملیاتی بیایند؛ در غیر اینصورت پردازنده‌های اضافی مجرد مانده و عملکردهای سیستم به عنوان سیستم تکپردازنده حفظ می‌شود.

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

عملکرد
------

هنگامی که بیش از یک برنامه در هر موقعیت اجرا می‌شود، یک سیستم SMP به صورت خاص عملکرد بهتری نسبت به یک تکپردازنده دارد، زیرا برنامه‌های مختلف می‌توانند به صورت هم‌زمان بر سیپییوهای مختلف اثر بگذارد. به صورت مشابه، چندپردازی نامتقارن معمولاً تنها یک پردازنده را مجاز می‌کند تا برنامه یا وظیفهی خاص مرتبط با آن را به یکباره مورد توجه قرار دهد. برای مثال، AMP می‌تواند در تخصیص وظایف خاص به سیپییو مبتنی بر اهمیت و اولویت تکمیل وظیفه مورد توجه قرار بگیرد. AMP به خوبی پیش از اینکه SMP در مورد سیپییوهای چندگانه مطرح شود ایجاد شده که توضیحدهندهی فقدان عملکرد براساس مثال فراهم شده‌است.

در مواردی که در آن یک محیط SMP در مورد بسیاری از وظیفه‌ها صورت گرفت، اجراکننده‌ها اغلب فقدان کارایی سختافزاری را تجربه می‌کنند. برنامه‌های نرمافزاری برای
زمانبندی وظایف توسعه داده شدهاند تا بهرهوری نرمافزاری به بیشترین پتانسیل خود برسد. بسته‌های نرمافزاری مناسب می‌توانند این پتانسیل بالا را با زمانندی هر cpu به صورت جداگانه در نظر گرفته، همچنین توانایی پیوند دادن دستگاه‌های SMP و خوشه‌ها را فراهم می‌کند.

دسترسی به RAM به صورت سری است؛ این مورد و انسجام حافظهی نهان باعث می‌شود که عملکرد خاصی برای پردازنده‌های اضافی در سیستم در نظر گرفته شود.

سیستم‌ها
--------

### سیستم‌های سطح ورودی

تا پیش از سال ۲۰۰۶، سرورها و پایگاه‌های کاری در سطح ورودی با دو پردازنده در بازار SMP غالب شدهاند. با معرفی پردازنده‌های چندهستهای، SMP در اکثر رایانه‌های لپتاپی و میزی جدید دیده می‌شود. از سال ۲۰۱۶، اکثر سیستم‌های SMP در سطح ورودی پیکربندی مجموعه دستورالعمل x86 را استفاده کرده و براساس پردازنده‌های AMD APU و اینتلکور کار می‌کنند. سرورها پردازنده‌های مشابهی هستند و دیگر گزینه‌های در دسترس شامل سیستم‌های خرد سان اولتراSPARC، فوجیتسو SPARC64 و پس از آن، PS SGI MI، ایتانیوم اینتل، هیولت پاکارد با Compaq می‌شود که آلفای DEC تجهیزات دیجیتال، IBM پاور و PowerPC به دست دادهاند. در همهی موارد، این سیستم‌ها در نسخه‌های تکپردازنده نیز در دسترس هستند.

مزیتها/معایب
------------

سیستم‌های SMP اولیه مادربوردهایی همراه با دو سوکت سیپییو در نظر می‌گیرد؛ یکی از مادربوردهای ابتکاری اولیه با سوکتهای چندگانه ABIT BP6 بود. اخیراً، تولیدکنندگان میکروپردازنده ادوات سیپییویی با دو پردازنده یا بیشتر را در یک وسیله در نظر گرفتند که برای مثال ایتانیوم، پاور، اولتراSPARC، اوپترون، آتلون، هسته۲ و زئون همگی دارای هسته‌های مختلف بودند. آتلون و هسته۲ چندپردازنده‌هایی هستند که سازگار با سوکت خاص همراه با تنوع تکپردازنده‌اند، بنابراین یک مادربورد سوکتی دوگانه بیش از این برای استقرار یک ماشین SMP در سطح ورودی مورد نیاز نیست. این مورد باید اشاره شود که طراحی SMP در سطح ورودی از لحاظ فنی با طرحهای ccNUMA همراه است، اگرچه آن‌ها می‌توانند به عنوان SMP برای تلفات خاصی در عملکرد طراحی شود. سیستم‌های مبتنی بر SMP با اتصال دادن سیستم‌های کوچکتر با یکدیگر ایجاد می‌شود. مثالی از این موضوع نرمافزار توسعهداده شده به وسیلهٔ ScaleMP است.

با معرفی ARMهای SoC کورتکس-A9 چندهستهای، چندپردازنده‌های ارزانقیمتی به صورت متقارن در سیستم جاسازی شدند تا در شکل گوشیهای هوشمند و تبلتها با پردازندهی چندهستهای فعالیت کنند.

### سیستم‌های در سطح میانی

SMP در ابتدا مستقرشده D825 در سال ۱۹۶۲ مطرح شده‌است. این مورد بعداً در دیگر چارچوبها نیز مطرح شده‌است. سرورهای در سطح میانی، به کمک چهار تا هشت پردازنده، می‌توانند با زئون اینتل MP، اوپترون AMD 800 و ۸۰۰۰ سری و اولتراSPARC ذکرشده در نظر گرفته شوند. سیستم‌های با انتهای بالا نیز با شصت پردازنده یا بیشتر در نظر گرفته می‌شود که در تمام پردازنده‌های فوق در دسترس هستند.

سیستم‌های رایانهای متوالی ماشینهای SMP را به کمک اینتل ۸۰۳۸۶ در نظر می‌گیرند. برخی سیستم‌های کوچکتر موجودند، امابازار اصلی SMP به صورت x86 با فناوری پنتیوم اینتل در سال ۱۹۹۵ در پشتیبانی تا ۲ پردازنده ایجاد شد. موارد اینتل پشتبانی SMP تا چهار پردازنده را نیز صورت می‌دهند. پس از آن، پنتیوم ۲ اینتل و پنتیوم ۳ اینتل سیستم‌های با سی پی یوی دوگانه را در نظر گرفتند که برای سلرونهای متناظر مطرح بود. این مورد به وسیلهٔ زئون پنتیوم اینتل و پردازنده‌های زئون ۳ نیز با بیش از ۴ پردازنده در یک سیستم قابلیت استفاده دارند. در سال ۲۰۰۱، AMD توانست آتلون MP یا سی پی یوی چندپردازنده را همراه با چیپستهای مادربورد 760MP به عنوان پیشنهاد اولیه در بازار پردازنده دوگانه به کار بندد. اگرچه برخی سیستم‌های بزرگتر نیز ساخته شدند، آن‌ها همگی به وسیلهٔ محدودیت آدرس دهی ۶۴ گیگابایتی تحت تأثیر بودند. با معرفی حافظهی ۶۴ بیتی اوپترون AMD-64 در سال ۲۰۰۳ و اینتل ۶۴ در سال ۲۰۰۵، سیستم‌ها توانایی جهتدهی میزان بیشتری از حافظه را دارند؛ محدودهی آدرسپذیری 16 EiB نیز در آینده نه چندان دور دور از انتظار نیست.

جایگزینها
---------

دیاگرام یک سیستم SMP متداول. سه پردازنده به ماژول حافظه مشابه از طریق یک پایانهی سیستمی یا کلید مقطعی متصل شدهاند.
SMP یک سیستم اشتراکی منفرد را به کار می‌بندد که نشاندهندهی یکی از سبکهای اولیهی پیکربندی دستگاه چندپردازنده است و معمولاً برای ساخت رایانه‌های کوچکتر همراه با بیش از ۸ پردازنده در نظر گرفته می‌شود.

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

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

SMP متغیر
---------

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

پروژه Kal-El که به وسیله NVIDIA طرح شده نخستین SoC در مورد استقرار این فناوری vSMP جدید محسوب می‌شود. این فناوری نه تنها توان مصرفی موبایل را طی حالت استندبای کاهش نمی‌دهد، بلکه همچنین عملکرد هستهی دیگر را طی کاربرد فعال یا موارد کاری سنگین افزایش می‌دهد. در کل این فناوری نیاز به افزایش در عملکرد عمر باتری را طی کاربرد فعال و استندبای با کاهش مصرف توان در پردازنده‌های موبایلی را می‌رساند.

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

* انسجام حافظهی پنهان: هیچ پیامدی برای همزمانسازی حافظه‌های پنهان میان هسته‌های در حال فعالیت در فرکانس‌های مختلف دیده نمی‌شود چون vSMP هسته همراه ندارد و هسته‌های اصلی به صورت هم‌زمان فعالیت می‌کنند.
* کارایی OS: این مورد هنگامی که هسته‌های سی پی یو در فرکانس‌های غیرهمزمان مختلف عمل کنند غیرکارآمد است زیرا منجر به معضلات زمانبندی محتملی خواهد شد. با vSMP، سی پی یوی فعال در فرکانس مشابهی عمل کرد و زمانبندی OS بهینه می‌شود.
* بهینه‌سازی توان: در پیکربندی مبتنی بر ساعت غیرهمزمانسازی شده، هر هسته در صفحه توانی مختلف جهت ساماندهی تنظیمات ولتاژ برای فرکانس‌های مختلف عمل می‌کند. نتیجهی این موضوع بر عملکرد اثر دارد. فناوری vSMP توانایی این را دارد هسته‌ها را برای کاربرد اصلی و استندبای فعال و غیرفعال کند و مصرف کلی توان را کاهش دهد.

جستارهای وابسته
---------------

* Asymmetric multiprocessing
* Binary Modular Dataflow Machine
* Locale (computer hardware)
* Massively parallel
* Non-Uniform Memory Access
* Partitioned global address space
* Sequent Computer Systems
* Simultaneous multithreading, where functional elements of a CPU core are allocated across multiple threads of execution.
* Software lockout
* Xeon Phi

منابع
-----

1. ↑  Lina J. Karam, Ismail AlKamal, Alan Gatherer, Gene A. Frantz, David V. Anderson, Brian L. Evans (2009).
2. ↑  *Time Sharing Supervisor Programs* بایگانی‌شده در ۱۱ ژانویه ۲۰۱۱ توسط Wayback Machine by Mike Alexander (May 1971) has information on MTS, TSS, CP/67, and Multics
3. 1962
4. 1964 BRL Report
5. Variable SMP – A Multi-Core CPU Architecture for Low Power and High Performance. NVIDIA. 2011.

پیوند به بیرون
--------------

* History of Multi-Processing
* Practical Parallel Programming in Pascal
* Linux and Multiprocessing
* Multicore News blog
* AMD