خانه > فناوری اطلاعات, آموزش, آموزش کامپیوتر, آموزش اینترنت > چـرا بـرنامه نویـسی همـروند ؟(1)

چـرا بـرنامه نویـسی همـروند ؟(1)


مقدمه

 

برنامه نویسی همروند-همزمانconcurrent ) (انواع مختلفی دارد:

1.برنامه نویسی موازی Programming ) Parallel )

2.برنامه نویسی توزیع شده Distributed Programming ) )  که خود به نوعی معماری مالتی کامپیوتر را توسعه می دهد.

3.برنامه نویسی  Multithread Programming

 

در این مقاله می کوشیم برنامه نویسی موازی و مدل های آن و برنامه نویسی توزیع شده را معرفی کنیم.

 

مدل های  رایج و مورد استفاده در برنامه نویسی موازی عبارتند از :

1.حافظه اشتراکی Shared Memory

2.رشته ها –بندها Threads

3.انتقال پیامMessage Passing

4.موازات- همروندی داده ای Data Parallel

5.هیبرید – مختلط- چندگانه Hybrid

 

معماری های حافظه کامپیوتر موازی:

1.حافظه اشتراکی  Shared Memory

2.حافظه توزیع شدهDistributed Memory

3.حافظه توزیع شده – اشتراکی Hybrid Distributed-Shared Memory

 

معماری كامپِیوترهای موازی ِیا همروند اغلب به دو دسته بزرگ تقسِیم می شود:

1.مالتی پروسسورهاMulti Processor

2.مالتی كامپِیوترها Multi Computer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

چـرا بـرنامه نویـسی همـروند ؟

 

ترتیب ضد همروندی

ترتیب، یكی از نگرشهای اساسی فعالیت انسانی و قانون طبیعت است. هر روز ، تاریكی شب به صورت ترتیبی و متوالی به روشنایی روز تبدیل می شود و بالعكس هر فرد در زندگی روزمره به طور ترتیبی ، مراحلی از فعالیتها را انجام می دهد. محاوره انسانی به صورت ترتیبی صورت می پذیرد و اطلاعات و دانش به صورت ترتیبی بیان می شود. بنابراین طبیعی بود كه ابتدا  الگوریتم ها و برنامه های كامپیوتری به صورت ترتیبی بیان شوند. با وجود این حتی قبل از اینكه اولین كامپیوترهای الكترونیكی ساخته شوند مفهوم ریاضیاتی یك الگوریتم ، بر حسب دنباله ای متناهی از اعمال تعریف شده بود همانگونه كه علم كامپیوتر به تدریج تكامل می یافت. به خصوص در سالهای اخیر ، آشكار گردید كه مفهوم ترتیب تنها قسمتی از داستان است. یعنی فعالیت بشر و قوانین طبیعی نه تنها ترتیبی است بلكه تا حد زیادی همروند است و همروند بودن مانند ترتیب دارای اهمیت اساسی است .افراد ممكن است به صورت ترتیبی محاوره كرده و عمل یا فعالیت خود را انجام دهند اما آنها جزئی از یك ارگانیزم هستند كه حامل تعدادی زیادی فرد است كه به صورت همروند در حال فعالیت می باشند .

سیستمهای كامپیوتری همروند

بعد از 40 سال تمركز روی برنامه نویسی ترتیبی ، علم كامپیوتر به طور تدریجی به اهمیت   برنامه نویسی همروند پی می برند اولین پردازنده الكترونیكی به نام اینیاك در سال 1945 ، 1000 دستورالعمل را در یك ثانیه انجام دهند و امروز آخرین پردازنده های ریسك ، می توانند صدها میلیون دستورالعمل را در یك ثانیه انجام دهند ، این پردازنده ها اساساً ترتیبی ، اما بسیار سریع می باشند با وجود سریع تر شدن توان پردازنده های  وی ال اس آی پهنه گسترده ای از مسایل مهم محاسباتی در علوم و مهندسی وجود دارد كه نیاز به سرعت محاسباتی بیشتری دارد مانند مسایل آیرودینامیك، پیشگویی وضع هوا ، فیزیك ذره ، پردازش سیگنال كه در ژئوفیزیك استفاده می شود. پردازش تصویر در گرافیك كامپیوتری ، شبیه سازی واكنشهای شیمیایی و شبیه سازی شبكه های عصبی در بیولوژی.به عنوان مثال نمونه ، حل معادلات ناویراستوی كه در طراحی هواپیما استفاده می شود روی سریع ترین ابر كامپیوترها منجر به رسیدن به یك جواب تقریبی می گردد .به عنوان مثال دیگر در فیزیك ذرات ،‌وجود ذرات زیر هسته ای به نام تاپ ـ كوارك توسط معادلات خاصی انجام می شود كه برای حل آنها توسط سریع ترین ابر كامپیوترها به یكسال زمان جهت محاسبه نیاز می باشد .یك راه رسیدن به چنین سرعت مورد نیاز طراحی پردازنده های سریع تر و قراردادن آنها روی تعداد زیادی از تراشه های وی ال اس آی می باشد اما طراحی و ساخت این پردازنده ها بی نهایت گران است .

حدود 10 سال قبل سازندگان كامپیوتر به راه اقتصادی تر دیگری رسیدند برای رسیدن به توان n برابر، از n  پردازنده استفاده می شود كه این منجر به طراحی سیستمهای مالتی پروسسور گردید. همانـگونه كه پـردازنـده های وی ال اس آی سریع تـر تولیـد می شود. می تـوانند در تعداد زیاد سیستمهای مالتی پروسسور تركیب شوند تا توان را به اندازه مورد نیاز افزایش دهد .بنابراین پردازش موازی یا همروند با پردازش ترتیبی تضادی ندارد بلكه آنها در یك سیستم كامپیوتری با هم كار می كنند پیشرفت در طراحی پردازنده های وی ال اس آی ، سریعتر منجر به تولید بلوكهای سریع تر پردازنده های موازی یا همروند می شود .

 

معماری كامپیوترهای موازی

در یك كامپیوتر چند پردازنده ای ، بیشتر از یك پردازنده وجود دارد كامپیوترهای موازی ممكن است كه از 10 تا 50000 پردازنده داشته باشند توانایی اساسی این است كه این پردازنده ها می توانند به طور همروند با یكدیگر كار نمایند. اگر یك پردازنده بتواند 10 میلیون دستورالعمل را در یك ثانیه انجام دهد آنگاه 10 پردازنده می توانند 100 میلیون دستورالعمل را در یك ثانیه انجام دهند یكی از مقتضیات لازم برای سیستمهای چند پردازنده ای این است كه بتوانند داده ها را با یكدیگر به اشتراك گذاشته و با یكدیگر ارتباط برقرار نمایند دو معماری مهم در این زمینه وجود دارد:

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

ب) انتقال پیام : در این سیستمها كه مالتی كامپیوتر نامیده می شوند هر پردازنده ، دارای حافظه محلی خودش است و پردازنده ها با رد و بدل كردن پیام با یكدیگر از طریق شبكه های دورن ارتباطی پردازنده های ، داده ها را به اشتراك می گذارند .

هر كدام از این معماریها دارای مزایا و معایب خودش است .

محاسبات موازی چیست؟

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

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

به بیان ساده محاسبه موازی استفاده همزمان از منابع متعدد محاسباتی برای حل  یک مسئله محاسباتی است.

منابع محاسباتی می توانند شامل موارد زیر باشند:

1.یک کامپیوتر دارای چندین پردازنده

2.تعداد دلخواهی کامپیوتر که توسط یک شبکه به هم مرتبط هستند

3.ترکیبی از هر دو مورد ذکر شده

یک مسئله محاسباتی معمولا مشخصاتی از قبیل موارد زیر دارد:

1. مسئله می تواند به بخش های گسسته ای (جداگانه ای) شکسته شده و این بخش ها به طور همزمان پاسخ گویی شوند.

2.دستورالعمل های چندگانه برنامه در هر لحظه ای به موقع اجرا شوند.

3.به هنگام استفاده از منابع محاسباتی متعدد (چندگانه) مسئله در زمان کوتاهتری  پاسخ گویی شود نسبت به زمانی که فقط یک منبع محاسباتی داریم.

محاسبات موازی تحولی  در محاسبات ترتیبی است که تلاش می کند با هر آنچه  که حالت امور در جهان طبیعی بوده است رقابت کند:رویدادهای بسیار پیچیده و وابسته به یکدیگر که با وجود تبعیت از یک توالی (ترتیب)  همگی در یک زمان رخ می دهند.

سه دلیل عمده برای استفاده از محاسبات موازی وجود دارد:

1.صرفه جویی در زمان

2.حل کردن مسائل بزرگتر

3.بهره گرفتن از منابع غیر محلی

 

سیستم های محاسبه موازی

واژه ی پردازنده موازی گاهی برای یک کامپیوتر با بیش از یک پردازنده که برای پردازش موازی در دسترس قرار دارد بکار میرود.سیستم هایی با هزاران پردازنده از این قبیل بنام سیستم های شدیدا موازی  نامیده میشوند.پردازنده های چند هسته ای اخیر نیز برای ایجاد سیستم های موازی ایده ال هستند.نتیجتا پردازنده های موازی وجود دارند که به آنها «ذرات بزرگ» در مقابل » ذرات کوچک» گفته میشود.این تقسیم بندی به اندازه پردازنده بر می گردد.مثلا سیستم موازی در یک  سیستم ذرات کوچک خواهد بود.

انواع خیلی مختلفی از کامپیوترهای موازی (یا پردازنده های موازی) وجود دارد. وجه تمایز انها نوع اتصال داخلی بین پردازنده هاست (عناصر پردازش)و یا اتصال بین پردازنده ها حافظه هاست.طبقه بندی آقای فلین کامپیوترهای موازی (یا سریال) را با توجه به این که آیا همه پردازندهها دستورات را همزمان اجرا می کنند(دستور مرزی/داده های  چند گانه)و یا هر پردازنده دستورات مختلفی را اجرا می کند (دستورات چندگانه/داده های چندگانه)طبقه بندی می کند.پردازنده های موازی همچنین به متقارن و غیر متقارن بسته به اینکه ایا کلیه پردازنده ها تا در به اجرای همه کدهای سیستم عملیاتی هستند و به دستگاه های خاصی دسترسی دارند یا اینکه بعضی پردازنده ها تقریبا محرمانه هستند تقسیم می شوند.

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

 

عملکرد سیستم در قبال هزینه

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

 

برنامه ریزی موازی

تعداد زیادی سیستم های نرم افزاری برای برنامه نویسی کامپیوترهای موازی هم در سطح سیستم عملیاتی و هم در زبان برنامه نویسی طراحی شده اند.این سیستم ها بایستی مکانیزمی به وجود اورند تا کل مشکل به کارهای جداگانه تقسیم و به پردازنده ها اختصاص داده شوند.این قبیل مکانیزم ها ممکن است حالت موازی بودن را بطور تلویحی {سیستم (کامپایلر یا برنامه دیگری)بطور اتوماتیک مشکل را تقسیم وکارها را به پردازنده ها اختصاص می دهد} ویا بطور اشکار وصریح{برنامه نویس بایستی در برنامه خود توضیح دهد که مشکل چگونه بایستی تقسیم شود} فراهم نمایند.بیشتر اجراهای فعلی توسط کامپایلرهای موازی فقط از حالت موازی بودن تک سطحی متضاد با حالت موازی بودن چند سطحی (کد حالت موازی بودن لانه ای نیز نامیده می شود) پشتیبانی می کنند که اجازه می دهد رشته های در حال اجرای موازی حالت موازی بودن خیلی بیشتری را فراهم نماید.همچنین معمول است که همزمانی ابتدایی مانند ارسال علایم با دست و مانیتورها فراهم گردد تا پردازش ها بدون این که با یکدیگر درگیر شوند در استفاده از منابع شریک باشند.

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

در هر دو حالت ارتباط بین پردازش ها یا از طریق شراکت در حافظه اجرا می گرددو یا با ارسال پیام که هر کدام از اینها ممکن است بر حسب دیگری به اجرا در آید.

 

  1. هنوز دیدگاهی داده نشده است.
  1. No trackbacks yet.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: