پردازش موازی روشی در محاسبه اجرای دو یا چند پردازنده (CPU) برای رسیدگی به بخشهای جداگانه یک کار کلی است. جدا کردن بخشهای مختلف یک کار در میان چندین پردازنده به کاهش زمان اجرای یک برنامه کمک میکند. هر سیستمی که بیش از یک CPU دارد، میتواند پردازش موازی و همچنین پردازندههای چند هستهای را که امروزه معمولاً در رایانهها یافت میشوند، انجام دهد.
پردازندههای چند هستهای، تراشههای آیسی هستند که دارای دو یا چند پردازنده برای عملکرد بهتر، کاهش مصرف انرژی و پردازش کارآمدتر وظایف متعدد هستند. این تنظیمات چند هسته ای شبیه به نصب چندین پردازنده جداگانه در یک رایانه است. اکثر کامپیوترها ممکن است دو تا چهار هسته داشته باشند. افزایش تا 12 هسته
پردازش موازی معمولاً برای انجام وظایف و محاسبات پیچیده استفاده می شود. دانشمندان داده معمولاً از پردازش موازی برای کارهای محاسباتی و داده های فشرده استفاده می کنند.
نحوه عملکرد پردازش موازی
به طور معمول یک دانشمند کامپیوتر یک کار پیچیده را با یک ابزار نرم افزاری به چند قسمت تقسیم می کند و هر قسمت را به یک پردازنده اختصاص می دهد، سپس هر پردازنده قسمت خود را حل می کند و داده ها توسط یک ابزار نرم افزاری برای خواندن راه حل یا اجرای کار دوباره جمع می شوند.
معمولاً هر پردازنده به طور معمول کار می کند و عملیات را به موازات دستورالعمل انجام می دهد و داده ها را از حافظه رایانه بیرون می کشد. پردازندهها همچنین برای برقراری ارتباط با یکدیگر به نرمافزار متکی خواهند بود تا بتوانند در مورد تغییرات در مقادیر دادهها همگام بمانند. با فرض اینکه همه پردازندهها با یکدیگر هماهنگ باشند، در پایان کار، نرمافزار تمام قطعات داده را در کنار هم قرار میدهد.
کامپیوترهای بدون چندین پردازنده همچنان می توانند در پردازش موازی استفاده شوند، اگر آنها با هم شبکه شده و یک خوشه را تشکیل دهند.
انواع پردازش موازی
انواع مختلفی از پردازش موازی وجود دارد، دو نوع از رایج ترین آنها شامل SIMD و MIMD است. SIMD یا دادههای چندگانه تک دستورالعمل، شکلی از پردازش موازی است که در آن یک کامپیوتر دارای دو یا چند پردازنده از مجموعه دستورالعملهای یکسانی است در حالی که هر پردازنده دادههای متفاوتی را مدیریت میکند. SIMD معمولاً برای تجزیه و تحلیل مجموعه داده های بزرگی که بر اساس معیارهای مشخص شده یکسان هستند استفاده می شود.
MIMD یا دادههای چندگانه دستورالعملهای چندگانه، شکل رایج دیگری از پردازش موازی است که هر رایانه دارای دو یا چند پردازنده خاص خود است و دادهها را از جریانهای داده جداگانه دریافت میکند.
نوع دیگری از پردازش موازی که کمتر مورد استفاده قرار می گیرد شامل MISD یا داده های تک دستورالعمل چندگانه است که در آن هر پردازنده از الگوریتم متفاوتی با داده های ورودی یکسان استفاده می کند.
تفاوت بین پردازش سریال و موازی
در جایی که پردازش موازی می تواند چندین کار را با استفاده از دو یا چند پردازنده انجام دهد، پردازش سریال (که پردازش متوالی نیز نامیده می شود) تنها یک کار را در یک زمان با استفاده از یک پردازنده تکمیل می کند. اگر کامپیوتری نیاز به انجام چندین کار محول شده داشته باشد، آنگاه یک کار را در یک زمان انجام می دهد. به همین ترتیب، اگر کامپیوتری که از پردازش سریالی استفاده می کند، نیاز به انجام یک کار پیچیده داشته باشد، در مقایسه با یک پردازنده موازی، زمان بیشتری می برد.
تاریخچه پردازش موازی
در اولین کامپیوترها، تنها یک برنامه در یک زمان اجرا می شد. یک برنامه محاسباتی فشرده که اجرای آن یک ساعت و همچنین برنامه کپی نوار که اجرای آن یک ساعت طول می کشد، در مجموع دو ساعت طول می کشد. شکل اولیه پردازش موازی امکان اجرای درون لایه ای هر دو برنامه را با هم فراهم می کرد. کامپیوتر یک عملیات ورودی/خروجی را شروع میکند و در حالی که منتظر تکمیل عملیات بود، برنامه فشردهسازی پردازنده را اجرا میکند. کل زمان اجرای این دو کار کمی بیش از یک ساعت خواهد بود.
پیشرفت بعدی چندبرنامهنویسی بود. در یک سیستم چندبرنامهنویسی، برنامههای متعددی که توسط کاربران ارسال میشد، هر کدام مجاز به استفاده از پردازنده برای مدت کوتاهی بودند. برای کاربران، به نظر می رسد که همه برنامه ها به طور همزمان اجرا می شوند. مشکلات بحث منابع ابتدا در این سیستم ها به وجود آمد. درخواست های صریح برای منابع منجر به مشکل بن بست می شود، جایی که درخواست های همزمان برای منابع به طور موثر مانع از دسترسی برنامه به منبع می شود. رقابت برای منابع روی ماشینهایی که دستورالعملهای مربوط به تساوی را ندارند، منجر به روال بخش حیاتی میشود.
پردازش برداری تلاش دیگری برای افزایش عملکرد با انجام بیش از یک کار در یک زمان بود. در این مورد، قابلیتهایی به ماشینها اضافه شد تا به یک دستورالعمل اجازه دهد تا دو آرایه از اعداد را جمع (یا تفریق، یا ضرب یا دستکاری کند). این در کاربردهای مهندسی خاصی که داده ها به طور طبیعی به شکل بردارها یا ماتریس ها وجود دارند، ارزشمند بود. در برنامه های کاربردی با داده های کمتر شکل گرفته، پردازش برداری چندان ارزشمند نبود.
مرحله بعدی در پردازش موازی، معرفی چند پردازش بود. در این سیستم ها، دو یا چند پردازنده کارهایی را که باید انجام شود به اشتراک می گذاشتند. اولین نسخه ها دارای پیکربندی master/slave بودند. یک پردازنده (مستر) به گونه ای برنامه ریزی شده بود که مسئول تمام کارهای سیستم باشد. دیگری (غلام) فقط وظایفی را که ارباب محول کرده بود انجام می داد. این ترتیب ضروری بود زیرا در آن زمان نحوه برنامه ریزی ماشین ها به گونه ای که آنها بتوانند در مدیریت منابع سیستم همکاری کنند، درک نشده بود.
SMP و MMP
حل این مشکلات منجر به سیستم متقارن چند پردازشی (SMP) شد. در یک سیستم SMP، هر پردازنده به یک اندازه توانایی و مسئولیت مدیریت جریان کار در سیستم را دارد. در ابتدا، هدف این بود که سیستمهای SMP در نظر برنامهنویسان دقیقاً مشابه یک پردازنده واحد و سیستمهای چندبرنامهنویسی به نظر برسند. با این حال، مهندسان دریافتند که عملکرد سیستم را می توان تا حدودی در محدوده 10-20٪ با اجرای برخی دستورالعمل های نامنظم افزایش داد و برنامه نویسان را ملزم کرد که با افزایش پیچیدگی مقابله کنند (مشکل تنها زمانی قابل مشاهده است که دو یا چند برنامه به طور همزمان خوانده شوند. و همان عملوندها را بنویسید؛ بنابراین بار رسیدگی به پیچیدگی فزاینده فقط بر دوش تعداد بسیار کمی از برنامه نویسان و سپس فقط در شرایط بسیار تخصصی می افتد). این سوال که ماشینهای SMP چگونه باید روی دادههای مشترک رفتار کنند هنوز حل نشده است.
با افزایش تعداد پردازندهها در سیستمهای SMP، زمان انتشار دادهها از یک قسمت از سیستم به تمام قسمتهای دیگر نیز افزایش مییابد. وقتی تعداد پردازندهها در محدوده چند ده باشد، مزیت عملکرد افزودن پردازندههای بیشتر به سیستم برای توجیه هزینه اضافی بسیار ناچیز است. برای دور زدن مشکل زمان انتشار طولانی، یک سیستم ارسال پیام که قبلا ذکر شد ایجاد شد. در این سیستمها، برنامههایی که دادهها را به اشتراک میگذارند، پیامهایی را برای یکدیگر ارسال میکنند تا اعلام کنند که یک مقدار جدید به عملوندهای خاص اختصاص داده شده است. به جای پخش مقدار جدید یک عملوند در تمام بخشهای یک سیستم، مقدار جدید فقط به برنامههایی منتقل میشود که نیاز به دانستن مقدار جدید دارند. به جای حافظه مشترک، شبکه ای برای پشتیبانی از انتقال پیام ها بین برنامه ها وجود دارد. این سادهسازی به صدها و حتی هزاران پردازنده اجازه میدهد تا در یک سیستم با هم کار کنند. از این رو چنین سیستم هایی نام سیستم های پردازش انبوه موازی (MPP) داده شده است.
موفقترین برنامههای MPP برای مشکلاتی بودهاند که میتوان آنها را به بسیاری از عملیات مجزا و مستقل بر روی مقادیر زیادی داده تقسیم کرد. در داده کاوی نیاز به انجام چندین جستجو در یک پایگاه داده ایستا وجود دارد. در هوش مصنوعی، مانند یک بازی شطرنج، نیاز به تجزیه و تحلیل چندین گزینه وجود دارد. اغلب سیستمهای MPP به صورت دستههایی از پردازندهها ساخته میشوند. در هر خوشه، پردازندهها مانند یک سیستم SMP تعامل دارند. فقط بین خوشه ها پیام ها ارسال می شود. از آنجایی که عملوندها ممکن است از طریق پیام ها یا از طریق آدرس های حافظه آدرس دهی شوند، برخی از سیستم های MPP برای آدرس دهی حافظه غیریکنواخت، ماشین های NUMA نامیده می شوند.
برنامه نویسی ماشین های SMP نسبتاً ساده است. ماشین های MPP نیستند. ماشینهای SMP در تمام انواع مشکلات به خوبی عمل میکنند، و حجم دادههای درگیر خیلی زیاد نیست. برای مشکلات خاص، مانند داده کاوی از پایگاه های داده وسیع، فقط سیستم های MPP خدمت می کنند.
دیدگاهتان را بنویسید