باگسترش روزافزون استفاده از کامپيوتر براي کارهاي تحقيقاتي در دانشگاهها،مراكز تحقيقاتي و شركتهاي تجاري, نياز به پردازش سريعتر افزايش يافته وبه يك نياز اساسي تبديل شده است. امروزه پردازش موازي نقش بسيار جدي درمرتفعسازي اين نياز ايفا ميكند.
سرعتكامپيوترهاي شخصي كنوني نسبت به اجداد خود به طور سرسامآوري افزايشيافته است اما حتي اين سرعت نجومي نيز در اجراي برخي از برنامههايپيشرفته، كند است. از جمله عرصههايي كه احتياج به كامپيوترهايي با سرعتپردازش بسيار بالا دارند ميتوان به برنامههاي شبيهسازي در تحقيقاتهستهاي، نانو فناوري محاسباتي، برنامههاي پيشبيني وضعيت هوا،برنامههاي فيلمسازي کامپيوتري، برنامههاي ساخت انيميشن حرفهاي وبسياري از زمينههاي مختلف ديگر را نام برد كه همگي به سرعت پردازش بسيارزياد نياز دارند تا در يك زمان مناسب به نتيجه برسند.
يک راه حل براياين معضل، استفاده از سوپرکامپيوترها است. درست است که سرعت پردازشسوپرکامپيوترها بسيار بالاتر از كامپيوترهاي شخصي است اما استفاده از آنهادر در همه موارد مقرون به صرفه نيست؛ ضمن آنکه اين فناوري در انحصار بعضياز كشورهاي توسعهيافته است و ساير كشورها از دسترسي به اين تجهيزاتاستراتژيك محروم هستند.
راه حل ديگر در دستيابي به سرعت پردازش بسياربالا استفاده از روش پردازش موازي است. به بيان ساده در اين روش چندپردازنده معمولي با همكاري يکديگر به اجراي يك برنامه ميپردازند که طياين همكاري, برنامه با سرعت بالاتري اجرا ميشود.
پردازش موازي
همانطورکه اشاره شد از پردازش موازي در جهت افزايش قدرت کامپيوترها استفادهميشود. اما اصليترين استفاده از آن در حل مسايل و مدلهاي علمي و مهندسياست (شکل 1). از جمله اين حوزهها ميتوان به موارد زير اشاره کرد:
• فيزيک کاربردي, هستهاي, ذرات بنيادي, ماده چگال, فشارهاي بالا, گداخت هستهاي, فوتونيک و نانو
• اتمسفر, زمين و محيط زيست
• فناوري زيستي و ژنتيک
• زمينشناسي و زلزلهشناسي
• مهندسي مکانيک؛ از اندام مصنوعي تا مصنوعات فضايي
• مهندسي الکترونيک؛ طراحي مدار, ميکروالکترونيک
• علوم کامپيوتر و رياضي

شکل1: اين شکل تصاويري از دادههاي محاسباتي در رشتههاي مختلف را نمايش ميدهد.
نه تنها حل مسايل علمي احتياج به پردازش موازي دارد بلکه برخي ازنرمافزارهاي تجاري نيز به کامپيوترهاي سريع نياز دارند. بسياري از اينبرنامهها احتياج به پردازش حجم زيادي از داده به شکل بسيار پيچيده دارند.از جمله اين برنامهها ميتوان به موارد زير اشاره کرد:
• پايگاههاي عظيم داده و عمليات داده کاوي (Data Mining)
• اکتشاف نفت
• موتورهاي جستجوي وب, سرويسهاي تجاري تحت وب
• تصويربرداري و تشخيص پزشکي (شکل 2)
• طراحي و شبيهسازي دارو
• مديريت شرکتهاي ملي و چند مليتي
• مدلسازي مالي و اقتصادي
• واقعيت مجازي و گرافيک پيشرفته به خصوص در صنعت سرگرمي
• فناوري چند رسانهاي و شبکه ويديويي

شکل 2: تصاوير ايجاد شده توسط نرمافزارهاي
موازي
محاسبهموازي به معناي اجراي همزمان قسمتهاي مختلف يك برنامه در چند پردازنده بهمنظور حصول سريعتر نتايج است. در شکلهاي 3 و 4 تفاوت کلي پردازش ترتيبيبا پردازش موازي مشخص شده است.

