برق. قدرت. کنترل. الکترونیک. مخابرات. تاسیسات.

دایره المعارف تاسیسات برق (اطلاعات عمومی برق)




اشاره :
با گسترش روزافزون استفاده از کامپیوتر برای کار‌های تحقیقاتی در دانشگاه‌ها، مراكز تحقیقاتی و شركت‌های تجاری, نیاز به پردازش سریع‌تر افزایش یافته و به یك نیاز اساسی تبدیل ‌شده است. امروزه پردازش موازی نقش بسیار جدی در مرتفع‌‌سازی این نیاز ایفا می‌كند.


مقدمه
سرعت كامپیوترهای شخصی كنونی نسبت به اجداد خود  به طور سرسام‌آوری افزایش یافته است اما حتی این سرعت نجومی نیز در اجرای برخی از برنامه‌های پیشرفته، كند است. از جمله عرصه‌هایی كه احتیاج به كامپیوترهایی با سرعت پردازش بسیار بالا دارند می‌توان به برنامه‌های شبیه‌سازی در تحقیقات هسته‌ای، نانو فناوری محاسباتی، برنامه‌های پیش‌بینی وضعیت هوا، برنامه‌های فیلم‌سازی کامپیوتری، برنامه‌های ساخت انیمیشن حرفه‌ای و بسیاری از زمینه‌های مختلف دیگر را نام برد كه همگی به سرعت پردازش بسیار زیاد نیاز دارند تا در یك زمان مناسب به نتیجه برسند.
یک راه حل برای این معضل، استفاده از سوپرکامپیوترها است. درست است که سرعت پردازش‌ سوپرکامپیوترها بسیار بالاتر از كامپیوترهای شخصی است اما استفاده از آنها در در همه موارد مقرون به صرفه نیست؛ ضمن آنکه این فناوری در انحصار بعضی از كشورهای توسعه‌یافته است و سایر كشورها از دسترسی به این تجهیزات استراتژیك محروم هستند.
راه حل دیگر در دستیابی به سرعت پردازش بسیار بالا استفاده از روش پردازش موازی است. به بیان ساده در این روش چند پردازنده معمولی با همكاری یکدیگر به اجرای یك برنامه می‌پردازند که طی این همكاری, برنامه با سرعت بالاتری اجرا می‌شود.

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


شکل1: این شکل تصاویری از داده‌های محاسباتی در رشته‌های مختلف را نمایش می‌دهد.

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


شکل 2: تصاویر ایجاد شده توسط نرم‌افزارهای تجاری

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


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


شکل 4: در پردازش موازی دستورات در چند پردازنده اجرا می‌شوند ولی سرعت اجرا الزاماً برابر با تعداد پردازنده‌ها ضربدر سرعت یک پردازنده نیست.

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

1ـ سیستم‌های محاسبه‌ موازی
قبل از معرفی معماری کامپیوتر موازی به معرفی معماری کامپیوترهای معمولی با نام معماری "فون نیومن" می‌پردازیم. نام این معماری برگرفته از اسم ریاضیدان مجارستانی است که در سال 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 اشاره کرد.


شکل 8: نمایی از کامپیوتر ILLIAC IV

واحدهای پردازش گرافیک امروزی یا همان GPUها نیز از واحد اجرای دستورات SIMD بهره می‌برند.

چند دستور, تک داده (MISD)
در این طرح موازی، یک جریان داده به چند واحد پردازش داده، ارسال می‌شود. هر واحد پردازش  به طور مستقل با جریان‌های دستور مستقل روی داده‌ها عمل می‌کند (شکل9). تا کنون تعداد معدودی کامپیوتر موازی با این روش ساخته شده است که از جمله می‌توان به کامپیوتر C.mmp کارنگی ملون اشاره کرد. از جمله کاربردهایی که برای این روش می‌توان مثال زد یکی، اعمال چند فیلتر فرکانسی روی یک جریان سیگنال و دیگری، اعمال چند الگوریتم رمزگذاری در باز کردن یک پیغام کد شده است. در هر دو مثال چند جریان دستوری روی یک جریان داده عمل می‌کنند.


