اغلب سیستم های امروزی تک پردازنده ای هستند. یعنی فقط یک CPU دارند.

اما سیستم های چند پردازنده (که سیستم های موازی یا سیستم های اتصال قوی هم نام دارند)، در حال رشد هستند.

سیستم های چند پردازنده ای، چندین CPU دارند که ارتباط نزدیکی با هم داشته و از BUS کامپیوتر (درگاه)، ساعت و حتی حافظه و دستگاه های جانبی به طور اشتراکی استفاده میکنند.

سیستم های چند پردازنده ای

 

سیستم های چند پردازنده ای سه امتیاز عمده و اصلی دارند:

1- توان عملیاتی بالا

با افزایش تعداد پردازنده ها، کار بیشتری در حداقل زمان انجام میشود.

البته باید توجه داشت که اگر تعداد پردازنده N باشد، نسبت تسریع N نیست بلکه کمتر از N است.

وقتی چندین پردازنده بر روی وظیفه ای با هم همکاری میکنند، سربارهایی (OverHead) لازم است تا همه چیز به خوبی پیش برود.

این سربار، به اضافه تلاش برای دسترسی بیشتر به منابع مشترک، دستاورد مورد انتظار را از چند پردازنده ای کاهش میدهد.

به همین ترتیب، کارایی گروهی از N برنامه نویس، کمتر از مجموع کارایی همه آنهاست!

 

2- صرفه جویی اقتصادی

سیستم های چند پردازنده ای نسبت به تک پردازنده ای مقرون به صرفه تر هستند؛ زیرا میتوانند از دستگاه های جانبی، حافظه ثانویه و نیروی برق مشترکی استفاده کنند.

اگر چندین برنامه روی یک دسته از داده ها عمل کنند، خوب است که آن داده ها بر روی یک دیسک ذخیره شوند و پردازنده ها از آن به طور اشتراکی استفاده کنند.

 

3- افزایش قابلیت اعتماد

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

اگر 10 پردازنده داشته باشیم که یکی از آنها خراب شود، هر یک از 9 پردازنده باقی مانده باید کار آن پردازنده خراب را انجام دهند؛ لذا، کل سیستم 10% کندتر کار میکند.

این قابلیت توانایی برای ادامه کار، برای ارائه خدماتی مناسب با سطح بقاء سخت افزار، تنزل مطبوع (Graceful Degration) نام دارد.

سیستم هایی که برای تنزل مطبوع طراحی میشوند، تحمل کننده خطا (Fault Tolerant) نامیده میشوند.

 

 

ادامه دادن به فعالیت در شرایطی که یک خرابی در سیستم وجود دارد، نیازمند راهکاری است تا خطا را کشف کرده، تشخیص داده و در صورت امکان اصلاح نماید.

سیستم تَندِم با تکثیر سخت افزار و نرم افزار تضمین میکند که با وجود خرابی، سیستم به کارش ادامه دهد.

این سیستم از دو پردازنده یکسان تشکیل شده است که هر کدام حافظه محلی خاص خود را دارد.

این پردازنده ها از طریق یک گذرگاه به هم وصل هستند، یکی از آنها اصلی و دیگری پشتیبان است.

در نقطه کنترلی ثابتی از اجرای سیستم، اطلاعات حالت (State) هر کار (از جمله یک کپی از تصویر حافظه)، از ماشین اصلی به ماشین پشتیبان کپی میشود.

در صورت خرابی، کپی پشتیبان فعال شده، از آخرین نقطه کنترلی شروع به اجرا میکند.

بدیهی است که این راه حل گران تمام میشود، زیرا تکثیر سخت افزار بسیار قابل توجه است.

 

متداولترین سیستم های چند پردازنده ای امروزی از مدل چند پردازشی متقارن (Symmetric MultiProcessing یا SMP) استفاده میکنند که در آنها هر پردازنده از کپی یکسانی از سیستم عامل استفاده میکنند و این کپی ها در صورت لزوم با یکدیگر ارتباط برقرار میکنند.

بعضی از سیستم ها از مدل چند پردازشی نامتقارن (Asymmetric MultiProcessing) استفاده میکنند که در آن، هر پردازنده وظیفه مشخصی دارد.

یک پردازنده اصلی، سیستم را کنترل میکند و سایر پردازنده ها از پردازنده اصلی دستور میگیرند یا وظیفه مشخصی دارند.

این طرح، رابطه رئیس / مرئوس را تعریف میکند؛ پردازنده اصلی (رئیس)، عمل زمان بندی را انجام داده و کار را به سایر پردازنده ها تخصیص میدهد.

 

معنای SMP این است که تمام پردازنده ها همتا و نظیر هم هستند. یعنی رابطه رئیس / مرئوس بین آنها وجود ندارد و هر پردازنده به طور همزمان یک کپی از سیستم عامل را اجرا میکند.

فایده این مدل این است که چندین پردازنده میتوانند به طور همزمان اجرا شوند، به طوری که کارایی کاهش نیابد. البته باید مطمئن شویم که داده ها به پردازنده مناسبی میرسند.

هچنین چون پردازنده ها مجزا هستند، ممکن است یکی از آنها بیکار باشد ولی دیگری کار زیادی داشته باشد. در نتیجه عدم کارایی بروز خواهد کرد.

اگر پردازنده ها ساختمان داده های مشترکی داشته باشند، از این عدم کارایی اجتناب میشود.

این حالت از سیستم چند پردازنده ای اجازه میدهد تا فرآیند و منابع (نظیر حافظه)، به طور پویا بین پردازنده های مختلف، مشترک شود و در نتیجه پراکنش (Variance) بین پردازنده ها کمتر میشود.

 

تفاوت چند پردازشی متقارن و چند پردازشی نامتقارن

تفاوت بین چند پردازشی متقارن و چند پردازشی نامتقارن به سخت افزار یا نرم افزار برمیگردد.

سخت افزار خاص، میتواند پردازنده های چندگانه را به شیوه های گوناگونی پیکربندی کند یا نرم افزار میتواند طوری نوشته شود که اجازه دهد یکی از پردازنده ها به عنوان پردازنده رئیس و بقیه مرئوس باشند.

 

با ارزان شدن ریزپردازنده ها و قدرتمندتر شدن آنها، وظایف دیگری از سیستم های عامل به عهده پردازنده های مرئوس (پشتیبان یا back-end) گذاشته میشود.

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

به این ترتیب، سربار زمان بندی دیسک از پردازنده برداشته میشود.

در صفحه کلید های PC، ریزپردازنده ای وجود دارد که فشردن کلیدها را به کدهایی تبدیل میکند که باید به پردازنده ارسال شوند.

در واقع باید در نظر داشت که، این نوع از کاربرد ریزپردازنده متداول شده است و به عنوان چند پردازنده ای تلقی نمیشود.