شکل 3: در پردازش ترتيبي دستورات به ترتيب در پردازنده اجرا ميشوند و سرعت اجرا برابر با سرعت پردازنده است.

شکل4: در پردازش موازي دستورات در چند پردازنده اجرا ميشوند ولي سرعت اجراالزاماً برابر با تعداد پردازندهها ضربدر سرعت يک پردازنده نيست.
در بخشهاي مختلف کامپيوتر اعم از سختافزار و نرمافزار شکلميگيرد، بنابراين براي بررسي کليات محاسبه موازي بايد به جنبههاي مختلفسختافزاري و نرمافزاري آن پرداخت. در اين جا سعي ميکنيم به معرفي بعضياز اين جنبههاي درگير در مبحث موازيسازي بپردازيم.
سيستمهاي محاسبه موازي
قبلاز معرفي معماري کامپيوتر موازي به معرفي معماري کامپيوترهاي معمولي بانام معماري "فون نيومن" ميپردازيم. نام اين معماري برگرفته از اسمرياضيدان مجارستاني است که در سال 1945 الزامات يک کامپيوتر را معرفي کرد.از آن زمان تاکنون همه کامپيوترها از اين طرح اوليه استفاده ميکنند. اينطرح حاوي چهار واحد اصلي است که عبارتند از: حافظه, کنترل, محاسبه و منطق،و ورودي/خروجي. اين عوامل در شکل 5 مشخص شدهاند.

شکل 5: طرح ابتدايي کامپيوترهاي
معماري، واحد حافظه که از نوع دسترسي تصادفي با قابليت خواندن و نوشتناست براي ذخيره دستورات و دادهها استفاده ميشود. واحد کنترل دستورات رااز حافظه واکشي کرده و به طور ترتيبي عمليات را اجرا ميکند. واحد محاسبهو منطق، عمليات محاسباتي را اجرا ميکند.
رغموجود يک طرح ساده براي معماري اوليه کامپيوترهاي ترتيبي, در مبحثکامپيوترهاي موازي طرحهاي مختلفي وجود دارد. يکي از معروفترينتقسيمبنديها در اين زمينه, طبقهبندي Flynn است.
کامپيوترهاي معموليحاوي يک پردازنده هستند. در حالي که يکي از روشهاي محاسباتي، استفاده ازچند پردازنده در يک کامپيوتر است. طبقهبندي Flynn مربوط به بکارگيري يکيا چند پردازنده در يک کامپيوتر و نحوه بکارگيري آنها در پردازش دادههاست.
طبقهبنديFlynn ناظر بر معماري کامپيوترهاي حاوي يک و چند پردازنده است و آنها رابر اساس نحوه تعاملشان با دو بعد دستور (Instruction) و داده (Data) از هممتمايز ميکند. هر يک از اين دو بعد ميتواند فقط يکي از دو حالت ممکن تک(Single) و چند (Multiple) را داشته باشد. ترکيبات اين چهار حالت در جدول1 مشخص است.

جدول1: چهار حالت طرح طبقهبندي Flynn
دستور, تک داده (SSID)
اينمعماري براي يک کامپيوتر ترتيبي (غير موازي) است. در اين روش تنها يکجريان دستوري توسط يک پردازنده در طول هر پالس ساعت مورد عمل واقع ميشودو همينطور يک جريان داده در طول پالس ساعت مورد استفاده قرار ميگيرد. دراين روش دستورها به طور قطعي انجام ميشوند و وابسته به عمل پردازندهديگر نيستند. اين روش قديمي و امروزي بيشتر کامپيوترها، از سيستمهايMainframe قديمي گرفته تا PC امروزي است.
در شکل 6 به ترتيب اجراي يک دستور بر روي يک داده در هر مقطع زماني نمايش داده شده است.

شکل 6: ترتيب اجراي دستورات در گذر
دستور, چند داده (SIMD)
اينطرح, يکي از انواع کامپيوترهاي موازي است. در اين روش همه واحدهاي پردازشيک دستور مشترک را در طول هر پالس ساعت اجرا ميکنند. اما هر واحد پردازشميتواند روي چند عنصر داده مختلف عمل کند (شکل 7). اين روش براي حل مسايلخاص که از دادههايي با الگوي ثابت پيروي ميکنند, مناسب است. از جمله اينمسايل ميتوان به پردازش تصوير اشاره کرد. در اين روش اجراي دستورات همگامو قطعي است.

شکل 7: اجراي يک دستور بر روي چند داده در هر مقطع
SIMD داراي دو گونه معماري است که عبارتند از آرايهاي از پردازنده
(Processor Arrays) و خطلولههاي برداري (Vector Pipelines).
ازنوع اول ميتوان کامپيوترهاي CM-2, MasPar MP-1, MasPar MP-2 و ILLIAC IV(شکل 8) را نام برد در حالي که از نوع دوم ميتوان به کامپيوترهاي
IBM 9000, Cray X-MP, Cray Y-MP, Fujitsu VP, NEC SX-2 و Hitachi S820 اشاره کرد.

[COLOR=#808080]شکل 8: نمايي از کامپيوتر ILLIAC IV
پردازش گرافيک امروزي يا همان GPUها نيز از واحد اجراي دستورات SIMD بهره ميبرند.
[COLOR=#808080] دستور, تک داده (MISD)
دراين طرح موازي، يک جريان داده به چند واحد پردازش داده، ارسال ميشود. هرواحد پردازش به طور مستقل با جريانهاي دستور مستقل روي دادهها عملميکند (شکل9). تا کنون تعداد معدودي کامپيوتر موازي با اين روش ساخته شدهاست که از جمله ميتوان به کامپيوتر C.mmp کارنگي ملون اشاره کرد. از جملهکاربردهايي که براي اين روش ميتوان مثال زد يکي، اعمال چند ف_ * ل*_ ت ر فرکانسيروي يک جريان سيگنال و ديگري، اعمال چند الگوريتم رمزگذاري در باز کردن يکپيغام کد شده است. در هر دو مثال چند جريان دستوري روي يک جريان داده عملميکنند.

[COLOR=#808080]شکل 9: اجراي چند دستور بر روي يک داده در مقاطع زماني مختلف
دستور, چند داده (MIMD)
اين روش معمولترين طرح کامپيوتر موازي است و کامپيوترهاي مدرن به سمت اين معماري حرکت ميکنند.
دراين طرح هر پردازنده امکان اجراي چند جريان دستوري جداگانه را دارد و ايندستورات روي چند جريان داده مختلف اعمال ميشود (شکل 10). در اين طرح,عمليات اجرا ميتواند همگام يا نا همگام و قطعي يا غير قطعي باشد.سوپرکامپيوترهاي امروزي, کامپيوترهاي موازي خوشهاي (Cluster),کامپيوترهاي چند پردازنده SMP و PCهاي چند هستهاي امروزي از اين معمارياستفاده ميکنند. البته بيشتر کامپيوترهاي با معماري MIMD از زيرمؤلفههاي اجرايي SIMD بهره ميبرند.

[COLOR=#808080]شکل 10: اجراي چند دستور بر روي چند داده در مقاطع زماني مختلف
هايچند پردازنده به دو دسته ديگر نيز تقسيم ميشوند، به طوريكه اگر همهپردازندهها به طور يكسان بتوانند تمام دستورات سيستم عامل (مثلاًدستورات ورودي/خروجي) را اجرا كنند به آن "سيستم چند پردازنده متقارن" واگر بعضي از پردازندهها داراي امتياز بيشتر يا كمتر نسبت به سايرين باشندبه آن "سيستم چند پردازنده نامتقارن" گفته ميشود.
كارآيي نسبت به هزينه
يكسيستم موازي با n پردازنده معمولي كارايي كمتري نسبت به يك پردازنده باسرعت n برابر دارد اما ساخت سيستم موازي داراي قيمت نازلي است به طوري كهدر سالهاي اخير، بسياري از سوپرکامپيوترها بر پايه معماري موازي ساختهشدهاند.
براي برنامههايي كه هم محاسبات فراواني دارند و هم دارايمحدوديت زماني جهت اجرا هستند و خصوصاً ميتوان آنها را به n رشته(Thread) اجرايي تقسيم كرد، محاسبه موازي بهترين راه حل است.
براي دركبهتر مفهوم رشته (Thread)، فرض كنيد شما در حال شنيدن موسيقي از كامپيوتر،متني را تايپ ميكنيد و در حال دانلود كردن يك فايل نيز هستيد. براي انجامهمزمان اين سه وظيفه، سيستم عامل آنها را به تكههاي كوچك چند ميليثانيهاي تقسيم ميكند كه در هر لحظه پردازنده يكي از اين تكهها را اجراميكند در اين حالت به هر وظيفه يك رشته گفته ميشود.
موضوع کارآيي نسبت به هزينه، ناظر بر اندازهگيري اثربخشي پردازش موازي با چند پردازنده نسبت به استفاده از يک پردازنده ترتيبي است.
الگوريتمها
نبايدتصور شود كه محاسبه موازي تنها محتاج به فراهم كردن سختافزار مورد نيازو اتصال درست آنهاست. دشواري كار مشترك در جملهي زير نهفته است:
اگر حفر يك چاه توسط يك نفر در يك ساعت انجام شود آيا واقعاً شصت نفر ميتوانند چاه را در يك دقيقه حفر كنند؟
درعمل، دستيابي به افزايش خطي سرعت (افزايش سرعت متناسب با تعدادپردازندهها) بسيار مشكل است. اين مشكل ناشي از طبيعت ترتيبي بسياري ازالگوريتمها است به طوريكه قسمتهايي از يک الگوريتم قابل موازيسازي وقسمتهايي غير قابل موازيسازي است.
به قانون Amdahl که به بيان اين مطلب ميپردازد توجه کنيد:
فرضكنيد كه F=10% از يک الگوريتم قابليت موازيسازي ندارد اما بقيه الگوريتم به طور موازي توسط N=20 پردازنده اجرا ميشود. در اين حالت سرعت اجرايبرنامه (نسبت به زماني كه تنها روي يك پردازنده اجرا شود) 20 برابرنميشود بلکه مطابق شکل 11 با ضريب افزايش مييابد:

شکل
الگوريتمها به منظور استفاده از سختافزار موازي بايد دوباره طراحيشوند. برنامههايي كه در يك سيستم با پردازنده تكي درست كار ميكنند ممكناست در يك محيط موازي هرگز كار نكنند. اين بدان علت است كه چند كپي از يكبرنامه ممكن است با يكديگر تداخل كنند ( به طور نمونه تداخل در دسترسيهمزمان به يك محل از حافظه). بنابراين نياز اصلي يك سيستم موازي،برنامهنويسي دقيق مختص به خود است.
يكي از مسايل بحث برانگيز در زمينه پردازش موازي، افزايش سرعت فوق خطي
(SuperLinear Speedup) است. افزايش "سرعت فوق خطي" براي مبتديان يک مسئله گيجکننده است. چگونه ممکن است که يك سيستم n پردازندهاي بتواند با سرعتي بيشاز n برابر يك سيستم تك پردازندهاي به اجراي وظايف بپردازد. به عبارتسادهتر آيا ممکن است که يک سيستم دو پردازندهاي بتواند مثلاً با سرعت2.5 برابر سيستم تک پردازندهاي عمل کند؟
سرعت فوق خطي در عمل محالنيست و امکان رخ دادن آن وجود دارد هر چند که احتمال رسيدن به سرعت فوقخطي پايين است. دليل اصلي رسيدن به چنين سرعتي وجود حافظه کش در هرپردازنده است. حافظههاي کش باعث افزايش سرعت پردازنده در دسترسي بهدادهها ميشوند بنابراين، وقتي تعداد پردازندهها افزايش مييابد به هماننسبت حافظه کش سيستم افزايش مييابد و اين نيز باعث افزايش سرعت سيستم بانسبتي بيش از تعداد پردازندهها ميشود. به هر حال نحوه تقسيمبنديبرنامه جهت بكارگيري پردازندهها در اجراي برنامه، عامل تعيين كننده درسرعت اجراي برنامه است.
ارتباط درون رشتهاي
كامپيوترهاي موازي به طور نظري، بصورت ماشينهاي دسترسي تصادفي موازي
(PRAMs)مدل شدهاند. اگر چه مدل PRAM از نحوه اتصال داخلي بين واحدهاي محاسباتيصحبت نميكند اما با اين وجود براي تعيين حد بالاي موازيسازي يک مسئلهمفيد است. در حقيقت اتصال داخلي بين پردازندهها نقش مهمي را بازي ميكند.
پردازندههارا ميتوان با هم مرتبط كرده، به طوريكه بصورت تعاوني در حل يك مسئلهبكار گرفته شوند و يا ميتوان هر يك را به طور مستقل بكار گرفت به نحويكه يك پردازنده خاص قسمتهاي مختلف يك مسئله را بين ديگر پردازندههاتوزيع كرده و در آخر نتايج را جمعآوري كند كه به اين حالت اخير ProcessorFarm (مزرعه پردازندهها ) گفته ميشود.
به هر حال، طرق مختلفي جهتارتباط پردازندهها با يكديگر وجود دارد مانند حافظه اشتراكي (Sharedmemory)، همعرض (Crossbar)، گذرگاه اشتراكي (Shared Bus) و شبكهاي(Network) به طوريكه در حالت شبكهاي نيز بيشمار همبندي مثل ستارهاي،حلقهاي، درختي، ابر مكعبي و انواع بسيار ديگر وجود دارد.
روشهاي دسترسي به پردازش موازي ميتواند به روشهاي مختلف صورت ميگيرد که در اين جا چند مورد را نام ميبريم:
چند پردازندگي (Multiprocessing)
خوشهاي از كامپيوتر (Computer cluster)
سوپرکامپيوترهاي موازي (Parallel supercomputers)
محاسبات توزيع شده (Distributed computing)
نرمافزار موازي
تعدادبسياري از سيستمهاي نرمافزاري جهت برنامهنويسي كامپيوترهاي موازي طراحيشدهاند. اين سيستمها هم در سطح سيستم عامل و هم در سطح زبانهاي برنامهنويسي وجود دارند. آنها بايد ساز و كاري جهت تقسيم يك مسئله به چندوظيفه و تخصيص اين وظايف به پردازندهها داشته باشند. چنين ساز و كارهاييميتواند شامل موازيسازي ضمني و يا موازيسازي صريح باشد.
در روشموازيسازي ضمني، سيستم (كه ميتواند كامپايلر يا برنامههاي ديگر باشد) به طور خودكار مسئله را به چند وظيفه تقسيم كرده و هر يك را بهپردازندهاي اختصاص ميدهد اما در روش موازيسازي صريح، برنامهنويس شخصاًمسئله را به چند وظيفه تفكيك و هر يك را به پردازندهاي ارجاع ميدهد.
بهتقسيم عادلانه محاسبات بر روي همه پردازندهها، عمل موازنه بار گفتهميشود. عمل موازنه بار (Load balancing) نيز كمك ميكند تا از همهپردازندهها به طور يكنواخت استفاده شود. در اين روش وظايف ازپردازندههايي كه بار بيشتري دارند به پردازندههاي با بار كمتر انتقالداده ميشود.
ارتباط بين وظايف, معمولاً توسط ارتباط رشتهها از طريقحافظه اشتراكي يا انتقال پيغام انجام ميشود به طوريكه هر يك در شرايطيبكار گرفته ميشود.
مدلهاي برنامهنويسي موازي
يكمدل برنامهنويسي موازي مجموعهاي از فناوريهاي نرمافزاري است كه برايبيان الگوريتمهاي موازي و تطابق برنامهها با سيستمهاي موازي بكارميرود. اين مدل همان نحوه استفاده از برنامهها، زبانها، كامپايلرها،كتابخانهها، سيستمهاي ارتباطي و ورودي/خروجي موازي است. دانشمندان برايتوسعه برنامههاي موازي خود، يك مدل برنامهنويسي موازي را انتخابميكنند. مدلهاي موازي با روشهاي گوناگوني بكار گرفته ميشود مثل ضميمهشدن يك كتابخانه حاوي دستورات موازيسازي به زبانهاي برنامه نويسي معمولو يا توسعه زبان برنامه نويسي يا تكميل مدلهاي اجرايي جديد.
پاياني
دراين مقاله سعي در معرفي پردازش موازي و بيان تعاريف ابتدايي آن شد.همينطور اهم کاربردهاي آن برشمرده شد. امروزه مبحث پردازش موازي يکي ازپرطرفدارترين مباحث در شاخههاي مختلف علمي است که نياز روز افزون دردستيابي به آن احساس ميشود.
منیع:CN