شکل 9: اجرای چند دستور بر روی یک داده در مقاطع زمانی مختلف

چند دستور, چند داده (MIMD)
این روش معمول‌ترین طرح کامپیوتر موازی است و کامپیوترهای مدرن به سمت این معماری حرکت می‌کنند.
در این طرح هر پردازنده امکان اجرای چند جریان دستوری جداگانه را دارد و این دستورات روی چند جریان داده مختلف اعمال می‌شود (شکل 10). در این طرح, عملیات اجرا می‌تواند همگام یا نا همگام و قطعی یا غیر قطعی باشد. سوپرکامپیوترهای امروزی, کامپیوترهای موازی خوشه‌ای (Cluster), کامپیوترهای چند پردازنده SMP و PCهای چند هسته‌ای امروزی از این معماری استفاده می‌کنند. البته بیشتر کامپیوترهای با معماری MIMD از زیر مؤلفه‌های اجرایی SIMD بهره می‌برند.


شکل 10: اجرای چند دستور بر روی چند داده در مقاطع زمانی مختلف

سیستم‌های چند پردازنده به دو دسته‌ دیگر نیز تقسیم می‌شوند،  به طوریكه اگر همه‌ پردازنده‌ها  به طور یكسان بتوانند تمام دستورات سیستم عامل (مثلاً دستورات ورودی/خروجی) را اجرا كنند به آن "سیستم چند پردازنده‌ متقارن" و اگر بعضی از پردازنده‌ها دارای امتیاز بیشتر یا كمتر نسبت به سایرین باشند به آن "سیستم چند پردازنده‌ نامتقارن" گفته می‌شود.

2ـ كارآیی نسبت به هزینه
یك سیستم موازی با n پردازنده معمولی كارایی كمتری نسبت به یك پردازنده با سرعت n برابر دارد اما ساخت سیستم موازی دارای قیمت نازلی است  به طوری كه در سال‌های اخیر، بسیاری از سوپرکامپیوترها بر پایه‌ معماری موازی ساخته شده‌اند.
برای برنامه‌هایی كه هم محاسبات فراوانی دارند و هم دارای محدودیت زمانی جهت اجرا هستند و خصوصاً می‌توان آنها را به n رشته (Thread) اجرایی تقسیم كرد، محاسبه‌ موازی بهترین راه حل است.
برای درك بهتر مفهوم رشته (Thread)، فرض كنید شما در حال شنیدن موسیقی از كامپیوتر، متنی را تایپ می‌كنید و در حال دانلود كردن یك فایل نیز هستید. برای انجام همزمان این سه وظیفه، سیستم عامل آنها را به تكه‌های كوچك چند میلی ثانیه‌ای تقسیم می‌كند كه در هر لحظه پردازنده یكی از این تكه‌ها را اجرا می‌كند در این حالت به هر وظیفه یك رشته گفته می‌شود.
موضوع کارآیی نسبت به هزینه، ناظر بر اندازه‌گیری اثربخشی پردازش موازی با چند پردازنده نسبت به استفاده از یک پردازنده ترتیبی است.

3ـ الگوریتم‌ها
نباید تصور شود كه محاسبه‌ موازی تنها محتاج به فراهم كردن سخت‌افزار مورد نیاز و اتصال درست آنهاست. دشواری كار مشترك در جمله‌ی زیر نهفته است:
اگر حفر یك چاه توسط یك نفر در یك ساعت انجام شود آیا واقعاً شصت نفر می‌توانند چاه را در یك دقیقه حفر كنند؟
در عمل، دستیابی به افزایش خطی سرعت (افزایش سرعت متناسب با تعداد پردازنده‌ها) بسیار مشكل است. این مشكل ناشی از طبیعت ترتیبی بسیاری از الگوریتم‌ها است  به طوریكه قسمت‌هایی از یک الگوریتم قابل موازی‌سازی و قسمت‌هایی غیر قابل موازی‌سازی است.
به قانون Amdahl که به بیان این مطلب می‌پردازد توجه کنید:
فرض كنید كه F=10% از یک الگوریتم قابلیت موازی‌سازی ندارد اما بقیه الگوریتم  به طور موازی توسط N=20 پردازنده اجرا می‌شود. در این حالت سرعت اجرای برنامه (نسبت به زمانی كه تنها روی یك پردازنده اجرا شود) 20 برابر نمی‌شود بلکه مطابق شکل 11 با ضریب افزایش می‌یابد:


شکل 11

بسیاری از الگوریتم‌ها به منظور استفاده از سخت‌افزار موازی ‌باید دوباره طراحی شوند. برنامه‌هایی كه در یك سیستم با پردازنده تكی درست كار می‌كنند ممكن است در یك محیط موازی هرگز كار نكنند. این بدان علت است كه چند كپی از یك برنامه ممكن است با یكدیگر تداخل كنند ( به طور نمونه تداخل در دسترسی همزمان به یك محل از حافظه). بنابراین نیاز اصلی یك سیستم موازی، برنامه‌نویسی دقیق مختص به خود است.
یكی از مسایل بحث برانگیز در زمینه پردازش موازی، افزایش سرعت فوق خطی
 (Super Linear Speedup) است. افزایش "سرعت فوق خطی" برای مبتدیان یک مسئله گیج کننده است. چگونه ممکن است که یك سیستم n پردازنده‌ای بتواند با سرعتی بیش از n برابر یك سیستم تك پردازنده‌ای به اجرای وظایف بپردازد. به عبارت ساده‌تر آیا ممکن است که یک سیستم دو پردازنده‌ای بتواند مثلاً با سرعت 2.5 برابر سیستم تک پردازنده‌ای عمل کند؟
سرعت فوق خطی در عمل محال نیست و امکان رخ دادن آن وجود دارد هر چند که احتمال رسیدن به سرعت فوق خطی پایین است. دلیل اصلی رسیدن به چنین سرعتی وجود حافظه کش در هر پردازنده است. حافظه‌های کش باعث افزایش سرعت پردازنده در دسترسی به داده‌ها می‌شوند بنابراین، وقتی تعداد پردازنده‌ها افزایش می‌یابد به همان نسبت حافظه کش سیستم افزایش می‌یابد و این نیز باعث افزایش سرعت سیستم با نسبتی بیش از تعداد پردازنده‌ها می‌شود. به هر حال نحوه‌ تقسیم‌بندی برنامه جهت بكارگیری پردازنده‌ها در اجرای برنامه، عامل تعیین كننده در سرعت اجرای برنامه است.

4ـ ارتباط درون رشته‌ای
كامپیوترهای موازی  به طور نظری، بصورت ماشین‌های دسترسی تصادفی موازی
 (PRAMs) مدل شده‌اند. اگر چه مدل PRAM از نحوه اتصال داخلی بین واحدهای محاسباتی صحبت نمی‌كند اما با این وجود برای تعیین حد بالای موازی‌سازی یک مسئله مفید است. در حقیقت اتصال داخلی بین پردازنده‌ها نقش مهمی را بازی می‌كند.
پردازنده‌ها را می‌توان با هم مرتبط كرده،  به طوریكه بصورت تعاونی در حل یك مسئله بكار گرفته شوند و یا می‌توان هر یك را  به طور مستقل بكار گرفت به نحوی كه یك پردازنده خاص قسمت‌های مختلف یك مسئله را بین دیگر پردازنده‌ها توزیع كرده و در آخر نتایج را جمع‌آوری كند كه به این حالت اخیر Processor Farm (مزرعه پردازنده‌ها  ) گفته می‌شود.
به هر حال، طرق مختلفی جهت ارتباط پردازنده‌ها با یكدیگر وجود دارد مانند حافظه‌ اشتراكی (Shared memory)، هم‌عرض (Crossbar)، گذرگاه اشتراكی (Shared Bus) و شبكه‌ای (Network)  به طوریكه در حالت شبكه‌ای نیز بیشمار همبندی مثل ستاره‌ای، حلقه‌ای، درختی، ابر مكعبی و انواع بسیار دیگر وجود دارد.
روش‌های دسترسی به پردازش موازی می‌تواند به روش‌های مختلف صورت می‌گیرد که در این جا چند مورد را نام می‌بریم:
چند پردازندگی (Multiprocessing)
خوشه‌ای از كامپیوتر ‍(Computer cluster)
سوپرکامپیوترهای موازی (Parallel supercomputers)
محاسبات توزیع شده (Distributed computing)

5ـ نرم‌افزار موازی
تعداد بسیاری از سیستم‌های نرم‌افزاری جهت برنامه‌نویسی كامپیوترهای موازی طراحی شده‌اند. این سیستم‌ها هم در سطح سیستم عامل و هم در سطح زبان‌های برنامه نویسی وجود دارند. آن‌ها باید ساز و كاری جهت تقسیم یك مسئله به چند وظیفه‌ و تخصیص این وظایف به پردازنده‌ها داشته باشند. چنین ساز و كارهایی می‌تواند شامل موازی‌سازی ضمنی و یا موازی‌سازی صریح باشد.
در روش موازی‌سازی ضمنی، سیستم (كه می‌تواند كامپایلر یا برنامه‌های دیگر باشد)  به طور خودكار مسئله را به چند وظیفه تقسیم كرده و هر یك را به پردازنده‌ای اختصاص می‌دهد اما در روش موازی‌سازی صریح، برنامه‌نویس شخصاً مسئله را به چند وظیفه تفكیك و هر یك را به پردازنده‌ای ارجاع می‌دهد.
به تقسیم عادلانه محاسبات بر روی همه پردازنده‌ها، عمل موازنه بار گفته می‌شود. عمل موازنه‌ بار (Load balancing) نیز كمك می‌كند تا از همه‌ پردازنده‌ها  به طور یكنواخت استفاده شود. در این روش وظایف از پردازنده‌هایی كه بار بیشتری دارند به پردازنده‌های با بار كمتر انتقال داده می‌شود.
ارتباط بین وظایف, معمولاً توسط ارتباط رشته‌ها از طریق حافظه اشتراكی یا انتقال پیغام انجام می‌شود  به طوریكه هر یك در شرایطی بكار گرفته می‌شود.

6ـ مدل‌های برنامه‌نویسی موازی
یك مدل برنامه‌نویسی موازی مجموعه‌ای از فناوری‌های نرم‌افزاری است كه برای بیان الگوریتم‌های موازی و تطابق برنامه‌ها با سیستم‌های موازی بكار می‌رود. این مدل همان نحوه‌ استفاده از برنامه‌ها،‌ زبان‌ها،‌ كامپایلرها، كتابخانه‌ها،‌ سیستم‌های ارتباطی و ورودی/خروجی موازی است. دانشمندان برای توسعه‌ برنامه‌های موازی خود، یك مدل برنامه‌نویسی موازی را انتخاب می‌كنند. مدل‌های موازی با روش‌های گوناگونی بكار گرفته می‌شود مثل ضمیمه شدن یك كتابخانه‌ حاوی دستورات موازی‌سازی به زبان‌های برنامه نویسی معمول و یا توسعه زبان برنامه نویسی یا تكمیل مدل‌های اجرایی جدید.

سخن پایانی
در این مقاله سعی در معرفی پردازش موازی و بیان تعاریف ابتدایی آن شد. همینطور اهم کاربردهای آن برشمرده شد. امروزه مبحث پردازش موازی یکی از پرطرفدارترین مباحث در شاخه‌های مختلف علمی است که نیاز روز افزون در دستیابی به آن احساس می‌شود.

صفحات جانبی

نظرسنجی

    لطفاً نظرات خود را درمورد وبلاگ با اینجانب در میان بگذارید.(iman.sariri@yahoo.com)نتایج تاکنون15000مفید و 125غیرمفید. با سپاس


  • آخرین پستها

آمار وبلاگ

  • کل بازدید :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :