خانه > Uncategorized > چـرا بـرنامه نویـسی همـروند ؟ (3)

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


سیستم های مبتنی بر گذرگاه

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

یادآوری می كنیم كه اساس معماری یك كامپیوتر تك پردازنده ای شامل یك پردازنده و حافظه با یك گذرگاه است كه آنها را به یكدیگر متصل می كند .

گذرگاه یك مسیر برای جریان یافتن داده ها بین پردازنده و حافظه می باشد این معماری مبتنی بر گذرگاه ، می تواند به چند پردازنده نیز تعمیم یابد.

گذرگاه مشترك توسط همه پردازنده ها به اشتراك گذاشته شده و برای دسترسی به ماجول حافظه اشتراكی استفاده می شود گذرگاه و حافظه تنها می توانند در یك لحظه به یك درخواست سرویس دهند برای دسترسی به هر سلول حافظه ، پردازنده ها نیاز به استفاده انحصاری از گذرگاه برای یك دوره كوتاهی زمانی دارند بنابراین ماكزیمم سرعت گذرگاه و یا پهنای گذرگاه تعداد پردازنده های را كه می توانند به طور كارآ از حافظه اشتراكی استفاده كنند ، محدود می كند برای مثال اگر پهنای گذرگاه 50 مگاهرتز باشد و متوسط نرخ دسترسی پردازنده ها به حافظه 5 مگاهرتز باشد آنگاه گذرگاه با 10 پردازنده اشباع می شود حتی در یك سیستم كه دارای بالانس خوبی باشد كه در آن پهنای گذرگاه از نرخ دسترسی پردازنده ها به حافظه بیشتر باشد هنوز احتمال ازدحام حافظه توسط محاسبات متراكمی كه توسط بسیاری از پردازنده ها ممكن است انجام شده و نیاز به دسترسی به حافظه داشته باشد وجود دارد . گذرگاه ها به صورت الكتریكی عمل می كنند و بنابراین گذرگاه ها با سرعت بالا نیاز به تغییرات بسیار سریع ولتاژ و جریان دارند. محدودیت های فیزیكی برای اینكه چگونه مواد سریع می توانند ولتاژها و جریانهایشان را تغییر دهند وجود دارد .

این محدودیت ها اثر خود را روی ماكزیمم سرعت گذرگاه می گذارند هر چه پردازنده های بیشتری به باس اضافه شود توان الكتریكی بیشتری نیاز خواهد بود كه همچنین زمان سوئیچ كردن مولفه های فیزیكی را افزایش می دهد یك تكنیك كه به افزایش سرعت ماكزیمم كمك می كند این است كه گذرگاه از نظر فیزیكی كوچك باشد زیرا در آن صورت با توجه به كوچك شدن مسافتها ، تغییرات ولتاژها و جریانها می توانند سریع تر انجام شود مالتی پروسسورهای مبتنی بر گذرگاه ها تا سال 1993 محدود به 20 الی 30 پردازنده می باشد علت آن محدود بودن سرعت گذرگاه است در آینده ممكن است این توانایی به 50 الی 100  پردازنده افزایش یابد اما افزایش برای ماورای این مقدار نیاز به تغییرات در تكنولوژی گذرگاه خواهد داشت .

حافظه پنهان
1.حافظه های پنهان تك پردازنده

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

شکل 5 ) حافظه پنهان در كامپیوترهای تك پردازنده ای

MAIN

MEMORY

 

DATA ADDRESS

72 1000
2 3500
276 101
12 6832
56 2016
.

.

.

.

.

.

CACHE

MEMORY

 

 

 

 

PROCESSOR

 

 

 

 

هر ورودی در حافظه پنهان شامل یك زوج داده ـ آدرس است. آدرس ، متناظر با برخی آدرس های حقیقی در حافظه اصلی است و داده محتوای آن ، سلول حافظه اصلی را مشخص می كند. برای مثال در شکل بالا اولین موجودیت حافظه پنهان دلالت بر این دارد كه آدرس 1000 در حافظه اصلی شامل مقدار داده ای 75 است. این موجودیت های حافظه پنهان شامل كپی هایی از تعداد كمی از سلول های حافظه در حافظه اصلی است هنگامی كه یك پردازنده ، یك دسترسی به حافظه را انجام می دهد ابتدا محتوای حافظه پنهان را جهت بررسی اینكه آیا مقدار درخواستی در آنجا ذخیره شده است یا خیر را بررسی می كند چنانچه این مقدار در حافظه پنهان بود آنرا با سرعت بالا بازیابی می كند. نظر به اینكه حافظه پنهان دارای ساختمانی مشاركتی می باشد موجودیت های داخل آن می تواند با یك عملیات به طور بسیار سریع مورد جستجو واقع شود . هنگامی كه یك رجوع ویژه به حافظه توسط یك پردازنده به حافظه پنهان رخ می دهد، آنرا را یك هیت یا موفقیت حافظه پنهان می نامند. اگر رجوع به حافظه مربوط به حافظه پنهان نباشد ، بنابراین باید به حافظه اصلی برویم كه اصطلاحا به آن میس یا عدم موفقیت حافظه پنهان گویند. حافظه پنهان دارای یك اندازه محدود است و نمی تواند كپی همه مكانهای حافظه اصلی را كه توسط یك برنامه استفاده می شود، نگهداری نماید. بنابراین برخی از میس های حافظه پنهان اجتناب ناپذیر است .

مطالعات نشان می دهد كه برنامه های كامپیوتری یك خاصیت به نام لوكالیتی دسترسی به حافظه را از خود نشان می دهند . این بدین معنی است كه سلول های حافظه ای كه در چند لحظه قبل یا گذشته نزدیك مورد دسترسی قرار گرفته اند محتملا در چند لحظه بعد یا آینده نزدیك نیز مورد دسترسی واقع خواهند شد. حافظه پنهان این خاصیت از لوكالیتی را با مرتب كردن آخرین مقادیر حافظه واقع در حافظه پنهان بكار می گیرد ،زیرا اینها همانهایی هستند كه احتمالا در آینده نزدیك مورد استفاده واقع می شوند. این كار احتمال یك هیت روی حافظه پنهان را هر عمل رجوع به حافظه افزایش می دهد سیستم های كامپیوتری تك پردازنده ای تا 90% هیت را انجام می دهند این بدین معنی است كه تنها 10% از ارجاعات پردازنده به حافظه نیاز به حافظه اصلی دارد. بنابراین متوسط زمان دسترسی به حافظه بسیار كاهش می یابد. هنگامی كه یك میس حافظه پنهان اتفاق می افتد حافظه اصلی باید مورد دسترسی قرار گیرد و در این صورت یك كپی از یك سلول حافظه اصلی به داخل حافظه پنهان انتقال یافته و با یك موجودیت از حافظه پنهان كه اخیرا مورد دسترسی قرار نگرفته جایگزین می شود حافظه پنهان برای اعمال خواندن حافظه مفیدتر از اعمال نوشتن حافظه است .هر جزء داده ای در حافظه پنهان یك كپی از سلول های حافظه در حافظه اصلی است هنگامی كه یك عمل نوشتن در حافظه پنهان رخ می دهد مقدار اولیه در حافظه اصلی ، قدیمی می شود. دو راه عمومی برای برطرف كردن این اشكال در طراحی حافظه های پنهان وجود دارد یك راه این است كه هنگامی كه یك مقدار در حافظه پنهان با عمل نوشتن بهنگام می شود بلافاصله مقدار نظیر آن در حافظه اصلی نیز بهنگام می شود این عمل نوشتن یكسره نامند .

را دیگر این است كه موقتاً حافظه اصلی بهنگام نشود. هنگامی كه سلول بهنگام شده در حافظه پنهان دیگر مورد استفاده واقع نشد كپی متناظر آن در حافظه اصلی بهنگام شود كه به آن عمل نوشتن پسرو گویند.هر گونه نوشتن به حافظه اصلی باعث اتلاف وقت می گردد. البته در اكثر كامپیوترها تنها 20 درصد از كل اعمال دسترسی به حافظه را اعمال نوشتن و 80 درصد بقیه را اعمال خواندن تشكیل می دهد .

این نگرش ساده از عملكرد حافظه پنهان برای فهم روی اجرای برنامه ها كافی می باشد.

 

.2 حافظه پنهان مالتی پروسسورها

استفاده از حافظه های پنهان می تواند به سیستم های مالتی پروسسورها توسعه یابد همانگونه كه در شکل زیر نشان داده شده است :

 

 

 

BUS

 

 

 

 

شکل 6 ) حافظه پنهان در مالتی پروسسورها

 

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

همان طور كه این جزء از حافظه ، اشتراكی خوانده می شود ، به طور همزمان یك كپی از آن به داخل حافظه پنهان محلی می رود. بنابراین می تواند برای این پردازنده مورد استفاده واقع شود یكی از مسایل جالب در حافظه پنهان مالتی پروسسورها این است كه چندین كپی از یك سلول حافظه ممكن است در حافظه های پنهان متفاوت ظاهر شود. برای مثال فرض كنید پردازنده 1 آدرس 1000 حافظه را از حافظه اشتراكی می خواند آنگاه یك كپی از آن به داخل حافظه پنهان محلی پردازنده 1 انتقال  می یابد اگر پردازنده های 2 و 3 نیز همچنین آدرس 1000 حافظه را از حافظه اشتراكی بخوانند، آنگاه حافظه پنهان آنها نیز همچنین شامل یك كپی از آن خواهد بود .بنابراین 4 كپی متفاوت از یك سلول حافظه اشتراكی با آدرس 1000 وجود خواهد داشت. یعنی یك كپی در حافظه اشتراكی و 3 كپی اضافی  در حافظه های پنهان پردازنده های 1و2و3 .

در مدتی كه همه دسترسی ها به آدرس 1000 تنها عمل خواندن است وجود كپی های چندگانه مساله ای را بوجود نمی آورد هر پردازنده می تواند اعمال خواندن را با استفاده از كپی واقع در حافظه پنهان خود را انجام دهد بدون این كه هیچ گونه نیازی برای دسترسی به حافظه اشتراكی داشته باشد. اما اگر یك پردازنده بخواهد یك عمل نوشتن به سلول 1000 از حافظه اشتراكی انجام دهد ، آنگاه یك مساله بوجود می آید ، یعنی همه كپی ها باید یكسان باقی بماند. این قابل قبول نیست كه تنها یك كپی تغییر كند در حالی كه دیگر كپی ها دست نخورده باقی بماند ، با توجه به اینكه     كپی های چندگانه ، مربوط به  یك سلول حافظه می باشند آنها باید با هم سازگار باشند .

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

شبكه های دورن ارتباطی از حافظه ـ پردازنده

خواص ازدحام حافظه مربوط به مالتی پروسسورها ، همچنین به ویژگی شبكه درون ارتباطی بین پردازنده ـ حافظه بستگی دارد. با رجوع به دیاگرام معمارگونه زیر انشعاب حافظه اشتراكی داخل ماجول های چندگانه به نحو زیادی شانس ازدحام حافظه را كاهش می دهد. اما تراكم و انباشتگی ممكن است در ارتباطات سخت افزاری حتی هنگامی كه پردازنده ها به ماجول های متفاوتی رجوع   می كنند، اتفاق افتد .

یكسری تحقیقات عملی  و تئوری در زمینه طراحی شبكه های درون ارتباطی بین پردازنده – حافظه برای مالتی پروسسورها ارائه شده است شکل 7 یك شبكه عرضی ارتباطی بین 8 پردازنده و 8 ماجول حافظه را نشان می دهد :

 

شکل 7) شبکه عرضی حافظه – پردازنده

 

هر ماجول حافظه می تواند در یك لحظه تنها به یك درخواست سرویس دهد. بنابراین      درخواست های همزمان به یك ماجول حافظه توسط چندین پردازنده منجر به ازدحام حافظه خواهد شد. اما شبكه عرضی دارای خواص مهمی است كه باعث می شود ازدحام در شبكه دورن ارتباطی هرگز روی ندهد شبكه عرضی می تواند همه پردازنده را به طور همزمان به حافظه های مختلف متصل كند سوییچ ها می توانند تنظیم شوند تا اجازه دهند كه هر الگوی ممكن از ارتباطات پردازنده – حافظه به طور همزمان اتفاق افتد البته به شرطی كه پردازنده ها به یك ماجول یكسان رجوع نكنند. به این علت است كه در شبكه عرضی ، هر زوج پردازنده – حافظه دارای سوئیچ مختص به خود     می باشد بنابراین برای n پردازده n ماجول حافظه شبكه عرضی ، نیاز به n2 سوئیچ داریم و بنابراین دارای هزینه O(n2)  است . اگر تعداد پردازنده ها زیاد باشد. هزینه O(n2)  مقرون به صرفه نمی باشد.

برای كاهش این هزینه شبكه های بسیاری با هزینه O(nlog n) توسعه داده شده اند كه از حمله آنها می تواند به شبكه پروانه ای كه در شکل 8 نشان داده شده است اشاره داشت .

 

 

 

شکل 8)شبکه درون ارتباطی پروانه ای

 

رجوع دارند ،در سوئیچ های ارتباطی ازدحام روی می دهد .شبكه پروانه ای نامش را از بالهای پروانه برگرفته است كه در هر مرحله از شبكه ظاهر شده است. بالهای پروانه در هر مرحله متوالی است شبكه از چپ به راست توسط فاكتور 2 افزایش می یابد در حالت عمومی تعداد مراحل مورد نیاز برای n پردازنده log n است و هر مرحله دارای n/2 سوئیچ می باشد بنابراین كل تعداد سوئیچ های موردنیاز log n× n/2 است در شکل بالا 16 پردازنده با استفاده از 32 سوئیچ برای 16 ماجول حافظه متصل شده اند ،شبكه عرضی برای این تعداد پردازنده نیاز به 256=16×16 سوئیچ دارد. شبكه سوئیچ دار دیگری با هزینه O(nlogn) به نام مبادله به هم آمیخته وجود دارد كه در شکل 9 نشان داده شده است .

 

شکل 9) شبکه مبادله بهم ریخته

 

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

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

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

 

 

 

 

 

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

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

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

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

نظر به اینكه دسترسی پردازنده ها به حافظه محلی خودشان چندین مرتبه سریعتر از تاخیر زمان شبكه است ،  قابلیت اجرای یك برنامه به طور ویژه ای بستگی به مكان داده ها در حافظه های محلی گوناگون دارد ، برای نوشتن یك برنامه كارا روی یك مالتی كامپیوتر ، لازم است كه اطلاعات جامعه ای از معماری سخت افزاری داشته باشیم.

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

اگر یك پردازنده دارای ارتباط مستقیم با پردازنده دیگری نباشد ، هنوز می تواند با مجبور كردن پردازنده های میانی جهت انتقال داده ها به سمت جلو ، با پردازنده های دیگر ارتباط برقرار نماید ، انتقال داده ها بین پردازند ه ها نیاز به صرف زمان قابل ملاحظه ای دارد . انتقال داده ها به سمت جلو در بین پردازنده ها،حتی نیاز به زمان بیشتری دارد. بنابراین  اگر ارتباط متعددی بین    پردازنده ها در مدت اجرای یك برنامه وجود داشته باشد تاخیر ارتباطی حاصل ممكن است زمان اجرای برنامه را به نحوه چشمگیری افزایش دهد الگوی ارتباطات مستقیم بین پردازنده ها ، معمولاً توپولوژی مالتی كامپیوتر نامیده می شود ، برای یك الگو ریتم ویژه تاخیرات زمانی ناشی از ارتباطات ، بستگی به توپولوژی مورد استفاده دارد .دو پارامتر مهم جهت توصیف كردن ویژگیهای هر توپولوژی عبارتند از درجه اتصال كه تعداد اتصالات مستقیم در هر پردازنده است و قطر كه ماكزیمم تعداد ارتباطات میانی مورد نیاز برای ارتباط بین پردازنده های دور می باشد درجه اتصال به علت اینكه در هزینه سخت افزار تاثیر می گذارد ، اهمیت دارد .

ارتباطات پردازنده ای

در یك مالتی كامپیوتر ، هر پردازنده دارای ماجول حافظه محلی جداگانه ای جهت ذخیره كردن داده ها و كد برنامه می باشد .

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

فعالیت هر زوج پردازنده ـ حافظه در یك مالتی كامپیوتر خیلی شبیه به یك كامپیوتر ترتیبی عادی است. پردازنده یك سری از دستوالعمل ها را توسط كد برنامه كه در حافظه ذخیره شده است، اجرا می كند. هر دستور العمل ممكن است شامل خواندن و نوشتن مقادیر داده ای روی حافظه باشد این شباهت از هر زوج پردازنده – حافظه با یك كامپیوتر كامل ، منشا نام ”مالتی كامپیوتر“ می باشد .

1. پیوند ارتباطی

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

بلوك اساسی در ساختمان این شبكه ارتباطی ، یك پیوند مستقیم پردازنده به پردازنده می باشد كه در شکل زیر نشان داده شده است :

 

 

 

 

 

 

 

Communication

Link

 

 

 

 

 

شکل 10) پیوند ارتباطی پردازنده ای

 

هر  زوج پردازنده – حافظه به واسطه ارتباطی خود متصل است كه جزئی از قابلیت سخت افزاری جهت ارسال و دریافت داده ها ، از طریق پیوند ارتباطی می باشد .

عمل یك واسط ارتباطی با در نظر گرفتن یك پردازنده شبیه به یك واسط ورودی / خروجی (I/O) در یك كامپیوتر عادی می باشد واسط ورودی / خروجی داده ها را از یك پردازنده دریافت و یا به یك پردازنده می فرستد و آنگاه با یك وسیله ویژه مانند یك چاپگر یا دیسكران ، جهت حمل دستورات و ارسال یا دریافت داده ها ارتباط برقرار می كند. واسط ورودی / خروجی ، یك پردازنده را از كار با با جزئیات سطح پایین سخت افزاری جهت كنترل وسایل ورودی / خروجی بی نیاز می كند و بنابراین باعث می شود كه پردازنده ها در حالی كه اعمال ورودی و خروجی در حال انجام است به محاسبات خود ادامه دهند .

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

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

این بدیهی است كه جهت انتقال هر پیام ، زمانی تلف خواهد شد پیوند ارتباطی دارای یك پهنای باند ماكزیمم معینی است كه معمولاً بر حسب بیت در ثانیه اندازه گیری می شود .پهنای شاخصی برای یك چنین پیوند ارتباطی ممكن است 10 مگابیت در ثانیه باشد اگر یك پیام بسته بندی شده شامل 50 بایت باشد ، آنگاه برای انتقال نیاز به 40 میكرو ثانیه خواهد داشت این زمان وقتی كه با سرعت یك پردازنده كه حدوداً برای اجرای یك دستورالعمل از 1 تا 10 میكروثانیه نیاز دارد ، مقایسه می شود قابل توجه می باشد علاوه بر این برای انتقال فیزیكی بیتهای داده ای واسط ارتباطی باید اعمال دیگری را انجام دهد تا از ارسال و دریافت داده به طور صحیح اطمینان حاصل نماید. بیتهای داده ای خام و غیر پردازش شده از یك پیام در داخل یك بسته قرار می گیرند كه یك سرآیند جهت تشخیص اطلاعات و یك مجموع مقایسه ای در انتهای آن برای آشكار سازی خطا قرار دارد. بنابراین در دو واسط ارتباطی زمانهایی جهت ایجاد و رمز گشایی این سرآیند و مجموع مقابله ای تلف خواهد گردید. اگر یك خطای انتقال تصادفی ناشی از پارازیت در رسانه الكترونیكی از پیوند ارتباط ایجاد شود ، آنگاه گیرنده ارسال مجدد پیام را درخواست خواهد كرد .این آشكار سازی و تصحیح خطا ممكن است متوسط تاخیر ارتباطی را افزایش دهد .

2. مسیریابی و ازدحام

هر واسط ارتباطی ممكن است دارای چندین پیوند باشد كه آن را به چندین پردازنده متصل می كند. همانند مثالی كه در شکل  زیر آمده است :

 

 

شکل 11) شبکه ارتباطی

پردازنده واقع در مركز شکل ، دارای چهار پیوند ارتباطی مستقیم به پردازنده های دیگر می باشد پردازنده های دیگر دارای پیوند مستقیم به پردازنده های اضافی می باشند این 9 زوج پردازنده – حافظه ، همراه با همه پیوندهای ارتباطی اشاره شده تشكیل یك شبكه ارتباطی را می دهند .

هر پردازنده ممكن است مستقیماً با همسایه های مجاورش با استفاده از پیوندهای ارتباطی مستقیم اتصال داشته باشد. پردازنده هایی كه با یكدیگر به طور مستقیم اتصال ندارند نیز می توانند با استفاده از انتقال پیامها در واسطه های ارتباطی میانی ، با یكدیگر ارتباط برقرار نمایند.

برای مثال 0 می تواند یك پیام را با فرستادن آن به طور مستقیم به واسط ارتباطی پردازنده 1 كه آن را رو به جلو و به سمت واسط ارتباطی پردازنده 2 حركت می دهد ، به پردازنده 2 ارسال دارد .

بنابراین اگر زمان انتقال از طریق یك پیوند ارتباطی منفرد ، T واحد زمانی باشد آنگاه كل زمان لازم برای انتقال یك پیام از پردازنده 0 به پردازنده 2 ، 2T واحد زمانی خواهد بود .

برای برخی از زوج پردازنده ها ممكن است همچنین مسیرهای متناوبی در شبكه وجود داشته باشد P0 می تواند یك پیام را با استفاده از هر كدام از مسیرهای زیر به P5 انتقال دهد .

P0-P1-P2-P5 . P0-P1-P4-P5 . P0-P3-P4-P5

همه این مسیرهای ممكن ، نیاز دارند كه پیام از میان سه پیوند ارتباطی بتواند عبور نماید بنابراین كل تاخیر زمانی جهت ارسال پیام از P0 به P5 ، 3T واحد زمانی خواهد بود .

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

قالب عمومی یك بسته از یك پیام در شکل 12 نشان داده شده است :

 

شکل 12) قالب یک بسته از یک پیام

 

توپولوژی مالتی كامپیوترها

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

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

توپولوژی خطی و حلقوی و فوق مکعب

در یك توپولوژی خطی از یك مالتی كامپیوتر ، واسطهای ارتباطی در یك خط راست همانگونه كه در شکل زیر نشان داده شده است به یكدیگر متصل شده اند :

 

 

شکل 13) توپولوژی خطی

 

دراین شکل فرض بر این است كه هر دایره شماره گذاری شده ، شامل یك پردازنده ، یك حافظه و واسط ارتباطی می باشد. هر خط بین یك زوج از دایره ها نمایانگر یك پیوند ارتباطی مستقیم در شبكه می باشد جزئیات داخلی هر كدام از مولفه های شبكه در اینجا و همین طور در دیاگرامهای آتی، حذف شده است. تنهادوایر عددگذاری شده كه توسط خطوط به یكدیگر متصل اند دردیاگرامها نشان داده شده است. نظر به اینكه مبدا و مقصد واقعی هر پیام ، پردازنده ها می باشند بنابراین هنگامی كه از ارتباطات یا اتصالات صحبت می كنیم رجوع ما برای این اصطلاحات مربوط به پردازنده ها می باشد  . هنگامیكه این اصطلاحات استفاده می شود فرض بر این است كه در واقعیت نیز واسطهای ارتباطی به طور فیزیكی به یكدیگر متصل می باشند. وقتی دو پردازنده در یك توپولوژی مستقیماً به یكدیگر مرتبط اند ، اصطلاحاً به آنها پردازنده های متصل گفته می شود. برای مقایسه نسبی ویژگیهای قابلیت اجرای توپولوژی های مختلف ، فرض بر این است كه تاخیرات ارتباطی زمانی برای پردازنده های متصل در همه توپولوژی ها كوچك است. بنابراین قابلیت اجرای نسبی فقط بستگی به مسافت بین پردازنده ها دارد. مسافت بین هر زوج از پردازنده ها در هر توپولوژی داده شده عبارت است از مسیر بین پردازنده ها وقطر یك توپولوژی بزرگترین مسافت بین پردازنده ها در شبكه تعریف شده است در توپولوژی خطی از شکل 13 كه از 8 پردازنده تشكیل شده ، قطر آن 7 می باشند .

در حالت عمومی ، یك توپولوژی خطی با n پردازنده ، دارای درجه اتصال 2 و قطر n-1                  می باشدمسافت بین هر دو پردازنده I و j همیشه (I-j )است اگر تاخیر ارتباطی اساسی برای پردازنده های متصل T باشد ،زمان فرستادن یك پیام از پردازنده I به پردازنده J به سادگی T(I-j) می باشد بدون افزایش هزینه ، قابلیت اجرای یك توپولوژی خطی می تواند به سادگی با اضافه كردن یك و یا بیشتر از پیوندهای ارتباطی از اولین پردازنده به آخرین پردازنده تا حد زیادی اصلاح شود. نتیجه یك توپولوژی حلقوی نامیده می شود كه در شکل زیر آمده است :

 

 

 

 

 

 

 

 

 

شکل 14) توپولوژی حلقوی

 

این یك ارتباط اضافی است كه متوسط مسافت بین پردازنده ها را با فاكتوری از 2 كاهش می دهد. یك توپولوژی حلقوی n پرازنده های دارای قطر N/2 می باشد .

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

با افزایش تعداد پیوندهای ارتباطی متصل به هر پردازنده این امكان وجود دارد كه قطر شبكه و متوسط تاخیر ارتباطی در شبكه را كاهش دهیم یكی از چنین توپولوژیهایی مش دو بعدی می باشد كه در شکل 15 زیر مثال زده شده است:

 

 

 

 

 

 

 

 

 

 

 

 

شکل 15 ) توپولوژی مش دو بعدی

 

 

شکل 15) توپولوژی مش دوبعدی

 

این توپولوژی از مالتی كامپیوترها ، شامل پردازنده هایی است كه آرایش آنها مانند یك آرایه دو بعدی صورت گرفته است برای یك پردازنده داده شده در سطر I و ستون j این پردازنده به 4 پردازنده همسایه مجاور خود واقع در چپ ، راست ، بالا و پایین كه به ترتیب در مكانهای (I-1.j)، (I+1.j) قرار دارند ، متصل شده است. همانگونه كه در شکل 15 نشان داده شده است ، ارتباطات بین ستونهای مجاور ، افقی و ارتباطات بین سطرهای مجاور به فرم عمودی می باشد. هیچ ارتباط قطری وجود ندارد پردازنده های مرزی تنها دارای 2 یا 3 همسایه متصل می باشند در عددگذاری پردازنده ها از شکل 15 پردازنده ها به ترتیب به طور سطری عددگذاری شده اند و گوشه سمت چپ ، پردازنده صفر قرار دارد. این نوع عددگذاری را ترتیب افزایشی سطری می نامند. پیامها بین پردازنده ها در حركت بوده و باید در طول مسیرهای افقی یا عمودی بین پردازنده های متوالی حركت كنند. برای مثال یك پیام كه از پردازنده ها 6 به 13 انتقال می یابد ،باید اول به پردازنده 11 و آنگاه به پردازنده 12 و نهایتاً به 13 برسد كه به طور كلی سه مرحله دارد. یك پیام ممكن است همچنین مسیرهای دیگری مانند 6-7-8-13 و یا 6-7-12-13 را انتخاب نماید، اما تعداد مراحل هنوز 3 خواهد بود .

بین هر زوج از پردازنده ها ،یك مسیر با طول می نیمم وجود دارد كه با مجموع مسافت سطر و ستونهای آن اندازه گیری می شود.اگر تاخیر ارتباطی برای پردازنده های متصل T باشد. آنگاه زمان ارتباطی دورن – پردازنده ای برای هر زوج از پردازنده ها عبارت است از طول این مسیر می نیمم ضربدر T ،برای هر مش M×M قطر شبكه ، همان طول مسیر می نیمم بین دو پردازنده واقع در دو گوشه مخالف مش است ، كه این همیشه 2(M-1) است .

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

 

شکل 16) توپولوژی تورس

توپولوژی كه به این طریق بدست می آید .تورس نامیده می شود ، درجه اتصال چنین توپولوژی همیشه 4 است نظر به اینكه هر پردازنده اكنون دقیقاً 4 پیوندارتباطی را دارا می باشد همانند توپولوژی خطی كه به توپولوژی حلقوی تبدیل شد ، بنابراین كاهش قطر در اینجا نیز فاكتوری از 2 خواهد بود این اصلاح در قابلیت اجرا وقتی كه توپولوژی با اضافه كردن همه اتصالات كمربندی لازم به توپولوژی تورس تبدیل می شود  ، روی می دهد بدیهی است كه در این توپولوژی پردازنده های واقع در گوشه های مخالف ،‌با مسافتی به طول 2 از یكدیگر جدا شده اند ماكزیمم مسافت دراین تورس بین گوشه ها و مركز تورس می باشد بنابراین در یك توپولوژی تورس m×m ، قطر ، m می باشد این الگوی مش  به حالت 3 بعدی تبدیل شود .

توجه كنید كه هر پردازنده دارای 4 اتصال به دیگر پردازنده ها می باشد.

 

شکل 17 ) توپولوژی فوق مکعب با بعد 4

 

یك فوق مكعب با 128 پردازنده دارای بعد 7 می باشد بنابراین هر پردازنده دارای 7 اتصال مستقیم است. اتصالات اضافی در فوق مكعبهای با ابعاد بالاتر ، متوسط تاخیر زمانی را در توپولوژی مش ، كاهش می دهد. مسافت بین پردازنده ها در یك فوق مكعب دقیقاً برابر بیتهایی است كه این پردازنده ها با یكدیگر تفاوت دارند. برای مثال پردازنده 000، 2 گام از پردازنده 011 تفاوت دارد.

برای اینكه پردازنده 000با 011 ارتباط برقرار نماید. ابتدا باید یك پیام را به همسایه متوالی خود یعنی 001 ارسال كند و سپس این پردازنده پیام را به همسایه مجاور خود، یعنی 011 انتقال دهد .بنابراین ارتباط بین 000 و 011 حاوی 2گام است برای d=3 هر پردازنده دارای 3 همسایه مجاور می باشد و ماكزیمم مسافت بین پردازنده ها 3 گام است به طور كلی در یك فوق مكعب با بعد d پردازنده ها دارای d همسایه مجاور می باشند و ماكزیمم مسافت بین هر دو پردازنده ای ، d  می باشد.بنابراین درجه اتصال شبكه d و قطر شبكه نیز d است یك توپولوژی فوق مكعب ممكن است به صورت یك قانون بازگشتی ساده تعریف شود. یك فوق مكعب با بعد یك به صورت دو پردازنده تعریف می شود كه با عدد 0 و 1 شماره گذاری شده اند و یك اتصال خطی ساده بین آنها وجود دارد.یك فوق مكعب با بعد d+1 بطور بازگشتی بااستفاده از رویه ساختمانی زیر بدست می آید :

1)ایجاد یك فوق مكعب با بعد d ، شبیه فوق مكعب اولیه كه شامل اعداد پردازنده ها می باشد كه اصطلاحاً به آن نسخه ثانویه فوق مكعب گوییم .

2)ایجاد یك اتصال مستقیم بین پردازنده های با عدد یكسان در نسخه اولیه و نسخه ثانویه فوق مكعب

3)اضافه كردن رقم دودویی 1 به سمت چپ هر كدام از عدد پردازنده ها در نسخه ثانویه و رقم دودویی 0 به سمت چپ هر كدام از عدد پردازنده ها در نسخه اولیه.

این ساختمان بازگشتی برای ابعاد 1 الی 3 در شکل 16-7 مثال زده شده است :

 

 

 

 

 

 

 

Dimension2:

10

11

 

 

 

 

 

 

 

شکل 18) ساختمان بازگشتی فوق مکعب

برای ایجاد یك فوق مكعب از بعد 4 ، قانون می گوید كه یك الگوی تكراری دو گانه برای بعد 3 ایجاد كرده و هر مكان متناظر دو نسخه اول فوق مكعب و نسخه دوم فوق مكعب ( نسخه ثانویه ) را به یكدیگر متصل نماییم این در شکل 17 نیز نشان داده شده است. این قانون ساختمانی بازگشتی چشم اندازهایی از ساختمان فوق مكعب ها را ارائه می دهد كه بعداً در طراحی الگوریتم های كارآمد جهت اجرا روی مالتی كامپیوترهای فوق مكعبی مفید می باشند .جدول زیر دو ویژگی توپولوژیهای مالتی كامپیوتری را كه درجه اتصال و قطر می باشد، نشان می دهد .

Diameter Connectivity Topology
n-1 2 Line
N/2 2 Ring
2(n1/2-1) 2-4 2D-Mesh
n1/2 4 Turos
3(n1/3-1) 3-6 3D-Mesh
Logn Logn Hypercube

 

 

درجه اتصال،اندازه ، هزینه نسبی توپولوژی ها و قطر ، اندازه قابلیت اجرای نسبی را نشان می دهد.

به منظور مقایسه کردن،فرض شده است که هر توپولوژی دارای n پردازنده می باشد.این نوع توپولوژی ها در یک ترتیب صعودی بر حسب هزینه و قابلیت اجرا در لیست بالا نشان داده شده است.

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

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

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

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

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

تصویر توییتر

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

عکس فیسبوک

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

عکس گوگل+

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

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

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