0% found this document useful (0 votes)
6 views675 pages

Advanced Computer Architecture

Uploaded by

arash.farhadi.ch
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views675 pages

Advanced Computer Architecture

Uploaded by

arash.farhadi.ch
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 675

‫معماری کامپیوتر پیشرفته‬

‫گردآوری و تألیف‪:‬‬

‫دکتر محمود فتحی‬

‫مهندس رضا سعیدی نیا‬

‫ناشر‪:‬‬

‫کانون نشر علوم‬


‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪ -‬خ‬

‫فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬

‫فرمایید‪.‬‬
‫فهرست مطالب‬
‫فصل اول – مدل های کامپیوترهای موازی‪11 ....................................................................‬‬
‫‪ -1-1‬وضعیت محاسبات ‪11 .....................................................................................‬‬
‫‪-1-1-1‬تاریخچه توسعه کامپیوتر ‪11 .......................................................................‬‬
‫‪ -2-1-1‬اجزاء کامپیوترهای مدرن ‪16 ......................................................................‬‬
‫‪ -3-1-1‬سیر تکامل معماری کامپیوتر‪19 ..................................................................‬‬
‫‪ -2-1‬چندکامپیوترها و چندپردازنده ها ‪40 ....................................................................‬‬
‫‪ -1-2-1‬چندپردازنده های حافظه مشترک ‪40 ............................................................‬‬
‫‪ -2-2-1‬چندکامپیوترهای با حافظه توزیع شده‪44 .......................................................‬‬
‫‪ -3-2-1‬یک طبقه بندی از کامپیوترهای ‪45 ................................................... MIMD‬‬
‫‪ -3-1‬چندبرداری و کامپیوترهای ‪46 ..................................................................SIMD‬‬
‫‪ -1-3-1‬سوپرکامپیوترهای برداری ‪46 ......................................................................‬‬
‫‪ :2-3-1‬سوپرکامپیوترهای ‪48 ..................................................................... :SIMD‬‬
‫‪ -4-1‬مدل پیچیدگی ‪50 ................................................................................. VLSI‬‬
‫‪ -1-4-1‬ماشین های دسترسی‪-‬تصادفی موازی ‪52 .......................................................‬‬
‫‪ -5-1‬مقیاس پذیری کارایی ترانزیستور و سیم ها‪54 ....................................................... :‬‬
‫‪ -1-5-1‬اهداف توان مصرفی و انرژی در مدارات مجتمع‪54 ............................................ :‬‬
‫‪ -2-5-1‬انرژی و توان داخل یک ریزپردازنده‪55 ......................................................... :‬‬
‫‪ -3-5-1‬هزینه‪57 ............................................................................................ :‬‬
‫‪ -4-5-1‬قابلیت اطمینان ‪58 .................................................................................‬‬
‫تمرینات فصل اول ‪62 .............................................................................................‬‬
‫فصل دوم ‪ -‬خواص برنامه و شبکه ‪67 ..............................................................................‬‬
‫‪ -1-2‬شرایط موازات‪67 ..........................................................................................:‬‬
‫‪ -1-1-2‬وابستگی های داده و منبع ‪67 ........................................................................‬‬
‫‪ -2-1-2‬موازات نرم افزاری و سخت افزاری ‪72 ............................................................‬‬
‫‪ -3-1-2‬نقش کامپایلرها ‪76 .................................................................................‬‬
‫‪ -2-2‬زمانبندی و بخش بندی برنامه‪76 ...................................................................... :‬‬
‫‪ -1-2-2‬اندازه دانهها و تأخیر ‪76 ............................................................................‬‬
‫‪ -2-2-2‬دانه بندی و زمانبندی ‪79 ..........................................................................‬‬
‫‪ -3-2-2‬زمانبندی ایستای چندپردازنده‪82 ............................................................... :‬‬
‫‪ -4-2-2‬چه موقع استفاده از چند پردازنده مناسب است؟‪85 ...........................................‬‬
‫‪ -3-2‬جریان داده در مقایسه با جریان کنترل‪87 .............................................................‬‬
‫‪ -1-3-2‬مکانیزم های جریان برنامه‪87 .................................................................... :‬‬
‫‪ -2-3-2‬مکانیزم های راهاندازی‪-‬تقاضا ‪90 .................................................................‬‬
‫‪ -3-3-2‬مقایسه مکانیزم های جریان ‪91 ...................................................................‬‬
‫‪ -4-2‬معماری های ارتباط داخلی سیستم ‪92 .................................................................‬‬
‫‪ -1-4-2‬خواص شبکه و مسیریابی‪93 ..................................................................... :‬‬
‫‪ -2-4-2‬شبکه های اتصالی ایستا‪97 ....................................................................... :‬‬
‫‪ -3-4-2‬مسیریابی در شبکههای اتصالی ایستا‪106 ...................................................... :‬‬
‫‪ -4-4-2‬شبکههای اتصالی پویا‪108 ........................................................................:‬‬
‫‪ -5-4-2‬مسیریابی در شبکههای پویا ‪117 .................................................................‬‬
‫تمرینات فصل دوم‪125 ...........................................................................................‬‬
‫ضمیمه ‪ 1-2‬نمونه بسته بندی یک سوپر کامپیوتر و استفاده از شبکههای ارتباطی ‪133 ...............‬‬
‫فصل سوم ‪ -‬اصول کارایی مقیاس پذیر ‪135 ......................................................................‬‬
‫‪ -1-3‬اندازهگیری و واحدهای کارایی ‪135 ....................................................................‬‬
‫‪ -1-1-3‬مشخصه موازات در برنامهها‪135 ................................................................. :‬‬
‫‪ -2-1-3‬میانگین هارمونیک کارایی‪137 .................................................................. :‬‬
‫‪ -3-1-3‬بازدهی‪ ،‬بهرهوری و کیفیت‪141 ................................................................. :‬‬
‫‪ -4-1-3‬واحدهای کارایی استاندارد ‪143 ...................................................................‬‬
‫‪ -2-3‬کاربردهای پردازش موازی‪145 ......................................................................... :‬‬
‫‪ -1-2-3‬موازات انبوه برای چالشهای بزرگ ‪145 ..........................................................‬‬
‫‪ -2-2-3‬مدلهای کاربردی کامپیوترهای موازی ‪146 ......................................................‬‬
‫‪ -3-2-3‬مقیاس پذیری الگوریتمهای موازی ‪148 .........................................................‬‬
‫‪ -3-3‬قوانین افزایش سرعت کارایی‪151 .......................................................................‬‬
‫‪ -1-3-3‬قانون امدال برای بارکاری ثابت ‪151 .............................................................‬‬
‫‪ -2-3-3‬قانون گوستافسون برای مسائل مقیاس پذیر ‪154 ..............................................‬‬
‫‪ -3-3-3‬مدل افزایش سرعت محدود شده‪-‬به حافظه‪156 ..............................................‬‬
‫‪ 4-3‬تجزیه تحلیل مقیاس پذیری و روشها ‪160 ..............................................................‬‬
‫‪ -1-4-3‬اهداف و واحدهای مقیاس پذیری ‪160 ..........................................................‬‬
‫‪ -2-4-3‬سیر تکاملی کامپیوترهای مقیاس پذیر ‪165 ....................................................‬‬
‫تمرینات فصل سوم ‪167 ..........................................................................................‬‬
‫فصل چهارم ‪ -‬پردازنده ها و سلسله مراتب حافظه ‪162 .........................................................‬‬
‫‪ -1-4‬تکنولوژی های پردازنده ها ‪162 .........................................................................‬‬
‫‪ -1-1-4‬فضای طراحی پردازندهها ‪162 ....................................................................‬‬
‫‪ -2-1-4‬معماریهای مجموعه‪-‬دستورالعمل‪165 ...........................................................‬‬
‫‪ -2-4‬پردازندههای سوپراسکالر و برداری ‪170 ................................................................‬‬
‫‪ -1-2-4‬پردازندههای سوپراسکالر‪170 .....................................................................‬‬
‫‪ -2-2-4‬معماری ‪172 ............................................................................ : VLIW‬‬
‫‪ - 3-2-4‬پردازندههای برداری سمبلیک ‪174 .............................................................‬‬
‫‪ -4-2-4‬مقدمهای بر پردازندههای چند هستهای‪177 ..................................................‬‬
‫‪ -3-4‬تکنولوژی سلسله مراتب حافظه ‪185 ....................................................................‬‬
‫‪ -1-3-4‬تکنولوژی حافظه سلسله مراتبی ‪185 ............................................................‬‬
‫‪ -2-3-4‬شمول‪ ،‬همبستگی‪ ،‬و محلیت ‪189 ...............................................................‬‬
‫‪ -3-3-4‬طراحی ظرفیت حافظه ‪192 .......................................................................‬‬
‫‪ -4-4‬تکنولوژی حافظه مجازی ‪195 ............................................................................‬‬
‫‪ -1-4-4‬مدلهای حافظه مجازی ‪195 .......................................................................‬‬
‫‪ ،TLB -2-4-4‬صفحه بندی و قطعه بندی‪198 .......................................................... :‬‬
‫‪ -3-4-4‬سیاستهای جایگزینی حافظه ‪203 ................................................................‬‬
‫تمرینات فصل چهارم‪211 ........................................................................................‬‬
‫فصل پنجم ‪ -‬گذرگاه‪ ،‬حافظه نهان و حافظه مشترک ‪216 .....................................................‬‬
‫‪ -1-5‬سیستم های گذرگاه صفحه پشتی ‪216 ................................................................‬‬
‫‪ -1-1-5‬توصیف گذرگاه صفحه پشتی‪216 ................................................................‬‬
‫‪ -2-1-5‬قراردادهای آدرس دهی و زمانبندی ‪218 ........................................................‬‬
‫‪ -3-1-5‬داوری‪ ،‬تراکنش و وقفه ‪221 .......................................................................‬‬
‫‪ -4-1-5‬استانداردهای ‪224 ....................................................... IEEE Futurebus+‬‬
‫‪ -2-5‬سازمان حافظه نهان ‪226 .................................................................................‬‬
‫‪ -1-2-5‬مدل های آدرس دهی حافظه نهان ‪226 .........................................................‬‬
‫‪ -2-2-5‬حافظه های نهان انجمنی و نگاشت مستقیم ‪229 ..............................................‬‬
‫‪ -3-2-5‬حافظه های نهان انجمنی‪-‬مجموعه ای و حافظه های نهان سکتوری ‪232 ..................‬‬
‫‪ -4-2-5‬مسائل کارایی حافظه نهان‪236 ...................................................................‬‬
‫‪ -5-2-5‬انواع فقدان ها در حافظه نهان و روش های بهینه سازی حافظه نهان ‪238 .................‬‬
‫‪ -3-5‬سازمان های حافظه‪-‬مشترک ‪258 ......................................................................‬‬
‫‪ -1-3-5‬سازمان حافظه برگی شده ‪260 ...................................................................‬‬
‫‪ -2-3-5‬پهنای باند و تحمل پذیری خطا ‪262 ............................................................‬‬
‫‪ -3-3-5‬شماتیک های تخصیص حافظه ‪264 .............................................................‬‬
‫‪-4-5‬مدلهای ترکیبی و سازگاری ضعیف ‪269 .................................................................‬‬
‫‪ -1-4-5‬اتمی بودن و ترتیب رخدادها ‪269 ................................................................‬‬
‫‪ -2-4-5‬مدل سازگاری ترتیبی ‪272 ........................................................................‬‬
‫‪ -3-4-5‬مدل های سازگاری ضعیف ‪274 ..................................................................‬‬
‫تمرینات فصل پنجم ‪277 .........................................................................................‬‬
‫فصل ششم – خط لوله و تکنیک های سوپراسکالر ‪285 .........................................................‬‬
‫‪ -1-6‬پردازنده های خط لوله خطی‪285 .......................................................................‬‬
‫‪ -1-1-6‬مدل های سنکرون و آسنکرون ‪285 .............................................................‬‬
‫‪ -2-1-6‬ساعت و کنترل زمانی ‪286 ........................................................................‬‬
‫‪ -3-1-6‬افزایش سرعت‪ ،‬بازدهی و توان عملیاتی ‪287 ....................................................‬‬
‫‪ -2-6‬پردازنده های خط لوله غیرخطی ‪290 ..................................................................‬‬
‫‪ -1-2-6‬آنالیز تأخیر و رزرواسیون‪290 .....................................................................‬‬
‫‪ -2-2-6‬زمانبندی بدون تصادم‪293 ....................................................................... :‬‬
‫‪ -3-2-6‬بهینه سازی زمانبندی خط لوله‪296 ............................................................ :‬‬
‫‪ -4-2-6‬ماتریس تصادم اولیه ‪298 ..........................................................................‬‬
‫‪ -3-6‬طراحی خطلوله دستورالعمل‪300 .......................................................................:‬‬
‫‪ -1-3-6‬فازهای اجرای دستورالعمل‪300 ................................................................. :‬‬
‫‪ - 2-3-6‬مکانیزم هایی برای خطلوله دستورالعمل ‪303 ..................................................‬‬
‫‪ -3-3-6‬زمانبندی دستورالعمل ایستا و پویا ‪308 .........................................................‬‬
‫‪ -4-3-6‬روشهای راهاندازی پرش ‪333 .....................................................................‬‬
‫‪ -4-6‬طراحی خط لوله ریاضی‪343 ............................................................................ :‬‬
‫‪ -1-4-6‬مفاهیم ریاضی کامپیوتر‪343 ..................................................................... :‬‬
‫‪ -2-4-6‬خط لوله های ریاضی ایستا ‪346 ..................................................................‬‬
‫‪ -3-4-6‬خط لوله های ریاضی چندعملکردی ‪352 .......................................................‬‬
‫‪ -5-6‬طراحی سوپراسکالر و سوپرپایپ الین ‪354 .............................................................‬‬
‫‪ -1-5-6‬طراحی خطلوله سوپراسکالر ‪355 .................................................................‬‬
‫‪ -2-5-6‬طراحی سوپرپایپالین ‪361 .........................................................................‬‬
‫‪ -3-5-6‬فوق تقارن و حد میانه طراحی ‪364 .............................................................‬‬
‫‪ -4-5-6‬بهرهبرداری از ‪ ILP‬با استفاده از زمانبندی پویا‪ ،‬چند انتشار و تعمق ‪365 ..................‬‬
‫تمرینات فصل ششم ‪369 .........................................................................................‬‬
‫فصل هفتم‪-‬چندپردازنده ها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان ‪376 ..................‬‬
‫‪ -1-7‬اتصاالت داخلی سیستمهای چندپردازنده‪376 .........................................................‬‬
‫‪ -1-1-7‬سیستم های گذرگاه سلسله مراتبی ‪377 ........................................................‬‬
‫‪ -2-1-7‬سوئیچ کراسبار و حافظه چندپورت ‪381 .........................................................‬‬
‫‪ -2-7‬مکانیزمهای همزمانی و همبستگی حافظه نهان‪388 ................................................. :‬‬
‫‪ -1-2-7‬مسأله همبستگی حافظه نهان‪388 .............................................................. :‬‬
‫‪ -2-2-7‬قراردادهای جاسوسی گذرگاه ‪390 ...............................................................‬‬
‫‪ -3-2-7‬قراردادهای براساس‪ -‬دایرکتوری‪398 ............................................................‬‬
‫‪ -4-2-7‬مکانیزم های همزمانی سخت افزاری ‪405 .......................................................‬‬
‫‪ -3-7‬مکانیزم های انتقال پیام ‪406 ............................................................................‬‬
‫‪ -1-3-7‬شماتیک های مسیریابی‪-‬پیام ‪406 ...............................................................‬‬
‫تمرینات فصل هفتم ‪411 .........................................................................................‬‬
‫فصل هشتم‪ -‬موازات سطح داده در معماری های برداری‪ SIMD ،‬و ‪417 .............................GPU‬‬
‫‪ -1-8‬مقدمه ‪417 .................................................................................................‬‬
‫‪ -2-8‬معماری برداری ‪419 ......................................................................................‬‬
‫‪ -3-8‬توسعه مجموعه دستورالعمل ‪ SIMD‬برای چند رسانه ای ‪438 .....................................‬‬
‫‪ -4-8‬واحدهای پردازش گرافیکی (‪441 ............................................................. )GPU‬‬
‫‪ -5-8‬تشخیص و توسعه موازات سطح‪-‬حلقه ‪463 ...........................................................‬‬
‫‪ -6-8‬مطالب مرتبط‪469 ........................................................................................‬‬
‫‪ -7-8‬کنار هم قراردادن همه‪471 ..............................................................................:‬‬
‫تمرینات فصل هشتم ‪475 ........................................................................................‬‬
‫فصل نهم موازات سطح –نخ ‪479 ...................................................................................‬‬
‫‪ -1-9‬مقدمه ‪479 ................................................................................................‬‬
‫‪ -2-9‬معماری های حافظه‪-‬مشترک متمرکز ‪485 ...........................................................‬‬
‫‪ -3-9‬کارایی چندپردازنده های حافظه‪-‬مشترک متقارن ‪488 ..............................................‬‬
‫‪ -4-9‬حافظه‪-‬مشترک توزیع شده و همبستگی براساس‪-‬دایرکتوری‪499 .................................‬‬
‫‪ -5-9‬اصول همزمانی ‪501 .......................................................................................‬‬
‫‪ – 6-9‬مدل های سازگاری حافظه ‪ :‬مقدمه‪506 ..............................................................‬‬
‫‪ - 7-9‬مطالب مرتبط ‪509 .......................................................................................‬‬
‫‪ – 8-9‬پردازنده های چندهسته و کاراییشان‪512 ............................................................‬‬
‫تمرینات فصل نهم ‪519 ...........................................................................................‬‬
‫فصل دهم‪ -‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬‬
‫داده ‪522 ...............................................................................................................‬‬
‫‪ -1-10‬مقدمه‪522 ................................................................................................‬‬
‫‪ -3-10‬معماری کامپیوتر کامپیوترهای مقیاس ورهاوس‪530 ...............................................‬‬
‫‪ -4-10‬زیرساختار فیزیکی و هزینه کامپیوترهای مقیاس ورهاوس ‪535 ...................................‬‬
‫‪ -5-10‬رایانش ابری‪ :‬بازگشت محاسبات سراسری ‪543 ......................................................‬‬
‫‪ -6-10‬مطالب مرتبط ‪547 .......................................................................................‬‬
‫‪ -7-10‬کنار هم قرار دادن همه باهم ‪ :‬کامپیوتر مقیاس‪-‬ورهاوس گوگل ‪550 ...........................‬‬
‫تمرینات فصل دهم ‪559 ..........................................................................................‬‬
‫فصل یازدهم ‪-‬مقدمه ای بر محاسبات گرید ‪565 .................................................................‬‬
‫‪ -1-11‬مقدمه‪565 ................................................................................................‬‬
‫‪ -2-11‬مفاهیم کلیدی سیستم های توزیع شده ‪567 .......................................................‬‬
‫‪ -2-1-11‬مقایسه تحلیلی میان ‪569 ............................................... DS ،NOS ،DOS‬‬
‫‪ -3-11‬مروری بر فنآوری های قبل از محاسبات گرید و تاریخچه محاسبات گرید ‪574 .................‬‬
‫‪ -1-3-11‬محاسبات گرید ‪575 ..............................................................................‬‬
‫‪ -2-3-11‬ارائه تعریف برای فن آوری محاسبات گرید ‪576 .............................................‬‬
‫‪ -4-11‬بررسی انواع مختلف سرویس های قابل ارائه در شبکه های گرید ‪578 ..........................‬‬
‫‪ -5-11‬اهداف و مزایای محاسبات گرید‪579 .................................................................‬‬
‫‪ -6-11‬انواع گرید ‪581 ...........................................................................................‬‬
‫‪ -1-6-11‬انواع تقسیم بندی های گرید ‪581 ..............................................................‬‬
‫‪ -2-6-11‬گریدهای رومیزی ‪583 ...........................................................................‬‬
‫تنظیم دقیق کردن یک برنامه کاربردی آماده سازی شده جهت اجرا روی گرید ‪587 ................‬‬
‫‪ -7-11‬معماری و اجزای گرید ‪587 ...........................................................................‬‬
‫‪ -1-7-11‬مؤلفههای اصلی گرید ‪587 .......................................................................‬‬
‫‪ -2-7-11‬شرح معماری الیه ای گرید و مؤلفه های آن ‪588 ...........................................‬‬
‫‪ -8-11‬مدیریت منابع و زمانبندی در گرید‪590 .............................................................‬‬
‫‪ -1-8-11‬مدلهای مختلف زمانبندی ‪591 .................................................................‬‬
‫‪ -2-8-11‬مراحل مختلف فرآیند زمانبندی ‪595 ..........................................................‬‬
‫‪ -9-11‬معرفی برخی پروژهها و سیستمهای مهم گرید ‪596 ................................................‬‬
‫‪ -1-9-11‬معرفی پروژهها و سیستمهای مطرح گرید در دنیا‪596 .....................................‬‬
‫‪ -2-9-11‬بررسی خالصه برخی پروژههای مهم گرید ‪603 ..............................................‬‬
‫فصل دوازدهم ‪-‬حل تست های کنکورهای سالهای اخیر ‪615 ..................................................‬‬
‫حل سواالت کنکور دکتری سال ‪615 .................................................................. 1392‬‬
‫حل سواالت کنکور دکتری سال ‪622 .................................................................. 1393‬‬
‫حل سواالت کنکور دکتری سال ‪629 .................................................................. 1394‬‬
‫حل سواالت کنکور دکتری سال ‪635 .................................................................. 1396‬‬
‫حل سواالت کنکور دکتری سال ‪644 .................................................................. 1391‬‬
‫فهرست راهنما (ایندکس) ‪650 ......................................................................................‬‬
‫بخش اول‬

‫تئوری موازات‬

‫فصل اول‬

‫مدلهای کامپیوتر موازی‬

‫فصل دوم‬

‫خواص برنامه و شبکه‬

‫فصل سوم‬

‫مفاهیم کارایی مقیاس پذیر‬


‫فصل اول – مدل های کامپیوترهای موازی‬
‫پردازش موازی به عنوان یک فنآوری توانا در کامپیوترهای مدرن پدیدار شده است‪ ،‬که تقاضای زیادی برای کارایی‬
‫بیشتر‪ ،‬قیمت کمتر و ساخت راحت در کاربردهای واقعی دارد‪ .‬رخدادهای جاری در کامپیوترهای با کارایی باالی‬
‫امروزی بر اساس چندبرنامگی‪ ،‬چند پردازشی یا چند محاسباتی ایجاد شدهاند‪ .‬هدف از طراحی کامپیوترهای پیشرفته‬
‫افزایش قدرت محاسباتی و پردازش سریع اطالعات است‪ .‬پیچیدگی برنامههای امروزی به صورت نمایی در حال‬
‫گسترش است و هر روزه با وجود کامپیوترهای قوی نیاز به قدرت محاسباتی باال برای اجرای برنامههای پیچیده‬
‫بیشتر و بیشتر میشود‪ .‬عوامل دیگر در طراح ی کامپیوترهای جدید توان مصرفی کم و استفاده بهینه از منابع نیز‬
‫مهم است‪.‬‬

‫موازات در فرمهای مختلفی مثل پیش بینی‪ ،‬خطلوله‪ ،1‬بردارسازی‪ ،‬همروندی‪ ،‬هماهنگی‪ ،‬موازات دادهها‪ ،‬پارتیشن‬
‫بندی‪ ،‬چندبرگی‪ ،‬همپوشانی‪ ،‬تعدد‪ ،‬تکرار‪ ،‬اشتراک زمانی‪ ،‬چندبرنامگی‪ ،‬چند رشتهای‪ ،‬و محاسبات توزیع شده در‬
‫سطوح پردازشی مختلف ظاهر شده است‪.‬‬

‫در این فصل‪ ،‬معماریهای فیزیکی کامپیوترهای موازی‪ ،‬سوپرکامپیوترهای برداری‪ ،‬چندپردازندههای موازی انبوه را‬
‫مدل میکنیم‪ .‬مدلهای تئوری ماشینها مثل‪ ،‬ماشینهای دسترسی تصادفی موازی‪ 2‬و مدل پیچیدگی مدارات در‬
‫تجمع خیلی زیاد‪ 3‬نیز ارائه شده است‪ .‬زیرسیستمهای نرم افزاری و سخت افزاری در فصلهای بعدی با جزئیات‬
‫بیشتر معرفی میشوند‪.‬‬

‫‪ -1-1‬وضعیت محاسبات‬
‫کامپیوترهای مدرن مجهز به قابلیتهای سختافزاری قدرتمند هستند که توسط بستههای نرمافزاری گران قیمت‬
‫راهاندازی میشوند‪ .‬برای اینکه به نوک قله محاسبات بر‬

‫سیم‪ ،‬ابتدا تاریخچه پیشرفت کامپیوترها را مرور میکنیم‪ .‬سپس عناصر نرمافزاری و سختافزاری پیچیده که در‬
‫کامپیوترهای مدرن بکار رفتهاند را بررسی میکنیم‪ .‬سپس روابط ارزیابی معماری توسعه یافته را بررسی میکنیم‪.‬‬
‫فاکتورهای نرمافزاری و سختافزاری پایه در تجزیه تحلیل کارایی کامپیوترها را تعیین میکنیم‪.‬‬

‫‪-1-1-1‬تاریخچه توسعه کامپیوتر‬


‫کامپیوترها دو مرحله اصلی توسعه داشتهاند‪ :‬مکانیکی و الکترونیکی‪ .‬قبل از سال ‪ ،1945‬کامپیوترها با اجزاء مکانیکی‬
‫یا الکترومکانیکی ساخته میشدند‪ .‬اولین کامپیوتر مکانیکی چرتکه بود که توسط چینیها ‪ 500‬سال قبل از میالد‬
‫ساخته شد‪ .‬چرتکه بطور دستی برای محاسبه‪ ،‬محاسبات دهدهی استفاده میشد که نقلی‪ ،‬عدد به عدد منتقل میشد‪.‬‬

‫‪1‬‬
‫‪Pipeline‬‬
‫‪2‬‬
‫‪PRAM=Parallel Random Access Machine‬‬
‫‪3‬‬
‫‪VLSI‬‬
‫کانون نشر علوم‬ ‫‪| 12‬‬

‫بلیز پاسکال یک جمع کننده‪/‬تفریق کننده مکانیکی در فرانسه در سال ‪ 1642‬ساخت‪ .‬چارلز بابیج در انگلستان یک‬
‫موتور تفاضلی برای ارزیابی چندجملهایها در سال ‪ 1827‬ساخت‪ .‬کونارد زوس اولین کامپیوتر باینری را در سال‬
‫‪ 1941‬در آلمان ساخت‪ .‬هوارد آیکن اولین کامپیوتر دهدهی الکترومکانیکی را پیشنهاد کرد که بعنوان ‪Harward‬‬
‫‪ mark I‬در سال ‪ 1944‬توسط ‪ IBM‬ساخته شد‪ .‬هر دو ماشین زوس و آیکن برای محاسبات همه منظوره طراحی‬
‫شدند‪.‬‬
‫به وضوح معلوم است که محاسبات و ارتباطات قطعات مکانیکی سرعت محاسبات و قابلیت اطمینان کامپیوترهای‬
‫مکانیکی را محدود میکرد‪ .‬کامپیوترهای مدرن با پیدایش قطعات الکترونیکی ساخته شدند‪ .‬قطعات متحرک‬
‫کامپیوترهای مکانیکی با حرکت الکترونها در کامپیوترهای الکترونیکی جایگزین شدند‪ .‬انتقال اطالعات که در‬
‫کامپیوترهای مکانیکی‪ ،‬توسط چرخ دندههای مکانیکی انجام میشد با سیگنالهای الکتریکی که با سرعت نور‬
‫حرکت میکنند جایگزین شد‪.‬‬
‫نسلهای کامپیوتر‪ :‬در طول دهههای اخیر کامپیوترهای الکترونیک پنج نسل توسعه داشتهاند‪ .‬جدول ‪1-1‬‬
‫خالصهای از ‪ 5‬نسل کامپیوترهای الکترونیکی را نشان میدهد‪ .‬هر کدام از سه نسل اول حدود ‪ 10‬سال عمر‬
‫داشتهاند‪ .‬نسل ‪ 4‬محدوده زمانی ‪ 15‬سال را پوشش داده است‪ .‬در نسل پنجم وسایل حافظه و پردازندهها بیشتر از‬
‫‪ 1‬میلیارد ترانزیستور روی یک تراشه دارند‪.‬‬
‫تقسیمبندی نسلها با تغییرات شدیدی در تکنولوژیهای نرمافزاری و سختافزاری همراه بوده است‪ .‬درایههای‬
‫جدول ‪ 1-1‬خواص نرمافزار و سختافزارهای هر نسل را معرفی میکند‪ .‬اکثر خواص نسلهای قبل در نسلهای‬
‫جدید نیز وجود دارند‪ .‬به عبارت دیگر نسلهای جدید خواص خوب نسلهای قدیم را به ارث بردهاند و خواص بد‬
‫آنرا حذف کردهاند‪.‬‬
‫پیشرفت در سختافزار‪ :‬ساخت کامپیوترهای الکترونیکی با پیدایش المپهای خالء از اواسط دهه ‪ 40‬میالدی‬
‫نسل اول (‪ )1954-1945‬تولید کامپیوترها را بوجود آورد‪ .‬با ابداع ترانزیستور در سال ‪ ،1948‬نسل دوم (‪-1955‬‬
‫‪ )1964‬از ترانزیستورها‪ ،‬دیودها و هستههای مغناطیسی بوجود آمد که سختافزار با استفاده از مدارات چاپی تولید‬
‫شدند‪.‬‬
‫نسل سوم (‪ )1974-1965‬از مدارات مجتمع‪ 1‬هم برای منطق و حافظه در تجمع در مقیاس کم یا مقیاس متوسط‪2‬‬

‫و مدارات چاپی چندالیه استفاده میکرد‪ .‬نسل چهارم (‪ )1991-1974‬از تجمع در مقیاس زیاد و خیلی زیاد‪ 3‬استفاده‬
‫میکردند‪ .‬حافظه نیمه هادی جایگزین حافظههای نسل قبل شد‪.‬‬
‫از دید معماری و نرمافزار‪ ،‬کامپیوترها ی نسل اول یک واحد پردازش مرکزی داشتند که همه عملیات ریاضی ترتیبی‬
‫را با استفاده از یک شمارنده برنامه‪ ،‬دستورات پرش و انباره انجام میدادند‪ CPU4 .‬باید در تمامی عملیات دسترسی‬
‫حافظه و ‪ I/O5‬دخالت میکرد‪ .‬در این نسل برنامهریزی کامپیوترها با زبان ماشین یا اسمبلی انجام میشد‪.‬‬

‫‪1‬‬
‫‪IC=Integrated Circuit‬‬
‫‪2‬‬
‫‪MSI=medium scale integrated , SSI=small scale integrated‬‬
‫‪3‬‬
‫‪VLSI =very large scale, ULSI=ultra scale integrated‬‬
‫‪4‬‬
‫در طول کتاب از اصطالح پردازنده استفاده میکنیم ‪Centrl Processing Unit‬‬
‫‪5‬‬
‫ورودی‪/‬خروجی ‪Input/Output‬‬
‫سیستمهای قابل توجه مثل ‪ ENIAC1‬که در مدرسه مور از دانشگاه پنسیلوانیا در سال ‪ 1950‬ساخته شد و کامپیوتر‬
‫‪ IAS‬که توسط جون ون نیومن‪ ،‬آرتور بروکس و هرمن گلدستاین در پرینستون در سال ‪ 1946‬طراحی شد و‬
‫‪ IBM 701‬که اولین کامپیوتر تجاری با قابلیت ذخیره سازی برنامه بود و در سال ‪ 1953‬توسط ‪ IBM‬ساخته‬
‫شد‪ ،‬بودند‪ .‬پیوندهای زیربرنامه در کامپیوترهای اولیه پیاده نشده بودند‪.‬‬
‫حافظههای با قابلیت تصحیح خطا و جستجوی دستور در سال ‪ 1962‬ساخته شدند‪ Univac LARC .‬در سال‬
‫‪ 1959‬و ‪ CDC1604‬در سال ‪ 1960‬ساخته شد‪.‬‬
‫کامپیوترهای قابل توجه نسل سوم ‪ IBM/360‬و سری ‪ 370‬و سری ‪ ASC ،CDC6600/7600‬شرکت‬
‫تگزاز و سری ‪ PDP-8‬تجهیزات دیجیتال از اواسط ‪ 1960‬تا اواسط ‪ 1970‬بودند‪ .‬کنترل ریزبرنامه نویسی در این‬
‫نسل رایج شد‪ .‬خطلوله و حافظه نهان‪ 2‬برای تسریع شکاف بین پردازنده و حافظه اصلی معرفی شدند‪ .‬ایده‬
‫چندبرنامگی برای همپوشانی فعالیتهای ورودی‪/‬خروجی و پردازنده در چند کاربرد پیادهسازی شد‪ .‬این باعث توسعه‬
‫سیستم عاملهای اشتراک زمانی با استفاده از حافظه مجازی با اشتراک بیشتر یا تسهیم سازی منابع شد‪.‬‬
‫سیستمهای عمده‬ ‫نرمافزار و کاربردها‬ ‫فنآوری و معماری‬ ‫نسل‬
‫زبانهای اسمبلی‪/‬ماشین تک‬
‫المپ خالء و حافظههای رله‪،‬‬ ‫نسل اول‬
‫‪ENIAC, PRINCETON‬‬ ‫کاربره‪ ،‬عدم پیوند زیربرنامه‪.‬‬
‫پردازندهها توسط انباره و ‪ PC‬راه ‪-‬‬ ‫(‪1945-‬‬
‫‪IAS, IBM 701‬‬ ‫ورودی‪/‬خروجیهای برنامهنویسی‬
‫اندازی میشدند‪ ،‬ریاضی ممیز ثابت‬ ‫‪)54‬‬
‫شده توسط پردازنده‬
‫زبانهای برنامهنویسی سطح باال‬ ‫ترانزیستورهای گسسته و حافظههای‬
‫که توسط کامپایلر کار میکرد‪.‬‬ ‫اصلی‪ ،‬ریاضیات ممیز شناور‪،‬‬ ‫نسل دوم‬
‫‪،IBM 7090, CDC 6604‬‬
‫کتابخانههای زیربرنامه‪ ،‬مانیتور‬ ‫پردازندههای ورودی‪/‬خروجی‪،‬‬ ‫‪(1955-‬‬
‫‪UNIVACLARC‬‬
‫)‪64‬‬
‫پردازش دستهای‬ ‫دسترسی حافظه تسهیم شده‬
‫سیستم عامل چندبرنامگی و‬ ‫مدارات مجتمع (‪،)SSI, MSI‬‬ ‫نسل سوم‬
‫‪IBM 360/370, CDC‬‬ ‫اشتراک زمانی‪ ،‬کاربردهای‬ ‫ریزبرنامه نویسی‪ ،‬خطلولهای‪ ،‬حافظه‬ ‫‪(1965-‬‬
‫‪6600, TI ASC, PDP-8‬‬
‫چندکاربره‬ ‫نهان و پردازندههای پیشگویی کننده‪.‬‬ ‫)‪74‬‬
‫نسل‬
‫‪VAX 9000,‬‬ ‫‪ OS‬چندپردازنده‪ ،‬زبانهای برنامه‪-‬‬ ‫حافظه نیمه رسانا ‪ ،LSI/VLSI‬چند‬
‫نویسی‪ ،‬کامپایلرها و محیطهای‬ ‫پردازنده‪ ،‬سوپر کامپیوترهای برداری‪،‬‬ ‫چهارم‬
‫‪CRAYX-MP, IBM‬‬
‫‪3040, BBN TC2000‬‬ ‫پردازش موازی‬ ‫چند کامپیوترها‬ ‫‪(1975-‬‬
‫)‪90‬‬
‫‪FUJISTA VPP500,‬‬ ‫پردازندههای ‪،VLSI/VHSIC‬‬
‫‪CRAY MPP,‬‬ ‫پردازش موازی انبوه‪ ،‬پردازش‬ ‫نسل پنجم‬
‫حافظهها و سوئیچهای بسته بندی با‬
‫‪TMC/CM_5, INTEL‬‬ ‫نامتجانس‬ ‫)‪(1991-‬‬
‫چگالی باال‪ ،‬معماری مقیاس پذیر‬
‫‪PARAGON‬‬
‫جدول ‪ :1-1‬پنج نسل کامپیوترهای الکترونیکی‬
‫کامپیوترهای موازی در معماریهای گوناگون در نسل چهارم کامپیوترها با استفاده از حافظه مشترک یا توزیع شده‬
‫یا سخت افزار برداری ظاهر شدند‪ .‬سیستم عاملهای چندپردازشی‪ ،‬زبانهای خاص و کامپایلرها برای موازات توسعه‬
‫داده شدند‪ .‬ابزارها و محیطهای نرمافزاری برای پردازشهای موازی با محاسبات توزیع شده ایجاد شدند‪ .‬سیستمهای‬

‫‪1‬‬
‫‪Electronic Numerical Integrator and Calculator‬‬
‫‪2‬‬
‫در کل کتاب از اصطالح حافظه نهان استفاده میشود ‪Cache memory‬‬
‫کانون نشر علوم‬ ‫‪| 14‬‬

‫عمده نسل چهارم ‪ BBNTC-2000 ،IBM/3090 VF ،Cray X-MP ،VAX9000‬و غیره میباشند‪.‬‬
‫در طول این ‪ 15‬سال (‪ )1990-1975‬تکنولوژی پردازش موازی وارد مرحله ساخت و عملیاتی شد‪.‬‬
‫نسل پنجم در در سال ‪ 1991‬ایجاد شد‪ .‬این ماشینها روی پردازش موازی انبوه ‪ MPP1‬تأکید دارند‪ .‬معماریهای‬
‫قابل انعطاف و تحمل پذیر تأخیر با سیستمهای موازی انبوه و با استفاده از مدارات ‪ VLSI‬و ‪ULSI‬و ‪ WSI2‬و‬
‫بعضا تکنولوژیهای ‪ ،GaAs‬بسته بندی با چگالی باال و تکنولوژیهای نوری توسعه مییابند‪.‬‬ ‫ً‬
‫‪12‬‬
‫هدف کامپیوترهای نسل پنجم رسیدن به کارایی ترافالپ ( ‪ 10‬عمل ممیز شناور در ثانیه) در سال ‪ 1990‬بود‪.‬‬
‫پردازشهای غیرمتجانس پدیدار شدند تا مسائل مشابه با حافظههای مجازی مشترک را حل کنند‪ .‬سیستمهای‬
‫نمونه موازی انبوه نسل پنجم )‪ MPP ،Fujista(VPP500‬تحقیقات ‪ ،Cray‬شرکت ماشینهای متفکر‬
‫)‪ (CM5‬و سیستمهای سوپرکامپیوتر اینتل(‪ )Paragon‬هستند‪.‬‬
‫قانون مور‪:‬در سال ‪ Gordon Moor ،1965‬در مورد روند افزایش سرعت سیستمهای کامپیوتری قانونی‬
‫بصورت زیر ارائه داد‪:‬‬
‫‪ .1‬تعداد ترانزیستورها در هر متر مربع هر سال دو برابر میشود‪.‬‬
‫‪ .2‬سرعت پردازنده هر سال ‪ ٪54‬افزایش مییابد‪.‬‬
‫‪ .3‬ظرفیت ‪ DRAM‬هر سال ‪ ٪80‬افزایش مییابد‪( .‬هر سه سال چهار برابر میشود)‪.‬‬
‫این قانون تاکنون تا حدود زیادی درست بوده است‪ .‬مثالً در دنیای واقعی تعداد ترانزیستورها در هر متر مربع هر ‪18‬‬
‫ماه دو برابر میشود‪ .‬برای مقایسه بین نسلهای مختلف کامپیوترها میتوان میزان کارایی نسبی آنها را مقایسه‬
‫کرد‪ .‬که این مطلب در جدول ‪ 2-1‬ارائه شده است‪.‬‬
‫کارایی نسبی‬ ‫تکنولوژی‬ ‫سال‬
‫‪1‬‬ ‫المپ خالء‬ ‫‪1951‬‬
‫‪35‬‬ ‫ترانزیستور‬ ‫‪1965‬‬
‫‪900‬‬ ‫مدار مجتمع (‪)IC‬‬ ‫‪1975‬‬
‫‪2400000‬‬ ‫‪VLSI‬‬ ‫‪1995‬‬
‫جدول‪ :2-1‬مقایسه کارایی نسبی نسلهای کامپیوتر‬
‫همانطور که در جدول ‪ 2-1‬مشاهده میشود کارایی نسبی تکنولوژی ‪ VLSI‬در سال ‪ ،1995‬نسبت به المپ خالء‬
‫در سال ‪ 2400000 ،1951‬برابر رشد داشته است! آیا تکنولوژی دیگری غیر از کامپیوتر سراغ دارید که چنین روند‬
‫پیشرفت انفجاری داشته باشد؟ امروزه ما با کمتر از ‪ 500‬دالر یک کامپیوتر همراه میخریم که کارایی‪ ،‬ظرفیت‬
‫حافظه و ظرفیت دیسک آن از یک کامپیوتری که در سال ‪ 1985‬با ‪1‬میلیون دالر خریداری میشد‪ ،‬بیشتر است‪.‬‬
‫شکل ‪ 1-1‬افزایش کارایی کامپیوترها را در ‪ 17‬سال اخیر در مقایسه با کامپیوتر ‪ ،VAX-11/780‬نشان میدهد‪.‬‬
‫همانطور که مشاهده میشود کارایی کامپیوترهای سالهای ‪ 2010‬تا ‪ 2012‬نسبت به کامپیوتر ‪VAX-11/780‬‬
‫تقریبا ‪ 50000‬برابر است‪.‬‬
‫ً‬

‫‪1‬‬
‫‪Masively parallel processing‬‬
‫‪2‬‬
‫‪Wafer scale integrated‬‬
‫شکل ‪ -1-1‬پیشرفت کارایی از اواخر دهه ‪ .1970‬این نمودار کارایی را نسبت به ‪ VAX11/780‬با استفاده از برنامههای محک‬
‫‪ SPEC‬نشان میدهد‪ .‬قبل از اواسط دهه ‪ 1980‬پیشرفت کارایی بطور قابل توجهی وابسته به تکنولوژی بود و بطور میانگین هر سال ‪ ٪25‬بود‪.‬‬
‫بعد از آن در هر سال میزان پیشرفت ‪ ٪52‬بود که به خاطر ایده های پیشرفته در معماری کامپیوتر و سازمان کامپیوتر بود‪ .‬افزایش سرعت در‬
‫محاسبات ممیز شناور از این هم سریعتر بود‪ .‬از سال ‪ 2003‬به خاطر محدودیتهای تو ان و موازات سطح دستور قابل دسترس افزایش سرعت‬
‫بطور میانگین ‪ ٪22‬در سال میباشد‪ .‬که اگر با سرعت ‪ ٪52‬رشد میکرد کارایی ‪ 5‬برابر سریعتر میشد‪ .‬از سال ‪ 2007‬به خاطر افزایش تعداد‬
‫هستهها پیشرفت کارایی بیشتر شد‪.‬‬
‫همانطور که گفتیم قانون ‪ Moore‬تاکنون تا حدود زیادی درست بوده است ولی پیشبینی میشود این قانون در‬
‫آینده بدرستی کار نکند‪ .‬دالیلی که باعث میشود احتمال دهیم که قانون ‪ Moore‬از سال ‪ 2018‬به بعد دیگر معتبر‬
‫نخواهد بود عبارتند از‪:‬‬

‫‪ .1‬با توجه به پارامترهای مختلف‪ ،‬اگر حجم یک ترانزیستور خیلی کوچک شود دیگر قادر به کار کردن‬
‫نخواهد بود‪ .‬در نتیجه در کوچک کردن حجم ترانزیستور از یک حدی بیشتر نمیتوان جلوتر رفت‪.‬‬
‫‪ .2‬تولید ترانزستورهای کوچکتر جهت قرار دادن تعداد بیشتری ترانزیستور در پردازنده‪ ،‬تکنولوژیهای‬
‫پیچیدهتر و وسایل دقیقتری میخواهد و در نتیجه قیمت تولیدی پردازندهها به حدی باال خواهد رفت‬
‫که تولید آن اصالً مقرون به صرفه نباشد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 16‬‬

‫در نتیجه قانون ‪ Moore‬یکسری پیشبینیهای دیگری هم شده که با روند تکنولوژی تحقق پیدا کردهاند که‬
‫عبارتند از‪:‬‬
‫‪ .1‬سرعت حافظه ‪ ٪10‬در سال افزایش مییابد‪.‬‬
‫‪ .2‬حجم دیسک ‪ ٪100‬در سال افزایش مییابد‪.‬‬
‫برای تحقق این قانون باید کارخانجاتی که این ترانزیستورها را میسازند به وسایل دقیقتر و پیچیدهتری مجهز‬
‫شوند‪ .‬عواملی که باعث افزایش سرعت کامپیوترهای جدید خواهند شد تکنولوژی ساخت ترانزیستورهای سریع و‬
‫استفاده از تکنیکهای موازات در انواع مختلف میباشند‪ .‬از لحاظ تاریخچه‪ ،‬پردازش موازی روی یک کامپیوتر‬
‫تکپردازنده بصورت زیر توسعه داشته است‪:‬‬

‫استفاده از چندین واحد عملیاتی در یک سیستم‪ :‬به عنوان مثال در ‪ ALU‬به جای یک واحد‬ ‫‪.1‬‬
‫جمع کننده از چند واحد جمع کننده استفاده میشود‪.‬‬
‫موازات و خطلوله در داخل یک پردازنده‪ :‬با استفاده از تکنیک خطلوله زمان پالسهای ساعت بطور‬ ‫‪.2‬‬
‫همپوش بین دستورات متوالی استفاده میشود و باعث افزایش سرعت پردازش میشود‪.‬‬
‫همپوشانی عملیات ورودی‪/‬خروجی و پردازنده‪ :‬در سیستمهای قدیمی هنگامی که پردازنده منتظر‬ ‫‪.3‬‬
‫یک عمل ورودی‪/‬خروجی بود زمان پردازنده تلف میشد با همپوش کردن زمان پردازنده و ورودی‪/‬خروجی‬
‫زمان تلف شده پردازنده کم شده و کارایی سیستم بهبود مییابد‪.‬‬
‫ایجاد موازنه در پهنای باند زیرسیستمها‪ :‬پهنای باند پردازنده زیاد است و پهنای باند حافظه نسبت‬ ‫‪.4‬‬
‫به پردازنده کمتر است و پهنای باند ورودی‪/‬خروجی از پردازنده بسیار کمتر است‪ .‬با ایجاد توازن بین آنها‬
‫سرعت سیستم افزایش مییابد‪.‬‬
‫سلسله مراتب حافظه‪ :‬با توجه به اینکه از لحاظ سرعت و ظرفیت حافظهها با هم متفاوتند و حافظه‬ ‫‪.5‬‬
‫دیسک کمترین سرعت و ثباتها بیشترین سرعت را دارند برای برقراری ارتباط بین پردازنده و دیسک از‬
‫سلسله مراتب حافظه مثل حافظه اصلی و حافظه نهان استفاده میشود تا با همپوشانی‪ ،‬سرعت تبادل‬
‫اطالعات بهبود یابد‪.‬‬
‫استفاده از چندبرنامهگی و اشتراک زمانی‪ :‬برای اجرای چندین برنامه در سیستم تکپردازنده زمان‬ ‫‪.6‬‬
‫پردازنده بین برنامهها تقسیم شده و امکان اجرای چند برنامه در سیستم داده میشود‪.‬‬

‫با وجود استفاده از تکنیکهای فوق در سیستم تکپردازنده‪ ،‬این تکنیکها برای برنامههای بزرگ و با بار عملیاتی‬
‫باال مناسب نیست و استفاده از پردازندهها و کامپیوترها بطور همزمان ضروری میباشد‪ .‬این ضرورت باعث ایجاد‬
‫سیستمهای چندپردازنده و چندکامپیوتر شده است که در این کتاب مورد بررسی قرار میگیرند‪.‬‬

‫‪ -2-1-1‬اجزاء کامپیوترهای مدرن‬


‫اجزاء سختافزاری‪ ،‬نرمافزاری‪ ،‬و برنامهنویسی یک سیستم کامپیوتری مدرن بر اساس پردازش موازی بطور مختصر‬
‫در زیر توضیح داده شده است‪.‬‬
‫مسائل محاسباتی‪ :‬یک کامپیوتر مدرن‪ ،‬یک سیستم مجتمع است که از سختافزار ماشین‪ ،‬یک مجموعه‬
‫دستورالعمل‪ ،‬نرمافزار سیستم‪ ،‬برنامههای کاربردی و رابطهای کاربر تشکیل شده است‪ .‬این اجزاء سیستم در شکل‬
‫‪ 1-2‬نشان داده شده است‪ .‬استفاده از کامپیوتر به مسائل واقعی زندگی که روشهای دقیق و سریع نیاز دارند وابسته‬
‫است‪ .‬بر اساس طبیعت مسائل راهحلها نیازمند محاسبات متفاوتی هستند‪.‬‬
‫برای مسائل عددی در صنعت و تکنولوژی‪ ،‬راهحلها نیازمند فرمولهای پیچیده ریاضی و محاسبات صحیح یا ممیز‬
‫شناور پرزحمتی میباشند‪ .‬برای مسائل حرفی‪-‬عددی در مشاغل و دولت‪ ،‬راهحلها نیازمند‪ ،‬نقل و انتقاالت دقیق‪،‬‬
‫مدیریت پایگاه داده بزرگ‪ ،‬و عملیات بازیابی اطالعات میباشد‪.‬‬
‫برای مسائل هوش مصنوعی‪ 1‬راه حل نیازمند منطق رابطهای و دستکاریهای سمبلیک است‪ .‬این مسائل محاسباتی‬
‫تحت عناوین محاسبات عددی‪ ،‬پردازش تراکنشی‪ ،‬و استدالل منطقی نامگذاری شدهاند‪ .‬بعضی مسائل پیچیده ممکن‬
‫است نیازمند ترکیبی از این مسائل باشند‪.‬‬
‫ساختمان دادهها و الگوریتمها‪ :‬ساختمان داده و الگوریتمهای خاصی برای تعیین محاسبات و ارتباطات مسائل‬
‫محاسباتی مورد نیاز است‪ .‬اغلب الگوریتمهای عددی‪ ،‬معین هستند و از ساختمان دادههای رایج استفاده میکنند‪.‬‬
‫پردازش سمبلیک ممکن است نیازمند تحقیقات هوشمندانه یا نامعین بر اساس پایههای علمی بسیار قوی باشند‪.‬‬

‫شکل ‪ :2-1‬اجزاء عمومی یک سیستم کامپیوتری‬

‫فرموله کردن مسائل و توسعه الگوریتمهای موازی اغلب نیازمند ارتباط بین تئوریسینها‪ ،‬برنامهنویسان کامپیوتر و‬
‫کاربران عملیاتی میباشد‪ .‬کتابهای زیادی در مورد طراحی و نگاشت الگوریتمها یا استفاده از آنها روی‬
‫کامپیوترهای موازی نوشته شدهاند‪ .‬استفاده از برنامهنویسی موازی و توزیعی که بتواند از ویژگیهای سختافزار و‬
‫کامپیوترهای موازی و توزیعی استفاده مؤثر نماید و زمان اجرای برنامهها را کاهش دهد نیاز به مطالبی دارد که در‬

‫‪1‬‬
‫‪AI=Artificial Intelligent‬‬
‫کانون نشر علوم‬ ‫‪| 18‬‬

‫این کتاب تا حدود کمی به آن پرداخته شده است‪ .‬این نکته اساسی که کاهش زمان اجرای برنامهها با توجه به‬
‫توسعه سختافزارها نقش مؤثری در استفاده مؤثر از سختافزار دارد باید مورد توجه اساسی قرار گیرد‪.‬‬
‫منابع سختافزاری‪ :‬معماری یک سیستم کامپیوتر توسط سه دایره تودرتو در قسمت راست شکل ‪ 2-1‬نشان‬
‫داده شده است‪ .‬در یک سیستم کامپیوتری مدرن توان عملیاتی آن توسط مختصات منابع سختافزاری‪ ،‬سیستم‬
‫عامل و نرمافزار کاربردی مشخص میشود‪ .‬پردازندهها‪ ،‬حافظه و وسایل جانبی هسته سختافزار یک سیستم‬
‫کامپیوتر را شکل میدهند‪ .‬مجموعه دستورالعمل پردازندهها‪ ،‬سازمان حافظه‪ ،‬چندپردازندهها‪ ،‬سوپرکامپیوترها‪،‬‬
‫چندکامپیوترها و کامپیوترهای موازی انبوه در این کتاب بحث میشوند‪.‬‬
‫رابطهای سختافزاری خاص اغلب در وسایل ورودی‪/‬خروجی ساخته میشوند‪ .‬مثل ترمینالها‪ ،‬ایستگاههای کاری‪،‬‬
‫اسکنرهای صفحه نوری‪ ،‬تشخیص دهنده کاراکتر مغناطیسی‪ ،‬مودمها‪ ،‬فایل سرورها‪ ،‬دستگاههای ورودی دادههای‬
‫صوتی‪ ،‬چاپگرها و رسامها‪ .‬این وسایل جانبی به طور مستقیم یا توسط یک شبکه گسترده به کامپیوترها متصل‬
‫میشوند‪.‬‬
‫در مجموع‪ ،‬برنامههای رابط نرمافزاری مورد نیاز است‪ .‬این رابطهای نرمافزاری شامل سیستمهای انتقال فایل‪،‬‬
‫ویرایشگرها‪ ،‬پردازشگرهای کلمه‪ ،‬راهاندازهای دستگاهها‪ ،‬راهاندازهای وقفه‪ ،‬برنامههای ارتباطی شبکه‪ ،‬و غیره می‪-‬‬
‫باشند‪ .‬این برنامهها قابلیت حمل برنامههای کاربر روی معماریهای ماشین متفاوت را ساده میکنند‪.‬‬
‫سیستم عامل‪ :‬یک سیستم عامل مناسب تخصیص و عدم تخصیص منابع در خالل اجرای برنامهها را مدیریت‬
‫میکند‪.‬‬
‫نگاشت‪ ،‬یک پردازه دوطرفه است که ساختار الگوریتم را با معماری سختافزار و برعکس انطباق میدهد‪ .‬یک‬
‫نگاشت خوب‪ ،‬کدهای منبع مؤثری تولید میکند و در نهایت زمان اجرای برنامه را کاهش میدهد‪ .‬نگاشت الگوریتمی‬
‫و ساختاری دادهها روی معماری ماشین شامل زمانبندی پردازنده‪ ،‬نگاشت حافظه‪ ،‬ارتباطات بین پردازندهای و غیره‬
‫میباشد‪ .‬این فعالیتها اغلب وابسته به معماری کامپیوتر میباشد‪.‬‬
‫نگاشت بهینه برای معماری کامپیوترهای گوناگون سخت میباشد‪ .‬پیادهسازی این نگاشت روی پشتیبانی مفید‬
‫سیستم عامل و کامپایلر تکیه دارد‪ .‬موازات میتواند در زمان طراحی الگوریتم‪ ،‬در زمان برنامه‪ ،‬در زمان کامپایل‪ ،‬و‬
‫زمان اجرا بهرهبرداری شود‪ .‬تکنیکهای بهرهبرداری موازات در این مراحل هسته تکنولوژی پردازش موازی را شکل‬
‫میدهد‪.‬‬
‫پشتیبانی نرمافزار سیستم‪ :‬پشتیبانی نرمافزاری برای توسعه برنامههای مفید در زبانهای سطح باال مورد نیاز‬
‫است‪ .‬کد منبع نوشته شده در زبان سطح باال‪ 1‬ابتدا باید به کد شئ‪ 2‬توسط کامپایلر بهینه‪ ،‬ترجمه شود‪ .‬کامپایلر‬
‫متغیرها را به ثباتها و به کلمات حافظه انتساب میدهد و واحدهای عملیاتی را برای عملگرها رزرو میکند‪ .‬یک‬
‫اسمبلر برای ترجمه کد شئ کامپایل شده‪ ،‬به کد ماشین که توسط سختافزار ماشین قابل سازمان دهی است‬
‫استفاده میشود‪ .‬یک بارکننده برای مقدار دهی اولیه اجرای برنامه در هسته سیستم عامل استفاده میشود‪.‬‬

‫‪1‬‬
‫‪High Level language‬‬
‫‪2‬‬
‫‪Object code‬‬
‫پیوند منابع نیازمند استفاده از کامپایلر‪ ،‬اسمبلر‪ ،‬بارکننده‪ ،1‬و هسته سیستم عامل است تا به منابع به منظور اجرای‬
‫برنامه دسترسی پیدا کند‪ .‬تأثیر این پردازه‪ ،‬کارایی بهرهبرداری از سختافزار و قابلیت برنامه نویسی کامپیوتر را تعیین‬
‫می کند‪ .‬امروزه برنامه نویسی موازی هنوز هم برای اکثر برنامه نویسان خیلی سخت است به خاطر این حقیقت که‬
‫زبانهای موجود بطور رایج برای کامپیوترهای ترتیبی توسعه داده شدهاند‪ .‬برنامه نویسان اغلب مجبورند که برنامه‪-‬‬
‫های وابسته به خواص سختافزار بنویسند بجای اینکه بطور موازی به روشی قابل حمل و کلی برنامه نویسی کنند‪.‬‬
‫بطور ایدهآل نیازمند توسعه یک محیط برنامه نویسی موازی با زبانهای مستقل از معماری‪ ،‬کامپایلرها و ابزارهای‬
‫نرمافزاری هستیم‪.‬‬
‫برای توسعه یک زبان موازی هدف کارایی آن در پیادهسازی‪ ،‬قابلیت حمل در ماشینهای مختلف‪ ،‬سازگاری با‬
‫زبانهای ترتیبی موجود‪ ،‬تأکید روی موازیسازی و سادگی برنامه نویسی است‪ .‬زبانهای جدید اغلب با زبانهای‬
‫موجود سازگار نیستند و نیازمند کامپایلرهای جدید یا گذرهای جدید در کامپایلرهای موجود میباشند‪ .‬اکثر سیستمها‬
‫روش توسعه زبانها را انتخاب میکنند‪.‬‬
‫پشتیبانی کامپایلر‪ :‬سه روش بهبود در کامپایلر وجود دارد‪ :‬پیش پردازنده‪ ،‬پیش کامپایلر و کامپایلر موازی‪ .‬یک‬
‫پیش پردازنده از کامپایلر ترتیبی و کتابخانه سطح پایین از کامپیوتر مقصد استفاده میکند تا تولیدات موازی سطح‬
‫باال را پیادهسازی کند‪.‬‬
‫روش پیش کامپایلر نیازمند تجزیه و تحلیل جریان برنامه‪ ،‬چک کردن وابستگی‪ ،‬بهینه سازی محدود برای تشخیص‬
‫موازی سازی میباشد‪ .‬روش سوم نیازمند یک کامپایلر کامالً توسعه یافته موازی یا برداری است که بطور خودکار‬
‫میتواند موازات را در کد منبع تشخیص دهد و کدهای ترتیبی را به کدهای موازی تبدیل کند‪.‬‬
‫کارایی پردازنده پیوند وابسته به کارایی پیش پردازنده‪ ،‬پیش کامپایلر‪ ،‬کامپایلر موازی‪ ،‬بارکننده و پشتیبانی سیستم‬
‫عامل است‪ .‬به خاطر عدم قابلیت پیش بینی رفتار برنامه‪ ،‬هیچکدام از کامپایلرهای موجود کامالً خودکار یا کامالً‬
‫هوشمند نیستند تا بتوانند هر نوع موازاتی را تشخیص دهند‪ .‬راهنماهای کامپایلر اغلب به کد برنامه افزوده میشود‬
‫تا به کامپایلر کمک کند که وظیفهاش را بهتر انجام دهد‪ .‬ممکن است کاربر برای ساخت برنامه با کامپایلر محاوره‬
‫کند که این باعث افزایش کارایی کامپیوترهای موازی میشود‪.‬‬

‫‪ -3-1-1‬سیر تکامل معماری کامپیوتر‬

‫مطالعه معماری کامپیوتر شامل سازمان سختافزار و نیازهای نرمافزاری‪/‬برنامهنویسی میشود‪ .‬از دید یک برنامه‪-‬‬
‫نویس زبان اسمبلی‪ ،‬معماری کامپیوتر توسط مجموعه دستوراتش که شامل ‪( opcode‬کدهای عملیات)‪ ،‬مدهای‬
‫آدرس دهی‪ ،‬ثباتها‪ ،‬حافظه مجازی و غیره میباشد‪ ،‬تعریف میشود‪.‬‬
‫از دید پیادهساز سختافزار‪ ،‬معماری کامپیوتر با پردازنده‪ ،‬حافظههای نهان‪ ،‬گذرگاهها‪ ،‬ریزکدها‪ ،‬خط لولهها‪ ،‬حافظه‬
‫فیزیکی و غیره معرفی میشود‪ .‬بنابراین مطالعه معماری کامپیوتر شامل معماری مجموعه دستورالعمل و سازمان‬
‫پیادهسازی ماشین میشود‪.‬‬

‫‪1‬‬
‫‪Loader‬‬
‫کانون نشر علوم‬ ‫‪| 20‬‬

‫در طول ‪ 5‬دهه اخیر‪ ،‬معماری کامپیوتر بجای تغییرات انقالبی‪ ،‬تغییرات تدریجی داشته است‪ .‬خواص ثابت آنهایی‬
‫هستند که نیازهای کارایی را برآورده میکنند‪ .‬همانطور که در شکل ‪ 3-1‬مشاهده میکنید با معماری ون نیومن که‬
‫بعنوان یک ماشین ترتیبی‪ ،‬دادههای اسکالر را اجرا میکند شروع کردهایم‪ .‬کامپیوتر ترتیبی از بیت ترتیبی به عملیات‬
‫موازی کلمه‪ 1‬و از عملیات ممیز ثابت به ممیز شناور پیشرفت کرده است‪ .‬معماری ون نیومن به خاطر اجرای ترتیبی‬
‫دستورات برنامه کُند است‪.‬‬
‫اسکالر‬

‫ترتیبی‬ ‫پیش بینی‬

‫همپوشانی‬ ‫موازات‬
‫‪I/E‬‬ ‫عملکردی‬

‫چند واحد‬
‫خط لوله‬
‫عملیاتی‬

‫بردار‬
‫بردار صریح‬
‫ضمنی‬

‫حافظه به‬ ‫ثبات به‬


‫حافظه‬ ‫ثبات‬

‫‪SIMD‬‬ ‫‪MIMD‬‬

‫پردازنده‬ ‫آرایه‬ ‫چند‬ ‫چندپردازنده‬


‫ها‬ ‫چند هسته ای‬
‫انجمنی‬ ‫پردازنده‬ ‫کامپیوترها‬

‫هسته های‬
‫بسیار زیاد‬

‫شکل ‪ :3-1‬تکامل تدریجی معماری از کامپیوترهای اسکالر تا پردازندههای برداری و پردازندههای موازی‬

‫تعریف معماری کامپیوتر‪ :‬برای تعریف و طراحی یک کامپیوتر موارد مختلفی را باید در نظر گرفت که شامل‬
‫طراحی مجموعه دستورالعمل‪ ،‬سازمان عملیاتی‪ ،‬طراحی منطقی‪ ،‬و پیادهسازی میشود‪ .‬پیادهسازی ممکن است شامل‬
‫طراحی مدار مجتمع‪ ،‬بستهبندی‪ ،‬مصرف توان و نحوه پایین آوردن گرمای تولید شده در کامپیوتر باشد‪ .‬بهینهسازی‬
‫طراحی نیازمند آشنایی با محدوده گستردهای از تکنولوژیها‪ ،‬کامپایلرها و سیستمهای عامل تا طراحی منطق و‬
‫ساخت و تولید تراشه باشد‪.‬‬

‫معماری کامپیوتر واقعی‪ :‬طراحی سازمان و سختافزار برای رسیدن به نیازهای عملکردی و اهداف پیادهسازی‬
‫یک کامپیوتر دو عنصر دارد‪ :‬سازمان و سختافزار‪ :‬عبارت سازمان دیدگاه پایین طراحی کامپیوتر است شامل سیستم‬
‫حافظه‪ ،‬ارتباط بین حافظه و طراحی پردازنده داخلی یا پردازنده‪ .‬عبارت میکرو معماری نیز بجای سازمان استفاده‬

‫‪1‬‬
‫‪Word‬‬
‫میشود به عنوان مثال‪ ،‬دو پردازنده ‪ AMD Opteron‬و ‪ Intel Corei7‬با معماری دستورالعمل مشابه اما‬
‫سازمانهای متفاوت هستند‪ .‬هر دو پردازنده مجموعه دستورالعمل ‪ X86‬را دارند اما خطلوله و سازمانهای حافظه‬
‫نهان متفاوت دارند‪ .‬چندپردازنده در یک ریزپردازنده باعث ایجاد کلمه هسته‪ 1‬یا همان پردازنده شد‪ .‬بجای استفاده‬
‫از اصطالح ریزپردازندهی چندپردازندهای اصطالح چندهسته بکار میرود‪ .‬سختافزار اشاره به مشخصات کامپیوتر‪،‬‬
‫شامل طراحی جزئیات منطق‪ ،‬و تکنولوژی بستهبندی کامپیوتر دارد‪ .‬معمار کامپیوتر باید کامپیوتری طراحی کند که‬
‫نیازهای عملیاتی مثل‪ ،‬هزینه‪ ،‬کارایی‪ ،‬توان محاسباتی و توان مصرفی و اهداف دسترسپذیری را برآورده کند‪ .‬در‬
‫شکل ‪ 4-1‬سازمان یک کامپیوتر نوعی را نشان دادهایم‪ .‬هدف ما بحث راجع به معماری مجموعه دستورالعمل‪،‬‬
‫سیستم ورودی‪/‬خروجی‪ ،‬حافظه‪ ،‬پردازنده‪ ،‬و کنترل و مسیر داده میباشد‪.‬‬

‫کاربرد‬
‫سیستم عامل‬
‫کامپایلر‬ ‫میانافزار‬
‫معماری مجموعه دستورالعمل‬
‫‪CPU‬‬ ‫سیستم ‪ I/O‬حافظه‬
‫کنترل و مسیر داده‬

‫طراحی دیجیتال‬
‫طراحی مدار‬
‫لیاوت‬

‫شکل ‪ :4-1‬سازمان یک کامپیوتر نوعی از سطح باال به‬


‫پایین‬
‫پیش بینی‪ ،‬موازات‪ ،‬خطلوله‪ :‬تکنیک پیشبینی برای پیشبرداشت دستورات به منظور همپوشانی عملیات‬
‫‪ I/E2‬معرفی شد تا موازات سطح پایین عملیاتی را امکانپذیر کند‪ .‬موازات عملیاتی به دو روش پشتیبانی میشود‪:‬‬
‫اول استفاده همزمان از چندین واحد عملیاتی‪ ،‬و دوم ایجاد خط لوله در سطوح پردازشی گوناگون‪.‬‬
‫روش دوم شامل اجرای خط لول ه دستورالعمل‪ ،‬محاسبات ریاضی خط لوله و عملیات دسترسی به حافظه میشود‪.‬‬
‫خط لوله زمانی جذاب است که عملیات مشابهی بطور مکرر روی برداری از دادهها اجرا شود‪ .‬ابتداً عملیات برداری‬
‫بطور ضمنی توسط حلقههای کنترل شده نرمافزاری با استفاده از پردازندههای خط لوله اسکالر اجرا میشدند‪.‬‬
‫طبقهبندی کامپیوترها‪ :‬کامپیوترهای امروزی (‪ )2013‬را از لحاظ کاربردی میتوان به پنج دسته بصورت زیر‬
‫تقسیم بندی کرد‪:‬‬
‫‪( PMD3 .1‬کامپیوترهای موبایل)‪ :‬شامل مجموعهای از وسایل بیسیم با رابط کاربری چندرسانهای مثل‬
‫تلفن سلولی‪ ،‬کامپیوترهای تبلت و غیره میباشند‪ .‬هزینه تمام شده اولین عامل در این کامپیوترها است و‬
‫مصرف کننده انتظار دارد که هزینه تمام شده این کامپیوترها چند صد دالر باشد‪ .‬بخاطر نبود خنک کننده و‬

‫‪1‬‬
‫‪Core‬‬
‫‪2‬‬
‫‪Instruction fetch/decode and execution‬‬
‫‪3‬‬
‫‪Personal Mobile Device‬‬
‫کانون نشر علوم‬ ‫‪| 22‬‬

‫بسته بندی ارزان مصرف انرژی آنها پایین است‪ .‬نیاز به انرژی و اندازه کوچک باعث استفاده از حافظه فلش‬
‫بجای دیسکهای مغناطیسی شده است‪ .‬پاسخ دهی و قابلیت پیشبینی‪ 1‬خواص کلیدی برای کاربردهای‬
‫رسانه هستند (اجرای زمان قطعی)‪ .‬خاصیت کلیدی دیگر کاربردهای ‪ PMD‬نیاز به حداقل کردن حافظه و‬
‫استفاده مؤثر از انرژی میباشد‪ .‬چون در این سیستمها هزینه حافظه ممکن است قسمت قابل توجهی از‬
‫هزینه سیستم باشد بنابراین باید میزان حافظه استفاده شده در آنها حداقل شود‪.‬‬
‫‪ .2‬کامپیوترهای رومیزی و لپتاپ‪ :‬اولین و شاید بیشترین فروش از نظر تعداد و پول عاید شده هنوز متعلق‬
‫به کامپیوترهای رومیزی است‪ .‬نصف فروش کامپیوترهای رومیزی از سال ‪ ،2008‬لپتاپها هستند‪ .‬هدف‬
‫اصلی در این نوع کامپیوترها بهینه سازی میزان کارایی‪/‬هزینه میباشد‪.‬‬
‫‪ .3‬سرورها‪ :‬کاربرد آنها شامل سرویس فایل و محاسبات است‪ .‬در این نوع سیستمها قابلیت دسترس پذیر‬
‫بودن‪ 2‬باال‪ ،‬حیاتی است مثالً خطا در یک سرور ماشین خودپرداز‪ 3‬خیلی بحرانیتر از خطا در یک سیستم‬
‫رومیزی است‪ .‬خصوصیت کلیدی دیگر سرورها لزوم مقیاسپذیری آنها است (مقیاسپذیری ظرفیت‬
‫محاسبات‪ ،‬حافظه‪ ،‬دیسک‪ ،‬پهنای ورودی‪/‬خروجی یک سرور مهم است)‪ .‬کارایی سرورها براساس تعداد‬
‫تراکنش در دقیقه یا صفحات وب در ثانیه باید باال باشد‪.‬‬
‫‪ .4‬کامپیوترهای خوشهای‪/‬مقیاس ورهاوس(‪ : 4)WSC‬ظهور مفهوم ‪ SaaS5‬مثل بازیهای چند‬
‫کاربره‪ ،‬اشتراک ویدئو‪ ،‬شبکه اجتماعی‪ ،‬جستجو‪ ،‬فروش آنالین باعث ایجاد نسل جدیدی از کامپیوترها شد‬
‫که به آنها خوشهای میگویند‪ .‬سیستمهای خوشهای مجموعهای از کامپیوترهای رومیزی یا سرورها که‬
‫توسط یک شبکه محلی به هم متصل شدهاند و شبیه یک کامپیوتر تکی بزرگ کار میکنند میباشد‪WSC .‬‬
‫خوشههای بزرگی هستند که دهها هزار سرور مثل یک سیستم بزرگ عمل میکنند‪.‬‬
‫چون ‪WSC‬ها خیلی بزرگ هستند‪ ،‬هزینه‪-‬کارایی و توان در آنها حیاتی هستند‪ ٪80.‬هزینه یک ورهاوس‬
‫‪ 90‬میلیون دالری مرتبط با توان و سرد کردن داخل کامپیوترهاست‪ .‬در ‪ WSC‬مثل سرورها قابل دسترس‬
‫پذیر بودن حیاتی میباشد‪ .‬سوپرکامپیوترها و ‪ WSC‬با هم مرتبط هستند و از لحاظ هزینه مشابه هستند‬
‫(چندصد میلیون دالر) ولی تأکید سوپرکامپیوترها در انجام دادن سریع محاسبات اعشاری است و ممکن است‬
‫با استفاده از کامپیوترهای معمولی یک هفته اجرای آنها طول بکشد‪ .‬در سوپرکامپیوترها شبکههای داخلی‬
‫گرانتر است درحالیکه تأکید ‪WSC‬ها در کاربردهای محاورهای‪ ،‬حافظه مقیاسباال‪ ،‬قابلیت اعتماد باال و‬
‫پهنای باند باالی اتصال به اینترنت میباشد‪.‬‬

‫‪1‬‬
‫‪Predictability‬‬
‫‪2‬‬
‫‪Avalibility‬‬
‫‪3‬‬
‫‪Automatic Teller Machine‬‬
‫‪4‬‬
‫در این کتاب از کلمه خوشه به جای کالستر استفاده میکنیم )‪Cluster/Warehouse Scale Computers (WSC‬‬
‫‪5‬‬
‫‪Software as a Service‬‬
‫‪ .5‬کامپیوترهای توکار‪ :1‬دراین نوع کامپیوترها که بسیار گستردهاند از ریزپردازندهها در اندازه و هزینههای‬
‫مختلف استفاده میشود‪ .‬این سیستمها در بسیاری از وسایل خانگی صنعتی و غیره مثل ماشین لباسشویی‪،‬‬
‫میکروویو‪ ،‬آسانسور و غیره بکار میروند‪ .‬در این نوع کامپیوتر هزینه عامل کلیدی میباشد‪.‬‬

‫در جدول ‪ ،3-1‬پنج کالس کامپیوترها و خواص آنها باهم مقایسه شدهاند‪ .‬در سال ‪1.8 ،2010‬میلیارد ‪PMD‬‬
‫(‪ 90٪‬آنها سلول موبایل بودهاند)‪ 350 ،‬میلیون کامپیوتر رومیزی‪ ،‬و ‪ 20‬میلیون سرور فروخته شدهاند‪ .‬هزینه کل‬
‫کامپیوتر توکار فروخته شده ‪ 1.9‬میلیارد دالر بوده است‪.‬‬
‫کامپیوترهای‬ ‫کامپیوتر مقیاس‬
‫سرور‬ ‫رومیزی‬ ‫‪PMD‬‬ ‫خصوصیت‪/‬سیستم‬
‫توکار‬ ‫خوشهای‪/‬ورهاوس‬
‫‪$10-‬‬ ‫‪$100000-‬‬ ‫‪$5000-‬‬ ‫‪$300-‬‬ ‫‪$100-‬‬
‫هزینه سیستم‬
‫‪$100000‬‬ ‫‪$200000000‬‬ ‫‪$10000000‬‬ ‫‪$2500‬‬ ‫‪$1000‬‬
‫‪0.01-100$‬‬ ‫‪50-250$‬‬ ‫‪200-2000$‬‬ ‫‪500$50-‬‬ ‫‪10-100$‬‬ ‫هزینه ریزپردازنده‬
‫هزینه‪-‬‬
‫هزینه‪ ،‬انرژی‪،‬‬ ‫کارایی‪ ،‬قابل دسترس‬ ‫هزینه‪ ،‬انرژی‪،‬‬
‫هزینه‪-‬کارایی‪ ،‬کارایی‪،‬‬ ‫کارایی‪،‬‬ ‫مطالب بحرانی در‬
‫کارایی برای کاربرد‬ ‫بودن‪ ،‬مقیاسپذیری‪،‬‬ ‫کارایی رسانه‪،‬‬
‫تناسب انرژی‬ ‫انرژی‪ ،‬کارایی‬ ‫طراحی سیستم‬
‫خاص‬ ‫انرژی‬ ‫پاسخدهی‬
‫گرافیکی‬
‫جدول ‪ :3-1‬مقایسه پنج کالس کامپیوترها از لحاظ کاربردی‬

‫هرچند که تکنولوژی ساخت مدارات الکترونیکی باعث افزایش سرعت میشود ولی در یک تکنولوژی خاص عامل‬
‫اصلی در افزایش سرعت استفاده از روشهای مختلف موازات است‪ .‬همانطور که در شکل ‪ 1-1‬مشاهده شد افزایش‬
‫سرعت از سال ‪ 1986‬تا ‪ 2003‬هر سال ‪ 50‬درصد بود که علت اصلی این سیر صعودی استفاده از روشهای‬
‫هوشمندانه در طراحی معماری و سازمان کامپیوتر از قبیل موازات بود‪ .‬در نتیجه انواع موازات و طبقه بندی کامپیوترها‬
‫از لحاظ موازات را در زیر بحث میکنیم و جزئیات مطالب در ادامه کتاب مطرح خواهند شد‪.‬‬

‫طبقهبندی موازات و معماریهای موازی‪ :‬جهت افزایش قدرت محاسباتی کامپیوترها دو نوع کلی از موازات‬
‫در کاربردها داریم‪:‬‬
‫• ‪ DLP2‬موازات سطح داده‪ :‬تعداد زیادی داده میتوانند همزمان توسط تعداد زیادی واحد محاسباتی پردازش‬
‫شوند‪.‬‬
‫• ‪ TLP3‬موازات سطح کار‪ :‬پردازهها می توانند بطور مستقل و گسترده بصورت موازی توسط پردازنده یا‬
‫کامپوترهای مستقل پردازش شوند‪.‬‬
‫سختافزار کامپیوتر از این دو نوع موازات میتواند به چهار روش استفاده کند‪:‬‬
‫‪ .1‬موازات سطح دستور ‪)ILP(4‬‬
‫‪ .2‬معماریهای برداری و دادههای پردازنده گرافیکی (‪( )GPU‬اِعمال یک دستور به مجموعهای از دادهها)‬

‫‪1‬‬
‫‪Embedded computers‬‬
‫‪2‬‬
‫‪Data Level Parallelism‬‬
‫‪3‬‬
‫‪Task Level parallelism‬‬
‫‪4‬‬
‫‪Instruction level parallelism‬‬
‫کانون نشر علوم‬ ‫‪| 24‬‬

‫‪ .3‬موازات سطح نخ (‪ :)thread1‬برای محاوره بین نخهای موازی از موازات داده یا کار در یک مدل سختافزار‬
‫متصل محکم استفاده میکند‪.‬‬
‫‪ .4‬موازات سطح‪-‬تقاضا ‪ :(RLP) 2‬موازات را در بین کارهای غیرمتصل زیاد که توسط برنامهنویس یا سیستم‬
‫عامل تعیین میشود استفاده میکند‪.‬‬
‫این طبقهبندی قبالً توسط ‪ )1972( Flynn‬بصورت زیر انجام شده است‪.‬‬

‫طبقهبندی ‪ Michael Flynn :Flynn‬طبقهبندی معماری کامپیوتر مختلف را بر اساس دستور و جریانهای‬
‫داده معرفی کرد‪ .‬همانطور که در شکل ‪(5-1‬الف) مشاهده میشود ماشینهای ترتیبی متداول (قدیمی) ‪SISD3‬‬
‫نامیده میشوند‪ .‬کامپیوترهای برداری که با سخت افزار برداری و اسکالر تجهیز شدهاند ماشینهای ‪ SIMD4‬نامیده‬
‫میشوند شکل ‪(5-1‬ب)‪ .‬کامپیوترهای موازی ماشینهای ‪ MIMD5‬نامیده میشوند شکل ‪(5-1‬ج)‪ .‬یک ماشین‬
‫‪ MISD6‬در شکل ‪(5-1‬د) مدل شده است‪ .‬یک داده یکسان روی آرایهای از پردازندهها که رشته دستورات متفاوتی‬
‫را اجرا می کنند جریان دارد‪ .‬این معماری تحت عنوان آرایه سیستولیک برای اجرای خط لوله الگوریتمهای خاص‬
‫شناخته میشود‪.‬‬
‫از ‪ 4‬مدل ماشین‪ ،‬اکثر کامپیوترهای موازی ساخته شده برای محاسبات همه منظوره‪ ،‬در مدل‪ MIMD‬فرض‬
‫میشوند‪ .‬مدلهای ‪ SIMD, MISD‬بیشتر مناسب محاسبات خاص منظورهاند‪ .‬بنابراین ‪ MIMD‬رایجترین‬
‫مدل‪ ،‬سپس ‪ SIMD‬و ‪ MISD‬کمترین استفاده را در ماشینهای تجاری دارند‪ .‬برخی معتقدند که در عمل چنین‬
‫سیستمی وجود ندارد و برخیها خطلوله را در این دسته قرار میدهند‪.‬‬
‫کامپیوترهای برداری‪/‬موازی‪ :‬کامپیوترهای موازی حقیقی آنهایی هستند که برنامهها را در مُد ‪ MIMD‬اجرا‬
‫میکنند‪ .‬دو کالس عمده از کامپیوترهای موازی وجود دارد به نامهای چندپردازندههای با حافظه مشترک و‬
‫چندکامپیوترهای ارسال پیام‪ .‬تفاوت اصلی بین چندپردازندهها و چندکامپیوترها در اشتراک حافظه و مکانیزمهای‬
‫استفاده شده برای ارتباطات بین پردازندهای میباشد‪.‬‬
‫پردازندهها در یک سیستم چندپردازنده با یکدیگر از طریق متغیرهای مشترک در یک حافظه مشترک ارتباط برقرار‬
‫می کنند‪ .‬هر گره کامپیوتر در یک سیستم چندکامپیوتره‪ ،‬یک حافظه محلی دارد که با سایر گرهها مشترک نیست‪.‬‬
‫ارتباطات بین پردازندهها با ارسال پیام بین گرهها انجام میشود‪.‬‬

‫‪ 1‬در کتابهای مختلف کلمه ‪ Thread‬به معنی نخ یا رگه ترجمه شده است‪ .‬در این کتاب از نخ استفاده میکنیم‪.‬‬
‫‪2‬‬
‫‪Request Level Parallelism‬‬
‫‪3‬‬
‫‪Single instruction stream over a single data steam‬‬
‫‪4‬‬
‫‪Single instruction stream over multiple data streams‬‬
‫‪5‬‬
‫‪Multiple instruction streams over multiple data streams‬‬
‫‪6‬‬
‫‪Multiple instruction streams over single data stream‬‬
‫‪IS‬‬ ‫‪PE1‬‬ ‫‪DS LM1 DS‬‬
‫‪CU‬‬ ‫‪PU‬‬ ‫‪Mu‬‬ ‫‪IS‬‬ ‫‪CU‬‬ ‫‪IS‬‬ ‫شبکه‬
‫‪I/O‬‬ ‫‪IS‬‬ ‫‪DS‬‬ ‫برنامه بار شده‬
‫‪U‬‬ ‫‪PEn‬‬ ‫‪DS LMn DS‬‬
‫ارتباطی‬
‫الف‪ :‬معماری یک پردازنده ‪SISD‬‬ ‫از میزبان‬
‫(ب)معماری ‪( SIMD‬با حافظه توزیع شده)‬

‫‪IS‬‬ ‫‪CU1‬‬ ‫‪IS‬‬ ‫‪PU1‬‬ ‫‪DS‬‬ ‫‪CU=Control unit‬‬


‫‪I/O‬‬ ‫‪PU=Processing unit‬‬
‫‪Mu=Memory unit‬‬
‫‪Shared‬‬ ‫‪Is=Instruction stream‬‬
‫‪Memory‬‬ ‫‪Ds=Data stream‬‬
‫‪DS‬‬ ‫‪PE=Processing Element‬‬
‫‪I/O CUn‬‬ ‫‪IS‬‬ ‫‪PUn‬‬
‫‪LM=Local Memory‬‬
‫‪IS‬‬
‫(ج) معماری ‪( MIMD‬با حافظه مشترک)‬

‫‪IS‬‬
‫‪IS‬‬
‫‪CU1‬‬ ‫‪CU2‬‬ ‫‪CUn‬‬
‫‪Memory‬‬ ‫‪IS‬‬ ‫‪IS‬‬ ‫‪IS‬‬
‫‪(Program and‬‬ ‫‪PU1‬‬ ‫‪PU2‬‬ ‫‪PUn‬‬
‫)‪data‬‬ ‫‪DS‬‬ ‫‪DS‬‬ ‫‪DS‬‬

‫‪I/O‬‬ ‫‪Ds‬‬
‫(د)معماری ‪( MISD‬آرایه سیستولیک)‬
‫شکل ‪ :5-1‬طبقه بندی ‪ Flynn‬از معماری های کامپیوتر‬

‫دستورات برداری صریح با ظهور پردازندههای برداری معرفی شدند‪ .‬یک پردازنده برداری به چندین خط لوله برداری‬
‫مجهز است که تحت کنترل سختافزار یا میانافزار میتوانند بطور همزمان استفاده شوند‪ .‬دو خانواده از پردازندههای‬
‫برداری خط لوله وجود دارند‪:‬‬
‫‪ -1‬معماری حافظه به حافظه‪ ،‬جریان خطلوله شده عملوندهای برداری را مستقیماً از حافظه به خطلوله و برگشت‬
‫دوباره به حافظه پشتیبانی میکند‪.‬‬
‫‪ -2‬معماری ثبات به ثبات از ثباتهای برداری استفاده میکند تا بین حافظه و خطلولههای عملیاتی رابطه برقرار‬
‫کند‪.‬‬
‫شاخه مهم دیگر از درخت معماری شامل کامپیوترهای ‪ SIMD‬برای پردازشهای برداری همزمان میباشد‪ .‬یک‬
‫کامپیوتر ‪ ،SIMD‬موازات مکانی را بجای موازات زمانی یک کامپیوتر خطلوله شده بهره برداری میکند‪ .‬محاسبات‬
‫کانون نشر علوم‬ ‫‪| 26‬‬

‫‪ SIMD‬با استفاده از یک آرایه از عناصر پردازشی (‪ )PE‬که توسط یک کنترلگر سنکرون شدهاند برآورده میشود‪.‬‬
‫حافظه انجمنی برای ساختن پردازندههای انجمنی ‪ SIMD‬میتواند استفاده شود‪ .‬ماشینهای ‪ SIMD‬همزمان‬
‫با کامپیوترهای برداری خط لوله شده در فصل ‪ 8‬مطالعه میشوند‪.‬‬
‫الیههای توسعه‪ :‬الیههای توسعه کامپیوترهای موازی بر اساس یک طبقهبندی که توسط ‪ Lionel Ni‬ارائه‬
‫شد‪ ،‬در شکل ‪ 6-1‬نشان داده شده است‪ .‬پیکربندیهای سختافزار حتی برای ماشینهای با مدل مشابه از یک‬
‫ماشین به ماشین دیگر متفاوت است‪ .‬فضای آدرس یک پردازنده در یک سیستم کامپیوتر در معماریهای مختلف‬
‫متفاوت است‪ .‬فضای آدرس وابسته به سازمان حافظه است که وابسته به ماشین است‪ .‬این خواص بر عهده طراح‬
‫است و باید با دامنه کاربردهای هدف تطابق داشته باشد‪.‬‬
‫به عبارت دیگر‪ ،‬برنامههای کاربردی و محیطهای برنامه نویسی به نحوی توسعه مییابند که مستقل از ماشین‬
‫باشند‪ .‬مستقل از معماری کامپیوتر‪ ،‬برنامههای کاربر باید با کمترین هزینه تغییر در کامپیوترهای زیادی قابل استفاده‬
‫باشند‪ .‬زبانهای سطح باال و مدلهای ارتباطی وابسته به انتخابهای معماری ساخته شده در یک سیستم کامپیوتر‬
‫میباشند‪ .‬از دید برنامه نویس این دو الیه باید از لحاظ معماری شفاف باشند‪.‬‬
‫در حال حاضر‪ ،‬زبانهای سطح باالی فرترن‪ ،C ،‬پاسکال‪ Ada ،‬و ‪ LISP‬توسط اکثر کامپیوترها پشتیبانی میشوند‪.‬‬
‫به هر حال‪ ،‬مدلهای ارتباطی متغیرهای مشترک در مقابل ارسال پیام‪ ،‬اغلب وابسته به ماشین میباشند‪ .‬روش‬
‫‪ Linda‬که از فضاهای چندتایی استفاده میکند یک مدل ارتباطی شفاف با معماری برای کامپیوترهای موازی‬
‫ارائه میدهد‪.‬‬
‫برنامهنویسان کاربردی شفافیت بیشتر معماری را ترجیح میدهند‪ ،‬درحالیکه برنامهنویسان کرنل باید روشهای‬
‫پشتیبانی شده توسط سختافزار را بدانند‪ .‬به عنوان یک معمار کامپیوتر خوب باید روشهایی که مشکالت را از هر‬
‫دو طرف حل میکنند ارائه داد‪ .‬پشتیبانی کامپایلرها و ‪ OS‬باید به نحوی طراحی شوند تا اکثر محدودیتهای‬
‫معماری را تا حد امکان از برنامه نویسی کم کنند‪.‬‬
‫چالشهای جدید‪ :‬تکنولوژی پردازش موازی از حدود ‪ 4‬دهه است که در تحقیقات و پیشرفتهای صنعتی در‬
‫میکروالکترونیک‪ ،‬مدارات چاپی‪ ،‬بستهبندی با چگالی باال‪ ،‬پردازندههای پیشرفته‪ ،‬سیستمهای حافظه‪ ،‬وسایل جانبی‪،‬‬
‫کانالهای ارتباطی‪ ،‬ارزیابی زبان‪ ،‬بهبود کامپایلرها‪ ،‬سیستمهای عامل‪ ،‬محیطهای برنامه نویسی و چالشهای‬
‫کاربردی در حال پیشرفت است‪.‬‬
‫پیشرفت سریع در تکنولوژی سختافزار بطور قابل توجهی ایجاد یک نسل جدید از کامپیوترها که با پردازش موازی‬
‫مطابقت دارد را اقتصادی ساخته است‪ .‬به هر حال مانع عمده در پردازش موازی برای ورود به پردازه ساخت در طرف‬
‫نرمافزار و برنامههای کاربردی است‪.‬‬

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


‫محیط برنامهنویسی‬ ‫ماشین‬
‫وابسته به‬ ‫پشتیبانی زبانها‬
‫ماشین‬ ‫مدل ارتباطی‬
‫فضای آدرسدهی‬
‫معماری سختافزار‬
‫شکل ‪ 6 : 6-1‬الیه توسعه سیستم کامپیوتر (‪)LIONEL NI ,1990‬‬
‫تا امروز برنامهنویسی کامپیوترهای موازی و برداری سخت است‪ .‬نیاز به پیشرفت عمدهای در حوزه نرم افزار وجود‬
‫دارد تا محیطی کاربر پسند برای کامپیوترهای با قدرت باال ایجاد شود‪ .‬الزم است تا نسل جدیدی از برنامه نویسان‬
‫آموزش داده شوند تا بطور مفید برنامه نویسی موازی انجام دهند‪ .‬کامپیوترهای با کارایی باال راهحلهایی دقیق و‬
‫سریع برای مسائل علمی‪ ،‬مهندسی‪ ،‬مشاغل‪ ،‬اجتماعی و دفاعی فراهم میکنند‪.‬‬
‫برخی از مسائل دنیای واقعی شامل مدلسازی پیشبینی آب و هوا‪ ،‬طراحی به کمک کامپیوتر برای مدارات ‪،VLSI‬‬
‫مدیریت پایگاه داده در مقیاس بزرگ‪ ،‬هوش مصنوعی‪ ،‬کنترل صنعتی و استراتژیهای دفاعی میباشند‪ .‬دامنه‬
‫کاربردهای کامپیوترهای پردازش موازی بطور جدی در حال افزایش است‪ .‬با فهم خوب معماریهای کامپیوتر‬
‫مقیاسپذیر و تکنیکهای برنامهنویسی موازی‪ ،‬خواننده بهتر میتواند با چالشهای محاسباتی آینده روبرو شود‪.‬‬
‫کارایی ایدهآل یک سیستم کامپیوتر نیازمند تطابق دقیقی بین قابلیتهای ماشین و رفتار برنامه میباشد‪ .‬قابلیتهای‬
‫ماشین با تکنولوژی بهتر سخت افزار‪ ،‬خواص معماری جدید و مدیریت منابعِ مفید قابل توسعه است‪ .‬به هر حال‪،‬‬
‫پیش بینی رفتار برنامه به خاطر وابستگی زیاد آن به کاربرد و شرایط زمان اجرا سخت است‪.‬‬
‫همچنین فاکتورهای دیگری مثل طراحی الگوریتم‪ ،‬ساختمانهای داده‪ ،‬کارایی زبان‪ ،‬مهارت برنامهنویس و تکنولوژی‬
‫کامپایلر بر رفتار برنامه تأثیر میگذارد‪ .‬رسیدن به تطابق دقیق بین سختافزار و نرمافزار با در نظر گرفتن همه‬
‫فاکتورها امکانپذیر است‪.‬‬
‫کارایی ماشین ممکن است از یک برنامه به برنامه دیگر فرق کند‪ .‬بنابراین رسیدن به حداکثر کارایی در کاربردهای‬
‫واقعی یک هدف غیر ممکن است‪ .‬به عبارت دیگر نمیتوانیم یک میانگین برای کارایی یک ماشین داشته باشیم‪.‬‬
‫همه فاکتورهای کارایی یا نتایج شاخصها برای ترکیب یک برنامه باید در نظر گرفته شوند‪ .‬به این دلیل کارایی را‬
‫باید توسط یک محدوده یا یک توزیع هارمونیک توصیف کرد‪.‬‬
‫در ادامه فاکتورهای پایه برای سنجش کارایی یک کامپیوتر را معرفی میکنیم‪ .‬این محکهای کارایی در همه‬
‫کاربردها قابل نتیجه گیری نیستند‪ .‬ولی میتوانند به معمار سیستم برای طراحی ماشینهای کاراتر کمک کنند یا‬
‫برنامه نویسان و طراحان کامپایلرها را تعلیم دهند تا کد بهینه برای اجرای کارا توسط سخت افزار بنویسند‪.‬‬
‫اجرای یک برنامه داده شده را توسط یک کامپیوتر مفروض در نظر بگیرید‪ .‬سادهترین واحد سنجش کارایی برنامه‬
‫زمان چرخش‪ 1‬میباشد که شامل دسترسیهای حافظه و دیسک‪ ،‬فعالیتهای ورودی و خروجی‪ ،‬زمان کامپایل‪،‬‬
‫سربارهای ‪ OS‬و زمان پردازنده می باشد‪ .‬برای کاهش زمان چرخش باید همه این فاکتورهای زمانی را کاهش‬
‫دهیم‪.‬‬
‫در یک کامپیوتر چندبرنامهی داده شده‪ ،‬سربار سیستم و ورودی‪/‬خروجی برای یک برنامه ممکن است با زمان‬
‫پردازندهی مورد نیاز با سایر برنامهها همپوشانی داشته باشند‪ .‬بنابراین عادالنه است که زمان پردازنده کلی مورد نیاز‬
‫برای اجرای برنامه را مقایسه کنیم‪ .‬پردازنده برای اجرای هر دوی برنامههای سیستم و برنامههای کاربر استفاده‬
‫میشود‪ .‬زمان اجرای برنامه کاربر توسط پردازنده مد نظر کاربر است‪.‬‬
‫سنجش کارایی‪ :‬وقتی میگوییم یک کامپیوتر از دیگری سریعتر است منظور ما چیست؟ کاربر یک کامپیوتر‬
‫رومیزی ممکن است بگوید یک کامپیوتر سریعتر است وقتیکه یک برنامه را در زمان کمتری اجرا کند‪ ،‬در حالیکه‬

‫‪1‬‬
‫‪Turn around time‬‬
‫کانون نشر علوم‬ ‫‪| 28‬‬

‫یک مدیر آمازون بگوید یک سیستم سریعتر است وقتیکه تراکنشهای بیشتری را در ساعت اجرا کند‪ .‬کاهش زمان‬
‫پاسخ برای یک کاربر کامپیوتر با اهمیت ا ست یعنی زمان بین شروع و خاتمه یک رخداد که به آن زمان اجرا نیز‬
‫می گویند‪ .‬ممکن است افزایش توان عملیاتی یعنی کل کار انجام شده در یک زمانِ داده شده‪ ،‬برای یک اپراتور‬
‫‪ WSC‬مهم باشد‪.‬‬
‫در مقایسه روشهای طراحی مختلف‪ ،‬میخواهیم کارایی دو کامپیوتر مختلف ‪ X,Y‬را به هم ربط دهیم‪ .‬عبارت‬
‫"‪ X‬سریعتر از ‪ Y‬است" هنگامی استفاده میشود که زمان پاسخ ‪ X‬از ‪ Y‬برای یک کار داده شده کمتر باشد‪.‬‬
‫کامپیوتر ‪ X‬از کامپیوتر ‪ n ، Y‬برابر سریعتر است اگر‪:‬‬
‫𝑌𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬
‫𝑋𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬
‫(معادله ‪= 𝑛 )1-1‬‬
‫چون زمان اجرا عکس کارایی است داریم‪:‬‬
‫‪1‬‬
‫𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬ ‫𝑌𝑒𝑐𝑛𝑎𝑚𝑟𝑜𝑓𝑟𝑒𝑃‬ ‫𝑒𝑐𝑛𝑎𝑚𝑟𝑜𝑓𝑟𝑒𝑃‬
‫= 𝑌𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸 = 𝑛‬ ‫‪1‬‬ ‫(معادله ‪= 𝑃𝑒𝑟𝑓𝑜𝑟𝑚𝑎𝑛𝑐𝑒𝑋 )2-1‬‬
‫𝑋‬ ‫𝑌‬
‫𝑋𝑒𝑐𝑛𝑎𝑚𝑟𝑜𝑓𝑟𝑒𝑃‬

‫عبارت "توان عملیاتی ‪ 1.3 ،X‬برابر بیشتر از ‪ Y‬است" یعنی تعداد کاراهایی که در واحد زمان روی کامپیوتر ‪X‬‬
‫تمام میشود ‪ 1.3‬برابر بیشتر از تعداد کارهایی است که در کامپیوتر ‪ Y‬تمام میشود‪.‬‬
‫متأسفانه زمان همیشه در مقایسه کارایی کامپیوترها واحد مناسبی نیست‪ .‬کاربرانی که بطور روتین برنامههای‬
‫مشابهی را اجرا میکنند برای ارزیابی یک کامپیوتر جدید مناسب هستند‪ .‬برای ارزیابی یک سیستم جدید این کاربران‬
‫بارکاریشان‪ ،‬که ترکیبی از برنامهها میباشد‪ ،‬را روی سیستم اجرا میکنند و زمان اجرای آنها را میسنجند‪ .‬برای‬
‫سنجش کارایی یک سیستم روشهای مختلفی وجود دارد‪ .‬هر کدام از این روشها بر اساس یکسری پارامتر کارایی‬
‫سیستم را می سنجند و هر کدام مزایا و معایب خاص خودشان را دارند‪ .‬ابتدا تاریخچه این روشها را بیان میکنیم‬
‫و سپس با چند مثال آنها را توضیح میدهیم‪:‬‬
‫برنامههای محک‪ :1‬یک انتخاب ساده برای اندازه گیری کارایی‪ ،‬برنامههای کاربردی واقعی مثل ‪Google‬‬
‫‪ Goggles‬است‪ .‬اجرای برنامههایی که سادهتر از کاربردهای واقعی هستند کارایی را به خوبی نمیسنجند‪ .‬مثال‪-‬‬
‫هایی از این نوع برنامهها عبارتند از‪:‬‬
‫• ‪ ،kernels‬کوچک هستند و قسمتهای کلیدی برنامههای واقعی هستند‪.‬‬
‫• ‪ ،Toy programs‬که برنامههای ‪-100‬خطی هستند‪ .‬مثل ‪.quicksort‬‬
‫• ‪ ،Synthetic benchmarks‬که برنامههای مقلد هستند و سعی میکنند رفتار برنامه واقعی را داشته‬
‫باشند‪ .‬مثل درایستون‪.‬‬

‫هر سه مورد امروزه زیاد اعتبار ندارند‪ .‬ولی برنامه سنتز درایستون هنوز هم بهترین برنامه محک برای پردازندههای‬
‫توکار میباشد‪ .‬یک روش بهبود این برنامههای محک اصالح کد آنها میباشد‪ .‬که این زمانی امکان پذیر است که‬
‫بهبود کد‪ ،‬بینشی مفید برای کاربران ایجاد کند و در سنجش کارایی واقعی مفید باشد‪ .‬یک راه مفید برای سنجش‬
‫کارایی مجموعهای از برنامههای محک میباشد که به آنها ‪ benchmark suites‬میگویند و واحدی رایج‬

‫‪1‬‬
‫در این کتاب از برنامه محک در ترجمه استفاده میکنیم‪Benchmark .‬‬
‫برای اندازه گیری کارایی پردازندهها با کاربردهای مختلف میباشند‪ .‬یک مزیت کلیدی ‪benchmark suites‬‬
‫این است که سنجش نادرست یک برنامه محک با سایر برنامههای محک پوشش داده میشود‪.‬‬

‫مثالی از این نوع برنامههای محک ‪ EEMBC1‬میباشد که از ‪ 41‬کرنل برای پیشبینی کارایی کاربردهای توکار‬
‫مختلف استفاده میکند مثل‪ :‬اتوماسیون‪/‬صنعتی‪ ،‬سفارشی‪ ،‬شبکه‪ ،‬اتوماسیون اداری‪ ،‬و ارتباطات‪ .‬چون برنامههای‬
‫محک ‪ EEMBC‬از کرنل استفاده میکنند و همچنین بر اساس نتایج آزمایشات‪ ،‬خیلی مشهور نشدند هنوز هم‬
‫برنامه محک درایستون استفاده میشود‪.‬‬

‫یکی از مهمترین مجموعه برنامههای محک ‪ SPEC2‬میباشد که از اواخر ‪ 1980‬برای ایستگاههای کاری ارائه‬
‫شد‪ .‬چون صنعت کامپیوتر در حال تغییر و تحول میباشد نیازمند برنامههای محک مختلف برای کاربردهای مختلف‬
‫میباشیم‪ .‬بنابراین انواع مختلفی برنامه محک در طبقهبندیهای مختلف وجود دارند‪ .‬لیست کاملی از انواع برنامههای‬
‫محک ‪ SPEC‬در ‪ www.spec.org‬وجود دارد‪.‬‬

‫هرچندکه تعداد برنامههای محک ارائه شده بسیار زیاد است و تعداد زیادی برنامه محک تحت سیستم عامل ویندوز‬
‫طراحی شدهاند اما روی برنامههای محک ‪ SPEC‬تمرکز میکنیم‪:‬‬

‫برنامههای محک رومیزی‪ :‬برنامههای محک رومیزی به دو گروه عمده تقسیم بندی میشوند‪ :‬برنامههای‬
‫محک حساس‪-‬به‪-‬پردازنده و برنامههای محک حساس‪-‬به‪-‬گرافیک‪ SPEC .‬ابتدا یک مجموعه برنامه محک‬
‫ارائه کرد که روی کارایی پردازنده تمرکز داشت (آنرا ‪ SPEC98‬نامید)‪ ،‬که پنج نسل توسعه را گذراند‪SPEC :‬‬
‫‪ SPEC CPU2006 .SPEC89 ،SPEC92 ،SPEC95 ،SPEC2000 ،CPU2006‬شامل ‪12‬‬
‫عدد برنامه محک صحیح (‪ )CINT2006‬و ‪ 17‬برنامه محک ممیز‪-‬شناور )‪ (CFP2006‬میباشد‪.‬‬

‫برنامههای محک ‪ SPEC‬برنامههای واقعی هستند که طوری طراحی شدهاند که قابل حمل باشند و اثر‬
‫ورودی‪/‬خروجی روی کارایی را حداقل کنند‪ .‬برنامههای محک صحیح از یک قطعه کد ‪ C‬تا یک برنامه شطرنج تا‬
‫شبیه سازی یک کامپیوتر کوانتوم متغیرند‪ .‬برنامههای محک ممیز‪-‬شناور دربرگیرنده کدهای ساختاریافته برای‬
‫مدل سازی عنصر متناهی‪ ،‬کدهایی برای حرکات ملکولی‪ ،‬و کدهای جبر خطی پراکنده برای حرکت سیاالت می‪-‬‬
‫باشند‪ .‬مجموعه ‪ SPEC CPU‬برای سیستمهای رومیزی و سرورهای تک‪-‬پردازنده مناسب هستند‪SPEC .‬‬
‫‪ CPU2006‬برای اندازه گیری کارایی پردازنده طراحی شد و همانطور که گفتیم تعداد زیادی برنامهی محک‬
‫‪ SPEC‬وجود دارد‪.‬‬

‫‪1‬‬
‫‪Electronic Design News Embedded Microprocessor Benchmark Consortium (Prononoced‬‬
‫)"‪"embassy‬‬
‫‪2‬‬
‫‪Standard Performance Evaluation Corporation‬‬
‫کانون نشر علوم‬ ‫‪| 30‬‬

‫برنامههای محک سرور‪ :‬چون سرورها چندین عملکرد دارند‪ ،‬بنابراین برنامههای محک مختلفی برای آنها‬
‫وجود دارد‪ .‬شاید سادهترین برنامه محک‪ ،‬برنامه محک پردازنده توان عملیاتی‪-‬گرا‪ 1‬باشد‪SPEC CPU2000 .‬‬
‫برنامههای محک‪ SPECCPU ،‬را استفاده میکند تا یک برنامه محک توان عملیاتی تولید کند‪ .‬با استفاده از‬
‫چندین کپی از این برنامه محک میتوان نرخ یک چندپردازنده را سنجید‪ .‬ابتدا هر کپی‪ ،‬زمان هر پردازنده را محاسبه‬
‫میکند و در انتها این زمانها با هم ترکیب شده و نرخ چندپردازنده محاسبه میشود‪ .‬این منجر به واحد سنجشی‬
‫میشود که به آن ‪ SPECrate‬میگویند و واحدی برای موازات سطح‪-‬درخواست میباشد‪ .‬برای سنجش موازات‬
‫سطح‪-‬نخ‪ SPEC ،‬روشی را ارائه میکند که به آن برنامههای محک محاسبه کارایی‪-‬باال‪ 2‬میگویند‪.‬‬

‫عالوه بر ‪ ،SPECrate‬اکثر برنامههای محک و کاربردهای سرور میزان قابل توجهی عمل ورودی‪/‬خروجی دارند‬
‫که از ترافیک شبکه یا دیسک آنها نشأت میگیرد‪ ،‬مثل برنامههای محک برای سیستمهای فایل سرور‪ ،‬سرورهای‬
‫وب‪ ،‬و سیستمهای پردازش‪-‬تراکنش و پایگاه داده‪ SPEC .‬هم برنامه محک فایل سرور (‪ ،)SPECSFS‬و هم‬
‫برنامه محک سرور وب (‪ )SPECWEB‬را فراهم میکند‪ SPECSFS .‬برنامه محکی برای اندازهگیری کارایی‬
‫سیستم فایل شبکه ‪ NFS3‬می باشد‪ .‬این برنامه محک کارایی سیستم ورودی‪/‬خروجی (هم دیسک و‬
‫ورودی‪/‬خروجی شبکه) را به خوبی تست میکند‪ SPECSFS .‬یک برنامه محک توان عملیاتی‪-‬گرا با نیازهای‬
‫زمان پاسخ مهم میباشد‪ SPECWeb .‬یک برنامه محک سرور وب میباشد که درخواست چندین کالینت از‬
‫سرور را هم بصورت ایستا و پویا شبیه سازی میکند‪ SPECjbb .‬کارایی سرور را برای کاربردهای نوشته شده به‬
‫زبان جاوا اندازه میگیرد‪ .‬جدیدترین برنامه محک ‪ SPECvirt_Sc2010 ،SPEC‬میباشد که کارایی انتها‪-‬‬
‫به‪-‬انتهای سرورهای دیتاسنتر مجازی‪ ،‬شامل سختافزار‪ ،‬الیه ماشین مجازی‪ ،‬و سیستم عامل مهمان مجازی را‬
‫ارزیابی میکند‪ .‬نوع دیگری از برنامه محک ‪ ،SPEC‬توان را میسنجد‪.‬‬

‫برنامههای محک پردازش‪-‬تراکنش (‪ ،)TP4‬قابلیت یک سیستم برای راهاندازی تراکنشها که شامل دسترسیها و‬
‫بروزرسانیهای پایگاه داده میباشد را میسنجند‪ .‬سیستمهای رزرواسیون هواپیما و سیستمهای ماشینهای خودپرداز‬
‫بانک مثالهایی رایج از ‪ TP‬میباشند‪ ،‬سیستمهای ‪TP‬ی جالبتر شامل پایگاه داده و تصمیمگیری پیچیدهتر می‪-‬‬
‫باشند‪ .‬در اواسط ‪ 1980‬گروهی از مهندسین‪ ،‬یک شرکت پردازش تراکنش مستقل از فروشنده (‪ )TPC5‬شکل دادند‬
‫که سعی در تهیه برنامههای محک واقعی و عادل برای ‪ TP‬دارد‪ .‬برنامههای محک ‪ TPC‬در ‪www.tpc.org‬‬
‫وجود دارند‪.‬‬
‫اولین برنامه محک ‪ TPC-A ،TPC‬بود که در سال ‪ 1985‬منتشر شد و تاکنون با چندین برنامه محک متفاوت‬
‫و توسعه یافته جایگزین شده است‪ .‬در سال ‪ TPC-C ،1992‬ایجاد شد و یک محیط پرسجوی پیچیده را شبیه‬

‫‪1‬‬
‫‪Throughput-oriented‬‬
‫‪2‬‬
‫‪High performance computing benchmarks‬‬
‫‪3‬‬
‫‪Network File System‬‬
‫‪4‬‬
‫‪Transaction-processing‬‬
‫‪5‬‬
‫‪Vendor-independent Transaction Processing Council‬‬
‫سازی میکرد‪ TPC-H .‬از تصمیم تککاره‪ 1‬پشتیبانی میکرد‪ -‬پرس و جو ها مستقل بودند و دانش پرسو جوی‬
‫قبلی برای بهینه سازی پرس و جوهای آینده استفاده نمیشد‪ TPC-E .‬یک بارکاری پردازش تراکنش آنالین‬
‫(‪ )OLTP2‬است که حسابهای مشتریان بنگاههای اقتصادی را شبیه سازی میکند‪ .‬جدیدترین برنامه محک‬
‫‪ TPC Energy‬است که واحدهای انرژی را به همه برنامههای ‪TPC‬ی جاری اضافه میکند‪.‬‬

‫همه برنامههای محک ‪ TPC‬کارایی را برحسب تراکنش در ثانیه اندازه میگیرند‪ .‬به عالوه‪ ،‬آنها به زمان پاسخ نیز‬
‫نیاز دارند‪ ،‬بطوریکه کارایی توان عملیاتی فقط وقتیکه محدوده زمان پاسخ برآورده شود اندازه گرفته میشود‪ .‬برای‬
‫مدل کردن سیستمهای دنیای واقعی‪ ،‬نرخهای تراکنش باالتر مرتبط با سیستمهای بزرگتر هم براساس کاربران و‬
‫هم پایگاه دادهی که تراکنشها به آن اِعمال میشود‪ ،‬میباشد‪ .‬در انتها‪ ،‬هزینه سیستم برای یک سیستم برنامه‬
‫محک نیز باید مد نظر قرار داده شود‪ ،‬تا اجازه مقایسه دقیق هزینه‪-‬کارایی داده شود‪ TPC .‬سیاست هزینهگذاریش‬
‫را اصالح کرد بطوریکه یک معیار برای همه برنامههای محک ‪ TPC‬وجود دارد‪.‬‬

‫با توجه به مطالب ارائه شده میتوان گفت که اگر ‪ SPECratioA‬روی یک برنامه محک ‪ 1.25‬برابر کامپیوتر‬
‫‪ B‬است آنگاه‪:‬‬

‫𝑒𝑐𝑛𝑒𝑟𝑒𝑓𝑒𝑟𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬
‫𝐴𝑜𝑖𝑡𝑎𝑅𝐶𝐸𝑃𝑆‬ ‫𝐴𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬ ‫𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬ ‫𝑒𝑐𝑛𝑎𝑚𝑟𝑜𝑓𝑟𝑒𝑃‬
‫= 𝑜𝑖𝑡𝑎𝑅𝐶𝐸𝑃𝑆 = ‪1.25‬‬ ‫𝑒𝑐𝑛𝑒𝑟𝑒𝑓𝑒𝑟𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬ ‫𝐴𝑒𝑐𝑛𝑎𝑚𝑟𝑜𝑓𝑟𝑒𝑃 = 𝐵𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸 =‬
‫𝐵‬ ‫𝐴‬ ‫𝐵‬
‫𝐵𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬

‫در این فرمول زمان اجرای کامپیوتر مرجع در صورت با مخرج خط میخورد و انتخاب کامپیوتر مرجع را بیاهمیت‬
‫میکند اگر نرخ بصورت نسبی مهم باشد‪ .‬که این همان فرمولی است که قبالً توضیح دادیم‪.‬‬

‫نرخ ساعت و ‪ :3CPI‬پردازنده ی کامپیوترهای دیجیتال امروزی توسط یک ساعت با زمان پالس ثابت (‪ τ‬بر‬
‫‪1‬‬
‫حسب نانو ثانیه) راهاندازی میشود‪ .‬معکوس زمان اجرا را نرخ ساعت میگویند (‪ .)f = τ‬اندازه یک برنامه توسط‬
‫تعداد دستوراتش (‪ ،) IC‬و براساس تعداد دستورات ماشینی که باید در یک برنامه اجرا شوند مشخص میشود‪ .‬تعداد‬
‫دستورات متفاوت ممکن است نیازمند تعداد پالسهای ساعت متفاوتی برای اجرا باشند‪ .‬بنابراین‪ ،‬پالسهای مورد‬
‫نیاز برای هر دستور (‪ )CPI‬یک پارامتر مهم برای اندازهگیری زمان مورد نیاز برای اجرای هر دستور میباشد‪.‬‬
‫برای یک مجموعه دستور داده شده‪ ،‬میتوانیم میانگین ‪ CPI‬همه انواع دستورات را محاسبه کنیم اگر تناوب ظهور‬
‫آنها را بدانیم‪ .‬تخمین دقیق میانگین ‪ ، CPI‬نیازمند تعداد زیادی از کد برنامه است تا در مدت زمان طوالنی اجرا‬
‫شوند‪ .‬برای یک نوع دستور‪ ،‬به سادگی میتوانیم از اصطالح ‪ CPI‬به معنی میانگین برای هر ترکیب برنامه استفاده‬
‫کنیم‪.‬‬

‫‪1‬‬
‫‪Ad-hoc‬‬
‫‪2‬‬
‫‪On-line Transaction Processing‬‬
‫‪3‬‬
‫‪Clock per Instruction‬‬
‫کانون نشر علوم‬ ‫‪| 32‬‬

‫فاکتورهای کارایی‪ :‬فرض کنید ‪ IC‬تعداد دستورات در یک برنامه داده شده باشد‪ .‬زمان پردازنده (‪ T‬برنامه‪/‬ثانیه)‬
‫مورد نیاز برای اجرای برنامه با ضرب سه فاکتور زیر محاسبه میشود‪:‬‬
‫معادله (‪T= IC×CPI×τ )3-1‬‬
‫اجرای یک دستور نیازمند اجرای پالسهای مختلف از رخدادهای برداشت‪ 1‬دستورالعمل‪ ،‬دیکد‪ ،‬برداشت عملوند(ها)‪،‬‬
‫اجرا و ذخیره نتایج است‪ .‬در این مراحلِ اجرای دستور‪ ،‬فقط پالسهای ساعت دیکد دستور و اجرا توسط پردازنده‬
‫انجام میشوند‪ .‬سه عمل دیگر ممکن است نیازمند دسترسی به حافظه باشد‪ .‬یک سیکل حافظه زمان مورد نیاز برای‬
‫تکمیل یک رجوع به حافظه است‪ .‬معموالً یک سیکل حافظه ‪ k‬برابر پالس پردازنده (‪ )τ‬میباشد‪ .‬مقدار ‪ k‬وابسته‬
‫به سرعت تکنولوژی حافظه و شماتیک ارتباطی حافظه‪-‬پردازنده استفاده شده میباشد‪.‬‬
‫‪ CPI‬یک نوع دستورالعمل میتواند به دو بخش تقسیم شود‪ :‬کل پالسهای پردازنده و سیکلهای حافظه تا اجرای‬
‫دستور تمام شود‪ .‬براساس نوع دستور‪ ،‬یک سیکل کامل دستور ممکن است که ‪ 1‬تا ‪ 4‬مراجعه به حافظه داشته باشد‬
‫(یکی برای برداشت دستورالعمل‪ ،‬دو تا برای برداشت عملوند‪ ،‬و یکی برای ذخیره نتایج)‪ .‬بنابراین معادله (‪ )3-1‬را‬
‫میتوانیم بصورت زیر بنویسیم‪:‬‬
‫‪T=IC×(P+m×k) ×τ‬‬ ‫معادله (‪)4-1‬‬
‫که ‪ P‬تعداد پالسهای پردازنده مورد نیاز برای دیکد و اجرای دستور است‪ m ،‬تعداد مراجعهها به حافظه و ‪ k‬نسبت‬
‫بین سیکل حافظه و پالس پردازنده‪ IC ،‬تعداد دستورات است و ‪ τ‬زمان یک پالس پردازنده است‪ .‬وقتیکه اجزای‬
‫‪ )P,m, τ( CPI‬در کل مجموعه دستورالعمل وزندار باشند معادله (‪ )4-1‬را میتوان بیشتر اصالح کرد‪.‬‬
‫خواص سیستم‪ :‬پنج فاکتور کارایی فوق (‪ )τ, k, m, p،IC‬توسط چهار خصوصیت سیستم تحت تأثیر است‪:‬‬
‫معماری مجموعه دستورالعمل‪ ،‬تکنولوژی کامپایلر‪ ،‬پیادهسازی پردازنده و کنترل‪ ،‬و سلسله مراتب حافظه و حافظه‬
‫نهان که در جدول ‪ 4-1‬توصیف شدهاند‪ .‬معماری مجموعه دستورالعمل بر روی طول برنامه (‪ )IC‬و تعداد پالسهای‬
‫پردازنده مورد نیاز )‪ (P‬تأثیر میگذارد‪ .‬تکنولوژی کامپایلر بر مقادیر ‪ P ،IC‬و تعداد رجوع به حافظه (‪ )m‬تأثیر دارد‪.‬‬
‫پیادهسازی پردازنده و کنترل‪ ،‬زمان پردازش کل (‪ )Pτ‬مورد نیاز را مشخص میکند‪ .‬تکنولوژی حافظه و سلسله‬
‫مراتب طراحی بر تأخیر دسترسی حافظه (‪ )kτ‬تأثیر میگذارد‪ .‬زمان پردازنده فوق برای تخمین نرخ اجرای یک‬
‫پردازنده میتواند استفاده شود‪.‬‬
‫نرخ ‪ :MIPS‬فرض کنید که ‪ C‬تعداد کل پالسهای ساعت مورد نیاز برای اجرای یک برنامه داده شده باشد‪.‬‬
‫‪C‬‬ ‫‪C‬‬
‫آنگاه زمان اجرای پردازنده در معادله ‪ 3-1‬توسط ‪ T = C × τ = f‬قابل تخمین است‪ .‬بنابراین ‪ CPI = I‬و‬
‫‪c‬‬

‫‪ T = Ic × CPI × τ‬و ‪.T = Ic × CPI⁄f‬‬


‫یکی از روشهای اندازهگیری سرعت پردازنده براساس میلیون دستور بر ثانیه )‪ (MIPS2‬اندازهگیری میشود‪ .‬که‬
‫ما به آن نرخ ‪ MIPS‬یک پردازنده داده شده میگوییم‪ .‬تأکید میکنیم که نرخ ‪ MIPS‬براساس تعدادی فاکتور‬
‫شامل نرخ ساعت(‪ ،)f‬تعداد دستورات(‪ )IC‬و ‪ CPI‬یک ماشین داده شده متغیر است‪:‬‬

‫‪1‬‬
‫‪Fetch‬‬
‫‪2‬‬
‫‪Milion instruction per second‬‬
‫‪c‬‬ ‫‪I‬‬ ‫‪c‬‬ ‫‪f‬‬ ‫‪f×I‬‬
‫‪MIPS = T×10‬‬ ‫‪6 = CPI×106 = C×106‬‬ ‫معادله(‪)5-1‬‬
‫‪−6‬‬
‫براساس معادله (‪ ،)5-1‬زمان پردازنده در معادله (‪ )3-1‬را میتوان بصورت ‪ T = IC × 10 ⁄MIPS‬نوشت‪.‬‬
‫براساس خواص سیستم نشان داده شده در جدول (‪ )4-1‬و معادله باال‪ ،‬نتیجه میگیریم که نرخ ‪ MIPS‬از یک‬
‫کامپیوتر داده شده بطور مستقیم وابسته به نرخ ساعت و بطور معکوس وابسته به ‪ CPI‬است‪ .‬همه چهار خاصیت‬
‫سیستم‪ ،‬که شامل مجموعه دستورالعملها‪ ،‬کامپایلر‪ ،‬پردازنده‪ ،‬تکنولوژی حافظه میباشد‪ ،‬بر ‪ MIPS‬تأثیر میگذارند‬
‫و از یک برنامه به برنامه دیگر متفاوت است‪.‬‬
‫فاکتورهای کارایی‬
‫میانگین پالسهای ساعت برای هر دستور‪)CPI( ،‬‬
‫خواص سیستم‬ ‫زمان پالس‬
‫تعداد دستورات ‪IC‬‬ ‫پالسهای پردازنده برای هر‬ ‫رجوع به حافظه برای‬ ‫تأخیر دسترسی به‬
‫پردازنده ‪τ‬‬
‫دستور ‪Pc‬‬ ‫هر دستور ‪m‬‬ ‫حافظه ‪k‬‬

‫معماری مجموعه‬
‫×‬ ‫×‬
‫دستورالعمل‬

‫تکنولوژی کامپایلر‬ ‫×‬ ‫×‬ ‫×‬

‫پیاده سازی پردازنده و‬


‫×‬
‫کنترل‬

‫سلسله مراتب حافظه‬


‫×‬ ‫×‬
‫و حافظه نهان‬

‫جدول ‪ : 4-1‬فاکتورهای کارایی براساس زمان اجرا در مقایسه با خواص سیستم‬

‫نرخ کارایی‪ :‬مفهوم مهم دیگر تعداد برنامههایی است که یک سیستم میتواند در یک واحد زمان اجرا کند که به‬
‫آن کارایی (توان عملیاتی) سیستم (برنامه بر ثانیه) ‪ Ws‬میگویند‪ .‬در یک سیستم چندبرنامه‪ ،‬توان عملیاتی سیستم‬
‫اغلب کمتر از توان عملیاتی پردازنده‪ Wp ،‬میباشد که توسط رابطه زیر تعریف میشود‪:‬‬
‫‪f‬‬
‫‪Wp = I‬‬ ‫معادله(‪)6-1‬‬
‫‪C ×CPI‬‬
‫‪6‬‬
‫نکته اینکه از معادله (‪ )5-1‬داریم‪ .wp = (MIPS) × 10 ⁄I :‬واحد ‪ Wp‬برنامه بر ثانیه است‪ .‬توان عملیاتی‬
‫‪C‬‬
‫پردازنده واحدی است که میگوید چه تعداد برنامه در ثانیه براساس نرخ ‪ MIPS‬و میانگین طول برنامه (‪ )IC‬اجرا‬
‫میشود‪ .‬علت اینکه ‪ WS<WP‬به خاطر سربارهای اضافی سیستم تولید شده توسط ورودی‪/‬خروجی‪ ،‬کامپایلر‪ ،‬و‬
‫سیستم عامل وقتیکه چند برنامه برای اجرای پردازنده با عملیات چندبرنامگی یا اشتراک زمانی‪ ،‬همپوشانی میکنند‬
‫میباشد‪ .‬اگر پردازنده در حالت همپوشانی کامل برنامه قرار گیرد ‪ .WS=WP‬این تساوی تقریباً هیچگاه اتفاق‬
‫نمیافتد زیرا سربار سیستم اغلب باعث تأخیر اضافی میشود و پردازنده ممکن است برای چند پالس بیکار باشد‪.‬‬
‫مثال ‪ :1-1‬نرخهای ‪ MIPS‬و اندازه گیری کارایی‬
‫استفاده از کامپیوتر ‪ VAX 11/780‬و ایستگاه کاری ‪ IBM RS/6000‬را برای اجرای یک برنامه محک در‬
‫نظر بگیرید‪ .‬خواص و کارایی بر اساس ‪ MIPS‬دو ماشین در زیر داده شده است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 34‬‬

‫نرخ ساعت ماشین‬ ‫زمان پردازنده کارایی‬


‫‪VAX 11/780‬‬ ‫‪5MHz‬‬ ‫‪1MIPS 12x second‬‬
‫‪IBM RS/6000 25MHz 18 MIPS x seconds‬‬
‫این داده ها نشان میدهد که زمان پردازنده اندازه گیری شده در ‪ 12 ، VAX 11/780‬برابر طوالنیتر از زمان‬
‫اندازه گیری شده در ‪ RS/6000‬میباشد‪ .‬کدهای اجرا شده روی دوماشین به خاطر تفاوت ماشینها و کامپایلرهای‬
‫استفاده شده طولهای متفاوت داشتهاند‪ .‬بقیه سربارها صرفنظر شدهاند‪.‬‬
‫براساس معادله (‪ ،)3-1‬تعداد دستورات کد اجرا شده روی ‪ 1.5 ،RS/6000‬برابر بیشتر از تعداد دستورات اجرا شده‬
‫در ماشین ‪ VAX‬میباشد‪ .‬بنابراین اگر میانگین ‪ CPI‬برای ‪ 5 ،VAX/780‬باشد‪ ،‬این مقدار برای ‪،RS/6000‬‬
‫‪ 1.39‬میباشد‪ .‬در این مثال هر دو یک برنامه محک را اجرا کردهاند‪:‬‬
‫‪IC1‬‬
‫= ‪VAX: 1‬‬ ‫‪→ IC1 = 12x × 106‬‬
‫‪IC‬‬ ‫‪12x×106‬‬
‫= ‪MIPS‬‬ ‫{‪6,‬‬ ‫‪IC2‬‬ ‫‪→ IC2 = 1.5 × IC1‬‬
‫‪T×10‬‬
‫= ‪IBM RS/6000: 18‬‬ ‫‪→ IC2 = 18x × 106‬‬
‫‪x×106‬‬
‫‪1‬‬ ‫‪1‬‬
‫× ‪T1 = 12x = IC1 × CPI1‬‬ ‫× ‪→ x = IC1 × CPI1‬‬
‫‪5M‬‬ ‫‪5×12M‬‬
‫{ ‪T = IC × CPI × τ,‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪T2 = x = IC2 × CPI2‬‬ ‫× ‪= 1.5IC1 × CPI2‬‬
‫‪25M‬‬ ‫‪25M‬‬
‫‪5‬‬
‫= ‪→ CPI1 = 5 → CPI2‬‬ ‫‪= 1.39‬‬
‫‪3.6‬‬
‫‪ VAX 11/780‬یک معماری ‪ CISC1‬است درحالیکه ماشین ‪ IBM‬معماری ‪ RISC‬دارد که در فصل ‪4‬‬
‫‪2‬‬

‫طبقهبندی آنها توضیح داده میشود‪ .‬این مقایسهای ساده بین دو نوع کامپیوتر روی اجرای یک برنامه میباشد‪.‬‬
‫وقتیکه برنامههای متفاوت اجرا شوند نتیجه گیری ممکن است متفاوت باشد‪.‬‬
‫ما نمیتوانیم توان عملیاتی ‪ ، WP‬یک پردازنده را حساب کنیم مگر اینکه طول برنامه و میانگین ‪ CPI‬هر کد را‬
‫بدانیم‪ .‬توان عملیاتی سیستم ‪ WS‬باید در طول اجرای تعداد زیادی برنامه روی یک دوره زمانی طوالنی اندازهگیری‬
‫شود‪ .‬میتوان نتیجهگرفت که نمیتوان کارایی یک ماشین را براساس اجرای تعداد کمی برنامه بدست آورد‪.‬‬
‫اگر ‪ CPI‬برای مجموعه دستورات مختلف متفاوت باشد مثالً دستورات نوع ‪ i‬نرخ ساعت ‪ CPIi‬داشته باشند و نرخ‬
‫استفاده آنها ‪ fi‬باشد در اینصورت ‪ CPI‬کلی سیستم میانگین وزندار ‪CPI‬ها خواهد بود یعنی برای ‪ n‬نوع دستور‬
‫داریم‪:‬‬
‫)معادله ‪𝐶𝑃𝐼 = ∑𝑛𝑖=1 𝐶𝑃𝐼𝑖× 𝑓𝑖 (7-1‬‬
‫همانطور که گفتیم زمان همیشه واحد خوبی برای سنجش کارایی نیست بنابراین ‪ MIPS‬همیشه واحد مناسبی‬
‫برای سنجش کارایی نیست‪ .‬مثال زیر این نکته را نشان میدهد‪.‬‬

‫مثال ‪(:2-1‬محاسبه ‪ CPI‬برای دستورات با فرکانس استفاده مختلف)‪ :‬کامپیوتر ‪ A‬سه نوع‬
‫دستورالعمل با سه ‪ CPI‬مختلف دریافت میکند‪.‬‬

‫‪1‬‬
‫‪Complex Instruction Set Computer‬‬
‫‪2‬‬
‫‪Reduced Instruction Set Copmuter‬‬
‫نوع دستورالعمل ‪CPI‬‬
‫‪1‬‬ ‫‪A‬‬
‫‪2‬‬ ‫‪B‬‬
‫‪3‬‬ ‫‪C‬‬
‫طراح کامپایلر دو انتخاب برای ترجمه یک تابع زبان سطح باال به زبان ماشین دارد که عبارتند از‪:‬‬
‫‪C B A‬‬
‫انتخاب ‪2 1 2 1‬‬
‫انتخاب ‪1 1 4 2‬‬
‫‪ CPI‬برای هر انتخاب چقدر است؟‬
‫پاسخ‪:‬‬
‫‪CPI1=(2×1+1×2+2×3)/5=(10/5)=2‬‬
‫‪CPI2=(4×1+1×2+1×3)/6=(9/6)=1.5‬‬
‫تعداد دستورات انتخاب ‪ 1‬کمتر از انتخاب ‪ 2‬است ولی ‪ CPI‬انتخاب ‪ 1‬از انتخاب ‪ 2‬بیشتر است؟!‬
‫در مثالی دیگر اضافه شدن یک نوع دستور به مجموعه دستورات ماشین و اثر آن بر ‪ CPI‬سیستم را بررسی میکنیم‪.‬‬

‫مثال‪(3-1‬سنجش افزایش سرعت کامپیوتر با اصالح مجموعه دستورالعمل)‪ :‬ترکیب دستورات یک‬
‫کامپیوتر بصورت زیر است‪:‬‬
‫‪CPI‬‬ ‫احتمال استفاده‬ ‫عمل‬
‫‪1‬‬ ‫‪0.43‬‬ ‫‪ALU‬‬
‫‪2‬‬ ‫‪0.21‬‬ ‫‪Load‬‬
‫‪2‬‬ ‫‪0.12‬‬ ‫‪Store‬‬
‫‪2‬‬ ‫‪0.24‬‬ ‫‪Branch‬‬
‫فرض کنید که ‪ ٪25‬عملیات ‪ ALU‬یک عملوند بار شده را فقط یکبار استفاده کند‪ .‬به این معنی که این عملوند‬
‫در دستورات بعدی استفاده نخواهد شد‪ .‬حال ما میخواهیم یک نوع دستور ‪ REG/MEM‬به مجموعه دستورات‬
‫اضافه کنیم که یک دستور ‪ ADD‬میباشد و نیازمند دو پالس برای اجرا میباشد‪ .‬این تغییر باعث میشود که‬
‫دستور ‪ Branch‬در ‪ 3‬پالس اجرا شود‪ .‬آیا این ماشین جدید از قبلی سریعتر است؟‬
‫پاسخ‪:‬‬
‫‪𝐶𝑃𝐼𝑜𝑙𝑑 = ∑ 𝑓𝑖 × 𝐶𝑃𝐼𝑖 = 1 × 0.43 + 2 × 0.21 + 2 × 0.12 + 2 × 0.24 = 1.57‬‬
‫با تغییر جدید میزان دستورات ‪ ALU‬همچنین ‪ ،Load‬به اندازه ‪ ٪25‬دستورات ‪ ALU‬کم میشود در عوض‬
‫نرخ استفاده دستور جدید اضافه شده ‪ 0.25×0.43‬خواهد بود و چون عمل کاهش دو بار اتفاق میافتد تعداد‬
‫دستورات در سیستم جدید به اندازه ‪ 0.25×0.43‬کم میشود یعنی تعداد دستورات سیستم جدید‬
‫‪0.8925‬دستورات سیستم قدیم است‪ .‬یعنی جدول ترکیب دستورات سیستم جدید بصورت زیر است‪:‬‬
‫کانون نشر علوم‬ ‫‪| 36‬‬

‫‪CPI‬‬ ‫احتمال استفاده‬ ‫عمل‬


‫‪1‬‬ ‫‪0.3225‬‬ ‫‪ALU‬‬
‫‪2‬‬ ‫‪0.1025‬‬ ‫‪Load‬‬
‫‪2‬‬ ‫‪0.12‬‬ ‫‪Store‬‬
‫‪3‬‬ ‫‪0.24‬‬ ‫‪Branch‬‬
‫‪2‬‬ ‫‪0.1075‬‬ ‫‪REG/MEM‬‬
‫بنابراین ‪ CPI‬سیستم جدید برابر خواهد بود با‪:‬‬
‫‪0.3225×1+0.1025×2+0.12×2+0.24×3+0.1075×2‬‬
‫= 𝑤𝑒𝑛𝐼𝑃𝐶‬ ‫‪= 1.908‬‬
‫‪0.8925‬‬
‫حال زمان اجرای سیستم جدید را محاسبه میکنیم‪:‬‬
‫‪New CPU time= (0.8925×Old_instruction_count)×1.908×τ =1.7×old_instruction_count×τ‬‬
‫‪Old CPU time =1.57×old_instruction_count×τ‬‬

‫بنابراین این تغییر باعث کندتر شدن سیستم میشود‪ .‬یعنی با وجود اینکه مجموعه دستورالعمل پردازنده پیچیدهتر‬
‫میشود ولی زمان اجرای آن بهبود نخواهد یافت بلکه کمتر میشود‪ .‬در این مثال تغییر در مجموعه دستورالعملها‬
‫بررسی شد و مشاهده کردیم که در این مثال خاص با تغییر در مجموعه دستورالعملها سرعت سیستم بهبود نمییابد‪.‬‬
‫حال میخواهیم بررسی کنیم که اگر بخش خاصی از سختافزار سریعتر شود چه اتفاقی در افزایش سرعت سیستم‬
‫خواهد افتاد؟‬

‫اگر بخشی از سیستم بهبود داده شود و در آن بخش افزایش سرعت اتفاق بیافتد آنگاه افزایش سرعت سیستم جدید‬
‫نسبت به سیستم قبلی بصورت زیر محاسبه میشود‪:‬‬

‫کارایی کل کار در سیستم بهبود یافته‬ ‫زمان اجرای کل کار بدون بهبود‬
‫زمان اجرای کل کار در سیستم بهبود یافته = کارایی کل کار بدون استفاده از بهبود = افزایش سرعت‬ ‫(معادله ‪)8-1‬‬

‫زمان اجرا در سیستم جدید به دو بخش بستگی دارد‪ :‬اوالً بخشی از کار اصلی که زمان اجرای آن در سیستم جدید‬
‫قابل تغییر است‪ .‬ثانیاً بخشی از کار اصلی که زمان اجرای آن در سیستم جدید قابل تغییر نیست‪ .‬این مطلب تحت‬
‫عنوان قانون ‪( Amdahl‬امدال) شناخته میشود‪ .‬بنابراین‪:‬‬

‫𝑑𝑒𝑐𝑛𝑎‪𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝐸𝑛ℎ‬‬
‫‪𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑛𝑒𝑤 = 𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑜𝑙𝑑 × [(1 − 𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑒𝑛ℎ𝑎𝑛𝑐𝑒𝑑 ) +‬‬ ‫]‬
‫𝑑𝑒𝑐𝑛𝑎‪𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝐸𝑛ℎ‬‬
‫(معادله ‪)9-1‬‬

‫بنابراین افزایش سرعت کلی عبارت است از‪:‬‬


‫𝑑𝑙𝑜𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬ ‫𝑑𝑙𝑜𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬
‫= 𝑝𝑢 𝑑𝑒𝑒𝑝𝑆‬ ‫=‬ ‫𝑑𝑒𝑐𝑛𝑎‪𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝐸𝑛ℎ‬‬
‫𝑤𝑒𝑛𝑒𝑚𝑖𝑡 𝑛𝑜𝑖𝑡𝑢𝑐𝑒𝑥𝐸‬ ‫‪𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑜𝑙𝑑 ×[(1−𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑒𝑛ℎ𝑎𝑛𝑐𝑒𝑑 )+‬‬ ‫]‬
‫𝑑𝑒𝑐𝑛𝑎‪𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝐸𝑛ℎ‬‬

‫(معادله ‪)10-1‬‬
‫که با سادهسازی عبارت داریم‪:‬‬
‫‪1‬‬
‫= 𝑝𝑢 𝑑𝑒𝑒𝑝𝑆‬ ‫𝑑𝑒𝑐𝑛𝑎‪𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝐸𝑛ℎ‬‬ ‫(معادله ‪)11-1‬‬
‫‪[(1−𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑒𝑛ℎ𝑎𝑛𝑐𝑒𝑑 )+‬‬ ‫]‬
‫𝑑𝑒𝑐𝑛𝑎‪𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝐸𝑛ℎ‬‬

‫مثال ‪( 4-1‬سنجش افزایش سرعت سیستم با بهبود سرعت بخشی از سیستم)‪ :‬فرض کنید‬
‫میخواهیم پردازندهای که برای سرویس وب استفاده میشود را بهبود دهیم‪ .‬پردازنده جدید ‪ 10‬برابر در محاسبات‬
‫کاربردی سرویس وب از پردازنده قبلی سریعتر است‪ .‬فرض کنید که پردازنده قبلی ‪ ٪40‬زمان مشغول محاسبات و‬
‫‪ 60٪‬زمان منتظر ورودی‪/‬خروجی باشد‪ .‬افزایش سرعت کلی با استفاده از این بهبود چیست؟‬
‫پاسخ‪ :‬با توجه به مطلب گفته شده فقط بهبود در ‪40‬درصد کار اتفاق میافتد و ‪60‬درصد کار بهبودی در سیستم‬
‫جدید نخواهد داشت بنابراین داریم‪:‬‬
‫‪1‬‬ ‫‪1‬‬
‫= 𝑙𝑙𝑎𝑟𝑒𝑣𝑜𝑝𝑢𝑑𝑒𝑒𝑝𝑆 ;‪Fractionenhanced=0.4; Speedupenhanced=10‬‬ ‫‪0.4‬‬ ‫=‬ ‫‪≈ 1.56‬‬
‫‪0.6+‬‬ ‫‪0.64‬‬
‫‪10‬‬
‫یعنی با وجود ‪ 10‬برابر شدن سرعت در بخشی از سیستم‪ ،‬کل سیستم افزایش سرعت ‪ 1.56‬برابری دارد‪ .‬قانون‬
‫امدال می گوید که حتی اگر زمان بخش قابل بهبود به صفر برسد زمان کلی سیستم جدید به زمان بخش غیرقابل‬
‫بهبود وابسته است‪.‬‬

‫مثال‪ :5-1‬یک تبدیل رایج در پردازنده گرافیکی جذر میباشد‪ .‬پیادهسازی جذر ممیز شناور در کارایی پردازندههای‬
‫گرافیکی تأثیر چشمگیری دارد‪ .‬فرض کنید جذر ریشه ممیز شناور )‪ (FPSQR1‬در زمان اجرای یک برنامه محک‬
‫گرافیکی ‪ ٪20‬استفاده شود‪ .‬یک پیشنهاد افزایش سرعت ‪ 10‬برابری سخت افزار ‪ FPSQR‬میباشد‪ .‬پیشنهاد دیگر‬
‫افزایش سرعت کل دستورات ممیز شناور با ضریب ‪ 1.6‬میباشد‪ .‬فرض کنید دستورات ممیز شناور ‪ ٪50‬کل‬
‫دستورات برنامه محک گرافیکی باشد‪ .‬از بین این دو روش پیشنهادی کدامیک تأثیر بیشتری روی بهبود افزایش‬
‫سرعت کلی سیستم دارد؟‬
‫پاسخ‪:‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫= ‪SpeedupFPSQR‬‬ ‫= ‪0.2‬‬ ‫‪= 1.22 ,‬‬ ‫= ‪SpeedupFP‬‬ ‫= ‪0.5‬‬ ‫‪= 1.23‬‬
‫‪(1−0.2)+‬‬ ‫‪0.82‬‬ ‫‪(1−0.5)+‬‬ ‫‪0.8125‬‬
‫‪10‬‬ ‫‪1.6‬‬
‫بنابراین بهبود کارایی عملیات ‪ FP‬به خاطر فرکانس باالی استفاده‪ ،‬کمی بهتر از افزایش سرعت ده برابری‬
‫‪ FPSQR‬میباشد زیرا فرکانس استفاده از آن کم (‪ )0.2‬میباشد‪.‬‬

‫مثال ‪(6-1‬مقایسه دو پیشنهاد مختلف برای بهبود سیستم)‪ :‬فرض کنید اندازه گیریهای زیر را داریم‪:‬‬
‫فرکانس استفاده از عملیات ‪ ، 25٪=FP‬میانگین ‪CPI‬ی عملیات ‪ ،4 =FP‬میانگین ‪CPI‬ی سایر‬
‫دستورات=‪ ، 1.33‬فرکانس ‪CPI ،2٪=FPSQR‬ی ‪20=FPSQR‬‬
‫فرض کنیم دو پیشنهاد طراحی برای بهبود سیستم داریم‪ :‬اولی کاهش ‪CPI‬ی ‪ FPSQR‬به ‪ 2‬و دومی کاهش‬
‫‪CPI‬ی عملیات ممیز شناور به ‪ . 2.5‬با استفاده از فرمول زمان اجرای پردازنده این دو روش را مقایسه کنید‪.‬‬

‫‪1‬‬
‫‪Floating Point Square Root‬‬
‫کانون نشر علوم‬ ‫‪| 38‬‬

‫پاسخ‪ :‬ابتدا ‪CPI‬ی سیستم اصلی را بدون اِعمال بهبود محاسبه میکنیم‪:‬‬
‫𝑖𝐶𝐼‬
‫= 𝑙𝑎𝑛𝑖𝑔𝑖𝑟𝑜𝐼𝑃𝐶‬ ‫𝑖𝐼𝑃𝐶 ‪∑𝑛𝑖=1‬‬ ‫(×‬ ‫× ‪) = ∑𝑛𝑖=1 𝐶𝑃𝐼𝑖 × 𝑓𝑖 = (4 × 25%) + (1.33‬‬
‫𝑡𝑛𝑢𝑜𝑐 𝑛𝑜𝑖𝑡𝑐𝑢𝑟𝑡𝑠𝑛𝐼‬
‫‪75%) = 2.0‬‬
‫حال ما میتوانیم ‪CPI‬ی ‪ FPSQR‬بهبود یافته را با کاهش پالسهای صرفهجویی شده از ‪CPI‬ی اصلی بدست‬
‫آوریم‪:‬‬
‫‪CPIwith new FPSQR = 𝐶𝑃𝐼𝑜𝑟𝑖𝑔𝑖𝑛𝑎𝑙 − 2% × (𝐶𝑃𝐼𝑜𝑙𝑑 𝐹𝑃𝑆𝑄𝑅 − 𝐶𝑃𝐼𝑜𝑓 𝑛𝑒𝑤 𝐹𝑃𝑆𝑄𝑅 𝑜𝑛𝑙𝑦 ) = 2.0 −‬‬
‫‪2٪ × (20 − 2) = 1.64‬‬
‫در روش دوم که ‪CPI‬ی همه دستورات ‪ FP‬بهبود داده میشود ‪CPI‬ی جدید برابر است با‪:‬‬
‫‪CPInew FP=(75%×1.33)+(25%×2.5)=1.625‬‬
‫بنابراین ‪ CPI‬در روش بهبود کلی در دستورات ممیز شناور کمی کمتر است‪ ،‬و کارایی آن کمی بهتر خواهد بود‪:‬‬
‫𝑙𝑎𝑛𝑖𝑔𝑖𝑟𝑜𝑒𝑚𝑖𝑡 𝑈𝑃𝐶‬ ‫𝑙𝑎𝑛𝑖𝑔𝑖𝑟𝑜𝐼𝑃𝐶×𝑒𝑙𝑐𝑦𝑐 𝑘𝑐𝑜𝑙𝐶×𝐶𝐼‬ ‫𝑙𝑎𝑛𝑖𝑔𝑖𝑟𝑜𝐼𝑃𝐶‬ ‫‪2.00‬‬
‫= 𝑃𝐹 𝑤𝑒𝑛𝑝𝑢𝑑𝑒𝑒𝑝𝑆‬ ‫=‬ ‫=‬ ‫=‬ ‫‪= 1.23‬‬
‫𝑃𝐹 𝑤𝑒𝑛𝑒𝑚𝑖𝑡 𝑈𝑃𝐶‬ ‫𝑃𝐹𝑤𝑒𝑛𝐼𝑃𝐶×𝑒𝑙𝑐𝑦𝑐 𝑘𝑐𝑜𝑙𝐶×𝐶𝐼‬ ‫𝑃𝐹 𝑤𝑒𝑛𝐼𝑃𝐶‬ ‫‪1.625‬‬
‫𝑙𝑎𝑛𝑖𝑔𝑖𝑟𝑜𝐼𝑃𝐶‬ ‫‪2.00‬‬
‫= 𝑅𝑄𝑆𝑃𝐹 𝑤𝑒𝑛𝑝𝑢𝑑𝑒𝑒𝑝𝑆‬ ‫=‬ ‫‪= 1.219‬‬
‫𝑅𝑄𝑆𝑃𝐹 𝑤𝑒𝑛𝐼𝑃𝐶‬ ‫‪1.64‬‬

‫مشاهده میکنید که افزایش سرعت با بهبود ‪CPI‬ی کل دستورات ممیز شناور از بهبود ‪CPI‬ی دستورات ‪ FPSQR‬بهتر‬
‫است‪ .‬در فصل ‪ 3‬قانون امدال با جزئیات بیشتر برای سیستمهای چندپردازنده بررسی خواهد شد‪.‬‬

‫محیطهای برنامه نویسی‪ :‬قابلیت برنامه نویسی یک کامپیوتر وابسته به محیط برنامه نویسی فراهم شده برای‬
‫کاربران میباشد‪ .‬اغلب محیطهای کامپیوتری کاربر پسند نیستند‪ .‬در حقیقت‪ ،‬بازاریابی هر سیستم کامپیوتر جدید‬
‫وابسته به ایجاد محیط کاربر پسند میباشد بطوریکه برنامه نویسی یک جذابیت باشد و برنامهنویس خسته نشود‪ .‬در‬
‫ادامه خواص محیطی مطلوب در کامپیوترهای مدرن را معرفی میکنیم‪.‬‬

‫کامپیوترهای تک پردازنده رایج‪ ،‬در محیطی ترتیبی برنامه نویسی شدهاند بطوریکه دستورات یکی بعد از دیگری و‬
‫به ترتیب اجرا میشوند‪ .‬در حقیقت هسته ‪ UNIX/OS‬اولیه برای یک پاسخ سیستمی از طرف پردازه کاربر در‬
‫یک زمان طراحی شده بودند‪ .‬فراخوانیهای سیستمی بعدی باید در هسته بطور ترتیبی در میآمدند‪.‬‬

‫اکثر کامپایلرهای موجود برای ایجاد کدهای شئ ترتیبی برای اجرا روی یک کامپیوتر ترتیبی طراحی شدهاند‪ .‬به‬
‫عبارت دیگر‪ ،‬کامپیوترهای رایج در یک محیط ترتیبی با استفاده از زبانها‪ ،‬کامپایلرها و سیستمهای عامل استفاده‬
‫میشوند که همه برای یک کامپیوتر تک پردازنده توسعه داده شدهاند‪.‬‬

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

‫موازات ضمنی‪ :‬یک روش ضمنی استفاده از زبانهای کالسیک مثل ‪ ،C‬فرترن‪ ،‬لیسپ یا پاسکال است تا کدهای‬
‫منبع برنامه را بنویسیم‪ .‬برنامه با کد منبع ترتیبی توسط یک کامپایلر موازی ساز‪ ،‬به کد شئ موازی ترجمه میشود‪.‬‬
‫همانطور که در شکل ‪(7-1‬الف) نشان داده شده است‪ .‬این کامپایلرها باید قادر به تشخیص موازات و انتساب منابع‬
‫ماشین مقصد باشند‪ .‬این روش کامپایلر در برنامه نویسی چندپردازندههای حافظه مشترک قابل اعمال شدن است‪.‬‬

‫با موازات ضمنی‪ ،‬موفقیت تکیه بر هوشمندی کامپایلر موازی ساز دارد‪ .‬این روش نیازمند توجه کمتری از طرف‬
‫برنامه نویس است‪ David Kuck .‬از دانشگاه ایلینویز و ‪ Ken Kennedy‬از دانشگاه ‪ Rise‬و همکارانشان‬
‫این روش موازی سازی ضمنی را توسعه دادهاند‪.‬‬

‫موازات صریح‪ :‬روش دوم (شکل ‪(7-1‬ب)) نیازمند توجه بیشتر برنامهنویس برای توسعه یک برنامه منبع با‬
‫استفاده از مشابههای موازی ‪ ، C‬فرترن‪ ،‬لیسپ یا پاسکال است‪ .‬موازات بطور صریح توسط برنامههای کاربر تعیین‬
‫میشود‪ .‬این روش بطور قابل توجهی بار کامپایلر برای تشخیص موازات را کاهش میدهد‪ .‬در عوض‪ ،‬باید موازات‬
‫را نگه دارد و در صورت امکان منابع ماشین مقصد را انتساب دهد‪ Charles Sitzes .‬از دانشکده فنی کالیفرنیا‬
‫و ‪ William Dally‬از مجتمع فنی ماساچوست این روش صریح را برای چند کامپیوترها توسعه دادهاند‪.‬‬

‫برنامه نویس‬ ‫برنامه نویس‬

‫کد منبع بطور ترتیبی در زبانهای ‪،C‬‬ ‫کد منبع در مشابههای همروند ‪،C‬‬
‫فرترن‪ ،‬لیسپ یا پاسکال نوشته میشود‪.‬‬ ‫فرترن‪ ،‬لیسپ یا پاسکال نوشته میشود‪.‬‬

‫کامپایلر موازی ساز‬ ‫کامپایلر نگه دارنده موازات‬

‫کد شئ موازی‬ ‫کد شئ همروند‬

‫اجرا توسط سیستم کامپیوتر‬ ‫اجرا توسط سیستم کامپیوتر‬

‫(الف) موازی سازی ضمنی‬ ‫(ب) موازات صریح‬


‫شکل ‪ :7-1‬دو روش برنامه نویسی موازی‬

‫ابزارهای نرم افزاری خاصی مورد نیاز است تا یک محیط را برای گروه کاربران آسانتر کند‪ .‬بعضی ابزارها‪ ،‬توسعه‬
‫یافته موازی زبانهای سطح قدیمی است‪ .‬بقیه‪ ،‬محیطهای مجتمع شدهاند که شامل ابزارهای تهیه شده برای‬
‫کانون نشر علوم‬ ‫‪| 40‬‬

‫سطوح مختلف انتزاعها‪ ،‬اعتبار سنجی‪ ،‬تست‪ ،‬دیباگ‪ ،‬اجرا و پیشبینی کارایی و مانیتور کردن و پشتیبانی تصویری‬
‫تا به توسعه برنامه کمک کند‪ ،‬اندازه گیری کارایی و نمایش گرافیکها و انیمیشن نتایج محاسبات‪ ،‬میباشند‪.‬‬

‫‪ -2-1‬چندکامپیوترها و چندپردازنده ها‬


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

‫‪ -1-2-1‬چندپردازنده های حافظه مشترک‬

‫در ادامه سه مدل چندپردازنده حافظه مشترک توصیف میشوند‪ :‬مدل دسترسی حافظه متحدالشکل (‪،)UMA1‬‬
‫مدل دسترسی حافظه غیر متحدالشکل (‪ ،)NUMA2‬و مدل معماری حافظه فقط با استفاده از حافظه نهان‬
‫(‪ .)COMA3‬این مدلها در چگونگی اشتراک یا توزیع منابع جانبی با حافظه با هم متفاوتند‪.‬‬

‫مدل ‪ :UMA‬در یک مدل چند پردازنده ‪( UMA‬شکل ‪ ،)8-1‬حافظهها بطور فیزیکی متحدالشکل توسط همه‬
‫پردازندهها به اشتراک گذاشته شدهاند‪ .‬همه پردازندهها زمان دسترسی یکسان به همه کلمات حافظه دارند به همین‬
‫خاطر‪ ،‬دسترسی به حافظه متحدالشکل نامیده میشود‪ .‬هر پردازنده ممکن است از یک حافظه نهان اختصاصی‬
‫استفاده کند‪ .‬منابع جانبی بطور مشابهی به اشتراک گذاشته میشوند‪.‬‬
‫پردازندهها‬
‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬

‫سیستم ارتباطی(گذرگاه‪ ،‬تقاطعی‪ ،‬شبکه چندسطحه)‬

‫حافظه مشترک‬
‫‪I/O‬‬ ‫‪SM1‬‬ ‫‪SMn‬‬

‫شکل ‪ :8-1‬مدل چندپردازنده ‪UMA‬‬

‫به چندپردازندهها سیستمهای متصل محکم‪ 4‬به دلیل درجه باالی اشتراک منابع میگویند‪ .‬سیستم ارتباطی‪ ،‬به شکل‬
‫یک گذرگاه مشترک‪ ،‬یک سوئیچ تقاطعی یا یک شبکه چند سطحه میباشد که در فصل ‪ 2‬مطالعه میشوند‪.‬‬

‫‪1‬‬
‫‪Uniform Memory Access‬‬
‫‪2‬‬
‫‪Nonuniform Memory Access‬‬
‫‪3‬‬
‫‪Cache Only Memory Access‬‬
‫‪4‬‬
‫‪Tightly coupled‬‬
‫اکثر کارخانههای کامپیوتر توسعههای چندپردازنده (‪ )MP1‬از خط تولید تک پردازنده (‪ )UP2‬شان دارند‪ .‬مدل‬
‫‪ UMA‬برای کاربردهای اشتراک زمانی و همه منظوره توسط چندکاربر مناسب است و برای افزایش سرعت اجرای‬
‫یک برنامه بزرگ در کاربردهای زمان بحرانی میتواند استفاده شود‪ .‬برای اختصاص اتفاقهای موازی‪ ،‬همزمانی‪ ،‬و‬
‫ارتباط بین پردازندهها از متغیرهای مشترک در حافظه مشترک استفاده میشود‪.‬‬
‫وقتیکه همه پردازنده ها دسترسی مساوی به وسایل جانبی دارند‪ ،‬به سیستم چندپردازنده متقارن میگویند‪ .‬در این‬
‫حالت همه پردازندهها بطور مساوی قادر به اجرای برنامه های اجرایی‪ ،‬مانند هسته ‪ OS‬و زیربرنامههای سرویس‬
‫ورودی‪/‬خروجی میباشند‪.‬‬

‫در یک چندپردازنده متقارن‪ ،‬فقط یک یا یک زیرمجموعه از پردازندهها توانایی اجرا دارند‪ .‬یک پردازنده مدیر یا‬
‫اجرایی میتواند سیستم عامل را اجرا کند و ورودی‪/‬خروجی را راهاندازی کند‪ .‬بقیه پردازندهها قابلیت ورودی‪/‬خروجی‬
‫ندارند و بنابراین به آنها پردازندههای الحاقی(‪ )AP3‬میگویند‪ .‬پردازندههای الحاقی کدهای برنامه را تحت مدیریت‬
‫پردازنده مدیر اجرا میکنند‪ .‬در هردوی پیکربندیهای ‪ ،AP,MP‬اشتراک حافظه بین مدیر و پردازندههای الحاقی‬
‫هنوز برقرار است‪.‬‬

‫مثال ‪:7-1‬کارایی تخمین زده شده یک چندپردازنده‪ .‬این مثال توجه خواننده را به اجرای برنامه موازی‬
‫در یک سیستم چندپردازنده حافظه مشترک جلب میکند‪ .‬برنامه فرترن نوشته شده در زیر برای اجرای ترتیبی در‬
‫یک سیستم تک پردازنده را در نظر بگیرید‪ .‬فرض میکنیم همه آرایههای )‪B(I) ،A(I‬و )‪ N ،C(I‬عنصر دارند‪:‬‬
‫‪L1:‬‬ ‫‪DO 10 I=1,N‬‬
‫‪L2:‬‬ ‫)‪A(I)=B(I)+C(I‬‬
‫‪L3:‬‬ ‫‪10 Continue‬‬
‫‪L4:‬‬ ‫‪SUM=0‬‬
‫‪L5:‬‬ ‫‪DO 20 J=1,N‬‬
‫‪L6:‬‬ ‫)‪SUM=SUM+A(J‬‬
‫‪L7:‬‬ ‫‪20 Continue‬‬
‫فرض کنید هر کدام از خطهای ‪ L2, L4, L6‬در یک پالس ماشین اجرا شوند‪ .‬زمان مورد نیاز برای اجرای دستورات‬
‫کنترلی برنامه یعنی ‪ L1, L3, L5‬را به خاطر سادگی تجزیه تحلیل نادیده میگیریم‪ .‬فرض کنید ‪ k‬پالس برای هر‬
‫عمل ارتباطی بین پردازنده (‪ )IPC4‬در حافظه مشترک مورد نیاز باشد‪ .‬فرض کنید همه آرایهها به حافظه اصلی بار‬
‫شده اند و قطعه کوچک برنامه هم اکنون در حافظه نهان دستورالعمل بار شده است‪ .‬به عبارت دیگر سربار برداشت‬
‫دستور و بارکردن داده نادیده گرفته میشوند‪ .‬همچنین‪ ،‬تداخل گذرگاه یا مشکالت تداخل حافظه مشترک را نادیده‬
‫میگیریم‪ .‬در این حالت‪ ،‬ما روی تجزیه تحلیل نیاز پردازنده تمرکز میکنیم‪.‬‬
‫برنامه فوق با مفروضات فوق در یک ماشین ترتیبی نیاز به ‪ 2N‬پالس برای اجرا دارد‪ N .‬پالس برای اجرای ‪N‬‬
‫تکرار مستقل در حلقه ‪ I‬مورد نیاز است‪ .‬بطور مشابه‪ N ،‬پالس برای اجرای حلقه ‪ J‬مورد نیاز است که آنهم دارای‬
‫‪ N‬تکرار بازگشتی است‪.‬‬

‫‪1‬‬
‫‪Multi Processor‬‬
‫‪2‬‬
‫‪Uniprocessor‬‬
‫‪3‬‬
‫‪Attached Processor‬‬
‫‪4‬‬
‫‪Interprocessor communications‬‬
‫کانون نشر علوم‬ ‫‪| 42‬‬

‫برای اجرای برنامه روی یک سیستم ‪-M‬پردازنده‪ ،‬عملیات حلقه را به ‪ M‬بخش با ‪ L=N/M‬جزء در هر بخش‬
‫تقسیم میکنیم‪ .‬در کد موازی زیر‪ Doall ،‬تعیین میکند که ‪ M‬بخش باید توسط ‪ M‬پردازنده موازی اجرا شوند‪.‬‬
‫‪Doall K=1,M‬‬
‫‪Do 10 I=L(K-1)+1,KL‬‬
‫)‪A(I)=B(I)+C(I‬‬
‫‪10 Continue‬‬
‫‪SUM(K)=0‬‬
‫‪Do 20 J=1,L‬‬
‫)‪SUM(K)=SUM(K)+A(L(K-1)+J‬‬
‫‪20 Continue‬‬
‫‪End all‬‬
‫برای اجرای موازی ‪-M‬حالته‪ ،‬بخش حلقه ‪ I‬در ‪ L‬پالس اجرا میشود‪ .‬بخش حلقه ‪ M ،J‬جمع جزئی در ‪ L‬پالس‬
‫تولید میکند‪ .‬بنابراین ‪ 2L‬پالس مورد نیاز است تا همه ‪ M‬جمع جزئی تولید شوند‪ .‬همچنین نیاز داریم که این ‪M‬‬
‫جمع جزئی را با هم ادغام کنیم تا جمع نهایی ‪ N‬عنصر را بدست آوریم‪.‬‬
‫جمع هر جفت‪ ،‬جمع جزئی نیازمند ‪ K‬پالس در حافظه مشترک است‪ .‬یک درخت جمع کننده دودویی ‪ l‬سطحه برای‬
‫ادغام همه جمعهای جزئی مورد نیاز است که ‪ .l = log 2 M‬درخت جمع کننده )‪ l(K + 1‬پالس برای ادغام‬
‫‪ M‬جمع جزئی ترتیبی از برگها تا ریشه درخت زمان میگیرد‪ .‬بنابراین این چندپردازنده )‪ 2L+ l(K + 1‬یا‬
‫‪ 2N/M+(K+1) log 2 M‬پالس نیاز دارد تا حاصل جمع نهایی را تولید کند‪.‬‬
‫فرض کنید ‪ N = 220‬عنصر در آرایه باشد‪ .‬اجرای ترتیبی برنامه ‪ 2N = 221‬پالس ماشین نیاز دارد‪ .‬فرض‬
‫کنیم که سربار همزمانی ‪ IPC‬مقدار میانگین ‪ 200‬پالس داشته باشد‪ .‬اجرای موازی روی ‪ M=256‬پردازنده‬
‫‪21‬‬
‫‪2‬‬
‫‪ 256‬پالس ماشین میباشد‪ .‬با مقایسه نتایج زمانی باال‪،‬‬ ‫نیازمند‪+ (200 + 1) × 8 = 213 + 1608 = 9800‬‬
‫چند پردازنده فاکتور افزایش سرعت ‪ 214‬از حداکثر مقدار ‪ 256‬دارد‪ .‬بنابراین بهرهوری ‪214/256= 83.6%‬‬
‫بدست میآید‪ .‬روشهای افزایش سرعت و بهرهوری را در فصل ‪ 3‬بررسی میکنیم‪.‬‬

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

‫مدل ‪ :NUMA‬چندپردازنده ‪ NUMA‬یک سیستم اشتراک زمانی است که زمان دسترسی با مکان کلمه حافظه‬
‫متفاوت است‪ .‬مدل ماشین ‪ NUMA‬در شکل ‪ 9-1‬نشان داده شده است‪ .‬حافظه مشترک بطور فیزیکی برای همه‬
‫پردازندهها توزیع شده است که به آن حافظه محلی میگویند‪ .‬مجموعه همه حافظههای محلی یک فضای آدرس‬
‫سراسری ایجاد میکنند که توسط همه پردازندهها قابل دسترس است‪.‬‬

‫دسترسی به حافظه محلی توسط یک پردازنده محلی سریعتر است‪ .‬دسترسی حافظه راه دور الحاقی به سایر پردازندهها‬
‫به خاطر تأخیر بین شبکه ارتباط داخلی‪ ،‬زمان بیشتری نیاز دارد‪ .‬چندپردازنده باترفالی ‪ BBN TC-200‬از‬
‫پیکربندی نشان داده شده در شکل ‪(9-1‬الف) استفاده میکند‪.‬‬
‫درکنار حافظههای توزیع شده‪ ،‬حافظه مشترک سراسری میتواند به یک سیستم چندپردازنده اضافه شود‪ .‬در این‬
‫حالت‪ ،‬سه الگوی دسترسی به حافظه وجود دارد‪ :‬سریعترین دسترسی به حافظه محلی است‪ .‬سرعت دسترسی بعدی‬
‫دسترسی حافظه سراسری است‪ .‬کندترین دسترسی مربوط به حافظه دور است‪ .‬همانطور که در شکل ‪(9-1‬ب) نشان‬
‫داده شده است‪ .‬به عنوان یک نکته مهم‪ ،‬مدلهای نشان داده شده در شکل ‪ 8-1‬و ‪ 9-1‬به سادگی میتوانند اصالح‬
‫شوند تا یک ترکیب از حافظه مشترک و حافظه خصوصی با سطوح دسترسی تعیین شده ایجاد شود‪.‬‬

‫یک چندپردازنده ساختاریافته سلسله مراتبی در شکل ‪(9-1‬ب) مدل شده است‪ .‬پردازندهها به چندین خوشه تقسیم‬
‫میشوند‪ .‬هر خوشه خود یک چندپردازنده ‪ UMA,NUMA‬است‪ .‬خوشهها به ماژولهای اشتراک زمانی‬
‫سراسری متصل شدهاند‪ .‬کل سیستم یک چندپردازنده ‪ NUMA‬در نظر گرفته میشود‪ .‬همه پردازندههای واقع‬
‫شده در یک خوشه مشابه بطور متحدالشکل به ماژولهای حافظه مشترک دسترسی دارند‪ .‬همه خوشهها زمان‬
‫دسترسی برابری به حافظه سراسری دارند‪ .‬به هر حال‪ ،‬زمان دسترسی به حافظه خوشه از حافظه سراسری کمتر‬
‫است‪ .‬میتوان روشهای دسترسی به حافظههای بین خوشهای را به روشهای مختلف تعیین کرد‪ .‬چندپردازنده‬
‫‪ Cedar‬ساخته شده در دانشگاه ایلینویز‪ ،‬یک چنین ساختاری دارد که هر خوشه خود یک چندپردازنده ‪Alliant‬‬
‫‪ Fx/80‬میباشد‪.‬‬

‫‪GSM‬‬ ‫‪GSM‬‬ ‫‪GSM‬‬

‫‪LM1‬‬ ‫‪P1‬‬ ‫شبکه ارتباط داخلی سراسری‬


‫شبکه‬
‫‪LM2‬‬ ‫‪P2‬‬

‫میان ارتباطی‬ ‫‪P‬‬ ‫‪CSM‬‬ ‫‪P‬‬ ‫‪CSM‬‬


‫‪P‬‬ ‫‪CIN‬‬ ‫‪CSM‬‬ ‫‪P‬‬ ‫‪CSM‬‬
‫‪LMn‬‬ ‫‪Pn‬‬ ‫‪CIN‬‬

‫‪P‬‬ ‫‪CSM‬‬ ‫‪P‬‬ ‫‪CSM‬‬


‫(الف) حافظههای محلی مشترک (مثال باترفالی ‪)BBN‬‬
‫‪P: processor‬‬ ‫خوشه ‪1‬‬ ‫خوشه ‪N‬‬
‫‪GSM: Global shared Memory‬‬ ‫(ب) مدل خوشهای سلسله مراتبی (مثال‪ :‬سیستم ‪ Cedar‬در‬
‫‪CSM: Cluster Shared Memory‬‬ ‫دانشگاه ایلینویز)‬
‫‪CIN: Cluster Interconnection Network‬‬
‫شکل‪ :9-1‬دو مدل ‪ NUMA‬برای سیستمهای چندپردازنده‬

‫مدل ‪ :COMA‬یک چندپردازنده که فقط از حافظه نهان استفاده میکند مدل ‪ COMA‬فرض میشود‪ .‬نمونه‪-‬‬
‫هایی از ماشینهای ‪ ،COMA‬ماشین نفوذ داده کامپیوتر علمی از مجتمع سوئد (‪ )DDm,1990‬و ماشین‬
‫تحقیقات مربع کندال (‪ )KSR-1‬میباشد‪ .‬مدل ‪ COMA‬در شکل ‪ 10-1‬نشان داده شده است‪.‬‬

‫مدل ‪ COMA‬حالت خاصی از ماشین ‪ NUMA‬است که حافظههای اصلی توزیع شده به حافظه نهان تبدیل‬
‫شده اند‪ .‬در هر گره پردازنده سلسله مراتب حافظه وجود ندارد همه حافظههای نهان یک فضای آدرس سراسری‬
‫ایجاد میکنند‪ .‬دسترسی به حافظه نهان دور با دایرکتوریهای حافظه نهان توزیع شده انجام میشود (‪ D‬در شکل‬
‫کانون نشر علوم‬ ‫‪| 44‬‬

‫‪ .)1-10‬براساس نوع شبکه ارتباطی استفاده شده‪ ،‬گاهی اوقات دایرکتوریهای سلسله مراتبی ممکن است استفاده‬
‫شود تا به مکانیابی کپیهای بلوکهای حافظه نهان کمک کند‪ .‬مکانیابی اولیه داده بحرانی نیست‪ ،‬زیرا دادهها‬
‫عاقبت به جایی که استفاده خواهند شد مهاجرت خواهند کرد‪.‬‬

‫شبکه میان ارتباطی‬

‫‪D‬‬ ‫‪D‬‬ ‫‪D‬‬


‫‪C‬‬ ‫‪C‬‬ ‫‪C‬‬

‫‪P‬‬ ‫‪P‬‬ ‫‪P‬‬

‫شکل ‪ :10-1‬مدل ‪ COMA‬از چندپردازنده (‪:P‬پردازنده‪ :C ،‬حافظه نهان‪ :D ،‬دایرکتوری)‬

‫در کنار مدلهای ‪ COMA,UMA,NUMA‬توضیح داده شده در باال سایر مدلها برای چندپردازندهها نیز‬
‫وجود دارند‪ .‬به عنوان مثال‪ ،‬دسترسی به حافظه غیر متحدالشکل با همبستگی حافظه نهان (‪)CC-NUMA‬‬
‫میتواند با حافظه اشتراکی توزیع شده و دایرکتوریهای حافظه نهان تعیین شود‪ .‬مثالهایی از مدل ‪CC-NUMA‬‬
‫شامل ‪ )1990(Standford Dash‬و ‪ )1990(MIT Alewife‬میباشد‪ .‬نوع دیگر میتواند ماشین ‪cache-‬‬
‫‪ coherent COMA‬باشد که همه کپیهای حافظه نهان باید ثابت نگه داشته شوند‪.‬‬

‫ساخت مدارات و ایجاد بستهبندی ‪ ،‬محدودیتهای اضافی روی مقیاس پذیری ایجاد میکنند‪ .‬مقیاس پذیری و‬
‫برنامه پذیری در فصلهای بعد توضیح داده میشوند‪ .‬در ساخت سیستمهای با موازات انبوه چندکامپیوترهای با‬
‫حافظه توزیع شده مقیاسپذیرتر ولی بخاطر پروتکلهای ارتباطی اضافه شده با قابلیت برنامه پذیری کمتر است‪.‬‬

‫‪ -2-2-1‬چندکامپیوترهای با حافظه توزیع شده‬


‫یک سیستم چندکامپیوتره با حافظه توزیع شده در شکل ‪ 11-1‬ارائه شده است‪ .‬سیستم شامل چندین کامپیوتر است‬
‫که به آنها گره میگوییم که توسط یک شبکه ارسال پیام به هم متصل شدهاند‪ .‬هر گره یک کامپیوتر مستقل است‬
‫که شامل یک پردازنده‪ ،‬حافظه محلی‪ ،‬و گاهی اوقات دیسکهای الحاقی تا ورودی‪/‬خروجی جانبی است‪.‬‬

‫شبکه ارسال پیام اتصاالت ایستای نقطه به نقطه را برای هر گره تهیه میکند‪ .‬همه حافظههای محلی خصوصی‬
‫هستند و فقط توسط پردازندههای محلی قابل دسترس هستند‪ .‬به این دلیل‪ ،‬چندکامپیوترهای قدیمی را ماشینهای‬
‫بدون دسترسی به حافظه راه دور (‪ )NORMA1‬میگفتند‪ .‬به هر حال‪ ،‬این محدودیت در چندکامپیوترهای آینده‬
‫با حافظه اشتراکی توزیع شده حذف شد‪ .‬ارتباط بین گرهی توسط ارسال پیام از یک شبکه اتصالی ایستا حمل‬
‫میشود‪.‬‬

‫‪1‬‬
‫‪NO-Remote Memory Access‬‬
‫‪M‬‬ ‫‪M‬‬ ‫‪M‬‬
‫‪P‬‬ ‫‪P‬‬ ‫‪P‬‬

‫‪M‬‬ ‫‪P‬‬ ‫‪P‬‬ ‫‪M‬‬


‫شبکه ارتباطی ارسال پیام (مش‪ ،‬حلقه‪ ،TORUS ،‬هایپرکیوب‪ ،‬حلقه اتصالی‬
‫مکعبی و غیره)‬
‫‪M‬‬ ‫‪P‬‬ ‫‪P‬‬ ‫‪M‬‬

‫‪P‬‬ ‫‪P‬‬ ‫‪P‬‬


‫‪M‬‬ ‫‪M‬‬ ‫‪M‬‬
‫شکل ‪ 11-1‬مدل عمومی یک چند کامپیوتر با ارسال پیام‬
‫نسلهای چندکامپیوتر‪ :‬چندکامپیوترها از مسیریابهای سختافزاری برای ارسال پیام استفاده میکنند‪ .‬یک‬
‫گره کامپیوتر به هر مسیریاب وصل میشود‪ .‬مسیریاب مرزی ممکن است به وسایل جانبی و ورودی‪/‬خروجی متصل‬
‫شود‪ .‬ارسال پیام بین هر دو گره شامل رشتهای از مسیریابها و کانالها است‪ .‬انواع گرههای ترکیبی در‬
‫چندکامپیوترهای نامتجانس مجاز میباشند‪ .‬ارتباطات بین گرهی در چندکامپیوترهای نامتجانس در خالل نمایش‪-‬‬
‫های داده سازگار و پروتکلهای ارسال پیام برآورده میشود‪.‬‬

‫در بخش ‪ 4-2‬انواع همبندیهای شبکه ایستا‪ ،‬برای ساخت چندکامپیوترها را مطالعه خواهیم کرد‪ .‬همبندیهای‬
‫مشهور شامل حلقه‪ ،‬درخت‪ ،‬مش‪ ،Torus ،‬فوق مکعب‪ ،‬سیکل ارتباطی مکعب و غیره میباشند‪ .‬انواع الگوهای‬
‫ارتباطی مثل یک به یک‪ ،‬پخشی‪ ،‬جایگشت‪ ،‬و الگوهای چندپخشی در گرهها مورد تقاضا واقع میشود‪ .‬مسائل مهم‬
‫برای چندکامپیوترها شامل‪ ،‬شماتیکهای مسیریابی پیام‪ ،‬استراتژیهای کنترل جریان شبکه‪ ،‬اجتناب از بنبست‪،‬‬
‫کانالهای مجازی‪ ،‬روشهای ارسال پیام و تکنیکهای تصنیف برنامه میباشد‪.‬‬

‫‪ -3-2-1‬یک طبقه بندی از کامپیوترهای ‪MIMD‬‬

‫کامپیوترهای موازی بصورت پیکربندی ‪ MIMD‬یا ‪ SIMD‬ظاهر میشوند‪SIMD .‬ها بیشتر برای کابردهای‬
‫خاص منظوره پیاده میشوند‪ .‬واضح است که ‪ SIMD‬ها از لحاظ اندازه چندان مقیاس پذیر نیستند‪ .‬این حقیقت‬
‫که ‪ CM-5‬معماری ‪ MIMD‬دارد و ‪ CM-2‬معماری ‪ SIMD‬دارد ممکن است هدف معماری را روشن کند‪.‬‬
‫بنابراین مرز بین چندپردازندهها و چندکامپیوترها در سالهای اخیر شفاف نیست‪ .‬در نتیجه تمایز این دو ممکن است‬
‫مبهم باشد‪.‬‬

‫یکی از ویژگیهای معماری برای کامپیوترهای همه منظوره براساس پیکربندی ‪ MIMD‬با حافظههای توسعه‬
‫یافته است که فضای آدرس مجازی مشترک سراسری دارند‪ )1992( Gordon Bell .‬یک طبقه بندی برای‬
‫ماشینهای ‪ MIMD‬تهیه کرده است که در شکل ‪ 12-1‬آورده شده است‪ .‬او فرض کرد چندپردازندههای حافظه‬
‫مشترک یک فضای آدرس تک دارند‪ .‬چندپردازندهها یا چندکامپیوترهای مقیاس پذیر باید حافظه مشترک توزیع‬
‫شده استفاده کنند‪ .‬چندپردازندههای مقیاس ناپذیر حافظه مشترک متمرکز استفاده میکنند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 46‬‬

‫چندکامپیوترها حافظههای توزیع شده با چندین فضای آدرس استفاده میکنند‪ .‬آنها با حافظه توزیع شده مقیاس‬
‫پذیرترند‪ .‬البته چندکامپیوترهای متمرکز هم وجود دارند‪ .‬ارائه ایستگاههای کاری متصل ‪ LAN‬سریع باعث ایجاد‬
‫سوپرکامپیوترهای مقرون به صرفه خواهد شد‪ .‬مقیاس پذیری کامپیوترهای ‪ MIMD‬در بخش ‪ 4-3‬مطالعه خواهد‬
‫شد‪.‬‬

‫‪MIMD‬‬

‫چندپردازنده ها‪ ،‬تک فضای‬ ‫چندکامپیوترها‪ ،‬چند فضای‬


‫آدرسه ‪،‬حافظه مشترک با‬ ‫آدرس‪ ،‬ارسال پیام‪،‬‬
‫محاسبات‬ ‫محاسبات‬

‫چندپردازنده های حافظه توزیع‬ ‫چندپردازنده های حافظه‬ ‫چندکامپیوترهای توزیع‬


‫چندکامپیوترهای مرکزی‬
‫شده (مقیاس پذیر)‬ ‫مرکزی (مقیاس ناپذیر)‬ ‫شده مقیاس پذیر‬

‫‪LAN‬های سریع‬ ‫لن ها برای‬


‫ارتباط پویای‬ ‫ارتباط ایستا‪،‬‬ ‫ارتباط ایستا‬ ‫چندسطحه یا‬
‫درخت چاق‬ ‫برای کالسترهای با‬ ‫پردازش توزیع‬
‫آدرس ها به‬ ‫کش کردن‬ ‫برنامه‬ ‫تقاطعی‬ ‫ساده‪،‬‬ ‫چندگذرگاه‬ ‫اتصال مش‪،‬‬ ‫فوق مکعب و‬
‫‪Cray,Fujist‬‬ ‫باترفالی‪C‬‬ ‫ظرفیت‬ ‫شده‪،‬‬
‫پردازنده‬ ‫‪ALLiant,‬‬ ‫‪CM,BBN‬‬ ‫چندحلقه‪،‬‬ ‫‪DEC,Enc‬‬ ‫اینتل‬ ‫‪nCUBE‬‬ ‫ایستگاههای‬
‫‪u,Hitachi,I‬‬ ‫‪m5‬‬ ‫باال‪DEC,Tande‬‬
‫ها‪KSR‬‬ ‫‪Dash‬‬ ‫‪,Cedar‬‬ ‫‪BM,NEC,T‬‬ ‫گذرگاه‬ ‫‪ore,NCR‬‬ ‫‪m‬‬ ‫کاری ‪pcs،‬‬
‫‪era‬‬

‫شکل ‪ :12-1‬طبقه بندی ‪ Bell‬برای کامپیوترهای ‪MIMD‬‬

‫‪ -3-1‬چندبرداری و کامپیوترهای ‪SIMD‬‬


‫در این بخش‪ ،‬سوپرکامپیوترها و پردازندههای موازی برای پردازش برداری و موازات داده را معرفی میکنیم‪.‬‬
‫سوپرکامپیوترها را به دو دسته طبقه بندی میکنیم‪:‬‬

‫‪ -1‬ماشینهای برداری خطلوله که از تعدادی پردازنده قدرتمند که مجهز به سخت افزار برداری هستند‬
‫تشکیل شدهاند‪.‬‬
‫‪ -2‬کامپیوترهای ‪ SIMD‬که تأکیدشان موازات انبوه است‪.‬‬

‫‪ -1-3-1‬سوپرکامپیوترهای برداری‪ :‬یک کامپیوتر برداری اغلب روی یک پردازنده اسکالر ساخته میشود‪.‬‬
‫همانطور که در شکل ‪ 13-1‬نشان داده شده است پردازنده برداری به یک پردازنده اسکالر ملحق شده است‪ .‬برنامه‬
‫و دادهها ابتدا به داخل حافظه اصلی از طریق یک کامپیوتر میزبان بار میشوند‪ .‬همه دستورات ابتدا توسط واحد‬
‫کنترل اسکالر دیکد می شوند‪ .‬اگر دستور دیکد شده یک عمل اسکالر بود یا یک دستور کنترل برنامه بود‪ ،‬مستقیماً‬
‫توسط پردازنده اسکالر با استفاده از خط لولههای عملیاتی اسکالر اجرا میشود‪.‬‬

‫اگر دستور دیکد شده یک عمل برداری بود‪ ،‬به واحد کنترل برداری فرستاده میشود‪ .‬این واحد کنترل جریان بردار‬
‫دادهها را بین حافظه اصلی و خط لولههای عملیاتی برداری مدیریت میکند‪ .‬جریان بردار داده توسط واحد کنترل‬
‫هماهنگ میشود‪ .‬چندین خط لوله عملیاتی برداری ممکن است در داخل پردازنده برداری ساخته شود‪.‬‬
‫مدلهای پردازنده برداری‪ :‬شکل ‪ 13-1‬معماری ثبات به ثبات را نشان میدهد‪ .‬ثباتهای برداری برای‬
‫نگهداری عملوندهای برداری‪ ،‬نتایج نهایی و میانی برداری استفاده میشوند‪ .‬خط لولههای عملیاتی برداری عملوندها‬
‫را از ثباتهای برداری بازیابی میکند و نتایج را در آن قرار میدهد‪ .‬همه ثباتهای برداری در دستورات کاربر قابل‬
‫برنامه نویسی هستند‪ .‬هر ثبات برداری با یک شمارنده قطعه مجهز شده است که ثبات قطعه مورد استفاده در‬
‫سیکلهای خط لوله بعدی را نگه میدارد‪.‬‬

‫معموالً طول هر ثبات برداری ثابت است مثالً ‪ 64‬عدد ثبات قطعه ‪ 64‬بیتی در یک ثبات برداری در سوپرکامپیوترهای‬
‫سری ‪ Cray‬وجود دارد‪ .‬سایر ماشینها‪ ،‬شبیه سریهای ‪ ،Fujistu VP2000‬ثباتهای برداری قابل پیکربندی‬
‫را استفاده میکند تا بطور پویا طول ثبات را با عملوندهای برداری تطابق دهد‪.‬‬

‫پردازنده اسکالر‬
‫خط لولههای عملیاتی‬
‫اسکالر‬

‫پردازنده برداری‬
‫واحد کنترل اسکالر‬ ‫دستورات‬
‫واحد کنترل برداری‬
‫برداری‬

‫حافظه اصلی (برنامه و داده)‬ ‫خط لوله عملیاتی برداری‬

‫ثباتهای‬
‫برداری‬
‫حافظه انبوه‬ ‫کامپیوتر میزبان‬ ‫خط لوله عملیاتی برداری‬

‫کاربر ‪I/O‬‬
‫شکل ‪ :13-1‬معماری یک سوپرکامپیوتر برداری‬

‫بطور عادی‪ ،‬تعداد ثباتهای برداری و خط لولههای عملیاتی ثابتی در یک پردازنده برداری وجود دارد‪ .‬بنابراین‪ ،‬هر‬
‫دو منبع باید به منظور اجتناب از تداخل منابع بین عملیاتهای برداری مختلف رزرو شوند‪.‬‬

‫معماری حافظه به حافظه با معماری ثبات به ثبات متفاوت است زیرا نیازمند روشی است تا بتواند جایگزین ثباتهای‬
‫برداری کند‪ .‬در این معماری عملوندها و نتایج برداری بطور مستقیم از حافظه به سوپرکلمات یعنی ‪ 512‬بیت مثل‬
‫‪ cyber 205‬بار میشوند‪.‬‬

‫سوپرکامپیوترهای برداری خط لوله با مدلهای تک پردازنده شروع میشوند مثل ‪ .cray‬سیستمهای سوپرکامپیوتر‬
‫اخیر مثل سریهای ‪ cray Y-MP‬هر دو مدل تکپردازنده و چندپردازنده را پیشنهاد میکنند‪ .‬اکثر مینفریمهای‬
‫انتهایی مدلهای چندپردازنده با سخت افزار برداری اضافه شده را پیشنهاد میکنند‪ .‬مثل مدلهای ‪VAX‬‬
‫‪.9000,IBM 390/VF‬‬
‫کانون نشر علوم‬ ‫‪| 48‬‬

‫چند نمونه سیستم سوپرکامپیوتر برداری‪ :‬تعداد زیادی کامپیوتر برداری خط لوله ساخته شدهاند که از‬
‫ایستگاههای کاری تا مینی و سوپرکامپیوترها را شامل میشوند‪ .‬جدول ‪ 5-1‬چند نمونه سوپر کامپیوتر برداری را‬
‫نشان میدهد این اطالعات مربوط به آخرین نگارشهای سوپرکامپیوتر برداری شرکت ‪ NEC‬میباشد که تا سال‬
‫‪ 2013‬ارائه شده است‪.‬‬

‫در جدول ‪ 5-1‬منظور از حداکثر کارایی منطقی سرعت تئوری عملیات جمع برداری‪ ،‬ضرب برداری‪ ،‬تقسیم برداری‬
‫و جذر برداری و واحد اسکالر می باشد‪ .‬منظور از حداکثر کارایی برداری بر اساس واحدهای ضرب و جمع برداری‬
‫است‪ .‬سیستمهایی که بیشتر از ‪ 128‬گره دارند نیازمند چینش خاصی هستند‪.‬‬
‫‪SX-9/B‬‬ ‫‪SX-9/A‬‬ ‫‪SX-9‬‬ ‫سیستم‪/‬خصوصیت‬
‫تک گره‬ ‫تک‪-‬گره‬ ‫چند‪-‬گره‬ ‫نوع‬
‫‪4-8‬‬ ‫‪8-16‬‬ ‫‪32-8192‬‬ ‫تعداد پردازنده‬
‫‪473.6G-‬‬ ‫‪947.2G-‬‬ ‫‪3.8T- 969.9TFLOPS‬‬ ‫حداکثر کارایی منطقی‬
‫‪947.2GFLOPS‬‬ ‫‪1894.4GFLOPS‬‬
‫‪409.6G -‬‬ ‫‪819.2G -‬‬ ‫‪3.3T - 838.9TFLOPS‬‬ ‫حداکثر کارایی برداری‬
‫‪819.2GFLOPS‬‬ ‫‪1,638.4GFLOPS‬‬
‫حافظه مشترک‬ ‫حافظه مشترک‬ ‫حافظه مشترک و توزیع شده‬ ‫معماری حافظه اصلی‬
‫‪256GB,512GB‬‬ ‫‪512GB, 1TB‬‬ ‫‪1T - 512TB‬‬ ‫ظرفیت حافظه اصلی‬
‫‪2TB/s‬‬ ‫‪4TB/s‬‬ ‫‪2048TB/s‬‬ ‫حداکثر سرعت انتقال‬
‫حافظه اصلی‬
‫سوئیچ کراسبار بین گرهی‬ ‫سوئیچ کراسبار بین گرهی‬ ‫سوئیچ کراسبار بین گرهی‬ ‫سیستم ارتباطی‬
‫‪128GB/s×2‬‬ ‫‪128GB/s×2‬‬ ‫‪128GB/s×2‬‬ ‫حداکثرسرعت انتقال‬
‫‪bidirectional (per‬‬ ‫‪bidirectional (per‬‬ ‫‪bidirectional (per‬‬ ‫سیستم ارتباطی‬
‫)‪node‬‬ ‫)‪node‬‬ ‫)‪node‬‬
‫جدول ‪ :5-1‬چند نمونه سوپرکامپیوتر برداری تا سال ‪ 2013‬برگرفته از ‪www.nec.com‬‬
‫‪ :2-3-1‬سوپرکامپیوترهای ‪ :SIMD‬در شکل ‪(3-1‬ب) مدل انتزاعی کامپیوترهای ‪ SIMD‬را با داشتن یک‬
‫دستورالعمل روی رشتهای چندگانه از دادهها نشان دادیم‪ .‬یک مدل عملیاتی از کامپیوترهای ‪ SIMD‬در شکل ‪-1‬‬
‫‪ 14‬بر اساس کار ‪ )1979( H.J.Seigel‬نشان داده شده است‪ .‬ماشینهای ‪ SIMD‬را در فصل ‪ 8‬بطور مفصل‬
‫توضیح میدهیم‪.‬‬
‫واحد کنترل‬

‫‪PE0‬‬ ‫‪PE1‬‬ ‫‪PE2‬‬ ‫‪PEn‬‬


‫‪Proc0‬‬ ‫‪Proc1‬‬ ‫‪Proc2‬‬ ‫‪Proc n‬‬

‫‪Mem0‬‬ ‫‪Mem1‬‬ ‫‪Mem2‬‬ ‫‪Memn‬‬

‫شبکه میان ارتباطی‬


‫شکل ‪ :14-1‬مدل عملیاتی از کامپیوترهای ‪SIMD‬‬
‫مدل ماشین ‪ :SIMD‬یک مدل عملیاتی از کامپیوترهای ‪ SIMD‬توسط ‪ 5‬تایی )‪M=(N,C,I,M,R‬‬
‫تعیین میشود که‪:‬‬

‫‪ N‬تعداد عناصر پردازشی (‪ )PE‬در ماشین است به عنوان مثال ‪ 64 ، Illiac IV‬عدد ‪ PE‬دارد و‬ ‫‪)1‬‬
‫ماشین ارتباطی ‪ CM-2‬از ‪ 65536‬عدد ‪ PE‬استفاده میکند‪.‬‬
‫‪ C‬مجموعه دستوراتی است که مستقیماً توسط واحد کنترل (‪ )CU‬اجرا میشود شامل دستورات‬ ‫‪)2‬‬
‫کنترل جریان برنامه و اسکالر‪.‬‬
‫‪ I‬مجموعه دستوراتی است که توسط ‪ CU‬به همه ‪PE‬ها برای اجرای موازی پخش میشود‪ .‬این‬ ‫‪)3‬‬
‫دستورات شامل عملیات ریاضی‪ ،‬منطقی‪ ،‬مسیریابی داده‪ ،‬پوشش و سایر عملیات محلی است که توسط‬
‫هر ‪ PE‬فعال روی داده داخل آن ‪ PE‬اجرا میشود‪.‬‬
‫‪ M‬مجموعه شماتیک پوشش است که هر پوشش (‪ )MASK‬مجموعه ‪PE‬ها را به دو زیر مجموعه‬ ‫‪)4‬‬
‫فعال و غیرفعال پارتیشن بندی میکند‪.‬‬
‫‪ R‬مجموع ه عملیات مسیریابی داده است که الگوهای گوناگون را برای نصب شبکه ارتباطی برای‬ ‫‪)5‬‬
‫ارتباطات بین ‪ PE‬تعیین میکند‪.‬‬

‫بنابراین فرد میتواند یک معماری ماشین ‪ SIMD‬خاص را توسط ‪5‬تایی توصیف کند‪.‬‬

‫پنج نمونه از بهترین سوپرکامپیوترهای دنیا تا نوامبر ‪ :2016‬در جدول ‪ 6-1‬مشخصات پنج تا از بهترین‬
‫سوپرکامپیوترهای دنیا تا نوامبر ‪ 2016‬ارائه شده است‪ .‬همانطور که مشاهده میشود تعداد پردازندهها از ‪560,640‬‬
‫تا ‪10649600‬متغیر است‪ .‬اما پردازندههای استفاده شده در سوپرکامپیوترها و همچنین سرعت پالس ساعت آنها با‬
‫هم متفاوت است‪.‬‬

‫کارایی این سوپرکامپیوترها براساس اجرای برنامه محک ‪ Linpack‬سنجیده شده است‪ .‬در این جدول بهترینهای‬
‫دنیا از راست به چپ تا این زمان بر اساس کارایی چیده شدهاند‪ .‬همانطور که مشاهده میشود کارایی بهترین‬
‫سوپرکامپیوتر ‪ 93,014.6TFLOP/s‬و پنجمین سوپرکامپیوتر ‪ 14,014.7TFLOP/s‬میباشد‪ .‬حداکثر‬
‫کارایی بدست آمده در تئوری در همه سوپرکامپیوترها از کارایی عملی بیشتر است‪.‬‬

‫حافظه سوپرکامپیوترها از ‪ 710,144 GB‬تا ‪ 1,572,864 GB‬متغیر است‪ .‬توان مصرفی از ‪ 3,939Kw‬تا‬
‫‪ 17,808kW‬در این سوپرکامپیوترها متغیر است‪ .‬شبکههای اتصالی آنها نیز با یکدیگر متفاوت میباشد‪.‬‬

‫برای مقایسه سرعت سوپرکامپیوتر اول دنیا در تاریخ فوق الذکر با یک ‪ PC‬که سرعت آن ‪ 1GFlops‬میباشد‬
‫متوجه میشویم کاری را که این سوپر کامپیوتر در یک ثانیه انجام میدهد ‪ PC‬آنرا در ‪ 3‬سال انجام خواهد داد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 50‬‬

‫‪Cori-Cray XC40‬‬ ‫‪Sequoia-‬‬ ‫‪Titan-Cray XK7‬‬ ‫‪Tianhe-2‬‬ ‫‪Sunway‬‬ ‫سوپرکامپیوتر‬


‫‪BlueGene/Q,‬‬ ‫)‪(MikyWay-2‬‬ ‫‪Taihulight‬‬ ‫‪/‬خصوصیت‬
‫‪IBM‬‬ ‫‪IBM‬‬ ‫شرکت ‪Cray‬‬ ‫‪NUDT‬‬ ‫‪NRCPC‬‬ ‫سازنده‬
‫‪Intel Xeon Phi‬‬ ‫‪Power BQC 16C‬‬ ‫‪Opteron 6274‬‬ ‫‪Intel Xeon E5‬‬ ‫‪Sunway SW26010‬‬ ‫پردازنده‬
‫‪7250 68C 1.4GHz‬‬ ‫‪1.60GHz‬‬ ‫‪16c 2.200GHz‬‬ ‫‪2692 12C‬‬ ‫‪260C 1.45Ghz‬‬
‫‪2.200GHz‬‬
‫‪622,336‬‬ ‫‪1,572,864‬‬ ‫‪560640‬‬ ‫‪3,120,000‬‬ ‫‪10,649,600‬‬ ‫تعداد‬
‫پردازنده‬
‫‪14,014.7TFlop/s‬‬ ‫‪17,173.2TFlop/s‬‬ ‫‪17,590TFlop/s‬‬ ‫‪33,862.7TFlop/s‬‬ ‫‪93,014.6TFlops‬‬ ‫کارایی‬
‫(‪)Rmax‬‬
‫‪27,880.7TFlop/s‬‬ ‫‪20,132.7TFlop/s‬‬ ‫‪27,112.5TFlop/s‬‬ ‫‪54,902.7TFlop/s‬‬ ‫حداکثر تئوری ‪125,435.9Tflops‬‬
‫‪3,939.00Kw‬‬ ‫‪7,890.00 kW‬‬ ‫‪8,209.00 kW‬‬ ‫‪17,808.00kW‬‬ ‫‪15,371kW‬‬ ‫توان‬
‫‪878,592GB‬‬ ‫‪1,572,864 GB‬‬ ‫‪710,144 GB‬‬ ‫‪1,024,000GB‬‬ ‫‪1,310,720 GB‬‬ ‫حافظه‬
‫‪Aries interconnect‬‬ ‫‪Custom‬‬ ‫‪Cray Gemini‬‬ ‫‪TH Express-2‬‬ ‫‪Sunway‬‬ ‫شبکه اتصالی‬
‫‪Cray Linux‬‬ ‫‪Linux‬‬ ‫‪Cray Linux‬‬ ‫‪Kylin Linux‬‬ ‫سیستم عامل ‪Sunway RaiseOS‬‬
‫‪2.0.5‬‬
‫چین شهر ‪ United States Changsha‬شهر ‪United States‬شهر ‪ Unites states‬شهر‬ ‫‪china‬‬ ‫کشور‬
‫‪Argonne‬‬ ‫‪livemore‬‬ ‫‪Oak Ridge‬‬
‫جدول‪ 6-1‬مشخصات پنج تا از بهترین سوپرکامپیوترهای دنیا (راست به چپ) در نوامبر ‪ 2016‬برگرفته از سایت ‪http://www.top500.org‬‬

‫‪ -4-1‬مدل پیچیدگی ‪VLSI‬‬

‫کامپیوترهای موازی روی استفاده از تراشههای ‪ VLSI‬برای ساخت اجزای اصلی آرایههای پردازنده‪ ،‬آرایههای‬
‫حافظه‪ ،‬و شبکههای سوئیچینگ در مقیاس بزرگ تکیه دارند‪ .‬مدل ‪ AT2‬برای تراشههای ‪ VLSI‬براساس کار‬
‫‪ )1980( Clark Thompson‬در زیر ارائه میشود‪ .‬سه کران پایین روی مدارات ‪ VLSI‬توسط جفری آلمن‬
‫(‪ )1984‬تفسیر شد‪ .‬کرانها با تنظیم محدودههای حافظه‪ ،‬ورودی‪/‬خروجی و ارتباطات برای پیاده سازی الگوریتمهای‬
‫موازی با تراشههای ‪ VLSI‬بدست آمدهاند‪.‬‬

‫مدل ‪ :AT2‬فرض کنید ‪ A‬مساحت تراشه باشد‪ .‬تامسون در تز دکترایش برای محاسبات خاص توضیح داد که‬
‫))‪A×T2≥O(f(s‬‬ ‫یک کران پایین )‪ f(s‬وجود دارد بطوریکه‪( :‬معادله ‪)6-1‬‬

‫مساحت تراشه ‪ A‬واحد اندازهگیری پیچیدگی تراشه است‪ .‬تأخیر ‪ T‬زمان مورد نیاز از زمانی که ورودی اِعمال‬
‫میشود تا زمانیکه خروجی بدست میآید میباشد‪ .‬شکل ‪ 15-1‬چگونگی تفسیر نتایج پیچیدگی ‪ AT2‬در توسعه‬
‫تراشه ‪ VLSI‬را نشان میدهد‪ .‬تراشه توسط مساحت پایه روی دو بُعد افقی نشان داده میشود‪ .‬بُعد عمودی مرتبط‬
‫با زمان است‪ .‬بنابراین حجم سه‪-‬بُعدی نمایش دهنده تاریخچه محاسبات انجام شده توسط تراشه است‪.‬‬

‫کران حافظه روی سطح تراشه ‪ :A‬محاسبات زیادی هستند که به خاطر نیاز به پردازش مجموعههای بزرگ‬
‫داده محدود‪ -‬حافظه هستند‪ .‬برای پیاده سازی این نوع از محاسبات روی سیلیکون‪ ،‬یکی از محدودیتها این است‬
‫که با چه چگالی اطالعات (سلولهای بیت) می توانند روی یک تراشه جایگزین شوند‪ .‬همانطور که در شکل ‪-1‬‬
‫‪( 15‬الف)نشان داده شده است‪ ،‬نیاز حافظه از یک محاسبه کران پایین روی سطح تراشه ‪ A‬تنظیم میشود‪ .‬سطح‬
‫تراشه مقدار بیتهای حافظه ذخیره شده روی تراشه را محدود میکند‪.‬‬

‫کران ورودی‪/‬خروجی روی حجم ‪ :AT‬حجم مکعب مستطیل توسط ضرب ‪ AT‬نمایش داده میشود‪ .‬وقتی‬
‫اطالعات در طول تراشه برای دوره زمانی ‪ T‬جریان مییابد‪ ،‬تعداد بیتهای ورودی نمیتواند از حجم تجاوز کند‪.‬‬
‫این یک کران پایین محدود شده به ورودی‪/‬خروجی روی ضرب ‪ AT‬همانطور که در شکل ‪(15-1‬الف) نشان داده‬
‫شده است ایجاد میکند‪ .‬مساحت ‪ A‬مرتبط با داده به داخل و خارج از کل سطح تراشه سیلیکون است‪.‬‬

‫محدوده ارتباطی دوبخشی𝑻𝑨√‪ :‬شکل ‪(15-1‬ب) کران پایین ارتباطی روی سطح دوبخشی𝑻𝑨√ را‬
‫نشان میدهد‪ .‬دوبخشی توسط قطعه برش عمودی روی بعد کوچکتر روی سطح تراشه را نشان میدهد‪ .‬فاصله این‬
‫بعد حداکثر ‪ √AT‬برای یک تراشه مربعی است‪ .‬ارتفاع قطعه برش ‪ T‬است‪.‬‬
‫زمان‬ ‫زمان‬

‫‪T‬‬ ‫مساحت تراشه‬


‫‪A‬‬ ‫‪T‬‬
‫‪A‬‬ ‫𝐴√‬

‫(الف) کران محدوده‪-‬حافظه روی سطح تراشه ‪ A‬و کران‬


‫(ب) کران محدوده‪-‬ارتباطات روی دوبخشی 𝑇𝐴√‬
‫محدوده‪ I/O-‬روی تاریخچه نمایش داده شده با ‪AT‬‬
‫شکل ‪ :15-1‬مدل پیچیدگی ‪ AT2‬از تراشه ‪ VLSI‬دو بعدی‬

‫سطح دوبخشی‪ ،‬حداکثر اطالعات تبادل شده بین دو نیمه مدار تراشه را در طول دوره ‪ T‬نشان میدهد‪ .‬مساحت‬
‫دو‪-‬قطعه𝑻𝑨√ پهنای باند ارتباطی یک محاسبه را محدود میکند‪ .‬تئوریسینهای ‪ VLSI‬مربع این اندازه ‪AT2‬‬
‫را به عنوان کران پایین استفاده میکنند‪.‬‬

‫مثال ‪ :8-1‬پیاده سازی تراشه ‪ ِVLSI‬یک الگوریتم ضرب ماتریس‬

‫این مثال چگونگی تخمین مساحت تراشه ‪ A‬و زمان محاسبه ‪ T‬برای ضرب ماتریس ‪ C=A×B ، n*n‬روی‬
‫یک مش از عناصر پردازشی )‪ (PE‬با یک گذرگاه پخشی روی هر سطر و ستون را نشان میدهد‪ .‬معماری مش‬
‫دو بُعدی در شکل ‪ 16-1‬نشان داده شده است‪ .‬ارتباط بین ‪ PE‬از طریق گذرگاههای پخشی انجام میشود‪ .‬می‪-‬‬
‫خواهیم کران )‪ AT2=O(n4‬را با توسعه یک الگوریتم ضرب موازی ماتریس با زمان )‪ T=O(n‬با استفاده از‬
‫کانون نشر علوم‬ ‫‪| 52‬‬

‫مش با گذرگاههای پخشی اثبات کنیم‪ .‬بنابراین ما نیاز داریم که اثبات کنیم مساحت تراشه به )‪ A=O(n2‬محدود‬
‫شده است‪.‬‬
‫هر ‪ PE‬یک واحد سطح را اشغال میکند‪ ،‬و گذرگاههای همهپخشی نیازمنده )‪ O(n2‬سطح سیمی میباشند‪.‬‬
‫بنابراین کل سطح تراشه نیازمند )‪ O(n2‬برای یک مش ‪ n*n‬با گذرگاههای همهپخشی میباشد‪ .‬ما نشان خواهیم‬
‫داد که ضرب ماتریس ‪ n*n‬در این تراشه مش میتواند با زمان )‪ T=O(n‬انجام شود‪ .‬هر ‪ PE‬را با ‪PE(i,j),‬‬
‫‪ 0≤i,j≤n-1‬نشان میدهیم‪.‬‬

‫‪00‬‬ ‫‪01‬‬ ‫‪02‬‬ ‫‪03‬‬

‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬

‫‪20‬‬ ‫‪21‬‬ ‫‪22‬‬ ‫‪23‬‬

‫‪30‬‬ ‫‪31‬‬ ‫‪32‬‬ ‫‪33‬‬


‫شکل ‪ :16-1‬یک مش ‪ 4×4‬از عناصر پردازشی )‪ (PE‬با گذرگاههای همهپخشی روی هر سطر و ستون‬

‫ابتداً عناصر ماتریس ورودی )‪ A(i,j), B(i,j‬در )‪ PE(i,j‬بدون تکرار داده ذخیره میشوند‪ .‬حافظه بین همه‬
‫‪PE‬ها توزیع شده است‪ .‬هر ‪ PE‬فقط میتواند به حافظه محلی خودش دسترسی داشته باشد‪ .‬الگوریتم موازی زیر‬
‫‪𝐶(𝑖, 𝑗) = ∑𝑛−1‬‬ ‫چگونگی انجام عملیات ضرب در تولید عناصر خروجی ≤ ‪𝑘=0 𝐴(𝑖, 𝑘) × 𝐵(𝑘, 𝑗)𝑓𝑜𝑟0‬‬
‫‪ 𝑖, 𝑗 ≤ 𝑛 − 1‬را نشان میدهد‪.‬‬
‫‪Doall 10 for 0≤i,j≤n-1‬‬
‫‪10‬‬ ‫‪PE(i,j) sets C(i,j) to 0 /initialization/‬‬
‫‪Do 50 for 0≤k≤n-1‬‬
‫‪Doall 20 for 0≤i≤n-1‬‬
‫‪20‬‬ ‫‪PE(i,k) broadcast A(i,k) along its row bus‬‬
‫‪Doall 30 for 0≤j≤n-1‬‬
‫‪30‬‬ ‫‪PE(k,j) broadcast B(k,j) along its column bus‬‬
‫‪/PE(j,j) now has A(i,k) and B(k,j), 0≤i,j≤n-1/‬‬
‫‪Doall 40 for 0≤i,j≤n-1‬‬
‫‪40‬‬ ‫)‪PE(i,j) computes C(i,j)C(i,j)+A(i,k)*B(k,j‬‬
‫‪50 continue‬‬
‫الگوریتم فوق یا حلقه ترتیبی برای بُعد ایندکس شده با ‪ k‬میباشد‪ .‬در این حلقه ‪ n‬واحد زمانی (تکرار) صرف میشود‪.‬‬
‫بنابراین داریم )‪ .T=O(n‬بنابراین )‪.AT2=O(n2).(O(n))2=O(n4‬‬
‫‪ -1-4-1‬ماشین های دسترسی‪-‬تصادفی موازی‬
‫مدلهای تئوری از کامپیوترهای موازی در زیر نمایش داده میشوند‪ .‬در این بخش ماشین دسترسی تصادفی‬
‫(‪ ،)RAM‬ماشین دسترسی تصادفی موازی (‪ )Parallel Random Access Machine‬و انواع‬
‫‪PRAM‬ها را معرفی میکنیم‪ .‬این مدلها پیچیدگی مطالعه رفتار الگوریتمهای پیاده شده روی کامپیوترهای‬
‫موازی را ساده میکنند‪.‬‬

‫مدلهای ‪ :PRAM‬کامپیوترهای تک پردازنده رایج (قدیمی) به عنوان ماشینهای دسترسی تصادفی (‪)RAM‬‬
‫مدل شدهاند‪ .‬یک مدل ماشین دسترسی موازی (‪ )PRAM‬توسط فرچون و ویلی (‪ )1978‬توسعه داده شد تا‬
‫کامپیوترهای موازی ایده آل را با سربار دسترسی حافظه یا همزمانی صفر مدل کنند‪ .‬این مدل ‪ PRAM‬برای‬
‫توسعه الگوریتم موازی و برای تجزیه تحلیل پیچیدگی و مقیاس پذیری استفاده خواهد شد‪.‬‬

‫یک ‪ n‬پردازنده ‪( PRAM‬شکل ‪ )17-1‬یک حافظه آدرسپذیر سراسری دارد‪ .‬حافظه اشتراکی میتواند بین‬
‫پردازندهها توزیع شده باشد یا در یک مکان متمرکز شده باشد‪ N .‬پردازنده (که عناصر پردازشی ‪ PE‬نیز نامیده‬
‫می شوند) در یک سیکل خواندن از حافظه محاسبه و نوشتن در حافظه سنکرون شدهاند‪ .‬با حافظه مشترک‪ ،‬مدل‬
‫باید تعیین کند که چگونه نوشتن و خواندن همروند از حافظه مدیریت میشود‪ .‬چهار گزینه بروزرسانی حافظه ممکن‬
‫عبارتند از‪:‬‬

‫خواندن انحصاری (‪ :)ER1‬حداکثر به یک پردازنده اجازه میدهد که از هر مکان حافظه در هر سیکل‬ ‫•‬
‫بخواند‪ ،‬یک سیاست نسبتاً محدود کننده است‪.‬‬
‫نوشتن انحصاری (‪ :)EW‬اجازه نوشتن حداکثر یک پردازنده به داخل یک مکان حافظه در هر زمان‬ ‫•‬
‫میدهد‪.‬‬
‫خواندن همروند(‪ :)CR2‬اجازه میدهد چندین پردازنده اطالعات مشابهی را از سلول حافظه مشابهی در‬ ‫•‬
‫یک سیکل بخوانند‪.‬‬
‫نوشتن همروند (‪ :)CW‬اجازه نوشتنهای مشابه به مکان حافظه مشابه را میدهد‪ .‬به منظور جلوگیری‬ ‫•‬
‫از تداخل‪ ،‬سیاستهایی برای حل کردن تداخل نوشتن باید استفاده شود‪.‬‬
‫ترکیبهای گوناگون انتخابهای فوق منجر به ایجاد مدلهای مختلفی در ‪ PRAM‬خواهد شد که در‬ ‫•‬
‫زیر توصیف شدهاند‪ .‬چون ‪ CR‬مشکل تداخل ایجاد نخواهد کرد‪ ،‬روشها بیشتر در چگونگی راه اندازی‬
‫تداخل زمان نوشتن متفاوتند‪.‬‬

‫‪P1‬‬

‫‪P2‬‬
‫حافظه‬
‫همزمانی محکم‬
‫مشترک‬
‫‪Pn‬‬

‫شکل ‪ :17-1‬مدل ‪ PRAM‬از یک سیستم چندپردازنده با حافظه اشتراکی‪ ،‬که همه ‪ n‬پردازنده در مرحله قفل در دسترسی‬
‫حافظه و اجرای عملیات برنامه عمل میکنند‪ .‬هر پردازنده میتواند به هر مکان حافظه در واحد زمان دسترسی پیدا کند‪.‬‬

‫‪1‬‬
‫‪Exclusive read‬‬
‫‪2‬‬
‫‪Concurrent Read‬‬
‫کانون نشر علوم‬ ‫‪| 54‬‬

‫انواع ‪ :PRAM‬در زیر ‪ 4‬نوع مختلف از مدل ‪ PRAM‬براساس اینکه چگونه خواندنها و نوشتنهای حافظه‬
‫مدیریت میشوند‪ ،‬توصیف شدهاند‪.‬‬

‫مدل ‪ : ER-EW PRAM‬این مدل از خواندن و نوشتن همزمان بیشتر از یک پردازنده به سلول‬ ‫‪.1‬‬
‫حافظه بطور همزمان جلوگیری میکند‪ .‬این محدود کنندهترین مدل ‪ PRAM‬پیشنهاد شده است‪.‬‬
‫مدل ‪ :CR-ER PRAM‬تداخلهای نوشتن با انحصار متقابل جلوگیری میشود‪ .‬خواندن همزمان از‬ ‫‪.2‬‬
‫مکان حافظه مشابه مجاز است‪.‬‬
‫مدل ‪ : ER-CW PRAM‬این مدل اجازه خواندن منحصر و نوشتن همزمان در مکان مشابهی از‬ ‫‪.3‬‬
‫حافظه را میدهد‪.‬‬
‫مدل ‪ :CR-CW PRAM‬این مدل خواندن و نوشتن همزمان در یک زمان را اجازه میدهد‪ .‬تداخالت‬ ‫‪.4‬‬
‫نوشتن توسط یکی از ‪ 4‬سیاست زیر اجتناب میشود‪:‬‬
‫مشترک‪ :‬همه نوشتنهای همزمان مقادیر مشابهی را در یک نقطه داغ حافظه مینویسند‪.‬‬ ‫•‬
‫داوری‪ :‬فقط یک داده نوشته شده باقی میماند و بقیه نادیده گرفته میشوند‪.‬‬ ‫•‬
‫حداقل‪ :‬مقدار نوشته شده توسط پردازنده با حداقل اندیس باقی خواهد ماند‪.‬‬ ‫•‬
‫اولویت‪ :‬مقادیر نوشته شده ترکیب میشوند با بعضی توابع انجمنی مثل جمع یا ماکزیمم‪.‬‬ ‫•‬

‫مدل ‪ PRAM‬در حقیقت وجود ندارد‪ .‬تنها مدلی ایدهآل برای مقایسه سنجش کارایی سایر مدلها میباشد‪.‬‬

‫‪ -5-1‬مقیاس پذیری کارایی ترانزیستور و سیم ها‪ :‬پردازههای مدار مجتمع توسط خصوصیت اندازه یعنی‬
‫اندازه ترانزیستور یا سیمها روی محور ‪ x‬یا ‪ y‬طبقه بندی میشوند‪ .‬اندازه ترانزیستورها از ‪ 10‬میکرون در سال ‪1971‬‬
‫به ‪ 0.032‬میکرون در سال ‪ 2011‬کاهش یافته است‪ .‬به عبارتی در سال ‪ ،2011‬واحد ‪ 32‬نانومتر مطرح شده است‬
‫و تراشههای ‪22‬نانومتری نیز در حال ساخت هستند‪.‬‬

‫‪ -1-5-1‬اهداف توان مصرفی و انرژی در مدارات مجتمع‪ :‬توان مهمترین چالش پیش روی طراحان کامپیوتر‬
‫در هر نوع کامپیوتر میباشد‪ .‬ا والً‪ :‬توان باید به داخل تراشه آورده شود و در آن توزیع شود‪ .‬ریزپردازندههای مدرن‬
‫صدها پین و چندین الیه اتصالی فقط برای پاور و زمین استفاده میکنند‪ .‬ثانیاً‪ :‬توان بصورت گرما تلف میشود و‬
‫باید حذف شود‪.‬‬

‫چگونه یک معمار سیستم یا یک کاربر راجع به کارایی‪ ،‬توان و انرژی باید فکر کند؟ از دید طراح سیستم سه مفهوم‬
‫اولیه وجود دارد‪:‬‬

‫‪ .1‬حداکثر توانی که یک پردازنده نیاز دارد چقدر است؟‬


‫‪ .2‬مصرف توان طویل المدت چقدر است؟ هزینه سرد سازی چقدر است؟‬
‫‪ .3‬فاکتور سوم انرژی و بازدهی انرژی است‪.‬‬
‫‪ -2-5-1‬انرژی و توان داخل یک ریزپردازنده‪ :‬برای تراشههای ‪ ،CMOS‬مصرف انرژی اولیه در ترانزیستورهای‬
‫سوئیچ (انرژی پویا) میباشد‪.‬‬

‫‪Energydynamic∝Capacitive Load×Vlotage2‬‬ ‫(‪)1-12‬‬

‫این انرژی مصرفی یک ترانزیستور برای تغییر دو سطح یعنی ‪ 0→1→0‬یا ‪ 1→0→1‬میباشد‪ .‬میزان این انرژی‬
‫برای انتقال از ‪ 0→1‬یا ‪ 1→0‬نصف است یعنی‪:‬‬
‫‪1‬‬
‫‪Energydynamic∝ 2Capacitive Load×Vlotage2‬‬ ‫(‪)1-13‬‬

‫توان مصرفی نیز بصورت زیر تعریف میشود‪:‬‬

‫(‪PowerdynamicαCapacitive Load×Vlotage2×Frequency Switched )1-14‬‬

‫برای یک کار ثابت‪ ،‬کاهش نرخ ساعت باعث کاهش توان مصرفی میشود نه انرژی‪.‬‬

‫بوضوح مشخص است که کاهش ولتاژ باعث افت توان و انرژی مصرفی میشود‪ .‬بنابراین در ‪ 20‬سال اخیر ولتاژ از‬
‫‪ 5‬ولت به ‪1‬ولت کاهش یافته است‪ .‬بار خازنی تابعی از تعداد ترانزیستورهای متصل به خروجی و تکنولوژی میباشد‬
‫که مشخص کننده خازن سیمها و ترانزیستورها است‪.‬‬

‫مثال ‪ :9-1‬امروزه بعضی ریزپردازندهها برای داشتن ولتاژ قابل تطبیق ساخته شدهاند‪ ،‬بنابراین ‪ ٪15‬کاهش در‬
‫ولتاژ ممکن است باعث ‪ ٪15‬کاهش در فرکانس شود‪ .‬تأثیر آن در توان و انرژی مصرفی چیست؟‬
‫پاسخ‪ :‬چون خازن بدون تغییر است‪ ،‬بنابراین اثر آن بر انرژی متناسب با ولتاژ است‪.‬‬
‫𝑤𝑒𝑛𝑦𝑔𝑟𝑒𝑛𝐸‬ ‫‪(𝑣𝑜𝑙𝑡𝑎𝑔𝑒×0.85)2‬‬
‫=‬ ‫‪= 0.852 = 0.72‬‬
‫𝑑𝑙𝑜𝑦𝑔𝑟𝑒𝑛𝐸‬ ‫‪𝑣𝑜𝑙𝑡𝑎𝑔𝑒 2‬‬
‫بنابراین انرژی ‪ 0.72‬انرژی اولیه است و کاهش دارد‪ .‬برای توان مصرفی باید اثر فرکانس را نیز در نظر گرفت‪:‬‬
‫𝑤𝑒𝑛𝑟𝑒𝑤𝑜𝑃‬ ‫‪𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 𝑠𝑤𝑖𝑡𝑐ℎ𝑒𝑑×0.85‬‬
‫× ‪= 0.72‬‬ ‫‪= 0.61‬‬
‫𝑑𝑙𝑜𝑟𝑒𝑤𝑜𝑃‬ ‫𝑑𝑒‪𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 𝑠𝑤𝑖𝑡𝑐ℎ‬‬
‫که توان به ‪ 61‬درصد افت کاهش مییابد‪.‬‬

‫افزایش تعداد ترانزیستورهای سوئیچ و فرکانس بر کاهش میزان ولتاژ و بار خازنی غلبه میکند بنابراین باعث افزایش‬
‫توان و انرژی مصرفی میشود‪ .‬اولین ریزپردازنده یک وات توان مصرف میکرد و اولین پردازنده ‪ 32‬بیتی (‪386‬‬
‫اینتل) دو وات توان مصرف میکرد درحالیکه اینتل ‪ Corei7‬با فرکانس ‪ 130 ،3.3GHZ‬وات توان مصرف‬
‫میکند‪ .‬این باعث گرمایی در ابعاد ‪ 1.5‬سانتیمتری پردازنده می شود که باید از آن حذف شود و با سرد کردن از‬
‫طریق جریان هوا حذف میشود‪.‬‬

‫باتوجه به معادله فوق باید انتظار داشته باشیم که در صورتی که نتوانیم ولتاژ یا افزایش توان به ازای هر تراشه را‬
‫کاهش دهیم نرخ افزایش ساعت باید کاهش یابد‪ .‬شکل ‪ 18-1‬این اثر را نشان میدهد که تا سال ‪ 2003‬میزان‬
‫افزایش ساعت زیاد بوده است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 56‬‬

‫توزیع توان‪ ،‬حذف گرما‪ ،‬و اجتناب از نقاط داغ‪ ،‬چالشهای مشکلی شدهاند‪ .‬در حال حاضر عمدهترین محدودیت‬
‫استفاده از ترانزیستورها است‪ .‬بنابراین ریزپردازندههای مدرن تکنیکهای زیادی برای بهبود استفاده مفید از انرژی‬
‫درمقایسه با استفاده از نرخ ساعت یکنواخت و ولتاژ تغذیه ثابت استفاده میکنند‪:‬‬

‫‪ .1‬همه چیز را تمام و کمال استفاده نکنید‪ :‬اکثر ریزپردازندههای امروزی ساعت ماژولهای غیرفعال را‬
‫به منظور صرفهجویی در انرژی و توان پویا خاموش میکنند‪ .‬به عنوان مثال اگر هیچ دستور ممیز شناوری در‬
‫حال اجرا نیست‪ ،‬ساعت واحد ممیز شناور غیرفعال میشود‪ .‬اگر بعضی هستهها بیکارند ساعت آنها متوقف‬
‫میشود‪.‬‬

‫شکل ‪ :18-1‬افزایش نرخ ساعت در چند ریزپردازنده‪ .‬بین سالهای ‪ 1978‬تا ‪ 1986‬نرخ ساعت هر سال کمتر از ‪ ٪15‬در سال رشد‬
‫میکرد در حالیکه کارایی ‪ ٪25‬در سال افزایش مییافت‪ .‬بین سالهای ‪ 1986‬تا ‪ 2003‬کارایی ‪ ٪52‬در سال زیاد شد و نرخ ساعت‬
‫‪ 40٪‬افزایش یافت‪ .‬بعد از آن تاکنون نرخ ساعت تقریباً خطی بوده است و هر سال ‪ ٪1‬رشد داشته است در حالیکه کارایی هر‬
‫پردازنده تک حدود ًا ‪ ٪22‬در سال رشد داشته است‪.‬‬

‫‪ .2‬مقیاسپذیری فرکانس‪-‬ولتاژ پویا‪ :1‬این تکنیک مستقیماً از فرمول فوق میآید‪ .‬به عنوان مثال‬
‫دستگاههای موبایل و لپتاپها و حتی سرورها‪ ،‬دورههای زمانی با فعالیت کم دارند و نیازی ندارند تا با حداکثر‬
‫نرخ ساعت کار کنند‪ .‬ریزپردازندههای مدرن معموالً فرکانس ساعت و ولتاژ کمی را پیشنهاد میکنند که توان‬
‫و انرژی کمتری استفاده میکنند‪ .‬به عنوان مثال یک سرور میتواند سه نرخ ساعت مختلف ‪2.4GHz,‬‬

‫‪1‬‬
‫)‪Dynamic Voltage-Frequency Scaling (DVFS‬‬
‫‪ 1.8GHz, 1Ghz‬را تهیه کند و وقتی بار کاری افت میکند با نرخ کمتر کار میکند و حدود ‪ 10‬تا ‪15‬‬
‫درصد در مصرف توان صرفهجویی میکند‪.‬‬
‫‪ .3‬طراحی برای حالت خاص‪ :‬چون ‪PMD‬ها و لپتاپها اغلب بیکارند‪ ،‬حافظهها و حافظههای جانبی‬
‫مُدهای توان کم را برای صرفهجویی انرژی پیشنهاد میکنند‪ .‬مثالً ‪DRAM‬ها مُدهای توان مصرفی کم‬
‫دارند تا عمر باتری را برای لپتاپها و ‪PMD‬ها توسعه دهند‪.‬‬
‫‪ :Overclocking .4‬اینتل مد توربو را در سال ‪ 2008‬پیشنهاد کرد که تراشه تصمیم میگیرد که اجرا با نرخ‬
‫ساعت باالتر برای زمان کوتاهی در بعضی هستهها انجام شود قبل از اینکه دما شروع به اضافه شدن کند‪.‬‬
‫به عنوان مثال ‪ 3.3GHz Corei7‬در دورههای کوتاه و انفجاری میتواند با ساعت ‪ 3.6GHZ‬کار کند‪.‬‬
‫از سال ‪ 2008‬ریزپردازندهها اجازه اورکالکینگ تا ‪ ٪10‬باالتر از ساعت اصلی سیستم را میدهند‪ .‬برای کدهای‬
‫یک نخی سیستمها میتوانند همه هستههای بیکار را خاموش کنند و بجای آن یک هسته با ساعت باالتر‬
‫کار کند‪ .‬سیستم عامل میتواند این مُد را غیر فعال کند‪.‬‬

‫هرچند که توان مصرفی پویا عمدهترین توان مصرفی سیستم است اما وقتی ترانزیستور خاموش است توان مصرفی‬
‫ایستا است و بصورت زیر تعریف میشود‪:‬‬

‫‪Powerstatic∝Currentstatic×Voltage‬‬
‫توان ایستا متناسب با تعداد دستگاهها میباشد‪.‬‬

‫‪ -3-5-1‬هزینه‪ :‬هزینه برای اکثر سیستمها بجز سیستمهای سوپرکامپیوتر فاکتور مهمی است و نقش تعیین کننده‬
‫در بازار رقابت دارد‪ .‬طراح هوشمند کامپیوتر باید هزینه را در نظر بگیرد و فاکتور کارایی‪/‬هزینه را بهینه کند‪:‬‬

‫هزینه بسته بندی و تست نهایی‪+‬هزینه تست𝑒𝑖𝑑‪+‬هزینه‪die‬‬


‫= هزینه مدار مجتمع‬ ‫(معادله ‪)15-1‬‬
‫بازدهی تست نهایی)𝑑𝑙𝑒𝑖𝑦(‬

‫در این قسمت روی هزینه ‪ die1‬تمرکز میکنیم‪ .‬برای اینکه بتوانیم تعداد تراشههای سالم روی یک ویفر را تخمین‬
‫بزنیم ابتدا باید بدانیم چه تعداد ‪ die‬در هر ویفر قرار میگیرد و چه درصدی از آنها درست کار میکنند‪.‬‬
‫‪𝑤𝑎𝑓𝑒𝑟 price‬‬
‫(معادله ‪ )16-1‬هزینه 𝑒𝑖𝑑 =‬
‫𝑟𝑒𝑓𝑎𝑤 𝑟𝑒𝑝 𝑒𝑖𝑑 𝑓𝑜 𝑟𝑒𝑏𝑚𝑢𝑛×𝑑𝑙𝑒𝑖𝑦 𝑒𝑖𝑑‬

‫تعداد ‪ die‬در هر ویفر تقریباً برابر با سطح ویفر تقسیم بر مساحت ‪ die‬است و تخمین دقیق آن بصورت زیر است‪:‬‬
‫‪𝜋×(𝑤𝑎𝑓𝑒𝑟 𝑑𝑖𝑎𝑚𝑒𝑡𝑒𝑟/2)2‬‬ ‫𝑟𝑒𝑡𝑒𝑚𝑎𝑖𝑑 𝑟𝑒𝑓𝑎𝑤×𝜋‬
‫= 𝑟𝑒𝑓𝑎𝑤 𝑟𝑒𝑝 𝑒𝑖𝑑 𝑓𝑜 𝑟𝑒𝑏𝑚𝑢𝑛‬ ‫‪−‬‬ ‫(معادله ‪)17-1‬‬
‫𝑎𝑒𝑟𝑎 𝑒𝑖𝐷‬ ‫𝑎𝑒𝑟𝑎 𝑒𝑖𝐷×‪√2‬‬

‫بخش اول حاصل تقسیم مساحت ویفر بر مساحت دای است و بخش دوم فضای پرت هدر رفته بین دایها میباشد‪.‬‬

‫‪ 1‬قطعه نازک مستطیلى از یک قرص نیمه هادى سیلیکان که به هنگام ساخت مدارهاى مجتمع بریده شده یا الیه الیه مى گردد‬
‫کانون نشر علوم‬ ‫‪| 58‬‬

‫مثال ‪ :10-1‬تعداد ‪die‬ها در یک ویفر ‪30( 300mm‬سانتیمتری) برای دایهای با اندازه ضلع ‪ 1.5cm‬و‬
‫‪1cm‬ی را بیابید‪:‬‬
‫‪2‬‬
‫پاسخ‪ :‬وقتی مساحت ‪ 2.25cm ،die‬باشد داریم‪:‬‬
‫‪30‬‬
‫‪𝜋×( )2‬‬ ‫‪𝜋×30‬‬
‫‪2‬‬
‫‪Die per wafer= 2.25 −‬‬ ‫‪= 270‬‬
‫‪√2×2.25‬‬
‫چون مساحت ‪ die‬بزرگتر ‪ 2.25‬برابر دایِ کوچکتر است تقریباً انتظار داریم تعداد ‪ die‬ها در ویفر‪ 2.25 ،‬بیشتر‬
‫باشد‪ .‬برای مساحت ‪ die‬برابر ‪ 1cm2‬داریم‪:‬‬
‫‪30‬‬
‫‪𝜋×( )2‬‬ ‫‪𝜋×30‬‬
‫‪2‬‬
‫=‪Die per wafer‬‬ ‫‪−‬‬ ‫‪= 640‬‬
‫‪1‬‬ ‫‪√2×1‬‬
‫فرمول فوق تعداد ‪die‬ها در هر ویفر را میدهد ولی سؤال این است که چه تعداد از ‪ die‬ها درست کار خواهند کرد‪.‬‬
‫یا به عبارتی بازدهی ‪ die‬چقدر است؟ چون غبار بصورت پراکنده روی سطح ویفر توزیع شده است بنابراین بازدهی‬
‫کارخانه به میزان غبار روی ویفر وابسته است‪ .‬بنابراین داریم‪:‬‬

‫‪𝑤𝑎𝑓𝑒𝑟 𝑦𝑖𝑒𝑙𝑑 × 1‬‬


‫= 𝑑𝑙𝑒𝑖𝑦 𝑒𝑖𝐷‬ ‫𝑁)𝑎𝑒𝑟𝑎 𝑒𝑖𝐷 × 𝑎𝑒𝑟𝑎 𝑡𝑖𝑛𝑢 𝑟𝑒𝑝 𝑡𝑐𝑒𝑓𝑒𝐷 ‪⁄(1 +‬‬ ‫(معادله ‪)18-1‬‬

‫که در آن ‪ N‬پیچیدگی پردازنده میباشد‪.‬‬

‫مثال ‪ :11-1‬بازدهی ‪ die‬برای دایهای با طول ضلع ‪ 1.5‬و ‪ 1‬سانتی متر را بیابید‪ .‬فرض کنید چگالی غبار‬
‫‪ 0.031‬در هر سانتیمتر مربع است و ‪ N‬مقدار ‪ 13.5‬داشته باشد‪.‬‬
‫پاسخ‪ :‬مساحت دایها ‪ 2.25‬و ‪ 1‬سانتی متر مربع است‪ .‬برای دای با مساحت ‪ 2.25‬سانتی متر مربع داریم‪:‬‬
‫‪1‬‬
‫‪𝑑𝑖𝑒 𝑦𝑒𝑖𝑙𝑑 = (1+0.031×2.25)13.5 = 0.40‬‬
‫برای دای با مساحتِ ‪ 1‬سانتی متر مربع داریم‪:‬‬
‫‪1‬‬
‫= 𝑑𝑙𝑖𝑒𝑦 𝑒𝑖𝑑‬ ‫‪(1+0.031×1.00)13.5‬‬
‫‪= 0.66‬‬
‫یعنی نصف دایهای بزرگ خوب هستند و دو سوم دایهای کوچک خوب هستند‪.‬‬
‫‪ -4-5-1‬قابلیت اطمینان‬
‫از لحاظ تاریخی‪ ،‬مدارت مجتمع یکی از قابل اطمینانترین اجزای یک کامپیوتر میباشند‪ .‬هرچندکه پینهایشان‬
‫ممکن است آسیبپذیر باشند‪ ،‬و ممکن است روی کانالهای ارتباطی خطا اتفاق بیافتد‪ ،‬نرخ خطا داخل تراشه خیلی‬
‫کم بوده است‪ .‬اما با ظهور اندازه ‪ 32‬نانومتر و کمتر این مطلب تغییر کرده است و هر دو خطاهای انتقالی و دائمی‬
‫رایجتر شدهاند‪ ،‬بنابراین معماران باید سیستمی طراحی کنند که از عهده این چالشها برآید‪.‬‬

‫کامپیوترها در سطوح انتزاعی مختلفی طراحی و ساخته میشوند‪ .‬میتوانیم این پردازه را بطور بازگشتی از سطح باال‬
‫به پایین تکرار کنیم تا به پایینترین سطح یعنی ترانزیستورها برسیم‪ .‬هرچندکه بعضی خطاها مثل نبود توان گسترده‬
‫هستند‪ ،‬بسیاری می توانند به یک جزء تک در یک ماژول محدود شوند‪ .‬بنابراین یک خطای فاحش در یک ماژول‬
‫در یک سطح ممکن است به ندرت به عنوان خطای یک قطعه در یک ماژول سطح باالتر دیده شود‪ .‬این تمایز‬
‫برای پیداکردن راهی برای ساختن قطعات قابل اطمینان مفید است‪.‬‬

‫یک سؤال مشکل تصمیمگیری راجع به این است که چه موقع یک سیستم درست کار میکند‪ .‬این نکته فلسفی با‬
‫رایج شدن سرویس اینترنت درهم آمیخته شده است‪ .‬تهیه کنندههای زیرساختارها شروع به ارائه کردن توافقنامههای‬
‫سطح سرویس‪ 1‬یا هدف سطح سرویس‪ 2‬کردهاند تا تضمین دهند که شبکهشان یا سرویس توانشان قابل اطمینان‬
‫است‪ .‬به عنوان مثال‪ ،‬آنها به مشتری در صورتی که سرویسشان بیشتر از چند ساعت در ماه کار نکرد خسارت‬
‫میدهند‪ .‬بنابراین‪ SLA ،‬میتواند براساس تصمیم اینکه چه موقع سیستم در حال کار یا خطادار است استفاده شود‪.‬‬

‫سیستمها نسبت به ‪ SLA‬متناوباً بین دو حالت تغییر میکنند‪:‬‬


‫‪ .1‬پیشرفت سرویس‪ ،‬کجا سرویس بطور قابل انتظار کار میکند‪.‬‬
‫‪ .2‬توقف سرویس‪ ،‬کجا سرویس ارائه شده از ‪ SLA‬متفاوت است‪.‬‬
‫انتقال بین این دو حالت با وقوع خطاها میافتد (از حالت ‪ 1‬به حالت ‪ )2‬یا ترمیم (حالت ‪ 2‬به حالت ‪ )1‬اتفاق میافتد‪.‬‬
‫کمیت سنجی این دو حالت منجر به دو واحد اصلی قابلیت اطمینان میشود‪:‬‬

‫قابلیت اطمینان ماژول واحدِ امتداد پیشرفت سرویس (یا زمان تا خطا) از نمونه اولیه مرجع است‪ .‬بنابراین‪،‬‬ ‫•‬
‫متوسط زمان تا خطا‪ 3‬واحد سنجش قابلیت اطمینان است‪ .‬معکوس ‪ MTTF‬نرخ خطا میباشد‪ ،‬که با تعداد‬
‫خطا در هر میلیارد ساعت از عملیات یا ‪( FIT4‬خطاها در زمان) سنجیده میشود‪ .‬بنابراین یک ‪MTTF‬‬
‫با مقدار ‪1000000‬ساعت برابر با ‪ 109/106‬یا ‪ 1000FIT‬میباشد‪ .‬توقف سرویس با میانگین زمان تا‬
‫تعمیر‪ 5‬سنجیده میشود‪ .‬میانگین زمان بین خطاها‪ 6‬جمع ‪ MTTF+MTTR‬میباشد‪ .‬هرچندکه‬
‫‪ MTBF‬بطور گسترده استفاده میشود‪ ،‬اما ‪ MTTF‬واحد مناسبتری میباشد‪ .‬اگر مجموعهای از‬
‫ماژول ها زمان عمر توزیع شده نمایی داشته باشند یعنی سن یک ماژول در احتمال خطا مهم نباشد‪ ،‬نرخ‬
‫خطای کلی مجموعه جمع نرخهای خطای ماژولها میباشد‪.‬‬
‫قابل دسترس بودن ماژول‪ ،‬واحدی از پیشرفت سرویس نسبت به تعویض بین دو حالت پیشرفت و توقف‬ ‫•‬
‫میباشد‪ .‬برای سیستمهای غیر قابل اعتماد با تعمیر‪ ،‬قابل دسترس بودن عبارت است از‪:‬‬
‫𝐹𝑇𝑇𝑀‬
‫(معادله‪Module availability=(𝑀𝑇𝑇𝐹+𝑀𝑇𝑇𝑅) )19-1‬‬

‫‪1‬‬
‫)‪Service Level Agreement (SLA‬‬
‫‪2‬‬
‫)‪Service Level Objective (SLO‬‬
‫‪3‬‬
‫)‪Mean time to failure (MTTF‬‬
‫‪4‬‬
‫‪Failure in time‬‬
‫‪5‬‬
‫)‪Mean Time to repair (MTTR‬‬
‫‪6‬‬
‫)‪Mean time between failures(MTBF‬‬
‫کانون نشر علوم‬ ‫‪| 60‬‬

‫نکته اینکه قابلیت اطمینان و قابل دسترس بودن اکنون واحدهای قابل سنجش میباشند‪ .‬از این تعاریف میتوانیم‬
‫قابلیت اطمینان یک سیستم را بطور کمّی تخمین بزنیم اگر از قابلیت اطمینان اجزاء مطلع باشیم و خطاها مستقل‬
‫از هم باشند‪.‬‬

‫مثال ‪ :12-1‬یک زیرسیستم دیسک با اجزاء و ‪ MTTF‬زیر در نظر بگیرید‪:‬‬


‫• ‪ 10‬دیسک‪ ،‬هر کدام با ‪1000000‬ساعت ‪. MTTF‬‬
‫• یک کنترل کننده ‪ ATA‬با ‪500000‬ساعت ‪.MTTF‬‬
‫• یک منبع تغذیه با ‪200000‬ساعت ‪.MTTF‬‬
‫• یک فن با ‪200000‬ساعت ‪.MTTF‬‬
‫• یک کابل ‪ ATA‬با ‪1000000‬ساعت ‪.MTTF‬‬
‫با فرض اینکه زمان عمر بصورت نمایی توزیع شده است و خطاها مستقل هستند‪ MTTF ،‬کل زیر سیستم را‬
‫محاسبه کنید‪.‬‬
‫پاسخ‪ :‬جمع نرخهای خطا عبارتند از‪:‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪Failure‬‬ ‫= ‪ratesystem=10 × 1000000 + 500000 + 200000 + 200000 + 1000000‬‬
‫‪23‬‬ ‫‪23000‬‬
‫𝑠𝑟𝑢𝑜‪= 1000000000ℎ‬‬
‫‪1000000‬‬
‫یا ‪ MTTF .23000FIT‬معکوس نرخ خطا است بنابراین‪:‬‬
‫‪1‬‬ ‫‪1000000000‬‬
‫= 𝑚𝑒𝑡𝑠𝑦𝑠𝐹𝑇𝑇𝑀‬ ‫=‬ ‫𝑠𝑟𝑢𝑜‪= 43500 ℎ‬‬
‫𝑚𝑒𝑡𝑠𝑦𝑠𝑒𝑡𝑎𝑟 𝑒𝑟𝑢𝑙𝑖𝑎𝐹‬ ‫‪23000‬‬
‫یا ‪ 5‬سال‪.‬‬

‫اولین راه مقابله با خطا‪ ،‬افزونگی چه در زمان (تکرار عمل تا ببینیم که آیا هنوز سیستم خطادار است) یا منابع (داشتن‬
‫اجزاء یدکی تا درصورت خطادار شدن یکی‪ ،‬آنرا جایگزین کنیم) میباشد‪ .‬وقتی که جزء جایگزین شد و سیستم‬
‫کامالً تعمیر شد‪ ،‬قابلیت اطمینان سیستم بخوبی یک سیستم جدید فرض میشود‪ .‬اجازه دهید مزایای افزونگی را با‬
‫یک مثال بسنجیم‪.‬‬

‫مثال ‪ :13-1‬اغلب زیرسیستمهای دیسک منابع تغذیه افزونه دارند تا قابلیت اطمینان را بهبود دهند‪ .‬با استفاده از‬
‫اجزاء و ‪ MTTF‬مثال فوق‪ ،‬قابلیت اطمینان را باداشتن منابع تغذیه یدکی (افزونه) محاسبه کنید‪ .‬فرض کنید منبع‬
‫تغذیه برای راهاندازی زیرسیستم دیسک کافی است و یک منبع تغذیه افزونه وجود دارد‪.‬‬
‫پاسخ‪ :‬ما نیازمند فرمولی هستیم که نشان دهد چه چیزی مورد انتظار است وقتیکه ما بتوانیم یک خطا را تحمل‬
‫کنیم و سرویس هنوز فراهم باشد‪ .‬برای سادگی محاسبه‪ ،‬فرض میکنیم که زمان عمر اجزاء بصورت نمایی توزیع‬
‫شده است و وابستگی بین خطاهای اجزاء وجود ندارد‪ MTTF .‬برای منبع تغذیه یدکیمان میانگین زمانی است که‬
‫یک منبع تغذیه خطادار می شود تقسیم بر شانس خطادار شدن منبع تغذیه یدکی قبل از اینکه منبع تغذیه اولی‬
‫جایگزین شود‪ .‬بنابراین‪ ،‬اگر شانس خطای دومی قبل از تعمیر کم باشد‪ MTTF ،‬دو منبع زیاد است‪.‬‬
‫چون دو منبع تغذیه داریم و خطاها مستقل هستند‪ ،‬میانگین زمان تا وقتیکه یک دیسک خطا بدهد ‪MTTFpower‬‬
‫‪ supply/2‬میباشد‪ .‬یک تخمین خوب از احتمال خطای دوم ‪ MTTR‬روی میانگین زمانی تا وقتیکه منبع تغذیه‬
‫خطا بدهد میباشد‪ .‬بنابراین‪ ،‬یک تخمین قابل قبول برای یک زوج افزونه منبع تغذیه برابر است با‪:‬‬
‫‪𝑀𝑇𝑇𝐹𝑝𝑜𝑤𝑒𝑟 𝑠𝑢𝑝𝑝𝑙𝑦 ⁄2‬‬ ‫‪𝑀𝑇𝑇𝐹2‬‬
‫𝑦𝑙𝑝𝑝𝑢𝑠 𝑟𝑒𝑤𝑜𝑝‬
‫=‪MTTFpower supply pair‬‬ ‫𝑦𝑙𝑝𝑝𝑢𝑠 𝑟𝑒𝑤𝑜𝑝𝑅𝑇𝑇𝑀‬ ‫𝑅𝑇𝑇𝑀×‪= 2‬‬ ‫(معادله ‪)20-1‬‬
‫𝑦𝑙𝑙𝑝𝑢𝑠 𝑟𝑒𝑤𝑜𝑝‬
‫𝑦𝑙𝑝𝑝𝑢𝑆 𝑟𝑒𝑤𝑜𝑝𝐹𝑇𝑇𝑀‬

‫با استفاده از اعداد مثال فوق و با فرض اینکه بطور متوسط ‪ 24‬ساعت طول بکشد تا اپراتور بفهمد یک منبع تغذیه‬
‫خطا داده است و آنرا جایگزین کند‪ ،‬قابلیت اطمینان دو منبع تغذیه برابر است با‪:‬‬
‫‪MTTF2‬‬ ‫‪2000002‬‬
‫= ‪MTTFpower suplly = 2×MTTRpower supply‬‬ ‫‪= 830000000‬‬
‫‪power supply‬‬ ‫‪2×24‬‬
‫که باعث میشود دو منبع ‪ 4150‬برابر از یک منبع تغذیه تنها مطمئنتر باشد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 62‬‬

‫تمرینات فصل اول‬

‫مسأله ‪ -1-1‬یک پردازنده ‪ 40MHz‬برای اجرای یک برنامه محک با ترکیب دستورات و تعداد پالسهای‬
‫ساعت زیر استفاده میشود‪.‬‬

‫نوع دستورالعمل تعداد دستورالعمل تعداد پالس ساعت‬


‫‪1‬‬ ‫‪45000‬‬ ‫ریاضی صحیح‬
‫‪2‬‬ ‫‪32000‬‬ ‫انتقال داده‬
‫‪2‬‬ ‫‪15000‬‬ ‫ممیز شناور‬
‫‪2‬‬ ‫‪8000‬‬ ‫انتقال کنترل‬
‫‪ CPI‬مؤثر و نرخ ‪ MIPS‬و زمان اجرای این برنامه را مشخص کنید‪.‬‬

‫مسأله ‪ -2-1‬توضیح دهید چگونه مجموعه دستورالعمل‪ ،‬تکنولوژی کامپایلر‪ ،‬پیادهسازی پردازنده و کنترل‪ ،‬و‬
‫سلسله مراتب حافظه و حافظه نهان بر کارایی تأثیر میگذارند و تأثیرات را بر اساس طول برنامه‪ ،‬نرخ ساعت و‬
‫‪ CPI‬مؤثر توضیح دهید‪.‬‬

‫مسأله ‪ -3-1‬یک ایستگاه کاری یک پردازنده ‪ 15MHz‬با نرخ ادعا شده ‪ 10MIPS‬را برای اجرای یک‬
‫برنامه ترکیبی استفاده میکند‪ .‬فرض کنید هر دسترسی حافظه یک پالس ساعت تأخیر دارد‪.‬‬
‫(الف) ‪ CPI‬مؤثر این کامپیوتر چیست؟‬
‫(ب) فرض کنید که پردازنده به ساعت ‪ 30MHz‬ارتقا یابد‪ .‬اما سرعت زیر سیستم حافظه بدون تغییر بماند و در‬
‫نتیجه دو پالس ساعت برای هر دسترسی حافظه مورد نیاز است‪ .‬اگر ‪ ٪30‬دستورات نیازمند ‪ 1‬دسترسی حافظه و‬
‫‪ 5٪‬دیگر نیازمند دو دسترسی حافظه برای هر دستور داشته باشند‪ ،‬کارایی پردازنده ارتقا یافته با یک مجموعه‬
‫دستورالعمل سازگار و تعداد دستور برابر در یک برنامه داده شده چیست؟‬

‫مسأله ‪ -4-1‬اجرای یک کد با ‪ 200000‬دستور را در یک پردازنده ‪ 40MHz‬در نظر بگیرید‪ .‬برنامه از ‪ 4‬نوع‬


‫دستور تشکیل شده است‪ .‬ترکیب و تعداد پالسهای (‪ )CPI‬مورد نیاز برای هر نوع دستور در جدول زیر داده شده‬
‫است‪:‬‬
‫‪ CPI‬ترکیب دستورالعمل‬ ‫نوع دستورالعمل‬
‫‪60٪‬‬ ‫‪1‬‬ ‫ریاضی و منطق‬
‫‪18٪‬‬ ‫‪2‬‬ ‫‪ Load/store‬با اصابت حافظه نهان‬
‫‪12٪‬‬ ‫‪4‬‬ ‫پرش‬
‫‪10٪‬‬ ‫‪8‬‬ ‫مراجعه به حافظه با فقدان حافظه نهان‬
‫(الف)میانگین ‪ CPI‬را وقتیکه برنامه روی یک محیط تک پردازنده اجرا میشود محاسبه کنید‪.‬‬
‫(ب) ‪ MIPS‬مرتبط با ‪ CPI‬بدست آمده در قسمت (الف) را بدست آورید‪.‬‬
‫مسأله ‪ -5-1‬با دلیل یا مثال بیان کنید که کدام یک از عبارات زیر درست یا غلط هستند‪.‬‬

‫(الف) محاسبات پردازنده و عملیات ورودی‪/‬خروجی در یک کامپیوتر چندبرنامه نویسی شده نمیتوانند همپوش شوند‪.‬‬
‫(ب) همزمانی همه ‪PE‬ها در یک کامپیوتر ‪ SIMD‬توسط سخت افزار نسبت به نرم افزار انجام میشود همانطور‬
‫که در اغلب کامپیوترهای ‪ MIMD‬اتفاق میافتد‪.‬‬
‫(ج) تا آنجا که مربوط به برنامه پذیری میشود‪ ،‬چندپردازندههای حافظه‪-‬مشترک ارتباطات بین پردازندهای سادهتری‬
‫را نسبت به چندکامپیوترهای ارسال پیام پشتیبانی میکنند‪.‬‬
‫(د) در یک کامپیوتر ‪ ،MIMD‬همه پردازندهها باید دستور مشابهی را در یک زمان بطور همزمان اجرا کنند‪.‬‬
‫(ه) تا آنجا که مقیاسپذیری مدنظر باشد‪ ،‬چندکامپیوترها با حافظه توزیع شده از چندپردازندههای حافظه‪-‬مشترک‬
‫مقیاسپذیرترند‪.‬‬

‫مسأله ‪ -6-1‬زمانهای اجرای ‪ 4‬برنامه برحسب ثانیه روی سه کامپیوتر در جدول زیر نشان داده شده است‪.‬‬

‫زمان اجرا (برحسب ثانیه)‬ ‫برنامه‬


‫کامپیوتر ‪ A‬کامپیوتر ‪ B‬کامپیوتر ‪C‬‬
‫‪20‬‬ ‫‪10‬‬ ‫برنامه ‪1 1‬‬
‫‪20‬‬ ‫‪100‬‬ ‫برنامه ‪1000 2‬‬
‫‪50‬‬ ‫‪1000‬‬ ‫برنامه ‪500 3‬‬
‫‪100‬‬ ‫‪800‬‬ ‫برنامه ‪100 4‬‬
‫فرض کنید که ‪ 100000000‬دستور در هر یک از ‪ 4‬برنامه اجرا میشوند‪ .‬نرخ ‪ MIPS‬هر برنامه را در هر یک از‬
‫سه ماشین محاسبه کنید‪ .‬بر اساس این نرخها آیا میتوانید یک نتیجه گیری واضح روی کارایی هر یک از این سه‬
‫کامپیوتر داشته باشید؟ اگر روشی دارید تا بصورت آماری آنها را درجه بندی کنید با دلیل ارائه دهید‪.‬‬

‫مسأله ‪ -7-1‬عملیات معماری کامپیوترهای ‪ SIMD‬و ‪ MIMD‬را طبقه بندی کنید‪ .‬چندپردازندهها و چند‬
‫کامپیوترها را براساس دستوراتشان‪ ،‬اشتراک منابع‪ ،‬و ارتباطات بین پردازنده مقایسه کنید‪ .‬همچنین تفاوتهای بین‬
‫کامپیوترهای ‪ UMA, NUMA, COMA, NORMA‬را توضیح دهید‪.‬‬

‫مسأله ‪ -8-1‬قطعه کد زیر شامل ‪ 6‬دستورالعمل باید ‪ 64‬بار برای ارزیابی عبارت برداری‬
‫‪ D(I)=A(I)+B(I)*C(I) for 0≤I≤63‬اجرا میشود‪:‬‬

‫)‪Load R1,B(I‬‬ ‫‪/R1Memory(α+I)/‬‬


‫)‪Load R2,C(I‬‬ ‫‪/R2Memory(β+I)/‬‬
‫‪Multiply R1,R2‬‬ ‫‪/R1(R1)*(R2)/‬‬
‫)‪Load R3,A(I‬‬ ‫‪/R3Memory(ϒ+I)/‬‬
‫‪Add R3,R1‬‬ ‫‪/R3(R3)+(R1)/‬‬
‫‪Store D(I),R3‬‬ ‫‪/Memory(θ+I)(R3)/‬‬
‫کانون نشر علوم‬ ‫‪| 64‬‬

‫که ‪ R1,R2,R3‬ثباتهای پردازنده هستند و )‪ (R1‬محتوای ‪ R1‬و ‪α‬و‪ β‬و‪ϒ‬و ‪ θ‬بترتیب آدرسهای شروع‬
‫آرایههای )‪ B(I‬و )‪ C(I‬و)‪A(I‬و )‪ D(I‬میباشند‪ .‬فرض کنید که ‪ 4‬پالس ساعت برای هر ‪ load ,Store‬و دو‬
‫پالس ساعت برای ‪ Add‬و ‪ 8‬پالس ساعت برای ‪ Multiply‬روی یک تک پردازنده یا یک ‪ PE‬روی یک ماشین‬
‫‪ SIMD‬نیاز است‪.‬‬

‫(الف)زمان کل پالسهای پردازنده مورد نیاز برای اجرای قطعه کد فوق ‪ 64‬بار روی یک کامپیوتر تک پردازنده‬
‫‪ SISD‬بطور ترتیبی را محاسبه کنید‪ .‬همه تأخیرهای زمانی دیگر را صرفنظر کنید‪.‬‬
‫(ب) استفاده از ‪64‬عدد ‪ PE‬در یک کامپیوتر ‪ SIMD‬برای اجرای عملیات برداری فوق در ‪ 6‬دستور روی ‪64‬‬
‫قطعه داده برداری با ساعت مشابه را در نظر بگیرید‪ .‬زمان کل اجرا روی ماشین ‪ SIMD‬را محاسبه کنید‪ .‬پخش‬
‫دستورات و سایر تأخیرات را نادیده بگیرید‪.‬‬
‫(ج) افزایش سرعت کامپیوتر ‪ SIMD‬نسبت به کامپیوتر ‪ SISD‬را بدست آورید‪.‬‬

‫مسأله ‪ -9-1‬ضرب دو عدد صحیح باینری ‪n‬بیتی با استفاده از تراشه ضرب کننده ‪ 1.2μm CMOS‬در نظر‬
‫بگیرید‪ .‬اثبات کنید کران پایین ‪ AT2>kn2‬است که ‪ A‬سطح تراشه و ‪ T‬زمان اجرا‪ n ،‬طول کلمه و ‪ k‬یک ثابت‬
‫وابسته به تکنولوژی است‪.‬‬

‫مسأله ‪ -10-1‬دو الگوریتم برای ضرب دو ماتریس ‪ n*n‬با یک سیستم ‪p‬پردازنده که ‪ 1≤p≤n3/logn‬را‬
‫توسعه دهید‪ .‬یک مدل ماشین ‪ PRAM‬مناسب را انتخاب کنید تا اثبات کنید که ضرب ماتریس میتواند با‬
‫)‪ T=O(n3/p‬انجام شود‪.‬‬

‫(الف) ثابت کنید که )‪ T=O(n2‬اگر ‪ .p=n‬الگوریتم خود را مثل الگوریتم مثال ‪ 5-1‬نشان دهید‪.‬‬
‫(ب) الگوریتم با )‪ T=O(n‬اگر ‪ p=n2‬را نشان دهید‪.‬‬

‫مسأله ‪ -11-1‬شما در حال طراحی یک سیستم برای کاربردهای زمان‪-‬قطعی هستید که باید در یک محدوده‬
‫زمانی خاصی برآورده شود‪ .‬انجام سریعتر محاسبات چیزی بدست نمیآورد‪ .‬شما دریافتید که سیستم شما میتواند‬
‫کد الزم را اجرا کند‪ ،‬در بدترین حالت‪ ،‬دوبرابر سریعتر از زمان مورد انتظار‪.‬‬

‫(الف)چه میزان شما در انرژی صرفه جویی میکنید اگر با سرعت جاری اجرا کنید و بعد از اتمام کار سیستم را‬
‫خاموش کنید؟‬
‫(ب) چه میزان انرژی صرفه جویی میکنید اگر شما ولتاژ را تنظیم کنید و فرکانس را نصف کنید؟‬

‫مسأله ‪ -12-1‬برای سرورها ابتدا قابل دسترس بودن مهم است‪ ،‬سپس مقیاسپذیر بودن و کارایی‪.‬‬

‫(الف) یک تک پردازنده با زمان خطای (‪ 100 )FIT‬داریم‪ .‬میانگین زمان تا خطا (‪ )MTTF‬برای این سیستم‬
‫چقدر است؟‬
‫(ب) اگر یک روز زمان ببرد تا سیستم را مجدداً راهاندازی کنیم‪ ،‬قابل دسترس بودن سیستم چقدر است؟‬
‫(ج) فرض کنید دولت میخواهد یک سیستم سوپرکامپیوتر از کامپیوترهای ارزان بسازد‪ MTTF .‬برای یک‬
‫سیستم با ‪ 1000‬پردازنده چیست؟ فرض کنید اگر یکی خطا بدهد همه خطادار شوند‪.‬‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫فصل دوم ‪ -‬خواص برنامه و شبکه‬
‫این فصل خواص اساسی رفتار برنامه را تحت پوشش قرار میدهد و کالسهای اصلی شبکههای ارتباطی را معرفی‬
‫میکند‪ .‬ابتدا مطالعهمان را با دانهبندی محاسباتی‪ ،‬شرایط تقسیم کردن برنامه‪ ،‬تطابق نرمافزار با سختافزار‪ ،‬مکانیزم‪-‬‬
‫های جریان برنامه و پشتیبانی کامپایلر از موازات شروع میکنیم‪ .‬معماریهای ارتباطی معرفی شده شامل شبکههای‬
‫ایستا و پویا میباشند‪ .‬در این فصل پیچیدگی شبکه‪ ،‬پهنای باند ارتباطی و قابلیتهای مسیریابی داده بحث میشوند‪.‬‬

‫‪ -1-2‬شرایط موازات‪ :‬ایجاد موازات یک راه اساسی جهت تسریع در معماری کامپیوتر ایجاد کرده است‪ .‬به منظور‬
‫انتقال پردازش موازی به محاسبات عمده ‪ )1991( H.T Kung‬نیاز پیشرفت را به سه ناحیه تقسیم کرده است‪:‬‬
‫مدلهای محاسباتی برای محاسبات موازی‪ ،‬ارتباطات بین پردازندهای در معماریهای موازی‪ ،‬و تجمع سیستم برای‬
‫شرکت موازات در محیطهای محاسبات سراسری‪.‬‬

‫یک رفتار تئوری برای ساخت پایههای چالشهای فوق مورد نیاز است‪ .‬در عمل‪ ،‬موازات به شکلهای گوناگون در‬
‫یک محیط محاسباتی ظاهر میشود‪ .‬همه شکلها میتوانند به سطوح موازات‪ ،‬دانهبندی محاسباتی‪ ،‬پیچیدگی زمانی‬
‫و فضایی‪ ،‬تأخیرات محاسباتی‪ ،‬سیاستهای زمانبندی و تعادل بار اِعمال شوند‪ .‬اغلب حد میانهای بین زمان‪ ،‬فضا‪،‬‬
‫کارایی و فاکتورهای هزینه وجود دارد‪.‬‬

‫‪ -1-1-2‬وابستگی های داده و منبع ‪ :‬توان اجرای چندین بخش برنامه بطور موازی نیازمند این است که هر‬
‫قطعه از قطعههای دیگر مستقل باشد‪ .‬استقالل به شکلهای مختلفی میآید که در زیر بطور مجزا تعریف میشوند‪.‬‬
‫برای سادگی‪ ،‬برای بیان ایده‪ ،‬روابط وابستگی بین دستورات یک برنامه را مدنظر قرار میدهیم‪ .‬بطور کلی‪ ،‬هر بخش‬
‫کد ممکن است یک یا چند دستور داشته باشد‪.‬‬

‫برای توصیف روابط از گراف وابستگی استفاده میکنیم‪ .‬گرههای گراف وابستگی مرتبط با دستورات برنامه میباشند‬
‫و یالهای جهتدار با برچسبهای مختلف ترتیب وابستگیها را در بین دستورات نشان میدهند‪ .‬تجزیه تحلیل‬
‫گراف وابستگی نشان میدهد که چه روشی برای موازات و برداری سازی وجود دارد‪.‬‬

‫وابستگی داده‪ :‬ترتیب وابستگی بین دستورات توسط وابستگی داده تعیین میشود‪ 5 .‬نوع وابستگی داده داریم که‬
‫عبارتند از‪:‬‬

‫(‪ )1‬وابستگی جریان‪ :‬یک دستور ‪( s2‬عبارت ‪ )s2‬به عبارت ‪ s1‬وابستگی جریان دارد اگر یک مسیر‬
‫اجرایی از ‪ s1‬به ‪ s2‬وجود داشته باشد و اگر حداقل یک خروجی (متغیرهای مقدار داده شده) از ‪ s1‬به‬
‫عنوان یکی از ورودیهای (عملوندهای) مورد استفاده در ‪ s2‬باشند‪ .‬وابستگی جریان به صورت ‪s1→s2‬‬
‫نشان داده میشود‪.‬‬
‫(‪ )2‬ضدوابستگی‪ :‬عبارت ‪ s2‬به عبارت ‪ s1‬ضدوابسته است اگر ‪ s2‬در روند برنامه بعد از ‪ s1‬باشد و‬
‫خروجی ‪ s2‬با ورودی ‪ s1‬همپوشانی کند‪ .‬ضدوابستگی به صورت ‪ s1 s2‬نشان داده میشود‪( .‬پیکان‬
‫با یک میله روی آن)‬
‫کانون نشر علوم‬ ‫‪| 68‬‬

‫(‪ )3‬وابستگی خروجی‪ :‬دو عبارت وابسته خروجیند اگر هر دو یک متغیر مشابه ایجاد کنند (در یک متغیر‬
‫‪ s1‬نشان داده میشود‪.‬‬ ‫بنویسند)‪ .‬وابستگی خروجی به صورت ‪s2‬‬
‫(‪ )4‬وابستگی ورودی‪/‬خروجی (‪ :)I/O‬خواندن و نوشتن عبارات ورودی‪/‬خروجی هستند‪ .‬وابستگی‬
‫ورودی‪/‬خروجی زمانی اتفاق میافتد که هر دو عبارت ورودی‪/‬خروجی‪ ،‬یک فایل را مورد رجوع قرار دهند‪.‬‬
‫‪ S1‬نشان‬
‫‪I/O‬‬ ‫وابستگی خروجی به خاطر یک متغیر مشابه اتفاق نمیافتد‪ .‬این وابستگی با ‪S2‬‬
‫داده میشود‪.‬‬
‫(‪ )5‬وابستگی ناشناخته‪ :‬رابطه وابستگی بین دو عبارت در شرایط زیر قابل تعیین نیست‪:‬‬
‫• آدرس دهی غیر مستقیم‪.‬‬
‫• مرجع (مقصد) شامل متغیر اندیس حلقه نباشد‪.‬‬
‫• متغیر اندیس حلقه غیرخطی باشد‪.‬‬
‫وقتیکه یکی از این شرایط اتفاق افتاد‪ ،‬وابستگی ناشناخته بین عبارات داریم‪ .‬به ضد وابستگی و وابستگی خروجی‪،‬‬
‫وابستگی نام نیز میگویند و در فصل ‪ 6‬روش رفع آنها بیان شده است‪.‬‬

‫مثال ‪ :1-2‬وابستگی داده در یک برنامه قطعه کد زیر با ‪ 4‬دستور را در نظر بگیرید‪:‬‬

‫‪S1: load R1,A‬‬ ‫‪/R1 memory(A)/‬‬


‫‪S2: Add R2,R1‬‬ ‫‪/R2(R1)+(R2)/‬‬
‫‪S3: Move R1,R3‬‬ ‫‪/R1(R3)/‬‬
‫‪S4: Store B,R1‬‬ ‫‪/Memory(B)(R1)/‬‬
‫همانطور که در شکل ‪(1-2‬الف) مشاهده میکنید ‪ S2‬به ‪ S1‬وابستگی جریان دارد زیرا متغیر ‪ A‬از طریق ثبات ‪R1‬‬
‫ارسال میشود‪ S3 .‬به ‪ S2‬بخاطر پتانسیل تداخلی روی محتوای ‪ R1‬ضدوابسته است‪ S3 .‬و ‪ S1‬وابستگی خروجی‬
‫دارند چون هر دو ‪ R1‬را تغییر میدهند‪ .‬با مقایسه‪ ،‬سایر وابستگیها بدست میآیند‪ .‬نکته اینکه وابستگی یک ترتیب‬
‫جزئی است زیرا همه زوج دستورات به هم وابسته نیستند و مثالً دستورات ‪ S2,S4‬کامالً از هم مستقلند‪.‬‬

‫در ادامه قطعه کدی را که شامل عملیات ورودی‪/‬خروجی است در نظر میگیریم‪:‬‬

‫)‪S1: Read (4),A(I‬‬ ‫‪/read array A from tape unit 4/‬‬


‫)‪S2: Rewind(4‬‬ ‫‪/rewind tape unit 4/‬‬
‫)‪S3: write (4),B(I‬‬ ‫‪/write array B into tape unit 4/‬‬

‫)‪S4: Rewind (4‬‬ ‫‪/rewind tape unit 4/‬‬


‫همانطور که در شکل ‪(1-2‬ب) مشاهده میکنید‪ ،‬دستورات خواندن‪/‬نوشتن‪ S1,S3 ،‬وابستگی ‪ I/O‬به یکدیگر دارند‪.‬‬
‫زیرا هر دو به فایل مشابهی از نوار واحد ‪ 4‬دسترسی دارند‪ .‬روابط وابستگی داده باال نباید به طور اختیاری در طول‬
‫اجرای برنامه نقض شوند‪ .‬در غیر اینصورت‪ ،‬نتایج شبهناک (غلط) ممکن است با تغییر ترتیب برنامه ایجاد شود‪.‬‬
‫‪| 69‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫اغلب ترتیب اجرای دستورات برنامه بدرستی تعریف میشود اجراهای تکراری نتایج مشابهی تولید میکنند‪ .‬در یک‬
‫سیستم چندپردازنده به خاطر مدل حافظه استفاده شده ترتیب برنامه ممکن است ثابت نباشد‪.‬‬
‫‪S‬‬
‫‪I/O‬‬
‫‪S‬‬ ‫‪S‬‬
‫‪S‬‬ ‫‪S‬‬ ‫(ب) وابستگی ‪ I/O‬ایجاد شده با دسترسی به فایل مشابه‬
‫توسط دستورات خواندن‪/‬نوشتن‬
‫(الف)گراف وابستگی‬
‫‪S‬‬ ‫شکل ‪ :1-2‬وابستگیهای داده و ‪ I/O‬برنامه مثال ‪1-2‬‬
‫وابستگی کنترل‪ :‬این نوع وابستگی مربوط به حالتهایی است که ترتیب اجرای دستورات قبل از زمان اجرا قابل‬
‫تشخیص نیست‪ .‬به عنوان مثال‪ ،‬دستورات شرطی (مثل ‪ )if‬تا زمان اجرا قابل تشخیص نیست‪ .‬مسیرهای مختلف‬
‫ایجاد شده بعد از پرشهای شرطی ممکن است وابستگی داده بین دستورات را ایجاد یا آنرا حذف کند‪ .‬ممکن است‬
‫وابستگی بین دستورات در اجراهای متوالی حلقهها وجود داشته باشد‪ .‬در زیر حلقهای را به عنوان مثال نشان میدهیم‬
‫که ممکن است بدون یا با وابستگی کنترل در تکرارها باشد‪.‬‬

‫تکرارهای متوالی حلقه زیر وابستگی کنترل ندارد‪.‬‬

‫‪Do 20 I=1,N‬‬
‫)‪A(I)=C(I‬‬
‫)‪If(A(I),LT.0) A(I)=1 //if (A(I)<0)→ A(I)=1‬‬
‫‪20 Continue‬‬
‫حلقه زیر در تکرارها وابستگی کنترل دارد‪.‬‬

‫‪Do 10 I=1 ,N‬‬


‫‪If(A(I-1).EQ.0) A(I)=0 //if A(i-1)=0→A(I)=0‬‬
‫‪Continue‬‬
‫اغلب وابستگی کنترل مانع موازی سازی است‪ .‬باید تکنیکهای کامپایلری ایجاد شود تا وابستگی کنترل را به‬
‫منظور ایجاد موازات‪ ،‬بررسی کند‪.‬‬

‫وابستگی منبع‪ :‬این نوع وابستگی متفاوت از وابستگی داده یا کنترل است و باید استقالل وجود داشته باشد تا‬
‫کار اجرا شود‪ .‬وابستگی منبع با تداخلها در استفاده مشترک از منابع مشترک مثل‪ ،‬واحدهای صحیح‪ ،‬واحدهای‬
‫ممیز شناور‪ ،‬ثباتها و نواحی حافظه در خالل رخدادهای موازات ایجاد میشوند‪ .‬وقتیکه منبع متداخل یک ‪ALU‬‬
‫باشد به آن وابستگی ‪ ALU‬گفته میشود‪.‬‬

‫اگر تداخل شامل حافظه دیسک باشد به آن وابستگی حافظه جانبی گفته میشود‪ .‬در حالتیکه وابستگی حافظه جانبی‬
‫باشد‪ ،‬هر کار باید در مکان حافظه جانبی مستقلی انجام شود یا دسترسی محافظت شده (مثل قفلها یا مانیتورها)‬
‫به دادههای قابل نوشتن مشترک استفاده شود‪.‬‬
‫کانون نشر علوم‬ ‫‪| 70‬‬

‫تبدیل یک کد برنامه ترتیبی به شکل موازی قابل اجرا میتواند بصورت دستی توسط برنامه نویس با استفاده از‬
‫موازات صریح یا توسط کامپایلر با موازات ضمنی انجام شود‪ .‬در هر دو روش تصنیف برنامهها هدف اولیه است‪.‬‬

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

‫شرایط برنشتاین(‪ :)Bernstein‬در سال ‪ 1966‬محققی به نام برنشتاین مجموعه شرایطی را تعیین کرد که‬
‫براساس آن دو پردازه میتوانند بهصورت موازی اجرا شوند‪ .‬یک پردازه را میتوان به سطوح مختلف پردازشی تقسیم‬
‫کرد‪ .‬در این حالت‪ ،‬مجموعه ورودی ‪ Ii‬از یک پردازه ‪ Pi‬را به عنوان مجموعه همه متغیرهای ورودی مورد نیاز برای‬
‫اجرای آن پردازه‪ ،‬و بهطور مشابه مجموعه خروجی ‪ Oi‬شامل همه متغیرهای خروجی پردازه ‪ Pi‬نامگذاری میشوند‬
‫که بعد از اجرای ‪ Pi‬ایجاد می شوند‪ .‬متغیرهای ورودی لزوماً عملوندهایی هستند که از حافظه یا ثباتها برداشته‬
‫میشوند و متغیرهای خروجی نتایجی هستند که باید در ثباتهای کاری یا مکانهای حافظه ذخیره شوند‪.‬‬

‫حال دو پردازه ‪ P1,P2‬را در نظر بگیرید که مجموعههای ورودی آنها ‪ I1,I2‬و مجموعههای خروجیشان ‪ O1‬و ‪O2‬‬
‫میباشد‪ .‬این دو پردازه میتوانند بطور موازی اجرا شوند که آنرا بصورت ‪ P1||P2‬نشان میدهیم به شرط آنکه‬
‫مستقل باشند و نتایج مبهم ایجاد نکنند‪ .‬به طور فرمولی‪ ،‬این شرایط به صورت زیر بیان میشوند‪:‬‬

‫∅ = ‪I1 ∩ O2‬‬
‫∅ = ‪{ I2 ∩ O1‬‬ ‫(‪)2-1‬‬
‫∅ = ‪O1 ∩ O2‬‬

‫این سه معادله را شرایط برنشتاین میگوییم‪ .‬مجموعه ورودی ‪ Ii‬مجموعه خواندن یا دامنه ‪ Pi‬نیز نامیده میشود‪ .‬به‬
‫طور مشابه مجموعه خروجی ‪ ،Oi‬مجموعه نوشتن یا بُرد پردازه ‪ Pi‬نامیده میشود‪ .‬براساس وابستگی داده شرایط‬
‫برنشتاین از دو پردازه که می توانند موازی شوند به این معنی است که آنها وابستگی جریان‪ ،‬ضدوابستگی‪ ،‬و وابستگی‬
‫خروجی ندارند‪.‬‬

‫اجرای موازی دو پردازه با وقتیکه آنها ترتیبی اجرا شوند نتایج مشابهی ایجاد میکند‪ .‬این امکان پذیر است اگر فقط‬
‫خروجی یک پردازه به عنوان ورودی پردازه دیگر استفاده نشود‪ .‬بنابراین‪ ،‬دو پردازه مجموعه مشابهی از متغیرها را‬
‫اصالح نخواهند کرد چه در حافظه یا ثبات‪.‬‬

‫به طور کلی‪ ،‬یک مجموعه از پردازههای ‪ P1,P2,….,Pk‬میتوانند بطور موازی اجرا شوند اگر شرایط برنشتاین برای‬
‫هر زوج برآورده شوند‪ .‬یعنی ‪ P1||P2||…||Pk‬اگر و تنها اگر ‪ .Pi||Pj for all i#j‬این رابطه با برنامه نشان‬
‫داده شده در شکل ‪ 2-2‬توضیح داده میشود‪.‬‬

‫مثال ‪ :2-2‬تشخیص موازات در یک برنامه با استفاده از شرایط برنشتاین‬


‫‪| 71‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫حالت سادهای را در نظر بگیرید که هر پردازه یک دستور ‪ HLL‬ساده است‪ .‬میخواهیم موازی سازی ‪ 5‬دستور زیر‬
‫را که با برچسب ‪ P5,P4,P3,P2,P1‬نشان داده شدهاند تشخیص دهیم‪:‬‬
‫‪P1: C=D×E‬‬
‫‪P2: M=G+C‬‬
‫‪P3: A=B+C‬‬ ‫)‪(2-2‬‬
‫‪P4: C=L+M‬‬
‫‪P5: F=G÷E‬‬
‫فرض کنید هر دستور در یک گام اجرا شود و شرایط خط لولهای در نظر گرفته نمیشود‪ .‬گراف وابستگی در شکل‬
‫‪(2-2‬الف) نشان داده شده است‪ .‬در اجرای ترتیبی‪ ،‬این برنامه در ‪ 5‬مرحله اجرا میشود (شکل ‪(2-2‬ب))‪.‬‬
‫‪P1‬‬
‫×‬

‫منبع‬ ‫‪P4‬‬ ‫‪P5‬‬


‫‪P2 +1‬‬ ‫‪+3‬‬ ‫÷‬

‫منبع‬
‫منبع‬ ‫(الف) یک گراف وابستگی که هر دوی‬
‫وابستگی داده و منابع را نشان میدهد‬
‫‪+2‬‬
‫‪P3‬‬

‫‪E‬‬ ‫‪D‬‬ ‫‪D E‬‬


‫زمان‬
‫×‬ ‫‪P1‬‬ ‫‪P1‬‬ ‫×‬
‫‪G‬‬ ‫‪B‬‬
‫‪C‬‬ ‫‪E G‬‬
‫‪G‬‬ ‫‪C‬‬
‫‪+1 P2‬‬ ‫‪+1‬‬ ‫‪P2‬‬ ‫‪+2 P3‬‬ ‫‪÷ P5‬‬
‫‪L‬‬
‫‪B‬‬
‫‪+3‬‬ ‫‪P4‬‬
‫‪+2‬‬
‫‪P3‬‬
‫‪C‬‬ ‫‪A‬‬ ‫‪F‬‬
‫‪L‬‬ ‫‪A‬‬
‫(ج) اجرای موازی در سه مرحله‪ .‬فرض میکنیم‬
‫‪+3‬‬
‫‪P4‬‬ ‫در هر مرحله دو جمع کننده قابل دسترس است‪.‬‬
‫‪G‬‬ ‫‪C‬‬
‫‪E‬‬

‫÷‬ ‫‪P5‬‬

‫‪F‬‬
‫(ب) اجرای ترتیبی در ‪ 5‬مرحله‪ .‬فرض میکنیم هر‬ ‫شکل ‪ :2-2‬تشخیص موازات در برنامه مثال ‪2-2‬‬
‫دستور یک مرحله است (بدون خط لوله)‬

‫اگر دو جمع کننده بطور همزمان در دسترس باشند‪ ،‬اجرای موازی فقط نیازمند سه مرحله است که در شکل ‪-2‬‬
‫‪( 2‬ج) نشان داده شده است‪ .‬به صورت زوجی‪ ،‬ده زوج دستورالعمل وجود دارد تا آنها را در مقابل شرایط برنشتاین‬
‫بررسی کنیم‪ .‬همانطور که در شکل ‪(2-2‬الف) نشان داده شده است اگر تداخل منبع وجود نداشته باشد‪ ،‬فقط ‪ 5‬زوج‬
‫‪ P1||P5, P2||P3, P2||P5, P5||P3, P4||P5‬وجود دارد‪ .‬همانطور که در شکل ‪(2-2‬ج) نشان داده‬
‫شده است بطور مجموعهای ‪ P2||P3||P5‬امکان پذیر است‪ ،‬زیرا ‪.P2||P3, P5||P2, P3||P5‬‬
‫کانون نشر علوم‬ ‫‪| 72‬‬

‫در کل‪ ،‬رابطه موازات || خاصیت تقارنی دارد یعنی ‪ .Pj||Pi↔ Pi||Pj‬اما دارای خاصیت تعدی نیست یعنی‬
‫‪ Pi||Pj‬و ‪ Pj||Pk‬لزوماً ‪ Pi||Pk‬را نتیجه نمیدهد‪ .‬به عنوان مثال ‪ P1||P5‬و ‪ P5||P2‬اما ‪.P1∦ P2‬‬
‫که ∦ یعنی‪ P1,P2 ،‬نمیتوانند بطور موازی اجرا شوند‪ .‬به عبارت دیگر ترتیب اجرای ‪ P1,P2‬نتایج محاسباتی‬
‫متفاوتی خواهد داد‪.‬‬

‫بنابراین‪ || ،‬یک رابطه هم ارزی نیست‪ .‬به هر حال ‪ Pi||Pj||Pk‬خاصیت اشتراکی را برآورده میکند‬
‫)‪ .(Pi||Pj)||Pk=Pi||(Pj||Pk‬بنابراین ترتیبی که پردازههای قابل اجرای موازی اجرا شوند مجموعه‬
‫خروجی متفاوتی نخواهد داد‪ .‬باید یادآوری کنیم که شرط ∅ ≠ ‪ Ii ∩ Ij‬مانع موازات بین ‪ Pi,Pj‬نخواهد شد‪.‬‬

‫عدم برقراری یک یا چند شرط از سه شرط معادله ‪ 1-2‬از موازات بین دو پردازده ممانعت میکند‪ .‬به طور کلی عدم‬
‫برقراری یک یا چند شرط از ‪ 3n(n − 1)/2‬از شرایط برنشتاین در طول ‪ n‬پردازه از موازات کلی یا جزئی‬
‫جلوگیری میکند‪ .‬بسیاری از روشهای ایجاد یک برنامه ممکن است مانع از موازی سازی شوند‪.‬‬

‫هر عبارت یا پردازه ای که وابسته به شرایط زمان اجرا باشد قابل تبدیل به شکل موازی نیست‪ .‬این شامل دستورات‬
‫‪ if‬یا پرشهای شرطی میشود‪ .‬محاسبات بازگشتی در تکرارهای متوالی نیز مانع از موازی سازی میباشند‪ .‬به طور‬
‫کلی وابستگی داده‪ ،‬کنترل و منبع همه از ایجاد موازات جلوگیری میکنند‪.‬‬

‫وابستگی در سطح عبارت میتواند به سطوح باالتر عمومیت داده شود‪ ،‬مانند سطح قطعه‪ 1‬کد‪ ،‬زیر روالها‪ ،‬پردازه‪،‬‬
‫کار و سطح برنامه‪ .‬وابستگی دو شیء سطح باالتر ممکن است از وابستگی عبارات اشیاء مرتبط ایجاد شود‪ .‬اهداف‬
‫تجزیه و تحلیل وابستگی داده‪ ،‬کنترل و منابع در یک کد‪ ،‬تعیین روشهایی برای موازی سازی یا بردارسازی است‪.‬‬

‫قبل از اینکه روشها اجرا شوند ممکن است نیازمند تبدیل کد یا تولید مجدد برنامه باشیم‪ .‬روابط وابستگی در انتشار‬
‫دستورات و عملیات زمانبندی خطلوله در فصل ‪ 6‬استفاده میشوند‪ .‬برنامهنویسان عالقهمندند کامپایلرهایی ساخته‬
‫شوند که بطور خودکار موازات را تشخیص دهند‪.‬‬

‫‪ -2-1-2‬موازات نرم افزاری و سخت افزاری‬


‫برای پیاده سازی موازات نیازمند پشتیبانی خاص نرمافزاری و سختافزاری هستیم‪ .‬در این بخش این پشتیبانیها‬
‫را بررسی میکنیم‪ .‬ابتدا بین موازات نرمافزاری و سختافزاری تمایز قائل میشویم‪ .‬مشکالت عدم سازگاری بین‬
‫نرمافزار و سختافزار بررسی میشوند‪ .‬سپس مفهوم پایه پشتیبانی کامپایل مورد نیاز برای حذف شکاف بین نرمافزار‬
‫و سختافزار را توصیف میکنیم‪.‬‬

‫‪1‬‬
‫‪Segment‬‬
‫‪| 73‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫جزئیات توابع سختافزاری خاص و پشتیبانی نرمافزاری برای موازات در فصلهای باقیمانده بحث میشوند‪ .‬ایده‬
‫کلیدی این است که موازات به سادگی نمیتواند بدست آید‪ .‬در کنار شرایط تئوری‪ ،‬بین طراحان سختافزار و برنامه‬
‫نویسان نرمافزار‪ ،‬پیوندی مورد نیاز است تا موازات را در بهبود کارایی کامپیوتر برآورده کنند‪.‬‬

‫موازات سختافزاری‪ :‬این به نوع موازات تعریف شده توسط معماری ماشین و چندگانگی سختافزار مربوط‬
‫است‪ .‬موازات سختافزاری اغلب تابعی از حد میانه هزینه و کارایی میباشد و نشان دهنده الگوهای کارایی منابع از‬
‫عملیات قابل اجرای همزمان میباشد‪ .‬همچنین حداکثر کارایی منابع پردازنده را مشخص میکند‪.‬‬

‫یک روش‪ ،‬طبقه بندی موازات در یک پردازنده توسط تعداد دستورات انتشار یافته در یک پالس ساعت ماشین‬
‫میباشد‪ .‬اگر یک پردازنده‪ ،‬در یک پالس ساعت ماشین ‪ k‬دستور را منتشر کند‪ ،‬به آن ‪-k‬انتشاره میگویند‪.‬‬

‫یک پردازنده معمولی یک یا چند پالس ساعت ماشین را برای انتشار یک دستور صرف میکند‪ .‬این نوع پردازندهها‬
‫با یک خطلوله دستورالعمل در پردازنده‪ ،‬ماشینهای تک‪-‬انتشاره نامیده میشوند‪ .‬در یک پردازنده مدرن‪ ،‬دو یا چند‬
‫دستور میتوانند در یک پالس ساعت ماشین منتشر شوند‪.‬‬

‫به عنوان مثال‪ Intel i960CA ،‬یک پردازنده سه‪-‬انتشاره است که یک دستور محاسباتی‪ ،‬یک دسترسی حافظه‪،‬‬
‫و یک دستور پرش در یک پالس ساعت منتشر میشود‪ .‬سیستم ‪ IBM 6000 ،RISC‬یک پردازنده ‪-4‬انتشاره‬
‫است که قادر است یک عمل محاسباتی‪ ،‬یک دسترسی حافظه‪ ،‬یک عمل ممیز شناور‪ ،‬و یک عمل پرش را در یک‬
‫پالس ساعت منتشر کند‪.‬‬

‫یک چندپردازنده که از ‪ n‬پردازنده ‪ -k‬انتشاره ساخته شده است قادر خواهد بود که حداکثر تعداد ‪ n×k‬رشته دستور‬
‫را بطور همزمان راه اندازی کند‪.‬‬

‫موازات نرمافزاری‪ :‬این نوع موازات با وابستگی داده و کنترل برنامه تعریف میشود‪ .‬درجه موازات در مشخصات‬
‫برنامه یا در گراف جریان برنامه مشخص میشود‪ .‬موازات نرمافزاری تابعی از الگوریتم‪ ،‬شکل برنامهنویسی و بهینه‬
‫سازی کامپایلر میباشد‪ .‬گراف جریان برنامه الگوهای عملیات قابل اجرای همزمان را نشان میدهد‪ .‬موازات در یک‬
‫برنامه در طول دوره اجرا تغییر میکند و اغلب کارایی پردازنده را محدود میکند‪.‬‬

‫مثال ‪ :3-2‬عدم توافق بین موازات نرمافزاری و سختافزاری‬

‫گراف برنامه نمونه شکل‪(3-2‬الف) را در نظر بگیرید‪ .‬هشت دستور وجود دارد که باید در سه پالس ساعت ماشین‬
‫اجرا شوند (‪ 4‬عدد ‪ 4 ،load‬عمل محاسباتی(‪ 2‬ضرب×‪ ،‬یک جمع ‪ +‬و یک تفریق‪ .))-‬چهار عمل ‪ load‬در پالس‬
‫ساعت اول اجرا میشوند و دو عمل ضرب در پالس ساعت دوم و دو عمل جمع‪/‬تفریق در پالس ساعت سوم‪ .‬بنابراین‬
‫موازات در این سه پالس ساعت از ‪ 4‬به ‪ 2‬متغیر است‪ .‬میانگین موازات نرمافزاری ‪ 8/3=2.67‬دستور در هر پالس‬
‫ساعت برای این مثال است‪.‬‬

‫‪L1‬‬ ‫‪Cycle1‬‬
‫‪L1: load R1,x‬‬
‫‪L1‬‬ ‫‪L2‬‬ ‫‪L3‬‬ ‫‪L4‬‬ ‫‪Cycle1‬‬
‫‪L2:load R2,y‬‬
‫‪L2‬‬ ‫‪Cycle2 L3: load R3,z‬‬
‫‪L4: load R4,k‬‬
‫‪X1‬‬ ‫‪X2‬‬ ‫‪Cycle2‬‬
‫‪X1: mul R1,R2‬‬
‫‪X2: mul R3,R4‬‬
‫‪Cycle3 Add1: add A,R1,R3‬‬
‫‪X‬‬ ‫‪L‬‬
‫کانون نشر علوم‬ ‫‪| 74‬‬

‫حال اجرای برنامه مشابه را در یک پردازنده ‪ 2‬انتشاره در نظر بگیرید که میتواند یک دسترسی حافظه (‪ load‬یا‬
‫‪ )store‬و یک عمل محاسباتی (جمع‪ ،‬تفریق‪ ،‬ضرب‪ ،‬و‪ )...‬را بطور همزمان اجرا کند‪ .‬با این محدودیت سختافزاری‬
‫برنامه در ‪ 7‬پالس ساعت ماشین همانطور که در شکل ‪(3-2‬ب) نشان داده شده است اجرا میشود‪ .‬بنابراین موازات‬
‫سختافزاری مقدار متوسط ‪ 8/7=1.14‬دستور اجرا شده در هر پالس ساعت را نشان میدهد‪ .‬این مثال عدم‬
‫تطابق بین موازات نرمافزاری و سختافزاری را نشان میدهد‪.‬‬

‫حال اجازه دهید موازات نرمافزاری نشان داده شده در شکل ‪(3-2‬الف) را در یک سختافزار که دارای دو پردازنده‬
‫یک‪-‬انتشاره است بررسی کنیم‪ .‬موازات سختافزاری قابل دستیابی در شکل ‪ 4-2‬نشان داده شده است که ‪L/S‬‬
‫بیانگر عملیات ‪ Load/store‬است‪ .‬نکته اینکه ‪ 6‬پالس ساعت پردازنده برای اجرای ‪ 12‬دستور توسط دو پردازنده‬
‫مورد نیاز است‪ S1,S2.‬دو عمل ‪ store‬درج شده است و ‪ L6,L5‬دو عمل ‪ load‬درج شده است‪ .‬فرض میشود‬
‫که این دستورات اضافه شده برای ارتباطات بین پردازندهای در خالل حافظه مشترک مورد نیاز است‪.‬‬

‫از انواع زیاد موازات نرمافزاری‪ ،‬دو نوع بطور متناوب در برنامه نویسی موازی مهم هستند‪ :‬اولی موازات کنترلی است‬
‫که اجازه می دهد دو یا چند عمل به طور همزمان اجرا شوند‪ .‬نوع دوم موازات داده نامیده میشود که اغلب عمل‬
‫مشابهی روی عناصر داده زیادی توسط پردازندههای زیاد بهطور همزمان انجام میشود‪.‬‬

‫موازات کنترل‪ ،‬به شکل خطلوله یا چندین واحد عملیاتی ظاهر میشود که توسط خطلوله و چندگانگی واحدهای‬
‫عملیاتی محدود شده است‪ .‬هر دو موازات خطلوله یا عملیاتی توسط سختافزار راه اندازی میشود‪ ،‬بنابراین برنامه‬
‫نویس نیاز به عملیات خاص برای اجرای آن ندارد‪.‬‬
‫‪| 75‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬

‫‪L1‬‬ ‫‪L3‬‬ ‫‪Cycle 1‬‬


‫‪L/S: load/Store operation‬‬
‫‪L4‬‬ ‫‪Cycle 2‬‬
‫‪L2‬‬
‫‪X: multiply operation‬‬

‫‪X1‬‬ ‫‪X2‬‬ ‫‪Cycle 3‬‬


‫‪+ -: add/subtract operation‬‬

‫‪Cycle 4‬‬
‫‪s1‬‬ ‫‪S2‬‬

‫‪L5‬‬ ‫‪L6‬‬ ‫‪Cycle 5‬‬

‫‪+‬‬ ‫‪-‬‬ ‫‪Cycle 6‬‬

‫‪A‬‬ ‫‪B‬‬
‫شکل‪ :4-2‬اجرای دو پردازنده از برنامه شکل ‪( 3-2‬الف)‬
‫موازات داده بیشترین پتانسیل را برای همروندی ارائه میکند‪ .‬که هم در مُدهای ‪ SIMD‬و ‪ MIMD‬در سیستمهای‬
‫‪ MPP‬عملی شده است‪ .‬نوشتن کد موازی داده و دیباگ آن از کد موازی کنترل سادهتر است‪ .‬همزمانی در موازات‬
‫داده ‪ SIMD‬توسط سخت افزار راهاندازی میشود‪ .‬موازات داده‪ ،‬موازات متناسب با تعداد دادههای موجود را استفاده‬
‫میکند‪ .‬بنابراین محاسبات موازی داده در برنامههای مقیاس پذیر جذاب است زیرا کارایی ‪ MPP‬وقتی میزان کمی‬
‫از برنامه ترتیبی است‪ ،‬خیلی کاهش نمییابد‪.‬‬

‫برای حل مشکل عدم تطابق بین موازات نرمافزاری و موازات سختافزاری‪ ،‬یک روش‪ ،‬بهبود پشتیبانی کامپایلر و‬
‫دیگری طراحی مجدد سخت افزار برای بهره برداری مفید توسط یک کامپایلر هوشمند میباشد‪ .‬این دو روش باید‬
‫با هم مشارکت کنند تا بهترین نتایج را ایجاد کنند‪.‬‬

‫پردازندههای سختافزاری برای بهره برداری موازی توسط یک کامپایلر بهینه میتوانند بهتر طراحی شوند‪ .‬کار اولیه‬
‫در تکنولوژی پردازنده با این خصوصیت را میتوان در پردازندههای ‪IBM 801, Stanford MIPS, Berekly‬‬
‫‪ RISC‬یافت‪ .‬اکثر پردازندهها از فایل ثبات بزرگ و خطلوله دستور تقویت شده استفاده میکنند تا حدوداً هر دستور‬
‫را در یک پالس ساعت اجرا کنند‪ .‬فایل ثبات بزرگتر دسترسی سریع به مقادیر موقت تولید شده توسط یک کامپایلر‬
‫بهینه را پشتیبانی میکند‪ .‬ثباتها توسط بهینه ساز کد و تخصیص دهنده ثبات سراسری مثل یک کامپایلر بهره‬
‫برداری میشوند‪.‬‬

‫زمانبند دستورالعمل از سختافزار خطلوله با پرکردن پرش و اسالتهای تأخیر ‪ load‬بهره برداری میکند‪ .‬در سوپر‬
‫اسکالر و سوپر پایپالین‪ ،‬پیش بینی پرش نرمافزاری و سختافزاری‪ ،‬انتشار چند دستورالعمل‪ ،‬اجرای متفکرانه‪،‬‬
‫حافظه نهان دستورالعمل با پهنای باال‪ ،‬و پشتیبانی برای زمانبندی پویا برای سادهتر کردن تشخیص روشهای‬
‫موازات مورد نیاز است‪ .‬معماری باید بطور محاورهای با کامپایلر طراحی شود‪.‬‬
‫کانون نشر علوم‬ ‫‪| 76‬‬

‫‪ -3-1-2‬نقش کامپایلرها‬
‫تکنیکهای کامپایلر برای بهره برداری از خواص سختافزار به منظور بهبود کارایی استفاده میشوند‪ .‬کار اولیه روی‬
‫کامپایلر ‪ IBM PL.8‬و کامپایلر ‪ Stanford MIPS‬برای این هدف انجام شد‪ .‬سایر کامپایلرهای بهینه برای‬
‫بهره برداری از موازات شامل ‪،Rice PFC ،ILLinois Parafrase ،Gray CFT ، CDC STARCK LIB‬‬
‫‪ ILLinois IMPACT ،Yale Bulldog‬میباشد‪.‬‬

‫در بخشهای بعدی تبدیل حلقه‪ ،‬خطلوله نرم افزاری و خواصی که در کامپایلرهای بهینه موجود به منظور پشتیبان‬
‫از موازات ایجاد شدهاند بررسی خواهند شد ‪ .‬محاوره بین طراحی معماری کامپیوتر و کامپایلر یک لزوم در توسعه‬
‫کامپیوتر مدرن است‪ .‬اکثر پردازندههای موجود یک دستور در هر پالس ساعت منتشر میکنند و ثباتهای کمی‬
‫دارند‪ .‬بنابراین موازات نرمافزاری زیادی برای بهبود کارایی در پردازندههای اسکالر رایج امکان پذیر نیست‪ .‬محاوره‬
‫بین این دو‪ ،‬راهحل بهتری برای مشکل عدم تطابق بین نرمافزار و سختافزار ایجاد میکند‪.‬‬

‫‪ -2-2‬زمانبندی و بخش بندی برنامه‪ :‬این بخش تعاریف اصلی دانهبندی محاسباتی یا سطوح موازات در‬
‫برنامهها را معرفی میکند‪ .‬تأخیر ارتباطی و روشهای زمانبندی با مثالهای برنامه نویسی ارائه میشوند‪.‬‬

‫‪ -1-2-2‬اندازه دانهها و تأخیر‬


‫اندازه دانه یا دانهبندی واحدی برای مقدار محاسبات یک پردازه نرمافزاری است‪ .‬سادهترین واحد شمارش‪ ،‬تعداد‬
‫دستورات در یک دانه (بخش برنامه) میباشد‪ .‬اندازه دانه‪ ،‬قطعهی پایه انتخاب شده برنامه برای پردازش موازی را‬
‫مشخص میکند‪ .‬اندازه دانه معموالً با انواع دانهبندیِ ریز‪ ،‬متوسط یا درشت بر اساس سطوح پردازشی توصیف‬
‫میشود‪.‬‬

‫در اینجا تأخیر‪ ،1‬واحد زمانی سربار ارتباطی اتفاق افتاده بین زیر سیستمهای ماشین میباشد‪ .‬به عنوان مثال‪ ،‬تأخیر‬
‫حافظه‪ ،‬زمان مورد نیاز یک پردازنده برای دسترسی به حافظه میباشد‪ .‬زمان مورد نیاز دو پردازنده تا با هم همزمان‬
‫شوند تأخیر همزمانی نامیده میشود‪ .‬دانهبندی محاسباتی و تأخیر محاسباتی به هم وابستهاند‪ .‬ارتباط آنها در زیر‬
‫بیان میشوند‪.‬‬

‫همانطور که در شکل ‪ 5-2‬نشان داده شده است‪ ،‬موازات در سطوح پردازشی مختلف بهرهبرداری میشود‪ 5 .‬سطح‬
‫اجرای برنامه نشان دهنده اندازههای دانههای محاسباتی متفاوت میباشند و نیازهای ارتباطی و کنترل متغیر است‪.‬‬

‫درکل‪ ،‬اجرای یک برنامه ممکن است شامل ترکیبی از این سطوح باشد‪ .‬ترکیب واقعی به کاربرد‪ ،‬فرمول‪ ،‬الگوریتم‪،‬‬
‫زبان‪ ،‬برنامه‪ ،‬پشتیبانی کامپایلر و محدودیتهای سخت افزار وابسته است‪ .‬ما در زیر سطوح موازات را طبقه بندی‬
‫میکنیم و روشهای پیادهسازی آنها را از دید یک برنامه نویس و نویسنده کامپایلر مرور میکنیم‪.‬‬

‫‪1‬‬
‫‪Latency‬‬
‫‪| 77‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬

‫سطح ‪5‬‬ ‫برنامهها یا ‪Job‬ها‬


‫دانه درشت‬
‫افزایش تقاضای ارتباطی و زمانبندی‬ ‫سطح ‪4‬‬ ‫زیربرنامهها‪ ،‬مراحل کاری یا قسمتهای وابسته برنامه‬

‫درجه موازات باالتر‬


‫دانه متوسط‬
‫سطح ‪3‬‬ ‫پروسجرها‪ ،‬کارها و روالها‬

‫سطح ‪2‬‬ ‫حلقههای غیربازگشتی یاحلقههای باز شده‬


‫دانه ریز‬

‫سطح ‪1‬‬ ‫دستورات یا عبارات‬

‫شکل ‪ :5-2‬سطوح موازات در اجرای برنامههای کامپیوترهای مدرن‬


‫سطح دستور‪ :‬در سطح دستور یا عبارت‪ ،‬یک دانه معمولی کمتر از ‪ 20‬دستور دارد که به آن ریزدانه در شکل ‪-2‬‬
‫‪ 5‬میگویند‪ .‬براساس برنامههای منفرد‪ ،‬موازات ریز در این سطح ممکن است در محدوده ‪ 2‬تا هزاران باشد‪ .‬تعدادی‬
‫محققین میزان موازات در این سطح را بررسی کردهاند‪ )1991( Butler .‬گفت موازات رشته‪-‬دستورالعمل‪-‬تک‬
‫بزرگتر از ‪ 2‬است‪ )1991( Wall .‬گفت میانگین موازات در یک برنامه معمولی حول و حوش ‪ 5‬میباشد و به ندرت‬
‫از ‪ 7‬بیشتر میشود‪ )1988( Kumar .‬گفت در کاربردهای علمی میانگین موازات در محدوده ‪ 500‬تا ‪ 3000‬دستور‬
‫فرترن است که بطور همزمان در یک محیط ایدهآل اجرا میشوند‪.‬‬

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

‫سطح حلقه‪ :‬این سطح مرتبط با عملیات تکرار حلقه میباشد‪ .‬یک حلقه نوعی شامل کمتر از ‪ 500‬دستور است‪.‬‬
‫بعضی عملیات حلقه‪ ،‬اگر در تکرارهای متوالی مستقل باشند‪ ،‬میتوانند برای اجرای خطلوله برداری شوند‪ .‬بعضی‬
‫عملیات حلقه میتوانند برای اجرا روی ماشینهای ‪ ،MIMD‬خودزمانبندی‪ 1‬شوند‪.‬‬

‫موازات سطح حلقه بهینه ترین تولید برنامه برای اجرا روی یک کامپیوتر موازی یا برداری است‪ .‬به هر حال موازی‬
‫سازی حلقههای بازگشتی نسبتاً سخت است‪ .‬پردازش برداری اغلب در سطح حلقه (سطح ‪ 2‬در شکل ‪ )5-2‬توسط‬
‫یک کامپایلر برداریساز بهرهبرداری میشود‪ ،‬سطح حلقه را میتوان هنوز یک محاسبه ریزدانه دانست‪.‬‬

‫سطح زیرروال‪ :‬این سطح مرتبط به اندازه دانه متوسط در سطح کار‪ ،‬پروسجر‪ ،‬و زیرروال میباشد‪ .‬یک دانه نوعی‬
‫در این سطح شامل کمتر از ‪ 2000‬دستور است‪ .‬تشخیص موازات در این سطح بسیار مشکلتر از سطح ریزدانه است‪.‬‬
‫تجزیه و تحلیل وابستگی بین زیرروال حساستر و وابسته به تاریخچه است‪.‬‬

‫‪1‬‬
‫‪Self-scheduled‬‬
‫کانون نشر علوم‬ ‫‪| 78‬‬

‫نیازهای ارتباطی با آنچه مورد نیاز برای مد اجرای ‪ MIMD‬است کمتر قابل مقایسه است‪ .‬مد اجرای ‪SPMD‬‬
‫حالت خاصی در این سطح است‪ .‬چندکارگی نیز در این طبقه قرار دارد‪ .‬برنامه نویس باید توجه زیادی داشته باشد تا‬
‫برنامه را در این سطح ساختاردهی مجدد کند و همچنین نیازمند مقداری کمک کامپایلر میباشد‪.‬‬

‫سطح زیربرنامه‪ :‬این سطح مرتبط با سطوح مراحل کار و زیربرنامههای مرتبط است‪ .‬اندازه دانه ممکن است‬
‫شامل چندین هزار دستور باشد‪ .‬مراحل کار (‪ )job‬میتوانند در کارهای گوناگون همپوشانی کنند‪ .‬زیربرنامهها‬
‫میتوانند برای پردازندههای مختلف در مد ‪ SPMD‬یا ‪ ،MPMD1‬اغلب روی چند کامپیوترهای ارسال پیام‬
‫زمانبندی شوند‪.‬‬

‫چندبرنامگی روی یک تکپردازنده یا روی یک چندپردازنده در این سطح اداره میشود‪ .‬در گذشته موازات در این‬
‫سطح توسط طراحان الگوریتمها یا برنامهنویسها نسبت به کامپایلرها استفاده میشدند‪ .‬در حال حاضر کامپایلرهای‬
‫خوبی برای بهرهبرداری از موازات دانهبندی متوسط یا ریز نداریم‪.‬‬

‫سطح کار‪( 2‬برنامه)‪ :‬این سطح مرتبط با اجرای موازی کار یا برنامههای ضرورتاً مستقل روی یک کامپیوتر‬
‫موازی میباشد‪ .‬اندازه دانه ممکن است به اندازه دهها هزار دستور در یک برنامه باشد‪ .‬برای سوپرکامپیوترها با تعداد‬
‫کمی پردازنده بسیار قوی‪ ،‬اینچنین موازات دانه درشتی عملی میباشد‪ .‬موازات سطح کار توسط بارکننده برنامه و‬
‫اغلب توسط سیستم عامل راه اندازی میشود‪ .‬چندپردازندههای اشتراک زمانی یا اشتراک فضا این سطح موازات را‬
‫استفاده میکنند‪ .‬در حقیقت هر دوی اشتراک زمانی و فضا توسعه یافته چندبرنامگی هستند‪.‬‬

‫بطور خالصه‪ ،‬موازات ریزدانه اغلب در سطح دستور یا حلقه استفاده میشود و ترجیحاً توسط یک کامپایلر موازی یا‬
‫بهینه بکار میرود‪ .‬موازات دانه متوسط در مرحله کار یا ‪ job‬نیازمند نقش عمده برنامه نویس و کامپایلر است‪.‬‬
‫موازات درشت دانه در سطح برنامه تکیه سنگینی روی یک سیستم عامل کارا و کارایی الگوریتم استفاده شده دارد‪.‬‬
‫اغلب ارتباط متغیر‪-‬مشترک برای پشتیبانی محاسبات ریزدانه و دانه متوسط استفاده میشود‪.‬‬

‫چندکامپیوترهای ارسال پیام برای محاسبات دانه متوسط و دانه درشت استفاده میشوند‪ .‬به طور کلی‪ ،‬هرچه اندازه‬
‫دانه ریزتر‪ ،‬پتانسیل موازات بیشتر است و سربار زمانبندی و ارتباط نیز بیشتر است‪ .‬ریزدانه در مقایسه با محاسبات‬
‫درشت دانه درجه باالتری از موازات ایجاد میکند اما سربار ارتباطی سنگینتری دارد‪ .‬موازات انبوه مثل موازات داده‬
‫در کامپیوترهای ‪ SIMD‬یا ‪ MIMD‬اغلب در سطح ریز دانه استفاده میشود‪.‬‬

‫تأخیر ارتباطی‪ :‬با متعادل کردن دانهبندی و تأخیر‪ ،‬میتوان کارایی بهتری از یک سیستم کامپیوتری بدست آورد‪.‬‬
‫تأخیرهای مختلف با معماری ماشین‪ ،‬تکنولوژی پیاده سازی و الگوهای ارتباطی مشمول‪ ،‬توصیف میشوند‪ .‬معماری‬
‫و فنآوری‪ ،‬انتخابهای طراحی را برای تلورانس تأخیر بین زیرسیستمها تحت تأثیر میگذارد‪ .‬در حقیقت‪ ،‬تأخیر‬
‫یک فاکتور محدود روی مقیاس پذیری اندازه ماشین تحمیل میکند‪ .‬به عنوان مثال‪ ،‬تأخیر حافظه متناسب با ظرفیت‬

‫‪1‬‬
‫‪Multiple program multiple data, single program multiple data‬‬
‫‪2‬‬
‫‪Job (program) Level‬‬
‫‪| 79‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫حافظه افزایش مییابد‪ .‬بنابراین حافظه بدون تجاوز از سطح تولرانس تأخیر دسترسی بطور نامحدود نمیتواند افزایش‬
‫یابد‪.‬‬

‫تأخیر اتفاق افتاده در ارتباط بین پردازنده پارامتر مهم دیگری برای طراحان یک سیستم است که باید حداقل شود‪.‬‬
‫در کنار تأخیرهای سیگنال در مسیر داده‪ ،‬تأخیر ‪ IPC‬توسط الگوهای ارتباطی تحت تأثیر قرار میگیرد‪ .‬بطور کلی‬
‫‪ n‬کار که با یکدیگر ارتباط دارند ممکن است نیاز به ‪ n(n − 1)/2‬لینک ارتباطی بین خودشان داشته باشند‪.‬‬
‫بنابراین پیچیدگی با توان دو افزایش مییابد‪ .‬این منجر به یک باند ارتباطی میشود که تعداد پردازندههای مجاز در‬
‫یک سیستم کامپیوتر بزرگ را محدود میکند‪.‬‬

‫الگوهای ارتباطی توسط الگوریتم استفاده شده و پشتیبانی معماری فراهم شده‪ ،‬تعیین میشوند‪ .‬الگوهایی که متناوب ًا‬
‫اتفاق میافتند شامل ارتباطات جایگشتی‪ ،1‬همه پخشی‪ ،2‬چندپخشی‪ ،3‬چند به چند میشوند‪ .‬نیاز به ارتباطات ممکن‬
‫است موازات یا دانهبندی را محدود کند‪ .‬اکثر مواقع حدمیانهای بین این دو وجود دارد‪.‬‬

‫روشهای ارتباطی شامل کاهش تأخیر یا پیچیدگی‪ ،‬اجتناب از بن بست‪ ،‬حداقل کردن بلوکه شدن الگوهای ارتباطی‪،‬‬
‫و حد میانهای بین سربار موازات و ارتباط میباشد‪ .‬در این کتاب تکنیکهایی که تأخیر ارتباطی را حداقل میکنند‪،‬‬
‫از بن بست اجتناب میکنند و اندازه دانه را بهینه میکنند‪ ،‬مطالعه خواهیم کرد‪.‬‬

‫‪ -2-2-2‬دانه بندی و زمانبندی‬


‫دو سوأل پایه در برنامه نویسی موازی عبارتند از‪:‬‬

‫(‪ )1‬چگونه میتوانیم یک برنامه را به شاخههای موازی‪ ،‬ماژولهای برنامه‪ ،‬ریزکارها یا ریزدانهها تقسیم کنیم تا‬
‫کوتاهترین زمان اجرای ممکن را بدست آوریم؟‬

‫(‪ )2‬اندازه بهینه دانههای همروند در یک محاسبه چیست؟‬

‫مسئله اندازه دانه‪ ،‬شامل تعیین تعداد و اندازه دانهها (یا ریزکارها) در یک برنامه موازی میشود‪ .‬در حقیقت‪ ،‬راهحل‬
‫هم وابسته به ماشین و وابسته به مسئله است‪ .‬هدف‪ ،‬ایجاد یک زمانبندی کوتاه برای ایجاد سریع ماژولهای تقسیم‬
‫شده برنامه میباشد‪.‬‬

‫حدمیانهای بین سربار موازات و زمانبندی‪/‬همزمانی وجود دارد‪ .‬پیچیدگی زمانی دربرگیرنده هر دوی سربار محاسباتی‬
‫و ارتباطی میباشد‪ .‬تقسیم بندی برنامه دربرگیرنده طراح الگوریتم‪ ،‬برنامه نویسی‪ ،‬کامپایلر‪ ،‬پشتیبانی سیستم عامل‬
‫و غیره میشود‪ .‬در زیر روش دانهبندی معرفی شده توسط ‪ Kruatrachue‬و ‪ )1988( Lewis‬برای کاربردهای‬
‫برنامه موازی را معرفی میکنیم‪.‬‬

‫‪1‬‬
‫‪Permutation‬‬
‫‪2‬‬
‫‪Broadcast‬‬
‫‪3‬‬
‫‪Multicast‬‬
‫کانون نشر علوم‬ ‫‪| 80‬‬

‫مثال ‪ :4-2‬گراف برنامه‪ ،‬قبل و بعد از دانه بندی‬

‫مفهوم پایه تقسیم بندی برنامه در زیر معرفی میشود‪ .‬در شکل ‪ 6-2‬ما گراف یک برنامه را در دو اندازه دانه مختلف‬
‫نشان دادهایم‪ .‬گراف یک برنامه ساختار یک برنامه را نشان میدهد‪ .‬این گراف بسیار مشابه گراف وابستگی معرفی‬
‫شده در بخش ‪ 1-1-2‬می باشد‪ .‬هر گره در گراف برنامه مرتبط با یک واحد محاسباتی در برنامه است‪ .‬اندازه دانه‬
‫توسط تعداد پالسهای ساعت ماشین پایه (شامل پالسهای ساعت حافظه و برنامه) مورد نیاز برای اجرای همه‬
‫عملیات داخل گره اندازهگیری میشود‪.‬‬

‫هر گره شکل ‪ 6-2‬را با یک زوج )‪ (n,s‬نشان دادهایم که ‪ n‬نام گره (‪ )id‬و ‪ s‬اندازه دانه گره میباشد‪ .‬بنابراین‬
‫اندازه دانه تعداد عملیات داخل یک بخش برنامه را انعکاس میدهد‪ .‬گرههای ریزدانه اندازه دانه کوچکتر و درشت‬
‫دانه‪ ،‬اندازه دانه بزرگتر دارند‪.‬‬

‫برچسب یال )‪ (v,d‬بین دو گره‪ ،‬متغیر خروجی ‪ v‬از گره منبع یا متغیر ورودی گره مقصد و تأخیر ارتباطی ‪ d‬بین‬
‫آنها را تعیین میکند‪ .‬این تأخیر شامل هم تأخیرات مسیر و هم تأخیر حافظه میباشد‪.‬‬

‫در گراف برنامه ریزدانه ‪ 17‬گره وجود دارد (شکل ‪(6-2‬الف)) و ‪ 5‬گره در گراف برنامه درشت دانه (شکل ‪(6-2‬ب))‬
‫وجود دارد‪ .‬گره دانه‪-‬درشت با ترکیب چندین گره دانه ریز بدست میآید‪ .‬دانه بندی ریز مرتبط با برنامه زیر است‪:‬‬

‫‪Var a,b,c,d,e,f,g,h,I,j,k,l,m,n,o,p,q‬‬
‫‪Begin‬‬
‫‪1.a:=1‬‬ ‫‪2. b:=2‬‬ ‫‪3.c:=3‬‬ ‫‪4.d:=4‬‬ ‫‪5.e:=5‬‬
‫‪6.f:=6‬‬ ‫‪7. g:=a×b‬‬ ‫‪8.h:=e×d‬‬ ‫‪9.i:=d×e‬‬ ‫‪10.j:=e×f‬‬
‫‪11.k:=d×f‬‬ ‫‪12.L:=j×k‬‬ ‫‪13. m:=4×l‬‬ ‫‪14.n:=3×m‬‬ ‫‪15.o:=n×I‬‬
‫‪16.p:=o×h‬‬ ‫‪17.q:=p×g‬‬
‫‪End‬‬
‫گرههای ‪ 1‬و ‪ 2‬و ‪ 3‬و‪ 4‬و ‪ 5‬و ‪ 6‬عملیات حافظه (برداشت داده) هستند‪ .‬هر کدام یک پالس ساعت برای آدرسدهی‬
‫و ‪ 6‬پالس ساعت برای برداشت از حافظه نیازمندند‪ .‬همه گرههای باقیمانده (‪ 7‬تا ‪ )17‬عملیات پردازنده هستند و‬
‫هرکدام نیاز به دو پالس ساعت برای تکمیل شدن دارند‪ .‬بعد از بستهبندی‪ ،‬گرههای درشت دانه اندازههای از ‪ 4‬تا ‪8‬‬
‫همانطور که نشان داده شده است دارند‪.‬‬

‫گره )‪ (A,8‬در شکل ‪(6-2‬ب) از ترکیب گرههای (‪1‬و‪ )1‬و (‪1‬و‪ )2‬و (‪1‬و‪ )3‬و (‪1‬و‪ )4‬و (‪1‬و‪ )5‬و (‪1‬و‪ )6‬و (‪2‬و‪ )11‬در‬
‫شکل ‪(6-2‬الف) بدست آمده است‪ .‬اندازه دانه ‪ 8‬برای گره ‪ A‬مجموع همه اندازههای دانهها (‪)1+1+1+1+1+1+2=8‬‬
‫میباشد‪.‬‬
‫‪| 81‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬

‫‪1,1‬‬ ‫‪2,1‬‬ ‫‪A‬‬ ‫‪3,1‬‬ ‫‪4,1‬‬ ‫‪5,1‬‬ ‫‪6,1‬‬

‫‪a,6‬‬ ‫‪b,6‬‬ ‫‪c,6‬‬ ‫‪d,6‬‬ ‫‪d,6 e,6‬‬ ‫‪e,6‬‬ ‫‪f,6‬‬ ‫‪f,6‬‬


‫‪d,6‬‬ ‫‪x,i‬‬ ‫‪x,j‬‬
‫‪7,2‬‬ ‫‪B‬‬
‫‪8,2‬‬ ‫‪9,2‬‬ ‫‪C‬‬ ‫‪10,2‬‬ ‫‪11,2‬‬
‫‪n,s‬‬
‫‪j,4‬‬ ‫‪k,4‬‬
‫‪u,k‬‬ ‫‪v,h‬‬
‫‪g,4‬‬ ‫‪h,4‬‬ ‫‪I,4‬‬ ‫‪4,0‬‬
‫‪12,2‬‬ ‫)‪(n,s)=(node,grain size‬‬
‫‪D‬‬ ‫)‪(x,i)=(input,delay‬‬
‫‪L,3‬‬ ‫)‪(u,k)=(output,delay‬‬
‫‪3,0‬‬ ‫‪13,2‬‬
‫‪A,8‬‬
‫‪4,0,3,0‬‬
‫‪m,3‬‬ ‫‪K,4‬‬
‫‪14,2‬‬ ‫;‪a,6;b,6‬‬ ‫;‪d,6;e,6‬‬
‫‪c,6;d,6‬‬ ‫‪f,6‬‬
‫‪n,4‬‬ ‫‪j,4‬‬
‫‪15,2‬‬ ‫‪B,4‬‬ ‫‪C,4‬‬ ‫‪D,6‬‬

‫‪E‬‬ ‫‪o,3‬‬ ‫;‪g,4‬‬ ‫‪I,4‬‬ ‫‪n,4‬‬


‫‪16,2‬‬ ‫‪h,4‬‬
‫‪P,3‬‬
‫‪17,2‬‬ ‫‪E,6‬‬
‫(الف) گراف برنامه ریزدانه قبل از دانهبندی‬
‫‪q,0‬‬ ‫‪q,0‬‬
‫(ب) گراف برنامه درشت دانه بعد از دانهبندی‬
‫شکل ‪ :6-2‬گراف برنامه قبل و بعد از دانهبندی برای مثال ‪4-2‬‬

‫ایده بستهبندی دانه ابتدا اِعمال دانهبندی ریز به منظور رسیدن به درجه موازات باالتر است‪ .‬آنگاه چندین گره ریزدانه‬
‫را با هم ترکیب می کنیم تا گره درشت دانه بدست آید تا تأخیرات ارتباطی غیرالزم را حذف کنیم یا سربار کلی‬
‫زمانبندی را کاهش دهیم‪.‬‬

‫معموالً‪ ،‬همه عملیات ریزدانهی داخل یک گره درشت دانه‪ ،‬به یک پردازنده برای اجرا انتساب داده میشود‪ .‬تقسیم‬
‫بندی یک برنامه به دانههای ریز نیازمند ارتباطات بین پردازندهای بیشتری نسبت به دانههای درشت است‪ .‬بنابراین‬
‫بستهبندی دانه حد میانهای بین موازات و سربار ارتباطی‪/‬زمانبندی پیشنهاد میکند‪ .‬تأخیرات داخلی در عملیات‬
‫ریزدانه در داخل یک گره درش ت دانه قابل صرفنظر کردن است زیرا تأخیر ارتباطی عمدتاً توسط تأخیرهای بین‬
‫پردازندهای تعیین می شود نه تأخیرهای بین یک پردازنده مشابه‪ .‬انتخاب اندازه دانه بهینه به معنی رسیدن به‬
‫کوتاهترین زمانبندی گرهها روی یک سیستم کامپیوتر موازی است‪.‬‬

‫متناسب با گرافهای برنامه ریزدانه و گرافهای برنامه درشت دانه‪ ،‬در شکل ‪ ،6-2‬دو زمانبندی چندپردازنده در‬
‫شکل ‪ 7-2‬نشان داده شده است‪ .‬زمانبندی ریزدانه طوالنیتر است (‪ 42‬واحد زمانی) زیرا تأخیرات ارتباطی بیشتری‬
‫دارد که در شکل بصورت سایهدار نشان داده شده است‪ .‬زمانبندی درشت دانه کوتاهتر است (‪ 38‬واحد زمانی) زیرا‬
‫تأخیرهای ارتباطی بین گرههای ‪12‬و‪13‬و‪ 14‬در داخل گره ‪( D‬و همچنین تأخیرات ‪15‬و‪16‬و‪ 17‬در داخل ‪ )E‬بعد از‬
‫بستهبندی دانه نادیده گرفته شده است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 82‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬


‫‪6‬‬ ‫‪4‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪2‬‬ ‫‪5‬‬
‫‪A‬‬
‫‪7‬‬
‫‪9‬‬ ‫‪11‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪I‬‬
‫‪10‬‬ ‫‪1‬‬ ‫‪10‬‬
‫‪11‬‬ ‫‪2‬‬ ‫‪10‬‬
‫‪12‬‬ ‫‪3‬‬
‫‪14‬‬ ‫‪12‬‬ ‫‪14‬‬ ‫‪14‬‬
‫‪18‬‬ ‫‪16‬‬ ‫‪C‬‬ ‫‪B‬‬
‫‪20‬‬ ‫‪18‬‬ ‫‪18‬‬
‫‪9‬‬ ‫‪19‬‬
‫زمان‬

‫‪13‬‬
‫‪22‬‬ ‫‪8‬‬
‫‪21‬‬ ‫‪22‬‬
‫‪22‬‬
‫‪24‬‬ ‫‪7‬‬
‫‪24‬‬ ‫‪14‬‬ ‫‪D‬‬
‫‪28‬‬ ‫‪26‬‬ ‫‪28‬‬

‫‪30‬‬ ‫‪15‬‬
‫‪32‬‬ ‫‪32‬‬ ‫‪I‬‬

‫‪I‬‬ ‫‪E‬‬
‫‪35‬‬
‫‪16‬‬
‫‪37‬‬
‫‪38‬‬
‫‪40‬‬
‫‪17‬‬
‫‪42‬‬
‫(الف) ریزدانه (شکل ‪(6-2‬الف)) با دو پردازنده همزمان‬ ‫(ب) درشت دانه (شکل ‪(6-2‬ب))‬
‫شکل‪ : 7-2‬زمانبندی برنامه های ریز دانه و درشت دانه (‪:I‬زمان بیکاری‪ ،‬نواحی سایه دار‪:‬تأخیر ارتباطی)‬

‫‪ -3-2-2‬زمانبندی ایستای چندپردازنده‪ :‬بستهبندی دانه ممکن است همیشه زمانبندی کوتاهتری ایجاد نکند‪.‬‬
‫در کل‪ ،‬زمانبندی پویای چندپردازنده یک مسئله ‪ NP-hard‬میباشد‪ .‬ابتکارات زیادی برای ایجاد راهحلهای‬
‫بهینه ارائه شده است‪ .‬در زیر مفاهیم پایه زمانبندی چندپردازنده با استفاده از شماتیک ایستا را معرفی میکنیم‪.‬‬

‫تکرار گره‪ :‬به منظور حذف زمان بیکاری و کاهش بیشتر تأخیرات ارتباطی بین پردازندهها میتوان بعضی گرهها‬
‫را در بیشتر از یک پردازنده تکرار کرد‪.‬‬

‫شکل ‪(8-2‬الف) زمانبندی را بدون تکرار هیچکدام از ‪ 5‬گره نشان میدهد‪ .‬این زمانبندی شامل زمان بیکاری و‬
‫تأخیرهای طوالنی بین پردازنده (‪ 8‬واحد) ‪ P1,P2‬میباشد‪ .‬در شکل ‪(8-2‬ب)‪ ،‬گره ‪ A‬به ’‪ A‬کپی شده است و در‬
‫‪ P2‬قرار گرفته است‪ .‬همچنین بطور مشابه کپی ‪ C‬یعنی ’‪ C‬در ‪ P1‬قرار گرفته است‪ .‬هر دوی ‪A‬و ‪C‬ی اولیه نگه‬
‫داشته میشوند‪ .‬زمانبندی جدید در شکل ‪(8-2‬ب) تقریباً ‪ ٪50‬سریعتر از شکل ‪(8-2‬الف) است‪ .‬کاهش زمانِ‬
‫زمانبندی به خاطر حذف )‪ (a,8),(c,8‬بین دو پردازنده رخ داده است‪.‬‬
‫‪| 83‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫بستهبندی دانه و تکرار گره باهم استفاده می شوند تا بهترین اندازه دانه و زمانبندی مرتبط را تعیین کنند‪ 4 .‬مرحله‬
‫عمده در تعیین دانه و پردازه بهینهسازی زمانبندی وجود دارد‪:‬‬

‫مرحله‪ :1‬گراف برنامه ریز دانه را بسازیم‪.‬‬


‫مرحله ‪ :2‬محاسبات ریز دانه را زمانبندی کنیم‪.‬‬
‫مرحله‪ :3‬بستهبندی دانه را برای ایجاد دانههای درشت استفاده کنیم‪.‬‬
‫مرحله ‪ :4‬براساس گراف فشرده شده‪ ،‬یک زمانبندی موازی تولید کنیم‪.‬‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪A‬‬ ‫‪I‬‬ ‫‪P1‬‬ ‫‪P2‬‬


‫‪A‬‬ ‫‪A‬‬
‫‪A,4‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪A,4‬‬ ‫‪A',4‬‬
‫‪5‬‬ ‫‪4‬‬ ‫‪4‬‬
‫‪B‬‬
‫‪a,1‬‬ ‫‪a,8‬‬ ‫‪6‬‬ ‫‪a,1‬‬ ‫‪a,1‬‬ ‫‪a,1‬‬ ‫‪6‬‬ ‫‪B‬‬ ‫‪C 6‬‬
‫‪7‬‬ ‫‪7‬‬
‫‪B,1‬‬ ‫‪C’,1‬‬ ‫‪C,1‬‬ ‫‪C‬‬
‫‪B,1‬‬ ‫‪C,1‬‬ ‫‪I‬‬ ‫‪E‬‬
‫‪12‬‬
‫‪C 13‬‬ ‫‪D‬‬ ‫‪9‬‬
‫‪13‬‬ ‫‪b,1‬‬ ‫‪c,1‬‬ ‫‪c,1‬‬ ‫‪10‬‬
‫‪b,1‬‬ ‫‪c,8‬‬ ‫‪c,1‬‬ ‫‪14‬‬ ‫‪13‬‬
‫‪E‬‬ ‫‪D,2‬‬ ‫‪E,2‬‬
‫‪E,2‬‬ ‫‪16‬‬ ‫‪14‬‬
‫‪D,2‬‬
‫‪20‬‬
‫‪e,4‬‬ ‫‪21‬‬
‫‪d,4‬‬ ‫‪D‬‬
‫‪23‬‬

‫(ب) زمانبندی با تکرار گره (’‪)A→A,A’,C→C,C‬‬


‫‪27‬‬
‫(الف) زمانبندی بدون تکرار گره‬
‫شکل ‪ :8-2‬زمانبندی تکرار گره به منظور حذف تأخیرات ارتباطی بین پردازندهها‬

‫مثال ‪ :5-2‬تصنیف برنامه برای زمانبندی ایستای چندپردازنده شکل‪ 9-2‬مثالی از چگونگی محاسبه‬
‫اندازه دانه و تأخیر محاسباتی را نشان میدهد‪ .‬در این مثال‪ ،‬دو ماتریس ‪ A ،2×2‬و ‪ B‬را در هم ضرب میکنیم و‬
‫جمع ‪ 4‬عنصر ماتریس منتج ‪ C=A×B‬را محاسبه میکنیم‪ .‬در این برنامه ‪ 8‬ضرب و ‪ 7‬جمع وجود دارد که باید‬
‫انجام شود‪ .‬این عملیات در زیر نشان داده شدهاند‪.‬‬

‫‪A11 A12‬‬ ‫‪B‬‬ ‫‪B12‬‬ ‫‪C‬‬ ‫‪C12‬‬


‫[‬ ‫‪] × [ 11‬‬ ‫‪] = [ 11‬‬ ‫]‬
‫‪A21 A22‬‬ ‫‪B21 B22‬‬ ‫‪C21‬‬ ‫‪C22‬‬
‫‪C11 = A11 × B11 + A12 × B21‬‬
‫‪C12 = A11 × B12 + A12 × B22‬‬
‫‪C21 = A21 × B11 + A22 × B21‬‬
‫‪C22 = A21 × B12 + A22 × B22‬‬
‫‪SUM = C11 + C12 + C21 + C22‬‬

‫در شکل ‪( 9-2‬الف) شبه کد نوشته در سمت چپ‪ ،‬برای انجام یک عمل ضرب شامل خواندن عملوندها از حافظه‪،‬‬
‫ضرب و نوشتن نتیجه ضرب به حافظه میباشد‪ .‬شبه کد نوشته شده در سمت راست شکل ‪(9-2‬الف) برای انجام‬
‫یک عمل جمع شامل خواندن عملوندها از حافظه‪ ،‬جمع آنها و ذخیره نتیجه در حافظه میباشد‪ .‬همانگونه که در‬
‫کانون نشر علوم‬ ‫‪| 84‬‬

‫شکل ‪(9-2‬ب) نشان داده شده است برای ارتباط بین دو پردازنده از ‪ DMA‬استفاده شده است و زمان ارتباط با ‪T3‬‬
‫نشان داده شده است‪ .‬تأخیر ارتباطی بین پردازنده در همه یالها در گراف برنامه حذف شده است و ‪ d=212‬پالس‬
‫ساعت است‪ .‬در شکل ‪(9-2‬ب)) این تأخیرها مربوط به ارتباط بین دو پردازنده است‪.‬‬
‫‪Aik‬‬ ‫‪Bkj‬‬ ‫‪Ai1×B1j‬‬ ‫‪Ai2× B2j‬‬

‫ااندازه دانه ‪2 × 101‬یا‪K=1‬‬ ‫اندازه دانه ‪2 + 8‬یا‪K=1‬‬

‫‪Aik×Bkj‬‬ ‫‪Cij= Ai1×B1j+Ai2×B2j‬‬


‫تعداد پالس ساعت ‪CPU‬‬ ‫تعداد پالس ساعت ‪CPU‬‬
‫‪MOVE W Axx,D1‬‬ ‫‪15‬‬ ‫‪MOVE L‬‬ ‫‪PAR1,D1‬‬ ‫‪20‬‬
‫‪MOVE W Bxx,D2‬‬ ‫‪15‬‬ ‫‪MOVE L‬‬ ‫‪PAR2,D2‬‬ ‫‪20‬‬
‫‪MPTY‬‬ ‫‪D1,D2‬‬ ‫‪71‬‬ ‫‪ADD L‬‬ ‫‪D1,D2‬‬ ‫‪8‬‬
‫‪MOVE L D2,PAR‬‬ ‫‪20‬‬ ‫‪MOVE L‬‬ ‫‪D2,PSUM‬‬ ‫‪20‬‬
‫(الف) محاسبه اندازه دانه در کد اسمبلی ‪ M68000‬با پالس ساعت ساعت ‪20MHZ‬‬
‫‪P1‬‬ ‫اتصال ترتیبی‬ ‫‪P2‬‬ ‫‪D=T1+T2+T3+T4+T5+T6=20+20+‬‬
‫‪T1‬‬ ‫‪32+20+20+100=212Cycles‬‬
‫‪DMA‬‬ ‫‪T3‬‬ ‫‪DMA‬‬ ‫‪T4‬‬ ‫‪T5‬‬
‫‪Memory‬‬ ‫‪T2‬‬ ‫‪Memory‬‬
‫‪ T3‬زمان انتقال ‪ 32‬بیت در ‪=T6 20Mbps‬تأخیر قراردادهای نرمافزاری (فرض میکنیم ‪ 5‬دستور ‪ MOVE‬باشد=‪)100‬‬
‫(ب) محاسبه تأخیر ارتباطی ‪d‬‬

‫× ‪A‬‬ ‫× ‪B‬‬ ‫× ‪C × D‬‬ ‫× ‪E‬‬ ‫× ‪F‬‬ ‫× ‪G × H‬‬


‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬
‫‪J‬‬ ‫‪+‬‬ ‫‪K +‬‬ ‫‪L +‬‬ ‫‪M +‬‬
‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬
‫‪+ O‬‬
‫‪N‬‬ ‫‪+‬‬
‫‪d‬‬ ‫‪d‬‬
‫‪+ P‬‬
‫‪SUM‬‬
‫(ج) گراف برنامه ریز دانه‬
‫شکل ‪ :9-2‬محاسبه اندازه دانه و تأخیر ارتباطی برای گراف برنامه مثال ‪5.2‬‬

‫یک گراف دانهبندی ریز در شکل ‪(9-2‬ج) بدست آمده است‪ .‬نکته اینکه اندازه دانه و تأخیر ارتباطی ممکن است در‬
‫پردازندههای مختلف و لینکهای ارتباطی استفاده شده در سیستم متفاوت باشد‪.‬‬
‫‪| 85‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫شکل ‪10-2‬زمانبندی برنامه ریزدانه را ابتدا روی یک تک پردازنده ترتیبی (‪ )P1‬و سپس روی یک سیستم ‪8‬‬
‫پردازنده (‪ P1‬تا ‪ )P8‬نشان میدهد‪ .‬بر اساس گراف ریزدانه شکل ‪(9-2‬ج)‪ ،‬اجرای ترتیبی نیازمند ‪ 864‬پالس ساعت‬
‫است تا تکمیل شود بدون اینکه تأخیر ارتباطی اتفاق بیافتد‪.‬‬

‫شکل ‪(10-2‬ب) نشان میدهد که برای اجرای ‪ 15‬گره در ‪ 8‬پردازنده با تأخیرات ارتباطی اتفاق افتاده (نواحی‬
‫سایهدار) در مرحله ‪ 741 ،2‬پالس ساعت مورد نیاز است‪ .‬نکته اینکه تأخیرهای ارتباطی اجرای موازی را بطور قابل‬
‫توجهی کاهش میدهند‪ .‬در نتیجه بسیاری از پردازندهها بیکار میشوند (در شکل بیکاری را با ‪ I‬نشان دادهایم)‪ ،‬غیر‬
‫از ‪ P1‬که جمع نهایی را تولید میکند‪ .‬بنابراین فاکتور افزایش سرعت ‪ 864/741=1.16‬بدست میآید‪ .‬این نشان‬
‫میدهد که در دانه بندی ریز در این سیستم با وجود استفاده از ‪ 8‬پردازنده میزان تسریع تنها ‪ 1.16‬میباشد‪.‬‬

‫حال میخواهیم چگونگی استفاده از بستهبندی دانه (مرحله ‪ )3‬را برای کاهش سربار ارتباطی نشان دهیم‪ .‬همانطور‬
‫که در شکل ‪ 11-2‬نشان داده شده است‪ ،‬گرههای دو مرحله باال را به چهار گره درشت دانه که با ‪Y, X, W, V‬‬
‫برچسب خوردهاند گروه بندی میکنیم‪ .‬سه گروه باقیمانده (‪ )P, O, N‬گره پنجم ‪ Z‬را شکل میدهند‪ .‬همانطور که‬
‫در شکل ‪(11-2‬الف) نشان داده شده است فقط یک سطح ارتباط بین پردازنده مورد نیاز است‪.‬‬

‫چون اکنون درجه موازات به ‪ 4‬در گراف برنامه کاهش یافته است‪ ،‬ما از ‪ 4‬پردازنده برای اجرای این برنامه دانه‬
‫درشت استفاده میکنیم‪ .‬زمانبندی موازی بدست آمده (شکل ‪ )11-2‬برای این برنامه ‪ 446‬پالس ساعت است که‬
‫باعث بهبود سرعت به ‪ 864/446=1.94‬میباشد‪ .‬یعنی نسبت به حالت ریزدانه حتی با وجود استفاده از ‪4‬‬
‫پردازنده‪ ،‬تسریع در این حالت بیشتر از استفاده از ‪ 8‬پردازنده میباشد‪.‬‬

‫‪ -4-2-2‬چه موقع استفاده از چند پردازنده مناسب است؟‬

‫در مثالهای ارائه شده مشاهده شد که گاهی اوقات استفاده از موازات باعث تسریع زیادی نمیشود‪ .‬علت اصلی این‬
‫موضوع وجود تأخیر ارتباطی بین پردازندهها میباشد‪ .‬اگر زمان ارتباط زیاد باشد استفاده از موازات مطلوب نیست‪ .‬در‬
‫مثال قبل دیدیم که استفاده از ‪ 8‬پردازنده تسریع ‪ 1.16‬برابر دارد که مطلوب نیست‪ .‬حال میخواهیم فرمولی برای‬
‫سنجش اینکه چه موقع موازی سازی بهتر است یا نه ارائه دهیم‪.‬‬

‫یک آنالیز ساده این است که ‪ M‬پردازه داشته باشیم که هر کدام زمان اجرای ‪ R‬دارند و زمان ارتباط بین هر دو‬
‫پردازه ‪ C‬باشد و یک سیستم دوپردازنده داشته باشیم‪ .‬فرض کنیم ‪ M-K‬پردازه به پردازنده ‪ P1‬دادهایم بنابراین‬
‫پردازنده ‪ K ،P2‬پردازه خواهد داشت‪.‬‬

‫)‪= R×max(M-K,K)+C×K×(M-K‬زمان اجرای کل‬

‫در یک تکپردازنده زمان کل اجرای ‪ M‬پردازه ‪ R×M‬میباشد‪ .‬زمانی استفاده از دو پردازنده مطلوب است که زمان‬
‫اجرای کل از ‪ R×M‬کمتر باشد‪ .‬یعنی )‪ . R×M>R×max(M-K,K)+C×K×(M-K‬اگر ‪ C‬در حدی باشد که‬
‫کانون نشر علوم‬ ‫‪| 86‬‬

‫)‪ C<(2R/M‬استفاده از دو پردازنده بهتر است در غیر اینصورت تک پردازنده بهتر است‪ .‬یا به عبارت دیگر‬
‫)‪ (M/2)<(R/C‬نسبت ‪ R/C‬خیلی مهم است‪.‬‬

‫‪0‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P4‬‬ ‫‪P5‬‬ ‫‪P6‬‬ ‫‪P7‬‬ ‫‪P8‬‬


‫‪A‬‬ ‫‪0‬‬
‫‪A‬‬ ‫‪B‬‬ ‫‪C‬‬ ‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫‪G‬‬ ‫‪H‬‬
‫‪101‬‬ ‫‪101‬‬
‫‪B‬‬

‫‪202‬‬
‫‪C‬‬
‫‪303‬‬ ‫‪I‬‬ ‫‪I‬‬ ‫‪I‬‬ ‫‪I‬‬
‫‪D‬‬
‫‪313‬‬
‫‪J‬‬ ‫‪K‬‬ ‫‪L‬‬ ‫‪M‬‬
‫‪404‬‬ ‫‪321‬‬
‫‪E‬‬
‫‪505‬‬
‫زمان اجرا‬

‫‪F‬‬
‫‪533‬‬ ‫‪I‬‬ ‫‪I‬‬
‫‪N‬‬ ‫‪O‬‬
‫‪606‬‬ ‫‪541‬‬
‫‪G‬‬

‫‪707‬‬ ‫‪753‬‬ ‫‪I‬‬


‫‪H‬‬ ‫‪P‬‬
‫‪808‬‬ ‫‪741‬‬
‫‪J‬‬
‫‪816‬‬ ‫‪K‬‬
‫‪824‬‬ ‫‪761‬‬
‫‪L‬‬
‫‪832‬‬ ‫‪M‬‬
‫(ب) زمانبندی موازی‬
‫‪840‬‬ ‫‪N‬‬
‫‪848‬‬ ‫‪O‬‬
‫‪856‬‬
‫‪864‬‬ ‫‪P‬‬ ‫شکل ‪ :10-2‬زمانبندی ترتیبی در مقایسه با زمانبندی موازی مثال ‪5-2‬‬
‫(الف) زمانبندی ترتیبی‬
‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P4‬‬
‫‪A‬‬ ‫‪C‬‬ ‫‪E‬‬ ‫‪G‬‬
‫‪V‬‬ ‫‪W‬‬ ‫‪X‬‬ ‫‪Y‬‬
‫‪101‬‬
‫× ‪A‬‬ ‫‪B‬‬ ‫×‬ ‫‪C‬‬ ‫×‬ ‫‪D‬‬ ‫×‬ ‫‪E‬‬ ‫×‬ ‫‪F‬‬ ‫×‬ ‫‪G‬‬ ‫×‬ ‫‪H‬‬ ‫×‬ ‫‪B‬‬ ‫‪D‬‬ ‫‪F‬‬ ‫‪H‬‬
‫‪202‬‬
‫‪J‬‬ ‫‪K‬‬ ‫‪L‬‬ ‫‪M‬‬
‫‪210‬‬

‫‪J‬‬ ‫‪+‬‬ ‫‪K‬‬ ‫‪+‬‬ ‫‪L‬‬ ‫‪+‬‬ ‫‪M‬‬ ‫‪+‬‬

‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬ ‫‪d‬‬


‫‪422‬‬
‫‪Z‬‬ ‫‪N‬‬
‫‪+‬‬ ‫‪O‬‬ ‫‪430‬‬
‫‪N‬‬ ‫‪+‬‬
‫‪Z‬‬ ‫‪O‬‬
‫‪438‬‬
‫اندازه دانه‪:‬‬ ‫‪446‬‬ ‫‪P‬‬
‫=‪V=W=X=Y‬‬ ‫‪+‬‬ ‫‪P‬‬
‫‪101+101+8=210‬‬ ‫(ب) زمانبندی موازی برای برنامه بسته بندی شده‬
‫‪SUM‬‬
‫‪Z=8+8+8=24‬‬
‫تأخیر ارتباطی‪d=212:‬‬
‫(الف) دانه بندی ‪ 15‬گره کوچک به ‪ 5‬گره بزرگتر‬
‫شکل ‪ :11-2‬زمانبندی موازی برای مثال‪ 5-2‬بعد از بسته بندی دانه به منظور کاهش تأخیرهای ارتباطی‬
‫‪| 87‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫‪ -3-2‬جریان داده در مقایسه با جریان کنترل‬

‫‪ -1-3-2‬مکانیزم های جریان برنامه‪ :1‬کامپیوترهای سنتی براساس یک مکانیزم جریان کنترل هستند که ترتیب‬
‫اجرای برنامه به طور صریح در برنامه کاربر قرار دارد‪ .‬کامپیوترهای جریان داده‪ 2‬براساس مکانیزم راهاندازی‪-‬داده‬
‫هستند که اجازه میدهند اجرای هر دستور با قابل دسترس شدن داده (عملوند) انجام شود‪ .‬کامپیوترهای جریان داده‬
‫بر درجه باالی موازات در سطح دستورات ریز دانه تأکید میکنند‪ .‬کامپیوترهای کاهش یافته‪ 3‬براساس مکانیزم‬
‫راهاندازی‪-‬تقاضا هستند که یک عمل را بر اساس نیاز آن به نتایج سایر محاسبات مقداردهی میکنند‪.‬‬

‫کامپیوترهای وننیومن سنتی از یک شمارنده برنامه‪ 4‬استفاده میکنند تا ترتیب اجرای دستورات یک برنامه را‬
‫مشخص کنند‪ PC .‬با جریان دستورات در یک برنامه مقدار میگیرد‪ .‬این شکل اجرای ترتیبی‪ ،‬راهاندازی‪-‬کنترل‬
‫نامیده میشود و جریان برنامه بطور صریح توسط برنامه نویس کنترل میشود‪.‬‬

‫کامپیوترهای جریان‪-‬کنترل از حافظه مشترک استفاده میکنند تا دستورات برنامه و اشیاء داده را نگه دارند‪ .‬متغیرهای‬
‫داخل حافظه مشترک توسط دستورات زیادی بروز میشوند‪ .‬اجرای یک دستورالعمل ممکن است اثرات جانبی روی‬
‫بقیه دستورات داشته باشد زیرا حافظه مشترک است‪ .‬در بسیاری حاالت‪ ،‬اثرات جانبی از وقوع پردازش موازی‬
‫جلوگیری میکنند‪.‬‬

‫در یک کامپیوتر جریان داده‪ ،‬یک دستور زمانی اجرا میشود که عملوندهای آن قابل دسترس باشند و از شمارنده‬
‫برنامه استفاده نمیشود ‪ .‬در تئوری‪ ،‬هرگاه عملوندها قابل دسترس شوند‪ ،‬دستور باید آماده اجرا باشد‪ .‬دستورات در‬
‫یک برنامه راهاندازی‪-‬داده به هیچ روشی مرتب نمیشوند‪ .‬بجای اینکه دادهها در حافظه مشترک ذخیره شوند‪ ،‬بطور‬
‫مستقیم داخل دستور نگه داشته میشوند‪.‬‬

‫یکسری توکن ترتیب اجرا را مشخص میکنند و این توکنها بین دستورات رد و بدل میشوند‪ .‬دادههای تولید شده‬
‫توسط یک دستور به تمامی دستوراتی که به آن نیاز دارند ارسال میشوند‪ .‬توکنهای داده‪ ،‬وقتی یکبار توسط یک‬
‫دستور مصرف شدند‪ ،‬برای سایر دستورات قابل استفاده نخواهند بود‪.‬‬

‫این شماتیکِ راهاندازی‪-‬داده نیاز به حافظه مشترک‪ ،‬شمارنده برنامه و کنترل ترتیب ندارد‪ .‬ولی برای اطالع از در‬
‫دسترس بودن عملوندها نیازمند مکانیزم خاصی میباشد تا توکنهای دادهها را با دستوراتی که به آن نیاز دارند‬
‫تطابق دهد‪ .‬این اعمال بصورت آسنکرون انجام میشود‪ .‬نه حافظه مشترک و نه اثرات جانبی داریم‪.‬‬

‫‪1‬‬
‫‪Program Flow Mechanisms‬‬
‫‪2‬‬
‫‪Dataflow Computers‬‬
‫‪3‬‬
‫‪Reduction Computers‬‬
‫‪4‬‬
‫‪PC=program counter‬‬
‫کانون نشر علوم‬ ‫‪| 88‬‬

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

‫یک معماری جریان داده‪ :‬تعداد کمی کامپیوتر جریان داده عملیاتی وجود دارند‪ Arvind .‬و همکارانش در‬
‫‪ MIT‬یک معماری ‪ tagged-token‬برای ساخت کامپیوترهای جریان داده توسعه دادهاند‪ .‬همانطور که در شکل‬
‫‪ 2-12‬نشان داده شده است‪ ،‬معماری کلی شامل ‪ n‬عنصر پردازشی (‪ )PE‬است که توسط یک شبکه مسیریابی‬
‫‪ n×n‬به هم متصل شدهاند‪ .‬کل سیستم عملیات جریان داده خطلوله شده را در همه ‪ n‬تا ‪ PE‬پشتیبانی میکند‪.‬‬
‫ارتباطات بین ‪ PE‬از طریق شبکه مسیریابی خطلوله انجام میشود‪.‬‬

‫در داخل هر ‪ ،PE‬ماشین یک مکانیزم تطابق توکن سطح پایین تهیه میکند که فقط دستوراتی را که داده ورودیشان‬
‫(توکنها) در حال حاضر قابل دسترس است منتشر میکند‪ .‬هر داده با آدرس دستوری که در آن قرار دارد و محتوایی‬
‫که دستور اجرا میشود تگ میشود‪ .‬دستورات در حافظه برنامه ذخیره میشوند‪ .‬توکنهای تگ شده به ‪ PE‬از طریق‬
‫مسیر محلی وارد میشوند‪ .‬توکنها همچنین به سایر ‪PE‬ها از طریق شبکه مسیریابی ارسال میشوند‪ .‬همه عملیات‬
‫چرخش توکن بدون بلوکه شدن خط لوله میشوند‪.‬‬
‫از شبکه مسیریابی‬
‫مسیر عمومی‬ ‫×‬
‫مسیر‬
‫شبکه مسیریابی ‪n×n‬‬ ‫عمومی‬ ‫تطابق توکن‬ ‫حافظه برنامه‬
‫‪I-structure‬‬

‫‪PE1‬‬ ‫‪PE2‬‬ ‫‪PEn‬‬


‫‪ALU‬‬ ‫محاسبه‬

‫(الف) معماری عمومی‬ ‫‪TAG‬‬

‫شکل دادن‬
‫×‬ ‫‪TAG‬‬
‫عنصر پردازشی ‪PE‬‬
‫به شبکه‬
‫مسیریابی‬
‫طراحی داخلی یک عنصر پردازشی‬ ‫(ب)‬
‫شکل ‪ :12-2‬کامپیوتر جریان داده ‪MIT, Tagged-token‬‬
‫فرد ممکن است فکر کند آدرس دستورالعمل در یک کامپیوتر جریان داده جایگزین شمارنده برنامه شده و مشخصه‬
‫محتوا جایگزین ثبات فریم در یک کامپیوتر جریان کنترل شده است‪ .‬تطابق داده با تگ مشابه به دستوری که به‬
‫آن نیاز دارد وظیفه ماشین است‪ .‬بنابراین دادههای جدید که با تگ جدید ساخته خواهند شد تعیین کننده دستور(ات)‬
‫بعدی میباشند‪ .‬بنابراین‪ ،‬هر دستور نشان دهنده یک عمل همزمانی است‪ .‬توکنهای جدید در طول خط لوله ‪PE‬‬
‫برای استفاده مجدد با سایر ‪PE‬ها از طریق مسیر سراسری که خطلوله شده است چرخیده و شکل دهی میشوند‪.‬‬
‫‪| 89‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫مکانیزم همزمانی دیگری که ساختار ‪ I1‬نامیده میشود در داخل هر ‪ PE‬تهیه میشود‪ .‬ساختار ‪ I‬یک واحد حافظه‬
‫تگ دار شده برای همپوشانی کارایی ساختمان داده هم برای مصرف کننده و هم تولید کننده میباشد‪ .‬هر کلمه‬
‫ساختار ‪ I‬از ‪ 2‬بیت تگ استفاده میکند که تعیین میکند چه موقع کلمه خالی و یا پر است یا درخواست خواندن‬
‫دارد‪ .‬هدف کاهش کپیهای زیاد ساختمان دادههای بزرگ در عملیات جریان داده است‪.‬‬

‫مثال ‪ :6-2‬مقایسه کامپیوترهای جریان‪-‬کنترل و جریان داده‪ :‬در این مثال ‪ 24‬دستور باید اجرا شوند‬
‫(‪ 8‬تقسیم‪ 8 ،‬ضرب‪ ،‬و ‪ 8‬جمع) این دستورات در گراف جریان داده شکل ‪(13-2‬الف) نشان داده شدهاند‪ .‬گراف جریان‬
‫داده مشابه گراف وابستگی یا گراف برنامه است‪ .‬تنها تفاوت این است که توکنهای داده در لبههای یک گراف‬
‫جریان داده ارسال می شوند‪ .‬فرض کنید که هر جمع‪ ،‬ضرب و تقسیم به ترتیب نیاز به ‪1‬و‪2‬و‪ 3‬پالس ساعت برای‬
‫کامل شدن دارند‪ .‬همانطور که در شکل ‪(13-2‬ب) نشان داده شده است‪ ،‬اجرای ترتیبی ‪ 24‬دستور در یک تک‬
‫پردازنده جریان کنترل نیاز به ‪ 48‬پالس ساعت دارد‪.‬‬

‫اما چندپردازنده جریان داده‪ ،‬اجرا را در ‪ 14‬پالس ساعت تمام میکند (شکل ‪(13-2‬ج))‪ .‬فرض میکنیم که ورودیهای‬
‫خارجی (‪ )c0, i=1,2,…8 , fi, ci, di‬قبل از ورود به حلقه‪ ،‬در دسترس باشند‪ .‬با ‪ 4‬پردازنده‪ ،‬دستورات ‪a4, a3,‬‬
‫‪ a2, a1‬همه برای اجرا در سه پالس ساعت اول آمادهاند‪ .‬نتایج بدست آمده‪ ،‬اجرای ‪ a7, a6, b1, a5‬را در شروع‬
‫پالس ساعت ‪ 4‬تریگر میکنند‪ .‬زنجیره راهاندازی‪-‬داده در شکل ‪(13-2‬ج) نشان داده شده است‪ .‬خروجی ‪ c8‬به خاطر‬
‫وابستگی آن به همه ‪ci‬های قبلی‪ ،‬آخرین خروجی تولید شده خواهد بود‪.‬‬

‫شکل ‪( 13-2‬د) اجرای مجموعه مشابهی از محاسبات را روی یک چندپردازنده سنتی با استفاده از حافظه مشترک‬
‫برای نگهداری نتایج میانی نشان میدهد (‪ ti,si‬برای ‪ .)i=1,2,3,4‬نکته اینکه هیچ حافظه مشترکی در پیادهسازی‬
‫جریان داده استفاده نمیشود‪ .‬این مثال هیچگونه بهبودی را در اجرای جریان داده در مقایسه با اجرای جریان کنترل‬
‫نشان نمیدهد‪.‬‬

‫در تئوری حداقل زمان در طول مسیر بحرانی ‪ 13 ،a1b1c1c2…c8‬پالس ساعت میباشد‪ .‬پیاده سازی و کنترل‬
‫رفتار زنجیرهای در جریان داده مشکلتر است و ممکن است نتایج طوالنیتری را بخاطر سربار در مقایسه با عملیات‬
‫متحدالشکل انجام شده توسط همه پردازندهها در شکل ‪(13-2‬د) ایجاد کند‪.‬‬

‫یکی از مزایای تگ کردن هر داده این است که دادهها از محتوای مختلف میتوانند بطور آزادانه در خطلوله اجرای‬
‫دستور ترکیب شوند‪ .‬بنابراین موازات سطح دستور از گرافهای جریان داده میتواند تأخیر ارتباطی را حذف کند و‬
‫گم شدنها را در انتظارات همزمانی حداقل کند‪ .‬در کنار تطابق توکن و ساختار ‪ ،I‬تکنولوژی کامپایلر برای تولید‬
‫گرافهای جریان داده برای کامپیوترهای جریان داده ‪ tagged token‬مورد نیاز است‪ .‬معماری جریان داده مدل‬

‫‪1‬‬
‫‪I-structure‬‬
‫کانون نشر علوم‬ ‫‪| 90‬‬

‫ایدهآل برای محاسبات موازی انبوه پیشنهاد میکند زیرا همه اثرات جانبی دوررس حذف میشوند‪ .‬اثرات جانبی‬
‫اشاره به اصالح بعضی متغیرهای مشترک توسط عملیات نامرتبط دارد‪.‬‬
‫‪d1‬‬ ‫‪e1‬‬ ‫‪d2‬‬ ‫‪e1 d3‬‬ ‫‪e3 d4‬‬ ‫‪e4‬‬ ‫‪d5 e5‬‬ ‫‪d6‬‬ ‫‪e6 d7 e7‬‬ ‫‪d8‬‬ ‫‪e8‬‬

‫‪Input d,e,f‬‬
‫‪C0=0‬‬
‫‪a1‬‬ ‫‪a2‬‬ ‫‪a3‬‬ ‫‪a4‬‬ ‫‪a5‬‬ ‫‪a6‬‬ ‫‪a7‬‬ ‫‪a8‬‬
‫‪For I form 1 to 8 do‬‬
‫‪Begin‬‬ ‫‪f2‬‬ ‫‪f3‬‬ ‫‪f4‬‬ ‫‪f5‬‬ ‫‪f6‬‬ ‫‪f7‬‬ ‫‪f8‬‬
‫‪ai:=di/ei‬‬ ‫‪f‬‬
‫‪b1‬‬ ‫‪b2‬‬ ‫‪b3‬‬ ‫‪b4‬‬ ‫‪b5‬‬ ‫‪b6‬‬ ‫‪b7‬‬ ‫‪b8‬‬
‫‪bi:=ai*fi‬‬
‫‪ci:=bi+ci-1‬‬ ‫‪c1‬‬ ‫‪c2‬‬ ‫‪c3‬‬ ‫‪c4‬‬ ‫‪c5‬‬ ‫‪c6‬‬ ‫‪c7‬‬ ‫‪c8‬‬
‫‪end‬‬ ‫‪c0‬‬
‫‪output a,b,c‬‬ ‫(الف) برنامه نمونه و گراف جریان داده آن‬

‫‪1‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪10‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪43‬‬ ‫‪46‬‬ ‫‪48‬‬
‫‪a1‬‬ ‫‪b1‬‬ ‫‪c1‬‬ ‫‪a2‬‬ ‫‪b2‬‬ ‫‪c2‬‬ ‫…………………‬ ‫‪a8‬‬ ‫‪b8‬‬ ‫‪c8‬‬
‫(ب) اجرای ترتیبی برنامه در یک تک پردازنده در ‪ 48‬پالس ساعت‬
‫‪1‬‬ ‫‪4‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11 12‬‬ ‫‪13 14‬‬
‫‪a1‬‬ ‫‪a5‬‬ ‫‪c1‬‬ ‫‪c2‬‬ ‫‪c3‬‬ ‫‪c4‬‬ ‫‪c5‬‬ ‫‪c6‬‬ ‫‪c7‬‬ ‫‪c8‬‬

‫‪a2‬‬ ‫‪b1‬‬ ‫‪b2‬‬ ‫‪b4‬‬ ‫‪b6‬‬ ‫‪b8‬‬

‫‪a3‬‬ ‫‪a6‬‬ ‫‪b3‬‬ ‫‪b5‬‬ ‫‪b7‬‬

‫‪a4‬‬ ‫‪a7‬‬ ‫‪a8‬‬


‫(ج) اجرای راهاندازی داده در یک کامپیوتر ‪ 4‬پردازنده جریان داده در ‪ 14‬پالس ساعت‬
‫‪a1‬‬ ‫‪a5‬‬ ‫‪b1‬‬ ‫‪b5‬‬ ‫‪s1‬‬ ‫‪t1‬‬ ‫‪c1‬‬ ‫‪c5 S1=b2+b1,t1=b3+s1,c1=b1+c0,c5=b5+c4‬‬
‫‪a2‬‬ ‫‪a6‬‬ ‫‪b2‬‬ ‫‪b6‬‬ ‫‪s2‬‬ ‫‪t2‬‬ ‫‪c2‬‬ ‫‪c6 S2=b4+b3,t2=s1+s2,c2=s1+c0,c6=s3+c4‬‬

‫‪a3‬‬ ‫‪a7‬‬ ‫‪b3‬‬ ‫‪b7‬‬ ‫‪s3‬‬ ‫‪t3‬‬ ‫‪c3‬‬ ‫‪c7 S3=b6+b5,t3=b7+s3,c3=t1+c0,c7=t3+c4‬‬

‫‪a4‬‬ ‫‪a8‬‬ ‫‪b4‬‬ ‫‪b8‬‬ ‫‪s4‬‬ ‫‪t4‬‬ ‫‪c4‬‬ ‫‪c8 S4=b8+b7,t4=s4+s3,c4=t2+c0,c8=t4+c4‬‬

‫(د) اجرای موازی روی یک سیستم اشتراک حافظه ‪ 4‬پردازنده در ‪ 14‬پالس ساعت‬
‫شکل ‪ :13-2‬مقایسه بین کامپیوترهای جریان داده و جریان‪-‬کنترل‬

‫راهاندازی‪-‬تقاضا‪1‬‬ ‫‪ -2-3-2‬مکانیزم های‬

‫در یک ماشین کاهشیافته‪ ،‬محاسبات توسط تقاضا برای نتیجه یک عمل تریگر میشود‪ .‬ارزیابی عبارت ریاضی‬
‫))‪ a=((b+1)×c-(d÷e‬را در نظر بگیرید‪ .‬محاسبه راهاندازی داده‪ ،‬روش پایین به باال را انتخاب میکند و از‬
‫داخلیترین عملیات ‪ b+1‬و ‪ d÷e‬شروع میکند‪ .‬سپس با عمل × ادامه میدهد و در انتها خارجیترین عمل یعنی‬

‫‪1‬‬
‫‪Demand Driven Mechanisms‬‬
‫‪| 91‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫– را انجام میدهد‪ .‬اینچنین محاسبهای ارزیابی سریع نامیده میشود زیرا عملیات فوراً بعد از اینکه عملوندهای آنها‬
‫آماده شد اجرا میشوند‪.‬‬

‫محاسبه راهاندازی‪-‬تقاضا روش باال به پایین را انتخاب میکند و اول مقدار ‪ a‬را تقاضا میکند که تقاضای ارزیابی‬
‫عبارت سطح بعدی ‪ (b+1)Xc‬و ‪ d÷e‬را تریگر میکند که خود تقاضای ارزیابی ‪ b+1‬در داخلیترین سطح را‬
‫تریگر میکند‪ .‬نتایج به تقاضا دهنده تودرتو به ترتیب معکوس برگردانده میشوند قبل از اینکه ‪ a‬ارزیابی شود‪.‬‬

‫محاسبه راهاندازی‪-‬تقاضا ارزیابی تنبل است زیرا عملیات وقتی اجرا میشوند که فقط نتایج آنها توسط سایر دستورات‬
‫مورد نیاز واقع شوند‪ .‬روش راهاندازی‪ -‬تقاضا بطور طبیعی با مفهوم برنامه نویسی تابعی تطابق دارد‪ .‬حذف اثرات‬
‫جانبی در برنامه نویسی تابعی باعث میشود برنامهها سادهتر موازی شوند‪ .‬دو نوع مدل ماشین کاهش یافته وجود‬
‫دارد که هر دو مکانیزم کنترل بازگشتی دارند که در زیر توضیح داده میشوند‪.‬‬

‫مدلهای ماشین کاهش یافته‪ :‬در یک مدل کاهش رشتهای‪ ،‬هر تقاضا دهنده یک کپی مجزا از عبارت را‬
‫برای ارزیابی خودش میگیرد‪ .‬یک عبارت رشتهای بزرگ به یک مقدار تنها در روش بازگشتی کاهش مییابد‪ .‬هر‬
‫مرحله کاهش یک عملگر دارد که با یک مراجعه محاطی به تقاضای عملوندهای ورودی مرتبط دنبال میشود‪.‬‬
‫عملگر تا زمانیکه آرگومانهای ورودیش ارزیابی میشوند‪ ،‬معلق میشود‪ .‬به یک عبارت کامالً کاهش یافته میگوییم‬
‫وقتیکه همه آرگومانهای آن توسط مقادیر دقیق جایگزین میشوند‪.‬‬

‫در یک مدل کاهش گراف‪ ،‬عبارت توسط یک گراف جهتدار نشان داده میشود‪ .‬گراف با ارزیابی پرشها یا‬
‫زیرگرافهایش کاهش مییابد‪ .‬قسمتهای مختلف یک گراف یا زیرگراف به طور موازی براساس تقاضا میتوانند‬
‫کاهش یابند یا ارزیابی شوند‪ :‬به هر تقاضا دهنده یک اشارهگر به نتیجه کاهش داده میشود‪ .‬تقاضادهنده همه‬
‫مراجعهها به آن گراف را دستکاری میکند‪.‬‬

‫دستکاری گراف براساس اشتراک آرگومانها با استفاده از اشارهگرها میباشد‪ .‬این حرکت در گراف و بدست آوردن‬
‫مراجع ادامه مییابد تا زمانیکه آرگومانهای ثابت مشاهده شوند‪ .‬این تازمانیکه مقدار ‪ a‬تعیین شود و یک کپی به‬
‫دستور متقاضی اصلی برگشت داده شود ادامه مییابد‪.‬‬

‫‪ -3-3-2‬مقایسه مکانیزم های جریان‬

‫معماریهای کامپیوتر جریان‪-‬کنترل‪ ،‬جریان داده و کاهشی در جدول ‪ 1-2‬مقایسه شدهاند‪ .‬میزان کنترل صریح‬
‫راهاندازی‪-‬کنترل از راهاندازی‪-‬تقاضا بیشتر است و کمترین کنترل در راهاندازی‪-‬داده میباشد‪ .‬تفاوت عمده بین‬
‫کامپیوترهای راهاندازی‪-‬داده و راهاندازی‪-‬تقاضا‪ ،‬ارزیابی سریع و ارزیابی تنبل میباشد‪.‬‬

‫توکنهای کنترل در کامپیوترهای جریان‪-‬کنترل و ماشینهای کاهشی استفاده میشوند‪ .‬مزایا و معایب لیست شده‬
‫مدلهای ماشین کاهشی و جریان داده براساس نتایج تحقیقات است نه آزمایشات عملیاتی گسترده‪.‬‬
‫کانون نشر علوم‬ ‫‪| 92‬‬

‫با وجود معایب زیاد مدل ماشین ون‪-‬نیومن سنتی‪ ،‬صنعت هنوز هم درحال ساخت کامپیوترهای جریان‪-‬کنترل‬
‫میباشد‪ .‬انتخاب براساس‪ ،‬هزینه مفید‪ ،‬بازاریابی‪ ،‬و رقابت ویندوزهای استفاده شده در صنعت میباشد‪ .‬مکانیزمهای‬
‫جریان برنامه انتخابهای معماری را دیکته میکنند‪ .‬هر دو مدل کاهشی و جریان داده‪ ،‬برخالف پتانسیل باالی‬
‫موازاتشان‪ ،‬هنوز در مرحله تحقیقاتی هستند‪ .‬ماشینهای جریان‪-‬کنترل هنوز هم بر بازار احاطه دارند‪.‬‬

‫در این کتاب ما بیشتر کامپیوترهای موازی جریان‪-‬کنترل را مطالعه میکنیم‪ .‬اما معماریهای جریان‪-‬داده و‬
‫چندنخی‪ 1‬در فصل ‪ 9‬مطالعه خواهند شد‪ .‬ماشینهای جریان داده یا ترکیب وننیومن و جریان داده از مزایای هر دو‬
‫استفاده میکنند‪.‬‬
‫جریان داده‬ ‫جریان کنترل‬ ‫مدل‬
‫کاهشی (راهاندازی‪-‬تقاضا)‬
‫(راهاندازی‪-‬داده)‬ ‫(راهاندازی‪-‬کنترل)‬ ‫ماشین‬
‫ارزیابی تنبل‪ ،‬عبارات فقط وقتی اجرا‬ ‫ارزیابی سریع‪ ،‬عبارات وقتی اجرا‬ ‫محاسبات سنتی‪ ،‬توکن کنترل‬
‫تعریف‬
‫میشوند که نتیجه آنها توسط سایر‬ ‫میشوند که همه عملوندهای‬ ‫تعیین میکند که چه موقع یک‬
‫اصلی‬
‫محاسبات مورد نیاز شود‪.‬‬ ‫آنها آماده شوند‪.‬‬ ‫عبارت باید اجرا شود‪.‬‬
‫فقط دستورات مورد نیاز اجرا میشوند‬ ‫پتانسیل بسیار باال برای موازات‬ ‫کنترل کامل‬
‫درجه باالی موازات‬ ‫توان عملیاتی باال‬ ‫ساختارهای کنترل و داده پیچیده‬ ‫مزایا‬
‫دستکاری ساده ساختمان دادهها‬ ‫از اثرات جانبی آزاد‬ ‫به سادگی پیادهسازی میشوند‬
‫زمان هدر رفته برای انتظار‬
‫اشتراک اشیاء محلی را پشتیبانی‬
‫آرگومانهایی که به آنها نیاز‬ ‫کارایی کم‬ ‫معایب‬
‫نمیکند‬
‫نیست‪.‬‬
‫سربار کنترل باال‬ ‫برنامه نویسی مشکل‬
‫زمان مورد نیاز برای انتشار توکنهای‬
‫دستکاری ساختمان دادهها‬ ‫اجتناب از خطاهای زمان اجرا‬
‫مورد تقاضا‬
‫مشکل است‬ ‫مشکل‬
‫جدول ‪ :1-2‬کامپیوترهای جریان‪-‬کنترل‪ ،‬جریان داده و کاهشی‬

‫‪ -4-2‬معماری های ارتباط داخلی سیستم‬


‫شبکه های ایستا و پویا برای ارتباط اجزای کامپیوتر یا برای ساخت چندکامپیوترها یا چندپردازندهها در زیر معرفی‬
‫میشوند‪ .‬ما ابتدا تفاوت بین شبکههای مستقیم برای اتصاالت ایستا و شبکههای غیر مستقیم برای اتصاالت پویا‬
‫را مطالعه میکنیم‪ .‬این شبکهها میتوانند برای اتصاالت داخلی بین پردازندهها‪ ،‬ماژولهای حافظه‪ ،‬آرایه دیسک‬
‫ورودی‪/‬خروجی در یک سیستم متمرکز یا برای شبکههای توزیع شده گرههای چندکامپیوتر استفاده شوند‪.‬‬
‫در زیر همبندی‪2‬های گوناگون برای ساخت شبکهها را معرفی میکنیم‪ .‬سپس روی خواص ارتباطی شبکههای‬
‫ارتباطی تمرکز میکنیم‪ .‬این خواص شامل تجزیه تحلیل تأخیر‪ ،‬پهنای دوبخشی‪ ،3‬و توابع مسیریابی‪-‬داده میباشد‪.‬‬
‫در انتها‪ ،‬مقیاس پذیری معماری موازی در حل مسائل بزرگ را تجزیه تحلیل میکنیم‪.‬‬

‫‪1‬‬
‫‪Multithreading‬‬
‫‪2‬‬
‫‪Topology‬‬
‫‪3‬‬
‫‪Bisection width‬‬
‫‪| 93‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫بازدهی‪ 1‬ارتباطی شبکه زیرین در کارایی یک کامپیوتر موازی بحرانی است‪ .‬آنچه ما امیدواریم این است که به یک‬
‫شبکه با تأخیر کم‪ ،‬با نرخ انتقال باال‪ ،‬و بنابراین پهنای باند ارتباطی وسیع دست یابیم‪ .‬این خواص شبکه به ما کمک‬
‫میکنند تا برای معماری ماشین امکان انتخاب طرحهای گوناگون داشته باشیم‪.‬‬

‫‪ -1-4-2‬خواص شبکه و مسیریابی‪ :‬همبندی یک شبکه ارتباطی میتواند ایستا یا پویا باشد‪ .‬شبکههای ایستا از‬
‫اتصاالت مستقیم نقطه‪-‬به‪-‬نقطه شکل دهی شدهاند و در طول اجرای برنامه تغییر نخواهند کرد‪ .‬شبکههای پویا با‬
‫کانالهای سوئیچ پیادهسازی میشوند‪ ،‬که بطور پویا پیکربندی میشوند تا با تقاضای ارتباطی برنامه کاربر تطابق‬
‫پیدا کنند‪.‬‬

‫شبکههای ایستا برای اتصاالت ثابت در زیرسیستمهای یک سیستم متمرکز یا چندین گره محاسباتی یک سیستم‬
‫توزیع شده استفاده میشوند‪ .‬شبکههای پویا شامل گذرگاهها‪ ،‬سوئیچهای تقاطعی‪ ،2‬و شبکههای چندسطحی‪ 3‬می‪-‬‬
‫شوند که اغلب در چندپردازندههای حافظه مشترک استفاده میشوند‪ .‬همچنین هر دو نوع شبکه قابل پیادهسازی‬
‫برای مسیریابی بین ‪ PE4‬در کامپیوترهای ‪ SIMD‬میباشند‪.‬‬

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

‫درجه گره و قطر شبکه‪ :5‬تعداد یالها (پیوندها یا کانالها)ی متصل به یک گره را درجه گره ‪ d‬میگوییم‪ .‬در‬
‫کانالهای جهت دار‪ ،‬تعداد کانالهای وارده به یک گره را درجه ورودی و تعداد خروجیهای گره را درجه خروجی‬
‫میگوییم‪ .‬آنگاه درجه گره جمع دو درجه میباشد‪ .‬درجه گره‪ ،‬تعداد پورتهای ورودی‪/‬خروجی مورد نیاز یک گره‪ ،‬و‬
‫هزینه آن گره را نشان میدهد‪ .‬بنابراین به منظور کاهش هزینه ‪ ،‬درجه گره باید ثابت و تا حد امکان کوچک نگه‬
‫داشته شود‪ .‬درجه گره ثابت‪ ،‬برای رسیدن به ماژولبندی در بلوکهای سازنده‪ 6‬سیستمهای مقیاسپذیر بسیار مطلوب‬
‫است‪.‬‬

‫‪1‬‬
‫‪Efficiency‬‬
‫‪2‬‬
‫‪Crossbar Switch‬‬
‫‪3‬‬
‫‪Multistage Network‬‬
‫‪4‬‬
‫‪Processing Element‬‬
‫‪5‬‬
‫‪Node Degree and Network Diameter‬‬
‫‪6‬‬
‫‪Bulding blocks‬‬
‫کانون نشر علوم‬ ‫‪| 94‬‬

‫قطر ‪ :D‬قطر یک شبکه ماکزیمم کوتاهترین مسیر بین هر دو گره ممکن میباشد‪ .‬طول مسیر با تعداد یالهایی‬
‫که از آن عبور میکنیم اندازه گرفته میشود‪ .‬قطر شبکه حداکثر تعداد پرش‪1‬های مجزا بین هر دو گره را تعیین‬
‫میکند‪ .‬بنابراین قطر شبکه باید تا حد امکان از دید ارتباطی کوچک باشد‪.‬‬

‫پهنای دوبخشی(میانبرشی)‪ :‬وقتیکه یک شبکه داده شده به دو نیمه برابر بریده شود‪ ،‬حداقل تعداد یالها‬
‫(کانالها) در امتداد برش را پهنای دوبخشی کانال ‪ b‬میگوییم (حداقل تعداد یالهایی که قطع میشوند)‪.‬‬

‫در یک شبکه ارتباطی هر یال مرتبط با یک کانال ‪ w‬بیت سیم میباشد‪ .‬پهنای دوبخشی‪( ،‬سیم)‪ B=bw‬میباشد‪.‬‬
‫این پارامتر چگالی سیمی یک شبکه را معلوم میکند‪ .‬وقتیکه ‪ B‬ثابت باشد‪ ،‬پهنای کانال (بر حسب بیت) ‪w=B/b‬‬
‫خواهد بود‪ .‬بنابراین پهنای دوبخشی‪ ،‬یک شاخص خوب از حداکثر پهنای باند ارتباطی در امتداد دوبخش یک شبکه‬
‫را فراهم میکند‪ .‬کران باالی هر برش مقطعی باید به پهنای دوبخشی محدود شود‪.‬‬

‫پارامتر کمّی دیگر طول سیم (طول کانال) بین گرهها میباشد‪ .‬این پارامتر ممکن است روی تأخیر سیگنال‪ ،‬انحراف‬
‫ساعت‪ ،2‬یا نیازهای توان تأثیر بگذارد‪ .‬به یک شبکه متقارن میگوییم اگر از هر گره به طور مشابه به نظر برسد‪.‬‬
‫برنامه نویسی یا پیادهسازی شبکه متقارن سادهتر است‪ .‬به یک شبکه یکنواخت میگوییم اگر درجه تمام گرهها‬
‫مشابه باشد‪ .‬درجه اتصال نسبت تعداد لینکهای شبکه به تعداد لینکهای گراف کامل هم اندازه میگویند‪.‬‬

‫تابعهای مسیریابی داده‪ :‬یک شبکه مسیریابی داده برای تبادل داده بین ‪ PE‬استفاده میشود‪ .‬این شبکه‬
‫مسیریابی میتواند‪ ،‬مثل مسیریابی فوق مکعب استفاده شده در ‪ TMC/CM-2‬ایستا باشد‪ ،‬یا مثل شبکه چندسطحه‬
‫استفاده شده در ‪ IBM GF11‬پویا باشد‪ .‬در شبکهی چندکامپیوتر‪ ،‬مسیریابی داده از طریق ارسال پیام بدست میآید‪.‬‬
‫مسیریابهای سختافزاری برای مسیریابی پیامها بین گرههای چندین کامپیوتر استفاده میشوند‪.‬‬

‫در ادامه چند تابع مسیریابی داده اولیه قابل پیادهسازی در یک شبکه مسیریابی بین ‪ PE‬را معرفی میکنیم‪ .‬قابلیت‬
‫تغییر یک شبکه مسیریابی زمان مورد نیاز برای تبادل داده را کاهش میدهد و بنابراین میتواند توان عملیاتی‬
‫سیستم را بهبود دهد‪.‬‬

‫توابع مسیریابی داده دیده شده بین ‪PE‬ها شامل شیفت‪ ،‬دوران‪ ،‬جایگشت‪( 3‬یک به یک)‪ ،‬همهپخشی (یکی به همه)‪،‬‬
‫چند پخشی (چند به چند)‪ ،‬ارتباطات شخصی ( یکی به همه)‪ ،‬شافل (بُر زدن)‪ ،‬مبادله‪ 4‬و ‪ ...‬میباشد‪ .‬این توابع‬
‫مسیریابی میتوانند در حلقه‪ ،‬مش‪ ،‬فوق مکعب یا شبکههای چندسطحه پیادهسازی شوند‪.‬‬

‫‪1‬‬
‫‪Hop‬‬
‫‪2‬‬
‫‪Clock Skewenig‬‬
‫‪3‬‬
‫‪Permutation‬‬
‫‪4‬‬
‫‪Exchange‬‬
‫‪| 95‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫جایگشت‪ :‬برای مرتب کردن ‪ n‬شیء‪ n! ،‬جایگشت وجود دارد‪ .‬مجموعه همه جایگشتها‪ ،‬یک گروه جایگشت‬
‫را شکل میدهند‪ .‬به عنوان مثال از دوران میتوان برای ایجاد تابع جایگشت استفاده کرد‪.‬‬

‫به عنوان مثال جایگشت )‪ π=(a,b,c)(d,e‬به معنی نگاشت جهت دار (دوسویه) ‪a→b, b→c, c→a, d→e,‬‬
‫‪ e→d‬به روشی چرخشی میباشد و چرخه )‪ (a,b,c‬پریود ‪ 3‬و چرخه )‪ (d,e‬پریود ‪ 2‬دارد‪ .‬با ترکیب دو چرخه‪،‬‬
‫جایگشت ‪ ،π‬پریود ‪ 3×2=6‬دارد‪ .‬اگر جایگشت ‪ 6 ،π‬بار تکرار شود نگاشتهای همانی ‪I=(a), (b), (c), (d),‬‬
‫)‪ (e‬بدست میآید‪.‬‬

‫برای پیادهسازی جایگشت میتوان از یک سوئیچ تقاطعی استفاده کرد‪ .‬شبکههای چندسطحه میتوانند بعضی‬
‫جایگشتها را در یک یا چند گذر در طول شبکه پیادهسازی کنند‪ .‬همچنین میتوان جایگشت را توسط عملیات‬
‫شیفت یا پخشی پیاده سازی کرد‪ .‬قابلیت جایگشت یک شبکه اغلب برای تعیین قابلیت مسیریابی داده استفاده‬
‫میشود‪ .‬وقتی ‪ n‬بزرگ است سرعت جایگشت کارایی یک شبکه مسیریابی را تحت تأثیر قرار میدهد‪.‬‬

‫شافل کامل و مبادله‪ :‬شافل کامل یک تابع جایگشت خاص است که توسط ‪ )1971( Harold Stone‬برای‬
‫کاربردهای پردازش موازی پیشنهاد شد‪ .‬نگاشت مرتبط با شافل کامل در شکل ‪(14-2‬الف) نشان داده شده است‪.‬‬
‫معکوس آن در سمت راست شکل نشان داده شده است‪( .‬شکل ‪(14-2‬ب))‪.‬‬

‫‪000‬‬ ‫‪000‬‬ ‫‪000‬‬ ‫‪000‬‬


‫‪001‬‬ ‫‪001‬‬ ‫‪001‬‬ ‫‪001‬‬
‫‪010‬‬ ‫‪010‬‬ ‫‪010‬‬ ‫‪010‬‬
‫‪011‬‬ ‫‪011‬‬ ‫‪011‬‬ ‫‪011‬‬
‫‪100‬‬ ‫‪100‬‬ ‫‪100‬‬ ‫‪100‬‬

‫‪101‬‬ ‫‪101‬‬ ‫‪101‬‬ ‫‪101‬‬


‫‪110‬‬ ‫‪110‬‬ ‫‪110‬‬ ‫‪110‬‬
‫‪111‬‬ ‫‪111‬‬ ‫‪111‬‬ ‫‪111‬‬
‫(الف) شافل کامل (یک دوران به چپ)‬ ‫(ب) شافل کامل معکوس (یک دوران به راست)‬
‫شکل ‪ :14-2‬نگاشت شافل کامل و معکوس آن روی هشت شیء‬
‫در کل‪ ،‬برای شافل ‪ n=2k‬شیء میتوان اشیاء را با ‪ k‬بیت )‪ x=(xk-1,xk-2,……,x1,x0‬نشان داد‪ .‬نگاشت شافل‬
‫کامل ‪ x‬به ‪ y‬برابر است با )‪ .y=(xk-2,xk-3,……,x1,x0,xk-1‬یعنی دوران ‪ 1 ،x‬بیت به چپ‪.‬‬

‫توابع مسیریابی فوق مکعب‪:1‬یک شبکه باینری سه بعدی در شکل ‪ 15-2‬نشان داده شده است‪ .‬سه تابع‬
‫مسیریابی با سه بیت در آدرس گره تعریف شدهاند‪ .‬به عنوان مثال‪ ،‬میتوان دادههای بین گرههای همسایه که در‬
‫بیت کم ارزش با هم متفاوتند را تبادل کرد (‪ )c0‬شکل ‪(15-2‬ب)‪.‬‬

‫‪1‬‬
‫‪Hypercube‬‬
‫کانون نشر علوم‬ ‫‪| 96‬‬

‫به طور مشابه‪ ،‬دو الگوی مسیریابی دیگر را با چک کردن بیت میانی (‪( )c1‬شکل ‪(15-2‬ج)) و بیت با ارزش ‪c2‬‬
‫(شکل ‪(15-2‬د)) میتوان بدست آورد‪ .‬در کل‪ ،‬یک فوق مکعب ‪ n‬بعدی‪ n ،‬تابع مسیریابی دارد که با هر کدام از‬
‫بیتهای آدرس آن بدست میآین د‪ .‬این توابع تبادل داده در یک چند کامپیوتر فوق مکعب تبادل پیام میتوانند‬
‫استفاده شوند‪.‬‬
‫‪110‬‬ ‫‪111‬‬

‫‪010‬‬ ‫‪011‬‬
‫‪100‬‬ ‫‪101‬‬

‫‪000‬‬ ‫‪001‬‬
‫(الف) یک مکعب سه بعدی که با ‪ c2c1c0‬در مبنای ‪ 2‬نشان داده شده است‪.‬‬
‫‪000‬‬ ‫‪001‬‬ ‫‪010‬‬ ‫‪011‬‬ ‫‪100‬‬ ‫‪101‬‬ ‫‪110‬‬ ‫‪111‬‬
‫(ب) مسیریابی با کم ارزشترین بیت‪c0 ،‬‬

‫‪000‬‬ ‫‪001‬‬ ‫‪010‬‬ ‫‪011‬‬ ‫‪100‬‬ ‫‪101‬‬ ‫‪110‬‬ ‫‪111‬‬

‫(ج) مسیریابی با بیت وسط‪c1 ،‬‬

‫‪000‬‬ ‫‪001‬‬ ‫‪010‬‬ ‫‪011‬‬ ‫‪100‬‬ ‫‪101‬‬ ‫‪110‬‬ ‫‪111‬‬

‫(د) مسیریابی با با ارزشترین بیت‪c2 ،‬‬


‫شکل ‪ :15-2‬سه تابع مسیریابی که توسط یک مکعب دودویی سه بعدی تعریف می شود‪.‬‬
‫همهپخشی و چند پخشی‪ :‬همهپخشی یک نگاشت یک به چند است‪ .‬این به سادگی در یک کامپیوتر ‪SIMD‬‬
‫با استفاده از یک گذرگاه همهپخشی که از کنترل کننده آرایه به همه ‪PE‬ها توسعه داده شده است‪ ،‬قابل بدست‬
‫آمدن است‪ .‬یک چندکامپیوتر ارسال پیام نیز مکانیزمی برای پخش پیامها دارد‪ .‬چندپخشی مرتبط با نگاشت یک‬
‫زیرمجموعه به زیرمجموعه دیگر است (چند به چند)‪.‬‬

‫پخش شخصی‪ ،‬پیامهای شخصی را فقط به دریافت کنندههای انتخابی میفرستد‪ .‬همهپخشی معموالً به عنوان یک‬
‫عمل سراسری در یک چندکامپیوتر رفتار میکند‪ .‬پخش شخصی ممکن است با تطابق آدرسهای مقصد در شبکه‬
‫پیادهسازی شود‪.‬‬

‫کارایی شبکه‪ :‬به طور خالصه‪ ،‬کارایی یک شبکه ارتباطی توسط فاکتورهای زیر تعیین میشود‪:‬‬

‫(‪ )1‬عملکرد‪ :‬به معنی چگونگی پشتیبانی شبکه از مسیریابی داده‪ ،‬راهاندازی وقفه‪ ،‬همزمانی‪ ،‬ترکیب‬
‫پیام‪/‬درخواست و همبستگی میباشد‪.‬‬
‫‪| 97‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫تأخیر شبکه‪ :‬به معنی بدترین تأخیر زمانی است که یک پیام واحد در طول شبکه از مبداء به مقصد منتقل‬ ‫(‪)2‬‬
‫میشود‪.‬‬
‫پهنای باند‪ :‬به معنی حداکثر نرخ انتقال داده برحسب ‪ Mbytes/s‬است که در شبکه منتقل میشود‪.‬‬ ‫(‪)3‬‬
‫پیچیدگی سخت افزار‪ :‬به معنی هزینههای پیادهسازی مثل هزینه سیمها‪ ،‬سوئیچها‪ ،‬اتصالدهندهها‪،‬‬ ‫(‪)4‬‬
‫داوری‪ 1‬و منطق رابط است‪.‬‬
‫مقیاس پذیری‪ :‬اشاره به قابلیت توسعه ماژولی با کارایی مقیاسپذیر با افزایش منابع ماشین دارد‪.‬‬ ‫(‪)5‬‬

‫‪ -2-4-2‬شبکه های اتصالی ایستا‪ :‬شبکههای ایستا از لینکهای مستقیم استفاده میکنند و ثابتند و یکبار ساخته‬
‫میشوند‪ .‬این نوع شبکه برای ساخت کامپیوترهایی که الگوهای ارتباطی قابل پیشبینی هستند و با اتصاالت ایستا‬
‫قابل پیادهسازی هستند‪ ،‬مناسبتر است‪ .‬در اینجا همبندیهای آنها بر اساس پارامترهای شبکه توضیح داده میشود‬
‫و سودمندیهای نسبی مرتبط با ارتباط و مقیاسپذیری آنها بیان میشوند‪.‬‬

‫آرایه خطی‪ :‬این شبکه‪ ،‬یک شبکه یک بُعدی است که ‪ N‬گره توسط ‪ N-1‬لینک در یک خط متصل شدهاند‬
‫(شکل ‪(16-2‬الف))‪ .‬گرههای داخلی‪ ،‬درجه ‪ 2‬و گرههای ترمینال درجه ‪ 1‬دارند‪ .‬قطر ‪ N-1‬است که برای ‪N‬های‬
‫بزرگ‪ ،‬زیاد است‪ .‬پهنای دوبخشی‪ b=1 ،‬است‪ .‬آرایه خطی سادهترین همبندی است‪ .‬ساختار متقارن نیست و کارایی‬
‫ارتباطی وقتیکه ‪ N‬خیلی بزرگ است کاهش مییابد‪.‬‬

‫برای ‪ N‬خیلی کوچک‪ ،N=2 ،‬نسبتاً اقتصادی است که یک آرایه خطی را پیادهسازی کنیم‪ .‬چون قطر به طور خطی‬
‫با افزایش ‪ ،N‬افزایش مییابد‪ ،‬نباید برای ‪N‬های بزرگ استفاده شود‪ .‬باید بگوییم که یک آرایه خطی خیلی با گذرگاه‬
‫که بین گرههایی که به آن متصلند‪ ،‬سوئیچ اشتراک زمانی وجود دارد متفاوت است‪ .‬آرایه خطی اجازه استفاده همزمان‬
‫بخشهای مختلف (کانالها) ساختار با زوج منبع و مقصد متفاوت را میدهد‪.‬‬

‫حلقه و حلقه کردال‪ :‬حلقه با اتصال دو گره ترمینال آرایه خطی به یکدیگر بدست میآید (شکل ‪(16-2‬ب))‪ .‬یک‬
‫حلقه می تواند دوطرفه باشد‪ .‬حلقه متقارن است و هر گره درجه ثابت ‪ 2‬دارد‪ .‬قطر برای حلقه دوطرفه ⌋‪ ⌊N⁄2‬و‬
‫برای حلقه یک طرفه ‪ N‬است‪.‬‬

‫حلقه توکن ‪ IBM‬این همبندی را دارد‪ ،‬که پیامها در طول حلقه با یک توکن تطابق میچرخند تا زمانیکه به مقصد‬
‫برسند‪ .‬سوئیچهای بستهای یا خط لولهای در چندپردازنده ‪ CDD Cyberplo‬و در سیستم کامپیوتر ‪ KSR‬برای‬
‫ارتباط بین پردازندهای پیادهسازی شدهاند‪.‬‬

‫‪1‬‬
‫‪Arbitration‬‬
‫کانون نشر علوم‬ ‫‪| 98‬‬

‫با افزایش درجه گره از ‪ 2‬به ‪ 3‬یا ‪ ،4‬حلقه های کردال را بدست میآوریم که در شکل ‪(16-2‬ج) و ‪(16-2‬د) نشان‬
‫داده شدهاند‪ .‬برای ایجاد این دو حلقه کردال‪ 1 ،‬و ‪ 2‬لینک اضافی به هر گره اضافه شده است‪ .‬به طور کلی هر چه‬
‫لینک بیشتری اضافه شود‪ ،‬درجه گره بیشتر شده و قطر شبکه کمتر میشود‪.‬‬

‫با مقایسه حلقه ‪ 16‬گره (شکل ‪(16-2‬ب)) با دو حلقه کردال (شکل ‪(16-2‬ج) و ‪(16-2‬د)) قطر شبکه به ترتیب از‬
‫‪ 8‬به ‪ 5‬و به ‪ 3‬کاهش مییابد‪ .‬شبکه کامالً متصل (شکل ‪(16-2‬و)) درجه گره ‪ 15‬و کوتاهترین قطر یعنی ‪ 1‬را دارد‪.‬‬

‫‪0‬‬ ‫‪1‬‬
‫‪15‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪2‬‬
‫‪14‬‬
‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬
‫‪13‬‬ ‫‪3‬‬
‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬
‫‪15‬‬ ‫‪14‬‬ ‫‪13‬‬ ‫‪12‬‬ ‫‪12‬‬ ‫‪4‬‬

‫(الف) آرایه خطی‬ ‫‪11‬‬ ‫‪5‬‬

‫‪10‬‬ ‫‪6‬‬
‫‪9‬‬ ‫‪7‬‬
‫‪8‬‬
‫(ب)‪:‬حلقه‬
‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪15‬‬ ‫‪15‬‬
‫‪2‬‬ ‫‪2‬‬
‫‪14‬‬ ‫‪14‬‬

‫‪13‬‬ ‫‪3‬‬ ‫‪13‬‬ ‫‪3‬‬

‫‪12‬‬ ‫‪4‬‬ ‫‪12‬‬ ‫‪4‬‬

‫‪11‬‬ ‫‪5‬‬ ‫‪11‬‬ ‫‪5‬‬

‫‪10‬‬ ‫‪6‬‬ ‫‪10‬‬ ‫‪6‬‬


‫‪9‬‬ ‫‪7‬‬ ‫‪9‬‬ ‫‪7‬‬
‫‪8‬‬ ‫(د) حلقه کردال با ‪8‬‬
‫درجه ‪( 4‬شبیه مش ایلیاک)‬
‫(ج) حلقه کردال با درجه ‪3‬‬
‫‪0‬‬ ‫‪1‬‬
‫‪15‬‬
‫‪2‬‬
‫‪14‬‬

‫‪13‬‬ ‫‪3‬‬

‫‪12‬‬ ‫‪4‬‬

‫‪11‬‬ ‫‪5‬‬

‫‪10‬‬ ‫‪6‬‬
‫‪9‬‬ ‫‪7‬‬ ‫(و) کامالً متصل‬
‫‪8‬‬
‫(ه) شیفت دهنده بارل‬
‫شکل ‪ :16-2‬آرایه خطی‪ ،‬حلقه‪ ،‬حلقههای کُردال از درجه ‪3‬و‪ ،4‬شیفت دهنده بارل‪ ،‬و شبکه کامالً متصل‬
‫‪| 99‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫شیفت دهنده بارل‪ :1‬همانطور که در شکل ‪(16-2‬ه) نشان داده شده است برای یک شبکه با ‪ N=16‬گره‪،‬‬
‫شیفت دهنده بارل با اضافه کردن لینکها به حلقه و به هر گره تا گرههایی که فاصله با آنها یک عدد صحیح و‬
‫توانی از ‪ ،2‬است‪ ،‬بدست میآید‪ .‬این به این معنی است که گره ‪ i‬به گره ‪ j‬متصل میشود اگر ‪ |j-i|=2r‬برای‬
‫‪ r=0,1,2,…n-1‬و اندازه شبکه ‪ N=2n‬میباشد‪ .2‬اینچنین شیفت دهنده بارل درجه ‪ d=2n-1‬و قطر ‪D=n/2‬‬
‫دارد‪.‬‬

‫بوضوح مشخص است که اتصال پذیری در شیفت دهنده بارال از هر کردال با درجه گره کمتر بیشتر است‪ .‬برای‬
‫‪ ،N=16‬شیفت دهنده بارل درجه گره ‪ ،7‬با قطر ‪ 2‬دارد‪ .‬اما پیچیدگی شیفت دهنده بارل خیلی از شبکه کامالً متصل‬
‫کمتر است‪.‬‬

‫درخت و ستاره‪ :‬یک درخت باینری از ‪ 31‬گره در ‪ 5‬سطح در شکل ‪(17-2‬الف) نشان داده شده است‪ .‬در کل‬
‫یک درخت باینری کامالً متعادل ‪ k‬سطحه ‪ N=2k-1‬گره دارد‪ .‬حداکثر درجه گره ‪ 3‬است و قطر )‪ 2(k-1‬میباشد‪.‬‬
‫با درجه گره ثابت‪ ،‬درخت باینری یک معماری مقیاس پذیر است‪ .‬به هر حال قطر هنوز هم زیاد است‪.‬‬

‫ستاره یک درخت دو سطحه است با درجه باالی ‪( d=N-1‬شکل ‪(17-2‬ب)) و قطر ثابت کوچک ‪ 2‬دارد‪ .‬چندپردازنده‬
‫‪ DADO‬در دانشگاه کلمبیا با یک درخت باینری ‪ 10‬سطح و ‪ 1023‬گره ساخته شد‪ .‬معماری ستاره در یک سیستم‬
‫با یک گره مدیر متمرکز استفاده میشود‪.‬‬

‫(الف) درخت باینری‬ ‫(ب) ستاره‬


‫(ج) درخت باینری چاق‬
‫شکل ‪ : 17-2‬درخت باینری‪ ،‬ستاره و درخت باینری چاق‬
‫درخت چاق‪ :3‬یک ساختار درخت سنتی در علم کامپیوتر میتواند اصالح شود تا یک درخت چاق شود‪ .‬یک درخت‬
‫باینری چاق در شکل ‪( 17-2‬ج) نشان داده شده است‪ .‬پهنای کانال یک درخت چاق بطور صعودی از برگها به‬
‫ریشه زیاد میشود‪ .‬یک درخت چاق مشابه درخت واقعی است که شاخهها به سمت ریشه ضخیمتر میشوند‪ .‬یک‬
‫مشکل عمده درخت باینری سنتی مسئله گلوگاه در ریشه است‪ .‬زیرا ترافیک ریشه سنگینتر است‪ .‬درخت چاق به‬
‫منظور حل مسئله پیشنهاد شد‪ .‬ایده یک درخت چاق در اتصال ماشین ‪ CM-5‬اِعمال شد‪ .‬ایده درخت چاق میتواند‬
‫به درختهای چند راهه توسعه یابد‪.‬‬

‫‪1‬‬
‫‪Barrel Shifter‬‬
‫‪ 2‬به نظر مترجم فرمول ‪|j-i|=2r‬کافی نیست بلکه فاصله بین دو نود بصورت حلقوی باید ‪ 2r‬باشد‪.‬‬
‫‪3‬‬
‫‪Fat tree‬‬
‫کانون نشر علوم‬ ‫‪| 100‬‬

‫مش‪ 1‬و تروس‪ :2‬یک مش ‪ 3×3‬در شکل ‪(18-2‬الف) نشان داده شده است‪ .‬این رایجترین معماری است که‬
‫در ایلیالک ‪ CM-2 ،DAP ،MPP ،IV‬و ‪ Intel Paragon‬با تغییراتی پیادهسازی شده است‪.‬‬

‫در کل‪ ،‬یک مش‪ k ،‬بُعدی با ‪ N=nk‬گره‪ ،‬درجه گره داخلی ‪ 2k‬دارد و قطر شبکه )‪ k(n-1‬است‪ .‬نکته اینکه مش‬
‫خالص نشان داده شده در شکل ‪(18-2‬الف) متقارن نیست‪ .‬درجه گره در مرزها و گوشهها‪ 2 ،‬یا ‪ 3‬است‪.‬‬

‫شکل ‪(18-2‬ب)‪ ،‬نوعی دیگر از مش را نشان میدهد که اجازه اتصاالت چرخشی را داده است‪ .‬ایلیاک ‪ IV‬از یک‬
‫مش ‪ 8×8‬با درجه گره ثابت ‪ 4‬و قطر ‪ 7‬استفاده کرده است‪ .‬مش ایلیاک از لحاظ همبندی معادل یک حلقه کردال‬
‫با درجه ‪ 4‬است همانطور که در شکل ‪(16-2‬د) برای پیکربندی ‪ N=9=3×3‬نشان داده شده است‪.‬‬

‫درکل‪ ،‬ایلیاک ‪ n×n‬باید قطر ‪ d=n-1‬داشته باشد که نصف قطر مش خالص است‪ .‬تروس نشان داده شده در‬
‫شکل ‪(18-2‬ج) را میتوان به عنوان نوع دیگری از مش با قطر کوتاهتری در نظر گرفت‪ .‬این همبندی مش و حلقه‬
‫را ترکیب کرده است و به ابعاد بیشتری توسعه یافته است‪ .‬تروس اتصال حلقوی در هر سطر و ستون آرایه دارد‪ .‬در‬
‫کل یک تروس باینری ‪ n×n‬درجه گره ‪ 4‬و قطر ⌋‪ 2⌊n⁄2‬دارد‪ .‬تروس یک همبندی متقارن است‪ .‬همه اتصاالت‬
‫حلقوی اضافه شده کمک میکنند که قطر نصف مش شود‪.‬‬

‫آرایههای سیستولیک‪ :‬این کالسی از معماریهای آرایههای خط لوله شده چندبُعدی است که برای پیادهسازی‬
‫الگوریتمهای ثابت طراحی شده است‪ .‬آنچه در شکل ‪(18-2‬د) نشان داده شده است یک آرایه سیستولیک است که‬
‫بطور خاص برای انجام ضرب ماتریس در ماتریس طراحی شده است‪ .‬درجه گره داخلی در این مثال‪ 6 ،‬میباشد‪.‬‬

‫(الف) مش‬
‫(ب) مش ایلیاک‬

‫(ج) توروس‬ ‫(د) آرایه سیستولیک‬


‫شکل ‪ :18-2‬مش‪ ،‬مش ایلیاک‪،‬توروس و آرایه سیستولیک‬
‫‪1‬‬
‫‪Mesh‬‬ ‫در توری و توری مدور همیشه تعداد گرهها در همه ابعاد با هم برابر نیست‬
‫‪2‬‬
‫‪Torus‬‬
‫‪| 101‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫در کل‪ ،‬آرایههای سیستولیک ایستا با رشتههای جریان داده چندجهته خطلوله شدهاند‪ .‬سیستم ‪Intel iwap‬‬
‫(ماشین تجاری) با معماری سیستولیک طراحی شده است‪.‬‬

‫با اتصاالت داخلی ثابت و عمل همزمانی‪ ،‬یک آرایه سیستولیک با ساختار ارتباطی الگوریتم تطابق مییابد‪ .‬برای‬
‫کاربردهای خاص مثل پردازش سیگنال‪/‬تصویر‪ ،‬آرایههای سیستولیک ممکن است نرخ کارایی‪/‬هزینه بهتری ارائه‬
‫دهند‪ .‬به هر حال ساختار از لحاظ کاربردی محدود شده است و برنامه نویسی آن میتواند خیلی مشکل باشد‪ .‬چون‬
‫این کتاب روی محاسبات همه منظوره تأکید دارد‪ ،‬آرایههای سیستولیک بیشتر مطالعه نخواهند شد‪.‬‬

‫فوق مکعبها‪ :‬این یک معماری ‪-n‬مکعبه‪( 1‬مکعب ‪n‬بٌعدی) میباشد که در سیستمهای ‪ nCUBE ،iPSC‬و‬
‫‪ CM-2‬پیاده سازی شده است‪ .‬در کل‪ ،‬یک ‪-n‬مکعب شامل ‪ N=2n‬گره است که در ‪ n‬بُعد با دو گره در هر بُعد‬
‫گسترده شدهاند‪ .‬یک سه‪-‬مکعب شامل ‪ 8‬گره است که در شکل ‪(19-2‬الف) نشان داده شده است‪.‬‬

‫یک ‪-4‬مکعب میتواند با اتصال گرههای مرتبط دو سه‪-‬مکعب همانطور که در شکل ‪(19-2‬ب) نشان داده شده‬
‫است‪ ،‬شکل داده شود‪ .‬درجه گره هر ‪-n‬مکعب و قطر شبکه ‪ n‬است‪ .‬درحقیقت درجه گره بطور خطی متناسب با‬
‫بُعد افزایش مییابد‪ .‬به همین دلیل در نظر گرفتن فوق مکعب به عنوان معماری مقیاسپذیر مشکل است‪.‬‬
‫فوق مکعب باینری برای تحقیقات و توسعه در سال ‪ 1980‬یک معماری رایج شده بود‪ .‬هر دوی ماشینهای‬
‫‪iPSC/2‬و ‪ intel iPSC/1‬و ماشینهای ‪ nCUBE‬با معماری فوق مکعب ساخته شدند‪ .‬معماری اتصاالت چگال‬
‫دارد‪ .‬معماریهای بسیار دیگری‪ ،‬مثل درختهای باینری‪ ،‬مشها و ‪ ....‬میتوانند در فوق مکعب جا داده شوند‪.‬‬

‫(الف) ‪3-cube‬‬ ‫(ب) ‪ 4-cube‬که با اتصال دو سه‪-‬مکعب شکل داده شده‬


‫است‪.‬‬
‫‪1‬‬ ‫‪k‬‬
‫‪2‬‬ ‫‪1 k‬‬
‫‪2‬‬
‫‪3‬‬ ‫‪k-1‬‬
‫‪4‬‬ ‫‪3‬‬
‫‪5‬‬
‫‪4‬‬
‫‪5‬‬

‫(د) جایگزینی هر گره یک ‪-k‬مکعب با یک حلقه ‪ k‬گرهه تا یک‬


‫(ج) ‪3-cube connected‬‬ ‫سیکل متصل شده ‪ k‬مکعبی ایجاد شود‪.‬‬
‫شکل ‪ :19-2‬فوق مکعب و سیکلهای متصل شده ‪-‬مکعبی‬
‫‪cycles‬‬
‫‪1‬‬
‫‪N-cube‬‬
‫کانون نشر علوم‬ ‫‪| 102‬‬

‫به خاطر مقیاس پذیری ضعیف و سختی بستهبندی‪ 1‬در فوق مکعبهای با ابعاد باال معماری فوق مکعب بصورت‬
‫دانهای با سایر معماریها جایگزین میشود‪ .‬به عنوان مثال ‪ ،CM-5‬درخت چاق را روی فوق مکعب پیاده سازی‬
‫شده در ‪ CM-2‬پیاده کرده است‪ Intel paragon .‬از مش دوبعدی روی فوق مکعبهای نسلهای قبلیش‬
‫استفاده میکند‪.‬‬

‫برای ساختن فوق مکعب ‪ n‬بُعدی باید دو کپی از فوق مکعب ‪ n-1‬بُعدی را استفاده نمود و گرههای متناظر دو تا را‬
‫به هم متصل کرد‪ .‬در شکل ‪ 19-2‬مشاهده مینمایید که برای ساخت فوق مکعب چهار بعدی دو فوق مکعب سه‬
‫بعدی را استفاده کردهایم و ‪ 8‬گره متناظر آن دو را به هم متصل نمودهایم‪ .‬نمونهای از یک همبندی ‪Hypercube‬‬
‫پنجبعدی در شکل ‪ 20-2‬نشان داده شده است‪ .‬در این شکل نیز مشاهده میشود که دو فوق مکعب چهار بعدی‬
‫استفاده شده است و ‪ 16‬گره متناظر آنها به هم متصل شدهاند‪.‬‬

‫شکل ‪ :20-2‬فوق مکعب پنج بعدی ساخته شده با تکرار دو فوق مکعب چهار بعدی و تکرار گرههای آن‬

‫حلقه متصل شده مکعبی‪ :2‬این معماری اصالح شده فوق مکعب است‪ .‬همانطور که در شکل ‪(19-2‬ج) نشان‬
‫داده شده است یک ‪-3‬مکعب اصالح شده است تا یک حلقه متصل شده ‪-3‬مکعبی را شکل دهد (‪ .)CCC‬ایده‪،‬‬
‫برش گرههای گوشه (رأسها)ی ‪-3‬مکعب و جایگزینی آنها با یک حلقه سه گرهه میباشد‪.‬‬

‫درکل‪ ،‬میتوان حلقههای متصل شده ‪k‬مکعبی را از یک ‪-k‬مکعب با ‪ n=2k‬گرههای دوار ساخت همانطور که در‬
‫شکل ‪(19-2‬د) نشان داده شده است‪ .‬ایده‪ ،‬جایگزینی هر رأس فوق مکعب ‪ k‬بعدی با یک حلقه ‪ k‬گرهه میباشد‪.‬‬
‫بنابراین یک ‪-k‬مکعب به یک ‪ k-CCC‬با ‪ k×2k‬گره تبدیل میشود‪.‬‬

‫‪1‬‬
‫‪Packaging‬‬
‫‪2‬‬
‫)‪Cube-Connected Cycles (CCC‬‬
‫‪| 103‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫‪ 3-CCC‬نشان داده شده در شکل ‪(19-2‬ج) قطر ‪ 6‬دارد که دو برابر قطر ‪-3‬مکعب اصلی است‪ .‬درکل قطر یک‬
‫شبکه ‪ 2k ،k-CCC‬میباشد‪ .‬پیشرفت عمده یک ‪ CCC‬بخاطر درجه گره ثابت آن (‪ )3‬میباشد که مستقل از ابعاد‬
‫فوق مکعب تحتانی است‪.‬‬

‫یک فوق مکعب با ‪ N=2n‬گره را در نظر بگیرید‪ .‬یک ‪ CCC‬معادل با تعداد ‪ N‬گره باید از یک ‪-k‬مکعب با ابعاد‬
‫کمتر ساخته شود بطوریکه ‪ 2n=k×2k‬برای ‪ .k<n‬به عنوان مثال یک ‪ 64 ،CCC‬گرهه میتواند با جایگزینی‬
‫گرههای گوشه یک ‪-4‬مکعب حلقه ‪-4‬گرهه ساخته شود‪ .‬که در آن ‪ n=6‬و ‪ CCC .26=4×24 .k=4‬قطر ‪2k=8‬‬
‫دارد که از قطر ‪ 6‬یک ‪-6‬مکعب بیشتر است‪ .‬اما ‪ CCC‬درجه گره ‪ 3‬دارد که از درجه گره ‪ 6‬در ‪-6‬مکعب کمتر‬
‫است‪ .‬در این حالت‪ CCC ،‬معماری بهتری برای ساخت سیستمهای مقیاس پذیر است اگر انحراف از تأخیر مجاز‬
‫باشد‪.‬‬

‫شبکههای ‪-n‬مکعبی ‪-k‬آرایه‪ :1‬حلقهها‪ ،‬مشها‪-n ،‬مکعبهای باینری (فوق مکعب)‪ ،‬و شبکههای اُمگا از‬
‫لحاظ همبندی متناظر با یک خانواده از شبکههای ‪-n‬مکعبی ‪-k‬آرایه میباشند‪ .‬شکل ‪ 21-2‬یک شبکه ‪-3‬مکعبی‬
‫‪-4‬آرایه را نشان میدهد‪.‬‬

‫شکل ‪ :21-2‬شبکه ‪ k-ary n-cube‬نشان داده شده با ‪ k=4‬و ‪ : n=3‬گرههای مخفی یا اتصاالت مخفی نشان داده نشدهاند‪.‬‬

‫پارامتر ‪ ،n‬بُعد مکعب است و ‪ k‬پایه‪ ، 2‬تعداد گرهها در طول هر بُعد میباشد‪ .‬این دو عدد به تعداد گرههای ‪ N‬در‬
‫شبکه توسط رابطه زیر مرتبطند‪:‬‬

‫‪n‬‬
‫)‪N = k n , (k = √N, n = log k N‬‬

‫یک گره در ‪ n‬مکعبی ‪ k‬آرایه توسط یک آدرس ‪n‬تایی از اعداد با پایه ‪ k‬نشان داده میشود‪A=a0a1a2 …an .‬‬
‫که ‪ ai‬نشان دهنده مکان گره ‪ i‬در بعد ‪i‬ام است‪ .‬برای سادگی‪ ،‬همه لینکها دوجهته‪ 3‬فرض میشوند‪ .‬هر خط در‬

‫‪1‬‬
‫‪K-ary n-Cube Networks‬‬
‫‪2‬‬
‫‪Radix‬‬
‫‪3‬‬
‫‪Bidirectional‬‬
‫کانون نشر علوم‬ ‫‪| 104‬‬

‫شبکه نشان دهنده دوکانال ارتباطی (برای هر جهت یکی) است‪ .‬در شکل ‪ 21-2‬خطوط بین گرهها لینکهای‬
‫دوجهتهاند‪.‬‬

‫به ‪- n‬مکعبی ‪-k‬آرایه با ابعاد کم توری‪ 1‬میگویند و ‪-n‬مکعبهای باینری با ابعاد زیاد را فوق مکعب میگویند‪.‬‬
‫همانطور که در شکل ‪ 22-2‬نشان داده شده است‪ ،‬اتصاالت حلقوی طوالنی انتهایی در یک تروس را میتوان با‬
‫بهم آمیختن کوتاه کرد‪ .‬در این حالت در طول حلقه لینکها در هر بُعد‪ ،‬طول سیم برابری دارند‪.‬‬

‫‪ )1990( William Dally‬تعدای از خواص جالب شبکههای ‪-n‬مکعبی ‪-k‬آرایه را ذکر کرده است‪ .‬هزینه چنین‬
‫شبکهای بیشتر با مقدار سیمهای آن تعیین میشود نه تعداد سوئیچهای مورد نیاز آن‪ .‬با فرض ثابت بودن پهنای‬
‫سیم دوبخشی‪ ،‬شبکههای با ابعاد کم با کانالهای پهن تأخیر کمتر‪ ،‬تداخل کمتر‪ ،‬و توان عملیاتی نقطه داغ بیشتری‬
‫از شبکههای با ابعاد بیشتر با کانالهای باریک دارند‪.‬‬

‫(الف) تروس رایج‬

‫(ب) یک تروس با اتصاالت درهم آمیخته شده‬


‫شکل ‪ :22-2‬اتصاالت درهم آمیخته به منظور برابر کردن طول سیم در شبکه تروس‬
‫توان عملیاتی شبکه‪ :2‬توان عملیاتی شبکه با تعداد کل پیامهایی که میتواند در واحد زمان راهاندازی کند تعریف‬
‫می شود‪ .‬یک روش تخمین توان عملیاتی محاسبه ظرفیت یک شبکه یعنی تعداد کل پیامهایی که در یک لحظه‬
‫میتواند در شبکه باشد‪ ،‬میباشد‪ .‬معموالً‪ ،‬حداکثر توان عملیاتی یک شبکه کسری از ظرفیت آن است‪.‬‬

‫یک نقطه داغ یک زوج گره است که بخاطر عدم تناسب مقدار زیادی از ترافیک کلی شبکه را حمل میکند‪ .‬نقطه‬
‫داغ میتواند کارایی کل شبکه را بخاطر تصادم پایین بیاورد‪ .‬توان عملیاتی نقطه‪-‬داغ حداکثر نرخی است که پیامها‬
‫میتوانند از یک گره خاص ‪ Pi‬به گره خاص دیگر ‪ Pj‬ارسال شوند‪.‬‬

‫شبکههای با ابعاد کمتر تحت بار غیر یکنواخت بخاطر اشتراک منابع بیشتر‪ ،‬بهتر عمل میکنند‪ .‬در یک شبکه با‬
‫ابعاد زیاد‪ ،‬سیمها به ابعاد خاص منتسب میشوند و نمیتوانند بین ابعاد به اشتراک گذاشته شوند‪ .‬به عنوان مثال‪ ،‬در‬
‫یک ‪-n‬مکعب باینری‪ ،‬ممکن است یک سیم اشباع شود در حالیکه یک سیم در همسایگی فیزیکی آن بیکار باشد‪.‬‬

‫‪1‬‬
‫‪Tori‬‬
‫‪2‬‬
‫‪Network Throughput‬‬
‫‪| 105‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫در یک تروس‪ ،‬همه سیمهایی که با هم از لحاظ فیزیکی همسایه هستند‪ ،‬در یک کانال قرار میگیرند که توسط‬
‫همه پیامها به اشتراک گذارده میشوند‪.‬‬

‫حداقل تأخیر شبکه موقعی بدست میآید که پایه ‪ k‬شبکه و بُعد ‪ n‬طوری انتخاب شده باشند که تأخیر ارتباطی اجزا‬
‫با فاصله ‪( D‬تعداد پرشها بین گرهها) و نسبت نرخ پیامها ‪( L/W‬پیامهای با طول ‪ L‬به کانالی با پهنای ‪ )W‬تقریباً‬
‫برابر شوند‪ .‬حداقل تأخیر در ابعاد خیلی کم ‪ ،2‬برای تا حداکثر ‪ 1024‬گره اتفاق میافتد‪.‬‬

‫شبکههای با ابعاد کم‪ ،‬تداخل را کاهش میدهند زیرا تعداد کمی کانال با پهنای باال دارند که باعث اشتراک منابع‬
‫بیشتری میشوند بنابراین کارایی صف بندی بهتری از وقتیکه تعداد کانالها زیاد باشند و پهنای باند کم داشته‬
‫باشند‪ ،‬دارند‪ .‬وقتیکه ظرفیت شبکه و بدترین تأخیر بلوک شدن مستقل از بُعد است‪ ،‬شبکهها با ابعاد کمتر توان‬
‫عملیاتی بیشتر و میانگین تأخیر بلوک شدن کمتری نسبت به شبکههای با ابعاد زیاد دارند‪.‬‬

‫شبکه درخت چاق و ‪-n‬مکعبی ‪-k‬آرایه جهانی در نظر گرفته میشوند زیرا هر شبکه دیگری با حجم مشابه را‬
‫میتوانند بطور موثری شبیه سازی کنند‪ Dally .‬ادعا کرد که هر شبکه نقطه به نقطه میتواند در یک مش سه‬
‫بعدی بدون افزایش طول سیم بندی تعبیه شود‪.‬‬

‫خالصه شبکههای ایستا‪ :‬در جدول ‪ ،2-2‬خواص مهم شبکههای اتصالی ایستا را خالصه کردهایم‪ .‬درجههای‬
‫گره اکثر شبکهها کمتر از ‪ 4‬است و نسبتاً مطلوب هستند‪ .‬به عنوان مثال چیپ ترانزیستور ‪ INMOS‬یک پردازنده‬
‫ارتباطی‪-‬محاسباتی با ‪ 4‬پورت برای ارتباط است‪ .‬با درجه گره ثابت ‪ 4‬یا کمتر‪ ،‬یک ترانسپیوتر (مثل ‪ )T800‬میتواند‬
‫به عنوان بلوکههای ساخت کاربردی شود‪ .‬درجههای گره برای شبکه کامالً متصل و ستاره بد است‪ .‬درجه گره یک‬
‫فوق مکعب با ‪ log 2 N‬افزایش مییابد و بنابراین وقتی ‪ N‬بزرگ باشد بد است‪.‬‬

‫قطرهای شبکه در محدوده وسیعی تغییر میکنند‪ .‬با اختراع مسیریابی سختافزاری (مسیریابی خزشی‪ ،)1‬قطر کمتر‬
‫بحرانی شده است به خاطر اینکه تأخیر ارتباطی بین دوگره تقریباً با درجه باالی خطلوله ثابت میماند‪ .‬تعداد لینکها‬
‫روی هزینه شبکه تأثیر دارد و پهنای دوبخشی روی پهنای باند شبکه تأثیر دارد‪ .‬خصوصیت تقارن روی مقیاس‬
‫پذیری و مفید بودن مسیریابی تأثیر دارد‪ .‬عادالنه است که بگوییم کل هزینه شبکه با ‪ d‬و ‪ L‬افزایش مییابد‪ .‬قطر‬
‫کوچکتر هنوز یک مزیت است اما میانگین فاصله بین گرهها واحد اندازهگیری بهتری است‪ .‬پهنای دوبخشی با‬
‫پهنای کانال پهنتر میتواند توسع ه داده شود‪ .‬براساس تجزیه تحلیل فوق‪ ،‬حلقه‪ ،‬مش‪ ،‬تروس‪-n ،‬مکعبی ‪-k‬آرایه‬
‫و ‪ CCC‬همه برای ساخت سیستمهای ‪ MPP‬آینده‪ ،‬هرکدام مقداری خواص مطلوب دارند‪.‬‬

‫)گره درجه × گرهها تعداد(‬


‫نکته‪ :‬در حالت کلی‪ :‬تعداد لینکها= تعداد کانالهای دو طرفه=‬
‫‪2‬‬
‫)گره درجه × گرهها تعداد(‬ ‫تعداد لینکهای شبکه‬
‫)‪𝑁(𝑁−1‬‬
‫=‬ ‫تعداد لینکهای گراف کامل هم اندازه‬
‫برای هر شبکه یکنواخت‪ :‬درجه اتصال=‬

‫‪1‬‬
‫‪wormhole‬‬
‫کانون نشر علوم‬ ‫‪| 106‬‬

‫یکنواخت‬ ‫تقارن‬ ‫پهنای‬ ‫تعداد لینکها ‪L‬‬ ‫قطر شبکه ‪D‬‬ ‫درجه‬ ‫اندازه شبکه‬ ‫نوع شبکه‬
‫دوبخشی‬ ‫گره ‪d‬‬ ‫(تعداد گره)‬
‫‪B‬‬
‫نیست‬ ‫ندارد‬ ‫‪1‬‬ ‫‪N-1‬‬ ‫‪N-1‬‬ ‫‪2‬‬ ‫‪N‬‬ ‫آرایه خطی‬

‫هست‬ ‫دارد‬ ‫‪2‬‬ ‫‪N‬‬ ‫⌋‪⌊N⁄2‬‬ ‫‪2‬‬ ‫‪N‬‬ ‫حلقه‬


‫هست‬ ‫دارد‬ ‫‪𝑁2‬‬ ‫‪N(N-1)/2‬‬ ‫‪1‬‬ ‫‪N-1‬‬ ‫‪N‬‬ ‫کامالً متصل‬
‫‪4‬‬ ‫گراف کامل‬
‫نیست‬ ‫ندارد‬ ‫‪1‬‬ ‫‪N-1‬‬ ‫)‪2(h-1‬‬ ‫‪3‬‬ ‫ارتفاع درخت = ‪h‬‬ ‫درخت باینری‬
‫⌉‪⌈log 2 N‬‬
‫نیست‬ ‫ندارد‬ ‫⌋‪⌊N⁄2‬‬ ‫‪N-1‬‬ ‫‪2‬‬ ‫‪N-1‬‬ ‫‪N‬‬ ‫ستاره‬
‫هست‬ ‫ندارد‬ ‫‪2r‬‬ ‫‪2N‬‬ ‫‪r-1‬‬ ‫‪4‬‬ ‫معادل حلقه کردال = ‪r‬‬ ‫مش ایلیاک‬
‫‪√N‬‬ ‫(دوبعدی)‬
‫𝑁‬ ‫𝑛‬ ‫𝑛‬
‫نیست‬ ‫ندارد‬ ‫‪2n‬‬ ‫‪N=k1×k2×k3×…kn‬‬ ‫مش ‪n‬‬
‫𝑥𝑎𝑚𝑘‬ ‫𝑖𝑘(∑‬ ‫)‪∑(𝑘𝑖 − 1‬‬
‫بعدی توری‬
‫‪𝑖=1‬‬ ‫‪𝑖=1‬‬
‫𝑛‬
‫∏ ‪− 1).‬‬ ‫𝑖‪𝑘𝑗,𝑗#‬‬
‫‪𝑗=1‬‬
‫𝑁‪2‬‬ ‫𝑛‬
‫هست‬ ‫دارد‬ ‫‪nN‬‬ ‫𝑖𝑘‬ ‫‪2n‬‬ ‫‪N=k1×k2×k3×…kn‬‬ ‫تروس‬
‫𝑥𝑎𝑚𝑘‬ ‫⌋ ⌊∑‬
‫‪2‬‬ ‫‪n‬بُعدی توری‬
‫‪𝑖=1‬‬
‫مدور‬
‫هست‬ ‫دارد‬ ‫‪2n-1‬‬ ‫‪2n-1n‬‬ ‫‪n‬‬ ‫‪n‬‬ ‫‪N=2n‬‬ ‫فوق مکعب ‪n‬‬
‫بُعدی‬
‫هست‬ ‫دارد‬ ‫)‪N/(2k‬‬ ‫‪3N/2‬‬ ‫⌋‪2K-1+⌊k⁄2‬‬ ‫‪3‬‬ ‫‪ N=k×2k‬گره با حلقه‬ ‫‪CCC‬‬
‫‪k≥3‬‬
‫هست‬ ‫دارد‬ ‫‪2kn-1‬‬ ‫‪Nn‬‬ ‫⌋‪n⌊k⁄2‬‬ ‫‪2n‬‬ ‫‪ N=kn‬گره‬ ‫‪k-ary n-‬‬
‫‪cube‬‬
‫جدول ‪ :2-2‬خالصه خواص شبکه ایستا‬
‫‪ -3-4-2‬مسیریابی در شبکههای اتصالی ایستا‪ :‬در ادامه چند الگوریتم مسیریابی در چند شبکه ایستا نشان داده‬
‫میشود‪ .‬منظور از مسیریابی برقراری یک مسیر بین سیستمهای متصل شده توسط این شبکهها میباشد‪.‬‬

‫مسیریابی ‪ E-Cube‬در فوق مکعبها‪ :‬یک مکعب ‪n‬بُعدی با ‪ N=2n‬گره را در نظر بگیرید‪ .‬هر گره ‪ b‬با‬
‫‪d=dn-‬‬ ‫کد باینری ‪ b=bn-1bn-2…b1b0‬کد میشود‪ .‬بنابراین گره منبع ‪ s=sn-1sn-2…s1s0‬و گره مقصد‬
‫‪ 1dn-2…d1d0‬میباشد‪ .‬میخواهیم یک مسیر از ‪ s‬به ‪ d‬با حداقل تعداد مراحل برقرار کنیم‪.‬‬

‫‪ n‬بُعد را با ‪ i=1,2,…,n‬نشان میدهیم که ‪i‬مین بُعد مرتبط با بیت )‪(i-1‬م در آدرس گره میباشد‪ .‬هر گره در‬
‫مسیر را با ‪ v=vn-1...v1v0‬نشان میدهیم‪ .‬مسیر بصورت زیر بطور منحصر بفرد مشخص میشود‪:‬‬

‫‪ .1‬بیت جهت ‪ 𝑟𝑖 = 𝑠𝑖−1 ⊕ 𝑑𝑖−1‬را برای همه ‪ n‬بُعد )‪ (i=1,…,n‬محاسبه کنید‪.‬‬


‫با شروع از بُعد ‪ i=1‬و ‪ v=s‬اعمال زیر را انجام دهید‪.‬‬
‫‪ .2‬اگر ‪ ri=1‬مسیر از گره جاری ‪ v‬تا گره بعدی ‪ 𝑣 ⊕ 2𝑖−1‬خواهد بود‪ .‬اگر ‪ ri=0‬از این مرحله صرفنظر‬
‫کنید‪.‬‬
‫‪| 107‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫‪ .3‬به بُعد ‪ i+1‬بروید‪ .‬اگر ‪ i≤n‬بود به مرحله ‪ 2‬برگردید در غیر اینصورت از الگوریتم خارج شوید‪.‬‬

‫مثال‪ :7-2‬مسیریابی ‪ E-cube‬برای فوقمکعب ‪ 4‬بُعدی‬

‫در شکل ‪23-2‬یک فوق مکعب ‪ 4‬بعدی نشان داده شده است که برای هر گره آن یک عدد باینری ‪ 4‬بیتی در نظر‬
‫گرفته شده است‪ .‬در این شکل ‪ n=4‬و ‪ s=0110‬و ‪ d=1101‬میباشد‪ .‬بنابراین ‪ .r=r4r3r2r1=1011‬مسیر‬
‫اول از ‪ s‬تا ‪ 𝑠⨁20 = 0111‬میباشد چون ‪ . 𝑟1 = 0⨁1 = 1‬مسیر بعدی از ‪ v=0111‬تا = ‪𝑣⨁21‬‬
‫‪ 0101‬میباشد چون ‪ .r2= 1⨁0 = 1‬از بُعد ‪ 3‬صرفنظر میکنیم چون ‪ . 𝑟3 = 1⨁1 = 0‬مسیر بعدی از‬
‫‪ v=0101‬تا 𝑑 = ‪ 𝑣⨁23 = 1101‬میباشد چون ‪ 𝑟4 = 0⨁1 = 1‬میباشد‪ .‬مسیر در شکل ‪ 23-2‬با‬
‫کمان نشان داده شده است که عبارتست از ‪.0110→0111→0101→1101‬‬

‫شکل ‪ :23-2‬مسیریابی ‪ E-cube‬روی یک کامپیوتر فوقمکعبی با ‪ 16‬گره‬

‫نکته‪ :‬در شبکه فوق مکعب ‪ n‬بُعدی تعداد یکهای حاصل از ‪ xor‬کد گره منبع و گره مقصد را فاصله همینگ‬
‫میگوییم‪ .‬اگر فاصله همینگ ‪ m‬باشد تعداد مسیرهای متفاوت با فاصله ‪ m‬بین دو گره !‪ m‬خواهد بود‪ .‬در مثال‬
‫فوق حاصل ‪ r=1011 ،xor‬میباشد که ‪ 3‬عدد یک دارد بنابراین فاصله همینگ ‪ 3‬بوده و تعداد مسیرهای متفاوت‬
‫‪ 3!=6‬میباشد‪ .‬که مسیریابی ‪ E-cube‬یک مسیر منحصر به فرد ایجاد میکند‪ .‬در مثال فوق مسیرهای با فاصله‬
‫‪ 3‬عبارتند از‪0110- ،0110-1110-1100-1101 ،0110-0111-1111-1101 ،0110-0111-0101-1101 :‬‬
‫‪0110-0100-1100-1101‬‬ ‫‪،0110-0100-0101-1101 ،1110-1111-1101‬‬

‫مسیریابی ‪ X-Y‬روی یک مش دوبُعدی‪ :‬ایده مشابهی برای شبکههای اتصالی با مش وجود دارد‪ .‬از هر گره‬
‫منبع )‪ s=(x1y1‬تا هر گره )‪ d=(x2y2‬با شروع از ‪ s‬ابتدا در امتداد محور ‪ X‬حرکت کنید تا به ستون ‪ Y2‬جاییکه‬
‫‪ d‬قرار دارد برسید سپس در امتداد محور ‪ Y‬حرکت کنید تا به ‪ d‬برسید‪ .‬در الگوی مسیریابی ‪ X-Y‬چهار راه ممکن‬
‫وجود دارد‪ :‬شرق‪-‬شمال‪ ،‬شرق‪-‬جنوب‪ ،‬غرب‪-‬شمال‪ ،‬غرب‪-‬جنوب‪ .‬این الگوریتم مسیریابی در شکل ‪ 24-2‬نشان‬
‫داده شده است‪ .‬مسیریابی ‪ X-Y‬به راحتی قابل گسترش به یک مش ‪ n‬بُعدی میباشد‪ .‬به عنوان مثال در یک مش‬
‫سه‪-‬بُعدی میتوان به سادگی از مسیریابی ‪ X-Y-Z‬استفاده کرد‪ .‬به راحتی قابل اثبات است که مسیریابیهای ‪E-‬‬
‫کانون نشر علوم‬ ‫‪| 108‬‬

‫‪ cube‬به شرطی که بین گرههای همسایه دو کانال یک جهته مختلف وجود داشته باشد و ‪ X-Y‬روی مش دوبُعدی‬
‫بدون بنبست هستند و یک مسیر کمینه را با کوتاهترین مسیر بین منبع و مقصد ایجاد میکنند‪.‬‬

‫شکل ‪ :24-2‬مسیریابی ‪ .XY‬مسیر اول از گره (‪4‬و‪ )3‬به گره (‪7‬و‪ ،)0‬مسیر دوم از گره (‪4‬و‪ )7‬به گره (‪1‬و‪ ،)5‬مسیر سوم از گره (‪7‬و‪)3‬‬
‫به گره (‪5‬و‪ )6‬و مسیر چهارم از گره (‪0‬و‪ )0‬به (‪2‬و‪ )3‬میباشد‪.‬‬

‫‪ -4-4-2‬شبکههای اتصالی پویا‪ :‬برای کاربردهای همه منظوره یا چند منظوره نیاز به استفاده از اتصاالت پویا‬
‫داریم که همه الگوهای ارتباطی را براساس نیازهای برنامه میتوانند پیاده سازی کنند‪ .‬بجای استفاده از اتصاالت‬
‫ثابت‪ ،‬باید از سوئیچ ها یا داورها در امتداد مسیرهای ارتباطی استفاده کرد تا اتصال پویا را تهیه کنند‪ .‬به ترتیب‬
‫افزایش هزینه و کارایی‪ ،‬شبکههای ارتباطی پویا شامل سیستمهای گذرگاه‪ ،‬شبکههای ارتباطی چندسطحه (‪)MIN‬‬
‫‪ ،‬و شبکههای سوئیچ تقاطعی میباشند‪.‬‬

‫هزینه این شبکهها براساس هزینه سیمها‪ ،‬سوئیچها‪ ،‬داورها‪ ،‬و اتصال دهندههای مورد نیاز میباشد‪ .‬کارایی توسط‬
‫پهنای باند شبکه‪ ،‬نرخ انتقال داده‪ ،‬تأخیر شبکه و الگوهای ارتباطی پشتیبانی شده مشخص میشود‪.‬‬

‫گذرگاههای دیجیتال‪ :‬سیستم گذرگاه مجموعهای از سیمها و اتصالدهندهها برای نقل و انتقال داده بین‬
‫پردازندهها‪ ،‬ماژولهای حافظه و وسایل جانبی متصل شده به گذرگاه میباشد‪ .‬گذرگاه فقط برای یک انتقال در هر‬
‫لحظه بین یک منبع (ارباب‪ )1‬و یک مقصد (برده‪ )2‬استفاده میشود‪ .‬در حالت چندین درخواست‪ ،‬منطق داوری گذرگاه‬
‫باید قادر به تخصیص یا بازپسگیری گذرگاه باشد زیرا گذرگاه به یک درخواست در هر لحظه پاسخ میدهد‪.‬‬

‫به همین دلیل به گذرگاه دیجیتال‪ ،‬گذرگاه رقابتی‪ ،‬یا یک گذرگاه اشتراک زمانی بین چندین ماژول عملیاتی می‪-‬‬
‫گویند‪ .‬یک سیستم گذرگاه هزینه کمتری دارد و پهنای باند محدود شدهای در مقایسه با دو شبکه اتصالی پویای‬
‫دیگر دارد‪ .‬استانداردهای صنعتی و ‪ IEEE‬زیادی از گذرگاه وجود دارد‪.‬‬

‫‪1‬‬
‫‪master‬‬
‫‪2‬‬
‫‪Slave‬‬
‫‪| 109‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫شکل ‪ 25-2‬یک سیستم چندپردازنده که توسط گذرگاه متصل شده است را نشان میدهد‪ .‬گذرگاه سیستم‪ ،‬مسیر‬
‫ارتباطی مشترکی بین پردازندهها یا زیرسیستم ورودی‪/‬خروجی و ماژولهای حافظه یا وسایل ذخیره سازی جانبی‬
‫(دیسکها‪ ،‬نوارها و ‪ )...‬تهیه میکند‪ .‬یک سیستم گذرگاه اغلب در صفحه پشتی‪ 1‬یک مدار چاپی پیادهسازی میشود‪.‬‬
‫سایر بوردها برای پردازندهها‪ ،‬حافظهها‪ ،‬یا وسایل رابط در بورد صفحه پشتی از طریق اتصالدهندهها یا کانالها‬
‫متصل میشوند‪.‬‬
‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬

‫‪C1‬‬ ‫‪C2‬‬ ‫‪Cn‬‬ ‫زیر سیستم ‪I/O‬‬

‫‪bus‬‬

‫‪M1‬‬ ‫‪M2‬‬ ‫‪Mm‬‬ ‫حافظه های جانبی‬


‫شکل ‪ :25-2‬یک سیستم چندپردازنده متصل شده به گذرگاه مانند کامپیوتر ‪Sequent Symmetry S1‬‬

‫وسایل فعال یا اربابها (پردازندهها یا زیرسیستم ورودی‪/‬خروجی) درخواستهایی برای آدرس دهی حافظه تولید‬
‫میکنند‪ .‬وسایل غیرفعال‪ 2‬یا برده (حافظهها یا جانبیها) به درخواستها پاسخ میدهند‪ .‬گذرگاه مشترک بر پایه‬
‫اشتراک زمانی استفاده میشود‪ ،‬مسائل مهم گذرگاه‪ ،‬داوری گذرگاه‪ ،‬راهاندازی وقفه‪ ،‬پروتکلهای همبستگی و‬
‫پردازش تراکنش میباشد‪.‬‬

‫کارایی سیستم چندپردازنده با یک گذرگاه (‪ )single Bus‬چقدر است؟ با توجه به شکل ‪n ،25-2‬‬
‫پردازنده و ‪ m‬ماژول حافظه مشترک داریم‪ .‬با توجه به اینکه گذرگاه در هر لحظه به یک درخواست پاسخ میدهد‬
‫در این ساختار فرقی نمی کند یک ماژول حافظه مشترک داشته باشیم یا چند ماژول چون گلوگاه کارایی گذرگاه‬
‫میباشد‪.‬‬

‫فرض میکنیم نرخ درخواست حافظه ‪ r‬باشد‪ .‬یعنی احتمال اینکه یک پردازنده در خواست حافظه کند ‪ r‬میباشد‪.‬‬
‫بنابراین احتمال اینکه حافظه توسط یک پردازنده درخواست نشود ‪ 1-r‬میباشد‪ .‬و احتمال اینکه هیچ پردازندهای‬
‫درخواست حافظه نکند ‪ (1-r)n‬میباشد‪ .‬بنابراین احتمال اینکه حداقل یک پردازنده درخواست حافظه کند برابر ‪1-‬‬
‫‪ (1-r)n‬میباشد‪ .‬بنابراین با در نظر گرفتن عدم وجود تداخل‪ 3‬داریم‪:‬‬

‫‪B.W=1-(1-r)n‬‬

‫‪1‬‬
‫‪backplane‬‬
‫‪2‬‬
‫‪passive‬‬
‫‪3‬‬
‫‪Contention‬‬
‫کانون نشر علوم‬ ‫‪| 110‬‬

‫چون گذرگاه در هر لحظه به یک درخواست پاسخ میدهد اگر ‪ r‬زیاد شود در درخواست گذرگاه تداخل بوجود خواهد‬
‫آمد و نرخ استفاده از گذرگاه محدود میشود‪ .‬یکی از راههای باال بردن کارایی استفاده از چند گذرگاه میباشد‪ .‬که‬
‫ساختار آن بصورت زیر هست‪:‬‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬

‫‪b<n‬‬

‫‪M1‬‬ ‫‪M2‬‬ ‫‪Mm‬‬

‫فرض کنید نرخ یا احتمال درخواست حافظه در هر پردازنده ‪ r‬باشد‪ ،‬در اینصورت احتمال حداقل یک درخواست به‬
‫یک ماژول برابر است با‪:‬‬
‫𝑛 𝑟‬
‫)𝑚 ‪𝑞 = 1 − (1 −‬‬
‫تفاوت با حالت قبل این هست که نرخ بین ‪ m‬ماژول تقسیم میشود‪ .‬احتمال اینکه دقیقاً به ‪ i‬ماژول یک درخواست‬
‫وجود داشته باشد عبارت است از‪:‬‬
‫𝑛‬
‫𝑖‪𝑓𝑖 = ( ) 𝑞 𝑖 (1 − 𝑞)𝑛−‬‬
‫𝑖‬
‫‪B.W=∑𝑏−1‬‬ ‫𝑛‬
‫𝑖𝑓𝑏 𝑏=𝑖∑ ‪𝑖=1 𝑖𝑓𝑖 +‬‬

‫بنابراین به علت استفاده از چند گذرگاه از قبلی بهتر میباشد‪.‬‬


‫ماژولهای سوئیچ‪ :‬یک ماژول سوئیچ ‪ a ، a×b‬ورودی و ‪ b‬خروجی دارد‪ .‬یک سوئیچ باینری یک ماژول‬
‫سوئیچ ‪ 2×2‬است که ‪ .a=b=2‬در تئوری لزوماً ‪ a,b‬نباید برابر باشند‪ .‬به هر حال‪ ،‬در عمل‪ a, b ،‬اغلب توانی از ‪2‬‬
‫انتخاب میشوند یعنی ‪.a=b=2k ,k≥1‬‬
‫جدول ‪ ،3-2‬چندین ماژول سوئیچ که بطور رایج استفاده میشوند با اندازههای ‪ 4×4 ،2×2‬و ‪ 8×8‬را لیست کرده‬
‫است‪ .‬هر ورودی می تواند به یک یا چند خروجی متصل شود‪ .‬به هر حال‪ ،‬باید از تداخل در ترمینالهای خروجی‬
‫اجتناب کرد‪ .‬به عبارت دیگر‪ ،‬نگاشتهای یک به یک و یک به چند اجازه داده شده است ولی چند به یک به خاطر‬
‫تداخل در ترمینالهای خروجی اجازه داده نشده است‪ .‬وقتیکه فقط نگاشتهای یک به یک (جایگشت) مجاز باشد‪،‬‬
‫به ماژول یک سوئیچ کراسبار‪ n×n 1‬میگوییم‪ .‬به عنوان مثال یک سوئیچ کراسبار ‪ 2×2‬فقط دو الگوی ممکن را‬

‫‪1‬‬
‫‪Crossbar‬‬
‫‪| 111‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫میتواند منتقل کند‪ :‬مستقیم و تقاطعی‪ .‬بطور کلی یک کراسبار ‪ n×n‬میتواند به !‪ n‬جایگشت برسد‪ .‬تعداد الگوهای‬
‫اتصالی قانونی برای ماژولهای سوئیچ با اندازههای مختلف در جدول ‪ 3-2‬لیست شده است‪.‬‬
‫اتصاالت جایگشتی‬ ‫حاالت قانونی‬ ‫اندازه ماژول‬
‫‪2‬‬ ‫‪4‬‬ ‫‪2×2‬‬
‫‪24‬‬ ‫‪256‬‬ ‫‪4×4‬‬
‫‪40320‬‬ ‫‪16777216‬‬ ‫‪8×8‬‬
‫!‪n‬‬ ‫‪nn‬‬ ‫‪n×n‬‬
‫جدول ‪ :3-2‬ماژولهای سوئیچ ‪ .‬حاالت قانونی‬

‫شبکههای چندسطحه‪MIN1 :‬ها هم در کامپیوترهای‪ SIMD‬و هم در ‪ MIMD‬استفاده میشوند‪ .‬یک شبکه‬


‫چندسطحه عمومی در شکل ‪ 26-2‬نشان داده شده است‪ .‬تعدادی سوئیچ ‪ a×b‬در هر سطح استفاده میشود‪.‬‬
‫اتصاالت بین سطحی ثابتی بین سوئیچهای همسایه استفاده میشود‪ .‬سوئیچها میتوانند بطور پویا پابرجا شوند تا‬
‫اتصاالت مطلوب بین ورودیها و خروجیها را برقرار کنند‪.‬‬

‫کالسهای مختلف ‪ MIN‬در ماژول های سوئیچ استفاده شده و نوع الگوهای اتصال بین سطحه‪ (ISC) 2‬باهم‬
‫متفاوتند‪ .‬سادهترین ماژول سوئیچ‪ ،‬سوئیچهای ‪ 2×2‬میباشند (در شکل ‪ .)a=b=2 ،27-2‬الگوهای ‪ ISC‬که اغلب‬
‫استفاده میشوند شامل شافل کامل‪ ،‬باترفالی‪ ،3‬شافل چندراهه‪ ،‬کراسبار‪ ،‬اتصال مکعبی و غیره میباشند‪ .‬بعضی از‬
‫این الگوهای ‪ ISC‬در زیر نشان داده شدهاند‪.‬‬
‫‪0‬‬
‫‪0‬‬ ‫سوئیچ‬ ‫‪1‬‬
‫سوئیچ‬ ‫سوئیچ‬
‫‪1‬‬ ‫‪a×b‬‬
‫‪a×b‬‬ ‫‪a×b‬‬ ‫‪b-1‬‬
‫‪a-1‬‬ ‫‪b‬‬
‫‪a‬‬ ‫سوئیچ‬
‫سوئیچ‬ ‫سوئیچ‬ ‫‪b+1‬‬
‫‪a+1‬‬ ‫‪a×b‬‬
‫‪a×b‬‬ ‫‪a×b‬‬ ‫‪2b-1‬‬
‫‪ISCn‬‬
‫‪2a-1‬‬ ‫‪ISC1‬‬ ‫‪ISC2‬‬

‫‪bn-b‬‬
‫‪an-a‬‬ ‫سوئیچ‬
‫سوئیچ‬ ‫سوئیچ‬
‫‪a×b‬‬
‫‪a×b‬‬ ‫‪a×b‬‬ ‫‪bn-1‬‬
‫‪an-1‬‬

‫سطح ‪1‬‬ ‫سطح ‪2‬‬ ‫سطح ‪n‬‬


‫شکل ‪ :26-2‬ساختار رایج شبکه ارتباطی چند سطحه (‪ )MIN‬که توسط ماژولهای سوئیچ ‪ a×b‬و الگوهای ارتباطی بین سطحی‬
‫‪ ISC1‬و ‪ ISC2‬و ‪ ISCn ....‬ساخته شده است‪.‬‬

‫‪1‬‬
‫‪Multistage interconnection network‬‬
‫‪2‬‬
‫‪ISC: interstage connection‬‬
‫‪3‬‬
‫‪butterfly‬‬
‫کانون نشر علوم‬ ‫‪| 112‬‬

‫شبکه اُمگا‪ :‬شکل ‪(27-2‬الف) تا (د)‪ 4 ،‬اتصال ممکن سوئیچهای ‪ 2×2‬استفاده شده در ساخت شبکه اُمگا را نشان‬
‫میدهد‪ .‬یک شبکه اُمگا ‪ 16×16‬در شکل ‪(27-2‬ه) نشان داده شده است‪ 4 .‬سطح از سوئیچهای ‪ 2×2‬مورد نیاز‬
‫است‪ 16 .‬ورودی در سمت چپ و ‪ 16‬خروجی در سمت راست وجود دارد‪ .‬الگوی ‪ ISC‬شافل کامل روی ‪ 16‬شیء‬
‫است‪.‬‬

‫(الف) مستقیم‬ ‫(ب) متقاطع‬ ‫(ج) پخش باال‬ ‫(د) پخش پایین‬
‫‪0‬‬ ‫الف‬ ‫الف‬ ‫الف‬ ‫الف‬ ‫‪0‬‬
‫‪8‬‬
‫‪1‬‬
‫‪4‬‬ ‫‪2‬‬
‫‪12‬‬ ‫‪3‬‬
‫‪2‬‬ ‫‪4‬‬
‫‪10‬‬ ‫‪5‬‬

‫‪6‬‬ ‫‪6‬‬
‫‪14‬‬ ‫‪7‬‬
‫‪1‬‬ ‫‪8‬‬
‫‪9‬‬ ‫‪9‬‬
‫‪5‬‬ ‫‪10‬‬
‫‪13‬‬ ‫‪11‬‬
‫‪3‬‬ ‫‪12‬‬
‫‪11‬‬ ‫‪13‬‬
‫‪7‬‬ ‫‪14‬‬
‫‪15‬‬ ‫‪15‬‬
‫(ه) یک شبکه اَمگای ‪16×16‬‬
‫شکل ‪ :27-2‬استفاده از سوئیچهای ‪ 2×2‬و الگوی شافل کامل به عنوان الگوی اتصال چند سطحه برای ساخت شبکه امگای ‪16×16‬‬

‫بطور کلی یک شبکه اُمگای ‪ n‬ورودی نیاز به ‪ log 2 n‬سطح از سوئیچهای ‪ 2×2‬دارد‪ .‬هر سطح نیاز به ‪n/2‬‬
‫ماژول سوئیچ دارد‪ .‬در مجموع شبکه ‪ (nlog 2 n)/2‬سوئیچ استفاده میکند‪ .‬هر ماژول سوئیچ بطور مجزا کنترل‬
‫میشود‪.‬‬

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

‫شبکه بیسالین‪ Wu :1‬و ‪ ،)1980( Feng‬رابطه بین کالس شبکههای اتصالی چندسطحه را مطالعه کردهاند‪.‬‬
‫یک شبکه بیسالین بطور بازگشتی بطوریکه در شکل ‪(28-2‬الف) نشان داده شده است‪ ،‬میتواند تولید شود‪.‬‬

‫‪1‬‬
‫‪Baseline‬‬
‫‪| 113‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫سطح اول شامل یک بلوک ‪ N×N‬است و سطح دوم شامل دو زیر بلوک ‪ N/2×N/2‬است که با ‪ C0‬و ‪C1‬‬
‫نامگذاری شدهاند‪ .‬پردازه ساخت بطور بازگشتی اِعمال میشود تا زمانیکه به ‪ N/2‬زیر بالک به اندازه ‪ 2×2‬برسد‪.‬‬
‫باکسهای کوچک و سنگ بنای نهایی زیربلوکها‪ ،‬سوئیچهای ‪ 2×2‬میباشند که هر کدام دو حالت اتصال قانونی‬
‫دارند‪ :‬مستقیم و متقاطع بین دو ورودی و دو خروجی‪ .‬یک شبکه بیسالین ‪ 16×16‬در شکل ‪(28-2‬ب) نشان داده‬
‫شده است‪ .‬در مسأله ‪ ،15-2‬از خوانندگان میخواهیم معادل بودن همبندی بیسالین با سایرشبکهها را اثبات کنند‪.‬‬

‫در ادامه چند نمونه مسیریابی بین انواع مختلف شبکههای چند سطحه را بررسی کرده و روشی را ارائه میدهیم که‬
‫باعث میشود شبکه بیسالین بصورت بلوکه نشدنی کار کند‪.‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪N/2×N/2‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪3‬‬
‫‪2‬‬ ‫‪N/2-2‬‬ ‫‪4‬‬ ‫‪4‬‬
‫‪C0‬‬
‫‪3‬‬ ‫‪N/2-1‬‬ ‫‪5‬‬ ‫‪5‬‬
‫‪6‬‬ ‫‪6‬‬
‫‪N/2×N/2‬‬ ‫‪7‬‬ ‫‪7‬‬
‫‪N-4‬‬ ‫‪N/2‬‬
‫‪N-3‬‬ ‫‪N/2+1 89‬‬ ‫‪8‬‬
‫‪9‬‬
‫‪N-2‬‬ ‫‪C1‬‬ ‫‪N-2 10‬‬ ‫‪10‬‬
‫‪N-1‬‬ ‫‪N-1 11‬‬ ‫‪11‬‬
‫‪12‬‬
‫(الف) ساخت بازگشتی‬ ‫‪12‬‬
‫‪13‬‬ ‫‪13‬‬
‫‪14‬‬ ‫‪14‬‬
‫‪15‬‬ ‫‪15‬‬
‫(ب) یک شبکه بیسالین ‪16×16‬‬
‫شکل ‪ :28-2‬ساخت بازگشتی شبکه بیسالین‬
‫شبکه کراسبار‪ :‬بیشترین پهنای باند و قابلیت اتصال داخلی توسط شبکه کراسبار تهیه میشود‪ .‬یک شبکه کراسبار‬
‫را می توان به عنوان یک سوئیچ یک سطحه دید‪ .‬شبیه بورد سوئیچ تلفن‪ ،‬سوئیچهای نقطه تقاطع‪ 1‬اتصاالت پویا‬
‫بین زوجها (منبع و مقصد) را فراهم میکنند‪ .‬هر سوئیچ نقطه تقاطع براساس نیاز برنامه میتواند روشن یا خاموش‬
‫باشد‪ .‬دو نوع شبکه کراسبار در شکل ‪ 29-2‬نشان داده شده است‪.‬‬

‫برای ساخت یک چندپردازنده حافظه‪-‬مشترک‪ ،‬ممکن است شبکه کراسبار بین پردازندهها و ماژولهای حافظه‬
‫(شکل ‪(29-2‬الف)) استفاده شود‪ .‬این شبکه ضرروتاً یک شبکه دسترسی به حافظه میباشد‪ .‬چندپردازنده ‪C.mmp‬‬
‫(‪ )1972 Wulf, Bell‬یک شبکه کراسبار ‪ 16×16‬را پیادهسازی کرده است که ‪ 16‬پردازنده ‪ PDP11‬را به ‪16‬‬
‫ماژول حافظه که هر کدام ظرفیت ‪ 1‬میلیون کلمه حافظه دارند‪ ،‬متصل کرده است‪ 16 .‬پردازنده حداکثر میتوانند‬
‫بطور همزمان به ‪ 16‬ماژول حافظه دسترسی پیدا کنند‪.‬‬
‫نکته اینکه هر ماژول حافظه فقط می تواند درخواست یک پردازنده را در هر لحظه برآورده کند‪ .‬وقتی چندین‬
‫درخواست برای ماژول حافظه مشابهی بطور همزمان میرسد‪ ،‬کراسبار باید تداخلها را رفع کند‪ .‬رفتار هر سوئیچ‬
‫کراسبار خیلی شبیه یک گذرگاه است‪ .‬به هر حال‪ ،‬هر پردازنده میتواند رشتهای از آدرسها را برای دسترسی به‬
‫چند ماژول حافظه بطور همزمان تولید کند‪ .‬بنابراین‪ ،‬در شکل ‪(29-2‬الف)‪ ،‬فقط یک سوئیچ نقطه تقاطع میتواند‬

‫‪1‬‬
‫‪Crosspoint‬‬
‫کانون نشر علوم‬ ‫‪| 114‬‬

‫در هر ستون تنظیم شود‪ .‬چندین سوئیچ نقطه تقاطع میتوانند بطور همزمان تنظیم شوند تا موازات را برای دسترسی‪-‬‬
‫های حافظه پشتیبانی کنند‪.‬‬
‫نوع دیگری از شبکه کراسبار برای ارتباطات بین پردازنده در شکل ‪ 29-2‬نشان داده شده است‪ .‬این کراسبار بزرگ‬
‫(‪ ،)214×214‬واقعاً در یک پردازنده موازی (‪ )VPP500‬توسط ‪ Fujitsu‬ساخته شده است‪PE .‬ها پردازندههای با‬
‫حافظه الحاقی میباشند‪CP .‬ها پردازندههای کنترلی هستند که برای مدیریت کل عملیات سیستم همچنین شبکه‬
‫کراسبار استفاده میشوند‪ .‬در این کراسبار‪ ،‬فقط یک نقطه تقاطع میتواند در هر لحظه در هر سطر و ستون تنظیم‬
‫ارسال‬ ‫شود‪.‬‬
‫‪PE 222‬‬
‫‪P1‬‬ ‫‪PE 221‬‬

‫‪P2‬‬ ‫‪PE 220‬‬

‫‪PE 219‬‬

‫‪P16‬‬
‫‪PE 001‬‬

‫‪M1‬‬ ‫‪M2‬‬ ‫‪M16‬‬ ‫‪CP 002‬‬

‫(الف) شبکه کراسبار حافظه‪-‬بین پردازنده ساخته شده در‬ ‫‪CP 001‬‬

‫پردازنده ‪ C.mmp‬در دانشگاه ملن‪-‬کانجیا (‪)1972‬‬ ‫‪CP001 CP002 PE001‬‬ ‫‪PE219‬‬ ‫‪PE220 PE221 PE222‬‬
‫‪On‬‬
‫‪Off‬‬
‫دریافت‬
‫(ب) شبکه کراسبار بین پردازنده ساخته شده در پردازنده موازی برداری ‪Fujitsu VPP500‬‬
‫شکل ‪ :29-2‬دو نوع پیکربندی از شبکه سوئیچ کراسبار‬
‫کراسبار بین پردازنده‪ ،‬اتصاالت جایگشتی بین پردازندهها را فراهم میکند‪ .‬اتصاالت یک‪-‬به‪-‬یک هستند‪ .‬بنابراین‬
‫یک کراسبار ‪ n×n‬حداکثر میتواند ‪ n‬جفت (منبع و مقصد) را در هر لحظه متصل کند‪ .‬این شبکه با شبکه کراسبار‬
‫حافظه‪-‬پردازنده فرق میکند عملیات و اهداف دو نوع شبکه خیلی متفاوت است‪.‬‬

‫محاسبه کارایی شبکه کراسبار حافظه‪-‬پردازنده شکل ‪29-2‬الف با فرض وجود ‪ n‬پردازنده و‬
‫‪ m‬ماژول حافظه‬

‫فرض میکنیم نرخ تولید درخواست حافظه در هر پردازنده ‪ r‬باشد‪ .‬در اینصورت احتمال تولید درخواست پردازنده ‪Pi‬‬
‫𝑟‬ ‫𝑟‬
‫برای ‪ 𝑚 ،mj‬میباشد‪ .‬بنابراین احتمال عدم در خواست ‪ Pi‬برای ‪ 1 − 𝑚 ،mj‬میباشد‪ .‬در نتیجه حتمال اینکه‬
‫𝑛 𝑟‬
‫حداقل یک پردازنده به یک ماژول درخواست بدهد برابر است با‪ .1 − (1 − 𝑚) :‬در نتیجه در این حالت داریم‪:‬‬
‫𝑛 𝑟‬
‫) )𝑚 ‪𝐵. 𝑊 = 𝑚 (1 − (1 −‬‬
‫‪| 115‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫شبکههای ‪ :CLOS‬شبکه کلوز کالسی از همبندیهای شبکه سوئیچ چندسطحه میباشد که مسیرهای متناوب‬
‫بین ورودیها و خروجیها تهیه میکنند‪ ،‬که امکان بلوکه شدن را حذف یا حداقل میکند که در سایر شبکهها‬
‫ممکن است اتفاق بیافتد‪ Charles Clos .‬اثبات کرد که کالس شبکههای سوئیچینگ او در مقابل بلوکه شدن‬
‫که محدودیت کارایی سیستمهای سوئیچینگ است‪ ،‬ایمن است‪ .‬این اولین کالس شبکهها با پیچیدگی درجه دو بود‬
‫که کارایی بدون بلوکه شدن را ارائه میکرد‪.‬‬

‫شکل ‪ :30-2‬شبکه کلوز سه سطحه متقارن‬

‫ساخت یک شبکه کلوز‪ :‬شبکه کلوز ‪-3‬سطحه متقارن در شکل ‪ 30-2‬نشان داده شده است‪ .‬سه پارامتر کلیدی‬
‫برای این شبکه وجود دارد‪ :‬تعداد ماژولهای سوئیچ در سطوح یک و سه‪ ،‬تعداد ماژولهای سوئیچ در سطح میانی و‬
‫تعداد ورودیها (خروجیها) به ماژولهای سطح اول (سوم) سوئیچ‪ .‬این پارامترها به ترتیب با ‪ r‬و ‪ m‬و ‪ n‬مشخص‬
‫میشوند و بطور کامل شبکه را توصیف میکنند‪ .‬ما از )‪ C(n,m,r‬برای نمایش چنین شبکهای استفاده میکنیم و‬
‫‪ N=nr‬تعداد ورودیهای شبکه (و خروجیها) میباشند‪.‬‬

‫شبکههای اکیداً بلوکه نشدنی‪ :1‬به یک شبکه اکیداً بلوکه نشدنی میگویند اگر‪ ،‬هیچ پیکربندی از اتصاالت‬
‫وجود نداشته باشد که بتواند از اضافه شدن یک اتصال جدید بین یک ورودی بیکار و یک خروجی بیکار جلوگیری‬
‫کند‪ .‬اگر ‪ ،m≥2n-1‬آنگاه )‪ C(n,m,r‬اکیداً بلوکه نشدنی است‪ .‬به این دلیل که سوئیچ سطح یک با یک ورودی‬
‫بیکار حداکثر ‪ n-1‬لینک مشغول دارد که آنرا به سطح میانی متصل میکند‪ ،‬بنابراین از هر ورودی بیکار‪ ،‬حداکثر‬

‫‪1‬‬
‫‪Strictly Non-Blocking Networks‬‬
‫کانون نشر علوم‬ ‫‪| 116‬‬

‫‪ n-1‬ماژول سطح میانی غیرقابل دسترس وجود دارد‪ .‬وقتیکه )‪ ،m>2(n-1‬این کمتر از نصف تعداد ماژولهای‬
‫سوئیچ سطح میانی است‪ .‬بطور مشابه‪ ،‬کمتر از نصف ماژولهای سوئیچ سطح میانی از هر خروجی بیکار قابل‬
‫دسترس است‪ ،‬به این معنی که باید تعدادی ماژول سوئیچ سطح میانی وجود داشته باشد که از هر دوطرف دست‬
‫یافتنی است‪ .‬بنابراین برای هر پیکربندی اتصاالت جاری شبکه‪ ،‬همیشه یک مسیر برای اتصال یک ورودی بیکار‬
‫و یک خروجی بیکار وجود دارد‪.‬‬

‫شبکههای بلوکه نشدنی قابل آرایش مجدد‪ :1‬به یک شبکه بلوکه نشدنی قابل آرایش مجدد میگویند اگر‬
‫همیشه اضافه کردن یک اتصال جدید که یک ورودی بیکار را به یک خروجی بیکار متصل میکند با آرایش مجدد‬
‫اتصاالت موجود امکانپذیر باشد‪ .‬شبکههای کلوز بلوکه نشدنی قابل آرایش مجدد میگویند اگر ‪ .m≥n‬این به‬
‫سادگی با فرمول بندی مجدد مسأله یک مجموعه اتصاالت در طول یک شبکه مثل مسأله رنگآمیزی یال گراف‬
‫نمایش داده میشود که در شکل ‪ 31-2‬نشان داده شده است‪.‬‬

‫شکل ‪ :31-2‬مسیریابی اتصاالت همزمان در )‪ C(n,n,r‬با استفاده از رنگآمیزی یال گراف‬

‫گراف استفاده شده برای تشخیص مجموعه مسیرها یک رأس برای هر سوئیچ سطح اولیه در شبکه و یک رأس‬
‫برای هر سوئیچ سطح سه در شبکه دارد‪ .‬یک یال بین یک رأس در مجموعه اول و یک رأس در مجموعه دوم برای‬
‫هر اتصال اضافه می شود که نیازمند مسیریابی از یک ورودی سوئیچ مرتبط با اولین رأس به یک خروجی سوئیچ‬
‫مرتبط با رأس دوم میباشد‪ .‬این در شکل ‪ 31-2‬نشان داده شده است که زوجهای (ورودی‪ ،‬خروجی) در باالی‬
‫سوئیچ برای ساخت گراف نشان داده شده در سمت چپ استفاده میشوند‪ .‬با این گراف داده شده مرحله بعدی‬
‫اختصاص رنگها به یالها میباشد بطوریکه هیچ دو یال واقع در سوئیچ سطح اول مشابه‪ ،‬رنگ مشابهی نگیرد‪ .‬در‬
‫شکل رنگهای سطح میانی با ‪ R,G,B‬نشان داده شدهاند با توجه به تئوری گراف برای برقراری این محدودیت‬
‫یک گراف با درجه ‪ n‬نمیتواند بیشتر از ‪ n‬رنگ بگیرد و بنابراین تعداد سوئیچهای سطح میانی حداکثر ‪ n‬میباشد‪.‬‬

‫‪1 Rearrangeably nonblocking networks‬‬


‫‪| 117‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫بنابراین مقدار ‪ m‬باید براساس نیازهای شبکه تصمیم گیری شود‪ .‬ما باید حدبهینهای بین بازدهی اتصالی و هزینه‬
‫تقاطع‪1‬‬ ‫برای انتخاب مقدار ‪ m‬در نظر بگیریم‪ .‬برای انتخاب مقدار ‪ n, r‬عبارتی را بدست میآوریم که تعداد نقاط‬
‫(و بنابراین تعداد سوئیچها) را حداقل کند‪:‬‬

‫تعداد نقاط تقاطع)‪ =(cp‬تعداد سوئیچها در سطح اول‪ +‬تعداد سوئیچها در سطح میانی‪ +‬تعداد سوئیچها در‬ ‫•‬
‫سطح سوم =‪2nmr+r2m =nmr+r2m+nmr‬‬
‫چون ‪ N=nr‬با جایگزینی ‪ r=N/n‬داریم‪)1(cp=2Nm+(N/n)2m :‬‬ ‫•‬
‫با )‪ m=2(n-1‬برای محدودیت حالت بلوکه نشدنی داریم‪cp=4N(n-1)+2N2/n-2(N/n)2 :‬‬ ‫•‬
‫با مشتق گرفتن نسبت به ‪ n‬داریم‪d(cp)/dn=4N-2(N/n)2-4N2/n3 :‬‬ ‫•‬
‫برای حداقل کردن تعداد نقاط تقاطع بر اساس ‪ n‬باید ‪ d(cp)/d(n)=0‬بنابراین داریم‪)2( n=√𝑁 /2‬‬
‫با جایگزینی مقدار ‪ n‬از معادله (‪ )2‬به (‪ )1‬داریم‪cp≈ 𝑁 3/2 :‬‬ ‫•‬

‫ارزیابی یک شبکه کلوز‬

‫قطر بین هر دو گره در شبکه کلوز مشابه و برابر با تعداد سطوح‪ 1+‬میباشد‪.‬‬

‫تعداد مسیرها بین هر دو میزبان‪ :‬هر دو میزبان در یک شبکه کلوز از طریق سوئیچهای الیه میانی متصل‬
‫میشوند‪ .‬بنابراین هرچه تعداد سوئیچهای سطح میانی بیشتر‪ ،‬تعداد مسیرهای بین هر دو گره بیشتر‪ .‬بوضوح‪ ،‬تعداد‬
‫مسیرها بین هر دو گره برابر با تعداد سوئیچهای سطح میانی میباشد‪.‬‬

‫پهنای دو بخشی‪ :‬شبکه کلوز همیشه یک اتصال جدید را برای شکل دهی بین یک ورودی بیکار و یک خروجی‬
‫بیکار اجازه می دهد‪ ،‬چه مستقیماً یا با آرایش مجدد‪ ،‬بنابراین پوشای کامل است‪ .‬پهنای دوبخشی شبکه ‪N/2‬‬
‫میباشد‪.‬‬

‫‪ -5-4-2‬مسیریابی در شبکههای پویا‬

‫شبکه های بلوکه شدنی و بلوکه نشدنی‪ :‬به یک شبکه چند سطحه بلوکه شدنی میگویند اگر اتصاالت‬
‫همزمان چند زوج ورودی‪-‬خروجی امکان تداخل در استفاده از سوئیچها یا لینکهای ارتباطی داشته باشد‪.‬‬

‫مثالهایی از شبکههای بلوکشدنی شامل اُمگا (الوری ‪ ،)1975‬بیسالین (وو و فنگ ‪ )1980‬بنیان (گوک و لیپوسکی‬
‫‪ )1973‬و شبکههای دلتا (پاتل ‪ )1979‬میباشند‪ .‬بعضی شبکههای بلوک شدنی بعد از تبدیل به گراف‪ ،‬مشابه هستند‪.‬‬

‫‪1‬‬
‫‪Cross Point‬‬
‫کانون نشر علوم‬ ‫‪| 118‬‬

‫در حقیقت‪ ،‬اکثر شبکههای چندسطحه بطور ذاتی بلوکه شدنی هستند‪ .‬در یک شبکه بلوکه شدنی‪ ،‬ممکن است‬
‫چندین گذر نیاز داشته باشیم تا به اتصاالت ورودی‪-‬خروجی خاصی برسیم‪.‬‬

‫به یک شبکه چندسطحه بلوکه نشدنی میگوییم اگر بتواند همه اتصاالت ممکن بین ورودیها و خروجیها را با‬
‫مرتب سازی مجدد اتصاالتش انجام دهد‪ .‬در چنین شبکهای‪ ،‬یک مسیر اتصالی میتواند همیشه بین هر زوج‬
‫ورودی‪-‬خروجی پابرجا شود‪ .‬شبکههای بنیس (بنیس ‪ )1965‬چنین قابلیتی دارد‪ .‬به هرحال‪ ،‬شبکههای بنیس نیازمند‬
‫تقریباً دوبرابر تعداد سطوح است تا به اتصاالت بلوکه نشدنی برسد‪ .‬شبکههای کلوز‪( 1‬کلوز ‪ )1953‬میتوانند همه‬
‫جایگشتها را در یک گذر بدون بلوکه شدن انجام دهند‪ .‬زیرکالسهای خاصی از شبکههای بلوک شدنی میتوانند‬
‫به صورت بلوکه نشدنی ساخته شوند اگر سطوح اضافی‪ ،‬اضافه شوند یا اتصاالت محدود شوند‪ .‬در ادامه روش‬
‫مسیریابی در چند نمونه شبکه پویا را بررسی میکنیم‪.‬‬

‫مسیریابی در شبکه اُمگا‪ .:‬در زیر الگوریتم مسیریابی پیام و قابلیت همهپخشی شبکه اُمگا را توصیف میکنیم‪.‬‬
‫این کالس از شبکه در داخل چندپردازنده سدا‪/‬ایلینویز (‪ ، )1987‬در داخل ‪ )1985( IBM RP3‬و داخل آلتراکامپیوتر‬
‫‪ )1983( NYU‬ساخته شده است‪ .‬یک شبکه اُمگای ‪ 8‬ورودی در شکل ‪ 32-2‬نشان داده شده است‪.‬‬

‫در کل‪ ،‬یک شبکه اُمگای با ‪ n‬ورودی 𝑛‪ 𝑙𝑜𝑔2‬سطح دارد سطوح از ‪ 0‬تا‪ 𝑙𝑜𝑔2𝑛 -1‬از ورودی تا خروجی برچسب‬
‫گذاری شدهاند‪ .‬مسیریابی داده با بازرسی کد مقصد در مبنای ‪ 2‬کنترل میشود‪ .‬وقتی بیت ‪i‬ام کد مقصد صفر است‬
‫(چپ به راست) یک سوئیچ ‪ 2×2‬در سطح ‪ i‬ورودی را به خروجی باالتر متصل میکند در غیر اینصورت ورودی به‬
‫خروجی پایینتر متصل میشود‪.‬‬

‫دو تنظیم سوئیچ در شکل ‪(32-2‬الف) و (ب) متناظر با جایگشتهای )‪ π1=(0,7,6,4,2)(1,3))5‬و‬


‫)‪ π2=(0,6,4,7,3)(1,5‬به ترتیب نشان داده شده است‪.‬‬

‫تنظیمات سوئیچ شکل ‪(32-2‬الف) برای پیادهسازی ‪ π1‬که نگاشتهای زیر را انجام میدهد میباشد‪0→7, .‬‬
‫‪ .7→6, 6→4, 4→2, 2→0, 1→3, 3→1, 5→5‬مسیریابی یک پیام از ورودی ‪ 001‬به خروجی ‪ 011‬را در‬
‫نظر بگیرید‪ .‬این دربرگیرنده استفاده از سوئیچهای ‪ C, B, A‬میباشد‪ .‬چون با ارزشترین بیت مقصد ‪ ،011‬صفر‬
‫میباشد‪ ،‬سوئیچ ‪ A‬باید بطور مستقیم تنظیم شود‪ .‬بنابراین ورودی ‪ 001‬به خروجی باالتر وصل میشود (برچسب‬
‫‪ .)2‬بیت وسطی در ‪ ،011‬یک است بنابراین ورودی ‪ 4‬از سوئیچ ‪ B‬به خروجی پایینتر با یک اتصال تقاطعی وصل‬
‫میشود‪ .‬کم ارزشترین بیت در ‪ ،011‬یک است که یک اتصال مستقیم را در سوئیچ ‪ C‬باعث میشود‪ .‬بطور مشابه‪،‬‬
‫سوئیچهای ‪ D, E, A‬برای مسیریابی یک پیام از ورودی ‪ 101‬به خروجی ‪ 101‬تنظیم میشوند‪ .‬هیچ تداخلی در‬
‫همه تنظیمات سوئیچ مورد نیاز برای پیادهسازی جایگشت‪ π1‬در شکل ‪(2-30‬الف) وجود ندارد‪.‬‬

‫‪1‬‬
‫‪Clos‬‬
‫‪| 119‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫حال پیادهسازی جایگشت ‪ π2‬در شبکه اُمگای ‪ 8‬ورودی را در نظر بگیرید (شکل ‪(32-2‬ب))‪ .‬تداخل در سه سوئیچ‬
‫تعیین شده با برچسبهای ‪ H, G, F‬وجود دارد‪ .‬تداخلهای اتفاق افتاده در سوئیچ ‪ F‬با مسیریابیهای ‪000→110‬‬
‫و ‪ 100→111‬ایجاد میشوند‪ .‬چون هر دو آدرس مقصد بیت ‪ 1‬دارند‪ ،‬هر دو ورودی سوئیچ ‪ F‬باید به خروجی‬
‫پایینی متصل شوند‪ .‬برای حل تداخل باید یک درخواست را رد کرد‪.‬‬

‫به طور مشابه تداخلهای سوئیچ ‪ G‬بین ‪ 011→000, 111→011‬و در سوئیچ ‪ H‬بین ‪ 101→001‬و‬
‫‪ 011→000‬ایجاد میشوند‪ .‬در سوئیچهای ‪ J, I‬پخش از یک ورودی به دو خروجی استفاده شده است که اگر‬
‫سخت افزار با داشتن ‪ 4‬حالت قانونی ساخته شده باشد (شکل ‪(27-2‬الف)) مجاز است‪ .‬مثال فوق این حقیقت را‬
‫مشخص میکند که همه جایگشتها نمیتوانند در یک گذر در شبکه اُمگا پیادهسازی شوند‪.‬‬
‫‪000‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪000‬‬

‫‪001‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪001‬‬

‫‪010‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪C‬‬ ‫‪010‬‬


‫‪A‬‬
‫‪011‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪011‬‬

‫‪100‬‬ ‫‪4‬‬ ‫‪4‬‬


‫‪B‬‬ ‫‪D‬‬ ‫‪100‬‬
‫‪5‬‬ ‫‪5‬‬
‫‪101‬‬ ‫‪101‬‬
‫‪6‬‬ ‫‪6‬‬
‫‪110‬‬ ‫‪110‬‬
‫‪7‬‬ ‫‪E‬‬
‫‪7‬‬
‫‪111‬‬ ‫‪111‬‬
‫(الف) جایگشت )‪ π1=(0,7,6,4,2)(1,3))5‬پیادهسازی شده روی یک شبکه امگا بدون بلوکه‬
‫شدن‬
‫‪000‬‬ ‫‪I‬‬ ‫‪000‬‬
‫‪F‬‬
‫‪001‬‬ ‫‪001‬‬

‫‪010‬‬ ‫‪010‬‬
‫‪011‬‬
‫‪011‬‬
‫‪100‬‬ ‫‪H‬‬ ‫‪100‬‬

‫‪101‬‬ ‫‪101‬‬

‫‪110‬‬ ‫‪110‬‬
‫‪G‬‬ ‫‪J‬‬
‫‪111‬‬ ‫‪111‬‬
‫(ب) جایگشت )‪ .π2=(0,6,4,7,3)(1,5‬سوئیچهای با برچسبهای ‪ H,G,F‬بلوکه میشوند‪.‬‬
‫شکل ‪ :32-2‬دو تنظیم سوئیچ از یک شبکه امگای ‪ 8×8‬ساخته شده با سوئیچهای ‪2×2‬‬

‫شبکه اُمگا نوعی از شبکههای بلوک شدنی است‪ .‬در حالت بلوکه شدن‪ ،‬میتوان اتصاالت متداخل را در چندین گذر‬
‫پابرجا کرد‪ .‬به عنوان مثال در ‪ ،π2‬میتوانیم ‪ 000→110, 001→101‬و ‪ 010→010‬و ‪ 101→001‬و‬
‫‪ 110→100‬را در گذر اول و ‪ 011→000, 100→111‬و ‪ 111→011‬را در گذر دوم متصل کنیم‪ .‬در کل‪،‬‬
‫اگر باکسهای سوئیچ ‪ 2×2‬استفاده شوند یک شبکه اُمگای ‪ n‬ورودی میتواند ‪ nn/2‬جایگشت را در یک گذر‬
‫پیادهسازی کند‪ .‬در کل !‪ n‬جایگشت داریم‪.‬‬
‫کانون نشر علوم‬ ‫‪| 120‬‬

‫برای ‪ n=8‬فقط ‪ 84/8!=4096/40320=0.1016=10.16%‬از همه جایگشتها در یک گذر در یک‬


‫شبکه اُمگای ‪ 8‬ورودی قابل پیادهسازی است‪ .‬بنابراین بقیه جایگشتها باعث بلوکه شدن میشوند و متقاضی ‪3‬‬
‫گذر برای حل میباشند‪ .‬در کل حداکثر 𝑛‪ 𝑙𝑜𝑔2‬گذر برای یک اُمگای ‪ n‬ورودی مورد نیاز است‪ .‬بلوک شدن در هیچ‬
‫شبکه چندسطحه خصوصیت مطلوبی نیست‪ .‬ممکن است پهنای باند مؤثر را کم کند‪.‬‬

‫همانطور که در شکل ‪(33-2‬الف) نشان داده شده است با استفاده از تنظیمات سوئیچ باال و پایین‪ ،‬شبکه اُمگا میتواند‬
‫برای پخش داده از یک منبع به مقصدهای زیادی استفاده شود‪ .‬در شکل ‪(33-2‬الف) پیام ورودی ‪ 001‬به همه ‪8‬‬
‫خروجی از طریق یک اتصال درخت باینری پخش میشود‪.‬‬
‫‪000‬‬ ‫‪000‬‬

‫‪001‬‬ ‫‪001‬‬

‫‪010‬‬ ‫‪010‬‬

‫‪011‬‬ ‫‪011‬‬

‫‪100‬‬ ‫‪100‬‬

‫‪101‬‬ ‫‪101‬‬

‫‪110‬‬ ‫‪110‬‬

‫(الف)اتصاالت پخشی‬
‫‪0000‬‬ ‫‪0000‬‬
‫‪0001‬‬
‫‪0001‬‬
‫‪4×4‬‬ ‫‪4×4‬‬ ‫‪0010‬‬
‫‪0010‬‬
‫‪0011‬‬ ‫‪0011‬‬
‫‪0100‬‬ ‫‪0100‬‬
‫‪0101‬‬ ‫‪4×4‬‬ ‫‪4×4‬‬ ‫‪0101‬‬
‫‪0110‬‬ ‫‪0110‬‬
‫‪0111‬‬ ‫‪0111‬‬
‫‪1000‬‬ ‫‪1000‬‬
‫‪1001‬‬
‫‪4×4‬‬ ‫‪4×4‬‬ ‫‪1001‬‬
‫‪1010‬‬ ‫‪1010‬‬
‫‪1011‬‬ ‫‪1011‬‬
‫‪1100‬‬
‫‪1100‬‬
‫‪4×4‬‬ ‫‪4×4‬‬ ‫‪1101‬‬
‫‪1101‬‬
‫‪1110‬‬ ‫‪1110‬‬
‫‪1111‬‬ ‫‪1111‬‬

‫(ب)استفاده از اتصاالت بین سطحی شافل ‪4‬راهه‬


‫شکل ‪ :33-2‬قابلیت همهپخشی شبکه اُمگا و ساخت با سوئیچهای ‪4×4‬‬

‫وقتیکه سوئیچ ‪ 4×4‬به عنوان بلوکهای پایه استفاده شوند‪ ،‬بجای شافل دو‪-‬راهه میتوان از شافل ‪4‬راهه استفاده‬
‫کرد‪ .‬همانطور که در شکل ‪(33-2‬ب) برای یک شبکه اُمگای ‪ 16‬ورودی با ‪ 𝑙𝑜𝑔416 = 2‬سطح نشان داده شده‬
‫است‪ .‬نکته اینکه یک شافل ‪-4‬راهه مرتبط با تقسیم ‪ 16‬ورودی به ‪ 4‬زیرمجموعه برابر و سپس شافل کردن آنها‬
‫‪| 121‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫بین ‪ 4‬زیرمجموعه بصورت عادالنه میباشد‪ .‬وقتیکه باکسهای سوئیچ ‪ k×k‬استفاده شوند میتوان تابع شافل ‪k‬‬
‫راهه را تعریف کرد تا بتوان شبکه اُمگای بزرگتری با 𝑛𝑘𝑔𝑜𝑙 سطح ساخت‪.‬‬

‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪.‬‬ ‫‪8×8‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪.‬‬ ‫‪7‬‬
‫‪8×8‬‬ ‫‪8×8‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪7‬‬
‫‪8‬‬ ‫‪8‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪7‬‬ ‫‪7‬‬ ‫‪.‬‬ ‫‪8×8‬‬
‫‪15‬‬ ‫‪15‬‬
‫‪64×64‬‬
‫‪8‬‬ ‫‪8‬‬ ‫‪56‬‬
‫‪.‬‬
‫‪9‬‬ ‫‪9‬‬ ‫‪.‬‬
‫‪8×8‬‬ ‫‪8×8‬‬ ‫‪63‬‬
‫‪56‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪8×8‬‬
‫‪63‬‬
‫‪15‬‬ ‫‪15‬‬ ‫‪64‬‬
‫‪65‬‬
‫‪.‬‬ ‫‪64‬‬
‫‪.‬‬
‫‪71‬‬ ‫‪8×8‬‬
‫‪56‬‬ ‫‪56‬‬ ‫‪72‬‬ ‫‪71‬‬
‫‪.‬‬
‫‪57‬‬ ‫‪57‬‬ ‫‪.‬‬
‫‪8×8‬‬ ‫‪8×8‬‬ ‫‪64×64‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬

‫‪63‬‬ ‫‪63‬‬
‫‪127‬‬
‫‪120‬‬
‫(الف) یک شبکه سوئیچ باترفالی ‪ 64×64‬دو‬
‫‪8×8‬‬
‫‪127‬‬
‫سطحه ساخته شده با ‪ 16‬سوئیچ کراسبار ‪8×8‬‬
‫و اتصاالت بین سطحه شافل ‪-8‬راهه‬
‫‪608‬‬
‫‪409‬‬ ‫‪448‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪8×8‬‬
‫‪415‬‬ ‫‪455‬‬
‫‪416‬‬
‫‪.‬‬
‫‪.‬‬
‫‪423‬‬
‫‪64×64‬‬
‫‪504‬‬ ‫‪504‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪8×8‬‬
‫‪511‬‬ ‫‪511‬‬
‫(ب) شبکه سوئیچ ‪ 512×512‬سه سطحه ساخته شده با ‪ 192‬سوئیچ کراسبار ‪8×8‬‬
‫شکل ‪ :34-2‬ساخت ماژولی شبکههای سوئیچ باترفالی با سوئیچهای کراسبار ‪courtesy of 1990( 8×8‬‬
‫‪)BBN advanced computers‬‬

‫مسیریابی در شبکههای باترفالی‪ :‬این کالس از شبکهها با سوئیچهای کراسبار به عنوان بلوک پایه ساخته‬
‫میشود‪ .‬شکل ‪ 34-2‬دو شبکه باترفالی با اندازههای مختلف را نشان میدهد‪ .‬شکل ‪(34-2‬الف) یک شبکه‬
‫باترفالی ‪ 64‬ورودی را نشان میدهد که با دو سطح ( ‪ (2=𝑙𝑜𝑔864‬از سوئیچهای کراسبار ‪ 8×8‬ساخته شده است‪.‬‬
‫تابع شافل ‪-8‬راهه برای پابرجاکردن اتصاالت بین سطحه بین سطح ‪ 0‬و سطح ‪ 1‬استفاده میشود‪ .‬در شکل ‪-2‬‬
‫‪(34‬ب)‪ ،‬یک شبکه باترفالی سه سطحه برای ‪ 512‬ورودی با سوئیچهای کراسبار ‪ 8×8‬ساخته شده است‪ .‬هر یک‬
‫از باکسهای ‪ 64×64‬در شکل ‪(34-2‬ب) معادل یک شبکه دو سطحه شکل ‪(34-2‬الف) میباشند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 122‬‬

‫در کل‪ 16 ،‬سوئیچ کراسبار ‪ 8×8‬در شکل ‪(34-2‬الف) و ‪ 8×8+8×16=192‬سوئیچ در شکل ‪(34-2‬ب) استفاده شده‬
‫است‪ .‬شبکههای باترفالی بزرگتر را میتوان با استفاده از سطوح بیشتر بصورت ماژولی ساخت‪ .‬نکته اینکه هیچ‬
‫اتصال همهپخشی در یک شبکه باترفالی مجاز نیست که این شبکهها را زیرکالسی محدود شده از شبکههای امگا‬
‫ساخته است‪.‬‬

‫در روشهای قبل مشاهده کردیم که بعضی جایگشتها در یک گذر در شبکههای چندسطحه امکان پذیر نیستند‬
‫و باید بعضی آنها را ب ه تأخیر انداخته تا گذرهای بعدی برقرار شوند‪ .‬این مطلب در شبکههای بیسالین نیز صدق‬
‫میکند اما در شبکههای بیسالین میتوان با افزایش تعداد سطوح میانی آنرا به شبکهای بلوکه نشدنی تبدیل کرد‪.‬‬
‫یکی از این شبکهها شبکه ‪ benes‬میباشد‪ .‬در شکل ‪(35-2‬الف) یک شبکه بیسالین ‪ 8×8‬نشان داده شده است‬
‫که بلوکه شدنی است‪ .‬در شکل ‪(35-2‬ب) اصالح شده این شبکه با اضافه شدن سه سطح میانی به شبکه بیسالین‬
‫نشان داده شده است این شبکه بلوکه نشدنی است زیرا برای رسیدن به هر خروجی از هر ورودی دو مسیر مختلف‬
‫وجود دارد‪ .‬یکی از طریق سطح میانی ‪ a‬و دیگری از طریق سطح میانی ‪.b‬‬
‫‪a‬‬
‫‪0‬‬ ‫‪0 0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪1 1‬‬ ‫‪1‬‬

‫‪2‬‬ ‫‪2 2‬‬ ‫‪2‬‬


‫‪3‬‬ ‫‪3 3‬‬ ‫‪3‬‬

‫‪4‬‬ ‫‪4 4‬‬ ‫‪4‬‬


‫‪5‬‬ ‫‪5 5‬‬ ‫‪5‬‬

‫‪6‬‬ ‫‪6 6‬‬ ‫‪6‬‬


‫‪7‬‬ ‫‪7 7‬‬ ‫‪7‬‬
‫‪b‬‬
‫(ب) شبکه بیسالین با افزایش سطوح میانی به منظور حذف‬
‫(الف) شبکه بیسالین با ‪ 8‬وردی و خروجی‬
‫ایراد بلوکه شدن (‪ )benes‬با ‪ 8‬وردی و خروجی‬
‫شکل ‪ :35-2‬شبکه های بیس الین و ‪ benes‬با ‪ 8‬وردی و خروجی‬

‫برای ایجاد مسیریابی در شبکه ‪ benes‬شکل ‪(35-2‬ب) یک جدول ‪ n×n‬به تعداد ‪ n‬ورودی و خروجی میکشیم‬
‫و سطر و ستون اول آنرا شمارهگذاری میکنیم‪ .‬سپس به جایگشت داده شده توجه میکنیم و هر تبدیلی که در بین‬
‫یک ورودی و خروجی وجود دارد یک عالمت × میگذاریم‪ .‬سپس از منتهیالیه سمت چپ اولین × شروع کرده و‬
‫به سمت راست پیش میرویم تا به یک × برسیم‪ .‬سپس به پایین میرویم تا به یک × برسیم و سپس به سمت‬
‫راست رفته تا به یک × برسیم‪ .‬در انتها به باال میرویم و عمل را تکرار میکنیم و در مسیر حرکت یک شکل بسته‬
‫ایجاد میکنیم‪ .‬در شکل ایجاد شده یکی در میان × ها را به ‪ a, b‬نامگذاری میکنیم‪.‬‬

‫مثال‪ :8-2‬جایگشت ‪ 7→5 ،6→1 ،5→6 ،4→2 ،3→0 ،2→4 ،1→7 ،0→3‬را روی شبکه ‪benes‬‬
‫پیاده کنید‪.‬‬
‫‪| 123‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫همانطور که در شکل ‪ 36-2‬مشاهده میشود در جدول ورودیها را در سطر اول و خروجیها را در ستون اول شماره‬
‫گذاری کردهایم‪ .‬ورودی ‪ 0‬به خروجی ‪ 3‬میخواهد متصل شود بنابراین در ستون ‪ 0‬سطر ‪ 3‬یک عالمت ×میگذاریم‬
‫و این عمل را برای همه هشت نگاشت داده شده انجام میدهیم‪ .‬سپس از اولین × باالی سمت چپ یعنی ستون‬
‫‪ ،3‬سطر ‪ 0‬شروع کرده به راست میرویم تا به × برسیم که در تقاطع ستون ‪ 6‬و سطر ‪ 1‬به هدف میرسیم و به‬
‫سمت پایین میرویم تا به × برسیم که در ستون ‪ 7‬سطر ‪ 5‬آنرا مییابیم و به چپ میرویم تا به × برسیم و آنرا‬
‫در ستون ‪ 2‬سطر ‪ 4‬مییابیم و به باال برمیگردیم تا به مکان اول برگردیم همانطور که مشاهده میشود مستطیلی‬
‫بسته بدست میآوریم و در مستطیل یک در میان ‪ a‬و ‪ b‬قرار میدهیم‪ .‬این عمل را برای بقیه × تکرار میکنیم‪.‬‬
‫همانطور که مشاهده میشود از هر دو وردی همجوار یکی از طریق ‪ a‬و دیگری از ‪ b‬مسیریابی شده است و بلوکه‬
‫شدن نداریم‪.‬‬
‫ورودیها‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬
‫‪0‬‬ ‫‪×a‬‬
‫‪1‬‬ ‫‪×b‬‬
‫‪2‬‬ ‫‪×b‬‬
‫‪3‬‬ ‫‪×a‬‬
‫‪4‬‬ ‫‪×b‬‬
‫‪5‬‬ ‫‪Xa‬‬
‫‪6‬‬
‫‪7‬‬ ‫‪×a‬‬
‫‪×b‬‬
‫خروجیها‬
‫شکل ‪ :36-2‬پیادهسازی جایگشت ‪ 7→5 ،6→1 ،5→6 ،4→2 ،3→0 ،2→4 ،1→7 ،0→3‬روی شبکه ‪benes‬‬

‫مثال ‪ :9-2‬جایگشت ‪ 7→7 ،6→6 ،5→4 ،4→5 ،3→2 ،2→3 ،1→0 ،0→1‬را روی شبکه ‪benes‬‬
‫پیاده کنید‪.‬‬

‫برای پیاده سازی این جایگشت نیز جدول را مجدداً طراحی کرده و به پاسخ بدست آمده در شکل ‪ 37-2‬دست‬
‫مییابیم‪ .‬همانطور که در شکل مشاهده میشود در اینجا شکلهای بسته بصورت خط میباشند‪.‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫ورودیها‬


‫‪0‬‬ ‫‪×b‬‬
‫‪1‬‬ ‫‪×a‬‬
‫‪2‬‬ ‫‪×b‬‬
‫‪3‬‬ ‫‪×a‬‬
‫‪4‬‬ ‫‪×b‬‬
‫‪5‬‬ ‫×‪a‬‬
‫‪6‬‬ ‫‪ax‬‬
‫‪7‬‬
‫‪bx‬‬
‫خروجیها‬
‫شکل ‪ :37-2‬پیادهسازی جایگشت ‪ 7→7 ،6→6 ،5→4 ،4→5 ،3→2 ،2→3 ،1→0 ،0→1‬روی شبکه ‪benes‬‬

‫خالصه‪ :‬در جدول ‪ 4-2‬خواص مهم گذرگاهها‪ ،‬شبکههای چند سطحه‪ ،‬و سوئیچهای کراسبار در ساخت شبکههای‬
‫پویا را خالصه کردهایم‪ .‬بوضوح ساخت گذرگاه از همه ارزان تر است‪ .‬اما پهنای باند قابل دسترس هر پردازنده کم‬
‫کانون نشر علوم‬ ‫‪| 124‬‬

‫است‪ .‬مشکل دیگر گذرگاه این است که مستعد خطاست‪ .‬بعضی سیستمهای تحملپذیر خطا مثل سیستم چندپردانده‬
‫تندم برای پردازش تراکنشی‪ ،‬از دو گذرگاه برای محافظت از خطاهای تکی استفاده میکنند‪.‬‬

‫ساخت سوئیچ کراسبار گرانترین است زیرا پیچیدگی آن با )‪ O(n2‬افزایش مییابد‪ .‬به هر حال‪ ،‬کراسبار بیشترین‬
‫پهنای باند و قابلیت مسیریابی را دارد‪ .‬برای شبکههای کوچک انتخاب آن مطلوب است‪.‬‬

‫شبکههای چندسطحه حدمصالحهای بین دوتای قبلی میباشند‪ .‬عمدهترین سود ‪ MIN‬در مقیاس پذیری آن با‬
‫ساخت ماژولی قرار دارد‪ .‬به هر حال تأخیر با ‪ log k n‬یعنی تعداد سطوح شبکه افزایش مییابد‪ .‬همچنین با افزایش‬
‫سوئیچها و سیمها هزینه اضافه میشود‪.‬‬

‫برای ساخت سیستمهای ‪ ،MPP‬بعضی همبندیهای ایستا برای کاربردهای خاص مقیاس پذیرترند‪ .‬اگر همبندی‪-‬‬
‫های میکروالکترونیک و نوری ساخته شوند و گسترش یابند ‪MIN‬های مقیاس باال با شبکههای کراسبار برای‬
‫پابرجاکردن اتصاالت پویا و محاسبات همه منظوره اقتصادیتر و عملیتر میشوند‪.‬‬
‫سوئیچ کراسبار‬ ‫شبکه چندسطحه‬ ‫سیستم گذرگاه‬ ‫خواص شبکه‬
‫حداقل تأخیر برای‬
‫ثابت‬ ‫)‪O(log k n‬‬ ‫ثابت‬
‫انتقال واحد داده‬
‫پهنای باند برای‬
‫)‪O(w‬تا )‪O(nw‬‬ ‫)‪ O(w‬تا )‪O(nw‬‬ ‫)‪ O(w/n‬تا )‪O(w‬‬
‫هر پردازنده‬
‫‪2‬‬ ‫پیچیدگی سیمی‬
‫)‪O(n w‬‬ ‫)‪O(nwlogkn‬‬ ‫)‪O(w‬‬
‫پیچیدگی‬
‫)‪O(n2‬‬ ‫)‪O(n log k n‬‬ ‫)‪O(n‬‬
‫سوئیچینگ‬
‫همه جایگشتها‪ ،‬در هر‬ ‫بعضی از جایگشتها و پخشی اگر‬ ‫قابلیت مسیریابی و‬
‫در هر لحظه فقط یکی به یکی‬
‫زمان یک جایگشت‬ ‫شبکه بلوکه نشود‬ ‫اتصال‬
‫‪Gray Y-MP/816,‬‬ ‫‪Symmetry S-1,‬‬
‫‪BBN TC-2000 , IBM RP3‬‬ ‫کامپیوترهای نمونه‬
‫‪Fujistu VPP500‬‬ ‫‪Encore Multimax‬‬
‫فرض کنید کراسبار‬ ‫‪ n×n MIN‬با استفاده از سوئیچ‪-‬‬ ‫فرض کنید ‪ n‬پردازنده در‬
‫‪ n×n‬است با پهنای خط‬ ‫های ‪ .k×k‬پهنای هر خط سوئیچ‬ ‫گذرگاه داریم‪ .‬پهنای گذرگاه‬ ‫تبصره‬
‫‪ w‬بیت‪.‬‬ ‫‪ w‬بیت است‪.‬‬ ‫‪ w‬سیم است‪.‬‬
‫جدول ‪ 4-2‬خالصه خواص شبکههای پویا‬
‫‪| 125‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫تمرینات فصل دوم‬

‫مسأله ‪ :1-2‬عبارات زیر مرتبط با موازات و روابط وابستگی را تعریف کنید‬

‫(د)وابستگی جریان‬ ‫(ب)تأخیر ارتباطی (ج) شرایط برنشتاین‬ ‫(الف) دانهبندی محاسباتی‬
‫(ح)وابستگی کنترل‬ ‫(ز)وابستگی ‪I/O‬‬ ‫(و)وابستگی خروجی‬ ‫(ه) ضدوابستگی‬
‫(ی)درجه موازات‬ ‫(ط)وابستگی منابع‬
‫مسأله ‪ :2-2‬عبارات زیر را برای معماریهای اتصالی مختلف تعریف کنید‪.‬‬

‫(ج) پهنای باند دو بخشی‬ ‫(ب)قطر شبکه‬ ‫(الف) درجه گره‬


‫(و)شبکههای بلوک نشدنی‬ ‫(ه)شبکههای اتصالی پویا‬ ‫(د)شبکههای اتصالی ایستا‬
‫(ط)شبکههای چندسطحه‬ ‫(ح)مش درمقایسه با تروس‬ ‫(ز)پخشی و چندپخشی‬
‫(ک)گذرگاه دیجیتال‬ ‫(ی)شبکههای کراسبار‬

‫مسأله ‪ :3-2‬سوأالت زیر را در مکانیزمهای جریان برنامه و مدلهای کامپیوتر پاسخ دهید‪:‬‬

‫(الف) کامپیوترهای جریان‪ -‬کنترل‪ ،‬جریان داده و کاهشی را براساس مکانیزم جریان برنامه استفاده شده مقایسه‬
‫کنید‪.‬‬
‫(ب) مزایا و معایب‪ ،‬پیچیدگی کنترل‪ ،‬پتانسیل موازات و هزینه را برای مدلهای کامپیوتر فوق توضیح دهید‪.‬‬
‫(ج) چه تفاوتی بین ماشینهای کاهش گراف و کاهش رشته است؟‬

‫مسأله ‪ :4-2‬تجزیه تحلیل داده روی هر یک از قطعه برنامههای فرترن زیر انجام دهید‪ .‬گراف وابستگی بین‬
‫دستورات را با توضیح رسم کنید‪.‬‬
‫)ب)‬ ‫(الف)‬
‫)‪S1: X=Sin(Y‬‬ ‫‪S1: A=B+D‬‬
‫‪S2: Z=X+W‬‬ ‫‪S2: C=A×3‬‬
‫‪S3: Y=-2.5×W‬‬ ‫‪S3: A=A+C‬‬
‫)‪S4: X=Cos(Z‬‬
‫‪S4: E=A/2‬‬

‫(ج) وابستگی داده را در داخل هر تکرار و تکرارهای متوالی حلقه ‪ Do-Loop‬زیر مشخص کنید‪.‬‬
‫‪Do 10 I=1,N‬‬
‫‪S1:‬‬ ‫)‪A(I+1)=B(I-1)+C(I‬‬
‫‪S2:‬‬ ‫‪B(I)=A(I)×K‬‬
‫‪S3:‬‬ ‫‪C(I)=B(I)-1‬‬
‫‪10 Continue‬‬
‫مسأله ‪ :5-2‬وابستگیهای داده را در بین دستورات برنامه داده شده‪ ،‬تجزیه تحلیل کنید‪.‬‬

‫‪S1:‬‬ ‫‪Load R1,1024‬‬ ‫‪/R11024/‬‬


‫کانون نشر علوم‬ ‫‪| 126‬‬

‫‪S2:‬‬ ‫)‪Load R2,M(10‬‬ ‫‪/R2Memory(10)/‬‬


‫‪S3:‬‬ ‫‪Add R1,R2‬‬ ‫‪/R1(R1)+(R2)/‬‬
‫‪S4:‬‬ ‫‪Store M(1024),R1‬‬ ‫‪/Memory(1024)(R1)/‬‬
‫‪S5:‬‬ ‫‪Store M(R2),1024‬‬ ‫‪/Memory(64)1024/‬‬
‫که ‪ Ri‬به معنی محتویات ثبات ‪ Ri‬و )‪ Memory(10‬ابتداً مقدار ‪ 64‬دارد‪.‬‬
‫(الف) گراف وابستگی را برای تمام انواع وابستگی رسم کنید‪.‬‬
‫(ب) آیا وابستگی منبع اگر از هر واحد در پردازنده یکی داشته باشیم وجود دارد؟‬
‫(ج) موارد فوق را برای دستورات برنامه زیر تکرار کنید‬
‫)‪S1: Load R1,M(100‬‬ ‫‪/R1Memory(100)/‬‬
‫‪S2: Move R2,R1‬‬ ‫‪/R2(R1)/‬‬
‫‪S3: Inc R1‬‬ ‫‪/R1(R1)+1/‬‬
‫‪S4: Add R2,R1‬‬ ‫‪/R2(R2)+(R1)/‬‬
‫‪S5: Store M(100),R1‬‬ ‫‪/Memory(100)(R1)/‬‬

‫مسأله ‪ :6-2‬یک برنامه ترتیبی شامل ‪ 5‬عبارت ‪ S1‬تا ‪ S5‬زیر است‪ .‬فرض کنید هر دستور یک پردازه مجزا‬
‫است‪ ،‬مجموعه ورودی ‪ Ii‬و مجموعه خروجی ‪ Oi‬را برای هر پردازه بوضوح تعیین کنید‪ .‬برنامه را با استفاده از شرایط‬
‫برنشتاین بازسازی کنید تا به حداکثر موازات بین پردازهها برسید‪ .‬اگر هر زوج پردازه نمیتواند بطور موازی اجرا‬
‫شوند‪ ،‬تعیین کنید که کدام یک از سه شرط برآورده نشدهاند‪.‬‬

‫‪S1:‬‬ ‫‪A=B×C‬‬
‫‪S2:‬‬ ‫‪C=B×D‬‬
‫‪S3:‬‬ ‫‪S=0‬‬
‫‪S4:‬‬ ‫‪Do I=A,100‬‬
‫)‪S=S+X(I‬‬
‫‪End Do‬‬
‫‪S5:‬‬ ‫‪if (S.GT.1000) C=C×2‬‬
‫مسأله ‪ :7-2‬اجرای قطعه کد زیر شامل ‪ 7‬دستور را در نظر بگیرید‪ .‬با استفاده از شرایط برنشتاین حداکثر موازات‬
‫آنرا تشخیص دهید‪ .‬قسمتهایی که میتوانند بطور موازی اجرا شوند و قسمتهایی که باید بطور سری اجرا شوند‬
‫را معلوم کنید‪ .‬کد را با استفاده از دستورات موازی مثل ‪ Cobegin‬و ‪ Coend‬دوباره نویسی کنید‪ .‬جایگزینی‬
‫متغیر مجاز نیست‪ .‬همه عباراتی که در بین بلوک ‪ Cobegin, Coend‬قرار دارند میتوانند موازی اجرا شوند‪.‬‬

‫‪S1: A=B+C‬‬
‫‪S2: C=D+E‬‬
‫‪S3: F=G+E‬‬
‫‪S4: C=A+F‬‬
‫‪S5: M=G+C‬‬
‫‪S6: A=L+C‬‬
‫‪S7: A=E+A‬‬
‫‪| 127‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫مسأله ‪ :8-2‬براساس ترتیب برنامه‪ 6 ،‬عبارت محاسباتی زیر باید در حداقل زمان اجرا شوند‪ .‬فرض کنید که همه‬
‫عملوندهای صحیح هم اکنون در ثباتهای کاری بارشدهاند‪ .‬هیچ مراجعه به حافظهای برای برداشت عملوند وجود‬
‫ندارد‪ .‬همه نتایج بالفصل یا پایانی در ثباتهای کاری بدون تداخل انجام میشوند‪.‬‬

‫)‪P1: X(A+B)×(A-B‬‬
‫)‪P2: Y(C+D)/(C-D‬‬
‫‪P3: ZX+Y‬‬
‫‪P4: AE×F‬‬
‫‪P5: YE-Z‬‬
‫‪P6: B(X-F)×A‬‬
‫(الف) با استفاده از دستورات ‪ Divide, multiply, subtract, add‬کد ‪ HLL‬برنامه را به حداقل کد زبان‬
‫اسمبلی دوباره نویسی کنید و از حداقل ثباتهای کاری استفاده کنید‪ .‬فرض کنید دستورات دارای شکل ثابت با سه‬
‫فیلد ثبات میباشند‪ :‬دو عدد برای منبع یکی برای مقصد‪.‬‬
‫(ب) آنالیز جریان کد اسمبلی قسمت (الف) را انجام دهید و همه وابستگیهای داده را با استفاده از یک گراف‬
‫وابستگی بدست آورید‪.‬‬
‫(ج) فرض کنید پردازنده دو واحد جمع‪ ،‬یک واحد ضرب و یک واحد تقسیم دارد‪ .‬یک زمانبندی بهینه برای اجرای‬
‫کد اسمبلی در حداقل زمان را با فرض اینکه واحد جمع ‪ 1‬پالس ساعت‪ ،‬واحد ضرب ‪ 3‬پالس ساعت و واحد تقسیم‬
‫‪ 18‬پالس ساعت برای اجرای کامل یک دستور نیاز دارند را بدست آورید‪ .‬همه سربارهای ایجاد شده توسط برداشت‪،‬‬
‫دیکد و بازپس نویسی‪ 1‬دستور را نادیده بگیرید‪ .‬واحد خط لوله هم نداریم‪.‬‬

‫مسأله ‪ :9-2‬کد زبان اسمبلی زیر داده شده است‪ .‬حداکثر درجه موازات بین ‪ 16‬دستور را بدست آورید‪ .‬فرض‬
‫کنید هیچ تداخل منبعی نداریم و از هر واحد عملیاتی چندین عدد بطور همزمان داریم‪ .‬برای سادگی خط لوله در‬
‫نظر نگیرید‪ .‬همه دستورات یک پالس ساعت برای اجرا نیاز دارند‪ .‬همه سربارهای دیگر را نادیده بگیرید‪.‬‬

‫‪1.‬‬ ‫‪Load R1,A‬‬


‫‪2.‬‬ ‫‪Load R2,B‬‬
‫‪3.‬‬ ‫‪Mul R3,R1,R2‬‬
‫‪4.‬‬ ‫‪Load R4,d‬‬
‫‪5.‬‬ ‫‪Mul R5,R1,R4‬‬
‫‪6.‬‬ ‫‪Add R6,R3,R5‬‬
‫‪7.‬‬ ‫‪Store X,R6‬‬
‫‪8.‬‬ ‫‪Load R7,C‬‬
‫‪9.‬‬ ‫‪Mul R8,R7,R4‬‬
‫‪10.‬‬ ‫‪Load R9,E‬‬
‫‪11.‬‬ ‫‪Add R10,R8,R9‬‬
‫‪12.‬‬ ‫‪Store Y,R10‬‬

‫‪1‬‬
‫‪Writeback‬‬
‫کانون نشر علوم‬ ‫‪| 128‬‬

‫‪13. Add R11,R6,R10‬‬


‫‪14. Store U,R11‬‬
‫‪15. Sub R12,R6,R10‬‬
‫‪16. Store V,R12‬‬
‫(الف) گراف برنامه را با ‪ 16‬گره رسم کنید بطوریکه روابط جریان بین ‪ 16‬دستور را نشان دهد‪.‬‬
‫(ب) استفاده از یک پردازنده سوپراسکالر ‪-3‬انتشاره برای اجرای این برنامه در حداقل زمان را در نظر بگیرید‪ .‬پردازنده‬
‫میتواند یک دستور دسترسی‪-‬حافظه (‪ load‬یا ‪ store‬نه هردو)‪ ،‬یک دستور ‪ ،Add/Sub‬و یک دستور ضرب‬
‫را در هر پالس ساعت منتشر کند‪ .‬واحد ‪ ،Add‬واحد ‪ ،Load/Store‬و واحد ضرب میتوانند بصورت همزمان‬
‫استفاده شوند اگر هیچ وابستگی داده وجود نداشته باشد‪.‬‬
‫مسأله ‪ :10-2‬قسمت (ب) مسأله ‪ 9-2‬را با یک سیستم دوپردازنده با حافظه مشترک تکرار کنید‪ .‬فرض کنید‬
‫پردازندههای سوپراسکالر مشابه استفاده شدهاند و هر دستور یک پالس ساعت برای اجرا نیاز دارد‪.‬‬

‫(الف)برنامه داده شده را به دو نیمه متعادل تقسیم کنید‪ .‬شما ممکن است چند دستور ‪ load‬یا ‪ store‬را برای‬
‫ارسال نتایج میانی بین دو پردازنده درج کنید‪ .‬گراف جریان برنامه گراف جریان برنامه تقسیم شده با خروجی پایانی‬
‫‪ U‬و ‪ V‬تولید شده توسط دو پردازنده را بطور مجزا نشان دهید‪.‬‬
‫(ب) یک زمانبندی بهینه برای اجرای موازی برنامه تقسیم شده فوق بدست آورید‪ ،‬بطوریکه در حداقل زمان توسط‬
‫دو پردازنده اجرا شوند‪.‬‬
‫مسأله ‪ :11-2‬از شما خواسته شده که یک شبکه جهت دار برای ‪ 64‬گره یک چندکامپیوتر با استفاده از تروس‬
‫سه بعدی‪ ،‬فوق مکعب ‪ 6‬بعدی و ‪ CCC‬با حداقل قطر طراحی کنید‪ .‬سوأالت زیر مرتبط با مزایای این همبندیها‬
‫است‪.‬‬

‫(الف) ‪ d‬را درجه گره‪ D ،‬را قطر شبکه و ‪ l‬را تعداد کل لینکها در یک شبکه در نظر بگیرید‪ .‬فرض کنید کیفیت‬
‫یک شبکه با ‪ (d×D×l)-1‬اندازه گیری میشود‪ .‬سه معماری را طبق این واحد کیفیت نمره گذاری کنید‪.‬‬
‫(ب) متوسط فاصله بین گره به عنوان متوسط تعداد پرشها (لینکها)ی واقع در کوتاهترین مسیر برای اینکه یک‬
‫پیام تا از یک گره به یک گره دیگر برود تعریف میشود‪ .‬میانگین برای همه زوجهای (مقصد و منبع) محاسبه‬
‫می شود‪ .‬سه معماری را براساس فاصله بین گره مرتب کنید‪ .‬فرض کنید احتمال اینکه یک گره یک پیام را به همه‬
‫بقیه گرهها با فاصله ‪ i‬میفرستد ‪ (D − i + 1)⁄∑D k‬میباشد‪ .‬و ‪ D‬قطر شبکه است‪.‬‬
‫‪k=1‬‬
‫مسأله ‪:12-2‬یک مش ایلیاک ‪ ، 8×8‬یک فوق مکعب باینری و یک شیفت دهنده بارل در نظر بگیرید‪ 64 .‬گره‬
‫برچسبهای ‪ N63,…,N1,N0‬دارند‪ .‬همه لینکها دوطرفهاند‪.‬‬
‫(الف) برای هر سه شبکه همه گرههای قابل رسیدن از گره ‪ N0‬دقیقاً با سه مرحله را لیست کنید‪.‬‬
‫(ب) در هر وضعیت کران باال روی حداقل تعداد مراحل مسیریابی برای ارسال از هر گره ‪ Ni‬به هر گره ‪ Nj‬را تعیین‬
‫کنید‪.‬‬
‫(ج) گزینه (ب) را برای شبکه بزرگتر با ‪ 1024‬گره تکرار کنید‪.‬‬
‫‪| 129‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫مسأله ‪ :13-2‬شبکههای گذرگاه‪ ،‬سوئیچهای کراسبار و شبکههای چندسطحه را برای ساخت یک سیستم‬
‫چندپردازنده با ‪ n‬پردازنده و ‪ m‬ماژول حافظه مشترک مقایسه کنید‪ .‬فرض کنید طول کلمه ‪ w‬بیت و ‪ m‬ماژول‬
‫حافظه مشترک و سوئیچهای ‪ 2×2‬برای ساخت سیستم چندپردازنده با ‪ n‬پردازنده و ‪ m‬ماژول حافظه مشترک‬
‫استفاده شده است‪ .‬فرض کنید طول کلمه ‪ w‬بیت و سوئیچهای ‪ 2×2‬در ساخت شبکه چندسطحه استفاده شده‬
‫است‪ .‬مقایسهتان را برای هر شبکه براساس موارد زیر انجام دهید‪.‬‬

‫(الف) پیچیدگیهای سخت افزاری مثل سوئیچینگ‪ ،‬داوری‪ ،‬سیمها‪ ،‬اتصال دهندهها یا نیازهای کابل‪.‬‬
‫(ب) حداقل تأخیر در انتقال واحد داده بین پردازنده و ماژول حافظه‬
‫(ج) محدوده پهنای باند قابل دسترس برای هر پردازنده‬
‫(د) قابلیتهای ارتباطی مثل جایگشت‪ ،‬پخش داده‪ ،‬راهاندازی بلوکه شدن و غیره‬
‫مسأله ‪ :14-2‬به سوأالت زیر مرتبط با شبکههای چندسطحه پاسخ دهید‪.‬‬

‫(الف) چه تعداد حاالت قانونی برای یک سوئیچ ماژولی ‪ 4×4‬وجود دارد شامل پخشی و جایگشت؟ پاسختان را با‬
‫دلیل توضیح دهید‪.‬‬
‫(ب) یک شبکه امگا ‪ 64‬ورودی با استفاده از ماژولهای سوئیچ ‪ 4×4‬در چند سطح بسازید‪.‬چه تعداد جایگشت بطور‬
‫مستقیم در یک مسیر در طول شبکه بدون بلوکه شدن وجود دارد؟‬
‫(ج) چه درصدی از جایگشتهای یک مسیره در مقایسه با تعداد کل جایگشتهای قابل رسیدن در یک یا چند گذر‬
‫بین شبکه وجود دارد؟‬
‫مسأله ‪ :15-2‬شبکههای مساوی از لحاظ همبندی آنهایی هستند که نمایش گرافی آنها متناظر است با قابلیت‪-‬‬
‫های اتصالی مشابه‪ .‬مساوات بین امگا‪ ،‬فلیپ و شبکههای بیسالین را ثابت کنید‪.‬‬

‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪8‬‬

‫‪2‬‬ ‫‪4‬‬
‫‪3‬‬ ‫‪12‬‬
‫‪4‬‬ ‫‪2‬‬
‫‪5‬‬ ‫‪10‬‬

‫‪6‬‬ ‫‪6‬‬
‫‪7‬‬ ‫‪14‬‬
‫‪8‬‬ ‫‪1‬‬
‫‪9‬‬ ‫‪9‬‬
‫‪10‬‬ ‫‪5‬‬
‫‪11‬‬ ‫‪13‬‬
‫‪12‬‬ ‫‪3‬‬
‫‪13‬‬ ‫‪11‬‬

‫‪14‬‬ ‫‪7‬‬
‫‪15‬‬ ‫‪15‬‬

‫شکل ‪ :38-2‬شبکه فلیپ ‪16×16‬‬


‫کانون نشر علوم‬ ‫‪| 130‬‬

‫(الف) ثابت کنید که شبکه امگا (شکل‪ )27-2‬از لحاظ همبندی معادل شبکه بیسالین (شکل‪(28-2‬ب)) میباشد‪.‬‬
‫(ب) شبکه فلیپ (شکل ‪ )38-2‬با استفاده از شافل کامل معکوس (شکل ‪(14-2‬ب)) برای اتصاالت بین سطحه‬
‫ساخته میشود‪ .‬ثابت کنید که شبکه فلیپ از لحاظ همبندی معادل شبکه بیسالین است‪.‬‬
‫(ج) براساس نتایج بدست آمده در (الف) و (ب) تساوی همبندی بین شبکه فلیپ و امگا را ثابت کنید‪.‬‬

‫مسأله ‪ :16-2‬به سوأالت زیر راجع به شبکه ‪ k-ary n-cube‬پاسخ دهید‪.‬‬


‫(الف) چه تعداد گره دارد؟‬
‫(ب) قطر شبکه چقدر است؟‬
‫(ج) پهنای دوبخشی چیست؟‬
‫(د) درجه گره چند است؟‬
‫(ه) رابطه تئوری گراف بین ‪ k-ary n-cube‬و حلقه‪ ،‬مش‪ ،‬توری‪ n-cube ،‬باینری و شبکه امگا را توضیح دهید‪.‬‬
‫(و) تفاوت بین تروس رایج و درهم آمیخته را توضیح دهید‪.‬‬
‫(ز) با فرض پهنای دوبخشی سیم ثابت‪ ،‬چرا شبکههای با بعد کمتر‪ ،‬تأخیر کمتر (توری) و توان عملیاتی نقطه‪-‬داغ‬
‫بیشتر نسبت به شبکههای با ابعاد زیاد (فوق مکعب) دارند؟‬
‫مسأله ‪ :17-2‬مقاله ‪ Leiserson‬روی درختهای چاق که در ‪IEEE terms, PP 892-901, Oct‬‬
‫‪ 1985‬آمده است را بخوانید‪ .‬سواالت زیر راجع به سازماندهی و کاربردهای درختهای چاق را پاسخ دهید‪.‬‬

‫(الف) مزایای درخت چاق باینری نسبت به درختهای چاق روی یک شبکه اتصالی چندپرداززنده را توضیح دهید‪.‬‬
‫‪2‬‬
‫(ب) یک درخت چاق جهانی‪ ،‬یک درخت چاق با ‪ n‬گره و ظرفیت ریشه ‪ w‬است که ‪ n3 ≤ w ≤ n‬و هر کانال‬
‫‪ ck‬در سطح ‪k‬ی درخت ظرفیت زیر را دارد‪:‬‬
‫)⌉ ‪ck = min (⌈n⁄ k ⌉ , ⌈w⁄ 2k⁄‬‬
‫‪2‬‬ ‫‪2 3‬‬
‫ثابت کنید که ظرفیت یک درخت چاق جهانی وقتی از برگها به سمت ریشه حرکت میکنیم بطور نمایی رشد‬
‫میکند‪ .‬ظرفیت کانال به عنوان تعداد سیمهای یک کانال تعریف میشود‪.‬‬
‫مسأله ‪ :18-2‬مقاله ‪ k-ary n-cube‬توسط ‪ Dally‬را بخوانید ‪IEEE trans, Jun 1990 PP 775-‬‬
‫‪ .785‬به سوأالت زیر مرتبط با خواص و کاراییهای یک شبکه به عنوان یک شبکه ارتباطی ‪ VLSI‬پاسخ دهید‪.‬‬

‫(الف) ثابت کنید که پهنای دوبخشی‪ B ،‬از یک ‪ k-ary n-cube‬با کانالهای ارتباطی ‪ w‬بیت برابر است با‬
‫‪𝑛⁄ −1‬‬
‫𝑘𝑁√𝑤‪𝐵(𝑘, 𝑛) = 2‬‬ ‫‪2‬‬ ‫𝑘‪= 2𝑤𝑁/‬‬
‫که ‪ N=kn‬اندازه شبکه است‪.‬‬
‫(ب) ثابت کنید که توان عملیاتی یک شبکه ‪ k-ary n-cube‬با مسیریابی معین برابر با پهنای یک کانال تک‬
‫‪ w=k-1‬است تحت فرض هزینه سیم ثابت‬
‫‪| 131‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬
‫مسأله ‪ :19-2‬جایگذاری شبکه تکنیکی است که یک شبکه ‪ A‬را روی شبکه ‪ B‬پیاده سازی میکند‪ .‬توضیح‬
‫دهید چگونه جایگذاریهای شبکه زیر را انجام میدهیم؟‬

‫(الف) یک تروس‪ ،‬دوبعدی را روی یک فوق مکعب ‪ n‬بعدی با ‪ N=2n‬گره که ‪ r2=2n‬است جایگذاری کنید‪.‬‬
‫(ب) بزرگترین حلقه روی یک ‪ CCC‬با ‪ N=k×2k‬گره و ‪ k≥3‬را جایگذاری کنید‪.‬‬
‫(ج) یک درخت باینری کامالً متوازن با بزرگترین ارتفاع را روی یک مش ‪ r×r‬گره جایگذاری کنید‪.‬‬
‫مسأله ‪ :20-2‬مقاله هایپرنتهای ‪ Hwang, Ghosh‬را بخوانید‪ .IEEE Trans, Dec1989 .‬به سوأالت‬
‫زیر راجع به خواص و کاربردهای هایپرنت پاسخ دهید‪.‬‬

‫(الف) توضیح دهید که چگونه هایپرنتها خواص مثبت فوق مکعب و همبندیهای درختی را به عنوان یک معماری‬
‫ترکیبی دارند‪.‬‬
‫(ب) ثابت کنید که میانگین درجه گره یک هایپرنت را میتوان با افزایش اندازه شبکه ثابت نگه داشت‪.‬‬
‫(ج) پتانسیل هایپرنت را براساس پیچیدگی مسیریابی پیام‪ ،‬هزینه برای ارتباطات عمومی و محلی‪ ،‬قابلیتهای ‪I/O‬‬
‫و تحمل پذیری خطا بحث کنید‪.‬‬

‫مسأله ‪ :21-2‬در این فصل درباره شافل دو‪-‬راهه (شافل کامل) و شافل چهار‪-‬راهه مطلب آموختهاید‪ .‬نگاشت‬
‫به یک شافل ‪-m‬راهه روی ‪ n‬شیء را که ‪ m×k=n‬برای ‪ k≥2‬برای ساخت یک کالس از شبکه دلتا که توسط‬
‫پاتل (‪ )1980‬معرفی شد‪ ،‬عمومیت دهید‪.‬‬

‫(الف) چگونگی انجام شافل ‪-4‬راهه برای ‪ 12‬شیء را نشان دهید‪.‬‬


‫(ب) حداقل تعداد ماژول سوئیچ ‪ 4×3‬و یک نگاشت شافل چهار‪-‬راهه را به عنوان الگوی ارتباطی بین مرحلهای‬
‫برای ساخت یک شبکه دلتای ‪-64‬ورودی‪-27 ،‬خروجی در سه مرحله استفاده کنید‪.‬‬
‫(ج)در حالت کلی‪ ،‬یک شبکه دلتای ‪-n ،an×bn‬مرحلهای با ماژولهای سوئیچ ‪ a×b‬پیادهسازی میشوند که در‬
‫شکل ‪ 23-2‬نشان داده شده است‪ .‬تعداد کل ماژولهای سوئیچ مورد نیاز را محاسبه کنید و الگوی ارتباطی بین‬
‫مرحلهای از ‪ bn‬ورودی به ‪ an‬خروجی را تعیین کنید‪.‬‬
‫(د) یک شماتیک مسیریابی برای کنترل تنظیمات سوئیچ از مرحله به مرحله در یک شبکه دلتای ‪-n‬مرحلهای‬
‫‪ an×bn‬را رسم کنید‪.‬‬
‫(ه) رابطه بین شبکه اُمگا و دلتا چیست؟‬
‫مسأله ‪ :22-2‬خواص زیر مرتبط با شبکه امگای چندسطحه با استفاده از بلوکهای ساخت با اندازه‪-‬مختلف را‬
‫ثابت کنید‪.‬‬
‫‪k‬‬
‫(الف) اثبات کنید که تعداد حاالت قانونی (اتصاالت) در یک ماژول سوئیچ ‪ k ،k×k‬میباشد‪.‬‬
‫(ب) درصد جایگشتهایی که میتوانند در یک گذر در یک شبکه امگای ‪-64‬ورودی ساخته شده از ماژولهای‬
‫سوئیچ ‪ 2×2‬تحقق یابند را مشخص کنید‪.‬‬
‫(ج) قسمت (ب) را برای شبکه امگای ‪-64‬ورودی ساخته شده از ماژولهای ‪ 8×8‬تکرار کنید‪.‬‬
‫کانون نشر علوم‬ ‫‪| 132‬‬

‫(د) قسمت (ب) را برای یک شبکه امگای ‪-512‬ورودی با ماژولهای سوئیچ ‪ 8×8‬تکرار کنید‪.‬‬
‫مسأله ‪23-2‬‬
‫(الف) یک شبکه امگای ‪-16‬ورودی را با استفاده از ماژولهای سوئیچ ‪ 2×2‬رسم کنید‪.‬‬
‫(ب) تنظیمات سوئیچینگ را برای مسیریابی از گره ‪ 1011‬به گره ‪ 0101‬و از گره ‪ 0111‬به گره ‪ 1001‬بطور همزمان‬
‫نشان دهید‪ .‬آیا بلوکه شدن اتفاق میافتد؟‬
‫(ج)مشخص کنید که چه تعداد جایگشت میتواند در این شبکه در یک گذر انجام شود‪ .‬درصد جایگشتهای یک‪-‬‬
‫گذره در مقایسه با کل جایگشتها چقدر است؟‬
‫(د) حداکثر تعداد گذرها برای پیادهسازی هر جایگشت از طریق شبکه چقدر است؟‬
‫مسأله ‪ :24-2‬جایگشت ‪ 7→0 ،6→6 ،5→7 ،4→5 ،3→4 ،2→2 ،1→3 ،0→1‬را روی شبکه ‪benes‬‬
‫پیاده کنید‪.‬‬
‫‪| 133‬‬ ‫فصل دوم‪ :‬خواص برنامه و شبکه‬

‫ضمیمه ‪ 1-2‬نمونه بسته بندی یک سوپر کامپیوتر و استفاده از شبکههای ارتباطی‬


‫الف‪ -‬روند بسته بندی سوپرکامپیوتر ‪Blue Gene/Q‬‬

‫ب‪ :‬روند بسته بندی سوپر کامپیوتر ‪ sunway‬که در این تاریخ سریعترین سوپرکامپیوتر جهان با سرعت‬
‫‪ 93PFLops‬میباشد‪.‬‬

‫‪ -3‬دو عدد تراشه در یک کارت قرار میگیرند‪ -2 .‬این ‪ 260‬هسته در تراشه‬


‫‪-1‬الیه بندی ‪ SW26010‬شامل چهار عنصر پردازش کامپیوتری ‪ CPE‬میباشد که هر کدام شامل ‪ 64‬پردازنده میباشد که با یک مش‬
‫‪ SW26010‬بسته بندی‬
‫‪ 8*8‬به هم وصل هستند‪ .‬بنابراین دارای ‪ 256=4*64‬هسته میباشد و ‪ 4‬عدد ‪ MPE‬یعنی ‪ 260‬پردازنده دارد‪ .‬هر واحد حافظه ‪MC8GB‬‬
‫میشوند و گره را ایجاد‬
‫از نوع ‪ DDR3‬دارد‪ .‬هر ‪ MPE‬پردازنده از نوع ریسک ‪ 64‬بیتی و دستورات برداری ‪ 256‬بیتی میباشد که در هر دو مد کاربر و سیستم‬
‫کار میکند و دارای حافظه نهان دستور هر کدام به میزان ‪ 32KB L1‬و ‪ 256KB L2‬میباشد‪ .‬هر ‪ CPE‬دارای ‪ 64‬هسته میباشد که ‪64‬‬
‫میکنند‪.‬‬
‫بیتی میباشند با حافظه نهان ‪ 64KB SPM‬میباشد با دستورات برداری ‪ 256‬بیتی‪.‬‬

‫‪ -5‬هر سوپرگره از ‪ 32‬کارت یعنی ‪ 256‬گره تشکیل شده است‪.‬‬ ‫‪ 4 -4‬کارت در یک بورد قرار میگیرند‪ .‬دو تا در باال و دو تا در پایین ‪.‬‬
‫بنابراین هر بورد ‪ 2080=260*2*4‬هسته دارد‪.‬‬

‫‪ Sunway‬شبکه ارتباطی خودش را دارد و از‬


‫‪-6‬هر کابینت از ‪ 4‬سوپرگره تشکیل شده‬
‫است‪ .‬یعنی ‪ 1024‬گره و تعداد هستههای‬ ‫سلسله مراتب ‪ 5‬سطحه استفاده میکند‬
‫آن ‪266240‬میباشد‪.‬‬ ‫شامل ارتباط داخل گره که مش میباشد‪.‬‬
‫ارتباط بورد‪ ،‬سوپرگره‪ ،‬کابینت و ارتباط کل‬
‫سیستم‪.‬‬

‫‪ sunway -7‬از ‪ 40‬کابینت تشکیل شده است که در مجموع ‪ 40*266240=10649600‬هسته دارد‪.‬‬


‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫‪| 135‬‬ ‫اصول کارایی مقیاسپذیر‬

‫فصل سوم ‪ -‬اصول کارایی مقیاس پذیر‬


‫در این فصل اندازهگیری کارایی‪ ،‬قوانین افزایش سرعت‪ ،‬و اصول مقیاس پذیری را مطالعه میکنیم‪ .‬سه مدل افزایش‬
‫سرعت با اهداف محاسباتی مختلف و محدودیت منابع ارائه میشوند‪ .‬این موارد شامل قانون ‪،)1967( Amdahl‬‬
‫افزایش سرعت مقیاس پذیر شده ‪ )1988( Gustafson‬و افزایش سرعت محدود شده حافظه توسط ‪ Sun‬و ‪Ni‬‬
‫(‪ )1993‬میباشد‪.‬‬
‫کارایی‪ ،‬افزونگی‪ ،‬بهرهوری و کیفیت یک محاسبه موازی شامل رابطه بین معماریها و الگوریتمها تعریف میشوند‪.‬‬
‫واحدهای اندازهگیری کارایی استاندارد و چندین برنامه محک معرفی میشوند‪.‬‬
‫کارایی کامپیوترهای موازی روی طراحی نرم افزاری و سختافزار متعادل شده تکیه دارد‪ .‬معمارهای سیستم و‬
‫برنامهنویسان باید از موازات‪ ،‬خطلوله و شبکه به روشی متعادل بهرهبرداری کنند‪ .‬برای ساخت سیستمهای موازی‬
‫انبوه‪ ،‬ابتدا باید روشهای مقیاسپذیری حل شوند‪.‬‬

‫‪ -1-3‬اندازهگیری و واحدهای کارایی‬


‫در این بخش مشخصات موازات را مطالعه میکنیم و فاکتور افزایش سرعت مجانبی را تعریف میکنیم‪ ،‬محدودیت‬
‫منابع و تأخیر ارتباطی را نادیده میگیریم‪ .‬سپس مفاهیم کارایی سیستم‪ ،‬بهرهوری‪ ،‬افزونگی و کیفیت محاسبات‬
‫موازی را معرفی میکنیم‪ .‬حد میانههای ممکن بین این واحدهای کارایی براساس هزینه تست میشوند‪ .‬ابتدا چندین‬
‫معیار و واحد کارایی مانند ‪ TPS, Mflops, MIPS‬تعریف میشوند‪.‬‬
‫‪ -1-1-3‬مشخصه موازات در برنامهها‪ :‬درجه موازات حوزهای را که موازات نرمافزاری با موازات سختافزاری‬
‫تطابق پیدا میکند‪ ،‬منعکس میکند‪ .‬در زیر خواص موازات را طبقهبندی میکنیم‪ ،‬مفهوم میانگین موازات را معرفی‬
‫میکنیم و افزایش سرعت ایدهآل با منابع ماشین نامحدود را تعریف میکنیم‪ .‬تغییرات روی فاکتور افزایش سرعت‬
‫ایدهآل از دیدگاه کاربردی مختلف و تحت محدودیتهای سیستم متفاوت‪ ،‬در بخشهای بعدی ارائه میشوند‪.‬‬
‫درجه موازات‪ :‬اجرای یک برنامه روی یک کامپیوتر موازی ممکن است تعداد متفاوتی پردازنده را در دورههای‬
‫زمانی مختلف در طول چرخه اجرا استفاده کند‪ .‬برای هر دوره زمانی‪ ،‬تعداد پردازندههای استفاده شده برای یک‬
‫برنامه را درجه موازات (‪ )DOP1‬میگویند‪ .‬این تابع یک تابع زمان گسسته است و فقط مقادیر غیر منفی دارد‪.‬‬
‫نمودار ‪ DOP‬به عنوان تابعی از زمان‪ ،‬مشخصه موازات یک برنامه داده شده نامیده میشود‪ .‬به منظور سادگی‪،‬‬
‫روی تجزیه تحلیل مشخصات یک برنامه تک تمرکز میکنیم‪ .‬ابزارهای نرمافزاری مختلفی برای ردیابی مشخصه‬
‫موازات وجود دارد‪ .‬مشخصهسازی چندین برنامه به روشی برگیشده از این مطالعه به سادگی قابل تعمیم است‪.‬‬
‫نوسانات مشخصه در طول یک دوره مشاهده وابسته به ساختار الگوریتم‪ ،‬بهینهسازی برنامه‪ ،‬بهرهوری منابع و شرایط‬
‫زمان‪-‬اجرای یک سیستم کامپیوتر میباشد‪ DOP .‬تحت فرض داشتن تعداد نامحدود پردازنده و سایر منابع تعریف‬
‫میشود‪ DOP .‬ممکن است همیشه روی یک کامپیوتر واقعی با منابع محدود بدست آمدنی نباشد‪.‬‬
‫وقتی درجه موازات به حداکثر تعداد پردازندههای قابل دسترس یک سیستم برسد (یا از آن تجاوز کند)‪ ،‬بعضی‬
‫شاخههای موازی باید بصورت قطعه ترتیبی اجرا شوند‪ .‬به هر حال‪ ،‬هنوز هم موازات بین هر قطعه وجود دارد که با‬

‫‪1‬‬
‫‪Degree of parallelism‬‬
‫اندازه ماشین محدود شده است‪ DOP .‬ممکن است توسط حافظه و توسط سایر منابع غیرپردازنده محدود شود‪ .‬ما‬
‫فقط محدودیت ایجاد شده توسط پردازندهها را در بحث آینده روی مدلهای افزایش سرعت در نظر میگیریم‪.‬‬
‫میانگین موازات‪ :‬در ادامه‪ ،‬یک کامپیوتر موازی شامل ‪ n‬پردازنده مشابه را در نظر میگیریم‪ .‬حداکثر موازات در‬
‫یک مشخصه ‪ m‬است‪ .‬در حالت ایدهآل ‪ .n>>m‬ظرفیت محاسباتی ‪ Δ‬یک پردازنده توسط نرخ اجرا مثل ‪MIPS‬‬
‫یا ‪ ، Mflops‬بدون در نظر گرفتن جریمه سربار دسترسی حافظه‪ ،‬تأخیر ارتباطی یا سربار سیستم تخمین زده‬
‫میشود‪ .‬وقتی در یک دوره مشاهده ‪ i‬پردازنده مشغول باشند داریم‪DOP=i :‬‬
‫مقدار کل کار ‪( w‬دستورات یا محاسبات) انجام شده متناسب با سطح زیر منحنی مشخصه میباشد‪.‬‬
‫‪𝑡2‬‬
‫𝑡𝑑)𝑡(𝑃𝑂𝐷 ‪𝑊 = ∆ ∫𝑡1‬‬ ‫(‪)3-1‬‬
‫این انتگرال غالباً با جمع گسسته زیر محاسبه میشود‪:‬‬
‫𝑚∑ ∆ = 𝑊‬ ‫𝑖𝑡 ‪𝑖=1 𝑖.‬‬ ‫(‪)3-2‬‬
‫‪ ∑m‬مجموع زمان صرف شده است‪ .‬میانگین‬
‫که ‪ ti‬مقدار کل زمانی است که ‪ DOP=i‬و ‪𝑖=1 t i = t 2 − t 1‬‬
‫موازات ‪ A‬برابر است با‪:‬‬
‫‪1‬‬ ‫𝑡‬
‫=𝐴‬ ‫𝑡𝑑)𝑡(𝑃𝑂𝐷 ‪∫ 2‬‬
‫‪𝑡2 −𝑡1 𝑡1‬‬
‫)‪(3-3‬‬
‫در حالت گسسته داریم‪:‬‬
‫) 𝑡 ‪(∑𝑚 𝑖.‬‬
‫𝑚 ‪𝐴 = 𝑖=1 𝑖 ⁄‬‬ ‫(‪)3-4‬‬
‫) 𝑖𝑡 ‪(∑𝑖=1‬‬
‫مثال ‪ :1-3‬مثال مشخصه موازی و میانگین موازات یک الگوریتم تقسیم و غلبه (‪)Sun and Ni, 1993‬‬
‫همانطور که در شکل ‪ 1-3‬نشان داده شده است مشخصه موازات یک الگوریتم تقسیم و غلبه در طول یک دوره‬
‫مشاهده (‪ )t1,t2‬از ‪ 1‬تا حداکثر مقدار ‪ m=8‬افزایش مییابد و سپس به ‪ 0‬کاهش مییابد‪.‬‬
‫درجه موازات ‪DOP‬‬

‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬ ‫میانگین موازات ‪A‬‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬ ‫‪4‬‬ ‫‪7‬‬ ‫‪10‬‬ ‫‪13‬‬ ‫‪15‬‬ ‫‪17‬‬ ‫‪20‬‬ ‫‪24‬‬ ‫‪27‬‬
‫زمان‬
‫شکل ‪ :1-3‬مشخصه موازات یک الگوریتم تقسیم وغلبه‬
‫در شکل ‪ 1-3‬میانگین موازات = ‪A=(1×5+2×3+3×4+4×6+5×2+6×2+8×3)/(27-2) =93/25‬‬
‫‪ .3.75‬در حقیقت‪ ،‬کل بارکاری )‪ W=A.Δ(t2-t1‬و ‪ A‬کران باالی افزایش سرعت مجانبی میباشد که در زیر‬
‫تعریف شده است‪.‬‬
‫‪| 137‬‬ ‫اصول کارایی مقیاسپذیر‬
‫موازات قابل دسترس‪ :‬پتانسیل موازات وسیعی در برنامههای کاربردی وجود دارد‪ .‬کدهای مهندسی و علمی‬
‫‪ DOP‬بزرگی را در طول موازات داده نشان میدهند‪ )1988( Manoj Kumar .‬گزارش داده است که کدهای‬
‫حساس به محاسبه ممکن است ‪ 500‬تا ‪ 3500‬عمل ریاضی را بطور همزمان در هر پالس ساعت در یک محیط‬
‫ایدهآل اجرا کنند‪ Nicolau .‬و ‪ )1984( Fisher‬گزارش دادند که برنامههای فرترن استاندارد در معماریهایی که‬
‫طول کلمه دستور آنها خیلی طوالنی است‪ ،‬فاکتور میانگین موازاتِ ‪ 90‬دارند‪ .‬این اعداد جنبه خوشبینانه موازات قابل‬
‫دسترس را نشان میدهند‪.‬‬
‫‪ )1991( David Wall‬نشان داده است که محدوده موازات سطح‪-‬دستورالعمل حدود ‪ 5‬میباشد و به ندرت از ‪7‬‬
‫تجاوز میکند‪ )1991( Bulter .‬گزارش داد که وقتی همه محدودیتها حذف شوند ‪ DOP‬در برنامهها ممکن است‬
‫از ‪ 17‬دستور در هر پالس ساعت تجاوز کند‪ .‬وقتی سختافزار کامالً متعادل باشد‪ ،‬ممکن است از ‪ 2‬تا ‪5.8‬‬
‫دستورالعمل در هر پالس ساعت روی یک پردازنده سوپراسکالر بدست آید‪ .‬این اعداد جنبه بدبینانه موازات قابل‬
‫دسترسی را نشان میدهند‪.‬‬
‫اندازهگیری فوق راجع به موازات قابل دسترس نشان میدهد که کدهایی که محاسبات کمتری نسبت به کدهای‬
‫علمی دارند‪ ،‬موازات کمتری دارند حتی اگر محدودیتهای بلوک پایه‪ 1‬نادیده گرفته شوند‪ .‬یک بلوک پایه یک رشته‬
‫یا بلوکی از دستورات در برنامه است که یک نقطه ورود و یک نقطه خروج دارد‪ .‬هرچندکه بهینه سازی کامپایلر و‬
‫طراحی مجدد الگوریتم‪ ،‬موازات قابل دسترس یک کاربرد را زیاد میکند‪ ،‬بلوکهای پایه پتانسیل موازات سطح‬
‫دستور را به فاکتور ‪ 2‬تا ‪ 5‬در برنامههای معمولی محدود میکنند‪.‬‬
‫افزایش سرعت مجانبی‪ :‬مقدار کار اجرا شده با ‪ DOP=i‬را با ‪ Wi=iΔti‬نشان میدهیم و میتوانیم بنویسیم‪:‬‬
‫𝑖𝑤‬
‫=)‪ . ti(1‬زمان اجرای‬‫𝑚∑ = 𝑊‪ .‬زمان اجرای ‪ wi‬روی یک پردازنده (ترتیبی) )‪ ti(1‬است 𝑖𝑡𝑖 =‬ ‫𝑖𝑤 ‪𝑖=1‬‬
‫∆‬
‫𝑤‬
‫‪ wi‬روی یک ‪ k‬پردازنده ∆𝑘‪ 𝑡𝑖 (𝑘) = 𝑖⁄‬میباشد‪ .‬با بینهایت پردازنده قابل دسترس داریم‪, 1≤i≤m :‬‬
‫𝑤‬
‫∆𝑖‪ .𝑡𝑖 (∞) = 𝑖⁄‬بنابراین میتوانیم زمان پاسخ را بصورت زیر بنویسیم‪:‬‬
‫𝑖𝑤‬
‫𝑚∑ = )‪𝑇(1‬‬ ‫𝑚‬
‫‪𝑖=1 𝑡𝑖 (1) = ∑𝑖=1‬‬ ‫(‪)3-5‬‬
‫∆‬
‫𝑖𝑤‬
‫= )∞(𝑇‬ ‫𝑚∑‬
‫𝑖𝑡 ‪𝑖=1‬‬ ‫= )∞(‬ ‫𝑚∑‬
‫∆𝑖 ‪𝑖=1‬‬ ‫(‪)3-6‬‬
‫افزایش سرعت مجانبی ∞‪ S‬برابر است با نسبت )‪ T(1‬به )∞(‪.T‬‬
‫)‪𝑇(1‬‬ ‫𝑚∑‬‫𝑖𝑤 ‪𝑖=1‬‬
‫= )∞(𝑇 = ∞𝑆‬ ‫𝑚‬ ‫𝑤‬ ‫(‪)3-7‬‬
‫𝑖‪∑𝑖=1 𝑖⁄‬‬
‫با مقایسه معادله ‪ 4-3‬و ‪ 7-3‬میفهمیم که در حالت ایدهآل ‪ .S∞=A‬در کل ‪ S∞≤A‬اگر تأخیر ارتباطی و سربار‬
‫سیستم مدنظر قرار بگیرند‪ .‬نکته اینکه هردوی ∞‪ S‬و ‪ A‬تحت فرض ‪ n>>m‬یا ∞=‪ n‬میباشند‪.‬‬
‫‪ -2-1-3‬میانگین هارمونیک کارایی‪ :‬یک کامپیوتر موازی با ‪ n‬پردازنده که ‪ m‬برنامه را در مدهای مختلف با‬
‫سطوح کارایی مختلف اجرا میکند در نظر بگیرید‪ .‬میخواهیم میانگین کارایی چنین کامپیوتر چند حالتهای را تعریف‬
‫کنیم‪ .‬با توزیع وزندار میتوانیم یک عبارت کارایی پرمعنی تعریف کنیم‪.‬‬

‫‪1‬‬
‫‪Basic Block‬‬
‫مدهای اجرای متفاوت ممکن است مرتبط با پردازش موازی‪ ،‬ترتیبی‪ ،‬برداری یا اسکالر با قسمتهای مختلف برنامه‬
‫باشد‪ .‬هر برنامه ممکن است با ترکیبی از این مدها اجرا شوند‪ .‬میانگین هارمونیک کارایی‪ ،‬میانگین کارایی در طول‬
‫تعداد زیادی برنامه در حال اجرا در مدهای گوناگون را تهیه میکند‪.‬‬
‫قبل از اینکه عبارت میانگین هارمونیک کارایی را بدست آوریم اجازه دهید عبارات میانگین ریاضی و میانگین‬
‫هندسی کارایی را بدست آوریم‪ .‬نرخ اجرای ‪ Ri‬برای برنامه ‪ i‬براساس نرخ ‪ MIPS‬یا ‪ Mflops‬اندازه گیری میشود‪.‬‬
‫میانگین ریاضی کارایی‪ :‬اجازه دهید {‪ }Ri‬نرخهای اجرای برنامههای ‪ i=1,2,…,m‬باشند‪ .‬میانگین ریاضی‬
‫نرخ اجرا بصورت زیر تعریف میشود‪.‬‬
‫‪𝑅𝑖⁄‬‬
‫𝑚∑ = 𝑎𝑅‬ ‫‪𝑖=1‬‬ ‫𝑚‬ ‫(‪)3-8‬‬
‫‪1‬‬
‫در نظر میگیرد‪ .‬اگر برنامهها با توزیع وزنی = 𝜋‬ ‫عبارت ‪ Ra‬برای همه ‪ m‬برنامه وزن‬
‫𝑚‬
‫}𝑚 ‪ { 𝑓𝑖 𝑓𝑜𝑟 𝑖 = 1,2, … ,‬باشند‪ ،‬میانگین ریاضی نرخ اجرا را بصورت زیر تعریف میکنیم‪:‬‬
‫∗‬ ‫𝑚‬
‫) 𝑖𝑅 ‪𝑅𝑎 = ∑𝑖=1(𝑓𝑖 .‬‬ ‫(‪)3-9‬‬
‫میانگین ریاضی نرخ اجرا متناسب با جمع معکوس زمانهای اجرا میباشد و متناسب با عکس مجموع زمانهای‬
‫اجرا نیست‪ .‬در نتیجه میانگین ریاضی نرخ اجرا برای نمایش زمانهای واقعی مصرف شده توسط برنامههای محک‬
‫وقتیکه واقعاً اجرا میشوند خطا میدهد‪.‬‬
‫میانگین هندسی کارایی‪ :‬میانگین هندسی نرخ اجرای ‪ m‬برنامه بصورت زیر تعریف میشود‪:‬‬
‫‪1‬‬
‫𝑚∏ = 𝑔𝑅‬ ‫𝑖𝑅 ‪𝑖=1‬‬
‫𝑚‬
‫(‪)3-10‬‬
‫𝑖𝑓 { = 𝜋 میتوانیم میانگین وزندار هندسی نرخ اجرا را بصورت‬ ‫با توزیع وزندار }𝑚 ‪𝑓𝑜𝑟 𝑖 = 1,2, … ,‬‬
‫زیر تعریف کنیم‪:‬‬
‫𝑖𝑓‬
‫𝑚∏ = ∗𝑔𝑅‬ ‫𝑖𝑅 ‪𝑖=1‬‬ ‫(‪)3-11‬‬
‫میانگین هندسی نرخ اجرا هنوز هم کارایی واقعی را بطور خالصه بیان نمیکند زیرا رابطه معکوس با مجموع کل‬
‫زمان ندارد‪ .‬میانگین هندسی برای استفاده با اعداد کارایی که نسبت به یک ماشین مرجع نرمال‪ ،‬نرمال شدهاند‬
‫مناسب است تا با هم مقایسه شوند‪.‬‬
‫میانگین هارمونیک کارایی‪ :‬با توجه به ضعف هر دو میانگین هندسی و ریاضی کارایی‪ ،‬نیاز داریم که یک‬
‫‪1‬‬
‫عبارت (فرمول) میانگین کارایی را براساس میانگین ریاضی زمان اجرا توسعه دهیم‪ .‬در حقیقت 𝑅 = 𝑖𝑇 میانگین‬
‫𝑖‬
‫زمان اجرا بر دستور برای برنامه ‪ i‬میباشد‪ .‬میانگین ریاضی زمان اجرای هر دستور که در واقع معیار واقعی زمان‬
‫اجرا و در نتیجه کارایی است به شرح زیر میباشد‪:‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫𝑚∑ 𝑚 = 𝑎𝑇‬ ‫𝑚‬
‫𝑅 ‪𝑖=1 𝑇𝑖 = 𝑚 ∑𝑖=1‬‬ ‫(‪)3-12‬‬
‫𝑖‬
‫‪1‬‬
‫میانگین هارمونیک نرخ اجرا در طول ‪ m‬برنامه محک توسط این حقیقت که 𝑇 = ‪ 𝑅ℎ‬تعریف میشود‪:‬‬
‫𝑎‬
‫𝑚‬
‫= ‪𝑅ℎ‬‬ ‫‪1‬‬ ‫(‪)3-13‬‬
‫𝑚∑‬
‫) (‪𝑖=1‬‬ ‫𝑖𝑅‬
‫‪| 139‬‬ ‫اصول کارایی مقیاسپذیر‬
‫=𝜋‬ ‫بنابراین میانگین هارمونیک کارایی واقعاً مرتبط با میانگین زمان اجرا میباشد‪ .‬با توزیع وزنی‬
‫}𝑚 ‪ { 𝑓𝑖 𝑓𝑜𝑟 𝑖 = 1,2, … ,‬میتوانیم میانگین هارمونیک وزندار نرخ اجرا را بصورت زیر تعریف کنیم‪:‬‬
‫‪1‬‬
‫= ∗‪𝑅ℎ‬‬ ‫𝑖𝑓‬ ‫(‪)3-14‬‬
‫𝑚∑‬
‫) 𝑅(‪𝑖=1‬‬
‫𝑖‬
‫عبارت های میانگین هارمونیک کارایی باال مرتبط با کل تعداد عملیات تقسیم بر زمان کل میباشد‪ .‬در این‬
‫میانگینها‪ ،‬میانگین هارمونیک نرخ اجرا به کارایی واقعی نزدیکترین است‪.‬‬
‫میانگین هارمونیک افزایش سرعت‪ :‬روش دیگر اِعمال مفهوم میانگین هارمونیک‪ ،‬پیوند مدهای مختلف‬
‫یک برنامه به تعداد پردازندههای استفاده شده میباشد‪ .‬فرض کنید که یک برنامه (یا یک بارکاری که از برنامههای‬
‫چندگانه ترکیب شده است) در یک سیستم ‪ n‬پردازنده اجرا میشود‪ .‬در طول دوره اجرا‪ ،‬برنامه ممکن است‬
‫‪ i=1,2,,…,n‬پردازنده را در دورههای زمانی مختلف استفاده کند‪.‬‬
‫میگوییم یک برنامه در مد ‪ i‬اجرا میشود اگر از ‪ i‬پردازندهی سیستم استفاده شود‪ .‬نرخ اجرای مرتبط ‪ Ri‬برای‬
‫‪1‬‬
‫انعکاس مجموع سرعت ‪ i‬پردازنده استفاده میشود‪ .‬فرض کنید که ‪ 𝑇1 = 𝑅 = 1‬زمان اجرای ترتیبی روی یک‬
‫‪1‬‬
‫‪1‬‬ ‫‪1‬‬
‫پردازنده با نرخ اجرای ‪ R1=1‬باشد‪ .‬آنگاه ‪ 𝑇i = R = i‬زمان اجرای استفاده از ‪ i‬پردازنده با نرخ اجرای ترکیب‬
‫‪i‬‬
‫شده ‪ Ri=i‬در حالت ایدهآل میباشد‪.‬‬
‫𝑖𝑓 { = 𝜋‬ ‫فرض کنید که یک برنامه داده شده در ‪ n‬مد اجرایی‪ ،‬با توزیع وزندار }𝑛 ‪𝑓𝑜𝑟 𝑖 = 1,2, … ,‬‬
‫اجرا میشود‪ .‬میانگین هارمونیک وزندار افزایش سرعت بصورت زیر تعریف میشود‪:‬‬
‫𝑇‬ ‫‪1‬‬
‫= ∗‪𝑆 = 𝑇1‬‬ ‫𝑖𝑓‬ ‫(‪)3-15‬‬
‫𝑛∑‬
‫) 𝑖𝑅‪𝑖=1( ⁄‬‬
‫‪1‬‬
‫که ∗𝑅 = ∗ 𝑇 میانگین ریاضی وزندار‪ ،‬زمان اجرا در طول ‪ n‬مد اجرایی میباشد‪ .‬مشابه آنچه در معادله ‪12-3‬‬
‫‪ℎ‬‬
‫بدست آمد‪.‬‬
‫مثال ‪ :2-3‬میانگین هارمونیک افزایش سرعت برای یک چندپردازنده در ‪ n‬حالت اجرایی‬
‫‪1‬‬
‫در شکل ‪ ،2-3‬معادله ‪ 15-3‬را با فرض 𝑖 = 𝑖𝑇 برای هر ‪ i=1,2,…,n‬رسم کردهایم‪ .‬این مرتبط با حالت ایدهآل‬
‫است که یک کار زمان واحد توسط ‪ i‬پردازنده در کمترین زمان انجام میشود‪ .‬یا میتوانیم بگوییم ‪ ، Ri=i‬زیرا‬
‫وقتیکه ‪ i‬پردازنده بدون اتالف وقت بهرهبرداری میشوند نرخ اجرا ‪ i‬برابر ‪ R1=1‬افزایش مییابد‪.‬‬
‫سه توزیع احتمال ‪ 𝜋3 , 𝜋2 , 𝜋1‬مرتبط با سه الگوی بهرهوری از پردازنده میباشند‪ .‬فرض کنید = ‪𝜋1‬‬
‫‪1 1‬‬ ‫‪1‬‬
‫𝑖 ‪ ( , , … , ) , 𝑠 = ∑𝑛𝑖=1‬مرتبط با توزیع یکنواخت بر روی ‪ n‬مد اجرا میباشد و = ‪𝜋2‬‬
‫𝑛 𝑛‬ ‫𝑛‬
‫‪𝑛 𝑛−1‬‬ ‫‪1‬‬ ‫‪1 2‬‬ ‫𝑛‬
‫) 𝑠 ‪ (𝑠 , 𝑠 , … ,‬برای استفاده از پردازندههای بیشتر مناسب است و ) 𝑠 ‪ 𝜋3 = ( 𝑠 , 𝑠 , … ,‬مناسب برای‬
‫استفاده از پردازندههای کمتر است‪ .‬حالت ایدهآل مرتبط با خط چین زوایه ‪ 450‬است‪ .‬بوضوح توزیع ‪ ،𝜋2‬افزایش‬
‫سرعت بیشتری از ‪ 𝜋1‬تولید میکند و توزیع ‪ 𝜋1‬نسبت به توزیع ‪ 𝜋3‬در شکل ‪ 2-3‬بهتر است‪.‬‬
‫= 𝑆 افزایش سرعت‬ ‫‪1‬‬
‫𝑖𝑓‬
‫𝑛∑‬
‫𝑖‪𝑖=1 ⁄‬‬
‫‪1024‬‬
‫‪1 2‬‬ ‫𝑛‬
‫‪256‬‬ ‫) ‪𝜋2 = ( , , … . ,‬‬
‫𝑠 𝑠‬ ‫𝑠‬
‫‪1 1‬‬ ‫‪1‬‬
‫) ‪𝜋1 = ( , , … . ,‬‬
‫‪64‬‬ ‫𝑛 𝑛‬ ‫𝑛‬
‫‪𝑛 𝑛−1‬‬ ‫‪1‬‬
‫‪𝜋3 = ( ,‬‬ ‫) ‪,….,‬‬
‫‪16‬‬ ‫𝑠‬ ‫𝑠‬ ‫𝑠‬
‫که 𝑖 ‪𝑠 = ∑𝑛𝑖=1‬‬
‫‪4‬‬

‫‪1‬‬
‫‪4‬‬ ‫‪16‬‬ ‫‪64‬‬ ‫‪256‬‬ ‫‪1024‬‬ ‫‪n‬‬
‫شکل‪ :2-3‬میانگین هارمونیک افزایش سرعت کارایی مرتبط با سه توزیع احتمال ‪ 𝜋1‬برای توزیع یکنواخت ‪𝜋2‬‬
‫مناسب برای استفاده از پردازندههای بیشتر‪ 𝜋3 ،‬مناسب برای استفاده از پردازندههای کمتر‬

‫قانون امدال‪ :‬با استفاده از معادله ‪ ،15-3‬می توانیم قانون امدال را بصورت زیر بدست آوریم‪ .‬ابتدا فرض کنید‬
‫)‪ Ri=i, w=(α,0,0,….,0,1-α‬یعنی ‪ w1=α, wn=1-α‬و برای ‪ i# 1, i#n‬داریم ‪ .wi=0‬این به این معنی‬
‫است که یا سیستم در مد کامالً ترتیبی با احتمال ‪ α‬استفاده میشود یا در مد کامالً موازی با استفاده از ‪ n‬پردازنده‬
‫با احتمال ‪ .1-α‬با جایگذاری ‪ R1=1, Rn=n‬و ‪ w‬در معادله ‪ 15-3‬عبارت افزایش سرعت زیر را بدست میآوریم‪:‬‬
‫𝑛‬
‫𝛼)‪𝑆𝑛 = 1+(𝑛−1‬‬ ‫(‪)3-16‬‬
‫‪1‬‬
‫این معادله به عنوان قانون امدال شناخته میشود‪ .‬وقتیکه ∞→‪ n‬آنگاه 𝛼 → 𝑆‪ .‬به عبارت دیگر‪ ،‬تحت فرض‬
‫‪1‬‬
‫احتمال فوق‪ ،‬کران باالی بهترین افزایش سرعت ‪ α‬است بدون توجه به اینکه چه تعداد پردازنده بکار گرفته شدهاند‪.‬‬
‫در شکل ‪ 3-3‬معادله ‪ 16-3‬را به عنوان تابعی از ‪ n‬برای ‪ 4‬مقدار ‪ α‬رسم کردهایم‪ .‬وقتی ‪ ،α=0‬افزایش سرعت‬
‫ایدهآل بدست میآید‪ .‬وقتی مقدار ‪ α‬از ‪ 0.01‬به ‪ 0.1‬و به ‪ 0.9‬افزایش مییابد افزایش سرعت کارایی بسرعت‬
‫افت میکند‪.‬‬
‫این شکل نشان میدهد که کارایی نمیتواند بیشتر از کسر ترتیبی ‪ α‬شود‪ .‬قانون امدال را در بخش ‪ 1-3-3‬با‬
‫افزایش بارکاری تست میکنیم‪ .‬بطور خالصه قانون امدال میگوید اگر قسمتی از برنامه قابل موازات نباشد و ترتیبی‬
‫باشد حتی اگر قسمت موازی را با باالترین سرعت انجام دهیم و زمان اجرای قسمت موازی به صفر برسد افزایش‬
‫سرعت وابسته به قسمت ترتیبی است‪.‬‬
‫‪| 141‬‬ ‫اصول کارایی مقیاسپذیر‬

‫𝑛‬
‫افزایش سرعت‬ ‫=𝑆‬
‫𝛼)‪1+(𝑛−1‬‬

‫‪1024‬‬

‫‪256‬‬
‫‪α=0.01‬‬
‫‪64‬‬

‫‪16‬‬ ‫‪α=0.1‬‬

‫‪4‬‬
‫‪α=0.9‬‬
‫‪1‬‬
‫‪4‬‬ ‫‪16‬‬ ‫‪64‬‬ ‫‪256‬‬ ‫‪1024‬‬ ‫‪n‬‬
‫شکل ‪ :3-3‬افزایش سرعت کارایی در مقایسه با توزیع احتمال )‪ π =(α,0,0,…,0,1-α‬که ‪ α‬کسری از گلوگاه ترتیبی است‪.‬‬
‫‪ -3-1-3‬بازدهی‪ ،1‬بهرهوری‪ 2‬و کیفیت‪ )1980( Ruby Lee :‬چندین پارامتر را برای ارزیابی محاسبات موازی‬
‫تعریف کرده است‪ .‬اینها مفاهیم پایه در پردازش موازی میباشند‪ .‬حد میانهای از این فاکتورهای کارایی در کاربردهای‬
‫دنیای واقعی اتفاق میافتد‪.‬‬
‫بازدهی سیستم‪ :‬فرض کنید )‪ O(n‬تعداد کل عملیات واحد انجام شده توسط یک سیستم ‪-n‬پردازنده و )‪T(n‬‬
‫زمان اجرا در واحد زمان باشد‪ .‬اگر بیشتر از یک عمل توسط ‪n‬پردازنده در واحد زمان انجام شود و ‪:n≥2‬‬
‫)‪ .T(n)<O(n‬با فرض اینکه در یک سیستم تک پردازنده )‪ ،T(1)=O(1‬فاکتور افزایش سرعت توسط فرمول‬
‫زیر تعریف میشود‪:‬‬
‫)‪𝑇(1‬‬
‫= )𝑛(𝑆‬ ‫)𝑛(𝑇‪⁄‬‬ ‫(‪)3-17‬‬
‫بازدهی سیستم برای یک سیستم ‪-n‬پردازنده با فرمول زیر تعریف میشود‪:‬‬
‫)𝑛(𝑆‬ ‫)‪𝑇(1‬‬
‫= )𝑛(𝐸‬ ‫)𝑛(𝑇𝑛 =‬ ‫(‪)3-18‬‬
‫𝑛‬
‫بازدهی‪ ،‬شاخص درجه واقعی افزایش سرعت بدست آمده در مقایسه با حداکثر مقدار آن میباشد‪ .‬مثالً اگر ‪10‬‬
‫پردازنده داریم و افزایش سرعت بدست آمده ‪ 6‬است یعنی ‪ 6/10=0.6‬بازدهی ماشین بوده است‪ .‬از ‪ 10‬پردازنده‬
‫‪1‬‬
‫بطور متوسط ‪ 6‬عدد آن استفاده شده است‪ .‬چون ‪ 1≤S(n)≤n‬داریم‪. ≤ 𝐸(𝑛) ≤ 1 :‬‬
‫𝑛‬
‫زمانی بازدهی کمترین مقدار را دارد که کل برنامه بصورت ترتیبی روی یک پردازنده اجرا شود‪ .‬بیشترین بازدهی‬
‫زمانی بدست میآید که همه ‪ n‬پردازنده در دوره اجرا بطور کامل بهرهبرداری شوند‪.‬‬
‫افزونگی و بهرهوری‪ :3‬افزونگی در یک محاسبه موازی با نسبت )‪ O(n‬به )‪ O(1‬تعریف میشود‪.‬‬

‫‪1‬‬
‫‪Efficiency‬‬
‫‪2‬‬
‫‪Utilization‬‬
‫‪3‬‬
‫‪Redundancy and utilization‬‬
‫)‪𝑅(𝑛) = 𝑂(𝑛)⁄𝑂(1‬‬ ‫(‪)3-19‬‬
‫این نسبت میزان تطابق بین موازات نرمافزاری و سختافزاری را تعیین میکند‪ .‬مشخص است که ‪.1≤R(n)≤n‬‬
‫بهرهوری سیستم در یک محاسبه موازی بصورت زیر تعریف میشود‪:‬‬
‫)‪U(n)=R(n).E(n‬‬ ‫(‪)3-20‬‬
‫بهرهوری سیستم مشخصه درصد منابع (پردازندهها‪ ،‬حافظهها و ‪ )...‬است که در طول اجرای یک برنامه موازی‬
‫مشغول نگه داشته میشوند‪ .‬جالب است که روابط زیر را تأکید کنیم‪:‬‬
‫‪1‬‬
‫‪1 ≤ 𝑅(𝑛) ≤ 1⁄𝐸(𝑛) ≤ 𝑛, 𝑛 ≤ 𝐸(𝑛) ≤ 𝑈(𝑛) ≤ 1‬‬
‫کیفیت موازات‪ :‬کیفیت یک محاسبه موازی مستقیماً مرتبط با افزایش سرعت و بازدهی است و با افزونگی نسبت‬
‫عکس دارد‪ .‬بنابراین داریم‪:‬‬
‫)𝑛(𝐸‪𝑆(𝑛).‬‬ ‫)‪𝑇 3 (1‬‬
‫= )𝑛(𝑄‬ ‫)𝑛(𝑂‪= 𝑛𝑇 2 (𝑛).‬‬ ‫(‪)3-21‬‬
‫)𝑛(𝑅‬
‫چون )‪ E(n‬همیشه یک کسر است و )‪ R(n‬نیز عددی بین ‪1‬و ‪ n‬است‪ ،‬کران باالی کیفیت )‪ Q(n‬همیشه )‪S(n‬‬
‫است‪.‬‬
‫‪1‬‬
‫مثال ‪ :3-3‬بارکاری فرضی و شکل کارایی‪:‬‬
‫در شکل ‪ ،4-3‬مقادیر نسبی )‪ S(n‬و )‪ E(n‬و )‪ R(n‬و )‪ U(n‬و )‪ Q(n‬را به عنوان تابعی از اندازه ماشین ‪n‬‬
‫‪4𝑛3‬‬
‫نسبت به بارکاری فرضی که توسط ‪ O(1)=T(1)=n3‬و 𝑛 ‪ 𝑂(𝑛) = 𝑛3 + 𝑛2 log 2‬و )‪𝑇(𝑛) = (𝑛+3‬‬
‫مشخص شده است‪ ،‬مقایسه کردهایم‪ .‬با جایگذاری این مقادیر در معادالت ‪ 17-3‬و ‪ 21-3‬عبارات کارایی زیر را‬
‫بدست میآوریم‪:‬‬
‫‪(𝑛 + 3)⁄‬‬ ‫)‪(𝑛 + 3‬‬ ‫‪(𝑛 + log 2 𝑛)⁄‬‬
‫= )𝑛(𝑆‬ ‫= )𝑛(𝐸 ‪4 ,‬‬ ‫= )𝑛(𝑅 ‪⁄(4𝑛) ,‬‬ ‫‪𝑛,‬‬
‫‪2‬‬
‫))𝑛 ‪,𝑄(𝑛) = (𝑛 + 3) ⁄(16(𝑛 + log‬‬
‫)𝑛 ‪(𝑛+3)(𝑛+log2‬‬
‫= )𝑛(𝑈‬
‫‪4𝑛2‬‬ ‫‪2‬‬
‫‪1‬‬
‫روابط ‪ 𝑛 ≤ 𝐸(𝑛) ≤ 𝑈(𝑛) ≤ 1‬و ‪ 0≤Q(n)≤S(n)≤n‬وقتیکه افزایش سرعت خطی مرتبط با حالت‬
‫ایدهآل بازدهی ‪ ٪100‬است‪ ،‬قابل مشاهده است‪.‬‬
‫برای خالصه کردن بحث فوق روی شاخصهای کارایی‪ ،‬از افزایش سرعت )‪ S(n‬برای تعیین درجه سرعت بدست‬
‫آمده در یک محاسبه موازی استفاده میکنیم‪ .‬بازدهی )‪ E(n‬واحدی است که درصد مفیدی که کل یک کار توسط‬
‫‪ n‬پردازنده انجام میشود را اندازه میگیرد‪ .‬افزونگی )‪ ،R(n‬حوزه افزایش بارکاری را اندازه میگیرد‪.‬‬
‫بهرهوری )‪ U(n‬حوزهای که منابع در یک محاسبه موازی بهرهبرداری میشوند را مشخص میکند و در انتها کیفیت‬
‫)‪ Q(n‬تأثیرات افزایش سرعت‪ ،‬بازدهی و افزونگی را در یک عبارت ترکیب میکند تا واحد نسبی یک محاسبه‬
‫موازی روی یک سیستم کامپیوتر را تعیین کند‪.‬‬
‫افزایش سرعت و بازدهی ده کامپیوتر موازی در جدول ‪ 1-3‬برای حل یک سیستم خطی با ‪ 1000‬معادله گزارش‬
‫شده است‪ .‬از ضرب ماتریس در این آزمایش استفاده شده است‪.‬‬

‫‪1‬‬
‫‪Hypothetical‬‬
‫‪| 143‬‬ ‫اصول کارایی مقیاسپذیر‬

‫افزایش سرعت )‪S(n‬‬


‫بازدهی )‪E(n‬‬ ‫افزونگی )‪R(n‬‬
‫بهرهوری )‪U(n‬‬ ‫کیفیت )‪Q(n‬‬

‫‪1.0‬‬ ‫‪32‬‬

‫‪0.8‬‬ ‫)‪E(n‬‬ ‫)‪U(n‬‬ ‫افزایش سرعت خطی‬


‫‪16‬‬
‫)‪S(n‬‬
‫‪0.6‬‬ ‫‪8‬‬

‫‪0.4‬‬ ‫‪4‬‬

‫‪0.2‬‬ ‫‪2‬‬
‫)‪R(n‬‬
‫‪0.0‬‬ ‫)‪Q(n‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪8‬‬ ‫‪16‬‬ ‫‪32‬‬


‫تعداد پردازندهها (‪)n‬‬
‫شکل ‪ :4-3‬واحدهای کارایی برای مثال ‪ 3-3‬روی یک کامپیوتر موازی با حداکثر ‪ 32‬پردازنده‬

‫بازدهی‬ ‫افزایش سرعت‬ ‫زمان چندپردازنده‬ ‫زمان تک‬ ‫تعداد‬ ‫مدل کامپیوتر‬
‫‪E=S/n‬‬ ‫‪S=T1/Tn‬‬ ‫)‪Tn(s‬‬ ‫پردازنده )‪T1(s‬‬ ‫پردازندهها‬
‫‪0.69‬‬ ‫‪11.2‬‬ ‫‪0.069‬‬ ‫‪0.77‬‬ ‫‪16‬‬ ‫‪Cray Y-MP C90‬‬
‫‪0.91‬‬ ‫‪1.82‬‬ ‫‪0.082‬‬ ‫‪0.15‬‬ ‫‪2‬‬ ‫‪NEC SX-3‬‬
‫‪0.87‬‬ ‫‪6.96‬‬ ‫‪0.312‬‬ ‫‪2.17‬‬ ‫‪8‬‬ ‫‪Cray Y-MP/8‬‬
‫‪0.29‬‬ ‫‪147‬‬ ‫‪1.10‬‬ ‫‪160.0‬‬ ‫‪512‬‬ ‫‪Fujistu AP‬‬
‫‪1000‬‬
‫‪0.94‬‬ ‫‪5.64‬‬ ‫‪1.29‬‬ ‫‪7.27‬‬ ‫‪6‬‬ ‫‪IBM‬‬
‫‪3090/600S VF‬‬
‫‪0.03‬‬ ‫‪14.7‬‬ ‫‪1.5‬‬ ‫‪22.0‬‬ ‫‪512‬‬ ‫‪Intel Delta‬‬
‫‪0.79‬‬ ‫‪11.1‬‬ ‫‪2.06‬‬ ‫‪22.9‬‬ ‫‪14‬‬ ‫‪Alliant‬‬
‫‪FX/2800-200‬‬
‫‪0.12‬‬ ‫‪128.0‬‬ ‫‪2.59‬‬ ‫‪331.0‬‬ ‫‪1024‬‬ ‫‪nCUBE /2‬‬
‫‪0.95‬‬ ‫‪3.81‬‬ ‫‪3.92‬‬ ‫‪14.9‬‬ ‫‪4‬‬ ‫‪Convex C3240‬‬
‫‪0.55‬‬ ‫‪219.0‬‬ ‫‪4.90‬‬ ‫‪1075.0‬‬ ‫‪400‬‬ ‫‪Parsytec FT-‬‬
‫‪400‬‬
‫جدول ‪ :1-3‬افزایش سرعت و بازدهی کامپیوترهای موازی برای حل یک سیستم خطی با ‪ 1000‬معادله‬
‫‪ -4-1-3‬واحدهای کارایی استاندارد‬
‫برای توصیف نرخ اجرای د ستور و قابلیت ممیز شناور یک کامپیوتر موازی از واحدهای ‪( MIPS‬میلیون دستور در‬
‫ثانیه) و ‪( Mflops‬میلیون عمل ممیز شناور در ثانیه) میتوان استفاده کرد‪ MIPS .‬در معادله ‪ 3-1‬تعریف شده‬
‫است و از پالس ساعت و میانگین ‪ CPI‬بدست میآید‪.‬‬
‫در این بخش‪ ،‬واحدهای استاندارد که توسط صنعت برای مقایسه کارایی کامپیوترهای گوناگون استفاده میشود مثل‬
‫‪ Mflops, MIPS, KLIPS1, Dhrystone, Whestone‬را معرفی میکنیم که اغلب در مقایسه کارایی‬
‫کامپیوترها گزارش میشوند‪.‬‬
‫اکثر سازندگان (کارخانجات) کامپیوتر‪ ،‬حداکثر کارایی را براساس ‪( GFlops ،Mflops ،MIPS‬یک میلیارد عمل‬
‫ممیز شناور در ثانیه)‪( TFlops ،‬یک تریلیون عمل ممیز شناور در ثانیه) معرفی میکنند‪ .‬اغلب کارایی واقعی وابسته‬
‫به برنامه یا بر اساس کاربرد است‪ .‬درکل‪ ،‬نرخ ‪ MIPS‬وابسته به مجموعه دستورات است و بین برنامهها متغیر است‬
‫و بطور معکوس نسبت به کارایی تغییر میکند‪.‬‬
‫مقایسه پردازندهها با پالسهای ساعت مختلف و مجموعه دستورالعمل متفاوت کامالً عادالنه نیست‪ MIPS .‬و‬
‫‪ Mflops‬براساس طراحی سخت افزار ماشین روی رفتار برنامه هستند و همیشه مناسب برای مقایسه کارایی‬
‫نیستند‪.‬‬
‫نتایج درایستون‪ :‬یک برنامه محک حساس به ‪ CPU‬است و شامل ترکیبی از ‪ 100‬دستور زبان سطح باال و‬
‫انواع دادههایی که در یک برنامه کاربردی سیستم یافت میشوند میباشد و عملیات ممیز شناور در آن وجود ندارد‪.‬‬
‫دستورات درایستون بر اساس نوع دستور‪ ،‬نوع داده‪ ،‬محلیت مراجعات بدون هیچ فراخوانی سیستم عامل و عدم‬
‫استفاده از توابع در برنامههای کتابخانهای بصورت متعادل وجود دارد‪ .‬بنابراین درایستون واحد کارایی صحیح‬
‫پردازندهها یا کامپیوترهای مدرن است‪ .‬واحد ‪( k‬کیلو در ثانیه) درایستون برای گزارش گیری درایستون استفاده‬
‫میشود‪.‬‬
‫نتایج وستون‪ :‬یک برنامه محک سنتز براساس فرترن است که کارایی ممیز شناور را میسنجد و براساس تعداد‬
‫وستون که یک سیستم میتواند انجام دهد اندازهگیری میشود‪ .‬برنامه محک شامل هردوی عملیات ممیز شناور و‬
‫صحیح می باشد و شامل اندیس دهی آرایه‪ ،‬فراخوانی زیربرنامه‪ ،‬ارسال پارامترها‪ ،‬پرشهای شرطی‪ ،‬و توابع‬
‫مثلثاتی‪/‬غیرجبری میباشد‪.‬‬
‫وستون شامل کد قابل برداری شدن نیست و وابستگی کتابخانه ریاضی سیستم و مؤثر بودن کد تولید شده توسط‬
‫کامپایلر را نشان میدهد‪ .‬هر دو برنامه محک درایستون و وستون برنامههای محک سنتز هستند و نتایج کارایی‬
‫تولید شده توسط آنها بنحو زیادی وابسته به کامپایلر استفاده شده است‪ .‬هر دو برنامه محک قادر به پیشبینی کارایی‬
‫برنامههای کاربر نیستند و عیب آنها وابستگیشان به کامپایلر است‪.‬‬
‫نرخهای ‪ TPS2‬و ‪ :KLIPS‬کارایی کامپیوترها در پردازش تراکنشهای آنالین اغلب براساس ‪ ( TPS‬تعداد‬
‫تراکنشها در ثانیه) اندازه گرفته میشود‪ .‬هر تراکنش ممکن است شامل درخواستهای دسترسی به پایگاه داده و‬
‫عملیات بروزرسانی پایگاه داده باشد‪ .‬کامپیوترهای تجاری باید طوری طراحی شوند که ‪ TPS‬باالیی داشته باشند‪.‬‬
‫در استانداردهای امروزی هر کامپیوتری که از ‪ 100TPS‬تجاوز کند برای پردازش تراکنشی نسبتاً سریع فرض‬
‫میشود‪.‬‬

‫‪1‬‬
‫‪Kilo Logic Inference Per Second‬‬
‫‪2‬‬
‫‪Transaction per second‬‬
‫‪| 145‬‬ ‫اصول کارایی مقیاسپذیر‬
‫در کاربردهای هوش مصنوعی اغلب واحد ‪ KLIPS‬استفاده میشود تا قدرت پاسخدهی یک ماشین ‪ AI‬را تشخیص‬
‫دهد‪ .‬مثالً میگوییم یک ماشین سرعت ‪ 400KLIPS‬دارد‪ .‬هر استدالل منطقی شامل حدوداً ‪ 100‬دستور اسمبلی‬
‫میباشد‪ .‬بنابراین ‪ 400KLIPS‬تقریباً معادل ‪ 40MIPS‬است‪.‬‬
‫‪ -2-3‬کاربردهای پردازش موازی‪ :‬پردازش موازی انبوه یکی از ابتداییترین چالشهای کاربردهای‬
‫سوپرکامپیوتر است‪ .‬در اینجا چالشهای بزرگ در محاسبات و ارتباطات کارایی‪-‬باال را معرفی میکنیم و سپس‬
‫نیازهای سرعت‪ ،‬حافظه و ورودی‪/‬خروجی برای رسیدن به این چالشها را بررسی میکنیم‪ .‬خواص الگوریتمهای‬
‫موازی نیز در این متن بحث میشوند‪.‬‬

‫‪ -1-2-3‬موازات انبوه برای چالشهای بزرگ‬

‫تعریف موازات انبوه به تناسب زمان تغییر میکند‪ .‬براساس استانداردهای امروزی‪ ،‬هر ماشینی که صدها یا هزاران‬
‫یا میلیونها پردازنده داشته باشد یک سیستم پردازش موازی انبوه (‪ )MPP1‬میباشد‪ .‬چون تکنولوژی کامپیوتر به‬
‫سرعت تغییر میکند‪ ،‬نیاز برای درجه باالتر موازات بیشتر میشود‪.‬‬
‫کارایی اکثر کامپیوترهای تجاری توسط حداکثر نرخ ‪ TIPS‬یا ‪ Tflops‬آنها نشانگذاری میشود‪ .‬در واقعیت‪ ،‬فقط‬
‫کسری از کارایی حداکثر در برنامههای محک واقعی یا اجراهای ارزیابی قابل دستیابی است‪.‬‬
‫چالشهای بزرگ‪ :‬براساس چالشهای بزرگ در محاسبات علمی‪ ،‬نیاز به تهیه یک کامپیوتر با قدرت محاسباتی‬
‫‪ 1Tera byte ،1Tera flops‬از حافظه اصلی و پهنای باند ورودی‪/‬خروجی‪ 1Terabyte ،‬داریم‪.‬‬
‫بعضی از برنامههایی که نیازمند پردازش موازی انبوه هستند عبارتند از‪:‬‬
‫(‪ )1‬صنعت ضبط مغناطیسی به منظور مطالعه محاورههای مغناطیسی و تغییرات آن برای کاهش نویز در‬
‫دیسکهای با ظرفیت باال‪.‬‬
‫(‪ )2‬طراحی داروهای زیستی ‪ :‬برای طراحی داروهای سرطان یا ایدز یا بلوک و کنترل کردن عمل ‪ HIV‬از‬
‫طراحی به کمک کامپیوتر استفاده میشود‪.‬‬
‫(‪ )3‬حمل و نقل عمرانی سرعت باال‪ :‬محاسبه جریان سیاالت در سوپرکامپیوترها‬
‫(‪ )4‬کاتالیزورها‪ :‬برای فعل و انفعاالت شیمیایی که توسط سیستم مدل میشوند‪.‬‬
‫(‪ )5‬مدل سازی اقیانوس‪ :‬شبیه سازی فعالیتهای در مقیاس بزرگ اقیانوسها‪.‬‬
‫(‪ )6‬سایر نواحی مهم‪ ،‬مثل مدل و طراحی ساختار پروتئین‪ ،‬پردازش تصویر و غیره‪.‬‬

‫بهرهبرداری از موازت انبوه‪ :‬موازات جایگذاری شده در سطح دستور یا سطح زیرروال نسبتاً محدود است‪ .‬تعداد‬
‫خیلی کمی از کامپیوترها میتوانند بیشتر از دو دستور یک برنامه را در یک سیکل ماشین اجرا کنند‪.‬‬

‫‪1‬‬
‫‪Massively parallel processing‬‬
‫اما میزان موازات داده از موازات دستور بسیار باالتر است‪ .‬موازات داده به معنی حالتی است که عمل خاصی (دستور‬
‫یا برنامه) روی آرایه بزرگی از دادهها (عملوندها) اجرا میشود‪ .‬موازات داده در پردازندههای برداری خط لوله شده‪،‬‬
‫پردازندههای آرایه ‪ ،SIMD‬و ‪ SPMD‬یا ‪ MPMD‬پیاده میشود‪.‬‬

‫‪ -2-2-3‬مدلهای کاربردی کامپیوترهای موازی‬

‫بطور کلی‪ ،‬اگر بارکاری یا اندازه برنامه ‪ ،S‬مثل منحنی ‪ α‬نشان داده شده در شکل ‪(6-3‬الف)‪ ،‬بدون تغییر نگه داشته‬
‫شود آنگاه بازدهی ‪ E‬وقتیکه اندازه ماشین‪ n ،‬افزایش مییابد به سرعت کاهش مییابد‪ .‬به این دلیل که سربار ‪h‬‬
‫از اندازه ماشین سریعتر افزایش مییابد‪ .‬برای نگه داشتن بازدهی ‪ E‬در سطح مطلوب باید اندازه ماشین و اندازه‬
‫برنامه را به تناسب افزایش داد‪ .‬اینچنین سیستمی یک کامپیوتر مقیاسپذیر برای حل مسائل مقیاسپذیر نامیده‬
‫میشود‪.‬‬

‫در حالت ایدهآل‪ ،‬دوست داریم که منحنی بارکاری یک تابع خطی از ‪ n‬باشد (منحنی ‪ ϒ‬در شکل ‪(6-3‬الف))‪ .‬این‬
‫به معنی مقیاسپذیری خطی در اندازه برنامه است‪ .‬اگر منحنی بارکاری خطی قابل دستیابی نباشد‪ ،‬انتخاب‬
‫بعدی رسیدن به مقیاسپذیری زیرخطی است تا به حد ممکن به خطی نزدیک شود همانطور که در شکل ‪-3‬‬
‫‪(6‬الف) در منحنی ‪ β‬نشان داده شده است‪.‬‬

‫فرض کنید بار کاری از الگوی رشد نمایی تبعیت کند و فوقالعاده زیاد شود‪ .‬همانطور که در شکل ‪(6-3‬الف) برای‬
‫منحنی ‪ θ‬نشان داده شده است‪ .‬در این حالت به سیستم مقیاسپذیر ضعیف میگوییم‪ .‬دلیل این است که برای‬
‫نگه داشتن کارایی ثابت یا افزایش سرعت خوب‪ ،‬افزایش اندازه برنامه باید انفجاری باشد تا از محدودیتهای حافظه‬
‫یا ورودی‪/‬خروجی تجاوز کند‪ .‬اندازه مسئله فقط میتواند در محدوده حافظه قابل دسترس در کامپیوتر زیاد شود‪.‬‬

‫منحنیهای بازدهی‪ :‬براساس ‪ 4‬الگوی تعیین شده در شکل ‪(6-3‬الف) چهار منحنی کارایی در شکل ‪(6-3‬ب)‬
‫نشان داده شده است‪ .‬با بارکاری ثابت‪ ،‬منحنی کارایی (‪ )α‬به سرعت سقوط میکند‪ .‬درحقیقت‪ ،‬منحنی ‪ α‬مرتبط با‬
‫قانون مشهور امدال است برای بار کاری خطی‪ ،‬منحنی کارایی (‪ )ϒ‬تقریباً صاف است‪.‬‬

‫بارکاری نمایی (‪ )θ‬ممکن است به خاطر کمبود حافظه یا کم محدودیتهای ورودی‪/‬خروجی قابل پیادهسازی نباشد‬
‫(اگر کاربردهای زمان‪-‬قطعی در نظر گرفته شوند)‪ .‬بنابراین کارایی ‪( θ‬خط چینها) فقط با رشد نمایی ظرفیت حافظه‬
‫(یا ورودی‪/‬خروجی) قابل دستیابی است‪ .‬منحنی کارایی زیرخطی ‪ β‬بین ‪ α‬و ‪ ϒ‬قرار دارد‪ .‬تجزیه تحلیل مقیاسپذیری‬
‫تعیین میکند که چه موقع پردازش موازی یک مسئله داده شده میتواند بهبود مطلوب کارایی را پیشنهاد کند‪ .‬این‬
‫تجزیه تحلیل در طراحی پردازندههای موازی انبوه کمک کننده است‪.‬‬

‫یک سیستم موازی برای حل مسائل بزرگ دلخواه در زمان ثابت میتواند استفاده شود اگر و تنها اگر الگوی بارکاری‬
‫بطور خطی رشد کند‪ .‬گاهی اوقات‪ ،‬حتی اگر حداقل زمان با پردازندههای بیشتر بدست آید‪ ،‬بهرهوری سیستم (یا‬
‫کارایی) ممکن است خیلی ضعیف باشد‪.‬‬
‫‪| 147‬‬ ‫اصول کارایی مقیاسپذیر‬
‫مدلهای کاربردی‪ :‬الگوهای بارکاری در شکل ‪(6-3‬الف) اجازه رشد نامحدود ندارند‪ .‬در شکل ‪(6-3‬ج) سه مدل‬
‫کاربردی کامپیوترهای موازی را نشان دادهایم‪ .‬این مدلها توسط محدودیت حافظه‪ ،‬محدودیت تلورانس تأخیر‬
‫‪ ،IPC‬یا محدودیت پهنای ورودی‪/‬خروجی محدود شدهاند‪ .‬این مدلها بطور مختصر در ادامه معرفی میشوند‪ .‬این‬
‫مدلها منجر به سه مدل افزایش سرعت کارایی که در بخش ‪ 3-3‬فرموله شدهاند‪ ،‬میشوند‪.‬‬
‫(نمایی) ‪θ‬‬
‫(خطی) ‪ϒ‬‬

‫بازدهی‬
‫بارکاری‬

‫‪θ‬‬
‫(اندازه برنامه ‪)S‬‬

‫‪1‬‬

‫(زیرخطی) ‪β‬‬ ‫‪ϒ‬‬

‫‪0.5‬‬ ‫‪β‬‬
‫(ثابت) ‪α‬‬
‫‪α‬‬
‫‪1‬‬ ‫‪10‬‬ ‫‪100 1000‬‬ ‫‪1‬‬ ‫‪10‬‬ ‫‪100 1000‬‬
‫اندازه ماشین‪n‬‬ ‫اندازه ماشین ‪n‬‬
‫(ب) منحنیهای کارایی مرتبط‬
‫(الف) ‪ 4‬الگوی پیشرفت بارکاری‬

‫بار کاری‬ ‫مدل حافظه‪ -‬ثابت‬


‫مدل زمان ‪ -‬ثابت‬
‫محدوده‬
‫حافظه (اندازه مسئله ‪)S‬‬

‫محدوده‬
‫مدل بار ثابت‬
‫ارتباطی‬
‫اندازه ماشین (‪)n‬‬

‫(ج) مدلهای کاربردی برای کامپیوترهای موازی‬


‫شکل ‪ :6-3‬رشد بارکاری‪ ،‬منحنیهای کارایی‪ ،‬و مدلهای کاربردی از کامپیوترهای موازی تحت محدودیت منابع‬
‫محدوده‪1‬‬ ‫مدل بار‪-‬ثابت مرتبط با بارکاری ثابت (منحنی ‪ α‬در شکل ‪(6-3‬الف)) میباشد‪ .‬استفاده از این مدل توسط‬
‫ارتباطی نشان داده شده در شکل ‪(6-3‬ج) محدود شده است‪.‬‬

‫مدل زمان‪-‬ثابت بدون توجه به چگونگی مقیاسپذیر شدن بارکاری با اندازه ماشین‪ ،‬متقاضی زمان اجرای ثابتی‬
‫برای برنامه می باشد‪ .‬رشد بارکاری خطی (منحنی ‪ ϒ‬در شکل ‪(6-3‬الف)) مرتبط با این مدل است‪ .‬مدل حافظه‪-‬‬
‫ثابت با محدوده حافظه محدود شده است که مرتبط با منحنی بار کاری بین ‪ ϒ‬و ‪ θ‬در شکل ‪(6-3‬الف) میباشد‪.‬‬

‫‪1‬‬
‫‪Communication Bound‬‬
‫از نقطه دید کاربردی‪ ،‬نواحی سایه زده شده منع شدهاند‪ .‬محدوده ارتباطی به سربار افزایش ‪ IPC‬و افزایش تقاضاهای‬
‫ورودی‪/‬خروجی محدود شده است‪ .‬محدوده حافظه با حافظه اصلی و ظرفیت دیسک تعیین میشود‪.‬‬

‫در عمل‪ ،‬یک طراح الگوریتم یا برنامه نویس کامپیوتر موازی ممکن است یک مدل کاربردی بین محدودیتهای‬
‫منبع باال را انتخاب کند‪ ،‬همانطور که در ناحیه کاربردی بدون سایه در شکل ‪(6-3‬ج) نشان داده شده است‪.‬‬

‫حدمیانههای تجزیه تحلیل مقیاسپذیری‪ :‬هزینه کامپیوتر ‪ C‬و سربار برنامه نویسی ‪ P‬به منظور افزایش‬
‫سرعت (کارایی) بطور برابر در تجزیه تحلیل مقیاسپذیری مهم هستند‪ .‬محدودیت بودجه ممکن است محدودیت‪-‬‬
‫های نهایی روی محاسبات تحمیل کند‪ .‬بهره برداری از موازات برای کارایی باالتر متقاضی معماریهای مقیاس‬
‫پذیر و الگوریتمهای مقیاس پذیر میباشد‪ .‬مقیاس پذیری معماری میتواند توسط تأخیر ارتباطی طوالنی‪ ،‬ظرفیت‬
‫محدود حافظه‪ ،‬پهنای باند محدود ورودی‪/‬خروجی‪ ،‬و سرعت محدود پردازنده‪ ،‬محدود شود‪ .‬چگونگی رسیدن به یک‬
‫طرح متوازن با این محدودیتها هدف طراحان ‪ MPP‬میباشد‪ .‬همچنین الگوریتمهای موازی و ساختمان دادههای‬
‫کارا باید مقیاس پذیر باشند‪.‬‬

‫‪ -3-2-3‬مقیاس پذیری الگوریتمهای موازی‬


‫در این زیر بخش‪ ،‬مقیاس پذیری الگوریتمهای موازی را در مقایسه با کالسهای ماشینهای کلیدی تجزیه تحلیل‬
‫میکنیم‪.‬‬

‫خواص الگوریتمی‪ :‬الگوریتمهای محاسباتی در تک پردازندهها بصورت ترتیبی اجرا میشوند‪ .‬الگوریتمهای موازی‬
‫آنهایی هستند که بطور خاص برای کامپیوترهای موازی طراحی شدهاند‪ .‬الگوریتمهای موازی ایدهآل آنهایی هستند‬
‫که برای مدل ‪ PRAM‬نوشته شده اند اگر هیچ محدودیت فیزیکی یا سربار ارتباطی وجود نداشته باشد‪ .‬در دنیای‬
‫واقعی‪ ،‬یک الگوریتم مفید و مؤثر است اگر فقط روی ماشینهای فیزیکی بصورت مفیدی از لحاظ هزینه پیاده شود‪.‬‬

‫در این حالت‪ ،‬همه الگوریتم های قابل پیاده سازی ماشین باید مستقل از معماری باشند‪ .‬این بدین معنی است که‬
‫تأثیرات سربار ارتباطی و محدودیتهای معماری نمیتوانند نادیده گرفته شوند‪.‬‬

‫در زیر خواص مهم الگوریتمهای موازی را که قابل پیاده سازی روی ماشین هستند خالصه میکنیم‪.‬‬

‫(‪ )1‬معین در مقایسه با نامعین‪ :‬فقط الگوریتمهای معین قابل پیادهسازی روی ماشینهای واقعی هستند‪.‬‬
‫مطالعه ما روی الگوریتمهای معین با پیچیدگی زمانی چندجملهای میباشد‪.‬‬
‫(‪ )2‬دانه بندی محاسباتی‪ :‬همانطور که در بخش ‪ 1-2-2‬معرفی شد‪ ،‬دانهبندی روی اندازه عناصر داده و‬
‫ماژولهای برنامه استفاده شده در محاسبه تصمیمگیری میکند‪ .‬در این حالت الگوریتمها را به ریز دانه‪،‬‬
‫دانه‪-‬متوسط و درشت دانه طبقهبندی میکنیم‪.‬‬
‫(‪ )3‬مشخصات موازات‪ :‬توزیع درجه موازات در یک الگوریتم‪ ،‬نیاز به پردازش موازی را آشکار میکند‪ .‬این‬
‫غالباً بر کارایی الگوریتمهای موازی تأثیر دارد‪.‬‬
‫‪| 149‬‬ ‫اصول کارایی مقیاسپذیر‬
‫(‪ )4‬الگوهای ارتباطی و نیازهای همزمانی‪ :‬الگوهای ارتباطی هم دسترسی حافظه و هم ارتباطات بین‬
‫پردازندهای را آدرس میدهد‪ .‬الگوها میتوانند براساس الگوریتم‪ ،‬ایستا یا پویا باشند‪ .‬الگوریتمهای ایستا‬
‫برای ماشینهای ‪ SIMD‬یا خطلوله مناسبتر میباشند‪ .‬در حالیکه الگوریتمهای پویا برای ماشینهای‬
‫‪ MIMD‬مناسبتر هستند‪ .‬فرکانس همزمانی اغلب بر کارایی یک الگوریتم تأثیر دارد‪.‬‬
‫(‪ )5‬یکنواختی‪ 1‬عملیات‪ :‬اشاره به نوع عملیات پایهای دارد که باید انجام شوند‪ .‬واضح است که‪ ،‬اگر عملیات‬
‫در طول مجموعه داده یکنواخت باشند‪ ،‬پردازش ‪ SIMD‬یا خطلوله ممکن است مطلوبتر باشد‪ .‬به‬
‫عبارت دیگر‪ ،‬الگوریتمهای ساختار یافته تصادفی برای پردازش ‪ MIMD‬مناسبتر میباشند‪.‬‬
‫(‪ )6‬نیاز حافظه و ساختارهای داده‪ :‬در حل مسائل مقیاس بزرگ‪ ،‬مجموعه داده ممکن است نیاز به فضای‬
‫حافظه خیلی بزرگ داشته باشند‪ .‬کارایی حافظه توسط ساختمان دادههای انتخاب شده و الگوهای انتقال‬
‫داده در الگوریتمها تحت تأثیر قرار میگیرند‪ .‬پیچیدگی زمانی و فضایی واحدهای کلیدی دانهبندی یک‬
‫الگوریتم موازی میباشند‪.‬‬

‫مفهوم بازدهی ثابت‪ :2‬بار کاری ‪w‬ی یک الگوریتم اغلب با )‪ O(s‬رشد میکند که ‪ s‬اندازه مسأله است‪ .‬بنابراین‬
‫بار کاری را به عنوان تابعی از ‪ s‬یعنی )‪ w=w(s‬نشان میدهیم‪ Kumar .‬و ‪ )1987( Rao‬مفهوم بازدهی ثابتِ‬
‫را تعریف کردهاند بطویکه بازدهیِ ‪ E‬موقعی که یک الگوریتم موازی روی یک کامپیوتر موازی پیاده میشود ثابت‬
‫نگه داشته شود‪ .‬اجازه دهید ‪ h‬کل سربار ارتباطی در پیاده سازی الگوریتم باشد‪ .‬این سربار معموالً تابعی از هر دوی‬
‫اندازه ماشین و اندازه مسأله میباشد بنابراین آنرا با )‪ h=h(s,n‬نشان میدهیم‪ .‬بازدهی یک الگوریتم پیاده سازی‬
‫شده روی یک کامپیوتر موازی بصورت زیر تعریف میشود‪:‬‬

‫)𝑠(𝑤‬
‫)𝑛‪𝐸 = 𝑤(𝑠)+ℎ(𝑠,‬‬ ‫)‪(3-22‬‬

‫بارکاری )‪ w(s‬مرتبط با محاسبات مفید است در حالیکه سربار )‪ h(s, n‬محاسبات غیر مفید متناسب با تأخیرات‬
‫ارتباط داده و همزمانی میباشد‪ .‬به طور کلی‪ ،‬سربار متناسب با افزایش هر دو مقدار ‪ s ,n‬افزایش مییابد‪ .‬بنابراین‪،‬‬
‫بازدهی همیشه کمتر از ‪ 1‬است‪ .‬مسأله مرتبط با نرخ افزایش نسبی بین )‪ w(s‬و )‪ h(s, n‬میباشد‪.‬‬

‫با یک اندازه مسأله ثابت (یا بار کاری ثابت)‪ ،‬بازدهی با افزایش ‪ n‬کاهش مییابد‪ .‬دلیل این است که سربار )‪h(s,n‬‬
‫با افزایش ‪ n‬افزایش مییابد‪ .‬با یک اندازه ماشین ثابت‪ ،‬سربار ‪ h‬کندتر از بارکاری ‪ w‬رشد میکند‪ .‬بنابراین بازدهی‬
‫با افزایش اندازه مسأله برای یک اندازه ماشین‪-‬ثابت افزایش مییابد‪ .‬بنابراین‪ ،‬ممکن است انتظار داشته باشیم که‬
‫اگر بارکاری ‪ w‬متناسب با اندازه ماشین افزایش یابد بازدهی ثابت بماند‪.‬‬

‫برای یک الگوریتم داده شده‪ ،‬ممکن است برای ثابت نگه داشتن بازدهی نیاز داشته باشیم تا بارکاری ‪ w‬نسبت به‬
‫‪ n‬بصورت توانی یا نمایی افزایش یابد‪ .‬الگوریتمهای مختلف نیازمند نرخ رشد بارکاری مختلفی هستند تا با افزایش‬

‫‪1‬‬
‫‪Uniformity‬‬
‫‪2‬‬
‫‪Isoefficiency‬‬
‫‪ n‬بازدهی افت پیدا نکند‪ .‬توابع بازدهی ثابتِ الگوریتمهای موازیِ رایج‪ ،‬توابع چندجملهای هستند‪ .‬مثل )‪ O(nk‬برای‬
‫‪ .k≥1‬هرچه توان ‪ n‬در تابع بازدهی ثابت کوچکتر باشد‪ ،‬سیستم موازی مقیاس پذیرتر است‪ .‬در اینجا‪ ،‬سیستم شامل‬
‫ترکیب الگوریتم و معماری میباشد‪.‬‬

‫تابع بازدهی ثابت ما میتوانیم معادله ‪ 22-3‬را بصورت ))‪ E=1/(1+h(s, n)/w(s‬در نظر بگیریم‪ .‬به منظور‬
‫ثابت نگه داشتن ‪ ،E‬بارکاری )‪ w(s‬باید متناسب با سربار )‪ h(s, n‬رشد کند‪ .‬با بدست آوردن )‪ W(s‬از معادله ‪-3‬‬
‫‪ 22‬داریم‪:‬‬

‫𝐸‬
‫)𝑛 ‪𝑤(𝑠) = 1−𝐸 × ℎ(𝑠,‬‬ ‫)‪(3-23‬‬

‫ضریب )‪ C=E/(1-E‬برای بازدهی ثابت ‪ ،E‬ثابت است‪ .‬بنابراین میتوانیم تابع بازدهی ثابت را بصورت زیر تعریف‬
‫کنیم‪:‬‬

‫)‪fE(n)=C× h(s, n‬‬ ‫)‪(3-24‬‬

‫اگر بارکاری )‪ w(s‬با سرعت )‪ fE(n‬در معادله ‪23-3‬رشد کند‪ ،‬آنگاه بازدهی برای یک ترکیب معماری‪-‬الگوریتم‬
‫داده شده ثابت میماند‪ .‬برای توضیح توابع بازدهی ثابت برای تجزیه تحلیل مقیاسپذیری مثالی در زیر آوردهایم‪.‬‬

‫مثال ‪ :4-3‬مقیاس‪-‬پذیری الگوریتمهای ضرب ماتریس (‪ Gupta‬و ‪)1992 ،Kumar‬‬

‫چهار الگوریتم ضرب ماتریس در زیر مقایسه میشوند‪ .‬اندازه مسأله ‪ s‬با درجه ماتریس نشان داده میشود‪ .‬به عبارت‬
‫دیگر‪ ،‬ضرب دو ماتریس ‪ s×s‬یعنی ‪ A,B‬را در نظر میگیریم ‪ .C=A×B‬بارکاری کلی )‪ w=O(s3‬میباشد‪ .‬تعداد‬
‫پردازندههای درگیر ‪ 1≤n≤s3‬است‪ .‬بعضی الگوریتمها ممکن است کمتر از ‪ s3‬پردازنده استفاده کنند‪.‬‬

‫توابع بازدهی ثابتِ چهار الگوریتم بر اساس معادل سازی بارکاری با سربار ارتباطی در هر الگوریتم (معادله ‪)23-3‬‬
‫در زیر بدست میآید‪ .‬توضیحات کامل الگوریتمها در مقاالت مرتبط با نویسندگان جدول ‪ 2-3‬آمده است‪.‬‬

‫محدوده‬ ‫تابع بازدهی ثابت‬


‫معماری ماشین مقصد‬ ‫الگوریتم ضرب ماتریس‬
‫عملیاتی‬ ‫)‪fE(n‬‬
‫تروس 𝑛√ × 𝑛√‬ ‫‪1≤n≤s2‬‬ ‫)‪O(n3/2‬‬ ‫‪)1987( Fox-Otto-Hey‬‬
‫یک فوق مکعب با ‪ n=23k‬گره‬ ‫‪1≤n≤s3/2‬‬ ‫)‪O(n2‬‬ ‫‪)1989( Berntsen‬‬
‫یک فوق مکعب با ‪ n=23k‬گره و‬
‫‪1≤n≤s3‬‬ ‫)‪O(n(logn)3‬‬ ‫‪Kumar-Gupta‬‬
‫‪k<1/3logs‬‬
‫‪Dekel-Nassimi-Sani‬‬
‫یک فوق مکعب با ‪ n=s3=23k‬گره‬ ‫‪s2≤n≤s3‬‬ ‫)‪O(nlogn‬‬
‫(‪)1981‬‬
‫جدول ‪ 2-3‬توابع بازدهی ثابت مجانبی برای ‪ 4‬الگوریتم ضرب ماتریس‬
‫‪| 151‬‬ ‫اصول کارایی مقیاسپذیر‬

‫بارکاری‬ ‫دارد‪.‬‬ ‫‪h(s,n)=O(nlogn+s2‬‬ ‫الگوریتم ‪ Fox-Otto-Hey‬سربار کلی𝑛√)‬


‫و )𝑛√(‪ O(s)=O‬را‬ ‫)‪O(s3)=O(nlogn‬‬
‫)𝑛√‪ w=O(s3)=O(nlogn +s2‬میباشد‪ .‬بنابراین باید تساوی‬
‫داشته باشیم‪ .‬با ترکیب دو تساوی تابع بازدهی ثابت را بدست میآوریم )‪ O(s3)=O(n3/2‬که ‪.1≤n≤s2‬‬

‫از آنجا که این الگوریتم برای معماری تروس نوشته شده است‪ ،‬میتوان به سادگی تروس را روی معماری فوق‬
‫مکعب جایگذاری کرد‪ .‬بنابراین میتوانیم مقایسه چهار الگوریتم را در معماری فوق مکعب انجام دهیم‪.‬‬

‫الگوریتم ‪ Berntsen‬به استفاده از ‪ n≤s3/2‬پردازنده محدود شده است‪ .‬سربار کلی )‪O(n4/3+nlogn+s2n1/3‬‬
‫میباشد‪ .‬برای تطابق این با )‪ O(s3‬باید تساوی )‪ O(s3)=O(n4/3‬و )‪ O(s3)=O(n‬را داشته باشیم‪ .‬بنابراین تابع‬
‫بازدهی ثابت )‪ O(n2‬بدست میآید‪.‬‬

‫الگوریتم ‪ Kumar-Gupta‬سربار )‪ O(nlogn+s2n1/3logn‬دارد‪ .‬بنابراین باید داشته باشیم‪:‬‬


‫)‪ O(s3)=O(nlogn‬و )‪ .O(s3)=O(s2n1/3logn‬بنابراین تابع بازدهی ثابت )‪ O(n(logn)3‬خواهد شد‪.‬‬

‫الگوریتم ‪ Dekel-Nassimi-Sani‬سربار )‪ O(nlogn+s3‬در کنار زمان محاسباتی مفید )‪ O(s3/n‬برای‬


‫‪ s2≤n≤s3‬دارد‪ .‬بنابراین تابع بازدهی ثابت )‪ O(s3)=O(nlogn‬میباشد‪.‬‬

‫توابع بازدهی ثابت فوق‪ ،‬مقیاسپذیری مجانبی چهار الگوریتم را نشان میدهند‪ .‬در عمل‪ ،‬هیچکدام از الگوریتمها‬
‫برای همه اندازه مسألهها و اندازه ماشینها بر دیگری ارجحیت زیادی ندارند‪ .‬به عنوان مثال وقتیکه این الگوریتمها‬
‫روی یک چندکامپیوتر با تأخیر ارتباطی زیاد (مثل ‪ )Intel iPSEC‬پیاده میشوند الگوریتم ‪ Berntsen‬از بقیه‬
‫بهتر است‪.‬‬

‫‪ -3-3‬قوانین افزایش سرعت کارایی‬

‫سه مدل افزایش سرعت کارایی در زیر ارائه شده است‪ .‬قانون امدال (‪ )1967‬براساس بارکاری ثابت یا اندازه ماشین‬
‫ثابت‪ .‬قانون گوستافسون (‪ )1987‬برای مقیاس پذیر کردن مسائل اعمال شد که اندازه مسئله با افزایش اندازه ماشین‬
‫افزایش مییابد‪ .‬مدل افزایش سرعت توسط سان و نای (‪ )1993‬برای مسائل مقیاس پذیر شده که با ظرفیت حافظه‬
‫محدود شده است میباشد‪.‬‬

‫‪ -1-3-3‬قانون امدال برای بارکاری ثابت‬

‫در بسیاری از کاربردهای عملی که متقاضی پاسخ‪-‬قطعی هستند‪ ،‬بارکاری محاسباتی اغلب با اندازه مسأله ثابت‪،‬‬
‫ثابت است‪ .‬وقتیکه تعداد پردازندهها در یک کامپیوتر موازی افزایش مییابد‪ ،‬بار ثابت روی پردازندههای بیشتر برای‬
‫اجرای موازی توزیع میشود‪ .‬بنابراین‪ ،‬هدف اصلی تولید نتایج در حد امکان سریع میباشد‪ .‬به عبارت دیگر‪ ،‬حداقل‬
‫زمان گردش هدف اولیه است‪ .‬افزایش سرعت بدست آمده برای کاربردهای زمان‪-‬بحرانی افزایش سرعت با‬
‫بارکاری‪-‬ثابت نامیده میشود‪.‬‬

‫افزایش سرعت بارکاری‪-‬ثابت فرمول افزایش سرعت ایدهآل داده شده در معادله ‪ 7-3‬بر اساس بارکاری‬
‫ثابت در مقایسه با اندازه ماشین میباشد‪ .‬فرمولهای رایج برای افزایش سرعت‪ ،‬شامل قانون امدال‪ ،‬همه براساس‬
‫اندازه مسأله ثابت و بنابراین بارکاری ثابت هستند‪ .‬در این حالت کران باالی فاکتور افزایش سرعت به گلوگاه ترتیبی‬
‫محدود شده است‪.‬‬

‫در زیر هر دو حالت ‪ DOP<n‬و ‪ DOP≥n‬را بررسی میکنیم‪ .‬از تابع کران باالی ⌉𝑥⌈برای نمایش کوچکترین‬
‫عدد صحیح بزرگتر یا مساوی عدد حقیقی مثبت ‪ x‬استفاده میکنیم‪ .‬وقتیکه ‪ x‬کسری باشد ⌉𝑥⌈ برابر ‪ 1‬است‪.‬‬
‫حالتی را در نظر بگیرید که ‪ .DOP=i>n‬فرض کنید همه ‪ n‬پردازنده برای اجرای ‪ Wi‬بطور منحصر بفرد استفاده‬
‫میشوند‪ .‬زمان اجرای ‪ Wi‬برابر است با‪:‬‬
‫𝑖 𝑖𝑊‬
‫= )𝑛( 𝑖𝑡‬ ‫⌉ ⌈‬
‫𝑛 ∆𝑖‬
‫)‪(3-25‬‬
‫بنابراین زمان پاسخ برابر است با‪:‬‬
‫𝑊‬ ‫𝑖‬
‫𝑚∑ = )𝑛(𝑇‬ ‫𝑖‬
‫⌉𝑛⌈ ∆𝑖 ‪𝑖=1‬‬ ‫)‪(3-26‬‬
‫نکته اینکه اگر ‪ i<n‬آنگاه ‪ .ti(n)=ti(∞)=Wi/iΔ‬حال فاکتور افزایش سرعت بارکاری ثابت را با نسبت )‪T(1‬‬
‫به )‪ T(n‬تعریف میکنیم‪:‬‬
‫)‪𝑇(1‬‬ ‫𝑚∑‬
‫𝑖𝑊 ‪𝑖=1‬‬
‫= 𝑛𝑆‬
‫)𝑛(𝑇‬
‫=‬ ‫𝑖 𝑖𝑊‬ ‫)‪(3-27‬‬
‫𝑚∑‬
‫‪𝑖=1‬‬ ‫⌉ ⌈‬
‫𝑖‬ ‫𝑛‬
‫نکته اینکه با مقایسه معادالت ‪4-3‬و ‪7-3‬و ‪ 27-3‬داریم‪.Sn≤S∞≤A :‬‬

‫تعدادی از فاکتورهایی را که ما نادیده گرفتهایم ممکن است افزایش سرعت کارایی را کاهش دهند‪ .‬این فاکتورها‬
‫شامل تأخیرات ارتباطی تولید شده توسط تأخیرات دسترسی حافظه‪ ،‬ارتباطات بین پردازندهای روی گذرگاه یا شبکه‪،‬‬
‫یا سربار سیستم عامل و تأخیرات تولید شده توسط وقفهها میباشند‪ .‬فرض کنید )‪ Q(n‬مجموع همه سربارهای‬
‫سیستم روی یک سیستم ‪-n‬پردازنده باشد‪ .‬میتوانیم معادله‪ 27-3‬را بصورت زیر بازنویسی کنیم‪:‬‬

‫)‪𝑇(1‬‬ ‫𝑚∑‬
‫𝑖𝑊 ‪𝑖=1‬‬
‫= )𝑛(𝑄‪𝑆𝑛 = 𝑇(𝑛)+‬‬ ‫𝑖 𝑖𝑊‬ ‫)‪(3-28‬‬
‫𝑚∑‬
‫‪𝑖=1‬‬ ‫)𝑛(𝑄‪⌈ ⌉+‬‬
‫𝑖‬ ‫𝑛‬

‫تأخیر سربار )‪ Q(n‬وابسته به کاربرد و وابسته به ماشین است‪ .‬بدست آوردن یک شکل بسته برای )‪ Q(n‬خیلی‬
‫مشکل است‪ .‬به منظور سادگی فرض میکنیم ‪ Q(n)=0‬باشد مگر اینکه مقدار آنرا مشخص کرده باشیم‪.‬‬

‫بازنویسی قانون امدال در ‪ Gene Amdahl ،1967‬افزایش سرعت بار‪-‬ثابت را برای حالتی خاص که‬
‫کامپیوتر یا در حالت ترتیبی (‪ )DOP=1‬یا در حالت کامالً موازی (با ‪ )DOP=n‬کار میکند‪ ،‬بدست آورد‪ .‬که‬
‫‪ . Wi=0 if i #1 or i#n‬معادله ‪ 27-3‬بصورت زیر ساده میشود‪:‬‬
‫‪| 153‬‬ ‫اصول کارایی مقیاسپذیر‬
‫‪1‬‬ ‫𝑛𝑊‪𝑊 +‬‬
‫𝑊‪𝑆𝑛 = 𝑊 +‬‬ ‫)‪(3-29‬‬
‫‪1‬‬ ‫𝑛‪𝑛 /‬‬

‫قانون امدال میگوید که بخش ترتیبی برنامه ‪ Wi‬نسبت به اندازه ماشین ‪ n‬تغییر نمیکند‪ .‬به هر حال‪ ،‬بخش موازی‬
‫بطور عادالنه توسط ‪ n‬پردازنده اجرا میشود ‪ ،‬که منتج به زمان کمتر میشود‪.‬‬
‫زمان اجرا‬
‫بارکاری‬

‫‪T1‬‬
‫‪W1‬‬ ‫‪W1‬‬ ‫‪W1‬‬ ‫‪W1‬‬ ‫‪W1‬‬ ‫‪W1‬‬
‫‪T1‬‬
‫‪Tn‬‬ ‫‪Tn‬‬ ‫‪T1‬‬
‫‪Wn‬‬ ‫‪Wn‬‬ ‫‪Wn‬‬ ‫‪Wn‬‬ ‫‪Wn‬‬ ‫‪Wn‬‬
‫‪Tn‬‬ ‫‪T1‬‬
‫‪Tn‬‬ ‫‪T1‬‬
‫‪Tn‬‬ ‫‪T1‬‬
‫‪Tn‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪n‬‬ ‫‪n‬‬


‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫تعداد پردازندهها‬ ‫پردازندهها‬ ‫‪4‬تعداد‬ ‫‪5‬‬ ‫‪6‬‬

‫(الف) بارکاری ثابت‬ ‫(ب) کاهش زمان اجرا‬


‫افزایش سرعت (‪)Sn‬‬

‫‪1024x‬‬
‫‪1024‬‬
‫= ‪𝑆1024‬‬
‫∝ ‪1 + 1023‬‬

‫‪91x‬‬
‫‪48x‬‬
‫‪31x‬‬
‫‪24x‬‬
‫‪1x‬‬
‫‪α‬‬
‫‪0%‬‬ ‫‪1%‬‬ ‫‪2%‬‬ ‫‪3%‬‬ ‫‪4%‬‬ ‫‪100%‬‬
‫(ج) افزایش سرعت با بار ثابت‬ ‫درصد ترتیبی برنامه‬
‫شکل ‪ :8-3‬مدل افزایش سرعت بار‪-‬ثابت و قانون امدال‬

‫حالت نرمالی را در نظر بگیرید که ‪ W1+Wn=α+(1-α)=1‬با ‪ W1=α‬و ‪ .Wn=1-α‬معادله ‪ 29-3‬به معادله‬


‫‪ 3-16‬کاهش مییابد که ‪ α‬درصدی از برنامه که باید بطور ترتیبی اجرا شود و ‪ 1-α‬مرتبط با بخشی از کد که باید‬
‫بصورت موازی اجرا شود میباشد‪.‬‬

‫قانون امدال در شکل ‪ 8-3‬نشان داده شده است‪ .‬وقتیکه تعداد پردازندهها افزایش یابد‪ ،‬بار روی هر پردازنده کاهش‬
‫مییابد‪ .‬به هر حال‪ ،‬مقدار کل بار (بارکاری) ‪ W1+Wn‬ثابت نگه داشته میشود همانطور که در شکل ‪(8-3‬الف)‬
‫نشان داده شده است‪ .‬در شکل ‪(8-3‬ب)‪ ،‬کل زمان اجرا کاهش مییابد زیرا ‪ .Tn=Wn/n‬در نتیجه‪ ،‬بخش ترتیبی‬
‫بر کارایی حکمفرما میشود زیرا وقتی ‪ n‬خیلی بزرگ شود ‪ Tn→0‬ولی ‪ T1‬بدون تغییر میماند‪.‬‬
‫گلوگاه ترتیبی شکل ‪(8-3‬ج) قانون امدال را با استفاده از معادله ‪16-3‬روی محدوده ‪ 0≤α≤1‬نشان میدهد‪.‬‬
‫حداکثر افزایش سرعت ‪ Sn=n‬اگر ‪ .α=0‬حداقل افزایش سرعت ‪ Sn=1‬اگر ‪ .α=1‬وقتی ∞→‪ ،n‬حد‬
‫مقدار‪ .Sn→1/α‬این به این معنی است که کران باالی افزایش سرعت ‪ 1/α‬میباشد وقتیکه اندازه ماشین خیلی‬
‫بزرگ شود‪.‬‬

‫منحنی افزایش سرعت در شکل ‪(8-3‬ج) وقتی ‪ α‬افزایش مییابد بسرعت افت پیدا میکند‪ .‬این به این معنی است‬
‫که با درصد کمی از کد ترتیبی‪ ،‬کل کارایی نمیتواند از ‪ 1/α‬بیشتر شود‪ .‬این ‪ α‬گلوگاه ترتیبی در یک برنامه نامیده‬
‫میشود‪.‬‬

‫مسأله گلوگاه ترتیبی نمیتواند فقط با افزایش تعداد پردازندهها در یک سیستم حل شود‪ .‬مسأله اصلی روی وجود‬
‫کسر ترتیبی (‪ )s‬از کد قرار می گیرد‪ .‬این خصوصیت یک نگاه خیلی بدبینانه روی پردازش موازی در دو دهه اخیر‬
‫ایجاد کرده است‪.‬‬

‫در حقیقت‪ ،‬دو مشکل عمده در صنعت کامپیوتر موازی مشاهده میشود‪ .‬اوالً‪ ،‬سازندگان از ساخت کامپیوترهای‬
‫موازی در مقیاس بزرگ سست میشوند‪ .‬دوماً‪ ،‬توجه تحقیقاتی بیشتری به سمت توسعه کامپایلرهای موازی ساز که‬
‫مقدار ‪ α‬را کاهش میدهند و کارایی را ترقی میدهد منتقل میشود‪.‬‬

‫‪ -2-3-3‬قانون گوستافسون برای مسائل مقیاس پذیر‬

‫یکی از معایب قانون امدال این است که مسأله (بارکاری) نمیتواند برای تطابق با توان محاسباتی قابل دسترس‬
‫وقتیکه اندازه ماشین افزایش مییابد مقیاسپذیر شود‪ .‬به عبارت دیگر‪ ،‬بار ثابت مانع مقیاس پذیری در کارایی‬
‫میشود‪ .‬هرچندکه گلوگاه کارایی یک مسأله حاد است‪ ،‬مسأله میتواند با حذف محدودیت بار ثابت (یا اندازه مسأله‬
‫ثابت) آرام شود‪ .‬گوستافسون (‪ )1988‬مفهوم زمان‪-‬ثابت را پیشنهاد کرد که منجر به مدل افزایش سرعت مقیاس‬
‫پذیر میشود‪.‬‬

‫مقیاس پذیری برای صحت و دقت بیشتر کاربردهای زمان‪-‬بحرانی بیشترین انگیزه برای توسعه مدل‬
‫افزایش سرعت بار‪-‬ثابت قانون امدال را ایجاد میکنند‪ .‬کاربردهای بسیار زیاد دیگری هستند که صحت بیشتری از‬
‫حداقل زمان گردش کار نیاز دارند‪ .‬هنگامی که اندازه ماشین برای توان محاسباتی بیشتر بهبود مییابد‪ ،‬میخواهیم‬
‫اندازه مسأله را افزایش دهیم تا بار کاری بیشتری ایجاد کنیم و راه حل صحیحتر و دقیق تری ایجاد کنیم بدون‬
‫اینکه زمان اجرا تغییر کند‪.‬‬

‫افزایش سرعت زمان‪-‬ثابت در کاربردهای صحت و دقت‪-‬بحرانی‪ ،‬انتظار داریم که بزرگترین اندازه مسأله‬
‫ممکن را روی یک ماشین بزرگتر با زمان اجرای برابر با مسأله کوچکتر روی ماشین کوچکتر حل کنیم‪ .‬هرچه اندازه‬
‫ماشین افزایش مییابد‪ ،‬باید بارکاری بیشتری تهیه کنیم و مشخصات موازات جدیدی داشته باشیم‪ .‬فرض کنید ’‪m‬‬
‫‪| 155‬‬ ‫اصول کارایی مقیاسپذیر‬
‫حداکثر درجه موازات ‪ DOP‬در مقایسه با مسأله مقیاس پذیر شده باشد و ’‪ Wi‬بارکاری مقیاس پذیر شده با ‪DOP=i‬‬
‫باشد‪.‬‬
‫’‬ ‫’‬
‫نکته اینکه در حالت کلی ‪ .Wi >Wi for 2≤i≤m’ and W1 =W1‬افزایش سرعت زمان‪-‬ثابت تحت فرض‬
‫)‪ T(1)=T’(n‬تعریف میشود که )‪ T’(n‬زمان اجرای مسأله مقیاس پذیر شده و )‪ T(1‬مرتبط با مسأله اصلی بدون‬
‫مقیاس پذیر شدگی میباشد‪ .‬بنابراین داریم‪:‬‬
‫𝑖 ‪𝑊𝑖′‬‬
‫𝑚∑‬ ‫‪𝑚′‬‬
‫‪𝑖=1 𝑊𝑖 = ∑𝑖=1‬‬ ‫)𝑛(𝑄 ‪⌈𝑛⌉ +‬‬ ‫)‪(3-30‬‬
‫𝑖‬

‫یک فرمول کلی برای افزایش سرعت زمان‪-‬ثابت با )‪ Sn’=T(1)/T’(n‬تعریف میشود که فرم اصالح شده معادله‬
‫‪ 3-28‬است‪:‬‬

‫‪∑𝑚′‬‬
‫𝑖𝑊 ‪𝑖=1‬‬
‫‪′‬‬ ‫‪∑𝑚′‬‬
‫𝑖𝑊 ‪𝑖=1‬‬
‫‪′‬‬
‫= ‪𝑆𝑛′‬‬ ‫𝑖 𝑖‪𝑊′‬‬
‫=‬ ‫𝑚∑‬
‫)‪(3-31‬‬
‫‪∑𝑚′‬‬ ‫𝑖𝑊 ‪𝑖=1‬‬
‫)𝑛(𝑄‪𝑖=1 𝑖 ⌈𝑛⌉+‬‬

‫قانون گوستافسون‪ :‬افزایش سرعت زمان‪-‬ثابت ابتدا توسط گوستافسون برای مشخصه موازات خاصی که‬
‫‪ Wi=0 if i #1 and i#n‬تعریف شد‪ .‬مشابه قانون امدال‪ ،‬میتوانیم معادله ‪ 31-3‬را با فرض ‪ Q(n)=0‬دوباره‬
‫نویسی کنیم‪.‬‬

‫‪∑𝑚′‬‬
‫𝑖𝑊 ‪𝑖=1‬‬
‫‪′‬‬
‫‪𝑊1′ +𝑊𝑛′‬‬ ‫𝑛𝑊𝑛‪𝑊1 +‬‬
‫= ‪𝑆𝑛′‬‬ ‫𝑚∑‬
‫=‬ ‫=‬ ‫)‪(3-32‬‬
‫𝑖𝑤 ‪𝑖=1‬‬ ‫𝑛𝑊‪𝑊1 +‬‬ ‫𝑛𝑊‪𝑊1 +‬‬

‫که ‪ Wn’=nWn‬و ‪ W1+Wn=W1’+Wn’/n‬مرتبط با شرط زمان‪-‬ثابت‪ .‬از معادله ‪ 32-3‬بارکاری موازی ’‪Wn‬‬
‫به ‪n‬برابر ‪ Wn‬بطور خطی مقیاس پذیر شده است‪.‬‬

‫رابطه بار کاری مقیاس پذیر شده به افزایش سرعت مقیاس پذیر شده گوستافسون در شکل‪ 9-3‬نشان داده شده‬
‫است‪ .‬در حقیقت درحالتی که ‪ W1=α‬و ‪ Wn=1-α‬تحت فرض ‪ W1+Wn=1‬میتوان قانون گوستافسون را‬
‫بصورت زیر دوباره نویسی کرد‪:‬‬

‫)∝‪∝+𝑛(1−‬‬
‫= ‪𝑆𝑛′‬‬ ‫)‪= 𝑛−∝ (𝑛 − 1‬‬ ‫)‪(3-33‬‬
‫)∝‪∝+(1−‬‬
‫شکل ‪(9-3‬الف) حالت بارکاری مقیاس پذیر شده را نشان میدهد‪ .‬شکل ‪(9-3‬ب) شکل اجرای ثابت را نشان‬
‫میدهد‪ .‬شکل ‪(9-3‬ج) ’‪ Sn‬را به عنوان تابعی از قسمت ترتیبی ‪α‬ی یک برنامه در حال اجرای روی یک سیستم با‬
‫‪ n=1024‬پردازنده نشان میدهد‪ .‬نکته اینکه شیب منحنی ‪ Sn‬در شکل ‪(9-3‬ج) خیلی صافتر از شکل‪(8-3‬ج)‬
‫است‪ .‬این به این معنی است که قانون گوستافسون کارایی مقیاس پذیری را وقتیکه اندازه ماشین افزایش مییابد‬
‫پشتیبانی میکند‪ .‬ایده این است که با افزایش اندازه مسأله همه پردازندهها را مشغول نگه داریم‪ .‬وقتیکه مسأله‬
‫میتواند برای تطابق توان محاسباتی مقیاس پذیر شود‪ ،‬کسر ترتیبی خیلی گلوگاه نیست‪.‬‬
‫بار کاری‬ ‫زمان اجرا‬

‫‪W1‬‬
‫‪W1‬‬
‫‪T1 T1 T1 T1 T1 T1‬‬
‫‪W1‬‬
‫‪Wn‬‬
‫‪W1‬‬
‫‪Wn‬‬

‫‪W1‬‬
‫‪Wn‬‬ ‫‪Tn Tn Tn Tn Tn Tn‬‬
‫‪Wn‬‬
‫‪Wn‬‬
‫‪W1‬‬
‫‪Wn‬‬
‫‪n‬‬ ‫‪n‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3 4 5 6‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3 4 5 6‬‬
‫تعداد پردازندهها‬ ‫تعداد پردازندهها‬
‫(الف) بار کاری مقیاس پذیر شده‬ ‫(ب) زمان جرای ثابت‬

‫افزایش سرعت (‪)S’n‬‬

‫‪1024x‬‬
‫‪1014x 1004x 993x 983x‬‬
‫∝ ‪𝑆′1024 = 1024 − 1023‬‬

‫‪α‬‬
‫‪0%‬‬ ‫‪1%‬‬ ‫‪2%‬‬ ‫‪3%‬‬ ‫‪4%‬‬ ‫‪100%‬‬
‫درصد ترتیبی برنامه‬
‫(ج) افزایش سرعت با زمان اجرای ثابت‬
‫شکل ‪ :9-3‬مدل افزایش سرعت زمان‪-‬ثابت و قانون گوستافسون‬
‫‪ -3-3-3‬مدل افزایش سرعت محدود شده‪-‬به حافظه‬

‫‪ Xian—He Sun‬و ‪ )1993( Lionel Ni‬یک مدل افزایش سرعت محدود شده به حافظه را توسعه دادند که‬
‫قانون امدال و گوستافسون را برای حداکثر کردن استفاده از ظرفیتهای حافظه و پردازنده عمومیت میدهد‪ .‬ایده‬
‫حل بزرگترین مسأله ممکن که به فضای حافظه محدود شده است میباشد‪ .‬این متقاضی بار کاری مقیاس پذیر‬
‫شده‪ ،‬ایجاد افزایش سرعت بیشتر‪ ،‬صحت و دقت بیشتر‪ ،‬و بهرهبرداری بهتر از منابع میباشد‪.‬‬

‫مسائل محدود شده به‪-‬حافظه محاسبات مهندسی یا علمی در مقیاس‪-‬بزرگ اغلب نیازمند فضای حافظه‬
‫بزرگتر می باشند‪ .‬در حقیقت‪ ،‬بسیاری از کاربردهای کامپیوترهای موازی به حافظه محدود شدهاند نسبت به محدود‬
‫به پردازنده یا ورودی‪/‬خروجی‪ .‬این باالخص برای یک سیستم چندکامپیوتر که از حافظه توزیع شده استفاده میکند‬
‫‪| 157‬‬ ‫اصول کارایی مقیاسپذیر‬
‫درست است‪ .‬حافظه محلی الحاق شده به هر گره نسبتاً کوچک است‪ .‬بنابراین هر گره میتواند فقط یک زیرمسأله‬
‫کوچک را حل کند‪.‬‬

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

‫بجای نگهداشتن زمان اجرا بطور ثابت‪ ،‬ممکن است بخواهیم همه حافظه اضافه شده را با مقیاس پذیر کردن بیشتر‬
‫اندازه برنامه استفاده کنیم‪ .‬به عبارت دیگر‪ ،‬اگر فضای حافظه کافی وجود داشته باشد و مسأله مقیاسپذیر شده‬
‫محدودیت زمانی تحمیل شده توسط قانون گوستافسون را برآورده کند‪ ،‬هنوز هم میتوان اندازه مسأله را افزایش‬
‫داد‪ ،‬که باعث یک راه حل دقیقتر و بهتر میشود‪.‬‬

‫یک مدل محدود‪-‬شده به حافظه تحت این فلسفه توسعه داده میشود‪ .‬ایده حل بزرگترین مسأله ممکن است‪ ،‬که‬
‫فقط به ظرفیت حافظه قابل دسترس محدود شده است‪ .‬این مدل ممکن است منتج به افزایش کمی در زمان اجرا‬
‫برای رسیدن به کارایی مقیاس پذیر شود‪.‬‬

‫افزایش سرعت حافظه‪-‬ثابت فرض کنید ‪ M‬میزان حافظه مورد نیاز یک مسأله داده شده باشد و ‪ W‬بارکاری‬
‫محاسباتی باشد‪ .‬این دو فاکتور به یکدیگر به روشهای گوناگون بسته به فضای آدرس و محدودیتهای معماری‪،‬‬
‫وابستهاند‪ .‬اجازه دهید بنویسیم‪ W=g(M) :‬یا )𝑊( ‪ 𝑀 = 𝑔−1‬که ‪ g-1‬معکوس ‪ g‬است‪.‬‬

‫در یک چندکامپیوتر‪ ،‬ظرفیت حافظه کلی بطور خطی با تعداد گرههای قابل دسترس افزایش مییابد‪𝑊 = .‬‬
‫∗‬
‫𝑚∑ = ∗ 𝑊‬ ‫∗‬ ‫𝑚‬
‫𝑖𝑊 ‪ ∑𝑖=1‬را به عنوان بارکاری برای اجرای موازی برنامه روی یک گره تنها مینویسیم‪ ،‬و 𝑖𝑊 ‪𝑖=1‬‬
‫به عنوان بارکاری مقیاس پذیر شده برای ‪ n‬گره‪ ،‬که *‪ m‬حداکثر ‪DOP‬ی مسأله مقیاس پذیرشده میباشد‪،‬‬
‫𝑚∑( ‪ 𝑔−1‬محدود میشود‪.‬‬ ‫مینویسیم‪ .‬نیاز حافظه برای یک گره فعال توسط ) 𝑖𝑊 ‪𝑖=1‬‬

‫افزایش سرعت حافظه‪-‬ثابت مشابه معادله ‪ 31-3‬بصورت زیر تعریف میشود‪:‬‬


‫∗‬
‫𝑚∑‬
‫𝑖𝑊 ‪𝑖=1‬‬
‫∗‬
‫= ∗𝑛𝑆‬ ‫∗‬
‫𝑖 𝑖𝑊 ∗‬
‫)‪(3-34‬‬
‫𝑚∑‬
‫)𝑛(𝑄‪𝑖=1 𝑖 ⌈𝑛⌉+‬‬

‫بارکاری برای اجرای ترتیبی روی یک تک پردازنده وابسته به اندازه مسأله یا اندازه سیستم است‪ .‬بنابراین‪ ،‬در هر‬
‫سه مدل افزایش سرعت‪ ،‬میتوانیم بنویسیم *‪ .W1=W1’=W1‬اجازه دهید دو مد عملیاتی ترتیبی در مقایسه با‬
‫اجرای کامالً م وازی را مد نظر قرار دهیم‪ .‬حافظه توسعه یافته مرتبط با بارکاری مقیاس پذیر شده است با‬
‫)‪ Wn*=g*(nM‬که ‪ nM‬ظرفیت حافظه افزایش یافته برای یک چندکامپیوتر ‪-n‬گرهه میباشد‪.‬‬
‫بنابراین‪ ،‬فرض میکنیم ‪ g*(nM)=G(n)g(M)=G(n)Wn‬که )‪ Wn=g(M‬و *‪ g‬یک تابع همگن است‪.‬‬
‫فاکتور )‪ G(n‬افزایش در بارکاری را وقتی حافظه ‪ n‬برابر افزایش مییابد انعکاس میدهد‪ .‬اکنون میتوان معادله‬
‫‪ 3-34‬را تحت فرض ‪ Wi=0 if i# 1 or n and Q(n)=0‬دوباره نویسی کرد‪:‬‬

‫∗ 𝑊‪𝑊 ∗ +‬‬ ‫𝑊)𝑛(𝐺‪𝑊 +‬‬


‫𝑊)𝑛(𝐺‪𝑆𝑛∗ = 𝑊 ∗1+𝑊 ∗𝑛/𝑛 = 𝑊 +‬‬
‫‪1‬‬ ‫𝑛‬
‫)‪(3-35‬‬
‫‪1‬‬ ‫𝑛‬ ‫𝑛‪/‬‬
‫‪1‬‬ ‫𝑛‬

‫مدل افزایش سرعت فوق تحت دو فرض معتبر است‪ )1( :‬مجموعه همه حافظه یک فضای آدرس سراسری را شکل‬
‫میدهد (به عبارت دیگر‪ ،‬فرض میکنیم فضای حافظه توزیع شده مشترک باشد)‪ )2( .‬همه نواحی حافظه قابل‬
‫دسترس برای مسأله مقیاس پذیر شده استفاده میشود‪ .‬حالتهای خاصی هستند که معادله ( ‪ )35-3‬میتواند اعمال‬
‫شود‪:‬‬

‫حالت ‪ . G(n)=1 :1‬این مرتبط با حالتی است که اندازه مسأله ثابت شده است‪ .‬بنابراین‪ ،‬افزایش سرعت حافظه‪-‬‬
‫ثابت معادل قانون امدال میشود معادله ‪ 29-3‬و‪ 35-3‬معادلند وقتی که بار کاری ثابت باشد‪.‬‬

‫حالت ‪ .G(n)=n :2‬این به این معنی است که بار کاری ‪ n‬برابر افزایش مییابد اگر حافظه ‪ n‬برابر افزایش یابد‪.‬‬
‫بنابراین معادله ‪ 35-3‬مشابه قانون گوستافسون (معادله ‪ )32-3‬با زمان اجرای ثابت میباشد‪.‬‬

‫حالت ‪ .G(n)>n:3‬این مرتبط با حالتی است که بارکاری محاسباتی از نیاز حافظه سریعتر افزایش مییابد‪ .‬بنابراین‪،‬‬
‫مدل حافظه‪-‬ثابت (معادله ‪ )35-3‬افزایش سرعت بیشتری از افزایش سرعت زمان‪-‬ثابت خواهد داد‪.‬‬
‫بار کاری‬ ‫زمان اجرا‬

‫‪W1‬‬
‫‪T1‬‬
‫‪W1‬‬ ‫‪T1‬‬
‫‪T1‬‬
‫‪W1‬‬ ‫‪T1‬‬
‫‪T1‬‬
‫‪Wn‬‬ ‫‪T1‬‬
‫‪W1‬‬
‫‪Wn‬‬ ‫‪Tn‬‬
‫‪Wn‬‬ ‫‪Tn‬‬
‫‪W1‬‬ ‫‪Tn‬‬
‫‪Wn‬‬ ‫‪Tn‬‬
‫‪Tn‬‬
‫‪W1‬‬
‫‪Wn‬‬ ‫‪Tn‬‬
‫‪W1‬‬ ‫‪n‬‬ ‫‪n‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3 4 5 6‬‬ ‫‪1 2 3 4 5 6‬‬
‫تعداد پردازندهها‬ ‫تعداد پردازندهها‬
‫(الف) بار کاری مقیاس پذیر شده‬ ‫(ب) زمان اجرا کمی افزایش یافته‬
‫شکل‪ :10-3‬مدل افزایش سرعت مقیاس پذیر شده با استفاده از حافظه ثابت‬
‫بنابراین میتوان گفت‪ :‬قانون امدال و گوستافسون حالتهای خاصی از مدل حافظه‪-‬ثابت هستند‪ .‬وقتی محاسبه‬
‫سریعتر از نیاز حافظه رشد میکند‪ ،‬که اغلب در اکثر شبیهسازیهای علمی و کاربردهای مهندس درست است‪ ،‬مدل‬
‫‪| 159‬‬ ‫اصول کارایی مقیاسپذیر‬
‫حافظه‪-‬ثابت (شکل ‪ )10-3‬ممکن است منجر به افزایش سرعت بیشتر و بهرهوری بهتری از منابع شود‬
‫(‪.)Sn*≥Sn’≥Sn‬‬

‫مدل حافظه‪-‬ثابت همچنین فرض میکند بارکاری مقیاس پذیر شده است و اجازه میدهد زمان اجرا کمی افزایش‬
‫یابد‪ .‬رشد در اندازه ماشین با افزایش ارتباطات متقاضی این است که تعداد پردازندهها خیلی زیاد شود‪ .‬مدل زمان‪-‬‬
‫ثابت خیلی شبیه مدل حافظه‪-‬ثابت حرکت میکند اگر کل حافظه قابل دسترس بهرهوری شود‪.‬‬

‫مثال ‪ :6-3‬ضرب ماتریس مقیاس پذیر شده با استفاده از مدلهای محاسباتی سراسری در‬
‫مقایسه با محلی‬

‫در محاسبات علمی‪ ،‬ماتریسها غالباً بعضی دادههای پیوسته‪ ،‬گسسته شده را نشان میدهند‪ .‬بزرگ کردن اندازه‬
‫ماتریس عموماً منجر به راهحلی دقیقتر برای پیوستگی میشود‪ .‬برای ماتریسهای با بُعد ‪ ،n‬تعداد محاسبات مورد‬
‫نیاز برای ضرب ماتریس ‪ 2n3‬و نیازهای حافظه ‪ M=3n2‬میباشد‪.‬‬

‫هنگامی که حافظه ‪ n‬برابر در یک سیستم چندکامپیوتر ‪-n‬پردازنده افزایش مییابد‪ .nM=n×3n2=3n3 ،‬اگر‬
‫ماتریس بزرگ شده بُعد ‪ N‬داشته باشد آنگاه ‪ .3n3=3N2‬بنابراین ‪ .N=n1.5‬بنابراین ‪ G(n)=n1.5‬و بارکاری‬
‫مقیاس پذیر شده ‪ .Wn*=G(n)Wn=n1.5Wn‬با استفاده از معادله ‪ 35-3‬داریم‪:‬‬

‫𝑛𝑊 ‪𝑊1 +𝑛1.5‬‬ ‫𝑛𝑊 ‪𝑊1 +𝑛1.5‬‬


‫= ∗𝑆‬ ‫𝑛𝑊 ‪𝑛1.5‬‬
‫=‬ ‫)‪(3-36‬‬
‫‪𝑊1 +‬‬ ‫𝑛𝑊 ‪𝑊1 +𝑛0.5‬‬
‫𝑛‬

‫تحت مدل محاسباتی عمومی نمایش داده شده در شکل ‪(11-3‬الف)‪ ،‬که همه حافظههای توزیع شده به عنوان‬
‫حافظه مشترک توسط همه گرههای پردازنده استفاده میشوند‪.‬‬

‫همانطور که در شکل ‪(11-3‬ب) نشان داده شده است‪ ،‬حافظههای گره بطور محلی بدون اشتراک استفاده میشوند‪.‬‬
‫در چنین مدل محاسباتی محلی‪ ،G(n)=n ،‬و افزایش سرعت زیر را بدست میآوریم‪:‬‬

‫𝑛𝑊𝑛‪𝑊1 +‬‬
‫= ∗𝑛𝑆‬ ‫)‪(3-37‬‬
‫𝑛𝑊‪𝑊1 +‬‬

‫‪N1‬‬ ‫‪N2‬‬ ‫‪N3‬‬ ‫‪Nn‬‬


‫‪AB1‬‬ ‫‪AB2‬‬ ‫‪AB3‬‬ ‫‪ABn‬‬
‫(الف) محاسبات سراسری با حافظههای مشترک توزیع شده‬
‫‪N1‬‬ ‫‪N2‬‬ ‫‪N3‬‬ ‫‪Nn‬‬
‫‪AB1‬‬ ‫‪AB2‬‬ ‫‪AB3‬‬ ‫‪ABn‬‬
‫(ب) محاسبات محلی با حافظههای خصوصی توزیع شده‬
‫شکل‪ :11-3‬دو مدل ضرب ماتریس توزیع شده‬
‫مثال فوق افزایش سرعت مقیاس پذیر شده گوستافسون را برای محاسبه محلی نشان میدهد‪ .‬با مقایسه دو عبارت‬
‫افزایش سرعت‪ ،‬میفهمیم که افزایش سرعت حافظه‪-‬ثابت (معادله ‪ )36-3‬ممکن است از افزایش سرعت زمان‪-‬‬
‫ثابت (معادله ‪ ) 37-3‬بزرگتر باشد‪ .‬بطور کلی‪ ،‬بسیاری از کاربردها متقاضی استفاده از ترکیبی از فضاهای آدرس‬
‫محلی و سراسری هستند‪ .‬دادهها ممکن است در بعضی گرهها توزیع شوند و در بقیه گرهها تکرار شوند‪.‬‬

‫تکرار داده عمداً اضافه شده است تا نیاز ارتباطی کاهش یابد فاکتورهای افزایش سرعت برای این کاربردها وابسته‬
‫به نسبت بین محاسبات سراسری و محلی است‪ .‬این عقیده که )‪ G(n‬بطور خطی در کاربردهای سراسری افزایش‬
‫مییابد را تقویت میکند‪ .‬هرچه مقدار )‪ G(n‬بیشتر باشد‪ ،‬کارایی بهتر است‪.‬‬

‫‪ 4-3‬تجزیه تحلیل مقیاس پذیری و روشها‬

‫کارایی یک سیستم کامپیوتر به عوامل زیادی وابسته است که همه بر مقیاس پذیری معماری کامپیوتر و برنامه‬
‫کاربردی تأثیر میگذارند‪ .‬ساده ترین تعریف مقیاس پذیری این است که کارایی یک سیستم‬
‫کامپیوتر در مقایسه با تعداد پردازندههای استفاده شده برای یک کاربرد داده شده بطور خطی‬
‫افزایش یابد‪.‬‬

‫تجزیه تحلیل مقیاس پذیری یک کامپیوتر داده شده باید برای یک الگوریتم‪/‬برنامه کاربردی داده شده انجام شود‪.‬‬
‫تجزیه تحلیل میتواند تحت محدودیتهای مختلف روی رشد اندازه مسأله (بارکاری) و اندازه ماشین (اندازه‬
‫پردازندهها) انجام شود‪ .‬فهم خوب از مقیاسپذیری به ارزیابی کارایی معماری کامپیوتر موازی برای کاربردهای‬
‫مقیاس‪-‬بزرگ کمک خواهد کرد‪.‬‬

‫‪ -1-4-3‬اهداف و واحدهای مقیاس پذیری‬

‫همانطور که در شکل ‪ 12-3‬نشان داده شده است‪ ،‬مطالعه مقیاس پذیری درجه تطابق بین معماری کامپیوتر و‬
‫الگوریتم کاربردی را تعیین میکند‪ .‬برای زوجهای مختلف (معماری‪ ،‬الگوریتم)‪ ،‬تجزیه تحلیلها ممکن است نتایج‬
‫مختلفی داشته باشند‪ .‬یک ماشین ممکن است برای یک الگوریتم خیلی مفید باشد و برای دیگری بد باشد و برعکس‪.‬‬

‫بنابراین‪ ،‬یک معماری کامپیوتر خوب‪ ،‬باید در پیادهسازی یک کالس بزرگ از الگوریتمهای کاربردی کارا باشد‪ .‬در‬
‫حالت ایدهآل‪ ،‬کارایی کامپیوتر باید بطور خطی با افزایش تعداد پردازندههای بکار برده شده در پیاده سازی الگوریتمها‬
‫مقیاس پذیر باشد‪.‬‬

‫واحدهای مقیاس پذیری در زیر واحدهای پایه (شکل ‪(12-3‬الف)) مؤثر در مقیاس پذیری یک سیستم کامپیوتر‬
‫برای یک کاربرد داده شده مشخص شده است‪.‬‬
‫‪| 161‬‬ ‫اصول کارایی مقیاسپذیر‬
‫اندازه ماشین (‪ -)n‬تعداد پردازندههای بکارگرفته شده در یک سیستم کامپیوتر موازی‪ .‬اندازه ماشین‬ ‫•‬
‫بزرگ به معنی منابع بیشتر و توان محاسباتی بیشتر میباشد‪.‬‬
‫نرخ ساعت (‪ -)f‬نرخ ساعت تعیین کننده پالس ساعت ماشین پایه است‪ .‬ما امیدواریم تا ماشینی‬ ‫•‬
‫بسازیم با قطعاتی (پردازنده ها‪ ،‬حافظه‪ ،‬گذرگاه یا شبکه‪ ،‬وغیره) که توسط یک ساعتی راه اندازی شوند‬
‫که بتواند با تکنولوژی بهتر مقیاس پذیر شود‪.‬‬
‫اندازه مسأله (‪ -)s‬مقدار بارکاری محاسباتی یا تعداد دادههای استفاده شده برای حل یک مسأله داده‬ ‫•‬
‫شده‪ .‬اندازه مسأله مستقیماً متناسب با زمان اجرای ترتیبی )‪ T(s,1‬برای یک سیستم تک پردازنده‬
‫میباشد زیرا هر مقدار داده ممکن است متقاضی یک یا چند عمل باشد‪.‬‬
‫زمان ‪ -CPU‬زمان واقعی پردازنده (بر حسب ثانیه) که در اجرای یک برنامه داده شده روی یک ماشین‬ ‫•‬
‫موازی با ‪ n‬مجموعه پردازنده صرف میشود‪ .‬این زمان اجرای موازی است که با )‪ T(s, n‬نشان داده‬
‫میشود و تابعی از هر دوی ‪ s‬و ‪ n‬میباشد‪.‬‬
‫تقاضای ‪ -)d( I/O‬تقاضای ورودی‪/‬خروجی در انتقال برنامه‪ ،‬داده‪ ،‬و نتایج مربوط با یک اجرای‬ ‫•‬
‫کاربردی میباشد‪ .‬عملیات ورودی‪/‬خروجی ممکن است با عملیات پردازنده در یک محیط چندبرنامه شده‬
‫همپوشانی کنند‪.‬‬
‫ظرفیت حافظه (‪ -)m‬میزان حافظه اصلی (بر حسب بایت یا کلمه) استفاده شده در یک اجرای برنامه‪.‬‬ ‫•‬
‫نکته اینکه تقاضای حافظه توسط اندازه مسأله‪ ،‬اندازه برنامه‪ ،‬الگوریتمها‪ ،‬و ساختمان داده استفاده شده‬
‫تحت تأثیر قرار میگیرد‪.‬‬
‫زمان ‪CPU‬‬ ‫اندازه ماشین‬ ‫هزینه کامپیوتر‬

‫تقاضای ‪I/O‬‬ ‫مقیاس پذیری یک (معماری‪ ،‬الگوریتم)‬ ‫تقاضای حافظه‬


‫ارتباطی‬

‫هزینه برنامه نویسی‬ ‫اندازه مسأله‬ ‫سربار ارتباطی‬

‫(الف) واحدهای مقیاس پذیری‬

‫‪Intel Paragon‬‬ ‫کامپیوترهای‬


‫افزایش مقیاس پذیری‬

‫‪MIT J machine‬‬ ‫موازی ایدهآل‬


‫‪nCube/10‬‬
‫‪Caltech Mosaic‬‬

‫چندکامپیوتر ارسال‪-‬‬
‫پیام با حافظه توزیع‬
‫شده‬ ‫‪Cray Y/MP‬‬
‫چندپردازنده با‬ ‫‪Alliant FX/2800‬‬
‫حافظه مشترک‬ ‫‪IBM 390/900VF‬‬
‫‪Sequent Symmetry‬‬
‫افزایش برنامه پذیری‬
‫(ب) برنامه پذیری در مقایسه با مقیاس پذیری‬
‫شکل ‪ :12-3‬مقیاس پذیری و برنامه پذیری معماری کامپیوتر مختلف و ترکیب الگوریتم‬
‫تقاضای حافظه بطور پویا در خالل اجرای برنامه تغییر میکند‪ .‬منظور ما‪ ،‬حداکثر تعداد کلمات حافظه‬
‫تقاضا شده میباشد‪ .‬حافظه مجازی غالباً با فضای آدرس ‪-64‬بیتی نامحدود بنظر میرسد‪ .‬این حافظه‬
‫فیزیکی است که در ظرفیت محدود است‪.‬‬
‫سربار ارتباطی (‪-)h‬مقدار زمان صرف شده برای ارتباطات بین پردازندهای‪ ،‬همزمانی‪ ،‬دسترسی‬ ‫•‬
‫حافظه دور‪ ،‬و غیره‪ .‬این سربار شامل همه عملیات غیرمحاسباتی است که دربرگیرنده وسایل‬
‫ورودی‪/‬خروجی یا پردازنده نمیشود‪ .‬این سربار )‪ h(s,n‬تابعی از ‪ s‬و ‪ n‬میباشد و جزء )‪T(s, n‬‬
‫نمیباشد‪ .‬برای یک سیستم تک پردازنده‪ ،‬سربار ‪.h(s,1)=0‬‬
‫هزینه کامپیوتر (‪ -)c‬هزینه کلی منابع سخت افزاری و نرم افزاری مورد نیاز برای اجرای یک برنامه‬ ‫•‬
‫میباشد‪.‬‬
‫سربار برنامه نویسی(‪ -)p‬سربار توسعه مرتبط با برنامه کاربردی میباشد‪ .‬سربار برنامهنویسی ممکن‬ ‫•‬
‫است سودمندی نرم افزار را کاهش دهد و بنابراین نیازمند هزینه باال باشد‪ .‬ما در تجزیه تحلیل مقیاس‬
‫پذیری مان هزینه برنامه نویسی و هزینه کامپیوتر را صرف نظر میکنیم مگر اینکه غیر از این ذکر شود‪.‬‬

‫براساس اهداف محاسباتی و محدودیتهای منابع تحمیل شده‪ ،‬میتوان بعضی از پارامترهای فوق را ثابت کرد و‬
‫سایر پارامترها را بهینه کرد تا به باالترین کارایی و کمترین هزینه رسید‪.‬‬

‫مفهوم مقیاس پذیری به مفهوم افزایش سرعت و بازدهی گره خورده است‪ .‬تعریف دوم از مقیاس پذیری باید قادر‬
‫به بیان کردن اثرات معماری شبکه ارتباطی‪ ،‬الگوهای ارتباطی ارثی الگوریتمها‪ ،‬محدودیتهای فیزیکی تحمیل‬
‫شده توسط تکنولوژی‪ ،‬و اثر بخشی هزینه یا بازدهی سیستم باشد‪ .‬ابتدا مفهوم افزایش سرعت و بازدهی را معرفی‬
‫می کنیم‪ .‬سپس مقیاس پذیری را بر اساس کارایی نسبی یک ماشین واقعی در مقایسه با ماشین تئوری ایدهآل‬
‫تعریف میکنیم‪.‬‬

‫بازتعریف افزایش سرعت و بازدهی برای یک معماری‪ ،‬الگوریتم‪ ،‬و اندازه مسأله ‪ s‬داده شده افزایش سرعت‬
‫مجانبی )‪ S(s,n‬بهترین افزایش سرعت بدست آوردنی‪ ،‬با تغییر فقط تعداد ‪ n‬پردازندهها میباشد‪ .‬اجازه دهید‬
‫)‪ T(s,1‬زمان اجرای ترتیبی روی یک تک پردازنده باشد و )‪ T(s,n‬حداقل زمان اجرای موازی روی یک سیستم‬
‫‪-n‬پردازنده باشد و )‪ h(s,n‬مجموع همه سربارهای ارتباطی و ورودی‪/‬خروجی باشد‪ .‬افزایش سرعت مجانبی‬
‫بصورت فرمولی بصورت زیر تعریف میشود‪:‬‬

‫)‪𝑇(𝑠,1‬‬
‫)𝑛‪𝑆(𝑠, 𝑛) = 𝑇(𝑠,𝑛)+ℎ(𝑠,‬‬ ‫)‪(3-38‬‬

‫اندازه مسأله پارامتری مستقل از سایر واحدهای دیگر است‪ .‬اگر بخواهیم اندازهگیری درستی از افزایش سرعت‬
‫محانبی داشته باشیم باید از یک الگوریتم ترتیبی خوب استفاده کنیم حتی اگر این الگوریتم از ساختار مرتبط با‬
‫الگوریتم موازی مرتبط متفاوت باشد‪ T(s,n) .‬در صورتی حداقل است که مسأله با حداکثر تعداد پردازنده مورد نیاز‬
‫حل شود‪.‬‬
‫‪| 163‬‬ ‫اصول کارایی مقیاسپذیر‬
‫در تجزیه تحلیل مقیاس پذیری‪ ،‬بیشتر از نتایج بدست آمده از حل مسائل بزرگ خشنود میشویم‪ .‬بنابراین زمانهای‬
‫اجرای )‪ T(s,n‬و )‪ T(s,1‬باید با استفاده از نمایش مرتبه بزرگی بیان شوند به طوریکه نمایش دهنده رفتار مجانبی‬
‫باشند‪.‬‬

‫بازدهی سیستم برای حل یک مسأله داده شده با نسبت زیر تعریف میشود‪:‬‬

‫)𝑛‪𝑆(𝑠,‬‬
‫= )𝑛 ‪𝐸(𝑠,‬‬ ‫𝑛‬
‫)‪(3-39‬‬

‫بطور کلی‪ ،‬بهترین بازدهی ‪ 1‬است و زمانی بدست میآید که ‪ S(s,n)=n‬باشد یا به عبارتی افزایش سرعت خطی‬
‫باشد‪ .‬بنابراین‪ ،‬یک تعریف شناختی از مقیاس پذیری عبارت است از‪ :‬یک سیستم مقیاس پذیر است اگر‬
‫بازدهی سیستم برای همه الگوریتمها با هر تعداد پردازنده ‪ n‬و هر اندازه مسأله ‪E(s,n)=1 ،s‬‬
‫باشد‪.‬‬

‫‪ ) 1990( Mark Hill‬نشان داده است که این تعریف خیلی محدود کننده و غیر مفید است زیرا مانع این است که‬
‫به هیچ سیستمی بتوانیم مقیاس پذیر بگوییم‪ .‬به این دلیل‪ ،‬یک تعریف بازدهی و مقیاس پذیری عملیتری مورد نیاز‬
‫است تا کارایی ماشین واقعی را نسبت به مدل ‪ PRAM‬تئوری مقایسه کنیم‪.‬‬

‫تعریف مقیاس پذیری ‪ Nussbaum‬و ‪ )1991( Agarwal‬تعریف مقیاس پذیری زیر را براساس مدل‬
‫‪ PRAM‬ارائه دادهاند‪ .‬مقیاس پذیری )‪ φ(s,n‬از یک ماشین برای یک الگوریتم داده شده به عنوان نسبت افزایش‬
‫سرعت مجانبی )‪ S(s,n‬روی ماشین واقعی با افزایش سرعت مجانبی )‪ SI(s,n‬روی مفهوم ایدهآل‬
‫‪ EREWPRAM‬تعریف میشود‪.‬‬
‫)‪𝑇(𝑠,1‬‬
‫)𝑛‪𝑆𝐼 (𝑠, 𝑛) = 𝑇 (𝑠,‬‬
‫𝐼‬

‫که )‪ TI(s,n‬زمان اجرای موازی با صرف نظر کردن تمامی سربارهای ارتباطی روی ‪ PRAM‬میباشد‪ .‬بنابراین‬
‫مقیاس پذیری بصورت زیر تعریف میشود‪:‬‬

‫)𝑛‪𝑆(𝑠,‬‬ ‫)𝑛‪𝑇𝐼 (𝑠,‬‬


‫= )𝑛‪𝜑(𝑠, 𝑛) = 𝑆 (𝑠,‬‬ ‫)‪(3-40‬‬
‫𝐼‬ ‫)𝑛‪𝑇(𝑠,‬‬

‫درنتیجه هرچه مقیاسپذیری بیشتر باشد‪ ،‬کارایی که معماری داده شده میتواند با اجرای الگوریتم داده شده بدست‬
‫آورد بهتر خواهد بود‪ .‬در حالت ایدهآل‪ ،SI(s,n)=n ،‬که تعریف مقیاس پذیری در معادله ‪ 40.3‬مشابه تعریف داده‬
‫شده در معادله ‪ 39-3‬میشود‪.‬‬

‫مثال ‪ :7-3‬مقیاس پذیری معماریهای ماشینهای مختلف برای محاسبه توازن‬


‫جدول ‪ 3-3‬زمانهای اجرا‪ ،‬افزایش سرعت مجانبی‪ ،‬و مقیاس پذیریها (در مقایسه با مدل ‪)EREW-PRAM‬‬
‫پنج معماری ارتباطی مشهور‪ :‬آرایه خطی‪ ،‬مشها‪ ،‬فوق مکعب‪ ،‬و شبکه اُمگا برای اجرای محاسبه توازن را نشان‬
‫میدهد‪.‬‬

‫معماری ماشین‬
‫واحدها‬
‫شبکه اُمگا‬ ‫فوق مکعب‬ ‫مش سه بعدی‬ ‫مش دوبعدی‬ ‫آرایه خطی‬
‫‪log2s‬‬ ‫‪log s‬‬ ‫‪s1/4‬‬ ‫‪s1/3‬‬ ‫‪s1/2‬‬ ‫)‪T(s,n‬‬
‫‪s/log2s‬‬ ‫‪s/log s‬‬ ‫‪s3/4‬‬ ‫‪s2/3‬‬ ‫‪s1/2‬‬ ‫)‪S(s,n‬‬
‫‪1/log s‬‬ ‫‪1‬‬ ‫‪log s/s1/4‬‬ ‫‪log s/s1/3‬‬ ‫‪log s/s1/2‬‬ ‫)‪φ(s,n‬‬
‫جدول‪ :3-3‬مقیاس پذیری معماریهای مختلف براساس شبکههای مختلف برای محاسبه توازن‬
‫این محاسبه ‪ s‬بیت را تست میکند‪ ،‬و با استفاده از درخت باینری متوازن تعیین میکند که چه موقع تعداد بیتها‬
‫فرد یا زوج است‪ .‬برای این الگوریتم‪ ،‬برای ماشین ‪ PRAM‬ایدهآل ‪ T(s,1)=s‬و ‪ TI(s,n)=log s‬و‬
‫‪ SI(s,n)=s/log s‬میباشد‪.‬‬

‫در معماری واقعی‪ ،‬کارایی الگوریتم توازن محدود به قطر شبکه است‪ .‬برای مثال‪ ،‬آرایه خطی قطر شبکه ‪ n-1‬دارد‬
‫که منجر به زمان اجرای موازی کلی ‪ s/n+n‬میشود‪ .‬بخشبندی بهینه مسأله‪ ،‬استفاده از 𝑠√ = 𝑛 پردازنده‬
‫است بطوریکه هر پردازنده چک توازن 𝑠√ بیت را بطور محلی انجام دهد‪ .‬این بخشبندی بهترین تطابق بین هزینه‬
‫محاسبه و هزینه ارتباط را با ‪ T(s,n)=s1/2‬و ‪ S(s,n)=s1/2‬ایجاد میکند و بنابراین مقیاس پذیری‬
‫‪ φ(s,n)=log s/s1/2‬خواهد بود‪.‬‬

‫معماریهای مش دوبُعدی و سهبُعدی از بخشبندی مشابهی برای تطابق ساختار ارتباطیشان با بارهای محاسباتی‬
‫استفاده میکنند که منجر به نتایج مقیاس پذیری بهتری میشود‪ .‬جالب است که بگوییم هرچه تأخیر ارتباطی در‬
‫یک شبکه با قطر کوچکتر کاهش یابد‪ ،‬مقیاس پذیری افزایش مییابد‪.‬‬

‫شبکه اُمگا و فوق مکعب ساختار ارتباطی غنیتری ( و قطر کمتری) از مشهای با ابعاد کمتر تهیه میکنند‪ .‬فوق‬
‫مکعب به خوبی ‪ PRAM‬برای این الگوریتم کار میکند و ‪ φ(s,n)=1‬میشود‪.‬‬

‫شبکه اُمگا (شکل ‪ )24-2‬از محلیت بهرهبرداری نمیکند‪ :‬ارتباط با همه پردازندهها مقدار زمان برابری میگیرد‪ .‬این‬
‫فقدان محلیت به کاراییش در مقایسه با فوق مکعب آسیب میزند اما قطر کمتر آن باعث میشود مقیاس پذیری‬
‫آن از هر مشی بهتر باشد‪.‬‬

‫هرچندکه کارایی برای الگوریتم توازن فوق به قطر شبکه محدود شده است‪ ،‬برای الگوریتمهای بسیار دیگر‪ ،‬پهنای‬
‫باند شبکه یک فاکتور محدودکننده کارایی است‪ .‬تجزیه تحلیل فوق فرض میکند زمان ارتباطی بین گرههای‬
‫ارتباطی مستقیماً متصل مشابه است‪ .‬یک معماری می تواند برای یک الگوریتم مقیاس پذیر باشد و برای الگوریتم‬
‫دیگر مقیاس پذیر نباشد‪ .‬برای رسم نمودار مقیاس پذیری باید کالس بزرگی از الگوریتمهای مفید چک شوند‪.‬‬
‫‪| 165‬‬ ‫اصول کارایی مقیاسپذیر‬
‫‪ -2-4-3‬سیر تکاملی کامپیوترهای مقیاس پذیر‬

‫ایده مواز ات انبوه نسبتاً قدیمی است‪ ،‬تکنولوژی جدید است‪ ،‬و نرم افزار نسبتاً از این قابلیت بهره برداری نمیکند‬
‫(‪ Cybwnko 1992‬و ‪ .)Kuck‬هدف تکاملی ساخت سوپرکامپیوترهای مقیاس پذیر با حافظه مشترک توزیع شده‬
‫و یونیکس استاندارد برای پردازش موازی میباشد‪ .‬در این بخش بعضی مفاهیم طراحی کامپیوتر مقیاس پذیر را که‬
‫توسط (‪ )1992 Gorden Bell‬ارائه شدند‪ ،‬مطرح میکنیم‪.‬‬

‫مقیاس پذیری اندازه مطالعه مقیاس پذیری سیستم با افزایش مطلوب اندازه ماشین شروع شد‪ .‬یک کامپیوتر‬
‫مقیاس پذیر‪-‬اندازه برای داشتن دامنه مقیاسپذیری از تعداد کم به زیاد اجزاء منبع طراحی میشود‪ .‬انتظار رسیدن‬
‫به افزایش کارایی خطی با افزایش توسعه برای یک مجموعه کاربرد خوش‪ -‬تعریف میباشد‪ .‬اجزاء شامل کامپیوترها‪،‬‬
‫پردازندهها یا عناصر پردازشی‪ ،‬حافظهها‪ ،‬سوئیچها‪ ،‬کابینتها و غیره میباشد‪.‬‬

‫مقیاس پذیری اندازه وابسته به محلیت مکانی و زمانی همچنین گلوگاه اجزاء میباشد‪ .‬چون سیستمهای خیلی بزرگ‬
‫تأخیرات وراثتی بزرگتری از سیستمهای کوچک و متمرکز دارند‪ ،‬رفتار محلیت برنامه از اجرای موازی افزایش تأخیر‬
‫را تحمل خواهد کرد‪ .‬محلیت در فصل ‪ 4‬بررسی میشود‪ .‬شرط بدون‪-‬گلوگاه‪ 1‬متقاضی طراحی متوازن بین پهنای‬
‫باند پردازش‪ ،‬ذخیره سازی و ورودی‪/‬خروجی میباشد‪.‬‬

‫به عنوان مثال‪ ،‬چون ‪MPP‬ها اکثراً توسط شبکهها یا سوئیچهای بزرگ به هم متصل میشوند‪ ،‬پهنای باند سوئیچ‬
‫باید بطور خطی با توان پردازنده افزایش یابد‪ .‬تقاضای ورودی‪/‬خروجی ممکن است از پهنای باند پردازش در بعضی‬
‫کاربردهای مقیاس‪-‬بزرگ و زمان‪-‬قطعی تجاوز کند‪ .‬تخمین زده میشود که دیسکهای ‪ 0.1‬ترابایت‪/‬ثانیه یا ‪20000‬‬
‫دیسک ‪ 5000Mbytes/s‬مورد نیاز هستند تا بطور موازی عمل کنند تا با سرعت محاسباتی ‪1Teraflops‬‬
‫متوازن شوند‪.‬‬

‫سریهای ‪ Cray Y-MP‬روی دامنه ‪ 16‬پردازنده مقیاس پذیر شدهاند (مدل ‪ CM-2 .)C-90‬برای مقیاس پذیر‬
‫شدن بین ‪ 8k‬و ‪ 64k‬عنصر پردازشی طراحی شده است‪ .‬دامنه مقیاس پذیری ‪ 1024 CM-5‬تا ‪ 16k‬کامپیوتر‬
‫است‪ KSR-1 .‬دامنه ‪ 8‬تا ‪ 1088‬زوج حافظه‪-‬پردازنده دارد‪ .‬مقیاس پذیری اندازه به تنهایی بدون در نظر گرفتن‬
‫هزینه‪ ،‬بازدهی و مدیریت مقیاس زمان پاسخ‪ ،‬بدست آمدنی نیست‪ .‬عادالنه است که بگوییم هیچ کامپیوتری نیست‬
‫که بطور کامال ً خطی مقیاس پذیر باشد‪.‬‬

‫مقیاس پذیری نسل (زمان) چون هر گره ریزپردازنده هر سه سال منسوخ میشود‪ ،‬مقیاس پذیری زمان نیز به‬
‫اندازه مقیاس پذیری اندازه مهم است‪ .‬نه فقط تکنولوژی سخت افزار باید مقیاس پذیر باشد‪ ،‬مثل مدارات ‪CMOS‬‬
‫و تکنولوژیهای بسته بندی در ساخت تراشههای پردازنده و حافظه‪ ،‬بلکه نرم افزار‪/‬الگوریتم که متقاضی سازگاری‬
‫قابلیت حمل با سیستمهای سخت افزاری جدید است نیز باید مقیاس پذیر باشند‪.‬‬

‫‪1‬‬
‫‪Bottleneck-free‬‬
‫شرکت تجهیزات دیجیتال ادعا کرده است که ریزپردازنده آلفا مقیاسپذیر‪-‬نسل برای ‪ 25‬سال است‪ .‬بطور کل همه‬
‫خواص کامپیوتر باید بطور متناسب مقیاس پذیر باشند‪ :‬سرعت پردازنده‪ ،‬سرعت واندازه حافظه‪ ،‬پهنای باند و تأخیر‬
‫اتصالی‪ ،‬ورودی‪/‬خروجی ‪ ،‬و سربار نرم افزار به منظور مفید بودن برای کاربرد داده شده‪.‬‬

‫مقیاس پذیری مسأله اندازه مسأله مرتبط با اندازه مجموعه داده است‪ .‬این کلیدی برای رسیدن به کارایی‬
‫مقیاسپذیر میباشد هنگامی که دانهبندی برنامه تغییر میکند‪ .‬یک کامپیوتر مقیاسپذیر‪-‬مسأله باید قادر به خوب‬
‫کار کردن باشد هنگامیکه اندازه برنامه بزرگ میشود‪ .‬اندازه مسأله میتواند طوری مقیاس پذیر شود که به اندازه‬
‫کافی بزرگ شود به منظور اینکه روی یک کامپیوتر با یک دانه بندی داده شده عمل کند‪.‬‬

‫مسائلی مثل شبیه سازی ‪ Monte Carlo‬و ردیابی نور کامال موازی هستند‪ ،‬زیرا نخهای محاسباتیشان هیچگاه‬
‫باهم نمیآیند‪ .‬اینچنین استقاللی بین نخها با استفاده از یک سیستم ‪ MPP‬مقیاس پذیر خیلی مطلوب است‪ .‬بطور‬
‫کلی‪ ،‬به منظور اینکه چندکامپیوتر مفید باشد دانه بندی مسأله (عملیات رو یک نقطه شبکه‪ /‬دادههای مورد نیاز برای‬
‫نقاط شبکه همسایه) باید بزرگتر از دانهبندی ماشین باشد ( نرخ عملیات گره‪/‬نرخ داده ارتباطی گره‪-‬به‪-‬گره)‪.‬‬
‫‪| 167‬‬ ‫اصول کارایی مقیاسپذیر‬
‫تمرینات فصل سوم‬

‫مسأله ‪ -1-3‬اجرای موازی برنامه مشابه مسأله ‪ 4-1‬در یک سیستم ‪-4‬پردازنده با حافظه مشترک را در نظر‬
‫بگیرید‪ .‬برنامه میتواند به قسمتهای مساوی (هرکدام ‪ )50000‬برای اجرای متوازن توسط ‪ 4‬پردازنده تقسیم شود‪.‬‬
‫به خاطر نیاز به همزمانی بین چهار قسمت برنامه ‪ 5000‬دستور اضافی به هر یک از قسمتهای برنامه اضافه‬
‫میشود‪.‬‬
‫ترکیبی مشابه با مسأله ‪4-1‬برای هر قسمت برنامه در نظر بگیرید‪ CPI .‬برای دستورات مراجعه حافظه (با فقدان‬
‫کش) از ‪ 8‬به ‪ 12‬پالس ساعت به خاطر تداخل اضافه میشود‪CPI .‬ها برای سایر انواع دستورات بالتغییر میماند‪.‬‬
‫(الف) قسمت (الف) مسأله ‪4-1‬را وقتیکه برنامه در یک سیستم ‪-4‬پردازنده اجرا میشود تکرار کنید‪.‬‬
‫(ب) قسمت (ب) مسأله ‪ 4-1‬را وقتیکه برنامه در یک سیستم ‪-4‬پردازنده تکرار میشود تکرار کنید‪.‬‬
‫(ج) فاکتور افزایش سرعت سیستم ‪-4‬پردازنده را نسبت به سیستم تک پردازنده در مسأله ‪ 4-1‬بدست آورید‪.‬‬
‫(د) بازدهی سیستم ‪-4‬پردازنده با مقایسه فاکتور افزایش سرعت قسمت (ج) را در حالت ایدهآل بدست آورید‪.‬‬

‫مسأله ‪ -2-3‬یک کامپیوتر تک پردازنده می تواند در مد اسکالر یا برداری کار کند‪ .‬در مد برداری‪ ،‬محاسبات‬
‫میتوانند ‪ 9‬برابر سریعتر از مد اسکالر اجرا شوند‪ .‬یک برنامه محک خاص برای اجرا در این کامپیوتر نیازمند زمان‬
‫‪ T‬میباشد‪ ٪25 .‬از ‪ T‬مربوط به اجرا در مد برداری است‪ .‬در بقیه زمانها ماشین در مد اسکالر کار میکند‪.‬‬

‫(الف) افزایش سرعت مؤثر را تحت شرایط فوق در مقایسه با وقتیکه مد برداری اصالً استفاده نمیشود محاسبه‬
‫کنید‪ .‬همچنین ‪ α‬یعنی درصدی از کد که در برنامه فوق برداری شده است را محاسبه کنید‪.‬‬
‫(ب) فرض کنید نرخ سرعت بین مد برداری و مد اسکالر با بهبود سختافزار دو برابر شده است‪ .‬افزایش سرعت‬
‫مؤثری که قابل حصول است را محاسبه کنید‪.‬‬
‫(ج) فرض کنید افزایش سرعتی مشابه با قسمت (ب) قابل حصول با بهبود کامپایلر به جای سخت افزار است‪ .‬برای‬
‫این برنامه محک‪ ،‬درصد بردارسازی ‪ α‬که باید توسط کامپایلر برداری پشتیبانی شود چقدر است؟‬

‫مسأله ‪ -3-3‬فرض کنید ‪ α‬درصدی از کد برنامه است که میتواند توسط ‪-n‬پردازنده بطور همزمان روی یک‬
‫سیستم کامپیوتر اجرا شود‪ .‬فرض کنید بقیه کد باید در یک پردازنده بطور ترتیبی اجرا شود‪ .‬هر پردازنده نرخ اجرای‬
‫‪ x MIPS‬دارد و همه پردازندهها قابلیتهای مساوی دارند‪.‬‬

‫(الف) عبارتی برای نرخ ‪ MIPs‬مؤثر براساس پارامترهای ‪ n,α,x‬بدست آورید‪.‬‬


‫(ب) اگر ‪ n=16, x=4MIPS‬مقداری از ‪ α‬که کارایی سیستم را به ‪ 40MIPS‬میرساند چیست؟‬

‫مسأله ‪ -4-3‬کامپیوتری را در نظر بگیرید که میتواند یک برنامه را در دو مد اجرا کند‪ :‬مد معمولی در مقایسه با‬
‫مد پیشرفته با توزیع احتمال }‪.{α,1-α‬‬
‫(الف)اگر ‪ α‬بین‪ a,b‬تغییر کند و ‪ 0≤a<b≤1‬عبارتی برای میانگین فاکتور افزایش سرعت با استفاده از مفهوم‬
‫میانگین هارمونیک بدست آورید‪.‬‬
‫(ب) فاکتور افزایش سرعت را وقتیکه ‪ a→0 , b→1‬محاسبه کنید‪.‬‬

‫مسأله ‪ -5-3‬استفاده از یک کامپیوتر ‪-4‬پردازنده حافظه‪-‬مشترک را برای اجرای یک ترکیب برنامه مد نظر قرار‬
‫دهید‪ .‬چندپردازنده میتواند در ‪-4‬مُد اجرایی مرتبط با فعالیت ‪ ،3 ،2 ،1‬و ‪ 4‬پردازنده استفاده شود‪ .‬فرض کنید هر‬
‫پردازنده حداکثرنرخ ‪ 5MIPS‬دارد‪.‬‬
‫فرض کنید ‪ fi‬درصدی از زمان باشد که ‪ i‬پردازنده در اجرای برنامه فوق استفاده خواهد شد و ‪.f1+f2+f3+f4=1‬‬
‫شما میتوانید نرخهای اجرای ‪R1‬و ‪ R2‬و ‪ R3‬و ‪ R4‬را مرتبط با توزیع )‪ (f1,f2,f3,f4‬در نظر بگیرید‪.‬‬
‫(الف) عبارتی برای میانگین هارمونیک نرخ اجرای ‪ R‬از چندپردازنده براساس ‪ fi, Ri for i=1,2,3,4‬بدست‬
‫آورید‪ .‬همچنین عبارتی برای میانگین هارمونیک زمان اجرای ‪ T‬بر اساس ‪ R‬بدست آورید‪.‬‬
‫(ب) در صورتی که ‪f1=0.4, f2=0.3, f3=0.2, f4=0.1 , R1=4MIPS, R2=8MIPS,‬‬
‫‪ R3=11MIPS, R4=15MIPS‬باشند مقدار میانگین هارمونیک زمان اجرای ‪ T‬برای برنامه فوق چیست؟ علت‬
‫‪ Ri<5i for i=1,2,3,4‬را در اجرای برنامه فوق توضیح دهید‪.‬‬
‫(ج) فرض کنید یک کامپایلر هوشمند برای بهبود درجه موازات برنامه فوق با توزیع جدید ‪f1=0.1, f2=0.2,‬‬
‫‪ f3=0.3, f4=0.4‬استفاده شده است‪ .‬میانگین هارمونیک زمان اجرا برنامه مشابه به مفروضات قسمت (ب) روی‬
‫{‪ }Ri‬چیست؟‬

‫مسأله ‪ -6-3‬عملیاتی بودن و محدودیتهای مرتبط با استفاده از قانون امدال‪ ،‬قانون گوستافسون‪ ،‬و قانون سان‬
‫و نای برای تخمین افزایش سرعت کارایی یک سیستم ‪-n‬پردازنده در مقایسه با یک سیستم تک‪-‬پردازنده را‬
‫توضیح دهید‪ .‬همه سربارهای ارتباطی را نادیده بگیرید‪.‬‬

‫مسأله ‪ -7-3‬برنامه فرترن زیر در یک سیستم تک پردازنده و نگارش موازی چندپردازنده حافظه مشترک اجرا‬
‫میشود‪.‬‬

‫‪L1:‬‬ ‫‪Do 10 I=1,1024‬‬


‫‪L2:‬‬ ‫‪SUM(I)=0‬‬
‫‪L3:‬‬ ‫‪DO 20 J=1,I‬‬
‫‪L4: 20‬‬ ‫‪SUM(I)=SUM(I)+I‬‬
‫‪L5: 10‬‬ ‫‪CONTINUE‬‬
‫فرض کنید عبارات ‪ 2‬و ‪ 4‬هر کدام دو پالس ساعت میگیرند شامل همه فعالیتهای پردازنده و دسترسی‪-‬حافظه‪.‬‬
‫سربار ایجاد شده توسط کنترل حلقه (عبارات ‪ )L1,L3,L5‬و همه سایر سربارهای سیستم و تداخل منابع را نادیده‬
‫بگیرید‪.‬‬
‫(الف) زمان کل اجرای برنامه روی یک تکپردازنده چیست؟‬
‫‪| 169‬‬ ‫اصول کارایی مقیاسپذیر‬
‫(ب) حلقه ‪ I‬را به ‪ 32‬پردازنده بصورت زیر تقسیم کنید‪ .‬پردازنده ‪ 32 ،1‬تکرار اول (‪ I=1‬تا ‪ )32‬را اجرا میکند‪.‬‬
‫پردازنده ‪ 32 ،2‬دستور بعدی (‪ I=33‬تا ‪ ) 64‬و غیره‪ .‬زمان اجرا و فاکتور افزایش سرعت در مقایسه با قسمت (الف)‬
‫چیست؟ (نکته اینکه بارکاری محاسباتی دیکته شده توسط حلقه ‪ J‬بین پردازندهها نامتوازن است)‬
‫(ج) برنامه داده شده را طوری اصالح کنید که روی ‪ 32‬پردازنده بطور متوازن اجرا شود‪ .‬با یک بار متوازن‪ ،‬منظور ما‬
‫تعداد برابر جمع برای هر پردازنده در مقایسه با هر دو حلقه میباشد‪.‬‬
‫(د) حداقل زمان اجرای موازی متعادل روی ‪ 32‬پردازنده چیست؟ افزایش سرعت جدید روی تک پردازنده چیست؟‬
‫مسأله ‪ -8-3‬ضرب دو ماتریس )‪ A=(aij‬و )‪ n*n ،B=(bij‬را روی یک تک پردازنده اسکالر و چندپردازنده‬
‫مدنظر قرار دهید‪ .‬عناصر ماتریس اعداد ممیز شناورند که ابتداً در حافظه اصلی بصورت سطری ذخیره شدهاند‪.‬‬
‫ماتریس حاصلضرب )‪ C=(cij‬باید به حافظه اصلی در مکانهای متوالی برگشت داده شود‪.‬‬
‫شکل دستور ‪-2‬آدرسه و یک مجموعه دستور دلخواه را در نظر بگیرید‪ .‬هر دستور ‪ load/store‬بطور متوسط ‪4‬‬
‫سیکل میگیرد‪ .‬اگر مراجعه به حافظه توسط دستور مورد نیاز نباشد‪ ،‬همه عملیات ‪ ALU‬باید در دو سیکل بطور‬
‫متوالی اجرا شوند‪ .‬در غیر اینصورت ‪ 4‬سیکل برای هر مراجعه به حافظه برای برداشت یک عملوند اضافه میشود‪.‬‬
‫دستورات پرش بطور متوسط ‪ 2‬سیکل نیاز دارند‪.‬‬
‫(الف) یک کد اسمبلی با حداقل طول برای ضرب ماتریس روی یک سیستم اسکالر با معماری ‪ load/store‬و‬
‫سختافزار ممیز شناور بنویسید‪.‬‬
‫(ب) تعداد کل دستورات‪ ،‬تعداد کل سیکلهای مورد نیاز برای اجرای برنامه و میانگین سیکل برای هر دستور (‪)CPI‬‬
‫را محاسبه کنید‪.‬‬
‫(ج) اگر پردازنده با یک کالک ‪ 40MHz‬راهاندازی شود‪ ،‬نرخ ‪ MIPS‬این پردازنده اسکالر چیست‪.‬‬
‫(د) برنامه فوق را برای اجرا روی یک سیستم ‪-N‬پردازنده حافظه‪-‬مشترک با حداقل زمان تقسیم بندی کنید‪ .‬فرض‬
‫کنید ‪ .n=1000N‬پتانسیل افزایش سرعت چندپردازنده روی تک پردازنده را تخمین بزنید فرض کنید نوع یکسانی‬
‫از پردازندهها در هر دو سیستم استفاده میشوند‪ .‬تداخلهای حافظه همزمانی و غیره را نادیده بگیرید‪.‬‬
‫(ه) یک شماتیک اجرای محاسبات ماتریس توزیع شده با مجموعههای داده توزیع شده روی ‪-N‬نود چندکامپیوتر با‬
‫حافظه توزیع شده رسم کنید‪ .‬هر گره یک پردازنده‪ ،‬معادل پردازنده اسکالر قسمت (الف) دارد‪.‬‬
‫(و) عملیات مورد نیاز برای ارسال پیام در قسمت (ه) را تعیین کنید‪ .‬فرض کنید‪ ،‬بطور میانگین هر ارسال پیام برای‬
‫تکمیل شدن نیاز به ‪ 100‬سیکل پردازنده دارد‪ .‬زمان کل اجرای چندکامپیوتر برای ضرب ماتریس توزیع شده را‬
‫تخمین بزنید‪ .‬مفروضات مناسب را در تجزیه تحلیل زمانیتان در صورت نیاز استفاده کنید‪.‬‬

‫مسأله ‪ -9-3‬اجرای برگی شده چهار برنامه مسأله ‪ 6-1‬روی هر سه ماشین را در نظر بگیرید‪ .‬هر برنامه در یک‬
‫مد خاص با نرخ ‪ MIPS‬اندازه گیری شده اجرا میشود‪..‬‬

‫(الف) میانگین ریاضی زمان اجرا را بر دستور برای هر ماشین که بار کاری ترکیبی را اجرا میکند‪ ،‬تعیین کنید‪ .‬فرض‬
‫کنید برنامهها وزنهای برابر دارند‪.‬‬
‫(ب) میانگین هارمونیک نرخ ‪ MIPS‬هر ماشین را تعیین کنید‪.‬‬
‫(ج) ماشینها را براساس میانگین هارمونیک کارایی ردهبندی کنید‪ .‬این ردهبندی را با آنچه در مسأله ‪ 6-1‬بدست‬
‫آمد مقایسه کنید‪.‬‬

‫مسأله ‪ -10-3‬عبارات زیر مرتبط با قانون افزایش سرعت کارایی را ثابت کنید یا پاسخ دهید‪.‬‬

‫(الف) عبارت افزایش سرعت حافظه‪-‬ثابت ∗𝑛𝑆 در معادله ‪ 35-3‬را تحت مفروضات معقول اثبات کنید‪.‬‬
‫(ب) قانون امدل ( ‪ Sn‬در معادله ‪ )16-3‬به عنوان حالت خاصی از عبارت ∗𝑛𝑆 را بدست آورید‪.‬‬
‫(ج)رابطه 𝑛𝑆 ≥ ‪ 𝑆𝑛∗ ≥ 𝑆𝑛′‬را برای حل مسأله مشابهی در یک ماشین با مفروضات مختلف اثبات کنید‪.‬‬
‫مسأله ‪ -11-3‬روابط زیر را راجع به افزایش سرعت )‪ ،S(n‬بازدهی )‪ ،E(n‬بهرهوری )‪ ،U(n‬افزونگی )‪ R(n‬و‬
‫کیفیت )‪ Q(n‬یک محاسبه موازی براساس تعریف ‪ Lee‬اثبات کنید‪.‬‬

‫(الف) ثابت کنید ‪ 1/n≤E(n)≤U(n)≤1‬که ‪ n‬تعداد پردازندههای استفاده شده در محاسبه موازی است‪.‬‬
‫(ب)ثابت کنید ‪.1≤R(n)≤1/E(n)≤n‬‬
‫(ج) عبارت )‪ Q(n‬در معادله ‪ 21-3‬را اثبات کنید‪.‬‬

‫مسأله ‪ -12-3‬اجرای دو برنامه محک را مد نظر قرار دهید‪ .‬کارایی ‪ 3‬کامپیوتری که این دو برنامه محک را اجرا‬
‫میکنند بصورت زیر است‪:‬‬

‫کامپیوتر ‪3‬‬ ‫کامپیوتر ‪2‬‬ ‫کامپیوتر ‪1‬‬ ‫میلیون عمل ممیز شناور‬ ‫برنامه محک‬

‫)‪T3(sec‬‬ ‫)‪T2(sec‬‬ ‫)‪T1(sec‬‬


‫‪20‬‬ ‫‪10‬‬ ‫‪1‬‬ ‫‪100‬‬ ‫مسأله ‪1‬‬
‫‪20‬‬ ‫‪100‬‬ ‫‪1000‬‬ ‫‪100‬‬ ‫مسأله ‪2‬‬
‫‪40‬‬ ‫‪110‬‬ ‫‪1001‬‬ ‫زمان کل‬
‫(الف) ‪Ra‬و ‪Rg‬و ‪ Rh‬را برای هر کامپیوتر تحت وزن برابر ‪ f1=f2=0.5‬بدست آورید‪.‬‬
‫(ب) وقتی برنامه محک ‪ 1‬کارایی ثابت ‪ R1=10Mflops‬در سه کامپیوتر دارد ‪ Ra , Rg, Rh‬را به عنوان تابعی‬
‫از ‪ R2‬که از ‪ 1‬تا ‪ Mflops 100‬متغیر است تحت فرض ‪ f1=0.8‬و ‪ f2=0.2‬رسم کنید‪.‬‬
‫(ج) قسمت (ب) را برای حالتی که ‪ f1=0.2‬و ‪ f2=0.8‬تکرار کنید‪.‬‬
‫(د) براساس نتایج کارایی فوق تحت مفروضات مختلف‪ ،‬آیا میتوان نتیجه گیری راجع به کارایی نسبی سه کامپیوتر‬
‫داشت؟‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫‪| 161‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫بخش دوم‬

‫تکنولوژیهای سخت افزار‬

‫فصل ‪4‬‬

‫پردازندهها و سلسله مراتب حافظه‬

‫فصل ‪5‬‬

‫گذرگاه‪ ،‬حافظه نهان و حافظه مشترک‬

‫فصل ‪6‬‬

‫تکنیکهای خطلوله و سوپراسکالر‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 162‬‬

‫فصل چهارم ‪ -‬پردازنده ها و سلسله مراتب حافظه‬

‫این فصل تکنولوژی پردازندهها و سلسله مراتب حافظه را ارائه میدهد‪ .‬ابتدا معماری مجموعه دستورالعمل شامل‬
‫‪ RISC‬و ‪ CISC‬ارائه میشود و سپس پردازندههای سوپراسکالر‪ ،VLIW1 ،‬سوپرپایپ الین و برداری رایج بررسی‬
‫میشوند در ادامه راجع به پردازندههای چند هستهای مطالبی ارائه خواهند شد‪ .‬در بخش سوم سلسله مراتب حافظه‬
‫و طرح ظرفیت را پوشش میدهیم و در بخش آخر حافظه مجازی‪ ،‬مکانیزم ترجمه آدرس و متدهای جایگزینی‬
‫صفحه را معرفی میکنیم‪.‬‬

‫معماری های پردازنده مجموعه دستورالعمل و مفاهیم آدرس مجازی سلسله مراتب حافظه در سطح عملیاتی تأکید‬
‫میشود‪ .‬این رفتار توسط برنامه نویس مدیریت میشود‪ .‬خطلولههای دستورالعمل و ریاضی و پردازندههای‬
‫سوپراسکالر و سوپرپایپ الین در فصل ‪ 6‬مطالعه میشوند‪.‬‬

‫‪ -1-4‬تکنولوژی های پردازنده ها‬

‫خانوادههای معماریِ پردازندهها با تکنولوژیهای بستهبندی‪/‬میکروالکترونیک تحتانی در ادامه معرفی میشوند‪.‬‬


‫خانوادههای عمده پردازنده که باید مطالعه شوند شامل ‪ ،RISC ،CISC‬سوپراسکالر‪ ،VLIW ،‬سوپرپایپ الین‪،‬‬
‫برداری‪ ،‬پردازندههای سملیک و چند هستهای میباشند‪ .‬پردازندههای برداری و اسکالر برای محاسبات عددی هستند‪.‬‬
‫پردازندههای سمبلیک برای کاربردهای ‪ AI‬توسعه داده شدهاند‪.‬‬

‫‪ -1-1-4‬فضای طراحی پردازندهها‬

‫خانوادههای پردازنده مختلف براساس نرخ پالس ساعت همچنین تعداد پالسهای ساعت مورد نیاز هر دستور یعنی‬
‫‪ CPI‬با هم مقایسه میشوند‪ .‬با پیشرفت سریع تکنولوژی پیادهسازی‪ ،‬نرخ پالس ساعت پردازندههای مختلف از‬
‫سرعت کم به زیاد به افزایش مییابد‪ .‬هدف دیگر این است که کارخانههای پردازنده سعی میکنند نرخ ‪ CPI‬کمتری‬
‫به روشهای سخت افزاری و نرم افزاری ایجاد کنند‪.‬‬

‫فضای طراحی‪ :‬پردازندههایی مثل ‪ IBM390 ،VAX/8600 ،M68040 ،Intel i486‬و ‪ ...‬در خانواده‬
‫شناخته شده معماری کامپیوتر مجموعه دستورالعمل پیچیده (‪ )CISC‬قرار میگیرند‪ .‬با کنترل ریزبرنامه نویسی شده‪،‬‬
‫‪ CPI‬دستورات ‪ CISC‬مختلف از ‪ 1‬تا ‪ 20‬متغیر است‪.‬‬

‫‪1‬‬
‫‪Very long instruction word‬‬
‫‪| 163‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫پردازندههای کامپیوتر با مجموعه دستورات کاهش یافته (‪ ،)RISC‬مثل ‪MIPS ،SPARC ،Intel i860‬‬
‫‪ IBM RS/6000 ،R3000‬و غیره نرخ ساعت سریعتری دارند‪ .‬با استفاده از کنترل سخت افزاری‪ CPI ،‬اکثر‬
‫دستورات ‪ RISC‬به ‪ 1‬تا ‪ 2‬پالس ساعت کاهش یافته است‪.‬‬

‫یک کالس خاص از پردازندههای ‪ ،RISC‬پردازندههای سوپراسکالر میباشند که اجازه میدهند چندین دستور بطور‬
‫همزمان در هر پالس ساعت منتشر شوند‪ .‬بنابراین ‪ CPI‬مؤثر یک پردازنده سوپراسکالر باید کمتر از پردازنده ‪RISC‬‬
‫اسکالر باشد‪ .‬نرخ پالس ساعت پردازندههای سوپر اسکالر با پردازندههای ‪ RISC‬اسکالر تطابق دارد‪.‬‬

‫معماری کلمه دستور خیلی بزرگ (‪ )VLIW‬تعداد بیشتری واحد عملیاتی از یک پردازنده سوپراسکالر استفاده میکند‪.‬‬
‫بنابراین ‪ CPI‬یک پردازنده ‪ VLIW‬میتواند کمتر باشد‪ .‬به خاطر استفاده از دستورات خیلی دراز (‪ 256‬تا ‪ 1024‬بیت‬
‫برای هر دستور)‪ ،‬پردازنده ‪ VLIW‬غالباً با کنترل ریزبرنامه نویسی شده پیادهسازی میشود‪ .‬بنابراین نرخ پالس‬
‫ساعت با استفاده از حافظه فقط‪-‬خواندنی (‪ )ROM‬کُند است‪ .‬ممکن است تعداد زیادی سیکل دسترسی میکروکد‬
‫برای بعضی دستورات مورد نیاز باشد‪.‬‬

‫پردازندههای سوپرپایپالین آنهایی هستند که از پالسهای ساعت چندفازه با نرخ پالس ساعت افزایش یافته استفاده‬
‫میکنند‪ .‬در این پردازندهها‪ CPI ،‬نسبتاً باالست مگر اینکه سوپر پایپالین با انتشار چند دستور ترکیب شود‪.‬‬
‫پردازندههای سوپرکامپیوترهای برداری‪ ،‬اغلب سوپرپایپالین شدهاند و از چندین واحد عملیاتی برای عملیات برداری‬
‫و اسکالر همزمان استفاده میکنند‪.‬‬

‫‪ CPI‬مفید یک پردازنده استفاده شده در یک سوپرکامپیوتر باید خیلی کم باشد هرچه پالس ساعت سریعتر شود و‬
‫‪ CPI‬کمتر شود‪ ،‬قیمت بطور قابل توجهی افزایش مییابد‪.‬‬

‫پایپالینهای دستورالعمل‪ :‬سیکل اجرای یک دستور معمولی شامل ‪ 4‬فازِ برداشت‪ ،‬دیکد‪ ،‬اجرا و بازپس‬
‫نویسی‪ 1‬میباشد‪ .‬این فازهای دستورالعمل معموالً توسط یک خطلوله دستورالعمل همانطور که در شکل‪(4-4‬الف)‬
‫نشان داده شده است اجرا میشود‪ .‬به عبارت دیگر ما به سادگی میتوانیم یک پردازنده دستورالعمل را با یک چنین‬
‫ساختار خط لولهای مدل کنیم‪.‬‬

‫خطلوله شبیه خط تولید یک کارخانه است که دستوراتش را بطور پیاپی از ورودیش دریافت میکند و آنها را بصورت‬
‫پشت سرهم به روشی همپوش اجرا میکند‪.‬‬

‫یک سیکل خطلوله به عنوان زمان مورد نیاز برای هر فاز تا عملش را تمام کند با فرض تأخیر برابر در همه فازها‬
‫(مراحل خطلوله) تعریف میشود‪ .‬تعاریف پایه مرتبط با عملیات خطلوله دستورالعمل در زیر معرفی میشود‪:‬‬

‫(‪ )1‬سیکل خطلوله دستور‪ :‬پریود پالس ساعت خطلوله دستورالعمل میباشد‪.‬‬

‫‪1‬‬
‫‪Write back‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 164‬‬

‫تأخیر انتشار دستورالعمل‪ :‬زمان (براساس پالس ساعت) مورد نیاز بین انتشار دو دستور همسایه‬ ‫(‪)2‬‬
‫میباشد‪.‬‬
‫نرخ انتشار دستورالعمل‪ :‬تعداد دستورات منتشر شده در هر پالس ساعت‪ ،‬که به آن درجه یک‬ ‫(‪)3‬‬
‫پردازنده سوپراسکالر نیز میگویند‪.‬‬
‫تأخیر عمل ساده‪ :‬عملیات ساده عمدهترین دستورات اجرا شده توسط ماشین هستند مثل جمع صحیح‪،‬‬ ‫(‪)4‬‬
‫‪ movs, branch, store,load‬و غیره‪ .‬برعکس دستورالعملهای پیچیده آنهایی هستند که تأخیر‬
‫طوالنیتری دارند مثل ‪ divide, cach miss‬و غیره‪ .‬این تأخیرات براساس تعداد پالسهای ساعت‬
‫اندازهگیری میشوند‪.‬‬
‫تداخلهای منبع‪ :‬اشاره به حالتی دارد که دو یا چند دستور در یک زمان‪ ،‬متقاضی استفاده از واحد‬ ‫(‪)5‬‬
‫عملیات مشابهی هستند‪.‬‬
‫‪fetch decode‬‬ ‫‪execute writeback‬‬

‫دستورات‬
‫متوالی‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫‪16‬‬
‫(الف) اجرا در یک پردازنده اسکالر پایه‬ ‫زمان براساس سیکل‬
‫پایه‬

‫دستورات‬
‫متوالی‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫زمان براساس سیکل پایه‪16‬‬
‫(ب) خط لوله با انتشار هر دستور در ‪ 2‬سیکل (بهرهوری نصف)‬

‫دستورات‬
‫متوالی‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫زمان براساس سیکل پایه‪16‬‬
‫(ج) پایپ الین با بهرهوری کمتر با سیکل پایه دو برابر‬
‫شکل ‪ :1-4‬اجرای خطلوله شده دستورات متوالی در یک پردازنده اسکالر پایه و دو حالت خطلوله با بهرهوری کمتر‬
‫‪| 165‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫یک پردازنده اسکالر پایه‪ ،‬ماشینی است که یک دستور را در هر پالس ساعت منتشر میکند و تأخیر یک پالس‬
‫ساعت برای یک دستور ساده دارد و تأخیر یک پالس ساعت بین انتشار دو دستور دارد‪ .‬اگر دستورات متوالی بطور‬
‫پیوسته با نرخ یک دستور در هر پالس ساعت بتوانند وارد خطلوله دستورالعمل شوند در این صورت از خطلوله کامالً‬
‫بهرهبرداری خواهد شد‪ .‬همانطور که در شکل ‪(1-4‬الف) نشان داده شده است‪.‬‬

‫حالت دیگری از خطلوله در شکل ‪(1-4‬ج) نشان داده شده است که زمان سیکل خطلوله با ترکیب مراحل خطلوله‬
‫دو برابر شده است‪ .‬در این حالت‪ ،‬فازهای برداشت و دیکد با هم ترکیب شده و یک مرحله خطلوله شدهاند و اجرا و‬
‫بازپس نویسی با هم ترکیب شده و مرحله دیگری را ساختهاند‪ .‬این باعث بهرهوری ضعیف خطلوله خواهد شد‪.‬‬

‫نرخ ‪ CPI‬مؤثر برای خطلوله ایدهآل در شکل ‪(1-4‬الف) یک است و در شکل ‪(1-4‬ب)‪ 2 ،‬است و در شکل ‪(1-4‬ج)‪،‬‬
‫نرخ پالس ساعت خطلوله به اندازه نصف کم شده است‪ .‬براساس معادله ‪ ،3-1‬چه در حالت شکل ‪(1-4‬ب) یا ‪-4‬‬
‫‪(1‬ج)‪ ،‬کارایی در مقایسه با حالت ایدهآل (شکل ‪(1-4‬الف)) برای ماشین پایه‪ ،‬به اندازه نصف کاهش مییابد‪.‬‬

‫‪ -2-1-4‬معماریهای مجموعه‪-‬دستورالعمل‬

‫در این بخش مجموعه دستورالعمل کامپیوتر را طبقه بندی میکنیم و خواص سخت افزار ساخته شده در پردازندههای‬
‫اسکالر ‪ RISC‬و ‪ CISC‬را بررسی میکنیم‪ .‬در سالهای اخیر مرز بین معماریهای ‪ RISC‬و ‪ CISC‬شفاف شده‬
‫است‪ .‬تعداد کمی پردازنده با خواص ترکیبی ‪ RISC‬و ‪ CISC‬ساخته شدهاند‪ .‬به هر حال تفاوت آنها در معماری‬
‫مجموعه‪-‬دستورالعمل قابل توجه است‪.‬‬

‫مجموعه دستورالعمل یک کامپیوتر‪ ،‬دستورات یا فرمانهای اولیهای را که یک برنامهنویس میتواند در برنامه نویسی‬
‫ماشین استفاده کند‪ ،‬مشخص میکند‪ .‬پیچیدگی یک مجموعه دستورالعمل با فرمتهای دستورالعمل‪ ،‬شکلهای‬
‫داده‪ ،‬مدهای آدرسدهی‪ ،‬ثباتهای همه منظوره‪ ،‬خواص ‪ ،opcode‬و مکانیزم کنترل جریان استفاده شده سنجیده‬
‫میشود‪ .‬دو نوع معماری مجموعه دستورالعمل به نامهای ‪ RISC‬و ‪ CISC‬وجود دارد‪.‬‬

‫مجموعه دستورالعمل پیچیده ‪ :CISC‬در روزهای اولیه تاریخ کامپیوتر‪ ،‬اکثر خانوادههای کامپیوتر مجموعه‬
‫دستورالعمل نسبتاً سادهای داشتند‪ .‬دلیل عمده سادگی آنها گران بودن قیمت سخت افزار بود‪ .‬در دهههای اخیر‬
‫قیمت سخت افزار کاهش یافت و قیمت نرم افزار رشد کرد‪ .‬بنابراین‪ ،‬شکاف بین خواص ‪ HLL‬و معماری کامپیوتر‬
‫زیاد شد‪.‬‬

‫نتیجه این شد که توابع بیشتری در داخل سخت افزار ساخته شوند و باعث شدند مجموعه دستورالعمل خیلی بزرگ‬
‫و پیچیده شود‪ .‬رشد مجموعه دستورالعمل با رایج شدن کنترل ریزبرنامه نویسی شده در ‪ 1960‬و ‪ 1970‬بیشتر شد‪.‬‬
‫حتی مجموعه دستورالعمل تعریف شده توسط کاربر با استفاده از میکروکد در بعضی پردازندهها برای کاربردهای‬
‫خاص پیاده سازی شد‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 166‬‬

‫یک مجموعه دستورالعمل ‪ CISC‬نوعی‪ ،‬تقریباً ‪ 120‬تا ‪ 350‬دستور دارد که از شکلهای داده‪/‬دستورالعمل متغیر‬
‫استفاده میکند‪ .‬از مجموعه کوچکی از ‪ 8‬تا ‪ 24‬ثبات همه منظوره استفاده میکند و یک دوجین مُد آدرسدهی دارد‪.‬‬
‫بسیاری از عبارات ‪ HLL‬مستقیماً در سخت افزار‪/‬میان افزار در معماری ‪ CISC‬پیادهسازی میشوند‪ .‬این ممکن است‬
‫باعث سادگی توسعه کامپایلر و بهبود کارایی اجرا شود و باعث توسعه از دستورات اسکالر به دستورات سمبلیک و‬
‫برداری شود‪.‬‬

‫مجموعه دستورالعمل کاهش یافته ‪ :RISC‬ابتدا مجموعه دستورات ‪ RISC‬شروع شد و در دهه ‪ 1980‬به‬
‫سمت مجموعه دستورالعمل ‪ CISC‬حرکت شد‪ .‬پس از دو دهه استفاده از پردازندههای ‪ CISC‬کاربران کامپیوتر‬
‫شروع به ارزیابی رابطه کارایی بین مجموعه دستورالعمل و تکنولوژی سخت افزار‪/‬نرم افزار قابل دسترس کردند‪.‬‬

‫بعد از چندین سال ردیابی برنامه‪ ،‬دانشمندان کامپیوتر فهمیدند که ‪ ٪25‬دستورات مجموعه دستورالعمل پیچیده‪،‬‬
‫‪ 95٪‬اوقات به تناوب استفاده میشوند‪ .‬این به این معنی است که حدود ‪ ٪75‬دستوراتی که توسط سخت افزار‬
‫پشتیبانی میشوند غالباً اصالً استفاده نمیشوند‪ .‬یک سؤال طبیعی ایجاد شد‪ .‬چرا باید سطح زیادی از تراشه را برای‬
‫دستوراتی که بندرت استفاده میشوند تلف کنیم؟‬

‫دستوراتی که بزحمت ساخته شدهاند با فرکانس کم استفاده میشوند و متقاضی میکروکدهای طوالنی برای اجرا‬
‫هستند‪ .‬مفیدتر است که آنها را کامالً از سخت افزار حذف کنیم و روی نرم افزار برای پیاده سازی آن تکیه کنیم‪.‬‬
‫حتی اگر پیاده سازی نرم افزاری آنها کند باشد نتیجه کلی به خاطر فرکانس ظهور کم آنها خوب خواهد بود‪ .‬با انتقال‬
‫دستوراتی که بندرت استفاده میشوند به نرم افزار سطح تراشه برای ساخت پردازندههای سوپراسکالر یا ‪ RISC‬قویتر‬
‫و حتی ایجاد حافظههای نهان و واحد ممیز شناور روی تراشه آزاد میشود‪.‬‬

‫یک مجموعه دستورالعمل ‪ RISC‬معموالً کمتر از ‪ 100‬دستور دارد که طول آنها ثابت است (‪ 32‬بیت) و فقط ‪ 3‬تا ‪5‬‬
‫مد آدرس دهی ساده استفاده میکند‪ .‬اکثر دستورات بر پایه ثبات هستند‪ .‬دسترسی به حافظه فقط توسط دستورات‬
‫‪ load/store‬انجام میشود‪ .‬یک فایل ثبات بزرگ (حداقل ‪ 32‬عدد) برای بهبود سرعت سوئیچ متن بین چندین‬
‫کاربر استفاده میشود و اکثر دستورات در یک پالس ساعت با کنترل سخت افزاری اجرا میشوند‪.‬‬

‫بخاطر کاهش پیچیدگی مجموعه‪-‬دستورالعمل‪ ،‬کل پردازنده قابل پیادهسازی روی یک تراشه ‪ VLSI‬میباشد‪ .‬در‬
‫نتیجه نرخ پالس ساعت باالتر و ‪ CPI‬کمتر داریم و نرخ ‪ MIPS‬بیشتر خواهد شد‪.‬‬

‫تفاوتهای معماری‪ :‬خواص سخت افزار داخلی پردازندههای ‪ RISC‬و ‪ CISC‬در ادامه مقایسه میشوند‪ .‬شکل‬
‫‪ 4-2‬تفاوت بین معماری ‪ CISC‬و ‪ RISC‬را نشان میدهد‪ .‬بعضی تفاوتها ممکن است حذف شوند زیرا پردازندههای‬
‫آینده با خواص هر دو نوع طراحی میشوند‪.‬‬

‫معماری ‪ CISC‬رایج از یک حافظه نهان یکسان برای نگهداری داده و دستورالعمل استفاده میکند‪ .‬بنابراین‪ ،‬باید‬
‫مسیر داده‪/‬دستورالعمل مشابهی را به اشتراک بگذارند‪ .‬در پردازنده ‪ ،RISC‬حافظههای نهان داده وحافظههای نهان‬
‫‪| 167‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫دستورالعمل مجزا با مسیرهای دسترسی متفاوت استفاده میشوند‪ .‬به هرحال‪ ،‬استثناءهایی نیز وجود دارد‪ .‬به عبارت‬
‫دیگر‪ ،‬پردازندههای ‪ CISC‬ممکن است کدهای مجزا استفاده کنند‪.‬‬

‫در ‪ CISC‬رایج ازکنترل ریزبرنامه نویسی شده و در اکثر ‪RISC‬ها کنترل سخت افزاری استفاده میشود‪ .‬بنابراین‬
‫حافظه کنترل (‪ )ROM‬در پردازندههای ‪ CISC‬مورد نیاز است که بطور قابل توجهی اجرای دستور را کُند میکند‪.‬‬
‫به هر حال‪CISC ،‬های مدرن ممکن است از کنترل سخت افزاری استفاده کنند‪ .‬بنابراین حافظههای نهان مجزا و‬
‫کنترل سخت افزاری‪ ،‬خاصِ ماشینهای ‪ RISC‬نیست‪.‬‬

‫استفاده از کنترل سخت افزاری بطور مؤثری ‪ CPI‬را به یک پالس ساعت در هر دستور کاهش میدهد اگر خطلوله‬
‫بطور کامل استفاده شود‪ .‬بعضی پردازندههای ‪ CISC‬مثل ‪ MC68040,i586‬از حافظههای نهان مجزا و کنترل‬
‫سخت افزاری استفاده میکنند‪.‬‬
‫مسیر داده و دستورالعمل‬ ‫واحد کنترل سخت افزاری‬ ‫مسیر داده‬
‫واحد کنترل‬

‫حافظه نهان دستورالعمل‬ ‫حافظه نهان داده‬


‫حافظه نهان‬
‫حافظه کنترل ریزبرنامه‬
‫(دستورالعمل)‬ ‫(داده)‬
‫نویسی شده‬ ‫حافظه اصلی‬
‫حافظه اصلی‬
‫(الف) معماری ‪ CISC‬با کنترل ریزبرنامه نویسی شده و حافظه نهان یکسان‬
‫(ب) معماری ‪ RISC‬با کنترل سخت افزاری و حافظه نهان داده و حافظه نهان دستورالعمل مجزا‬
‫شکل‪ :2-4‬تفاوت بین معماریهای ‪ CISC‬و ‪ RISC‬رایج‬

‫در جدول ‪ 1-4‬خواص عمده پردازندههای ‪ RISC‬و ‪ CISC‬مقایسه شدهاند‪ .‬مقایسه شامل ‪ 5‬ناحیه است‪ :‬مجموعه‬
‫دستورالعمل‪ ،‬مُدهای آدرسدهی‪ ،‬فایل ثبات و طراحی حافظه نهان‪ CPI ،‬مورد انتظار‪ ،‬و مکانیزمهای کنترل‪.‬‬

‫تعداد زیاد دستورات استفاده شده در یک پردازنده ‪ CISC‬منجر به استفاده دستورات با شکل متغیر‪-‬صحیح‪ ،‬ممیز‬
‫شناور‪ ،‬و برداری و استفاده از دوجین آدرسدهی متفاوت میشود‪ .‬بنابراین با تعداد کم ‪ GPR1‬ها تعداد بیشتری‬
‫دستور به حافظه برای عملوندها دسترسی دارند‪ .‬بنابراین ‪ CPI‬به خاطر میکروکدهای طوالنی استفاده شده در اجرای‬
‫دستورات پیچیده بزرگ است‪.‬‬

‫اکثر پردازندههای ‪ RISC‬از دستورات ‪ 32‬بیتی استفاده میکنند که بطور پیشفرض بر پایه ثبات هستند‪ .‬با مُدهای‬
‫آدرسدهی ساده‪ ،‬سیکل دسترسی‪-‬حافظه به عملیات دسترسی خطلوله شده شامل استفاده از حافظههای نهان و‬
‫ثباتهای کاری شکسته میشود‪ .‬استفاده از فایل ثبات بزرگ و حافظههای نهان داده و دستورالعمل مجزا باعث‬

‫‪1‬‬
‫‪Global purpose register‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 168‬‬

‫جلورانی‪ 1‬داخلی داده میشود و از ذخیره سازی انبوه غیرالزم نتایج میانی جلوگیری میکند‪ .‬با کنترل سخت افزاری‪،‬‬
‫‪ CPI‬به ‪ 1‬برای اکثر دستورات ‪ RISC‬کاهش یافته است‪.‬‬

‫کامپیوتر با مجموعه‬
‫کامپیوتر با مجموعه دستورالعمل‬
‫دستورالعمل کاهش یافته‬ ‫خواص معماری‬
‫پیچیده (‪)CISC‬‬
‫(‪)RISC‬‬
‫اندازه مجموعه‬
‫مجموعه دستورالعمل کم با شکل ثابت‬ ‫مجموعه دستورالعمل بزرگ و شکلهای‬
‫دستورالعمل و شکل‬
‫(‪ 32‬بیت) و اکثر دستورات بر پایه ثبات‬ ‫متغیر(‪ 64-16‬بیت برای هر دستور)‬
‫دستورات‬
‫محدود به ‪5-3‬‬ ‫‪12-24‬‬ ‫مدهای آدرس دهی‬
‫‪ 8-24‬عدد ‪ .GPR‬با یک حافظه نهان یکسان‬ ‫ثباتهای همه منظوره‬
‫تعداد زیاد (‪ GPR )192-32‬با حافظه‬
‫برای دستور و داده که در طرحهای جدید مجزا‬ ‫(‪ )GPR‬و طراحی حافظه‬
‫نهان دستور و داده مجزا‬
‫هستند‪.‬‬ ‫نهان‬
‫یک پالس ساعت برای اغلب دستورات‬
‫‪ CPI‬بین ‪ 2‬و ‪15‬‬ ‫‪CPI‬‬
‫و میانگین ‪ 1.5‬برای ‪CPI‬‬
‫اکثر ًا سخت افزاری بدون حافظه‬ ‫اکثر ًا کنترل ریزبرنامه نویسی شده با استفاده از‬
‫کنترل ‪CPU‬‬
‫کنترل‬ ‫‪ .ROM‬در ‪CISC‬های مدرن سخت افزاری‬
‫جدول ‪ :1-4‬خواص معماریهای ‪ RISC‬و ‪CISC‬‬

‫یکی از مسائلی که در پردازندههای ‪ RISC‬استفاده میشود استفاده از دریچههای ثباتی همپوش است‪ .‬این مفهوم‬
‫در شکل‪ 3-4‬برای ‪ 8‬پنجره همپوش (با ‪ 64‬ثبات محلی و ‪ 64‬ثبات همپوش) و ‪ 8‬سراسری و مجموع ‪ 136‬ثبات‪،‬‬
‫آنطور که در ‪ Cypress 601‬پیادهسازی شده است‪ ،‬نشان داده شده است ‪.‬‬

‫‪ 8‬پنجره ثبات به سه بخش ‪-8‬ثباته تقسیم شده است که در شکل با ‪ locals ،Ins‬و ‪ Outs‬برچسب خوردهاند‪.‬‬
‫ثباتهای محلی بطور محلی توسط هر زیرروال قابل آدرس دهیاند‪ Ins,Outs .‬بین زیرروالها مشترکند‪.‬‬

‫زیرروال فراخوان پارامترهایش را به زیرروال فراخوانده شده توسط ثباتهای ‪ r8( Outs‬تا ‪ )r15‬ارسال میکند که‬
‫ثباتهای ‪ Ins‬در زیرروال فراخوانده شدهاند‪ .‬زیرروال در حال اجرای جاری را پنجره فعال میگویند و توسط اشارهگر‬
‫پنجره جاری اشاره میشود‪.‬‬

‫مقایسه ریسک و سیسک‪ :‬بین طراحان ریسک و سیسک یک بحث وجود دارد‪ .‬براساس معادله ‪ ،3.1‬به نظر‬
‫می رسد که ریسک در صورتی که طول برنامه به اندازه زیادی افزایش نیابد بهتر از سیسک عمل کند‪ .‬براساس یک‬
‫آزمایش گزارش شده‪ ،‬تبدیل برنامه سیسک به برنامه معادل ریسک آن طول کد را فقط ‪ ٪40‬زیاد میکند (تعداد‬
‫دستورالعمل)‪.‬‬

‫‪1‬‬
‫‪Forward‬‬
‫‪| 169‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫درحقیقت‪ ،‬افزایش وابسته به رفتار برنامه است‪ ،‬و ‪ ٪40‬افزایش برای همه برنامهها رایج نیست‪ .‬افزایش کد برنامه‬
‫خیلی کمتر از افزایش نرخ پالس ساعت و کاهش ‪ CPI‬است‪ .‬بنابراین طبق معادله ‪ ،3.1‬دلیل ما منطقی است‪.‬‬

‫]‪r[31‬‬ ‫]‪r[23‬‬ ‫]‪r[15‬‬


‫پنجره قبلی‬ ‫‪.‬‬ ‫‪Ins‬‬ ‫‪.‬‬ ‫‪Locals‬‬ ‫‪.‬‬ ‫‪Outs‬‬
‫]‪r[24‬‬ ‫]‪r[16‬‬ ‫]‪r[8‬‬
‫پنجره فعال‬ ‫]‪r[31‬‬ ‫]‪r[23‬‬ ‫]‪r[15‬‬
‫‪.‬‬ ‫‪Ins‬‬ ‫‪.‬‬ ‫‪Locals‬‬ ‫‪.‬‬ ‫‪Outs‬‬
‫]‪r[24‬‬ ‫]‪r[16‬‬ ‫]‪r[8‬‬
‫پنجره بعدی‬ ‫]‪r[31‬‬ ‫]‪r[23‬‬ ‫]‪r[15‬‬
‫]‪r[7‬‬ ‫‪.‬‬ ‫‪Ins‬‬ ‫‪.‬‬ ‫‪Locals‬‬ ‫‪.‬‬ ‫‪Outs‬‬
‫‪.‬‬ ‫سراسری‬ ‫]‪r[24‬‬ ‫]‪r[16‬‬ ‫]‪r[8‬‬

‫]‪r[0‬‬ ‫(الف) سه پنجره ثبات همپوش و ثباتهای سراسری‬

‫‪W7‬‬
‫‪W7 Ins‬‬ ‫‪Locals‬‬
‫‪W7 Outs‬‬
‫‪W0‬‬
‫‪Outs‬‬ ‫‪W6 Ins‬‬
‫‪W1 Outs‬‬ ‫‪W0 Locals‬‬
‫‪W0 Ins‬‬
‫‪W1‬‬ ‫‪W6‬‬
‫‪Locals‬‬ ‫‪Locals‬‬
‫‪W5 Ins‬‬
‫‪W6 Outs‬‬
‫‪W1 Ins W2 Outs‬‬
‫‪W5‬‬
‫‪W2‬‬
‫‪W4 Ins‬‬ ‫‪Locals‬‬
‫‪Locals‬‬
‫‪W2 Ins‬‬
‫‪W4‬‬ ‫‪W5 Outs‬‬
‫‪W4‬‬
‫‪locals‬‬
‫‪Outs‬‬
‫‪W3 Outs‬‬
‫‪W3‬‬
‫‪Locals‬‬ ‫‪W3 Ins‬‬

‫(ب) ‪ 8‬پنجره ثبات که یک پشته چرخشی را شکل میدهند‬


‫شکل ‪ :3-4‬مفهوم پنجرههای همپوش در معماری ‪SPARC‬‬

‫پردازنده ریسک بعضی دستورات جالبِ موجود در پردازنده سیسک را ندارد‪ .‬افزایش طول برنامه ریسک به مفهوم‬
‫ترافیک دستور بیشتر و تقاضای حافظه بیشتر است‪ .‬مشکل دیگر ریسک استفاده از فایل ثبات بزرگ است‪ .‬هرچند‬
‫که مجموعه ثبات بزرگتر نتایج بالفصل بیشتری را نگه میدارد و ترافیک داده بین حافظه و پردازنده را کم میکند‪،‬‬
‫ولی سیستم دیکد ثبات خیلی پیچیدهتر خواهد بود‪ .‬زمان دسترسی‪ -‬ثبات بیشتر تقاضای بیشتری به کامپایلر برای‬
‫مدیریت عملیات پنجره ثبات را ایجاد میکند‪ .‬نکته منفی دیگر ریسک روی کنترل سختافزاری آن قرار دارد که‬
‫انعطافپذیری کمتر و مساعد خطای بیشتر است‪.‬‬

‫نواقص ریسک مستقیماً وابسته به بعضی از مزایای ادعا شده آن است‪ .‬آزمایشات کاربردی و برنامههای محک‬
‫بیشتری نیاز است تا طول بهینه مجموعه ثبات‪ I-cache ،‬و ‪ D-cache‬را تعیین کند‪ .‬بهبود بیشتر پردازنده ممکن‬
‫است شامل ‪ ALU‬صحیح ‪ 64‬بیتی‪ ،‬پشتیبانی ریزپردازنده از منطق جستجو برای کنترل همبستگی حافظه نهان‪،‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 170‬‬

‫همزمانی سریعتر بین پردازنده یا پشتیبانی سختافزار برای ارسال پیام‪ ،‬و واحدهای عملیاتی خاص یا رابطهای‬
‫ورودی‪/‬خروجی و پشتیبانی گرافیکی شود‪.‬‬

‫‪ -2-4‬پردازندههای سوپراسکالر و برداری‬


‫پردازنده اسکالر سیسک یا ریسک می تواند با معماری سوپراسکالر یا برداری بهبود داده شود‪ .‬پردازندههای اسکالر‬
‫آنهایی هستند که یک دستور را در یک سیکل اجرا میکنند‪ .‬فقط یک دستور در هر سیکل منتشر میشود و فقط‬
‫اتمام یک دستور از خط لوله در هر سیکل مورد انتظار است‪.‬‬
‫در یک پردازنده سوپراسکالر‪ ،‬چندین خطلوله دستورالعمل استفاده میشود‪ .‬این به این معنی است که چندین دستور‬
‫در هر سیکل منتشر میشوند و چندین نتیجه در هر سیکل تولید میشوند‪ .‬یک پردازنده برداری دستورات برداری را‬
‫روی آرایهای از داده اجرا میکند‪ ،‬بنابراین هر دستور شامل رشتهای از عملیات تکراری است‪ ،‬که برای خطلوله با‬
‫یک نتیجه در هر سیکل ایدهآل هستند‪.‬‬
‫‪ -1-2-4‬پردازندههای سوپراسکالر‬
‫پردازندههای سوپراسکالر برای بهرهبرداری موازات سطح‪-‬دستورِ بیشتر‪ ،‬در برنامههای کاربر طراحی شده است‪ .‬فقط‬
‫دستورات مستقل می توانند بدون ایجاد حالت انتظار بطور موازی اجرا شوند‪ .‬مقدار موازات سطح‪-‬دستور بطور‬
‫گستردهای متغیر است و وابسته به نوع کد در حال اجرا میباشد‪.‬‬
‫مقدار میانگین مشاهده شده برای کد بدون حلقه باز شده‪ ،1‬حول و حوش ‪ 2‬است‪ .‬بنابراین‪ ،‬برای این کدها‪ ،‬سود‬
‫زیادی از ساخت ماشینهایی که بیشتر از سه دستور را در هر سیکل منتشر میکنند بدست نمیآید‪ .‬درجه انتشار‬
‫دستور در یک پردازنده سوپراسکالر در عمل بین ‪ 2‬تا ‪ 4‬محدود شده است‪ .‬مفهوم حلقه باز شده در فصل ‪ 6‬مطالعه‬
‫خواهد شد‪.‬‬

‫خطلوله در پردازندههای سوپر اسکالر‪ :‬ساختار پایه یک خطلوله سوپر اسکالر در شکل ‪ 4-4‬نشان داده شده‬
‫است‪ .‬این طرح استفاده از سه خطلوله دستورالعمل بطور موازی برای یک پردازنده سه‪-‬انتشاره را نشان میدهد‪.‬‬
‫پردازندههای سوپراسکالر ابتداً به عنوان بهبودی به پردازندههای برداری توسعه داده شدند‪.‬‬

‫‪Fetch decode execute writeback‬‬

‫‪1‬‬
‫‪Loop unrolling‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4 5 6 7 8 9‬‬
‫زمان براساس سیکل پایه‬

‫شکل ‪ :4-4‬یک پردازنده سوپراسکالر با درجه ‪m=3‬‬


‫‪| 171‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫یک پردازنده سوپراسکالر درجه ‪ m‬میتواند ‪ m‬دستور را در هر سیکل منتشر کند‪ .‬در این حالت پردازنده اسکالر پایه‬
‫پیادهسازی شده در ریسک یا سیسک درجه ‪ m=1‬دارد‪ .‬به منظور اینکه یک پردازنده سوپراسکالر با درجه ‪ m‬بطور‬
‫کامل بهرهبرداری شود باید ‪ m‬دستور قابل اجرا بطور موازی باشند‪ .‬این شرایط نمیتواند در همه پالسهای ساعت‬
‫درست باشد‪ .‬در این حالت بعضی از خطلولهها ممکن است در حالت انتظار‪ 1‬قرار گیرند‪.‬‬

‫در یک پردازنده سوپراسکالر‪ ،‬تأخیر دستور ساده‪ ،‬مثل پردازنده اسکالر پایه باید فقط به یک سیکل نیاز داشته باشد‪.‬‬
‫زیرا انتظار موازت سطح دستور بیشتری در برنامهها از پردازنده سوپر اسکالر داریم‪ ،‬پردازنده سوپراسکالر به کامپایلر‬
‫بهینهتر برای بهرهبرداری از موازات نیاز دارد‪.‬‬

‫در تئوری‪ ،‬یک پردازنده سوپراسکالر میتواند کارایی مشابهی با سختافزار برداری بدست آورد‪ .‬یک ماشین‬
‫سوپراسکالر‪ ،‬که میتواند یک دستور ممیز ثابت‪ ،‬ممیز شناور‪ load ،‬و ‪ branch‬را منتشر کند و همه در یک سیکل‬
‫اجرا شوند به درجه موازات مشابه با یک ماشین برداری که ‪ load‬برداری را اجرا میکند که با جمع برداری زنجیره‬
‫شده است و هر ‪ load‬و ‪ add‬در یک سیکل اجرا میشوند میرسد‪ .‬یک پردازنده ریسک با معماری سوپراسکالر‬
‫در شکل ‪ 5-4‬نشان داده شده است‪.‬‬

‫حافظه دستورالعمل‬
‫فایل ثبات‬ ‫بافر مرتبسازی مجدد‬

‫حافظه نهان دستورالعمل‬

‫دیکدر‬ ‫واحد صحیح (هسته ریسک)‬

‫پرش‬ ‫‪ALU‬‬ ‫شیفت دهنده‬ ‫‪load‬‬ ‫‪store‬‬

‫واحد اعشاری‬
‫دیکدر‬ ‫فایل ثبات‬ ‫بافر مرتب سازی مجدد‬

‫تقسیم اعشاری ضرب اعشاری تبدیل اعشاری جمع اعشاری‬ ‫‪Float load‬‬ ‫‪Float store‬‬

‫حافظه داده‬ ‫حافظه نهان‬


‫داده‬
‫شکل ‪ :5-4‬یک پردازنده ریسک سوپر اسکالر با یک واحد اعشاری‬
‫‪1‬‬
‫‪stall‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 172‬‬

‫چند خطلوله دستورالعمل در این معماری استفاده میشوند‪ .‬حافظه نهان دستورالعمل چند دستور را برای برداشت‬
‫تهیه می کند‪ .‬به هرحال‪ ،‬تعداد دقیق دستورات منتشر شده در واحدهای عملیات مختلف ممکن است در هر پالس‬
‫متغیر باشد‪ .‬تعداد به خاطر وابستگی داده و تداخل منابع در بین دستوراتی که همزمان دیکد میشوند محدود شده‬
‫است‪ .‬چندین واحد عملیاتی در واحد صحیح و ممیز شناور ساخته شده است‪.‬‬

‫چند گذرگاه داده بین واحدهای عملیاتی وجود دارد‪ .‬در تئوری‪ ،‬همه واحدهای عملیاتی میتوانند باهم استفاده شوند‬
‫اگر تداخل و وابستگی بین آنها در یک سیکل داده شده وجود نداشته باشد‪.‬‬

‫‪ -2-2-4‬معماری ‪ : VLIW‬معماری ‪ VLIW‬به خاطر دو مفهوم عمومی شد‪ :‬میکروکد افقی و پردازش سوپر‬
‫اسکالر‪ .‬یک ماشین ‪ VLIW‬معمولی کلمات دستور با طول چندصد بیت دارد‪ .‬همانطور که در شکل ‪(6-4‬الف) نشان‬
‫داده شده است چندین واحد عملیاتی بطور همروند در یک پردازنده ‪ VLIW‬استفاده میشوند‪ .‬همه واحدهای عملیاتی‬
‫از یک فایل ثبات بزرگ مشترک استفاده میکنند‪ .‬عملیاتی که بطور همزمان توسط واحدهای عملیاتی اجرا شوند‬
‫در یک دستور ‪ VLIW‬قرار میگیرند و طول دستور ‪ 256‬یا ‪ 1024‬بیت است‪.‬‬

‫مفهوم ‪ VLIW‬از میکرو کد افقی بدست آمد‪ .‬فیلدهای مختلف کلمه دستور طوالنی‪opcode ،‬هایی که باید به‬
‫دادههای عملیاتی مختلف اِعمال شوند را حمل میکنند‪ .‬برنامههای نوشته شده در کلمات دستور کوتاه رایج (‪32‬‬
‫بیتی) باید با هم مقایسه شوند تا دستورات ‪ VLIW‬را شکل دهند‪ .‬این فشرده سازی کد باید توسط کامپایلری که‬
‫میتواند خروجیهای پرش را بطور هوشمندانه پیشبینی کند‪ ،‬انجام شود‪.‬‬

‫خطلوله در پردازندههای ‪ :VLIW‬اجرای دستورات با یک پردازنده ‪ VLIW‬ایدهآل در شکل ‪(6-4‬ب) نشان‬


‫داده شده است‪ .‬هر دستور چندین عمل را تعیین میکند‪ CPI .‬مفید در این مثال خاص ‪ 0.33‬میباشد‪ .‬ماشینهای‬
‫‪ VLIW‬شبیه ماشینهای سوپراسکالر عمل میکنند با سه تفاوت‪ :‬اوالً‪ ،‬دیکد دستورات ‪ VLIW‬از دستورات‬
‫سوپراسکالر سادهتر است‪ .‬دوماً‪ ،‬چگالی کد ماشین سوپراسکالر وقتیکه موازات سطح‪-‬دستور قابل دسترسی از آنچه‬
‫که توسط ماشین ‪ VLIW‬قابل بهره برداری است کمتر باشد‪ ،‬بهتر است‪ .‬این به این دلیل است که شکل ‪VLIW‬‬
‫ثابت شامل بیتهایی برای عملیات غیرقابل اجرا میباشد‪ ،‬درحالیکه سوپراسکالر فقط دستورات قابل اجرا را منتشر‬
‫میکند‪.‬‬

‫سوماً‪ ،‬یک ماشین سوپراسکالر با خانواده زیادی از ماشینهای غیرموازی سازگاری کد و شیء دارد‪ .‬درحالیکه یک‬
‫ماشین ‪ VLIW‬که مقدار متفاوتی از موازات را بهرهبرداری میکند نیازمند مجموعه دستور متفاوتی است‪.‬‬

‫موازات دستور و انتقال داده در یک معماری ‪ VLIW‬بطور کامل در زمان کامپایل تعیین میشود‪ .‬بنابراین زمانبندی‬
‫و همزمانی منبع در زمان اجرا کامالً حذف شده است‪ .‬یک ماشین ‪ VLIW‬را میتوان یک سوپراسکالر فوقالعاده‬
‫دید که همه دستورات مستقل و غیروابسته بطور پیشرفتهای بطور همزمان باهم فشرده شدهاند‪CPI .‬ی یک پردازنده‬
‫‪ VLIW‬میتواند کمتر از یک پردازنده سوپراسکالر باشد‪ .‬به عنوان مثال‪ ،‬کامپیوتر ردیابی چندجریانه اجازه میدهد‬
‫تا ‪ 7‬عملیات بطور همروند با ‪ 256‬بیت در یک دستور ‪ VLIW‬اجرا شوند‪.‬‬
‫‪| 173‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬
‫حافظه‬
‫فایلهای ثبات‬
‫اصلی‬

‫واحد‬ ‫واحد جمع ‪F.P‬‬ ‫‪ ALU‬صحیح‬ ‫واحد پرش‬


‫‪load/store‬‬

‫‪Load/store‬‬ ‫‪Fp ADD‬‬ ‫‪Fp Multiply‬‬ ‫‪Branch‬‬ ‫…‬ ‫‪Integer ALU‬‬


‫(الف) یک پردازنده ‪ VLIW‬معمولی و شکل دستورالعمل‬

‫‪fetch decode‬‬ ‫‪writeback‬‬

‫‪Execute‬‬
‫‪3 operand‬‬

‫‪2‬‬ ‫زمان برحسب سیکل پایه‬


‫‪1‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬
‫(ب) اجرای ‪ VLIW‬با درجه ‪3‬‬
‫شکل ‪ :6-4‬معماری پردازنده کلمه دستور بسیار طوالنی (‪ )VLIW‬و عملیات خطلوله‬
‫فرصتهای ‪ :VLIW‬در یک معماری ‪ ،VLIW‬بجای اینکه مثل سوپراسکالرهای برداری شده یا کامپیوتر ‪SIMD‬‬
‫از موازات همزمان و معمولی استفاده شود‪ ،‬از موازات تصادفی بین عملیات اسکالر بهرهبرداری میشود‪ .‬موفقیت‬
‫پردازنده ‪ VLIW‬بطور زیادی وابسته به بازدهی فشرده کردن کد است‪ .‬معماری بطور کامل با هر پردازنده همه‬
‫منظوره سنتی ناسازگار است‪.‬‬

‫بنابراین‪ ،‬موازات دستورالعمل قرار داده شده در کد فشرده ممکن است تأخیر متفاوتی برای اجرا توسط واحدهای‬
‫عملیاتی مختلف نیاز داشته باشد حتی اگر دستورات در زمان مشابهی منتشر شوند‪ .‬بنابراین‪ ،‬پیادهسازیهای مختلفِ‬
‫معماری ‪ VLIW‬مشابه ممکن است از لحاظ باینری سازگار نباشند‪.‬‬

‫با رمزگذاری موازات بطور صریح در دستورات بزرگ‪ ،‬یک پردازنده ‪ VLIW‬میتواند سخت افزار و نرم افزار مورد‬
‫نیاز برای تشخیص موازات را حذف کند‪ .‬عمدهترین فایده معماری ‪ VLIW‬سادگی در ساختار سخت افزار و مجموعه‬
‫دستورالعمل میباشد‪ .‬پردازنده ‪ VLIW‬میتواند در کاربردهای عملی که رفتار برنامه (پیش بینی پرش) قابل پیش‪-‬‬
‫بینیتر است انجام وظیفه کند‪.‬‬

‫ممکن است در کاربردهای همه منظوره معماری بخوبی قادر به انجام وظیفه نباشد‪ .‬به خاطر کمبود سازگاری با‬
‫نرمافزارها و سختافزارهای رایج‪ ،‬معماری ‪ VLIW‬بطور رسمی به رشته کامپیوتر وارد نشده است‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 174‬‬

‫‪ - 3-2-4‬پردازندههای برداری سمبلیک‬


‫یک پردازنده برداری یک کمک پردازنده است که برای انجام عملیات برداری طراحی شده است‪ .‬یک دستور برداری‬
‫شامل آرایه بزرگی از عملوندها است‪ .‬به عبارت دیگر‪ ،‬عمل مشابهی روی رشتهای از دادهها انجام خواهد شد‪.‬‬
‫پردازندههای برداری اغلب در سوپرکامپیوترهای چند خطلولهای استفاده میشوند‪.‬‬

‫یک پردازنده برداری‪ ،‬را میتوان یک معماری ثبات به ثبات یا معماری حافظه به حافظه فرض کرد‪ .‬اولی دستورات‬
‫کوچکتر و فایل ثبات برداری استفاده میکند‪ .‬دومی دستورات پایه‪-‬حافظه شامل آدرسهای حافظه را انجام میدهد‬
‫که از لحاظ طول بزرگترند‪.‬‬

‫دستورات برداری‪ :‬دستورات برداری بر اساس ثبات در اکثر پردازندههای برداری ثبات به ثبات مثل‬
‫سوپرکامپیوترهای ‪ Cray‬ظاهر میشوند‪ .‬یک ثبات برداری با طول ‪ i‬را با ‪ Vi‬یک ثبات اسکالر را با ‪ Si‬و یک آرایه‬
‫حافظه به طول ‪ n‬را با )‪ M(1:n‬نشان میدهیم‪ .‬عملیات برداری پایه‪-‬ثبات در زیر لیست شدهاند‪ ،‬که یک عملگر‬
‫برداری با دایره کوچک ‪ o‬نشان داده میشود‪.‬‬

‫‪V1o V2→V3‬‬ ‫(بردار باینری)‬


‫‪S1o V1→V2‬‬ ‫(مقیاس پذیری)‬
‫‪V1o V2→S1‬‬ ‫(کاهش باینری)‬
‫‪M(1:n)→V1‬‬ ‫(بارکردن برداری)‬
‫)‪V1→M(1:n‬‬ ‫(ذخیره کردن برداری)‬
‫‪oV1→V2‬‬ ‫)‪(unary vector‬‬
‫‪oV1→S1‬‬ ‫)‪(unary decrease‬‬
‫باید یادآوری کنیم که طول بردار باید برابر با طول عملوندهایی که در یک دستور برداری استفاده میشوند‪ ،‬باشد‪.‬‬
‫کاهش‪ ،‬عملی روی یک یا دو عملوند است و نتیجه اسکالر است‪ .‬مثل ضرب نقطهای بین دو بردار و ماکزیمم همه‬
‫اجزاء یک بردار‪.‬‬

‫در همه حاالت این عملیات برداری توسط واحدهای خطلوله خاص مثل خطلولههای عملیاتی و خطلولههای‬
‫دسترسی‪-‬حافظه انجام میشوند‪ .‬بردارهای بزرگ که از طول ثبات ‪ n‬تجاوز میکنند باید تقسیم بندی شوند تا در‬
‫‪ n‬ثبات برداری در یک لحظه جا شوند‪.‬‬

‫عملیات برداری حافظه‪-‬پایه در پردازندههای برداری حافظه‪-‬حافظه مانند ‪ Cyber 2.5‬پیدا میشوند‪ .‬چند مثال در‬
‫زیر لیست شده است‪:‬‬

‫)‪M1(1:n)o M2(1:n)→M(1:n‬‬
‫)‪S1oM1(1:n)→M2(1:n‬‬ ‫)‪(4-2‬‬
‫)‪oM1(1:n)→M2(1:n‬‬
‫)‪M1(1:n)o M2(1:n)→M(k‬‬
‫‪| 175‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫که )‪ M1(1:n‬و )‪ M2(1:n‬دو بردار به طول ‪ n‬هستند و )‪ M(k‬یک مقدار اسکالر را نشان میدهد که در مکان‬
‫‪ k‬حافظه ذخیره شده است‪ .‬نکته اینکه طول بردار با طول ثبات محدود نشده است‪ .‬بردارهای بزرگ بطور متوالی با‬
‫استفاده از سوپر کلماتی که از تعداد زیادی کلمه حافظه کوچکتر ایجاد شدهاند ‪ ،‬راهاندازی میشوند‪ .‬جزئیات این‬
‫پردازندهها در فصل ‪ 8‬مطالعه خواهند شد‪.‬‬

‫خطلولههای برداری‪ :‬پردازندههای برداری مزیت موازات سطح‪-‬حلقه بازشده را دارند‪ .‬خطلولههای برداری می‪-‬‬
‫توانند به هر پردازنده اسکالر چه سوپراسکالر باشد چه سوپر پایپالین یا هردو الحاق شوند‪.‬‬

‫خطلولههای برداری خاص‪ ،‬بعضی سربارهای نرمافزاری را در کنترل حلقه حذف خواهند کرد‪ .‬درحقیقت‪ ،‬مؤثر بودن‬
‫یک پردازنده برداری روی قابلیت یک کامپایلر بهینه که کد ترتیبی را برای خطلوله برداری‪ ،‬برداری میکند‪ ،‬تکیه‬
‫میکند‪.‬‬

‫اجرای خطلوله شده یک پردازنده برداری با پردازنده اسکالر در شکل ‪ 7-4‬مقایسه شده است‪ .‬شکل ‪(7-4‬الف) اجرای‬
‫دستور اسکالر است ک ه هر دستور اسکالر فقط یک عمل روی یک عنصر داده را اجرا میکند‪ .‬برای سادگی‪ ،‬فقط‬
‫نشر ترتیبی و اجرای موازی دستورات موازی در شکل ‪(7-4‬ب) نشان داده شده است‪ .‬هر دستور برداری رشتهای از‬
‫عملیات را (یکی برای هر عنصر در بردار) اجرا میکند‪.‬‬

‫‪Fetch decode execute writeback‬‬


‫دستورات‬
‫متوالی‬

‫زمان براساس سیکل پایه‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫‪16‬‬
‫(الف) اجرا در یک پردازنده اسکالر‬

‫دستورات‬
‫متوالی‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫زمان براساس سیکل پایه‪16‬‬
‫(ب) اجرای خط لوله برداری‬
‫شکل ‪ :7-4‬اجرای خط لوله در یک پردازنده اسکالر پایه و پردازنده برداری‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 176‬‬

‫پردازندههای سمبلیک‪ :‬پردازش سمبلیک در نواحی زیادی اِعمال میشود‪ .‬شامل اثبات تئوری‪ ،‬تشخیص الگو‪،‬‬
‫سیستم های خبره‪ ،‬مهندسی دانش‪ ،‬بازیابی متن‪ ،‬علم روانشناختی و ماشین هوشمند‪ .‬در این کاربردها‪ ،‬حافظه‪،‬‬
‫ورودی‪/‬خروجی ‪ ،‬و ارتباطات و خواص معماری خاص از محاسبات عددی متفاوتند‪ .‬به پردازندههای سمبلیک‪،‬‬
‫پردازندههای پرولوگ‪ ،‬پردازندههای لیسپ یا دستکاری کنندههای سمبلیک نیز میگویند‪.‬‬

‫به عنوان مثال‪ ،‬یک برنامه لیسپ را میتوان به عنوان مجموعهای از توابع که دادهها از تابع به تابع در آنها منتقل‬
‫می شود‪ ،‬مشاهده کرد‪ .‬اجرای همروند این توابع پایه موازات را شکل میدهند‪ .‬طبیعت بازگشتی و کاربردی لیسپ‪،‬‬
‫محیطی را نیاز دارد که بطور مؤثری فراخوانی تابع و محاسبات پشته را پشتیبانی کند‪ .‬استفاده از لیستهای پیوند‬
‫داده به عنوان ساختمان داده پایه امکان پیادهسازی یک مکانیزم مجموعه اتوماتیک را ایجاد میکند‪.‬‬

‫جدول ‪ ، 2-4‬خواص عمده پردازش سمبلیک را خالصه کرده است‪ .‬بجای کارکردن با داده عددی‪ ،‬پردازش موازی‬
‫با برنامههای منطقی‪ ،‬لیستهای سمبلیک‪ ،‬تطابق الگو‪ ،‬یگانگی‪ ،‬فیلترینگ‪ ،‬محتوا‪ ،‬بازیابی‪ ،‬عملیات مجموعهای‪،‬‬
‫بستگی انتقالی و عملیات مستدل کار میکند‪ .‬عملیات مجموعه دستورات خاصی را تقاضا میکند مثل مقایسه‪،‬‬
‫تطابق‪ ،‬منطق و عملیات دستکاری سمبلیک‪ .‬عملیات ممیز شناور اغلب در این ماشینها استفاده نمیشود‪.‬‬

‫توضیحات‬ ‫خصوصیت‬
‫لیستها‪ ،‬پایگاه دادههای رابطهای‪ ،‬سندها‪ ،‬شبکههای گرامری‪ ،‬فریمها‪ ،‬اشیاء سیستمهای تولید‬ ‫نمایشهای دانش‬
‫جستجو‪ ،‬مرتب سازی‪ ،‬تطابق الگو‪ ،‬فیلترینگ‪ ،‬محتوا‪ ،‬بخشها‪ ،‬بسته بودن انتقالی‪ ،‬بازیابی متن‪ ،‬عملیات مجموعه‪-‬‬
‫عملیات رایج‬
‫ای‪ ،‬استدالل‬
‫حافظه بزرگ‪ ،‬الگوی دسترسی حسابی‪ ،‬آدرس دهی اغلب وابسته به متن است‪ .‬محلیت مراجعه ممکن است حفظ‬
‫نیازهای حافظه‬
‫نشود‪.‬‬
‫ترافیک پیام در اندازه و مقصد متغیر است‪ .‬دانهبندی و شکل واحد پیام با کاربردها تغییر میکند‪.‬‬ ‫الگوهای ارتباطی‬
‫نامعین‪ ،‬محاسبات توزیع شده و مواز ی ممکن‪ .‬وابستگی داده ممکن است سراسری باشد و در الگو و دانهبندی‬
‫خواص الگوریتمها‬
‫نامنظم باشد‪.‬‬
‫برنامههای راهنمای کاربر‪ ،‬رابطههای ماشین‪-‬فرد هوشمند‪ :‬ورودیها میتوانند گرافیکی باشند و صوتی و صفحه‬ ‫نیازهای ورودی‪-‬‬
‫کلید‪ .‬دسترسی به پایگاه دادههای آنالین خیلی بزرگ‬ ‫خروجی‬
‫بروزرسانی موازی پایگاه دانش بزرگ‪ .‬باالنس بار پویا‪ .‬تخصیص حافظه پویا‬ ‫خواص معماری‬
‫جدول ‪ :2-4‬خواص پردازش سمبلیک‬
‫مثال‪ :1-4‬پردازنده لیسپ ‪ 3600‬سمبلیک‪ :‬معماری پردازنده سمبلیک ‪ 3600‬در شکل ‪ 8-4‬نشان داده‬
‫شده است‪ .‬این یک ماشین پشتهگرا است‪ .‬تقسیم معماری کلی ماشین به الیهها اجازه استفاده از مدل ماشین پشته‬
‫خالص به منظور سادگی طراحی مجموعه دستورالعمل را میدهد‪ .‬پیادهسازی با یک ماشین پشتهگرا انجام میشود‪.‬‬
‫حافظههای موقت و بافر پشته هم سرعت با حافظه نهان هستند‪.‬‬

‫‪ Symbolic 3600‬اکثر دستورات لیسپ را در یک پالس ساعت اجرا میکند‪ .‬واحد صحیح عملوندها را از بافر‬
‫پشته برمیدارد‪ .‬واحدهای ممیز شناور‪ ،‬جمعآوری آشغال‪ ،‬چک نوع داده در پردازنده تگ و جمع ممیز ثابت میتوانند‬
‫بصورت موازی اجرا شوند‪.‬‬
‫‪| 177‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫پردازنده تگ‬
‫ثباتها و حافظه موقت‬

‫بافر پشته‬ ‫انتخاب کننده‬ ‫پردازنده ممیز ثابت‬

‫عملوند‬
‫دستور جاری‬
‫پردازنده ممیز شناور‬
‫حافظه اصلی‬
‫جمع کننده اشغال‬
‫شکل ‪ :8-4‬معماری پردازنده لیسپ ‪ 3600‬سمبلیک‬

‫‪ -4-2-4‬مقدمهای بر پردازندههای چند هستهای‬

‫با پیشرفت تکنولوژی میکروالکترونیک مفاهیم پیادهسازی سیستمهای الکترونیکی دچار تغییرات عمدهای شد‪ .‬تا‬
‫قبل از این تغییرات‪ ،‬سیستمهای پیچیده با اتصال مدارات مجتمع عمومی یا مدارات مجتمع با کاربرد خاص‪ 1‬صرفاً‬
‫بر روی برد‪ 2‬پیاده سازی میشدند‪ .‬در اوایل دهه ‪ 90‬میالدی این فلسفه طراحی‪ ،‬همراه با افزایش تعداد‬
‫ترانزیستورهای مدارات مجتمع تغییر یافت و پیادهسازی سیستم بر برد جای خود را به پیاده سازی سیستم بر تراشه‪3‬‬

‫داد‪ .‬در این روش طراحی به جای اتصاالت مدارات مجتمع بر روی برد از اتصال هستهها بر روی تراشه استفاده‬
‫میشود‪ .‬در واقع همان عملکرد مدارات مجتمع را اکنون هستهها انجام می دهند‪ .‬این هستهها که به هستههای‬
‫‪ 4IP‬معروف هستند از طریق گذرگاههای الکتریکی با یکدیگر ارتباط برقرار میکنند‪ .‬از اواسط سال ‪ 1990‬سیستم‬
‫روی تراشه به عنوان مدار مجتمعی شامل هستههای منطقی تعریف میشود که مطابق کاربرد تراشه مذکور‪ ،‬روی‬
‫یک تراشه چیده شده است‪.‬‬
‫با افزایش تعداد ترانزیستتورها و پیچیدهتر شتدن ستیستتم بر تراشته‪ ،‬امکان استتفاده از این گذرگاهها با مشتکل مواجه‬
‫شتد و چون ارتباط میان هستتههای ‪ IP‬امری اجتناب ناپذیر استت‪ ،‬ایده شتبکه بر تراشته که دنبالهای از ایده ستیستتم‬
‫بر تراشته استت مطرح شتد که در آن هستتهها بر استاس یک زیرستاخت ارتباطی شتامل ستوئیچها یا مستیریابها از‬
‫طریق لینکهای ارتباطی که شتبکه میان ارتباطی‪ 5‬نامیده میشتوند‪ ،‬به یکدیگر متصتل میگردند‪ .‬هدف اصتلی از‬
‫طراحی مفهوم شتبکه بر تراشته به عنوان شتبکهای میان ارتباطی در ستطح تراشته‪ ،‬نیل به بهرهوری‪ 6‬و کارایی‪ 7‬باالتر‬
‫استت که با یاری افزایش میزان موازات‪ ،‬پیچیدگی ستاخت و تولید‪ ،8‬بهبود مشتکالت ستیمکشتی روی تراشته و توستعه‬
‫قابلیت اطمینان انجام میگردد‪.‬‬

‫ستیستتم بر ت راشته در حقیقت یک ستیستتم متراکم با عمکرد بستیار پیچیده استت که شتامل تعداد زیادی از واحدهای‬

‫‪1‬‬
‫‪ASIC‬‬
‫‪2‬‬
‫‪Board‬‬
‫‪3‬‬
‫)‪System on Chip(SoC‬‬
‫‪4‬‬
‫‪Intellectual Property‬‬
‫‪5‬‬
‫‪Interconnection Network‬‬
‫‪6‬‬
‫‪Productivity‬‬
‫‪7‬‬
‫‪Performance‬‬
‫‪8‬‬
‫‪Manufacturing complexity‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 178‬‬

‫عملیاتی به نام هستته‪ 1‬میباشتد‪ .‬هر یک از هستتهها در واقع مجموعهای از کدهای توصتیف ستخت افزاری هستتند‬
‫که بر حستب قابلیتهای مدنظر هستته‪ ،‬طراحی و پیادهستازی میشتوند‪ .‬در واقع نقش هستتهها در یک واحد ستیستتم‬
‫بر تراشه همانند تراشههای واقع بر روی برد میباشد‪.‬‬

‫این اجزاء از پیش طراحی شتده میتواند شتامل حافظهها‪ ،‬پردازندهها و کنترل کنندهها باشند‪ .‬ارتباطات بین هستهای‬
‫در سیستم بر تراشه به دو روش زیر صورت میگیرد‪:‬‬

‫‪ ‬نقطه به نقطه‪ :2‬در این روش برای ارتباط بین هر دو هسته یک کانال اختصاصی وجود دارد‪.‬‬
‫‪ ‬گذرگاه مشترک‪ :‬در این روش یک کانال مشترک در بین تمام هستهها وجود دارد‪.‬‬
‫این دو ستاختار ارتباطی ذکر شتده در شتکل)‪ (9-4‬نشتان داده شتدهاند‪ .‬بدیهی استت که ستیستتمهای بر‬
‫تراشتهای که از ستیم بندی اختصتاصتی استتفاده می نمایند‪ ،‬نستبت به ستیستتمهای مبتنی بر گذرگاه از مقیاسپذیری‬
‫پایینتری برخوردار هستند‪.‬‬

‫شکل‪ : 9-4‬ساختار ارتباطات در سیستم بر تراشه الف)اتصال نظیر به نظیر‪ ،‬ب)گذرگاه اشتراکی‪.‬‬

‫بته علتت پیچیتدگی و حجم بتاالی الگوریتمهتا و همچنین افزایش تعتداد ارتبتاطتات درونی در تراشتتتههتا‪ ،‬طرح‬
‫ستیستتم بر تراشته کارایی خود را از دستت داد‪ .‬به عنوان نمونه‪ ،‬گذرگاهها قادر به برقراری ارتباط میان ‪ 3‬تا ‪ 10‬هستته‬
‫پردازشتتتگر به شتتتکل بهینه بودند و مقیاسپذیری به تعداد بیشتتتتری از هستتتتهها امکانپذیر نبود‪ .‬از جمله دیگر‬
‫چالشهای مهم در سیستمهای بر تراشه عبارتاند از‪:‬‬

‫‪ .1‬تأخیر ستیمها‪ :‬ستیستتم بر تراشتههایی که ستطح بزرگی از تراشه را گرفته و نیاز به سیمهای طوالنی برای‬
‫برقراری ارتباطات بین هستتهای دارند‪ ،‬ستبب افزایش تأخیر و عدم ستنکرون بودن ارتباطات میشتوند‪ .‬به‬
‫عبارت دیگر مسئله توزیع ساعت‪ 3‬و تأخیر انتقال‪ 4‬از مسائل مهم در سیستم بر تراشه میباشند‪.‬‬

‫‪1‬‬
‫‪Intellectual property core‬‬
‫‪2‬‬
‫‪Point to point‬‬
‫‪3‬‬
‫‪Clock Distribution‬‬
‫‪4‬‬
‫‪Propagation Delay‬‬
‫‪| 179‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫‪ .2‬توان مصترفی‪ :‬توانی که بوستیله انتشتار ستاعت در ستاختارهای ارتباطات داخلی مصترف میشتود‪ ،‬بخش‬
‫بزرگی از توان مصرفی در تراشه را تشکیل میدهد‪.‬‬
‫برای حل مستتئله تأخیر باید میزان گذردهی افزایش یابد‪ ،‬که این مستتئله باعث افزایش پارامترهای طراحی‬
‫مثل تعداد مراحل خط لوله‪ ،‬ستتنکرونستتازی و غیره میشتتود‪ .‬این بدان معناستتت که تأخیر کم نیازمند افزایش‬
‫پهنایباند و بالعکس پهنایباند کم به تأخیر زیاد منجر میشتود‪ .‬بدین ستبب طراحی مبتنی بر ارتباطات الیه بندی‬
‫شتده‪ 1‬شتبیه ارتباطات شتبکهای مطرح میشتود که باعث رفع چالشهای مطرح شتده میشتود‪ .‬مهمترین رویکرد این‬
‫طرح‪ ،‬معماری بر اساس جداسازی محاسبات از ارتباطات میباشد که به منظور برقراری ارتباطات از شبکه بر تراشه‬
‫مبتنی بر بسته‪ 2‬استفادمیشود‪.‬‬

‫ساختار انتزاعی شبکه بر تراشه مشابه مدل مرجع ‪ OSI‬طرح ریزی شده است‪ .‬که بدین ترتیب میتوان شبکه بر‬
‫تراشه را به چهار سطح تقسیم بندی کرد‪ .‬شکل (‪:)10-4‬‬

‫• الیه فیزیکی‬
‫• الیه پیوند دادهها‬
‫• الیه شبکه و انتقال‬
‫• الیه نرم افزار‬
‫ستتیمهای ستتراستتری در الیه فیزیکی قرار دارند‪ .‬با پیشتترفت بیشتتتر تکنولوژی و جهت حرکت آن به مقیاسهای‬
‫کوچکتر و توان کمتر‪ ،‬احتمال خطا افزایش مییابد‪.‬‬

‫الیه پیوند داده به عنوان یک دربرگیرنده الیه فیزیکی که آن را مستتعد خطا میداند عمل میکند‪ .‬این الیه وظیفه‬
‫مهیا ستازی دادههای بدون خطا و یا با میزان خطای کم‪ ،‬ولی قابل قبول را دارا میباشتد‪ .‬یکی ازروش های مبارزه‬
‫با خطاها تبدیل دادهها به بسته میباشد‪.‬‬

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

‫شکل ‪ :10-4‬سطوح انتزاع در شبکه بر تراشه (در چپ) و در ‪( OSI‬در راست)‪.‬‬


‫‪1‬‬
‫‪Layering Methodology‬‬
‫‪2‬‬
‫‪Packet based NoC‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 180‬‬

‫‪ -1-4-2-4‬انواع همبندیهای سیستمهای چندپردازندهای‬

‫نحوه اتصال پردازندهها به یکدیگر در یک سیستم چندپردازندهای‪ ،‬همبندی آن سیستم را مشخص میکند و در واقع‬
‫شبکه میان ارتباطی موجود بین پردازندههای هر سیستم چندپردازندهای را میتوان بوسیله یک گراف مشخص کرد‬
‫که هر گره این گراف نمایانگر یک عنصر پردازشی و هر یال آن نمایانگر کانال فیزیکی بین دو گره می باشد‪.‬‬
‫پیمایش از یک گره به گره همسایه را یک گام میگویند و حداقل تعداد گامهای بین هر دو گره فاصله بین آن دو‬
‫گره را مشخص میکند ‪ .‬شبکههای میان ارتباطی مورد استفاده در یک سیستم چندپردازندهای بر تراشه بر اساس‬
‫نوع کاربرد و معماری سیستم دارای همبندیهای مختلف و متعددی میباشند‪ .‬شکل ‪ ،11-4‬تعدادی از ساختارهای‬
‫پیشنهاد شده توسط گروههای تحقیقاتی مختلف برای همبندی سوئیچها در یک سیستم چندپردازندهای را نشان‬
‫میدهد‪.‬‬

‫شکل ‪ :11-4‬همبندیهای رایج در یک سیستم چندپردازندهای بر تراشه‪:‬‬


‫(الف) ‪( Cliché‬ب) درخت چاق باترفالی)‪( .(BFT‬ج) ‪( .Octagon C‬د) هم بندی خاص منظورهی نامنظم‬
‫رایجترین همبندی در یک سیستم چندپردازندهای بر تراشه همبندی مش و تروس است که در ‪ %60‬ساختارها بکار‬
‫گرفته شدهاند‪ .‬در هر دوی این معماریها‪ ،‬هر مسیریاب (گره پردازنده) با چهار گره همسایه خود مرتبط است‪ .‬عالوه‬
‫بر این در ساختار ‪ ،torus‬لینکهای کمربندی گرههای روی لبه همبندی را بهم متصل می نمایند‪ .‬این شبکهها‬
‫در سیستمهای چندپردازندهای بزرگ کاربرد بیشتری دارند‪.‬‬

‫یک همبندی رایج دیگر در سیستمهای چندپردازندهای‪ ،‬همبندی فوق مکعب است‪ .‬سیستمهای چندپردازندهای بر‬
‫مبنای همبندی فوق مکعب برای عملیات ‪ FFT‬مناسب هستند‪ .‬اولین سیستمی که بر مبنای این همبندی ساخته‬
‫شده است‪ ،‬سیستم بر تراشه ‪ Cosmic‬است که از ‪ 64‬پروسسور ‪ 8086‬تشکیل شده و توسط ‪ Caltech‬پردهبرداری‬
‫شده است‪.‬‬

‫نوع دیگر همبندی شبکه ‪ Baseline‬میباشد‪ .‬این شبکه امکان اتصال هر گره ورودی به هر گره خروجی را نمیدهد‬
‫و تنها میتواند ‪ 10%‬از کل ترافیک را مورد حمایت قرار دهد (شبکه بلوکه شدنی)‪ .‬روش رفع بنبست در این شبکه‬
‫میانارتباطی در فصل ‪ 2‬ارائه شد‪.‬‬
‫‪| 181‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫‪ -2-4-2-4‬الگوریتمهای مسیریابی در سیستمهای چندپردازندهای بر تراشه‬

‫یک الگوریتم مسیریابی‪ ،‬مسیری را که بسته یا پیغام باید طی کند تا به مقصد برسد مشخص می کند‪ .‬در این بخش‪،‬‬
‫آن دسته از الگوریتم های مسیریابی را بررسی خواهیم کرد که در شبکه اتصاالت داخلی سیستمهای چند پردازندهای‬
‫مورد استفاده قرار میگیرند‪.‬‬

‫هدف اصلی از این بخش بدست آوردن آگاهی و دانش کلی در مورد مفاهیم مطرح شده در بحث مسیریابی و آشنایی‬
‫با اصول پایهای مربوط به آن در سیستمهای چندپردازندهای میباشد‪.‬‬

‫خصوصیات مهم در الگوریتم های مسیریابی در سیستمهای چندپردازندهای‬

‫‪ .1‬قابلیت اتصال‪ :1‬قابلیت و توانایی مسیردهی بستهها از هر مبدأ به هر مقصد در شبکه‪.‬‬


‫‪ .2‬قابلیت وفقی بودن‪( 2‬تطبیقی)‪ :‬توانایی ارستال بستتهها به مقصتد از طریق مستیرهای متفاوت با وجود‬
‫اجزا و خطوط مشغول یا خطادار‪.‬‬
‫‪ .3‬عاری از بن بستتت و ستترگردانی بستتتهها‪ :‬توانایی تضتتمین اینکه بستتتهها تا ابد در شتتبکه ستترگردان‬
‫نخواهند بود و در بنبست نیز گرفتار نخواهند شد‪.‬‬
‫‪ .4‬قابلیت تحمل پذیری خطا‪ :‬توانایی مستیریابی بستتهها با وجود اجزاء معیوب و خطا دار‪ .‬شتاید اینگونه به‬
‫نظر برستد که تحمل پذیری خطا حتماً نیاز به وفقی بودن دارد ولی باید گفت که الزاماً اینگونه نیستت‪.‬‬
‫تحمل پذیری خطا را میتوان بدون وجود خاصیت وفقی بودن نیز بدست آورد‪ ،‬بدینگونه که بستهها را‬
‫در دو یا چند مرحله ارسال نمود و در بعضی گرههای میانی نیز ذخیره کرد‪.‬‬
‫عملیات سوئیچینگ کامالً به فرآیند مسیریابی وابسته است‪ .‬الگوریتمهای مسیریابی مسیری را که یک بسته بایستی‬
‫بپیماید تا از طریق آن به مقصد نهاییاش برسد را تعیین مینماید‪ .‬دسته بندی‪ ،‬ارزیابی و مقایسه روشهای مسیریابی‬
‫روی تراشه با بررسی حدمیانههای بسیاری‪ ،‬مانند پیچیدگی و سرعت مسیریاب در مقابل بهرهوری کانال و دوام‬
‫شبکه در مقابل ازدحام بستهها و شرایط نامساعد‪ ،‬آمیخته است‪.‬‬

‫طبقهبندی الگوریتمهای مسیریابی‪ :‬شکل ‪ 12-4‬یک طبقه بندی کلی از الگوریتمهای مسیریابی را نمایش‬
‫میدهد‪ .‬الگوریتمهای مسیریابی را میتوان بر اساس معیارهای مختلفی دسته بندی کرد‪ .‬این معیارها در ستون‬
‫سمت چپ نشان داده شدهاند‪ .‬هر سطر نیز نشاندهنده روشهای پیشنهاد شده برای هر معیار میباشد‪.‬‬

‫درابتدا میتوان الگوریتمهای مسیریابی را با توجه به تعداد مقصدهایشان دسته بندی کرد‪ .‬بستهها ممکن است فقط‬
‫دارای یک مقصد باشند یا اینکه دارای چندین مقصد باشند‪ .‬همچنین الگوریتمهای مسیریابی را میتوان با توجه به‬
‫مکان تصمیمگیریهای مربوط به مسیریابیهایشان دستهبندی کرد‪ .‬اساساً مسیر میتواند یا بوسیله یک کنترلر‬
‫مرکزی‪ ،‬پیش از تزریق بسته به شبکه و در گره مبدأ‪ ،‬ایجاد گردد و یا اینکه در زمان حرکت بسته‪ ،‬بصورت توزیع‬

‫‪1‬‬
‫‪Connectivity‬‬
‫‪2‬‬
‫‪Adaptivity‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 182‬‬

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

‫تعداد مقصدها‬ ‫مسیریابی تک پخشی‬ ‫مسیریابی چند پخشی‬

‫تصمیمهای مسیریابی‬ ‫مسیریابی متمرکز‬ ‫مسیریابی منبع‬ ‫مسیریابی توزیع شده‬ ‫مسیریابی چند فازه‬

‫پیاده سازی‬ ‫جدول جستجو‬ ‫ماشین حالت متناهی‬

‫وفق پذیری‬ ‫مسیریابی قطعی‬ ‫مسیریابی وفقی‬

‫جلورونده‬ ‫عقب گرد‬


‫قابلیت ترقی‬

‫کمینه سازی‬ ‫مقید‬ ‫‪Misrouting‬‬

‫تعداد مسیرها‬ ‫کامل‬ ‫جزئی‬

‫شکل ‪ :12-4‬یک طبقه بندی کلی از الگوریتمهای مسیریابی‬

‫الگوریتمهای مسیریابی میتوانند به صورتهای گوناگونی پیادهسازی شوند‪ .‬از مهمترین وجالبترین راههای ارائه‬
‫شده تاکنون میتوان به استفاده از جداول جستجو و اجرای یک الگوریتم مسیریابی به صورت نرم افزاری یا سخت‬
‫افزاری براساس یک ماشین حالت متناهی اشاره کرد‪ .‬در هر دو حالت الگوریتم مسیریابی میتواند قطعی یا وفقی‬
‫باشد‪ .‬الگوریتمهای مسیریابی قطعی‪ ،‬همیشه یک مسیر یکسان بین هر زوج گره مبدا و مقصد ایجاد میکنند‪.‬‬
‫الگوریتم های مسیریابی وفقی از اطالعات مربوط به ترافیک شبکه و یا حالت کانال جهت اجتناب از مناطق پر‬
‫ازدحام و خطادار شبکه استفاده میکنند‪.‬‬

‫الگوریتمهای مسیریابی وفقی را می توان بر اساس نحوه پیشروی آنها به دو دسته پیشرونده و بازگشت به عقب‬
‫تقسیم نمود‪ .‬الگوریتمهای پیشرونده‪ ،‬سرآیند بسته را بطرف جلو هدایت میکنند و برای هر عملیات مسیریابی یک‬
‫کانال جدید را رزرو میکنند‪ .‬الگوریتمهای عقبگرد اجازه میدهند تا سرآیند به عقب حرکت کرده و کانالهای‬
‫‪| 183‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫رزرو شده قبلی را رها سازد‪ .‬الگوریتمهای عقبگرد عمدتاً برای طراحی الگوریتمهای مسیریابی با قابلیت تحمل‬
‫خطا مورد استفاده قرار میگیرند‪.‬‬

‫در یک سطح پایینتر‪ ،‬الگوریتمهای مسیریابی را میتوان بر اساس کمینهگی شان به دو دسته مفید‪ 1‬و‬
‫‪ misrouting‬دستهبندی کرد‪ .‬الگوریتمهای مسیریابی مفید فقط کانالهایی را فراهم میکنند که بستهها را به‬
‫مقصدشان نزدیکتر کنند‪ .‬به این الگوریتمها کمینه‪ 2‬نیز گفته میشود‪ .‬الگوریتمهای ‪ misrouting‬کانالهایی را‬
‫که ممکن است بسته را از مقصد خود دورتر کنند‪ ،‬را نیز فراهم میآورند‪ .‬به این الگوریتمها‪ ،‬الگوریتمهای غیر کمینه‪3‬‬

‫گفته میشود‪.‬‬

‫در پایینترین سطح‪ ،‬الگوریتمهای مسیریابی می توانند بر اساس تعداد مسیرهای پیشنهادیشان به دو دسته کام ً‬
‫ال‬
‫وفقی‪ 4‬و تا اندازهای وفقی‪ 5‬تقسیم بندی شوند‪ .‬در اکثر کارهای پژوهشی‪ ،‬الگوریتمهای مسیریابی تکپخشی برای‬
‫چند پردازندهها بررسی میشود‪ .‬مسیریابی متمرکز به یک واحد کنترل مرکزی نیاز دارد‪ .‬در ادامهی این بخش با‬
‫ساختار مسیریابهای تشکیل دهنده شبکه بین عناصر پردازشی در یک سیستم چندپردازندهای بر تراشه آشنا خواهیم‬
‫شد‪.‬‬

‫بررسی ساختار یک مسیریاب تشکیلدهنده شبکه بین عناصر پردازشی بر تراشه‪ :‬بخشهای اصلی و‬
‫سازنده یک مسیریاب در شکل ‪ 13-4‬نشان داده شده است ‪.‬‬

‫شکل ‪ :13-4‬نمایی از یک مسیریاب معمولی با پورتهای ورودی و خروجی‪ ،‬بافرهایشان و مدارات مسیریابی‪.‬‬
‫‪1‬‬
‫‪profitable‬‬
‫‪2‬‬
‫‪minimal‬‬
‫‪3‬‬
‫‪non-minimal‬‬
‫‪4‬‬
‫‪Completely adaptive‬‬
‫‪5‬‬
‫‪partially adaptive‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 184‬‬

‫پورتهای ورودی و خروجی‪ : 1‬پورتهای ورودی و خروجی مسئول دریافت و ارسال بستههای اطالعاتی و‬
‫کنترلی هستند‪ .‬به این دلیل به وسیله روشهای گوناگون کنترل جریان داده با مسیریابهای اطراف به مبادله‬
‫اطالعات میپردازند و به این ترتیب خود را همگام میکنند‪.‬‬

‫بافرها در پورتهای ورودی و خروجی‪ : 2‬بافرها در مسیریابهایی استفاده میشوند که از مکانیزم سوئیچینگ‬
‫بستهای استفاده می نمایند‪ .‬به این ترتیب که به عنوان مثال در تکنیک سوئیچینگ خزشی‪ ،‬هر بسته به بخشهای‬
‫کوچکتری به نام ‪ flit‬تقسیم میشوند و ‪ flit‬ها‪ ،‬تا تعیین پورت خروجیشان که توسط سرآیند بسته دریافتی‪3‬‬

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

‫سوئیچ فابریک‪ :4‬ساختار سوئیچ فابریک مسئول نقل و انتقال بستههای داده در مسیریاب از پورتهای ورودی‬
‫به پورتهای خروجی مناسبشان است‪ .‬شایعترین ساختار سوئیچ فابریک همان ساختار مشهور تقاطعی است‪.‬‬

‫واحد مسیریابی‪ : 5‬واحد مسیریابی مسئول تعیین پورت خروجی مناسب برای بستههای دریافتی در پورتهای‬
‫ورودی است‪ .‬بدیهی است که رفتار این واحد با توجه به الگوریتم مسیریابی تعیین میشود‪.‬‬

‫واحد داوری‪ : 6‬واحد داوری بین پورتها عملیات زمانبندی را اجرا مینماید‪ .‬داوری تعیین میکند که اکنون نوبت‬
‫چه پورت ورودی است که مقصد بستههایش توسط واحد مسیریابی مشخص شود‪.‬‬

‫تأخیر یک مسیریاب در شبکه بر تراشه‪ :‬پژوهشهای انجام شده‪ ،‬حداقل تأخیر ورودی به خروجی در‬
‫مسیریابها را به وسیله دو مقیاس پالس ساعت و یا نانو ثانیه نشان میدهند‪ .‬در اکثر مقاالت فرض بر این گرفته‬
‫شده است که در حین ارسال بسته‪ ،‬هر ‪ flit‬در یک پالس ساعت منتقل میشود‪ .‬تأخیر بسته به درجه خطلوله در‬
‫مسیریابها وابسته است‪ .‬درجه خطلوله برابر با تعداد کل پورتهای مسیریاب است که همزمان همگی بستهای را‬
‫در پورت ورودی جهت ارسال به پورت خروجی مناسب داشته باشند‪ .‬به طور متوسط پنج پالس ساعت از ورودی‬
‫تا خروجی را میتوان به موارد زیر نسبت داد‪.‬‬

‫ورودی‪7‬‬ ‫‪ .1‬بافرینگ‬

‫‪1‬‬
‫‪Input-Output ports‬‬
‫‪2‬‬
‫‪Input-Output buffers‬‬
‫‪3‬‬
‫‪Header flit‬‬
‫‪4‬‬
‫‪Fabric switching‬‬
‫‪5‬‬
‫‪Routing unit‬‬
‫‪6‬‬
‫‪Arbitration unit‬‬
‫‪7‬‬
‫‪Input buffering‬‬
‫‪| 185‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫‪ .2‬مدیریت کانالهای‬
‫مجازی ‪1‬‬

‫‪ .3‬مسیریابی بسته‪2‬‬

‫‪ .4‬داوری خروجی‪3‬‬

‫‪ .5‬سوئیچینگ‪4‬‬

‫به عنوان مثالی از یک الگوریتم مسیریابی در یک شبکه میانارتباطی مش بین گرههای پردازشی‪ ،‬میتوان به‬
‫الگوریتم مسیریابی معروف و قطعی ‪ XY‬اشاره کرد‪.‬‬

‫الگوریتم ‪ XY‬یک الگوریتم قطعی است (در روشهای قطعی همانطور که پیش از آن سخن به میان آورده شد‪،‬‬
‫مسیر برمبنای مبدأ و مقصد کامالً از پیش معین است)‪ .‬فلیتهای بستهها ابتدا درجهت ‪ X‬هدایت میشوند تا زمانی‬
‫که به مختصات 𝑇𝑌 برسند و سپس درجهت 𝑌 هدایت می شوند‪ .‬اگر بعضی از هاپهای شبکه در حال استفاده‬
‫توسط یک بسته دیگری باشند‪ ،‬فلیت به صورت مسدود شده در همان سوئیچ میماند‪ ،‬تا زمانی که مسیر آزاد گردد‪.‬‬

‫این روش راه حل مناسبی است به این دلیل که‪:‬‬


‫‪ .1‬کوتاهترین مسیر پیدا شده و بدین ترتیب کمترین انرژی در انتقال هر واحد اطالعات صرف می شود‪.‬‬
‫‪ .2‬استفاده از چنین تابع ساده‪ ،‬تعداد گیتها را در مقایسه با طرح های مسیریابی مبتنی بر جدول و یا‬
‫مسیریابی مبتنی بر مبدأ کاهش میدهد‪ .‬این حقیقت که مسیریابی ‪ XY‬از مسیرهای خاص استفاده میکند‬
‫میتواند به آسانی منابع را در لینکهای تحت استفاده به لینکهایی که برای آنها اولویت خاصی دارند‪،‬‬
‫منتقل کند‪.‬‬
‫این الگوریتم در فصل ‪ 2‬ارائه شده است‪.‬‬
‫‪ -3-4‬تکنولوژی سلسله مراتب حافظه‬

‫در یک پیکربندی کامپیوتر رایج‪ ،‬هزینه حافظه‪ ،‬دیسکها‪ ،‬چاپگرها و سایر وسایل جانبی از پردازنده مرکزی تجاوز‬
‫میکند‪ .‬ما در زیر سلسله مراتب حافظه و تکنولوژی جانبی را معرفی میکنیم‪.‬‬

‫‪ -1-3-4‬تکنولوژی حافظه سلسله مراتبی‬

‫وسایل ذخیره سازی مثل ثباتها‪ ،‬حافظههای نهان‪ ،‬حافظه اصلی‪ ،‬وسایل دیسک و نوارهای مغناطیسی اغلب‬
‫بصورت سلسله مراتبی همانطور که در شکل ‪ 14-4‬نشان داده شده است‪ ،‬سازماندهی میشوند‪ .‬تکنولوژی حافظه و‬
‫سازمان حافظه جانبی در هر سطح با ‪ 5‬پارامتر مشخص میشوند‪ :‬زمان دسترسی )‪ ،(ti‬اندازه حافظه (‪ ،)si‬قیمت هر‬
‫بایت (‪ ،)ci‬پهنای باند انتقال (‪ )bi‬و واحد انتقال (‪.)xi‬‬

‫‪1‬‬
‫‪Virtual channel handling‬‬
‫‪2‬‬
‫‪Routing‬‬
‫‪3‬‬
‫‪Output arbitration‬‬
‫‪4‬‬
‫‪Switching‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 186‬‬

‫زمان دسترسی ‪ ti‬اشاره به زمان گردش از پردازنده تا سطح ‪i‬ام حافظه میباشد‪ .‬اندازه حافظه ‪ si‬تعداد بایتها در‬
‫سطح ‪i‬ام است‪ .‬هزینه حافظه سطح ‪i‬ام با ضرب ‪ cisi‬تخمین زده میشود‪ .‬پهنای باند ‪ bi‬اشاره به نرخی که اطالعات‬
‫بین سطوح همسایه منتقل میشوند‪ ،‬دارد‪ .‬واحد انتقال ‪ xi‬اشاره به اندازه دانه برای انتقال داده بین سطوح ‪ i‬و ‪i+1‬‬
‫دارد‪.‬‬
‫سطح ‪0‬‬ ‫ثباتها در ‪cpu‬‬
‫افزایش ظرفیت و زمان دسترسی‬

‫سطح ‪1‬‬ ‫)‪Cache (SRAM‬‬

‫افزایش هزینه هر بیت‬


‫سطح ‪2‬‬ ‫حافظه اصلی )‪(DRAM‬‬

‫سطح ‪3‬‬ ‫حافظه دیسک (مغناطیسی‪ ،‬حالت‪-‬جامد)‬

‫سطح ‪4‬‬ ‫واحد نوار (نوار مغناطیسی‪ ،‬دیسکهای نوری)‬

‫ظرفیت‬
‫شکل ‪ :14-4‬سلسله مراتب ‪-4‬سطح حافظه با افزایش ظرفیت‪ -‬کاهش سرعت و هزینه از سطوح پایین به باال‬
‫وسایل حافظه در یک سطح پایین تر‪ ،‬دسترسی سریعتر‪ ،‬اندازه کوچکتر و هزینه هر بایت گرانتر‪ ،‬پهنای باند بیشتر و‬
‫واحد انتقال کوچکتر در مقایسه با یک سطح باالتر دارد‪ .‬به عبارت دیگر ‪ bi-1>bi ،ci-1>ci ،si-1<si ،ti-1<ti‬و ‪xi-‬‬
‫‪ 1<xi‬برای ‪ i=1,2,3,4‬در سلسله مراتب که ‪ i=0‬مرتبط با سطح ثبات پردازنده میباشد‪ .‬حافظه نهان در سطح ‪1‬‬
‫است‪ ،‬حافظه اصلی سطح ‪ ،2‬دیسکها در سطح ‪ ،3‬و واحد نوار در سطح ‪ 4‬میباشند‪ .‬طرح حافظه فیزیکی و عملیات‬
‫این سطوح در بخشهای بعد و فصل ‪ 5‬مطالعه میشوند‪.‬‬

‫ثباتها و حافظههای نهان‪ :‬ثبات و حافظه نهان قسمتهایی از پیچیدگی پردازنده هستند که یا روی تراشه‬
‫پردازنده یا روی بورد پردازنده ساخته میشوند‪ .‬انتساب ثبات معموالً توسط کامپایلر انجام میشود‪ .‬عملیات انتقال‬
‫ثبات بطور مستقیم توسط پردازنده بعد از دیکد شدن دستورات کنترل میشوند‪ .‬انتقال ثبات با سرعت پردازنده‬
‫معموالً در یک پالس ساعت انجام میشود‪ .‬بنابراین بسیاری از طراحان ثباتها را به عنوان سطحی از حافظه در‬
‫نظر میگیرند‪ .‬ما آنها را برای اهداف مقایسهای استفاده میکنیم‪ .‬حافظه نهان توسط ‪ MMU‬کنترل میشود و‬
‫شفاف‪-‬برنامهنویس است‪ .‬حافظههای نهان براساس سرعت و نیازهای کاربردی میتوانند در یک یا چند سطح‬
‫پیادهسازی شوند‪.‬‬

‫حافظه اصلی‪ :‬حافظه اصلی گاهی اوقات حافظه اولیه سیستم کامپیوتر نامیده میشود‪ .‬حافظه اصلی معموالً خیلی‬
‫بزرگتر از حافظه نهان است و هزینه آن مناسبتر است‪ .‬حافظه اصلی توسط ‪ MMU‬با مشارکت سیستم عامل‬
‫مدیریت میشود‪ .‬گاهی اوقات حافظه اصلی به دو زیر سطح با استفاده از تکنولوژیهای مختلف تقسیم میشود‪.‬‬

‫درایو دیسک و واحدهای نوار‪ :‬درایوهای دیسک و واحد نوار توسط ‪ OS‬مدیریت میشود‪ .‬حافظه دیسک‬
‫باالترین سطح حافظه آنالین فرض میشود‪ .‬برنامههای سیستم مثل ‪ OS‬و کامپایلرها و برنامههای کاربر و مجموعه‬
‫دادههای آنها در این حافظه نگه داشته میشوند‪ .‬واحدهای نوار مغناطیسی حافظه آفالین برای استفاده حافظه‬
‫‪| 187‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

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

‫تکنولوژی وسایل جانبی‪ :‬در کنار درایوهای دیسک و واحدهای نوار‪ ،‬وسایل جانبی شامل چاپگرها‪ ،‬پالترها‪،‬‬
‫ترمینالها‪ ،‬مانیتورها‪ ،‬صفحه نمایشهای گرافیکی‪ ،‬اسکنرهای نوری‪ ،‬دیجیتایزرهای تصویر‪ ،‬وسایل خروجی‬
‫میکروفیلم‪ ،‬و غیره وجود دارند‪ .‬بعضی وسایل ورودی‪/‬خروجی برای کاربردهای خاص یا کاربردهای چندرسانهای‬
‫ساخته شدهاند‪ .‬تکنولوژی وسایل جانبی به سرعت در حال توسعه است‪.‬‬

‫سطوح حافظه نهان‪ :‬همانطور که گفته شد برنامهنویسان نیازمند حافظه نامتناهی و سریع هستند و یک راه‬
‫اقتصادی برای رسیدن به این هدف سلسله مراتب حافظه است تا بتوانیم از سرعت باالی حافظه نهان و ظرفیت‬
‫باالی دیسک استفاده کنیم‪ .‬در سیستمهای امروزی سلسله مراتب حافظه بیشتر با چندین سطح از حافظه نهان‬
‫ایجاد میشود در شکل ‪ 15-4‬نمونهای از سلسله مراتب حافظه استفاده شده در یک سیستم ‪ PMD‬و یک سرور‬
‫نشان داده شده است‪.‬‬

‫‪L1‬‬ ‫‪L2‬‬ ‫‪L3‬‬


‫‪C‬‬ ‫‪C‬‬ ‫‪C‬‬
‫‪CPU‬‬ ‫‪a‬‬ ‫‪a‬‬ ‫‪a‬‬ ‫‪Memory‬‬
‫حافظه دیسک‬
‫‪c‬‬ ‫‪c‬‬ ‫‪c‬‬
‫ثباتها‬ ‫‪h‬‬ ‫‪h‬‬ ‫‪h‬‬
‫‪e‬‬ ‫‪e‬‬ ‫‪e‬‬ ‫رجوع به حافظه دیسک‬
‫رجوع به ثبات‬ ‫اندازه‪4-16TB:‬‬
‫رجوع به حافظه رجوع به حافظه نهان رجوع به حافظه نهان‬ ‫رجوع به حافظه اصلی‬
‫اندازه‪1000B :‬‬ ‫نهان سطح ‪3‬‬ ‫اندازه‪4-16GB:‬‬ ‫سرعت‪5-10ms:‬‬
‫سطح ‪1‬‬ ‫سطح ‪2‬‬
‫سرعت‪300ps :‬‬ ‫اندازه‪64KB :‬‬ ‫اندازه‪ 2-4MB :‬اندازه‪256KB :‬‬ ‫سرعت‪50-100ns :‬‬
‫سرعت‪1ns :‬‬ ‫سرعت‪ 10-20ns:‬سرعت‪3-10ns :‬‬
‫(الف)سلسله مراتب حافظه برای سرور‬
‫‪L1‬‬ ‫‪L2‬‬
‫‪C‬‬ ‫‪C‬‬
‫‪CPU‬‬ ‫‪a‬‬ ‫‪a‬‬
‫‪Memory‬‬ ‫حافظه جانبی‬
‫‪c‬‬ ‫‪c‬‬
‫ثباتها‬ ‫‪h‬‬ ‫‪h‬‬
‫‪e‬‬ ‫‪e‬‬ ‫رجوع به حافظه فلش‬
‫رجوع به ثبات‬ ‫رجوع به حافظه نهان رجوع به حافظه نهان‬ ‫اندازه‪4-8GB :‬‬
‫رجوع به حافظه اصلی‬
‫اندازه‪500 :‬بایت‬ ‫سطح ‪1‬‬ ‫سطح ‪2‬‬ ‫سرعت‪25-50μs :‬‬
‫اندازه‪256-512MB :‬‬
‫سرعت‪500ps :‬‬ ‫اندازه‪64KB :‬‬ ‫اندازه‪256KB :‬‬ ‫سرعت‪50-100ns :‬‬
‫سرعت‪2ns :‬‬ ‫سرعت‪10-20ns :‬‬
‫(ب)سلسله مراتب حافظه برای ‪PMD‬‬
‫شکل ‪ :15-4‬سطوح در یک سلسله مراتب حافظه نوعی (الف) برای یک سرور و (ب) برای یک وسیله موبایل شخصی (‪.)PMD‬‬
‫هرچه از پردازنده دور میشویم‪ ،‬حافظه کندتر و بزرگتر میشوند‪ .‬نکته اینکه واحد زمانی با فاکتور ‪ 109‬تغییر میکند – از پیکو ثانیه‬
‫به میلی ثانیه‪ -‬و واحد فضا با فاکتور ‪ 1012‬تغییر میکند – از بایت تا ترابایت‪ PMD .‬نرخ پالس ساعت کمتر‪ ،‬حافظههای نهان و‬
‫حافظه اصلی کوچکتر دارند‪ .‬تفاوت کلیدی این است که سرورها و دسکتاپها از حافظه دیسک در پایین سلسله مراتب استفاده‬
‫میکنند در حالیکه ‪PMD‬ها به خاطر صرفهجویی در توان مصرفی از حافظه فلش استفاده میکنند‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 188‬‬

‫شکل ‪ 16-4‬با شروع از سال ‪ 1980‬به عنوان شروع کارایی‪ ،‬شکاف بین کارایی اندازه گیری شده برای درخواستهای حافظه‬
‫پردازنده (برای یک پردازنده یا یک هسته) و تأخیر دسترسی در‪ DRAM‬رسم شده است‪.‬‬

‫اهمیت سلسله مراتب حافظه با پیشرفت کارایی پردازندهها افزایش یافته است‪ .‬در شکل ‪ 16-4‬نمودار کارایی یک‬
‫پردازنده در مقایسه با میزان بهبود زمان دسترسی به حافظه اصلی نشان داده شده است‪ .‬نمودار پردازنده افزایش‬
‫میانگین درخواستهای حافظه در ثانیه را نشان میدهد (مثالً معکوس تأخیر بین رجوعهای حافظه)‪ ،‬در حالیکه‬
‫نمودار حافظه افزایش دسترسیهای ‪ DRAM‬را در ثانیه نشان میدهد (مثالً‪ ،‬معکوس تأخیر دسترسی ‪.)DRAM‬‬
‫شرایط در یک تکپردازنده گاهی اوقات بدتر است‪ ،‬زیرا ماکزیمم نرخ دسترسی حافظه از میانگین نرخ بیشتر است‪.‬‬

‫اخیراً پردازندههای جدید به سمت چند هستهای حرکت کردهاند‪ ،‬که نیاز به پهنای باند بیشتری نسبت به یک هسته‬
‫دارند‪ .‬درحقیقت‪ ،‬حداکثر پهنای باند کل هر چه تعداد هستهها زیاد شود‪ ،‬افزایش مییابد‪ .‬مثالً پردازنده اینتل ‪Core‬‬
‫‪ i7‬می تواند دو مراجعه به حافظه به ازای هر هسته در هر پالس ساعت تولید کند؛ برای چهار هسته و نرخ ساعت‬
‫‪ i7 ،3.2GHz‬میتواند حداکثر ‪ 25.6‬میلیارد رجوع به حافظه داده ‪ 64‬بیتی در ثانیه تولید کند‪ ،‬در مجموع برای‬
‫تقاضای دستور حداکثر حدود ‪ 12.8‬میلیارد مراجعه دستور ‪ 128‬بیتی ایجاد میشود‪ .‬این برابر با پهنای باند‬
‫!‪ 409.6GB/Sec‬است‪ .‬این پهنای باند باور نکردنی با چند پورت کردن و خطلوله کردن حافظههای نهان با‬
‫استفاده از چند سطح حافظه نهان (برای هر هسته حافظه نهان سطح اول وگاهی سطح دوم مجزا و استفاده از‬
‫حافظههای نهان داده و دستور مجزا در سطح اول) امکانپذیر است‪ .‬در مقایسه‪ ،‬حداکثر پهنای باند حافظه اصلی‬
‫‪ DRAM‬فقط ‪ ٪6‬این مقدار است (‪.)25GB/Sec‬‬

‫در قدی م‪ ،‬طراحان سلسله مراتب حافظه روی میانگین زمان دسترسی حافظه تمرکز میکردند که توسط زمان‬
‫دسترسی حافظه نهان‪ ،‬نرخ فقدان‪ ،‬و هزینه فقدان مشخص میشد‪ .‬اخیراً توان مصرفی نیز بسیار مورد توجه است‪.‬‬
‫در ریزپردازندههای انتهایی‪ ،‬امکان وجود ‪ 10MB‬یا بیشتر حافظه نهان روی یک تراشه وجود دارد‪ ،‬و حافظه نهان‬
‫سطح دوم و سوم بزرگ توان قابل توجهی مصرف میکنند چه به عنوان توان ایستا در حالت عدم فعالیت و توان‬
‫پویا وقتیکه عمل خواندن و نوشتن انجام میشود‪ .‬این مسأله در پردازندههای ‪ PMD‬حادتر است زیرا پردازنده‬
‫‪| 189‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫فعالتر است و بودجه توان ‪ 20‬تا ‪ 50‬برابر کمتر است‪ .‬در چنین شرایطی حافظههای نهان میتوانند ‪ 25‬تا ‪ 50‬درصد‬
‫توان را مصرف کنند‪ .‬بنابراین‪ ،‬طراحان بیشتر باید حد بهینهای بین توان و کارایی در نظر بگیرند‪.‬‬
‫محلیت‪1‬‬ ‫‪ -2-3-4‬شمول‪ ،‬همبستگی‪ ،‬و‬

‫همانطور که در شکل ‪ 17-4‬نشان داده شده است‪ ،‬اطالعات ذخیره شده در یک سلسله مراتب حافظه‬
‫(‪ )M1,M2,…,Mn‬سه خصوصیت مهم را برآورده میکنند‪ :‬شمول‪ ،‬همبستگی و محلیت‪ .‬فرض میکنیم حافظه‬
‫نهان در داخلیترین سطح ‪ M1‬است که مستقیماً با ثباتهای پردازنده ارتباط دارد‪ .‬خارجیترین سطح ‪ Mn‬شامل‬
‫همه کلمات اطالعات ذخیره شده است‪ .‬در حقیقت‪ ،‬مجموعه همه کلمات آدرسپذیر در ‪ Mn‬فضای آدرس مجازی‬
‫یک کامپیوتر را شکل میدهد‪ .‬محلیت برنامه در زیر به عنوان پایهای برای استفاده مؤثر از سلسله مراتب حافظه‬
‫مشخص شده است‪.‬‬

‫حافظه اصلی ‪ M2‬به صفحات تقسیم میشود مثالً هر کدام ‪ .4KB‬هر صفحه شامل ‪ 128‬بلوک است مثل شکل‬
‫‪ .4-17‬صفحات واحد انتقال اطالعات بین دیسک و حافظه اصلی میباشند‪.‬‬

‫صفحات پراکنده در یک سگمنت در حافظه دیسک سازماندهی میشوند‪ ،‬به عنوان مثال سگمنت ‪ F‬شامل صفحات‬
‫‪ A,B‬و سایر صفحات است‪ .‬اندازه یک سگمنت براسا س نیاز کاربر متغیر است‪ .‬انتقال داده بین دیسک و نوار‬
‫مغناطیسی در سطح فایل راهاندازی میشود مثل سگمنتهای ‪ F,G‬نشان داده شده در شکل ‪.17-4‬‬

‫خصوصیت شمول‪ :‬خصوصیت شمول با 𝑛𝑀 ⊂ … ‪ 𝑀1 ⊂ 𝑀2 ⊂ 𝑀3‬نشان داده میشود‪ .‬رابطه شمول‬


‫مجموعهای به این مفهوم است که همه عناصر اطالعاتی بطور اصلی در خارجیترین سطح ‪ Mn‬ذخیره شدهاند‪ .‬در‬
‫طول پردازش زیرمجموعهای از ‪ Mn‬به ‪ Mn-1‬کپی میشود‪ .‬بطور مشابه‪ ،‬زیرمجموعهای از ‪ Mn-1‬به ‪ Mn-2‬کپی‬
‫میشود و غیره‪ .‬به عبارت دیگر‪ ،‬اگر یک کلمه اطالعاتی در ‪ Mi‬پیدا شود‪ ،‬آنگاه کپیهایی از کلمه مشابه نیز در‬
‫همه سطوح باالتر ‪ ... ،Mi+2 ،Mi+1‬و ‪ Mn‬پیدا میشوند‪ .‬به هر حال‪ ،‬یک کلمه ذخیره شده در ‪ Mi+1‬ممکن است‬
‫در ‪ Mi‬پیدا نشود‪ .‬یک فقدان‪ 2‬در ‪ Mi‬به این مفهوم است که در همه سطوح پایینتر ‪ ،Mi-2 ،Mi-1‬و ‪ ...‬و ‪ M1‬نیز‬
‫نیست باالترین سطوح حافظه پشتیبان هستند که هر چیزی ممکن است در آن پیدا شود‪.‬‬

‫انتقال اطالعات بین پردازنده و حافظه نهان براساس کلمات (‪ 4‬یا ‪ 8‬بایت وابسته به طول کلمه ماشین) میباشد‪.‬‬
‫حافظه نهان (‪ )M1‬به بلوکهای حافظه نهان تقسیم میشود که بعضی مؤلفین به آن خطوط حافظه نهان‪ 3‬نیز‬
‫میگویند‪ .‬هر بلوک معموالً ‪ 32‬بایت (‪ 8‬کلمه) است‪ .‬بلوکها (مثل ”‪ “b”,”a‬در شکل ‪ )17-4‬واحد انتقال داده‬
‫بین حافظه نهان و حافظه اصلی میباشند‪.‬‬

‫‪1‬‬
‫‪Inclusion, Coherence, and Locality‬‬
‫‪2‬‬
‫‪Miss‬‬
‫‪3‬‬
‫‪Cache line‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 190‬‬
‫ثباتهای ‪CPU‬‬

‫‪b‬‬
‫‪( M1‬حافظه‬ ‫‪a‬‬
‫نهان)‬

‫‪B b‬‬
‫‪( M2‬حافظه اصلی)‬

‫‪Page A a‬‬

‫‪( M3‬حافظه دیسک)‬ ‫سگمنت ‪F‬‬


‫‪a‬‬ ‫‪b‬‬ ‫سگمت ‪G‬‬
‫صفحه ‪A‬‬
‫صفحه ‪B‬‬

‫‪a‬‬ ‫سگمنت ‪F‬‬


‫‪b‬‬ ‫سگمت ‪G‬‬
‫صفحه ‪A‬‬
‫صفحه ‪B‬‬

‫پشتیبان) و انتقال داده بین سطوح همسایه از سلسله مراتب حافظه‬


‫خصوصیت شمول‬
‫مغناطیسی‪( M4 :‬حافظه‬
‫شکل ‪17-4‬‬ ‫واحد نوار‬

‫خصوصیت همبستگی‪ :‬خصوصیت همبستگی نیازمند این است که کپیهای یک عنصر اطالعاتی در سطوح‬
‫حافظه متوالی باید ثابت باشند‪ .‬اگر یک کلمه در حافظه نهان اصالح شود‪ ،‬کپیهای آن کلمه باید فوراً یا سرانجام‬
‫در همه سطوح باالتر بروز شوند سلسله مراتب باید اینطور حفظ شود‪ .‬اطالعاتی که متناوباً استفاده میشوند به منظور‬
‫حداقل کردن زمان دسترسی مؤثر سلسله مراتب حافظه اغلب در سطوح پایینتر پیدا میشوند‪ .‬در کل‪ ،‬دو راهبرد‬
‫برای نگهداری همبستگی در یک سلسله مراتب حافظه وجود دارد‪.‬‬

‫روش اول‪ ،‬نوشتن سرتاسری‪ 1‬نامیده میشود که متقاضی بروزرسانی آنی در ‪ Mi+1‬است اگر کلمهای در ‪ Mi‬اصالح‬
‫شود ‪.for i=1,2,..,n-1‬‬
‫روش دوم‪ ،‬بازپس نویسی‪ 2‬میباشد که بروزرسانی در ‪ Mi+1‬را تا زمانی که یک کلمه اصالح شده در ‪ ،Mi‬از ‪Mi‬‬
‫حذف یا جایگزین شود بتأخیر میاندازد‪ .‬سیاستهای جایگزینی حافظه در بخش‪ 3-4-4‬مطالعه میشوند‪.‬‬

‫‪1‬‬
‫)‪Write- through (WT‬‬
‫‪2‬‬
‫)‪Write-back (WB‬‬
‫‪| 191‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

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

‫به عبارت دیگر‪ ،‬اکثر برنامهها‪ ،‬در هر پنجره زمانی روی قسمت خاصی از فضای آدرسشان کار میکنند‪ .‬هنسی و‬
‫پترسون (‪ )1990‬قانون ‪ 90-10‬را بیان کردهاند که یک برنامه نوعی ممکن است ‪ ٪90‬زمانش را صرف فقط ‪٪10‬‬
‫کدش کند مثل داخلیترین حلقه یا عملیات حلقه تودرتو‪.‬‬

‫سه بُعد از خصوصیت محلیت وجود دارد‪ :‬زمانی‪ ،‬مکانی و ترتیبی‪ .‬در طول زمان عمر یک پردازه نرمافزاری‪ ،‬تعدادی‬
‫از صفحات بطور پویا استفاده میشوند‪ .‬مراجعات به این صفحات لحظه به لحظه تغییر میکنند‪ .‬آنها الگوهای‬
‫دسترسی خاصی را دنبال میکنند همانطور که در شکل ‪ 18-4‬نشان داده شده است‪ .‬این الگوهای مراجعه توسط‬
‫خواص محلیت زیر ایجاد میشوند‪:‬‬

‫‪ .1‬محلیت زمانی‪ :‬به عناصر مراجعه شده اخیر (داده یا دستورات) در آینده نزدیک مجدداً مراجعه میشود‪.‬‬
‫این اغلب توسط تولیدات خاص برنامه مثل حلقههای تکراری‪ ،‬پشتههای پردازه‪ ،‬متغیرهای موقت‪ ،‬یا‬
‫زیربرنامهها ایجاد میشود‪ .‬وقتیکه به یک حلقه وارد میشویم یا یک زیربرنامه فراخوانی میشود‪ ،‬به‬
‫یک قطعه کد کوچک بطور تکراری به تعداد زیاد مراجعه میشود‪ ،‬بنابراین محلیت زمانی تمایل به‬
‫خوشهبندی کردن دسترسی در نواحی اخیراً استفاده شده دارد‪.‬‬
‫‪ .2‬محلیت مکانی‪ :‬به مفهوم تمایل یک پردازه به دسترسی به آدرسهایی که نزدیک یکدیگرند میباشد‪ .‬به‬
‫عنوان مثال‪ ،‬عملیات روی جداول یا آرایهها شامل دسترسیها به ناحیه خوشهبندی شده خاصی در فضای‬
‫آدرس میباشند‪ .‬تکههای برنامه مانند زیربرنامهها یا ماکروها‪ ،‬تمایل به ذخیره سازی در فضای آدرس‬
‫همسایه دارند‪.‬‬
‫‪ .3‬محلیت ترتیبی‪ :‬در یک برنامه نوعی‪ ،‬اجرای دستورات بطور ترتیبی انجام میشود مگر دستورات پرش‬
‫که اجرای خارج از ترتیب را ایجاد میکنند‪ .‬نسبت اجرای به ترتیب به اجرای خارج از ترتیب در یک‬
‫برنامه معمولی حدود ‪ 5‬به ‪ 1‬است‪ .‬همچنین دسترسی به آرایه داده بزرگ نیز اجرای ترتیبی را دنبال‬
‫میکنند‪.‬‬

‫ملزومات طراحی حافظه‪ :‬ترتیبی بودن رفتار برنامه‪ ،‬به محلیت مکانی اشاره دارد زیرا دستورات کد شده ترتیبی‬
‫و عناصر آرایه اغلب در مکانهای همسایه ذخیره میشوند‪ .‬هر نوع محلیت روی طراحی سلسله مراتب حافظه تأثیر‬
‫دارد‪.‬‬
‫‪1‬‬
‫محلیت زمانی منجر به عمومی شدن الگوریتم جایگزینی اخیراً کمتر استفاده شده ( ‪ )LRU‬که در بخش ‪3-4-4‬‬
‫تعریف میشود‪ ،‬شده است‪ .‬محلیت مکانی به ما کمک میکند تا اندازه واحد انتقال داده بین سطوح مختلف حافظه‬
‫را تعیین کنیم‪ .‬محلیت زمانی همچنین به تعیین اندازه سطوح متوالی حافظه کمک میکند‪.‬‬

‫‪1‬‬
‫‪Least Recently used‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 192‬‬

‫محلیت ترتیبی به تعیین اندازه دانه برای زمانبندی بهینه کمک میکند‪ .‬تکنیکهای پیش برداشت بطور زیادی‬
‫توسط خواص محلیت تحت تأثیر قرار میگیرند‪ .‬مفهوم محلیت به ما در طراحی حافظه نهان‪ ،‬حافظه اصلی و حتی‬
‫سازمان آدرس مجازی کمک میکند‪.‬‬
‫فضای آدرس مجازی‬
‫(شماره صفحه)‬ ‫مجموعه کاری‬

‫)‪(a‬‬

‫)‪(a‬‬

‫)‪(b‬‬

‫)‪(c‬‬ ‫)‪(c‬‬

‫‪Δt‬‬ ‫زمان‬
‫شکل ‪ :18-4‬الگوهای مراجعه در یک ردیابی برنامه نوعی‪ ،‬که نواحی )‪ (c),(b), (a‬با اجرای سه پردازه نرمافزاری تولید شدهاند‪.‬‬

‫مجموعههای کاری‪ :‬شکل ‪ 18-4‬الگوهای مراجعه به حافظه سه برنامه یا پردازه نرم افزاری را به عنوان تابعی‬
‫از زمان‪ ،‬فضای آدرس مجازی (که با شماره صفحه تعیین میشود) نشان میدهد‪ .‬به زیرمجموعهای از آدرسها (یا‬
‫صفحات) که در یک پنچره زمانی داده شده (‪ )t,t+Δt‬مراجعه میشود‪ ،‬مجموعه کاری میگویند‪.‬‬

‫در طول اجرای یک برنامه‪ ،‬مجموعه کاری به کندی تغییر میکند و همانطور که در شکل ‪ 18-4‬نشان داده شده‬
‫است‪ ،‬درجه خاصی از پیوستگی را نگه میدارد‪ .‬به این معنی که مجموعه کاری اغلب در داخلیترین (کوچکترین)‬
‫سطح مثل حافظه نهان در سلسله مراتب حافظه نگه داشته میشود‪ .‬این زمان دسترسی مؤثر به حافظه را با نرخ‬
‫اصابت‪ 1‬بیشتر در سطح حافظه پایین کاهش میدهد‪ .‬پنجره زمانی ‪ Δt‬یک پارامتر بحرانی است که توسط کرنل‬
‫‪ OS‬تعیین میشود و بر اندازه مجموعه کاری تأثیر میگذارد و در تعیین اندازه مطلوب حافظه نهان نیز مؤثر است‪.‬‬

‫‪ -3-3-4‬طراحی ظرفیت حافظه‬

‫کارایی یک سلسله مراتب حافظه توسط زمان دسترسی مؤثر ‪ Teff‬در هر سطح سلسله مراتب تعیین میشود و‬
‫وابسته به نرخ اصابت و فرکانس دسترسی در سطوح متوالی است‪ .‬این اصطالحات را در زیر تعریف میکنیم‪ .‬سپس‬
‫چگونگی بهینه سازی ظرفیت سلسله مراتب حافظه بر اساس محدودیتهای هزینه را بررسی میکنیم‪.‬‬

‫‪1‬‬
‫‪Hit ratio‬‬
‫‪| 193‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫نرخهای اصابت‪ :‬نرخ اصابت برای هر دو سطح همسایهی یک سلسله مراتب حافظه تعریف میشود‪ .‬وقتیکه‬
‫یک عنصر اطالعاتی در ‪ Mi‬پیدا میشود به آن اصابت در غیر اینصورت فقدان میگوییم‪ .‬سطوح حافظه ‪ Mi‬و ‪Mi-‬‬
‫‪ 1‬در یک سلسله مراتب را در نظر بگیرید که ‪ .i=1,2,..,n‬نرخ اصابت ‪ hi‬در ‪ ،Mi‬احتمال وجود یک عنصر اطالعاتی‬
‫در ‪ Mi‬است و تابعی از خواص دو سطح همسایه ‪ Mi‬و ‪ Mi-1‬میباشد‪ .‬نرخ فقدان در ‪ Mi‬با ‪ 1-hi‬تعریف میشود‪.‬‬

‫نرخهای اصابت سطوح متوالی‪ ،‬تابعی از ظرفیتهای حافظه‪ ،‬سیاستهای مدیریت‪ ،‬و رفتار برنامه میباشد‪ .‬نرخهای‬
‫اصابت متوالی متغیرهای تصادفی مستقل هستند که مقدار آنها بین ‪ 0‬و ‪ 1‬میباشد‪ .‬به منظور سادگی فرض میکنیم‬
‫‪ h0=0‬و ‪ hn=1‬که به این معنی است که پردازنده همیشه در ابتدا به ‪ M1‬دسترسی پیدا میکند و دسترسی به‬
‫آخرین حافظه ‪ Mn‬همیشه یک اصابت است‪.‬‬

‫فرکانس دسترسی به ‪ Mi‬بصورت ‪ fi=(1-h1).(1-h2)…(1-hi-1).hi‬تعریف میشود‪ .‬این در حقیقت احتمال‬


‫دسترسی موفق ‪ Mi‬است وقتیکه ‪ i-1‬عدد فقدان در سطوح پایینتر اتفاق افتد و در ‪ ،Mi‬اصابت داشته باشد‪ .‬نکته‬
‫اینکه ‪.∑𝑛𝑖=1 𝑓𝑖 = 1, 𝑓1 = ℎ1‬‬

‫براساس خصوصیت محلیت‪ ،‬فرکانسهای دسترسی بسرعت از سطوح پایین به باال کاهش می‪-‬‬
‫یابد‪ .f1>>f2>>f3>>…>>fn .‬یعنی سطوح داخلیتر حافظه بیشتر از سطوح خارجیتر دسترسی میشوند‪.‬‬

‫زمان دسترسی مؤثر‪ :‬در عمل‪ ،‬دوست داریم که تا حد ممکن به نرخ اصابت باالیی در ‪ M1‬برسیم‪ .‬هرگاه یک‬
‫فقدان اتفاق بیافتد باید هزینه بدهیم تا به سطح باالتر حافظه دسترسی داشته باشیم‪ .‬فقدانها در حافظه نهان فقدان‬
‫بالک و در حافظه اصلی خطای صفحه‪ 1‬نامیده میشود زیرا واحدهای انتقال بین این سطوح بلوک و صفحه میباشند‪.‬‬

‫هزینه ی زمانی برای یک فقدان صفحه خیلی بیشتر از فقدان بلوک است براساس این حقیقت که ‪.t1<t2<t3‬‬
‫‪ )1990( Stone‬بیان کرده است که یک فقدان حافظه نهان ‪ 2‬تا ‪ 3‬برابر از لحاظ زمانی گرانتر از اصابت حافظه‬
‫نهان است اما یک خطای صفحه ‪ 1000‬تا ‪10000‬برابر گرانتر از اصابت صفحه است‪.‬‬

‫با استفاده از فرکانسهای دسترسی ‪ fi‬برای ‪ i=1,2,…,n‬میتوانیم زمان دسترسی مؤثر به یک سلسله مراتب‬
‫حافظه را بصورت زیر معادله (‪ )3-4‬تعریف کنیم‪:‬‬

‫‪𝑇𝑒𝑓𝑓 = ∑𝑛𝑖=1 𝑓𝑖 . 𝑡𝑖 = ℎ1 𝑡1 + (1 − ℎ1 )ℎ2 𝑡2 + (1 − ℎ1 )(1 − ℎ2 )ℎ3 𝑡3 + … + (1 − ℎ1 )(1 − ℎ2 ) … (1 − ℎ𝑛−1 )𝑡𝑛 ,‬‬


‫‪ℎ𝑛 = 1‬‬

‫زمان دسترسی مؤثر وابسته به رفتار برنامه و انتخابهای طراحی حافظه میباشد‪ .‬فقط بعد از مطالعه ردیابیهای‬
‫برنامههای زیادی میتوان نرخ اصابت و ‪ Teff‬را بدقت تخمین زد‪.‬‬

‫‪1‬‬
‫‪Page fault‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 194‬‬

‫همانطور که گفتیم برای حفظ همبستگی بین سطوح حافظه دو سیاست نوشتن سراسری ‪ WT‬و بازپسنویسی ‪WB‬‬
‫وجود دارد‪ .‬فرض کنیم که این عمل بین دو سطح حافظه نهان و حافظه اصلی بخواهد انجام شود‪ .‬اگر زمان دسترسی‬
‫به حافظه نهان ‪ tc‬باشد و زمان نوشتن یک بلوک به حافظه نهان ‪ tb‬باشد و درصد عملیات نوشتن ‪ w‬باشد در‬
‫اینصورت زمان میانگین برای عمل نوشتن سراسری بصورت زیر محاسبه میشود‪:‬‬
‫)‪Ta=tc+(1-h)tb+w(tm-tc‬‬
‫که ‪ tm-tc‬زمان نوشتن اطالعات به حافظه میباشد‪ .‬به عبارت دیگر داریم‪:‬‬
‫‪Ta=(1-w)tc+(1-h+w)tm‬‬

‫مثالً اگر ‪ tc=25ns‬و ‪ tm=200ns‬و ‪ h=94%‬و ‪ w=20%‬باشد و ‪ tm=tb‬در اینصورت ‪ Tm .ta=62ns‬زمان‬


‫انتقال یک کلمه به حافظه نهان است‪ .‬در این مثال فرض شده است که یک بلوک یک کلمه باشد‪ .‬ممکن است‬
‫طول بلوک از یک کلمه بزرگتر باشد و به همان نسبت نیز ‪ tb‬بیشتر از ‪ tm‬خواهد بود‪.‬‬

‫در سیاست بازپسنویسی هرگاه که داده در حافظه اصلی همان داده در حافظه نهان باشد نیازی به بروزرسانی نیست‬
‫و زمانی بروز رسانی در حافظه اصلی اتفاق میافتد که حافظه نهان تغییر کرده باشد‪ .‬اگر درصد تغییر یک بلوک ‪wb‬‬
‫باشد در اینصورت زمان میانگین دسترسی برابر است با‪:‬‬
‫‪Ta= tc+(1-h)tb+ wb(1-h)tb‬‬
‫بهینهسازی سلسله مراتب‪ :‬هزینه کلی یک سلسله مراتب حافظه بصورت زیر تخمین زده میشود‪:‬‬

‫)‪𝐶𝑡𝑜𝑡𝑎𝑙 = ∑𝑛𝑖=1 𝐶𝑖 . 𝑆𝑖 (4-4‬‬

‫به این معنی که هزینه روی ‪ n‬سطح توزیع شده است‪ .‬چون ‪ C1>C2>C3>…>Cn‬مجبوریم‬
‫‪ S1<S2<S3<….<Sn‬انتخاب کنیم‪ .‬طراحی بهینه سلسله مراتب حافظه منتج به این میشود که ‪ Teff‬بسته به ‪t1‬‬
‫از ‪ M1‬و هزینه کل بسته به ‪ Cn‬از ‪ Mn‬باشد‪ .‬در حقیقت رسیدن به یک حد بهینه بین ‪ n‬سطح مشکل است‪.‬‬

‫پردازه بهینه سازی می تواند با یک مسأله برنامه نویسی خطی فرموله شود‪ .‬با داشتن یک حد ‪ C0‬روی هزینه کل‪،‬‬
‫مسأله‪ ،‬حداقل کردن )‪ 𝑇𝑒𝑓𝑓 = ∑𝑛𝑖=1 𝑓𝑖 . 𝑡𝑖 (5 − 4‬میباشد‪ .‬که خود محدود به موارد زیر است‪:‬‬

‫‪Si>0 , ti>0 , for i=1,2,….,n‬‬ ‫)‪, 𝐶𝑡𝑜𝑡𝑎𝑙 = ∑𝑛𝑖=1 𝐶𝑖 . 𝑆𝑖 < 𝐶0 (4-6‬‬

‫هزینه واحد ‪ Ci‬و ظرفیت ‪ Si‬در هر سطح ‪ Mi‬وابسته به سرعت ‪ ti‬مورد نیاز است‪ .‬بنابراین بهینه سازی فوق شامل‬
‫حدمیانهای بین ‪ Si, Ci, ti‬و ‪ fi‬یا ‪ hi‬در همه سطوح ‪ i=1,2,…,n‬میباشد‪ .‬مثال زیر یک طرح حدمیانه را نشان‬
‫میدهد‪.‬‬
‫‪| 195‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫مثال ‪ :1-4‬طراحی یک سلسله مراتب سه سطح با خواص زیر برای حافظه را در نظر بگیرید‪:‬‬
‫سطح حافظه‬ ‫زمان دسترسی‬ ‫ظرفیت‬ ‫هزینه‪KB/‬‬

‫حافظه نهان‬ ‫‪t1=25ns‬‬ ‫‪S1=512KB‬‬ ‫‪C1= $ 1.25‬‬


‫حافظه اصلی‬ ‫ناشناخته=‪t2‬‬ ‫‪S2=32MB‬‬ ‫‪C2= $ 0.2‬‬
‫آرایه دیسک‬ ‫‪t3=4ms‬‬ ‫نامعلوم=‪S3‬‬ ‫‪C3= $ 0.0002‬‬

‫هدف طراحی رسیدن به زمان دسترسی مؤثر ‪ t=10.04μs‬با نرخ اصابت حافظه نهان ‪ h1=0.98‬و نرخ اصابت‬
‫‪ h2=0.9‬در حافظه اصلی میباشد‪ .‬همچنین هزینه کلی سلسله مراتب حافظه با کران باالی ‪ $ 15000‬محدود‬
‫شده است‪ .‬هزینه سلسله مراتب حافظه بصورت زیر محاسبه میشود‪:‬‬
‫(معادله ‪C=C1S1+C2S2+C3S3<15000 )7-4‬‬
‫حداکثر ظرفیت دیسک ‪ S3=39.8GB‬بدون تجاوز از بودجه بدست میآید‪ .‬سپس میخواهیم زمان دسترسی ‪t2‬‬
‫برای ‪ RAM‬را انتخاب کنیم تا حافظه اصلی را بسازیم‪ .‬زمان دسترسی مؤثر حافظه بصورت زیر محاسبه میشود‪:‬‬
‫)‪t=h1t1+h2(1-h1)t2+(1-h1)(1-h2)h3t3≤ 10.04 (4-8‬‬
‫با جایگذاری همه پارامترهای معلوم داریم‪:‬‬
‫‪10.04×10 =0.98×25×10 +0.02×0.9×t2+0.02×0.1×4×10-3➔ t2=903ns‬‬
‫‪-6‬‬ ‫‪-9‬‬

‫فرض کنید می خواهیم ظرفیت حافظه اصلی را به قیمت کاهش ظرفیت دیسک با محدودیت بودجه مشابه‪ ،‬به‬
‫‪ 64MB‬دوبرابر کنیم‪ .‬این چالش بر نرخ اصابت حافظه نهان تأثیر نمیگذارد اما ممکن است نرخ اصابت حافظه‬
‫اصلی را اگر الگوریتم جایگزینی صفحه مناسبی استفاده شود زیاد کند‪ .‬همچنین‪ ،‬زمان دسترسی مؤثر حافظه ارتقاء‬
‫پیدا خواهد کرد‪.‬‬

‫‪ -4-4‬تکنولوژی حافظه مجازی‬


‫در این بخش دو مدل از حافظه مجازی را معرفی میکنیم‪ .‬مکانیزمهای ترجمه آدرس و سیاستهای جایگزینی‬
‫صفحه مطالعه خواهد شد‪ .‬حافظه فیزیکی مثل حافظه نهان و حافظه اصلی در فصل ‪ 5‬مطالعه خواهد شد‪.‬‬

‫‪ -1-4-4‬مدلهای حافظه مجازی‬


‫حافظه اصلی‪ ،‬حافظه فیزیکی در نظر گرفته میشود که تعداد زیادی برنامه در آن قرار میگیرد‪ .‬بههر حال در حافظه‬
‫فیزیکی با اندازه محدود شده‪ ،‬همه برنامهها بطور همزمان نمیتوانند بار شوند‪ .‬مفهوم حافظه مجازی برای غلبه بر‬
‫این مشکل معرفی شده است‪ .‬ایده توسعه استفاده از حافظه فیزیکی بین تعداد زیادی برنامه با کمک یک حافظه‬
‫کمکی (پشتیبان) مثل آرایه دیسک میباشد‪.‬‬

‫فقط برنامههای فعال یا قسمتی از آنها در یک لحظه در حافظه فیزیکی مقیم میشوند‪ .‬سایر برنامهها یا برنامههای‬
‫غیرفعال در دیسک ذخیره میشوند‪ .‬همه برنامهها میتوانند بطور پویا تحت مدیریت سیستم عامل به‪/‬از حافظه‬
‫فیزیکی بار شوند‪ .‬برای برنامهنویسان‪ ،‬حافظه مجازی آنها را با فضای تقریباً نامحدود روبرو میکند تا با آن کار کنند‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 196‬‬

‫بدون حافظه مجازی توسعه سیستمهای کامپیوتر اشتراک زمانی یا چندبرنامگی که امروزه استفاده میشوند غیر‬
‫ممکن است‪.‬‬

‫فضاهای آدرس‪ :‬هر کلمه در حافظه با یک آدرس فیزیکی منحصر بفرد مشخص میشود‪ .‬همه کلمات حافظه‬
‫در حافظه اصلی یک فضای آدرس فیزیکی را شکل میدهند‪ .‬آدرسهای مجازی توسط پردازنده هنگام کامپایل‬
‫تولید میشوند‪.‬‬

‫آدرسهای مجازی باید به آدرسهای فیزیکی در زمان اجرا ترجمه شوند‪ .‬سیستمی از جداول ترجمه و توابع نگاشت‬
‫در این پردازه استفاده میشوند‪ .‬ترجمه آدرس و سیاستهای مدیریت حافظه توسط مدل حافظه مجازی استفاده‬
‫شده و سازمان آرایههای دیسک و حافظه اصلی تحت تأثیر واقع میشوند‪.‬‬

‫استفاده از قابلیت های حافظه مجازی باعث اشتراک حافظه اصلی توسط تعداد زیادی کاربر بصورت پویا میشود‪.‬‬
‫همچنین قابلیت حمل نرمافزار را ساده میکند و به کاربران اجازه اجرای برنامههایی که حافظه بیشتری از حافظه‬
‫فیزیکی نیاز دارند میدهد‪.‬‬

‫فقط برنامههای در حال اجرا به حافظه اصلی آورده میشوند‪ .‬این اجازه تخصیص مجدد کد و داده را میدهد و‬
‫پیادهسازی محافظت دار کرنل ‪ OS‬را ممکن میکند و اجازه بهینه سازی سطح‪-‬باالی تخصیص و مدیریت حافظه‬
‫را میدهد‪.‬‬

‫نگاشت آدرس‪ :‬فرض کنید ‪ V‬مجموعه آدرسهای مجازی تولید شده توسط یک برنامه (یا یک پردازه نرمافزاری)‬
‫که روی یک پردازنده اجرا میشود باشد و ‪ M‬مجموعه آدرسهای فیزیکی تخصیص داده شده برای اجرای این‬
‫برنامه باشد‪ .‬یک سیستم حافظه مجازی نیازمند یک مکانیزم خودکار برای انجام نگاشت زیر است‪:‬‬
‫)‪ft: V→M∪ {∅} (4-9‬‬
‫این نگاشت یک تابع زمانی است که لحظه به لحظه متغیر است زیرا حافظه فیزیکی بطور پویا تخصیص داده یا‬
‫بازپس گرفته میشود‪ .‬هر آدرس مجازی 𝑉 ∈ 𝑣 را در نظر بگیرید‪ .‬نگاشت ‪ ft‬بصورت زیر تعریف میشود‪:‬‬

‫اگر ‪ m ∈ M‬برای ذخیرهسازی داده تعیین شده 𝑚‬


‫= )𝑣( 𝑡𝑓‬ ‫و توسط آدرس مجازی 𝑉 تخصیص داده شود‬ ‫)‪(4-10‬‬
‫{‬ ‫∅‬ ‫اگر داده 𝑉 در حافظه 𝑀 نباشد‬

‫به عبارت دیگر‪ ،‬نگاشت )‪ ft(v‬آدرس مجازی ‪ v‬را بطور منحصر بفرد به آدرس فیزیکی ‪ m‬نگاشت میدهد اگر‬
‫یک اصابت حافظه در ‪ M‬وجود داشته باشد‪ .‬اگر یک فقدان حافظه داشته باشیم مقدار بازگشتی ‪ ft(v)=ø‬خواهد‬
‫بود که این به این مفهوم است که عنصر مراجعه شده (دستورالعمل یا داده) هنوز به حافظه اصلی آورده نشده است‪.‬‬
‫‪| 197‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫مؤثر بودن پروسه ترجمه آدرس بر کارایی حافظه مجازی تأثیر میگذارد‪ .‬پشتیبانی پردازنده برای وقفههای دقیق و‬
‫بروزرسانی مترجم نیاز میشود‪ .‬پیادهسازی حافظه مجازی در یک چندپردازنده مشکلتر است‪ ،‬زیرا که مسائل اضافی‬
‫مثل همبستگی‪ ،‬محافظت و سازگاری‪ ،‬بیشتر وجود دارد‪ .‬دو مدل حافظه مجازی در زیر مطالعه میشود‪.‬‬

‫حافظه مجازی خصوصی‪ :‬اولین مدل از فضای آدرس مجازی اختصاصیِ هر پردازنده استفاده میکند همانطور‬
‫که در ‪ VAX/II‬و اکثر سیستمهای ‪ UNIX‬دیده میشود‪( .‬شکل ‪(19-4‬الف))‪ .‬هر فضای مجازی خصوصی به‬
‫صفحات تقسیم می شود‪ .‬صفحات مجازی از فضاهای مجازی مختلف به حافظه فیزیکی مشابه مشترک توسط همه‬
‫پردازندهها نگاشت میشود‪.‬‬

‫مزایای استفاده از حافظه مشترک خصوصی شامل استفاده از یک فضای آدرس پردازنده کوچک (‪ 32‬بیت)‪ ،‬محافظت‬
‫هر صفحه یا بر پایه هر پردازش‪ ،‬و استفاده از نگاشت حافظه خصوصی که قفل نیاز ندارند‪ ،‬میباشد‪.‬‬

‫نقطه ضعف روی مسأله مترادف واقع میشود که آدرسهای مجازی متفاوت در فضاهای آدرس مشابه‪/‬متفاوت به‬
‫صفحه فیزیکی مشابهی اشاره میکنند‪ .‬مشکل دیگر این است که آدرسهای مجازی مشابه در فضاهای مجازی‬
‫متفاوت ممکن است به صفحات متفاوت در حافظه اصلی اشاره کنند‪.‬‬

‫فضای آدرس پردازنده ‪1‬‬ ‫فضای آدرس مجازی پردازنده ‪2‬‬


‫فضای‬
‫‪P1‬‬

‫صفحات‬ ‫فضای‬
‫مشترک‬
‫صفحات‬

‫حافظه فیزیکی‬
‫فضای‬
‫‪P2‬‬

‫حافظه فیزیکی‬
‫(الف) فضاهای حافظه مجازی خصوصی در پردازندههای مختلف‬ ‫(ب) فضای حافظه مجازی مشترک‬
‫شکل ‪ :19-4‬دو مدل حافظه مجازی برای سیستمهای چند پردازنده‬ ‫عمومی‬

‫حافظه مجازی مشترک‪ :‬این مدل همه فضای آدرس مجازی را به یک فضای مشترک سراسری ترکیب میکند‬
‫(شکل ‪(19-4‬ب))‪ .‬هر پردازنده قسمتی از حافظه مجازی مشترک را میگیرد تا آدرسهایش را تعریف کند‪ .‬پردازنده‪-‬‬
‫ه ای مختلف ممکن است فضاهای ناپیوسته را استفاده کنند‪ .‬بعضی نواحی فضای مجازی میتوانند توسط چند‬
‫پردازنده مشترک باشند‪.‬‬
‫مثالهایی از ماشینهایی که حافظه مجازی مشترک استفاده میکنند ‪ System 38 ،RP3 ،RT ،IBM801‬و‬
‫‪ Tra ،MIT Alewife ،Stanford Dash ،HP Septrum‬و غیره میباشند فضای آدرس خصوصی فرض‬
‫میشوند مگر اینکه صریحاً نوع آن ذکر شود‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 198‬‬

‫مزایای حافظه مجازی مشترک شامل این حقیقت است که همه آدرسها منحصر بفردند‪ .‬به هر حال‪ ،‬هر پردازنده‬
‫باید اجازه ایجاد فضاهای آدرس بزرگتر از ‪ 32‬بیت مثل فضای آدرس ‪ 64‬بیت برای ‪ )246B( 64TB‬را داشته باشد‪.‬‬
‫در حافظه مجازی مشترک سراسری مترادف نداریم‪.‬‬

‫جدول صفحه باید دسترسیهای مشترک را اجازه دهد‪ .‬بنابراین انحصار متقابل (قفل کردن) برای دسترسی محافظت‬
‫شده مورد نیاز است‪ .‬قطعهبندی‪ 1‬روی سیستم صفحهبندی ساخته میشود تا هر پردازه را به فضای آدرس خودش‬
‫(قطعه) محدود کند‪ .‬حافظه مجازی سراسری پردازه ترجمه آدرس را طوالنیتر میکند‪.‬‬

‫‪ ،TLB -2-4-4‬صفحه بندی و قطعه بندی‪ :‬هر دو فضای مجازی و حافظه فیزیکی به صفحات با طول ثابت‬
‫تقسیم میشوند همانطور که در شکل‪ 17-4‬نشان داده شده است‪ .‬هدف تخصیص حافظه‪ ،‬تخصیص صفحات حافظه‬
‫مجازی به فریمهای صفحهی حافظه فیزیکی میباشد‪.‬‬

‫مکانیزمهای ترجمه آدرس‪ :‬پردازه تقاضای ترجمه آدرسهای مجازی به آدرسهای فیزیکی را دارد‪ .‬شماتیک‪-‬‬
‫های مختلف برای ترجمه آدرس مجازی در شکل ‪(20-4‬الف) خالصه شدهاند‪.‬‬

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

‫هش یک تکنیک کامپیوتری ساده برای تبدیل یک شماره صفحه بزرگ به شماره کوچکتر با تعداد بیت کمتر‬
‫میباشد‪ .‬تابع هش باید شماره صفحه مجازی را تصادفی کند و یک شماره هش منحصر بفرد میسازد تا بعنوان‬
‫یک اشارهگر استفاده شود‪ .‬تابع تجانس هش را در لیست پیوندی تولید میکند‪.‬‬

‫بافر جستجوی ترجمه‪ :2‬نگاشتهای ترجمه در شکل یک بافر جستجوی ترجمه (‪ )TLB‬و جداول صفحه (‪)PT‬‬
‫ظاهر میشوند‪ .‬براساس مفهوم محلیت مراجعات حافظه‪ ،‬یک مجموعه کاری خاص از صفحات در یک متن داده‬
‫شده یا پنجره زمانی مورد مراجعه قرار میگیرد‪ TLB .‬یک جدول ترجمه با سرعت باال است که ورودیهای صفحه‬
‫اخیراً مورد رجوع یا مشابه را ذخیره میکند‪ .‬یک ورودی صفحه شامل لزوماً زوج (شماره فریم صفحه‪ ،‬شماره صفحه‬
‫مجازی) می باشد‪ .‬امیدواریم که صفحاتی که در یک مجموعه کاری مشابه قرار دارند‪ ،‬بطور مستقیم با استفاده از‬
‫ورودیهای ‪ TLB‬ترجمه شوند‪.‬‬

‫‪1‬‬
‫‪Segmentation‬‬
‫‪2‬‬
‫‪Translation lookaside buffer‬‬
‫‪| 199‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫استفاده از یک ‪ TLB‬و ‪PT‬ها برای ترجمه آدرس در شکل ‪(20-4‬ب) نشان داده شده است‪ .‬هر آدرس مجازی به‬
‫سه فیلد تقسیم میشود‪ :‬سمتچپترین فیلد‪ ،‬شماره صفحه مجازی را نگه میدارد‪ ،‬فیلد میانی شماره بلوک حافظه‬
‫نهان را و سمت راستترین فیلد‪ ،‬آدرس کلمه در یک بلوک میباشد‪.‬‬

‫هدف ما ساخت آدرس فیزیکی شامل‪ ،‬شماره فریم صفحه‪ ،‬شماره بلوک و آدرس کلمه است‪ .‬گام اول ترجمه استفاده‬
‫از شماره صفحه مجازی به عنوان کلیدی برای جستجوی ‪ TLB‬به منظور پیداکردن تطابق میباشد‪ TLB .‬میتواند‬
‫با یک حافظه انجمنی خاص (حافظه قابل آدرس‪-‬محتوا) پیاده سازی شود یا قسمتی از حافظه نهان را استفاده کند‪.‬‬

‫در حالت اصابت در ‪ ،TLB‬شماره فریم صفحه از ورودی صفحه تطابق یافته بازیابی میشود‪ .‬بلوک حافظه نهان و‬
‫آدرس کلمه مستقیماً کپی میشوند‪ .‬در صورت فقدان و عدم یافتن تطابق در ‪ ،TLB‬یک اشارهگر هش شده برای‬
‫تعیین جدولهای صفحهای که شماره فریم صفحه مطلوب میتواند بازیابی شود استفاده میشود‪.‬‬
‫آدرس مجازی‬ ‫اشارهگر‬ ‫آدرس فیزیکی‬
‫تابع نگاشت‬ ‫تابع نگاشت‬
‫هش‬
‫تجانس‬
‫تابع نگاشت‬ ‫تابع نگاشت‬
‫)‪TLB (ATC‬‬

‫‪ PT‬یک سطحه‬ ‫‪ PT‬دو سطحه‬ ‫‪ PT‬معکوس ‪ PT‬انجمنی‬


‫(الف) شماتیک ترجمه آدرس مجازی (‪ =PT‬جدول صفحه)‬
‫آدرس مجازی‬ ‫‪page‬‬ ‫‪Block‬‬ ‫‪word‬‬

‫‪Page fault‬‬
‫‪miss‬‬
‫‪TLB‬‬ ‫‪PTs‬‬
‫‪update‬‬
‫‪hit‬‬ ‫‪Page frame‬‬
‫‪or‬‬

‫‪page‬‬ ‫‪Block‬‬ ‫‪word‬‬ ‫آدرس فیزیکی‬

‫(ب) استفاده از یک ‪ TLB‬و ‪ PT‬برای ترجمه آدرس‬


‫‪s‬‬ ‫‪k‬‬ ‫‪Segment id‬‬
‫‪Sreg‬‬ ‫‪Offset‬‬

‫‪.‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪Segment‬‬ ‫‪Offset‬‬
‫‪ID‬‬
‫(ج) نگاشت آدرس معکوس‬
‫شکل ‪ :20-4‬مکانیزمهای ترجمه آدرس با استفاده از یک ‪ TLB‬و شکلهای مختلف جداول صفحه‬

‫حافظه صفحه بندی شده‪ :‬صفحه بندی تکنیکی است برای بخشبندی هر دو حافظه فیزیکی و حافظه مجازی‬
‫به صفحات با اندازه ثابت‪ .‬تبادل اطالعات بین آنها در سطح صفحه همانطور که توصیف شد انجام میشود‪ .‬جداول‬
‫صفحه برای نگاشت بین صفحات و فریمهای صفحه استفاده میشوند‪ .‬این جداول در حافظه اصلی براساس تولید‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 200‬‬

‫پردازههای کاربر در برنامههای کاربردی پیادهسازی میشوند‪ .‬چون ممکن است تعداد زیادی پردازه کاربر بطور پویا‬
‫تولید شود‪ ،‬تعداد ‪PT‬های نگهداری شده در حافظه اصلی میتواند خیلی زیاد باشد‪ .‬ورودیهای جدول صفحه (‪)PTE‬‬
‫شبیه ورودیهای ‪ TLB‬است که شامل زوج مرتب آدرس (فریم صفحه‪ ،‬صفحه مجازی) میباشد‪.‬‬

‫نکته اینکه ورودیهای ‪ TLB‬و ‪PTE‬ها هر دو باید بطور پویا بروز شوند تا تاریخچه آخرین مراجعه حافظه را انعکاس‬
‫دهند‪ .‬فقط تصاویر تاریخچه در این نگاشتهای جدول نگهداری میشوند‪ .‬اگر یک صفحه مورد تقاضا در یک ‪PT‬‬
‫پیدا نشد یک فقدان صفحه ظاهر میشود‪ .‬فقدان صفحه به این معنی است که صفحه مورد رجوع در حافظه اصلی‬
‫مقیم نیست‪ .‬وقتیکه یک خطای صفحه اتفاق افتاد‪ ،‬پردازه درحال اجرا معلق میشود‪ .‬یک سوئیچ تعویض متن به‬
‫پردازه آماده اجرای دیگر ایجاد میشود درحالیکه صفحه مفقود از دیسک یا واحد نوار در حال انتقال به حافظه‬
‫فیزیکی است‪.‬‬

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

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

‫در یک سیستم حافظه قطعهبندی شده‪ ،‬برنامههای کاربر میتوانند بطور منطقی به قطعهها ساختاربندی شوند‪.‬‬
‫قطعهها میتوانند یکدیگر را فراخوانی کنند‪ .‬برخالف صفحات‪ ،‬قطعهها میتوانند طول متغیر داشته باشند‪ .‬مدیریت‬
‫یک سیستم حافظه قطعه شده به خاطر قطعه متغیر پیچیدهتر است‪.‬‬

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

‫حافظه قطعهبندی شده به عنوان یک فضای آدرس دو بُعدی مرتب میشود‪ .‬هر آدرس مجازی در این فضا یک‬
‫فیلد پیشوند به نام شماره قطعه و یک پسوند به نام آفست داخل قطعه دارد‪ .‬آدرسهای آفست در داخل هر قطعه‬
‫آدرسهای پیوسته یک بُعدی را شکل میدهد‪ .‬تعداد قطعه که لزوماً پشت سرهم نیستند‪ ،‬بُعد دوم فضای آدرس را‬
‫شکل میدهند‪.‬‬

‫قطعههای صفحه بندی شده‪ :‬دو مفهوم فوق یعنی صفحهبندی و قطعه بندی میتوانند با هم ترکیب شوند تا‬
‫نوعی از حافظه مجازی با قطعههای صفحه بندی شده را پیادهسازی کنند‪ .‬در داخل هر قطعه‪ ،‬آدرسها به صفحات‬
‫‪| 201‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫با طول ثابت تقسیم میشوند‪ .‬بنابراین هر آدرس مجازی به سه فیلد تقسیم میشود‪ :‬شماره قطعه‪ ،‬شماره صفحه‪ ،‬و‬
‫آفست داخل هر صفحه‪.‬‬

‫قطعه های صفحه بندی شده مزایای هر دو حافظه صفحه بندی شده و حافظه قطعه بندی شده را فراهم میکنند‪.‬‬
‫برای کاربران‪ ،‬فایلهای برنامه بطور منطقی بهتر ساختاردهی میشوند‪ .‬برای ‪ ،OS‬حافظه مجازی میتواند با صفحات‬
‫با طول ثابت در هر قطعه بطور سیستمی مدیریت شود‪ .‬حد واسطی بین اندازه قطعه‪ ،‬اندازه صفحه و اندازه آفست‬
‫وجود دارد‪.‬‬

‫صفحه بندی معکوس‪ :‬صفحه بندی مستقیم توصیف شده در باال با یک فضای آدرس مجازی مثالً ‪ 32‬بیت‬
‫کار میکند‪ .‬در کامپیوترهای مدرن‪ ،‬فضای آدرس مجازی خیلی بزرگ است مثل ‪ 52‬بیت خط آدرس در ‪IBM‬‬
‫‪ .RS6000‬یک فضای آدرس مجازی بزرگ نیازمند یا ‪PT‬های بزرگ یا صفحه بندی مستقیم چند سطحه است‬
‫که پردازه ترجمه آدرس و بنابراین کارایی سیستم را کم میکند‪.‬‬

‫در کنار نگاشت مستقیم‪ ،‬نگاشتهای ترجمه آدرس میتواند با نگاشت معکوس پیاده سازی شوند (شکل‪(20-4‬ج))‪.‬‬
‫یک جدول صفحه معکوس شده برای هر فریم صفحهای که به کاربران تخصیص داده میشود‪ ،‬ساخته میشود‪ .‬هر‬
‫شماره صفحه مجازی میتواند با یک شماره صفحه فیزیکی جفت شود‪.‬‬

‫جداول صفحه معکوس شده با یک جستجوی انجمنی یا با استفاده از یک تابع هش دسترسی میشوند‪ .‬پروتوتایپ‬
‫‪ IBM 801‬و ‪ IBM RT/PC‬نگاشت معکوس شده را برای ترجمه آدرس صفحه پیادهسازی کردهاند‪ .‬در استفاده‬
‫از ‪PTE‬های معکوس شده فقط صفحات مجازی که در حال حاضر در حافظه فیزیکی مقیم هستند شامل میشوند‪.‬‬
‫این روش کاهش چشمگیری در اندازه جداول صفحه ایجاد میکند‪.‬‬

‫همانطور که در شکل ‪(20-4‬ج) نشان داده شده است‪ ،‬تولید یک آدرس مجازی بزرگ از یک آدرس فیزیکی کوچک‬
‫با کمک ثباتهای قطعه انجام میشود‪ 4 .‬بیت (با ‪ sreg‬نشان داده شده است) از ‪ 32‬بیت آدرس مشخص کننده‬
‫یک ثبات قطعه است‪ .‬ثبات‪ ،‬یک ‪ id‬قطعه تهیه میکند که جایگزین ‪ 4‬بیت ‪ sreg‬میشود تا یک آدرس مجازی‬
‫بزرگ را شکل دهد‪.‬‬

‫این روش بطور مؤثری یک فضای آدرس مجازی بزرگ با محدودههای قطعهی چند ‪256MB‬ی (‪ )228B‬ایجاد‬
‫میکند‪ ،IBM RT/PC .‬یک ‪ id‬قطعه ‪ 12‬بیتی (‪ 4096‬قطعه) و فضای آدرس مجازی ‪ 40‬بیتی دارد‪.‬‬

‫برای پیاده سازی نگاشت معکوس یا جدول صفحه انجمنی یا جداول صفحه معکوس شده میتوانند استفاده شوند‪.‬‬
‫جدول صفحه معکوس را میتوان با استفاده از یک ‪ TLB‬ایجاد کرد‪ .‬یک ‪ PT‬معکوس شده از استفاده از جدول‬
‫صفحه بزرگ یا رشتهای از جداول صفحات اجتناب میکند‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 202‬‬

‫با یک آدرس مجازی داده شده که باید ترجمه شود‪ ،‬سخت افزار ‪ PT‬معکوس را برای آن آدرس جستجو میکند‬
‫واگر پیدا شد اندیس جدولِ عنصر منطبق را به عنوان آدرس فریم صفحه مطلوب استفاده میکند‪ .‬یک جدول هش‬
‫برای جستجو در ‪ PT‬معکوس شده استفاده میشود‪ .‬اندازه ‪ PT‬معکوس شده با اندازه فضای فیزیکی تعیین میشود‪،‬‬
‫در حالیکه اندازه ‪ PT‬سنتی با اندازه فضای مجازی تعیین میشود‪ .‬به خاطر اینکه فضای آدرس فیزیکی کوچک‬
‫است نیازی به استفاده از سطوح چندگانه برای جدول صفحه معکوس نیست‪.‬‬

‫مثال ‪ :2-4‬صفحهبندی و قطعه بندی در پردازنده ‪Intel i486‬‬

‫‪ I486‬مثل سایر اعضای خانواده ‪ ،80x86‬از هر دو قابلیت صفحه بندی و قطعه بندی بهره میبرد‪ .‬مُد محافظت‬
‫شده آدرس خطی را از )‪ 4GB(232B‬تا )‪ 64TB(246B‬با چهار سطح محافظت افزایش میدهد‪ .‬اندازه حافظه‬
‫ماکزیمم در مُد واقعی ‪ (220( 1MB‬میباشد‪ .‬مُد محافظت شده به ‪ i486‬اجازه میدهد تا همه نرم افزارهای ‪8086‬‬
‫تا ‪ 80386‬را اجرا کند‪ .‬یک قطعه میتواند هر طولی داشته باشد از ‪ 1‬بایت تا ‪ ،4GB‬حداکثر اندازه حافظه فیزیکی‪.‬‬

‫یک قطعه میتواند از هر آدرس پایهای شروع شود و همپوشانی حافظه پشتیبان بین قطعهها مجاز است‪ .‬آدرس‬
‫مجازی (شکل ‪(21-4‬الف)) یک انتخاب کننده قطعه ‪ 16‬بیتی دارد تا آدرس پایه فضای آدرس خطی استفاده شده‬
‫با سیستم صفحه بندی ‪ i486‬را تعیین کند‪ 32 .‬بیت آدرس داخلی یک قطعه را تعیین میکند‪ .‬توصیفکننده قطعه‬
‫برای تعیین حقوق دسترسی و اندازه قطعه در کنار آدرس اولین بایت قطعه استفاده میشود‪.‬‬

‫خصوصیت صفحهبندی در ‪ i486‬اختیاری است و میتواند توسط کنترل نرم افزاری فعال یا غیر فعال شود‪ .‬وقتیکه‬
‫صفحه بندی فعال شد‪ ،‬آدرس مجازی ابتدا به آدرس خطی و سپس به آدرس فیزیکی ترجمه میشود‪ .‬وقتیکه‬
‫صفحه بندی غیرفعال باشد‪ ،‬آدرس خطی و آدرس فیزیکی یکی هستند‪ .‬وقتیکه یک قطعه ‪ 4GB‬انتخاب شود‪،‬‬
‫کل حافظه فیزیکی یک قطعه بزرگ میشود و بدین معنی است که مکانیزم صفحه بندی لزوماً غیرفعال است‪.‬‬

‫در این حالت‪ i486 ،‬میتواند با ‪ 4‬سازمان حافظه مختلف استفاده شود‪ :‬صفحه بندی خالص‪ ،‬قطعه بندی خالص‪،‬‬
‫قطعههای صفحه بندی شده یا آدرس فیزیکی خالص بدون صفحه بندی و قطعه بندی‪.‬‬

‫یک ‪ TLB‬با ‪ 32‬ورودی میتواند برای تبدیل آدرس خطی مستقیماً به آدرس فیزیکی استفاده شود (شکل‪(21-4‬ب))‬
‫بدون بازیابی صفحه بندی دو سطح (شکل ‪(21-4‬ج))‪ .‬طول صفحه استاندارد در ‪ 4KB=212B ،i486‬میباشد‪.‬‬
‫چهار ثبات کنترلی برای انتخاب بین صفحه بندی عادی و راه اندازی خطای صفحه استفاده میشوند با یک‬
‫دایرکتوری جدول صفحه (‪ )4KB‬اجازه ‪ 1024‬ورودی دایرکتوری صفحه را میدهد‪.‬‬
‫)‪ 32((4KB=4×210×8=32×210‬تعداد بیتهای هر ورودی و ‪ 1024‬تعداد صفحه)‪ .‬هر جدول صفحه در سطح‬
‫دوم ‪ 4KB‬است و تا ‪ 1024‬عدد ‪ PTE‬را نگه میدارد‪ 20 .‬بیت باالی آدرس خطی برای تشخیص وجود اصابت‬
‫استفاده میشود‪ .‬نرخ اصابت در ‪ TLB‬و جداول صفحه وابسته به رفتار برنامه و مؤثر بودن سیساتهای بروزرسانی‬
‫(جایگزینی صفحه) میباشد‪ .‬نرخ اصابت‪ ،‬در عملیات ‪ 98٪ ،TLB‬مشاهده شده است‪.‬‬
‫‪| 203‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫‪15‬‬ ‫‪0‬‬ ‫‪31‬‬ ‫‪0‬‬


‫‪segment‬‬ ‫‪offset‬‬

‫مکانیزم صفحه بندی‬


‫‪Access‬‬ ‫عملوند‬
‫‪right‬‬ ‫‪CPU‬ی ‪i486‬‬
‫‪+‬‬ ‫حافظه‬
‫‪Limit‬‬
‫‪Base‬‬
‫‪address‬‬
‫(الف) سگمنتبندی برای ایجاد آدرس خطی‬
‫آدرس خطی‬ ‫‪TLB‬‬ ‫اصابت‬
‫(‪ 32‬ورودی)‬
‫حافظه‬
‫فقدان‬
‫فیزیکی‬

‫‪31‬‬ ‫‪0‬‬ ‫جدول صفحه‬

‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪+‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬

‫دایرکتوری صفحه‬ ‫(ب) عملیات ‪TLB‬‬


‫‪31‬‬ ‫‪22‬‬ ‫‪12‬‬ ‫‪0‬‬
‫‪Directory‬‬ ‫‪Table Offset‬‬
‫‪12‬‬
‫‪10‬‬
‫‪10‬‬
‫‪31‬‬ ‫‪0‬‬ ‫‪31‬‬ ‫‪0‬‬
‫‪CR0‬‬ ‫‪+‬‬ ‫‪Address‬‬
‫‪31‬‬ ‫‪0‬‬
‫‪CR1‬‬ ‫‪+‬‬
‫‪CR2‬‬ ‫‪+‬‬
‫‪CR3 root‬‬

‫(ج) شماتیک صفحه بندی دو سطحه‬


‫شکل ‪ :21-4‬مکانیزمهای صفحه بندی و سگمنت بندی ساخته شده در ‪CPU‬ی ‪Intel i486‬‬
‫‪ -3-4-4‬سیاستهای جایگزینی حافظه‬

‫سیاستهای مدیریت حافظه شامل تخصیص و عدم تخصیص صفحات به پروسههای فعال و جایگزینی صفحات‬
‫حافظه میباشد‪ .‬مشکالت تخصیص و بازپس گیری در بخش ‪ 3-3-5‬بعد از مطالعه سازمان حافظه اصلی در بخش‬
‫‪ 5-3-1‬بررسی خواهند شد‪.‬‬

‫در این بخش‪ ،‬شماتیکهای جایگزینی صفحه که در سیستمهای حافظه صفحه بندی براساس نیاز پیادهسازی‬
‫شدهاند را مطالعه میکنیم‪ .‬جایگزینی صفحه اشاره به پردازهای دارد که یک صفحه مقیم در حافظه با یک صفحه‬
‫جدیدکه از دیسک منتقل شده‪ ،‬جایگزین میشود‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 204‬‬

‫چون تعداد فریمهای صفحه قابل دسترس خیلی کمتر (‪1013‬تا ‪ )105‬از تعداد صفحات است‪ ،‬فریمها عاقبت به کلی‬
‫اشغال میشوند‪ .‬به منظور تطبیق یک صفحه جدید‪ ،‬یکی از صفحات مقیم باید جایگزین شوند‪ .‬سیاستهای مختلفی‬
‫برای جایگزینی صفحه پیشنهاد شدهاند‪ .‬این سیاستها در زیر توصیف و مقایسه میشوند‪.‬‬

‫هدف یک سیاست جایگزینی صفحه حداقل کردن تعداد خطاهای صفحه ممکن بطوریکه زمان دسترسی‪-‬حافظه‬
‫مؤثر کاهش پیدا کند می باشد‪ .‬مؤثر بودن یک الگوریتم جایگذاری وابسته به رفتار برنامه و الگوهای ترافیک بوقوع‬
‫پیوسته می باشد‪ .‬یک سیاست خوب باید با خصوصیت محلیت برنامه تطابق پیدا کند‪ .‬سیاست توسط اندازه صفحه و‬
‫تعداد فریمهای قابل دسترس تحت تأثیر قرار میگیرد‪.‬‬

‫ردیابیهای صفحه‪ :‬برای تجزیه تحلیل یک سیستم حافظه صفحه بندی‪ ،‬اغلب آزمایشات ردیابی صفحه انجام‬
‫میشود‪ .‬یک ردیابی صفحه‪ ،‬رشتهای از شماره فریم صفحه (‪ )PFN1s‬میباشد که در طول اجرای یک برنامه داده‬
‫شده تولید میشوند‪ .‬به منظور سادگی تجزیه‪-‬تحلیل‪ ،‬اثر حافظه نهان را نادیده میگیریم‪.‬‬

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

‫یک ردیابی صفحه )‪ P(n)=r(1)r(2)…r(n‬را که شامل ‪ n‬عدد ‪ PFN‬میباشد که در زمان گسسته تقاضا شدهاند‬
‫از یک تا ‪ n‬در نظر بگیرید‪PFN ،r(t) .‬ی میباشد که در زمان ‪ t‬درخواست شده است‪ .‬ما دو فاصله مرجع بین‬
‫ظهورهای تکراری صفحه مشابه در )‪ p(n‬را تعریف میکنیم‪:‬‬

‫فاصله پیشرونده‪ ft(x) 2‬برای صفحه ‪ x‬تعداد قطعات‪ 3‬زمانی از زمان ‪ t‬تا اولین مراجعه تکراری صفحه در آینده‬
‫است‪:‬‬

‫اگر 𝑘 کوچکترین عدد صحیحی باشد که 𝑥 = )𝑡(𝑟 = )𝑘 ‪ 𝑟(𝑡 +‬در)‪𝑘 . p(n‬‬


‫{ = )𝑥( 𝑡𝑓‬ ‫)‪(4-11‬‬
‫∞‬ ‫اگر 𝑥 در)𝑛(𝑝 بعد از زمان 𝑡 تکرار نشود‬

‫بطور مشابه فاصله عقبگرد )‪ bt(x‬تعداد قطعات زمانی از زمان ‪ t‬است که آخرین مراجعه به صفحه ‪ x‬در گذشته‬
‫اتفاق افتاده است‪:‬‬

‫‪1‬‬
‫‪Page frame number‬‬
‫‪2‬‬
‫‪forward‬‬
‫‪3‬‬
‫‪Slots‬‬
‫‪| 205‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫اگر 𝑘 کوچکترین عدد صحیحی باشد که 𝑥 = )𝑡(𝑟 = )𝑘 ‪ 𝑟(𝑡 −‬در)‪𝑘 . p(n‬‬


‫{ = )𝑥( 𝑡𝑏‬ ‫)‪(4-12‬‬
‫∞‬ ‫اگر 𝑥 در)𝑛(𝑝 در گذشته ظاهر نشده است‬

‫فرض کنید )‪ R(t‬مجموعه مقیم همه صفحاتی است که در زمان ‪ t‬در حافظه اصلی قرار دارند‪ .‬فرض کنید )‪q(t‬‬
‫صفحهای باشد از )‪ R(t‬که وقتیکه یک خطای صفحه در زمان ‪ t‬اتفاق افتاد باید جایگزین شود‪.‬‬

‫سیاستهای جایگزینی‪ 1‬صفحه‪ :‬سیاستهای جایگزینی صفحه زیر در یک سیستم حافظه صفحه بندی‬
‫براساس نیاز برای یک خطای صفحه در زمان ‪ t‬میباشند‪.‬‬

‫(‪ )1‬اخیراً کمتر استفاده شده (‪ :)LRU2‬این سیاست صفحهای در )‪ R(t‬را جایگزین میکند که طوالنیترین فاصله‬
‫عقبگرد را داشته باشد‪.‬‬
‫)‪q(t)=y , if bt(y)=max{bt(x)}, x∈R(t‬‬ ‫)‪(4-13‬‬
‫(‪ )2‬الگوریتم بهینه (‪ :)OPT‬این سیاست صفحهای در )‪ R(t‬را جایگزین میکند که طوالنیترین فاصله پیشرونده‬
‫را داشته باشد‪:‬‬
‫)‪q(t(=y, if ft(y)=max{ft(x)} ,x∈R(t‬‬ ‫)‪(4-14‬‬
‫(‪ )3‬اولین ورودی اولین خروجی(‪ :)FIFO3‬این سیاست صفحهای در )‪ R(t‬را جایگزین میکند که طوالنیترین‬
‫مدت در حافظه بوده است‪.‬‬
‫(‪ )4‬با فرکانس کمتر استفاده شده(‪ :)LFU4‬این سیاست صفحهای در )‪ R(t‬را جایگزین میکند که در گذشته‬
‫کمترین رجوع را داشته است‪.‬‬
‫(‪ FIFO )5‬حلقوی‪ :‬این سیاست همه ورودیهای فریم صفحه را در یک صف ‪ FIFO‬حلقویی با استفاده از یک‬
‫اشارهگر که ابتدای صف را مشخص میکند به هم متصل میکند‪ .‬یک بیت تخصیص برای هر فریم صفحه در نظر‬
‫گرفته میشود‪ .‬این بیت براساس تخصیص اولیهی یک صفحه در فریم تنظیم میشود‪.‬‬
‫وقتیکه یک خطای فقدان صفحه اتفاق میافتد‪ ،‬صف بصورت حلقوی از مکان اشارهگر پیمایش میشود‪ .‬اشارهگر‬
‫فریمهای صفحه تخصیص داده شده را ریست میکند و از آنها گذر میکند و اولین فریم صفحه تخصیص داده‬
‫نشده را جایگزین میکند‪ .‬وقتیکه همه فریمها تخصیص داده شوند‪ ،‬ابتدای صف با سیاست ‪ FIFO‬جایگزین‬
‫میشود‪.‬‬
‫(‪)6‬جایگزینی تصادفی‪ :‬این یک الگوریتم جزئی است که هر صفحهای را بصورت تصادفی برای جایگزینی انتخاب‬
‫میکند‪.‬‬

‫‪1‬‬
‫‪victim‬‬ ‫‪victimize, evict,cache out, replace‬‬

‫‪2‬‬
‫‪Least Frequency used‬‬
‫‪3‬‬
‫‪First in First Out‬‬
‫‪4‬‬
‫‪Least Frequently Used‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 206‬‬

‫(‪ :NMRU)7‬همچون ‪ LRU‬میباشد با این تفاوت که ممکن است چند کاندیدا داشته باشد‪ .‬اگر تعداد بلوک ‪ 2‬باشد‬
‫با ‪LRU‬یکی میباشد‪.‬‬
‫(‪ :1NRU )8‬صفحه ای را جایگزین میکند که اخیر استفاده نشده است‪.‬‬
‫مثال ‪ :3-4‬آزمایشات ردیابی صفحه و تفسیر نتایج‬
‫یک سیستم حافظه مجازی صفحه بندی شده با سلسله مراتب دو سطحه را در نظر بگیرید‪ :‬حافظه اصلی ‪ M1‬و‬
‫حافظه دیسک ‪ .M2‬برای وضوح توضیح‪ ،‬اندازه صفحه را ‪ 4‬کلمه در نظر بگیرید‪ .‬تعداد فریمهای صفحه در ‪،M1‬‬
‫‪ 3‬میباشد که با ‪ a,b,c‬برچسبگذاری شدهاند و تعداد صفحات در ‪ 10 ،M2‬میباشد که با ‪ 0‬و‪1‬و‪2‬و‪...‬و‪ 9‬تعیین‬
‫میشوند‪i .‬امین صفحهی ‪ M2‬شامل آدرسهای کلمه ‪ 4i‬تا ‪ 4i+3‬برای ‪ i=0,1,…,9‬میباشند‪.‬یک برنامه خاص‬
‫رشته آدرسهای زیر را تولید میکند که اگر در یک صفحه مشابه واقع باشند باهم گروهبندی شدهاند‪.‬‬
‫‪Word trace: 0,1,2,3, 4,5,6,7, 8, 16,17, 9,10,11, 12 , 28,29,30, 8,9,10, 4,5 , 12, 4,5‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2 4‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪7‬‬ ‫‪2‬‬ ‫‪1 3 1‬‬
‫آزمایشات ردیابی صفحه برای سه سیاست جایگزینی صفحه در زیر توصیف شدهاند ‪ LRU‬و ‪ OPT‬و ‪.FIFO‬‬
‫صفحات متوالی در فریمهای صفحه ‪ PF‬از ورودیهای ردیابی بار میشوند‪ .‬در ابتدا همه ‪ PF‬ها خالی میباشند‪.‬‬
‫نتایج زیر بهتر بودن ‪ OPT‬نسبت به بقیه را نشان میدهد‪ .‬به هر حال ‪ OPT‬در عمل نمیتواند پیادهسازی شود‪.‬‬
‫سیاست ‪ LRU‬از ‪ FIFO‬به خاطر محلیت مراجعات بهتر کار میکند‪ .‬از این نتایج استدالل میکنیم که ‪ LRU‬عموماً‬
‫بهتر از ‪ FIFO‬است‪ .‬بههر حال‪ ،‬به خاطر وابستگی به رفتار برنامه استثناهایی نیز وجود دارد‪.‬‬

‫‪PF‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪7‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫نرخ اصابت‬
‫‪A‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪3‬‬
‫‪B‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪3/11‬‬
‫‪LRU‬‬ ‫‪C‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪Faults‬‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬
‫‪A‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪3‬‬
‫‪B‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪4/11‬‬
‫‪OPT‬‬ ‫‪C‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪Faults‬‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬
‫‪A‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪B‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪2/11‬‬
‫‪FIFO‬‬ ‫‪C‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪3‬‬
‫‪Faults‬‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬

‫‪1‬‬
‫‪Not recently used‬‬
‫‪| 207‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫کارایی نسبی‪ :‬کارایی یک الگوریتم جایگزینی صفحه وابسته به ردیابی صفحه (رفتار برنامه) اتفاق افتاده است‪.‬‬
‫بهترین سیاست ‪ OPT‬است‪ .‬به هر حال‪ ،‬جایگزینی ‪ OPT‬قابل فهم نیست زیرا نمیتوان نیازهای صفحه برنامه را‬
‫در آینده پیشبینی کرد‪.‬‬
‫الگوریتم ‪ LRU‬یک سیاست رایج است و اغلب نرخ اصابت باالیی دارد‪ .‬سیاستهای ‪ FIFO‬و تصادفی ممکن است‬
‫به خاطر نادیده گرفتن محلیت برنامه بدکار کنند‪ .‬یکی از مشکالت ‪ FIFI‬ناهنجاری ‪ 1FIFO‬میباشد‪ .‬وقتی تعداد‬
‫صفحات حافظه بیشتر میشوند انتظار داریم تعداد فقدانها کم شوند اما در ‪ FIFI‬گاهی این قضیه معکوس میشود‬
‫یعنی با وجود بزرگتر شدن تعداد صفحات کارایی بدتری دارد‪ .‬به الگوریتمهایی که این ناهنجاری در آنها وجود ندارد‪،‬‬
‫‪ Stack algorithm‬گفته میشود‪.‬‬
‫سیاست ‪ FIFO‬حلقوی تخمینی از ‪ LRU‬با پیادهسازی صف حلقوی ساده میباشد‪ .‬سیاست ‪ LFU‬ممکن است‬
‫سیاستی بین ‪ LRU‬و ‪ FIFO‬باشد‪ .‬به هر حال هیچگونه برتری ثابت یک سیاست به خاطر وابستگی آن به رفتار‬
‫برنامه و شرایط زمان اجرای فریمهای صفحه‪ ،‬بر دیگران وجود ندارد‪.‬‬
‫در مجموع‪ ،‬با افزایش اندازه مجموعه مقیم )‪ R(t‬در زمان ‪ t‬نرخ خطای صفحه کاهش مییابد زیرا صفحات مقیم‬
‫بیشتر باعث افزایش نرخ اصابت در حافظه اصلی میشود‪.‬‬
‫سیاستهای جایگزینی بالک‪ :‬رابطه بین فریمهای بلوک حافظه نهان و بلوکهای حافظه اصلی مشابه رابطه‬
‫بین فریمهای صفحه و صفحات روی یک دیسک میباشد‪ .‬بنابراین سیاستهای جایگزینی صفحه میتوانند برای‬
‫جایگزینی بالک وقتیکه فقدان حافظه نهان اتفاق میافتد اصالح شوند‪.‬‬
‫سازمانهای حافظه نهان مختلف (بخش ‪ )1-5‬ممکن است انعطاف پذیریهای مختلفی در پیاده سازی بعضی‬
‫الگوریتم های جایگزینی را پیشنهاد کنند‪ .‬معموالً یک حافظه نهان بصورت انجمنی جستجو میشود‪ ،‬در حالیکه‬
‫حافظه اصلی بطور تصادفی آدرس دهی میشود‪.‬‬
‫بخاطر تفاوت بین تخصیص صفحه در حافظه و تخصیص بلوک در حافظه نهان‪ ،‬نرخ اصابت حافظه نهان و نرخ‬
‫اصابت صفحه حافظه توسط سیاستهای جایگزینی بطور متفاوتی تحت تأثیر قرار میگیرند‪ .‬گاهی اوقات برای‬
‫ارزیابی کارایی حافظه نهان ردیابی حافظه نهان مورد نیاز میباشد‪ .‬روابط در فصل ‪ 5‬بیشتر بحث میشوند‪.‬‬

‫‪ -1-3-4-4‬پیاده سازی الگوریتم ‪Pseudo LRU‬‬

‫با توجه به مشابه بودن جایگزینی صفحه حافظه اصلی و جایگزینی بلوک حافظه نهان مثالی از پیادهسازی این‬
‫الگوریتم روی حافظه نهان را انجام میدهیم‪ .‬نکته کلیدی در تمامی الگوریتمهای حایگزینی بلوک این هست که‬
‫تمامی آنها روی حافظه نهان انجمنی کامل و مجموعهای کار میکنند‪ .‬حافظه نهان نگاشت مستقیم از الگوریتمهای‬

‫‪1‬‬
‫‪FIFO anomaly‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 208‬‬

‫جایگزینی پشتیبانی نمیکند‪ .‬ساختارهای حافظه نهان در فصل ‪ 5‬به تفصیل توضیح داده شده است‪ .‬فرض میکنیم‬
‫هر مجموعه در حافظه نهان ‪ k-way‬باشد یا به عبارتی ‪ k‬بلوک در هر مجموعه باشد که قابلیت جایگزینی داشته‬
‫باشند‪ .‬این الگوریتم به ازای هر مجموعه انجام میشود و ‪ k-1‬بیت به ازای هر مجموعه ‪ k‬بلوکی سربار تصمیم‬
‫گیری دارد‪ .‬به عنوان مثال در مجموعه به اندازه ‪ 4‬بلوک ‪ 3‬بیت ‪ b2b1b0‬برای تصمیم گیری میخواهیم که‬
‫بصورت زیر نقش ایفا میکنند‪:‬‬
‫‪b2 b1 b0 Line 0‬‬
‫)‪PLRU: (intel 80486‬‬ ‫‪Line1‬‬
‫‪Set‬‬
‫‪If line0 or line is accessed‬‬ ‫‪Line2‬‬
‫;‪{ b00‬‬ ‫‪Line3‬‬
‫;‪If line0 is accessed b11‬‬ ‫‪b2 b1 b0 Line0‬‬
‫;‪Else b00‬‬ ‫‪Line1‬‬ ‫‪Set‬‬
‫‪}else //line 2 or line3 is accessed‬‬ ‫‪Line2‬‬
‫‪Line3‬‬
‫;‪{ b00‬‬
‫;‪If line2 is accessed b21‬‬
‫;‪Else b20‬‬
‫}‬

‫الگوریتم جایگزینی آن بصورت زیر میباشد‪:‬‬


‫‪b0‬‬ ‫‪b1‬‬ ‫‪b2‬‬
‫{‪PLRU replace:‬‬
‫‪If b0b1=00 then replace line 0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪m‬‬
‫‪If b0b1=01 then replace line 1‬‬
‫‪If b0b2=10 then replace line 2‬‬
‫‪If b0b2=11 then replace line 3‬‬
‫}‬ ‫‪Line number‬‬

‫برای اندازه مجموعه بزرگتر تعداد مالتیپلکسرها را افزایش میدهیم‪ .‬در واقع ساختار این مدل مبتنی بر درخت‬
‫دودویی‪ 1‬میباشد‪.‬‬

‫‪b1=0‬‬ ‫‪Line 0‬‬


‫‪b0=0‬‬
‫‪Line 1‬‬
‫‪b0=1‬‬
‫‪b0=1‬‬ ‫‪b2=0‬‬ ‫‪Line 2‬‬

‫‪b2=1‬‬ ‫‪Line 3‬‬

‫‪1‬‬
‫‪Binary tree‬‬
‫‪| 209‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫مثال‪ :‬در ‪ PLRU‬اندازه مجموعه را هشت در نظر بگیرید و فرض کنید که حافظه نهان دارای محتوای زیر است و‬
‫رشته دسترسیها از چپ به راست ‪ J,Y,X,Z,B,C,F,A‬باشد‪ ،‬مشخص کنید بعد از رشته دسترسیهای فوق چه‬
‫بلوکی قربانی برای جایگزینی خواهد بود‪:‬‬

‫در واقع ‪ PLRU‬بصورت درخت دودویی هست و هرگاه به یک آدرس اشاره شد و ‪ hit‬داشت بیتهای مربوط به‬
‫آدرس برعکس میشوند‪ .‬برای اندازه بلوک هشت نیازمند ‪ 7‬بیت ‪ b0b1b2b3b4b5b6‬هستیم که بصورت درختی‬
‫و مالتی پلکسر بصورت زیر در تشخصی آدرس چیده میشوند‪:‬‬
‫‪b2=0‬‬ ‫‪J‬‬
‫‪b1=0‬‬
‫‪F‬‬
‫‪b2=1‬‬
‫‪b3=0‬‬ ‫‪b0‬‬ ‫‪b1‬‬ ‫‪b4‬‬ ‫‪b2 b 3 b5 b6‬‬
‫‪b1=1‬‬ ‫‪C‬‬
‫‪b0=0‬‬
‫‪B‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪b3=1‬‬ ‫‪m‬‬
‫‪b5=0‬‬ ‫‪X‬‬
‫‪S0‬‬ ‫‪0 1‬‬ ‫‪2 3‬‬
‫‪b0=1‬‬ ‫‪S1‬‬
‫‪b4=0‬‬ ‫‪Y‬‬
‫‪b5=1‬‬
‫‪b6=0‬‬ ‫‪A‬‬ ‫‪Line number‬‬
‫‪b4=1‬‬
‫‪Z‬‬
‫‪b6=1‬‬

‫‪ -1‬با توجه به اینکه اولین دسترسی ‪ J‬میباشد و در آدرس ‪ b0b1b2=000‬میباشد و در حافظه موجود هست‪.‬‬
‫آدرس بعدی برای جایگزینی با تغییر این بیتها بصورت معکوس بدست خواهد آمد یعنی ‪ b0b1b2=111‬میشود‪.‬‬

‫‪-2‬دسترسی بعدی به ‪ Y‬در آدرس ‪ b0b4b5=101‬میباشد بنابراین بلوک برای جایگزینی بعدی با‬
‫‪ b0b4b5=010‬بدست خواهد آمد‪.‬‬

‫‪-3‬دسترسی بعدی به ‪ X‬در آدرس ‪ b0b4b5=100‬میباشد که برای جایگزینی به ‪ b0b4b5=011‬تغییر خواهد‬


‫کرد‪.‬‬

‫‪ -4‬دسترسی بعدی به ‪ Z‬در آدرس ‪ b0b4b6=111‬میباشد که برای جایگزینی به ‪ b0b4b6=000‬تغییر خواهد‬


‫کرد‪.‬‬

‫‪-5‬دسترسی بعدی به ‪ B‬در آدرس ‪ b0b1b3=011‬میباشد که برای جایگزینی به ‪ b0b1b3=100‬تغییر خواهد‬


‫کرد‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 210‬‬

‫‪-6‬دسترسی بعدی به ‪ C‬در آدرس ‪ b0b1b3=010‬میباشد که برای جایگزینی به ‪ b0b1b3=101‬تغییر خواهد‬


‫کرد‪.‬‬

‫‪-7‬دسترسی بعدی به ‪ F‬در آدرس ‪ b0b1b2=001‬میباشد که برای جایگزینی به ‪ b0b1b2=110‬تغییر خواهد‬


‫کرد‪.‬‬

‫‪-8‬دسترسی بعدی به ‪ A‬در آدرس ‪ b0b4b6=110‬میباشد که برای جایگزینی به ‪ b0b4b6=001‬تغییر خواهد‬


‫کرد‪.‬‬

‫بعد از این رشته دسترسیها داریم‪:‬‬

‫‪b0 b1 b 2 b3 b4 b5 b 6‬‬
‫‪0 1 1 1 0 1 1‬‬

‫طبق شکل فوق خط انتخاب مالتی پلکسر سمت چپ ‪ b0=0‬میشود و ‪ b1‬انتخاب میشود‪ .‬و خطوط انتخاب مالتی‬
‫پلکسر سمت راست ‪ 01‬خواهد شد و ‪ b3‬انتخاب میشود شماره بلوک برای جایگزینی ‪ 011‬میشود و ‪ B‬به عنوان‬
‫‪ Victim‬بعدی برای جایگزینی میباشد‪ .‬البته طبق ‪ victim ،LRU‬باید ‪ J‬باشد ولی ‪ B ،PLRU‬را انتخاب میکند‪.‬‬
‫و ‪ A ،MRU‬را انتخاب میکند‪.‬‬
‫‪| 211‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫تمرینات فصل چهارم‬


‫مسأله ‪ -1-4‬اصطالحات پایه زیر را راجع به تکنولوژی پردازنده مدرن تعریف کنید‪.‬‬
‫(الف) فضای طراحی پردازنده (ب) تأخیر انتشار دستورالعمل (ج) نرخ انتشار دستورالعمل‬
‫(و) پردازنده در مقایسه با کمک پردازنده‬ ‫(ه) تداخل منابع‬ ‫(د) تأخیر عمل ساده‬
‫(ح) مدهای آدرس دهی‬ ‫(ز) ثباتهای همه منظوره‬
‫(ی)کنترل سخت افزاری در مقایسه با میکروکد‬ ‫(ط)حافظه نهانهای هم شکل در مقایسه با مجزا‬
‫مسأله ‪ -2-4‬اصطالحات زیر مرتبط با طراحی سلسله مراتب حافظه را تعریف کنید‪:‬‬
‫(ج) نگاشت آدرس‬ ‫(ب) فضای آدرس فیزیکی‬ ‫(الف) فضای آدرس مجازی‬
‫(و) نرخ اصابت‬ ‫(ه) جداول صفحه چندسطحه‬ ‫(د) بلوکهای حافظه نهان‬
‫(ح)تابع هش‬ ‫(ز)خطای صفحه‬
‫(ی)سیاستهای جایگزینی حافظه‬ ‫(ط)جدول صفحه معکوس‬
‫مسأله ‪ -3-4‬به سؤاالت زیر راجع به طراحی ریسک اسکالر یا پردازنده ریسک سوپراسکالر پاسخ دهید‪.‬‬
‫(الف) چرا اکثر واحدهای صحیح ریسک‪ ،‬از ‪ 32‬ثبات همه منظوره استفاده میکنند؟ مفهوم پنجرههای ثبات پیاده‪-‬‬
‫سازی شده در معماری اسپارک را توضیح دهید‪.‬‬
‫(ب) حد میانه طراحی بین فایل ثبات بزرگ و حافظه نهان داده بزرگ چیست؟ چرا ایستگاههای رزرواسیون با‬
‫بافرهای مرتب سازی مجدد نیاز به یک پردازنده سوپراسکالر دارند؟‬
‫(ج) رابطه بین واحد صحیح و واحد ممیز شناور در اکثر پردازندههای ریسک یا سازمان اسکالر یا سوپراسکالر را‬
‫توضیح دهید‪.‬‬
‫مسأله ‪ -4-4‬براساس بحث پردازندهها در بخش ‪ 1-4‬به سؤاالت زیر روی معماریهای ریسک و سیسک و‬
‫سوپراسکالر و ‪ VLIW‬پاسخ دهید‪.‬‬
‫(الف) معماری مجموعه دستورالعمل در پردازندههای ریسک و سیسک را بر اساس شکل دستورات مُدهای آدرس‬
‫دهی و تعداد سیکلها به ازای هر دستور (‪ )CPI‬مقایسه کنید‪.‬‬
‫(ب) مزایا و معایب استفاده از حافظه نهان مشترک و حافظه نهان مجزا برای دستورات و داده را بحث کنید‪ .‬پشتیبانی‬
‫مسیرهای داده‪ MMU ،‬و ‪ TLB‬و پهنای باند حافظه در دو معماری حافظه نهان را توضیح دهید‪.‬‬
‫(ج) بین ریسک اسکالر و ریسک سوپراسکالر براساس انتشار دستور‪ ،‬معماری خطلوله‪ ،‬و کارایی پردازنده تمایز قائل‬
‫شوید‪.‬‬
‫(د) تفاوت بین معماریهای سوپراسکالر و ‪ VLIW‬را براساس نیازهای نرم افزاری و سخت افزاری توضیح دهید‪.‬‬
‫مسأله ‪ -5-4‬ساختارها و نیازهای عملیاتی خطلوله دستورالعمل استفاده شده در پردازندههای سیسک و ریسک‬
‫اسکالر و ریسک سوپراسکالر و ‪ VLIW‬را توضیح دهید‪ CPI .‬مورد انتظار این معماریهای پردازنده را توضیح دهید‪.‬‬

‫مسأله ‪ -6-4‬مجموعه دستورالعمل ‪ intel i486‬و معماری پردازنده گزارش شده توسط ‪J.H cawford in‬‬
‫‪ IEEE micro, feb1990‬را مطالعه کنید و به سؤاالت زیر پاسخ دهید‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 212‬‬

‫(الف)شکلهای دستورات و دادهها چه هستند؟‬


‫(ب) مُدهای آدرسدهی چه هستند؟‬
‫(ج) طبقه بندی دستورات چه هستند؟ یک دستورالعمل را به عنوان مثال از هر طبقه توضیح دهید‪.‬‬
‫(د) دستورات پشتیبانی ‪ HLL‬و راهنماهای اسمبلی چه هستند؟‬
‫(ه) خواص دیباگ‪ ،‬تست و وقفهها چه هستند؟‬
‫(و) تفاوت بین مُدهای اجرای مجازی و واقعی چیست؟‬
‫(ز) توضیح دهید چگونه صفحهبندی در ‪ i486‬را غیر فعال میکنیم و چه نوع کاربردهایی از این انتخاب ممکن‬
‫است سود میبرند‪.‬‬
‫(ح) توضیح دهید چگونه قطعه بندی در ‪ i486‬غیرفعال میشود و چه نوع کاربردی از این انتخاب ممکن است سود‬
‫ببرند‪.‬‬
‫(ط) چه نوع مکانیزمهای محافظت در ‪i486‬ساخته شدهاند‪.‬‬
‫(ی) اطالعات بروز شده در ‪ i586‬را جستجو کنید و بهبودهای انجام شده در مقایسه با ‪ i486‬را توضیح دهید‪.‬‬
‫مسأله ‪ -7-4‬بعد از مطالعه ‪ ،‬مجموعه دستورالعمل ‪ i860‬و معماری ‪ i860‬و نسل بعدیش ‪ i860xp‬به سؤاالت‬
‫زیر پاسخ دهید‪.‬‬
‫(الف) قسمتهای (الف) تا (ج) مسأله ‪ 6-4‬را برای ‪ i860/i860xp‬تکرار کنید‪.‬‬
‫(ب) چه دستورات پشتیبانی چندپردازنده در ‪ i860xp‬اضافه شدند‪.‬‬
‫(ج) مد دستور‪ -‬دوگانه و دستورات عملیاتی دوگانه در پردازنده‪-‬های ‪ i860‬را توضیح دهید‪.‬‬
‫(د) سازمان حافظه صفحه بندی شده و ترجمه آدرس ‪ i860‬را توضیح دهید‪.‬‬
‫مسأله ‪ -8-4‬معماری اسپارک میتواند با ‪ 2‬تا ‪ ،8‬پنجره ثبات برای مجموع ‪ 40‬تا ‪ 132‬عدد ‪GPR‬پیاده سازی‬
‫شود‪ .‬چگونگی سازماندهی ‪GPR‬ها در پنجرههای همپوش را در هر یک از طرحهای زیر توضیح دهید‪.‬‬
‫(الف) استفاده از ‪ 40‬عدد ‪ GPR‬برای ساخت دو پنجره‪.‬‬
‫(ب) استفاده از ‪ 72‬عدد ‪ GPR‬برای ساخت ‪ 4‬پنجره‪.‬‬
‫(ج) چگونگی استفاده از پنجره های همپوش برای ارسال پارامتر بین زیرروال فراخوان و زیرروال فراخوانده شده را‬
‫توضیح دهید‪.‬‬
‫مسأله ‪ -9-4‬بخش ‪ 2-4‬مقاله )‪ Wall and Jouppi(1989‬را مطالعه کنید و به سؤاالت زیر پاسخ دهید‪.‬‬
‫(الف) چه عللی باعث میشود یک پردازنده خط لوله کارایی کمتر از خط لوله داشته باشد‪.‬‬
‫(ب) چه فاکتورهایی درجه طراحی سوپراسکالر را محدود میکنند‪.‬‬
‫مسأله ‪ -10-4‬به سؤاالت زیر مربوط به پردازش برداری پاسخ دهید‪.‬‬
‫(الف) چه فرقی بین دستورات اسکالر و دستورات برداری وجود دارد؟‬
‫(ب) شکل اجرای خطلوله یک پردازنده برداری با پردازنده اسکالر پایه (شکل ‪ )15.4‬را مقایسه کنید‪ .‬بهره افزایش‬
‫سرعت خطلوله برداری نسبت به پردازنده اسکالر برای بردارهای بزرگ را تجزیه‪-‬تحلیل کنید‪.‬‬
‫‪| 213‬‬ ‫فصل چهارم‪ :‬پردازندهها و سلسله مراتب حافظه‬

‫(ج) فرض کنید انتشار موازی به اجرای خط لوله اضافه شده است‪ .‬بهبود بیشتر‪ ،‬توان عملیاتی‪ ،‬در مقایسه با انتشار‬
‫موازی در یک خط لوله سوپراسکالر با درجه برابر چه خواهد بود؟‬
‫مسأله ‪ -11-4‬یک سلسله مراتب حافظه دوسطحه ‪ M1,M2‬را در نظر بگیرید‪ .‬نرخ اصابت ‪ M1‬را ‪ h‬در نظر‬
‫بگیرید‪ .‬فرض کنید ‪ C1,C2‬هزینه براساس ‪ KB‬و ‪ S1,S2‬ظرفیتهای حافظه باشد و ‪ t1,t2‬زمان دسترسی‬
‫باشند‪.‬‬
‫(الف) تحت چه شرایطی میانگین هزینه کل سیستم حافظه ‪ C2‬است؟‬
‫(ب) زمان دسترسی‪-‬حافظه مؤثر ‪ ta‬در این سلسله مراتب چیست؟‬
‫(ج) فرض کنید ‪ r=t2/t1‬نسبت سرعت دو حافظه باشد‪ .‬فرض کنید ‪ E=t1/ta‬بازدهی دسترسی سیستم حافظه‬
‫باشد‪ E .‬را بر اساس ‪ r,h‬بدست آورید‪.‬‬
‫(د) ‪ E‬را در مقایسه با ‪ h‬برای ‪ r=5,2,100‬در یک صفحه مشبک را رسم کنید‪.‬‬
‫(و) نرخ اصابت مورد نیاز برای اینکه ‪ E>0,95‬اگر ‪ r=100‬چیست؟‬
‫مسأله ‪ -12-4‬از شما خواسته شده است تا طرح ظرفیت یک سیستم دو سطحه را انجام دهید‪ .‬سطح اول‪M1 ،‬‬
‫با سه ظرفیت ‪ 256KB,128KB,64KB‬است‪ .‬سطح دوم ‪ M2‬حافظه اصلی با ظرفیت ‪ 4MB‬است‪ .‬فرض کنید‬
‫‪ C1‬و ‪ C2‬هزینه براساس بایت و ‪ t1‬و ‪ t2‬زمان دسترسی برای ‪ M1‬و ‪ M2‬باشند‪ .‬فرض کنید ‪ C1=20C2‬و‬
‫‪ .t2=10t1‬نرخ اصابت برای سه ظرفیت بترتیب ‪0.9 ،0.7‬و ‪ 0.98‬فرض میشود‪.‬‬
‫(الف) میانگین زمان دسترسی ‪ ta‬بر اساس ‪ t1=20ns‬در سه طرح حافظه نهان چیست؟ (نکته اینکه ‪ t1‬زمان از‬
‫‪ CPU‬به ‪ M1‬و ‪ t2‬از ‪ CPU‬به ‪ M2‬است نه از ‪ M1‬به ‪)M2‬‬
‫(ب)میانگین هزینه بر بایت برای کل سلسله مراتب حافظه اگر ‪ C2=$ 0.2/KB‬باشد را بدست آورید‪.‬‬
‫(ج) سه طرح حافظه را مقایسه کنید و ‪ order of merit‬را براساس میانگین هزینه و میانگین زمان دسترسی‬
‫مشخص کنید‪ .‬طرح بهینه براساس حاصلضرب میانگین هزینه و میانگین زمان دسترسی را انتخاب کنید‪.‬‬
‫مسأله ‪ -13-4‬مزایا و معایب پیادهسازی حافظه مجازی خصوصی و حافظه مجازی مشترک سراسری را در یک‬
‫سیستم چندکامپیوتره مقایسه کنید‪ .‬این مقایسه باید تأخیر‪ ،‬همبستگی‪ ،‬مهاجرت صفحه‪ ،‬محافظت‪ ،‬پیادهسازی و‬
‫مسائل کاربردی را در حالت سیستم چندکامپیوتره مقیاس پذیر با حافظههای مشترک توزیع شده مد نظر قرار دهد‪.‬‬

‫مسأله ‪ -14-4‬خصوصیت شمول و نیازهای همبستگی حافظه در یک سلسله مراتب حافظه چندسطحه را توضیح‬
‫دهید‪ .‬فرق بین سیاستهای نوشتن‪-‬سراسری و ‪ WB‬در نگه داری همبستگی در سطوح همسایه را توضیح دهید‪.‬‬
‫همچنین مفاهیم پایه صفحه بندی و قطعه بندی در مدیریت حافظههای مجازی و فیزیکی در سلسله مراتب را‬
‫توضیح دهید‪.‬‬

‫مسأله ‪ -15-4‬یک سیستم حافظه دوسطحه‪ 8 ،‬صفحه مجازی روی دیسک دارد که باید با ‪ 4‬فریم صفحه (‪)PF‬‬
‫در حافظه اصلی نگاشت شوند‪ .‬یک برنامه خاص ردیابی صفحه زیر را تولید کرده است‪.‬‬
‫‪1,0,2,2,1,7,6,7,0,1,2,0,3,0,4,5,1,5,2,4,5,6,7,6,7,2,4,2,7,3,3,2,3‬‬

‫`‬
‫کانون نشر علوم‬ ‫‪| 214‬‬

‫(الف) با استفاده از سیاستهای جایگزینی ‪ LRU‬چهار صفحه مقیم در چهار فریم صفحه را نشان دهید‪ .‬نرخ اصابت‬
‫را در حافظه اصلی محاسبه کنید‪ .‬فرض کنید ‪PF‬ها در ابتدا خالی هستند‪.‬‬
‫(ب)مرحله الف را برای سیاست جایگزینی صفحه ‪ FIFO‬تکرار کنید‪ .‬نرخ اصابت در حافظه اصلی را محاسبه کنید‪.‬‬
‫(ج) نرخ اصابت مراحل (الف) و (ب) را مقایسه کنید و سیاست ‪ FIFO‬حلقوی را برای این ردیابی صفحه تکرار کنید‪.‬‬
‫مسأله‪( -16-4‬الف) محلیت زمانی‪ ،‬مکانی و ترتیبی در سلسله مراتب حافظه را توضیح دهید‪.‬‬
‫(ب) مجموعه کاری چیست؟ حساسیت اندازه پنجره مشاهده و اندازه مجموعه کاری را توضیح دهید‪ .‬چگونه بر نرخ‬
‫اصابت حافظه اصلی تأثیر میگذارد؟‬
‫(ج) قانون ‪ 10-90‬در محلیت مراجعات چیست؟‬
‫مسأله ‪ -17-4‬یک سلسله مراتب حافظه ‪ M1,M2‬با زمانهای دسترسی ‪ t1,t2‬و هزینه بر بایت ‪ C1,C2‬را‬
‫بترتیب در نظر بگیرید‪ .‬نرخ اصابت حافظه نهان ‪ h1=0.95‬است‪( .‬نکته اینکه ‪ t2‬زمان دسترسی بین پردازنده و‬
‫‪ M2‬است نه بین ‪)M1,M2‬‬
‫(الف) فرمولی که ‪ Teff‬برای این سیستم حافظه را نشان دهد‪ ،‬بدست آورید‪.‬‬
‫(ب) فرمولی که هزینه کل این سیستم حافظه را نشان دهد‪ ،‬بدست آورید‪.‬‬
‫(ج) فرض کنید ‪ =t2 ،t1=20ns‬نامعلوم ‪ S1=512KB .‬و ‪=S2‬نامعلوم و ‪ C1=$ 0.01/B‬و ‪C2=$‬‬
‫‪ .0.0005/B‬هزینه کل حافظه نهان و حافظه اصلی به ‪15000‬دالر محدود شده است‪.‬‬
‫(‪ )1‬چه میزان ظرفیت برای ‪ )S2=?( M2‬میتوانید بدست آورید بدون اینکه از بودجه تجاوز کنید‪.‬‬
‫(‪ )2‬سرعت حافظه اصلی (?=‪ )t2‬برای رسیدن به زمان دسترسی مؤثر ‪ Teff=40ns‬در کل سیستم حافظه با‬
‫نرخ اصابت مفروض چقدر است؟‬
‫مسأله ‪ -18-4‬فرق بین کامپیوترهای عددی و سمبلیک براساس اشیاء و داده‪ ،‬عملیات رایج‪ ،‬نیازهای حافظه‪،‬‬
‫الگوهای ارتباطی‪ ،‬خواص ریاضی‪ ،‬نیازهای ورودی‪/‬خروجی و معماریهای پردازنده چیست؟‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪216‬‬

‫فصل پنجم ‪ -‬گذرگاه‪ ،‬حافظه نهان و حافظه مشترک‬


‫در این فصل طراحی و مفاهیم عملیاتی گذرگاه‪ ،‬حافظه نهان و سازمان حافظه مشترک را توصیف میکنیم‪ .‬ابتدا‬
‫سیستمهای گذرگاه صفحه پشت‪( 1‬بورد اصلی) را مطالعه میکنیم‪ .‬مدلهای آدرس دهی حافظه نهان و شماتیک‬
‫پیاده سازی توصیف میشوند‪ .‬برگی کردن حافظه‪ ،‬شماتیکهای تخصیص و مدلهای ترتیبی با سازگاری ضعیف‬
‫برای سیستمهای حافظه مشترک را مطالعه میکنیم‪.‬‬

‫‪ -1-5‬سیستم های گذرگاه صفحه پشتی‬

‫گذرگاه سیستمِ یک سیستم کامپیوتر براساس رقابت کار میکند‪ .‬چندین دستگاه فعال‪ ،‬مثل پردازندهها ممکن است‬
‫برای استفاده از گذرگاه همزمان اعالم نیاز کنند‪ .‬به هر حال‪ ،‬فقط یکی از آنها میتواند در یک لحظه به سیستم‬
‫دسترسی پیدا کند‪ .‬پهنای باند مؤثر قابل دسترس برای هر پردازنده بطور معکوس وابسته به تعداد پردازندههایی‬
‫است که برای گذرگاه رقابت میکنند‪.‬‬
‫به همین دلیل‪ ،‬اکثر چندپردازنده های تجاری براساس گذرگاه‪ ،‬اندازه کوچکی دارند‪ .‬سادگی و هزینه پایینِ سیستم‬
‫گذرگاه آنرا برای ساخت چندپردازندههای کوچک از ‪ 4‬تا ‪ 16‬پردازنده براساس تکنولوژی امروزه جذاب کرده است‪.‬‬
‫در این بخش‪ ،‬گذرگاههای سیستم را که روی یک کالبد صفحه پشتی قرار گرفته است توصیف میکنیم‪ .‬روی‬
‫توصیف منطقی بجای پیادهسازی منطقی تمرکز میکنیم‪ .‬توصیفات گذرگاه استاندارد هم باید مستقل از تکنولوژی‬
‫و هم مستقل از معماری باشند‪.‬‬
‫‪ -1-1-5‬توصیف گذرگاه صفحه پشتی‬

‫یک گذرگاه صفحه پشتی‪ ،‬پردازندهها‪ ،‬حافظه داده و دستگاههای جانبی را در یک پیکربندی سختافزاری قویاً‬
‫متصل به هم متصل میکند‪ .‬گذرگاه سیستم باید طوری طراحی شود تا اجازه ارتباط بین دستگاههای روی گذرگاه‬
‫را بدون خراب کردن فعالیتهای داخلی همه سیستمهای متصل به گذرگاه بدهد‪ .‬قرارداد‪2‬های زمانی باید برای‬
‫داوری بین چندین درخواست پابرجا شود‪ .‬قوانین عملیاتی باید برای انتقال درست دادهها روی گذرگاه تنظیم شود‪.‬‬
‫خطوط سیگنال روی گذرگاه پشتی‪ ،‬اغلب بصورت عملیاتی در چندین گذرگاه همانطور که در شکل ‪1-5‬نشان داده‬
‫شده است با هم گروهبندی شدهاند‪ 4 .‬گروه نشان داده شده در اینجا بسیار شبیه گذرگاه ‪ 64‬بیتی ‪ VME‬در سیستم‬
‫‪ VITA 1990‬میباشد‪.‬‬
‫چندین بورد عملیاتی داخل اسالتهای روی صفحه پشتی قرار میگیرند‪ .‬هر اسالت یک یا بیشتر اتصال دهنده‬
‫برای اضافه کردن بوردها دارد که در شکل ‪ 1-5‬با پیکانهای عمودی نشان داده شدهاند‪ .‬به عنوان مثال در ‪VME‬‬
‫‪ ،backplane‬یک یا دو اتصال دهنده ‪ 96‬پینی برای هر اتصال استفاده میشود‪.‬‬

‫‪1‬‬
‫‪Back plane‬‬
‫‪2‬‬
‫‪Protocol‬‬
‫‪| 217‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫گذرگاه انتقال داده‪ :‬خطوط داده‪ ،‬گذرگاه و آدرس گذرگاه انتقال داده (‪ )DTB1‬را در ‪ VME‬شکل میدهند‪.‬‬
‫خطوط آدرس برای پخش کردن آدرس دستگاه و داده استفاده میشوند‪ .‬تعداد خطوط آدرس متناسب با لگاریتم‬
‫اندازه فضای آدرس است‪ .‬خطوط اصالح کننده آدرس میتوانند برای تعریف مُدهای آدرس دهی خاص استفاده‬
‫شوند‪ .‬خطوط داده اغلب متناسب با طول کلمه حافظه میباشند‪.‬‬
‫به عنوان مثال‪ ،‬گذرگاه ‪ 32 ،VME‬خط آدرس و ‪( 32‬یا ‪ )64‬خط داده دارد‪ 32 .‬خط آدرس میتوانند عالوه بر آدرس‬
‫به عنوان نیمه پایین ‪ 64‬بیت داده در سیکل انتقال داده استفاده شوند‪ .‬خطوط کنترل ‪ DTB‬برای تعیین‬
‫خواندن‪/‬نوشتن‪ ،‬کنترل زمانی و شرایط خطای گذرگاه استفاده میشوند‪.‬‬
‫داوری و کنترل گذرگاه‪ :‬پردازهی دادن کنترل یک ‪ DTB‬به درخواست کننده را داوری گویند‪ .‬خطوط اختصاصی‬
‫برای مدیریت پردازه داوری بین چندین درخواست کننده اختصاص داده شده است‪ .‬درخواست دهنده را ارباب‪ 2‬و‬
‫دریافت کننده نهایی را برده‪ 3‬میگویند‪.‬‬
‫بورد ‪cpu‬‬ ‫بورد حافظه‬ ‫کنترل کننده گذرگاه‬

‫پردازنده و حافظه نهان‬ ‫آرایه حافظه‬ ‫پالس ساعت سیستم‪،‬‬


‫‪….‬‬
‫(سایر بوردها برای ‪،cpu‬‬ ‫راهانداز زنجیرهای‪،‬‬
‫حافظه و ‪ I/O‬و غیره)‬ ‫راهانداز منبع تغذیه‪،‬‬
‫ماژولهای عملیاتی‬ ‫ماژولهای عملیاتی‬
‫تایمر گذرگاه‪ ،‬داور‬

‫منطق رابط‬ ‫منطق رابط‬ ‫منطق رابط‬

‫اسالت ‪1‬‬ ‫اسالت ‪k-1‬‬ ‫اسالت ‪k‬‬

‫گذرگاه انتقال داده (‪( )DTB‬داده‪ ،‬آدرس و خطوط کنترل)‬

‫گذرگاه داوری ‪DTB‬‬

‫گذرگاه همزمانی و وقفه‬

‫گذرگاه ‪utility‬‬

‫شکل ‪ :1-5‬گذرگاههای صفحه پشتی‪ .‬رابطهای سیستم و اتصاالت اسالت برای بوردهای عملیاتی گوناگون در یک سیستم‬
‫چندپردازنده‬
‫‪1‬‬
‫‪Data Transfer Bus‬‬
‫‪2‬‬
‫‪Master‬‬
‫‪3‬‬
‫‪Slave‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪218‬‬

‫خطوط وقفه برای راهاندازی وقفهها استفاده میشوند که اغلب اولویت بندی شدهاند‪ .‬ممکن است خطوط اختصاصی‬
‫برای همزمانی فعالیتهای موازی بین ماژولهای پردازنده استفاده شوند‪ .‬خطوط کاربردی‪ ،‬شامل سیگنالهایی که‬
‫زمانبندی دورهای را تهیه میکنند و روشن و خاموش شدن سیستم را مدیریت میکنند میباشد‪.‬‬
‫صفحه پشتی از خطوط سیگنال و اتصالدهنده ساخته شده است‪ .‬یک بورد کنترلی گذرگاه خاص برای تعیین منطق‬
‫کنترل صفحه پشتی مثل راهانداز پالس ساعت سیستم‪ ،‬داوری‪ ،‬تایمر گذرگاه و راهانداز منبع تغذیه استفاده میشود‪.‬‬
‫ماژولهای عملیاتی‪ :‬یک ماژول عملیاتی مجموعهای از مدارات الکترونیکی است که روی یک بورد عملیاتی‬
‫(شکل ‪ )1-5‬قرار گرفته است و برای رسیدن به توابع کنترل گذرگاه کار میکند‪ .‬ماژولهای عملیاتی خاص در زیر‬
‫معرفی میشوند‪:‬‬
‫یک داور یک ماژول عملیاتی است که درخواستهای گذرگاه را از ماژول درخواست کننده میپذیرد و کنترل ‪DTB‬‬
‫را به یک درخواست کننده در یک لحظه واگذار میکند‪.‬‬
‫یک تایمر گذرگاه مدت زمانی که هر انتقال داده روی ‪ DTB‬طول میکشد‪ ،‬را اندازه میگیرد و سیکل ‪ DTB‬را در‬
‫صورتی که انتقال خیلی طوالنی شود خاتمه میدهد‪.‬‬
‫یک ماژول وقفه یک درخواست وقفه را تولید میکند و اطالعات وضعیت ورودی‪/‬خروجی را وقتیکه یک ماژول‬
‫راهانداز وقفه آنرا درخواست میدهد تهیه میکند‪.‬‬
‫یک مانیتور مکان‪ ،‬یک تابع عملیاتی است که انتقالهای داده روی ‪ DTB‬را مانیتور میکند‪ .‬یک مانیتور توان‬
‫وضعیت منبع تغذیه را مشاهده میکند و وقتیکه منبع تغذیه ناپایدار میشود سیگنال میدهد‪.‬‬
‫یک راه انداز پالس ساعت سیستم‪ ،‬ماژولی است که سیگنال زمانی ساعت را در گذرگاه ‪ utility‬تهیه میکند‪ .‬در‬
‫مجموع‪ ،‬منطق رابط بورد برای تطابق امپدانس خط سیگنال‪ ،‬زمان انتشار و مقادیر خروجی بین صفحه پشتی و‬
‫بوردهای قرار داده شده استفاده میشود‪.‬‬
‫محدودیتهای فیزیکی‪ :‬به خاطر محدودیتهای الکتریکی‪ ،‬مکانیکی و بستهبندی فقط تعداد محدودی بورد‬
‫میتوانند روی یک صفحه پشتی قرار گیرند‪ .‬گذرگاههای چندگانه میتوانند روی یک کالبد صفحه پشتی قرار گیرند‪.‬‬
‫به عنوان مثال کالبد ‪ VME‬میتواند یک تا ‪ 3‬عدد گذرگاه صفحه پشتی را در خود جای دهد‪ .‬دو عدد گذرگاه‬
‫میتوانند به عنوان گذرگاه مشترک بین همه پردازندهها و بوردهای حافظه استفاده شوند و گذرگاه سوم میتواند به‬
‫عنوان بورد محلی که یک پردازنده میزبان را به حافظه اضافی و بوردهای ورودی‪/‬خروجی وصل میکند استفاده‬
‫شود‪ .‬مقیاسپذیری سیستم گذرگاه مشکل است که بیشتر به خاطر محدودیتهای بسته بندی‪ 1‬میباشد‪.‬‬

‫‪ -2-1-5‬قراردادهای آدرس دهی و زمانبندی‬

‫بوردهای مدار چاپی که به یک گذرگاه متصل میشوند دو نوع میباشند‪ :‬فعال و غیرفعال‪ .2‬بوردهای فعال مثل‬
‫پردازندهها میتوانند به عنوان ارباب گذرگاه یا برده در زمانهای مختلف عمل کنند‪ .‬بوردهای غیرفعال مثل بوردهای‬
‫حافظه فقط میتوانند به عنوان برده کار کنند‪.‬‬

‫‪1‬‬
‫‪Packaging‬‬
‫‪2‬‬
‫‪Active and Passive‬‬
‫‪| 219‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫ارباب میتواند یک سیکل گذرگاه را مقدار دهی کند و بردهها به درخواستهای ارباب پاسخ میدهند‪ .‬فقط یک‬
‫ارباب در یک لحظه میتواند گذرگاه را کنترل کند‪ .‬به هر حال‪ ،‬یک یا چند برده میتوانند در آن واحد به درخواست‬
‫ارباب پاسخ دهند‪.‬‬
‫آدرسدهی گذرگاه‪ :‬یک گذرگاه صفحه پشتی با یک پالس ساعت دیجیتال با زمان سیکل ثابت که به آن سیکل‬
‫گذرگاه میگوییم راهاندازی می شود‪ .‬سیکل گذرگاه توسط خواص بسته بندی‪ ،‬مکانیکی‪ ،‬الکتریکی صفحه پشتی‬
‫تعیین میشود‪ .‬برای افزایش سرعت عملیات‪ ،‬سیکلهای روی خطوط موازی در گذرگاههای مختلف ممکن است از‬
‫لحاظ زمانی همپوش شوند‪ .‬فاکتورهایی که بر تأخیر گذرگاه تأثیر میگذارند شامل راهاندازهای خط منبع‪ ،‬دریافت‬
‫کنندههای مقصد‪ ،‬ظرفیت اسالت‪ ،‬طول خط‪ ،‬و تأثیرات بار کردن گذرگاه (تعداد بوردهای الحاقی) میباشد‪.‬‬
‫همه سیکلهای گذرگاه برای انتقال دادهها استفاده نمیشوند‪ .‬به منظور بهبود کارایی‪ ،‬گذرگاه باید برای حداقل‬
‫کردن زمان مورد نیاز راهاندازی درخواست‪ ،‬داوری‪ ،‬آدرسدهی‪ ،‬و وقفهها طراحی شود بطوریکه اکثر سیکلهای‬
‫گذرگاه برای عملیات انتقال داده مفید استفاده شوند‪.‬‬
‫هر بورد با یک شماره اسالت مشخص میشود‪ .‬وقتیکه شماره اسالت با محتویات خطوط باالی آدرس تطابق‬
‫داشته باشد‪ ،‬بورد به عنوان برده انتخاب میشود‪ .‬این آدرسدهی اسالت اجازه تخصیص آدرس بورد منطقی تحت‬
‫کنترل نرمافزار را میدهد که انعطافپذیری کاربردی را زیاد میکند‪.‬‬
‫همهپخشی و فراخوانی پخشی‪ :1‬اکثر تراکنشهای گذرگاه شامل فقط یک برده و یک ارباب میباشد‪ .‬به هر‬
‫حال‪ ،‬یک فراخوانی پخشی یک عمل خواندن است که چند برده دادههایشان را روی خطوط گذرگاه قرار میدهند‪.‬‬
‫عملیات ‪ and‬یا ‪ or‬خاص روی دادههای گذرگاه از بردههای انتخاب شده انجام میشوند‪.‬‬
‫عملیات فراخوانی پخشی برای تشخیص منابع وقفه چندگانه استفاده میشود‪ .‬یک چند پخشی یک عمل نوشتن‬
‫است که شامل چند برده میشود‪ .‬این عملیات در پیادهسازی همبستگی حافظه نهان روی گذرگاه ضروری است‪.‬‬
‫ارباب‬ ‫گذرگاه‬ ‫برده‬

‫‪ -1‬درخواست را به گذرگاه ارسال میکند‪.‬‬


‫‪ -2‬گذرگاه تخصیص داده میشود‪.‬‬
‫‪ -3‬آدرس‪/‬داده را روی گذرگاه بار میکند‪.‬‬
‫‪-4‬بعد از پایدار شدن سیگنال برده انتخاب می‪-‬‬
‫شود‪.‬‬
‫‪-5‬انتقال داده را سیگنال میدهد‪.‬‬
‫زمان‬ ‫‪-6‬دادههای پایدار را میگیرد‪.‬‬
‫‪-7‬گرفتن دادهها را تصدیق وصول میکند‪.‬‬
‫‪-8‬تصدیق را دریافت میکند‪ ،‬داده را حذف میکند‬
‫و گذرگاه را آزاد میکند‪.‬‬
‫‪-9‬میفهمد داده حذف شد‪.‬‬
‫‪ -10‬تکمیل شدن انتقال داده را سیگنال میدهد‬
‫و گذرگاه را آزاد میکند‪.‬‬
‫‪-11‬درخواست گذرگاه بعدی را میفرستد‪.‬‬

‫شکل ‪ :2-5‬رشته زمانی نوعی برای انتقال اطالعات بین یک ارباب و برده روی یک سیستم گذرگاه‪.‬‬

‫‪1‬‬
‫‪Broadcast and Broadcall‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪220‬‬

‫قراردادهای زمانی برای همزمانی عملیات ارباب (منبع) و برده (مقصد) نیاز است‪ .‬شکل ‪ 2-5‬یک رشته زمانی نوعی‬
‫را وقتیکه اطالعات روی گذرگاه از منبع به مقصد منتقل میشوند‪ ،‬نشان میدهد‪ .‬اکثر قراردادهای زمانی این رشته‬
‫را پیاده میکنند‪.‬‬
‫زمانبندی سنکرون‪ :‬همه مراحل تراکنش گذرگاه در لبههای پالس ساعت همانطور که در شکل ‪(3-5‬الف) نشان‬
‫داده شده است اتفاق میافتد‪ .‬سیگنالهای ساعت به همه اربابها و بردهها پخش میشوند‪ .‬زمان سیکل ساعت با‬
‫کُندترین دستگاه متصل شده به گذرگاه مشخص میشود‪.‬‬
‫وقتیکه دادهها روی خطوط داده پایدار شدند‪ ،‬ارباب یک پالس ‪ data-ready‬را برای شروع انتقال ایجاد میکند‪.‬‬
‫برده یک پالس ‪ data-accept‬را استفاده میکند تا خاتمه انتقال اطالعات را اعالم کند‪.‬‬
‫کنترل یک گذرگاه سنکرون ساده است‪ ،‬نیاز به مدارات کنترلی کمتری دارد و بنابراین هزینه آن کم است و برای‬
‫اتصال دستگاههایی که سرعت نسبتاً مشابهی دارند مناسب است‪ .‬در غیر اینصورت کُندترین دستگاه کل عملیات‬
‫گذرگاه را کُند میکند‪.‬‬
‫زمانبندی آسنکرون‪ :‬زمانبندی آسنکرون براساس دست تکاندهی یا مکانیزم درهم قفلی است‪ .‬همانطور که در‬
‫شکل ‪( 3-5‬ب) نشان داده شده است‪ ،‬سیکل ساعت ثابتی مورد نیاز نیست‪ .‬در لبه باالرونده (‪ )1‬سیگنال ‪data-‬‬
‫‪ ready‬از ارباب باعث باالرفتن (‪ )2‬سیگنال ‪ data-accept‬از برده میشود‪ .‬سیگنال دوم باعث پایین آمدن (‪)3‬‬
‫کالک ‪ data-ready‬میشود و داده را از گذرگاه حذف میکند‪ .‬سیگنال سوم باعث پایین آمدن لبه (‪ )4‬کالک‬
‫‪ data-accept‬میشود‪ .‬این پردازه دست تکان دهی ‪ 4‬لبهای (درهم قفلی) تا زمانیکه همه دادهها منتقل شوند‬
‫تکرار میشود‪.‬‬

‫خط داده‬ ‫بیتهای داده‬ ‫بیتهای داده‬

‫ارباب‬
‫‪Data ready‬‬

‫‪Data accept‬‬
‫برد‬
‫سیکل ‪1‬‬ ‫سیکل ‪2‬‬ ‫سیکل ‪3‬‬
‫ه‬
‫(الف) زمانبندی گذرگاه سنکرون با سیگنالهای پالس با طول ثابت برای همه وسایل‬

‫خط داده‬ ‫بیتهای داده‬ ‫بیتهای داده‬

‫ارباب‬
‫‪3‬‬ ‫‪1‬‬ ‫‪3‬‬
‫‪Data ready‬‬ ‫‪1‬‬

‫برد‬ ‫‪Data accept‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪4‬‬


‫سیکل ‪1‬‬ ‫سیکل ‪2‬‬ ‫سیکل ‪3‬‬

‫(ب) زمانبندی گذرگاه آسنکرون بااستفاده از دست تکاندهی چهار لبه (درهم قفلی) با سیگنالهای با طول متغیر برای وسایل متفاوت‬
‫شکل ‪ :3-5‬قراردادهای گذرگاه سنکرون در مقایسه با آسنکرون‬
‫‪| 221‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫مزیت استفاده از گذرگاههای آسنکرون باعث آزادی عمل در استفاده از سیگنالهای ساعت با طول متغیر برای‬
‫دستگاههای با سرعت متفاوت میشود و محدودیت زمان‪-‬پاسخ در منبع و مقصد را اجباری نمیکند و اجازه اتصال‬
‫دستگاههای کُند و سریع به گذرگاه مشابهی را میدهد و کمتر مساعد نویز است‪ .‬در کل‪ ،‬گذرگاه آسنکرون انعطاف‬
‫پذیری کاربردی بهتری دارد ولی پیچیدگی و هزینه بیشتری دارد‪.‬‬

‫‪ -3-1-5‬داوری‪ ،‬تراکنش و وقفه‬

‫پردازه انتخاب ارباب بعدی گذرگاه را داوری میگویند‪ .‬دوره کنترل یک ارباب روی گذرگاه را زمان اشغال گذرگاه‬
‫میگویند‪ .‬پردازی داوری برای محدود کردن زمان اشغال گذرگاه به یک ارباب در یک زمان طراحی شده است‪.‬‬
‫رقابت درخواستها باید براساس عدالت یا اولویت داوری شود‪ .‬داوری رقابت و تراکنشهای گذرگاه ممکن است‬
‫بطور همزمان روی یک گذرگاه موازی با خطوط مجزا برای هر دو هدف اتفاق بیافتد‪.‬‬
‫داوری مرکزی‪ :‬همانطور که در شکل ‪(4-5‬الف) نشان داده شده است‪ ،‬شماتیک داوری متمرکز از یک داور‬
‫مرکزی استفاده میکند‪ .‬اربابهای موجود بصورت آبشاری زنجیره وار‪ 1‬چیده شدهاند‪ .‬یک خط مخصوص برای‬
‫انتشار سطح سیگنال ‪ bus-grant‬از ارباب اول (در اسالت ‪ )1‬تا ارباب آخر (در اسالت ‪ )n‬استفاده میشود‪.‬‬
‫هر ارباب بالقوه میتواند یک درخواست گذرگاه بفرستد‪ .‬همه درخواستها از یک خط درخواست گذرگاه بطور مشترک‬
‫استفاده میکنند‪ .‬همانطور که در شکل ‪(4-5‬ب) نشان داده شده است درخواست گذرگاه باعث باال رفتن سطح‬
‫‪ bus-grant‬میشود و خود باعث باال رفتن ‪ bus-busy‬میگردد‪.‬‬
‫یک اولویت ثابت در زنجیره از چپ به راست تنظیم شده است‪ .‬فقط وقتیکه دستگاههای سمت چپِ درخواست‬
‫کنترل گذرگاه را نداده باشند یک دستگاه میتواند اشغال گذرگاه را بدست آورد‪ .‬وقتیکه تراکنش گذرگاه تمام شد‪،‬‬
‫‪ bus-busy‬به سطح پایین میرود که خود باعث پایین آمدن سیگنال ‪ bus-grant‬میشود و در نتیجه‬
‫سیگنال ‪ bus-request‬به سطح باال میرود‪.‬‬
‫‪Bus‬‬ ‫ارباب ‪1‬‬ ‫ارباب ‪2‬‬ ‫ارباب ‪n‬‬
‫‪ grant‬داور مرکزی‬
‫گذرگاه‬
‫‪Bus request‬‬
‫‪Bus busy‬‬
‫گذرگاه انتقال داده‬

‫(الف) داوری گذرگاه زنجیرهای‬


‫‪Bus request‬‬

‫‪Bus grant‬‬

‫‪Bus busy‬‬

‫(ب)زمان تراکنش گذرگاه‬


‫‪1‬‬
‫‪Daisy-chained‬‬
‫شکل ‪ : 4-5‬داوری مرکزی گذرگاه با استفاده از درخواستها و پاسخهای گذرگاه زنجیرهای مشترک با اولویت ثابت‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪222‬‬

‫مزیت این شماتیک داوری‪ ،‬سادگی آن است‪ .‬دستگاههای اضافی میتوانند هر جایی در زنجیر با اشتراک مجموعه‬
‫مشابهی از خطوط داوری اضافه شوند‪ .‬یک عیب این است که رشته اولویت ثابت باعث از بین رفتن عدالت میشود‪.‬‬
‫عیب دیگر آن کند بودن آن در انتشار سیگنال ‪ bus-grant‬در طول زنجیر میباشد‪.‬‬
‫وقتیکه یک دستگاه با اولویت باالتر خراب شود‪ ،‬دستگاههای با اولویت پایینتر در سمت راست زنجیر نمیتوانند از‬
‫گذرگاه استفاده کنند‪ .‬عبور از‪ 1‬یک دستگاه خراب یا حذف شده در زنجیر کار خوبی است‪ .‬بعضی استانداردهای‬
‫گذرگاه جدید اینچنین قابلیتی را برآورده میکنند‪.‬‬
‫درخواستها یا پاسخهای مستقل‪ :‬به جای استفاده از خطوط درخواست و پاسخ مشترک در شکل ‪،4-5‬‬
‫خطوط مستقل ‪ bus-request, bus-grant‬میتوانند بطور مستقل برای هر ارباب بالقوه فراهم شوند همانطور‬
‫که در شکل ‪(5-5‬الف) نشان داده شده است‪ .‬در این شماتیک زنجیر استفاده نمیشود‪.‬‬
‫داوری بین اربابهای بالقوه هنوز هم با یک داور مرکزی انجام میشود‪ .‬به هر حال‪ ،‬هر نوع سیاست اولویت یا‬
‫عدالتی را میتوان روی گذرگاه پیادهسازی کرد‪ .‬یک سیستم چندپردازنده معموالً از یک سیاست اولویتدار برای‬
‫تراکنشهای ورودی‪/‬خروجی و یک سیاست عادالنه برای پردازندهها استفاده میکند‪.‬‬
‫در بعضی معماریهای چندپردازنده نامتقارن‪ ،‬ممکن است پردازندهها مانند یک میزبان ‪ ،front-end‬یک پردازنده‬
‫اجرایی یا یک پردازنده برده ‪ back-end‬به توابع مختلفی منتسب شوند‪ .‬در چنین حالتی یک سیاست اولویت دار‬
‫میتواند در بین پردازندهها استفاده شود‪.‬‬
‫مزیت استفاده از درخواست و پاسخ مستقل انعطاف پذیری و زمان داوری سریعتر در مقایسه با سیاست زنجیرهای‬
‫میباشد‪ .‬عیب آن تعداد زیاد خطوط داوری استفاده شده میباشد‪.‬‬
‫داوری توزیع شده‪ :‬ایده استفاده از داورهای توزیع شده در شکل ‪(5-5‬ب) نشان داده شده است‪ .‬هر ارباب بالقوه‬
‫مجهز به داور شخصی خودش با یک شماره داوری منحصر بفرد است‪ .‬شماره داوری برای حل رقابت داوری استفاده‬
‫میشود‪ .‬وقتیکه دو یا چند دستگاه برای گذرگاه رقابت میکنند‪ ،‬برنده اربابی است که شماره داوری بزرگتری دارد‪.‬‬
‫برای تشخیص دست گاهی که شماره داوری بزرگتری دارد‪ ،‬داوری متداخل موازی استفاده میشود‪ .‬همه اربابهای‬
‫بالقوه میتوانند شمارههای داوریشان را به خطوط مشترک درخواست‪/‬پاسخ گذرگاه (‪ )SBRG2‬روی گذرگاه داوری‬
‫از طریق داورشان بفرستند‪.‬‬
‫هر داور عدد نتیجه در ‪ SBRG‬را با شماره داوری خودش مقایسه میکند‪ .‬اگر عدد ‪ SBRG‬بزرگتر بود درخواست را‬
‫پس میگیرد‪ .‬در انتها شماره داوری برنده روی گذرگاه داوری میماند‪ .‬بعد از اینکه تراکنش گذرگاه جاری کامل‬
‫شد‪ ،‬برنده کنترل گذرگاه را بدست میگیرد‪.‬‬
‫به وضوح‪ ،‬سیاست داوری توزیع شده اولویت دار است‪ MultibusII, Futurebus+ .‬از چنین شماتیک داوری‬
‫توزیع شدهای استفاده میکنند‪ .‬در کنار داورهای توزیع شده‪ ،‬استاندارد ‪ Future bus+‬انتخابهایی برای داور‬
‫مرکزی مجزا فراهم میکند‪.‬‬
‫ُمدهای تراکنشی‪ :‬یک انتقال فقط‪-‬آدرس شامل یک آدرس است که بدون داده منتقل میشود‪ .‬یک انتقال داده‬
‫کامل‪ ،‬شامل یک انتقال آدرس است که با بلوکی از یک یا چند انتقال داده به یک یا چند آدرس پیوسته دنبال‬

‫‪1‬‬
‫‪Bypass‬‬
‫‪2‬‬
‫‪Shared-Bus Request-Grant‬‬
‫‪| 223‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫میشود‪ .‬یک انتقال داده بستهای‪ 1‬شامل یک انتقال آدرس است که با بلوکی با طول ثابت از انتقالهای داده از‬
‫مجموعهای پیوسته از آدرسها دنبال میشود‪.‬‬
‫‪BRi= bus request‬‬
‫ارباب ‪1‬‬ ‫ارباب ‪2‬‬
‫‪from master i‬‬ ‫ارباب ‪N‬‬
‫‪BGi=bus grant to‬‬
‫داور مرکزی‬ ‫‪BR1‬‬ ‫‪BRN BGN‬‬
‫‪BR2 BG2‬‬ ‫‪master i‬‬
‫گذرگاه‬ ‫‪BG1‬‬

‫‪Bus busy‬‬

‫(الف) درخواستهای مستقل با یک داور مرکزی‬


‫‪BB=bus busy‬‬
‫ارباب ‪1‬‬ ‫ارباب‪2‬‬ ‫ارباب ‪N‬‬
‫‪AN= arbitration‬‬
‫‪number‬‬ ‫‪AN‬‬ ‫‪AN‬‬ ‫‪AN‬‬
‫‪BG‬‬ ‫‪BG‬‬ ‫‪BG‬‬

‫داور ‪1‬‬ ‫داور ‪2‬‬ ‫داور‪N‬‬


‫‪BB‬‬ ‫‪BB‬‬ ‫‪BB‬‬
‫‪AN‬‬ ‫‪AN‬‬ ‫‪AN‬‬

‫گذرگاه انتقال داده‬

‫(ب) داورهای توزیع شده‬


‫شکل ‪ :5-5‬دو شماتیک داوری گذرگاه با استفاده از درخواستهای مستقل و داورهای توزیع شده‬

‫انتقالهای داده و راهاندازی وقفههای اولویت دار دو نوع از عملیات هستند که بطور رایج روی یک گذرگاه انجام‬
‫می شوند‪ .‬یک تراکنش گذرگاه شامل درخواستی است که با یک پاسخ دنبال میشود‪ .‬یک تراکنش متصل برای‬
‫حمل درخواست ارباب و پاسخ برده در یک تراکنش گذرگاه استفاده میشود‪ .‬یک تراکنش منفصل‪ ،‬درخواست و‬
‫پاسخ را در تراکنشهای مجزای گذرگاه قرار میدهد‪ .‬سه مُد انتقال داده در زیر توصیف میشوند‪.‬‬
‫تراکنشهای منفصل به دستگاه های با تأخیر داده یا زمان دسترسی طوالنی اجازه استفاده از منابع گذرگاه را به‬
‫روشی مفید میدهد‪ .‬یک تراکنش منفصل کامل ممکن است نیازمند یک یا دو تراکنش گذرگاه متصل باشد‪.‬‬
‫تراکنشهای منفصل در طول رشتههای چندگذرگاهه انجام می شوند تا به همبستگی حافظه نهان در یک سیستم‬
‫چندپردازنده بزرگ برسند‪.‬‬
‫مکانیزمهای وقفه‪ :‬یک وقفه درخواستی از ورودی‪/‬خروجی یا سایر وسایل به پردازنده برای سرویس دهی یا‬
‫توجه میباشد‪ .‬یک گذرگاه وقفه اولویت دار برای انتقال سیگنالهای وقفه استفاده میشود‪ .‬وقفه دهنده باید اطالعات‬
‫وضعیت و شاخص را فراهم کند‪ .‬یک ماژول عملیاتی میتواند برای راهاندازی وقفه استفاده شود‪.‬‬
‫وقفههای اولویت دار در سطوح زیادی راهاندازی میشوند‪ ،‬به عنوان مثال‪ ،‬گذرگاه ‪ VME‬از هفت خط درخواست‪-‬‬
‫وقفه استفاده میکند‪ .‬تا هفت راهانداز وقفه برای راهاندازی وقفههای چندگانه میتواند استفاده شوند‪.‬‬

‫‪1‬‬
‫‪Packet‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪224‬‬

‫همچنین وقفهها میتوانند با ارسال پیام راهاندازی شوند که از خطوط گذرگاه داده روی یک سیستم اشتراک زمانی‬
‫استفاده میکنند‪ .‬صرفه جویی در خطوط وقفه نیازمند چندین سیکل وقفه برای راهاندازی وقفهها براساس پیام‬
‫میباشد‪ .‬به استفاده از خطوط گذرگاه داده اشتراک‪-‬زمانی برای پیادهسازی وقفهها‪ ،‬وقفه مجازی میگویند‪.‬‬

‫‪ -4-1-5‬استانداردهای ‪IEEE Futurebus+‬‬

‫تعداد زیادی استاندارد گذرگاه صفحه پشتی توسط کارخانههای کامپیوتر گوناگون با مشارکت کمیته استاندارد ‪IEEE‬‬
‫مرتبط توسعه داده شده است‪ .‬چندنمونه از این استانداردها‪ ،‬گذرگاه ‪Multibus II, NUbus, ،VME‬‬
‫‪ Fastbus, Nanobus‬میباشد‪.‬‬
‫بعضی از این گذرگاهها برای ساخت چندپردازندهها استفاده شدهاند‪ .‬به هر حال‪ ،‬هر کدام محدودیتهای خودشان را‬
‫دارند‪ .‬اکثر آنها فقط یک مسیر داده ‪ 32‬بیتی را پشتیبانی میکنند و هیچکدام از آنها یک قرارداد همبستگی حافظه‬
‫نهان مفید یا همزمانی بین پردازنده سریع را پشتیبانی نمیکنند‪.‬‬
‫‪ Futurebus+‬برای توسعه یک استاندارد گذرگاه کامالً باز که میتواند فضای آدرس ‪ 64‬بیتی را پشتیبانی کند و‬
‫توان عملیاتی مورد نیاز ‪ multi-RISC‬یا نسلهای آینده معماریهای چندپردازنده را توسعه دهد ارائه شد‪.‬‬
‫استانداردها باید قابل توسعه یا مقیاس پذیر باشند و مستقل از معماری خاص و تکنولوژی پردازنده خاص باشند‪.‬‬
‫خواص کلیدی ‪ )896.1-1991( IEEE Futurebus+‬در زیر ارائه میشود‪.‬‬
‫نیازهای استاندارد‪ :‬هدف عمده استانداردهای کمیته ‪ Future bus+‬ایجاد یک استاندارد گذرگاه است که‬
‫یک گام عمده رو به جلو در توسعه قابلیتها و کارایی قابل دسترس به طراحان سیستمهای چندپردازنده آینده تولید‬
‫کند‪ .‬این یک پلت فرم پایدار ایجاد خواهد کرد که نسلهای گوناگون سیستمهای کامپیوتر میتوانند براساس آن‬
‫باشند‪ .‬خالصه زیر نیازهای طراحی تنظیم شده توسط کمیته استاندارد ‪ IEEE 8961-1991‬میباشد‪:‬‬
‫(‪ )1‬مستقل از معماری‪ ،‬پردازنده و تکنولوژی است و استانداردی باز برای همه طراحان میباشد‪.‬‬
‫(‪ )2‬یک قرارداد زمانی کامالً آسنکرون برای انتقال داده با کنترل جریان دست تکاندهی است‪.‬‬
‫(‪ )3‬یک قرارداد سنکرون‪-‬منبع برای انتقال بلوک با سرعت باال میباشد‪.‬‬
‫(‪ )4‬قرارداد داوری موازی کامالً توزیع شده بطوریکه تراکنشهای گذرگاه گوناگون زیادی را شامل همه‪-‬‬
‫پخشی‪ ،‬فراخوانی پخشی‪ ،‬و تراکنشهای سه بخشی پشتیبانی کند‪.‬‬
‫(‪ )5‬پشتیبانی کاربردهای با قابلیت اطمینان باال و تحمل پذیر خطا بطوریکه مساعد حذف‪ /‬اضافه کاری بطور‬
‫زنده‪ ،‬چک کردن توازن در همه خطوط و چک کردن فیدبک‪ ،‬باشد و بدون سیگنالهای زنجیرهای باشد‬
‫تا پیکربندی مجدد بطور پویا را در رخداد خطای ماژول ساده کند‪.‬‬
‫(‪ )6‬استفاده از مکانیزم‪-‬های چند سطحه برای قفل کردن ماژولها و اجتناب از بن بست و ‪livelock‬‬
‫میباشد‪.‬‬
‫(‪ )7‬قراردادهای تراکنش منفصل و سوئیچ‪-‬مداری به اضافه پشتیبانی برای دستورات حافظه برای پیاده سازی‬
‫قفل کردن راه دور عملیات شبه ‪ SIMD‬باشد‪.‬‬
‫‪| 225‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫(‪ )8‬پشتیبانی از محاسبات ‪ mission-critical‬زمان‪-‬قطعی با چند سطح اولویت و رفتار اولویت دار ثابت‪،‬‬
‫باضافه پشتیبانی از قرارداد همزمانی کالک توزیع شده داشته باشد‪.‬‬
‫(‪ )9‬پشتیبانی از آدرس دهی ‪ 32‬یا ‪ 64‬بیتی با گذرگاه داده با طول پویا از ‪ 32‬به ‪ 128 ،64‬و ‪ 256‬بیت تا‬
‫تقاضاهای پهنای باند متفاوت را برآورده کند‪.‬‬
‫(‪ )10‬پشتیبانی مستقیم چندپردازندههای براساس حافظه نهان جاسوسی با قراردادهای بازگشتی تا سیستمهای‬
‫بزرگ را که با چندین گذگاه به هم متصل شدهاند پشتیبانی کند‪.‬‬
‫(‪ )11‬قراردادهای ارسال‪-‬پیام باید سازگار با اتصاالت چندکامپیوتره و مشخصات کاربردی خاص و طراحی رابط‬
‫مطلوب باشد‪.‬‬

‫مثال ‪ :1-5‬خطوط سیگنال در استاندارد ‪ Futurebus+‬پیشنهاد شده‬


‫همانطور که در شکل ‪ 6-5‬نشان داده شده است‪ Futurebus+ ،‬شامل اطالعات همزمانی‪ ،‬داوری گذرگاه و‬
‫خطوط دست تکان دهی میباشد که میتواند با طرحهای سیستم مختلف تطابق پیدا کند‪ .‬خطوط آدرس ‪ 64‬بیتی‬
‫با ‪ 64‬بیت پایین خط داده مالتی پلکس میشود‪ .‬خطوط داده اضافی میتواند اضافه شوند تا یک مسیر داده با پهنای‬
‫تا ‪ 256‬بیت شکل داده شود‪ .‬خطوط ‪ ،tag‬برای توسعه مدهای داده‪/‬آدرس اختیاری هستند‪.‬‬

‫‪ 8‬خط وضعیت‬ ‫•‬ ‫‪ 64‬خط آدرس‪/‬داده‬ ‫•‬


‫‪ 3‬خط قابلیتها‬ ‫•‬ ‫‪ 64-192‬خط داده‬ ‫•‬
‫‪ 6-34‬خط توازن‬ ‫•‬ ‫‪ 8‬خط تگ‬ ‫•‬

‫• ‪ 1‬خط کنترل انتقال داده‬ ‫‪ 3‬خط دست تکان دهی آدرس‬ ‫•‬
‫‪ 3‬خط دست تکان دهی داده‬ ‫•‬

‫•‬
‫خط توازن داور‬ ‫•‬ ‫‪ 8‬خط داوری گذرگاه‬
‫‪ 3‬خط همزمانی داوری‬ ‫•‬
‫‪ 4‬خط داوری‬ ‫•‬ ‫‪ 2‬خط شرایط داوری‬ ‫•‬

‫‪ 5‬خط آدرس ‪Geo graphic‬‬ ‫•‬


‫خط ریست‬ ‫•‬

‫شکل ‪ :6-5‬سازمان ‪Future bus +‬‬


‫خطوط فرمان اطالعات فرمان را از ارباب به یک یا چند برده حمل میکنند‪ .‬خطوط وضعیت توسط بردهها استفاده‬
‫میشوند تا به دستورات ارباب پاسخ دهند‪ .‬خطوط قابلیت برای تعریف تراکنشهای گذرگاه خاص استفاده میشوند‪.‬‬
‫هر بایت از خطوط توسط حداقل یک خط چک‪-‬توازن محافظت میشوند‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪226‬‬

‫سیگنالهای همزمانی برای متمرکز کردن تغییرات آدرس‪ ،‬دستور‪ ،‬وضعیت قابلیتها‪ ،‬و داده در طول یک تراکنش‬
‫گذرگاه استفاده می شوند‪ .‬خطوط دست تکان دهی آدرس و خطوط دست تکان دهی داده توسط اربابها و بردهها‬
‫استفاده میشوند‪ .‬خط اشغال گذرگاه برای متمرکز کردن انتقال گذرگاه استفاده میشود‪.‬‬
‫خطوط داوری گذرگاه یک عدد را حمل میکنند که اولویت رقابت کنندهها در طول پردازه داوری گذرگاه را تعیین‬
‫میکند‪ .‬خطوط همزمانی و شرایط برای متمرکز کردن شرایط خاص و دست تکان دهی استفاده میشوند‪.‬‬
‫خطوط داوری مرکزی توسط یک داور مرکزی در حالت کنترل گذرگاه متمرکز استفاده میشوند‪ .‬خطوط متفرقه‬
‫برای تعیین آدرسها ژئوگرافیک (آدرسهای اسالت) و مقداردهی اولیه گذرگاه در طول ریست شدن سیستم یا بعد‬
‫از اضافه کردن زنده یک کارت مورد نیاز هستند‪ .‬تعداد کل خطوط گذرگاه برای ‪ Futurebus+‬با پهنای ‪،64 ،32‬‬
‫‪ 128‬و ‪ 256‬بیتی بترتیب در محدوده ‪ 343 ،199 ،127 ،91‬قرار دارند‪ .‬خطوط اضافی برای تهیه اتصاالت منبع‬
‫تغذیه‪ ،‬پالس ساعت‪ ،‬و کاربردی ممکن است مورد نیاز شوند‪.‬‬

‫استقالل از تکنولوژی‪/‬معماری‪ :‬استاندارد ‪ Futurebus+‬به استقالل از تکنولوژی میرسد زیرا برای نوع‬
‫خاصی پردازنده طراحی نشده است‪ .‬استقالل از معماری راهحلی همه منظوره منعطف برای حافظه نهان ثابت‬
‫میباشد‪.‬‬

‫‪ -2-5‬سازمان حافظه نهان‬

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

‫‪ -1-2-5‬مدل های آدرس دهی حافظه نهان‬

‫همانطور که در شکل ‪ 7-5‬نشان داده شده است‪ ،‬اکثر سیستمهای چندپردازنده از حافظههای نهان خصوصی برای‬
‫پردازندههای مختلف استفاده میکنند‪ .‬حافظههای نهان میتوانند با استفاده از آدرس فیزیکی یا آدرس مجازی‬
‫آدرس دهی شوند‪ .‬این منجر به طراحی دو نوع مختلف حافظه نهان میشود که در زیر ارائه میشوند‪.‬‬

‫حافظههای نهان با آدرس فیزیکی‪ :‬وقتی به یک حافظه نهان با آدرسهای حافظه فیزیکی دسترسی میشود‬
‫به آن حافظه نهان با آدرس فیزیکی میگویند‪ .‬مدلهای حافظه نهان با آدرس فیزیکی در شکل ‪ 8-5‬نشان داده‬
‫شدهاند‪ .‬در شکل ‪(8-5‬الف)‪ ،‬مدل براساس تجربه استفاده از حافظه نهان متحدالشکل است مثل سیستمهای ‪Intel‬‬
‫‪ .i486, VAX 8600‬در این حالت حافظه نهان با آدرس فیزیکی اندیس گذاری و تگ گذاری میشود‪ .‬جستجوی‬
‫حافظه نهان بعد از ترجمه آدرس در ‪ TLB‬یا ‪ MMU‬باید اتفاق بیافتد‪ .‬هیچ نام عاریتی مجاز نیست بطوریکه آدرس‬
‫بطور منحصر بدون ابهام ترجمه میشود‪.‬‬
‫‪| 227‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫اگر داده‪/‬دستور آدرس دهی شده در حافظه نهان پیدا شود‪ ،‬یک اصابت‪ 1‬حافظه نهان اتفاق میافتد‪ .‬در غیراینصورت‬
‫یک فقدان حافظه نهان اتفاق میافتد‪ .‬بعد از فقدان‪ ،‬دادههایی به حافظه نهان از حافظه اصلی بار میشوند‪ .‬چون‬
‫یک بلوک کامل حافظه نهان در هر لحظه بار میشود‪ ،‬دادههای ناخواسته نیز ممکن است بار شوند‪ .‬محلیت مراجعات‬
‫باعث میشود که اکثر دادههای بار شده در سیکلهای بعدی مفید واقع شوند‪.‬‬
‫در یک حافظه نهان نوشتن‪-‬سراسری (‪ ،)WT‬دادهها فوراً به حافظه اصلی نوشته میشوند و یا در یک حافظه نهان‬
‫بازپس نویسی (‪ )WB‬تا جایگزینی بلوک تأخیر داده میشود‪ .‬یک حافظه نهان ‪ WT‬به سیکلهای شبکه یا گذرگاه‬
‫بیشتری برای دسترسی به حافظه اصلی نیاز دارد در حالیکه یک حافظه نهان ‪ WB‬به پردازنده اجازه ادامه کار‬
‫میدهد بدون اینکه منتظر چرخه حافظه شود‪.‬‬
‫‪ P‬پردازندهها‬ ‫‪P‬‬ ‫‪P‬‬

‫‪ C‬حافظههای‬ ‫‪C‬‬ ‫‪C‬‬


‫نهان‬
‫ارتباطات داخلی (گذرگاه‪ ،‬کراسبار‪ ،‬یا ‪)MIN‬‬

‫‪ M‬حافظه اصلی‬ ‫‪M‬‬ ‫‪M‬‬

‫کانالهای ‪I/O‬‬

‫‪ D‬دیسکها‬ ‫‪D‬‬ ‫‪D‬‬

‫شکل ‪ :7-5‬یک سلسه مراتب حافظه برای چندپردازنده حافظه مشترک‬

‫‪VA‬‬ ‫‪Main‬‬
‫‪CPU‬‬ ‫‪MMU PA‬‬ ‫‪Cache‬‬
‫‪PA‬‬
‫‪memory VA=Virual address.‬‬
‫‪I OR D‬‬ ‫‪PA=physical address‬‬
‫‪I OR D‬‬
‫‪I=instruction‬‬
‫‪( D=data stream‬الف) یک حافظه نهان یکنواخت که با آدرس فیزیکی دسترسی میشود‪.‬‬
‫‪PA‬‬ ‫‪PA‬‬ ‫‪PA‬‬
‫‪First level‬‬ ‫‪Second level‬‬
‫‪MMU‬‬ ‫‪D-cache‬‬ ‫‪D‬‬ ‫‪D-cache‬‬ ‫‪D‬‬ ‫‪Main‬‬
‫‪memory‬‬
‫‪VA‬‬ ‫‪D‬‬
‫‪PA‬‬
‫‪CPU‬‬ ‫‪I-cache‬‬
‫‪I‬‬ ‫‪I‬‬
‫(ب) حافظههای نهان مجزا که با آدرس فیزیکی دسترسی میشوند در یک ایستگاه کاری گرافیکی سیلیکون‪.‬‬
‫شکل ‪ :8-5‬مدلهای آدرس فیزیکی برای حافظههای نهان مجزا و یکنواخت‬

‫مثال ‪ 2-5‬طراحی حافظه نهان در یک ایستگاه کاری گرافیکی سیلیکونی‬


‫شکل ‪(8-5‬ب) طراحی حافظه نهان مجزا با استفاده از پردازنده ‪ MIPS R3000‬در ایستگاه کاری سری ‪4-D‬‬
‫گرافیکی سیلیکون را نشان می دهد‪ .‬هر دو حافظه نهان داده و حافظه نهان دستورالعمل با آدرس فیزیکی منتشر‬
‫شده از ‪MMU‬ی روی تراشه دسترسی میشوند‪ I-cache .‬تک سطحه میباشد‪ .‬بطور معمول حافظه نهان سطح‪-‬‬
‫اول همیشه زیرمجموعه ای از حافظه نهان سطح دوم است‪ .‬در این مثال حافظه نهان داده سطح اول از سیاست‬
‫نوشتن سراسری ‪ WT‬استفاده میکند و سطح دوم حافظه نهان داده از سیاست بازپس نویسی ‪ WB‬استفاده میکند‪.‬‬

‫‪1‬‬
‫فقدان=‪, miss‬اصابت= ‪Hit‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪228‬‬

‫اکثر کارخانهها حافظههای نهان سطح‪-‬اول و سطح دوم را روی تراشه پردازنده قرار میدهند‪ .‬به هر حال‪ ،‬باید بین‬
‫دو سطح حافظه نهان سازگاری وجود داشته باشد‪.‬‬
‫مهمترین مزیت حافظههای نهان با آدرس فیزیکی این است که نیازی به خالی کردن‪ 1‬حافظه نهان ندارند‪ ،‬مشکل‬
‫نام مستعار ندارد بنابراین خطاهای کمتری در کرنل ‪ OS‬وجود دارد‪ .‬عیب آن سرعت کم دسترسی به حافظه نهان‬
‫تا زمانیکه ‪ MMU/TLB‬ترجمه آدرس را تمام کند میباشد‪ .‬که این باعث استفاده از حافظه نهان با آدرس مجازی‬
‫میشود‪ .‬تجمع ‪ MMU‬و حافظه نهان در یک تراشه ‪ VLSI‬میتواند بعضی از این مسائل را کم کند‪ .‬اکثر طرحهای‬
‫سیستم قدیمی از حافظه نهان با آدرس فیزیکی استفاده میکند به خاطر سادگی آن و به خاطر اینکه نیاز به مداخله‬
‫کم کرنل ‪ OS‬دارد‪.‬‬

‫حافظههای نهان با آدرس مجازی‪ :‬وقتیکه یک حافظه نهان با آدرس مجازی اندیس گذاری یا تگ گذاری‬
‫میشود به آن حافظه نهان با آدرس مجازی میگویند همانطور که در شکل ‪ 9-5‬نشان داده شده است‪ .‬در این مدل‪،‬‬
‫هر دوی ترجمه حافظه نهان و ‪ MMU‬یا اعتبارسنجی بطور موازی انجام میشوند‪ .‬آدرس فیزیکی تولید شده توسط‬
‫‪ MMU‬میتواند در تگها برای بازپس نویسی بعدی ذخیره شود اما در طول عملیات جستجوی حافظه نهان‬
‫استفاده نمی شود‪ .‬حافظه نهان با آدرس مجازی دسترسی به حافظه نهان را سریعتر انجام میدهد و با عمل ترجمه‬
‫‪ MMU‬همپوش میشود‪.‬‬
‫‪VA‬‬ ‫‪MMU‬‬ ‫‪PA‬‬ ‫‪Main‬‬
‫‪CPU‬‬
‫‪Memory‬‬
‫‪Cache‬‬
‫‪I or D‬‬ ‫‪I or D‬‬
‫(الف) یک حافظه نهان یکنواخت با آدرس مجازی‬
‫‪32‬‬
‫‪I‬‬ ‫‪I-cache‬‬ ‫‪I‬‬ ‫‪64‬‬
‫‪32‬‬ ‫‪VA‬‬ ‫‪4KB‬‬
‫‪IU‬‬
‫‪D‬‬
‫‪Main‬‬
‫‪PA‬‬ ‫‪32‬‬
‫‪MMU‬‬
‫‪32‬‬
‫‪32‬‬ ‫‪32‬‬ ‫‪Memory‬‬
‫‪FU‬‬
‫‪VA‬‬
‫‪D-cache‬‬ ‫‪D 128‬‬
‫‪D‬‬ ‫‪128‬‬ ‫‪8KB‬‬
‫(ب) در پردازنده ‪ Intel i860‬حافظه نهان مجزا میباشد و با آدرس مجازی دسترسی میشود‪.‬‬
‫شکل ‪ :9-5‬مدلهای آدرس مجازی برای حافظههای نهان یکنواخت و مجزا‬

‫مثال ‪ :3-5‬حافظه نهان مجزای آدرس دهی شده در طراحی ‪intel i860‬‬
‫شکل ‪(9-5‬ب) طرح آدرس مجازی در ‪ Intel i860‬با استفاده از حافظههای نهان مجزا برای داده و دستورات را‬
‫نشان میدهد‪ .‬دستورات ‪ 32‬بیتی هستند‪ .‬آدرسهای مجازی تولید شده توسط واحد صحیح (‪ )IU‬و همچنین‬
‫آدرسهای فیزیکی تولید شده توسط ‪ 32 MMU‬بیتی هستند‪ .‬حافظه نهان داده ‪8KB‬ی است و طول بلوک آن‬

‫‪1‬‬
‫خالی کردن قسمتی از حافظه و محتویات آن =‪Flush‬‬
‫‪| 229‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫‪ 32‬بایت است‪ .‬سازمان حافظه نهان بصورت انجمنی مجموعهای (بخش ‪ )3-2-5‬پیادهسازی شده است که ‪D-‬‬
‫‪ 128 ،cache‬مجموعهای و ‪ 64 ،I-cache‬مجموعهای است‬
‫‪1‬‬
‫مسأله نام عاریتی‪ :‬مشکل عمده حافظه نهان با آدرس مجازی نام عاریتی است که دادههای با آدرس منطقی‬
‫متفاوت در حافظه نهان اندیس‪/‬تگ مشابه دارند‪ .‬چندین پردازه ممکن است محدوده مشابهی از آدرسهای مجازی‬
‫را استفاده کنند‪ .‬اگر دو یا چندپردازه به مکان حافظه نهان فیزیکی مشابهی دسترسی داشته باشند‪ ،‬مشکل نام‬
‫عاریتی‪ ،‬ممکن است ابهام ایجاد کند‪ .‬یک راه حل مشکل نام عاریتی این است که وقتی این مشکل رخ داد کل‬
‫حافظه نهان را خالی کنیم‪.‬‬
‫تعداد زیاد عمل تخلیه ممکن است باعث کارایی ضعیف با نرخ اصابت پایین و زمان زیاد تلف شده در عمل تخلیه‬
‫شود‪ .‬وقتیکه حافظه نهان با آدرس مجازی استفاده میشود در ‪ ،UNIX‬بعد از هر سوئیچ متن عمل تخلیه نیاز‬
‫میشود‪ .‬قبل از نوشتن ورودی‪/‬خروجی یا بعد از خواندن ورودی‪/‬خروجی‪ ،‬حافظه نهان باید تخلیه شود‪ .‬بنابراین‪ ،‬نام‬
‫عاریتی بین کرنل ‪ UNIX‬و داده کاربر یک مشکل حاد است‪ .‬همه این مشکالت سربار سیستم اضافی ایجاد میکند‪.‬‬

‫‪ -2-2-5‬حافظه های نهان انجمنی و نگاشت مستقیم‬

‫انتقال اطالعات از حافظه اصلی به حافظه نهان براساس بلوکهای حافظه نهان یا خطوط حافظه نهان انجام میشود‪.‬‬
‫چهار شماتیک جایگزینی در زیر ارائه می شوند که هر شماتیک جایگزینی مزایا و معایب خودش را دارد‪ .‬کارایی‬
‫نهایی وابسته به الگوریتم دسترسی‪-‬حافظه نهان‪ ،‬سازمان حافظه نهان‪ ،‬و سیاست مدیریتی استفاده شده میباشد‪.‬‬
‫به بلوکهای داخل حافظه نهان فریمهای بلوک میگوییم‪ .‬به خاطر اینکه بین آنها و بلوکهای واقع در حافظه‬
‫𝐵 و ‪ i=0,1,2,…,m‬نشان میدهیم‪ .‬بلوکها را با ‪ Bj‬و‬ ‫اصلی تمایز قائل شویم‪ .‬فریمهای بلوک را با 𝑖̅‬
‫𝐵} میتوانند تعریف شوند‪.‬‬ ‫‪ j=0,1,2,….,n‬نشان میدهیم‪ .‬نگاشتهای گوناگون از مجموعه {‪}Bj‬به مجموعه { 𝑖̅‬
‫فرض میکنیم ‪.m=2r, n=2s, n>>m‬‬
‫فرض میکنیم هر بلوک یا فریم بلوک دارای ‪ b‬کلمه است که ‪ .b=2w‬بنابراین حافظه نهان شامل ‪m.b=2r+w‬‬
‫کلمه است‪ .‬حافظه اصلی ‪ n.b=2s+w‬کلمه دارد که با ‪ s+w‬بیت آدرس دهی میشوند‪ .‬وقتیکه فریمهای بلوک‬
‫به ‪ V=2t‬مجموعه تقسیم میشوند ‪ k=m/v=2r-t‬بلوک در هر مجموعه قرار دارد‪.‬‬
‫حافظه نهان با نگاشت مستقیم‪ :‬این سازمان حافظه نهان براساس نگاشت مستقیم از ‪ n/m=2s-r‬بلوک‬
‫حافظه‪ ،‬که فاصله های برابری دارند به یک فریم بلوک در حافظه نهان میباشد‪ .‬جایگزینی با استفاده از یک تابع‬
‫𝐵 نگاشت میشود‪:‬‬‫‪ module-m‬تعریف میشود‪ .‬بلوک ‪ Bj‬به فریم بلوک 𝑖̅‬
‫𝐵→‪Bj‬‬ ‫)‪̅𝑖 ; if i=j (module m) (5-1‬‬
‫𝐵 وجود دارد که هر ‪ Bj‬میتواند به داخل آن بار شود‪ .‬هیچ روشی برای پیادهسازی‬ ‫یک فریم بلوک منحصر بفرد 𝑖̅‬
‫سیاست جایگزینی بلوک وجود ندارد‪ .‬این نگاشت مستقیم خیلی سخت است ولی سادهترین سازمان حافظه نهان‬
‫برای پیادهسازی است‪ .‬نگاشت مستقیم در شکل ‪(10-5‬الف) نشان داده شده است که هر بلوک شامل ‪ 4‬کلمه‬
‫(‪ )w=2bit‬میباشد‪.‬‬

‫‪1‬‬
‫‪Aliasing problem‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪230‬‬

‫آدرس حافظه به سه فیلد تقسیم میشود‪ w .‬بیت پایین‪ ،‬آفست کلمه را داخل بلوک تعیین میکند‪ S .‬بیت باال آدرس‬
‫بلوک در حافظه اصلی را تعیین میکند‪ ،‬در حالیکه سمت چپ ترین (‪ )s-r‬بیت تعیین کننده تگی است که باید‬
‫تطابق داده شود‪ .‬فیلد بلوک (‪ r‬بیت) برای پیادهسازی جایگزینی (‪ )module-m‬استفاده میشود که ‪ .m=2r‬چون‬
‫𝐵 بطور منحصر بفرد با این فیلد مشخص می شود‪ ،‬تگ مرتبط با آدرس بلوک با تگ حافظه اصلی مقایسه‬ ‫بلوک 𝑖̅‬
‫میشود‪.‬‬
‫‪s+w‬‬
‫حافظه اصلی‬
‫‪tag‬‬ ‫‪Data‬‬ ‫‪W0‬‬
‫‪tag‬‬ ‫‪Block‬‬ ‫‪word‬‬
‫‪Data തതത‬‬ ‫‪W1‬‬
‫‪𝐵0‬‬ ‫‪B0‬‬
‫‪Data‬‬ ‫‪W2‬‬
‫‪s-r‬‬ ‫‪r‬‬ ‫‪w‬‬ ‫‪Data‬‬ ‫‪W3‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪s-r‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪s‬‬
‫×‬ ‫‪W4j‬‬
‫‪tag‬‬ ‫‪Data‬‬
‫𝑖̅‬
‫𝐵 ‪Data‬‬ ‫)‪W(4j+1‬‬ ‫‪Bj‬‬
‫‪Data‬‬ ‫‪w‬‬ ‫)‪W(4j+2‬‬
‫‪Data‬‬ ‫)‪W(4j+3‬‬
‫‪.‬‬ ‫‪.‬‬
‫مقایسه‬ ‫‪w‬‬ ‫‪.‬‬ ‫‪.‬‬
‫×‬
‫‪.‬‬
‫فریمهای‬ ‫بلوکها‬
‫اصابت در‬
‫بلوک‬
‫حافظه نهان‬

‫فقدان در حافظه نهان‬


‫(الف) آدرس دهی حافظه نهان‪/‬حافظه‬
‫‪B0‬‬
‫‪B1‬‬
‫‪tag‬‬ ‫‪തതത‬‬
‫‪𝐵0‬‬ ‫‪B2‬‬
‫‪ 2‬بیت‬ ‫‪B3‬‬
‫‪B4‬‬
‫‪tag‬‬ ‫‪തതത‬‬
‫‪𝐵1‬‬ ‫‪B5‬‬
‫‪B6‬‬
‫‪B7‬‬
‫‪tag‬‬ ‫‪തതത‬‬
‫‪𝐵2‬‬ ‫‪B8‬‬

‫‪B9‬‬

‫‪tag‬‬ ‫‪തതത‬‬
‫‪𝐵3‬‬ ‫‪B10‬‬
‫‪B11‬‬
‫‪B12‬‬
‫‪B13‬‬
‫‪B14‬‬
‫‪B15‬‬
‫(ب) بلوک ‪ Bj‬میتواند به فریم بلوک 𝑖̅‬
‫𝐵 نگاشت میشود اگر )‪i=j (moduleo -4‬‬
‫شکل ‪ :10-5‬سازمان حافظه نهان نگاشت‪-‬مستقیم و مثال نگاشت‬
‫اگر دو تگ با هم تطابق داشته باشند‪ ،‬اصابت حافظه نهان اتفاق میافتد‪ .‬در غیر اینصورت فقدان حافظه نهان اتفاق‬
‫می افتد‪ .‬در حالت اصابت حافظه نهان‪ ،‬آفست کلمه برای تعیین کلمه داده داخل بلوک آدرس دهی شده‪ ،‬استفاده‬
‫میشود‪ .‬وقتیکه فقدان حافظه نهان اتفاق میافتد همه آدرس حافظه (‪ s+w‬بیت) برای دسترسی به حافظه استفاده‬
‫میشود‪ s .‬بیت اول برای یافتن بلوک آدرس دهی شده استفاده میشود و ‪ w‬بیت پایین کلمه داخل بلوک را مکان‬
‫یابی میکند‪.‬‬
‫‪| 231‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫مثال ‪ -4-5‬طراحی حافظه نهان نگاشت‪ -‬مستقیم و نگاشت بلوک‪ :‬یک مثال نگاشت در شکل ‪-5‬‬
‫‪(10‬ب) نشان داده شده است‪ ،‬که ‪ n=16‬بلوک به ‪ m=4‬فریم بلوک نگاشته شده است که ‪ 4‬منبع ممکن به یک‬
‫مقصد با استفاده از نگاشت ‪ modulo-4‬نگاشت داده شده است‪ .‬حافظه نهان نگاشت مستقیم در سیستم ‪،IBM‬‬
‫مدل ‪ 370‬و ‪ VAX/8800‬پیادهسازی شده است‪.‬‬
‫پارامترهای طراحی حافظه نهان‪ :‬در عمل‪ ،‬پارامترهای ‪ n, m‬در دو تا سه مقدار متفاوتند‪ .‬یک بلوک نوعی‬
‫حافظه نهان ‪ 32‬بایتی است که مرتبط با ‪ 8‬کلمه ‪ 32‬بیتی است‪ .‬بنابراین ‪ w=3‬بیت اگر ماشین قابل آدرس دهی‬
‫کلمهای باشد‪ .‬اگر ماشین قابل آدرس دهی بایتی باشد‪ ،‬ممکن است ‪ w‬را ‪ 5‬در نظر بگیریم‪.‬‬

‫یک حافظه نهان ‪64KB‬ی را در نظر بگیرید‪ .‬این به مفهوم ‪ m=211=2048‬فریم بلوک میباشد با ‪ .r=11‬یک‬
‫حافظه اصلی ‪32MB‬ی را در نظر بگیرید‪ .‬بنابراین ‪ n=220‬بلوک میباشد با ‪ s=20‬بیت و آدرس حافظه نیاز به‬
‫‪ s+w=20+3=23‬بیت برای آدرس دهی کلمه و ‪ 25‬بیت برای آدرس دهی بایت میباشد‪ .‬در این حالت =‪2s-r‬‬
‫‪ 29=512‬بلوک کاندیداهای ممکن هستند که می توانند به یک فریم بلوک در حافظه نهان با نگاشت مستقیم‪،‬‬
‫نگاشت شوند‪.‬‬
‫مزایای حافظه نهان نگاشت‪-‬مستقیم‪ ،‬سادگی در سخت افزار‪ ،‬عدم نیاز به جستجوی انجمنی‪ ،‬عدم نیاز به الگوریتم‬
‫جایگزینی صفحه‪ ،‬و هزینه کمتر و سرعت بیشتر میباشد‪.‬‬
‫به هر حال این نگاشت ممکن است باعث نرخ اصابت ضعیفتر از نگاشت انجمنی که در ادامه توضیح میدهیم‪ ،‬شود‪.‬‬
‫این شماتیک همچنین مانع از ترجمه آدرس مجازی موازی میشود‪ .‬اگر بلوکهای زیادی بخواهند به فریم بلوک‬
‫مشابهی نگاشت داده شوند‪ ،‬نرخ اصابت به شدت افت میکند‪ .‬به این دلیل‪ ،‬حافظههای نهان با نگاشت‪-‬مستقیم‬
‫متمایل به استفاده از حافظه نهان با اندازه بزرگتر با بلوک فریم بیشتر میباشند تا از تداخل جلوگیری کنند‪.‬‬
‫حافظه نهان کامالً انجمنی‪ :‬برخالف نگاشت مستقیم‪ ،‬این سازمان حافظه نهان‪ ،‬حداکثر انعطاف در نگاشت‬
‫بلوکهای حافظه نهان را پیشنهاد میکند‪ .‬همانطور که در شکل ‪(11-5‬الف) نشان داده شده است هر بلوک حافظه‬
‫اصلی میتواند در هر کدام از فریمهای بلوک قابل دسترس قرار گیرد‪ .‬به خاطر این انعطاف پذیری یک تگ ‪ s‬بیتی‬
‫در هر بلوک حافظه نهان مورد نیاز است‪ .‬چون ‪ ،s>r‬طول تگ بزرگ است‪.‬‬
‫ن ام حافظه نهان انجمنی کامل به این خاطر است که یک جستجوی انجمنی ‪ m-way‬نیاز است تا تگ با همه‬
‫تگ های بلوک داخل حافظه نهان‪ ،‬مقایسه شود‪ .‬این شماتیک انعطاف پذیرترین را در پیادهسازی سیاستهای‬
‫جایگزینی بلوک با نرخ اصابت باالتر پیشنهاد میکند‪.‬‬
‫اگر تگها با استفاده از ‪ RAM‬بطور ترتیبی مقایسه شوند‪ ،‬مقایسه ‪ m-way‬همه تگها خیلی زمانبر است‪ .‬بنابراین‬
‫یک حافظه انجمنی (حافظه قابل آدرس با محتوا‪ )CAM ،‬نیاز میشود تا به یک مقایسه موازی با همه تگها بطور‬
‫همزمان برسیم‪ .‬این نیازمند هزینه پیادهسازی باالتر برای حافظه نهان است‪ .‬بنابراین یک حافظه نهان کامالً انجمنی‬
‫فقط در اندازه متوسط پیادهسازی شده است مانند آنهایی که در سیستمهای کامپیوتری چندپردازنده استفاده میشوند‪.‬‬
‫شکل ‪(11-5‬ب) نگاشت ‪ 4-way‬را با استفاده از جستجوی کامالً انجمنی نشان میدهد‪ .‬تگ ‪ 4‬بیتی است زیرا‬
‫‪ 16‬بلوک میتوانند به فریم بلوک مشابه نگاشت شوند‪ .‬مزیت عمده استفاده از انجمنی کامل اجازه پیادهسازی بهتر‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪232‬‬

‫سیاست جایگزینی بلوک با تداخل بلوک کمتر میباشد‪ .‬عیب اصلی‪ ،‬پردازهی جستجوی گران است که هزینه سخت‬
‫افزار را باال میبرد‪.‬‬

‫آدرس حافظه‬
‫‪Tag‬‬ ‫‪word‬‬ ‫‪tag‬‬ ‫‪Data‬‬ ‫‪W0‬‬
‫‪Data‬‬ ‫‪W1‬‬
‫‪തതത‬‬
‫‪𝐵0‬‬ ‫‪B0‬‬
‫‪Data‬‬ ‫‪W2‬‬
‫‪Data‬‬ ‫‪W3‬‬
‫‪w‬‬ ‫‪.‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪s‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪tag‬‬ ‫‪Data‬‬ ‫‪s‬‬ ‫‪W4j‬‬
‫×‬
‫‪Data‬‬ ‫)‪W(4j+1‬‬
‫‪Data‬‬ ‫𝑖̅‬
‫𝐵‬ ‫‪W(4j+2) Bj‬‬
‫‪Data‬‬ ‫‪w‬‬ ‫)‪W(4j+3‬‬
‫‪s‬‬ ‫‪.‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫مقایسه‬ ‫‪w‬‬ ‫‪.‬‬
‫×‬ ‫‪.‬‬
‫بلوکها‬
‫‪tag‬‬ ‫‪Data‬‬
‫‪Data‬‬
‫‪തതതത‬‬
‫𝑚𝐵‬
‫اصابت در حافظه نهان‬ ‫‪Data‬‬
‫‪Data‬‬
‫فریمهای بلوک‬

‫فقدان در حافظه نهان‬


‫(الف) جستجوی انجمنی باهمه تگهای بلوک‬
‫فریمهای بلوک حافظه‬ ‫‪B0‬‬
‫‪B1‬‬
‫‪tag‬‬ ‫‪തതത‬نهان‬
‫‪𝐵0‬‬
‫‪B2‬‬
‫‪ 4‬بیت‬ ‫‪B3‬‬
‫‪B4‬‬
‫‪tag‬‬ ‫‪തതത‬‬
‫‪𝐵1‬‬ ‫‪B5‬‬
‫‪B6‬‬
‫‪B7‬‬
‫‪tag‬‬ ‫‪തതത‬‬
‫‪𝐵2‬‬ ‫‪B8‬‬
‫‪B9‬‬
‫‪B10‬‬
‫‪tag‬‬ ‫‪തതത‬‬
‫‪𝐵3‬‬ ‫‪B11‬‬
‫‪B12‬‬
‫‪B13‬‬
‫‪B14‬‬
‫‪B15‬‬
‫(ب) هر بلوک به هر کدام از ‪ 4‬فریم بلوک تعیین شده با تگ نگاشت میشود‪.‬‬
‫شکل ‪ :11-5‬سازمان حافظه نهان کامالً انجمنی با یک مثال نگاشت‬

‫‪ -3-2-5‬حافظه های نهان انجمنی‪-‬مجموعه ای و حافظه های نهان سکتوری‬

‫حافظههای نهان انجمنی‪-‬مجموعه ای رایجترین طراحی حافظه نهان هستند که در کامپیوترهای تجاری ساخته‬
‫شدهاند‪ .‬حافظههای نهان با نگاشت سکتوری یک روش طراحی به حافظههای نهان انجمنی‪-‬مجموعهای میباشد‪.‬‬
‫این دو نوع طرح حافظه نهان در زیر توصیف شدهاند‪.‬‬
‫‪| 233‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫حافظه نهان انجمنی مجموعهای‪ :‬این طراحی مصالحهای بین دو طراحی حافظه نهان قبلی براساس نگاشت‬
‫مستقیم و نگاشت انجمنی کامل میباشد‪ .‬این حافظه نهان اگر به درستی طراحی شود‪ ،‬بهترین نسبت کارایی‪-‬هزینه‬
‫را ایجاد میکند‪ .‬اکثر سیستمهای کامپیوتری با کارایی باال براساس این روش میباشند‪ .‬ایده آن در شکل ‪12-5‬‬
‫نشان داده شده است‪.‬‬
‫در یک حافظه نهان انجمنی ‪ m ،k-way‬فریم بلوک حافظه نهان به ‪ V=m/k‬مجموعه تقسیم میشود که در‬
‫هر مجموعه ‪ k‬بلوک قرار دارد‪ .‬هر مجموعه با یک شماره مجموعه ‪ d‬بیتی مشخص میشود که ‪ .2d=v‬تگهای‬
‫بلوک حافظه نهان به ‪ s-d‬کاهش داده میشود‪ .‬در عمل‪ ،‬براساس حد میانهای بین اندازه بلوک ‪ ،w‬اندازه حافظه‬
‫نهان ‪ m‬و سایر فاکتورهای کارایی‪-‬هزینه‪ ،‬اندازه مجموعه ‪ k‬یا انجمن پذیری ‪ 2،4،8،16‬یا ‪ 64‬انتخاب میشود‪.‬‬
‫نگاشت کامالً انجمنی را میتوان با یک مجموعه (‪ )v=1‬یا انجمنی ‪ m-way‬در نظر گرفت‪ .‬همانطور که در شکل‬
‫‪(5-12‬الف) نشان داده شده است‪ ،‬در جستجوی انجمنی ‪ ،k-way‬تگ با فقط ‪ k‬تگ در مجموعه مشخص شده‬
‫مقایسه میشود‪ .‬چون در عمل ‪ k‬نسبتاً کوچک است‪ ،‬جستجوی انجمنی ‪ k-way‬اقتصادیتر از انجمنی کامل‬
‫است‪.‬‬
‫‪ തതത‬در یک مجموعه ‪ si‬تعریف شده در زیر‬ ‫در کل‪ ،‬یک بلوک ‪ Bj‬میتواند به هر یک از فریمهای قابل دسترس 𝑓𝐵‬
‫نگاشت شود‪ .‬تگ تطابق شده‪ ،‬بلوک جاری که در فریم قرار دارد را تعیین میکند‪:‬‬
‫‪Bj→തതത‬‬
‫)‪𝐵𝑓 ∈ si if j(modulo v)=i (2-5‬‬
‫مصالحههای طراحی‪ :‬اندازه مجموعه‪ ،‬انجمن پذیری ‪ k‬و تعداد مجموعهها ‪ V‬بطور معکوس به هم مرتبطند‪:‬‬
‫‪m=v×k‬‬ ‫)‪(5-3‬‬
‫برای یک حافظه نهان با اندازه ثابت حد میانهای بین اندازه مجموعه و تعداد مجموعه وجود دارد‪ .‬مزایای حافظه‬
‫نهان انجمنی عبارتند از‪:‬‬
‫اوالً الگوریتم جایگزینی بلوک نیاز به مورد توجه قرار دادن تعداد کمی بلوک در یک مجموعه مشابه دارد‪ .‬بنابراین‬
‫سیاست جایگزینی در مقایسه با حافظه نهان انجمنی میتواند اقتصادیتر پیادهسازی شود‪.‬‬
‫ثانیاً پیادهسازی جستجوی انجمنی ‪ k-way‬سادهتر است‪ .‬ثالثاً مصالحههای زیادی با توجه به معادله ‪ 3-5‬میتواند‬
‫مورد توجه قرار گیرد تا نرخ اصابت باالتری در حافظه نهان بدست آید‪ .‬عملیات حافظه نهان اغلب همراه با ‪TLB‬‬
‫انجام میشوند‪.‬‬
‫مثال ‪ :5-5‬طراحی حافظه نهان انجمنی‪-‬مجموعهای و نگاشت بلوک‪ :‬یک مثال برای نگاشت ‪n=16‬‬
‫بلوک از حافظه اصلی به حافظه نهان انجمنی ‪ )k=2( 2-way‬با ‪ v=4‬مجموعه روی ‪ m=8‬فریم بلوک در شکل‬
‫‪(5-12‬ب) نشان داده شده است‪ .‬در ‪ i860‬مثال ‪(9-5‬ب) هر دوی ‪ D-cache‬و ‪ I-cache‬انجمنی ‪2-way‬‬
‫میباشند‪ 128 .‬مجموعه در ‪ D-cache‬و ‪ 64‬مجموعه در ‪ I-cache‬با بترتیب ‪ 256‬و ‪ 128‬فریم بلوک وجود دارد‪.‬‬
‫جدول ‪ 1-5‬نمونه سیستمهای دیگری را که از حافظههای نهان انجمنی‪-‬مجموعهای استفاده میکنند نشان میدهد‪.‬‬
‫نکته اینکه انجمن پذیری در این سیستمها در محدوده ‪ 2‬تا ‪ 16‬میباشد‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪234‬‬

‫آدرس حافظه‬ ‫‪tag‬‬


‫‪തതത‬‬
‫‪𝐵0‬‬
‫‪തതത‬‬
‫‪𝐵1‬‬ ‫‪B0‬‬
‫‪tag‬‬ ‫‪set‬‬ ‫‪word‬‬
‫‪തതത‬‬
‫‪𝐵2‬‬ ‫‪B1‬‬
‫‪.‬‬ ‫‪Set0‬‬
‫‪B2‬‬
‫‪.‬‬
‫‪w‬‬ ‫‪.‬‬ ‫‪B3‬‬
‫‪s-d‬‬ ‫‪d‬‬
‫‪.‬‬
‫)‪𝐵ത(𝐾 − 1‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫)𝑘𝑖(‪𝐵ത‬‬
‫)‪𝐵ത(𝑖𝑘 + 1‬‬
‫)‪𝐵ത(𝑖𝑘 + 2‬‬
‫‪.‬‬
‫×‬
‫‪Seti‬‬
‫‪.‬‬
‫)‪B(ik+1‬‬
‫‪.‬‬
‫𝑘 ‪𝐵ത(𝑖𝑘 +‬‬
‫)‪− 1‬‬
‫مقایسه‬ ‫‪.‬‬
‫×‬ ‫‪.‬‬
‫اصابت‬
‫فقدان‬
‫(الف) جستجوی انجمنی ‪ k-way‬در داخل هر مجموعه از ‪ k‬بلوک حافظه نهان‬
‫‪𝐵ത 0‬‬ ‫‪B0‬‬
‫‪Set0‬‬ ‫‪B1‬‬
‫‪𝐵ത 1‬‬ ‫‪B2‬‬
‫‪B3‬‬
‫‪𝐵ത 2‬‬ ‫‪B4‬‬
‫‪Set1‬‬ ‫‪B5‬‬
‫‪𝐵ത 3‬‬ ‫‪B6‬‬
‫‪B7‬‬
‫‪B8‬‬
‫‪𝐵ത4‬‬ ‫‪B9‬‬
‫‪Set2‬‬ ‫‪B10‬‬
‫‪𝐵ത 5‬‬ ‫‪B11‬‬
‫‪B12‬‬
‫‪B13‬‬
‫‪𝐵ത 6‬‬ ‫‪B14‬‬
‫‪Set3‬‬
‫‪B15‬‬
‫‪𝐵ത 7‬‬
‫(ب) نگاشت بلوکهای حافظه نهان در حافظه نهان انجمنی ‪ 2-way‬با ‪ 4‬مجموعه‬
‫شکل ‪ :12-5‬سازمان حافظه نهان انجمنی مجموعهای و یک مثال نگاشت انجمنی ‪2-way‬‬

‫تعداد مجموعه‬ ‫اندازه مجموعه‬ ‫اندازه حافظه نهان‬


‫سیستم‬
‫‪v‬‬ ‫‪k‬‬ ‫‪m‬‬
‫‪512‬‬ ‫‪2‬‬ ‫‪1024‬‬ ‫‪DEC VAX 11/780‬‬
‫‪256‬‬ ‫‪2‬‬ ‫‪512‬‬ ‫‪Amdahl 470/V6‬‬
‫‪128‬‬ ‫‪2‬‬ ‫‪256‬‬ ‫‪Intel i860 D-cache‬‬
‫‪128‬‬ ‫‪4‬‬ ‫‪512‬‬ ‫‪Honeywell 66/60‬‬
‫‪512‬‬ ‫‪4‬‬ ‫‪2048‬‬ ‫‪Amdahl 470/v7‬‬
‫‪128‬‬ ‫‪8‬‬ ‫‪1024‬‬ ‫‪IBM 370/168‬‬
‫‪64‬‬ ‫‪16‬‬ ‫‪1024‬‬ ‫‪IBM 3033‬‬
‫‪Motorolla 88110 I-‬‬
‫‪128‬‬ ‫‪2‬‬ ‫‪256‬‬
‫‪cache‬‬
‫جدول ‪ :1-5‬چند نمونه سازمان حافظه نهان انجمنی –مجموعه ای‬
‫‪| 235‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫حافظه نهان نگاشت سکتوری‪ :‬شماتیک جایگزینی بلوک در شماتیکهای فوق عمومی شده است‪ .‬ایده‪،‬‬
‫بخش بندی هر دوی حافظه نهان و حافظه اصلی به سکتورهای با طول ثابت است‪ .‬آنگاه یک جستجوی کامالً‬
‫انجمنی اِعمال میشود که هر سکتوری میتواند در هر فریم سکتور قابل دسترس قرار گیرد‪.‬‬
‫درخواستهای حافظه برای بلوکها انجام میشود نه برای سکتورها‪ .‬این میتواند با مقایسه تگ سکتور در آدرس‬
‫حافظه با تگ سکتور با جستجوی کامالً انجمنی فیلتر شود‪ .‬اگر یک فریم سکتور تطابق یافته پیدا شود (اصابت‬
‫حافظه نهان)‪ ،‬فیلد بلوک برای پیدا کردن بلوک مطلوب در فریم سکتور استفاده میشود‪.‬‬
‫اگر یک فقدان حافظه نهان اتفاق بیافتد‪ ،‬فقط بلوک مفقود از حافظه اصلی برداشت میشود و به داخل یک فریم‬
‫بلوک متجانس در یک سکتور قابل دسترس آورده میشود‪ .‬بلوک ‪i‬ام در یک سکتور باید جایگزین فریم بلوک ‪i‬ام‬
‫در فریم سکتور مقصد شود‪ .‬یک بیت اعتبار به هر فریم بلوک الحاق میشود تا تعیین کند چه موقع بلوک معتبر یا‬
‫غیر معتبر است‪.‬‬
‫وقتیکه محتویات یک فریم بلوک جایگزین میشود‪ ،‬بقیه فریمهای بلوک در سکتور مشابه به نامعتبر عالمت زده‬
‫میشوند‪ .‬فقط فریم بلوکی که اخیراً جایگزین شده است برای مراجعه معتبر عالمت زده میشود‪ .‬به هر حال‪ ،‬چندین‬
‫بیت اعتبار برای ضبط وضعیت سایر بلوکها میتواند استفاده شود‪ .‬نگاشت سکتوری که توصیف شد‪ ،‬میتواند برای‬
‫سایر طرحها اصالح شود‪ ،‬وابسته به سیاست جایگزینی بلوکی که پیاده سازی میشود‪.‬‬
‫در مقایسه با حافظههای نهان کامالً انجمنی یا انجمنی‪-‬مجموعهای حافظه نهان نگاشت سکتور مزایایی ارائه‬
‫میکند شامل انعطاف پذیری در پیاده سازی الگوریتمهای جایگزینی بلوک مختلف و اقتصادی بودن انجام جستجوی‬
‫کامالً انجمنی به خاطر محدود بودن تعداد تگهای سکتور‪.‬‬

‫آدرس حافظه‬ ‫سکتورها حافظه اصلی‬


‫‪3‬بیت‬ ‫‪2‬بیت‬ ‫‪4‬بیت‬
‫‪sector‬‬ ‫‪block word‬‬ ‫‪B0‬‬
‫‪tag‬‬ ‫بیت اعتبار‬ ‫‪B1‬‬ ‫‪0‬‬
‫‪B2‬‬
‫‪3‬بیت‬ ‫‪B0‬‬
‫‪B3‬‬
‫‪0‬‬ ‫‪B1‬‬
‫‪B4‬‬
‫‪B2‬‬
‫‪B5‬‬ ‫‪1‬‬
‫‪B3‬‬
‫‪B6‬‬
‫‪B4‬‬
‫‪B7‬‬
‫‪B5‬‬
‫‪1‬‬ ‫‪B6‬‬ ‫‪2‬‬
‫‪B7‬‬

‫‪B8‬‬
‫‪3‬‬
‫‪2‬‬ ‫‪B9‬‬
‫‪B10‬‬ ‫‪4‬‬
‫‪B11‬‬
‫‪B12‬‬ ‫‪5‬‬
‫‪B13‬‬
‫‪3‬‬ ‫‪B14‬‬ ‫‪6‬‬
‫‪B15‬‬
‫‪B28‬‬
‫فریمهای سکتور‬ ‫‪B29‬‬ ‫‪7‬‬
‫‪B30‬‬
‫‪B31‬‬

‫شکل ‪ :13-5‬سازمان حافظه نهان نگاشت سکتور ‪4-way‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪236‬‬

‫مثال ‪ : 6-5‬طراحی حافظه نهان سکتوری‬


‫شکل ‪ 13-5‬مثالی از نگاشت سکتوری را با اندازه سکتور ثابت ‪ 4‬بلوک نشان میدهد‪ .‬نکته اینکه هر سکتور‬
‫میتواند به هر فریم سکتور با انجمنی کامل در سطح سکتور‪ ،‬نگاشت شود‪.‬‬
‫این شماتیک ابتدا در مدل ‪ IBM System/360 ،85‬پیادهسازی شد‪ .‬در مدل ‪ 16 ،85‬سکتور وجود دارد که هر‬
‫کدام ‪ 16‬بلوک دارند‪ .‬هر بلوک ‪ 64‬بایت دارد بنابراین هر سکتور ‪ 1024‬بایت است و کل حافظه نهان ‪16KB‬‬
‫میباشد و سیاست بلوک ‪ LRU‬استفاده میشود‪.‬‬

‫‪ -4-2-5‬مسائل کارایی حافظه نهان‬

‫کارایی یک طرح حافظه نهان مرتبط به دو مفهوم است‪ :‬تعداد سیکل و نرخ اصابت‪ .‬تعداد سیکل اشاره به تعداد‬
‫سیکلهای ماشین پایه مورد نیاز برای دسترسی حافظه نهان‪ ،‬بروز رسانی و کنترل همبستگی حافظه نهان دارد‪ .‬نرخ‬
‫اصابت یعنی با چه بازدهی حافظه نهان میتواند زمان دسترسی‪-‬حافظه کلی را کاهش دهد‪ .‬بین این دو مفهوم‬
‫مصالحهای وجود دارد‪ .‬فاکتورهای کلیدی که بر سرعت حافظه نهان و نرخ اصابت تأثیر میگذارند در زیر بحث‬
‫میشوند‪.‬‬
‫شبیه سازی ردیابی برنامه و مدل سازی آنالیزی دو روش مکمل هم برای مطالعه کارایی حافظه نهان میباشند‪ .‬هر‬
‫دو باید با هم اِعمال شوند تا یک ارزیابی کارایی موثق بدست آید‪ .‬مطالعات شبیه سازی نقاط داغ‪ ،‬رفتار برنامه و‬
‫پاسخهای حافظه نهان به آنها را نشان میدهد‪.‬‬
‫تعداد سیکل‪ :‬سرعت حافظه نهان با تکنولوژی ‪ RAM‬پویا یا ایستای تحتانی‪ ،‬سازمان حافظه نهان و نرخ اصابت‬
‫حافظه نهان تحت تأثیر قرار میگیرد‪ .‬تعداد کل سیکلها باید با نرخ اصابت حافظه نهان مناسبی همراه باشد‪ .‬این‬
‫بر تصمیمات طراحی حافظه نهان مختلف تأثیر میگذارد همانطور که در بخشهای قبل دیدیم‪.‬‬
‫تعداد سیکلها موثق نخواهند بود مگر شبیه سازی با جزئیات به همه جنبههای سلسله مراتب حافظه انجام شود‪.‬‬
‫سیاستهای ‪ WT‬و ‪ WB‬نیز بر تعداد سیکل تأثیر میگذارند‪ .‬اندازه حافظه نهان‪ ،‬اندازه بلوک‪ ،‬تعداد مجموعه و‬
‫انجمن پذیری همگی بر تعداد سیکل تأثیر میگذارند همانطور که در شکل ‪ 14-5‬نشان داده شده است‪.‬‬

‫تعداد سیکلها بطور مستقیم به نرخ اصابت وابسته میباشند که با افزایش مقادیر پارامترهای فوق بطور خطی کاهش‬
‫مییابد‪ .‬اما تمایل به کاهش صاف میشود و بعد از نقطه خاصی متمایل به افزایش میشود‪( .‬خط چینها در شکل‬
‫‪(5-14‬الف))‪ .‬این ابتداً با تأثیر اندازه بلوک روی نرخ اصابت ایجاد میشود که در پایین بحث میشود‪.‬‬
‫نرخهای اصابت‪ :‬نرخ اصابت حافظه نهان با اندازه حافظه نهان و اندازه بلوک بطور مختلفی تحت تأثیر قرار‬
‫میگیرد‪ .‬این تأثیرات در شکل ‪(14-5‬ب) و ‪(14-5‬ج) نشان داده شدهاند‪.‬‬
‫وقتیکه اندازه حافظه نهان به نامتناهی میرسد‪ ،‬نرخ اصابت ‪ ٪100‬باید مورد انتظار باشد‪ .‬به هر حال‪ ،‬این هیچگاه‬
‫اتفاق نمی افتد زیرا اندازه حافظه نهان همیشه به بودجه محدود شده است‪ .‬بار اولیه حافظه نهان و تغییر در محلیت‬
‫نیز از چنین کارایی ایدهآلی جلوگیری میکند‪ .‬منحنیهای شکل ‪(14-5‬ب) را میتوان با ‪ 1-C-0.5‬تخمین زد که ‪C‬‬
‫اندازه کل حافظه نهان است‪.‬‬
‫‪| 237‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫تأثیر اندازه بلوک‪ :‬با یک حافظه نهان با اندازه ثابت‪ ،‬کارایی حافظه نهان نسبتاً به اندازه بلوک حساس است‪.‬‬
‫شکل ‪(14-5‬ج) باالرفتن و پایین آمدن نرخ اصابت حافظه نهان را وقتیکه اندازه بلوک از کم به زیاد تغییر میکند‬
‫نشان میدهد‪ .‬در ابتدا‪ ،‬یک بلوک با سایز (مثل ‪ 32‬بایت در هر بلوک) را در نظر گرفتهایم‪ .‬این اندازه بلوک عمدتاً‬
‫با محلیت زمانی در برنامه نوعی مشخص میشود‪.‬‬
‫وقتیکه اندازه بلوک زیاد میشود‪ ،‬بخاطر محلیت مکانی در مراجعه بلوکهای داده‪/‬دستور بزرگتر نرخ اصابت بهبود‬
‫مییابد‪ .‬افزایش در یک اندازه بلوک بهینه خاص به حداکثر میرسد و بعد از این نقطه‪ ،‬نرخ اصابت با افزایش اندازه‬
‫بلوک کاهش مییابد‪ .‬این به خاطر عدم تطابق رفتاری برنامه و اندازه بلوک میباشد‪.‬‬
‫به عنوان یک حقیقت مهم‪ ،‬وقتی اندازه بلوک خیلی بزرگ میشود‪ ،‬کلمات زیادی وارد حافظه نهان میشوند که‬
‫هیچگاه استفاده نمیشون د‪ .‬همچنین اثرات محلیت زمانی به تدریج با افزایش اندازه بلوک حذف میشود‪ .‬در انتها‬
‫وقتیکه اندازه بلوک برابر با اندازه کل حافظه نهان میشود‪ ،‬نرخ اصابت به صفر میرسد‪.‬‬
‫برای یک سیستم بر اساس گذرگاه‪ ،‬اسمیت تعیین کرده است که یک اندازه بلوک بهینه باید برای حداقل کردن‬
‫زمان دسترسی‪-‬حافظه مؤثر انتخاب شود‪ .‬این اندازه بهینه وابسته به نرخ تأخیر دسترسی و زمان سیکل گذرگاه (نرخ‬
‫انتقال داده) میباشد‪.‬‬
‫اثرات تعداد مجموعه‪ :‬در یک حافظه نهان انجمنی‪-‬مجموعهای‪ ،‬اثرات تعداد مجموعه واضح است‪ .‬برای یک‬
‫حافظه نهان با ظرفیت ثابت‪ ،‬ممکن است نرخ اصابت با افزایش تعداد مجموعهها کاهش یابد‪ .‬بر اساس گزارش‬
‫اسمیت وقتیکه تعداد مجموعه از ‪ 16‬به ‪ 128 ،64‬و ‪ 256‬افزایش مییابد‪ ،‬کاهش در نرخ اصابت نسبتاً کم است‪.‬‬
‫وقتیکه تعداد مجموعه به ‪ 512‬و بیشتر افزایش مییابد نرخ اصابت سریعتر کاهش مییابد‪ .‬همچنین حد میانهای‬
‫بین اندازه بلوک و تعداد مجموعه نباید نادیده گرفته شود (معادله ‪.)3-5‬‬
‫سایر فاکتورهای کارایی‪ :‬در یک طرح کارایی‪-‬مستقیم‪ ،‬حد میانهای بین اندازه حافظه نهان‪ ،‬تعداد مجموعه‪،‬‬
‫اندازه بلوک و سرعت حافظه وجود دارد‪ .‬بلوکهای مستقل‪ ،‬اندازه برداشت (‪ ،)fetch‬و استراتژیهای برداشت نیز‬
‫بر کارایی به روشهای گوناگون تأثیر میگذارند‪.‬‬
‫تعداد سیکل‬ ‫نرخ اصابت‬
‫‪1‬‬

‫اندازه حافظه نهان(بایت)‬


‫اندازه حافظه نهان‪ ،‬تعداد مجموعه‪ ،‬انجمن پذیری یا اندازه بلوک‬
‫(الف) تعداد سیکل برای دسترسی حافظه نهان‬ ‫(ب) نرخ اصابت در مقایسه با اندازه حافظه نهان‬
‫نرخ اصابت (اندازه‬
‫حافظه نهان ثابت)‬

‫‪1‬‬

‫مقدار اولیه‬ ‫بهینه‬ ‫اندازه بلوک (بایت)‬


‫(ج) نرخ اصابت در مقایسه با اندازه بلوک‬
‫شکل‪ :14-5‬کارایی حافظه نهان در مقایسه با پارامترهای طراحی استفاده شده‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪238‬‬

‫سلسله مراتبهای حافظه نهان چندسطحی انتخابهایی برای توسعه اثرات حافظه نهان پیشنهاد میکنند‪ .‬اغلب در‬
‫سطح اول سیاست ‪ WT‬و در سطح دوم سیاست ‪ WB‬استفاده میشود‪ .‬مثل سلسله مراتب حافظه یک طرح سلسله‬
‫مراتب حافظه نهان بهینه باید با رفتار برنامه خاص در دامنه کاربردهای مقصد تطابق داشته باشد‪.‬‬
‫توزیع مراجعات حافظه نهان برای دستور بارکردن‪ ،‬و نوشتن داده بر طراحی سلسله مراتب اثر میگذارد‪ .‬براساس‬
‫ردیابیهای برنامههای قبلی‪ ٪63 ،‬برداشت دستور‪ ٪25 ،‬بارکردن و ‪ ٪12‬نوشتن گزارش شده است‪ .‬این بر تصمیم‬
‫جدا کردن حافظه نهان دستورالعمل از حافظه نهان داده اثر میگذارد‪.‬‬
‫در حقیقت‪ ،‬طراحی سلسله مراتب بهینه باید براساس زمان دسترسی و تکنولوژی حافظه استفاده شده باشد‪ .‬دسترسی‬
‫خط لوله به حافظه نهان برای بهبود کارایی حافظه نهان خیلی مطلوب است‪.‬‬

‫‪ -5-2-5‬انواع فقدان ها در حافظه نهان و روش های بهینه سازی حافظه نهان‬

‫بطور کلی میتوان انواع فقدانها در حافظه نهان را به سه گروه زیر طبقهبندی کرد‪:‬‬
‫‪ .1‬اجباری‪ :1‬اولین دسترسی به یک بالک نمیتواند در حافظه نهان باشد بنابراین بلوک باید به حافظه‬
‫نهان آورده شود‪ .‬این نوع فقدان حتی اگر حافظه نهان دارای اندازه بینهایت باشد اتفاق میافتد‪.‬‬
‫‪ .2‬ظرفیت‪ :2‬وقتی حافظه نهان جا نداشته باشد این نوع فقدان اتفاق میافتد‪ .‬این نوع فقدان نیز مثل نوع‬
‫اجباری اتفاق خواهد افتاد زیرا بلوکها از حافظه حذف شده و دوباره بازیابی میشوند‪.‬‬
‫‪ .3‬تصادم‪ :3‬اگر استراتژی حافظه نهان انجمنی کامل نباشد فقدان تصادم اتفاق میافتد‪ .‬باالخص هنگامی‬
‫که چندین بلوک به یک مجموعه نگاشت شوند‪.‬‬
‫تعداد فقدانها به ازای هر دستور بصورت زیر بیان میشود‪:‬‬

‫‪misses‬‬ ‫‪miss rate × Memory accesses‬‬ ‫‪Memory access‬‬


‫=‬ ‫× ‪= Miss rate‬‬
‫‪Instruction‬‬ ‫‪Instruction Count‬‬ ‫‪Instruction‬‬
‫که این واحد اکثراً به ازای هر ‪ 1000‬دستور مطرح میشود تا یک عدد صحیح باشد نه عدد کسری‪.‬‬
‫مشکل این فاکتور این است که قیمت و هزینه فقدان را مد نظر قرار نمیدهد‪ .‬واحد بهتر میانگین زمان دسترسی‬
‫به حافظه است‪:‬‬
‫میانگین زمان دسترسی=زمان اصابت ‪ +‬نرخ فقدان×هزینه فقدان‬
‫چندنخ‪4‬‬ ‫پردازندههای هوشمند در زمان فقدان به اجرای دستورات دیگر میپردازند تا اثر فقدان را کم کنند‪ .‬همچنین‬
‫کردن به پردازنده اجازه میدهد تا فقدانها را بدون اینکه مجبور به بیکاری شود تحمل کند‪.‬‬

‫‪1‬‬
‫‪Compulsory miss‬‬
‫‪2‬‬
‫‪Capacity miss‬‬
‫‪3‬‬
‫‪Conflict miss‬‬
‫‪4‬‬
‫‪Multithreading‬‬
‫‪| 239‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫ردیابی‪1‬‬ ‫‪ -1-5-2-5‬استفاده از حافظه نهان قربانی و‬

‫همانطور که گفتیم یکی از انواع فقدان حافظه نهان‪ ،‬فقدان تصادم میباشد یکی از روشهای کاهش این نوع فقدان‬
‫استفاده از حافظه نهان قربانی میباشد‪ .‬که یک حافظه نهان انجمنی کامل و کوچک میباشد‪ .‬در این مدل بلوکی‬
‫که میخواهد از حافظه نهان خارج شود را دور نمیاندازند و آن را در داخل حافظه نهان قربانی قرار میدهند‪ .‬در‬
‫صورتی که این بلوک مجدداً مورد دسترسی قرار گیرد از حافظه نهان قربانی مورد دسترسی قرار گیرد‪ .‬وقتی فقدانی‬
‫در حافظه نهان اصلی رخ دهد و در حافظه نهان قربانی موجود باشد‪ ،‬آنرا از حافظه نهان قربانی برداشته و به‬
‫حافظه نهان اصلی منتقل میشود‪ .‬جایگزینی در حافظه نهان قربانی طبق الگوریتم ‪ LRU‬انجام میشود‪.‬‬

‫این روش در ساختارهای حافظههای نهان نگاشت مستقیم و انجمنی با درجه کم استفاده نمیشود‪ .‬برای ‪I-cache‬‬
‫حتی اگر یک بلوک هم گرفته شود بهبود خوبی ایجاد خواهد شد‪ .‬البته بیشتر مناسب حافظههای نهان کوچک‬
‫میباشد‪.‬‬

‫‪Main cache‬‬
‫‪Address‬‬

‫‪Victim cache‬‬

‫‪ :Trace cache‬در پردازندههای موجود ساختار به این صورت است که دستورات پس از برداشت داخل یک صف‬
‫(بافر) قرار میگیرند‪ .‬هرچه این صف پرتر باشد‪ ،‬خطلوله بهتر پر میماند و کارایی بهتر میشود‪ .‬حال اگر محلیت در‬
‫حافظه نهان خوب نباشد‪ ،‬مثال در هر بلوک از یک کلمه آن استفاده شود‪ ،‬کارایی خوب نخواهد بود‪ .‬یک روش غلبه‬
‫بر این مساله استفاده از ‪ trace cache‬میباشد‪.‬‬

‫ساختار به این صورت می باشد که مجموعه دستورات بر اساس ردیابی آنها در حافظه نهان ‪ trace‬قرار میگیرند‪.‬‬
‫این موجب میشود ‪ %100‬از بلوکها استفاده کنیم‪ .‬در واقع در این مدل خطوط حافظه نهان براساس دستورات پر‬
‫می شوند‪ .‬این حافظه نهان برای بهبود سرعت سیستم نیست بلکه برای بهبود استفاده از حافظه نهان میباشد‪.‬‬

‫‪1‬‬
‫‪Victim cache, Trace cache‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪240‬‬

‫‪-2-5-2-5‬شش راه بهینه سازی حافظه نهان عبارتند از‪:‬‬

‫اندازه بلوک بزرگتر بطوریکه نرخ فقدان کاهش یابد‪ :‬سادهترین راه کاهش نرخ فقدان و استفاده از محلیت‬ ‫‪.1‬‬
‫مکانی‪ ،‬افزایش اندازه بلوک است‪ .‬اندازه بلوک بزرگتر باعث کاهش فقدانهای اجباری میشود‪ .‬اما هزینه‬
‫فقدان را افزایش میدهد‪ .‬چون بلوکهای بزرگتر تعداد تگها را کمتر میکنند میتوانند توان مصرفی‬
‫ایستا را کاهش دهند همچنین بلوک بزرگتر باعث افزایش فقدانهای تصادمی باالخص در حافظههای‬
‫نهان کوچکتر می شوند‪ .‬انتخاب اندازه بلوک بهینه پیچیده است و وابسته به اندازه حافظه نهان و هزینه‬
‫فقدان است‪.‬‬
‫بزگتر کردن حافظه نهان تا نرخ فقدان کاهش یابد‪ :‬واضحترین راه برای کاهش فقدانهای ظرفیت‬ ‫‪.2‬‬
‫باالبردن ظرفیت حافظه نهان است‪ .‬عیب آن زمان تصادم باالتر و هزینه توان بیشتر است‪ .‬حافظههای‬
‫نهان بزرگتر توان مصرفی ایستا و پویای بیشتری مصرف میکنند‪.‬‬
‫باالبردن انجمنپذیری برای کاهش نرخ فقدان‪ :‬باالبردن انجمنپذیری باعث کاهش فقدانهای تصادم‬ ‫‪.3‬‬
‫میشود‪ .‬انجمنپذیری باالتر به قیمت افزایش زمان تصادم است‪ .‬همچنین مصرف توان را افزایش‬
‫میدهد‪.‬‬
‫حافظههای نهان چندسطحه برای کاهش هزینه فقدان‪ :‬تصمیم مشکل وقتی است که بخواهیم زمان‬ ‫‪.4‬‬
‫اصابت حافظه نهان سریع شود تا با سرعت نرخ پالس ساعت پردازنده حرکت کنیم یا حافظه نهان را به‬
‫اندازه کافی بزرگ کنیم تا فاصله (شکاف) بین دسترسیهای پردازنده و دسترسیهای حافظه را کاهش‬
‫دهیم‪ .‬اضافه کردن سطح دیگری بین حافظه و حافظه نهان اصلی تصمیم را ساده میکند‪ .‬حافظه نهان‬
‫اولیه می تواند به اندازه کافی کوچک باشد تا با پالس ساعت پردازنده تطابق داشته باشد و حافظه نهان‬
‫سطح دوم ( یا سطح سوم) میتواند به اندازه کافی بزرگ باشد تا دسترسیهای زیاد به حافظه اصلی را‬
‫تسخیر کند‪ .‬فقدانها در سطح حافظه نهان دوم منجر به بلوکهای بزرگتر‪ ،‬ظرفیت بیشتر و انجمنپذیری‬
‫بیشتر میشود‪ .‬حافظههای نهان چندسطحه از یک حافظه نهان مجتمع تنها کاراتر است‪ .‬اگر ‪L2, L1‬‬
‫به ترتیب مرتبط با حافظه نهان سطح اول و سطح دوم باشند میتوانیم میانگین زمان دسترسی حافظه‬
‫را بصورت زیر تعریف کنیم‪:‬‬
‫)‪Hit time L1+miss rate L1× (hit time L2+miss rate L2×miss Penalty L2‬‬
‫به فقدانهای خواندن نسبت به نوشتنها اولویت بدهیم تا هزینه فقدان را کاهش دهیم‪ .‬یک بافر نوشتن‬ ‫‪.5‬‬
‫روش خوبی برای پیادهسازی این بهینه سازی است‪ .‬بافرهای نوشتن مخاطرههایی را تولید میکنند زیرا‬
‫مقدار بروز شده مکانی که نیاز به یک خواندن فقدان است را نگه میدارد و باعث مخاطره خواندن‪-‬بعد‬
‫از‪-‬نوشتن در خالل حافظه میشود‪ .‬یک راهحل چک کردن محتویات بافر نوشتن در یک فقدان خواندن‬
‫می باشد‪ .‬اگر تصادم وجود نداشته باشد‪ ،‬و اگر سیستم حافظه در دسترس باشد‪ ،‬ارسال خواندن قبل از‬
‫نوشتن باعث کاهش هزینه فقدان میشود‪ .‬اکثر پردازندهها به خواندن روی نوشتن اولویت میدهند‪ .‬این‬
‫انتخاب تأثیر کمتری روی مصرف توان دارد‪.‬‬
‫‪| 241‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫‪ .6‬اجتناب از ترجمه آدرس در خالل ایندکس کردن حافظه نهان به منظور کاهش زمان اصابت‪ :‬یک راه‬
‫استفاده از آفست صفحه برای ایندکس کردن حافظه نهان است (زیرا آفست در هر دو آدرسدهی فیزیک‬
‫و مجازی مشابه است)‪ .‬این روش باعث ایجاد پیچیدگیها و یا محدودیتهایی روی اندازه و ساختار‬
‫حافظه نهان ‪ L1‬میشود اما مزیت دسترسی ‪ TLB‬از مسیر بحرانی مهمتر از عیب آن است‪.‬‬

‫هر کدام از این ‪ 6‬روش این امکان را دارند که به جای کاهش متوسط زمان دسترسی منجر به افزایش متوسط زمان‬
‫دسترسی حافظه شوند‪ .‬فرمول فوق برای زمان دسترسی مؤثر به ما سه پارامتر برای سنجش بهینهسازی حافظه‬
‫نهان داد‪ :‬زمان اصابت‪ ،‬نرخ فقدان و هزینه فقدان‪ .‬با اهداف جدید‪ ،‬پهنای باند و مصرف توان را نیز به لیست اضافه‬
‫میکنیم‪.‬‬

‫‪ -3-5-2-5‬ده روش پیشرفته بهینه سازی کارایی حافظه نهان‬

‫برای بهینه سازی حافظه نهان ده روش ارائه میکنیم‪ .‬این ده روش بهینهسازی پیشرفته حافظه نهان در پنج طبقه‬
‫ردهبندی میشوند‪:‬‬

‫کاهش زمان اصابت‪ :‬حافظههای نهان سطح اول و کوچک‪ ،‬و پیشبینی راه‪ :1‬این دو روش عموماً توان‬ ‫‪.1‬‬
‫مصرفی را نیز کاهش میدهند‪ .‬پیشبینی راه یعنی پیشبینی بلوک بعدی که باید برای دسترسی بعدی‬
‫در حافظه نهان قرار گیرد‪.‬‬
‫افزایش پهنای باند حافظه نهان‪ :‬حافظههای نهان خطلوله شده‪ ،‬حافظههای نهان چند بانکه‪ ،‬و حافظه‪-‬‬ ‫‪.2‬‬
‫های نهان بلوکه نشدنی‪ .‬این تکنیکها تأثیرهای متفاوتی روی توان مصرفی دارند‪.‬‬
‫کاهش هزینه فقدان‪ :‬ابتدا کلمه بحرانی دسترسی شود و از بافرهای نوشتن استفاده شود‪ .‬این روشهای‬ ‫‪.3‬‬
‫بهینه سازی تأثیر کمی روی توان دارند‪.‬‬
‫کاهش نرخ فقدان‪ :‬بهینه سازی کامپایلری‪ .‬هر بهبود در زمان کامپایل مصرف توان را بهبود میبخشد‪.‬‬ ‫‪.4‬‬
‫کاهش هزینه فقدان یا نرخ فقدان با موازات‪ :‬پیشبرداشت سختافزاری و پیشبرداشت کامپایلر‪ .‬این‬ ‫‪.5‬‬
‫روشهای بهینه سازی توان مصرفی را افزایش میدهند زیرا ممکن است دادههایی پیشبرداشت شوند‬
‫که استفاده نشوند‪.‬‬

‫حافظه های نهان نگاشت مستقیم زمان اصابت و همچنین توان مصرفی کمتری دارند زیرا مدارات تشخیص داده‬
‫در حافظه کوچکتر هستند‪ .‬دقت پیشبینی ‪ I-cache‬باالتر از ‪ D-cache‬است‪.‬‬

‫سط‬
‫اولین روش بهینه سازی‪ :‬استفاده از حافظهاهی نهان ساده و کوچک رد ح‪-‬اول هب منظور کاهش زمان اصابت و توان مصرفی‬

‫‪1‬‬
‫‪Way-prediction‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪242‬‬

‫فشار همزمان پالس ساعت سریعتر و محدودیتهای توان‪ ،‬باعث محدود شدن اندازه حافظههای نهان سطح اول‬
‫میشوند‪ .‬بطور مشابه‪ ،‬استفاده از انجمنپذیری کمتر میتواند زمان اصابت و توان مصرفی را کاهش دهد هرچندکه‬
‫حدبهینهای بین این دو پیچیدهتر از اندازه است‪.‬‬

‫مسیر زمانی بحرانی در یک اصابت حافظه نهان‪ ،‬شامل پروسه سه مرحلهای آدرس دادن تگ حافظه با استفاده از‬
‫قسمت اندیس آدرس‪ ،‬مقایسه مقدار تگ خوانده شده با آدرس‪ ،‬و تنظیم مالتیپلکسر برای انتخاب عنصر داده درست‬
‫اگر حافظه نهان از نوع انجمنی مجموعهای باشد‪ ،‬میباشد‪ .‬حافظههای نهان نگاشت‪-‬مستقیم میتوانند چک تگ با‬
‫انتقال داده را بصورت همپوش استفاده کنند که این بطور مؤثری زمان اصابت را کاهش میدهد‪ .‬بنابراین‪ ،‬سطوح‬
‫پایینتر انجمنپذیری باعث کاهش توان مصرفی میشود به خاطر اینکه خطوط حافظه نهان کمتری باید دسترسی‬
‫شوند‪.‬‬

‫هرچندکه مقدار کل حافظه نهان روی‪-‬تراشه در نسل جدید ریزپردازندهها بطور چشمگیری افزایش یافته است‪ ،‬به‬
‫خاطر تأثیر نرخ پالس ساعت نشأت گرفته از اندازه حافظه نهان ‪ ،L1‬اندازه حافظه نهان ‪ L1‬یا به کُندی افزایش‬
‫یافته است یا اصالً زیاد نشده است‪ .‬در پردازندههای اخیر‪ ،‬طراحان انجمنپذیری بیشتر را نسبت به اندازه بیشتر‬
‫انتخاب کردهاند‪ .‬توجه بیشتر روی انجمنپذیری به خاطر امکان حذف نام مستعار آدرس میباشد‪.‬‬

‫یک روش پیشرفتهی تشخیص تأثیر زمان اصابت و مصرف توان استفاده از ابزارهای ‪ CAD‬میباشد‪ .‬مثالً ‪CACTI‬‬
‫برنامهای برای تخمین زمان دسترسی و مصرف انرژی حافظههای نهان میباشد‪ .‬شکل ‪ 15-5‬تأثیر تخمینی روی‬
‫زمان اصابت با تغییر اندازه حافظه نهان و انجمنپذیری را نشان میدهد‪.‬‬
‫زمان دسترسی در میکروثانیه‬

‫اندازه حافظه نهان‬


‫شکل ‪ :15-5‬در حالت کلی زمان دسترسی با افزایش اندازه حافظه نهان و انجمنپذیری افزایش مییابد‪ .‬این دادهها از ‪CACTI‬‬
‫بدست آمده است‪ .‬دادهها بافرض فنآوری ساخت ‪40‬نانومتری‪ ،‬یک بانک حافظه‪ ،‬و بلوکهای ‪64‬بایتی بدست آمدهاند‪.‬‬

‫مثال‪ :7-5‬بافرض حافظه نهان با اندازه ‪32KB‬ی انجمنپذیری ‪-2‬راهه و ‪-4‬راهه و زمان اصابت ‪ 1‬برای حافظه‬
‫نهان ‪-2‬راهه و ‪ 1.4‬برابر برای حافظه نهان ‪-4‬راهه و نرخ فقدان ‪ 0.038‬برای حافظه نهان ‪-2‬راهه و ‪0.037‬‬
‫‪| 243‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫برای حافظه نهان ‪-4‬راهه و هزینه فقدان ‪ 15‬و ‪ 10‬برای این دو حافظه نهان به ترتیب‪ ،‬زمان دسترسی مؤثر برای‬
‫این دو حافظه نهان چقدر است؟‬

‫زمان دسترسی مؤثر ‪-2‬راهه= زمان اصابت‪ +‬نرخ فقدان×هزینه فقدان=‪1.57=15×0.038+1‬‬


‫زمان دسترسی مؤثر ‪-4‬راهه= ‪1.77=10×0.037+1.4‬‬
‫بوضتوح هرچندکه انجمنپذیری بیشتتر بهینه ستازی بدی به نظر میرستد اما به خاطر اینکه دستترستی به حافظه‬
‫نهان در پردازندههای مدرن خطلوله شده است‪ ،‬سنجش تأثیر دقیق روی زمان پالس ساعت مشکل است‪.‬‬

‫مصرف توان نیز در انتخاب اندازه حافظه نهان و انجمنپذیری مورد توجه است‪ .‬این تأثیر در شکل ‪ 16-5‬نشان داده‬
‫شده است‪ .‬برای حافظههای نهان ‪ 128KB‬و ‪256KB‬ی وقتی که از نگاشت مستقیم به انجمنپذیری ‪-2‬راهه‬
‫حرکت میکنیم مصرف توان بطور ناچیز تغییر میکند ولی در سایر انجمنپذیریها تقریباً دو برابر است‪.‬‬
‫انرژی هر خواندن برحسب نانو ژول‬

‫اندازه حافظه نهان‬


‫شکل ‪ :16-5‬مصرف انرژی به ازای هر خواندن وقتیکه اندازه و انجمنپذیری حافظه نهان افزایش مییابد‪ ،‬زیاد میشود‪ .‬برای مدل کردن‬
‫این پارامترها نیز از ‪ CACTI‬استفاده شده است‪ .‬هزینه باالی حافظههای نهان با انجمنپذیری ‪-8‬راهه به خاطر هزینه خواندن ‪ 8‬تگ و‬
‫داده مرتبط بصورت موازی میباشد‪.‬‬

‫در طرحهای اخیر‪ ،‬سه فاکتور دیگر وجود دارد که منجر به استفاده از انجمنپذیری بیشتر در حافظه نهان سطح اول‬
‫میشود‪ .‬اوالً‪ ،‬پردازندههای زیادی برای دسترسی به حافظه نهان از دو پالس ساعت استفاده میکنند و بنابراین زمان‬
‫اصابت طوالنیتر زیاد بحرانی نیست‪ .‬ثانیاً‪ ،‬برای نگه داشتن ‪ TLB‬خارج از مسیر بحرانی ( تأخیری که از افزایش‬
‫انجمنپذیری بیشتر است)‪ ،‬اغلب همه حافظههای نهان ‪ L1‬باید بطور مجازی اندیس گذاری شوند‪ .‬این اندازه حافظه‬
‫نهان را به اندازه حافظه نهان ضرب در انجمنپذیری محدود میکند زیرا فقط بیتهای داخل صفحه برای اندیس‬
‫استفاده میشوند‪ .‬روشهای دیگری برای مسأله اندیسگذاری حافظه نهان قبل از خاتمه ترجمه آدرس وجود دارد‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪244‬‬

‫اما افزایش انجمن پذیری منافع دیگری دارد که خیلی جالب توجه است‪ .‬سوماً‪ ،‬با معرفی چندنخی‪ ،‬فقدانهای‬
‫تصادمی زیاد میشوند که باعث میشوند انجمنپذیری بیشتر‪ ،‬جذابتر شود‪.‬‬

‫بهینهسازی دوم‪ :‬پیشبینی راه ربای کاهش زمان اصابت‬

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

‫به بلوک یک حافظه نهان بیتهای پیشبینی کننده اضافه میشوند‪ .‬بیتها انتخاب میکنند که کدام یک از بلوکها‬
‫برای دسترسی حافظه نهان بعدی تالش میکنند‪ .‬اگر پیشبینی درست باشد‪ ،‬تأخیر دسترسی حافظه نهان‪ 1‬زمان‬
‫اصابت سریعی است‪ .‬در غیراینصورت برای بلوک دیگری سعی میکند‪ ،‬پیشبینیکننده راه را تغییر میدهد و تأخیری‬
‫با یک سیکل ساعت اضافی دارد‪ .‬شبیهسازیها نشان میدهند که دقت پیشبینی مجموعه بیشتر از ‪ ٪90‬برای‬
‫حافظه نهان انجمنی مجموعهای دو‪-‬راهه و ‪ ٪80‬برای حافظه نهان انجمنی مجموعهای چهار‪-‬راهه میباشد و‬
‫دقت ‪ I-cache‬بیشتر از ‪ D-cache‬است‪ .‬پیش بینی راه میانگین زمان دسترسی کمتری را برای حافظه نهان‬
‫انجمنی مجموعهای دو‪-‬راهه نتیجه میدهد اگر حافظه نهان حداقل ‪٪10‬سریعتر باشد که کامالً شدنی است‪ .‬پیش‪-‬‬
‫بینی راه ابتدا در ‪ MIPS R10000‬در اواسط ‪ 1990‬استفاده شد‪ .‬این روش در پردازندههای با انجمنپذیری‬
‫مجموعهای دو‪-‬راهه رایج است و در ‪ ARM Cortex-A8‬برای حافظههای نهان انجمنپذیری مجموعهای ‪-4‬‬
‫راهه استفاده شد‪.‬‬

‫یک شکل توسعه یافته از پیشبینی راه میتواند برای کاهش توان مصرفی با استفاده از بیتهای پیشبینی راه برای‬
‫تصمیمگیری اینکه کدام بلوک حافظه نهان واقعاً دسترسی میشود استفاده شود (بیتهای پیشبینی راه بیتهای‬
‫آدرس اضافی هستند)؛ این روش که انتخاب راه‪ 2‬نامیده میشود‪ ،‬وقتیکه پیشبینی راه صحیح است در مصرف توان‬
‫صرفهجویی میکند اما در پیشبینی غلط زمان چشمگیری اضافه میشود چون دسترسی‪ ،‬باید تکرار شود (هم‬
‫تطابق تگ و انتخاب)‪ .‬این بهینهسازی فقط در پردازندههای با توان مصرفی کم میتواند مورد توجه واقع شود‪.‬‬
‫‪ )1990( Inoue, Ishihara, Murakami‬تخمین زدند که استفاده از انتخاب راه با یک حافظه نهان انجمن‪-‬‬
‫پذیری مجموعهای ‪-4‬راهه میانگین زمان دسترسی را برای ‪ 1.04 ،I-cache‬برابر و برای ‪1.13 ،D-cache‬‬
‫برابر روی برنامههای محک ‪ SPEC95‬افزایش میدهد‪ ،‬اما میانگین توان مصرفی منتج در حافظه نهان انجمنی‬

‫‪1‬‬
‫‪Cache access latency‬‬
‫‪2‬‬
‫‪Way selection‬‬
‫‪| 245‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫مجموعهای ‪-4‬راهه برای ‪ 0.28 ،I-Cache‬و ‪ 0.35 ،D-cache‬میباشد‪ .‬یک عیب عمده برای انتخاب راه این‬
‫است که خطلوله کردن دسترسی حافظه نهان را مشکل میکند‪.‬‬

‫مثال ‪ :8-5‬فرض کنید که دسترسی به ‪ D-cache‬نصف دسترسی به ‪ I-cache‬باشد و ‪ I-cache‬و ‪D-‬‬


‫‪ cache‬به ترتیب ‪ ٪25‬و ‪ ٪15‬توان مصرفی پردازنده انجمنی مجموعهای ‪-4‬راهه معمولی را مصرف کنند‪ .‬براساس‬
‫مطالب فوق تشخیص دهید که آیا انتخاب راه کارایی به ازای هر وات را افزایش میدهد؟‬
‫پاسخ‪ :‬برای ‪ I-cache‬توان صرفهجویی شده ‪ 25%×0.28=0.07‬و برای ‪،D-cache‬‬
‫‪ 15%×0.35=0.05‬کل توان میباشد یعنی کل صرفهجویی ‪ 0.12‬است‪ .‬نگارش پیشبینی راه نیازمند ‪0.88‬‬
‫نیاز توانِ حافظه نهان استاندارد ‪-4‬راهه است‪ .‬افزایش زمان دسترسی حافظه نهان برابر با افزایش میانگین زمان‬
‫دسترسی ‪ I-cache‬و نصف افزایش زمان دسترسی ‪ D-cache‬است یعنی ‪ 1.04+0.5×0.13=1.11‬زمان‬
‫بیشتر‪ .‬این نتیجه یعنی انتخاب راه ‪0.90‬م کاراییِ یک حافظه نهان استاندارد ‪-4‬راهه دارد‪ .‬بنابراین‪ ،‬انتخاب راه‬
‫کارایی در ژول را به کُندی افزایش میدهد و برابر است با نرخ ‪ .0.90/0.88=1.02‬این بهینه سازی زمانیکه‬
‫توان نسبت به کارایی مهمتر باشد استفاده میشود‪.‬‬

‫بهینهسازی سوم‪ :‬دسترسی حافظه نهان خطلوله شده ربای افزایش پهنای باند حافظه نهان‬

‫این بهینهسازی خطلوله کردن دسترسی حافظه نهان میباشد بطوریکه تأخیر مؤثرِ اصابت یک حافظه نهان سطح‪-‬‬
‫اول بتواند چند پالس ساعت باشد‪ ،‬که باعث زمان پالس ساعت سریع‪ ،‬ایجاد پهنای باند باال اما اصابت کُند میشود‪.‬‬
‫به عنوان مثال‪ ،‬خط لوله برای دسترسی حافظه نهان دستورالعمل برای پردازنده پنتیوم اینتل در اواسط ‪ 1990‬یک‬
‫پالس ساعت میگرفت‪ ،‬برای پنتیوم پرو تا پنتیوم ‪ III‬در اواسط ‪ 1990‬تا ‪ 2000‬دو پالس ساعت میگرفت و برای‬
‫پنتیوم ‪ 4‬که در سال ‪ 2000‬قابل دسترس شد و ‪ Intel core i7‬جاری چهار پالس ساعت میگیرد‪ .‬این تغییر تعداد‬
‫مراحل خطلوله را افزایش میدهد و منجر به هزینه بیشتری در پیشبینیهای غلط پرش و پالسهای بیشتری بین‬
‫انتشار ‪ Load‬و استفاده از داده میشود‪ ،‬اما استفاده از درجه بیشتری از انجمنپذیری را سادهتر میکند‪.‬‬

‫بهینهسازی چهارم‪ :‬حافظهاهی نهان بلوکه نشدنی هب منظور افزایش پهنای باند حافظه نهان‬

‫برای کامپیوترهای خطلوله شده که اجازه اجرای خارج از ترتیب‪( 1‬فصل ‪ )6‬را میدهند‪ ،‬پردازنده نیازی به توقف‬
‫روی یک فقدان حافظه نهان داده ندارد‪ .‬به عنوان مثال‪ ،‬پردازنده میتواند برداشت دستورات را از حافظه نهان‬
‫دستورالعمل ادامه دهد در حالیکه منتظر برای حافظه نهان داده است تا داده مفقود را برگرداند‪ .‬یک حافظه نهان‬
‫بلوکه نشدنی یا حافظه نهان آزاد‪-‬از بازداشت‪ 2‬از پتانسیل مزایای چنین شماتیکی با مجاز کردن حافظه نهان داده‬
‫بطوریکه ادامه به تهیه اصابت حافظه نهان در طول فقدان نماید استفاده میکند‪ .‬این بهینهسازی " اصابت تحت‬
‫فقدان" هزینه فقدان مؤثر را با مفید بودن در طول یک فقدان بجای رد درخواستهای پردازنده‪ ،‬کاهش میدهد‪.‬‬

‫‪1‬‬
‫‪Out-Of-Order execute‬‬
‫‪2‬‬
‫‪Lockup-free‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪246‬‬

‫یک انتخاب م اهرانه و پیچیده این است که حافظه نهان ممکن است هزینه فقدان را هنوز هم کاهش دهد اگر بتواند‬
‫چندین فقدان را همپوش کند‪ :‬بهینهسازی "اصابت تحت چندین فقدان" یا " فقدان تحت فقدان"‪ .‬انتخاب دوم‬
‫فقط زمانی مفید است که سیستم حافظه بتواند چندین فقدان را سرویس دهد؛ بسیاری از پردازندههای با کارایی‪-‬‬
‫باال (مثل ‪ )Intel Core i7‬هر دو را پشتیبانی میکنند در حالیکه پردازندههای با کیفیت کمتر مثل ‪ARM A8‬‬
‫پشتیبانی بلوکه نشدن را فقط در ‪ L2‬بطور محدود پشتیبانی میکنند‪.‬‬

‫برای آنالیز تأثیر حافظههای نهان بلوکه نشدنی در کاهش هزینه فقدان‪ Farkas ،‬و ‪ )1994( Jouppi‬مطالعهای‬
‫انجام دادند‪ .‬در این مطالعه فرض کردند حافظه نهان ‪8KB‬ی با هزینه فقدان ‪ 14‬پالس باشد‪ .‬وقتی اصابت تحت‬
‫فقدان را مجاز دانستند کاهش هزینه فقدان مؤثر ‪٪20‬ی روی برنامههای محک ‪ SPECINT92‬و ‪٪30‬ی روی‬
‫برنامههای محک ‪ SPECFP92‬مشاهده کردند‪.‬‬

‫‪ )2011( Li, Chen, Brockman, Jouppi‬اخیراً این مطالعه را بروز کردهاند‪ .‬در این مطالعه از یک حافظه‬
‫نهان چندسطحه‪ ،‬با فرضهای مدرن بیشتری درمورد هزینههای فقدان و برنامههای محک بزرگتر استفاده کردند‪.‬‬
‫مطالعه روی یک مدل براساس یک هسته از ‪ Intel i7‬که برنامهمحک ‪ SPEC2006‬را اجرا میکرد انجام شد‪.‬‬
‫شکل ‪17.5‬کاهش در تأخیر دسترسی حافظه نهان داده وقتی اجازه ‪ 64 ،2، 1‬اصابت تحت یک فقدان داده شد را‬
‫نشان میدهد‪ .‬حافظههای نهان بزرگتر و اضافه شدن حافظه نهان ‪ L3‬مزایا را کاهش داده است‪ .‬برنامه محک‬
‫‪ SPECINT2006‬میانگین کاهش تأخیر حافظه نهان را حدود ‪ 9%‬و برنامه محک ‪ SPECFP2006‬آنرا حدود‬
‫‪ 12.5%‬نشان میدهد‪.‬‬

‫مثال ‪ :9-5‬کدامیک برای برنامههای ممیز‪-‬شناور مهمتر است‪ :‬انجمنپذیری مجموعهای دو‪-‬راهه یا اصابت تحت‬
‫فقدان برای حافظههای نهان داده اولیه؟ در مورد برنامههای صحیح چه؟ مفروضات زیر را در مورد نرخهای فقدان‬
‫برای حافظههای نهان داده ‪32KB‬ی در نظر بگیرید‪ :‬برای برنامههای ممیز‪-‬شناور ‪ 5.2%‬با یک حافظه نهان‬
‫نگاشت مستقیم و ‪ 4.9%‬برای یک حافظه نهان انجمنی مجموعهای دو‪-‬راهه‪ ،‬برای برنامههای صحیح ‪ 3.5%‬با‬
‫یک حافظه نهان نگاشت مستقیم و ‪ 3.2%‬با یک حافظه نهان انجمنی مجموعهای دو‪-‬راهه‪ .‬فرض کنید هزینه‬
‫فقدان به ‪ 10 ،L2‬سیکل و فقدانها و هزینههای ‪ L2‬مشابه باشد‪.‬‬
‫پاسخ‪ :‬برای برنامههای ممیز شناور‪ ،‬میانگین توقف حافظه برابر است با‪:‬‬
‫‪Miss rateDM×Miss penalty=5.2%×10=0.52‬‬
‫‪Miss rate2-way×Miss penalty=4.9%×10=0.49‬‬
‫تأخیر دسترسی حافظه نهان (شامل توقفها) برای انجمنپذیری دو‪-‬راهه ‪ 0.49/0.52=94%‬حافظه نهان‬
‫نگاشت مستقیم است‪ .‬زیر نویس شکل ‪ 17-5‬میگوید اصابت تحت یک فقدان میانگین تأخیر دسترسی حافظه‬
‫نهان داده برای برنامههای ممیز شناور ‪ 87.5%‬یک حافظه نهان بلوکه شدنی است‪ .‬بنابراین‪ ،‬برای برنامههای‬
‫ممیز شناور‪ ،‬حافظه نهان داده نگاشت مستقیم که از یک اصابت تحت یک فقدان پشتیبانی میکند کارایی بهتری‬
‫از یک حافظه نهان انجمنی مجموعهای دو راهه که روی فقدان بلوکه میشود دارد‪.‬‬
‫برای برنامههای صحیح‪ ،‬محاسبه برابر است با‪:‬‬
‫‪| 247‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫‪Miss rateDM×Miss penalty=3.5%×10=0.35‬‬


‫‪Miss rate2-way×Miss penalty=3.2%×10=0.32‬‬
‫بنابراین تأخیر دسترسی حافظه نهان داده یک حافظه نهان مجموعهای دو‪-‬راهه ‪ 0.32/0.35=91%‬یک حافظه‬
‫نهان نگاشت مستقیم است‪ ،‬درحالیکه کاهش در تأخیر دسترسی وقتی که یک اصابت تحت یک فقدان اجازه داده‬
‫میشود ‪ 9%‬است‪ ،‬دو انتخاب را مشابه میکند‪.‬‬
‫مشکل واقعی با ارزیابی کارایی حافظههای نهان بلوکه نشدنی این است که یک فقدان حافظه نهان لزوماً پردازنده‬
‫را متوقف نمیکند‪ .‬در این حالت قضاوت درباره اثر هر فقدان تگ و بنابراین محاسبه میانگین زمان دسترسی مشکل‬
‫است‪ .‬هزینه مؤثر فقدان مجموع فقدانها نیست بلکه زمان غیرهمپوش است که پردازنده متوقف است‪ .‬مزیت‬
‫حافظههای نهان بلوکه نشدنی پیچیده است زیرا وابسته به هزینه فقدان وقتیکه چندین فقدان وجود دارد‪ ،‬الگوی‬
‫مراجعه حافظه‪ ،‬و چه تعداد دستورات پردازنده میتواند با عقب افتادن یک فقدان انجام دهد میباشد‪.‬‬

‫شکل ‪ :17-5‬اثربخشی یک حافظه نهان بلوکه نشدنی با مجاز شمردن ‪ ،2 ،1‬یا ‪ 64‬اصابت تحت یک فقدان حافظه نهان با ‪ 9‬عدد برنامه‬
‫محک ‪( SPECINT‬در سمت چپ) و ‪ 9‬عدد برنامه محک ‪( SPECFP‬در سمت راست)‪ .‬سیستم حافظه داده بعد از اینکه اینتل ‪ i7‬شامل‬
‫یک حافظه نهان ‪ L1‬و ‪32KB‬ی با تأخیر دسترسی ‪ 4‬پالس باشد‪ ،‬مدل شده است‪ .‬حافظه نهان ‪ L2‬تأخیر دسترسی ‪ 10‬پالس ساعت‬
‫دارد و ‪ 256KB‬است‪ L3 .‬دارای تأخیر دسترسی ‪ 36‬پالس است و ‪2MB‬ی است‪ .‬همه حافظههای نهان انجمنی مجموعهای ‪-8‬راهه‬
‫هستند و اندازه بلوک ‪ 64‬بایتی دارند‪ .‬با مجاز شمردن یک اصابت تحت فقدان هزینه فقدان ‪ 9%‬برای برنامههای محک صحیح و‬
‫‪ ٪12.5‬برای ممیز شناور کاهش مییابد‪ .‬با مجاز شمردن اصابت دوم این نتایج به ‪ ٪10‬و ‪ ٪16‬بهبود مییابند و مجاز شمردن ‪64‬‬
‫اصابت بهبود را کمی اضافه میکند‪.‬‬

‫در کل‪ ،‬پردازندههای خارج‪-‬از‪-‬ترتیب قادر به مخفیکردن هزینه فقدان از یک فقدان حافظه نهان داده ‪ L1‬که در‬
‫حافظه نهان ‪ L2‬اصابت دارد میباشند ولی قادر به مخفی کردن کسر قابل توجهی از فقدان یک حافظه نهان سطح‬
‫پایینتر نیستند‪ .‬تصمیمگیری در مورد اینکه چه تعداد از فقدانهای عقب افتاده پشتیبانی میشود وابسته به چندین‬
‫فاکتور است‪:‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪248‬‬

‫محلیت مکانی و زمانی در رشته فقدانها‪ ،‬که تعیین میکند چه موقع یک فقدان میتواند یک دسترسی‬ ‫•‬
‫جدید به حافظه نهان سطح پایینتر یا به حافظه وارد کند‪.‬‬
‫پهنای باند حافظه یا حافظه نهان پاسخ دهنده‪.‬‬ ‫•‬
‫برای اجازه دادن به فقدانهای عقبافتاده بیشتر در پایینترین سطح حافظه نهان (که زمان فقدان آن از‬ ‫•‬
‫بقیه بیشتر است) نیازمند پشتیبانی تعداد زیادی فقدان در سطح باالتر میباشد‪ ،‬زیرا فقدان باید در حافظه‬
‫نهان سطح باالتر شروع شود‪.‬‬
‫تأخیر سیستم حافظه‬ ‫•‬

‫مثال‪ 10-5‬این ایده کلیدی را نشان میدهد‪.‬‬

‫مثال ‪ :10-5‬فرض کنید زمان دسترسی حافظه اصلی ‪ 36ns‬باشد و سیستم حافظه قادر به تحمل نرخ انتقال‬
‫‪ 16GB/sec‬باشد‪ .‬اگر اندازه بلوک ‪ 64‬بایت باشد‪ ،‬با فرض اینکه بتوانیم حداکثر پهنای باند داده شده رشته‬
‫درخواست را حفظ کنیم و دسترسیها هیچگاه تداخل نکنند حداکثر تعداد فقدانهای عقب افتادهای که نیاز به‬
‫پشتیبانی داریم چقدر است؟ اگر احتمال تصادم مراجعه با یکی از چهار مراجعه قبلی ‪ 50%‬باشد‪ ،‬و فرض کنیم که‬
‫یک دسترسی باید صبر کند تا زمانیکه دسترسی پیشین تمام شود‪ ،‬حداکثر تعداد مراجعات عقب افتاده را تخمین‬
‫بزنید‪ .‬برای سادگی زمان بین فقدانها را نادیده بگیرید‪.‬‬
‫پاسخ‪ :‬در حالت اول‪ ،‬فرض کنید که میتوانیم پهنای باند حداکثر را نگه داریم‪ ،‬سیستم حافظه میتواند‬
‫‪ (16×10)9/64=250‬میلیون مراجعه در ثانیه را پشتیبانی کند‪ .‬چون هر مراجعه ‪ 36ns‬میگیرد‪ ،‬میتوانیم‬
‫‪ 250×106×36×10-9=9‬مراجعه را پشتیبانی کنیم‪ .‬اگر احتمال تصادم بیشتر از صفر باشد‪ ،‬آنگاه نیازمند مراجعات‬
‫عقب افتاده بیشتری هستیم زیرا نمیتوانیم کار را با آن مراجعات شروع کنیم؛ سیستم حافظه نیازمند مراجعات‬
‫مستقل بیشتر است نه کمتر! برای تخمین این‪ ،‬میتوانیم فرض کنیم که نصف مراجعات حافظه نیاز به انتشار به‬
‫حافظه ندارند‪ .‬این به این معنی است که باید دو برابر مراجعات عقب افتاده یعنی ‪ 18‬تا را پشتیبانی کنیم‪.‬‬

‫در مطالعه ‪ Li, Chen, Brockman, Jouppi‬آنها یافتند که کاهش در ‪ CPI‬برای برنامههای صحیح حدود‬
‫‪ 7%‬برای یک اصابت تحت فقدان و حدود ‪ 12.5%‬برای ‪ 64‬اصابت تحت فقدان میباشد‪ .‬برای برنامههای ممیز‬
‫شناور‪ ،‬کاهش ‪ 12.5%‬برای یک اصابت تحت فقدان و ‪ 17.5%‬برای ‪ 64‬اصابت تحت فقدان میباشد که با‬
‫شکل ‪ 17-5‬تطابق دارد‪.‬‬

‫پنج‬
‫بهینه سازی م‪ :‬حافظهاهی نهان چندبانکه ربای افزایش پهنای باند حافظه نهان‬

‫بجای اینکه با یک بلوک یکپارچه حافظه نهان کار کنیم‪ ،‬میتوانیم آنرا به چند بانک مستقل تقسیم کنیم که‬
‫میتواند دسترسیهای همزمان را پشتیبانی کند‪ .‬بانکها برای بهبود کارایی حافظه اصلی استفاده میشوند و امروزه‬
‫در داخل تراشههای ‪ DRAM‬مدرن مثل حافظههای نهان استفاده میشوند (بخش بعد)‪Arm Cortex-A8 .‬‬
‫‪| 249‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫یک تا چهار بانک را در حافظه نهان ‪ L2‬پشتیبانی میکند؛ ‪ Intel Core i7‬چهار بانک در ‪ L1‬دارد (تا بتواند تا ‪2‬‬
‫دسترسی حافظه در هر پالس ساعت را پشتیبانی کند) ‪ ،‬و ‪ L2‬هشت بانک دارد‪.‬‬

‫وقتیکه دسترسیها بطور طبیعی خودشان را در طول بانکها توزیع کنند‪ ،‬بانککردن به بهترین صورت کار میکند‪،‬‬
‫بنابراین آدرسهای بانکها به رفتار سیستم حافظه تأثیر میگذارند‪ .‬یک نگاشت ساده که بخوبی کار میکند‪ ،‬توزیع‬
‫آدرسهای بلوک بترتیب در طول بانکها میباشد که به آن برگی کردن ترتیبی میگویند‪ .‬به عنوان مثال‪ ،‬اگر چهار‬
‫بانک داشته باشیم‪ ،‬بانک صفر همه بلوکهایی را دارد که باقیمانده تقسیم آدرس بر ‪ 4‬صفر باشد و بانک ‪ 1‬شامل‬
‫بلوکهایی است که باقیمانده تقسیم آدرس بر ‪ 4‬یک باشد و ‪ ....‬شکل ‪ 18-5‬این برگی کردن را نشان میدهد‪.‬‬
‫چندین بانک راهی برای کاهش توان مصرفی در حافظه نهان و ‪ DRAM‬است‪.‬‬
‫آدرس‬ ‫آدرس‬ ‫آدرس‬ ‫آدرس‬
‫بلوک‬ ‫بلوک‬ ‫بانک ‪ 2‬بلوک‬ ‫بلوک‬
‫بانک ‪0‬‬ ‫بانک ‪1‬‬ ‫بانک‪3‬‬

‫شکل ‪ :18-5‬بانکهای حافظه نهان برگی‪-‬شده ‪-4‬راهه با استفاده از آدرسدهی بلوک‪ .‬فرض کنید هر بلوک ‪ 64‬بایت است‪ ،‬هر کدام‬
‫از این آدرسها باید در ‪ 64‬ضرب شوند تا آدرس بایت بدست آید‪.‬‬

‫شش‬
‫‪1‬‬
‫بهینهسازی م‪ :‬ابتدا کلمه حبرانی و شروع مجدد اولیه ربای کاهش هزینه فقدا ن‬

‫این روش بر اساس این مشاهده است که پردازنده بطور معمولی فقط نیازمند یک کلمه از هر بلوک در یک زمان‬
‫است‪ .‬این راهبرد‪ 2‬صبور نیست‪ :‬برای بار شدن کل بلوک قبل از ارسال کلمه درخواست شده و شروع مجدد پردازنده‪،‬‬
‫منتظر نمیماند‪ .‬در اینجا دو راهبرد خاص وجود دارد‪:‬‬

‫• کلمه بحرانی اول‪ :‬ابتدا کلمه مفقود شده را از حافظه درخواست میدهد و آنرا به محض رسیدن به پردازنده‬
‫میفرستد؛ اجازه میدهد تا پردازنده اجرایش را ادامه دهد درحالیکه بقیه کلمات بلوک پر میشوند‪.‬‬
‫• شروع مجدد‪ :‬کلمات را به ترتیب نرمال برداشت میکند و به محض اینکه کلمه درخواست شدهی بلوک رسید‬
‫آنرا به پردازنده میفرستد و اجازه میدهد پردازنده اجرایش تمام شود‪.‬‬

‫‪1‬‬
‫‪Critical word first and early restart to reduce miss penalty‬‬
‫‪2‬‬
‫‪Strategy‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪250‬‬

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

‫هف‬
‫بهینهسازی تم‪ :‬ادغام بافر نوشتن هب منظور کاهش هزینه فقدا ن‬

‫حافظههای نهان ‪ WT‬روی بافرهای نوشتن تکیه دارند‪ ،‬چون همه ذخیرهسازیها باید به سطح پایینتر بعدی از‬
‫سلسله مراتب ارسال شوند‪ .‬حتی حافظههای نهان ‪ WB‬وقتیکه یک بلوک جایگزین میشود‪ ،‬از یک بافر ساده‬
‫استفاده میکنند‪ .‬اگر بافر نوشتن خالی باشد‪ ،‬داده و آدرس کامل در بافر نوشته میشوند‪ ،‬و نوشتن از دید پردازنده‬
‫تمام میشود‪ ،‬پردازنده به کار ادامه میدهد درحالیکه بافرِ نوشتن برای نوشتن کلمه در حافظه آماده میشود‪ .‬اگر بافر‬
‫شامل سایر بلوکهای اصالحشده باشد‪ ،‬آدرسها برای اینکه مشخص شود آیا آدرس داده جدید با آدرس یک ورودی‬
‫بافر نوشتن معتبر تطابق دارد‪ ،‬چک میشوند‪ .‬در صورت وجود‪ ،‬داده با ورودی ترکیب میشود‪ .‬نام این بهینهسازی‬
‫ادغام نوشتن میباشد‪ Intel Core i7 .‬و بسیاری از پردازندههای دیگر از ادغام نوشتن استفاده میکنند‪.‬‬

‫اگر بافر پر باشد و تطابق آدرسی وجود نداشته باشد‪ ،‬حافظه نهان (و پردازنده) باید تا زمانیکه بافر یک ورودی خالی‬
‫پیدا کند صبر کنند‪ .‬این بهینهسازی‪ ،‬حافظه را بطور مؤثرتری استفاده میکند زیرا چندین نوشتن از نوشتن یک کلمه‬
‫در هر زمان سریعتر است‪ Skardon .‬و ‪ )1997( Clark‬به این نتیجه رسیدند که حتی ادغام بافر نوشتن چهار‪-‬‬
‫ورودی توقفهایی تولید میکنند که منجر به ‪ ٪5‬تا ‪ ٪10‬سقوط کارایی میشوند‪.‬‬

‫این بهینهسازی حتی اگر بافر نوشتن پر باشد‪ ،‬توقفها را کاهش میدهد‪ .‬شکل ‪ 19-5‬یک بافر نوشتن بدون و با‬
‫ادغام نوشتن را نشان میدهد‪ .‬فرض کنید که در بافر نوشتن ‪ 4‬ورودی داریم و هر ورودی میتواند چهار کلمه ‪-64‬‬
‫بیتی را ذخیره کند‪ .‬بدون این بهینهسازی‪ ،‬چهار ذخیرهسازی به آدرسهای ترتیبی‪ ،‬بافر را با یک کلمه در هر ورودی‬
‫پر میکند‪ .‬این چهار کلمه وقتیکه بدرستی ادغام شوند در یک ورودیِ بافر نوشتن قرار میگیرند‪.‬‬
‫آدرسهای نوشتن‬ ‫‪V‬‬ ‫‪V‬‬ ‫‪V‬‬
‫‪V‬‬
‫‪100‬‬ ‫‪1‬‬ ‫]‪Mem[100‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪108‬‬ ‫‪1‬‬ ‫]‪Mem[108‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪116‬‬ ‫‪1‬‬ ‫]‪Mem[116‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪124‬‬ ‫‪1‬‬ ‫]‪Mem[124‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫آدرسهای نوشتن‬ ‫‪V‬‬ ‫‪V‬‬ ‫‪V‬‬ ‫‪V‬‬
‫‪100‬‬ ‫‪1‬‬ ‫]‪Mem[100‬‬ ‫‪1‬‬ ‫]‪Mem[108‬‬ ‫‪1‬‬ ‫]‪Mem[116‬‬ ‫‪1‬‬ ‫]‪Mem[124‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫شکل ‪ :19-5‬بافر نوشتن باالیی از ادغام استفاده نمیکند درحالیکه پایینی استفاده میکند‪ .‬در صورت استفاده از ادغام نوشتن‪ ،‬چهار‬
‫نوشتن در یک ورودی بافر قرار میگیرد و بدون آن بافر پر میشود در حالیکه سه چهارم آن خالی است‪ .‬بافر چهار ورودی دارد‪ ،‬و هر‬
‫ورودی چهار کلمه ‪-64‬بیتی نگه می دارد‪ .‬آدرس هر ورودی در سمت چپ است با یک بیت معتبر (‪ )V‬که تعیین میکند چه موقع ‪8‬‬
‫بایت ترتیبی بعدی در ورودی اشغال شده است‪( .‬بدون ادغام نوشتن‪ ،‬کلمات سمت راست در قسمت باالی شکل فقط برای دستوراتی‬
‫استفاده میشوند که چندین کلمه را در زمان مشابه مینویسند)‪.‬‬
‫‪| 251‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫نکته اینکه ثباتهای دستگاه ورودی‪-‬خروجی اغلب به فضای آدرس فیزیکی بار میشوند‪ .‬این آدرسهای‬
‫ورودی‪/‬خروجی نمیتوانند اجازه ادغام نوشتن را بدهند زیرا ثباتهای ورودی‪/‬خروجی مجزا ممکن نیست بتوانند‬
‫شبیه آرایه ای از کلمات در حافظه عمل کنند‪ .‬به عنوان مثال‪ ،‬آنها ممکن است برای هر ثبات ورودی‪/‬خروجی یک‬
‫آدرس و کلمه داده نیاز داشته باشند بجای استفاده از نوشتنهای چندتایی که یک آدرس را استفاده میکنند‪ .‬این‬
‫اثرات جانبی با صفحات عالمتداری که نیازمند بافرهای ادغام شونده نیستند در حافظههای نهان پیادهسازی‬
‫میشوند‪.‬‬

‫هش‬
‫بهینهسازی تم‪ :‬بهینهسازی کامپایلری ربای کاهش رنخ فقدا ن‬

‫تکنیکهایی که تاکنون معرفی شدند نیازمند تغییر در سختافزارند‪ .‬این تکنیک بدون نیاز به هیچگونه تغییر سخت‪-‬‬
‫افزاری نرخ فقدان را کاهش میدهد‪.‬‬

‫این کاهش جادویی از بهینهسازی نرم افزاری ایجاد میشود‪ .‬افزایش شکاف کارایی بین پردازندهها و حافظه اصلی‪،‬‬
‫نویسندگان کامپایلرها را تشویق کرده است تا سلسله مراتب حافظه را موشکافی کنند و ببینند که آیا در زمان کامپایل‬
‫میتوان کارایی را بهبود داد‪ .‬مجدداً‪ ،‬تحقیقات به بهبود فقدانهای دستور و بهبود فقدانهای داده تقسیم شد‪.‬‬
‫بهینهسازیهای زیر در اکثر کامپایلرهای مدرن یافت میشوند‪.‬‬

‫تعویض حلقه‬

‫بعضی برنامهها‪ ،‬حلقههای تودرتو دارند که به دادهها در حافظه به صورت غیر ترتیبی دسترسی دارند‪ .‬با تعویض‬
‫ترتیب حلقههای تودرتو میتوان باعث شد تا کد به دادهها به ترتیب ذخیرهشده در حافظه دسترسی پیدا کند‪ .‬فرض‬
‫کنید که آرایهها در حافظه نهان جا نشوند‪ ،‬این تکنیک فقدانها را با بهبود محلیت مکانی کاهش میدهد؛ مرتب‬
‫سازی مجدد استفاده از داده را در یک بلوک حافظه نهان قبل از اینکه از حافظه نهان خارج شود حداکثر میکند‪ .‬به‬
‫عنوان مثال اگر ‪ x‬یک آرایه دو بعدی با اندازه ]‪ [5000,100‬باشد و بصورت سطری ذخیره شده باشد یعنی ]‪x[i,j‬‬
‫و ]‪ x[i,j+1‬همسایه باشند‪ ،‬آنگاه دو کد زیر چگونگی بهینهسازی دسترسیها را نشان میدهد‪.‬‬

‫‪*/‬قبل از بهینه سازی*‪/‬‬


‫)‪for(j=0;j<100;j=j+1‬‬
‫)‪for(i=0;i<5000;i=i+1‬‬
‫;]‪x[i][j]=2*x[i][j‬‬
‫‪ */‬بعد از بهینه سازی*‪/‬‬
‫)‪for(i=0;i<5000;i=i+1‬‬
‫)‪for(j=0;j<100;j=j+1‬‬
‫;]‪x[i][j]=2*x[i][j‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪252‬‬

‫کد اصلی از روی حافظه با گامهای صد کلمه پرش میکند‪ ،‬در حالیکه نگارش اصالح شده به همه کلمهها در هر‬
‫بلوک حافظه نهان دسترسی پیدا میکند قبل از اینکه به بلوک بعدی برود‪ .‬این بهینهسازی کارایی حافظه نهان را‬
‫بدون تأثیر بر تعداد دستورات اجرا شده بهبود میدهد‪.‬‬

‫بلوک بندی‬
‫این بهینهسازی برای کاهش فقدانها محلیت زمانی را بهبود میدهد‪ .‬مجدداً با چند آرایه کار میکنیم‪ ،‬که بعضی از‬
‫آنها به روش سطری و بعضی به روش ستونی دسترسی میشوند‪ .‬در این حالت ذخیره سطر به سطر (سطری) یا‬
‫ستون به ستون (ستونی) مشکل را حل نمیکند زیرا هردوی سطرها و ستونها در هر تکرار حلقه استفاده میشوند‪.‬‬
‫در چنین دسترسیهایی به این معنی است که میزان زیادی از فضا به هدر میرود‪.‬‬
‫به جای عمل کردن روی کل سطرها یا ستونهای یک آرایه‪ ،‬الگوریتمهای بلوک بندی شده روی زیرماتریسها یا‬
‫بلوکها کار میکنند‪ .‬هدف حداکثر کردن دسترسی به دادههای بار شده به حافظه نهان است قبل از اینکه دادهها‬
‫جایگزین شوند‪ .‬کد زیر‪ ،‬که ضرب ماتریسی را انجام میدهد‪ ،‬به توضیح بهینهسازی کمک میکند‪.‬‬
‫‪ */‬قبل از بلوک بندی*‪/‬‬
‫)‪for(i=0;i<N;i=i+1‬‬
‫)‪for(j=0;j<N;j=j+1‬‬
‫;‪{r=0‬‬
‫)‪for(k=0;k<N;k=k+1‬‬
‫;]‪r=r+y[i][k]*z[k][j‬‬
‫;‪x[i][j]=r‬‬
‫;}‬
‫دو حلقه داخلیتر همه ‪ N×N‬عنصرِ ‪ z‬را میخوانند‪ N ،‬عنصر مشابه در یک سطر ‪ y‬را مکرر میخواند‪ ،‬و یک سطر‬
‫از ‪ N‬عنصرِ ‪ x‬را مینویسد‪ .‬شکل‪ 20-5‬تصویری لحظهای از دسترسیها به سه آرایه را نشان میدهد‪ .‬سایه تیره‬
‫دسترسی اخیر را نشان میدهد‪ ،‬سایه روشن دسترسی قدیمیتر را نشان میدهد و سفید یعنی هنوز دسترسی نشده‬
‫است‪.‬‬

‫شکل‪ :20-5‬یک تصویر لحظهای از سه آرایه ‪ x,y,z‬وقتی ‪ .N=6 , i=1‬دوره دسترسیها به عناصر آرایه توسط سایه نشان داده‬
‫شدهاند‪ .‬سفید به معنی اینکه هنوز دسترسی نشده است‪ ،‬سایه روشن به معنی دسترسیهای قبلی و تیره به معنی دسترسیهای جدید‬
‫میباشد‪ .‬در مقایسه با شکل‪ 21-5‬عناصر ‪ y,z‬بطور تکراری خوانده میشوند تا عنصر جدیدِ ‪ x‬را محاسبه کنند‪ .‬متغیرهای ‪i,j‬و‪ k‬در‬
‫امتداد سطرها و ستونهای آرایه که استفاده میشوند نشان داده شدهاند‪.‬‬
‫‪| 253‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫بوضوح مشخص است که فقدانهای ظرفیت وابسته به ‪ N‬و اندازه حافظه نهان است‪ .‬اگر حافظه نهان بتواند هر‬
‫سه ماتریس ‪ N×N‬را نگه دارد‪ ،‬آنگاه همه چیز خوب است‪ ،‬اگر هیچ تداخل حافظه نهانی وجود نداشته باشد‪ .‬اگر‬
‫حافظه نهان فقط بتواند یک ماتریس ‪ N×N‬و یک سطر ‪ N‬عنصره را نگه دارد‪ ،‬در اینصورت حداقل سطر ‪i‬ام ‪ y‬و‬
‫ماتریس ‪ z‬ممکن است در حافظه نهان بمانند‪ .‬کمتر از آن فقدان میتواند برای هردوی ‪ x,z‬اتفاق بیافتد‪ .‬در بدترین‬
‫حالت ‪ 2N3+N2‬دسترسی کلمه حافظه برای ‪ N3‬عمل مورد نیاز است‪.‬‬
‫برای اطمینان از اینکه عناصری که دسترسی میشوند میتوانند در حافظه نهان قرار گیرند‪ ،‬کد اصلی برای محاسبه‬
‫روی یک زیرماتریس با اندازه ‪ B×B‬تغییر داده میشود‪ .‬دو حلقه داخلیتر اکنون با گام به اندازه ‪ B‬به جای طول‬
‫کل ‪ x, z‬کار میکنند‪ .‬به ‪ B‬فاکتور بلوکبندی میگویند‪( .‬فرض کنید مقدار اولیه ‪ x‬صفر باشد)‪.‬‬
‫‪ */‬بعد از بلوک بندی*‪/‬‬
‫)‪for(jj=0;jj<N;jj=jj+B‬‬
‫)‪for(kk=0;kk<N;kk=kk+B‬‬
‫)‪for(i=0;i<N;i=i+1‬‬
‫)‪for(j=jj;j<min(kk+B,N);j=j+1‬‬
‫{‬ ‫;‪r=0‬‬
‫)‪for(k=kk;k<min(kk+B,N);k=k+1‬‬
‫;]‪r=r+y[i][k]*z[k][j‬‬
‫;‪x[i][j]=x[i][j]+r‬‬ ‫;}‬

‫شکل ‪ 21-5‬دسترسیها به سه آرایه را با استفاده از بلوکبندی نشان میدهد‪ .‬با مشاهده فقط فقدانهای ظرفیت‪،‬‬
‫تعداد کل دسترسیهای کلمه حافظه ‪ 2N3/B+N2‬میباشد‪ .‬این مجموع یک بهینهسازی با فاکتوری حول و حوش‬
‫‪ B‬است‪ .‬بنابراین‪ ،‬بلوکبندی از ترکیبی از محلیت مکانی و زمانی استفاده میکند‪ ،‬زیرا ‪ y‬از محلیت مکانی بهره‬
‫میبرد و ‪ z‬از محلیت زمانی بهره میبرد‪.‬‬
‫هرچندکه هدف ما کاهش فقدانهای حافظه نهان است‪ ،‬از بلوکبندی همچنین میتوان برای تخصیص ثبات‬
‫استفاده کرد‪ .‬ما میتوانیم تعداد بارکردنها و ذخیرهسازیها در برنامه را با طول بلوک با اندازه کوچک بطوریکه در‬
‫ثباتها نگه داشته شود‪ ،‬حداقل کنیم‪.‬‬
‫‪j‬‬ ‫‪k‬‬ ‫‪j‬‬
‫‪x‬‬ ‫‪y‬‬ ‫‪z‬‬

‫‪i‬‬ ‫‪i‬‬ ‫‪k‬‬

‫شکل ‪ :21-5‬سن دسترسیها به آرایه ‪ x, y, z‬وقتیکه ‪ .B=3‬نکته اینکه‪ ،‬در مقایسه با شکل‪ 20-5‬تعداد کمتری عنصر دسترسی میشوند‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪254‬‬

‫بهینهسازی نهم‪ :‬پیشربداشت سختافزاری ‪ 1‬دستورات و دادهاه ربای کاهش رنخ فقدا ن و هزینه فقدا ن‬
‫حافظههای نهان بلوکهنشدنی بطور مؤثری هزینه فقدان را با همپوشانی اجرا و دسترسی حافظه کاهش میدهند‪.‬‬
‫روش دیگر پیش برداشت عناصر قبل از اینکه پردازنده آنها را درخواست بدهد میباشد‪ .‬هردوی دستورات و دادهها‬
‫میتوانند پیش برداشت شوند یا مستقیماً به داخل حافظه نهان یا به داخل یک بافر خارجی که میتواند با سرعت‬
‫بیشتری از حافظه اصلی دسترسی شود‪ ،‬آورده شوند‪.‬‬

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

‫روشی مشابه میتواند روی دسترسی داده اِعمال شود ]‪ Palacharla .[Jouppi 1990‬و ‪[1994] Kessler‬‬
‫یک مجموعه از برنامههای خاص و چندین بافر رشته را مد نظر گرفتند که میتوانستند دستورات یا دادهها را‬
‫راهاندازی کنند‪ .‬آنها دریافتند که ‪ 8‬بافر رشته میتوانند ‪ 50‬تا ‪ 70‬درصدِ همه فقدانهای یک پردازنده با دو حافظه‬
‫نهان انجمنی مجموعهای چهار‪-‬راهه ‪66KB‬ی را یکی برای دستورات و دیگری برای داده تسخیر کنند‪.‬‬
‫بهبود کارایی‬

‫شکل ‪ :22-5‬افزایش سرعت به خاطر پیشبرداشت سختافزاری در پنتیوم ‪ 4‬اینتل برای دو تا از ‪12‬عدد برنامه محک ‪SPECint200‬‬
‫و ‪9‬تا از ‪ 14‬برنامه محک ‪ .SPECfp2000‬برای بقیه برنامههای محک افزایش سرعت کمتر از ‪15‬درصد است‪.‬‬

‫‪1‬‬
‫‪Hardware Prefetching‬‬
‫‪| 255‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫‪ Intel Core i7‬پیشبرداشت سختافزاری در هردوی ‪ L1‬و ‪ L2‬را پشتیبانی میکند‪ .‬بعضی پردازندههای اینتل‬
‫جدیدتر از پیشبرداشت سختافزاری تهاجمیتری‪ 1‬استفاده میکنند‪ ،‬که باعث کاهش کارایی بعضی برنامههای‬
‫خاص شده است و بعضی کاربران این قابلیت را غیرفعال میکنند‪.‬‬

‫شکل ‪ 22-5‬بهبود کلی کارایی را وقتیکه پیشبرداشت سختافزاری فعال است برای یک مجموعه از برنامههای‬
‫محک ‪ SPEC2000‬نشان میدهند‪ .‬در این شکل از دو برنامه محک صحیح و ‪ 9‬برنامه محک اعشاری استفاده‬
‫شده است‪.‬‬

‫شده‪2‬‬ ‫پیش برداشت روی پهنای باند حافظه تکیه دارد در غیراینصورت بال استفاده است‪ .‬اما اگر با فقدانهای تقاضا‬
‫تداخل کند واقعاً کارایی را کاهش میدهد‪ .‬وقتیکه پیش برداشت بدرستی کار کند‪ ،‬اثر آن روی توان ناچیز است‪.‬‬
‫وقتیکه دادههای پیشبرداشت شده استفاده نشوند یا دادههای مفید تعویض‪ 3‬شوند‪ ،‬پیشبرداشت تأثیر بسیار منفی‬
‫روی توان دارد‪.‬‬

‫بهینهسازی دهم‪ :‬پیشربداشت کنترل شده توسط کامپایلر هب منظور کاهش هزینه فقدا ن یا رنخ فقدا ن‬
‫روش دیگر‪ ،‬پیشبرداشت کامپایلری میباشد تا دستورات پیشبرداشت شده را با داده درخواست شده ادغام کند قبل‬
‫از اینکه پردازنده آنرا نیاز داشته باشد‪ .‬دو روش پیشبرداشت وجود دارد‪:‬‬
‫• پیشبرداشت ثبات‪ :‬مقدار را به داخل یک ثبات بار میکند‪.‬‬
‫• پیشبرداشت حافظه نهان‪ :‬دادهها را فقط به داخل حافظه نهان (نه به داخل ثبات) بار میکند‪.‬‬
‫هرکدام از این روشها میتواند خطادار یا بدون خطا‪ 4‬باشند؛ یعنی آدرس میتواند باعث یک استثتاء برای خطاهای‬
‫آدرس مجازی و نقض حفاظت شود‪ .‬با این اصطالحات‪ ،5‬یک دستور بارکردن نرمال میتواند یک "دستور پیش‪-‬‬
‫برداشت ثبات خطادار" فرض شود‪ .‬پیشبرداشتهای بدون خطا به ‪ no-ops‬تغییر میکنند اگر بطور نرمال منتج‬
‫به یک استثناء شوند که آنچیزی است که ما میخواهیم‪.‬‬

‫مؤثرترین پیش برداشت برای یک برنامه از لحاظ معنایی نامرئی است‪ :‬یعنی محتویات ثباتها و حافظه را تغییر‬
‫نمیدهد‪ ،‬و نمیتواند باعث خطاهای حافظه مجازی شود‪ .‬اکثر پردازندهها امروزه پیش‪-‬برداشتهای حافظه نهان‬
‫بدون خطا را پیشنهاد میکنند‪ .‬در این بخش فرض میکنیم پیشبرداشت حافظه نهان بدون خطا باشد که به آن‬
‫پیشبرداشت بدون باند‪ 6‬میگویند‪.‬‬

‫‪1‬‬
‫‪Aggressive Hardware Prefetching‬‬
‫‪2‬‬
‫‪Demand misses‬‬
‫‪3‬‬
‫‪Displace‬‬
‫‪4‬‬
‫‪Faulting or nonfaulting‬‬
‫‪5‬‬
‫‪Terminology‬‬
‫‪6‬‬
‫‪Nonbinding prefetch‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪256‬‬

‫پیش برداشت فقط زمانی تأثیر دارد که فقط پردازنده بتواند پیشروی کند درحالیکه درحال پیشبرداشت داده باشد‪،‬‬
‫یعنی حافظههای نهان متوقف نشوند و به تدارک دستورات و دادهها ادامه دهند درحالیکه منتظر بازگشت داده‬
‫پیشبرداشت شده باشند‪ .‬انتظار داریم که در چنین کامپیوترهایی حافظه نهان داده بلوکه نشدنی باشند‪.‬‬

‫مثل پیشبرداشت کنترل شده توسط سختافزار هدف همپوشانی داده با اجرا میباشد‪ .‬یکی از مواردی که در بهینه‬
‫سازی پیشبرداشت مورد توجه است حلقهها میباشند‪ .‬اگر هزینه فقدان کوچک باشد‪ ،‬کامپایلر فقط حلقهها را یک‬
‫یا دوبار باز میکند و پیشبرداشتها را با اجرا زمانبندی میکند‪ .‬اگر هزینه فقدان زیاد باشد‪ ،‬از خطلوله نرمافزاری‬
‫استفاده میکند یا بازکردن حلقه را به تعداد زیاد تکرار میکند تا دادهها را برای یک تکرار در آینده پیشبرداشت‬
‫کند‪.‬‬

‫انتشار دستورات پیشبرداشت باعث سربار دستور میشود‪ ،‬بههر حال‪ ،‬کامپایلرها باید مواظب باشند تا اینچنین سرباری‬
‫آنقدر زیاد نشود تا مزیت روش از بین برود‪ .‬با تمرکز روی مراجعاتی که احتماالً منجر به فقدان حافظه نهان میشوند‪،‬‬
‫برنامهها میتوانند از پیشبرداشتهای غیرضروری اجتناب کنند درحالیکه میانگین زمان دسترسی حافظه را بطور‬
‫چشمگیری بهبود میدهند‪.‬‬

‫مثال ‪ :11-5‬برای کد زیر‪ ،‬تعیین کنید که کدام دسترسیها احتماالً منجر به فقدانهای حافظه نهان داده میشوند‪.‬‬
‫سپس‪ ،‬دستورات پیشبرداشت را برای کاهش فقدانها درج کنید‪ .‬در انتها‪ ،‬تعداد دستورات پیشبرداشت اجرا شده و‬
‫تعداد فقدانهای اجتناب شده توسط پیشبرداشت را محاسبه کنید‪ .‬فرض کنید که یک حافظه نهان داده نگاشت‬
‫مستقیم ‪8KB‬ی با اندازه بلوک ‪ 16‬بایتی داریم‪ ،‬و حافظه نهان از سیاست ‪ WB‬استفاده میکند که تخصیص نوشتن‬
‫را انجام میدهد‪ .‬عناصر ‪ 8 a, b‬بایتی هستند و آرایههای ممیز‪-‬شناور با دقت مضاعف میباشند‪ a .‬ماتریسی‬
‫‪ 3×100‬و ‪ b‬ماتریسی ‪ 101×3‬میباشد‪ .‬فرض میکنیم که آنها ابتدا در شروع برنامه در حافظه نهان نیستند‪.‬‬
‫)‪for(i=0;i<3;i=i+1‬‬
‫)‪for(j=0;j<100;j=j+1‬‬
‫;]‪a[i][j]=b[j][0]*b[j+1][0‬‬
‫پاسخ‪ :‬کامپایلر ابتدا تعیین میکند که کدام دسترسیها احتماالً منجر به فقدان میشوند؛ درغیر اینصورت روی‬
‫دستورات پیشبرداشت زمان تلف خواهیم کرد برای دادههایی که در حافظه نهان واقعاند‪ .‬عناصر ‪ a‬به ترتیب ذخیره‬
‫شده در حافظه دسترسی میشوند بنابراین ‪ a‬از محلیت مکانی بهره میبرد‪ :‬مقادیر زوجِ ‪ j‬فقدان خواهند داشت و‬
‫مقادیر فرد اصابت دارند چون هر بلوک ‪ 16‬بایتی است و دو عنصر آرایه را دربر میگیرد‪ .‬چون ‪ 3 ،a‬سطر و ‪100‬‬
‫ستون دارد‪ ،‬دسترسیهای آن منجر به ‪ 3×(100/2)=150‬فقدان خواهد شد‪.‬‬
‫آرایه ‪ b‬از محلیت مکانی سود نمیبرد زیرا دسترسیها به ترتیب ذخیره شدن در حافظه نیستند‪ .‬آرایه ‪ b‬دوبار از‬
‫محلیت زمانی بهره میبرد‪ :‬عناصر مشابهی در هر بار تکرار ‪ i‬دسترسی میشوند‪ ،‬و هر تکرار ‪ j‬مقدار مشابهی با تکرار‬
‫قبلی استفاده میکند‪ .‬با نادیده گرفتن فقدانهای تصادمی‪ ،‬فقدانهای ‪ b‬برای دسترسیهای ]‪ b[j+1][0‬وقتیکه‬
‫‪ i=0‬و همچنین اولین دسترسی به ]‪ b[j][0‬وقتیکه ‪ j=0‬میباشد‪ .‬وقتی ‪ j‬از ‪ 0‬تا ‪ 99‬تغییر میکند و ‪،i=0‬‬
‫دسترسیها به ‪ b‬منجر به ‪ 1+100‬یا ‪ 101‬فقدان میشود‪.‬‬
‫‪| 257‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫بنابراین‪ ،‬این حلقه تقریباً منجر به ‪ 150‬بار فقدان برای ‪ a‬بعالوه ‪ 101‬بار برای ‪ b‬یا ‪ 251‬فقدان در حافظه نهان داده‬
‫خواهد شد‪.‬‬
‫به منظور سادهسازی بهینهسازیمان درباره پیشبرداشت اولین دسترسی به حلقه نگران نخواهیم بود‪ .‬اینها ممکن‬
‫است اکنون در حافظه نهان باشند‪ ،‬یا ما هزینه فقدان را برای چند عنصر اولِ ‪ a,b‬خواهیم پرداخت‪ .‬همچنین ما‬
‫نگران متوقف کردن پیشبرداشت آخر حلقه که سعی به پیشبرداشت عناصر بعد از آخرین عنصر یعنی‬
‫(]‪ )a[i][100]…a[i][106‬و آخرِ ‪ )b[101][0]…b[107][0]( b‬دارند‪ ،‬نخواهیم بود‪ .‬اگر اینها پیش‪-‬‬
‫برداشتهای غلط باشند‪ ،‬این را به حساب نمیآوریم‪ .‬اجازه دهیم که هزینه فقدان آنقدر بزرگ باشد که نیازمند شروع‬
‫پیشبرداشت باشیم‪ ،‬حداقل‪ ،‬هفت تکرار بطور پیشرفته‪( .‬فرض میکنیم پیشبرداشت تا هشتمین تکرار سودی نداشته‬
‫باشد)‪ .‬کد تغییر یافته برای اضافه کردن پیشبرداشت بصورت زیر میباشد‪:‬‬
‫{)‪for(j=0;j<100;j=j+1‬‬
‫;)]‪prefetch(b[j+7][0‬‬
‫‪/*b(j,0) for 7 itarations later*/‬‬
‫;)]‪prefetch(a[0][j+7‬‬
‫‪/*a(0,j) for 7 iterations later*/‬‬
‫};]‪a[0][j]=b[j][0]*b[j+1][0‬‬
‫)‪for(i=1;i<3;i=i+1‬‬
‫{)‪for(j=0;j<100;j=j+1‬‬
‫;)]‪prefetch(a[i][j+7‬‬
‫‪/*a(i,j) for +7 iterations*/‬‬
‫};]‪a[i][j]=b[j][0]*b[j+1][0‬‬
‫این کد اصالح شده ]‪ a[i][7‬تا ]‪ a[i][99‬و ]‪ b[7][0‬تا ]‪ b[100][0‬را پیشبرداشت میکند و تعداد فقدانهای‬
‫پیشبرداشت نشده را به موارد زیر کاهش میدهد‪:‬‬
‫• ‪ 7‬فقدان برای عناصر ]‪ b[0][0],b[1][0],…,b[6][0‬در حلقه اول‪.‬‬
‫• ‪ 4‬فقدان (]‪ )[7/2‬برای عناصر ]‪ a[0][0], a[0][1], …, a[0][6‬در اولین حلقه (محلیت مکانی‬
‫فقدانها را به ازای هر بلوک ‪ 16‬بایتی به ‪ 1‬کاهش میدهد)‪.‬‬
‫• ‪ 4‬فقدان (]‪ )[7/2‬برای عناصر ]‪ a[1][0], a[1][1], …, a[1][6‬در حلقه دوم‪.‬‬
‫• ‪ 4‬فقدان (]‪ )[7/2‬برای عناصر ]‪ a[2][0], a[2][1], …., a[2][6‬در حلقه دوم‪.‬‬
‫یعنی در مجموع ‪ 19‬فقدان پیشبرداشت نشده وجود دارد‪ .‬هزینه اجتناب از ‪ 232‬فقدانِ حافظه نهان‪ ،‬اجرای ‪400‬‬
‫دستور پیشبرداشت میباشد که هزینه خوبی است‪.‬‬

‫مثال ‪ :12-5‬زمان صرفهجویی شده در مثال فوق را بیابید‪ .‬فقدانهای حافظه نهان دستورالعمل را نادیده بگیرید‬
‫فرض کنید که هیچ فقدان ظرفیت یا تصادم در حافظه نهان داده وجود ندارد‪ .‬فرض کنید که پیشبرداشتها میتوانند‬
‫با یکدیگر و با فقدانهای حافظه نهان همپوشانی کنند‪ ،‬که منتج به انتقال با حداکثر پهنای باند حافظه میشود‪.‬‬
‫زمانهای هر حلقه با نادیده گرفتن فقدانهای حافظه نهان عبارتند از‪ :‬حلقه اصلی ‪ 7‬پالس ساعت میگیرد‪ ،‬اولین‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪258‬‬

‫حلقه پیشبرداشت ‪ 9‬پالس ساعت برای هر تکرار میگیرد‪ ،‬و حلقه پیشبرداشت دوم ‪ 8‬پالس ساعت به ازای هر‬
‫پیشبرداشت میگیرد (شامل سربار بیرونی برای حلقه)‪ .‬هر فقدان ‪ 100‬پالس ساعت میگیرد‪.‬‬
‫پاسخ‪ :‬حلقه تودرتوی اصلی ‪ 100×3‬یا ‪ 300‬بار اجرا میشود‪ .‬چون هر تکرار حلقه ‪ 7‬پالس ساعت میگیرد‪ ،‬در‬
‫مجموع ‪ 7×300‬یا ‪ 2100‬پالس ساعت بعالوه فقدانهای حافظه نهان میگیرد‪ .‬فقدانهای حافظه نهان ‪251×100‬‬
‫یا ‪ 25100‬پالس ساعت میگیرد‪ ،‬که در مجموع ‪ 27200‬پالس ساعت طول میکشد‪ .‬اولین حلقه پیشبرداشت ‪100‬‬
‫بار تکرار میشود و هر تکرار ‪ 9‬پالس ساعت طول میکشد که در کل ‪ 900‬پالس ساعت بعالوه فقدانهای حافظه‬
‫نهان میگیرد‪ .‬اکنون ‪ 11×100‬یا ‪ 1100‬پالس ساعت برای فقدانهای حافظه نهان به آن اضافه میکنیم که میشود‬
‫‪ 2000‬پالس ساعت‪ .‬حلقه دوم ‪ 2×100‬یا ‪ 200‬بار اجرا میشود و هر تکرار ‪ 8‬پالس ساعت میگیرد بنابراین ‪1600‬‬
‫پالس ساعت بعالوه ‪ 8×100‬پالس برای فقدانهای حافظه نهان میگیرد که در مجموع میشود ‪ 2400‬پالس ساعت‪.‬‬
‫از مثال قبل میدانیم که این کد ‪ 400‬دستور پیشبرداشت اجرا میکند در طی ‪ 2400+2000‬یا ‪ 4400‬پالس ساعت‬
‫برای اجرای این دو حلقه‪ .‬اگر فرض کنیم پیشبرداشتها بطور کامل با بقیه اجرا همپوشانی میکند‪ ،‬آنگاه کد‬
‫پیشبرداشت شده ‪ 27200/4400‬یا ‪ 6.2‬برابر سریعتر است‪.‬‬

‫هرچندکه فهم بهینهسازی آرایه ساده است‪ ،‬برنامههای مدرن از اشارهگرها استفاده میکنند‪ Luk .‬و ‪Mowry‬‬
‫]‪ [1999‬نمایش دادهاند که پیشبرداشت کامپایلری گاهی اوقات میتواند به اشارهگرها نیز بسط داده شود‪ .‬از ‪10‬‬
‫برنامه با ساختمان دادههای بازگشتی‪ ،‬پیشبرداشتِ همه اشارهگرها وقتیکه یک گره مالقات شود کارایی را ‪ 4‬تا‬
‫‪ 31‬درصد در نصف برنامهها بهبود میدهد‪ .‬بقیه برنامهها دو درصد بهبود دارند‪.‬‬
‫اکثر پردازندهها دستورات را برای پیشبرداشت حافظه نهان پشتیبانی میکنند و پردازندههای پیشرفته مثل ‪Intel‬‬
‫‪ Core i7‬اغلب بعضی انواع پیشبرداشت خودکار را در سختافزار پشتیبانی میکنند‪.‬‬
‫خالصه بهینهسازی حافظه نهان‬
‫تکنیک های بهبود زمان اصابت‪ ،‬پهنای باند‪ ،‬هزینه فقدان‪ ،‬و نرخ فقدان بر سایر اجزاءِ معادله میانگین زمان دسترسی‬
‫و همچنین پیچیدگی سلسله مراتب حافظه تأثیر میگذارند‪ .‬جدول‪ 2-5‬این تکنیکها را خالصه کرده است و اثر‬
‫آنها را روی پیچیدگی تخمین میزند‪ .‬عالمت ‪ +‬به معنی تأثیر مثبت و بهبود فاکتور است و – به معنی تنزل فاکتور‬
‫است و خالی یعنی اثری ندارد‪ .‬معموالً هیچ تکنیکی بر بیشتر از یک طبقه تأثیر ندارد‪.‬‬
‫‪ -3-5‬سازمان های حافظه‪-‬مشترک‬
‫حافظه اصلی سطح بعدی در سلسله مراتب حافظه است‪ .‬در حال حاضر از ‪ SRAM‬برای حافظههای نهان سطح ‪1‬‬
‫و ‪ 2‬و‪ 3‬استفاده می شود و امروزه هر سه سطح حافظه نهان در داخل تراشه پردازنده قرار میگیرند‪ .‬در حال حاضر‬
‫بزرگترین حافظه نهان سطح ‪ 12MB ،3‬است در حالی که ظرفیت ‪ DRAM‬این پردازندهها ‪ 4‬تا ‪ 16GB‬میباشد‪.‬‬
‫زمان دسترسی برای حافظههای نهان روی تراشه سطح سه‪ ،‬معموالً تا ‪ 2‬برابر حافظه نهان سطح دوم است که هنوز‬
‫هم سه تا ‪ 5‬برابر سریعتر از دسترسی حافظه ‪ DRAM‬است‪ .‬میدانید که ‪ DRAM‬به خاطر ساختارش نیازمند‬
‫تازهسازی میباشد‪ .‬چون ماتریس حافظه ‪ DRAM‬بصورت مربعی است‪ ،‬تعداد گامها در یک تازه سازی‪ 1‬معموالً‬

‫‪1‬‬
‫‪Refresh‬‬
‫‪| 259‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫مجذور ظرفیت ‪ DRAM‬است‪ .‬طراحان ‪ DRAM‬سعی میکنند تا زمان سپری شده برای نگهداری تازه سازی را‬
‫به کمتر از ‪ 5‬درصد کل زمان برسانند‪ .‬زمان دسترسی فاصله زمانی بین وقتی که یک خواندن درخواست میشود تا‬
‫وقتیکه کلمه مطلوب برسد میباشد و زمان سیکل حداقل زمان بین درخواستهای نامرتبط به حافظه میباشد‪.‬‬

‫برگی کردن حافظه پهنای باند بیشتری برای دسترسی خط لوله به مکانهای حافظه پیوسته فراهم میکند‪ .‬روش‪-‬‬
‫هایی برای تخصیص بازپسگیری حافظه اصلی به چند برنامه کاربر برای بهینه سازی بهرهوری حافظه مورد توجه‬
‫میباشد‪ .‬تجزیه تحلیل پهنای باند حافظه و تحمل پذیری خطا در زیر بحث شده است‪.‬‬

‫پیچیدگی‪ /‬هزینه‬ ‫مصرف‬ ‫نرخ‬ ‫هزینه‬ ‫پهنای‬ ‫زمان‬


‫توضیحات‬ ‫تکنیک‬
‫سختافزار‬ ‫توان‬ ‫فقدان‬ ‫فقدان‬ ‫باند‬ ‫اصابت‬
‫حافظههای نهان‬
‫بدیهی؛ استفاده گسترده‬ ‫‪0‬‬ ‫‪+‬‬ ‫‪-‬‬ ‫‪+‬‬
‫ساده و کوچک‬
‫حافظههای نهان‬
‫در پنتیوم ‪ 4‬استفاده شد‪.‬‬ ‫‪1‬‬ ‫‪+‬‬ ‫‪+‬‬
‫پیشبینی راه‬
‫دسترسی حافظه‬
‫استفاده گسترده‬ ‫‪1‬‬ ‫‪+‬‬ ‫‪-‬‬
‫نهان خطلوله شده‬
‫حافظههای نهان‬
‫استفاده گسترده‬ ‫‪3‬‬ ‫‪+‬‬ ‫‪+‬‬
‫بلوکه نشدنی‬
‫در ‪ L2‬هم در ‪ i7‬و ‪Cortex-‬‬ ‫حافظههای نهان‬
‫‪1‬‬ ‫‪+‬‬ ‫‪+‬‬
‫‪ a8‬استفاده شد‪.‬‬ ‫بانک شده‬

‫استفاده گسترده‬ ‫‪2‬‬ ‫‪+‬‬ ‫کلمه بحرانی ابتدا‬

‫استفاده گسترده با ‪WT‬‬ ‫‪1‬‬ ‫‪+‬‬ ‫ادغام بافر نوشتن‬

‫تکنیکهای‬
‫اکثر کامپایلرها‬ ‫‪0‬‬ ‫‪+‬‬ ‫کامپایلر برای‬
‫کاهش فقدانها‬
‫اکثرا پیشبرداشت دستورات را‬
‫پیشبرداشت‬
‫فراهم میکنند و پردازندههای‬
‫‪2‬دستور‪3 ،‬داده‬ ‫‪-‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫سختافزاری‬
‫پیشرفته سختافزاری انجام می‪-‬‬
‫دستورات و دادهها‬
‫دهند‪.‬‬
‫نیازمند حافظههای نهان بلوک‬ ‫پیشبرداشت‬
‫نشدنی است؛ امکان سربار دستور‬ ‫‪3‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫کنترل‪-‬شده‬
‫؛ در اکثر پردازندهها‬ ‫کامپایلری‬
‫جدول ‪ :2-5‬خالصه ‪ 10‬بهینهسازی پیشرفته حافظه نهان و اثرات آنها روی فاکتورهای کارایی‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪260‬‬

‫‪ -1-3-5‬سازمان حافظه برگی شده‬


‫سازمانهای مختلف حافظه فیزیکی در این بخش مطالعه میشوند‪ .‬به منظور بستن شکاف سرعت بین‬
‫پردازنده‪/‬حافظه نهان و حافظه اصلی ساخته شده با ماژولهای ‪ ،RAM‬یک تکنیک برگی کردن در زیر ارائه شده‬
‫است که اجازه دسترسی خط لوله شده و موازی ماژولهای حافظه را میدهد‪.‬‬
‫هدف طراحی حافظه‪ ،‬گسترش پهنای باند مؤثر حافظه بطوریکه کلمات حافظه بیشتری بتوانند در هر واحد زمانی‬
‫دسترسی شوند‪ ،‬میباشد‪ .‬هدف نهایی تطابق پهنای باند حافظه با پهنای باند گذرگاه و پهنای باند پردازنده میباشد‪.‬‬
‫برگی کردن حافظه‪ :‬حافظه اصلی با چندین ماژول ساخته میشود‪ .‬این ماژولهای حافظه به یک گذرگاه سیستم‬
‫یا شبکه سوئیچینگ متصل میشوند که سایر منابع مثل پردازنده و وسایل ورودی‪/‬خروجی نیز متصل شدهاند‪.‬‬
‫با نمایش یک آدرس حافظه‪ ،‬هر ماژول حافظه یک کلمه را در هر سیکل برمیگرداند‪ .‬این امکان وجود دارد که‬
‫آدرسهاس مختلفی را به ماژولهای حافظه اِعمال کرد بطوریکه دسترسی موازی به چندین کلمه بتواند بطور‬
‫همزمان یا به روشی خط لوله شده انجام شود‪ .‬هر دو دسترسی موازی و دسترسی خطلوله شده شکلهایی از موازات‬
‫میباشند که در یک سازمان حافظه موازی عملی شدهاند‪.‬‬
‫حافظه اصلی را در نظر بگیرید که دارای ‪ m=2a‬ماژول حافظه میباشد و هر کدام شامل ‪ w=2‬کلمه از سلولهای‬
‫‪b‬‬

‫حافظه باشند‪ .‬ظرفیت کلی حافظه ‪ m.w=2a+b‬کلمه میباشد‪ .‬این کلمات حافظه به آدرسهای خطی منتسب‬
‫میشوند‪ .‬روشهای مختلف انتساب آدرسهای خطی‪ ،‬باعث بوجود آمدن سازمانهای حافظه مختلفی میشود‪.‬‬
‫در کنار دسترسی تصادفی‪ ،‬دسترسی بلوکی حافظه اصلی اغلب در آدرسهای متوالی انجام میشود‪ .‬دسترسی بلوکی‬
‫برای برداشت رشته ای از دستورات یا برای دسترسی یک ساختمان داده مرتب شده بطور خطی مورد نیاز میشود‪.‬‬
‫هر دسترسی بلوکی ممکن است مرتبط با طول یک بلوک حافظه نهان (خطِ حافظه نهان) یا چند بلوک حافظه نهان‬
‫باشد‪ .‬بنابراین مطلوب است تا حافظهای طراحی کنیم که دسترسی بلوکی کلمات متوالی را آسان کند‪.‬‬
‫شکل ‪ 23-5‬دو شکل آدرس دهی برای برگی کردن حافظه را نشان میدهد‪ .‬برگی کردن سطح پایین‪( 1‬شکل ‪-5‬‬
‫‪(23‬الف)) مکانهای حافظه پیوسته را در طول ‪ m‬ماژول افقی منتشر میکند‪ .‬این به این مفهوم است که ‪ a‬بیت‬
‫سطح پایین از آدرس حافظه برای تعیین ماژول حافظه استفاده میشود‪ b .‬بیت سطح باال آدرسهای کلمه بین هر‬
‫ماژول میباشند‪ .‬نکته اینکه آدرس کلمه مشابهی به همه ماژولهای حافظه بطور همزمان اِعمال میشود‪ .‬یک‬
‫دیکدر آدرس ماژول برای توزیع آدرسهای ماژولی استفاده میشود‪.‬‬
‫برگی کردن سطح باال‪( 2‬شکل ‪(23-5‬ب)) از ‪ a‬بیت سطح باال برای آدرس ماژول و ‪ b‬بیت سطح پایین برای آدرس‬
‫دهی کلمه در هر ماژول استفاده میکند‪ .‬بنابراین مکانهای پیوسته در ماژولهای مشابهی قرار دارند‪ .‬در هر سیکل‬
‫حافظه‪ ،‬فقط یک کلمه از هر ماژول دسترسی میشود‪ .‬بنابراین برگی کردن سطح باال نمیتواند دسترسی بلوکی‬
‫مکانهای پیوسته را پشتیبانی کند‪.‬‬
‫به عبارت دیگر‪ ،‬برگی کردن سطح پایین ‪ m-way‬دسترسی بلوکی به روش خط لوله را پشتیبانی میکند‪ .‬در‬
‫بخشهای بعد فقط برگی کردن سطح پایین را مورد توجه قرار میدهیم مگر اینکه صریحاً نوع آن ذکر شود‪.‬‬

‫‪1‬‬
‫‪Low-order interleaving‬‬
‫‪2‬‬
‫‪High order interleaving‬‬
‫‪| 261‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫دسترسی حافظه خطلوله شده‪ :‬دسترسی به ‪ m‬ماژول حافظه را میتوان به روش خط لوله همپوش کرد‪.‬‬
‫برای این هدف‪ ،‬سیکل حافظه (که به آن سیکل اصلی میگویند) به ‪ m‬قسمت کوچکتر تقسیم میشود‪.‬‬

‫‪Memory adderss‬‬
‫‪MAB‬‬ ‫‪MAB‬‬ ‫‪MAB‬‬ ‫‪buffer‬‬
‫دیکدر‬ ‫‪M0‬‬ ‫‪M1‬‬ ‫‪Mm-1‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪m-1‬‬
‫آدرس‬
‫آدرس حافظه‬ ‫‪a‬‬ ‫‪m‬‬ ‫‪m+1‬‬ ‫‪2m-1‬‬
‫‪word‬‬ ‫‪module‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪b‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪Word W‬‬ ‫‪m(w-‬‬ ‫‪mw-‬‬ ‫‪mw-1‬‬
‫‪address A‬‬ ‫)‪1‬‬ ‫‪m+1‬‬
‫‪Memory‬‬
‫‪buffer B‬‬ ‫‪MDB‬‬ ‫‪MDB‬‬ ‫‪MDB‬‬ ‫‪data‬‬
‫‪buffer‬‬
‫گذرگاه داده‬
‫(الف) برگی کردن سطح پایین ‪( m-way‬شماتیک حافظه ‪)c-access‬‬

‫‪MAB‬‬ ‫‪MAB‬‬ ‫‪MAB‬‬


‫دیکدر‬ ‫‪M0‬‬ ‫‪M1‬‬ ‫‪Mm-1‬‬
‫‪0‬‬ ‫‪w‬‬ ‫‪(m-1)w‬‬
‫آدرس‬
‫‪a‬‬ ‫‪1‬‬ ‫‪w+1‬‬ ‫‪mw-w+1‬‬
‫‪module‬‬ ‫‪word‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪b‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪W‬‬ ‫‪w-1‬‬ ‫‪2w-1‬‬ ‫)‪m(w-1‬‬
‫‪A‬‬
‫‪B‬‬ ‫‪MDB‬‬ ‫‪MDB‬‬ ‫‪MDB‬‬

‫گذرگاه داده‬
‫(ب) برگی کردن سطح باال ‪m-way‬‬
‫شکل ‪ :23-5‬دو سازمان حافظه برگی شده با ‪ m=2a‬ماژول و ‪ w=2b‬کلمه در هر ماژول (آدرس کلمه در مستطیل نشان داده شده است)‬
‫یک حافظه برگی شده ‪ m=8( 8-way‬و ‪ w=8‬و ‪ )a=b=3‬در شکل ‪(24-5‬الف) نشان داده شده است‪ .‬اجازه‬
‫دهید ‪ θ‬سیکل اصلی و ‪ Ƭ‬سیکل کوچک‪ 1‬باشد این دو سیکل با رابطه زیر به هم وابستهاند‪:‬‬
‫𝜃‬
‫=𝜏‬ ‫)‪(5-4‬‬
‫𝑚‬
‫که ‪ m‬درجه برگی کردن است‪ .‬زمانبندی دسترسی خطلوله ‪ 8‬کلمه حافظه پیوسته در شکل ‪(24-5‬ب) نشان داده‬
‫شده است‪ .‬این نوع دسترسی همروند کلمات پیوسته شماتیک حافظه ‪ c-access‬نامیده میشود‪ .‬سیکل اصلی ‪θ‬‬
‫زمان کل مورد نیاز برای دسترسی کامل یک کلمه تنها از یک ماژول میباشد و زمان کوچک ‪ Ƭ‬زمان واقعی مورد‬
‫نیاز برای ساخت یک کلمه است‪ ،‬فرض میکنیم دسترسی همپوش ماژولهای متوالی در هر سیکل کوچک ‪ Ƭ‬مجزا‬
‫شده است‪.‬‬

‫‪1‬‬
‫‪minor‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪262‬‬

‫نکته اینکه‪ ،‬دسترسی خطلوله شده بلوکی از ‪ 8‬کلمه پیوسته بین سایر دسترسیهای بلوک خطلوله شده قبل و بعد‬
‫از بلوک جاری فشرده شده‪ 1‬است‪ .‬هرچند که‪ ،‬زمان دسترسی کل یک بلوک ‪ θ2‬است‪ ،‬اگر حافظه بطور پیوسته به‬
‫روشی خطلوله شده دسترسی شود‪ ،‬زمان مؤثر هر کلمه به ‪ Ƭ‬کاهش داده میشود‪.‬‬
‫ثبات آدرس حافظه (‪ 6‬بیت)‬

‫‪M0‬‬ ‫‪M1‬‬ ‫‪M2‬‬ ‫‪M3‬‬ ‫‪M4‬‬ ‫‪M5‬‬ ‫‪M6‬‬ ‫‪M7‬‬


‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬
‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬
‫‪16‬‬ ‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪20‬‬ ‫‪21‬‬ ‫‪22‬‬ ‫‪23‬‬
‫‪24‬‬ ‫‪25‬‬ ‫‪26‬‬ ‫‪27‬‬ ‫‪28‬‬ ‫‪29‬‬ ‫‪30‬‬ ‫‪31‬‬
‫‪32‬‬ ‫‪33‬‬ ‫‪34‬‬ ‫‪35‬‬ ‫‪36‬‬ ‫‪37‬‬ ‫‪38‬‬ ‫‪39‬‬
‫‪40‬‬ ‫‪41‬‬ ‫‪42‬‬ ‫‪43‬‬ ‫‪44‬‬ ‫‪45‬‬ ‫‪46‬‬ ‫‪47‬‬
‫‪48‬‬ ‫‪49‬‬ ‫‪50‬‬ ‫‪51‬‬ ‫‪52‬‬ ‫‪53‬‬ ‫‪54‬‬ ‫‪55‬‬
‫‪56‬‬ ‫‪57‬‬ ‫‪58‬‬ ‫‪59‬‬ ‫‪60‬‬ ‫‪61‬‬ ‫‪62‬‬ ‫‪63‬‬

‫ثبات داده حافظه‬

‫(الف) برگی کردن سطح پایین ‪ 8‬راهه (آدرس قطعی در هر کلمه حافظه نشان داده شده است)‪.‬‬
‫‪W7‬‬ ‫سیکل اصلی=‪θ‬‬
‫‪W6‬‬
‫‪W5‬‬ ‫سیکل کوچک ‪Ƭ=θ/m‬‬
‫‪W4‬‬ ‫درجه برگی کردن ‪m‬‬
‫‪W3‬‬
‫‪W2‬‬
‫‪W1‬‬
‫‪W0‬‬
‫‪θ‬‬ ‫‪Ƭ‬‬ ‫زمان‬
‫‪2θ‬‬
‫(ب) دسترسی خطلوله شده هشت کلمه متوالی در یک حافظه ‪c-access‬‬
‫شکل ‪ :24-5‬سازمان حافظه برگی شده چند راهه و نمودار زمانی ‪c-access‬‬

‫‪ -2-3-5‬پهنای باند و تحمل پذیری خطا‬

‫‪ )1976( Hellerman‬معادله ای برای تخمین افزایش مفید پهنای باند حافظه با استفاده از برگی کردن حافظه‬
‫بدست آورد‪ .‬فرض میکنیم که یک ماژول حافظه یک کلمه در هر سیکل حافظه برگرداند و بنابراین پهنای باند ‪1‬‬
‫دارد‪.‬‬
‫پهنای باند حافظه‪ :‬پهنای باند حافظه ‪ B‬از یک حافظه برگی شده ‪ m-way‬دارای کران باالی ‪ m‬و کران‬
‫𝑚√ ≅ ‪B=m0.56‬‬ ‫(‪)5-5‬‬ ‫پایین ‪ 1‬است‪ .‬تخمین هلرمن از ‪ B‬برابر است با‪:‬‬
‫که ‪ m‬تعداد ماژول های حافظه برگی شده است‪ .‬این معادله به این مفهوم است که اگر ‪ 16‬ماژول حافظه استفاده‬
‫شود آنگاه پهنای باند مؤثر حافظه تقریباً ‪ 4‬برابر یک ماژول تک است‪.‬‬

‫‪1‬‬
‫‪Sandwiched‬‬
‫‪| 263‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫این تخمین بدبینانه بخاطر این حقیقت است که دسترسی بلوک با طولهای مختلف و دسترسی کلمات با طول‬
‫یک‪ ،‬بطور تصادفی در برنامه کاربر استفاده می شوند‪ .‬تخمین هلرمن براساس یک سیستم تک پردازنده است‪ .‬اگر‬
‫تداخلهای دسترسی‪-‬حافظه چندپردازنده مورد توجه قرار گیرد‪ ،‬پهنای باند مؤثر حافظه بیشتر کاهش مییابد‪.‬‬
‫در یک کامپیوتر پردازش برداری‪ ،‬زمان دسترسی یک بردار طویل با ‪ n‬عنصر و فاصله گام ‪ 1‬توسط ‪Cragon‬‬
‫(‪ )1992‬بصورت زیر تخمین زده شده است‪ :‬فرض کنید که ‪ n‬عنصر در مکانهای پیوسته حافظه در یک سیستم‬
‫حافظه برگی شده ‪ m-way‬ذخیره شده است‪ .‬زمان میانگین ‪ t1‬مورد نیاز برای دسترسی یک عنصر در یک بردار‬
‫توسط رابطه زیر تخمین زده میشود‪:‬‬
‫𝜃‬ ‫‪𝑚−1‬‬
‫) 𝑛 ‪𝑡1 = 𝑚 (1 +‬‬ ‫)‪(5-6‬‬
‫وقتی ∞→‪( n‬بردار خیلی بزرگ) ‪ t1→θ/m=Ƭ‬همانطور که در معادله ‪ 4-5‬بدست آمده است‪ .‬وقتی ‪n→1‬‬
‫(دسترسی اسکالر) ‪ .t1→θ‬معادله ‪ 6-5‬بیان میکند هر چه بردار بزرگتر باشد و دسترسی در حافظه برگی شده‬
‫بصورت خطلوله انجام شود بهتر است‪.‬‬
‫تحمل پذیری خطا‪ :‬برگی کردن سطح پایین و باال میتوانند برای بدست آوردن سازمانهای حافظه برگی شده‬
‫مختلف ترکیب شوند‪ .‬آدرسهای متوالی به هر ماژول حافظه از حافظه برگی شده سطح باال اختصاص داده میشود‪.‬‬
‫این روش‪ ،‬جداکردن ماژولهای حافظه خطادار در یک بانک حافظه با ‪ m‬ماژول حافظه را سادهتر میکند‪ .‬وقتیکه‬
‫یک ماژول خطادار تشخیص داده شده‪ ،‬ماژولهای باقیمانده میتوانند هنوز هم با باز شدن یک پنجره (حفره) در‬
‫فضای آدرس استفاده شوند‪ .‬این جداسازی خطا نمی تواند در حافظه برگی شده سطح پایین انجام شود زیرا ماژول‬
‫خطادار ممکن است روی کل بانک حافظه تأثیر منفی بگذارد‪ .‬بنابراین برگی کردن سطح پایین تحمل پذیری خطا‬
‫ندارد‪.‬‬
‫مثال ‪ :13-5‬بانکهای حافظه‪ ،‬تحمل پذیری خطا و حد میانههای پهنای باند‬

‫در شکل ‪ 25-5‬دو شماتیک آدرس دهی نشان داده شده است که مفاهیم برگی کردن سطح پایین و باال را با هم‬
‫ترکیب کرده است‪ .‬این روشها پهنای باند بهتری را در حالت خطای ماژول ارائه میدهند‪ .‬برگی کردن سطح پایین‬
‫‪-4‬راهه در هر دو بانک حافظه در شکل ‪(25-5‬الف) سازماندهی شده است‪.‬‬
‫برگی کردن سطح پایین ‪-2‬راهه در شکل ‪(25-5‬ب) نشان داده شده است‪ .‬که سیستم حافظه به ‪ 4‬بانک تقسیم‬
‫شده است‪ .‬بیتهای با ارزشتر برای تعیین بانک حافظه استفاده میشوند‪ .‬بیتهای کم ارزشتر برای آدرس ماژول‪-‬‬
‫های برگی شده استفاده میشوند‪.‬‬
‫در حالت خطای یک ماژول‪ ،‬حداکثر پهنای باند حافظه برگی شده ‪ 8‬راهه (شکل ‪(24-5‬الف)) به صفر کاهش مییابد‬
‫زیرا کل بانک حافظه باید معلق شود‪ .‬برای طرح دو بانک ‪-4‬راهه (شکل ‪(24-5‬الف)) حداکثر پهنای باند به ‪ 4‬کلمه‬
‫در هر سیکل کاهش مییابد زیرا یکی از دو بانک خطادار معلق میشود‪.‬‬
‫در طرح ‪-2‬راهه در شکل ‪(25-5‬ب)‪ ،‬سیستم حافظه به نرمی افت پیدا میکند و هنوز هم ‪ 3‬بانک حافظه کار‬
‫میکنند‪ .‬بنابراین حداکثر پهنای باند ‪ 6‬کلمه مورد انتظار است‪ .‬هر چه درجه برگی کردن بیشتر باشد‪ ،‬اگر سیستم‬
‫بدون خطا باشد‪ ،‬پتانسیل پهنای باند حافظه بیشتر است‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪264‬‬

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

‫ثبات آدرس حافظه (‪ 6‬بیت)‬


‫آدرس بانک‬
‫آدرس ماژول‬

‫‪M0‬‬ ‫‪M1‬‬ ‫‪M2‬‬ ‫‪M3‬‬ ‫‪M4‬‬ ‫‪M5‬‬ ‫‪M6‬‬ ‫‪M7‬‬


‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪32‬‬ ‫‪33‬‬ ‫‪34‬‬ ‫‪35‬‬
‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪36‬‬ ‫‪37‬‬ ‫‪38‬‬ ‫‪39‬‬
‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪40‬‬ ‫‪41‬‬ ‫‪42‬‬ ‫‪43‬‬
‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫‪44‬‬ ‫‪45‬‬ ‫‪46‬‬ ‫‪46‬‬
‫آدرس‬ ‫‪16‬‬ ‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪48‬‬ ‫‪49‬‬ ‫‪50‬‬ ‫‪51‬‬
‫کلمه‬ ‫‪20‬‬ ‫‪21‬‬ ‫‪22‬‬ ‫‪23‬‬ ‫‪52‬‬ ‫‪53‬‬ ‫‪54‬‬ ‫‪55‬‬
‫‪24‬‬ ‫‪25‬‬ ‫‪26‬‬ ‫‪27‬‬ ‫‪56‬‬ ‫‪57‬‬ ‫‪58‬‬ ‫‪59‬‬
‫‪28‬‬ ‫‪29‬‬ ‫‪30‬‬ ‫‪31‬‬ ‫‪60‬‬ ‫‪61‬‬ ‫‪62‬‬ ‫‪63‬‬

‫بانک ‪0‬‬ ‫بانک ‪1‬‬


‫(الف) برگی کردن سطح ‪ 4-way‬در هر بانک حافظه‬
‫ثبات آدرس حافظه (‪ 6‬بیت)‬

‫آدرس ماژول‬

‫‪M0‬‬ ‫‪M1‬‬ ‫‪M2‬‬ ‫‪M3‬‬ ‫‪M4‬‬ ‫‪M5‬‬ ‫‪M6‬‬ ‫‪M7‬‬


‫‪0‬‬ ‫‪1‬‬ ‫‪16‬‬ ‫‪17‬‬ ‫‪32‬‬ ‫‪33‬‬ ‫‪48‬‬ ‫‪49‬‬
‫‪2‬‬ ‫‪3‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪34‬‬ ‫‪35‬‬ ‫‪50‬‬ ‫‪51‬‬
‫‪4‬‬ ‫‪5‬‬ ‫‪20‬‬ ‫‪21‬‬ ‫‪36‬‬ ‫‪37‬‬ ‫‪52‬‬ ‫‪53‬‬
‫‪6‬‬ ‫‪7‬‬ ‫‪22‬‬ ‫‪23‬‬ ‫‪38‬‬ ‫‪39‬‬ ‫‪54‬‬ ‫‪55‬‬
‫آدرس‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪24‬‬ ‫‪25‬‬ ‫‪40‬‬ ‫‪41‬‬ ‫‪56‬‬ ‫‪57‬‬
‫کلمه‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪26‬‬ ‫‪27‬‬ ‫‪42‬‬ ‫‪43‬‬ ‫‪58‬‬ ‫‪59‬‬
‫‪12‬‬ ‫‪13‬‬ ‫‪28‬‬ ‫‪29‬‬ ‫‪44‬‬ ‫‪45‬‬ ‫‪60‬‬ ‫‪61‬‬
‫‪14‬‬ ‫‪15‬‬ ‫‪30‬‬ ‫‪31‬‬ ‫‪46‬‬ ‫‪47‬‬ ‫‪63‬‬ ‫‪63‬‬
‫بانک‪ 0‬آدرس بانک‬ ‫بانک‬ ‫بانک‪2‬‬ ‫بانک‪3‬‬
‫(الف) برگی کردن ‪ 2-way‬در داخل هر بانک‪1‬حافظه‬
‫شکل ‪ :25-5‬آنالیز پهنای باند دو روش سازمان حافظه برگی شده روی ‪ 8‬ماژول حافظه‬

‫‪ -3-3-5‬شماتیک های تخصیص حافظه‬

‫ایده حافظه مجازی اجازه دادن به تعداد زیادی پردازه نرمافزاری است که بصورت اشتراک زمانی از حافظه اصلی‬
‫که یک منبع با ظرفیت محدود است استفاده کنند‪ .‬قسمتی از کرنل ‪ OS‬که تخصیص و بازپسگیری حافظه اصلی‬
‫را برای اجرای پردازهها انجام میدهد‪ ،‬مدیر حافظه نامیده میشود‪ .‬مدیر حافظه مقدار حافظه قابل دسترسی حافظه‬
‫اصلی را مانیتور میکند و تصمیم میگیرد که چه پردازشهایی باید در حافظه اصلی قرار گیرند و چه پردازشهایی‬
‫باید به حافظه دیسک برگردانده شوند اگر حافظه اصلی پر شود‪ .‬در این بخش‪ ،‬مفاهیم تعویض حافظه را چه در‬
‫سطح پردازه یا در سطح یک صفحه خاص مطالعه میکنیم‪.‬‬
‫‪| 265‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫سیاستهای تخصیص‪ :‬تعویض حافظه‪ ،‬پردازه انتقال بلوکهای اطالعاتی بین سطوح یک سلسله مراتب‬
‫حافظه می باشد‪ .‬برای سادگی‪ ،‬روی تعویض بین حافظه اصلی و حافظه دیسک تمرکز میکنیم‪ .‬چندین مفهوم‬
‫کلیدی یا راهچارههای طراحی در پیادهسازی تعویض حافظه در زیر معرفی میشوند‪.‬‬
‫اوالً‪ :‬سیاست تعویض یا پس گرفتنی یا پس نگرفتنی میتواند پیاده شود‪ .‬در تخصیص پس نگرفتنی‪ ،‬بلوک ورودی‬
‫فقط در ناحیه خالی یک بلوک در حافظه اصلی قرار میگیرد‪ .‬شماتیک تخصیص پسگرفتنی اجازه جایگزینی یک‬
‫بلوک ورودی به ناحیه ای که در حال حاضر توسط پردازه دیگری اشغال شده است را میدهد‪ .‬در حالت دیگر مدیر‬
‫حافظه ابتدا باید برای تخصیص فضای خالی سعی کند‪.‬‬
‫وقتی که فضای حافظه اصلی کامالً تخصیص داده باشد‪ ،‬شماتیک پس نگرفتنی بعضی پردازههای تخصیص داده‬
‫شده (یا صفحات) را به منظور آزادسازی فضا برای بلوک ورودی بیرون میاندازد‪ .‬به عبارت دیگر شماتیک پس‪-‬‬
‫گرفتنی آزادی پسگرفتن پردازهها در حال اجرا را دارد‪ .‬پیادهسازی شماتیک پسنگرفتنی سادهتر است‪ ،‬اما ممکن‬
‫است باعث بهترین بهرهبرداری از حافظه نشود‪.‬‬
‫شماتیک پسگرفتنی انعطاف پذیری بیشتری دارد اما مکانیزمهایی برای تعیین اینکه چه صفحات یا پردازههایی‬
‫باید خارج شوند تا از فضاهای پرت ایجاد شده توسط تعویضهای زیاد بین سطوح مختلف حافظه جلوگیری کند‪،‬‬
‫نیاز دارد‪ .‬این به این معنی است که شماتیک تخصیص پسگرفتنی پیچیدهتر است و پیادهسازی گرانتری دارد‪.‬‬
‫در مجموع‪ ،‬یک سیاست تخصیص میتواند عمومی یا محلی باشد‪ .‬یک سیاست تخصیص محلی فقط شامل مجموعه‬
‫کاری پردازه خطادار میباشد‪ .‬سیاست تخصیص سراسری تاریخچه مجموعه کاری همه پردازهها را برای تصمیم‪-‬‬
‫گیری راجع به تعویض در نظر میگیرد‪ .‬اکثر کامپیوترها از سیاست محلی استفاده میکنند‪.‬‬
‫سیستمهای تعویض‪ :1‬اشاره به سیستمهای حافظهای دارد که اجازه تعویض را در کل سطح پردازه میدهد‪.‬‬
‫یک دستگاه تعویض یک بخش قابل پیکربندی دیسک است که برای ذخیره موقت اطالعاتی که از حافظه اصلی‬
‫خارج می شوند کنار گذاشته شده است‪ .‬قسمتی از حافظه دیسک کنار گذاشته شده برای یک دستگاه تعویض را‬
‫فضای تعویض میگویند همانطور که در شکل ‪ 26-5‬نشان داده شده است‪.‬‬
‫مدیر حافظه در هر لحظه یک بلوک از فضای دیسک را برای فایل برنامه تخصیص میدهد‪ .‬اما فضای روی دستگاه‬
‫تعویض را با گروهی پیوسته از بلوکها تخصیص میدهد‪ .‬به منظور سادگی فرض میکنیم که بلوکها صفحات با‬
‫طول ثابت هستند‪ .‬فضای آدرس مجازی یک پردازه ممکن است تعدادی صفحه را اشغال کند‪ .‬اندازه یک فضای‬
‫پردازه با مقدار فضای فیزیکی قابل دسترس روی یک سیستم تعویض محدود میشود‪.‬‬
‫این سیستم تعویض در ‪ PDP-11‬و سیستمهای یونیکس استفاده میشود و کل پردازه را بین حافظه اصلی و‬
‫دستگاه تعویض انتقال میدهد و قسمتی (صفحاتی) از یک پردازه را بطور مجزا منتقل نمیکند‪ .‬به عنوان مثال‬
‫‪ PDP-11‬اندازه پردازه را حداکثر ‪ 64KB‬مجاز میداند‪ .‬کل پردازه باید در حافظه اصلی برای اجرا قرار گیرد‪.‬‬
‫یک مثال ساده در شکل ‪ 26.5‬نشان داده شده است تا مفهوم ورود و خروج یک پردازه شامل ‪ 5‬صفحه مقیم که با‬
‫آدرسهای ‪ 0‬و ‪ 1k‬و ‪ 16k‬و ‪ 17k‬و ‪ 63k‬مشخص شدهاند را توضیح دهد‪ .‬هر صفحه با اندازه ‪ 1k‬کلمه فرض‬
‫شده است (یا ‪ 4KB‬برای طول کلمه ‪ 32‬بیتی)‪.‬‬

‫‪1‬‬
‫‪Swapping Systems‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪266‬‬

‫شکل ‪(26-5‬الف) تخصیص حافظه فیزیکی قبل از تعویض را نشان میدهد‪ .‬فرض میشود حافظه اصلی ‪1024‬‬
‫فریم صفحه دارد و دیسک میتواند ‪ 4M‬صفحه را نگه دارد‪ .‬پنج صفحه مقیم که در حافظه اصلی توزیع شدهاند‬
‫بصورت صفحات پیوسته خارج میشوند که در شکل با جعبههای سایه دار نشان داده شدهاند‪.‬‬
‫در آینده کل پروسه ممکن است نیاز به ورود مجدد به حافظه اصلی داشته باشد همانطور که در شکل ‪(26-5‬ب)‬
‫نشان داده شده است‪ .‬ممکن است فریمهای صفحه متفاوتی برای نگهداری صفحات بازگشتی استفاده شوند‪ .‬دلیل‬
‫پیوستگی بلوکهای نگاشت شده در دستگاه تعویض‪ ،‬سرعت بیشتر ورودی‪/‬خروجی در انتقال چند بلوکه بجای چند‬
‫انتقال تک بلوکه میباشد‪.‬‬
‫حافظه اصلی‬
‫‪.‬‬ ‫حافظه دیسک‬
‫‪.‬‬ ‫‪0‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫(‪)63K‬‬ ‫‪.‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪16K‬‬
‫‪.‬‬ ‫فضای‬ ‫‪4M‬‬
‫‪.‬‬ ‫تعویض‬
‫‪.‬‬ ‫‪.‬‬
‫(‪)0‬‬ ‫‪.‬‬
‫(‪)1k‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫(‪)17k‬‬
‫(الف) انتقال یک پردازه (یا صفحات) به فضای تعویض در یک دیسک‬
‫حافظه اصلی‬ ‫حافظه دیسک‬
‫(‪)0‬‬ ‫‪0‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫)‪(16k‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬
‫‪.‬‬ ‫‪4M‬‬
‫فضای‬
‫)‪(63k‬‬ ‫تعویض‬
‫‪0‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪17k‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬
‫‪1k‬‬ ‫(ب) ورود یک پردازه (یا صفحات) به حافظه اصلی‬
‫شکل ‪ : 26-5‬مفهوم تعویض حافظه در یک سلسله مراتب حافظه مجازی‬

‫نکته اینکه فقط صفحات منتسب شده به داخل و خارج تعویض میشوند نه کل فضای آدرس پروسه‪ .‬در پردازه‬
‫مثال‪ ،‬کل فضای آدرس پروسه ‪ 64KB‬فرض شده است‪.‬‬
‫‪| 267‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫تعویض در یونیکس‪ :‬در سیستم عامل یونیکس‪ ،‬کرنل یک پردازه را از حافظه خارج میکند تا فضای حافظه‬
‫آزاد تحت فراخوانیهای سیستمی زیر ایجاد کند‪:‬‬
‫‪ )1‬تخصیص فضا برای پردازه فرزند ایجاد شده‪.‬‬
‫‪ )2‬افزایش در اندازه فضای آدرس یک پروسه‪.‬‬
‫‪ )3‬تقاضای فضای بیشتر توسط پشته یک پردازه‪.‬‬
‫‪ )4‬تقاضای فضا توسط یک پروسه که قبالً خارج شده است‪.‬‬
‫در یونیکس یک پردازه خاص ‪ 0‬به عنوان یک تعویض کننده رزرو میشود‪ .‬تعویض کننده باید پردازه را قبل از اینکه‬
‫کرنل بتواند آنرا برای اجرا زمانبندی کند به داخل حافظه اصلی تعویض کند‪ .‬در حقیقت پردازه ‪ 0‬تنها پردازهای‬
‫است که میتواند اینکار را انجام دهد‪ .‬فقط وقتیکه پردازههایی برای ورود و خروج موجود باشد تعویض کننده‬
‫می تواند کارش را انجام دهد‪ .‬در غیر اینصورت‪ ،‬تعویض کننده به خواب میرود‪ .‬به هر حال‪ ،‬در صورت نیاز کرنل‬
‫تعویض کننده را بیدار می کند‪ .‬تعویض کننده باید طوری طراحی شود تا از فضای پرت باالخص در خروج یک‬
‫پردازهای که هنوز اجرا نشده است‪ ،‬اجتناب کند‪.‬‬

‫سیستمهای صفحه بندی بر اساس نیاز‪ :1‬یک سیستم حافظه صفحه بندی شده اغلب از سیاست تخصیص‬
‫حافظه صفحهبندی براساس نیاز استفاده میکند‪ .‬این سیاست فقط اجازه انتقال صفحات (نه پردازهها) را بین حافظه‬
‫اصلی و دستگاه تعویض میدهد‪ .‬در شکل ‪ 26-5‬صفحات منفرد از یک پردازه اجازه داده میشوند تا بطور مستقل‬
‫به داخل و خارج حافظه منتقل شوند و ما سیستم صفحهبندی براساس نیاز را داریم‪.‬‬

‫نسخه ‪ UNIX BSD 4.0‬اولین پیادهسازی سیاست صفحه بندی براساس نیاز بود‪ .‬نسخههای اخیر یونیکس نیز‬
‫صفحه بندی براساس نیاز را پشتیبانی میکنند‪ .‬در یک سیستم صفحه بندی براساس نیاز‪ ،‬کل پردازه لزوماً برای‬
‫اجرا به داخل حافظه اصلی منتقل نمیشود‪ .‬صفحات فقط براساس نیاز به داخل حافظه اصلی آورده میشوند‪.‬‬

‫این روش اجازه می دهد تا فضای آدرس پردازه از فضای آدرس فیزیکی بزرگتر باشد‪ .‬مزیت عمده صفحه بندی‬
‫براساس نیاز این است که انعطاف پذیری ذخیره پویای تعداد زیادی پردازه در حافظه فیزیکی را در یک سیستم‬
‫چندبرنامهای اشتراک زمانی با فضای آدرس کامالً بزرگ ارائه میدهد‪.‬‬

‫ایده صفحه بندی براساس نیاز با مفهوم مجموعه کاری به زیبایی تطابق دارد‪ .‬فقط مجموعههای کاری پردازههای‬
‫فعال در حافظه مقیم هستند‪ .‬مجموعه کاری یک پردازه‪ ،‬مجموعه صفحاتی است که توسط پردازه در ‪ n‬مراجعه‬
‫اخیر مورد رجوع قرار گرفتهاند‪ ،‬که ‪ ،n‬اندازه پنجره مجموعه کاری است‪.‬‬

‫مثال ‪ :14-5‬مجموعههای کاری تولید شده در یک ردیابی صفحه‬

‫‪1‬‬
‫‪Demand Paging‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪268‬‬

‫در ردیابی صفحه زیر‪ ،‬محتویات متوالی یک مجموعه کاری از یک پردازه برای یک پنجره با اندازه ‪ n=3‬نشان داده‬
‫شده است‪.‬‬

‫ردیابی صفحه‬ ‫‪7‬‬ ‫‪24‬‬ ‫‪7‬‬ ‫‪15‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪8‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪24‬‬ ‫‪8‬‬ ‫‪1‬‬
‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪8‬‬
‫مجموعه کاری‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪9‬‬ ‫‪9‬‬ ‫‪9‬‬ ‫‪1‬‬
‫‪15‬‬ ‫‪15‬‬ ‫‪15‬‬ ‫‪15‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪24‬‬ ‫‪24‬‬ ‫‪24‬‬
‫اگر کرنل بتواند مجموعه های کاری با یک پنجره به اندازه کافی بزرگ را در حافظه اصلی نگه دارد‪ ،‬پردازههای‬
‫فعال بسیار بیشتری از آنچه سیستم تعویض میتواند تهیه کند‪ ،‬میتوانند بطور همزمان در حافظه قرار گیرند‪ .‬این‬
‫توان عملیاتی سیستم را افزایش میدهد و ترافیک تعویض را کاهش میدهد‪ .‬به عبارت دیگر‪ ،‬صفحاتی که مورد‬
‫نیاز نیستند در پردازه تعویض قرار نمیگیرند‪.‬‬

‫سیستمهای حافظه ترکیبی‪ :‬سیستم ‪ VAX/VMS‬و سیستم ‪ UNIX V‬سیستمهای حافظه ترکیبی را پیاده‪-‬‬
‫سازی کردهاند که از مزایای تعویض و صفحه بندی براساس نیاز بهره میبرند‪ .‬وقتی چندین پردازه بطور همزمان‬
‫در شرایط آماده‪-‬اجرا هستند‪ ،‬اما تعویض شده هستند‪ ،‬تعویض کننده ممکن است چندپردازه را کامالً از حافظه خارج‬
‫کند تا فضای مورد نیاز را آزاد کند‪.‬‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬


‫‪In‬‬
‫‪I6‬‬ ‫‪K7‬‬
‫‪.‬‬
‫‪I5‬‬ ‫‪K6‬‬
‫ترتیب‬ ‫‪.‬‬ ‫‪J5‬‬
‫‪PO‬‬ ‫‪I4‬‬ ‫‪PO‬‬ ‫‪PO‬‬ ‫‪K5‬‬
‫‪.‬‬ ‫‪J4‬‬
‫برنامه‬ ‫‪I3‬‬ ‫‪K4‬‬
‫‪I5‬‬ ‫‪J3‬‬
‫)‪(PO‬‬ ‫‪I2‬‬ ‫‪K3‬‬
‫‪I4‬‬ ‫‪J2‬‬
‫‪I1‬‬ ‫‪K2‬‬
‫‪I3‬‬ ‫‪J1‬‬ ‫‪K1‬‬
‫‪I2‬‬
‫‪I1‬‬

‫ترتیب‬ ‫سیستم‬ ‫سیستم حافظه مشترک‬


‫حافظه‬ ‫حافظه‬ ‫( یک ترتیب حافظه سراسری برای همه پردازندهها)‬

‫(الف) سازگاری ترتیبی در یک سیستم ‪SISD‬‬ ‫(ب) ترتیب رخداد در یک سیستم ‪MIMD‬‬
‫پردازنده ‪1‬‬ ‫پردازنده ‪2‬‬ ‫پردازنده ‪3‬‬
‫‪a. A:=1‬‬ ‫‪c. B:=1‬‬ ‫‪e. C:=1‬‬
‫‪b. Print B,C‬‬ ‫‪d. Print A,C‬‬ ‫‪f. Print A,B‬‬

‫‪ A,B,C‬متغیرهای قابل نوشتن اشتراکی در حافظه‬


‫هستند‪( .‬ابتداً‪)A=B=C=0 ،‬‬
‫(ج) یک اجرای موازی برای مثال ‪9-5‬‬
‫شکل‪ :27-5‬ترتیب دسترسی رخدادهای حافظه در یک پردازنده و چند پردازنده‬
‫‪| 269‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫‪1‬‬ ‫‪-4-5‬مدلهای ترکیبی و سازگاری ضعیف‬


‫در این بخش رفتار حافظه مشترک در رابطه با ترتیب اجرای برنامه و ترتیب دسترسی‪-‬حافظه را بررسی میکنیم‪.‬‬
‫مدل های حافظه سازگاری ترتیبی و سازگاری ضعیف را تعریف و پتانسیل آنها برای بهبود کارایی مورد بررسی قرار‬
‫میگیرد‪ .‬در فصل ‪ ،9‬سازگاری پردازنده و مدلهای سازگاری ‪ release‬را برای ساخت سیستمهای چند پردازنده‬
‫مقیاس پذیر معرفی خواهیم کرد‪.‬‬

‫‪ -1-4-5‬اتمی بودن و ترتیب رخدادها‬


‫مسأله عدم سازگاری حافظه وقتیکه ترتیب دسترسی حافظه از ترتیب اجرای برنامه متفاوت باشد بوجود میآید‪.‬‬
‫همانطور که در شکل ‪(27-5‬الف) نشان داده شده است یک سیستم تک پردازنده یک رشته ‪ SISD‬را در یک رشته‬
‫اجرای مشابه نگاشت میدهد‪ .‬بنابراین دسترسیهای حافظه (برای داده و دستور) سازگار با ترتیب اجرای برنامه‬
‫است‪ .‬به این خصوصیت سازگاری ترتیبی میگویند‪.‬‬

‫همانطور که در شکل ‪(27-5‬ب) نشان داده شده است‪ ،‬در یک چندپردازنده حافظه مشترک‪ ،‬چندین رشته دستور در‬
‫پردازندههای مختلف وجود دارند‪ .‬روشهای مختلف برگی کردن رشتههای دستور ‪ MIMD‬به رشته دسترسی‪-‬‬
‫حافظه سراسری منجر به رفتارهای متفاوت حافظه مشترک میشود‪.‬‬

‫اینکه چگونه این رشتهها با هم سازگار میشوند رفتار حافظه را به مدلهای ضعیف و قوی تقسیم میکند‪ .‬کیفیت‬
‫یک مدل حافظه با بازدهی سختافزار‪ /‬نرمافزار‪ ،‬سادگی‪ ،‬کارآمد بودن و کارایی پهنای باند مشخص میشود‪.‬‬

‫مسائل سازگاری حافظه‪ :‬رفتار یک سیستم حافظه که توسط پردازنده مشاهده میشود را مدل حافظه میگویند‪.‬‬
‫نوع مدل حافظه به سه سؤال پایه پاسخ میدهد‪ )1( :‬چه رفتاری یک برنامه نویس‪/‬کامپایلر از چندپردازنده حافظه‪-‬‬
‫مشترک باید انتظار داشته باشد؟ (‪ )2‬چگونه تعریف رفتار مورد انتظار پوشش همه رویدادها را ضمانت میکند؟ (‪)3‬‬
‫چگونه باید پردازنده ها و سیستم حافظه رفتار کنند تا سازگاری مورد انتظار از یک چندپردازنده را تأمین کنند؟ باید‬
‫حدبهینهای بین مدل ها انتخاب شود‪ .‬استفاده از ترتیب جزئی در تعیین رخدادهای حافظه توصیفی مناسب از رفتار‬
‫حافظه خاص ایجاد میکند‪.‬‬

‫ترتیب رخدادها‪ :‬در یک سیستم چندپردازنده‪ ،‬رشته دستورات همروند (یا نخها)یی که روی پردازندههای مختلف‬
‫اجرا میشوند‪ ،‬پردازهها هستند‪ .‬هر پردازه یک سگمنت کد را اجرا میکند‪ .‬ترتیبی که عملیات حافظه مشترک توسط‬
‫یک پردازه انجام میشوند ممکن است توسط سایر پردازهها استفاده شود‪ .‬رخدادهای حافظه مرتبط با دسترسیهای‬
‫حافظه مشترک میباشند‪ .‬مدلهای سازگاری‪ ،‬ترتیبی که رخدادهای یک پردازه باید توسط سایر پردازههای ماشین‬
‫مشاهده شود را تعیین میکند‪.‬‬

‫‪1‬‬
‫‪Weak Consistency Models‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪270‬‬

‫ترتیب رخداد برای تعیین اینکه آیا یک رخداد حافظه‪ ،‬وقتیکه چندین پردازه به یک مجموعه مشترک از مکانهای‬
‫حافظه دسترسی مییابند‪ ،‬قانونی یا غیرقانونی است‪ ،‬میتواند استفاده شود‪ .‬یک ترتیب برنامه‪ ،‬ترتیبی که دسترسی‪-‬‬
‫های حافظه برای اجرای یک پردازه اتفاق میافتد میباشد‪ ،‬اگر هیچ مرتب سازی مجدد برنامه اتفاق نیافتد‪.‬‬
‫‪ )1986( Dubois‬سه عمل اولیه حافظه به منظور تعیین مدلهای سازگاری را تعریف کرده است‪:‬‬

‫(‪ )1‬یک ‪ load‬توسط پردازنده ‪ Pi‬نسبت به پردازنده ‪ Pk‬در یک نقطه از زمان انجام میشود اگر انتشار یک‬
‫دستور ‪ store‬در همان مکان توسط ‪ Pk‬نتواند بر مقدار برگشتی ‪ load‬اثر بگذارد‪.‬‬
‫(‪ )2‬یک ‪ store‬توسط ‪ Pi‬نسبت به ‪ Pk‬در یک زمان انجام میشود اگر انتشار ‪ load‬به همان آدرس‬
‫توسط ‪ Pk‬مقدار ذخیره شده توسط ‪ store‬را برگرداند‪.‬‬
‫(‪ )3‬یک ‪ load‬بطور سراسری نسبت به همه پردازندهها انجام میشود اگر ‪store‬ی که منبع مقدار برگشت‬
‫داده شده است نسبت به همه پردازندهها انجام شده باشد‪.‬‬

‫همانطور که در شکل ‪( 27-5‬الف) نشان داده شده است‪ ،‬یک پردازنده به منظور ترقی کارایی میتواند دستورات را‬
‫خارج از ترتیب برنامه با استفاده از یک کامپایلر که دستورات را مجدداً مرتب کرده است انجام دهد‪ .‬یک سیستم‬
‫تک پردازنده این اجرای خارج از ترتیب را مجاز میداند اگر مکانیزمهای درهم قفلی سخت افزاری وجود داشته باشد‬
‫تا وابستگیهای داده و کنترل بین دستورات را چک کند‪.‬‬

‫وقتی که یک پردازنده در یک سیستم چندپردازنده یک برنامه همروند را اجرا میکند همانطور که در شکل ‪-5‬‬
‫‪(275‬ب) نشان داده شده است‪ ،‬چک وابستگی الزم است اما ممکن است برای نگهداشتن خروجی مورد نظر اجرای‬
‫همروند کافی نباشد‪.‬‬

‫نگهداری صحت و پیشبینی نتایج اجرا در یک سیستم ‪ MIMD‬به دالیل زیر پیچیده است‪.‬‬

‫(الف) ترتیبی که دستورات در رشتههای مختلف قرار میگیرند و اجرا میشوند در یک برنامه موازی ثابت نیست‪.‬‬
‫اگر همزمانی بین رشته دستورات وجود نداشته باشد‪ ،‬آنگاه تعداد زیادی برگی کردن دستورات امکانپذیر است‪.‬‬

‫(ب) اگر بدالیل کارایی‪ ،‬ترتیب اجرای دستورات واقع شده در یک رشته از ترتیب برنامه متفاوت باشد‪ ،‬آنگاه حتی‬
‫تعداد بیشتری برگی کردن دستورات ممکن است‪.‬‬

‫(ج) اگر دسترسیها با کپیهای مختلف دادههای مشابه اتمیک نباشند مثل یک سیستم حافظه نهان‪ ،‬آنگاه پردازنده‪-‬‬
‫های مختلف میتوانند برگی کردنهای مختلفی را در اجرای مشابه مشاهده کنند‪ .‬در این حالت‪ ،‬شرایط اجرای یک‬
‫برنامه ممکن است حتی بزرگتر هم شود‪.‬‬

‫مثال ‪ 15-5‬ترتیب رخدادها در یک سیستم سه پردازنده‬


‫‪| 271‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫برای نشان دادن روشهای ممکن برگی کردن اجراهای برنامه همروند بین پردازندههای مختلف که حافظه مشابهی‬
‫را بروز میکنند‪ ،‬اجراهای همزمان و آسنکرون سه قطعه برنامه را در یک سه پردازنده نشان داده شده در شکل ‪-5‬‬
‫‪(27‬ج) چک میکنیم‪.‬‬
‫متغیرهای مشترک ابتداً مقدار صفر میگیرند و فرض میکنیم یک دستور ‪ ،print‬هر دو متغیر را به منظور اجتناب‬
‫از تداخل در یک سیکل مشابه به یکباره میخواند‪ .‬اگر خروجیهای هر سه پردازنده به ترتیب ‪ P1‬و ‪ P2‬و ‪ P3‬باشند‬
‫آنگاه خروجی یک شش تایی از بردارهای باینری را شکل میدهد‪.‬‬
‫‪ 26=64‬ترکیب خروجی وجود دارد‪ .‬اگر همه پردازندهها دستورات را با ترتیب برنامه خودشان اجرا کنند آنگاه اجرای‬
‫برگی ‪ a,b,c,d,e,f‬ممکن است و خروجی ‪ 001011‬را نتیجه میدهد‪ .‬برگی برگی کردن دیگر ‪ a,c,e,b,d,f‬نیز‬
‫ترتیب برنامه را حفظ میکند و خروجی ‪ 111111‬را نتیجه میدهد‪.‬‬
‫اگر پردازندهها مجاز به اجرای خارج از ترتیب برنامه باشند با فرض اینکه وابستگی داده بین دستورات مجدداً مرتب‬
‫شده وجود نداشته باشد‪ ،‬آنگاه برگی کردن ‪ b,d,f,e,a,c‬نیز ممکن است و خروجی ‪ 000000‬را نتیجه میدهد‪.‬‬
‫تا ‪ 6!=720‬اجرای برگی امکان پذیر است که ‪ 90‬تای آن ترتیب اجرای برنامه را حفظ میکنند‪ .‬از این ‪ 90‬برگی‬
‫کردن همه ترکیبهای ‪ 6‬تایی منتج نمیشوند‪ .‬به عنوان مثال خروجی ‪ 000000‬اگر پردازندهها دستورات را فقط به‬
‫ترتیب برنامه اجرا کنند‪ ،‬ممکن نیست‪ .‬به عنوان مثال دیگر‪ ،‬خروجی ‪ 011001‬اگر پردازندههای مختلف بتوانند‬
‫رخدادها را به ترتیب مختلف مشاهده کنند‪ ،‬ممکن است‪.‬‬

‫اتمیک بودن‪ :‬از مثال فوق‪ ،‬رفتار حافظه چندپردازنده میتواند در سه گروه توصیف شود‪:‬‬

‫(‪ )1‬ترتیب برنامه حفظ میشود و ترتیب مشاهده یکنواختی توسط همه پردازندهها انجام میشود‪.‬‬
‫(‪ )2‬خارج از ترتیب برنامه‪ ،‬مجاز است و ترتیب یکنواختی توسط همه پردازندهها مشاهده میشود‪.‬‬
‫(‪ )3‬خارج از ترتیب برنامه مجاز است‪ ،‬و ترتیب غیریکنواختی توسط پردازندههای مختلف مشاهده میشود‪.‬‬

‫این طبقهبندی رفتار منجر به دو کالس سیستمهای حافظه‪-‬مشترک برای چندپردازندهها میشود‪ :‬اولی اجازه‬
‫دسترسی حافظه اتمیک میدهد و دومی اجازه دسترسی حافظه غیراتمی را میدهد‪ .‬یک دسترسی حافظه‪-‬مشترک‬
‫اتمیک است اگر بروزرسانیهای حافظه برای همه پردازندهها در یک زمان شناخته شده باشند‪ .‬بنابراین یک ‪store‬‬
‫اتمیک است اگر مقدار ذخیره شده قابل خواندن توسط همه پردازندهها در یک زمان باشد‪ .‬بنابراین شرط الزم و‬
‫کافی برای اینکه یک حافظه اتمیک سازگاری ترتیبی داشته باشد این است که همه دسترسیهای حافظه باید انجام‬
‫شوند تا همه ترتیبهای منحصر بفرد برنامه‪ 1‬را نگه دارند‪.‬‬

‫در یک چندپردازنده با دسترسیهای حافظه غیراتمیک‪ ،‬داشتن ترتیبهای منحصر بفرد برنامه شرط کافی برای‬
‫سازگاری ترتیبی نیست‪ .‬در یک چندپردازنده براساس حافظه نهان‪/‬شبکه‪ ،‬سیستم میتواند غیر اتمیک باشد اگر یک‬
‫سیگنال عدم اعتبار به هم پردازندهها در یک زمان نرسد‪ .‬بنابراین یک ‪ store‬در چنین معماری ذاتأ غیراتمیک‬

‫‪1‬‬
‫‪Individual program order‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪272‬‬

‫است مگر اینکه مکانیزمهای سخت افزاری خاص برای تهیه اتمیک بودن فراهم شود‪ .‬فقط در یک سیستم اتمیک‬
‫ترتیب رخدادهای حافظه میتواند قویاً مرتب شود تا ترتیب برنامه را سازگار با ترتیب دسترسی‪-‬حافظه بسازد‪.‬‬

‫در یک سیستم حافظه غیراتمیک‪ ،‬چندپردازنده نمیتواند قویاً مرتب باشد‪ .‬بنابراین مرتب سازی ضعیف در یک‬
‫چندپردازنده با دسترسی حافظه غیراتمیک مطلوب است‪ .‬بحث فوق منجر به تقسیم بین مدلهای حافظه قویاً سازگار‬
‫و سازگار ضعیف میشود که در دو زیر بخش بعد توصیف میشوند‪:‬‬
‫ترتیبی ‪1‬‬ ‫‪ -2-4-5‬مدل سازگاری‬
‫مدل حافظه سازگار ترتیبی (‪ )SC‬بین طراحان چندپردازنده بطور گستردهای فهمیده شده است‪ .‬در این مدل‪،load ،‬‬
‫‪ store‬و ‪ swap‬همه پردازندهها برای اجرای سریال در یک ترتیب حافظه سراسری که با ترتیبهای برنامه‬
‫منحصربفرد پردازندهها تطابق دارد‪ ،‬ظاهر میشوند‪ .‬همانطور که در شکل ‪ 28-5‬نشان داده شده است‪ .‬دو تعریف‬
‫مدل ‪ SC‬در زیر آمده است‪.‬‬
‫پردازندهها‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪Pn‬‬

‫سوئیچ‬
‫سیستم حافظه‬
‫مشترک‬ ‫حافظه تک‪-‬پورت‬

‫شکل ‪ :28-5‬مدل حافظه سازگار ترتیبی‬

‫تعریف لمپورت‪ :‬لمپورت سازگاری ترتیبی را به اینصورت تعریف کرده است‪ :‬یک سیستم چندپردازنده سازگار‬
‫ترتیبی است اگر نتیجه هر اجرا مشابه با حالتی باشد که عملیات همه پردازندهها به ترتیب اجرا شوند و عملیات هر‬
‫پردازنده منفرد که در این رشته ظاهر میشوند به ترتیب تعریف شده توسط برنامهشان باشد‪.‬‬

‫‪ )1986( Dubois, Scheurich, Briggs‬دو شرط کافی برای رسیدن به سازگاری ترتیبی در دسترسی حافظه‬
‫مشترک را تعریف کردهاند‪:‬‬

‫(الف) قبل از اینکه به یک ‪ load‬اجازه اجرا نسبت به هر پردازنده‪ ،‬داده شود همه دسترسیهای ‪ load‬قبلی باید‬
‫بطور سراسری انجام شده باشند و همه دسترسیهای ‪ store‬قبلی باید نسبت به همه پردازندهها انجام شده باشند‪.‬‬

‫(ب) قبل از اینکه اجازه دهیم یک ‪ store‬نسبت به هر پردازنده انجام شود‪ ،‬همه دسترسیهای ‪ load‬قبلی و همه‬
‫دسترسیهای ‪ store‬قبلی باید بطور سراسری نسبت به همه پردازندهها انجام شوند‪.‬‬

‫‪ )1992( Sindhu, Frailong, Celkleov‬مدل حافظه سازگار ترتیبی را با ‪ 5‬قاعده کلی زیر تعیین کردهاند‪:‬‬

‫‪1‬‬
‫‪Sequential Consistency Model‬‬
‫‪| 273‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫یک ‪ load‬توسط یک پردازنده همیشه مقدار نوشته شده توسط آخرین ‪ store‬توسط سایر پردازندهها را‬ ‫(‪)1‬‬
‫برمیگرداند‪.‬‬
‫ترتیب حافظه با یک ترتیب باینری کلی مطابقت دارد که حافظه مشترک در زمان قطعی روی همه ‪load‬‬ ‫(‪)2‬‬
‫و ‪ store‬نسبت به همه جفت پردازندهها و زوج مکانها دسترسی میشود‪.‬‬
‫اگر دو عمل در یک ترتیب برنامه خاص ظاهر شود‪ ،‬آنگاه آنها در ترتیب حافظه مشابهی ظاهر میشوند‪.‬‬ ‫(‪)3‬‬
‫عمل ‪ swap‬نسبت به سایر ‪store‬ها اتمیک است‪ Store .‬دیگری نمیتواند بین ‪ store‬و ‪ load‬یک‬ ‫(‪)4‬‬
‫‪ swap‬قرار گیرد‪.‬‬
‫همه ‪store‬ها و ‪swap‬ها باید نهایتاً تمام شوند‪.‬‬ ‫(‪)5‬‬

‫تعریف لمپورت پایه سازگاری ترتیبی میباشد‪ .‬تعریف دوبیوس توسعه تعریف لمپورت میباشد‪ .‬شرایط سازگاری‬
‫ترتیبی تعیین شده توسط سیندو براساس روابط ترتیب جزئی میباشند‪ .‬نیازهای پیادهسازی این محدودیتها در زیر‬
‫بحث میشوند‪.‬‬

‫مالحظات پیادهسازی‪ :‬شکل ‪ 28-5‬نشان میدهد که حافظه مشترک شامل یک پورت است که قادر به سرویس‬
‫دادن دقیقاً یک عمل در هر لحظه میباشند و یک سوئیچ که این حافظه را به یکی از این پردازندهها برای دورههای‬
‫هر عمل حافظه متصل میکند وجود دارد‪ .‬ترتیبی که سوئیچ از یک پردازنده به دیگری میدهد تعیین کننده درجه‬
‫سراسری عملیات دسترسی‪-‬حافظه میباشد‪.‬‬

‫مدل سازگاری ترتیبی به معنی ترتیب کلی ‪ stores/loads‬در سطح دستورالعمل میباشد‪ .‬این باید برای همه‬
‫پردازندهها شفاف باشد‪ .‬به عبارت دیگر‪ ،‬سازگاری ترتیبی باید برای هر پردازنده در سیستم حفظ شود‪.‬‬

‫یک طراح محافظه کار چندپردازنده ممکن است مدل سازگاری ترتیبی را ترجیح دهد‪ ،‬که سازگاری توسط سخت‬
‫افزار به اجرا در میآید‪ .‬دسترسیهای حافظه اتمیک و قویاً مرتب هستند و تداخل میتواند با داشتن پردازنده‪-‬‬
‫ها‪/‬حافظههای نهانی که به اندازه کافی برای رخدادهای غیرمنتظره صبر میکنند اجتناب شود‪.‬‬

‫ترتیب قوی همه دسترسیهای حافظه‪-‬مشترک در مدلسازی ترتیبی برنامه در همه پردازندهها را حفظ میکند‪.‬‬
‫یک چندپردازنده سازگار ترتیبی نمیتواند تشخیص دهد چه موقع سیستم یک تک پردازنده چندکاره است یا‬
‫چندپردازنده است‪ .‬ارتباط بین پردازنده میتواند با ‪ loads/stores‬ساده پیادهسازی شود مثل الگوریتم ‪Dekker‬‬
‫برای ورودی همزمان به داخل ناحیه بحرانی توسط چندپردازنده‪ .‬همه دسترسیهای حافظه باید بطور سراسری به‬
‫ترتیب برنامه انجام شوند‪.‬‬

‫یک پردازنده نمیتواند دسترسی دیگری را منتشر کند تا زمانیکه دسترسی حافظه نوشتنی مشترک اخیر توسط یک‬
‫پردازنده بطور سراسری انجام شود‪ .‬این ممکن است نیاز به انتشار دسترسیهای حافظه مشترک به همه پردازندهها‬
‫داشته باشد که نسبتاً زمانبر و گران است‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪274‬‬

‫اکثر چندپردازندهها مدل سازگاری ترتیبی را به خاطر سادگی آن پیادهسازی کردهاند‪ .‬به هر حال‪ ،‬مدل ممکن است‬
‫منجر به کارایی نسبتاً ضعیف حافظه به خاطر ترتیب قوی تحمیل شده بر رخدادهای حافظه‪ ،‬شود‪ .‬این باالخص‬
‫زمانی درست است که سیستم خیلی بزرگ شود‪ .‬سازگاری ترتیبی مقیاسپذیری یک سیستم چندپردازنده را کاهش‬
‫میدهد‪.‬‬
‫ضعیف‪1‬‬ ‫‪ -3-4-5‬مدل های سازگاری‬
‫مدل حافظه چندپردازنده ممکن است سازگاری قوی (یا ترتیبی) داشته باشد یا درجات مختلفی از سازگاری ضعیف‬
‫داشته باشد‪ .‬در این بخش‪ ،‬مدل سازگاری ضعیف معرفی شده توسط دبیوس (‪ )1986‬و مدل ‪ TSO‬معرفی شده با‬
‫معماری ‪ SPARC‬را توصیف میکنیم‪.‬‬

‫مدل ‪ )1986( Dubois, Scherich, Briggs :DSB‬یک مدل سازگاری ضعیف را با مرتبط کردن ترتیب‬
‫درخواست حافظه به نقاط همزمانی در برنامه بدست آوردهاند‪ .‬این مدل را ‪ DSB‬میگوییم و با سه شرط زیر توصیف‬
‫میکنیم‪:‬‬

‫(‪ )1‬همه دسترسی های سنکرون شده قبلی باید انجام شوند قبل از اینکه یک دسترسی ‪ load‬یا ‪store‬‬
‫مرتبط با هر پردازنده دیگر برای انجام اجازه داده شود‪.‬‬
‫(‪ )2‬همه دسترسیهای ‪ load‬و ‪ store‬قبلی باید انجام شوند‪ ،‬قبل از اینکه یک دسترسی سنکرون شده‬
‫مرتبط با هر پردازنده دیگر برای اجرا اجازه داده شود‪.‬‬
‫(‪ )3‬دسترسیهای سنکرون شده نسبت به یکدیگر سازگاری ترتیبی دارند‪.‬‬

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

‫با محدودیتهای مختلف روی ترتیب دسترسی‪-‬حافظه‪ ،‬مدلهای حافظه ضعیف متفاوتی بطور مشابه میتوانند‬
‫تعریف شوند‪ .‬در زیر مدل سازگاری ضعیف دیگری که ترتیب ‪ store‬کلی نامیده میشود ارائه شده است که توسط‬
‫گروه معماری اسپارک در ‪ Sun microsystem‬توسعه داده شده است‪.‬‬

‫مثال ‪ :16-5‬مدل سازگاری ضعیف ‪ TSO‬استفاده شده در معماری اسپارک‬

‫شکل ‪ 29-5‬مدل ‪ TSO‬سازگاری ضعیف توسعه داده شده توسط گروه معماری اسپارک از شرکت ‪Sun‬‬
‫‪ microsystem‬را نشان میدهد (‪ .)1990‬عملیات ‪ store‬و ‪ swap‬منتشر شده توسط یک پردازنده در یک‬

‫‪1‬‬
‫‪Weak Consistency Model‬‬
‫‪| 275‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫بافر ‪ store‬اختصاصی برای پردازنده ذخیره میشوند که به روش ‪ FIFO‬کار میکند‪ .‬بنابراین ترتیبی که که حافظه‬
‫این عملیات را برای یک پردازنده داده شده اجرا میکند مشابه ترتیبی است که پردازنده آنها را منتشر میکند (در‬
‫ترتیب برنامه)‪.‬‬

‫ترتیب حافظه مرتبط با ترتیبی است که سوئیچ از یک پردازنده به پردازنده دیگر داده میشود‪ .‬به اینصورت که یک‬
‫‪ load‬توسط یک پردازنده ابتدا بافر ‪ store‬را چک میکند تا ببیند آیا شامل یک ‪ store‬در همان مکان هست؟‬
‫اگر بله‪ load ،‬مقدار آخرین ‪ store‬را برمیگرداند‪ .‬در غیر اینصورت‪ load ،‬مستقیماً به حافظه میرود‪ .‬یک‬
‫پردازنده بطور منطقی از انتشار عملیات بیشتر بلوکه میشود تا زمانیکه ‪ load‬یک مقدار را برگرداند‪ .‬یک ‪swap‬‬
‫مشابه یک ‪ load‬و یک ‪ store‬کار میکند‪ .‬شبیه یک ‪store‬در بافر ‪ store‬قرار میگیرد و شبیه یک ‪load‬‬
‫پردازنده را بلوکه میکند‪ .‬به عبارت دیگر‪ swap ،‬تا زمانیکه بافر ‪ store‬خالی شود بلوکه میکند و به حافظه پیش‬
‫میرود‪.‬‬

‫مشخصات قراردادی ‪ )1992( Sindu, Frailong, Cekleov :TSO‬مدل سازگاری ضعیف ‪ TSO‬را با‬
‫شش قاعده رفتاری تعیین کردهاند‪:‬‬

‫(‪ )1‬یک دسترسی ‪ load‬همیشه با آخرین ‪ store‬منتشر شده توسط هر پردازنده در سیستم در مکان مشابه‬
‫برگشت داده میشود‪.‬‬
‫(‪ )2‬ترتیب حافظه رابطه باینری کلی روی همه زوج عملیات ‪ store‬میباشد‪.‬‬
‫(‪ )3‬اگر دو ‪ store‬در یک ترتیب برنامه خاص ظاهر شوند‪ ،‬آنگاه باید در ترتیب حافظه مشابهی نیز ظاهر شوند‪.‬‬
‫(‪ )4‬اگر یک عمل حافظه بعد از یک ‪ load‬در ترتیب برنامه باشد‪ ،‬آنگاه باید بعد از ‪ load‬در ترتیب حافظه باشد‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪276‬‬

‫(‪ )5‬یک عمل ‪ swap‬نسبت به بقیه ‪store‬ها اتمیک است‪ .‬هیچ ‪ store‬دیگری نمیتواند بین ‪ store‬و ‪load‬‬
‫یک ‪ swap‬وارد شود‪.‬‬
‫(‪ )6‬همه ‪ store‬ها و ‪load‬ها باید در عاقبت خاتمه پیدا کنند‪.‬‬

‫نکته اینکه قواعد ‪ 5‬و‪ 6‬فوق مشابه قواعد ‪ 4‬و ‪ 5‬در مدل سازگاری ترتیبی میباشند‪ .‬قاعده ‪ 1‬اثرات هر دو پردازنده‬
‫محلی و دور را پوشش میدهد‪ .‬قواعد ‪ 2‬و‪ 3‬ضعیف شده قواعد ‪ 2‬و ‪ 3‬در مدل سازگاری ترتیبی میباشند‪ .‬قاعده ‪4‬‬
‫میگوید که عملیات ‪ load‬تا جاییکه ترتیب اهمیت دارد نباید ضعیف شوند‪ .‬جزئیات بیشتر را در مقاله سیندو (‪)1992‬‬
‫مطالعه کنید‪.‬‬

‫مقایسه مدلهای حافظه‪ :‬بطور خالصه‪ ،‬مدل سازگاری ضعیف ممکن است کارایی بهتری نسبت به مدل‬
‫سازگاری ترتیبی ارائه کند به هزینه پشتیبانی نرم افزار‪/‬سخت افزار پیچیده تر و آگاهی بیشتر برنامه نویس از‬
‫محدودیتهای اجباری‪ .‬این مباحث هنوز در تحقیقات چندپردازنده مورد بررسی میباشند‪.‬‬

‫‪ DSB‬و ‪ TSO‬دو مدل حافظه سازگاری –ضعیف میباشند‪ .‬مدل ‪ DSB‬با مجبور کردن سازگاری ترتیبی در نقاط‬
‫همزمانی تضعیف شده است‪ .‬مدل ‪ TSO‬با رفتار متفاوت روی ‪ ،store ،load‬و ‪ swap‬با استفاده از بافرهای‬
‫‪ FIFO‬تضعیف شده است‪ .‬مدل ‪ TSO‬در بعضی معماریهای اسپارک پیادهسازی شده است در حالیکه مدل ‪DSB‬‬
‫هنوز روی سیستمهای واقعی پیادهسازی نشده است‪.‬‬

‫سیندو و همکاران (‪ )1992‬چهار مسأله سطح‪-‬سیستم را که بر انتخاب مدل حافظه تأثیر میگذارند تعیین کرده است‪.‬‬
‫اوالً‪ ،‬آنها پیشنهاد کردند مدل حافظه را میتوان از سطح پردازنده به سطح پردازه توسعه داد‪ .‬بدین منظور‪ ،‬باید‬
‫ترتیب سوئیچ پروسه حفظ شود‪ .‬مسأله دوم مشارکت مکانهای ورودی‪/‬خروجی در مدل حافظه است‪ .‬عملیات‬
‫ورودی‪/‬خروجی ممکن است حتی تأثیرهای جانبی بیشتری به ‪ load‬و ‪ store‬نرمال داشته باشند‪.‬‬

‫مسأله سوم اصالح کد است‪ .‬در معماری اسپارک‪ ،‬اصالح کد با استفاده از یک دستور ‪ flush‬که در مدل ‪TSO‬‬
‫تعریف شده است انجام می شود‪ .‬در انتها‪ ،‬آنها احساس کردند که مدل حافظه باید مسأله چگونگی جمع کردن‬
‫پردازندههای خط لوله شده و پردازندهها با حافظه نهانهای داخلی ناهمبسته را آدرس دهد‪ .‬میتوانید با مراجعه به‬
‫مقاله اصلی آنها‪ ،‬جزئیات را مطالعه کنید‪.‬‬

‫ترتیب حافظه قوی زمان انتظار پردازنده‪/‬حافظه نهان غیرضروری را معرفی میکند که باعث کاهش میزان همروندی‬
‫میشود‪ .‬سازگاری ضعیف پتانسیل حذف این نقاط ضعف را دارد‪ .‬در کنار سازگاری ترتیبی‪ ،‬مدلهای حافظه ضعیف‬
‫‪TSO‬و ‪ DSB‬به سایر مدلهای سازگاری حافظه مثل سازگاری پردازنده و سازگاری آزاد در فصل ‪ 9‬معرفی میشوند‪.‬‬
‫‪| 277‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫تمرینات فصل پنجم‬


‫مسأله ‪ -1-5‬این یک مثال از توصیف طراحی یک گذرگاه صفحه پشتی برای یک چندپردازنده حافظه مشترک‬
‫با ‪ 4‬بورد پردازنده و ‪ 16‬بورد حافظه با مفروضات زیر است‪:‬‬
‫• نرخ ساعت گذرگاه= ‪20MHz‬‬
‫• طول کلمه حافظه= ‪ 64‬بیت‪ .‬پردازندهها همیشه دادهها را در بلوکهای ‪ 4‬کلمهای درخواست میدهند‪.‬‬
‫• زمان دسترسی حافظه= ‪100ns‬‬
‫• فضای آدرس مشترک=‪ 240‬کلمه‪.‬‬
‫• حداکثر تعداد خطوط سیگنال قابل دسترس روی صفحه پشتی=‪96‬‬
‫• قرارداد زمانبندی سنکرون‬
‫• تأخیرات انتشار و بافر قابل چشم پوشی‪.‬‬
‫در طراحی گذرگاهتان موارد زبر را تعیین کنید‪:‬‬
‫(الف) حداکثر پهنای باند گذرگاه‬
‫(ب) پهنای باند مؤثر گذرگاه (بدترین حالت)‬
‫(ج)شماتیک داوری‬
‫(د) نام و عملکرد هر خط سیگنال‬
‫(ه) تعداد اسالتهای مورد نیاز روی صفحه پشتی‬

‫مسأله ‪ -2-5‬داوری توزیع شده و زنجیرهای را (شکلهای ‪ 4-5‬و ‪-5-5‬ب)) برای داوری یک گذرگاه در سیستم‬
‫چندپردازنده توصیف کنید‪ .‬مزایا و معایب هر حالت را از دید پیادهسازی و عملیاتی بیان کنید‪.‬‬

‫مسأله ‪ -3-5‬مقاله ‪ )1987( Mudge‬روی سیستمهای چند‪-‬گذرگاه را بخوانید و مسائل زیر را حل کنید‪:‬‬

‫(الف) حداکثر پهنای باند یک سیستم چندپردازنده که از ‪ b‬گذرگاه استفاده میکند و ‪ b>m‬و ‪ m‬تعداد ماژولهای‬
‫حافظه است و سیستم ‪ n‬پردازنده دارد را بدست آورید‪.‬‬
‫(ب) ثابت کنید ‪ BWb<np‬که ‪ p>0‬احتمال اینکه یک پردازنده دلخواه درخواست دسترسی به حافظه مشترک را‬
‫در ابتدای یک سیکل حافظه تولید کند‪ ،‬میباشد‪.‬‬

‫مسأله ‪ -4-5‬نرخ ‪ MIPS‬مؤثر یک سیستم چندپردازنده متصل به گذرگاه را با مفروضات زیر تخمین بزنید‪.‬‬
‫سیستم ‪ 16‬پردازنده دارد‪ ،‬هر کدام به یک حافظه نهان اختصاصی روی بورد متصل است که خود به گذرگاه مشترک‬
‫متصل شده است‪ .‬حافظه مشترک سراسری نیز به گذرگاه متصل شده است‪ .‬حافظه نهان اختصاصی و حافظه‬
‫مشترک یک سلسله مراتب دسترسی دو سطحه را شکل میدهند‪.‬‬
‫هر پردازنده نرخ ‪10MIPS‬دارد اگر نرخ اصابت حافظه نهان ‪ ٪100‬فرض شود‪ .‬بطور میانگین‪ ،‬هر دستور نیاز به‬
‫‪ 0.2‬دسترسی حافظه دارد‪ .‬دسترسی خواندن و دسترسی نوشتن از لحاظ احتمال مساوی در نظر گرفته شدهاند‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪278‬‬

‫برای یک تخمین خام‪ ،‬فقط هزینه ایجاد شده توسط دسترسی حافظه‪-‬مشترک را در نظر بگیرید و سایر سربارها را‬
‫نادیده بگیرید‪ .‬حافظه نهان نرخ اصابت ‪ 0.95‬دارد‪ .‬دسترسی حافظه نهان روی خواندن‪-‬اصابت ‪ 20ns‬زمان میبرد‬
‫و اصابت‪-‬نوشتن با شماتیک ‪ 60ns ،WB‬زمان میبرد و با شماتیک ‪ WT‬نیاز به ‪ 400ns‬دارد‪.‬‬
‫وقتی یک بلوک حافظه نهان جایگزین میشود احتمال اینکه ‪ dirty‬باشد ‪ 0.1‬است‪ .‬میانگین زمان انتقال بلوک‬
‫بین حافظه نهان و حافظه مشترک از طریق گذرگاه ‪ 400ns‬میباشد‪.‬‬
‫(الف) زمان دسترسی‪-‬حافظه مؤثر برای حافظه نهانهای ‪ WT‬و ‪ WB‬را بطور مجزا بدست آورید‪.‬‬
‫(ب) نرخ مؤثر ‪ MIPS‬برای هر پردازنده را محاسبه کنید‪ .‬کران باالی نرخ ‪ MIPS‬مؤثر سیستم ‪ 16‬پردازنده را‬
‫تعیین کنید‪ .‬بحث کنید چرا کران باال با در نظر گرفتن فقط هزینه حافظه قابل دستیابی نیست‪.‬‬

‫مسأله‪ -5-5‬عبارات زیر را راجع به طراحی حافظه نهان توضیح دهید‪.‬‬

‫(الف) حافظه نهانهای ‪( WT‬نوشتن سراسری) در مقایسه با ‪( WB‬بازپس نویسی)‪.‬‬


‫(ب) دادههای قابل حافظه نهان شدن در مقایسه با دادههای غیر قابل حافظه نهان شدن‪.‬‬
‫(ج) حافظه نهانهای خصوصی در مقایسه با حافظه نهانهای مشترک‪.‬‬
‫(د) سیاستهای تخلیه حافظه نهان‪.‬‬
‫(ه) فاکتورهای مؤثر بر نرخ اصابت حافظه نهان‪.‬‬
‫مسأله ‪ -6-5‬اصطالحات زیر را راجع به معماریهای حافظه نهان و حافظه توضیح دهید‪:‬‬

‫(الف) برگی کردن حافظه سطح‪-‬پایین‪.‬‬


‫(ب) حافظه نهان با آدرس فیزیکی در مقایسه با حافظه نهان با آدرس مجازی‪.‬‬
‫(ج)دسترسی حافظه اتمیک در مقایسه با غیر اتمیک‪.‬‬
‫(د) پهنای باند حافظه و تحمل پذیری خطا‪.‬‬

‫مسأله ‪ -7-5‬اجرای همزمان سه برنامه را روی سه پردازنده نشان داده شده در شکل ‪(19-5‬ج) مد نظر قرار‬
‫دهید‪ .‬به سؤاالت زیر با دلیل یا نتایج شبیه سازی کامپیوتری پاسخ دهید‪.‬‬
‫(الف) ‪ 90‬ترتیب اجرای برگی شده شش دستور {‪ }a,b,c,d,e,f‬که ترتیب برنامه منفرد را نگه میدارند را لیست‬
‫کنید‪ .‬خروجی مرتبط را با ‪6‬تایی لیست کنید‪.‬‬
‫(ب) آیا همه ترکیبهای ‪ 6‬تایی میتوانند خارج از ‪ 720‬عدم ترتیب‪-‬برنامه تولید شوند؟ پاسختان را با مثال و دلیل‬
‫توضیح دهید‬
‫(ج) فرض میکنیم دسترسی حافظه اتمیک است‪ .‬توضیح دهید چرا خروجی ‪ 011001‬در یک سیستم چندپردازنده‬
‫حافظه اتمیک اگر ترتیب اجرای برنامه منفرد حفظ شود‪ ،‬ممکن نیست‪.‬‬
‫(د) فرض کنید دسترسی حافظه غیراتمیک در این چندپردازنده مجاز است‪ .‬ثابت کنید ‪ 011001‬ممکن است حتی‬
‫اگر همه دستورات به ترتیب برنامه اجرا شوند اما سایر برنامهها آنها را به ترتیب مشاهده نکنند‪.‬‬
‫‪| 279‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫مسأله ‪ -8-5‬حافظه اصلی یک کامپیوتر با ‪ 64‬بلوک که هر بلوک ‪ 8‬کلمه است سازماندهی شده است‪ .‬حافظه‬
‫نهان ‪ 8‬بلوک فریم دارد‪ .‬در قسمت (الف) تا (د) نگاشت از بلوکهای عددی در حافظه اصلی به بلوکهای فریم در‬
‫حافظه نهان را نشان دهید‪ .‬همه خطوطی که نگاشت را نشان میدهند را رسم کنید‪.‬‬

‫(الف) نگاشت مستقیم را نشان دهید و بیتهای آدرسی که فیلد تگ‪ ،‬شماره بلوک‪ ،‬و شماره کلمه را نشان میدهد‬
‫را تعیین کنید‪.‬‬
‫(ب) نگاشت کامالً انجمنی و بیتهای آدرس که فیلد تگ‪ ،‬و شماره کلمه را مشخص میکنند را نشان دهید‪.‬‬
‫(ج) نگاشت انجمنی‪-‬مجموعهای ‪ 2-way‬و بیتهای آدرس برای تعیین فیلد تگ‪ ،‬شماره مجموعه‪ ،‬و شماره کلمه‬
‫را نشان دهید‪.‬‬
‫(د)نگاشت سکتوری با ‪ 4‬بلوک در هر سکتور را نشان دهید و بیتهای آدرس که شماره سکتور‪ ،‬شماره بلوک و‬
‫شماره کلمه را مشخص میکنند را تعیین کنید‪.‬‬

‫مسأله ‪ -9-5‬یک سلسله مراتب با حافظه نهان (‪ )M1‬و حافظه اصلی (‪ )M2‬را با مشخصات زیر در نظر بگیرید‪:‬‬
‫‪M1:16K words, 50ns access time‬‬
‫‪M2: 1M words, 400ns access time‬‬
‫فرض کنید بلوکهای حافظه نهان ‪ 8‬کلمهای هستند و اندازه مجموعه ‪ 256‬کلمه است با نگاشت انجمنی‪-‬‬
‫مجموعهای‪.‬‬
‫(الف) نگاشت بین ‪ M2‬و ‪ M1‬را نشان دهید‪.‬‬
‫(ب) زمان مؤثر دسترسی‪-‬حافظه را با فرض اینکه نرخ اصابت حافظه نهان ‪ h=0.95‬است را محاسبه کنید‪.‬‬
‫مسأله ‪ -10-5‬یک حافظه اصلی شامل ‪ 4‬ماژول حافظه با ‪ 256‬کلمه در هر ماژول را مد نظر قرار دهید‪ .‬فرض‬
‫کنید در هر بلوک حافظه نهان ‪16‬کلمه موجود است‪ .‬حافظه نهان ظرفیت کلی ‪ 256‬کلمه دارد‪ .‬نگاشت انجمنی‪-‬‬
‫مجموعهای برای تخصیص بلوکهای حافظه نهان به بلوکهای فریم استفاده میشود‪ .‬حافظه نهان به ‪ 4‬مجموعه‬
‫تقسیم میشود‪:‬‬

‫(الف) انتساب آدرس برای همه ‪ 1024‬کلمه در یک سازمان حافظه اصلی برگی شده سطح‪-‬پایین ‪-4‬راهه را نشان‬
‫دهید‪.‬‬
‫(ب) چه تعداد بلوک در حافظه اصلی وجود دارد؟چه تعداد فریم بلوک در حافظه نهان قرار دارد؟‬
‫(ج) بیتهای مورد نیاز برای فیلدهای آدرس دهی هر کلمه در سیستم حافظه دو‪-‬سطحه را توضیح دهید‪.‬‬
‫(د) نگاشت بلوکهای داخل حافظه اصلی به مجموعههای داخل حافظه نهان را نشان دهید و توضیح دهید که‬
‫چگونه فیلد تگ را برای مکانیابی یک بلوک فریم در داخل هر مجموعه استفاده میکنیم؟‬

‫مسأله ‪( -11-5‬الف) یک سیستم تک پردازنده از حافظه نهانهای دستور و داده مجزا با نرخ اصابت به ترتیب‬
‫‪ hi‬و ‪ hd‬استفاده میکند‪ .‬زمان دسترسی از پردازنده به هر حافظه نهان ‪ c‬سیکل ساعت و زمان انتقال بلوک بین‬
‫حافظه نهان و حافظه اصلی ‪ b‬سیکل ساعت است‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪280‬‬

‫در بین همه مراجعات حافظه که توسط پردازنده ساخته شده است‪ fi ،‬درصد مراجعات به دستور است در بین بلوکهای‬
‫جایگزین شده در حافظه نهان داده ‪ fdir‬درصد بلوکهای ‪ dirty‬است‪ dirty(.‬به این معنی است که کپی حافظه‬
‫نهان از کپی حافظه متفاوت است)‪.‬‬

‫با فرض سیاست بازپس نویسی ‪ ،WB‬زمان دسترسی‪-‬حافظه را بر حسب ‪ ،fi ،b ،c ،hd ،hi‬و ‪ fdir‬برای این سیستم‬
‫بدست آورید‪.‬‬

‫(ب) سیستم حافظه پردازنده توصیف شده در قسمت (الف) برای ساخت یک چندپردازنده اشتراک‪-‬حافظه براساس‪-‬‬
‫گذرگاه استفاده میشود‪ .‬فرض کنید نرخ اصابت و زمانهای دسترسی مثل قسمت (الف) باقی میمانند‪ .‬به هر حال‪،‬‬
‫زمان مؤثر دسترسی‪-‬حافظه متفاوت خواهد بود به خاطر اینکه باید هم اکنون نامعتبر بودن حافظه نهان را به منظور‬
‫خواندنها و نوشتنها انجام دهد‪.‬‬

‫فرض کنید ‪ finv‬درصدی از مراجعات داده شده باشد که سیگنالهای نامعتبر موجب میشوند که باید به سایر حافظه‬
‫نهانها فرستاده شوند‪ .‬پردازندهای که سیگنال نامعتبر بودن را میفرستد ‪ i‬سیکل ساعت نیاز دارد تا عمل نامعتبر را‬
‫کامل کند‪ .‬سایر پردازندهها در پردازه نامعتبر بودن شامل نمیشوند‪ .‬مجدداً سیاست ‪ WB‬را فرض کنید‪ ،‬زمان مؤثر‬
‫دسترسی‪-‬حافظه را برای این چندپردازنده تعیین کنید‪.‬‬

‫مسأله ‪ -12-5‬یک سیستم کامپیوتر یک حافظه نهان ‪ 128‬بایتی دارد و از نگاشت انجمنی‪-‬مجموعهای ‪4-‬‬
‫‪ way‬استفاده میکند که هر بلوک ‪ 8‬بایت میباشد‪ .‬اندازه آدرس فیزیکی ‪ 32‬بیت میباشد و کمترین واحد قابل‬
‫آدرس دهی ‪ 1‬بایت است‪.‬‬

‫(الف) دیاگرام سازمان حافظه نهان را رسم کنید که چگونه آدرسهای فیزیکی به آدرسهای حافظه نهان مرتبط‬
‫است‪.‬‬
‫(ب) به کدام فریمهای بلوک حافظه نهان آدرس ‪ 000010Af16‬قابل انتساب است‪.‬‬
‫(ج) اگر آدرسهای ‪ 000010AF16‬و ‪ FFFF7Axy16‬بطور همزمان به یک مجموعه مشابهی از حافظه نهان‬
‫منتسب شوند‪ x,y ،‬چه مقادیری میتوانند داشته باشند؟‬

‫مسأله ‪ -13-5‬یک سیستم چندپردازنده حافظه مشترک با ‪ P‬پردازنده را در نظر بگیرید‪ .‬فرض کنید ‪ m‬میانگین‬
‫تعداد مراجعات حافظه سراسری به ازای هر اجرای دستور روی یک پردازنده نوعی باشد‪ .‬فرض کنید ‪ t‬میانگین‬
‫زمان دسترسی به حافظه مشترک و ‪ x‬نرخ ‪ MIPS‬یک تک پردازنده که حافظه محلی استفاده میکند باشد‪ .‬اجرای‬
‫‪ n‬دستور روی هر پردازنده از چندپردازنده را در نظر بگیرید‪.‬‬

‫(الف) نرخ ‪ MIPS‬مؤثر چندپردازنده را براساس پارامترهای ‪ p,n,x,t,m‬بدست آورید‪.‬‬


‫(ب) فرض کنید چندپردازنده ‪ p=32‬پردازنده ‪ RISC‬دارد‪ m=0.4 ،‬و ‪ .t=1μs‬نرخ ‪ MIPS‬هر پردازنده چقدر‬
‫است؟ (?=‪ )x‬تا به کارایی مؤثر چندپردازنده ‪ 56MIPS‬برسیم؟‬
‫‪| 281‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫(ج) فرض کنید ‪ p=32‬پردازنده ‪ CISC‬با ‪ x=2MIPS‬باشد و هرکدام در چندپردازنده فوق استفاده شوند با‬
‫‪ m=1.6‬و ‪ .t=1μs‬نرخ مؤثر ‪ MIPS‬چقدر است؟‬

‫مسأله ‪ -14-5‬یک چند پردازنده حافظه مشترک براساس ‪ RISC‬با ‪ P‬پردازنده را در نظر بگیرید که هر کدام‬
‫یک حافظه نهان دستورالعمل و حافظه نهان داده ‪ off-chip‬دارند‪ .‬حداکثر نرخ کارایی هر پردازنده با فرض نرخ‬
‫اصابت ‪ ٪100‬در هر دو حافظه نهان برابر با ‪ xMIPS‬میباشد‪ .‬شما نیاز دارید تا یک فرمول کارایی با در نظر گرفتن‬
‫فقدانهای حافظه نهان‪ ،‬دسترسیهای حافظه مشترک و سربار همزمانی بدست آورید‪.‬‬

‫فرض کنید میانگین ‪ α‬درصد از دستورات اجرا شده برای هدف همزمانی هستند‪ ،‬و هزینه هر عمل همزمانی‬
‫(سنکرون) ‪ tsμs‬میباشد‪ .‬تعداد دسترسیهای حافظه به ازای هر دستور ‪ m‬است‪ .‬بین همه مراجعات ساخته شده‬
‫توسط پردازنده‪ fi ،‬درصد مراجعات به دستورات می باشد‪ .‬فرض کنید که حافظه نهان دستورالعمل و حافظه نهان‬
‫داده بعد از یک دوره طوالنی از ردیابی برنامه روی ماشین به ترتیب نرخ اصابت ‪ hi‬و ‪ hd‬دارند‪ .‬در هر فقدان حافظه‬
‫نهان‪ ،‬دستورات و دادهها از حافظه مشترک با متوسط زمان دسترسی ‪ tmμs‬دسترسی میشوند‪.‬‬

‫(الف) عبارتی برای تخمین نرخ ‪ MIPS‬مؤثر در این چندپردازنده براساس ‪ ts,α, tm, hd, hi, fi, m, x, p‬بدست‬
‫آورید‪ .‬نکته اینکه ‪ α, hd, hi, fi‬همه کسر هستند و ‪ tm, ts‬براساس ‪ μs‬اندازهگیری میشوند‪ .‬زمان دسترسی‬
‫حافظه نهان و سایر سربارهای سیستم را در فرمولتان نادیده بگیرید‪.‬‬
‫(ب) فرض کنید ‪ .ts=5μs, tm=0.5μs, x=5, α=0.05, hd=0.7 , hi=0.95, fi=0.5, m=0.4‬حداقل‬
‫تعداد پردازندههای مورد نیاز را در سیستم چندپردازنده فوق برای رسیدن به نرخ ‪ MIPS‬مؤثر ‪ 25‬بدست آورید‪.‬‬
‫(ج) فرض کنید هزینه کلی همه حافظههای نهان و حافظههای مشترک دارای کران باالی ‪ $ 25000‬باشند‪.‬‬
‫هزینه حافظه حافظه نهان ‪ $ 4.70/KB‬و هزینه حافظه مشترک ‪ $ 0.4/KB‬میباشد‪ .‬با ‪ p=16‬پردازنده‪ ،‬که‬
‫هر کدام یک حافظه نهان دستورالعمل با ظرفیت ‪ Si=32KB‬و حافظه نهان داده با ظرفیت ‪ Sd=64KB‬دارند‪،‬‬
‫حداکثر ظرفیت ‪( Cm‬برحسب ‪ )MB‬حافظه مشترک چقدر باشد تا از محدوده بودجه تجاوز نکنیم؟‬

‫مسأله ‪ -15-5‬سه طرح حافظه برگی شده برای یک سیستم حافظه اصلی با ‪ 16‬ماژول حافظه را در نظر بگیرید‪.‬‬
‫فرض میکنیم هر ماژول ظرفیت ‪ 1MB‬دارد‪ .‬ماشین قابل آدرس دهی بایت است‪.‬‬

‫طرح‪ :1‬برگی کردن ‪ 16-way‬با یک بانک حافظه‬


‫طرح‪ :2‬برگی کردن ‪ 8-way‬با دو بانک حافظه‬
‫طرح‪ :3‬برگی کردن ‪ 4-way‬با ‪ 4‬بانک حافظه‬
‫(الف) شکل آدرس هرکدام از سازمانهای حافظه فوق را بدست آورید‪.‬‬
‫(ب) حداکثر پهنای باند حافظه بدست آمده را اگر فقط یک ماژول در هر یک از سازمانهای حافظه فوق خطادار‬
‫شود بدست آورید‪.‬‬
‫(ج) مزایا و معایب سازمانهای حافظه برگی شده فوق را بنویسید‪.‬‬

‫`‬
‫کانون نشر علوم‬ ‫|‬ ‫‪282‬‬

‫مسأله ‪ -16-5‬یک سیستم حافظه برای کامپیوتر ‪ Cray 1‬را در نظر بگیرید‪ m=16 .‬ماژول برگی شده وجود‬
‫دارد‪ .‬زمان دسترسی یک ماژول ‪ ts=50ns‬است و زمان سیکل حافظه ‪ tc=12.5ns‬میباشد‪ .‬میدانیم که این‬
‫سیستم حافظه حداکثر پهنای باند ‪ 80M‬کلمه در هر ثانیه را برای ‪ Load/Store‬برداری دارد بجز وقتیکه گام‬
‫ضریبی از ‪( 16‬پهنای باند ‪ 20M‬کلمه در ثانیه است) یا ضریب ‪( 8‬نه ‪( )16‬پهنای باند ‪ 40M‬کلمه در ثانیه)‬
‫میباشد‪.‬‬

‫(الف) پهنای باند را برای هر گام برای سیستمهای مشابه بدست آورید اما با پارامترهای ‪m=17, ta=50ns,‬‬
‫‪.tc=12.5ns‬‬

‫(ب) قسمت الف را برای پارامترهای ‪ m=8, ta=50ns, tc=12.5ns‬تکرار کنید‪.‬‬

‫مسأله ‪ -17-5‬اجرای همروند دو برنامه توسط دو پردازنده با یک حافظه مشترک را مد نظر قرار دهید‪ .‬فرض‬
‫کنید که مقدار اولیه ‪ D,C, B, A‬صفر باشد و دستور ‪ print‬هر دو آرگومان را بطور منفرد در سیکل مشابه چاپ‬
‫کند‪ .‬خروجی یک ‪4‬تایی را شکل میدهد ‪ ABCD‬یا ‪.BCAD‬‬

‫‪P 0:‬‬ ‫‪P 1:‬‬


‫‪a. A=1‬‬ ‫‪d. C=1‬‬
‫‪b. B=1‬‬ ‫‪e. D=1‬‬
‫‪c. Print A,D‬‬ ‫‪f. Print B,C‬‬
‫(الف) همه ترتیبهای برگی شده از اجراها را برای ‪ 6‬دستور که ترتیب برنامه منفرد را حفظ میکنند‪ ،‬لیست کنید‪.‬‬
‫(ب) فرض کنید ترتیب برنامهها حفظ میشود و همه دسترسیهای حافظه اتمیک است مثالً یک ‪ store‬توسط‬
‫یک پردازنده فوراً توسط سایر پردازندهها دیده میشود‪ .‬همه ‪4‬تاییهای خروجی ممکن را لیست کنید‪.‬‬
‫(ج) فرض کنید ترتیب برنامه حفظ میشود اما دسترسیهای حافظه اتمیک نیست‪ .‬مثالً یک ‪ store‬توسط یک‬
‫پردازنده ممکن است بافر شود بطوریکه بعضی از پردازندههای دیگر ممکن است فوراً بروزرسانی را نبینند‪ .‬همه ‪4‬‬
‫تاییهای خروجی را لیست کنید‪.‬‬

‫مسأله ‪ -18-5‬مزیتهای نسبی چهار سازمان حافظه نهان را مقایسه کنید‪.‬‬

‫(‪ )1‬حافظه نهان نگاشت‪-‬مستقیم‬


‫(‪ )2‬حافظه نهان کامالً انجمنی‬
‫(‪ )3‬حافظه نهان انجمنی مجموعهای‬
‫(‪ )4‬حافظه نهان نگاشت سکتوری‬
‫به سؤاالت زیر با دلیل پاسخ دهید‪.‬‬
‫(الف) براساس پیچیدگی سخت افزار و هزینه پیادهسازی ‪ 4‬سازمان حافظه نهان را با دلیل بترتیب ارزش گذاری‬
‫کنید‪.‬‬
‫‪| 283‬‬ ‫فصل پنجم‪ :‬گذرگاه‪ ،‬حافظه نهان‪ ،‬و حافظه مشترک‬

‫(ب) براساس انعطاف پذیری در پیادهسازی الگوریتمهای جایگزینی بلوک‪ ،‬سازمان ‪ 4‬حافظه نهان را بترتیب ارزش‬
‫گذاری کنید‪.‬‬
‫(ج) با هر سازمان حافظه نهان‪ ،‬اثرات سیاستهای نگاشت بلوک روی مسأله نرخ اصابت را توضیح دهید‪.‬‬
‫(د) اثرات اندازه بلوک‪ ،‬اندازه مجموعه‪ ،‬انجمن پذیری و اندازه حافظه نهان را روی کارایی سازمان حافظه نهان‬
‫انجمنی مجموعهای توضیح دهید‪.‬‬

‫مسأله ‪ -19-5‬اصطالحات زیر راجع به مدیریت حافظه را توضیح دهید‪.‬‬

‫(الف) نقش مدیر حافظه در کرنل ‪OS‬‬


‫(ب)سیاستهای تخصیص حافظه پسگرفتنی در مقایسه با پس نگرفتنی‬
‫(ج) سیستم حافظه تعویضی و مثالهایش‬
‫(د) سیستم حافظه صفحهبندی براساس نیاز و مثالهایش‬
‫(ه) سیستم حافظه ترکیبی و مثالهایش‬

‫مسأله ‪ -20-5‬محدودیتهای دسترسی‪-‬حافظه را در مدلهای سازگاری حافظه زیر مقایسه کنید‪.‬‬

‫(الف) تفاوتها و شباهتهای بین شرایط سازگاری ترتیبی تحمیل شده توسط لمپرت‪ ،‬دوبیوس و سیندو‪.‬‬
‫(ب) مسأله (الف) را برای مدل ‪ DSB‬و ‪ TSO‬برای سیستمهای حافظه سازگاری ضعیف مقایسه کنید‪.‬‬
‫(ج) مدل ‪ )Partial store order( PSO‬برای سازگاری ضعیف از اصالح مدل ‪ TSO‬ایجاد شده است‪ .‬مقاله‬
‫سیندو راجع به ‪ PSO‬را مطالعه کنید و مدلهای حافظه ‪ TSO‬و ‪ PSO‬را مقایسه کنید‪.‬‬

‫`‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫‪| 285‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫فصل ششم – خط لوله و تکنیک های سوپراسکالر‬


‫در این فصل خطلولههای پیشرفته و طراحی سوپراسکالر در توسعه پردازنده را بررسی میکنیم‪ .‬ابتدا خطلولههای‬
‫خطی رایج را بحث و کارایی را آنالیز میکنیم‪ .‬یک مدل خطلوله عمومی برای اتصاالت بین مرحلهای غیرخطی‬
‫معرفی میشود‪ .‬تکنیکهای بدون تداخل برای انجام توابع پویا بررسی میشوند‪.‬‬

‫تکنیکهای خاص برای ساخت خطلولههای دستورالعمل‪ ،‬خطلولههای ریاضی و خطلولههای دسترسی‪-‬حافظه ارائه‬
‫میش وند‪ .‬بحث شامل پیش برداشت دستورالعمل‪ ،‬جلورانی (فوروارد) داده داخلی‪ ،‬درهمقفلی نرمافزاری‪،‬‬
‫‪ scoreboard‬سختافزاری‪ ،‬اجتناب از مخاطره‪ ، 1‬راهاندازی پرش و تکنیکهای انتشار دستورالعمل میباشد‪ .‬هر‬
‫دوی خطلولههای ریاضی ایستا و چندعملکردی طراحی میشوند‪ .‬تکنیکهای طراحی سوپراسکالر و سوپرپایپالین‬
‫همراه با آنالیز کارایی مطالعه میشوند‪.‬‬

‫‪ -1-6‬پردازنده های خط لوله خطی‬


‫یک پردازنده خطلوله خطی‪ ،‬آبشاری از مراحل پردازش است که بصورت خطی بهم متصل شدهاند تا یک عمل ثابت‬
‫را روی رشتهای از دادهها که از ابتدا به انتها جریان دارند انجام دهد‪ .‬در کامپیوترهای مدرن‪ ،‬خطلولههای خطی‬
‫برای اجرای دستورالعمل‪ ،‬عملیات ریاضی و عملیات دسترسی حافظه اعمال شدهاند‪.‬‬

‫‪ -1-1-6‬مدل های سنکرون و آسنکرون‬


‫یک پردازنده خطلوله خطی با ‪ k‬مرحله پردازشی ساخته شده است‪ .‬ورودیهای خارجی (عملوندها) به خطلوله ‪S1‬‬
‫وارد میشوند‪ .‬نتایج پردازش شده از مرحله ‪ Si‬به مرحله ‪ Si+1‬برای همه ‪ i=1,2,…,k‬منتقل میشوند‪ .‬نتیجه نهایی‬
‫از خطلوله در مرحله آخر ‪ Sk‬پدیدار میشود‪.‬‬

‫براساس کنترل جریان در طول خطلوله‪ ،‬خطلولههای خطی را به دو دسته مدل میکنیم‪ :‬سنکرون و آسنکرون‪.‬‬
‫مدل آسنکرون‪ :‬همانطور که در شکل ‪( 1-6‬الف) نشان داده شده است‪ ،‬جریان داده بین مراحل همسایه در یک‬
‫خطلوله آسنکرون با قرارداد دست تکاندهی کنترل میشود‪ .‬وقتیکه مرحله ‪ Si‬آماده ارسال است‪ ،‬یک سیگنال‬
‫‪ ready‬به مرحله ‪ Si+1‬میفرستد‪ .‬بعد از اینکه مرحله ‪ Si+1‬داده ورودی را دریافت کرد‪ ،‬یک سیگنال تصدیق‬
‫دریافت ‪ ack‬به ‪ Si‬برمیگرداند‪.‬‬
‫خطلولههای آسنکرون در طراحی کانالهای ارتباطی در چندکامپیوترهای ارسال پیام مفید هستند وقتیکه مسیریابی‬
‫خزشی عملی میشود‪ .‬خطلولههای آسنکرون ممکن است نرخ توان عملیاتی متغیر داشته باشند‪ .‬مقادیر تأخیر متفاوتی‬
‫ممکن است در مراحل مختلف تجربه شوند‪.‬‬
‫مدل سنکرون‪ :‬خطلولههای سنکرون در شکل ‪(1-6‬ب) نشان داده شده است‪ .‬لچهای ساعتدار برای رابطه بین‬
‫مراحل استفاده میشوند‪ .‬لچها از فلیپ‪-‬فالپهای تابع‪-‬متبوع‪ 2‬ساخته میشوند که میتوانند ورودیها را از خروجیها‬

‫‪1‬‬
‫‪Hazard‬‬
‫‪2‬‬
‫‪Master-Slave‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪286‬‬

‫جدا کنند‪ .‬بعد از رسیدن یک پالس ساعت همه لچها بطور همزمان دادهها را به مرحله بعد بطور همزمان منتقل‬
‫میکنند‪.‬‬

‫مراحل خط لوله مدارات منطقی ترکیبی هستند‪ .‬بهتر است همه مراحل تأخیرهای تقریباً برابر داشته باشند‪ .‬این‬
‫تأخیرات پریود ساعت و سرعت خطلوله را تعیین میکنند‪ .‬در این کتاب فقط خطلولههای سنکرون مطالعه میشوند‬
‫مگر اینکه صریحاً نوع آن بیان شود‪.‬‬

‫الگوی بهره وری از مراحل متوالی یک خط لوله سنکرون توسط یک جدول رزرواسیون تعیین میشود‪ .‬برای یک‬
‫خطلوله خطی‪ ،‬بهرهوری الگوی رشته خطی قطری نشان داده شده در شکل ‪(1-6‬ج) را دنبال میکند‪.‬‬
‫ورودی‬ ‫خروجی‬
‫‪ready‬‬ ‫‪S2‬‬ ‫‪ready‬‬ ‫‪Sk‬‬ ‫‪ready‬‬
‫‪ready‬‬ ‫‪S1‬‬
‫‪ack‬‬ ‫‪ack‬‬ ‫‪ack‬‬
‫‪ack‬‬
‫(الف) یک مدل خطلوله آسنکرون‬
‫‪L‬‬ ‫‪L‬‬ ‫‪L‬‬ ‫‪L‬‬ ‫‪L‬‬
‫ورودی‬ ‫خروجی‬

‫‪S1‬‬ ‫‪S2‬‬ ‫‪Sk‬‬

‫‪clock‬‬

‫‪clock‬‬
‫‪Ƭm‬‬ ‫‪Ƭ‬‬
‫‪d‬‬
‫(ب) مدل خطلوله سنکرون‬
‫زمان(پالس ساعت)‬ ‫مرحله ‪Si=i‬‬

‫‪S1‬‬ ‫‪1 2‬‬ ‫‪3 4‬‬ ‫‪L=latch‬‬


‫‪x‬‬ ‫‪Ƭ=clock period‬‬
‫مراحل‬ ‫‪S2‬‬ ‫‪x‬‬ ‫حداکثر تأخیر مرحله=‪Ƭm‬‬
‫‪S3‬‬
‫‪x‬‬ ‫تأخیر لچ=‪d‬‬
‫‪S4‬‬ ‫‪x‬‬ ‫سیگنال تصدیق دریافت=‪Ack‬‬
‫(ج) جدول رزرواسیون برای یک خطلوله‬
‫شکل ‪ :1-6‬دو مدل از واحدهای خطلوله خطی و جدول رزرواسیون مرتبط‬

‫این جدول لزوماً یک دیاگرام زمان‪-‬فضا است که روابط اولویت در استفاده از مراحل خطلوله را نشان میدهد‪ .‬در‬
‫یک خطلوله خطی ‪ k‬مرحلهای‪ k ،‬پالس ساعت مورد نیاز است تا در طول خطلوله جریان یابد‪.‬‬

‫کارهای متوالی یا عملیات در هر پالس وارد خطلوله میشوند‪ .‬وقتیکه خطلوله پر شد‪ ،‬در هر پالس یک نتیجه از‬
‫خطلوله پدیدار میشود‪ .‬این توان عملیاتی درصورتی حفظ میشود که کارهای متوالی مستقل از یکدیگر باشند‪.‬‬

‫‪ -2-1-6‬ساعت و کنترل زمانی‬


‫پالس ساعت ‪ Ƭ‬از یک خطلوله در زیر تعیین میشود‪ .‬اجازه دهید ‪ Ƭi‬تأخیر زمانی مدارات در مرحله ‪ Si‬باشد و ‪d‬‬
‫زمان تأخیر لچ باشد همانطور که در شکل ‪(1-6‬ب) نشان داده شده است‪.‬‬
‫‪| 287‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫پالس ساعت و توان عملیاتی‪ :‬حداکثر تأخیر مرحله را با ‪ Ƭm‬نشان میدهیم و میتوانیم ‪ Ƭ‬را بصورت زیر‬
‫بنویسیم‪:‬‬
‫𝑥𝑎𝑚‬ ‫𝑘‬
‫=𝜏‬ ‫‪𝑖 {𝜏𝑖 }1‬‬ ‫)‪+ 𝑑 = 𝜏𝑚 +d (6-1‬‬
‫با باال رفتن لبه پالس ساعت دادهها در فلیپ‪-‬فالپ ‪ master‬هر لچ‪ ،‬لچ میشوند‪ .‬پالس ساعت پهنای برابر با ‪d‬‬
‫دارد‪ .‬در کل ‪ .Ƭm>>d‬این به این مفهوم است که حداکثر تأخیر مرحله تعیین کننده پریود پالس ساعت است‪.‬‬
‫فرکانس خطلوله با معکوس نرخ ساعت تعریف میشود‪f=1/Ƭ )2-6( :‬‬

‫اگر انتظار خروج یک نتیجه در هر سیکل خطلوله داشته باشیم‪ f ،‬نشان دهنده حداکثر توان عملیاتی خطلوله است‪.‬‬
‫بسته به نرخ ورود کارها به خطلوله‪ ،‬توان عملیاتی واقعی خطلوله ممکن است کمتر از ‪ f‬باشد زیرا بیشتر از یک‬
‫پالس ساعت بین ورود کارهای متوالی صرف میشود‪.‬‬

‫انحراف ساعت‪ :1‬بطور ایدهآل انتظار داریم که پالسهای ساعت به همه مراحل (لچها) در زمان مشابهی برسند‪.‬‬
‫اما بخاطر مسأله شناخته شدهای که به آن انحراف ساعت میگوییم یک پالس ممکن است به مراحل مختلف با‬
‫تفاوت زمانی ‪ s‬برسد‪ .‬اجازه دهید ‪ tmax‬تأخیر زمانی بزرگترین مسیر منطقی در یک مرحله و ‪ tmin‬تأخیر زمانی‬
‫کوتاهترین مسیر منطقی در یک مرحله باشد‪.‬‬
‫به خاطر جلوگیری از رقابت در دو مرحله متوالی باید ‪ Ƭm≥tmax+s‬انتخاب کنیم و ‪ .d≤tmin-s‬این محدودیتها‬
‫وقتیکه انحراف ساعت تأثیر میگذارد به باندهای زیر در پریود ساعت ترجمه میشوند‪.‬‬
‫‪d+tmax+s≤Ƭ≤Ƭm+tmin-s‬‬ ‫)‪(6-3‬‬
‫در حالت ایدهآل ‪ s=0‬و ‪ tmax=Ƭm‬و ‪ .tmin=d‬بنابراین داریم‪ Ƭ=Ƭm+d :‬که سازگار با تعریف معادله ‪ 1-6‬بدون‬
‫در نظر گرفتن انحراف ساعت میباشد‪.‬‬
‫یک روش حل انحراف ساعت استفاده از درخت توزیع ‪ H‬برای ساعت میباشد بطوریکه ساعت به همه واحدها بطور‬
‫یکسان می رسد‪ .‬چون پالس ساعت پردازنده بسیار کوچک شده است انحراف ساعت میتواند مشکل ایجاد کند‪.‬‬
‫ساختار ‪ H-tree‬برای ساعت بصورت زیر است‪.‬‬

‫‪ -3-1-6‬افزایش سرعت‪ ،‬بازدهی و توان عملیاتی‬


‫بطور ایدهآل‪ ،‬یک خطلوله خطی با ‪ k‬مرحله میتواند ‪ n‬کار را در )‪ k+(n-1‬پالس ساعت پردازش کند که ‪ k‬پالس‬
‫زمان مورد نیاز برای کار اول است و ‪ n-1‬کار باقیمانده ‪ n-1‬پالس نیاز دارند‪ .‬بنابراین کل زمان مورد نیاز برابر است‬

‫‪1‬‬
‫‪Clock skewing‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪288‬‬

‫با‪ Tk=[k+(n-1)]Ƭ )4-6( :‬که ‪ Ƭ‬پریود پالس ساعت میباشد‪ .‬یک پردازنده غیرخطلوله با عملکرد برابر را در‬
‫نظر بگیرید که تأخیر جریان ‪ kƬ‬دارد‪ .‬زمان مورد نیاز برای اجرای ‪ n‬کار در پردازنده بدون خطلوله ‪ T1=nkƬ‬است‪.‬‬

‫فاکتور افزایش سرعت‪ :‬فاکتور افزایش سرعت خطلوله ‪ k‬مرحلهای روی یک پردازنده بدون خطلوله بصورت‬
‫زیر تعریف میشود‪:‬‬
‫𝑇‬ ‫𝜏𝑘𝑛‬ ‫𝑘𝑛‬
‫‪𝑆𝑘 = 𝑇1 = 𝑘𝜏+(𝑛−1)𝜏 = 𝑘+𝑛−1‬‬ ‫)‪(6-5‬‬
‫𝑘‬

‫مثال ‪ :1-6‬افزایش سرعت خطلوله در مقابل تعداد کارها‬

‫حداکثر افزایش سرعت وقتی ∞→‪ n‬برابر است با ‪ .Sk→k‬رسیدن به حداکثر افزایش سرعت به خاطر وابستگی بین‬
‫کارهای متوالی (دستورات)‪ ،‬پرشهای برنامه‪ ،‬وقفهها‪ ،‬و سایر فاکتورها که در ادامه مطالعه خواهند شد مشکل است‪.‬‬

‫شکل ‪(2-6‬الف) فاکتور افزایش سرعت را به عنوان تابعی از ‪ ،n‬تعداد کارها (عملیات یا دستورات) انجام شده توسط‬
‫خطلوله‪ ،‬رسم کرده است‪ .‬برای مقادیر کم ‪ ،n‬افزایش سرعت خیلی ضعیف است‪ .‬کمترین مقدار ‪ Sk=1‬است وقتیکه‬
‫‪.n=1‬‬
‫‪Sk‬‬
‫‪10‬‬
‫ده مرحله=‪k‬‬
‫فاکتور افزایش سرعت‬

‫‪8‬‬
‫‪6‬‬
‫شش مرحله=‪k‬‬
‫‪4‬‬
‫‪2‬‬
‫‪1‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪8‬‬ ‫‪16‬‬ ‫‪32‬‬ ‫‪64‬‬ ‫‪128‬‬ ‫‪256‬‬ ‫‪n‬‬
‫تعداد عملیات‬
‫(الف) فاکتور افزایش سرعت به عنوان تابعی از تعداد عملیات (معادله ‪)5.6‬‬
‫حداکثر‬
‫نسبت کارایی به هزینه‬

‫‪( ko‬بهینه)‬ ‫تعداد مراحل‪k‬‬


‫(ب) تعداد بهینه مراحل خطلوله (معادله ‪6-6‬و ‪)7-6‬‬
‫شکل ‪ :2-6‬فاکتورهای افزایش سرعت و تعداد بهینه مراحل خطلوله برای یک واحد خطلوله خطی‬
‫هرچه تعداد مراحل ‪ k‬خطلوله بیشتر باشد‪ ،‬پتانسیل کارایی افزایش سرعت بیشتر میشود‪ .‬وقتی ‪ n=6‬یک خطلوله‬
‫‪ 8‬مرحلهای مقدار افزایش سرعت ‪ 7.1‬دارد و یک خطلوله ‪ 4‬مرحلهای افزایش سرعت ‪ 3.7‬دارد‪ :‬به هر حال تعداد‬
‫مراحل خطلوله به خاطر محدودیتهای عملی روی هزینه‪ ،‬پیچیدگی کنترل‪ ،‬پیادهسازی موازی و محدودیتهای‬
‫بسته بندی‪ ،‬نمیتواند بطور نامتناهی افزوده شود‪ .‬بنابراین هرچه ‪ n‬بزرگتر باشد افزایش سرعت بهتر است‪ .‬هرچه‬
‫خطلوله طوالنیتر باشد‪ ،‬افزایش سرعت بیشتر است‪.‬‬
‫‪| 289‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫تعداد بهینه مراحل‪ :‬ریزترین سطح خطلوله با تقسیم مراحل خطلوله به سطح گیت منطقی را میکرو پایپالین‬
‫میگویند‪ .‬در عمل‪ ،‬اکثر خطلولهها در سطح عملکردی با ‪ 2≤k≤15‬مرحلهبندی میشوند‪ .‬در عمل تعداد کمی‬
‫خطلوله در کامپیوترهای واقعی بیشتر از ‪ 10‬مرحله دارند‪ .‬سطح درشت برای مراحل خطلوله میتواند در سطح‬
‫پردازنده اجرا شود که به آن ماکروپایپالین میگویند‪ .‬انتخاب بهینه تعداد مراحل باید قادر به حداکثر کردن نرخ‬
‫کارایی‬
‫باشد‪.‬‬ ‫هزینه‬

‫اجازه دهید ‪ t‬زمان کل مورد نیاز برای یک برنامه ترتیبی غیر خطلوله از یک تابع داده شده باشد‪ .‬برای اجرای برنامه‬
‫مشابه روی یک خطلوله ‪ k‬مرحلهای با جریان برابر با تأخیر ‪ ،t‬به یک پالس ساعت ‪ p=t/k+d‬نیاز داریم که ‪d‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪ f = p = t⁄‬دارد‪ .‬هزینه کل خطلوله ‪ C+kh‬تخمین زده‬ ‫تأخیر لچ است‪ .‬بنابراین خطلوله توان عملیاتی‬
‫‪k+d‬‬
‫کارایی‬
‫(‪ )PCR1‬توسط‬ ‫میشود که ‪ C‬هزینه همه مراحل منطقی را پوشش میدهد و ‪ h‬هزینه هر لچ میباشد‪ .‬نرخ‬
‫هزینه‬
‫‪ )1973( Larson‬تعریف شده است‪:‬‬
‫𝑓‬ ‫‪1‬‬
‫= ‪𝑃𝐶𝑅 = 𝐶+𝑘ℎ‬‬ ‫)‪(6-6‬‬
‫)‪(𝑡⁄𝑘 +𝑑)(𝐶+𝑘ℎ‬‬

‫شکل ‪(2-6‬ب) ‪ PCR‬را به عنوان تابعی از ‪ k‬نشان میدهد‪ .‬حداکثر منحنی ‪ PCR‬مرتبط با یک انتخاب بهینه برای‬
‫تعداد مراحل خطلوله مطلوب میباشد‪ .‬از معادله (‪ )6-6‬نسبت به ‪ k‬مشتق میگیریم و برابر صفر قرار میدهیم در‬
‫نتیجه مقدار بهینه ‪ k‬برابر است با‪:‬‬
‫𝑐‪𝑡.‬‬
‫√ = ‪𝑘0‬‬ ‫)‪(6-7‬‬
‫‪𝑑.ℎ‬‬

‫که ‪ t‬تأخیر جریان کل خطلوله است‪ .‬هزینه کل مرحله ‪ ،C‬تأخیر لچ ‪ ،d‬و هزینه لچ ‪ h‬باید تعیین شوند تا به مقدار‬
‫بهینه ‪ k0‬برسیم‪.‬‬

‫بازدهی و توان عملیاتی‪ :‬بازدهی ‪ Ek‬از یک خطلوله ‪ k‬مرحلهای بصورت زیر تعریف میشود‪:‬‬
‫𝑘𝑆‬ ‫𝑛‬
‫= 𝑘𝐸‬ ‫)‪= 𝑘+(𝑛−1‬‬ ‫)‪(6-8‬‬
‫𝑘‬

‫‪1‬‬
‫بازدهی وقتیکه ∞→‪ n‬به ‪ 1‬میرسد‪ .‬کران پایین ‪ Ek‬وقتی ‪ n=1‬باشد 𝑘 است‪ .‬توان عملیاتی ‪ Hk‬به عنوان تعداد‬
‫کارها (عملیاتی) که در یک واحد زمانی انجام میشود تعریف میشود‪:‬‬
‫𝑛‬ ‫𝑓𝑛‬
‫)‪𝐻𝑘 = [𝑘+(𝑛−1)]𝜏 = 𝑘+(𝑛−1‬‬ ‫)‪(6-9‬‬

‫‪1‬‬
‫‪Performance/Cost Ratio‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪290‬‬

‫حداکثر توان عملیاتی وقتی ‪ Ek→1‬و ∞→‪ n‬بدست میآید که برابر با ‪ f‬است‪ .‬نکته اینکه = 𝑓 ‪𝐻𝑘 = 𝐸𝑘 .‬‬
‫𝑘𝜏𝑘 = 𝜏‪.𝐸𝑘⁄‬‬
‫𝑆‬

‫‪ -2-6‬پردازنده های خط لوله غیرخطی‬


‫یک خطلوله پویا میتواند مجدداً پیکربندی شود تا توابع متغیر را در زمانهای مختلف انجام دهد‪ .‬خطلولههای خطی‬
‫رایج خطلولههای ایستا هستند زیرا برای انجام توابع ثابت طراحی شدهاند‪.‬‬

‫یک خطلوله پویا اتصاالت رو به جلو و رو به عقب را اجازه میدهد‪ .‬به این دلیل بعضی مؤلفین به چنین ساختاری‬
‫خطلوله غیرخطی میگویند‪.‬‬

‫‪ -1-2-6‬آنالیز تأخیر و رزرواسیون‬


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

‫یک خطلوله چندتابعی پویا در شکل ‪(3-6‬الف) نشان داده شده است‪ .‬این خطلوله سه مرحله دارد‪ .‬در کنار اتصاالت‬
‫مستقیم از ‪ S1‬به ‪ S2‬و از ‪ S2‬به ‪ ،S3‬یک اتصال رو به جلو‪ 1‬از ‪ S1‬به ‪ S3‬و دو اتصال رو به عقب‪ 2‬از ‪ S3‬به ‪ S2‬و از‬
‫‪ S3‬به ‪ S1‬وجود دارد‪.‬‬

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

‫جداول رزرواسیون‪ :‬جدول رزرواسیون برای یک خطلوله ایستا بدون ابهام است به خاطر اینکه جریان داده از‬
‫یک جریان خطی تبعیت میکند‪ .‬جدول رزرواسیون برای یک خطلوله پویا جالبتر است زیرا از الگوی غیرخطی تبعیت‬
‫میکند‪ .‬با یک پیکربندی خطلوله داده شده‪ ،‬جداول رزرواسیون چندگانه میتواند برای ارزیابی توابع مختلف تولید‬
‫شوند‪.‬‬

‫دو جدول رزرواسیون در شکلهای ‪(3-6‬ب) و ‪(3-6‬ج) نشان داده شده است‪ ،‬که به ترتیب مرتبط با توابع ‪ X‬و ‪Y‬‬
‫میباشند‪ .‬هر تابع ارزیابی با یک جدول رزرواسیون تعیین میشود‪ .‬یک خطلوله ایستا با یک جدول رزرواسیون تعیین‬
‫میشود‪ .‬یک خطلوله پویا ممکن است با بیشتر از یک جدول رزرواسیون تعیین شود‪.‬‬

‫‪1‬‬
‫‪Feed forward‬‬
‫‪2‬‬
‫‪feedback‬‬
‫‪| 291‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫هر جدول رزرواسیون جدول فضا‪-‬زمان داده در خطلوله برای یک تابع ارزیابی را نشان میدهد‪ .‬توابع مختلف ممکن‬
‫است از مسیرهای متفاوتی در جدول رزرواسیون تبعیت کنند‪ .‬چند پیکربندی خطلوله ممکن است با یک جدول‬
‫رزرواسیون نمایش داده شود‪ .‬یک نگاشت چند‪ -‬به‪-‬چند بین پیکربندیهای مختلف خطلوله و جداول رزرواسیون‬
‫وجود دارد‪.‬‬

‫تعداد ستون ها در یک جدول رزرواسیون‪ ،‬زمان ارزیابی یک تابع داده شده نامیده میشود‪ .‬به عنوان مثال‪ ،‬تابع ‪X‬‬
‫نیازمند ‪ 8‬پالس ساعت و تابع ‪ Y‬نیازمند شش پالس میباشد‪ .‬همانطور که بهترتیب در شکلهای ‪(3-6‬ب) و ‪-6‬‬
‫‪(3‬ج) نشان داده شده است‪.‬‬
‫خروجی ‪X‬‬

‫ورودی‬ ‫خروجی ‪Y‬‬


‫‪S1‬‬ ‫‪S2‬‬ ‫‪S3‬‬

‫(الف) یک خطلوله سه مرحلهای‬


‫زمان‬ ‫زمان‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪1 2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫‪S1‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪S1‬‬ ‫‪X‬‬ ‫‪X‬‬
‫مراحل‬

‫‪S2‬‬
‫مراحل‬

‫‪S2‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬


‫‪S3‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪S3‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬
‫(ب) جدول رزرواسیون برای تابع ‪X‬‬ ‫(ج) جدول رزرواسیون برای تابع ‪Y‬‬
‫شکل ‪ :3-6‬یک خطلوله پویا با اتصاالت روبه جلو و رو به عقب برای دو تابع مختلف‬

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

‫در هر سطر ممکن است چند عالمت چک وجود داشته باشد که به این معنی است که از آن مرحله در پالسهای‬
‫مختلف استفاده می شود‪ .‬چند عالمت چک در یک ستون به این معنی است که چند مرحله بطور موازی در یک‬
‫پالس ساعت خاص استفاده میشوند‪.‬‬

‫آنالیز تأخیر‪ :‬تعداد واحدهای زمان (پالسهای ساعت) بین دو مقداردهی اولیه خطلوله‪ ،‬تأخیر بین آنها میباشد‪.‬‬
‫مقادیر تأخیر باید اعداد صحیح غیرمنفی باشند‪ .‬تأخیر ‪ k‬به این معنی است که دو مقداردهی اولیه ‪ k‬پالس ساعت از‬
‫هم دورند‪ .‬هر تالش بین دو مقداردهی اولیه که باعث استفاده از یک مرحله خطلوله مشابه در زمان مشابهی شود‬
‫باعث یک برخورد‪( 1‬تصادم) خواهد شد‪.‬‬

‫تصادم به معنی تداخل منبع بین دو مقداردهی اولیه در خطلوله است‪ .‬بنابراین باید در زمانبندی یک رشته مقداردهی‬
‫اولیه از تصادم اجتناب شود‪ .‬ممکن است بعضی تأخیرات باعث تصادم شوند و برخی دیگر باعث تصادم نشوند‪.‬‬

‫‪1‬‬
‫‪Collision‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪292‬‬

‫تأخیراتی که باعث تصادم میشوند را تأخیرات منع شده میگویند‪ .‬در استفاده از خطلوله شکل ‪ 3-6‬برای ارزیابی‬
‫تابع ‪ ،X‬تأخیرات ‪2‬و ‪ 5‬منع شدهاند همانطور که در شکل ‪ 4-6‬نشان داده شده است‪.‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬
‫‪S1‬‬ ‫‪X1‬‬ ‫‪X2‬‬ ‫‪X3‬‬ ‫‪X1‬‬ ‫‪X4‬‬ ‫‪X1,X2‬‬ ‫‪X2,X3‬‬
‫مراحل‬

‫‪S2‬‬ ‫‪X1‬‬ ‫‪X1,X2‬‬ ‫‪X2,X3‬‬ ‫‪X3,X4‬‬ ‫‪X4‬‬ ‫‪….‬‬


‫‪X1‬‬ ‫‪X1,X2‬‬ ‫‪X1,X2, X3‬‬ ‫‪X2,X3,X4‬‬
‫‪S3‬‬
‫(الف) تصادم با زمانبندی با تأخیر ‪2‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬
‫‪S1‬‬ ‫‪X1‬‬ ‫‪X1,X2‬‬ ‫‪X1‬‬
‫‪X1‬‬ ‫‪X1‬‬ ‫‪X2‬‬ ‫‪X2‬‬ ‫‪….‬‬
‫مراحل‬

‫‪S2‬‬
‫‪X1‬‬ ‫‪X1‬‬ ‫‪X1‬‬ ‫‪X2‬‬ ‫‪X2‬‬
‫‪S3‬‬
‫(ب) تصادم با زمانبندی با تأخیر ‪5‬‬
‫شکل ‪ :4-6‬تصادمها با تأخیرات منع شده ‪2‬و ‪ 5‬در استفاده از خطلوله شکل ‪ 3-6‬برای ارزیابی تابع ‪X‬‬

‫‪i‬امین مقداردهی اولیه در شکل ‪ 4-6‬با ‪ xi‬نشان داده شده است‪ .‬با تأخیر ‪ ،2‬مقداردهیهای ‪ X1‬و ‪ X2‬در مرحله ‪2‬‬
‫در زمان ‪ 4‬تصادم میکنند‪ .‬در زمان ‪ ،7‬این مقداردهیها در مرحله ‪ 3‬تصادم میکنند‪ .‬بطور مشابه سایر تصادمها در‬
‫زمانهای ‪ 5‬و‪ 6‬و ‪ 8‬و‪ ...‬نشان داده شدهاند‪ .‬تصادم برای تأخیر ‪ 5‬در شکل ‪(4-6‬ب) نشان داده شده است که ‪ X1‬و‬
‫‪ X2‬با فاصله ‪ 5‬پالس ساعت زمانبندی شدهاند‪ .‬اولین تصادمشان در زمان‪ 6‬اتفاق میافتد‪.‬‬

‫برای تشخیص یک تأخیر منع شده‪ ،‬کافی است فاصله بین هر دو عالمت چک را در هر سطر جدول رزرواسیون‬
‫چک کنیم‪ .‬به عنوان مثال فاصله بین اولین عالمت و دومین عالمت در سطر ‪ S1‬در شکل ‪(3-6‬ب) ‪ 5‬است که به‬
‫مفهوم تأخیر منع شده است‪.‬‬

‫بطور مشابه‪ ،‬تأخیرات ‪2‬و ‪4‬و ‪5‬و ‪ 7‬از بررسی جدول رزرواسیون به عنوان تأخیرات منع شده میباشند‪ .‬از جدول‬
‫رزرواسیون شکل ‪(3-6‬ج) تأخیرات ‪2‬و ‪ 4‬را برای تابع ‪ Y‬منع شده مییابیم‪ .‬یک رشته تأخیر‪ ،‬رشتهای از تأخیرات‬
‫منع نشده قابل قبول بین مقدار دهی اولیه کارهای متوالی میباشد‪.‬‬

‫یک سیکل تأخیر رشتهای از تأخیرات است که زیررشته مشابهی را بطور نامتناهی تکرار میکند‪ .‬شکل ‪ 5-6‬سیکل‪-‬‬
‫های تأخیر در استفاده از خطلوله شکل ‪ 3-6‬برای ارزیابی تابع ‪ X‬بدون ایجاد تصادم را نشان میدهد‪ .‬به عنوان مثال‬
‫سیکل تأخیر (‪8‬و‪ )1‬رشته تأخیر نامتناهی …‪ 1,8,1,8,1,8,‬را تکرار میکند‪ .‬این به این معنی است که مقداردهی‪-‬‬
‫های اولیه متوالی از کارهای جدید با یک سیکل و ‪ 8‬سیکل بطور تناوبی جدا میشوند‪.‬‬

‫میانگین تأخیر یک سیکل تأخیر با جمع همه تأخیرات و تقسیم آنها بر تعداد تأخیرها در سیکل بدست میآید‪ .‬بنابراین‬
‫سیکل تأخیر (‪8‬و‪ )1‬میانگین ‪ (1+8)/2=4.5‬دارد‪ .‬یک سیکل ثابت سیکلی است که فقط یک سیکل تأخیر دارد‪.‬‬
‫سیکلهای (‪ )3‬و (‪ )6‬در شکل ‪(5-6‬ب) و ‪(5-6‬ج) هر دو سیکلهای ثابت هستند‪ .‬میانگین تأخیر یک سیکل ثابت‬
‫برابر با خود تأخیر است‪ .‬در بخش بعد چگونگی بدست آوردن این سیکلهای تأخیر را بصورت سیستمی توضیح‬
‫میدهیم‪.‬‬
‫‪| 293‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫(ج) سیکل تأخیر (‪ 6, 6, 6, … = )6‬با میانگین تأخیر ‪6‬‬


‫شکل ‪ :5-6‬تأخیرهای )‪ )6( ،)3( ،(1,8‬برای خطلوله پویای شکل ‪ 3-6‬برای تابع ‪ X‬امکانپذیراست‪.‬‬

‫‪ -2-2-6‬زمانبندی بدون تصادم‪ :‬موقع زمانبندی رخدادهای یک خطلوله‪ ،‬هدف اصلی بدست آوردن کوتاهترین‬
‫میانگین تأخیر بدون تصادم بین مقداردهیها میباشد‪ .‬در زیر روش سیستماتیک برای بدست آوردن زمانبندی بدون‬
‫برخورد را ارائه میدهیم‪.‬‬
‫در زیر بردارهای تصادم‪ ،‬دیاگرامهای حالت‪ ،‬سیکلهای تک‪ ،‬سیکلهای طماع‪ ،‬و حداقل میانگین تأخیر‪ 1‬را مطالعه‬
‫میکنیم‪ .‬این تئوری طراحی خطلوله ابتدا توسط ‪ )1971( Davidson‬و دانشجویانش توسعه داده شد‪.‬‬
‫بردارهای تصادم‪ :‬با آزمایش جدول رزرواسیون‪ ،‬میتوان مجموعه تأخیرات مجاز را از مجموعه تأخیرات منع‬
‫شده متمایز کرد‪ .‬برای یک جدول رزرواسیون با ‪ n‬ستون‪ ،‬حداکثر تأخیر ممنوع ‪ m≤n-1‬میباشد‪ .‬تأخیر قابل قبول‬
‫‪ p‬باید تا حد امکان کوچک باشد‪ 1≤p≤m-1 .‬و انتخاب ایدهآل ‪ p=1‬میباشد‪ .‬در تئوری‪ ،‬تأخیر ‪ 1‬همیشه در یک‬
‫خطلوله ایستا میتواند بدست آید که یک جدول رزرواسیون خطی نشان داده شده در شکل ‪(1-6‬ج) را دنبال میکند‪.‬‬

‫مجموعه ترکیبی تأخیرات قابل قبول و ممنوع را میتوان به سادگی با یک جدول تصادم نشان داد که یک بردار‬
‫باینری ‪ m‬بیتی بصورت )‪ C=(CmCm-1…C2C1‬میباشد‪ .‬مقدار ‪ Ci=1‬است اگر تأخیر ‪ i‬باعث ایجاد یک تصادم‬
‫شود و ‪ Ci=0‬اگر تأخیر ‪i‬ام قابل قبول باشد‪ .‬نکته اینکه ‪ Cm=1‬همیشه درست است که مرتبط با حداکثر تأخیر منع‬
‫شده است‪.‬‬

‫برای دو جدول رزرواسیون شکل ‪ ،3-6‬بردار تصادم )‪ CX=(1011010‬برای تابع ‪ X‬بدست میآید و )‪CY=(1010‬‬
‫برای تابع ‪ Y‬بدست میآید‪ .‬از ‪ CX‬فوراً میفهمیم که تأخیرات ‪2‬و ‪4‬و ‪5‬و ‪ 7‬منع شدهاند‪ .‬تأخیرات ‪1‬و ‪3‬و ‪ 6‬تأخیرات‬
‫قابل قبولند‪ .‬بطور مشابه ‪2‬و ‪ 4‬تأخیرات منع شده و ‪1‬و ‪ 3‬تأخیرات قابل قبول برای تابع ‪ Y‬هستند‪.‬‬

‫‪1‬‬
‫)‪Minimum average latency (MAL‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪294‬‬

‫دیاگرمهای حالت‪ :‬از بردار تصادم فوق میتوان یک دیاگرام حالت با تعیین انتقاالت قابل قبول بین مقداردهی‪-‬‬
‫های متوالی بدست آورد‪ .‬بردار تصادم‪ ،‬مثل ‪ CX‬فوق‪ ،‬مرتبط با حالت اولیه خطلوله در زمان ‪ 1‬است و بنابراین بردار‬
‫تصادم اولیه نامیده میشود‪ .‬اجازه دهید ‪ p‬تأخیر قابل قبول در محدوده ‪ 1≤p≤m-1‬باشد‪.‬‬

‫مرحله بعدی خطلوله در زمان ‪ t+p‬با کمک یک ثبات شیفت راست ‪ m‬بیتی همانطور که در شکل ‪(6-6‬الف) نشان‬
‫داده شده است بدست میآید‪ .‬ابتدا بردار تصادم اولیه ‪ C‬به داخل ثبات بار میشود سپس به راست شیفت داده‬
‫میشود‪ .‬هر یک بیت شیفت مرتبط با افزایش تأخیر به اندازه ‪ 1‬است‪ .‬وقتیکه یک بیت ‪ 0‬از انتهای سمت راست‬
‫بعد از ‪ p‬شیفت پدیدار شد‪ ،‬به این معنی است که ‪ p‬یک تأخیر قابل قبول است درغیراینصورت اگر یک بیت ‪ 1‬از‬
‫راست خارج شد یعنی یک تصادم وجود دارد و بنابراین مرتبط با تأخیری است که باید منع شود‪.‬‬
‫‪(Cn‬‬ ‫‪Cn-1‬‬ ‫‪C2‬‬ ‫بردار تصادم اولیه= )‪C1‬‬

‫سالم‬
‫"‪"0‬‬ ‫‪...‬‬

‫بیت ‪ 0‬منطقی از سمت چپ ثبات شیفت وارد میشود‪ .‬حالت بعدی‪ ،‬بعد از ‪ p‬شیفت با ‪ or‬منطقی بیتی بردار تصادم‬
‫اولیه با محتویات ثبات شیفت داده شده بدست میآید‪ .‬به عنوان مثال از حالت اولیه )‪ ،CX=(1011010‬حالت‬
‫بعدی‪ ،‬بعد از یک شیفت به راست و ‪ or‬با ‪ CX‬اولیه (‪ )1111111‬بدست میآید و حالت بعدی (‪ )1011011‬بعد از‬
‫سه شیفت یا ‪ 6‬شیفت بدست میآید‪.‬‬

‫مثال ‪ :2-6‬دیاگرام حالت برای یک واحد خطلوله‬


‫یک دیاگرام حالت برای تابع ‪ X‬در شکل ‪(6-6‬ب) بدست آمده است‪ .‬از حالت اولیه (‪ )1011010‬فقط سه انتقال‬
‫ممکن است که مرتبط با سه تأخیر قابل قبول ‪1‬و ‪ 3‬و‪ 6‬در بردار تصادم اولیه میباشد‪ .‬بطور مشابه از حالت‬
‫(‪ ،)1011011‬بعد از ‪ 3‬یا ‪ 6‬شیفت به همان حالت میرسیم‪.‬‬
‫‪| 295‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫وقتیکه تعداد شیفتها ‪ m+1‬یا بیشتر باشد‪ ،‬همه انتقاالت به حالت اولیه برگشت داده میشود‪ .‬به عنوان مثال‪ ،‬بعد‬
‫از هشت یا بیشتر (با ‪ 8+‬نشان داده شده است) شیفت‪ ،‬حالت بعد باید حالت شروع باشد‪ ،‬بدون توجه به اینکه از چه‬
‫حالتی انتقال شروع میشود‪ .‬در شکل ‪(6-6‬ج) دیاگرام حالت برای جدول رزرواسیون شکل ‪(3-6‬ج) با استفاده از‬
‫یک ثبات شیفت ‪-4‬بیتی بدست میآید‪ .‬وقتیکه بردار تصادم اولیه مشخص شد‪ ،‬دیاگرام حالت مرتبط بطور منحصر‬
‫بفرد مشخص میشود‪ .‬جداول رزرواسیون مختلف ممکن است بردار(های) تصادم اولیه متفاوت یا مشابهی را نتیجه‬
‫بدهند‪.‬‬

‫این به این مفهوم است که حتی جداول رزرواسیون متفاوت ممکن است دیاگرام حالت مشابهی تولید کنند‪ .‬به هر‬
‫حال‪ ،‬جداول رزرواسیون متفاوت ممکن است بردارهای تصادم متفاوتی و بنابراین دیاگرامهای حالت متفاوتی تولید‬
‫کنند‪.‬‬

‫‪0‬ها و ‪1‬ها در حالت جاری میگویند که یک دیاگرام حالت در زمان ‪ ،t‬تأخیرات منع شده یا قابل قبول دارند‪Or .‬‬
‫منطقی بیتی‪ ،‬از نگارش شیفت داده شده حالت جاری با بردار تصادم اولیه به معنی جلوگیری از تصادم از مقداردهی‪-‬‬
‫های اولیه آینده در زمان ‪ t+1‬و رو به جلو میباشد‪.‬‬

‫بنابراین دیاگرام حالت همه انتقاالت قابل قبول که از تصادمها اجتناب میکنند را پوشش میدهد‪ .‬همه تأخیرات‬
‫بزرگتر یا مساوی ‪ m‬قابل قبول هستند‪ .‬این به این معنی است که همه تصادمها همیشه میتوانند اجتناب شوند اگر‬
‫رخدادها از هم دور زمانبندی شوند ( با تأخیرات ‪ .)m+‬به هر حال چنین تأخیرات طوالنی از دید توان عملیاتی‬
‫خطلوله قابل تحمل نیستند‪.‬‬

‫سیکلهای طماع‪ :‬از دیاگرام حالت‪ ،‬میتوانیم سیکلهای تأخیر بهینه را تشخیص دهیم که ‪ MAL‬را نتیجه‬
‫میدهد‪ .‬تعداد بیشماری سیکلهای تأخیر را میتوان با ردیابی دیاگرام حالت بدست آورد‪ .‬به عنوان مثال ‪(3,6,8),‬‬
‫)‪ (3,8), (6), (3), (1,8,6,8), (1,8‬و ‪ ...‬سیکلهای قانونی هستند که از دیاگرام حالت در شکل ‪(6-6‬ب)‬
‫بدست میآیند‪ .‬بین همه این سیکلها فقط سیکلهای ساده جالب هستند‪.‬‬

‫یک سیکل ساده یک سیکل تأخیر است که هر حالت در آن فقط یکبار ظاهر میشود‪ .‬در دیاگرام حالت شکل ‪-6‬‬
‫‪(6‬ب) فقط (‪ )3‬و (‪ )6‬و(‪ )8‬و (‪ )8،1‬و(‪ )8،3‬و(‪ )8،6‬سیکلهای سادهاند‪ .‬سیکل )‪ (1,8,6,8‬ساده نیست زیرا از حالت‬
‫(‪ )1011010‬دو بار عبور میکند‪ .‬بطور مشابه سیکل )‪ (3,6,3,8,6‬ساده نیست زیرا حالت (‪ )1011011‬را سه بار‬
‫تکرار میکند‪.‬‬

‫بعضی سیکلهای ساده طماع هستند‪ .‬یک سیکل طماع‪ ،‬سیکلی است که یالها با کمترین تأخیرات نسبت به حالت‬
‫شروع ساخته میشوند‪ .‬به عنوان مثال در شکل ‪(6-6‬ب) سیکلهای )‪ (1,8‬و )‪ (3‬طماع هستند‪ .‬سیکلهای طماع‬
‫در شکل ‪(6-6‬ج)‪ (3) ،‬و )‪ (1,5‬میباشند‪ .‬اینچنین سیکلی باید ابتدا ساده باشد‪ ،‬و باید میانگین تأخیراتش از سایر‬
‫سیکلهای ساده کمتر باشد‪ .‬سیکل طماع (‪8‬و‪ )1‬در شکل ‪(6-6‬ب) میانگین تأخیر ‪ (1+8)/2=4.5‬دارد که کمتر‬
‫کانون نشر علوم‬ ‫|‬ ‫‪296‬‬

‫از سیکل ساده ‪ (6,8)=(6+8)/2=7‬میباشد‪ .‬سیکل طماع (‪ )3‬تأخیر ثابت دارد که برابر با ‪ MAL‬برای ارزیابی‬
‫تابع ‪ X‬بدون ایجاد تصادم میباشد‪.‬‬

‫‪ MAL‬در شکل ‪(6-6‬ج)‪ )3( ،‬است که مرتبط با یکی از دو سیکل طماع است‪ .‬یالهای با حداقل تأخیر در دیاگرام‪-‬‬
‫های حالت با * عالمت زده شدهاند‪.‬‬

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

‫‪ -3-2-6‬بهینه سازی زمانبندی خط لوله‪ :‬یک روش بهینه سازی روی ‪ MAL‬در زیر ارائه میشود‪ .‬ایده‪ ،‬قرار‬
‫دادن یک مرحله تأخیر به داخل خطلوله اصلی است‪ .‬این روش جدول رزرواسیون را بهبود خواهد داد و بردار تصادم‬
‫جدید را که دیاگرام حالت را بهبود میدهد ایجاد میکند‪ .‬هدف بدست آوردن یک سیکل تأخیر بهینه‪ ،‬که کوتاهتر‬
‫است میباشد‪.‬‬

‫محدودیتهای روی ‪ :MAL‬در سال ‪ Shar ،1972‬محدودیتهای زیر را روی ‪ MAL‬تعیین کرد‪:‬‬

‫(‪ )1‬کران پایین ‪ ،MAL‬به حداکثر تعداد عالمتهای چک روی هر سطر جدول رزرواسیون محدود شده است‪.‬‬
‫(‪ MAL )2‬کمتر مساوی میانگین تأخیر هر سیکل طماع در دیاگرام حالت است‪.‬‬
‫(‪ )3‬کران باالی میانگین تأخیر هر سیکل طماع برابر با تعداد ‪ 1‬ها در بردار تصادم اولیه ‪ 1 +‬میباشد‪.‬‬

‫این نتایج پیشنهاد میکند که سیکل تأخیر بهینه باید از کوتاهترین سیکلهای طماع انتخاب شود‪ .‬به هر حال‪ ،‬یک‬
‫سیکل طماع برای ضمانت بهینگی ‪ MAL‬کافی نیست‪ .‬کران پایین‪ ،‬بهینگی را تضمین میکند‪ .‬به عنوان مثال‬
‫‪ MAL=3‬برای هر دو تابع ‪ X‬و تابع ‪ Y‬با کران پایین ‪ 3‬از جداول رزرواسیون آنها مطابقت میکند‪ .‬کران باالی‬
‫‪ MAL‬برای تابع ‪ X‬از شکل ‪(6-6‬ب)‪ ،‬برابر ‪ 5=1+4‬میباشد‪ .‬شکل ‪(6-6‬ج) نشان میدهد که برای تابع ‪ Y‬کران‬
‫باالی ‪ 2+1=3‬روی ‪ MAL‬بدست میآید‪ .‬بنابراین‪ ،‬همه سیکلهای طماع برای تابع ‪ Y‬منجر به مقدار تأخیر بهینه‬
‫‪ 3‬میشود که از این کمتر نمیتواند شود‪.‬‬
‫برای بهینه کردن ‪ ،MAL‬نیازمند پیدا کردن کران پایین با اصالح جدول رزرواسیون میباشیم‪ .‬روش کار کاهش‬
‫تعداد عالمت چک در هر سطر است‪ .‬جدول رزرواسیون اصالح شده باید عملکرد اصلی را حفظ کند‪ Patel .‬و‬
‫‪ ،)1976( Davidson‬استفاده از مراحل تأخیر را پیشنهاد کردهاند تا کارایی خطلوله را با کم کردن ‪ MAL‬زیاد‬
‫کنند‪ .‬تکنیک آنها در زیر توصیف میشود‪.‬‬
‫درج تأخیر‪ :‬هدف درج تأخیر‪ ،‬اصالح جدول رزرواسیون و بدست آوردن یک بردار تصادم جدید است‪ .‬این روش‬
‫منجر به یک دیاگرام حالت اصالح شده میشود که ممکن است سیکلهای طماعی ایجاد کند که کران پایین‬
‫‪ MAL‬را برآورده کند‪.‬‬
‫‪| 297‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫قبل از درج تأخیر‪ ،‬خطلوله سه مرحلهای شکل ‪(7-6‬الف) را با جدول رزرواسیون تعیین شده در شکل ‪(7-6‬ب) مد‬
‫نظر قرار میدهیم‪ .‬این جدول بردار تصادم )‪ C=(1011‬دارد که تأخیرات منع شده ‪1‬و ‪2‬و ‪ 4‬دارد‪ .‬دیاگرام حالت‬
‫مرتبط شکل ‪(7-6‬ج) میباشد‪ .‬که فقط یک حالت دارد و سیکل طماع (‪ )3‬برابر با ‪ MAL=3‬میباشد‪ .‬بر اساس‬
‫جدول رزرواسیون‪ ،‬حداکثر تعداد چک در هر سطر ‪ 2‬است‪ .‬بنابراین ‪ MAL=3‬بدست آمده در شکل ‪(7-6‬ج) بهینه‬
‫خروجی‬
‫نیست‪.‬‬
‫ورودی‬
‫‪S1‬‬ ‫‪S2‬‬ ‫‪S3‬‬

‫(الف) یک خطلوله سه مرحلهای‬


‫زمان‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬
‫‪S1‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫تأخیر یک سیکل ساعت با ‪D2‬‬ ‫‪5+‬‬ ‫‪1011‬‬ ‫*‪3‬‬
‫مراحل‬

‫‪S2‬‬ ‫‪X‬‬ ‫‪X‬‬


‫‪S3‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫تأخیریک سیکل ساعت با ‪D1‬‬
‫(ج)دیاگرام حالت با ‪MAL=3‬‬
‫(ب) جدول رزرواسیون و عملیاتی که باید تأخیر داده شود‬
‫شکل ‪ :7-6‬یک خطلوله با حداقل متوسط تأخیر ‪3‬‬
‫خروجی‬
‫‪D1‬‬
‫ورودی‬
‫‪S1‬‬ ‫‪S2‬‬ ‫‪S3‬‬
‫‪D2‬‬

‫(الف) یک خطلوله سه مرحلهای‬


‫زمان‬ ‫‪4,7+‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪100010‬‬
‫‪ S1‬مراحل‬ ‫‪X‬‬ ‫‪X2‬‬
‫‪4,7+‬‬
‫‪ S2‬اصلی‬ ‫‪X‬‬ ‫‪X‬‬
‫*‪1‬‬ ‫‪+‬‬ ‫‪5‬‬
‫‪S3‬‬ ‫‪X‬‬ ‫‪X1‬‬ ‫‪7‬‬
‫‪ D1‬مراحل‬ ‫‪3‬‬ ‫‪4,7+‬‬
‫‪D1‬‬ ‫‪110011‬‬ ‫‪4‬‬ ‫‪100011‬‬
‫‪ D2‬تأخیر‬ ‫‪D2‬‬
‫*‪1‬‬ ‫*‪3‬‬ ‫‪5‬‬
‫(ب) جدول رزرواسیون اصالح شده‬ ‫‪5‬‬
‫*‪3‬‬
‫‪100110‬‬
‫(ج) دیاگرام حالت اصالح شده با ‪MAL=(1+3)/2=2‬‬
‫کاهش یافتهشکل ‪ :8-6‬درج دو مرحله تأخیر برای بدست آوردن ‪ MAL‬بهینه روی خطلوله شکل ‪7-6‬‬

‫درج یک مرحله تأخیر ‪ D1‬بعد از =‪ S‬باعث خواهد شد هر دو عمل ‪ X1‬و ‪ X2‬بعد از زمان ‪ 4‬یک سیکل تأخیر بخورند‪.‬‬
‫درج یک مرحله تأخیر دیگر ‪ D2‬بعد از ‪ S3‬عمل ‪ X2‬را یک سیکل دیگر به تأخیر میاندازد‪.‬‬

‫این عملیات تأخیر داده شده‪ ،‬همانطور که در شکل ‪(7-6‬ب) گروهبندی شدهاند‪ ،‬یک پیکربندی خطلوله دیگری را‬
‫نتیجه میدهد که در شکل ‪(8-6‬الف) نشان داده شده است‪ .‬همانطور که در شکل ‪(8-6‬ب) نشان داده شده است‪،‬‬
‫هر دو عنصر تأخیری ‪ D1‬و ‪ D2‬به عنوان مراحل اضافی درج شدهاند که باعث بزرگ شدن جدول رزرواسیون با‬
‫‪ 5=3+2‬سطر و ‪ 7=2+5‬ستون میشوند‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪298‬‬

‫در مجموع‪ ،‬عمل ‪ ،X1‬یک سیکل از زمان ‪ 4‬به زمان ‪ 5‬تأخیر داده میشود و عمل ‪ X2‬دو سیکل از زمان ‪ 5‬به ‪7‬‬
‫تأخیر میخورد‪ .‬سایر عملیات (با ‪ X‬در شکل ‪(8-6‬ب) نشان داده شدهاند) بدون تغییر میمانند‪ .‬این جدول جدید‬
‫منجر به یک بردار تصادم جدید (‪ )100010‬و یک دیاگرام اصالح شده در شکل ‪(8-6‬ج) میشود‪ .‬این دیاگرام یک‬
‫سیکل طماع (‪ )3،1‬را نشان میدهد که منتج به ‪ MAL‬کاهش یافته برابر با ‪ (1+3)/2=2‬میشود‪ .‬بنابراین درج‬
‫تأخیر کارایی خطلوله را بهبود میدهد و حد پایین ‪ MAL‬را بدست میآورد‪.‬‬
‫اولیه‪1‬‬ ‫‪ -4-2-6‬ماتریس تصادم‬

‫یک پردازنده خط لوله‪ ،‬که میتواند ‪ k‬تابع مجزا را انجام دهد‪ ،‬میتواند با ‪ k‬جدول رزرواسیون همپوش باهم توصیف‬
‫شود‪ .‬به منظور اینکه خط لوله بتواند چند تابع را انجام دهد‪ ،‬خط لوله باید قابل پیکربندی مجدد‪ 2‬باشد‪ .‬مثالی از‬
‫خطلولههای چندتابعی ایستا‪ ،‬خط لولههای محاسباتی ‪ ASC‬میباشند‪ ،‬که هشت بخش مجزا دارد و میتوانند حدود‬
‫‪ 20‬پیکربندی تابعی ممکن را انجام دهند‪ .‬هر تابع با یک تگ مشخص میشود که تعیین کننده الگوی جریان آن‬
‫میباشد‪ .‬تصادم میتواند بین توابع مختلف نیز اتفاق بیافتد‪.‬‬

‫برای پیادهسازی خط لوله بدون تصادم از جدول رزرواسیون همپوش استفاده میشود‪ .‬یک نمونه جدول رزرواسیون‬
‫همپوش دوعملکرده در شکل ‪(9-6‬الف) نشان داده شده است که ‪ A‬و ‪ B‬نشان دهنده دو تابع مختلف میباشند‪.‬‬
‫لیست ممنوعه برای یک خطلوله چند عملکردی مجموعهای از فاصلههای اولیه میباشد که منجر به تصادم میشوند‪.‬‬
‫یک کار تابع ‪ A‬ممکن است با یک کار تابع ‪ B‬که قبالً مقدار دهی شده است تصادم کند‪ ،‬اگر تاخیر بین این دو‬
‫مقداردهیهای اولیه عضو لیست ممنوعه باشد‪ .‬بردار تصادم ‪ VAB‬بیانگر تاخیرات ممنوعه برای زوج توابع ‪ A‬و ‪B‬‬
‫میباشد‪ .‬بردار )‪ VAB=(Cn…C2C1‬میتواند از جدولهای رزرواسیون همپوش ‪ A‬و ‪ B‬محاسبه شود‪ .‬عنصر ‪Ck=1‬‬
‫اگر در یکی از سطرهای جدول رزرواسیون همپوش شامل ‪ A‬در ستون ‪( t‬برای یک ‪t‬ی دلخواه) و یک ‪ B‬در ستون‬
‫‪ t+k‬باشد در غیر اینصورت ‪ .Ck=0‬برای جدول شکل ‪(9-6‬الف) چهار بردار تصادم )‪،VAA=(0110‬‬
‫)‪ VBA=(1010) ،VAB=(1011‬و )‪ VBB=(0110‬در شکل ‪(9-6‬ب) نشان داده شدهاند‪ .‬در کل برای یک‬
‫خطلوله ‪k‬تابعه‪ k2 ،‬بردار تصادم وجود دارد‪ K2 .‬بردار تصادم‪-‬تقاطعی‪ 3‬میتوانند در ‪ k‬ماتریس تصادم نوشته شوند‪.‬‬
‫ماتریس تصادم ‪ MR‬نشان دهنده تاخیرات ممنوعه برای همه توابعی میباشند که بعد از تابع ‪ R‬مقداردهی شدهاند‪.‬‬
‫سطر ‪i‬م در ماتریس ‪ MR‬بردار تصادم‪-‬تقاطعی ‪ VIR‬میباشد که ‪ I=1,2,…,k‬عالیم ‪ k‬تابع داخل جدول میباشند‪.‬‬
‫یک خط لوله ‪-k‬تابعی میتواند با یک بانک از ‪ k‬شیفت رجیستر کنترل شود‪ .‬شیف رجیستر ‪ I‬مقداردهی اولیه تابع‬
‫‪ I‬را کنترل میکند‪ .‬بیت کنترلی هر تابع مقداردهی اولیه بیت سمت راست هر شیفت رجیستر میباشد‪.‬‬

‫مقداردهی یک کار با تابع ‪ Q‬در زمان بعدی مجاز میباشد اگر بیت سمت راست شیفت رجیستر مربوط به ‪ Q‬صفر‬
‫باشد‪ .‬بالفاصله بعد از مقداردهی یک کار با تابع ‪ ،Q‬ماتریس تصادم (برخورد) ‪ MQ‬با ماتریس شکل داده شده بعد‬

‫‪1‬‬
‫‪Initial collision matrix‬‬
‫‪2‬‬
‫‪Reconfigurable‬‬
‫‪3‬‬
‫‪Cross-Collision‬‬
‫‪| 299‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫از پردازه شیفت هر شیفت رجیستر‪ OR ،‬میشود‪ .‬هر بردار شیفت رجیستر ‪ I‬با بردار تصادم‪-‬تقاطعی ‪VIQ ,1≤I≤k‬‬
‫بصورت بیتی ‪ OR‬میشود‪.‬‬

‫یک دیاگرام حالت با بردارهای حالت بانک شیفت رجیسترها ساخته میشود‪ .‬یالها با تاخیر و عالمت تابع مقداردهی‬
‫شده برچسب گذاری میشوند‪ .‬حالت اولیه میتواند یکی از ‪ k‬ماتریس تصادم باشد‪ .‬سیکلها در دیاگرام حالت مرتبط‬
‫با الگوهای بدون تصادم کارها میباشند‪ .‬هر سیکل می تواند از حداقل یکی از حاالت شروع‪ ،‬شروع شود‪ .‬به عنوان‬
‫مثال‪ ،‬سیکل )‪ (A3,B1‬در شکل ‪(9-6‬ج) میتواند با شروع از حالت شروع ‪ MB‬با یال ‪ ،A3‬یا با شروع از حالت‬
‫شروع ‪ MA‬با یال ‪ ،B1‬شروع شود‪ .‬روش پیدا کردن ‪ MAL‬برای رسیدن به بیشترین توان عملیاتی مشابه خطلوله‬
‫تک عملکرده میباشد‪.‬‬
‫بردارهای تصادم تقاطی‪:‬‬

‫‪C4 C3 C2 C1‬‬ ‫‪C4 C3 C2 C1‬‬


‫)‪VAA = (0 1 1 0‬‬ ‫)‪VAB = (1 0 1 1‬‬
‫)‪VBA = (1 0 1 0‬‬ ‫)‪VBB = (0 1 1 0‬‬
‫ماتریسهای تصادم یا برخورد‪:‬‬

‫𝟎𝟏𝟏𝟎‬ ‫𝑽‬ ‫𝟏𝟏𝟎𝟏‬ ‫𝑽‬


‫[ = 𝑨𝑴‬ ‫] 𝑨𝑨 [ = ]‬ ‫[ = 𝑨𝑴‬ ‫] 𝑩𝑨 [ = ]‬
‫𝟎𝟏𝟎𝟏‬ ‫𝑨𝑩𝑽‬ ‫𝟎𝟏𝟏𝟎‬ ‫𝑩𝑩𝑽‬
‫(الف)‪-‬جدول رزرواسیون همپوش‬ ‫(ب)‬

‫‪For A1:➔ 0110→ 1 bit shr: 0011+0110→0111‬‬


‫‪1010→1 bit shr: 0101+1010→1111‬‬

‫‪For B1:➔ 0110→ 1 bit shr: 0011+1011→1011‬‬


‫‪1010→1 bit shr: 0101+0110→0111‬‬

‫شکل ‪( :9-6‬الف) جدول رزرواسیون همپوش (ب) بردارهای تصادم و ماتریسهای تصادم اولیه‪( .‬ج) دیاگرام حالت مربوطه‬

‫توان عملیاتی خطلوله‪ :‬به معنی نرخ مقدار دهی اولیه یا میانگین تعداد کارهایی که در هر پالس ساعت مقداردهی‬
‫میشوند‪ ،‬میباشد‪ .‬اگر ‪ N‬کار در ‪ n‬سیکل خطلوله مقداردهی شوند‪ ،‬آنگاه نرخ مقداردهی یا توان عملیاتی خطلوله‬
‫با ‪ N/n‬سنجیده میشود‪ .‬این نرخ بطور اولیه معکوس ‪ MAL‬بدست آمده میباشد‪ .‬بنابراین استراتژی زمانبندی بر‬
‫کارایی خطلوله تأثیر میگذارد‪.‬‬

‫در کل‪ ،‬هر چه ‪ MAL‬بدست آمده کمتر باشد‪ ،‬توان عملیاتی بیشتری مورد انتظار است‪ .‬بیشترین توان عملیاتی‬
‫ممکن‪ ،‬مقدار دهی یک کار در هر پالس است یعنی ‪ MAL‬برابر ‪ 1‬باشد‪ .‬زیرا‪( ،‬کوتاهترین تأخیر هر سیکل طماع‬
‫≤‪ .)1≤MAL‬به غیر حالتی که ‪ MAL=1‬باشد‪ ،‬توان عملیاتی خطلوله کسری است‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪300‬‬

‫بازدهی خطلوله‪ :‬واحد سنجش مهم دیگر بازدهی خطلوله است‪ .‬درصد زمانیکه هر مرحله خطلوله روی تعداد‬
‫زیادی مقداردهی کار استفاده میشود را بهرهوری مرحله میگویند‪ .‬کل نرخ بهرهوری همه مراحل‪ ،‬بازدهی خطلوله‬
‫را مشخص میکند‪.‬‬

‫اجازه دهید سیکل تأخیر (‪ )3‬در شکل ‪(5-6‬ب) را مجدداً تست کنیم‪ .‬در سیکل تأخیر (‪ )3‬دو مرحله خطلوله یعنی‬
‫‪ S1‬و ‪ S3‬بعد از زمان ‪ 6‬بطور کامل و پیوسته بهرهوری میشوند مرحله ‪ S2‬خطلوله دو پالس استفاده میشود و یک‬
‫پالس بیکار است‪ .‬بنابراین کل خطلوله ‪ 8/9=88.8%‬برای سیکل (‪ )3‬بازدهی دارد‪ .‬برای سیکل تأخیر (‪،)1,8‬‬
‫‪ 16/27=59%‬و برای سیکل تأخیر (‪ 8/18=44% ،)6‬بازدهی دارد همانطور که در شکل ‪(5-6‬الف) و ‪(5-6‬ج)‬
‫نشان داده شده است‪ .‬نکته اینکه هیچکدام از سه مرحله نسبت به دو سیکل مقدار دهی بطور کامل بهرهوری‬
‫نمیشوند‪.‬‬

‫توان عملیاتی و بازدهی به یکدیگر وابستهاند‪ .‬هر چه توان عملیاتی بیشتر باشد‪ ،‬باعث سیکل تأخیر کوچکتر میشود‪.‬‬
‫بازدهی بیشتر به معنی زمانهای بیکاری کمتر برای مراحل خطلوله میباشد‪ .‬دو مثال فوق نشان میدهد که توان‬
‫عملیاتی باالتر‪ ،‬بازدهی بیشتری ایجاد میکند‪ .‬ممکن است مثالهای دیگر باعث نتیجه گیری دیگری شوند‪ .‬رابطه‬
‫بین دو واحد تابعی از جدول رزرواسیون و سیکل مقداردهی بدست آمده است‪.‬‬

‫در حالت ثابت در هر سیکل مقداردهی قابل قبول‪ ،‬حداقل یک مرحله خطلوله باید کامالً (‪ )٪100‬بهرهوری شود‪ .‬در‬
‫غیراینصورت از توانایی خطلوله بطور کامل استفاده نشده است‪ .‬در چنین حالتی سیکل مقداردهی بهینه نیست و‬
‫سایر سیکلهای مقداردهی باید تست شوند‪.‬‬

‫‪ -3-6‬طراحی خطلوله دستورالعمل‪ :‬رشتهای از دستورات میتوانند به روشی همپوش در یک خط لوله اجرا‬
‫شوند‪ .‬در زیر خطلولههای دستورالعمل برای پردازندههای اسکالر ‪ RISC, CISC‬را توصیف میکنیم‪ .‬موضوعاتی که‬
‫مطالعه میکنیم شامل پیشبرداشت دستورالعمل‪ ،‬جلورانی دادهها‪ ،‬اجتناب از مخاطره‪ ،‬در هم قفلی برای حل وابستگی‬
‫داده‪ ،‬زمانبندی دستور ایستا و پویا‪ ،‬و تکنیکهای راهاندازی دستورالعمل برای بهبود کارایی پردازنده خطلوله شده‬
‫میباشد‪.‬‬

‫‪ -1-3-6‬فازهای اجرای دستورالعمل‪ :‬اجرای یک دستورالعمل نوعی شامل رشتهای از عملیات مثل فازهای‬
‫برداشت دستورالعمل‪ ،‬دیکد‪ ،‬برداشت عملوند‪ ،‬اجرا و بازپس نویسی میباشد‪ .‬این فازها برای اجرای همپوش در یک‬
‫خط لوله خطی مناسب هستند‪ .‬ممکن است هر فاز وابسته به نوع دستورالعمل و معماری پردازنده‪/‬حافظه استفاده‬
‫شده‪ ،‬نیازمند یک یا چند پالس برای اجرا باشد‪.‬‬

‫پردازش دستورالعمل خطلوله شده‪ :‬یک خطلوله دستورالعمل نوعی در شکل ‪ 10-6‬نشان داده شده است‪.‬‬
‫مرحله برداشت (‪ )F‬تقریباً در یک پالس دستورات را از حافظه نهان برداشت میکند‪ .‬مرحله دیکد (‪ )D‬عملکرد دستور‬
‫که باید انجام شود را مشخص میکند و منابع مورد نیاز را مشخص میکند‪ .‬منابع شامل ثباتهای همه منظوره‪،‬‬
‫‪| 301‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫گذرگاهها و واحدهای عملیاتی میباشند‪ .‬مرحله انتشار (‪ )I1‬منابع را رزرو میکند‪ .‬درهم قفلی کنترل خطلوله در این‬
‫مرحله نگه داشته میشود‪ .‬همچنین عملوندها در خالل مرحله انتشار از ثباتها خوانده میشوند‪.‬‬

‫دستورات در یک یا چند مرحله اجرا (‪ ،)E‬اجرا میشوند‪ .‬سه مرحله اجرا در شکل ‪(10-6‬الف) نشان داده شده است‪.‬‬
‫آخرین مرحله‪ ،‬بازپس نویسی‪ )W( 2‬برای نوشتن نتایج به داخل ثباتها استفاده میشود‪ .‬عملیات ‪ load‬و ‪store‬‬
‫حافظه به عنوان قسمتی از اجرا رفتار میکنند‪ .‬شکل ‪ 10-6‬جریان دستورات ماشین در طول یک خطلوله نوعی را‬
‫نشان میدهد‪ .‬این ‪ 8‬دستورالعمل برای اجرای عبارات زبان سطح باالی ‪ X=Y+Z‬و ‪ A=B×C‬میباشند‪ .‬فرض‬
‫میکنیم دستورات ‪ load‬و ‪ 4 ،store‬پالس ساعت اجرا میگیرند در حالیکه اجرای عملیات ضرب و جمع اعشاری‬
‫سه پالس ساعت میگیرند‪.‬‬

‫فرضیات زمانی فوق مقادیر رایج استفاده شده در یک پردازنده ‪ CISC‬را نشان میدهند‪ .‬در بسیاری از پردازندههای‬
‫‪ ،RISC‬پالسهای ساعت کمتری مورد نیاز میشوند‪ .‬سیستم ‪ Cray1‬نیازمند ‪ 11‬پالس برای ‪ load‬و ‪ 6‬پالس‬
‫برای جمع ممیز شناور می باشد‪ .‬با انتشار دستور به ترتیب‪ ،‬اگر یک دستور به خاطر وابستگی داده یا منبع بلوکه‬
‫شود‪ ،‬همه دستورات بعد از آن بلوکه میشوند‪.‬‬

‫شکل ‪(10-6‬ب) انتشار دستورات به ترتیب برنامه اصلی را نشان میدهد‪ .‬قسمتهای سایهدار پالسهای بیکار هستند‬
‫وقتیکه انتشار دستور به خاطر تأخیر منابع یا تداخل یا به خاطر وابستگی داده بلوکه میشوند‪ .‬دو دستور ‪ load‬اول‬
‫در پالسهای متوالی منتشر میشوند‪ add .‬به هر دو دستور ‪ load‬وابسته است و باید سه پالس قبل از اینکه‬
‫دادههای ‪ Y,Z‬بار شوند‪ ،‬صبر کند‪.‬‬

‫بطور مشابه‪ ،‬ذخیره جمع به مکان حافظه ‪ X‬باید سه پالس برای ‪ add‬به خاطر وابستگی جریان صبر کند‪ .‬بلوکه‬
‫شدنهای مشابهی در طول محاسبه ‪ A‬وجود دارند‪ .‬زمان کل مورد نیاز ‪ 17‬پالس ساعت است‪ .‬این زمان از شروع‬
‫پالس ‪ 4‬که اولین دستور شروع به اجرا میکند تا پالس ‪ 20‬که آخرین دستور شروع به اجرا میکند سنجیده شده‬
‫است‪ .‬این سنجش زمان تأثیرات بیخود از شروع ”‪ “startup‬خطلوله یا تأخیرات "‪ "draining‬را حذف کرده‬
‫است‪.‬‬

‫شکل ‪( 10-6‬ج) یک زمانبندی بهبود یافته را بعد از اینکه ترتیب انتشار دستور برای حذف تأخیرات غیرضروری به‬
‫خاطر وابستگیها تغییر داده شده است‪ ،‬نشان میدهد‪ .‬ایده اصلی انتشار هر ‪ 4‬عمل ‪ load‬در ابتدا است‪ .‬هر دو‬
‫دستور ضرب و جمع به خاطر این پیشبرداشت پالسهای کمتری بلوکه میشوند‪ .‬مرتب سازی مجدد نباید نتایج‬
‫نهایی را تغییر دهد‪ .‬زمان مورد نیاز به ‪ 11‬پالس کاهش یافته است که از پالس ‪ 4‬تا پالس ‪ 14‬سنجیده شده است‪.‬‬

‫‪1‬‬
‫‪Issue‬‬
‫‪2‬‬
‫‪Write back‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪302‬‬

‫‪Fetch‬‬ ‫‪Decode‬‬ ‫‪Issue‬‬ ‫‪Execute‬‬ ‫‪Execute‬‬ ‫‪Execute‬‬ ‫‪Write‬‬


‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫)‪back (W‬‬
‫(الف) خطلوله دستورالعمل ‪ 7‬مرحلهای‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3 4 5‬‬ ‫‪6‬‬ ‫‪7 8 910 11 12 13 14 15 16 17 18 19 20 21 22‬‬ ‫‪23‬‬


‫)‪R1Mem(Y‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E E‬‬ ‫‪E‬‬ ‫‪W‬‬
‫)‪R2Mem(Z‬‬ ‫‪F‬‬ ‫‪D I‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫‪E W‬‬
‫)‪R3(R1)+(R2‬‬ ‫‪F D‬‬ ‫‪I‬‬ ‫‪E E E W‬‬
‫)‪Mem(x)(R3‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E E E W‬‬
‫)‪R4Mem(B‬‬ ‫‪F‬‬ ‫‪D I‬‬ ‫‪E E E W‬‬
‫)‪R5Mem(C‬‬ ‫‪F D I‬‬ ‫‪E E E W‬‬
‫)‪R6(R4)*(R5‬‬ ‫‪F D‬‬ ‫‪I‬‬ ‫‪E E E W‬‬
‫)‪Mem(A)(R6‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E E E‬‬ ‫‪W‬‬

‫(ب) انتشار دستور به ترتیب‬


‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7 8 910 11 12‬‬ ‫‪13 14 15 16 17‬‬
‫)‪R1Mem(Y‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫‪W‬‬
‫)‪R2Mem(Z‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫‪E W‬‬
‫)‪R4Mem(B‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E‬‬ ‫‪E E W‬‬
‫)‪R5Mem(C‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E E E W‬‬
‫)‪R3(R1)+(R2‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E E E W‬‬
‫)‪R6(R4)*(R5‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E E‬‬ ‫‪E‬‬ ‫‪W‬‬
‫)‪Mem(x)(R3‬‬ ‫‪F‬‬ ‫‪D I‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫‪E W‬‬
‫)‪Mem(A)(R6‬‬ ‫‪F D‬‬ ‫‪I‬‬ ‫‪E E E‬‬ ‫‪W‬‬
‫(ج) انتشار دستورالعمل مجدداً مرتب شده‬
‫شکل ‪ :10-6‬اجرای خطلوله شده ‪ X=Y+Z‬و ‪A=B×C‬‬

‫مثال ‪ :3-6‬خطلوله دستورالعمل ‪ R4000: MIPS R4000‬یک پردازنده سوپرپایپ الین ‪ 64‬بیتی است‬
‫که از حافظههای نهان داده و دستورالعمل مجزا استفاده میکند و خطلوله سرعت باالتری برای اجرای دستورات‬
‫ثباتی دارد‪ .‬همانطور که در شکل ‪ 11-6‬نشان داده شده است‪ ،‬طرح خطلوله ‪ 8‬مرحلهای پردازنده برای رسیدن به‬
‫نرخ اجرای یک دستور در هر پالس ساعت ارائه شده است‪.‬‬

‫همانطور که در شکل ‪(11-6‬الف) نشان داده شده است‪ ،‬اجرای هر دستورالعمل ‪ R4000‬شامل ‪ 8‬سیکل اصلی‬
‫است‪ .‬هر کدام از این مراحل نیازمند تقریباً یک پالس ساعت است‪ .‬سوپرپایپالین مراجعات حافظه و دستور را در‬
‫دو مرحله مجزا کرده است‪ .‬مرحله ‪ ALU‬تک سیکله زمان بیشتری از هر مرحله حافظه نهان میگیرد‪.‬‬

‫اجرای همپوش شده دستورات متوالی در شکل ‪(11-6‬ب) نشان داده شده است‪ .‬این خطلوله به طور مؤثری کار‬
‫میکند زیرا منابع مختلف پردازنده مثل دسترسی آدرس و گذرگاه‪ ،‬عملیات ‪ ،ALU‬دسترسیهای ثبات و غیره به‬
‫طور همزمان براساس عدم دخالت بهرهبرداری میشوند‪.‬‬

‫نرخ ساعت داخلی )‪ (100MHz‬در ‪ R4000‬دو برابر ورودی خارجی یا فرکانس ساعت اصلی است‪ .‬شکل ‪11-6‬‬
‫(ب) انتقاالت خطلوله بهی نه برای تکمیل کردن یک دستورالعمل در هر سیکل داخلی را نشان میدهد‪ .‬دستورات‬
‫‪ load‬و ‪ branch‬تأخیرات بیشتری ایجاد میکنند‪.‬‬
‫‪| 303‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬

‫دسترسی به حافظه‬ ‫چک تگ‬


‫نهان دستورالعمل‬ ‫دستورالعمل‬
‫(دسترسی به‬
‫ترجمه آدرس‬ ‫دیکد دستور‬ ‫حافظه نهان‬ ‫چک تگ‬ ‫نوشتن به‬
‫عملیات‬
‫دستورالعمل‬ ‫داده)‬ ‫داده‬ ‫ثبات‬
‫خواندن فایل‬ ‫‪ALU‬‬
‫ثبات‬ ‫ترجمه آدرس‬
‫داده‬
‫‪I-Cache‬‬ ‫‪Decode‬‬

‫‪Register‬‬
‫‪Register file‬‬ ‫‪Alu‬‬ ‫‪D-cache‬‬ ‫‪file‬‬

‫(الف) مراحل خطلوله ‪R4000‬‬


‫پالس ساعت اصلی‬

‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬


‫سیکل‬ ‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬
‫خطلوله‬ ‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬
‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬
‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬
‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬

‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬

‫‪IF‬‬ ‫‪IS‬‬ ‫‪RF‬‬ ‫‪EX‬‬ ‫‪DF‬‬ ‫‪DS‬‬ ‫‪TC‬‬ ‫‪WB‬‬


‫سیکل‬
‫جاری‬
‫پردازنده‬
‫(ب) همپوشی دستورالعمل در خطلوله ‪R4000‬‬
‫شکل ‪ 11-6‬معماری خطلوله در ‪MIPS 4000‬‬
‫‪ - 2-3-6‬مکانیزم هایی برای خطلوله دستورالعمل‬

‫در این بخش بافرهای دستورالعمل را معرفی میکنیم و استفاده از حافظه نهان‪ ،‬اجتناب از تصادم‪ ،‬چند واحد عملیاتی‪،‬‬
‫تگ کردن ثبات‪ ،‬و جلورانی داخلی برای مالیم کردن جریان خطلوله و حذف گلوگاهها و عملیات دسترسی به حافظه‬
‫غیرضروری را توصیف میکنیم‪.‬‬

‫بافرهای پیشبرداشت‪ :‬سه نوع بافر برای تطابق نرخ برداشت دستورالعمل با نرخ استفاده خطلوله میتواند‬
‫استفاده شود‪ .‬در یک زمان دسترسی حافظه‪ ،‬بلوکی از دستورالعملهای متوالی به داخل یک بافر پیشبرداشت‪ ،‬وارد‬
‫میشوند همانطور که در شکل ‪ 12-6‬نشان داده شده است‪ .‬یک دسترسی بلوکی با استفاده از ماژولهای حافظه‬
‫برگی شده یا استفاده از حافظه نهان برای کاهش زمان مؤثر دسترسی‪-‬حافظه همانطور که در ‪MIPS R4000‬‬
‫نشان داده شد‪ ،‬قابل بدست آمدن است‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪304‬‬

‫دستورات ترتیبی مشخص شده با شمارنده برنامه‬


‫‪Seq. Buffer 1‬‬
‫‪Seq. Buffer 2‬‬

‫حافظه‬ ‫واحد برداشت‬ ‫…‬


‫خطلوله دستورالعمل‬

‫‪Target Buffer 1‬‬


‫‪Target Buffer 2‬‬ ‫دستورات از مکانهای مقصد پرش‬

‫شکل ‪ :12-6‬استفاده از بافرهای مقصد و ترتیبی‬

‫دستورالعملهای متوالی به داخل یک زوج بافر ترتیبی برای خطلوله کردن به ترتیب بار میشوند‪ .‬دستورات از یک‬
‫مقصد پرش به داخل یک زوج از بافرهای مقصد برای خطلوله خارج از ترتیب بار میشوند‪ .‬هر دو بافرها به روش‬
‫‪ FIFO‬کار میکنند‪ .‬این بافرها به عنوان قسمتی از خطلوله به عنوان مراحل اضافی درمیآیند‪.‬‬

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

‫به نوع سوم بافر پیشبرداشت‪ ،‬بافر حلقه میگویند‪ .‬این بافر‪ ،‬دستورات ترتیبی داخل یک حلقه کوچک را نگه میدارد‪.‬‬
‫بافرهای حلقه با مرحله برداشت خطلوله نگهداری میشوند‪ .‬دستورات پیشبرداشت شده در بدنه حلقه بطور تکراری‬
‫اجرا می شوند تا زمانیکه اجرای همه تکرارهای حلقه تمام شود‪ .‬بافر حلقه در دو مرحله عمل میکند‪ :‬اوالً‪ ،‬شامل‬
‫دستوراتی هستند که بطور ترتیبی جلو دستور جاری هستند‪ .‬این در زمان برداشت دستور از حافظه صرفهجویی‬
‫میکند‪ .‬ثانیاً‪ ،‬تشخیص میدهد که چه موقع مقصد یک پرش در داخل محدوده حلقه قرار میگیرد‪ .‬در این حالت‪،‬‬
‫دسترسیهای حافظه غیرضروری اجتناب میشود اگر دستور مقصد هماکنون داخل بافر حلقه باشد‪CDC 6600, .‬‬
‫‪ Cray1‬از بافرهای حلقه استفاده میکنند‪.‬‬
‫دستور از حافظه‬

‫فایل ثبات‬
‫واحد برداشت دستورالعمل‬
‫‪B‬‬ ‫‪T‬‬

‫واحد تگ‬ ‫واحد دیکد و انتشار‬ ‫‪A‬‬ ‫‪S‬‬

‫ثباتهای‪load‬‬
‫‪FU: Functional Unit‬‬
‫‪RS‬‬ ‫‪RS‬‬ ‫‪RS‬‬ ‫‪RS‬‬ ‫‪RS: reservation Station‬‬

‫‪FU‬‬ ‫‪FU‬‬ ‫‪FU‬‬ ‫‪FU‬‬ ‫حافظه‬

‫گذرگاه نتیجه‬ ‫داده‬


‫شکل ‪ :13-6‬یک پردازنده خطلوله با چند واحد عملیاتی و ایستگاههای رزرواسیون توزیع شده که با ‪ tagging‬پشتیبانی میشوند‪.‬‬
‫‪| 305‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫چندین واحد عملیاتی‪ :‬گاهی اوقات یک مرحله خاص خطلوله‪ ،‬گلوگاه میشود‪ .‬این مرحله مرتبط با سطری که‬
‫بیشترین تعداد چکها را در جدول رزرواسیون دارد‪ ،‬میباشد‪ .‬در صورتی که از مرحله مذکور چند کپی داشته باشیم‬
‫مسأله گلوگاه می تواند رفع و رجوع شود‪ .‬که خود منجر به استفاده از چندین واحد عملیاتی در یک پردازنده خطلوله‬
‫شده میشود‪( .‬شکل ‪)13-6‬‬

‫‪ )1990( Sohi‬یک مدل معماری را برای یک پردازنده اسکالر خطلوله شده شامل چندین واحد عملیاتی استفاده‬
‫کرد (شکل ‪ .)13-6‬به منظور حل وابستگیهای داده و منبع در بین دستورات متوالی که وارد خطلوله میشوند‪،‬‬
‫ایستگاههای رزرواسیون (‪ )RS‬با هر واحد عملیاتی (‪ )FU‬استفاده میشوند‪ .‬عملوندها میتوانند تا زمانیکه وابستگی‪-‬‬
‫های داده حل شود در ‪ RS‬منتظر بمانند‪ .‬هر ‪ RS‬بطور منحصر بفرد با یک تگ مشخص میشود که توسط واحد‬
‫تگ مانیتور میشود‪.‬‬
‫واحد تگ‪ ،‬چک کردن تگهای همه ثباتها یا ‪RS‬هایی که در حال حاظر استفاده میشوند را انجام میدهد‪ .‬این‬
‫روش تگ کردن ثبات به سختافزار اجازه حل تداخالت بین ثباتهای منبع و مقصد منتسب شده به چندین‬
‫دستورالعمل را میدهد‪ .‬همچنین در کنار حل تداخل‪RS ،‬ها به عنوان یک بافر عمل میکنند تا رابطی بین واحدهای‬
‫عملیاتی خط لوله شده و واحدهای دیکد و انتشار باشند‪ .‬این باعث رفع و رجوع گلوگاه در مراحل اجرایی خطلوله‬
‫دستورالعمل میشود‪.‬‬

‫جلورانی داخلی داده‪ :1‬توان عملیاتی یک پردازنده خطلوله میتواند با استفاده از جلورانی داخلی داده بین چندین‬
‫واحد عملیاتی بیشتر بهبود یابد‪ .‬اوالً‪ ،‬بعضی عملیات دسترسی‪-‬حافظه با عملیات انتقال ثبات جایگزین میشود‪ .‬این‬
‫ایده در شکل ‪ 14-6‬توصیف شده است‪.‬‬

‫حافظه‬ ‫حافظه‬ ‫حافظه‬ ‫حافظه‬

‫واحد دسترسی‬ ‫واحد دسترسی‬ ‫واحد دسترسی‬ ‫واحد دسترسی‬

‫‪R1‬‬ ‫‪R1‬‬ ‫‪R2‬‬


‫‪R2‬‬
‫‪R1‬‬ ‫‪R2‬‬ ‫‪R2‬‬
‫‪R1‬‬ ‫‪LD R1,M‬‬ ‫‪LD R2,M LD R1,M‬‬ ‫‪Move R2,R1‬‬
‫‪STO M,R1‬‬ ‫‪LD R2,M‬‬ ‫‪STO M,R1‬‬ ‫‪Move R2,R1‬‬ ‫(ب) جلورانی ‪load-load‬‬
‫(الف)جلورانی ‪store-load‬‬
‫حافظه‬ ‫حافظه‬

‫واحد دسترسی‬ ‫واحد دسترسی‬

‫‪R1‬‬ ‫‪R2‬‬ ‫‪R1‬‬ ‫‪R2‬‬


‫‪STO M,R1‬‬ ‫‪STO M,R2‬‬ ‫‪STO M,R2‬‬
‫(ج) جلورانی ‪ store-store‬به خاطر همپوشانی‬
‫شکل ‪ :14-6‬جلو رانی داخلی داده با جایگزینی عملیات دسترسی‪-‬حافظه با عملیات انتقال ثبات‬

‫‪1‬‬
‫‪Internal Data Forwarding‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪306‬‬

‫جلورانی ‪ store-load‬در شکل ‪(14-6‬الف) نشان داده شده است که عمل ‪ )LD R2,M( load‬از حافظه به‬
‫ثبات ‪ R2‬میتواند با عمل ‪ )move R2,R1( move‬از ثبات ‪ R1‬به ثبات ‪ R2‬جایگزین میشود‪ .‬چون انتقال ثباتی‬
‫از دسترسی حافظه سریعتر است‪ ،‬این جلورانی داده ترافیک حافظه را کم میکند و بنابراین منجر به زمان اجرای‬
‫کمتر میشود‪.‬‬

‫به طور مشابه‪ ،‬جلورانی ‪( load-load‬شکل ‪(14-6‬ب)) عمل ‪ load‬دوم را حذف میکند (‪ )LD R2,M‬و آنرا با‬
‫یک عمل ‪ )Move R2,R1( Move‬جایگزین میکند‪ .‬در شکل ‪(14-6‬ج) جلورانی ‪ store-store‬نشان داده‬
‫شده است‪ .‬دو ‪ store‬فوراً یکی بعد از دیگری اجرا شدهاند‪ .‬بنابراین ‪ store‬دوم روی ‪ store‬اول دوباره نویسی‬
‫میکند و ‪ store‬اول اضافی است و میتواند بدون تأثیر بر خروجی حذف شود‪ .‬هدف کلی این روشهای جلورانی‬
‫حذف عملیات دسترسی غیرضروری (چه برای ‪ load‬یا ‪ )store‬میباشد‪.‬‬

‫مثال ‪ :4-6‬پیادهسازی عمل ضرب‪-‬نقطهای با جلورانی داخلی داده بین یک واحد ضرب و یک‬
‫واحد جمع‬
‫میتوان خروجی یک ضرب کننده را مستقیماً به ورودی یک جمع کننده (شکل ‪ )15-6‬برای پیادهسازی عمل ضرب‬
‫نقطهای زیر خوراند‪:‬‬
‫𝑛‬
‫𝑖𝑏 × 𝑖𝑎 ‪𝑆 = ∑𝑖=1‬‬ ‫)‪(6-10‬‬

‫‪ai‬‬ ‫‪bi‬‬

‫‪R1‬‬ ‫‪R2‬‬
‫‪0‬‬
‫واحد ضرب‬
‫×‬
‫‪R3‬‬
‫)‪I1: R3(R1)*(R2‬‬
‫‪R4‬‬ ‫‪R5‬‬ ‫)‪I2:R4(R3‬‬
‫‪S‬‬ ‫)‪I3: R5(R5)+(R4‬‬

‫واحد جمع‬

‫(الف) بدون جلورانی داخلی داده‬


‫‪ai‬‬ ‫‪bi‬‬

‫‪R1‬‬ ‫‪R2‬‬ ‫‪0‬‬

‫واحد ضرب‬ ‫×‬


‫‪I’1:‬‬
‫)‪R3(R1)*(R2‬‬
‫‪R3‬‬ ‫‪R4‬‬ ‫‪R5‬‬ ‫‪I’2:R4(R1-‬‬
‫‪S‬‬ ‫)‪)*(R2‬‬
‫‪I’3:‬‬
‫واحد جمع‬ ‫)‪R5(R4)+(R5‬‬
‫‪ I’1‬و ‪ I’2‬میتوانند با‬
‫جلورانی داخلی داده‬
‫(ب) با جلورانی داخلی داده‬ ‫همزمان اجرا شوند‬
‫شکل ‪ :15-6‬جلورانی داخلی داده برای پیادهسازی عمل ضرب نقطهای‬
‫‪| 307‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫بدون جلورانی داخلی داده بین دو واحد عملیاتی‪ ،‬سه دستورالعمل باید بصورت ترتیبی در یک ساختار حلقه (شکل‬
‫‪(6-15‬الف)) اجرا شوند‪ .‬با جلورانی داده‪ ،‬خروجی ضرب کننده به طور مستقیم به داخل ثبات ‪ R4‬از جمع کننده وارد‬
‫میشود (شکل ‪(15-6‬ب))‪ .‬در زمان مشابهی‪ ،‬خروجی ضرب کننده به ثبات ‪ R3‬مسیریابی میشود‪ .‬جلورانی داخلی‬
‫داده بین دو واحد عملیاتی همچنین زمان اجرای کل پردازنده خطلوله را کاهش میدهد‪.‬‬

‫اجتناب از مخاطره‪ :‬خواندن و نوشتن متغیرهای مشترک توسط دستورات مختلف در خطلوله ممکن است منجر‬
‫به نتایج متفاوتی شود اگر این دستورات بصورت خارج از ترتیب اجرا شوند‪ .‬همانطور که در شکل ‪ 16-6‬نشان داده‬
‫منطقی ممکن است‪:‬‬
‫نوشتن‬
‫شده است‪ ،‬سه نوع مخاطره‬
‫نوشتن‬ ‫)‪D(I‬‬ ‫)‪R(I‬‬
‫)‪D(I‬‬ ‫)‪R(I‬‬
‫خواندن‬ ‫نوشتن‬ ‫)‪R(J‬‬
‫)‪D(J‬‬ ‫)‪R(J‬‬ ‫)‪D(J‬‬

‫(الف) مخاطره خواندن بعد از نوشتن (‪)RAW‬‬ ‫(ب) مخاطره نوشتن بعد از نوشتن (‪)WAW‬‬

‫خواندن‬
‫)‪R(I‬‬ ‫)‪D(I‬‬
‫نوشتن‬
‫)‪R(J‬‬ ‫)‪D(J‬‬

‫(ج) مخاطره نوشتن بعد از خواندن (‪)WAR‬‬


‫شکل ‪ :16-6‬مخاطرههای ممکن بین عملیات خواندن و نوشتن در یک خطلوله دستورالعمل (دستور ‪ J‬بعد از دستور ‪ I‬درترتیب برنامه قرار دارد)‪.‬‬

‫دو دستور ‪I‬و ‪ J‬را در نظر بگیرید‪ .‬فرض میکنیم ‪ J‬بعد از ‪ I‬باشد‪ .‬اگر ترتیب اجرای واقعی این دو دستور از ترتیب‬
‫برنامه تبعیت نکند‪ ،‬نتایج نادرستی خوانده یا نوشته میشوند بنابراین مخاطره ایجاد میشود‪.‬‬

‫قبل از اینکه این دستورات وارد خطلوله شوند باید از مخاطره جلوگیری کرد‪ ،‬مثل نگهداشتن دستور ‪ J‬تا زمانیکه‬
‫وابستگی به دستور ‪ I‬حل شود‪ .‬از )‪ D(I‬و )‪ R(I‬برای دامنه و برد دستور ‪ I‬استفاده میکنیم‪.‬‬

‫دامنه شامل مجموعه ورودی (مثل عملوندها در ثباتها یا حافظه) که توسط دستور ‪ I‬استفاده میشود میباشد‪ .‬برد‬
‫مرتبط با مجموعه خروجی دستور ‪ I‬است‪ .‬لیست زیر شرایطی که ممکن است مخاطره اتفاق افتد را نشان میدهد‪.‬‬

‫∅ ≠ )𝐽(𝐷 ∩ )𝐼(𝑅‬ ‫برای مخاطره ‪RAW‬‬


‫∅ ≠ )𝐽(𝑅 ∩ )𝐼(𝑅‬ ‫برای مخاطره ‪WAW‬‬ ‫)‪(6-11‬‬
‫∅ ≠ )𝐽(𝑅 ∩ )𝐼(𝐷‬ ‫برای مخاطره ‪WAR‬‬

‫این شرایط الزم اند ولی کافی نیستند‪ .‬این به این معنی است که ممکن است مخاطره ظاهر نشود حتی اگر یکی یا‬
‫چند تا از شرایط موجود باشد‪ .‬مخاطره ‪ RAW‬مرتبط با وابستگی جریان است‪ WAR ،‬ضدوابستگی و ‪WAW‬‬
‫وابستگی خروجی معرفی شده در بخش ‪ 1-2‬میباشد‪ .‬ظهور یک مخاطره منطقی وابسته به ترتیبی است که دو‬
‫دستور اجرا میشوند‪ .‬تا زمانیکه ترتیب درست باشد‪ ،‬مخاطره اتفاق نخواهد افتاد‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪308‬‬

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

‫‪ -3-3-6‬زمانبندی دستورالعمل ایستا و پویا‬

‫در این بخش‪ ،‬سه روش برای زمانبندی دستورالعمل در یک خطلوله دستورالعمل را توصیف میکنیم‪ .‬شماتیک‬
‫زمانبندی ایستا با یک کامپایلر بهینه پشتیبانی میشود‪ .‬زمانبندی پویا با شماتیک ‪register-tagging‬‬
‫‪ Tomasulo‬که در ‪ IBM 360/91‬ساخته شده است یا با استفاده از شماتیک ‪ scoreboard‬ساخته شده در‬
‫پردازنده ‪ CDC6600‬قابل بدست آوردن است‪.‬‬

‫‪ -1-3-3-6‬زمانبندی ایستا‪ :‬وابستگیهای داده در یک رشته از دستورات‪ ،‬روابط درهم قفلی بین آنها ایجاد‬
‫میکند‪ .‬درهم قفلی میتواند با یک روش زمانبندی ایستای براساس کامپایلر رفع و رجوع شود‪ .‬یک کامپایلر یا یک‬
‫پسپرداز‪ 1‬میتواند برای افزایش جداسازی بین دستورات در هم قفل شده استفاده شود‪.‬‬

‫اجرای قطعه کد زیر را در نظر بگیرید‪ .‬دستور ضرب نمیتواند قبل از کامل شدن ‪ load‬قبلی شروع به کار کند‪ .‬این‬
‫وابستگی داده باعث خواهد شد خطلوله سه پالس ساعت توقف داشته باشد زیرا دو ‪ load‬در یک پالس همپوشانی‬
‫دارند‪.‬‬

‫تأخیر مرحله‬ ‫دستورالعمل‬


‫‪2‬پالس‬ ‫‪Add R0,R1‬‬ ‫‪/R0(R0)+(R1)/‬‬
‫‪ 1‬پالس‬ ‫‪Move R1,R5‬‬ ‫‪/R1(R5)/‬‬
‫‪ 2‬پالس‬ ‫)‪Load R2,M(α‬‬ ‫‪/R2(memory(α))/‬‬
‫‪ 2‬پالس‬ ‫)‪Load R3,M(β‬‬ ‫‪/R3(Memory(β))/‬‬
‫‪ 3‬پالس‬ ‫‪Multiply R2,R3‬‬ ‫‪/R2(R2)*(R3)/‬‬
‫دو ‪ load‬چون وابسته به ‪ add‬و ‪ move‬نیستند میتوانند به سمت ابتدای برنامه حرکت داده شوند تا فاصله بین‬
‫آنها و دستور ‪ multiply‬زیاد شود‪ .‬برنامه زیر بعد از این اصالح بدست میآید‪.‬‬

‫‪Load‬‬ ‫)‪R2,M(α‬‬ ‫‪2‬تا ‪ 3‬پالس‬


‫‪Load‬‬ ‫)‪R3,M(β‬‬ ‫‪ 2‬پالس به خاطر همپوشانی‬
‫‪Add‬‬ ‫‪R0,R1‬‬ ‫‪ 2‬پالس‬
‫‪Move R1,R5‬‬ ‫‪ 1‬پالس‬
‫‪Multiply R2,R3‬‬ ‫‪ 3‬پالس‬

‫‪1‬‬
‫‪Postprocessor‬‬
‫‪| 309‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫به خاطر این مرتبسازی مجدد کد‪ ،‬وابستگی داده و گرامر برنامه حفظ میشود و ‪ multiply‬میتواند بدون تأخیر‬
‫شروع شود‪ .‬در حالیکه دو عملوند در حال بار شدن از سلولهای حافظه ‪ α‬و ‪ β‬به داخل دو ثبات ‪ R2‬و ‪ R3‬هستند‪،‬‬
‫دو دستور ‪ add‬و ‪ move‬سه پالس مصرف میکنند و از توقف خطلوله اجتناب میشود‪.‬‬

‫پایه زمانبندی خط لوله و بازکردن حلقه‬

‫برای اینکه خط لوله را پر نگه داریم‪ ،‬از موازات بین دستورات با پیدا کردن رشتهای از دستورات نامرتبط که میتوانند‬
‫بصورت همپوش در خطلوله اجرا شوند‪ ،‬بهرهبرداری میکنیم‪ .‬برای جلوگیری از توقف خطلوله اجرای یک دستور‬
‫وابسته باید از دستور منبع با فاصلهای براساس تعداد پالسهای برابر با تأخیر خطلوله دستور منبع جدا شود‪ .‬قابلیت‬
‫کامپایلر برای انجام این زمانبندی هم به میزان ‪ILP‬ی قابل دسترس در برنامه و هم تأخیرات واحدهای عملیاتی در‬
‫خطلوله وابسته است‪ .‬جدول ‪ 1-6‬تأخیرات واحد ممیز شناور را که در این بخش استفاده میکنیم نشان میدهد‪ .‬مگر‬
‫اینکه تأخیرات متفاوتی بطور صریح ذکر شود‪ .‬فرض میکنیم که واحدهای عملیاتی کامالً خطلوله شدهاند یا چندتایی‬
‫هستند بطوریکه هر نوع دستوری بتواند در هر پالس ساعتی منتشر شود و مخاطره ساختاری نداریم‪.‬‬
‫تأخیر برحسب پالس ساعت‬ ‫دستور استفاده کننده از نتیجه‬ ‫دستور مولد نتیجه‬
‫‪3‬‬ ‫‪Another FP ALU op‬‬ ‫‪FP ALU op‬‬
‫‪2‬‬ ‫‪Store double‬‬ ‫‪FP ALU op‬‬
‫‪1‬‬ ‫‪FP ALU op‬‬ ‫‪Load double‬‬
‫‪0‬‬ ‫‪Store double‬‬ ‫‪Load double‬‬
‫جدول ‪ :1-6‬تأخیرات عملیات ‪ FP‬استفاده شده در این بخش‪ :‬ستون آخر تعداد پالسهای ساعت مورد نیاز برای جلوگیری از توقف‬
‫میباشد‪ .‬تأخیر ‪ Load‬ممیز شناور به ‪ store‬صفر است زیرا نتیجه ‪ load‬میتواند مستقیماً بدون توقف به ‪ store‬بصورت میانبر‬
‫داده شود‪ .‬فرض میکنیم تأخیر عمل ‪ ALU, store‬صحیح ‪ 1‬است‪.‬‬

‫در این بخش چگونگی افزایش میزان ‪ ILP‬قابل دسترس را با تبدیل حلقه نشان میدهیم‪ .‬ما روی قطعه کد زیر که‬
‫یک عدد اسکالر را به یک آرایه اضافه میکند تمرکز میکنیم‪.‬‬
‫)‪for(i=999; i>=0; i=i-1‬‬
‫;‪x[i]=x[i]+s‬‬
‫از این حلقه میفهمیم که هر تکرار آن مستقل است و قابل موازی شدن میباشد‪ .‬ابتدا اجازه دهید به کارایی این‬
‫حلقه نگاه کنیم و نشان دهیم که چگونه میتوانیم کارایی آنرا با استفاده از موازات بهبود دهیم‪ .‬گام اول ترجمه‬
‫قطعه کد فوق به کد زبان اسمبلی میباشد (‪ .)MIPS‬در قطعه کد زیر فرض میکنیم ‪ R1‬ابتداً آدرس عنصر آخر‬
‫آرایه را نگه دارد‪ ،‬و ‪ F2‬شامل مقدار اسکالر ‪ s‬باشد فرض میکنیم عناصر آرایه از نوع ممیز شناور با دقت مضاعف‬
‫و ‪ 8‬بایتی باشند‪ .‬فرض میکنیم ثبات ‪ R2‬از قبل محاسبه شده است بطوریکه )‪ 8(R2‬آدرس آخرین عنصری باشد‬
‫که عمل روی آن انجام می شود‪ )R1( .‬یعنی محتویات مکانی که آدرس شروع آن در ‪ R1‬است‪ 8(R2) .‬یعنی به‬
‫آدرس (‪ )R2+8‬مراجعه شود‪.‬‬
‫کد ‪ ،MIPS‬زمانبندی نشده برای خطلوله‪ ،‬شبیه زیر است‪:‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪310‬‬

‫‪Loop:‬‬ ‫‪L.D‬‬ ‫)‪F0,0(R1‬‬ ‫‪;F0=array element‬‬


‫‪ADD.D F4,F0,F2‬‬ ‫‪; add scalar in F2‬‬
‫‪S.D‬‬ ‫)‪F4,0(R1‬‬ ‫‪;store result 0(R1)F4‬‬
‫‪DADDUI R1,R1,#-8‬‬ ‫)‪;decrement pointer 8 bytes (per DW‬‬
‫‪BNE R1,R2,Loop‬‬ ‫‪;if R1!=R2 branch to loop‬‬
‫اجازه دهید ببینیم چگونه این حلقه اجرا خواهد شد وقتیکه روی یک خطلوله ساده برای ‪ MIPS‬با تأخیرات جدول‬
‫‪ 6-1‬زمانبندی میشود‪.‬‬

‫مثال ‪ :5-6‬حلقه فوق را هم بصورت زمانبندی شده و هم غیر زمانبندی شده با کد ‪ MIPS‬نشان دهید‪ .‬در‬
‫راهحلتان توقفها و پالسهای ساعت بیکار را نشان دهید‪ .‬عملیات ممیز شناور‪ 1‬را زمانبندی کنید اما فرض کنید‬
‫تأخیرات پرشها را نادیده میگیریم‪.‬‬
‫پاسخ‪ :‬بدون هیچ زمانبندی‪ ،‬حلقه بصورت زیر اجرا خواهد شد‪ ،‬و پالسهای زیر را خواهد گرفت‪:‬‬
‫پالس انتشار دستور‬
‫‪Loop: L.D‬‬ ‫)‪F0,0(R1‬‬ ‫‪1‬‬
‫‪Stall‬‬ ‫‪2‬‬
‫‪ADD.D‬‬ ‫‪F4,F0,F2‬‬ ‫‪3‬‬
‫‪Stall‬‬ ‫‪4‬‬
‫‪stall‬‬ ‫‪5‬‬
‫‪S.D‬‬ ‫)‪F4,0(R1‬‬ ‫‪6‬‬
‫‪DADDUI‬‬ ‫‪R1,R1,#-8‬‬ ‫‪7‬‬
‫‪Stall‬‬ ‫‪8‬‬
‫‪BNE‬‬ ‫‪R1,R2,Loop‬‬ ‫‪9‬‬
‫ما میتوانیم حلقه را زمانبندی کنیم تا فقط دو توقف بدست آوریم و زمان را به ‪ 7‬پالس کاهش دهیم‪.‬‬
‫‪Loop:‬‬ ‫‪L.D‬‬ ‫)‪F0,0(R1‬‬
‫‪DADDUI‬‬ ‫‪R1,R1,#-8‬‬
‫‪ADD.D‬‬ ‫‪F4,F0,F2‬‬
‫‪Stall‬‬
‫‪Stall‬‬
‫‪S.D‬‬ ‫)‪F4,8(R1‬‬
‫‪BNE‬‬ ‫‪R1,R2,Loop‬‬
‫توقفهای بعد از ‪ ADD.D‬برای استفاده توسط ‪ S.D‬میباشد‪.‬‬

‫در مثال قب ل‪ ،‬یک تکرار حلقه را تکمیل کردیم و یک عنصر آرایه را ذخیره کردیم‪ ،‬اما کار واقعی روی عناصر آرایه‬
‫فقط ‪ 3‬پالس ساعت از ‪ 7‬پالس ساعت می گیرد (‪ .)Load, add, store‬بقیه ‪ 4‬پالس شامل سربار حلقه –‬

‫‪1‬‬
‫)‪Floatin Point Operations (FP op‬‬
‫‪| 311‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫‪ -DADDUI , BNE‬و دو توقف میباشد‪ .‬برای حذف این ‪ 4‬پالس ساعت نیازمند انجام عملیات بیشتری نسبت‬
‫به تعداد دستورات سربار هستیم‪.‬‬
‫برای اینکار کافیست تعداد دستورات حلقه را در مقایسه با دستورات پرش و سربار‪ ،‬با باز کردن حلقه افزایش دهیم‪.‬‬
‫بازکردن شامل تکرار بدنه حلقه چندین بار و تنظیم کد خاتمه میباشد‪.‬‬
‫بازکردن حلقه برای بهبود زمانبندی نیز استفاده میشود‪ .‬چون پرشها را حذف میکند‪ ،‬به دستورات از تکرارهای‬
‫مختلف اجازه میدهد تا با هم زمانبندی شوند‪ .‬در این حالت‪ ،‬میتوانیم توقفهای استفاده داده را با ایجاد دستورات‬
‫اضافی در بدنه حلقه حذف کنیم‪ .‬اگر فقط دستورات را موقع بازکردن حلقه تکرار کنیم‪ ،‬و ازثباتهای مشابه استفاده‬
‫کنیم‪ ،‬زمانبندی انجام شده روی حلقه بهینه نخواهد شد‪ .‬بنابراین‪ ،‬میخواهیم از ثباتهای مختلف برای هر تکرار‬
‫استفاده کنیم و تعداد ثباتهای مورد نیاز را افزایش میدهیم‪.‬‬

‫مثال ‪ :6-6‬حلقه قبلی را با چهار کپی باز شده از بدنه حلقه نشان دهید‪ ،‬فرض کنید ‪( R1-R2‬که اندازه آرایه‬
‫است) ابتداً ضریبی از ‪ 32‬است که به این معنی است که تعداد تکرار حلقه ضریبی از ‪ 4‬میباشد‪ .‬محاسبات اضافی‬
‫را حذف کنید و هیچ کدام از ثباتها را مجدد استفاده نکنید‪.‬‬
‫پاسخ‪ :‬در اینجا نتیجه ادغام دستورات ‪ DADDUI‬و حذف عملیات ‪ BNE‬که در خالل بازکردن دوبرابر شدهاند‬
‫وجود دارد‪ .‬نکته اینکه ‪ R2‬باید طوری تنظیم شود که )‪ 32(R2‬آدرس شروع چهار عنصر آخری باشد‪.‬‬
‫‪Loop:‬‬ ‫‪L.D‬‬ ‫)‪F0,0(R1‬‬
‫‪ADD.D‬‬ ‫‪F4,F0,F2‬‬
‫‪S.D‬‬ ‫)‪F4,0(R1‬‬ ‫‪; DROP DADDUI & BNE‬‬
‫‪L.D‬‬ ‫)‪F6,-8(R1‬‬
‫‪ADD.D‬‬ ‫‪F8,F6,F2‬‬
‫‪S.D‬‬ ‫)‪F8,-8(R1‬‬ ‫‪;DROP DADDUI & BNE‬‬
‫‪L.D‬‬ ‫)‪F10,-16(R1‬‬
‫‪ADD.D‬‬ ‫‪F12,F10,F2‬‬
‫‪S.D‬‬ ‫‪F12,-16(R1) ;DROP DADDUI & BNE‬‬
‫‪L.D‬‬ ‫)‪F14,-24(R1‬‬
‫‪ADD.D‬‬ ‫‪F16,F14,F2‬‬
‫‪S.D‬‬ ‫)‪F16,-24(R1‬‬
‫‪DADDUI‬‬ ‫‪R1,R1,#-32‬‬
‫‪BNE‬‬ ‫‪R1,R2,Loop‬‬
‫در حلقه باز شده سه عدد پرش و سه عدد کاهش ‪ R1‬را حذف کردهایم‪ .‬آدرسهای ‪ Load, Store‬تصحیح‬
‫شدهاند تا اجازه ادغام دستورات ‪ DADDUI‬روی ‪ R1‬را بدهند‪ .‬این بهینه سازی ممکن است جزئی بنظر برسد‪،‬‬
‫ام ا نیست و نیازمند جایگزینی و ساده سازی سمبلیک است‪ .‬جایگزینی و ساده سازی سمبلیک عبارات را مجدداً‬
‫مرتب میکند بطوریکه اجازه ادغام ثابتها را بدهد‪ ،‬و به عباراتی مثل (‪ )(i+1)+1‬اجازه میدهد تا به فرم‬
‫))‪ (i+(1+1‬درآیند و سپس بعد از ساده سازی به فرم )‪ (i+2‬درآید‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪312‬‬

‫بدون زمانبندی‪ ،‬هر عمل در حلقه باز نشده با یک عمل وابسته دنبال میشود و بنابراین باعث یک توقف خواهد‬
‫شد‪ .‬این حلقه در ‪ 27‬پالس ساعت اجرا خواهد شد‪ -‬هر ‪ LD‬یک توقف دارد‪ ،‬هر ‪ ADD‬دو‪ ADDUI ،‬یک‪ ،‬به اضافه‬
‫‪ 14‬پالس ساعت انتشار دستور‪ -‬یا ‪ 6.75‬برای هر یک از چهار عنصر‪ ،‬اما میتواند به منظور بهبود چشمگیر کارایی‬
‫زمانبندی شود‪ .‬بازسازی حلقه معموالَ در پردازه کامپایل انجام میشود‪ ،‬بنابراین کامپایلر میتواند محاسبات اضافی‬
‫را کشف کند و توسط بهینه ساز حذف کند‪.‬‬

‫در برنامههای واقعی معموالً کران باالی حلقه را نمیدانیم‪ .‬فرض کنید حد باال ‪ n‬باشد‪ ،‬و ما بخواهیم حلقه را باز‬
‫کنیم تا ‪ k‬کپی از بدنه را داشته باشیم‪ .‬بجای یک حلقه باز شده‪ ،‬یک زوج از حلقههای متوالی را تولید میکنیم‪ .‬اولی‬
‫‪ n mod k‬بار اجرا میشود و بدنه حلقه اصلی را دارد‪ .‬دومی بدنه باز شده است که توسط یک حلقه بیرونیتر که‬
‫‪ n/k‬بار تکرار میشود احاطه شده است‪ .‬برای مقادیر بزرگ ‪ ،n‬اکثر زمان اجرا در بدنه حلقه باز نشده صرف میشود‪.‬‬
‫در مثال قبلی بازسازی‪ ،‬کارایی این حلقه را با حذف دستورات سربار بهبود میدهد‪ ،‬هرچند که میزان کد را بطور‬
‫چشمگیری زیاد میکند‪ .‬حلقه باز شده چگونه خواهد بود وقتیکه برای خطلوله استفاده شود؟‬
‫مثال ‪ :7-6‬حلقه باز شده در مثال قبل را بعد از اینکه برای خطلوله با تأخیرات جدول ‪1.6‬زمانبندی شد‪ ،‬نشان‬
‫دهید‪.‬‬
‫پاسخ‪:‬‬
‫‪Loop:‬‬ ‫‪L.D‬‬ ‫)‪F0,0(R1‬‬
‫‪L.D‬‬ ‫)‪F6,-8(R1‬‬
‫‪L.D‬‬ ‫)‪F10,-16(R1‬‬
‫‪L.D‬‬ ‫)‪F14,-24(R1‬‬
‫‪ADD.D‬‬ ‫‪F4,F0,F2‬‬
‫‪ADD.D‬‬ ‫‪F8,F6,F2‬‬
‫‪ADD.D‬‬ ‫‪F12,F10,F2‬‬
‫‪ADD.D‬‬ ‫‪F16,F14,F2‬‬
‫‪S.D‬‬ ‫)‪F4,0(R1‬‬
‫‪S.D‬‬ ‫)‪F8,-8(R1‬‬
‫‪DADDUI‬‬ ‫‪R1,R1,#-32‬‬
‫‪S.D‬‬ ‫)‪F12,-16(R1‬‬
‫‪S.D‬‬ ‫)‪F16,-24(R1‬‬
‫‪BNE‬‬ ‫‪R1,R2,Loop‬‬
‫زمان اجرای حلقه باز نشده به مجموع ‪ 14‬پالس ساعت تنزل یافته است‪ ،‬یا ‪ 3.5‬پالس به ازای هر عنصر‪ ،‬در مقایسه‬
‫با ‪ 9‬پالس به ازای هر عنصر قبل از بازسازی یا زمانبندی و ‪ 7‬پالس وقتیکه حلقه زمانبندی شد ولی باز نشد‪.‬‬

‫کارایی زمانبندی حلقه بازشده از حلقه اصلی بیشتر است‪ .‬این افزایش به خاطر این است که حلقه محاسبات بیشتری‬
‫که میتواند زمانبندی شود تا توقفها را حداقل کند کشف میکند‪ ،‬کد فوق توقف ندارد‪ .‬زمانبندی حلقه در این روش‬
‫نیازمند فهم این است که ‪load‬ها و ‪store‬ها مستقل هستند و میتوانند با هم تبادل داده کنند‪.‬‬
‫‪| 313‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫خالصه بازکردن حلقه و زمانبندی‬


‫در این فصل روشهای نرم افزاری و سخت افزاری مختلف برای استفاده مفید از موازات سطح داده بطوریکه‬
‫پتانسیل واحدهای عملیاتی پردازنده بهره برداری شود مطرح میشود‪ .‬کلید اکثر این روشها شناخت چگونگی و‬
‫زمانِ تغییر ترتیب بین دستورات می باشد‪ .‬ایجاد تغییر در روند برنامه از دید انسانی مجاز است ولی در عمل این‬
‫پردازه باید به روشی باقاعده یا توسط کامپایلر یا توسط سخت افزار انجام شود‪ .‬برای بدست آوردن کد بازشده نهایی‬
‫ما باید تبدیالت و تصمیمات زیر را انجام دهیم‪:‬‬
‫• تشخ یص اینکه بازکردن حلقه مفید است و تکرارهای حلقه از هم مستقل هستند‪ ،‬بجز برای حفظ کد حلقه‪.‬‬
‫• استفاده از ثباتهای متفاوت تا از محدودیتهای غیرضروری اجتناب کنیم که در صورت استفاده از ثباتهای‬
‫مشابه برای محاسبات مختلف اتفاق میافتند (مثل وابستگی نام)‪.‬‬
‫• حذف دستورات تست و پرش اضافی و تنظیم خاتمه حلقه و کد تکرار‪.‬‬
‫• تشخیص اینکه ‪load‬ها و ‪store‬ها در حلقه باز شده میتوانند با هم مبادله داده کنند با مشاهده اینکه‬
‫‪load‬ها و ‪store‬ها از تکرارهای متفاوت مستقل هستند‪ .‬این تبدیالت نیازمند تجزیه تحلیل آدرسهای‬
‫حافظه و اینکه آنها به آدرسهای مشابه اشاره نمیکنند میباشد‪.‬‬
‫• زمانبندی کد‪ ،‬حفظ هر وابستگی که نیاز است تا نتیجه مشابهی مثل کد اصلی ایجاد کند‪.‬‬
‫• نیاز کلیدی همه این تبدیالت فهم چگونگی وابستگی یک دستور به دیگری میباشد و اینکه چگونه دستورات‬
‫میتوانند تغییر ترتیب داده شوند‪.‬‬
‫سه اثر محصول بازکردن حلقه را محدود میکند‪ )1( :‬کاهش تعداد دستورات سرباری که در هر تکرار مستهلک‬
‫میشود (‪ )2‬محدودیتهای اندازه کد‪ ،‬و (‪ )3‬محدودیتهای کامپایلری‪ .‬اجازه دهید ابتدا مسأله سربار حلقه را بررسی‬
‫کنیم‪ .‬وقتیکه ما حلقه را چهار بار باز میکنیم‪ ،‬موازات کافی بین دستورات ایجاد میکند بطوریکه حلقه میتواند‬
‫بدون پالسهای توقف زمانبندی شود‪ .‬در حقیقت‪ ،‬در ‪ 14‬پالس‪ ،‬فقط ‪ 2‬پالس سربار حلقه است‪ DADDUI :‬که‬
‫مقدار ایندکس را حفظ میکند و ‪ BNE‬که حلقه را تمام میکند‪ .‬اگر حلقه ‪ 8‬بار باز شود‪ ،‬سربار از یک دوم سیکل‬
‫در تکرار اصلی یک چهارم کاهش مییابد‪.‬‬
‫محدودیت دوم رشد اندازه کد نتیجه است‪ .‬برای حلقههای بزرگتر‪ ،‬رشد اندازه کد ممکن است یک دلنگرانی شود‬
‫اگر باعث افزایش نرخ فقدان در حافظه دستورالعمل شود‪.‬‬
‫فاکتور دیگری که اغلب از اندازه کد مهمتر است کمبود تعداد ثباتهایی است که توسط بازسازی و زمانبندی متوالی‬
‫ایجاد میشوند‪ .‬این اثر ثانویه که از زمانبندی دستور در سگمنتهای کد بزرگ منتج میشود فشار ثبات‪ 1‬نامیده‬
‫میشود‪ .‬که به خاطر زمانبندی کد به منظور افزایش ‪ ILP‬ایجاد میشود و باعث افزایش تعداد مقادیر زنده و جاری‬
‫میشود‪ .‬بعد از زمانبندی دستورات متوالی‪ ،‬ممکن است تخصیص همه مقادیر زنده به ثباتها امکان پذیر نباشد‪ .‬کد‬
‫تبدیل یافته‪ ،‬در حالیکه از لحاظ تئوری سریعتر است ممکن است بعضی مزایایش را به خاطر کمبود ثبات از دست‬
‫بدهد‪ .‬بدون بازسازی‪ ،‬زمانبندی متوالی بیشتر با پرشها محدود میشود و فشار ثبات بندرت مشکل ساز است‪ .‬ترکیب‬
‫بازسازی و زمانبندی متوالی می تواند منجر به این مشکل شود‪ .‬این مشکل باالخص در پردازندههای چند انتشاره‬

‫‪1‬‬
‫‪Register pressure‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪314‬‬

‫که نیازمند اجرای همروند چند دستور مستقل است که اجرای آنها میتوانند همپوش شوند‪ ،‬چالش برانگیز میشود‪.‬‬
‫در کل‪ ،‬استفاده از تبدیالت سطح باالی پیچ یده‪ ،‬اندازه گیری پتانسیل بهبودشان قبل از تولید کد‪ ،‬مشکل است و‬
‫منجر به افزایش چشمگیری در پیچیدگی کامپایلرهای مدرن شده است‪.‬‬
‫بازسازی حلقه یک روش ساده و مفید برای افزایش اندازهِ قطعه کدهای در یک راستا که میتوانند بطور مفیدی‬
‫زمانبندی شوند‪ ،‬میشود‪ .‬این تبدیالت در پردازندههای مختلف از خطلوله ساده تا سوپراسکالرهای چند انتشاره و‬
‫‪ VLIW‬مفید است‪.‬‬

‫‪ -2-3-3-6‬زمانبندی پویا‬

‫اکثر کامپیوترهای خطلوله شده امروزی از زمانبندی ایستا با استفاده از یک کامپایلر استفاده میکنند‪ .‬پیادهسازی و‬
‫انعطاف پذیری درهم قفلی نرم افزاری براساس کامپایلر ارزانتر است‪ .‬به هر حال در کامپیوترهای با کارایی باال‪،‬‬
‫نیازمند سخت افزار خاصی برای رسیدن به زمانبندی پویا هستیم که در زیر توضیح داده میشوند‪.‬‬

‫الگوریتم توماسولو‪ :‬این راهحل وابسته به سختافزار ابتدا با چند واحد ممیز شناور در پردازنده ‪IBM 360/91‬‬
‫پیادهسازی شد‪ .‬شکل سخت افزاری آن در شکل ‪ 13-6‬نشان داده شده است‪ .‬برای پردازنده مدل ‪ ،91‬سه عدد ‪RS‬‬
‫در جمع کننده ممیز شناور و دو زوج در ضرب کننده ممیز شناور استفاده شدهاند‪ .‬این شماتیک تداخلهای منابع را‬
‫به خوبی وابستگی داده با استفاده از تگ کردن ثبات برای تخصیص یا عدم تخصیص ثباتهای منبع و مقصد رفع‬
‫و رجوع میکند‪.‬‬

‫یک دستورالعمل منتشر شده که عملوندهایش در دسترس نیستند به یک ‪ RS‬مرتبط با واحد عملیاتی که استفاده‬
‫خواهد کرد ارسال میشود‪ .‬این دستور تا زمانیکه وابستگیهای داده رفع نشوند و عملوندهای آن در دسترس واقع‬
‫نشوند منتظر میماند‪ .‬وابستگی با مشاهده نتایج گذرگاه رفع میشود‪ .‬وقتیکه همه عملوندها برای یک دستور آماده‬
‫شدند‪ ،‬آن دستور به واحد عملیاتی برای اجرا اعزام میشود‪ .‬همه ثباتهای کاری تگ دار میشوند‪ .‬اگر یک ثبات‬
‫منبع موقعیکه یک دستور به مرحله انتشار میرسد‪ ،‬مشغول باشد‪ ،‬تگ برای ثبات منبع به یک ‪ RS‬ارسال میشود‪.‬‬
‫وقتیکه ثبات قابل دسترس میشود تگ در دسترس بودنش را اطالع میدهد‪.‬‬
‫مثال ‪ :8-6‬الگوریتم توماسولو برای زمانبندی دستورالعمل بصورت پویا‬
‫الگوریتم توماسولو برای کار کردن با پردازندهای که تعداد کمی ثبات ممیز شناور دارد اِعمال شد‪ .‬در حالت مدل ‪،91‬‬
‫فقط ‪ 4‬ثبات قابل دسترس بودند‪ .‬شکل ‪(17-6‬الف) حداقل کد ماشین ثباتی برای اجرای ‪ X=Y+Z‬و ‪ A=B×C‬را‬
‫نشان میدهد‪ .‬زمانبندی خطلوله با الگوریتم توماسولو در شکل ‪(17-6‬ب) نشان داده شده است‪ .‬در اینجا‪ ،‬با نادیده‬
‫گرفتن راهاندازی خطلوله و زمانهای اضافی زمان اجرای کل با شمارش از پالس ‪ 4‬تا پالس ‪ 13 ،15‬پالس است‪.‬‬

‫حافظه شبیه یک واحد عملیاتی خاص رفتار میکند‪ .‬وقتیکه اجرای یک دستور کامل شد‪ ،‬نتیجه (همراه با تگ آن)‬
‫روی گذرگاه نتیجه ظاهر میشود‪ .‬ثباتها مثل ‪RS‬ها گذرگاه نتیجه را مشاهده میکنند و محتویاتش را وقتیکه‬
‫‪| 315‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫یک تگ تطابق پیدا شد‪ ،‬بروز میکنند‪ .‬خطلوله شکل ‪(17-6‬ب) را با خطلوله شکل ‪(10-6‬ب) مقایسه کنید‪ .‬در‬
‫شکل ‪(10-6‬ب) دستورات به ترتیب اجرا میشوند ولی در خطلوله شکل ‪(17-6‬ب) دستورات خارج از ترتیب منتشر‬
‫و اجرا میشوند‪ .‬دستور )‪ R1Mem(B‬در پالس ‪ 5‬منتشر میشود با وجود اینکه دستورات قبل از آن هنوز تکمیل‬
‫نشدهاند‪.‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4 5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪910 11 12 13 14 15 16 17 18 19‬‬
‫)‪R1Mem(Y‬‬ ‫‪F D I E E E W‬‬
‫)‪R2Mem(Z‬‬ ‫‪F D I E E E W‬‬
‫)‪R3(R1)+(R2‬‬ ‫‪F D I‬‬ ‫‪E E E W‬‬
‫)‪Mem(x)(R3‬‬ ‫‪F D I‬‬ ‫‪E E E W‬‬
‫)‪R1Mem(B‬‬ ‫‪F‬‬ ‫‪D‬‬ ‫‪I‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫‪E‬‬ ‫‪W‬‬
‫‪F D I E E E W‬‬
‫) ‪R2Mem(C‬‬
‫‪F D I‬‬ ‫‪E E E W‬‬
‫)‪R3(R1)*(R2‬‬ ‫‪F D I‬‬ ‫‪E E E W‬‬
‫)‪Mem(A)(R3‬‬
‫(ب) زمانبندی خطلوله‬
‫(الف)حداقل کد ماشین ثبات‬
‫شکل ‪ :17-6‬زمانبندی دستورالعمل پویا با استفاده از الگوریتم توماسولو روی پردازنده در شکل ‪13-6‬‬

‫اجازه دهید الگوریتم توماسولو را با جزئیات بیشتر توضیح دهیم‪ .‬واحد ممیز شناور ‪ IBM 360/91‬یک شماتیک‬
‫جالب استفاده میکند که اجازه اجرای خارج از ترتیب را میدهد‪ .‬این شماتیک که توسط روبرت توماسولو ابداع شد‪،‬‬
‫اینکه چه موقع دستورات برای حداقل کردن مخاطرههای ‪ RAW‬قابل دسترس هستند را بررسی میکند و تغییر‬
‫نام ثبات را در سخت افزار به منظور حداقل کردن مخاطرههای ‪ WAW‬و ‪ WAR‬معرفی میکند‪ .‬انواع مختلفی از‬
‫این شماتیک در پردازندههای مدرن وجود دارد‪ ،‬هرچند که مفهوم کلیدی بررسی وابستگی دستورالعملها میباشد‬
‫تا اجازه اجرا به محض اینکه عملوندها قابل دسترس شدند و ثباتهای تغییر نام داده شده برای اجتناب از مخاطره‪-‬‬
‫های ‪ WAW,WAR‬آماده شدند را بدهد‪.‬‬

‫هدف ‪ IBM‬رسیدن به کارایی باالی ممیز شناور از هر مجموعه دستورالعملی و از هر کامپایلری که برای خانواده‬
‫کامپیوتر ‪ 360‬طراحی شده است میباشد نه برای کامپایلری خاص برای پردازندههای مدرن انتهایی‪ .‬معماری ‪360‬‬
‫فقط چهار ثبات ممیز شناور با دقت مضاعف دارد‪ ،‬که بهرهوری زمانبندی کامپایلر را محدود میکند؛ این حقیقت‬
‫انگیزه دیگری برای روش توماسولو بود‪ .‬در کل‪ IBM 360/91 ،‬دسترسی حافظه طوالنی و تأخیر ممیز شناور‬
‫زیادی داشت که الگوریتم توماسولو برای غلبه بر آنها طراحی شد‪ .‬در انتهای بخش‪ ،‬خواهیم دید که الگوریتم‬
‫توماسولو همچنین میتواند اجرای همپوش چندین تکرار حلقه را پشتیبانی کند‪.‬‬

‫الگوریتم را با تمرکز روی واحد ممیز شناور و واحد ‪ load-store‬در مجموعه دستورالعمل ‪ MIPS‬توضیح میدهیم‪.‬‬
‫تفاوت اولیه بین ‪ MIPS‬و ‪ 360‬وجود دستورات حافظه‪-‬ثبات در ‪ MIPS‬میباشد‪ .‬چون الگوریتم توماسولو یک‬
‫واحد عملیاتی ‪ load‬استفاده میکند‪ ،‬تغییرات زیادی برای اضافه کردن مُدهای آدرس دهی ثبات‪-‬حافظه نیاز نیست‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪316‬‬

‫‪ IBM 360/91‬همچنین واحدهای عملیاتی خطلوله شده دارد‪ ،‬نه چندین واحد عملیاتی‪ ،‬اما الگوریتم را با فرض‬
‫داشتن چندین واحد عملیاتی توضیح میدهیم‪ .‬که البته از این واحدهای عملیاتی میتوان بصورت خطلوله شده‬
‫استفاده کرد‪.‬‬

‫همچنان که خواهیم دید‪ ،‬مخاطرههای ‪ RAW‬با اجرای یک دستور فقط وقتیکه عملوندهای آن قابل دسترس‬
‫باشد اجتناب میشوند‪ ،‬که دقیقاً همانی است که روش ‪ scoreboard‬ایجاد میکند‪ .‬مخاطرههای ‪WAR,‬‬
‫‪ WAW‬که از وابستگی نام ایجاد میشوند‪ ،‬با تغییر نام ثبات حذف میشوند‪ ،‬شامل آنهایی که یک خواندن یا نوشتن‬
‫برای دستور اخیر دارند‪ ،‬بنابراین نوشتن خارج از ترتیب بر هیچ دستوری که وابسته به مقدار اخیر یک عملوند است‬
‫تأثیر ندارد‪.‬‬

‫برای فهم بهتر اینکه چگونه تغییر نام ثبات مخاطرههای ‪ WAR‬و ‪( WAW‬ضدوابستگی و وابستگی خروجی) را‬
‫حذف میکند‪ ،‬رشته کد مثال زیر را در نظر بگیرید که شامل مخاطرههای ‪ WAR‬و ‪ WAW‬میباشد‪:‬‬

‫‪DIV.D‬‬ ‫‪F0,F2,F4‬‬
‫‪ADD.D‬‬ ‫‪F6,F0,F8‬‬
‫‪S.D‬‬ ‫)‪F6,0(R1‬‬
‫‪SUB.D‬‬ ‫‪F8,F10,F14‬‬
‫‪MUL.D‬‬ ‫‪F6,F10,F8‬‬
‫دو ضد وابستگی در کد وجود دارد‪ :‬بین ‪ ADD.D‬و ‪ SUB.D‬و بین ‪ S.D‬و ‪ .MUL.D‬همچنین یک وابستگی‬
‫خروجی بین ‪ ADD.D‬و ‪ MUL.D‬وجود دارد که منجر به سه مخاطره ممکن میشود‪ :‬مخاطره ‪ WAR‬در استفاده‬
‫‪ F8‬توسط ‪ ADD.D‬و استفاده از ‪ F8‬توسط ‪ ،SUB.D‬همچنین مخاطره ‪ WAW‬زیرا ‪ ADD.D‬ممکن است‬
‫دیرتر از ‪ MUL.D‬تمام شود‪ .‬همچنین سه وابستگی داده درست (وابستگی جریان) وجود دارد‪ :‬بین ‪ DIV.D‬و‬
‫‪ ،ADD.D‬بین ‪ SUB.D‬و ‪ MUL.D‬و بین ‪ ADD.D‬و ‪.S.D‬‬
‫این سه وابستگی نام میتوانند توسط تغییر نام ثبات حذف شوند‪ .‬برای سادگی‪ ،‬فرض میکنیم دو ثبات موقت ‪S,T‬‬
‫وجود دارند‪ .‬با استفاده از ‪ ،S,T‬رشته کد میتواند بدون هیچ وابستگی نوشته شود‪:‬‬
‫‪DIV.D‬‬ ‫‪F0,F2,F4‬‬
‫‪ADD.D‬‬ ‫‪S,F0,F8‬‬
‫‪S.D‬‬ ‫)‪S,0(R1‬‬
‫‪SUB.D‬‬ ‫‪T,F10,F14‬‬
‫‪MUL.D‬‬ ‫‪F6,F10,T‬‬

‫بنابراین‪ ،‬رشته بعدی باید از ‪ T‬به جای ‪ F8‬استفاده کند‪ .‬در این قطعه کد‪ ،‬تغییر نام ثبات میتواند بصورت ایستا‬
‫توسط کامپایلر انجام شود‪ .‬با یافتن هر استفاده از ‪ F8‬در ادامه کد نیازمند تجزیه تحلیل کامپایلری پیچیده یا‬
‫‪| 317‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫سختافزار است‪ ،‬زیرا ممکن است پرشهایی باشند که بین کد باال و استفادههای بعدی ‪ F8‬تداخل داشته باشند‪.‬‬
‫همچنین که در ادامه خواهیم دید الگوریتم توماسولو تغییر نام در طول پرشها را راهاندازی میکند‪.‬‬

‫در شماتیک توماسولو‪ ،‬تغییر نام ثبات از طریق ایستگاههای رزرواسیون تهیه میشود که عملوندهای دستوراتی که‬
‫منتظر انتشار هستند را بافر میکنند‪ .‬ایده پایه این است که ایستگاه رزرواسیون به محض اینکه عملوند قابل دسترس‬
‫باشد آنرا برداشت و بافر میکند‪ ،‬نیاز به گرفتن عملوند از یک ثبات را حذف میکند‪ .‬در کل‪ ،‬دستورات معوق ایستگاه‬
‫رزرواسیونی را که ورودی آنها را تهیه میکند برمیگزینند‪ .‬در انتها‪ ،‬وقتی چند نوشتن متوالی در یک ثبات با هم‬
‫همپوش میشوند‪ ،‬فقط آخری برای بروز رسانی ثبات استفاده میشود‪ .‬به محض اینکه دستورات منتشر میشوند‪،‬‬
‫تعیین کننده ثبات برای عملوندهای معوق به ایستگاه رزرواسیون تغییر نام داده میشود‪ ،‬که تغییر نام ثبات را فراهم‬
‫میکند‪.‬‬

‫چون تعداد ایستگاههای رزرواسیون میتواند بیشتر از ثباتهای واقعی باشند‪ ،‬این روش میتواند حتی مخاطرههای‬
‫بوجود آمده از وابستگی نام که توسط یک کامپایلر نمیتوانند حذف شوند را نیز حذف کند‪ .‬همزمان با توضیح‬
‫شماتیک توماسولو‪ ،‬به موضوع تغییر نام ثبات برخواهیم گشت و دقیقاً خواهیم دید چگونه تغییر نام اتفاق میافتد و‬
‫چگونه مخاطرههای ‪ WAR, WAW‬را حذف میکند‪.‬‬

‫استفاده از ایستگاه های رزرواسیون‪ ،‬نسبت به یک فایل ثبات مجتمع‪ ،‬منجر به دو خصوصیت مهم دیگر میشود‪.‬‬
‫اوالً‪ ،‬تشخیص مخاطره و کنترل اجرا توزیع شده هستند‪ :‬اطالعات نگه داشته شده در ایستگاههای رزرواسیون در‬
‫هر واحد عملیاتی تشخیص میدهند چه موقع یک دستورالعمل میتواند اجرایش را در آن واحد شروع کند‪ .‬ثانیاً‪،‬‬
‫نتایج مستقیماً به واحدهای عملیاتی از ایستگاههای رزرواسیون که در آنجا بافر شدهاند منتقل میشوند‪ ،‬نه اینکه از‬
‫داخل ثباتها منتقل شوند‪ .‬این میانگذر با یک گذرگاه مشترک اجازه میدهد همه واحدهای منتظر برای یک عملوند‬
‫بطور همزمان بار شوند (در ‪ 360/91‬گذرگاه داده مشترک یا ‪ CDB‬نامیده میشود)‪ .‬در خطلولههای با چندین‬
‫واحد اجرایی و انتشار چندین دستور در هر پالس ساعت‪ ،‬بیشتر از چند گذرگاه نتیجه مورد نیاز است‪.‬‬

‫شکل ‪ 18-6‬ساختار پایه پردازنده براساس توماسولو را نشان میدهد‪ ،‬شامل هر دو واحد ممیز شناور و واحد ‪Load-‬‬
‫‪ ،store‬هیچکدام از جداول اجرایی نشان داده نشدهاند‪ .‬هر ایستگاه رزرواسیون یک دستور را که منتشر شده است‬
‫و منتظر اجرا در یک واحد عملیاتی است نگه میدارد‪.‬‬

‫بافرهای ‪ load‬و ‪ store‬دادهها یا آدرسهایی که از یا به حافظه میروند را نگه میدارد و دقیقاً شبیه ایستگاههای‬
‫کاری عمل میکند‪ ،‬بنابراین ما فقط در صورت لزوم بین آنها تمایز قائل میشویم‪ .‬ثباتهای ممیز شناور توسط یک‬
‫زوج گذرگاه به واحدهای عملیاتی و توسط یک گذرگاه به بافرهای ‪ store‬متصل میشوند‪ .‬همه نتایج از واحدهای‬
‫عملیاتی و حافظه روی یک گذرگاه داده مشترک فرستاده میشوند‪ ،‬که به همه جا بجز بافر ‪ load‬میروند‪ .‬همه‬
‫ایستگاههای رزرواسیون فیلدهای تگ دارند که توسط کنترل خطلوله بهرهبرداری میشوند‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪318‬‬

‫قبل از اینکه ایستگاههای رزرواسیون و الگوریتم را با جزئیات بررسی کنیم‪ ،‬اجازه دهید به گامهایی که یک دستور‬
‫در آن حرکت میکند نگاهی بیاندازیم‪ .‬فقط سه گام وجود دارد‪ ،‬هرچندکه هر یک اکنون میتواند تعداد دلخواهی‬
‫پالس ساعت را بگیرد‪:‬‬
‫‪ .1‬انتشار‪ -‬دستور بعدی را از سرصف دستورالعمل میگیرد‪ ،‬که به روش ‪ FIFO‬نگهداری میشوند تا جریان درست‬
‫داده را اطمینان دهند‪ .‬اگر یک ایستگاه رزرواسیون منطبق که خالی است پیدا شد‪ ،‬دستور با مقادیر عملوندها‬
‫اگر در حال حاضر در ثباتها باشند‪ ،‬به ایستگاه منتشر میشود‪ .‬اگر ایستگاه رزرواسیون خالی وجود نداشته‬
‫باشد‪ ،‬یک مخاطره ساختاری اتفاق میافتد و دستورات تا زمانیکه یک ایستگاه یا بافر آزاد شود متوقف‬
‫می شود‪ .‬اگر عملوندها در ثبات نباشند‪ ،‬واحدهای عملیاتی که عملوندها را تولید میکنند را ردیابی میکند‪.‬‬
‫این مرحله ثباتها را تغییر نام میدهد‪ ،‬مخاطرههای ‪ WAR, WAW‬را حذف میکند‪( .‬در یک پردازنده‬
‫زمانبندی شده بصورت پویا به این مرحله اعزام‪ 1‬میگویند)‪.‬‬
‫‪ .2‬اجرا‪ -‬اگر یک یا چند عملوند هنوز در دسترس نباشند‪ ،‬گذرگاه داده مشترک را مانیتور میکند درحالیکه منتظر‬
‫محاسبه شدن آن است‪ .‬وقتیکه یک عملوند قابل دسترس میشود‪ ،‬در هر ایستگاه رزرواسیونی که منتظر آن‬
‫است قرار داده میشود‪ .‬وقتیکه همه عملوندها قابل دسترس شدند‪ ،‬عمل میتواند در واحد عملیاتی مربوطه‬
‫اجرا شود‪ .‬با تأخیر دادن به اجرای دستور تا زمانیکه عملوندها قابل دسترس شوند‪ ،‬مخاطرههای ‪RAW‬‬
‫اجتناب میشوند‪( .‬بعضی پردازندههای زمانبندی شده بصورت پویا به این مرحله "انتشار" میگویند اما ما نام‬
‫"اجرا" را استفاده میکنیم تا با اولین پردازنده زمانبندی شده بصورت پویا یعنی ‪ CDC 6600‬هماهنگ‬
‫باشیم)‪.‬‬
‫نکته اینکه ممکن است در یک پالس ساعت چند دستور برای یک واحد عملیاتی مشابه آماده شوند‪ .‬هرچندکه‬
‫واحدهای عملیاتی مستقل‪ ،‬میتوانند اجرای چند دستور متفاوت را در یک پالس ساعت شروع کنند‪ ،‬اگر بیشتر‬
‫از یک دستور آماده برای اجرا در یک واحد عملیاتی مشابه باشند‪ ،‬واحد از بین آنها یکی را انتخاب میکند‪.‬‬
‫برای ایستگاههای رزرواسیون ممیز شناور‪ ،‬این انتخاب ممکن است تصادفی انجام شود‪ ،‬البته دستورات ‪load,‬‬
‫‪ store‬پیچیدگیهای بیشتری دارند‪.‬‬
‫‪ Load, Store‬یک پردازه اجرایی دو‪-‬مرحلهای نیاز دارد‪ .‬گام اول وقتیکه ثبات پایه آماده باشد‪ ،‬آدرس مؤثر‬
‫را محاسبه میکند و سپس آدرس مؤثر در بافر ‪ load‬یا ‪ store‬قرار داده میشود‪load .‬ها در بافر ‪load‬‬
‫به محض اینکه واحد حافظه قابل دسترس شود‪ ،‬اجرا میشود‪store .‬ها در بافر ذخیره برای مقداری که باید‬
‫ذخیره شود صبر میکنند قبل از اینکه به واحد حافظه فرستاده شود‪.‬‬
‫‪Load‬ها و ‪store‬ها به ترتیب برنامه نگه داشته میشوند به خاطر محاسبه آدرس مؤثر که به ممانعت از‬
‫مخاطره کمک میکند‪.‬‬
‫برای حفظ رفتار استثنائات‪ ،‬هیچ دستوری اجازه اجرا تا زمانیکه همه پرشهایی که قبل از دستور در برنامه‬
‫قرار دارند کامل نشوند‪ ،‬ندارد‪ .‬این محدودیت ضمانت میکند که یک دستوری که یک استثناء را در بین اجرا‬

‫‪1‬‬
‫‪dispatch‬‬
‫‪| 319‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫باعث میشود واقعاً اجرا شود‪ .‬در یک پردازنده که از پیشبینی پرش استفاده میکند (همانطور که همه‬
‫پردازندههای زمانبندی شده بصورت پویا انجام میدهند)‪ ،‬این به این معنی است که پردازنده باید بداند که‬
‫پیش بینی پرش درست است قبل از اینکه به یک دستور بعد از پرش اجازه اجرا بدهد‪ .‬اگر پردازنده ظهور‬
‫استثناها را ضبط کند اما بدرستی آن را پابرجا نکند‪ ،‬یک دستور میتواند اجرا را شروع کند اما متوقف نشود تا‬
‫زمانیکه نتایج نوشتن را وارد کند‪.‬‬

‫شکل ‪ :18-6‬ساختار پایه یک واحد ممیز شناور که از الگوریتم توماسولو استفاده میکند‪ .‬دستورات از واحد دستورالعمل به صف‬
‫دستورالعمل فرستاده میشوند که به روش ‪ FIFO‬منتشر میشوند‪ .‬ایستگاههایی رزرواسیون شامل عمل و عملوندهای واقعی همچنین‬
‫اطالعات استفاده شده برای حل مخاطرهها‪ ،‬هستند‪ .‬بافرهای ‪ load‬سه عملکرد دارند‪ )1( :‬نگهداری اجزای آدرس مؤثر تا زمانیکه‬
‫آدرس مؤثر محاسبه شود‪ )2( ،‬ردیابی ‪load‬های معوق که در حافظه منتظرند‪ ،‬و (‪ )3‬نگهداری نتایج ‪load‬های محاسبه شده که‬
‫منتظر ‪ CDB‬هستند‪ .‬بطور مشابه‪ ،‬بافرهای ‪ store‬سه عملکرد دارند‪ )1( :‬نگهداری اجزای آدرس مؤثر تا زمانیکه محاسبه شود‪،‬‬
‫(‪ )2‬نگهداری آدرسهای حافظه مقصدِ ‪store‬های معوق که منتظر مقادیر داده که باید ذخیره شوند میباشند‪ ،‬و (‪ )3‬نگهداری‬
‫آدرس و مقادیری که باید ذخیره شوند تا زمانیکه واحد حافظه قابل دسترس شود‪ .‬همه نتایج چه از واحدهای ‪ FP‬یا واحد ‪load‬‬
‫روی ‪ CDB‬گذاشته میشوند‪ ،‬که به فایل ثبات ‪ FP‬و ایستگاههای رزرواسیون و بافرهای ‪ load‬میروند‪ .‬جمعکننده ‪ FP‬جمع و‬
‫تفریق را پیادهسازی میکند‪ ،‬و ضرب کننده ‪ FP‬ضرب و تقسیم را انجام میدهد‪.‬‬

‫‪ .3‬نوشتن نتیجه‪ -‬وقتیکه نتیجه قابل دسترس باشد‪ ،‬آنرا در ‪ CDB‬مینویسد و از آنجا به ثباتها و به هر ایستگاه‬
‫رزرواسیون (شامل بافرهای ذخیره) منتظر برای این نتیجه ارسال میکند‪Store .‬ها در بافر ذخیره بافر‬
‫میشوند تا زمانیکه هر دوی مقداری که باید ذخیره شود و آدرس ذخیره قابل دسترس شوند‪ ،‬آنگاه نتیجه به‬
‫محض اینکه واحد حافظه آزاد شود نوشته میشوند‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪320‬‬

‫ساختمان دادههایی که مخاطرهها را تشخیص داده و حذف میکنند به ایستگاههای رزرواسیون‪ ،‬به فایل ثبات‪ ،‬و به‬
‫بافرهای ‪ load, store‬الحاق میشوند که در اشیاء مختلف کمی متفاوت هستند‪ .‬این تگها برای یک مجموعه‬
‫توسعه یافته از ثباتهای مجازی استفاده شده برای تغییر نام استفاده میشوند‪ .‬در مثال ما‪ ،‬فیلد تگ یک کمیت ‪4‬‬
‫بیتی است که یکی از پنج ایستگاه رزرواسیون یا یکی از ‪ 5‬بافر ‪ load‬را عالمت گذاری میکند‪ .‬همانطور که‬
‫خواهیم دید‪ ،‬این معادل ‪ 10‬ثبات میباشد که می توانند به عنوان ثبات نتیجه تعیین شوند (در مقایسه با چهار ثبات‬
‫دقت مضاعف که معماری ‪ 360‬دارد)‪ .‬در یک پردازنده با ثباتهای واقعی بیشتر‪ ،‬تغییر نام را برای ایجاد مجموعه‬
‫ثبات مجازی بیشتر میخواهیم‪ .‬فیلد تگ توصیف میکند که چه ایستگاه رزرواسیونی دربرگیرنده دستوری است که‬
‫نتیجه مورد نیاز یک عملوند منبع را تولید میکند‪.‬‬
‫وقتی که یک دستور منتشر شده باشد و منتظر یک عملوند منبع باشد‪ ،‬به عملوند توسط شماره ایستگاه رزرواسیونی‬
‫که دستوری در آن قرار دارد که ثبات مورد نظر را خواهد نوشت اشاره میکند‪ .‬مقادیر بالاستفاده مثل صفر به این‬
‫معنی است که عملوند هم اکنون در ثباتها قابل دسترس است‪ .‬چون تعداد ایستگاههای رزرواسیون از تعداد واقعی‬
‫ثباتها بیشتر است‪ ،‬مخاطرههای ‪ WAW, WAR‬با تغییر نام نتایج با استفاده از شماره ایستگاههای رزرواسیون‬
‫حذف میشود‪ .‬هرچندکه در شماتیک توماسولو ایستگاههای رزرواسیون به عنوان ثباتهای مجازی توسعه یافته‬
‫استفاده میشوند‪ ،‬سایر روشها میتوانند از یک مجموعه ثبات با ثباتهای بیشتر یا ساختاری مشابه بافر مرتب‬
‫سازی مجدد استفاده کنند‪.‬‬
‫در شماتیک توماسولو‪ ،‬نتایج روی یک گذرگاه (‪ )CDB‬منتشر میشوند‪ ،‬که توسط ایستگاههای رزرواسیون مانیتور‬
‫میشود‪ .‬ترکیب گذرگاه نتیجهی مشترک و بازیابی نتایج از گذرگاه توسط ایستگاههای رزرواسیون مکانیزمهای‬
‫جلورانی و میانگذر استفاده شده در خطلوله زمانبندی شده ایستا را پیادهسازی میکند‪ .‬در انجام اینکار‪ ،‬یک شماتیک‬
‫زمانبندی پویا شده یک پالس تأخیر بین منبع و نتیجه معرفی میکند‪ ،‬زیرا تطبیق نتیجه و استفاده نمیتواند تا مرحله‬
‫نوشتن نتیجه انجام شود‪ .‬بنابراین‪ ،‬در یک خطلوله زمانبندی شده بصورت پویا‪ ،‬تأخیر مؤثر بین دستور تولید کننده و‬
‫یک دستور مصرف کننده حداقل یک پالس طوالنیتر از تأخیر واحد عملیاتی است که نتیجه را تولید میکند‪.‬‬
‫مهم است که یادآوری کنیم تگها در شماتیک توماسولو به بافر یا واحدی اشاره میکنند که یک نتیجه را تولید‬
‫میکند‪ ،‬نامهای ثبات وقتیکه یک دستور به یک ایستگاه رزرواسیون منتشر شد دور انداخته میشوند‪( .‬این یک‬
‫تفاوت کلیدی بین شماتیک توماسولو و ‪ Scoreboarding‬میباشد‪ :‬در ‪ ،scoreboard‬عملوندها در ثباتها‬
‫میمانند و فقط بعد از تکمیل دستور تولید کننده و آماده بودن دستور مصرف کننده خوانده میشوند)‪.‬‬
‫هر ایستگاه رزرواسیون ‪ 7‬فیلد دارد‪:‬‬
‫‪ -Op‬عملی که روی عملوندهای منبع ‪ S1‬و ‪ S2‬انجام میشود‪.‬‬ ‫•‬
‫‪ -Qj, Qk‬ایستگاههای رزرواسیونی که عملوند منبع مرتبط را تولید میکنند؛ مقدار صفر به این معنی‬ ‫•‬
‫است که عملوند منبع هماکنون در ‪ Vj, Vk‬قابل دسترس میباشد‪.‬‬
‫‪ -Vj, Vk‬مقدار عملوندهای منبع‪ .‬نکته اینکه فقط یکی از فیلدهای ‪ V‬یا فیلدهای ‪ Q‬برای هر عملوند‬ ‫•‬
‫معتبر است‪ .‬برای ‪load‬ها‪ ،‬فیلد ‪ Vk‬برای نگهداری فیلد آفست استفاده میشود‪.‬‬
‫‪| 321‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫‪ -A‬برای نگهداری محاسبه آدرس حافظه برای ‪ load‬یا ‪ store‬استفاده میشود‪ .‬ابتداً‪ ،‬فیلد بالفصل‬ ‫•‬
‫از دستور در اینجا ذخیره میشود؛ بعد از محاسبه آدرس‪ ،‬آدرس مؤثر در اینجا ذخیره میشود‪.‬‬
‫‪ -Busy‬مشخص میکند که این ایستگاه کاری و واحد عملیاتی همراه مشغول است‪.‬‬ ‫•‬
‫فایل ثبات یک فیلد دارد‪:Qi ،‬‬
‫‪ -Qi‬شماره ایستگاه رزرواسیونی می باشد که شامل عملی است که نتیجه آن باید در این ثبات ذخیره‬ ‫•‬
‫شود‪ .‬اگر مقدار ‪ Qi‬صفر باشد‪ ،‬هیچ دستور فعالی در حال محاسبه یک نتیجه که مقصدش این ثبات باشد‬
‫نیست‪ ،‬به این معنی که محتوای ثبات مقدار مورد نظر است‪.‬‬
‫بافرهای ‪ load, store‬هر کدام فقط یک فیلد ‪ A‬را دارند‪ ،‬که نتیجه آدرس مؤثر را نگه میدارد وقتیکه اولین‬
‫گام اجرا تکمیل شد‪.‬‬
‫در بخش بعد‪ ،‬ابتدا چند مثال را مد نظر قرار میدهیم که چگونگی کار کردن این مکانیزم را نشان میدهد و سپس‬
‫جزئیات الگوریتم را بررسی میکنیم‪.‬‬
‫زمانبندی پویا‪ :‬مثالها و الگوریتم‬
‫قبل از تجزیه تحلیل الگوریتم توماسولو با جزئیات‪ ،‬اجازه بدهید چند مثال را که به فهم طریقه کار الگوریتم کمک‬
‫میکنند بیان کنیم‪.‬‬
‫مثال ‪ :9-6‬برای رشته کد زیر فقط وقتی که اولین ‪ load‬کامل شده باشد و نتیجهاش را نوشته باشد‪ ،‬جدول‬
‫اطالعاتی به چه صورت است‪.‬‬

‫‪1. L.D‬‬ ‫)‪F6,32(R2‬‬


‫‪2. L.D‬‬ ‫)‪F2,44(R3‬‬
‫‪3. MUL.D‬‬ ‫‪F0,F2,F4‬‬
‫‪4. SUB.D‬‬ ‫‪F8,F2,F6‬‬
‫‪5. DIV.D‬‬ ‫‪F10,F0,F6‬‬
‫‪6. ADD.D‬‬ ‫‪F6,F8,F2‬‬
‫پاسخ‪ :‬شکل ‪ 19-6‬نتیجه را در سه جدول نشان میدهد‪ .‬اعداد بعد از دستورات ‪ Add, Mult, Load‬بیانگر‬
‫تگِ آن ایستگاه رزرواسیون میباشند‪ Add1 -‬تگ برای نتیجه اولین واحد جمع میباشد (سه واحد جمع‪ ،‬دو واحد‬
‫ضرب و دو واحد ‪ load‬داریم)‪ .‬در شکل ‪ 19-6‬یک جدول وضعیت دستور اضافه کردهایم‪ .‬این جدول فقط برای‬
‫فهم الگوریتم بیان شده است؛ و واقعاً جزئی از سختافزار نیست‪ .‬درعوض‪ ،‬ایستگاه رزرواسیون حالت هر عمل منتشر‬
‫شده را نگه میدارد‪.‬‬
‫شماتیک توماسولو دو مزیت عمده نسبت به شماتیکهای قبلی و سادهتر دارد‪ )1( :‬توزیع منطق تشخیص مخاطره‪،‬‬
‫و (‪ )2‬حذف توقفها برای مخاطرههای ‪.WAW,WAR‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪322‬‬

‫وضعیت دستور‬
‫نوشتن نتیجه‬ ‫اجرا‬ ‫انتشار‬ ‫دستور‬
‫√‬ ‫√‬ ‫√‬ ‫‪L.D‬‬ ‫)‪F6,32(R2‬‬
‫√‬ ‫√‬ ‫‪L.D‬‬ ‫)‪F2,44(R3‬‬
‫√‬ ‫‪MUL.D‬‬ ‫‪F0,F2,F4‬‬
‫√‬ ‫‪SUB.D‬‬ ‫‪F8,F2,F6‬‬
‫√‬ ‫‪DIV.D‬‬ ‫‪F10,F0,F6‬‬
‫√‬ ‫‪ADD.D‬‬ ‫‪F6,F8,F2‬‬

‫ایستگاههای رزرواسیون‬
‫‪A‬‬ ‫‪Qk‬‬ ‫‪Qj‬‬ ‫‪Vk‬‬ ‫‪Vj‬‬ ‫‪Op‬‬ ‫مشغول‬ ‫نام‬
‫خیر‬ ‫‪Load1‬‬
‫]‪44+Regs[R3‬‬ ‫‪Load‬‬ ‫بله‬ ‫‪Load2‬‬
‫‪Load2‬‬ ‫]]‪Mem[32+Regs[R2‬‬ ‫‪SUB‬‬ ‫بله‬ ‫‪Add1‬‬
‫‪Load2‬‬ ‫‪Add1‬‬ ‫‪ADD‬‬ ‫بله‬ ‫‪Add2‬‬
‫خیر‬ ‫‪Add3‬‬
‫‪Load2‬‬ ‫]‪Regs[F4‬‬ ‫‪MUL‬‬ ‫بله‬ ‫‪Mult1‬‬
‫‪Mult1‬‬ ‫]]‪Mem[32+Regs[R2‬‬ ‫‪DIV‬‬ ‫بله‬ ‫‪Mult2‬‬

‫ثبات وضعیت‬
‫‪F30‬‬ ‫…‬ ‫‪F12‬‬ ‫‪F10‬‬ ‫‪F8‬‬ ‫‪F6‬‬ ‫‪F4‬‬ ‫‪F2‬‬ ‫‪F0‬‬ ‫فیلد‬
‫‪Mult2 Add1 Add2‬‬ ‫‪Load2 Mult1 Qi‬‬
‫شکل ‪ 19-6‬ایستگاههای رزرواسیون و تگهای ثبات برای وقتیکه همه دستورات منتشر شدهاند و فقط اولین ‪ load‬تکمیل شده و‬
‫نتیجهاش را در ‪ CDB‬نوشته است‪ ،‬نشان داده شده است‪ load .‬دوم محاسبه آدرس مؤثرش را تمام کرده است اما منتظر واحد حافظه‬
‫است‪ .‬ما از آرایه ثبات ][‪ Regs‬برای اشاره به فایل ثبات و آرایه ][‪Mem‬برای اشاره به حافظه استفاده میکنیم‪ .‬به یاد آورید که یک‬
‫عملوند یا توسط یک فیلد ‪ Q‬یا یک فیلد ‪ V‬در هر لحظه مشخص میشود‪ .‬نکته اینکه دستور ‪ ADD.D‬که یک مخاطره ‪ WAR‬در‬
‫مرحله ‪ WB‬دارد‪ ،‬منتظر شده است و میتواند قبل از شروع ‪ DIV.D‬کامل شود‪.‬‬
‫اولین مزیت از ایستگاههای رزرواسیون توزیع شده و استفاده از ‪ CDB‬نشأت میگیرد‪ .‬اگر چندین دستور منتظر یک‬
‫نتیجه واحد باشند‪ ،‬و هر دستور در حال حاظر عملوند دیگرش را داشته باشد‪ ،‬آنگاه دستورات میتوانند بطور همزمان‬
‫با پخش نتیجه روی ‪ CDB‬آزاد شوند‪ .‬اگر یک فایل ثبات متمرکز استفاده شود‪ ،‬واحدها باید نتایجشان را از ثباتها‬
‫بخوانند وقتیکه گذرگاههای ثبات قابل دسترس شوند‪.‬‬
‫مزیت دوم‪ ،‬یعنی حذف مخاطرههای ‪ WAW, WAR‬با تغییر نام ثباتها با استفاده از ایستگاههای رزرواسیون و‬
‫توسط پردازه ذخیره عملوندها در داخل ایستگاه رزرواسیون به محضی که قابل دسترس شدند انجام میشود‪.‬‬
‫به عنوان مثال رشته کد شکل ‪19-6‬هر دو دستور ‪ DIV.D‬و ‪ ADD.D‬را منتشر میکند‪ ،‬هرچندکه یک مخاطره‬
‫‪ WAR‬شامل ‪ F6‬وجود دارد‪ .‬مخاطرهها به یکی از دو روش زیر حذف میشوند‪ .‬اوالً‪ ،‬اگر دستور تولید کننده مقدار‬
‫برای ‪ DIV.D‬تمام شده باشد‪ ،‬آنگاه ‪ Vk‬نتیجه را ذخیره خواهد کرد‪ ،‬و اجازه اجرای ‪ DIV.D‬مستقل از ‪ADD.D‬‬
‫‪| 323‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫را خواهد داد (این حالت نشان داده شده در شکل است)‪ .‬به عبارت دیگر‪ ،‬اگر ‪ L.D‬کامل نشده باشد‪ ،‬آنگاه ‪ Qk‬به‬
‫ایستگاه رزرواسیون ‪ Load1‬اشاره خواهد کرد‪ ،‬و دستور ‪ DIV.D‬مستقل از ‪ ADD.D‬خواهد بود‪ .‬بنابراین در هر‬
‫حالت‪ ADD.D ،‬میتواند منتشر و اجرا شود‪ .‬هرگونه استفاده از نتیجه ‪ DIV.D‬به ایستگاه رزرواسیون اشاره خواهد‬
‫کرد و به ‪ ADD.D‬اجازه کامل شدن و ذخیره مقدارش در ثباتها بدون تأثیر بر ‪ DIV.D‬میدهد‪.‬‬

‫در ادامه مثالی از حذف مخاطره ‪ WAW‬را بطور مختصر بیان میکنیم‪ .‬اما ابتدا اجازه دهید چگونگی ادامه اجرای‬
‫مثال قبلی را توضیح دهیم‪ .‬در این مثال‪ ،‬و سایر مثالها تأخیرات ‪ Load‬یک پالس‪ add ،‬دو پالس‪multiply ،‬‬
‫‪ 6‬پالس و تقسیم را ‪ 12‬پالس در نظر خواهیم گرفت‪.‬‬

‫مثال ‪ :10-6‬با استفاده از کد مثال قبلی‪ ،‬نشان دهید جداول وضعیت چگونه خواهند بود وقتیکه ‪MUL.D‬‬
‫آماده نوشتن نتایجش باشد‪.‬‬
‫پاسخ‪ :‬نتایج در سه جدول شکل ‪ 20-6‬نشان داده شدهاند‪ .‬نکته اینکه ‪ ADD.D‬کامل شده است زیرا عملوندهای‬
‫‪ DIV.D‬کپی شدهاند‪ ،‬بنابراین بر مخاطره ‪ WAR‬غلبه میشود‪ .‬نکته اینکه حتی اگر بارکردن ‪ F6‬تأخیر داشته‬
‫باشد‪ ،‬جمع به داخل ‪ F6‬میتواند بدون تریگرکردن مخاطره ‪ WAW‬اجرا شود‪.‬‬

‫وضعیت دستور‬
‫انتشار اجرا نوشتن نتیجه‬ ‫دستور‬
‫√‬ ‫√‬ ‫√‬ ‫‪L.D‬‬ ‫)‪F6,32(R2‬‬
‫√‬ ‫√‬ ‫√‬ ‫‪L.D‬‬ ‫)‪F2,44(R3‬‬
‫√‬ ‫√‬ ‫‪MUL.D‬‬ ‫‪F0,F2,F4‬‬
‫√‬ ‫√‬ ‫√‬ ‫‪SUB.D‬‬ ‫‪F8,F2,F6‬‬
‫√‬ ‫‪DIV.D‬‬ ‫‪F10,F0,F6‬‬
‫√‬ ‫√‬ ‫√‬ ‫‪ADD.D‬‬ ‫‪F6,F8,F2‬‬

‫ایستگاههای رزرواسیون‬
‫‪A‬‬ ‫‪Qk‬‬ ‫‪Qj‬‬ ‫‪Vk‬‬ ‫‪Vj‬‬ ‫‪Op‬‬ ‫مشغول‬ ‫نام‬
‫خیر‬ ‫‪Load1‬‬
‫خیر‬ ‫‪Load2‬‬
‫خیر‬ ‫‪Add1‬‬
‫خیر‬ ‫‪Add2‬‬
‫خیر‬ ‫‪Add3‬‬
‫]‪Regs[F4‬‬ ‫]]‪Mem[44+Regs[R3‬‬ ‫‪MUL‬‬ ‫بله‬ ‫‪Mult1‬‬
‫‪Mult1‬‬ ‫]]‪Mem[32+Regs[R2‬‬ ‫‪DIV‬‬ ‫بله‬ ‫‪Mult2‬‬

‫ثبات وضعیت‬
‫‪F30‬‬ ‫…‬ ‫‪F12‬‬ ‫‪F10‬‬ ‫‪F8‬‬ ‫‪F6‬‬ ‫‪F4‬‬ ‫‪F2‬‬ ‫‪F0‬‬ ‫فیلد‬
‫‪Mult2‬‬ ‫‪Mult1‬‬ ‫‪Qi‬‬
‫شکل ‪ ،20-6‬ضرب و تقسیم تنها دستوراتی هستند که تمام نشدهاند‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪324‬‬

‫الگوریتم توماسولو‪ :‬جزئیات‬

‫شکل ‪ 21-6‬چکها و مراحلی که هر دستور باید برود را مشخص میکند‪ .‬همانطور که قبالً توضیح داده شد‪،‬‬
‫‪load‬ها و‪store‬ها برای محاسبه آدرس مؤثر به یک واحد عملیاتی میروند قبل از اینکه به بافرهای ‪ load‬یا‬
‫‪ store‬مستقل بروند‪Load .‬ها یک مرحله اجرایی دیگری نیز میگیرند تا به حافظه دسترسی پیدا کنند و سپس‬
‫نتیجه را از حافظه به فایل ثبات و‪/‬یا هر ایستگاه رزرواسیون منتظر میفرستند‪Store .‬ها اجرایشان را در مرحله‬
‫نوشتن نتیجه‪ ،‬که نتیجه را در حافظه مینویسند‪ ،‬تمام میکنند‪ .‬نکته اینکه همه نوشتنها در نوشتن نتیجه که مقصد‬
‫ثبات یا حافظه است اتفاق میافتند‪ .‬این محدودیت الگوریتم توماسولو را ساده میکند‪.‬‬

‫شکل ‪ :21-6‬مراحل الگوریتم وآنچه در هر مرحله مورد نیاز است‪ .‬برای انتشار دستور‪ rd ،‬مقصد است‪ rs ،‬و ‪ rt‬شماره ثباتهای منبع هستند‪ imm ،‬یک‬
‫فیلد بالفصل عالمتدار است‪ ،‬و ‪ r‬ایستگاه رزرواسیون یا بافری است که دستور به آن منتسب است‪ RS .‬ساختمان داده ایستگاه رزرواسیون است‪ .‬مقدار بازگشته از یک‬
‫واحد ‪ FP‬یا توسط واحد ‪ load‬نتیجه (‪ )result‬نامیده میشود‪ RegisterStat .‬ساختمان داده وضعیت ثبات است (نه فایل ثبات‪ ،‬که با ][‪ Regs‬نشان داده میشود)‪.‬‬
‫وقتیکه یک دستور منتشر می شود‪ ،‬ثبات مقصد مجموعه فیلد ‪Qi‬ش را به شماره بافر یا ایستگاه رزرواسیون که دستور منتشر شده است دارد‪ .‬اگر عملوندها در ثباتها قابل‬
‫دسترس باشند‪ ،‬در فیلدهای ‪ V‬ذخیره میشوند‪ .‬در غیراینصورت‪ ،‬فیلدهای ‪ Q‬برای تعیین ایستگاه رزرواسیونی که تولید کننده مقادیر مورد نیاز به عنوان عملوندهای منبع‬
‫میباشند‪ ،‬تنظیم میشوند‪ .‬دستور در ایستگاه رزرواسیون منتظر میماند تا زمانیکه هر دو عملوندش قابل دسترس شوند‪ ،‬که با صفر در فیلدهای ‪ Q‬تعیین میشود‪ .‬فیلدهای‬
‫‪ Q‬به صفر تنظیم میشوند چه موقعیکه این دستور منتشر شود یا وقتی که یک دستور که عملوندهای این دستور به آن وابسته است کامل شود و مرحله نوشتن نتیجه را‬
‫انجام دهد‪ .‬وقتیکه یک دستور اجرایش تمام شود و ‪ CDB‬قابل دسترس باشد‪ ،‬میتواند مرحله نوشتن نتیجه را انجام دهد‪ .‬همه بافرها‪ ،‬ثباتها و ایستگاههای رزرواسیون‬
‫که مقادیر ‪ Qj‬یا ‪Qk‬شان به عنوان ایستگاه رزرواسیون مشابه است مقادیرشان را از ‪ CDB‬بروز میکنند و فیلدهای ‪ Q‬را برای تعیین اینکه مقادیر دریافت شدهاند عالمتدار‬
‫میکنند‪ .‬بنابراین‪ CDB ،‬میتواند نتیجه را به همه مقاصد در یک پالس ساعت پخش کند‪ ،‬و اگر دستورات منتظر عملوندهایشان را داشتند همگی میتوانند اجرایشان را‬
‫در پالس ساعت بعدی شروع کنند‪Load .‬ها در اجرا از دو مرحله عبور میکنند و ‪store‬ها کمی متفاوتتر درطول نوشتن نتیجه عمل میکنند که آنها ممکن است برای‬
‫مقداری که باید ذخیره کنند صبر کنند‪ .‬به یاد داشته باشید که‪ ،‬به منظور نگهداری عملکرد استثناء‪ ،‬دستورات اجازه اجرا ندارند اگر یک پرش که قبالً در ترتیب برنامه دیده‬
‫شده است هنوز کامل نشده باشد‪ .‬زیرا هر مفهومی از ترتیب برنامه بعد از مرحله انتشار نگه داشته نمیشود‪ ،‬این محدودیت معموالً با ممانعت از ترک مرحله انتشار انجام‬
‫میشود اگر یک پرش معلق هنوز در خطلوله باشد‪.‬‬
‫‪| 325‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫مثال ‪ 11-6‬الگوریتم توماسولو‪ :‬یک مثال دارای حلقه‬


‫برای فهم کامل قدرت حذف مخاطرههای ‪ WAW‬و ‪ WAR‬در تغییر نام پویای ثباتها‪ ،‬باید یک حلقه را مدنظر‬
‫بگیریم‪ .‬رشته کد ساده زیر برای ضرب عناصر یک آرایه در یک ثابت که در ‪ F2‬است را مد نظر قرار بدهید‪:‬‬
‫‪Loop:‬‬ ‫‪L.D‬‬ ‫)‪F0,0(R1‬‬
‫‪MUL.D‬‬ ‫‪F4,F0,F2‬‬
‫‪S.D‬‬ ‫)‪F4,0(R1‬‬
‫‪DADDIU‬‬ ‫‪R1,R1,-8‬‬
‫‪BNE R1,R2,Loop ; branches if R1!=R2‬‬

‫اگر پیشبینی کنیم که پرش اتفاق افتاده است‪ ،‬استفاده از ایستگاههای رزرواسیون اجازه اجرای چندین تکرار حلقه‬
‫را تا با هم به پیش بروند میدهد‪ .‬این مزیت بدون تغییر کد بدست میآید‪ ،‬حلقه بطور پویا توسط سختافزار با‬
‫استفاده از ایستگاههای رزرواسیون برای تغییر نام ثبات که مثل ثباتهای اضافی کار میکنند‪ ،‬باز میشود‪.‬‬
‫اجازه دهید فرض کنیم همه دستورات در دو تکرار متوالی حلقه را منتشر کردهایم‪ ،‬اما هیچکدام ازعملیات یا‬
‫‪ load/store‬ممیز شناور کامل نشدهاند‪ .‬شکل ‪ 22-6‬ایستگاههای رزرواسیون‪ ،‬جداول وضعیت ثبات‪ ،‬و بافرهای‬
‫‪ load‬و ‪ store‬را در این نقطه نشان میدهد‪( .‬عملیات ‪ ALU‬صحیح نادیده گرفته شدهاند و فرض شده است که‬
‫پرش اتفاق افتاده است)‪ .‬وقتیکه سیستم به این وضعیت میرسد‪ ،‬دو کپی از حلقه با ‪ CPI‬نزدیک ‪ 1.0‬حمل‬
‫میشوند‪ ،‬اگر ضرب بتواند در ‪ 4‬پالس ساعت کامل شود‪ .‬با تأخیر شش پالس‪ ،‬تکرارهای بیشتری نیاز به پردازش‬
‫است قبل از اینکه حالت ثابت بدست آید‪ .‬این نیازمند ایستگاههای رزرواسیون بیشتری است تا دستوراتی که در حال‬
‫اجرا هستند را نگه دارد‪.‬‬
‫حتی اگر چندین دستور در هر پالس منتشر شوند‪ ،‬روش توماسولو میتواند بیشتر از یک دستور در هر پالس ساعت‬
‫را تحمل کند‪ .‬یک ‪ load, store‬میتواند به سالمت خارج از ترتیب اجرا شوند اگر به آدرسهای مختلف دسترس‬
‫داشته باشند‪ .‬اگر یک ‪ load, store‬در آدرس مشابهی دسترسی داشته باشند آنگاه یا‪:‬‬
‫▪ ‪ Load‬قبل از ‪ store‬در ترتیب برنامه است و تعویض آنها منتج به مخاطره ‪ WAR‬میشود‪ ،‬یا‬
‫▪ ‪ Store‬قبل از ‪ load‬در ترتیب برنامه است و تعویض آنها منتج به مخاطره ‪ RAW‬میشود‪.‬‬
‫بطور مشابه‪ ،‬تعویض دو ‪ store‬با آدرس مشابه منتج به مخاطره ‪ WAW‬میشود‪.‬‬
‫بنابراین‪ ،‬برای تشخیص اینکه آیا یک ‪ load‬میتواند در یک زمان داده شده اجرا شود‪ ،‬پردازنده میتواند چک کند‬
‫که چه موقع هر ‪ store‬کامل نشدهای که قبل از ‪ load‬در ترتیب برنامه قرار دارد از آدرس حافظه داده مشابهی‬
‫بطور مشترک با ‪ load‬استفاده میکند‪ .‬بطور مشابه‪ ،‬یک ‪ store‬باید منتظر بماند تا وقتیکه ‪ load‬یا ‪store‬‬
‫اجرا نشدهای که در ترتیب برنامه قبل از آن قرار دارد و از آدرس حافظه داده مشابهی بطور مشترک استفاده میکند‪،‬‬
‫وجود نداشته باشد‪.‬‬
‫برای تشخیص چنین مخاطراتی‪ ،‬پردازنده باید آدرس حافظه داده مرتبط با هر عمل حافظه اخیر را محاسبه کرده‬
‫باشد‪ .‬یک روش ساده نه لزوماً بهینه که ضمانت میکند که پردازنده همه چنین آدرسهایی را دارد محاسبه آدرس‬
‫مؤثر در ترتیب برنامه میباشد‪ ( .‬ما واقعاً نیاز به نگهداری ترتیب نسبی بین ‪ store‬ها و سایر مراجعات به حافظه‬
‫داریم‪ ،‬که ‪load‬ها میتوانند آزادانه تغییر ترتیب داده شوند)‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪326‬‬

‫وضعیت دستور‬
‫انتشار اجرا نوشتن نتیجه‬ ‫از تکرار‬ ‫دستور‬
‫√‬ ‫√‬ ‫‪1‬‬ ‫‪L.D‬‬ ‫)‪F0.0(R1‬‬
‫√‬ ‫‪1‬‬ ‫‪MUL.D‬‬ ‫‪F4,F0,F2‬‬
‫√‬ ‫‪1‬‬ ‫‪S.D‬‬ ‫)‪F4.0(R1‬‬
‫√‬ ‫√‬ ‫‪2‬‬ ‫‪L.D‬‬ ‫)‪F0,0(R1‬‬
‫√‬ ‫‪2‬‬ ‫‪MUL.D‬‬ ‫‪F4,F0,F2‬‬
‫√‬ ‫‪2‬‬ ‫‪S.D‬‬ ‫)‪F4,0(R1‬‬

‫ایستگاههای رزرواسیون‬
‫‪A‬‬ ‫‪Qk‬‬ ‫‪Qj‬‬ ‫‪Vk‬‬ ‫‪Vj‬‬ ‫‪Op‬‬ ‫مشغول‬ ‫نام‬
‫]‪Regs[R1‬‬ ‫‪Load‬‬ ‫بله‬ ‫‪Load1‬‬
‫‪Regs[R1]-8‬‬ ‫‪Load‬‬ ‫بله‬ ‫‪Load2‬‬
‫خیر‬ ‫‪Add1‬‬
‫خیر‬ ‫‪Add2‬‬
‫خیر‬ ‫‪Add3‬‬
‫‪Load1‬‬ ‫]‪Regs[F2‬‬ ‫‪MUL‬‬ ‫بله‬ ‫‪Mult1‬‬
‫‪Load2‬‬ ‫]‪Regs[F2‬‬ ‫‪MUL‬‬ ‫بله‬ ‫‪Mult2‬‬

‫‪Mult1‬‬ ‫]‪Regs[R1‬‬ ‫‪Store‬‬ ‫بله‬ ‫‪Store1‬‬

‫‪Mult2‬‬ ‫‪Regs[R1]-8‬‬ ‫‪Store‬‬ ‫بله‬ ‫‪Stroe2‬‬

‫ثبات وضعیت‬
‫‪F30‬‬ ‫…‬ ‫‪F12‬‬ ‫‪F10 F8 F6‬‬ ‫‪F4‬‬ ‫‪F2‬‬ ‫‪F0‬‬ ‫فیلد‬
‫‪Mult2‬‬ ‫‪Load2‬‬ ‫‪Qi‬‬
‫شکل ‪ :22-6‬دو تکرار فعال حلقه که هیچ دستوری هنوز کامل نشده است‪ .‬ورودیهای ایستگاههای رزرواسیون ضرب کننده‪ ،‬تعیین میکنند‬
‫که منابع ‪Load‬های معوق هستند‪ .‬ایستگاههای رزرواسیون ‪ Store‬تعیین میکندکه مقصد ضرب منبع مقداری است که باید ذخیره شود‪.‬‬

‫اجازه دهید ابتدا وضعیت یک ‪ load‬را مد نظر قرار دهیم‪ .‬اگر محاسبه آدرس مؤثر در ترتیب برنامه را انجام داده‬
‫باشیم‪ ،‬آنگاه وقتیکه یک ‪ load‬محاسبه آدرس مؤثر را تکمیل کرده است‪ ،‬میتوانیم با تست فیلد ‪ A‬در همه‬
‫بافرهای ‪ store‬فعال چک کنیم که چه موقع یک تصادم آدرس وجود دارد‪ .‬اگر آدرس ‪ load‬با آدرس هر یک از‬
‫ورودیهای بافر ‪ store‬تطابق داشته باشد‪ ،‬آن دستور ‪ load‬به بافر ‪ load‬تا زمانیکه ‪ store‬متصادم کامل‬
‫نشود فرستاده نمیشود‪( .‬بعضی پیادهسازیها مقدار را مستقیماً به ‪ load‬از یک ‪ store‬معوق میفرستند و تأخیر‬
‫مخاطره ‪ RAW‬را کاهش میدهند)‪.‬‬
‫‪Store‬ها به روش مشابهی کار میکنند‪ ،‬با این تفاوت که پردازنده باید هر دوی بافرهای ‪ load‬و بافرهای ‪store‬‬
‫را برای تصادم چک کند زیرا ‪store‬های متصادم نمیتوانند نه با ‪ load‬یا ‪ store‬تغییر ترتیب داده شوند‪.‬‬
‫‪| 327‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫یک خطلوله زمانبندی شده بصورت پویا میتواند کارایی خیلی باالیی را برآورده کند به شرطی که پرشها بدرستی‬
‫پیشبینی شوند‪ .‬عیب اصلی این روش پیچیدگی شماتیک توماسولو میباشد که نیازمند مقدار زیادی سخت افزار‬
‫است‪ .‬باالخص هر ایستگاه رزرواسیون باید شامل یک بافر انجمنی با سرعت باال باشد و منطق کنترل نیز پیچیده‬
‫است‪ .‬کارایی همچنین میتواند با یک ‪ CDB‬تک محدود شود‪ .‬هرچند که ‪CDB‬های دیگری نیز قابل اضافه شدن‬
‫هستند‪ ،‬هر ‪ CDB‬باید با هر ایستگاه رزرواسیون محاوره کند و سختافزار تطابق‪-‬تگ مرتبط باید برای هر ایستگاه‬
‫برای هر ‪ CDB‬دوبله شود‪.‬‬
‫در شماتیک توماسولو‪ ،‬دو تکنیک مختلف ترکیب شدهاند‪ :‬تغییر نام ثباتهای معماری به مجموعه بزرگی از ثباتها‬
‫و بافرکردن عملوندهای منبع از فایل ثبات‪ .‬بافرکردن عملوندهای منبع‪ ،‬مخاطره ‪ WAR‬را که وقتی عملوند در‬
‫ثباتها قابل دسترس باشد ایجاد میشود‪ ،‬حل و فصل میکند‪ .‬همچنین حذف مخاطرههای ‪ WAR‬با تغییر نام‬
‫ثبات همراه با بافرکردن نتیجه تا زمانیکه هیچ مراجعه معوقی به ثبات وجود نداشته باشد امکان پذیر است‪.‬‬
‫شماتیک توماسولو برای چندین سال بعد از ‪ 360/91‬استفاده نشد‪ ،‬اما بطور گسترده در پردازندههای چند‪-‬انتشاره‬
‫که از سال ‪ 1990‬شروع شد به دالیل زیر استفاده شد‪:‬‬
‫‪ .1‬هرچندکه الگوریتم توماسولو قبل از حافظه نهان طراحی شد‪ ،‬ظهور حافظههای نهان‪ ،‬با تأخیرات غیرقابل‬
‫پیشبینی ذاتی‪ ،‬یکی از محرکهای اصلی برای زمانبندی پویا شده است‪ .‬اجرای خارج‪-‬از‪-‬ترتیب به‬
‫پردازنده اجازه ادامه اجرای دستورات را میدهد در حالیکه منتظر تکمیل یک فقدان حافظه نهان میباشد‪،‬‬
‫بنابراین همه یا قسمتی از هزینه فقدان حافظه نهان مخفی میشود‪.‬‬
‫‪ .2‬از زمانیکه قابلیت انتشار پردازندهها پیشرفت کرده است‪ ،‬و طراحان نگران کارایی کدهای مشکل‪-‬به‪-‬‬
‫زمانبندی (مثل اکثر کدهای غیر عددی) شدند‪ ،‬تکنیکهایی مثل تغییر نام ثبات‪ ،‬زمانبندی پویا‪ ،‬و تفکر‬
‫و تعمق‪ ،‬مهمتر میشوند‪.‬‬
‫‪ .3‬الگوریتم میتواند به کارایی باال بدون نیاز به کامپایلر تا کد را برای یک ساختار خطلوله خاص مسیر‬
‫دهد برسد‪.‬‬

‫‪ CDC6600 : CDC Scoreboarding‬یک کامپیوتر با کارایی باال بود که از زمانبندی دستورالعمل پویای‬
‫سختافزاری استفاده کرد‪ .‬شکل ‪(23-6‬الف) پردازندهای شبیه ‪ CDC6600‬را نشان میدهد که چندین واحد‬
‫عملیاتی به عنوان چند خطلوله اجرایی ظاهر شدهاند‪ .‬واحدهای موازی به دستورات اجازه میدهند تا خارج از ترتیب‬
‫برنامه اصلی کامل شوند‪ .‬پردازنده برای هر واحد اجرایی بافرهای دستورالعمل دارد‪ .‬دستورات بدون توجه به اینکه‬
‫چه زمانی داده ورودی ثبات قابل دسترس میشود به واحدهای عملیاتی قابل دسترس منتشر میشوند‪.‬‬

‫اطالعات کنترل دستور باید تا زمانیکه دادههای آن توسط سایر دستورات تولید شوند در داخل یک بافر منتظر‬
‫باشند‪ .‬برای کنترل مسیر داده بین واحدهای اجرایی و ثباتها‪ CDC 6600 ،‬یک واحد کنترل متمرکز را استفاده‬
‫کرد که به آن ‪ Scoreboard‬میگویند‪ .‬این واحد ثباتهای مورد نیاز دستوراتی که منتظر واحدهای عملیاتی‬
‫مختلف هستند را تعقیب میکند و وقتی همه ثباتها داده معتبر دارند‪ ،‬اجرای دستور را فعال میکند‪ .‬به طور مشابه‪،‬‬
‫وقتیکه یک واحد عملیاتی کارش تمام شد به ‪ Scoreboard‬سیگنال میدهد تا منابع را آزاد کند‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪328‬‬

‫مثال ‪ :12-6‬عملیات خطلوله شده با استفاده از سختافزار ‪ Scoreboard‬روی پردازنده ‪CDC‬‬


‫‪6600‬‬

‫شکل ‪(23-6‬ب) زمانبندی خطلوله را بر اساس منطق انتشار ‪ Scoreboard‬نشان میدهد‪ .‬زمانبندی مرتبط با‬
‫اجرای کد ماشین مشابه برای ‪ X=Y+Z‬و ‪ A=B×C‬میباشد‪ .‬تأخیرهای خطلوله مشابه نتایج بدست آمده از الگوریتم‬
‫توماسولو میباشد‪ .‬دستور ‪ add‬قبل از اینکه ثباتهایش آماده باشند به واحد عملیاتیش منتشر میشود‪ .‬این دستور‬
‫تا زمانیکه عملوندهای ثبات ورودیش آماده نشوند صبر میکند‪.‬‬

‫‪ Scoreboard‬مقادیر ثبات را وقتیکه آماده شدند به واحد جمع کننده مسیریابی میکند‪ .‬در این اثناء مرحله‬
‫انتشار بلوکه نمیشود بنابراین سایر دستورات میتوانند از دستور ‪ add‬بلوک شده عبور کنند‪ .‬مشابه روش در هم‬
‫قفلی نرم افزاری کارایی بهبود مییابد‪ .‬انجام عملیات ‪ 13‬پالس ساعت طول میکشد‪ .‬جزئیات ‪CDC‬‬
‫‪ Scoreboarding‬را میتوان در کتاب ‪ )1970( Thornton‬یافت‪.‬‬

‫اجرا‬ ‫اجرا‬ ‫بازپس نویسی‬


‫‪E‬‬ ‫‪E‬‬ ‫‪W‬‬

‫برداشت‬ ‫دیکد ‪D‬‬ ‫انتشار ‪I‬‬ ‫اجرا‬ ‫اجرا‬ ‫بازپس نویسی‬


‫دستور ‪F‬‬
‫‪E‬‬ ‫‪E‬‬ ‫‪W‬‬

‫‪Scoreboard‬‬ ‫اجرا‬ ‫اجرا‬ ‫بازپس نویسی‬


‫‪E‬‬ ‫‪E‬‬ ‫‪W‬‬
‫(الف) یک پردازنده شبیه ‪CDC 6600‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4 5 6 7 8 9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫‪16‬‬ ‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬
‫)‪R1Mem(Y‬‬ ‫‪F D I E E‬‬ ‫‪E W‬‬
‫)‪R2Mem(Z‬‬ ‫‪F D I E‬‬ ‫‪E E W‬‬
‫)‪R3(R1)+(R2‬‬ ‫‪F D I‬‬ ‫‪E‬‬ ‫‪E E W‬‬
‫)‪Mem(x)(R3‬‬ ‫‪F D‬‬ ‫‪I‬‬ ‫‪E E E W‬‬
‫)‪R4Mem(B‬‬ ‫‪F‬‬ ‫‪D I E E‬‬ ‫‪E W‬‬
‫) ‪R5Mem(C‬‬ ‫‪F D I E‬‬ ‫‪E E W‬‬
‫)‪R6(R4)*(R5‬‬ ‫‪F D I‬‬ ‫‪E E E W‬‬
‫)‪Mem(A)(R6‬‬ ‫‪F D‬‬ ‫‪I‬‬ ‫‪E E E W‬‬

‫(ب) زمانبندی بهبود یافته از شکل ‪(9-6‬ب)‬


‫شکل ‪ Scoreboard :23-6‬سخت افزاری برای زمانبندی دستور پویا‬
‫‪ Scoreboard‬یک منطق کنترلی متمرکز است که وضعیت ثباتها و چندین واحد عملیاتی را تعقیب میکند‪.‬‬
‫وقتی واحدهای عملیاتی نتایج جدیدی تولید میکنند‪ ،‬بعضی وابستگیهای داده میتوانند رفع و رجوع شوند و درجه‬
‫باالتری از موازات میتواند با ‪ Scoreboarding‬بدست آید‪ Scoreboarding .‬در ریزپردازندههایی مثل‬
‫‪ MC88000‬منطق جلورانی و تگ کردن ثبات را استفاده میکند‪ .‬در این روش ‪ ،Scoreboarding‬یک‬
‫مکانیزم ‪ data-driven‬را برای رسیدن به محاسبات جریان داده به صورت توصیف شده در بخش ‪ 3-2‬پیاده‬
‫سازی میکند‪.‬‬
‫‪| 329‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫زمانبندی دستورالعمل پویا فقط در مینفریمهای انتهایی یا سوپرکامپیوترها در گذشته پیاده سازی میشد‪ .‬اکثر‬
‫ریزپردازندهها زمانبندی ایستا را استفاده میکنند‪ .‬اما هدف به نرمی در حال تغییر است‪ .‬تعداد زیادی از پردازندههای‬
‫ریسک و سیسک با پشتیبانی سخت افزاری زمانبندی پویا در زمان اجرا ساخته میشوند‪ .‬به هر حال‪ ،‬زمانبندی‬
‫دستورالعمل ایستا و پویا می توانند با هم ترکیب شوند تا دو مرحله بهینه سازی را ایجاد کنند‪ .‬برای رسیدن به این‬
‫هدف طراحان کامپایلر و پردازنده ها باید با یکدیگر کار کنند تا به یک طرح بهینه برسند‪ .‬خطلولههای دستورالعمل‬
‫چند انتشاره‪ ،‬که نسبت به خطلولههای تک انتشاره پیچیدهتر هستند در بخش ‪ 5-6‬مطالعه خواهند شد‪.‬‬
‫سختافزاری‪1‬‬ ‫تعمق و تفکر‬

‫یکی از مطالبی که در روشهای ارائه شده بهره برداری از موازات سطح‪-‬دستور باالتر چالش برانگیز است وابستگی‪-‬‬
‫های کنترل میباشند‪ .‬هرچند که پیشبینی پرش توقفهای نشأت گرفته از پرش را کاهش میدهد اما به تنهایی‬
‫برای پردازندههایی که چندین دستور را در هر پالس ساعت منتشر میکنند کافی نیست‪ .‬یک پردازنده با تعداد انتشار‬
‫دستور باال در هر پالس ساعت ممکن است در هر پالس یک دستور پرش را اجرا کند بنابراین بهرهبرداری بیشتر از‬
‫موازات نیازمند این است که بر محدودیتهای وابستگی کنترل غلبه کنیم‪ .‬یکی از این روشها تعمق سخت افزاری‬
‫است‪.‬‬

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

‫‪ ROB‬ثباتهای اضافی مثل ایستگاههای رزرواسیون توماسولو تهیه میکند‪ ROB .‬نتیجه یک دستور را بین زمانی‬
‫که عمل دستور کامل میشود و تا زمانیکه وارد مرحله خاتمه میشود نگه میدارد‪ .‬تفاوت کلیدی با الگوریتم‬
‫توماسولو این است که در الگوریتم توماسولو به محض اینکه یک دستور نتیجهاش را نوشت همه دستورات منتشر‬
‫شده بعدی نتیجه را در فایل ثبات مییابند اما در تعمق سختافزاری تا زمانیکه دستور خاتمه پیدا نکند فایل ثبات‬

‫‪1‬‬
‫‪Hardware based Speculation‬‬
‫‪2‬‬
‫‪Commit‬‬
‫‪3‬‬
‫)‪Reorder buffer (ROB‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪330‬‬

‫بروز نمیشود‪ .‬بنابراین ‪ ROB‬عملوندها را در زمان بین اتمام اجرای دستور و خاتمه دستور تهیه میکند‪ROB .‬‬
‫شبیه بافرهای ذخیره در الگوریتم توماسولو میباشد‪.‬‬

‫هر ورودی ‪ ROB‬چهار فیلد دارد‪ :‬نوع دستور‪ ،‬فیلد مقصد‪ ،‬فیلد مقدار‪ ،‬و فیلد آماده‪ .1‬فیلد نوع مشخص کننده نوع‬
‫دستور است (پرش‪ ،‬ذخیره‪ ،‬عمل ثباتی‪ .)..،‬فیلد مقصد شماره ثبات (برای عمل ‪ )ALU‬یا آدرس حافظه (برای ذخیره‬
‫کردن) را نگه می دارد و اشاره به جایی دارد که نتیجه باید ذخیره شود‪ .‬فیلد مقدار‪ ،‬مقدار نتیجه یک دستور را نگه‬
‫میدارد تا زمانی که دستور خاتمه یابد‪ .‬فیلد آماده مشخص کننده این است که آیا اجرای دستور تمام شده و مقدار‬
‫آن آماده است یا خیر‪.‬‬

‫در ساختار ارائه شده برای الگوریتم توماسولو فقط ‪ ROB‬اضافه میشود که وظیفه تغییر نام را برعهده دارد که در‬
‫الگوریتم توماسولو بر عهده ایستگاههای رزرواسیون بود‪ .‬این ساختار در شکل ‪ 24-6‬نشان داده شده است‪ .‬چون‬
‫هر دستور در ‪ ROB‬تا زمانیکه خاتمه یابد قرار دارد از شماره ‪ ROB‬به جای شماره ایستگاه رزرواسیون استفاده‬
‫میکنیم‪ .‬در روش تعمق سختافزاری اجرای هر دستور چهار مرحله دارد که عبارتند از‪:‬‬

‫‪ .1‬انتشار‪ -‬دستور را از صف دستورالعمل برمیدارد‪ .‬اگر در ایستگاه رزرواسیون و ‪ ROB‬مکان خالی وجود‬
‫داشد دستور را منتشر میکند‪ ،‬عملوندها را به ایستگاه رزرواسیون میفرستد اگر قابل دسترس باشند چه‬
‫در ثباتها یا ‪ . ROB‬ورودی کنترل برای تعیین بافرهای استفاده شده را بروز میکند‪ .‬شماره ‪ROB‬ی‬
‫تخصیص داده شده برای نتیجه به ایستگاه رزرواسیون هم فرستاده میشود تا شماره بتواند برای انتشار‬
‫روی ‪ CDB‬نتیجه را تگ کند‪ .‬اگر ‪ ROB‬یا همه رزرواسیون ها پر باشند دستور منتشر شده متوقف‬
‫میشود تا زمانیکه هر دو ورودی قابل دسترس داشته باشند‪.‬‬
‫‪ .2‬اجرا‪ -‬اگر یک یا چند دستور هنوز قابل دسترس نباشند‪ CDB ،‬را مانیتور میکند تا زمانیکه آنها را بیابد‪.‬‬
‫این مرحله مخاطرههای ‪ RAW‬را چک میکند‪ .‬وقتی هر دو عملوند آماده شدند عمل را اجرا میکند‪ .‬در‬
‫این مرحله دستورات ممکن است چندین پالس ساعت برای اجرا بگیرند و ‪ load‬در این مرحله دو گام‬
‫نیاز دارند‪ Store .‬ها فقط ثبات پایه قابل دسترس در این مرحله را دارند چون تنها کار برای اجرای‬
‫‪ store‬در این مرحله محاسبه آدرس مؤثر است‪.‬‬
‫‪ .3‬نوشتن نتیجه‪ -‬وقتی نتیجه آماده شد‪ ،‬آنرا روی ‪ CDB‬مینویسد و از ‪ CDB‬به ‪ ROB‬و هر ایستگاه‬
‫رزرواسیون منتظر نتیجه میفرستد و ایستگاه رزرواسیون را با قابل دسترس عالمت میزند‪ .‬برای ‪store‬‬
‫عملیات خاصی مورد نیاز است‪ .‬اگر مقداری که باید ذخیره شود آماده باشد‪ ،‬در فیلد مقدار در ورودی‬
‫‪ ROB‬برای ذخیره نوشته میشود‪ .‬در غیر اینصورت ‪ CDB‬باید مانیتور شود‪.‬‬

‫‪1‬‬
‫‪Instruction Type, destination field, value field and ready field‬‬
‫‪| 331‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫‪ .4‬خاتمه‪ -‬این مرحله تکمیل اجرای دستور است بعد از اینکه فقط نتیجه آن نگهداری شود‪ .‬سه رشته عمل‬
‫مختلف در این مرحله وجود دارد که وابسته به اینکه چه موقع دستور در حال خاتمه یک پرش با پیشبینی‬
‫غلط‪ ،‬یک ‪ store‬یا سایر دستورات است (خاتمه معمولی)‪ .‬خاتمه معمولی وقتی اتفاق میافتد که دستور‬
‫به سر صف ‪ ROB‬برسد و نتیجه آن در بافر باشد‪ ،‬در این نقطه پردازنده ثبات را با نتیجه بروز میکند و‬
‫دستور را از ‪ ROB‬حذف میکند‪ .‬خاتمه ‪ store‬مشابه است بجز اینکه بجای ثبات‪ ،‬حافظه بروز میشود‪.‬‬
‫وقتیکه یک پرش با پیشبینی غلط به سر صف ‪ ROB‬میرسد‪ ،‬معلوم میشود که تعمق غلط بوده است‬
‫و ‪ ROB‬تخلیه میشود و اجرا از مکان درست پرش ادامه مییابد‪ .‬اگر پرش به درستی پیشبینی شده‬
‫باشد‪ ،‬پرش تمام میشود‪.‬‬

‫شکل ‪ 24-6‬ساختار پایه الگوریتم توماسولو با توسعه برای اجرای تعمق‪ .‬تنها تفاوت اضافه شدن ‪ ROB‬و حذف بافر ذخیره میباشد که‬
‫عملکرد آن با ‪ ROB‬مجتمع شده است‪ .‬این مکانیزم با وسیعتر شدن ‪ CDB‬قابل توسعه به پردازندههای چند انتشاره مثل سوپراسکالر و‬
‫‪ VLIW‬میباشد‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪332‬‬

‫مثال ‪ :13-6‬فرض کنید تأخیر جمع ‪ 2‬پالس ساعت‪ ،‬ضرب ‪ 6‬پالس ساعت و تقسیم ‪ 12‬پالس ساعت باشد‪ .‬کد‬
‫زیر که مشابه با کد مثال ‪ 6-9‬میباشد را در نظر بگیرید‪ .‬جدول وضعیت چگونه خواهد بود وقتیکه ‪ MUL.D‬آماده‬
‫رفتن به مرحله خاتمه باشد‪.‬‬
‫‪L.D‬‬ ‫)‪F6,32(R2‬‬
‫‪L.D‬‬ ‫)‪F2,44(R3‬‬
‫‪MUL.D‬‬ ‫‪F0,F2,F4‬‬
‫‪SUB.D‬‬ ‫‪F8,F2,F6‬‬
‫‪DIV.D‬‬ ‫‪F10,F0,F6‬‬
‫‪ADD.D‬‬ ‫‪F6,F8,F2‬‬
‫پاسخ‪ :‬شکل ‪ 25-6‬نتیجه را در سه جدول نشان میدهد‪ .‬با وجود اینکه ‪ SUB.D‬اجرایش تمام شده است تا‬
‫زمانیکه ‪ MUL.D‬خاتمه پیدا نکند‪ ،‬خاتمه نمییابد‪ .‬وضعیت ثبات و ایستگاههای رزرواسیون مشابه مثال ‪9-6‬‬
‫می باشد با این تفاوت که شماره ایستگاه رزرواسیون با شماره ورودی ‪ ROB‬جایگزین در فیلدهای ‪ Qj, QK‬و‬
‫فیلدهای وضعیت شده است‪ .‬و فیلد مقصد به ایستگاههای رزرواسیون اضافه شده است‪ .‬فیلد مقصد‪ ،‬ورودی ‪ROB‬‬
‫را مشخص میکند که نتیجه در آن تولید میشود‪.‬‬
‫بافر مرتب سازی مجدد‬
‫مقدار‬ ‫مقصد‬ ‫وضعیت‬ ‫دستور‬ ‫مشغول‬ ‫ورودی‬
‫]]‪Mem[32+Regs[R2‬‬ ‫‪F6‬‬ ‫خاتمه‬ ‫‪L.D‬‬ ‫)‪F6,32(R2‬‬ ‫خیر‬ ‫‪1‬‬
‫]]‪Mem[44+Regs[R3‬‬ ‫‪F2‬‬ ‫خاتمه‬ ‫‪L.D‬‬ ‫)‪F2,44(R3‬‬ ‫خیر‬ ‫‪2‬‬
‫]‪#2×Regs[F4‬‬ ‫‪F0‬‬ ‫نوشتن نتیجه‬ ‫‪MUL.D‬‬ ‫‪F0,F2,F4‬‬ ‫بله‬ ‫‪3‬‬
‫‪# 2- # 1‬‬ ‫‪F8‬‬ ‫نوشتن نتیجه‬ ‫‪SUB.D‬‬ ‫‪F8,F2,F6‬‬ ‫بله‬ ‫‪4‬‬
‫‪F10‬‬ ‫اجرا‬ ‫‪DIV.D‬‬ ‫‪F10,F0,F6‬‬ ‫بله‬ ‫‪5‬‬
‫‪# 4 +# 2‬‬ ‫‪F6‬‬ ‫نوشتن نتیجه‬ ‫‪ADD.D‬‬ ‫‪F6,F8,F2‬‬ ‫بله‬ ‫‪6‬‬

‫ایستگاههای رزرواسیون‬
‫‪A‬‬ ‫‪Dest‬‬ ‫‪Qk‬‬ ‫‪Qj‬‬ ‫‪Vk‬‬ ‫‪Vj‬‬ ‫‪Op‬‬ ‫مشغول‬ ‫نام‬
‫خیر‬ ‫‪Load1‬‬
‫خیر‬ ‫‪Load2‬‬
‫خیر‬ ‫‪Add1‬‬
‫خیر‬ ‫‪Add2‬‬
‫خیر‬ ‫‪Add3‬‬
‫‪#3‬‬ ‫]‪Regs[F4‬‬ ‫]]‪Mem[44+Regs[R3‬‬ ‫‪MUL.D‬‬ ‫خیر‬ ‫‪Mult1‬‬
‫‪#5‬‬ ‫‪#3‬‬ ‫]]‪Mem[32+Regs[R2‬‬ ‫‪DIV.D‬‬ ‫بله‬ ‫‪Mult2‬‬

‫ثبات وضعیت‬
‫‪F10‬‬ ‫‪F8‬‬ ‫‪F7‬‬ ‫‪F6‬‬ ‫‪F5‬‬ ‫‪F4‬‬ ‫‪F3‬‬ ‫‪F2‬‬ ‫‪F1‬‬ ‫‪F0‬‬ ‫فیلد‬
‫‪5‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪3‬‬ ‫‪Reorder #‬‬
‫بله‬ ‫بله‬ ‫خیر‬ ‫بله‬ ‫خیر‬ ‫خیر‬ ‫خیر‬ ‫خیر‬ ‫خیر‬ ‫بله‬ ‫مشغول‬
‫شکل ‪ :25-6‬در این زمان ‪ MUL.D‬آماده خاتمه است و فقط دو ‪ L.D‬خاتمه یافتهاند‪ .‬هرچند که بقیه اجرایشان تمام شده است‪ MUL.D .‬در سر صف‬
‫‪ ROB‬قرار دارد و ‪ L.D‬فقط برای فهم مطلب نگه داشته شده است و گرنه از ‪ ROB‬خارج شده است هرچندکه اجرایشان تمام شده و نتایجشان آماده‬
‫برای استفاده سایرین میباشد‪ .‬در این نگارش منظور از ‪ #x‬اشاره به فیلد مقدار ورودی ‪ x‬از ‪ ROB‬میکند‪.‬‬
‫‪| 333‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫همانطور که در مثال مشاهده کردید این روش اطمینان میدهد که خاتمه به ترتیب میباشد‪.‬‬
‫‪ -4-3-6‬روشهای راهاندازی پرش‬

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

‫اثرات پرش‪ :‬در زیر سه اصطالح پایه برای تجزیه تحلیل اثرات پرش معرفی میشوند عمل برداشت یک دستور‬
‫غیرترتیبی یا دور بعد از دستور پرش را وقوع پرش‪ 1‬میگویند‪ .‬دستوری که باید بعد از اتفاق افتادن پرش اجرا شود‬
‫را مقصد پرش‪ 2‬میگویند‪ .‬تعداد سیکلهایی که بین وقوع پرش و مقصد پرش هدر میرود را اسالت تأخیر‪ 3‬میگویند‬
‫و با ‪ b‬نشان میدهیم‪ .‬در کل ‪ 0≤b≤k-1‬که ‪ k‬تعداد مراحل خطلوله میباشد‪.‬‬

‫وقتیکه یک پرش اتفاق میافتد‪ ،‬همه دستورات بعد از پرش در خطلوله بالاستفاده میشوند و از خطلوله دور ریخته‬
‫می شوند‪ .‬این به این معنی است که وقوع پرش خطلوله را تخلیه میکند و تعدادی از سیکلهای مفید از دست‬
‫میرود‪.‬‬

‫‪Ib+k-1‬‬ ‫‪Ib+k-2‬‬ ‫…‬ ‫‪Ib+2‬‬ ‫‪Ib+1‬‬ ‫‪Ib‬‬


‫‪Ƭ‬‬
‫(الف) یک خطلوله ‪ k‬مرحلهای‬

‫جریان دستورالعمل اصلی‬ ‫پرش اتفاق میافتد‬

‫‪…....‬‬ ‫‪Ib+k-1 …….. Ib+2 Ib+1 Ib‬‬


‫‪..‬‬
‫یک اسالت تأخیر با طول ‪k-1‬‬ ‫‪Ib=Branch taken‬‬
‫‪It= branch target‬‬
‫‪K= No. of pipeline stage‬‬
‫)‪Ƭ=clock cycle (stage delay‬‬
‫‪ B=dlay slot size‬مقصد پرش‬

‫جریان جدید دستورالعمل‬ ‫‪….…….. It+2 It+1 It ..‬‬


‫(ب) یک رشته دستورالعمل شامل یک ‪.‬وقوع پرش‬
‫شکل ‪ :26-6‬تصمیمگیری یک وقوع پرش در مرحله آخر از یک خطلوله دستورالعمل باعث میشود ‪ b≤k-1‬دستور قبالً بار شده از خطلوله تخلیه شوند‪.‬‬

‫‪1‬‬
‫‪Branch taken‬‬
‫‪2‬‬
‫‪Branch target‬‬
‫‪3‬‬
‫‪Delay slot‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪334‬‬

‫این اصطالحات در شکل ‪ 26-6‬نشان داده شده است که یک وقوع پرش باعث میشود ‪ Ib+1‬تا ‪ Ib+k-1‬از خطلوله‬
‫تخلیه شوند‪ .‬اجازه دهید ‪ p‬احتمال وجود یک دستور پرش در یک رشته دستورالعمل نوعی باشد و ‪ q‬احتمال اجرای‬
‫موفق دستور پرش شرطی باشد‪ .‬مقادیر رایج ‪ p=20%‬و ‪ q=60%‬در بعضی برنامهها مشاهده شده است‪.‬‬

‫هزینه پرداخت شده با پرش برابر ‪ pqnbƬ‬میباشد زیرا هر وقوع پرش هزینه ‪ bƬ‬سیکل خطلوله اضافی دارد‪.‬‬
‫براساس معادله ‪ ،4-6‬زمان کل اجرای ‪ n‬دستور با در نظر گرفتن اثر پرش بصورت زیر است‪:‬‬
‫‪Teff=kƬ+(n-1)Ƭ+pqnbƬ‬‬
‫با اصالح معادله ‪ ،9-6‬توان عملیاتی مؤثر خطلوله با تأثیر پرش را بصورت زیر تعریف میکنیم‪:‬‬
‫𝑛‬ ‫𝑓𝑛‬
‫𝑇 =‪Heff‬‬ ‫𝑏𝑛𝑞𝑝‪= 𝑘+𝑛−1+‬‬ ‫)‪(6-12‬‬
‫𝑓𝑓𝑒‬

‫وقتی ∞→‪ n‬کران باالی توان عملیاتی مؤثر وقتی ‪ b=k-1‬میباشد برابر است با‪:‬‬
‫∗‬ ‫𝑓‬
‫𝑓𝑓𝑒𝐻‬ ‫‪= 𝑝𝑞(𝑘−1)+1‬‬ ‫)‪(6-13‬‬

‫وقتی ‪( p=q=0‬پرش نداشته باشیم)‪ ،‬کران فوق به توان عملیاتی ماکزیمم ‪ f=1/Ƭ‬میرسد که مشابه معادله (‪-6‬‬
‫‪ )2‬است‪ .‬فرض کنید ‪ p=0.2‬و ‪ q=0.6‬و ‪ .b=k-1=7‬فاکتور کاهش کارایی را بصورت زیر تعریف میکنیم‪:‬‬
‫∗‬
‫𝑓𝑓𝑒𝐻‪𝑓−‬‬ ‫‪1‬‬ ‫)‪𝑝𝑞(𝑘−1‬‬ ‫‪0.84‬‬
‫=𝐷‬ ‫‪= 1 − 𝑝𝑞(𝑘−1)+1 = 𝑝𝑞(𝑘−1)+1 = 1.84 = 0.46‬‬ ‫)‪(6-14‬‬
‫𝑓‬

‫آنالیز فوق نشان میدهد که کارایی خطلوله با پرش وقتیکه رشته دستورالعمل به اندازه کافی بزرگ است به اندازه‬
‫‪ 46٪‬کاهش پیدا میکند‪ .‬این تجزیه تحلیل‪ ،‬درجه تنزل کارایی موجب شده توسط پرش در یک خطلوله دستورالعمل‬
‫را نشان میدهد‪.‬‬

‫پیشبینی پرش‪ :‬براساس انواع کد پرش بصورت ایستا یا براساس تاریخچه پرش در طول اجرای برنامه میتوان‬
‫وقوع پرش را پیشبینی کرد‪ .‬احتمال پرش نسبت به نوع دستور پرش خاص میتواند برای پیشبینی پرش استفاده‬
‫شود‪ .‬این نیازمند جمع آوری فرکانس و احتمال وقوع پرش و انواع پرش در بین تعداد زیادی ردیابی برنامه است‪.‬‬
‫البته چنین راهبرد ایستایی ممکن است همیشه دقیق نباشد‪.‬‬

‫اغلب پیشبینی ایستا بصورت سخت افزاری پیادهسازی میشود‪ .‬براساس تجربههای قبلی‪ ،‬بهترین کارایی با پیش‪-‬‬
‫بینی وقوع پرش بدست میآید‪ .‬این نتیجه از این حقیقت است که اکثر دستورات پرش شرطی در اجرای برنامه واقع‬
‫میشوند‪ .‬پیشبینی پرش ایستا که بصورت سخت افزاری پیادهسازی شده است قابل تغییر نیست اما میتوان‬
‫شماتیک را طوری اصالح کرد تا به برنامه نویس یا کامپایلر اجازه انتخاب جهت هر پرش در یک پیشبینی شبه‬
‫ایستا داده شود‪.‬‬
‫‪| 335‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫یک راهبرد پرش پویا از تاریخچه اخیر پرش برای پیشبینی اینکه چه موقع پرش در مرحله بعدی واقع میشود یا‬
‫نه استفاده میکند‪ .‬البته برای دقیق بودن پیشبینی میتوانیم از کل تاریخچه پرش استفاده کنیم‪ .‬پیادهسازی کل‬
‫تاریخچه غیر عملی است و بنابراین همانطور که در شکل ‪ 27-6‬نشان داده شده است‪ ،‬اکثراً پیشبینی پرش پویا به‬
‫تاریخچه اخیر محدود میشود‪.‬‬

‫‪ )1992( Cargon‬راهبردهای پرش پویا را در سه کالس عمده دسته بندی کرده است‪ .‬کالس اول جهت پرش را‬
‫براساس اطالعات پیدا شده در مرحله دیکد پیشبینی میکند‪ .‬کالس دوم از یک حافظه نهان استفاده میکند تا‬
‫آدرسهای مقصد را در مرحلهای که آدرس مؤثر مقصد پرش محاسبه میشود ذخیره کند‪ .‬کالس سوم از یک حافظه‬
‫نهان استفاده میکند تا دستورات مقصد را در مرحله برداشت ذخیره کند‪ .‬همه پیشبینیهای پویا بطور پویا وقتیکه‬
‫برنامه اجرا میشود تنظیم میشوند‪.‬‬

‫پیش بینی پرش پویا نیازمند سخت افزار اضافی برای ردیابی رفتار گذشته دستورات پرش در زمان اجرا میباشد‪.‬‬
‫میزان تاریخچه ضبط شده باید کوچک باشد‪ .‬در غیر اینصورت پیادهسازی منطق پیشبینی گران تمام میشود‪.‬‬

‫‪ )1984( Lee, Smith‬استفاده از یک بافر مقصد پرش (‪ )BTB‬برای پیادهسازی پیشبینی پرش را نشان دادهاند‬
‫(شکل ‪(27-6‬الف))‪ BTB .‬برای نگهداری اطالعات پرش اخیر شامل آدرس مقصد پرش استفاده شده‪ ،‬میباشد‪.‬‬
‫آدرس دستور پرش‪ ،‬ورودی ‪ BTB‬را تعیین مکان میکند‪.‬‬

‫به عنوان مثال‪ ،‬دیاگرام انتقال حالت (شکل ‪(27-6‬ب)) توسط لی و اسمیت برای ردگیری دو پرش اخیر در یک‬
‫برنامه داده شده‪ ،‬نشان داده شده است‪ .‬ورودی ‪ BTB‬شامل اطالعات ردیابی میباشد‪ .‬اطالعات پیشبینی برای‬
‫تکمیل پرش جاری بروز میشود‪.‬‬

‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬


‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬

‫آدرس مقصد پرش آمار پیشبینی پرش آدرس دستور پرش‬


‫(الف) سازمان بافر مقصد پرش‬
‫‪N‬‬
‫‪NN‬‬ ‫‪T‬‬ ‫‪NT‬‬ ‫‪T=branch Taken‬‬
‫‪N= not-taken branch‬‬
‫‪N‬‬
‫‪NN=last two branches not taken‬‬
‫‪N‬‬ ‫‪T‬‬ ‫‪NT= Not taken branch and previous taken‬‬
‫‪T‬‬
‫‪TN= last branch taken and previous not taken‬‬
‫‪TT= both last two brances taken‬‬
‫‪TN‬‬ ‫‪TT‬‬ ‫‪T‬‬
‫‪N‬‬

‫(ب) یک دیاگرام حالت نوعی‬


‫شکل ‪ :27-6‬بافر تاریخچه پرش و دیاگرام حالت استفاده شده برای پیشبینی پرش پویا‬
‫کانون نشر علوم‬ ‫|‬ ‫‪336‬‬

‫‪ BTB‬می تواند طوری توسعه داده شود تا هم آدرس مقصد پرش را و همچنین دستور مقصد و چند دستور بعد از‬
‫آن را به منظور تأخیر صفر در تبدیل پرشهای شرطی به پرشهای غیرشرطی ذخیره کند‪ .‬برچسبهای وقوع (‪)T‬‬
‫و عدم وقوع (‪ )N‬در دیاگرام حالت مرتبط با رفتار برنامه واقعی میباشد‪ .‬برنامههای مختلف ممکن است از دیاگرام‪-‬‬
‫های حالت متفاوتی که بطور پویا براساس رخدادهای تاریخی برنامه بروز میشوند‪ ،‬استفاده کنند‪.‬‬

‫پرشهای تأخیر داده شده‪ :‬با آزمایش هزینه پرش‪ ،‬میفهمیم که اگر اسالت تأخیر بتواند کوچک شود یا به‬
‫هزینه صفر حداقل شود‪ ،‬هزینه پرش میتواند بطور چشمگیری کاهش داده شود‪ .‬همانطور که در شکل ‪ 26-6‬نشان‬
‫داده شده است‪ ،‬هدف پرشهای تأخیر داده شده رسیدن به این کاهش است‪.‬‬

‫ایده اولیه کاهش هزینه پرش با کد کردن ریزدستورات بود‪ .‬یک پرش تأخیر داده شده با ‪ d‬سیکل اجازه میدهد‬
‫حداکثر ‪ d-1‬دستور مفید بعد از وقوع پرش اجرا شوند‪ .‬اجرای این دستورات باید مستقل از خروجی دستور پرش‬
‫باشد‪ .‬در غیر اینصورت هزینه ‪ 0‬برای پرش بدست نمیآید‪.‬‬

‫این روش مشابه روش استفاده شده برای درهمقفلی نرم افزاری میباشد‪ .‬میتوان از ‪ NOP‬به عنوان پرکننده‬
‫درصورت نیاز استفاده کرد‪ .‬بر اساس بعضی نتایج ردیابی برنامه‪ ،‬احتمال انتقال یک دستور (‪ d=2‬در شکل ‪-6‬‬
‫‪(28‬الف)) به داخل اسالت تأخیر بیشتر از ‪ 0.6‬است و برای انتقال دو دستور (شکل ‪(28-6‬ب) و ‪ )d=3‬حدود ‪0.2‬‬
‫است و برای انتقال ‪ 3‬دستور (شکل ‪(28-6‬ج) و ‪ )d=4‬کمتر از ‪ 0.1‬است‪.‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫‪Ib‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬

‫یک دستور تأخیر‬ ‫‪I1‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬


‫‪It‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬
‫(الف) یک پرش تأخیر داده شده برای ‪ 2‬سیکل وقتیکه شرط پرش در مرحله دیکد مشخص میشود‪.‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬


‫‪Ib‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬
‫‪I1‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬
‫دو دستور تأخیر‬
‫‪I2‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬
‫‪It‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬

‫(ب) یک پرش تأخیر داده شده برای ‪ 3‬سیکل وقتیکه شرط پرش درمرحله اجرا مشخص میشود‪.‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬


‫‪Ib‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬
‫‪I1‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬

‫سه دستور تأخیر‬ ‫‪I2‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬


‫‪I3‬‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬
‫‪ It‬مقصد‬ ‫‪f‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪s‬‬

‫(ج) یک پرش تأخیر داده شده برای ‪ 4‬سیکل وقتیکه شرط پرش در مرحله ‪ store‬مشخص میشود‪.‬‬
‫شکل ‪ :28-6‬مفهوم پرش تأخیر داده شده با انتقال دستورات مستقل یا پرکننده ‪ NOP‬به داخل اسالت تأخیر از یک خطلوله ‪ 4‬مرحلهای‬
‫‪| 337‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫مثال ‪ :14-6‬یک پرش تأخیر داده شده با انتقال کد به داخل اسالت تأخیر‬

‫همانطور که در شکل ‪ 29-6‬نشان داده شده است میتوان از انتقال کد در بین پرشها برای رسیدن به پرش تأخیر‬
‫داده شده استفاده کرد‪ .‬اجرای یک قطعه کد در شکل ‪(29-6‬الف) را در نظر بگیرید‪ .‬برنامه اصلی با انتقال مفید‬
‫دستور ‪ I1‬به داخل اسالت تأخیر بعد از دستور پرش ‪ I3‬اصالح شده است‪ .‬با انجام این کار‪ ،‬دستورات ‪I1‬و ‪ I4‬و ‪I5‬‬
‫بدون توجه به خروجی پرش اجرا میشوند‪.‬‬
‫در حالت عدم وقوع پرش‪ ،‬اجرای برنامه اصالح شده نتایج مشابهی با برنامه اصلی تولید میکند‪ .‬در حالتیکه پرش‬
‫واقع شود‪ ،‬اجرای دستورات تأخیر داده شده ‪ I1‬و ‪ I5‬هنوز الزم هستند‪ .‬فقط یک پالس در اجرای دستور ‪ I4‬که نیازی‬
‫نیست تلف می شود‪ .‬بنابراین در این مثال اسالت تأخیر برای عدم وقوع پرش به صفر و در صورت وقوع پرش به‬
‫یک کاهش داده میشود‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪I1: Load R1,A‬‬ ‫‪I2: Dec R3,1‬‬
‫‪I2: Dec R3,1‬‬ ‫‪I3: Brzero R3,I5‬‬
‫‪I3: Brzero R3,I5‬‬ ‫‪I1: Load R1,A‬‬
‫‪I4: Add R2,R4‬‬ ‫‪I4: Add R2,R4‬‬
‫‪I5:sub R5,R6‬‬ ‫‪I5:sub R5,R6‬‬
‫‪I6: Store R5,B‬‬ ‫‪I6: Store R5,B‬‬
‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫‪.‬‬
‫(الف) برنامه اصلی‬ ‫(ب) انتقال ‪ ..‬دستور مفید به داخل اسالت تأخیر‬
‫شکل ‪ : 29-6‬انتقال کد بین یک پرش برای رسیدن به پرش تأخیر داده شده با کاهش هزینه کارایی خطلوله‬

‫در کل‪ ،‬وابستگی داده بین دستورات منتقل شده به پرش و دستورات باقیمانده که زمانبندی میشوند باید تجزیه‬
‫تحلیل شود‪ .‬چون دستورات ‪ I1‬و ‪ I4‬از بقیه دستورات (‪ )I2, I3, I5, I6‬مستقل هستند انتقال آنها به اسالت تأخیر‬
‫مخاطرههای منطقی یا وابستگی داده ایجاد نخواهد کرد‪.‬‬

‫اگر دستور مفیدی پیدا نشود‪ ،‬گاهی اوقات میتوان پرکننده ‪ NOP‬را به اسالت تأخیر اضافه کرد‪ .‬به هر حال‪ ،‬اضافه‬
‫کردن ‪ NOP‬هیچ پالسی را در عمل پرش تأخیر داده شده صرفهجویی نمیکند‪ .‬این نوع پرش تأخیر داده شده در‬
‫اکثر پردازندههای ریسک استفاده میشود‪.‬‬

‫‪ -1-4-3-6‬پیادهسازی روشهای پیشبینی پرش بصورت پویا‬

‫براساس دیاگرام حالت پرش بعدی را پیش بینی میکنیم‪ .‬براساس تعداد حاالت دیاگرام‪ ،‬تعدادی بیت برای پیش‬
‫بینی در نظر میگیریم که برابر با لگاریتم تعداد حاالت میباشد‪ .‬بنابراین برای دو حالت یک بیت برای پیشبینی‬
‫کافیست و برای ‪ 4‬حالت دو بیت مورد نیاز میباشد‪.‬‬

‫الف‪ -‬پیش بینی کننده تک بیتی‪ :‬در حالتی که حاالت دیاگرام دو حالت مثل شکل ‪ 30-6‬دارد یک بیت برای‬
‫پیشبینی مورد نیاز هست‪ .‬وضعیت ‪ Not taken‬را با صفر و ‪ taken‬را با یک نشان میدهیم در این حالت اگر‬
‫کانون نشر علوم‬ ‫|‬ ‫‪338‬‬

‫در ‪ T‬باشیم پیشبینی میکنیم که پرش بعدی نیز ‪ T‬میباشد و اگر در ‪ N‬باشیم پرش بعدی را ‪ N‬پیش بینی‬
‫میکنیم‪.‬‬

‫ب‪ -‬پیشبینی کننده دو بیتی‪ :‬در حالتی که حاالت دیاگرام چهار حالت مثل بخش باالی شکل ‪ 31-6‬دارد دو‬
‫بیت برای پیشبینی مورد نیاز هست‪ .‬در این حالت و در حالت های دیگر با تعداد بیتهای بیشتر برای پیشبینی از‬
‫‪ MSB‬یعنی با ارزشترین بیت برای پیشبینی استفاده میشود‪ .‬در این شکل حاالت ‪ 00‬و ‪ 01‬عدم پرش را پیش‬
‫بینی میکنند و حاالت ‪ 10‬و ‪ 11‬وقوع پرش را پیش بینی میکنند‪ .‬نمای زیبا و واضح از پیشبینی پرش دوسطحی‬
‫دربخش پایین شکل ‪ 31-6‬نشان داده شده است‪.‬‬

‫شکل ‪ : 31-6‬پیشبینی پرش با دو بیت پیشبینی کننده‬

‫ج‪ -‬پیشبینی ترکیبی‪ :‬در این روش پیشبینی کننده دو سطحی میباشد‪ .‬یک ثبات به نام ‪ BHR1‬که مشخص‬
‫کننده آدرس سطح دوم در جدول پیشبینی به نام ‪ PHT2‬میباشد‪ .‬روش پیشبینی براساس مقدار خانه ‪PHT‬‬
‫مشخص میشود‪( .‬شکل ‪)32-6‬‬

‫‪ BHR‬براساس پرشهای اتفاق افتاده مقدار میگیرد هرگاه یک پرش اتفاق بیافتد به آن ‪ 1‬از سمت راست وارد‬
‫میشود و هر وقت پرش اتفاق نیافتد صفر به آن وارد میشود‪ .‬در حقیقت ‪ BHR‬یک ثبات شیفت دهنده میباشد‪.‬‬
‫وقتی پرشی اتفاق بیافتد مقدار خانه قبلی که ‪ BHR‬به آن اشاره میکرد یک واحد اضافه میشود و هر وقت پرش‬
‫اتفاق نیافتد مقدار آن خانه یک واحد کم میشود‪ .‬در شکل ‪ BHR 32-6‬مقدار ‪ 101‬دارد که نشان دهنده ‪taken-‬‬
‫‪ not taken-taken‬در سوابق قبلی میباشد‪ .‬فرض کنید در وضعیت جاری پرش اتفاق نیافتد محتوای‬

‫‪1‬‬
‫‪Branch history register‬‬
‫‪2‬‬
‫‪Pattern history table‬‬
‫‪| 339‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫‪ BHR=010‬و مقدار مکان ‪ 101‬که قبالً ‪ 01‬بود یک واحد کم شده و به ‪ 00‬کاهش مییابد‪ .‬حال اگر در وضعیت‬
‫‪ BHR=101‬پرش اتفاق بیافتد به ‪ BHR‬یک وارد میشود و مقدار ‪ BHR=011‬خواهد شد و محتوای خانه‬
‫‪ 101‬افزایش یافته و ‪ 10‬خواهد شد‪.‬‬

‫‪PHT‬‬
‫‪01‬‬ ‫‪000‬‬
‫‪00‬‬ ‫‪001‬‬
‫‪BHR‬‬ ‫‪010‬‬
‫‪01‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪011‬‬
‫‪10‬‬
‫‪100‬‬
‫‪01‬‬
‫‪101‬‬
‫‪01‬‬
‫‪110‬‬
‫‪11‬‬ ‫‪111‬‬
‫‪10‬‬

‫در کل یک پیشبینی کننده پرش دو سطحی را بصورت )‪ xAy(n‬نشان میدهند که ‪ n‬مشخص کننده تعداد‬
‫بیتهای ‪ BHR‬میباشد و در حقیقت حجم ‪ PHT‬را نیز مشخص میکند که برابر با ‪ 2BHR‬میباشد‪ .‬اما در این‬
‫نمایش ‪ x‬مربوط به ‪ BHR‬و ‪ y‬مربوط به ‪ PHT‬میباشد‪ .‬هر کدام از ‪x‬و ‪ y‬میتوانند مقادیر سراسری (‪ ،)G1‬به‬
‫ازای هر پرش (‪ ،)P2‬یا به ازای هر مجموعه (‪ )S3‬بگیرند‪ .‬بنابراین ترکیبهای زیر برای )‪ xAy(n‬وجود دارند‪:‬‬

‫معنی‬ ‫ترکیب‬
‫)‪ GAG(n‬برای همه دستورات پرش‪ ،‬یک ‪ BHR‬سراسری و یک ‪ PHT‬سراسری داریم‪.‬‬
‫)‪ GAP(n‬یک ‪ BHR‬سراسری و به ازای هر دستور پرش یک ‪ PHT‬داریم‪.‬‬
‫)‪ GAS(n‬یک ‪ BHR‬سراسری و به ازای هر مجموعه دستور پرش یک ‪ PHT‬داریم‪.‬‬
‫)‪ PAG(n‬برای هر پرش یک ‪ BHR‬و یک ‪ PHT‬سراسری داریم‪.‬‬
‫)‪ PAP(n‬برای هر پرش یک ‪ BHR‬و به ازای هر پرش یک ‪ PHT‬داریم‪.‬‬
‫)‪ PAS(n‬برای هر پرش یک ‪ BHR‬و به ازای هر مجموعه دستور پرش یک ‪ PHT‬داریم‪.‬‬
‫)‪ SAG(n‬برای هر مجموعه دستور پرش یک ‪ BHR‬و یک ‪ PHT‬سراسری داریم‪.‬‬
‫)‪ SAP(n‬برای هر مجموعه دستور پرش یک ‪ BHR‬و برای هر دستور پرش یک ‪ PHT‬داریم‪.‬‬
‫)‪ SAS(n‬برای هر مجموعه دستور پرش یک ‪ BHR‬و برای هر مجموعه دستور پرش یک ‪ PHT‬داریم‪.‬‬

‫‪1‬‬
‫‪Global‬‬
‫‪2‬‬
‫‪Per branch‬‬
‫‪3‬‬
‫‪Per Set‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪340‬‬

‫)‪ :GAG(n‬در این نوع پیشبینی کننده یک عدد ‪ n ،BHR‬بیتی و یک عدد ‪ PHT‬سراسری برای همه‬
‫دستورات پرش داریم‪ .‬با توجه به مطالب گفته شده مثال ارائه شده در شکل ‪ 6-32‬از نوع )‪ GAG(3‬میباشد چرا‬
‫که فقط یک ‪ BHR‬سه بیتی و یک ‪ PHT‬برای همه پرشها وجود دارد و هر دو سراسری هستند‪ .‬این نوع‬
‫سادهترین پیشبینی کننده دو سطحی میباشد‪.‬‬

‫)‪ :GAP(n‬در این نوع یک ‪ n ،BHR‬بیتی و به تعداد دستورات پرش ‪ PHT‬داریم و انتخاب ‪ PHT‬براساس‬
‫دستور پرش انجام میشود‪ .‬در شکل ‪ 34-6‬یک پیشبینی کننده از نوع )‪ GAP(3‬که دارای یک ‪ ،BHR‬سه‬
‫بیتی سراسری و چندین ‪ PHT‬برای هر دستور پرش است نشان داده شده است‪ .‬تعداد ‪ PHT‬ها ‪ k‬وابسته به‬
‫تعداد دستورات پرش میباشد و ‪PHT‬ی مد نظر بر اساس آدرس دستور پرش انتخاب میشود‪.‬‬

‫شکل ‪ :34-6‬پیشبینی کننده دو سطحی از نوع )‪ GAP(3‬که یک ‪ BHR‬سراسری به طول سه بیت و به ازای هر دستور پرش یک‬
‫‪ PHT‬داریم‪ PHT .‬براساس آدرس دستور پرش انتخاب میشود‪.‬‬

‫)‪ :PAG(n‬در این نوع پیشبینی کننده به تعداد دستورات پرش ‪n ، BHR‬بیتی داریم و فقط یک ‪PHR‬‬
‫سراسری برای همه دستورات پرش داریم‪ BHR .‬بر اساس آدرس دستور پرش انتخاب میشود‪ .‬در شکل ‪6-35‬‬
‫نمونهای از )‪ PAG(3‬نشان داده شده است که به تعداد دستورات پرش ‪ k‬عدد ‪ BHR‬سه بیتی داریم‪.‬‬
‫‪| 341‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫)‪ :PAP(n‬در این نوع پیشبینی کننده به تعداد دستورات پرش ‪n ،BHR‬بیتی داریم و به تعداد دستورات پرش‬
‫‪ PHT‬داریم‪ BHR .‬و ‪ PHT‬بر اساس آدرس دستور پرش انتخاب میشود‪ .‬یک نوع )‪ PAP(3‬در شکل ‪-6‬‬
‫‪ 36‬نشان داده شده است‪.‬‬

‫این نوع پیشبینی کننده مقرون به صرفه نیست زیرا داشتن ‪ PHT‬به ازای هر دستور پرش هم حجم زیادی حافظه‬
‫میخواهد و هم کند است‪ .‬حد میانه این هست که به ازای مجموعهای از دستوارت پرش یک ‪ PHT‬در نظر بگیریم‪.‬‬

‫شکل ‪ :36-6‬پیشبینی کننده دو سطحی از نوع )‪ PAP(3‬که ‪K‬عدد ‪ BHR‬به طول سه بیت برای هر دستور یکی و ‪ k‬عدد‬
‫‪ PHT‬داریم‪ BHR .‬و ‪ PHT‬براساس آدرس دستور پرش انتخاب میشوند‪.‬‬
‫)‪ :SAS(n‬در این نوع پیشبینی کننده به ازای مجموعه از دستوارت پرش یک ‪ BHR‬و یک ‪ PHT‬داریم‬
‫بنابراین نسبت به ‪ PAP‬مقرون به صرفه تر و سریعتر میباشد‪ .‬شکل ‪ SAS‬مشابه شکل ‪ 6-36‬میباشد با این‬
‫تفاوت که عدد ‪ k‬تعداد دستورات پرش نیست بلکه تعداد مجموعههای دستورات پرش میباشد‪ .‬مثالً اگر ‪ 30‬دستور‬
‫پرش داشته باشیم در نوع ‪ 30 ،PAP‬عدد ‪ BHR‬و ‪ 30‬عدد ‪ PHT‬داریم و اگر به هر شش دستور پرش را یک‬
‫مجموعه در نظر بگیریم ‪ k=30/6=5‬خواهد بود و ‪ 5‬عدد ‪ PHT‬و ‪ BHR‬داریم‪ .‬در ساختار ‪ SAS‬مشکل نام‬
‫عاریتی‪ 1‬داریم چرا که دستورات مختلف از پرشهای مختلف میتوانند یک ‪ PHT‬را دستکاری کنند و تداخل پیش‬
‫خواهد آمد‪ .‬در این نوع ‪ BHR‬بخشی از آدرس را استفاده میکند‪ .‬مشکل دیگری که در پیشبینی کنندهها وجود‬
‫دارد این است که خیلی از الگوها خیلی کم رخ میدهند اما بعضی از الگوها خیلی زیاد رخ میدهند‪ .‬فرض میکنیم‬
‫‪ PC‬شمارنده دستورات پرش باشد برای رفع مشکل نام مستعار از ‪ gshare‬بصورت شکل ‪ 37-6‬استفاده میشود‪.‬‬

‫شکل ‪ :37-6‬تعدادی از بیتهای ‪ PC‬با ‪ xor ،BHR‬میشوند‪ .‬این مدل با تغییر طول در فازهای مختلف کارایی را بهبود میدهد‪.‬‬

‫‪1‬‬
‫‪Aliasing‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪342‬‬

‫‪ Gshare‬به دو روش ثابت و پویا کار میکند‪ .‬در روش ایستا تعداد بیتهایی که با ‪ xor ،BHR‬میشوند ثابت‬
‫میباشد ساختار ایستا در شکل ‪ 38-6‬نشان داده شده است‪ .‬روش ‪ Gshare‬باعث تمایز بین حاالت مختلف‬
‫میشود‪ .‬در روش پویا تعداد بیتهایی که با ‪ xor ،BHR‬میشوند قابل تغییر و قابل برنامهریزی میباشد‪ .‬یکی از‬
‫روشهای پویا ‪ DHLF1‬میباشد که ساختاری به شکل ‪ 6-39‬دارد‪.‬‬

‫شکل ‪ :38-6‬نمونه ای از ‪ gshare‬با طول ثابت‪ :‬در این شکل ‪ 4 BHR‬بیتی میباشد با ‪PC‬ی ‪ 6‬بیتی که به این روش‬
‫خروجی تولید شده به سمت ‪ PHT‬شش بیتی خواهند شد‪ .‬که اندازه ‪ ،PHT‬به جای ‪ 16‬خانه‪64 ،‬بیتی خواهند شد‪.‬‬

‫در روش ‪ DHLF-gshare‬سعی بر این شده است که با یک مدار ساده تعداد بیتهای ‪ xor‬را بصورت متغیر‬
‫قرار دهیم و میزان این بیتها بر اساس یک تاریخچه میباشد‪.‬‬

‫در شکل ‪ 39-6‬حداکثر تعداد ‪ xor‬شش بیت میباشد‪ .‬اگر در این شکل بخواهیم همه شش بیت ‪ xor‬شوند همه‬
‫انتخابهای مالتیپلکسرها (‪ 1‬تا‪ )6‬فعال میشوند‪ .‬در صورتی که بخواهیم ‪ 5‬بیت ‪ xor‬شوند یک تا ‪ 5‬فعال میشود‬
‫و خط شش صفر بوده و بیت صفر ‪ PC‬با صفر ‪ xor‬میشود و بال تغییر میماند‪ .‬همچنین برای اینکه ‪ 4‬بیت ‪xor‬‬
‫شوند خطوط ‪5‬و‪ 6‬مالتی پلکسر غیر فعال شده و بیت های ‪ 0‬و یک ‪ PC‬بال تغییر میمانند‪.‬‬

‫جدول ‪ PHT‬و ‪ BTB‬اندازه بزرگی در حد ‪ L1cache‬دارد که مناسب نیست‪ .‬مثالً در پردازنده ‪AMD k6‬‬
‫اندازه ‪ PHT‬هشت کیلو بایت است‪ .‬و در ‪ AMD Athlon‬اندازه آن را به خاطر مصرف توان به ‪ 2kB‬کاهش‬
‫داد‪.‬‬

‫‪1‬‬
‫‪Dynamic Length History Fit‬‬
‫‪| 343‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫‪DHLR-gshare‬‬

‫‪ -4-6‬طراحی خط لوله ریاضی‪ :‬میتوان از تکنیکهای خطلوله برای افزایش سرعت محاسبات ریاضی عددی‬
‫استفاده کرد‪ .‬ابتدا استانداردها و مفاهیم ریاضی را مرور میکنیم سپس خطلولههای ریاضی با توابع ثابت را مورد‬
‫توجه قرار میدهیم‪.‬‬

‫‪ -1-4-6‬مفاهیم ریاضی کامپیوتر‪ :‬در یک کامپیوتر دیجیتال‪ ،‬ریاضی با دقت ثابت به خاطر استفاده از کلمات‬
‫حافظه با طول ثابت یا ثباتها انجام می شود‪ .‬ریاضی صحیح یا ممیز ثابت محدوده ثابتی از اعداد را که میتوانند‬
‫روی آن عمل کنند ارائه میکنند‪ .‬ریاضی ممیز شناور روی محدوده پویای افزایشی بیشتری عمل میکند‪.‬‬

‫در کامپیوترهای مدرن‪ ،‬عملیات ریاضی ممیز شناور و ممیز ثابت توسط سخت افزارهای جداگانه انجام میشوند‪.‬‬
‫ریزپردازندههای ریسک پیشرفته معموالً برای هر دو عملیات‪ ،‬سخت افزاری روی یک تراشه دارند‪.‬‬

‫دقت متناهی به این معنی است که اعدادی که از محدوده تجاوز میکنند باید بریده یا گرد شوند تا دقتی بین تعداد‬
‫بیتهای مجاز ایجاد کنند‪ .‬در حالت اعداد ممیز شناور‪ ،‬تجاوز از محدوده نما به معنی شرایط خطا میباشد که به آن‬
‫سرریز یا زیر ریز میگویند‪ .‬انجمن مهندسان برق و الکترونیک ‪ IEEE‬فرمتهای استاندارد برای اعداد اعشاری ‪32‬‬
‫بیتی و ‪ 64‬بیتی توسعه داده است که به استاندارد ‪ IEEE 744‬مشهور است‪ .‬این استاندارد برای اکثر کامپیوترهای‬
‫امروزی استفاده میشود‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪344‬‬

‫عملیات ممیز ثابت‪ :‬اعداد ممیز ثابت بطور داخلی در ماشین به روشهای مقدار‪-‬عالمت‪ ،‬متمم ‪ 1‬و متمم ‪2‬‬
‫نمایش داده میشوند‪ .‬اکثر کامپیوترها از متمم ‪ 2‬به خاطر نمایش منحصر بفرد برای همه اعداد (شامل صفر) استفاده‬
‫میکنند‪ .‬نمایش متمم ‪ 1‬یک صفر دیگری معرفی میکند که به صفر کثیف (‪ )dirty‬مشهور است‪.‬‬

‫جمع‪ ،‬ضرب‪ ،‬تقسیم و تفریق ‪ 4‬عمل اصلی ریاضی هستند‪ .‬برای اعداد ممیز ثابت‪ ،‬جمع و تفریق دو عدد صحیح ‪n‬‬
‫بیتی باعث ایجاد ‪n‬بیت با حداکثر یک بیت نقلی خروجی میشود‪ .‬ضرب دو عدد ‪ n‬بیتی یک نتیجه ‪ 2n‬بیتی تولید‬
‫میکند که ممکن است نیاز به دو کلمه حافظه یا دو ثبات برای نگهداری نتیجه دقت‪-‬کامل داشته باشد‪ .‬تقسیم یک‬
‫عدد ‪ n‬بیتی بر دیگری ممکن است خارج قسمت و باقیمانده بزرگی تولید کند‪ .‬فقط یک نتیجه تخمینی در تقسیم‬
‫ممیز ثابت با گرد کردن یا برش مورد انتظار است‪ .‬به هر حال‪ ،‬ممکن است دقت را با استفاده از یک مقسوم و‬
‫مقسوم علیه ‪ 2n‬بیتی توسعه دهند تا خارج قسمت ‪ 2n‬بیتی را بدست آورند‪.‬‬

‫اعداد ممیز شناور‪ :‬یک عدد ممیز شناور ‪ X‬با یک جفت )‪ (m,e‬نشان داده میشود که ‪ m‬مانتیس (یا کسر) و‬
‫‪ e‬نما با پایه ‪ r‬میباشد‪ .‬مقدار جبری با ‪ X=m×re‬نمایش داده میشود‪ .‬عالمت ‪ X‬میتواند در کسر جا داده شود‪.‬‬

‫مثال ‪ :15-6‬استاندارد ممیز شناور ‪ :IEEE 754‬عدد ممیز شناور ‪ 32‬بیتی در استاندارد ‪ IEEE 754‬بصورت‬
‫زیر تعیین میشود‪.‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪31‬‬
‫‪...‬‬ ‫‪...‬‬

‫عالمت‪s‬‬ ‫نما ‪e‬‬ ‫مانتیس ‪m‬‬


‫پایه در مبنای ‪ 2‬است‪ .‬فیلد نمای ‪ 8‬بیتی ‪ ،e‬کد افزونگی ‪ 127‬را ایجاد میکند‪ .‬محدوده ‪ )-128,127(،e‬میباشد‬
‫که بطور داخلی با )‪ (0,255‬نشان داده میشود‪ .‬عالمت ‪ s‬و فیلد مانتیس ‪ 23‬بیتی یک کسر عدد‪-‬عالمت ‪ 25‬بیتی‬
‫را شکل میدهند که شامل یک بیت ‪ 1‬مخفی یا ضمنی در سمت چپ ممیز باینری میباشد‪ .‬بنابراین مانتیس کامل‬
‫مقدار ‪ 1.m‬را نشان میدهد‪.‬‬

‫این بیت مخفی با عدد ذخیره نمیشود‪ .‬اگر ‪ 0<e<255‬آنگاه یک عدد غیر صفر نرمال شده با مقدار جبری زیر‬
‫نمایش داده میشود‪:‬‬
‫)‪X=(-1)s×2e-127×(1.m) (6-15‬‬
‫وقتیکه ‪ e=255‬و ‪ ،m#0‬عدم وجود عدد )‪ (NaN‬نمایش داده میشود‪NaN .‬ها میتوانند با تقسیم صفر بر‬
‫صفر یا مجذور یک عدد منفی یا سایر حاالت نامعین ایجاد شوند‪ .‬وقتیکه ‪ e=255‬و ‪ m=0‬عدد بینهایت ‪(-‬‬
‫∞‪ 1)s‬نمایش داده میشود‪ .‬نکته اینکه ∞‪ -‬و ∞‪ +‬بطور متفاوت نمایش داده میشوند‪.‬‬

‫وقتیکه ‪ e=0‬و‪ m#0‬عدد نمایش داده شده )‪ X=(-1)s2-126(0.m‬میباشد‪ .‬وقتی ‪ e=0‬و ‪ m=0‬یک صفر‬
‫بصورت ‪ (-1)s0‬نشان داده میشود‪ .‬بنابراین ‪ -0‬و ‪ +0‬داریم‪.‬‬
‫‪| 345‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫یک عدد ممیز شناور (با دقت مضاعف) ‪ 64‬بیتی بطور مشابه با یک کد افزونگی ‪ 1023‬در نما تعریف میشود و فیلد‬
‫مانتیس ‪ 52‬بیتی است‪ .‬عددی که مخالف صفر‪ ،‬متناهی‪ ،‬غیر ‪ NaN‬و نرمال شده است مقدار زیر را دارد‪:‬‬
‫)‪X=(-1) ×2e-1023×(1.m) (6-16‬‬
‫‪s‬‬

‫قوانین خاصی در استاندارد برای راهاندازی شرایط سرریز و زیر ریز وجود دارد‪ .‬جزئیات را در استانداردهای ‪IEEE‬‬
‫مشاهده کنید‪.‬‬

‫عملیات ممیز شناور‪ :‬چهار عملیات ریاضی اصلی برای یک زوج عدد ممیز شناور که بصورت )‪ X(mx,ex‬و‬
‫)‪ Y=(my,ey‬نشان داده میشوند‪ ،‬بصورت زیر تعریف میشوند‪ .‬برای وضوح فرض میکنیم ‪ ex≤ey‬و پایه ‪r=2‬‬
‫است‪.‬‬
‫‪X+Y=(mx×2ex-ey +my)×2ey‬‬ ‫)‪(6-17‬‬
‫‪X-Y=(mx×2ex-ey -my)×2ey‬‬ ‫)‪(6-18‬‬
‫‪X×Y=(mx×my)×2ex+ey‬‬ ‫)‪(6-19‬‬
‫‪X÷Y=(mx÷my)×2ex-ey‬‬ ‫)‪(6-20‬‬
‫معادالت فوق تعداد عملیات ریاضی در هر تابع ممیز شناور را بوضوح تعیین میکنند‪ .‬این عملیات میتوانند به دو‬
‫نیمه تقسیم شوند‪ :‬نیمه اول برای عملیات نما مثل مقایسه مقادیر نسبی آنها یا جمع‪/‬تفریق آنها‪ ،‬نیمه دیگر برای‬
‫عملیات مانتیس شامل ‪ 4‬نوع عمل ممیز شناور میباشد‪.‬‬

‫واحدهای ممیز شناور برای پیادهسازی خطلوله ایدهآل هستند‪ .‬مقدار سخت افزارهای مورد نیاز برای دو نیمه عملیات‪،‬‬
‫دو برابر سخت افزارهای مورد نیاز برای واحد ممیز ثابت میباشد‪ .‬عملیات شیفت ریاضی برای برابر کردن دو نما‬
‫قبل از اینکه مانتیسهای آنها با هم جمع یا تفریق شوند مورد نیاز است‪ .‬شیفت کسر ‪ m‬به اندازه ‪ k‬به سمت راست‬
‫برابر با ‪ m×2-k‬میباشد و شیفت به اندازه ‪ k‬به چپ برابر با ‪ m×2k‬میباشد‪ .‬همچنین نرمال کردن یک عدد ممیز‬
‫شناور نیازمند شیفت به چپ میباشد‪.‬‬

‫توابع مقدماتی‪ :‬این توابع شامل توابع مثلثاتی‪ ،ex ،‬لگاریتم و سایر توابع غیرجبری میباشند‪ .‬چندجملهایهای‬
‫بریده شده یا سریهای توانی میتوانند برای ارزیابی این توابع مثل ‪، ∑ x ،tan-1y ،coshx ،ex ،Lnx ،sinx‬‬
‫‪ x3‬و غیره استفاده شوند‪ .‬برای این توابع سخت افزارهای خاصی نیز طراحی شده است‪.‬‬

‫نکته اینکه واحدهای ریاضی کامپیوتر را هم میتوان بصورت سخت افزاری هم بصورت جدول جستجو با استفاده‬
‫از حافظه های ‪ RAM‬و ‪ ROM‬پیاده سازی کرد‪ .‬ثابتهایی که بطور متناوب استفاده میشوند و مقادیر توابع خاص‬
‫میتوانند به سادگی با جدول جستجو تولید شوند‪ .‬از تابع هش میتوان برای جستجوی سریع به این جداول استفاده‬
‫کرد‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪346‬‬

‫‪ -2-4-6‬خط لوله های ریاضی ایستا‬

‫اکثر خطلولههای ریاضی برای انجام توابع ثابت طراحی شدهاند‪ .‬این ‪ALU‬ها عملیات ممیز ثابت و ممیز شناور را‬
‫بطور مجزا انجام میدهند‪ .‬به واحد ممیز ثابت‪ ،‬واحد صحیح نیز میگویند‪ .‬واحد ممیز شناور به عنوان قسمتی از‬
‫پردازنده مرکزی یا کمک پردازنده مجزا ساخته میشود‪.‬‬

‫این واحدهای ریاضی عملیات اسکالر شامل یک زوج عملوند را در یک لحظه انجام میدهند‪ .‬خطلوله در خطلولههای‬
‫ریاضی اسکالر با حلقههای نرم افزاری کنترل میشوند‪ .‬واحدهای ریاضی برداری میتوانند مستقیماً با سخت افزار‬
‫خطلوله تحت کنترل سخت افزار یا میانافزار طراحی شوند‪.‬‬

‫خطلولههای ریاضی برداری و اسکالر به طور عمده در فایلهای ثبات استفاده شده و مکانیزم کنترل آنها با هم‬
‫متفاوتند‪ .‬خطلولههای سخت افزار برداری اغلب به عنوان انتخابهای افزایشی‪ 1‬به یک پردازنده اسکالر یا یک‬
‫پردازنده الحاقی راهاندازی شده با یک پردازنده کنترلی ساخته میشوند‪ .‬هر دو پردازندههای برداری و اسکالر در‬
‫سوپرکامپیوترها استفاده میشوند‪.‬‬

‫مراحل خطلوله ریاضی‪ :‬براساس تابع پیاده سازی شده‪ ،‬مراحل خطلوله مختلف در یک واحد ریاضی نیازمند‬
‫منطق سخت افزار مختلف می باشند‪ .‬چون همه عملیات ریاضی (مثل جمع‪ ،‬تفریق‪ ،‬ضرب‪ ،‬تقسیم‪ ،‬مربع‪ ،‬مجذور‪،‬‬
‫لگاریتم و غیره) میتوانند با عملیات پایه جمع و تفریق پیادهسازی شوند‪ ،‬مراحل ریاضی هسته‪ ،‬نیازمند نوعی‬
‫سختافزار جمع یا شیفت میباشند‪.‬‬

‫به عنوان مثال‪ ،‬یک جمعکننده ممیز شناور سه مرحلهای دارد‪ .‬مرحله اول مقایسه نما و نرمال سازی را انجام میدهد‬
‫که توسط یک جمع کننده صحیح و یک منطق شیفت پیادهسازی میشود‪ .‬مرحله دوم مانتیسها را با استفاده از‬
‫یک جمعکننده با پیشبینی نقلی سرعت باال انجام میدهد و مرحله سوم مانتیسها را نرمال میکند و نما را مجدداً‬
‫مقدار دهی میکند و این عمل را با استفاده از یک شیفت دهنده و یک منطق جمع انجام میدهد‪.‬‬

‫شیفتهای منطقی و ریاضی به سادگی با ثباتهای شیفت دهنده پیادهسازی میشوند‪ .‬جمع سرعت‪-‬باال با استفاده‬
‫از جمع کننده با انتشار نقلی (‪ )CPA2‬میباشد که دو عدد را جمع میکند و یک جمع ریاضی را همانطور که در‬
‫شکل ‪(40-6‬الف) نشان داده شده است تولید میکند‪ .‬همچنین این جمع را میتوان با استفاده از یک جمع کننده‬
‫ذخیره نقلی (‪ )CSA3‬که سه ورودی را جمع میکند و یک خروجی جمع و یک خروجی نقلی را همانطور که در‬
‫شکل ‪(40-6‬ب) نشان داده است تولید میکند‪ ،‬انجام داد‪.‬‬

‫‪1‬‬
‫‪add-on‬‬
‫‪2‬‬
‫‪Carry propagate adder‬‬
‫‪3‬‬
‫‪Carry save adder‬‬
‫‪| 347‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫در یک ‪ ،CPA‬نقلیهای تولید شده در اعداد متوالی مجاز به انتشار از انتهای پایین به انتهای باال با استفاده از انتشار‬
‫نقلی موجی‪ 1‬یا سایر تکنیکهای پیشبینی نقلی میباشند‪.‬‬
‫در یک ‪ ،CSA‬نقلیها مجاز به انتشار نیستند در عوض در یک بردار نقلی ذخیره میشوند‪ .‬در کل‪ ،‬یک ‪CSA‬ی‬
‫‪n‬بیتی بصورت زیر تعیین میشود‪ :‬اجازه دهید ‪ X,Y,Z‬سه عدد ورودی ‪n‬بیتی باشد که با ‪X=(xn-1, xn-2 ,…,‬‬
‫)‪ x1 ,x0‬نشان داده میشوند‪ CSA .‬عملیات بیتی را بطور همزمان روی همه ستونهای اعداد انجام میدهد تا دو‬
‫)‪ C=(Cn,Cn-1,…,C1,0‬نشان داده‬ ‫عدد خروجی ‪ n‬بیتی تولید کند که با )‪ Sb=(0,Sn-1,Sn-2,…,S1,S0‬و‬
‫میشوند‪.‬‬

‫نکته اینکه بیت سمت چپ از جمع بیتی ‪ Sb‬همیشه صفر است و بیت انتهای راست از بردار نقلی ‪ C‬همیشه صفر‬
‫است‪ .‬روابط ورودی‪-‬خروجی بصورت زیر بیان میشوند‪:‬‬

‫)‪Si=xi⊕yi⊕zi , Ci+1=xiyi v yizi v zixi for i=0,1,2,…,n-1 (6-21‬‬


‫عالمت ⊕ به معنی ‪ xor‬و ‪ v‬نشان دهنده ‪ or‬منطقی است‪ .‬حاصل ‪ X+Y+Z‬با جمع ‪ Sb+C‬توسط یک ‪CPA‬‬
‫بدست میآید‪.‬‬
‫‪X‬‬ ‫‪Y‬‬ ‫‪Z‬‬
‫‪n‬‬ ‫‪n‬‬ ‫‪B‬‬ ‫‪n‬‬ ‫‪n‬‬ ‫‪n‬‬
‫‪A‬‬ ‫‪X=001011‬‬
‫مثال ‪n=4‬‬ ‫‪Y=010101‬‬
‫‪A=1011‬‬ ‫‪CSA‬‬ ‫‪Z=111101‬‬
‫‪+B=0111‬‬ ‫‪CPA‬‬ ‫‪Sb=0100011‬‬
‫‪S=10010=A+B‬‬ ‫‪n+1‬‬ ‫‪+C=0111010‬‬
‫‪n+1‬‬
‫‪n‬‬ ‫‪S= 1011101=Sb+C=X+Y+Z‬‬
‫‪C‬‬ ‫‪Sb‬‬
‫‪Cout S=sum‬‬ ‫(بردار نقلی)‬ ‫(جمع بیتی)‬

‫(الف) یک جمع کننده ‪n‬بیتی با انتشار نقلی (‪ )CPA‬که یا انتشار‬ ‫(ب) یک جمع کننده ذخیره نقلی ‪n‬بیتی که ‪ Sb‬جمع بیتی ‪ Z,Y,X‬می‪-‬‬
‫نقلی را اجازه میدهد یا از تکنیک پیشبینی نقلی استفاده میکند‪.‬‬ ‫باشد و ‪ C‬بردار نقلی تولید شده بدون انتشار ‪ carry‬بین اعداد میباشد‪.‬‬
‫شکل ‪ :40-6‬تفاوت بین جمع کننده با انتشار نقلی و جمع کننده ذخیره نقلی‪.‬‬

‫طراحی خطلوله ضرب‪ :‬ضرب دو عدد صحیح ‪ 8‬بیتی ‪ A×B=P‬را در نظر بگیرید که ‪ P‬ضرب ‪ 16‬بیتی با دقت‬
‫مضاعف است‪ .‬این ضرب ممیز ثابت میتواند با جمع ‪ 8‬ضرب جزئی نشان داده شده در زیر بدست آید‪:‬‬
‫‪1 0 1 1 0 1 0 1=A‬‬
‫‪P=A×B=P0+P1+P2+….+P7‬‬ ‫‪×)1 0 0 1 0 0 1 1=B‬‬
‫‪1 0 1 1 0 1 0 1=P0‬‬
‫‪1 0 1 1 0 1 0 1 0=P1‬‬
‫‪0 0 0 0 0 0 0 0 0 0=P2‬‬
‫‪0 0 0 0 0 0 0 0 0 0 0=P3‬‬
‫‪1 0 1 1 0 1 0 1 0 0 0 0=P4‬‬
‫‪0 0 0 0 0 0 0 0 0 0 0 0 0=P5‬‬
‫‪0 0 0 0 0 0 0 0 0 0 0 0 0 0=P6‬‬
‫‪1 0 1 1 0 1 0 1 0 0 0 0 0 0 0=P7‬‬
‫‪1‬‬
‫‪ripple‬‬ ‫‪0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 =P‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪348‬‬

‫ضرب جزئی ‪ Pj‬با ضرب مضروب ‪ A‬در ‪j‬مین بیت ‪ B‬و سپس شیفت نتیجه ‪ j‬بیت به سمت چپ برای‬
‫‪ j=0,1,2,…,7‬بدیت میآید‪ .‬بنابراین ‪ Pj‬دارای طول )‪ (8+j‬میباشد که ‪ j‬بیت صفر در سمت راست دارد‪ .‬جمع‬
‫‪ 8‬ضرب جزئی با درخت واالس از ‪ CSA‬ها با یک ‪ CPA‬در مرحله آخر بدست میآید‪ .‬همانطور که در شکل ‪-6‬‬
‫‪ 41‬نشان داده شده است‪.‬‬
‫‪8‬‬ ‫‪8‬‬

‫‪8‬‬ ‫‪8‬‬ ‫‪CSA= carry save adder‬‬

‫‪S1‬‬ ‫منطق ذخیره مضروب‬ ‫‪CPA=carry propagate adder‬‬

‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11 12‬‬ ‫‪13‬‬ ‫‪ 8‬ضرب جزئئ‬


‫‪14‬‬ ‫‪15‬‬

‫‪8‬‬ ‫‪9 10‬‬ ‫‪11 12‬‬ ‫‪13‬‬


‫‪14‬‬ ‫‪15‬‬
‫‪CSA‬‬ ‫‪CSA‬‬
‫‪S2‬‬
‫‪10‬‬ ‫‪10‬‬ ‫‪13‬‬ ‫‪13‬‬

‫‪CSA‬‬ ‫‪CSA‬‬
‫‪13‬‬ ‫‪13‬‬ ‫‪15‬‬ ‫‪15‬‬

‫‪13‬‬ ‫‪13‬‬ ‫‪15‬‬

‫‪S3‬‬ ‫‪CSA‬‬ ‫‪15‬‬


‫‪15‬‬
‫‪15‬‬
‫‪CSA‬‬
‫‪16‬‬ ‫‪16‬‬

‫‪16‬‬ ‫‪16‬‬
‫‪S4‬‬ ‫‪CPA‬‬
‫‪16‬‬

‫‪16‬‬
‫شکل ‪ :41-6‬یک واحد ضرب برای ضرب ممیز ثابت دو عدد صحیح ‪ 8‬بیتی (اعداد روی هر خط نشان دهنده پهنای خط است)‬

‫مرحله اول ‪ S1‬همه ‪ 8‬ضرب جزئی را تهیه میکند‪ .‬که در محدوده ‪ 8‬بیت تا ‪ 15‬بیت بطور همزمان قرار دارند‪ .‬مرحله‬
‫دوم ‪ S2‬از دو سطح از ‪ 4‬عدد ‪ CSA‬ساخته شده شده است که ‪ 8‬عدد را به ‪ 4‬عدد در محدوده ‪ 13‬تا ‪ 15‬بیت ادغام‬
‫میکند‪ .‬مرحله ‪ S3‬شامل دو ‪ CSA‬است که ‪ 4‬عدد را به دو عدد ‪ 16‬بیتی ادغام میکند‪ .‬مرحله آخر ‪ S4‬یک ‪CPA‬‬
‫است که دو عدد آخر نتیجه نهایی ضرب ‪ P‬را میسازد‪.‬‬

‫برای پهنای ‪ 16‬بیت‪ ،‬تخمین زده میشود که ‪ CPA‬نیاز به ‪ 4‬سطح تأخیر گیت دارد‪ .‬هر سطح از ‪ CSA‬میتواند با‬
‫منطق گیت دو سطحه پیاده سازی شود‪ .‬سطح اول (‪ )S1‬شامل دو سطح گیت است‪ .‬بنابراین همه مراحل خطلوله‬
‫تأخیر برابر دارند‪ .‬تطابق تأخیرهای مرحله برای تعیین تعداد مراحل خطلوله همچنین پالس ساعت (معادله‪)1-6‬‬
‫بحرانی است‪ .‬اگر تأخیر سطح ‪ CPA‬میتوانست بیشتر کاهش داده شود که با یک سطح ‪ CSA‬تطابق پیدا کند‪،‬‬
‫آنگاه خطلوله میتوانست به ‪ 6‬مرحله با نرخ ساعت دو برابر سریعتر تقسیم شود‪.‬‬
‫‪| 349‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫مانتیس‬
‫‪32‬‬ ‫نما‬
‫‪multiplexe‬‬
‫‪r‬‬ ‫‪16‬‬
‫‪64‬‬
‫‪64‬‬
‫ثبات‬ ‫ثبات‬
‫‪64‬‬ ‫افزایش دهنده‬
‫مرحله ‪1‬‬ ‫واحد جمع‬
‫‪17‬‬
‫ثبات‬ ‫ثبات‬

‫فایل ثبات (‪)8‬‬ ‫فایل ثبات‬

‫‪17‬‬
‫ضرب کننده‬
‫‪64 bit ×8bit‬‬
‫ثبات‬
‫‪67‬‬
‫‪mux‬‬
‫‪67‬‬ ‫ثبات‬
‫مرحله ‪2‬‬ ‫واحد جمع ‪67‬‬
‫بیتی‬

‫شیفت دهنده بارل ‪ 67‬بیتی‬

‫ثبات‬
‫مرحله ‪3‬‬ ‫ثبات‬
‫‪67‬‬ ‫افزایش دهنده‬ ‫‪7‬‬
‫‪67‬‬ ‫‪mux‬‬
‫‪17‬‬ ‫‪16‬‬
‫واحد جمع‬
‫ثبات‬
‫ثبات‬

‫شکل ‪ :42-6‬واحد ممیز شناورخطلوله شده پردازنده ‪Motorola MC68040‬‬

‫مثال ‪ :16-6‬واحد ممیز شناور در ‪ :Motorola MC6840‬شکل ‪ 42-6‬طراحی یک واحد ممیز شناور‬
‫خطلوله شده روی تراشه در پردازنده ‪ Motorlla 68040‬را نشان میدهد‪ .‬این خطلوله ریاضی سه مرحله دارد‪.‬‬
‫بخش مانتیس و نما دو خطلوله مجزا هستند‪ .‬بخش مانتیس میتواند عملیات ضرب یا جمع ممیز‪-‬شناور را انجام‬
‫دهد چه با دقت تک (‪ 32‬بیت) یا دقت مضاعف (‪ 64‬بیت)‪.‬‬

‫در بخش مانتیس‪ ،‬مرحله ‪ 1‬عملوندهای ورودی را دریافت میکند و با نتایج محاسباتی برگشت میدهد ثباتهای‬
‫‪ 64‬بیتی در این مرحله استفاده می شوند‪ .‬نکته اینکه همه سه مرحله با دو گذرگاه داده ‪ 64‬بیتی متصل میشوند‪.‬‬
‫مرحله ‪ 2‬شامل ضرب کننده آرایهای (‪ )64×8‬میباشد که باید به طور مکرر استفاده شود تا ضرب و مانتیس را بیرون‬
‫دهد‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪350‬‬

‫جمع کننده ‪ 67‬بیتی جمع‪/‬تفریق دو مانتیس را انجام میدهد‪ .‬شیفت دهنده بارل برای نرمال سازی استفاده میشود‪.‬‬
‫مرحله ‪ 3‬شامل ثبات هایی برای نگهداری نتایج است قبل از اینکه به فایل ثبات در مرحله ‪ 1‬برای استفاده بعدی‬
‫توسط سایر دستورات بار شوند‪.‬‬

‫در طرف نما‪ ،‬یک گذرگاه ‪ 16‬بیتی بین مراحل استفاده میشود‪ .‬مرحله ‪ 1‬یک جمع کننده نما برای مقایسه مقدار دو‬
‫نما دارد‪ .‬نتیجه مرحله ‪ 1‬برای برابرسازی نماها قبل از اینکه جمع مانتیسها بتواند انجام شود‪ ،‬استفاده میشود‪.‬‬
‫بنابراین یک شماره شیفت (از خروجی جمع کننده نما) به شیفت دهنده بارل برای انتساب مانتیس فرستاده میشود‪.‬‬

‫برای نرمال سازی نتیجه نهایی نما نیاز به سازگاری مجدد با استفاده از جمع کننده دیگر در مرحله ‪ 3‬دارد‪ .‬مقدار‬
‫نهایی نمای نتیجه از ثبات مرحله ‪ 3‬به فایل ثبات مرحله ‪ 1‬خورانده میشود و آماده بهرهبرداریهای بعدی است‪.‬‬

‫تقسیم همگرا‪ :‬تقسیم را میتوان با تکرار ضرب انجام داد‪ .‬تقسیم مانتیس به یک روش همگرایی بدست میآید‪.‬‬
‫این تقسیم همگرا خارج قسمت ‪ Q=M/D‬از دو کسر نرمال شده ‪ 0.5≤M<D<1‬را میتوان به روش متمم ‪ 2‬با‬
‫انجام دو رشته از ضربهای زنجیرهای به روش زیر بدست میآورد‪:‬‬
‫𝑘𝑅×⋅⋅⋅× ‪𝑀×𝑅1 ×𝑅2‬‬
‫=𝑄‬ ‫)‪(6-22‬‬
‫𝑘𝑅×⋅⋅⋅× ‪𝐷×𝑅1 ×𝑅2‬‬
‫‪𝑖−1‬‬
‫‪ 𝑅𝑖 = 1 + 𝛿 2‬میباشند‪.‬‬ ‫که مضروبهای متوالی 𝛿 ‪= 2 − 𝐷(𝑖) , 𝑖 = 1,2, … , 𝑘 , 𝐷 = 1 −‬‬
‫هدف انتخاب ‪ Ri‬است بطوریکه مخرج ‪ D(k)=𝐷 × 𝑅1 × 𝑅2 ×⋅⋅⋅× 𝑅𝑘 ⟶ 1‬برای تعداد کافی از ‪ k‬تکرار‬
‫و صورت کسر 𝑄 ⟶ 𝑘𝑅 ×⋅⋅⋅× ‪.𝑀 × 𝑅1 × 𝑅2‬‬
‫‪𝑖−1‬‬
‫نکته اینکه مضروب ‪ Ri‬با پیدا کردن متمم ‪2‬ی ضرب زنجیرهای قبلی ‪𝐷(𝑖) = 𝐷 × 𝑅1 ×⋅⋅⋅× 𝑅𝑖−1 = 1 − 𝛿 2‬‬
‫بدست میآید زیرا ‪ .2-D(i)=Ri‬دلیل اینکه ‪ D(k)→1‬برای ‪ k‬بزرگ این است که‪:‬‬
‫‪𝑖−1‬‬ ‫‪𝑖−1‬‬ ‫𝑖‬
‫‪D(i)=(1- 𝛿)(1+ 𝛿)(1+ 𝛿 2)(1+ 𝛿 4)…(1+𝛿 2‬‬ ‫(…)‪)=(1- 𝛿 2)(1+ 𝛿2)(1+ 𝛿 4‬‬ ‫‪1+𝛿 2‬‬ ‫) ‪)=(1-𝛿 2‬‬
‫)‪for i=1,2,..,k (6-23‬‬
‫𝑖‬
‫چون ‪ 0 ≤ 𝛿 = 1 − 𝐷 ≤ 0.5‬و ‪ 𝛿 2 ⟶ 0‬وقتی ‪ i‬به اندازه کافی بزرگ شود‪ .‬اگر ‪ ،i=k‬آنگاه‬
‫𝑘‬
‫‪ 𝐷(𝑘) = 1 − 𝛿 2 = 1‬برای ‪ k‬بزرگ و نتیجه برابر است با‪:‬‬
‫‪𝑘−1‬‬
‫‪Q=M×(1+ 𝛿)(1+ 𝛿 2)(1+ 𝛿 4)…(1+𝛿 2‬‬ ‫)‬ ‫(‪)6-24‬‬

‫دو رشته فوق از ضربهای زنجیرهای بطور متناوب بین مخرج و صورت در مراحل خطلوله بدست میآید‪ .‬به طور‬
‫خالصه تقسیم با تکرار ضرب بدست میآید‪ .‬بنابراین ضرب و تقسیم میتوانند خطلوله سختافزاری مشترکی را‬
‫استفاده کنند‪.‬‬

‫مثال ‪ :17-6‬طراحی واحد ممیز‪-‬شناور ‪ :IBM 360/Model 91‬در تاریخچه ساخت کامپیوترهای‬
‫علمی مدل‪ 91‬یک رویداد مهم بود‪ .‬بسیاری از خواص طراحی خطلوله معرفی شده در بخشهای قبل در این ماشین‬
‫پیادهسازی شده بود‪ .‬در عمل‪ ،‬ما چگونگی پیادهسازی عملیات جمع و ضرب‪/‬تقسیم ممیز شناور در این ماشین را‬
‫توصیف میکنیم‪.‬‬
‫‪| 351‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫همانطور که در شکل ‪ 43-6‬نشان داده شده است‪ ،‬واحد اجرای ممیز شناور در مدل ‪ 91‬شامل دو خطلوله عملیاتی‬
‫جداگانه است‪ :‬واحد جمع و واحد ضرب‪/‬تقسیم که میتوانند بطور همروند استفاده شوند‪ .‬اولی یک خطلوله دو‬
‫مرحلهای و دومی یک خطلوله ‪ 6‬مرحلهای است‪ .‬یک عملوند ممیز شناور دقت تک ‪ 32‬بیتی است و دقت مضاعف‬
‫‪ 64‬بیتی است‪.‬‬

‫پشته عمل ممیز شناور‪ ،‬نوعی بافر پیشبرداشت است که ‪ 8‬دستور ممیز شناور را برای اجرای متوالی در بین دو‬
‫خطلوله عملیاتی نگه میدارد‪ .‬عملوندهای ورودی ممکن است از واحد حافظه (حافظه اصلی) بیایند و بافرهای ممیز‬
‫شناور برای نگهداری این عملوندها استفاده میشوند‪.‬‬
‫از واحد‬ ‫از واحد‬
‫ذخیره‬ ‫دستورالعمل‬
‫‪1‬‬
‫بافرهای‬ ‫‪2‬‬ ‫‪CDB: common data bus‬‬
‫ممیز‬ ‫‪3‬‬ ‫پشته عمل‬ ‫‪CSA: carry-save adder‬‬
‫شناور‬ ‫‪4‬‬ ‫ممیز شناور‬ ‫‪CPA: carry propagate adder‬‬
‫‪5‬‬ ‫‪RS: reservation station, each identified by a unique tag‬‬
‫)‪(FLB‬‬
‫‪6‬‬

‫بیتهای‬ ‫‪floating‬‬
‫دیکدر‬ ‫‪busy‬‬ ‫تگ ها‬ ‫‪Pt.reg‬‬
‫)‪(FLR‬‬

‫‪CDB‬‬
‫‪RS‬‬ ‫‪X‬‬ ‫‪Y X‬‬ ‫‪Y‬‬ ‫‪X‬‬ ‫‪Y RS‬‬ ‫‪RS‬‬ ‫‪X‬‬ ‫‪Y‬‬ ‫‪X‬‬ ‫‪YRS‬‬
‫)‪(10‬‬ ‫)‪RS (11‬‬ ‫)‪(12‬‬ ‫)‪(8‬‬ ‫)‪(9‬‬

‫منطق ضبط‬
‫واحد جمع‬
‫واحد‬
‫دومرحله خطلوله‬ ‫‪CSA‬‬ ‫‪CSA‬‬ ‫ضرب‪/‬‬
‫تقسیم‬
‫‪ 6‬مرحله‬
‫به واحد ذخیره‬ ‫‪CSA‬‬
‫خطلوله‬

‫‪tag‬‬ ‫‪data‬‬ ‫‪CSA‬‬

‫‪CPA‬‬
‫‪CDB‬‬
‫شکل ‪ :43-6‬واحد ممیز شناور ‪IBM 360 Model 91‬‬

‫سایر عملوندها ممکن است از ثباتهای ممیز شناور بیایند که از طریق یک گذرگاه داده مشترک به گذرگاه خروجی‬
‫متصل شدهاند‪ .‬نتایج از دو واحد عملیاتی میتوانند به حافظه از طریق بافرهای ذخیره داده برگشت داده شوند یا آنها‬
‫ممکن است به ‪ FLR‬یا ایستگاههای رزرواسیون در نقطه ورودی مسیریابی شوند‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪352‬‬

‫واحد جمع اجازه میدهد سه جفت عملوند به سه جفت از ایستگاههای رزرواسیون بار شوند‪ .‬فقط یک زوج در هر‬
‫لحظه استفاده خواهد شد‪ .‬دو زوج دیگر عملوندها را برای استفاده بعدی نگه میدارند‪ .‬استفاده از این واحدهای‬
‫رزرواسیون باعث میشود واحد جمع شبیه سه واحد عملیاتی مجازی رفتار کند‪ .‬به طور مشابه دو زوج در ورودی‬
‫واحد ضرب‪/‬تقسیم باعث میشود شبیه دو واحد مجازی کار کند‪ .‬جلورانی داده داخلی در مدل ‪ 91‬با استفاده از‬
‫تگهای منبع روی همه ایستگاههای رزرواسیون و ثباتها به انجام رسیده است‪ .‬تقسیم در مدل ‪ 91‬بر اساس روش‬
‫همگرایی پیادهسازی شده است‪.‬‬

‫هر منبع از یک عملوند ورودی به طور منحصر بفردی با یک تگ ‪ 4‬بیتی مشخص میشود‪ .‬با استفاده از این تکنیک‬
‫تگ کردن ثبات‪ ،‬عملوندها‪/‬نتایج می توانند مستقیماً در طول واحدهای عملیاتی مجازی عبور کنند‪ .‬این جلورانی به‬
‫طور چشمگیری زمان جریان داده بین آنها را کاهش میدهد‪.‬‬

‫منطق زمانبندی پویا در مدل ‪ 91‬با استفاده از الگوریتم توماسولو برای رفع و رجوع مسأله وابستگی داده ساخته شده‬
‫است‪ .‬واحد جمع یا واحد ضرب‪/‬تقسیم میتوانند یک عمل را با استفاده از عملوندهای یک جفت ایستگاه رزرواسیون‬
‫اجرا کنند‪.‬‬

‫وابستگیهای داده با کپی کردن تگهای منبع وقتیکه منابع مشغول هستند حفظ میشود‪ .‬وقتی داده توسط یک‬
‫منبع تولید شد‪id ،‬یش و دادهاش را روی گذرگاه داده مشترک میگذارد مقصدهای منتظر بطور پیوسته گذرگاه را با‬
‫مشاهده تگ مانیتور میکنند‪.‬‬

‫وقتیکه تگ مقصد تطابق داشت‪ ،‬مقصد داده را از گذرگاه میگیرد‪ .‬سایر انواع الگوریتم توماسولو برای ذخیره سازی‬
‫تگهای منبع بین مقصدها میتوانند ساخته شوند‪ ،‬یا از یک تگ خاص (مثل ‪ )0000‬استفاده کنند که تعیین کند‬
‫بافرها‪/‬ثباتها مشغول نیستند یا از تگهای نگاشت مستقیم استفاده کند تا از سخت افزار انجمنی اجتناب کند‪.‬‬

‫در کنار ‪ CDC 6600/7600 ، IBM 360/370‬نیز این تقسیم همگرا را پیاده کرده است‪ .‬دو سیکل خطلوله‬
‫طول میکشد تا جمع ممیز شناور انجام شود‪ 6 .‬سیکل برای ضرب و ‪ 18‬سیکل برای تقسیم در سیستم ‪IBM/360‬‬
‫مدل ‪ 91‬به خاطر ‪ 5‬تکرار در پردازه تقسیم همگرا‪.‬‬

‫‪ -3-4-6‬خط لوله های ریاضی چندعملکردی‬


‫خطلولههای ریاضی ایستا برای انجام یک تابع ثابت طراحی شدهاند و بنابراین تک عملکردی نامیده میشوند‪.‬‬
‫وقتیکه یک خطلوله می تواند بیشتر از یک تابع را انجام دهد به آن چند عملکردی یا چندتابعی میگویند‪ .‬یک‬
‫خطلوله چند عملکردی میتواند ایستا یا پویا باشد‪ .‬خطلولههای ایستا یک عمل را در هر لحظه انجام میدهند اما‬
‫در زمانهای مختلف میتوانند توابع مختلف را انجام دهند‪ .‬یک خطلوله پویا اجازه میدهد چندین تابع بطور همزمان‬
‫در خطلوله انجام شوند به خاطر اینکه هیچ تداخلی در بهرهوری مشترک مراحل خطلوله وجود ندارد‪ .‬در این بخش‬
‫یک خطلوله چندعملیاتی ایستا را که در کامپیوتر علمی پیشرفته )‪ (ASC/TI‬طراحی شده است را مطالعه میکنیم‪.‬‬
‫‪| 353‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫مثال ‪ :18-6‬طراحی پردازنده ریاضی ‪ :TI/ASC‬همانطور که در شکل ‪ 44-6‬نشان داده شده است‪ ،‬چهار‬
‫واحد خطلوله ریاضی در سیستم ‪ TI/ASC‬ساخته شده است‪ .‬واحد پردازش دستور برداشت و دیکد دستورالعملها‬
‫را راهاندازی میکند‪ .‬تعداد زیادی از ثباتهای کاری در پردازنده وجود دارند که همچنین عملیات واحد بافر و‬
‫واحدهای ریاضی را کنترل میکنند‪.‬‬

‫دو مجموعه از بافرهای عملوند }‪ {X,Y,Z‬و }’‪ {X’,Y’,Z‬در هر واحد ریاضی وجود دارند‪ X’,X,Y’,Y .‬برای‬
‫عملوندهای ورودی استفاده میشوند و ’‪ Z,Z‬برای نتایج خروجی استفاده میشوند‪ .‬نکته اینکه نتایج میانی همچنین‬
‫میتواند از ثباتهای ‪ Z‬به ثباتهای ‪ X‬یا ‪ Y‬مسیردهی شوند‪ .‬هر دوی پردازنده و بافرهای حافظه به حافظه اصلی‬
‫برای دستورات و نتایج‪/‬عملوندها دسترسی دارند‪.‬‬

‫همانطور که در شکل ‪(45-6‬الف) نشان داده شده است‪ ،‬هر واحد خطلوله ریاضی‪ 8 ،‬مرحله دارد‪ PAU .‬یک خطلوله‬
‫چندعملکردی ایستا است که فقط میتواند یک عمل را در لحظه انجام دهد‪ .‬شکل ‪(45-6‬الف) همه اتصاالت بین‬
‫مرحلهای ممکن برای انجام توابع ریاضی‪ ،‬منطقی‪ ،‬شیفت و تبدیل داده را نشان میدهد‪.‬‬

‫واحد‬ ‫‪16‬‬ ‫بافر دستور‬ ‫ثباتهای ایندکس‬

‫پردازش‬ ‫‪16‬‬ ‫ثباتهای پایه‬ ‫ثباتهای پارامتر‬


‫دستور‬ ‫برداری‬
‫‪16‬‬ ‫ثباتهای ریاضی‬

‫هر دو توابع ریاضی ممیز ثابت و ممیز شناور میتوانند توسط این خطلوله انجام شوند‪ PAU .‬همچنین بردار را عالوه‬
‫بر عملیات ریاضی اسکالر پشتیبانی میکند‪ .‬باید بگوییم که توابع مختلف نیازمند مراحل خطلوله و الگوهای اتصالی‬
‫بین مرحلهای مختلفی هستند‬
‫کانون نشر علوم‬ ‫|‬ ‫‪354‬‬
‫‪A,‬‬ ‫‪B‬‬
‫ورودی‬
‫‪S1‬‬ ‫‪S1‬‬
‫تفریق نما‬

‫‪S2‬‬ ‫‪S2‬‬
‫انتساب‬
‫‪S3‬‬ ‫‪S3‬‬
‫جمع کسر‬
‫‪S4‬‬ ‫‪S4‬‬
‫نرمال سازی‬
‫‪S5‬‬ ‫‪S5‬‬
‫ضرب کسر‬

‫‪S6‬‬ ‫‪S6‬‬
‫انباره‬

‫‪S7‬‬ ‫‪S7‬‬
‫خروجی‬

‫‪S8‬‬ ‫‪S8‬‬
‫)‪R=f(A ,B‬‬ ‫𝑛‬
‫‪R=A×B‬‬ ‫𝑖𝐵 𝑖𝐴 ∑ = 𝑅‬
‫(الف) مراحل و اتصاالت خطلوله‬ ‫(ب) ضرب ممیز ثابت‬ ‫‪𝑖=1‬‬
‫(ج) ضرب نقطهای ممیز شناور‬
‫شکل ‪ :45-6‬خطلوله ریاضی ‪ TI‬و اتصاالت بین مرحلهای از دو نمونه تابع‬

‫به عنوان مثال‪ ،‬همانطور که در شکل ‪(45-6‬ب) نشان داده شده است‪ ،‬ضرب ممیز ثابت نیازمند استفاده از فقط‬
‫سگمنتهای ‪ S8, S7, S6,S1‬است‪ .‬به عبارت دیگر تابع ضرب نقطهای ممیز شناور که ضرب نقطهای را بین دو‬
‫بردار انجام میدهد نیازمند استفاده از همه مراحل با اتصاالت پیچیده نشان داده شده در شکل ‪(45-6‬ج) میباشد‪.‬‬
‫این ضرب نقطهای با مجموع رشته ضربهای زیر در خطلوله پیاده میشود‪.‬‬
‫)‪ZAi*Bi+Z (6-25‬‬
‫که عملوندهای متوالی )‪ (Ai,Bi‬از طریق بافرهای ‪ X,Y‬خورانده میشوند و جمع از طریق بافر ‪ Z‬بطور بازگشتی‬
‫انجام میشود‪.‬‬
‫کل خطلوله میتواند ضرب (×) و جمع (‪ )+‬در یک جریان واحد در خطلوله انجام دهد‪ .‬دو سطح از ثباتهای بافر‪،‬‬
‫برداشت و بارکردن عملوندها به یا از ‪ PAU‬را از هم جدا میکنند مثل مفهوم استفاده از زوج بافر در بافر پیشبرداشت‬
‫توصیف شده در شکل ‪ .12-6‬امروزه اکثر سوپرکامپیوترها خطلولههای ریاضی را با توابع خصوصی برای مدارات‬
‫کنترل پیاده میکنند‪.‬‬

‫‪ -5-6‬طراحی سوپراسکالر و سوپرپایپ الین‬


‫در این بخش دو روش معماری برای بهبود کارایی خطلوله را با استفاده از خطلوله اسکالر پایه به عنوان ماشین‬
‫مرجع نشان میدهیم‪ .‬بین دو معماری تقارن وجود دارد‪ .‬محدودیتهای طراحی عملی متناسب با تکنولوژی پیاده‪-‬‬
‫سازی بحث میشوند‪.‬‬

‫پارامترهای طراحی خطلوله‪ :‬بعضی پارامترهای طراحی ماشین پایه اسکالر و ماشینهای سوپراسکالر در جدول‬
‫‪ 6-2‬برای ‪ 4‬نوع پردازنده خطلولهای که در زیر مطالعه میشوند خالصه شده است‪ .‬فرض میکنیم همه خطلولههای‬
‫بحث شده ‪ k‬مرحله دارند‪.‬‬
‫‪| 355‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫فرض میکنیم سیکل خط لوله ماشین اسکالر یک واحد زمانی باشد که به آن سیکل پایه میگوییم‪ .‬نرخ انتشار‬
‫دستور‪ ،‬تأخیر انتشار و تأخیر عمل ساده را در بخش ‪ 1-1-4‬تعریف کردیم‪ .‬موازات سطح دستورالعمل (‪ )ILP1‬حداکثر‬
‫دستوراتی است که میتوانند بطور همزمان در خطلوله اجرا شوند‪.‬‬
‫ماشین سوپرپایپ الین‬ ‫ماشین‬ ‫ماشین‬ ‫ماشین اسکالر‬
‫سوپر اسکالر با درجه‬ ‫سوپرپایپالین با‬ ‫سوپراسکالر با‬ ‫پایه با ‪ k‬مرحله‬ ‫نوع ماشین‬
‫)‪(m,n‬‬ ‫درجه ‪n‬‬ ‫درجه ‪m‬‬ ‫خطلوله‬
‫سیکل خطلوله‬
‫‪1/n‬‬ ‫‪1/n‬‬ ‫‪1‬‬ ‫‪1‬‬
‫ماشین‬
‫نرخ انتشار‬
‫‪m‬‬ ‫‪1‬‬ ‫‪m‬‬ ‫‪1‬‬
‫دستور‬
‫تأخیر انتشار‬
‫‪1/n‬‬ ‫‪1/n‬‬ ‫‪1‬‬ ‫‪1‬‬
‫دستور‬
‫تأخیر عمل‬
‫)‪1=(n.1/n‬‬ ‫)‪1=(n.1/n‬‬ ‫‪1‬‬ ‫‪1‬‬
‫ساده‬
‫‪ ILP‬برای بهره‪-‬‬
‫‪mn‬‬ ‫‪n‬‬ ‫‪m‬‬ ‫‪1‬‬ ‫برداری کامل‬
‫خطلوله‬
‫جدول ‪ :2-6‬پارامترهای طراحی برای پردازندههای خطلوله‬
‫برای ماشین پایه همه پارامترها مقدار ‪ 1‬دارند‪ .‬همه انواع ماشینها متناسب با ماشین پایه طراحی میشوند‪ILP .‬‬
‫برای بهرهبرداری کامل یک ماشین خطلوله مورد نیاز است‪.‬‬

‫نکته اینکه همه زمانها وابسته به سیکل پایه برای ماشین پایه اسکالر است‪.‬‬

‫‪ -1-5-6‬طراحی خطلوله سوپراسکالر‬


‫در زیر ساختار خطلولههای سوپراسکالر‪ ،‬مشکل وابستگی داده‪ ،‬فاکتورهایی که باعث توقف خطلوله میشوند و‬
‫مکانیزمهای انتشار چند دستور برای رسیدن به عملیات خطلوله موازی را مطالعه میکنیم‪ .‬برای یک ماشین‬
‫سوپراسکالر با درجه ‪ m ،m‬دستور در هر سیکل منتشر میشود و ‪ ILP‬به منظور بهرهبرداری کامل از خطلوله باید‬
‫‪ m‬باشد‪ .‬یک ماشین اسکالر را میتوان یک ماشین سوپراسکالر با درجه ‪ 1‬در نظر گرفت‪.‬‬

‫ساختار خطلوله سوپراسکالر‪ :‬در یک پردازنده سوپراسکالر ‪-m‬انتشاره‪ ،‬دیکد دستورالعمل و منابع اجرایی‬
‫افزوده میشوند تا خطلولهای ایجاد کنند که ‪ m‬عمل را بطور همروند اجرا کند‪ .‬در بعضی مراحل خطلوله‪ ،‬واحدهای‬
‫عملیاتی ممکن است توسط چند خطلوله به اشتراک گذاشته شوند‪.‬‬

‫‪1‬‬
‫‪Instruction level parallelism‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪356‬‬

‫این ساختار خطلوله چندگانه منبع‪-‬مشترک در یک مثال طراحی در شکل ‪(46-6‬الف) نشان داده شده است‪ .‬دراین‬
‫طراحی‪ ،‬پردازنده میتواند دو دستور را در هر سیکل منتشر کند اگر تداخل منبع و مشکل وابستگی داده وجود نداشته‬
‫باشد‪ .‬ضرورتاً دو خطلوله در طراحی وجود دارد‪ .‬هر دو خطلوله ‪ 4‬مرحله پردازشی برداشت‪ ،‬دیکد‪ ،‬اجرا و ذخیره‬
‫دارد‪.‬هر خط لوله ضرورتاً واحد برداشت‪ ،‬دیکد‪ ،‬اجرا و ذخیره خودش را دارد‪ .‬دو رشته دستور که در خطلوله جریان‬
‫دارند از یک رشته منبع تک بازیابی میشوند (‪.)I-cache‬‬

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

‫مرحله برداشت‬ ‫مرحله دیکد‬ ‫مرحله اجرا‬


‫از ‪D-cache‬‬ ‫ذخیره (بازپس نویسی)‬
‫ضرب کننده‬

‫‪f1‬‬ ‫‪d1‬‬ ‫‪m1‬‬ ‫‪m2‬‬ ‫‪m3‬‬

‫از ‪I-cache‬‬ ‫جمع کننده‬ ‫‪S1‬‬


‫‪a1‬‬ ‫‪a2‬‬
‫‪f2‬‬ ‫‪d2‬‬
‫منطق‬
‫‪S2‬‬
‫‪e1‬‬
‫‪f3‬‬ ‫‪d3‬‬
‫منطق‬
‫پنجره پیشبینی‬
‫‪e2‬‬

‫(الف) یک پردازنده سوپراسکالر دو خطلولهای با ‪ 4‬واحد عملیاتی در مرحله اجرا و پنجره پیشبینی تولید کننده انتشار خارج از ترتیب‬
‫‪I1. Load R1,A‬‬ ‫‪/R1Memory(A)/‬‬
‫‪I2. Add R2,R1‬‬ ‫‪/R2(R2)+(R1)/‬‬ ‫‪I1‬‬ ‫‪I3‬‬ ‫‪I5‬‬
‫‪I3. Add R3,R4‬‬ ‫‪/R3(R3)+(R4)/‬‬
‫‪I4. Mul R4,R5‬‬ ‫‪/R4(R4)*(R5)/‬‬
‫‪I5. Comp R6‬‬ ‫‪/R6(R6)’/‬‬
‫‪I6. Mul R6,R7‬‬ ‫‪/R6(R6)*(R7)/‬‬ ‫‪I2‬‬ ‫‪I4‬‬ ‫‪I6‬‬

‫(ب) یک برنامه نمونه و گراف وابستگی آن که ‪ I2,I3‬از جمع کننده به طور مشترک استفاده میکنند و ‪ I4,I6‬از ضرب کننده‬
‫مشابه مشترک استفاده میکنند‪.‬‬
‫شکل ‪ :46-6‬یک پردازنده سوپر اسکالر دو انتشاره و یک برنامه نمونه برای اجرا ی موازی‬

‫دو واحد ذخیره (‪ )S2,S1‬بصورت پویا توسط دو خطلوله وابسته به قابل دسترس بودن در یک پالس خاص‪ ،‬استفاده‬
‫میشوند‪ .‬یک پنجره پیشبینی‪ 1‬با واحد برداشت و منطق دیکد خودش وجود دارد‪ .‬این پنجره برای پیشبینی دستور‬
‫در حالت انتشار دستور خارج‪-‬از‪-‬ترتیب به منظور رسیدن به توان عملیاتی بهتری در خطلوله استفاده میشود‪.‬‬

‫‪1‬‬
‫‪Lookahead window‬‬
‫‪| 357‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫زمانبندی همزمان خطلولهها مشکل است‪ ،‬باالخص وقتیکه دستورات از منبع مشابهی بازیابی میشوند‪ .‬باید از‬
‫توقف خطلوله اجتناب کنیم و زمان بیکاری خطلوله را حداقل کنیم‪.‬‬

‫وابستگیهای داده‪ :‬برنامه نمونه شکل ‪(46-6‬ب) را مد نظر قرار دهید‪ .‬گراف وابستگی برای نمایش وابستگی‪-‬‬
‫های بین دستورات رسم شده است‪ .‬زیرا محتوای ثبات در ‪ R1‬توسط ‪ I1‬بار میشود و سپس توسط ‪ I2‬استفاده‬
‫میشود‪ ،‬وابستگی جریان داریم‪.I1→I2 .‬‬

‫چون نتیجه ثبات ‪ R4‬بعد از اجرای ‪ I4‬ممکن است ثبات عملوند ‪ R4‬استفاده شده توسط ‪ I3‬را تحت تأثیر قرار دهد‬
‫ضد وابستگی داریم‪ .‬چون هردوی ‪ I5‬و ‪ I6‬ثبات ‪ R6‬را اصالح میکنند و ‪ R6‬یک عملوند برای ‪ R6‬تهیه میکند‪،‬‬
‫هم وابستگی جریان و هم خروجی داریم‪ .‬همانطور که در گراف وابستگی نشان داده شده است‪.‬‬

‫برای زمانبندی این دستورات در یک خطلوله‪ ،‬این وابستگیهای داده نباید نادیده گرفته شوند در غیراینصورت ممکن‬
‫است نتایج خطادار تولید شوند‪ .‬این وابستگیهای داده توسط یک کامپایلر تشخیص داده میشوند و در زمانبندی‬
‫خطلوله قابل دسترسی اند‪.‬‬

‫توقف خطلوله‪ :‬این مشکلی است که ممکن است بطور خطرناکی بهرهوری خطلوله را کم کند‪ .‬زمانبندی درست‬
‫از توقف خطلوله اجتناب میکند‪ .‬این مشکل هم در پردازندههای اسکالر و هم سوپراسکالر وجود دارد‪ .‬ولی در خطلوله‬
‫سوپراسکالر وخیمتر است‪ .‬توقف می تواند به خاطر وابستگی داده یا تداخل منابع بین دستوراتی که هم اکنون در‬
‫خطلولهاند یا در حال ورود به خطلولهاند ایجاد شود‪ .‬در ادامه مثالی را برای توضیح شرایط تولید کننده توقف خطلوله‬
‫استفاده میکنیم‪.‬‬

‫زمانبندی دو خطلوله دستورالعمل در یک پردازنده سوپراسکالر دو انتشاره را در نظر بگیرید‪ .‬شکل ‪(47-6‬الف) حالت‬
‫بدون وابستگی داده را در سمت چپ و وابستگی جریان ‪ I1→I2‬را در سمت راست نشان میدهد‪ .‬بدون وابستگی‬
‫داده‪ ،‬همه مراحل خطلوله بدون بیکاری بهرهوری میشوند‪.‬‬

‫با وابستگی‪ ،‬دستور ‪I2‬ی وارد شده به خطلوله دوم باید قبل از ورود به مرحله اجرا دو پالس منتظر بماند (اسالتهای‬
‫زمانی سایهدار)‪ .‬این تأخیر ممکن است به دستور بعدی ‪ I4‬که وارد خطلوله میشود تأثیر بگذارد‪.‬‬

‫در شکل ‪(47-6‬ب) تأثیر پرش (دستور ‪ )I2‬را نشان دادهایم‪ .‬یک اسالت تأخیر به طول ‪ 4‬پالس نتیجه یک وقوع‬
‫پرش (‪ )BT‬توسط ‪ I2‬در پالس ‪ 5‬میباشد‪ .‬بنابراین هر دو خطلوله باید قبل از اینکه دستورات مقصد ‪ I3,I4‬وارد‬
‫خطلوله از پالس ‪ 6‬شوند‪ ،‬تخلیه شوند‪ .‬در اینجا پرش تأخیر داده شده یا سایر عملیات ترمیمی واقع نشدهاند‪ .‬در شکل‬
‫‪(6-47‬ج) یک مسأله ترکیبی شامل وابستگی داده و تداخل منابع را نشان دادهایم‪ .‬دستورات ‪ I1‬و ‪ I2‬نیازمند استفاده‬
‫از واحد عملیاتی مشابه هستند و ‪.I2→I4‬‬

‫نتیجه این است که ‪ I2‬باید یک پالس دیرتر زمانبندی شود‪ .‬زیرا دو مرحله خطلوله (‪ )e1,e2‬از یک واحد عملیاتی‬
‫مشابه باید توسط ‪ I1‬و ‪ I2‬به روشی همپوش استفاده شوند‪ .‬به دلیل مشابه ‪ I3‬نیز یک پالس تأخیر داده میشود‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪358‬‬

‫دستور ‪ I4‬به خاطر وابستگی جریان به ‪ I2‬به اندازه دو پالس تأخیر داده میشود‪ .‬مستطیلهای سایهدار در همه‬
‫نمودارهای زمانی مرتبط با مراحل بیکاری است‪.‬‬

‫(ج) تداخل منبع و وابستگیهای داده باعث توقف عملیات خطلوله در چند سیکل میشود‪.‬‬
‫شکل ‪ :47-6‬تداخالت منبع و وابستگی ممکن است یک یا هر دو خطلوله را در یک پردازنده سوپر اسکالر دو انتشاره متوقف کند‪.‬‬

‫زمانبندی چندخطلوله‪ :‬انتشار دستور و سیاستهای تکمیل شدن در کارایی پردازنده سوپراسکالر بحرانی هستند‪.‬‬
‫این سیاستهای زمانبندی در زیر معرفی میشوند‪ .‬وقتیکه دستورات به ترتیب برنامه اجرا میشوند‪ ،‬به آن انتشار به‬
‫ترتیب‪ 1‬میگوییم‪ .‬وقتی که ترتیب برنامه نقض میشود انتشار خارج از ترتیب‪ 2‬داریم‪.‬‬

‫به طور مشابه وقتیکه تکمیل شدن به ترتیب برنامه است به آن تکمیل به ترتیب‪ 3‬میگوییم در غیر اینصورت‬
‫تکمیل خارج از ترتیب‪ 4‬ممکن است اتفاق بیافتد‪ .‬پیادهسازی انتشار به ترتیب سادهتر است اما ممکن است کارایی‬
‫بهینه ای را نتیجه ندهد‪ .‬انتشار به ترتیب ممکن است تکمیل به ترتیب یا خارج از ترتیب را نتیجه دهد‪.‬‬

‫‪1‬‬
‫‪In- order issue‬‬
‫‪2‬‬
‫‪Out of order issue‬‬
‫‪3‬‬
‫‪In order completion‬‬
‫‪4‬‬
‫‪Out of order completion‬‬
‫‪| 359‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫انتشار خارج از ترتیب همیشه با تکمیل خارج از ترتیب تمام میشود‪ .‬هدف انتشار و تکمیل خارج از ترتیب بهبود‬
‫کارایی میباشد‪ .‬این سه سیاست زمانبندی در شکل ‪ 48-6‬با اجرای برنامه مثال شکل ‪(46-6‬ب) در سخت افزار دو‬
‫خطلوله شکل ‪(46-6‬الف) نشان داده شده است‪.‬‬

‫(ج) انتشار خارج از ترتیب‪ ،‬تکمیل خارج از ترتیب در ‪ 7‬پالس با استفاده از پنجره پیشبینی دستور در پردازه کد کردن مجدد‬
‫شکل ‪ :48-6‬سیاستهای انتشار و تکمیل دستورالعمل برای یک پردازنده سوپراسکالر با و بدون پشتیبانی از پیشبینی دستور‬

‫انتشار به ترتیب‪ :‬شکل‪(48-6‬الف) یک زمانبندی برای ‪ 6‬دستور که به ترتیب برنامه منتشر میشوند را نشان‬
‫میدهد‪I3 ،I2 ،I1 .‬و‪ .I6...‬خطلوله ‪ 1‬دستورات ‪ I1‬و ‪ I3‬و ‪ I5‬را دریافت میکند و خطلوله ‪ 2‬دستورات ‪ I2‬و ‪ I4‬و ‪ I6‬را‬
‫در سیکلهای متوالی دریافت میکند‪ .‬به خاطر ‪ I2 ،I1→I2‬باید یک سیکل منتظر بماند تا داده بار شده توسط ‪ I1‬را‬
‫استفاده کند‪.‬‬

‫‪ I3‬به خاطر تداخل منبع (جمع کننده ای که توسط ‪ I2‬استفاده شده است) یک سیکل تأخیر داده میشود‪ I6 .‬باید‬
‫منتظر نتیجه ‪ I5‬باشد قبل از اینکه وارد مرحله ضرب کننده شود‪ .‬به منظور حفظ تکمیل به ترتیب‪ I5 ،‬باید ‪ 2‬سیکل‬
‫منتظر شود تا از خطلوله ‪ 1‬خارج شود‪ .‬در مجموع ‪ 9‬سیکل مورد نیاز است و ‪ 5‬سیکل بیکار مشاهده میشود‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪360‬‬

‫در شکل ‪(48-6‬ب) اجازه تکمیل خارج از ترتیب داده شده است با وجود اینکه انتشار به ترتیب میباشد‪ .‬تنها تفاوت‬
‫بین این زمانبندی خارج از ترتیب و زمانبندی به ترتیب این است که ‪ I5‬مجاز است زودتر از ‪ I3‬و ‪ I4‬که کامالً مستقل‬
‫از ‪ I5‬میباشند‪ ،‬تکمیل شود‪ .‬زمان کل اجرا بهبود نمییابد‪ .‬به هر حال نرخ بهرهوری خطلوله بهتر میشود‪.‬‬

‫فقط سه سیکل بیکار مشاهده میشود‪ .‬نکته اینکه در شکل ‪(48-6‬الف) و ‪(48-6‬ب) ما از پنجره پیشبینی استفاده‬
‫نکردیم‪ .‬به منظور کوتاه کردن زمان کل اجرا‪ ،‬پنجره میتواند استفاده شود تا انتشار دستور را ترتیب مجدد دهد‪.‬‬

‫انتشار خارج از ترتیب‪ :‬با استفاده از پیشبینی‪ ،‬دستور ‪ I5‬میتواند بطور پیشرفته دیکد شود زیرا مستقل از همه‬
‫دستورات دیگر است‪ .‬شش دستور در سه سیکل همانطور که در شکل نشان داده شده است منتشر میشوند‪I5 .‬‬
‫توسط پنجره برداشت دیکد میشود در حالیکه ‪ I3‬و ‪ I4‬بطور همروند دیکد میشوند‪.‬‬

‫بعد از این دستور‪ I6 ،‬و ‪ I1‬در سیکل ‪ 2‬و ‪ I2‬در سیکل ‪ 3‬منتشر میشوند‪ .‬چون انتشار خارج از ترتیب است‪ ،‬تکمیل‬
‫نیز خارج از ترتیب است همانطور که در شکل ‪(48-6‬ج) نشان داده شده است‪ .‬هم اکنون زمان کل اجرا به ‪ 7‬سیکل‬
‫کاهش داده میشود و هیچ سیکل بیکاری در خالل اجرای ‪ 6‬دستور وجود ندارد‪.‬‬

‫پیاده سازی انتشار به ترتیب و تکمیل به ترتیب سادهترین است‪ .‬به خاطر بعضی تأخیرهای غیرضروری در حفظ‬
‫ترتیب برنامه امروزه حتی در یک پردازنده اسکالر سنتی به ندرت استفاده میشود‪ .‬به هر حال‪ ،‬در یک محیط‬
‫چندپردازنده‪ ،‬این سیاست هنوز هم جالب است‪ .‬مجاز شمردن تکمیل خارج از ترتیب در پردازندههای اسکالر و‬
‫سوپراسکالر پیدا میشود‪.‬‬

‫بعضی عملیات با تأخیر زیاد مثل عملیات ‪ )AMD 29000( load‬و عملیات ممیز شناور )‪،(MC88100‬‬
‫می توانند در تکمیل خارج از ترتیب برای رسیدن به کارایی بهتر مخفی شوند‪ .‬وابستگی خروجی و ضد وابستگی‪ ،‬دو‬
‫رابطه هستند که از تکمیل خارج از ترتیب جلوگیری میکنند‪ .‬انتشار خارج از ترتیب به پردازنده آزادی بیشتری در‬
‫بهرهبرداری از موازات میدهد و بنابراین بازدهی خطلوله توسعه داده میشود‪.‬‬

‫مثال فوق بطور صریح مزایای پیشبینی دستور و انتشار دستور خارج از ترتیب را نشان میدهد و بهینه سازی خطلوله‬
‫نیز بدست میآید‪ .‬باید یادآوری کنیم که زمانبندی چندخطلوله یک مسأله ‪ NP‬است‪ .‬بدست آوردن زمانبندی بهینه‬
‫خیلی گران قیمت است‪.‬‬

‫چک کردن وابستگی داده ساده‪ ،‬یک پنجره پیش بینی ساده و مکانیزمهای ‪ ، Scoreboarding‬توماسولو و‬
‫تعمق همزمان با یک کامپایلر بهینه مورد نیاز است تا موازات دستورالعمل در یک پردازنده سوپراسکالر بدست آید‪.‬‬

‫کارایی سوپراسکالر‪ :‬برای مقایسه کارایی نسبی یک پردازنده سوپراسکالر با یک ماشین اسکالر پایه‪ ،‬زمان‬
‫اجرای ‪ N‬دستور مستقل در طول خطلوله را تخمین میزنیم‪ .‬زمان مورد نیاز توسط یک ماشین اسکالر برابر است‬
‫با‪:‬‬
‫)‪) (6-26‬سیکل پایه( ‪T(1,1)=k+N-1‬‬
‫‪| 361‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫زمان اجرای ایدهآل توسط یک ماشین سوپراسکالر ‪-m‬انتشاره برابر است با‪:‬‬
‫𝑚‪𝑁−‬‬
‫𝑚 ‪𝑇(𝑚, 1) = 𝑘 +‬‬ ‫)‪) (6-27‬سیکل پایه(‬
‫که ‪ k‬زمان مورد نیاز برای اجرای اولین ‪ m‬دستوردر طول خطلوله بطور همزمان است و عبارت دوم مرتبط با زمان‬
‫مورد نیاز برای اجرای ‪ N-m‬دستور باقیماننده‪ m ،‬تا در هر سیکل‪ ،‬در ‪ m‬خطلوله میباشد‪.‬‬

‫افزایش سرعت ایدهآل یک ماشین سوپراسکالر نسبت به ماشین پایه برابر است با‪:‬‬
‫)‪𝑇(1,1‬‬ ‫‪𝐾+𝑁−1‬‬ ‫)‪𝑚(𝑁+𝐾−1‬‬
‫= )‪𝑆(𝑚, 1) = 𝑇(𝑚,1‬‬ ‫𝑚‪𝑁−‬‬ ‫)‪= 𝑁+𝑚(𝐾−1‬‬ ‫)‪(6-28‬‬
‫‪𝐾+‬‬
‫𝑚‬
‫وقتی ∞→‪.S(m,1)→m ،N‬‬
‫‪ -2-5-6‬طراحی سوپرپایپالین‬
‫در یک پردازنده سوپرپایپالین از درجه ‪ ،n‬زمان سیکل خطلوله ‪ 1/n‬سیکل پایه است‪ .‬به عنوان یک مقایسه‪،‬‬
‫وقتی که یک جمع ممیز ثابت یک سیکل در پردازنده اسکالر پایه میگیرد همان عمل ‪ n‬سیکل کوچک در یک‬
‫پردازنده سوپرپایپالین پیادهسازی شده با تکنولوژی مشابه میگیرد‪.‬‬

‫شکل ‪(49-6‬الف) اجرای دستورات در یک ماشین سوپرپایپالین با درجه ‪ n=3‬را نشان میدهد‪ .‬در این حالت فقط‬
‫یک دستور در هر سیکل منتشر میشود‪ .‬اما زمان سیکل ‪ 1/3‬سیکل پایه است‪ .‬تأخیر عمل‪-‬تک‪ n ،‬سیکل خطلوله‬
‫است که معادل یک سیکل پایه است‪ ILP .‬مورد نیاز برای بهرهوری کامل ماشین ‪ n‬دستورالعمل است‪ .‬همچنانکه‬
‫در ستون سوم جدول ‪ 2-6‬نشان داده شده است‪.‬‬

‫شکل ‪ : 49-6‬معماریهای پردازنده سوپرپایپالین شده با و بدون چند انتشار‬


‫کانون نشر علوم‬ ‫|‬ ‫‪362‬‬

‫ماشینهای سوپرپایپالین شده برای مدت طوالنی در بورس بودند‪ Cray .‬هر دو ماشینهای سوپرپایپالین‬
‫‪ cray1‬و ‪ CDC7600‬را با تأخیر ‪ n=3‬سیکل برای یک جمع ممیز ثابت ساخت‪ .‬سوپرپایپالین بدون مکانیزم‬
‫ساعت سرعت باال ممکن نیست‪.‬‬

‫کارایی سوپرپایپالین‪ :‬حداقل زمان مورد نیاز برای اجرای ‪ N‬دستور برای یک ماشین سوپرپایپالین از درجه‬
‫‪ n‬با ‪ k‬مرحله در خطلوله برابر است با‪:‬‬
‫)سیکل پایه( )‪𝑇(1, 𝑛) = 𝐾 + 1⁄𝑛 (𝑁 − 1‬‬ ‫)‪(6-29‬‬
‫بنابراین افزایش سرعت سوپرپایپالین روی ماشین پایه مشابه برابر است با‪:‬‬
‫)‪𝑇(1,1‬‬ ‫‪𝐾+𝑁−1‬‬ ‫)‪𝑛(𝐾+𝑁−1‬‬
‫= )𝑛‪𝑆(1, 𝑛) = 𝑇(1,‬‬ ‫‪(𝑁−1)⁄‬‬ ‫=‬ ‫)‪(6-30‬‬
‫‪𝐾+‬‬ ‫‪𝑛𝑘+𝑁−1‬‬
‫𝑛‬
‫وقتی ∞→‪ ،N‬افزایش سرعت ‪.S(1,n)→n‬‬
‫هر دو روش سوپراسکالر و سوپرپایپالین میتوانند با هم ترکیب شوند تا پردازندهای به نام پردازنده سوپراسکالر‬
‫سوپرپایپ الین ساخته شود‪ .‬مثالی از این نوع‪ ،‬پردازنده آلفای تجهیزات دیجیتال و پردازنده ‪MIPS R4000‬‬
‫میباشد‪.‬‬

‫طراحی سوپراسکالر سوپرپایپ الین شده‪ :‬یک پردازنده سوپراسکالر سوپرپایپ الین شده با درجه )‪(m,n‬‬
‫در شکل ‪(49-6‬ب) با )‪ (m,n)=(3,3‬نشان داده شده است‪ .‬این ماشین ‪ m‬دستور را در هر سیکل با یک سیکل‬
‫خطلوله ‪ 1/n‬سیکل پایه اجرا میکند‪ .‬تأخیر عمل ساده ‪ n‬سیکل خطلوله است‪ .‬سطح موازی مورد نیاز برای‬
‫بهرهبرداری کامل این ماشین ‪ mn‬دستور میباشد‪.‬‬
‫به عنوان مثال پردازنده آلفای ‪ DEC‬نرخ انتشار دستور ‪ m=2‬ارائه میکند‪ .‬عملیات ساده بطور مستقیم با ‪ 4‬واحد‬
‫عملیاتی برای عملیات ممیز شناور‪ load/store ،‬و پرش و صحیح پشتیبانی میشود‪ .‬آلفای اولیه با کالک‬
‫‪ 150Mhz‬کار میکرد‪ .‬که با مقایسه با پردازنده اسکالر با نرخ ساعت ‪ 25MHz‬به این معنی است که درجه‬
‫سوپرپایپالین ‪ 6=n=150MHz/25Mhz‬میباشد‪ .‬بنابراین میتوانیم بگوییم آلفا درجه )‪ (m,n)=(2,6‬دارد‪.‬‬
‫روش سوپراسکالر با تکنولوژی ‪ CMOS‬نسبت به روش سوپرپایپالین بهتر تطابق داده میشود‪ .‬طرحهای‬
‫سوپراسکالر ابتدا روی موازات مکانی تکیه کرد‪ -‬چند عمل بطور همزمان روی سختافزار مجزا اجرا میشود‪ -‬که‬
‫با دو برابر شدن منابع سختافزاری مثل واحدهای اجرایی و پورتهای فایل ثبات بدست میآید و طرحهای‬
‫سوپرپایپالین روی موازات زمانی تکیه میکند ‪-‬چندین عمل روی یک قطعه مشترک سختافزار همپوشانی دارند‪-‬‬
‫که با اجرای خطلولهای عمیقتر با سیکل ساعت سریعتر بدست میآید‪.‬‬
‫در کل‪ ،‬ماشینهای سوپراسکالر ترانزیستورهای بیشتری نیاز دارند‪ ،‬در حالیکه طرحهای سوپرپایپالین‬
‫ترانزیستورهای سریعتر نیاز دارند و طراحی مداری دقیقتر برای حداقل کردن انحراف ساعت نیاز دارند‪ .‬تکنولوژی‬
‫‪ CMOS‬برای تکرار مدارات مناسبتر از افزایش نرخ ساعت است‪ .‬بعضی پردازندههای ریسک تالش در پیادهسازی‬
‫روش سوپرپایپالین برای افزایش نرخ ساعت دارند‪.‬‬
‫‪| 363‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫کارایی سوپراسکالر سوپرپایپالین ‪ :‬به طور مشابه‪ ،‬حداقل زمان مورد نیاز برای اجرای ‪ N‬دستور مستقل‬
‫روی یک ماشین سوپراسکالر سوپرپایپالین با درجه )‪ (m,n‬را تخمین میزنیم‪:‬‬
‫𝑚‪𝑁−‬‬
‫‪𝑇(𝑚, 𝑛) = 𝐾 +‬‬ ‫(سیکل پایه)‬ ‫)‪(6-31‬‬
‫𝑛𝑚‬

‫بنابراین افزایش سرعت نسبت به ماشین پایه برابر است با‪:‬‬


‫)‪𝑇(1,1‬‬ ‫‪𝐾+𝑁−1‬‬ ‫)‪𝑚𝑛(𝐾+𝑁−1‬‬
‫= )𝑛‪𝑆(𝑚, 𝑛) = 𝑇(𝑚,‬‬ ‫‪(𝑁−𝑚)⁄‬‬ ‫=‬ ‫)‪(6-32‬‬
‫‪𝐾+‬‬ ‫𝑚‪𝑚𝑛𝑘+𝑁−‬‬
‫𝑛𝑚‬

‫وقتی ∞→‪.S→mn ،N‬‬


‫مثال ‪ :18-6‬معماری سوپراسکالر‪-‬سوپرپایپالین ‪DEC 21064-A‬‬
‫همانطور که در شکل ‪ 50-6‬نشان داده شده است یک پردازنده سوپراسکالر‪-‬سوپرپایپالین ‪ 64‬بیتی است‪ .‬طرح‬
‫روی سرعت تأکید دارد‪ .‬انتشار چند‪-‬دستور‪ ،‬کاربردهای چندپردازنده‪ ،‬مهاجرت نرم افزار ‪ VAX/VMS‬و ‪MIPS‬‬
‫‪ Ultrix‬و لیستی طوالنی از خواص مفید‪ .‬نرخ ساعت گزارش شده ‪ 150MHz‬در اولین پیادهسازی تراشه بود‪.‬‬
‫برخالف بقیه‪ ،‬معماری آلفا ‪ 32‬عدد ثبات ‪ 64‬بیتی صحیح و ‪ 32‬عدد ثبات ‪ 64‬بیتی ممیز شناور دارد‪ .‬خطلوله صحیح‬
‫‪ 7‬مرحله و خطلوله ممیز شناور ‪ 10‬مرحله در طرح اولیه دارد‪ .‬همه دستورات آلفا ‪ 32‬بیتی هستند‪ .‬دستورات فقط با‬
‫یک دستور نوشتن در حافظه یا ثبات و خواندن از همان مکان توسط دیگری با یکدیگر محاوره میکنند‪.‬‬
‫‪I-cache‬‬
‫جدول تاریخچه پرش‬ ‫تگ‬ ‫داده‬

‫گذرگاه آدرس‬
‫‪EBOX‬‬ ‫‪IBOX‬‬ ‫‪FBOX‬‬ ‫(‪ 34‬بیتی)‬
‫ضرب کننده‬ ‫‪/‬ضرب کننده‬
‫جمع کننده‬ ‫پیش برداشت‬ ‫جمع کننده‬
‫تداخل منابع‬ ‫تقسیم کننده‬
‫شیفت دهنده‬
‫محاسبه ‪PC‬‬ ‫گذرگاه داده‬
‫جعبه منطق‬
‫‪ITB‬‬
‫‪BIU‬‬ ‫(‪ 34‬بیتی)‬
‫کنترل خطلوله‬
‫‪FRF‬‬
‫‪IRF‬‬ ‫)‪(32x64‬‬
‫)‪(32x64‬‬

‫حافظههای نهان‬
‫بافر نوشتن‬ ‫تولید آدرس‬ ‫‪DTB‬‬ ‫‪Load Silo‬‬ ‫خارجی کنترل‬

‫‪Dcache‬‬
‫تگ‬ ‫داده‬

‫کنترل مرکزی=‪IBOX‬‬ ‫واحد آدرس=‪ABOX‬‬ ‫واحد اعشاری=‪FBOX‬‬ ‫واحد صحیح= ‪EBOX‬‬


‫بافر ترجمه آدرس=‪DTB‬‬ ‫فایل ثبات اعشاری=‪FRF‬‬ ‫فایل ثبات صحیح=‪IRF‬‬
‫شکل ‪ :50-6‬معماری ریزپردازنده ‪DEC 21064-A‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪364‬‬

‫اولین پیادهسازی آلفا در هر سیکل دو دستور را منتشر میکرد‪ .‬در پیادهسازی بعدیش تعداد دستورات منتشر شده‬
‫بیشتر بود‪ .‬زمانبندی مخاطرههای خطلوله‪ ،‬بارکردن اسالتهای تأخیری و اسالتهای تأخیر پرش همه با پشتیبانی‬
‫سختافزار حداقل شدهاند‪ .‬آلفا برای پشتیبانی سریع درهم قفلی چندپردازنده و وقفهها طراحی شد‪ .‬امکان پشتیبانی‬
‫چندین سیستم عامل را دارد‪ .‬پردازنده طوری طراحی شده است که حداکثر ‪ 300MIPS‬و ‪ 150Mglops‬در‬
‫‪ 150MHz‬دارد‪.‬‬
‫‪ -3-5-6‬فوق تقارن و حد میانه طراحی‬
‫شکل ‪ 51-6‬یک پردازنده سوپراسکالر با یک پردازنده سوپرپایپالین که هر دو درجه ‪ (m=n=3) 3‬دارند را‬
‫مقایسه کرده است که شش دستور مستقل را منتشر کردهاند‪ .‬انتشار ‪ 3‬دستورالعمل در هر سیکل ساعت نرخ ماشین‬
‫سوپراسکالر است در حالیکه ماشین سوپرپایپالین فقط یک سوم سیکل پایه را برای انتشار هر دستور میگیرد‪ .‬در‬
‫حالت ثابت‪ ،‬هر دو ماشین تعداد مشابهی دستور را در بازه زمانی مشابه اجرا میکنند‪.‬‬

‫فوق تقارن‪ :‬ماشین سوپرپایپالین تأخیر زمان شروع بیشتری دارد و از ماشین سوپراسکالر در شروع برنامه (شکل‬
‫‪(6-51‬الف)) جا میماند‪ .‬بنابراین‪ ،‬یک پرش خرابی بیشتری روی ماشین سوپرپایپالین نسبت به سوپراسکالر دارد‪.‬‬
‫این اثر با افزایش درجه سوپرپایپالین تقلیل مییابد و همه دستورات تفکیک پذیر نسبت به هم بستهتر منتشر‬
‫میشوند‪.‬‬

‫(الف) تأخیر شروع سوپرپایپالین نسبت به سوپراسکالر‬

‫‪2.5‬‬
‫سوپراسکالر‬
‫‪2‬‬
‫کارایی نسبت به ماشین پایه‬

‫سوپرپایپ الین‬
‫‪1.5‬‬

‫‪1‬‬

‫‪0.5‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪ 7‬درجه‪6‬سوپراسکالر‪5‬یا ‪4‬‬


‫سوپرپایپالین ‪3‬‬ ‫‪8‬‬
‫(ب) کارایی نسبی در مقایسه با پردازنده اسکالر پایه‬
‫شکل ‪ :51-6‬کارایی نسبی پردازندههای سوپراسکالر و سوپر پایپالین‬
‫‪| 365‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫شکل ‪(51-6‬ب) کارایی پردازنده سوپراسکالر و سوپرپایپالین را نسبت به پردازنده اسکالر پایه نشان میدهد‪ .‬این‬
‫دو منحنی بعد از اجرای ‪ 8‬برنامه محک روی ماشین پایه ایدهآل روی یک ماشین سوپراسکالر با درجه ‪ m‬و ماشین‬
‫سوپرپایپالین با درجه ‪ n‬که ‪ 2≤m,n≤8‬بدست آمده است‪.‬‬

‫این نتایج شبیه سازی میگوید که ماشین سوپرپایپالین کارایی کمتری از ماشین سوپراسکالر دارد به هر حال‬
‫شکاف کارایی با افزایش درجه کاهش مییابد ولی کارایی آنها تقریباً مشابه است‬

‫حد میانههای طراحی‪ :‬منحنی افزایش سرعت )‪ S(m,n‬در معادله ‪ 32-6‬را برای ‪ k=8‬مرحله خطلوله در شکل‬
‫‪ 6-52‬رسم کردهایم‪ 4 .‬حالت نسبت به یک انتشاره‪ ،‬دو انتشاره‪ 4 ،‬انتشاره و سه انتشاره (‪ )m=1,2,3,4‬رسم‬
‫شدهاند‪ .‬همه منحنیها تابعی از ‪ ،N‬تعداد دستورات میباشند‪.‬‬

‫هرچه درجه سوپرپایپالین افزایش مییابد منحنی افزایش سرعت‪ ،‬افزایش بیشتری دارد‪ .‬حدمیانهای بین انتخاب‬
‫)‪ (m,n‬وجود دارد‪ .‬دو محدودیت مهم مشاهده شده است‪ :‬اول‪ :‬درجه ‪ m‬سوپراسکالر با ‪ ILP‬کمِ مشاهده شده در‬
‫برنامه محدود شده است‪ .‬دوم‪ :‬سیکل ساعت سوپرپایپالین با تکنولوژی ساعت چندفازه قابل دسترس برای توزیع‬
‫فازهای ساعت و زمان شروع طوالنی ثباتها محدود شده است‪.‬‬

‫افزایش سرعت‬
‫)‪S(m,n‬‬ ‫)‪S(4,6‬‬
‫‪20‬‬

‫)‪S(3,6‬‬
‫‪15‬‬
‫)‪S(2,6‬‬
‫‪10‬‬
‫)‪S(3,3‬‬

‫)‪S(2,3‬‬
‫‪5‬‬ ‫)‪S(4,1‬‬
‫)‪S(2,1‬‬
‫‪1‬‬ ‫)‪S(1,1‬‬
‫‪0‬‬ ‫‪200‬‬ ‫‪400‬‬ ‫‪600‬‬ ‫‪800‬‬ ‫‪1000‬‬
‫تعداد دستوارت ‪N‬‬
‫شکل ‪ 52-6‬افزایش سرعت ایدهآل ماشینهای سوپرپایپالین و‪/‬یا سوپراسکالر از درجه )‪ (m,n‬در‬
‫مقایسه با ماشینهای اسکالر با سرعت واحد ‪S(1,1)=1‬‬
‫‪ -4-5-6‬بهرهبرداری از ‪ ILP‬با استفاده از زمانبندی پویا‪ ،‬چند انتشار و تعمق‬

‫تاکنون چگونگی کارکرد مکانیزمهای زمانبندی پویا‪ ،‬چند انتشار و تعمق را بطور منفرد دیدهایم‪ .‬در این بخش‬
‫میخواهیم هر سه تا را با هم استفاده کنیم که باعث ایجاد یک ریز معماری مشابه ریزپردازندههای مدرن میشود‪.‬‬
‫به منظور سادگی فرض میکنیم که در هر پالس ساعت دو دستور منتشر میشود‪ ،‬اما مفهوم برای پردازندههای‬
‫مدرن که سه یا بیشتر دستور را در هر پالس منتشر میکنند فرق نمیکند‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪366‬‬

‫فرض میکنیم که می خواهیم الگوریتم توماسولو را برای پشتیبانی خط لوله چند انتشاره سوپراسکالر با واحدهای‬
‫صحیح‪ ،load/store ،‬و ممیز شناور (جمع و ضرب ممیز شناور) توسعه دهیم‪ .‬که هر کدام میتوانند یک عمل را‬
‫در هر سیکل ساعت منتشر کنند‪ .‬ما قصد نداریم دستورات را به ایستگاههای رزرواسیون خارج از ترتیب منتشر کنیم‬
‫زیرا باعث تخلف از معنای برنامه میشود‪ .‬برای اینکه به مزایای کامل زمانبندی پویا برسیم به خطلوله اجازه میدهیم‬
‫هر نوع ترکیب دو دستور را در هر پالس منتشر کند‪ .‬که این با سخت افزار زمانبندی که عملیات را به واحد ممیز‬
‫شناور و صحیح انتساب میدهد انجام میشود‪ .‬الگوریتم توماسولو را برای کار با هردوی واحد ممیز شناور و صحیح‬
‫و اجرای متفکرانه توسعه میدهیم‪.‬‬

‫انتشار چند دستور در هر پالس در یک پردازنده زمانبندی شدهی پویا ( با یا بدون تعمق) خیلی پیچیده است زیرا که‬
‫چند دستور ممکن است به هم وابسته باشند‪ .‬به خاطر این جداول باید برای دستورات موازی بروزرسانی شوند در‬
‫غیر اینصورت جداول درست نخواهند بود و وابستگی ممکن است از دست برود‬

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

‫روش دوم ساخت منطق الزم برای مدیریت یکباره دو دستور یا بیشتر به یکباره میباشد شامل هر وابستگر ممکن‬
‫بین دستورات‪ .‬سوپراسکالرهای مدرن که چهار یا بیشتر دستور را در هر پالس منتشر میکنند ممکن است از هر دو‬
‫روش استفاده کنند‪( .‬سوپر اسکالر سوپر پایپالین شده)‪.‬‬

‫مرحله انتشار یکی از پایهترین گلوگاهها در سوپراسکالرهای زمانبندی شده بصورت پویا میباشد‪ .‬راهبرد پایه برای‬
‫بروزرسانی منطق انتشار و جداول رزرواسیون در سوپراسکالر با انتشار ‪ n‬دستور در هر پالس بصورت زیر است‪:‬‬

‫‪ .1‬ب ه هر دستوری که ممکن است در گروه انتشار بعدی قرار گیرد‪ ،‬یک ایستگاه رزرواسیون و بافر مرتب‬
‫سازی مجدد را اختصاص دهید‪ .‬این انتساب میتواند قبل از اینکه نوع دستورالعمل شناخته شود انجام‬
‫شود‪ .‬این عمل با پیش تخصیص ترتیبی ورودیهای بافر مرتب سازی مجدد به دستوراتی در بسته که‬
‫‪ n‬ورودی بافر مرتب سازی مجدد را استفاده میکنند با اطمینان از اینکه ایستگاههای رزرواسیون برای‬
‫انتشار کل گروه قابل دسترسند بدون توجه به آنچه که گروه دارد انجام شود‪ .‬با محدود کردن تعداد‬
‫دستورات یک کالس داده شده ( مثالً یک ‪ ،FP‬یک صحیح‪ ،‬یک ‪ ،Load‬یک ‪ ،)store‬ایستگاههای‬
‫رزرواسیون مورد نیاز میتوانند از پیش اختصاص داده شوند‪.‬‬
‫‪ .2‬وابستگی بین دستورات منتشر شده در گروه را تجزیه تحلیل کنید‪.‬‬
‫‪ .3‬اگر یک دستور در گروه به یک دستور قبلی در گروه وابسته بود‪ ،‬شماره بافر مرتب سازی مجدد اختصاص‬
‫داده شده را برای بروزرسانی جدول رزرواسیون برای دستور وابسته استفاده کنید‪ .‬در غیر اینصورت‪ ،‬جدول‬
‫‪| 367‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫رزرواسیون موجود و اطالعات بافر مرتب سازی مجدد را استفاده کنید تا ورودیهای جدول رزرواسیون‬
‫را برای دستور منتشر شده بروز کنید‪.‬‬

‫در حقیقت‪ ،‬آنچه مراحل فوق را خیلی پیچیده میکند این است که همه با هم باید بطور موازی در یک پالس ساعت‬
‫انجام شوند‪.‬‬

‫در انتها م ا باید قادر باشیم چندین دستور را در هر پالس ساعت کامل و خاتمه دهیم‪ .‬این مرحله اغلب از مرحله‬
‫انتشار چند دستور سادهتر است‪ Intel i7 .‬از شماتیکی مشابه تعمق چند دستور با تعداد ایستگاههای رزرواسیون‬
‫بیشتر‪ ،‬تعداد بافر مرتب سازی مجدد بیشتر استفاده میکند و از بافر ‪ store‬و ‪ load‬برای مدیریت فقدانهای‬
‫حافظه نهان بلوکه نشدنی استفاده میکند‬

‫مثال‪ :‬اجرای حلقه زیر را مد نظ ر قرار دهید که عناصر یک آرایه را روی یک پردازنده دو انتشاره افزایش میدهد‬
‫یکبار بدون تعمق و بار دیگر با تعمق‪:‬‬

‫‪Loop:‬‬ ‫‪LD‬‬ ‫)‪R2,0(R1‬‬ ‫‪;R2=array element‬‬


‫‪DADDIU‬‬ ‫‪R2,R2,# 1‬‬ ‫‪;increment R2‬‬
‫‪SD‬‬ ‫)‪R2,0(R1‬‬ ‫‪;store result‬‬
‫‪DADDIU‬‬ ‫‪R1,R1,# 8‬‬ ‫‪;increment pointer‬‬
‫‪BNE‬‬ ‫‪R2,R3,Loop ;branch if not last element‬‬
‫فرض کنید که واحدهای عملیاتی صحیح مجزا برای محاسبه آدرس مؤثر‪ ،‬برای عملیات ‪ ،ALU‬و برای ارزیابی‬
‫شرایط پرش وجود دارند‪ .‬یک جدول برای سه تکرار اول حلقه برای دو پردازنده ایجاد کنید‪ .‬فرض کنید که حداکثر‬
‫دو دستور از هر نوع میتواند در هر پالس ساعت خاتمه یابد‪.‬‬
‫پاسخ‪ :‬شکلهای ‪53-6‬و ‪ 54-6‬کارایی پردازنده زمانبندی شده پویای دو انتشاره را بدون و با تعمق نشان میدهند‪.‬‬
‫در این حالت که پرش می تواند یک محدود کننده کارایی بحرانی باشد‪ ،‬تعمق بطور قابل توجهی کمک میکند‪.‬‬
‫پرش سوم درپردازنده متفکر در پالس ساعت ‪ 13‬اجرا میشود در حالیکه در خطلوله بدون تعمق در پالس ‪ 19‬اجرا‬
‫میشود‪ .‬چون نرخ تکمیل در خطلوله بدون تعمق کاهش مییابد‪ ،‬خطلوله بدون تعمق متوقف خواهد شد اگر‬
‫تکرارهای بیشتری منتشر شوند‪ .‬کارایی پردازنده بدون تعمق و تفکر میتواند با مجاز شمردن دستورات ‪ load‬تا‬
‫بتوانند محاسبه آدرس مؤثر را قبل از اینکه یک پرش تصمیمگیری شود بهبود خواهد یافت اما این بهبود در هر‬
‫تکرار حلقه فقط یک پالس خواهد بود‪ .‬مگر اینکه دسترسی حافظه متفکر مجاز شمرده شود‪.‬‬
‫این نشان میدهد که چگونه تعمق و تفکر میتواند مفید واقع شود وقتیکه پرشهای وابسته‪-‬داده وجود دارند که‬
‫در سایر حاالت کارایی را محدود میکنند‪ .‬این مزیت وابسته به پیشبینی پرش دقیق میباشد‪ .‬تعمق نادرست کارایی‬
‫را بهبود نمیدهد‪ ،‬در حقیقت معموالً کارایی را تخریب میکند و بازدهی انرژی را پایین میآورد‪ .‬برای باال بردن‬
‫کارایی تعمق روشهایی وجود دارد شامل افزایش پهنای باند برداشت دستورالعمل‪ ،‬بافر مقصد پرش به منظور کاهش‬
‫هزینه پرش‪ ،‬و پیشبینی مقداری که یک دستور خواهد ساخت میباشد‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪368‬‬
‫توضیح‬ ‫نوشتن در ‪ CDB‬در‬ ‫دسترسی به حافظه‬ ‫اجرا در شماره‬ ‫انتشار در‬ ‫دستورات‬ ‫شماره‬
‫شماره پالس ساعت‬ ‫در شماره پالس‬ ‫پالس ساعت‬ ‫شماره پالس‬ ‫تکرار‬
‫ساعت‬ ‫ساعت‬
‫انتشار اول‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫)‪LD R2,0(R1‬‬ ‫‪1‬‬
‫منتظر برای ‪LW‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪1‬‬ ‫‪DADDIU R2,R2,# 1‬‬ ‫‪1‬‬
‫منتظر برای ‪DADDIU‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫)‪SD R2,0(R1‬‬ ‫‪1‬‬
‫اجرای مستقیم‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪DADDIU R1,R1,# 8‬‬ ‫‪1‬‬
‫منتظر برای ‪DADDIU‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪BNE R2,R3, LOOP‬‬ ‫‪1‬‬
‫منتظر برای ‪BNE‬‬ ‫‪10‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫)‪LD R2,0(R1‬‬ ‫‪2‬‬
‫منتظر برای ‪LW‬‬ ‫‪12‬‬ ‫‪11‬‬ ‫‪4‬‬ ‫‪DADDIU R2,R2,# 1‬‬ ‫‪2‬‬
‫منتظر برای ‪DADDIU‬‬ ‫‪13‬‬ ‫‪9‬‬ ‫‪5‬‬ ‫)‪SD R2,0(R1‬‬ ‫‪2‬‬
‫منتظر برای ‪BNE‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪5‬‬ ‫‪DADDIU R1,R1,# 8‬‬ ‫‪2‬‬
‫منتظر برای ‪DADDIU‬‬ ‫‪13‬‬ ‫‪6‬‬ ‫‪BNE R2,R3, LOOP‬‬ ‫‪2‬‬
‫منتظر برای ‪BNE‬‬ ‫‪16‬‬ ‫‪15‬‬ ‫‪14‬‬ ‫‪7‬‬ ‫)‪LD R2,0(R1‬‬ ‫‪3‬‬
‫منتظر برای ‪LW‬‬ ‫‪18‬‬ ‫‪17‬‬ ‫‪7‬‬ ‫‪DADDIU R2,R2,# 1‬‬ ‫‪3‬‬
‫منتظر برای ‪DADDIU‬‬ ‫‪19‬‬ ‫‪15‬‬ ‫‪8‬‬ ‫)‪SD R2,0(R1‬‬ ‫‪3‬‬
‫منتظر برای ‪BNE‬‬ ‫‪15‬‬ ‫‪14‬‬ ‫‪8‬‬ ‫‪DADDIU R1,R1,# 8‬‬ ‫‪3‬‬
‫منتظر برای ‪DADDIU‬‬ ‫‪19‬‬ ‫‪9‬‬ ‫‪BNE R2,R3, LOOP‬‬ ‫‪3‬‬
‫شکل ‪ :53-6‬زمان انتشار‪ ،‬و نوشتن نتیجه برای یک نگارش دو‪-‬انتشاره خطلوله بدون تعمق‪ .‬نکته اینکه ‪ LD‬بعد از ‪ BNE‬نمیتواند زودتر شروع به اجرا کند‬
‫زیرا باید تا زمانیکه خروجی پرش مشخص شود صبرکند‪ .‬این نوع برنامهها با پرشهای وابسته‪-‬داده که نمیتوانند زودتر رفع و رجوع شوند‪ ،‬قدرت تعمق را‬
‫نشان میدهند‪.‬واحدهای عملیاتی مجزا برای محاسبه آدرس‪ ،‬عملیات ‪ ،ALU‬و ارزیابی شرایط پرش اجازه اجرای چندین دستور را در پالس مشابه میدهند‪.‬‬
‫اجرای متفکرانه این مثال در شکل ‪ 43-6‬نشان داده شده است‪.‬‬

‫خاتمه در شماره‬ ‫نوشتن در ‪ CDB‬در‬ ‫دسترسی خواندن در‬ ‫اجرا در شماره‬ ‫انتشار در شماره‬ ‫شماره‬
‫توضیح‬ ‫دستورات‬
‫پالس ساعت‬ ‫شماره پالس ساعت‬ ‫شماره پالس ساعت‬ ‫پالس ساعت‬ ‫پالس ساعت‬ ‫تکرار‬
‫انتشار اول‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫)‪LD R2,0(R1‬‬ ‫‪1‬‬
‫‪DADDIU‬‬
‫منتظر برای ‪LW‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪R2,R2,# 1‬‬
‫منتظر برای‬
‫‪7‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫)‪SD R2,0(R1‬‬ ‫‪1‬‬
‫‪DADDIU‬‬
‫خاتمه به ترتیب‬ ‫‪8‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪DADDIU‬‬ ‫‪1‬‬
‫‪R1,R1,# 8‬‬
‫منتظر برای‬ ‫‪BNE R2,R3,‬‬
‫‪8‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪1‬‬
‫‪DADDIU‬‬ ‫‪LOOP‬‬
‫تأخیر اجرا ندارد‬ ‫‪9‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫)‪LD R2,0(R1‬‬ ‫‪2‬‬
‫‪DADDIU‬‬
‫منتظر برای ‪LW‬‬ ‫‪10‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫‪2‬‬
‫‪R2,R2,# 1‬‬
‫منتظر برای‬
‫‪10‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫)‪SD R2,0(R1‬‬ ‫‪2‬‬
‫‪DADDIU‬‬
‫‪DADDIU‬‬
‫خاتمه به ترتیب‬ ‫‪11‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪2‬‬
‫‪R1,R1,# 8‬‬
‫منتظر برای‬ ‫‪BNE R2,R3,‬‬
‫‪11‬‬ ‫‪10‬‬ ‫‪6‬‬ ‫‪2‬‬
‫‪DADDIU‬‬ ‫‪LOOP‬‬
‫اجرای زودتر‬ ‫‪12‬‬ ‫‪10‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪7‬‬ ‫)‪LD R2,0(R1‬‬ ‫‪3‬‬
‫‪DADDIU‬‬
‫منتظر برای ‪LW‬‬ ‫‪13‬‬ ‫‪12‬‬ ‫‪11‬‬ ‫‪7‬‬ ‫‪3‬‬
‫‪R2,R2,# 1‬‬
‫منتظر برای‬
‫‪13‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫)‪SD R2,0(R1‬‬ ‫‪3‬‬
‫‪DADDIU‬‬
‫منتظر برای‬ ‫‪DADDIU‬‬
‫‪14‬‬ ‫‪10‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪3‬‬
‫‪BNE‬‬ ‫‪R1,R1,# 8‬‬
‫منتظر برای‬ ‫‪BNE R2,R3,‬‬
‫‪14‬‬ ‫‪14‬‬ ‫‪9‬‬ ‫‪3‬‬
‫‪DADDIU‬‬ ‫‪LOOP‬‬
‫شکل ‪ :54-6‬زمان انتشار‪ ،‬و نوشتن نتیجه برای یک نگارش دو‪-‬انتشاره خطلوله با تعمق‪ .‬نکته اینکه ‪ LD‬بعد از ‪ BNE‬به خاطر تمعق‬
‫میتواند زودتر شروع به اجرا کند‬
‫‪| 369‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫تمرینات فصل ششم‬

‫مسأله ‪ -1-6‬اجرای یک برنامه با ‪ 15000‬دستورالعمل در یک پردازنده خطلوله خطی با نرخ ساعت ‪25MHz‬‬
‫را در نظر بگیرید‪ .‬فرض کنید خطلوله دستورالعمل ‪ 5‬مرحله دارد و در هر سیکل ساعت یک دستور منتشر میشود‪.‬‬
‫هزینه دستورات پرش و دستورات خارج از ترتیب را نادیده بگیرید‪.‬‬

‫(الف) فاکتور افزایش سرعت در استفاده این خطلوله در مقایسه با استفاده یک پردازنده بدون خطلوله معادل با‬
‫تأخیر جریان را محاسبه کنید‪.‬‬
‫(ب) بازدهی و توان عمالیتی این پردازنده خطلوله شده چقدر است؟‬
‫مسأله ‪ -2-6‬معماری ‪ DEC Alpha‬در مثال ‪ 13-6‬را مطالعه کنید‪ ،‬اطالعات بیشتر در کتابچه ‪DEC Alpha‬‬
‫موجود است‪ ،‬سپس به سؤاالت زیر پاسخ دهید‪.‬‬
‫(الف) مقیاسپذیری پیادهسازی پردازنده آلفا را براساس درجه سوپراسکالر و درجه سوپرپایپالین تجزیه تحلیل کنید‪.‬‬
‫(ب) مقیاسپذیری یک سیستم پردازنده‪-‬آلفا را براساس فضای آدرس و پشتیبانی چندپردازنده آنالیز کنید‪.‬‬
‫مسأله ‪ -3-6‬بخش ‪ 5-6‬و مقاله ژوبی و وال(‪ )1989‬را مطالعه کنید ‪ .‬به سؤاالت زیر پاسخ دهید‪.‬‬
‫(الف)توضیح دهید چرا یک پردازنده سوپرپایپالین شده کارایی کمتری از پردازنده سوپراسکالر درجه کمتر دارد‪.‬‬
‫(ب) تأخیر دوگانه (‪ )Duality of latency‬و نشر دستور موازی تحت شرایط ایدهآل چیست؟‬
‫مسأله ‪ -4-6‬تعداد بهینه مراحل خطلوله ‪ K0‬داده شده در معادله ‪ 7-6‬را با استفاده از نرخ کارایی‪/‬هزینه )‪(PCR‬‬
‫داده شده در معادله ‪ 6-6‬بدست آورید‪.‬‬

‫مسأله ‪ - 5-6‬کران باال و پایین روی میانگین تاخیر کمینه )‪ (MAL‬را اثبات کنید‪.‬‬

‫مسأله ‪ -6-6‬جدول رزرواسیون یک خطلوله ‪ 4‬مرحلهای با سیکل ساعت ‪ Ƭ =20ns‬در زیر داده شده است‪:‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫‪S1 X‬‬ ‫(الف) تأخیرات منع شده و بردار تصادم اولیه چیست؟‬
‫‪S2‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬
‫‪S3‬‬ ‫‪X‬‬ ‫(ب)دیاگرام انتقال حالت برای زمانبندی خطلوله را رسم کنید‪.‬‬
‫‪S4‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫(ج) ‪ MAL‬مرتبط با کوتاهترین سیکل طماع را بدست آورید‪.‬‬
‫(د)توان عملیات خطلوله مرتبط با ‪ MAL‬و ‪ Ƭ‬داده شده را تعیین کنید‪.‬‬
‫(ه) کران پایین ‪ MAL‬در این خطلوله را بدست آورید‪ .‬آیا حداقل تأخیر را از دیاگرام فوق بدست آوردهاید؟‬

‫مسأله ‪ -7-6‬شما مجاز هستید که یک مرحله تأخیری بدون محاسبه را در خطلوله مسأله ‪ 6.6‬اضافه کنید تا یک‬
‫تأخیر ‪ 1‬را در کوتاهترین سیکل طماع اضافه کنید‪ .‬هدف بدست آوردن جدول رزرواسیون جدیدی است تا تأخیر‬
‫بهینه برابر با کران پایین داشته باشد‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪370‬‬

‫(الف) جدول رزرواسیون اصالح شده با ‪ 5‬سطرو ‪7‬ستون را رسم کنید‪.‬‬


‫(ب) دیاگرام حالت جدید را برای بدست آوردن سیکل بهینه رسم کنید‬
‫(ج) همه سیکلهای ساده و سیکلهای طماع از دیاگرام حالت را لیست کنید‪.‬‬
‫(د) ثابت کنید که ‪ MAL‬جدید برابر با کران پایین است‪.‬‬
‫(ه)توان عملیاتی بهینه این خطلوله چیست؟ میزان بهبود کارایی را در مقایسه با قسمت (د) مسأله ‪ 6-6‬بدست آورید‪.‬‬

‫مسأله ‪ -8-6‬خطلوله جمع کننده با ‪ 4‬مرحله زیر را در نظر بگیرید‪ .‬خطلوله شامل خطوط ورودی ‪ X,Y‬و خط‬
‫خروجی ‪ Z‬است‪ .‬خطلوله یک ثبات ‪ R‬در خروجی دارد که نتیجه موقت را میتواند ذخیره کند و آن را به ‪ S1‬در‬
‫یک زمان دیگر فیدبک میدهد‪ .‬ورودیهای ‪ X,Y‬با خروجیهای ‪ R,Z‬مالتی پلکس شدهاند‪.‬‬
‫‪MPX‬‬ ‫‪Z‬‬
‫‪X‬‬ ‫‪X‬‬
‫‪S1‬‬ ‫‪S2‬‬ ‫‪S3‬‬ ‫‪S4‬‬ ‫‪R‬‬
‫‪Y‬‬ ‫‪X‬‬

‫(الف) فرض کنید عناصر بردار ‪ A‬هر عنصر در یک سیکل به داخل خطلوله از طریق ورودی ‪ X‬خورانده میشوند‪.‬‬
‫𝑁∑ = 𝑆 ‪.‬‬ ‫حداقل تعداد سیکلهای ساعت مورد نیاز برای محاسبه جمع بردار ‪ N‬عنصری ‪ A‬چقدر است؟ )𝐼(𝐴 ‪𝐼=1‬‬
‫در صورت نبود یک عملوند مقدار ‪ 0‬به ورودی خطلوله وارد میشود‪ .‬زمان نصب خطلوله را صرفنظر کنید‪.‬‬
‫(ب) اجازه دهید ‪ Ƭ‬پریود ساعت جمع کننده خطلوله شده باشد‪ .‬یک جمع کننده بدون خطلوله معادل را بانرخ جریان‬
‫‪ 4Ƭ‬در نظر بگیرید‪ .‬افزایش سرعت دقیق )‪ S4(64‬و بازدهی )‪ η4 (64‬را با استفاده از جمع کننده خطلوله برای‬
‫‪ N=64‬بدست آورید‪.‬‬
‫(ج) حداکثر افزایش سرعت )∞(‪ S4‬و بازدهی)∞( ‪ η4‬وقتی که ‪ N‬به سمت بینهایت میل کند را محاسبه کنید‪.‬‬
‫(د) ‪ ،N1/2‬حداقل طول بردار مورد نیازی که نصف حداکثر افزایش سرعت را بدست میآورد را بیابید‪.‬‬
‫مسأله ‪ -9-6‬جدول رزرواسیون خطلوله زیر را مورد توجه قرار دهید‪.‬‬
‫(الف)تأخیرات منع شده چه هستند؟‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫(ب)دیاگرام حالت خطلوله را رسم کنید‪.‬‬
‫‪S1 X‬‬ ‫‪X‬‬
‫‪S2‬‬ ‫‪X‬‬ ‫(ج)همه سیکلهای ساده و طماع را لیست کنید‪.‬‬
‫‪S3‬‬ ‫‪X‬‬
‫(د) سیکل تأخیر ثابت بهینه و میانگین تأخیر کمینه را بدست آورید‪.‬‬
‫(ه)اجازه دهید پریود ساعت خطلوله ‪ Ƭ=20ns‬باشد‪ .‬توان عملیاتی این خطلوله را بدست آورید‪.‬‬
‫مسأله ‪ -10-6‬یک پردازنده خطلوله شده پنج مرحلهای با جدول رزرواسیون زیر را در نظر بگیرید‪.‬‬
‫(الف)همه تأخیرات منع شده را لیست کنید و بردار تصادم را بدست آورید‪.‬‬
‫(ب) دیاگرام انتقال حالتی رسم کنید که همه رشتههای اولیه ممکن (سیکلهای) بدون ایجاد تصادم در خطلوله را‬
‫نشان دهد‪.‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3 4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫(ج) همه سیکلهای ساده را از دیاگرام حالت لیست کنید‪.‬‬
‫‪S1 X‬‬ ‫‪X‬‬
‫‪S2‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫(د)سیکلهای طماع را از سیکلهای ساده بدست آورید‪.‬‬
‫‪S3‬‬ ‫‪X‬‬
‫‪S4‬‬ ‫‪X‬‬
‫‪S5‬‬ ‫‪X‬‬ ‫‪X‬‬
‫‪| 371‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫(ه) میانگین تأخیر کمینه (‪ )MAL‬این خطلوله چیست؟‬


‫(و) حداقل سیکل ثابت مجاز در استفاده از این خطلوله چیست؟‬
‫(ز) حداکثر توان عملیاتی این خطلوله چیست؟‬
‫(ح) توان عملیاتی در صورتی که از حداقل سیکل ثابت استفاده شود چیست؟‬
‫مسأله ‪ -11-6‬کد اسمبلی زیر در یک پردازنده خطلوله شده سه مرحلهای با تشخیص و حل مخاطره در هر‬
‫مرحله اجرا میشود‪ .‬مراحل برداشت دستور‪ ،‬برداشت عملوند (یک یا دو در صورت نیاز)‪ ،‬و اجرا (شامل یک بازپس‬
‫نویسی) میباشند‪ .‬همه مخاطرههای ممکن در اجرای کد را توضیح دهید‪.‬‬

‫‪Inc R0‬‬ ‫‪/R0(R0)+1/‬‬


‫‪Mul Acc,R0 /Acc(Acc)*(R0)/‬‬
‫‪Store R1,Acc /R1(ACC)/‬‬
‫‪Add Acc,R0 /Acc(Acc)+(R0)/‬‬
‫‪Store M,Acc /M(Acc)/‬‬
‫مسأله ‪ -12-6‬این مسأله کارایی یک پردازنده سوپراسکالر سوپرپایپالین شده با درجه )‪ (m,n‬را با یک پردازنده‬
‫اسکالر پایه با درجه (‪1‬و‪ )1‬مقایسه میکند‪ .‬عبارت افزایش سرعت )‪ S(m,n‬در معادله ‪ 32-6‬برای حاالت محدود‬
‫زیر را تجزیه تحلیل کنید‪.‬‬

‫(الف) در رنج ‪ 1≤m≤4‬و ‪ 1≤n≤6‬تعداد بهینه مراحل خطلوله که افزایش سرعت )‪ S(m,n‬را حداکثر میکند‬
‫چیست؟‬
‫(ب) محدودیتهای عملی که از رشد درجه سوپراسکالر ‪ m‬جلوگیری میکنند چیست؟‬
‫(ج) محدودیتهای عملی که از رشد درجه سوپرپایپالین ‪ n‬جلوگیری میکنند چیست؟‬
‫مسأله ‪ -13-6‬پردازنده خطلوله شده زیر با ‪ 4‬مرحله را مد نظر قرار دهید‪ .‬این خطلوله زمان ارزیابی کل ‪6‬‬
‫سیکل ساعت دارد‪ .‬همه مراحل بعدی باید بعد از هر سیکل ساعت استفاده شوند‪.‬‬
‫خروجی‬
‫ورودی‬
‫‪X‬‬ ‫‪S1‬‬ ‫‪X‬‬ ‫‪S2‬‬ ‫‪S3‬‬ ‫‪S4‬‬

‫(الف) جدول رزرواسیون را برای این خطلوله با ‪ 6‬ستون و ‪ 4‬سطر تعیین کنید‪.‬‬
‫(ب) تأخیرات منع شده بین مقداردهیهای اولیه کارها را لیست کنید‪.‬‬
‫(ج)دیاگرام حالتی رسم کنید که همه سیکلهای تأخیر ممکن را نشان دهد‪.‬‬
‫(د) همه سیکلهای طماع را از دیاگرام حالت لیست کنید‪.‬‬
‫(ه) مقدار میانگین تأخیر کمینه چیست؟‬
‫(و) حداکثر توان عملیاتی این خطلوله چیست؟‬
‫مسأله ‪ -14-6‬سه خطلوله عملیاتی ‪ f3, f2,f1‬با جداول رزرواسیون زیر طبقه بندی شدهاند‪ .‬با استفاده از این‬
‫سه خطلوله‪ ،‬یک شبکه خطلوله ترکیب بصورت زیر شکل داده میشود‪.‬‬
‫کانون نشر علوم‬ ‫|‬ ‫‪372‬‬

‫‪f2:‬‬
‫‪f1:‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬

‫‪S1 X‬‬ ‫‪T1 X‬‬ ‫‪X‬‬


‫‪S2‬‬ ‫‪X‬‬ ‫‪T2‬‬ ‫‪X‬‬
‫‪S3‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪T3‬‬ ‫‪X‬‬
‫‪f3:‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬

‫‪U1 X‬‬ ‫‪X‬‬


‫‪U2‬‬ ‫‪X‬‬
‫‪U3‬‬ ‫‪X‬‬
‫‪X‬‬
‫‪A‬‬ ‫‪X‬‬
‫‪f1‬‬ ‫‪f2‬‬ ‫‪f3‬‬
‫‪B‬‬ ‫‪X‬‬
‫‪Y‬‬

‫‪output‬‬

‫هر کاری که در این خطلوله ترکیبی میرود‪ ،‬این خطلوله را به ترتیب زیر استفاده میکند‪ .‬ابتدا ‪ ،f1‬سپس ‪ f2‬و ‪f3‬‬
‫و مجدداً ‪ f1‬آنگاه خروجی بدست میآید‪ .‬دوتا مالتی پلکسر یکی از زوج ورودی )‪(A,B‬یا )‪ (X,Y‬را انتخاب میکند‬
‫و آنها را به ورودی ‪ f1‬میخوراند‪ .‬استفاده از خطلوله ترکیبی توسط جدول رزرواسیون ترکیبی توصیف میشود‪.‬‬
‫(الف) جدول رزرواسیون زیر را برای این خطلوله ترکیبی کامل کنید‪.‬‬
‫‪S1 1X‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬
‫‪S2‬‬ ‫‪X‬‬
‫‪S3‬‬ ‫‪X‬‬
‫‪T1‬‬
‫‪T2‬‬
‫‪T3‬‬ ‫‪X‬‬
‫‪U1‬‬ ‫‪X‬‬
‫‪U2‬‬
‫‪U3‬‬

‫(ب) لیست منع شده و بردار تصادم اولیه را بنویسید‪.‬‬


‫(ج) دیاگرام حالتی را رسم کنید که همه سیکلهای تأخیر را بوضوح نشان دهد‪.‬‬
‫(د)همه سیکلهای ثابت و طماع را لیست کنید‪.‬‬
‫(ه) ‪ MAL‬و حداکثر توان عملیاتی این خطلوله ترکیبی را محاسبه کنید‪.‬‬

‫مسأله ‪ -15-6‬یک پردازنده بدون خطلوله ‪ X‬نرخ ساعت ‪ 25MHz‬و میانگین ‪ CPI=4‬دارد‪ .‬پردازنده ‪ Y‬که‬
‫بهبود یافته ‪ X‬است‪ ،‬با یک خطلوله دستورالعمل ‪ 5‬مرحلهای طراحی شده است‪ .‬به هر حال ‪ ،‬به خاطر تأخیر لچ و‬
‫اثر انحراف ساعت‪ ،‬نرخ ساعت ‪ Y‬فقط ‪ 20MHz‬میباشد‪.‬‬
‫‪| 373‬‬ ‫فصل ششم‪ :‬خطلوله و تکنیکهای سوپراسکالر‬

‫(الف) اگر یک برنامه شامل ‪ 100‬دستورالعمل روی هر دو پردازنده اجرا شود‪ ،‬افزایش سرعت پردازنده ‪ Y‬نسبت به‬
‫پردازنده ‪ X‬چقدر است؟‬
‫(ب) نرخ ‪ MIPS‬هر پردازنده در طول اجرای این برنامه خاص را محاسبه کنید‪.‬‬

‫مسأله ‪ -16-6‬یک خطلوله ضرب کننده صحیح باینری با ‪ 5‬مرحله طراحی کنید‪ .‬مرحله اول برای تولید ضرب‬
‫جزئی است‪ .‬مرحله آخر یک جمع کنند پیشبینی نقلی ‪ 36‬بیتی است‪ .‬مراحل میانی از ‪ 16‬جمع کننده ‪ CSA‬با طول‬
‫مناسب ساخته شده است‪.‬‬

‫(الف) شماتیک طرح را برای خطلوله ضرب کننده ‪ 5‬مرحلهای تهیه کنید‪ .‬همه پهناهای خطوط و اتصاالت بین‬
‫مرحلهای باید نشان داده شوند‪.‬‬
‫(ب) حداکثر نرخ ساعت خطلوله را اگر تأخیر مراحل ‪ Ƭ1=Ƭ2=Ƭ3=Ƭ4=90ns‬و ‪ Ƭ5=45ns‬و تأخیر لچ‬
‫‪ 20ns‬باشد محاسبه کنید‪.‬‬
‫(ج) حداکثر توان عملیاتی این خطلوله براساس تعداد نتایج ‪ 36‬بیتی تولید شده در هر ثانیه چقدر است؟‬

‫مسأله ‪ -17-6‬یک جمع کننده ممیز شناور ‪ 4‬مرحلهای را با تأخیر هر مرحله ‪ 10ns‬که برابر با پریود ساعت‬
‫خطلوله است مد نظر قرار دهید‪.‬‬

‫(الف) توابع مناسبی که هر یک از ‪ 4‬مرحله باید انجام دهد را نام ببرید‪.‬‬


‫(ب) حداقل پریود مورد نیاز برای جمع ‪ 100‬عدد ممیز شناور ‪ A1+A2+…+A100‬با استفاده از این جمع کننده‬
‫خطلوله را بیابید‪ .‬خروجی ‪ Z‬از مرحله ‪ S4‬میتواند به هر کدام از ورودیهای ‪ X‬یا ‪ Y‬خطلوله بازخورد شود‪ .‬با‬
‫تأخیرهای برابر با چند پریود ساعت‪.‬‬

‫مسأله ‪ -18-6‬دو جمع کننده خطلوله ‪ 4‬مرحلهای و تعدادی عنصر تأخیری بدون محاسبه را مد نظر قرار دهید‪.‬‬
‫هر عنصر تأخیر‪ ،‬تأخیر یک واحد زمان دارد‪.‬‬

‫(الف) جمع کنندههای قابل دسترس و تأخیرها را برای ساخت یک واحد خطلوله ترکیبی برای ارزیابی عبارت زیر‬
‫استفاده کنید‪.‬‬
‫)‪b(i)=a(i)+a(i-1)+a(i-2)+a(i-3‬‬
‫برای ‪ .i=4,5,…,n‬خطلوله ترکیبی )‪ a(i‬برای ‪ i=1,2,…,n‬را به عنوان ورودیهای متوالی دریافت میکند‪.‬‬
‫(ب) یک جمع کننده خطلوله ‪ 4‬مرحله ای سومی را در نظر بگیرید‪ .‬از این جمع کننده سوم در طرح قسمت (الف)‬
‫استفاده کنید تا عبارت بازگشتی زیر را محاسبه کند‪.‬‬
‫‪x(i)=a(i)+x(i-1) , i=4,5,…,n‬‬
‫نکته اینکه‪:‬‬
‫)‪x(i)=a(i)+x(i-1)=a(i)+[a(i-1)+x(i-2)]=…=b(i)+x(i-4‬‬
‫که )‪ b(i‬توسط خطلوله ترکیبی مرحله (الف) تولید میشود‪.‬‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫‪| 375‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫بخش سوم معماری های موازی مقیاسپذیر‬

‫فصل ‪ 7‬چندپردازنده و چندکامپیوتر و قراردادهای همبستگی حافظه نهان‬

‫فصل ‪ 8‬کامپیوترهای چندبرداری و ‪SIMD‬‬

‫فصل ‪ 9‬معماری های مقیاس پذیر‪ ،‬چندنخ و جریان داده‬

‫فصل ‪ 10‬کامپیوترهای مقیاس ‪ Warehouse‬برای بهرهبرداری از موازات سطح‪-‬‬

‫داده و سطح‪-‬درخواست‬

‫فصل ‪ 11‬مقدمهای بر محاسبات گرید‬


‫کانون نشر علوم‬ ‫‪| 376‬‬

‫فصل هفتم‪-‬چندپردازنده ها و چندکامپیوترها و قراردادهای همبستگی حافظه‬


‫نهان‬

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

‫‪ -1-7‬اتصاالت داخلی سیستمهای چندپردازنده‬

‫پردازش موازی متقاضی استفاده از سیستم اتصاالت داخلی مفید (مؤثر‪ ،‬کارا) برای ارتباطات بین چندین پردازنده و‬
‫حافظه مشترک‪ ،‬ورودی‪/‬خروجی و وسایل جانبی است‪ .‬گذرگاههای سلسله مراتبی‪ ،‬سوئیچهای کراسبار و شبکههای‬
‫چندسطحه اغلب برای این هدف استفاده میشوند‪.‬‬

‫یک سیستم چندپردازنده عمومی در شکل ‪ 1-7‬نشان داده شده است‪ .‬این معماری خواص مدلهای ‪COMA,‬‬
‫‪ NUMA, UMA‬که در بخش ‪ 1-4-1‬معرفی شدند را ترکیب میکند‪ .‬هر پردازنده ‪ Pi‬به حافظه محلی و حافظه‬
‫نهان خصوصی خودش متصل است‪ .‬چندین پردازنده به ماژولهای حافظه‪-‬مشترک از طریق شبکه اتصال پردازنده‪-‬‬
‫حافظه متصل میشوند‪.‬‬

‫پردازندهها‪ ،‬دسترسی ورودی‪/‬خروجی و وسایل جانبی را از طریق یک شبکه پردازنده‪-‬ورودی‪/‬خروجی به اشتراک‬


‫میگذارند‪ .‬هر دوی ‪ IPMN‬و ‪ PION‬در یک چندپردازنده اشتراک‪-‬منبع الزم هستند‪ .‬اتصاالت بین پردازنده‬
‫مستقیم توسط یک شبکه ارتباطی بین پردازنده (‪ )IPCN‬اختیاری بجای شبکه مشترک پشتیبانی میشود‪.‬‬
‫(حافظه مشترک)‬

‫‪SM1‬‬ ‫‪SM2‬‬ ‫‪SMm‬‬

‫‪IPMN‬‬

‫(وسایل جانبی و ‪ I/O‬مشترک)‬


‫‪Cn‬‬ ‫واحد دیسک‬
‫واحدهای نوار‬
‫‪LM‬‬ ‫‪Pn‬‬ ‫چاپگر‬
‫‪PION‬‬ ‫)‪ IPMN (Inter-Processor-Memory Network‬ترمینال‬
‫‪.‬‬ ‫)‪PION (Processor-I/O Network‬‬
‫‪.‬‬ ‫)‪IPCN (Inter-Processor communication Network‬‬
‫‪C1‬‬
‫)‪ P (Processor‬شبکه‬
‫)‪C (cache‬‬
‫‪LM‬‬ ‫‪P1‬‬ ‫)‪SM (Shared Memory‬‬
‫)‪LM (Local Memory‬‬

‫‪IPCN‬‬

‫شکل ‪ :1-7‬ساختارهای ارتباطی در یک سیستم چندپردازنده عمومی با حافظه مشترک‪ ،‬حافظه محلی‪ ،‬حافظههای نهان خصوصی‪ ،‬و وسایل جانبی مشترک‬
‫‪| 377‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫خواص شبکه‪ :‬هر کدام از انواع فوق از شبکهها میتوانند با انتخابهای زیادی طراحی شوند‪ .‬انتخابها براساس‬
‫همبندی‪ ،‬قرارداد زمانی‪ ،‬روش سوئیچینگ و راهبرد کنترل میباشند‪ .‬شبکههای پویا در چندپردازندههایی که اتصاالت‬
‫داخلی تحت کنترل برنامه است استفاده میشوند‪ .‬زمانبندی‪ ،‬سوئیچینگ و کنترل سه خصوصیت عملیاتی یک شبکه‬
‫ارتباطی میباشند‪ .‬کنترل زمانی میتواند سنکرون یا آسنکرون باشد‪ .‬شبکههای سنکرون توسط یک ساعت سراسری‬
‫که همه فعالیتهای شبکه را همزمان میکند‪ ،‬کنترل میشوند‪ .‬شبکههای آسنکرون از مکانیزمهای درهمقفلی یا‬
‫دستتکاندهی استفاده میکنند تا دستگاههای کُند و سریع که متقاضی استفاده از شبکه مشابهی هستند را هماهنگ‬
‫کند‪.‬‬

‫یک شبکه می تواند داده را با سوئیچینگ مداری یا سوئیچینگ بسته منتقل کند‪ .‬در سوئیچینگ مداری‪ ،‬وقتیکه‬
‫یک دستگاه یک مسیر در شبکه را بدست میآورد‪ ،‬مسیر را در کل زمان انتقال داده اشغال میکند‪ .‬در سوئیچینگ‬
‫بسته‪ ،‬اطالعات به بستههای کوچک شکسته میشوند و بطور منفرد برای یک مسیر در شبکه رقابت میکنند‪.‬‬

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

‫‪ -1-1-7‬سیستم های گذرگاه سلسله مراتبی‬

‫یک سیستم گذرگاه شامل سلسله مراتبی از گذرگاههایی که سیستم گوناگون و اجزاء زیرسیستم را در یک کامپیوتر‬
‫متصل میکنند‪ ،‬می باشد‪ .‬هر گذرگاه با تعدادی خطوط قدرت‪ ،‬کنترل و سیگنال شکل داده میشود‪ .‬گذرگاههای‬
‫مختلف برای انجام توابع اتصالی مختلف استفاده میشوند‪.‬‬

‫بطور کلی‪ ،‬سلسله مراتب سیستمهای گذرگاه در سطوح مختلف شامل گذرگاههای محلی روی بوردها‪ ،‬گذرگاههای‬
‫صفحه پشتی‪ ،‬و گذرگاههای ورودی‪/‬خروجی همانطور که در شکل ‪2-7‬نشان داده شده است بسته بندی میشوند‪.‬‬

‫گذرگاههای محلی‪ :‬گذرگاههای پیادهسازی شده روی بوردهای مدار‪-‬چاپی‪ ،‬گذرگاههای محلی نامیده میشود‪.‬‬
‫روی یک بورد پردازنده یک گذرگاه محلی‪ ،‬یک مسیر ارتباطی مشترک بین اجزاء عمده (تراشههای) قرار گرفته‬
‫روی بورد را تهیه میکند‪ .‬یک بورد حافظه یک گذرگاه حافظه را برای اتصال حافظه با منطق رابط استفاده میکند‪.‬‬

‫یک بورد ورودی‪/‬خروجی یا بورد رابط شبکه از یک گذرگاه داده استفاده میکند‪ .‬هر کدام از این گذرگاههای بورد‬
‫شامل خطوط سیگنال و مفید میباشند‪ .‬با اشتراک این خطوط توسط دستگاههای ورودی‪/‬خروجی زیاد‪ ،‬لیاوت این‬
‫خطوط ممکن است در الیههای مختلف بورد ‪ PC‬باشند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 378‬‬

‫گذرگاه ‪ :backplane‬یک گذرگاه پشتی یک مدار چاپی است که اتصال دهندههای زیادی در آن استفاده‬
‫شده اند تا به بوردهای عملیاتی وصل شوند‪ .‬یک گذرگاه سیستم شامل مسیرهای سیگنال مشترک و خطوط کاربردی‬
‫روی بورد پشتی ساخته میشود‪ .‬این گذرگاه سیستم مسیر ارتباطی مشترکی بین همه بوردهای ورودی ایجاد میکند‪.‬‬

‫گذرگاه ‪ :I/O‬دستگاههای ورودی‪/‬خروجی به یک سیستم کامپیوتر از طریق یک گذرگاه ورودی‪/‬خروجی مثل‬


‫گذرگاه ‪( SCSI1‬رابط سیستمهای کامپیوتر کوچک) متصل میشوند‪ .‬این گذرگاه از کابلهای کواکسیال با توپیهایی‬
‫که دیسکها‪ ،‬چاپگرها‪ ،‬و واحد نوار را به یک پردازنده از طریق یک کنترلگر ورودی‪/‬خروجی (شکل ‪ )2-7‬متصل‬
‫می کند ساخته شده است‪ .‬منطق رابط خاصی برای اتصال انواع بوردهای گوناگون به گذرگاه بورد پشتی استفاده‬
‫میشود‪.‬‬

‫خواص کامل یک سیستم گذرگاه شامل‪ ،‬خواص منطقی‪ ،‬الکتریکی و مکانیکی‪ ،‬مشخصات کاربردی مختلف و‬
‫نیازهای رابط میباشد‪ .‬مطالعه ما روی منظر کاربردی و منطقی گذرگاههای سیستم پیشرفته تمرکز میکند‪ .‬تأکید‬
‫روی مقیاسپذیری و پشتیبانی گذرگاه برای همبستگی حافظه نهان و همزمانیِ سریع میباشد‪.‬‬
‫وسایل جانبی‬
‫محلی (گذرگاه بورد پردازنده‬ ‫بورد حافظه‬
‫‪)SCSI‬‬
‫‪LM‬‬ ‫‪CPU‬‬ ‫‪IOC‬‬ ‫‪LM‬‬ ‫‪IOC‬‬

‫گذرگاه محلی‬ ‫گذرگاه حافظه‬

‫‪Cache‬‬ ‫‪IF‬‬ ‫‪MC‬‬ ‫‪IF‬‬

‫گذرگاه سیستم (روی ‪(backplane‬‬


‫بورد ‪I/O‬‬ ‫بورد ارتباطی‬

‫‪LM‬‬ ‫‪IOC‬‬ ‫‪IF‬‬ ‫‪CC‬‬ ‫)‪IF (Interface Logic‬‬


‫)‪LM (local Memory‬‬
‫)‪IOC (I/O Controller‬‬
‫)‪MC (Memory Controller‬‬
‫گذرگاه داده‬ ‫گذرگاه داده‬
‫)‪IOP(I/O Processor‬‬
‫‪CC (Communication‬‬
‫)‪Controller‬‬
‫‪Buffer‬‬ ‫‪IF‬‬ ‫‪Buffer‬‬ ‫‪IF‬‬

‫چاپگر یا پالتر واحدهای نوار و دیسک‬ ‫شبکه(اترنت‪ ،‬غیره)‬


‫شکل ‪ :2-7‬سیستمهای گذرگاه در سطح بورد‪ ،‬سطح صفحه پشتی‪ ،‬و سطح ‪I/O‬‬

‫‪1‬‬
‫‪Small Computer System Interface‬‬
‫‪| 379‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫به منظور اینکه به خواننده دادههای طراحی واقعی بدهیم‪ ،‬در زیر چند گذرگاه دیجیتال ساخته شده در ماشینهای‬
‫تجاری را معرفی میکنیم‪ .‬هسته چندپردازنده ‪ Encore Multimax‬گذرگاه نانو است که شامل ‪ 20‬اسالت‪ ،‬یک‬
‫آدرس ‪ 32‬بیتی‪ ،‬یک گذرگاه داده ‪ 64‬بیتی‪ ،‬و یک گذرگاه برداری ‪ 14‬بیتی میباشد و با نرخ ساعت ‪12.5MHZ‬‬
‫کار میکند و پهنای باند حافظه کلی ‪ 100Mbyte/s‬دارد‪.‬‬

‫گذرگاه چندپردازنده ‪ Sequent‬یک گذرگاه داده ‪ 64‬بیتی ‪ ،‬نرخ ساعت‪ 10MHz‬و آدرس ‪ 32‬بیتی دارد و پهنای‬
‫باند کانال ‪ 80Mbytes/s‬را ثمر میدهد‪ .‬یک حافظه نهان خصوصی بازپسنویسی برای کاهش ترافیک گذرگاه‬
‫به ‪ ٪50‬استفاده میشود‪.‬‬

‫گذرگاههای دیجیتال اتصاالت داخلی پایه هستند که در سیستمهای تجاری از ایستگاههای کاری تا مینی کامپیوترها‬
‫تا مین فریمها و چندپردازندهها استفاده میشوند‪ .‬سیستمهای گذرگاه سلسله مراتبی برای ساخت چندپردازندههای‬
‫با اندازه‪-‬متوسط با کمتر از ‪ 100‬پردازنده میتوانند استفاده شوند‪ .‬روش گذرگاه عمدتاً توسط تکنولوژی بستهبندی‬
‫بکارگرفته شده محدود میشود‪ .‬توسعه ‪ FutureBus‬برای توسعه محدودیتهای تحمیلی توسط گذرگاههای‬
‫سنتی مورد انتظار است‪.‬‬

‫گذرگاهها و حافظههای نهان سلسله مراتبی‪ )1987( Wilson :‬یک معماری سلسله مراتبی گذرگاه‪/‬حافظه‬
‫نهان را همانطور که در شکل ‪ 3-7‬نشان داده شده است پیشنهاد کرده است‪ .‬این یک ساختار درختی چندسطحه‬
‫است که نودهای برگ پردازندهها و حافظههای نهان خصوصی آنها میباشند (که در شکل ‪ 3-7‬با ‪ Pj‬و ‪ C1j‬نشان‬
‫داده شدهاند)‪ .‬اینها به چندین خوشه تقسیم شدهاند که هر کدام از طریق یک گذرگاه خوشه متصل شده است‪.‬‬

‫یک گذرگاه بین خوشهای برای تهیه ارتباطات بین خوشهها استفاده میشود‪ .‬حافظههای نهان سطح دو (که با ‪C2j‬‬
‫نشان داده شدهاند) بین هر گذرگاه خوشه و گذرگاه بین خوشه استفاده میشود‪ .‬هر حافظه نهان سطح‪-‬دوم باید‬
‫ظرفیتی داشته باشد که حداقل به بزرگی جمع ظرفیتهای همه حافظههای نهان سطح‪-‬اول که به زیر شاخه آن‬
‫متصل شدهاند باشد‪.‬‬

‫هر خوشه تک به عنوان یک سیستم گذرگاه‪-‬تک کار میکند‪ .‬قراردادهای همبستگی گذرگاه جاسوسی میتوانند‬
‫برای پابرجاکردن سازگاری بین حافظههای نهان سطح‪-‬اول که در یک خوشه مشابه قرار دارند استفاده شوند‪.‬‬
‫حافظههای نهان سطح‪-‬دوم برای توسعه سازگاری از هر خوشه محلی به سطح باالتر استفاده میشوند‪.‬‬

‫حافظههای نهان سطح‪ -‬باالتر از سطح دیگری از حافظه مشترک بین هر خوشه و ماژولهای حافظه اصلی به‬
‫گذرگاه بین خوشه متصلاند‪ .‬اکثر درخواستهای حافظه باید در حافظههای نهان پایینتر برآورده شوند‪ .‬سازگاری‬
‫حافظه نهان بین خوشه بین حافظههای نهان سطح‪-‬دوم کنترل میشوند و اثرات نتیجه به سطح پایینتر ارسال‬
‫میشوند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 380‬‬
‫‪M1‬‬ ‫‪M2‬‬ ‫‪Mm‬‬

‫گذرگاه بین خوشهای‬

‫‪C20‬‬ ‫‪C21‬‬ ‫‪C22‬‬ ‫حافظههای نهان سطح دوم‬

‫گذرگاه خوشه‬

‫‪C10‬‬ ‫‪C11‬‬ ‫‪C12‬‬ ‫‪C13‬‬ ‫‪C14‬‬ ‫‪C15‬‬ ‫‪C16‬‬ ‫‪C17‬‬ ‫‪C18‬‬ ‫حافظههای نهان سطح اول‬

‫‪P0‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P4‬‬ ‫‪P5‬‬ ‫‪P6‬‬ ‫‪P7‬‬ ‫‪P8‬‬

‫شکل ‪ :3-7‬یک معماری حافظه نهان‪/‬گذرگاه سلسله مراتبی برای طراحی چندپردازندههای مقیاسپذیر‬
‫انکور‬
‫‪)1987‬‬ ‫مثال ‪ :1-7‬معماری چندپردازنده آلترامکس‬
‫(ویلسون‬

‫آلترامکس یک معماری گذرگاه‪-‬سلسله مراتبی دوسطحه دارد که در شکل ‪ 4-7‬نشان داده شده است‪ .‬معماری‬
‫آلترامکس بسیار شبیه معماری ویلسون است‪ .‬بجز اینکه نانوباس سراسری فقط برای ارتباطات بین خوشهای استفاده‬
‫میشود‪.‬‬

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

‫‪SC‬‬ ‫‪RS‬‬ ‫‪SC‬‬ ‫‪RS‬‬


‫نانوباس خوشه‬ ‫نانوباس خوشه‬ ‫‪P=Processor‬‬
‫‪PC=Private cache‬‬
‫‪MM=main memory‬‬
‫‪SC=Shared Memory‬‬
‫‪MM‬‬ ‫‪PC‬‬ ‫‪PC‬‬ ‫‪MM‬‬ ‫‪PC‬‬ ‫‪PC‬‬ ‫‪RS=Route Switch‬‬

‫‪P‬‬ ‫‪P‬‬ ‫‪P‬‬ ‫‪P‬‬

‫شکل ‪ :4-7‬معماری چندپردازنده آلترامکس از گذرگاههای سلسله مراتبی با چند خوشه‬


‫کند تراکنشهایی که روی یک گذرگاه محلی شروع‬
‫می که‬
‫استفادهاست‬
‫ایده استفاده از پلهای بین خوشهای چندپردازنده این‬
‫شدهاند بتوانند روی یک گذرگاه دور تکمیل شوند‪ .‬به عنوان مثال در شکل ‪ 5-7‬چند ‪ Futurebus+‬برای ساخت‬
‫یک سیستم خیلی بزرگ شامل سه خوشه چندپردازنده استفاده شدهاند‪.‬‬

‫پلها برای رابط این خوشهها استفاده میشوند‪ ،‬عملیات اصلی یک پل شامل تبدیل قرارداد ارتباطی‪ ،‬راهاندازی وقفه‬
‫در تراکنشهای مجزا‪ ،‬و سرویس دادن به عاملهای حافظه نهان و حافظه میباشد‪ .‬توصیف پلها برای گذرگاه‬
‫‪| 381‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫‪ (IEEE P1014.2) VME‬و ‪ )IEEE P1296.2( Multibus II‬میباشد‪ .‬این ‪ Futurebus+‬را با سایر‬
‫معماریهای گذرگاه سازگار میکند‪.‬‬
‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬

‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬

‫دو ‪FUTURE‬‬
‫‪BUS+‬‬

‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬


‫حافظه‬ ‫حافظه‬

‫پردازنده‬ ‫پل‬ ‫پل‬ ‫پردازنده‬

‫‪FUTURE BUS+‬‬
‫‪CABLE‬‬
‫‪SEGMENT‬‬ ‫پردازنده خاص‬ ‫پردازنده خاص‬
‫پردازنده‬ ‫پردازنده‬ ‫پل‬ ‫پل‬ ‫منظوره‬ ‫منظوره‬

‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫رابط پیام‬ ‫رابط پیام‬ ‫رابط پیام‬

‫‪FUTURE BUS+‬‬ ‫‪FUTURE BUS+‬‬

‫حافظه نهان‬ ‫حافظه نهان‬ ‫رابط پیام‬ ‫رابط پیام‬ ‫رابط پبام‬

‫حافظه‬
‫پردازنده ‪I/O‬‬ ‫فریم بافر‬ ‫پردازنده ‪I/O‬‬ ‫پردازنده ‪I/O‬‬ ‫پردازنده ‪I/O‬‬

‫‪FPPI‬‬ ‫‪SCSI 2/IPI‬‬


‫‪LAN‬‬
‫ارتباط به سوپر‬
‫کامپیوتر‬ ‫مانیتور تصویری‬ ‫‪ISDN‬‬
‫شکل ‪ :5-7‬یک سیستم چندپردازنده بزرگ با استفاده از چند قطعه ‪)1991 ،IEEE( Futurebus+‬‬

‫‪ -2-1-7‬سوئیچ کراسبار و حافظه چندپورت‬

‫شبکههای سوئیچ اتصاالت پویا بین ورودیها و خروجیها را فراهم میکنند‪ .‬شبکههای ارتباطی در فصل ‪ 2‬بطور‬
‫مفصل توضیح داده شدند‪ .‬در اینجا نمونهای از استفاده از این شبکهها را مطرح میکنیم‪ .‬ابتدا شبکههای کراسبار و‬
‫سپس ساختارهای حافظه چندپورته را توصیف میکنیم‪ .‬شبکههای کراسبار اغلب در سیستمهای کوچک یا اندازه‬
‫متوسط استفاده میشوند‪ .‬شبکههای چندسطحه میتوانند به سیستمهای بزرگتر توسعه داده شوند اگر مسأله تأخیر‬
‫افزایشی قابل حل باشد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 382‬‬

‫سطوح شبکه‪ :‬براساس اتصاالت بینسطحی استفاده شده‪ ،‬به یک شبکه تک‪-‬سطحه انتشار مجدد‪ 1‬نیز میگویند‬
‫زیرا ممکن است عناصر مجبور باشند در یک سطح تا چندین مرتبه بچرخند قبل از اینکه به مقصدشان برسند‪.‬‬
‫ساخت یک شبکه تکسطحه ارزان تر است اما ممکن است برای پابرجاشدن اتصاالت خاصی به چندین گذر نیاز‬
‫باشد‪ .‬سازمان سوئیچ کراسبار و حافظه چندپورت هر دو شبکههای تک‪-‬سطحه هستند‪.‬‬

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

‫شبکههای کراسبار‪ :‬در یک شبکه کراسبار‪ ،‬هر پورت ورودی به یک پورت خروجی آزاد از طریق یک سوئیچ‬
‫نقطه تقاطع بدون بلوکه شدن متصل میشود (دایرههای شکل ‪( 26-2‬الف))‪ .‬یک شبکه کراسبار یک شبکه تک‪-‬‬
‫سطحه است که با سوئیچهای یکانی‪ 2‬در نقاط تقاطع ساخته میشود‪.‬‬

‫وقتیکه داده از حافظه خوانده شود‪ ،‬مقدار آن به پردازنده تقاضادهنده از طریق سوئیچ نقطه تقاطع مشابهی برگردانده‬
‫میشود‪ .‬در کل‪ ،‬چنین شبکه کراسباری نیازمند استفاده از ‪ n.m‬سوئیچ نقطه تقاطع است‪ .‬با یک کراسبار مربعی‬
‫(‪ )n=m‬میتوان هر کدام از !‪ n‬جایگشت را بدون بلوکه شدن پیادهسازی کرد‪.‬‬

‫همانطور که گفتیم‪ ،‬یک شبکه سوئیچ کراسبار یک شبکه جایگشت بلوکه نشدنی تک سطحی است‪ .‬هر نقطه تقاطع‬
‫در یک شبکه کراسبار یک سوئیچ یکانی است که میتواند بصورت باز یا بسته تنظیم شود و یک مسیر اتصال نقطه‬
‫به نقطه بین منبع (پردازنده) و مقصد (حافظه) تهیه میکند‪.‬‬

‫همه پردازندهها میتوانند درخواستهای حافظه را بطور مستقل و بطور آسنکرون ارسال کنند‪ .‬این باعث مسأله چند‬
‫درخواست برای یک ماژول حافظه مشابه در یک زمان میشود‪ .‬اجازه دهید عملیات سوئیچینگ نقطه تقاطع را در‬
‫زیر طبقه بندی کنیم‪.‬‬

‫طراحی سوئیچ نقطه تقاطع‪ :3‬از هر ‪ n‬سوئیچ نقطه تقاطع در هر ستون از مش کراسبار ‪ ، n×m‬فقط یکی‬
‫می تواند در هر زمان متصل شود‪ .‬برای حل تداخل برای هر ماژول حافظه‪ ،‬هر سوئیچ نقطه تقاطع باید با سختافزار‬
‫اضافی طراحی شود‪.‬‬

‫بنابراین‪ ،‬هر سوئیچ نقطه تقاطع نیازمند استفاده از تعداد زیادی خطوط اتصالی تولید کننده آدرس‪ ،‬مسیر داده و‬
‫تقریبا برابر با یک گذرگاه دارد‪.‬‬
‫ً‬ ‫سیگنالهای کنترلی است‪ .‬به این معنی که هر سوئیچ نقطه تقاطع پیچیدگی‬

‫‪1‬‬
‫‪recirculate‬‬
‫‪2‬‬
‫‪Unary‬‬
‫‪3‬‬
‫‪Cross point‬‬
‫‪| 383‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫برای یک شبکه کراسبار ‪ ،n×n‬این به این معنی است که مجموعه ‪ n2‬سوئیچ نقطه تقاطع و تعداد زیادی خط مورد‬
‫نیاز است که باعث گرانی سوئیچ کراسبار میشود‪ .‬بنابراین فقط شبکههای کراسبار با ‪ n≤16‬در ماشینهای کراسبار‬
‫ساخته شدهاند‪.‬‬

‫در هر سطر مش کراسبار‪ ،‬چندین سوئیچ نقطه تقاطع میتوانند بطور همزمان متصل شوند‪ .‬انتقال داده همزمان در‬
‫یک کراسبار میتواند بین ‪ n‬جفت پردازنده و حافظه اتفاق افتد‪.‬‬

‫شکل ‪ 6-7‬طرح شماتیک یک سوئیچ نقطه تقاطع در یک شبکه کراسبار را نشان میدهد‪ .‬ماژولهای مالتیپلکسر‬
‫برای انتخاب یکی از ‪ n‬درخواست خواندن یا نوشتن برای سرویس استفاده میشوند‪ .‬هر پردازنده یک درخواست‬
‫مستقل میفرستد و منطق داوری انتخاب را بر اساس عدالت خاص یا قوانین اولویت انجام میدهد‪.‬‬

‫به عنوان مثال‪ ،‬یک سیگنال کنترل ‪ 4‬بیتی برای ‪ n‬پردازنده تولید خواهد شد‪ .‬نکته اینکه ‪ n‬مجموعه داده‪ ،‬آدرس‪،‬‬
‫و خطوط کنترلی خواندن‪/‬نوشتن به ورودی درخت مالتی پلکسر متصل میشوند‪ .‬براساس سیگنال کنترلی رسیده‬
‫شده‪ ،‬فقط یکی از ‪ n‬مجموعه خطوط اطالعاتی به عنوان خروجی درخت مالتی پلکسر انتخاب میشود‪.‬‬
‫داده‬ ‫داده(‪n‬تا)‬

‫ماژولهای‬
‫آدرس‬ ‫آدرس‬
‫مالتیپلکسر‬ ‫‪ N‬پردازنده‬

‫ماژول حافظه‬ ‫خواندن‪/‬نوشتن‬ ‫(یک درخت)‬ ‫خواندن‪/‬نوشتن‬

‫مشترک‬
‫کنترل‬
‫درخواست‬
‫)‪(Mi‬‬ ‫پاسخ‬
‫فعال کردن حافظه‬ ‫درخواست‬
‫منطق داوری‬ ‫پاسخ‬ ‫‪ N‬پردازنده‬
‫درخواست‬
‫پاسخ‬

‫شکل‪ :6-7‬طراحی شماتیک یک سوئیچ نقطه تقاطع در یک شبکه کراسبار‬


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

‫سیگنالهای پاسخ (‪ )ack‬برای تعیین نتیجه داوری به همه پردازندههای متقاضی استفاده میشوند‪ .‬این سیگنالها‬
‫انتقال داده را مقداردهی میکنند و برای جلوگیری از تداخل استفاده میشوند‪ .‬نکته اینکه مسیر داده پابرجا شده به‬
‫منظور هر دو درخواست خواندن و نوشتن در سیکلهای حافظه متفاوت دوطرفه است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 384‬‬

‫محدودیتهای کراسبار‪ :‬یک پردازنده تک میتواند درخواستهای زیادی به چندین ماژول حافظه بفرستد‪.‬‬
‫برای یک شبکه کراسبار ‪ ،n×n‬حداکثر ‪ n‬کلمه حافظه میتواند به حداکثر ‪ n‬پردازنده در هر سیکل حافظه ارائه‬
‫شود‪ .‬ماژولهای حافظه باید برگی شده ‪ n-way‬باشد تا دسترسی همپوش با استفاده از ‪ n‬سیکل ماینور در هر‬
‫سیکل اصلی حافظه مجاز شود‪.‬‬

‫شبکه کراسبار باالترین پهنای باند ‪ n‬انتقال داده در هر سیکل حافظه را در مقایسه با یک انتقال داده در هر سیکل‬
‫گذرگاه فراهم میکند‪ .‬چون همه منطق حل برخورد و سوئیچینگ مورد نیاز در سوئیچ نقطه تقاطع ساخته شده است‪،‬‬
‫رابط پردازنده و منطق پورت حافظه سادهتر و ارزانتر است‪ .‬یک شبکه کراسبار فقط برای ریزپردازندههای کوچک‬
‫با تعداد کمی پردازنده که به تعداد کمی ماژول حافظه دسترسی دارند مقرون به صرفه است‪ .‬یک شبکه کراسبار‬
‫تک‪-‬سطحه وقتی ساخته شد‪ ،‬قابل توسعه نیست‪.‬‬

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

‫حافظه چندپورت‪ :‬چون ساخت شبکه کراسبار در یک سیستم بزرگ مقرون به صرفه نیست‪ ،‬بسیاری از‬
‫چندپردازندههای مینفریم از یک سازمان حافظه چندپورت استفاده میکنند‪ .‬ایده انتقال همه داوری نقطه تقاطع و‬
‫توابع سوئیچینگ مرتبط با هر ماژول حافظه به داخل کنترلر حافظه میباشد‪.‬‬

‫بنابراین ماژول حافظه به خاطر پورتهای دسترسی اضافه شده و منطق مربوطه گرانتر میشود همانطور که در‬
‫شکل‪(7-7‬الف) نشان داده شده است‪ .‬دایرهها در دیاگرام نمایش دهنده ‪ n‬سوئیچ است که به ‪ n‬پورت ورودی هر‬
‫ماژول حافظه وصل شدهاند‪ .‬فقط یکی از درخواستهای پردازنده در هر لحظه پذیرفته میشود‪.‬‬

‫سازمان حافظه چندپورت یک راهحل سازشی بین هزینه‪-‬کم‪ ،‬کارایی کم سیستم گذرگاه و هزینه‪ -‬باال و پهنای باند‬
‫باالی سیستم کراسبار است‪ .‬گذرگاه رقابتی توسط همه پردازندهها و ماژولهای دستگاههای الحاقی اشتراک زمانی‬
‫شده است‪ .‬حافظه چندپورت باید تداخل بین پردازندهها را حل کند‪.‬‬

‫این ساختار حافظه وقتی ‪ n,m‬خیلی بزرگ میشوند گران میشود‪ .‬یک پیکربندی چندپردازنده مین فریم از ‪n=4‬‬
‫پردازنده و ‪ m=16‬ماژول حافظه استفاده میکند‪ .‬یک چندپردازنده چندپورت مقیاسپذیر نیست زیرا وقتی پورتها‬
‫ثابت میشوند پردازندههای بیشتری نمیتوانند بدون طراحی مجدد کنترلر حافظه اضافه شوند‪.‬‬

‫عیب دیگر نیاز به تعداد زیاد کابلهای اتصالی و اتصالدهنده وقتیکه پیکربندی بزرگ میشود‪ ،‬میباشد‪ .‬پورتهای‬
‫هر ماژول حافظه در شکل ‪(7-7‬ب) اولویت بندی شدهاند‪ .‬بعضی پردازندهها‪ CPU ،‬هستند بعضی پردازندههای‬
‫ورودی‪/‬خروجی و بعضی به پردازنده های خاص متصل میشوند‪.‬‬
‫‪| 385‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬
‫‪ n‬پردازنده‬
‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬

‫‪1 2…n‬‬ ‫‪1 2…n‬‬ ‫‪1 2…n‬‬


‫‪M1‬‬ ‫‪M2‬‬ ‫‪Mm‬‬

‫(الف) ماژولهای حافظه ‪-n‬پورته استفاده شده است‪.‬‬


‫‪P1‬‬ ‫‪P2‬‬

‫‪1‬‬ ‫‪1 2‬‬ ‫‪2 1‬‬ ‫‪1‬‬


‫‪M0‬‬ ‫‪M1‬‬ ‫‪M2‬‬ ‫‪M3‬‬
‫‪2‬‬ ‫‪3 4‬‬ ‫‪4 3‬‬ ‫‪2‬‬

‫‪I/O‬‬ ‫‪I/O‬‬

‫(ب) پورتهای حافظه اولویت دار با شماره‬


‫شکل ‪ :7-7‬سازمانهای حافظه چندپورت برای سیستمهای چندپردازنده‬

‫به عنوان مثال چندپردازنده ‪ Univac 1100/94‬شال ‪ 4‬عدد پردازنده‪ 4 ،‬پردازنده ورودی‪/‬خروجی‪ ،‬و دو پردازنده‬
‫برداری علمی است که به ‪ 4‬ماژول حافظه مشترک متصل میشوند هر کدام پورتهای ‪ 10‬راهه دارند‪ .‬دسترسی‬
‫به این پورتها تحت کنترل سیستم عامل اولویت بندی شدهاند‪ .‬در سایر چندپردازندهها‪ ،‬قسمتی از ماژول حافظه‬
‫میتواند با پورتهایی که فقط توسط پردازندههای شخصی قابل دسترسند‪ ،‬خصوصی شود‪.‬‬

‫مسأله نقطه داغ‪ :1‬وقتی که ترافیک شبکه غیریکنواخت باشد‪ ،‬ممکن است یک نقطه داغ مرتبط با یک ماژول‬
‫حافظه خاص که بصورت زیاد توسط پردازندههای زیادی در زمان یکسان دسترسی میشود بوجود آید‪ .‬به عنوان‬
‫مثال‪ ،‬یک متغیر سمافور که به عنوان یک مانع همزمانی استفاده میشود ممکن است یک نقطه داغ باشد زیرا توسط‬
‫تعداد زیادی پردازنده به اشتراک گذاشته میشود‪.‬‬

‫نقاط داغ ممکن است کارایی شبکه را بطور عمدهای تنزل دهند‪ .‬در چندکامپیوتر ‪ NYU Ultra‬و چندپردازنده‬
‫‪ ، IBM RP3‬یک مکانیزم ترکیبی به شبکه امگا اضافه شد‪ .‬هدف ترکیب چندین درخواست که مقصدشان یکی‬
‫بود در نقاط سوئیچ که تداخلها در آنجا اتفاق میافتد میباشد‪.‬‬

‫روش ‪ read-modify-write‬اتمیک )‪ Fetch& Add(x,e‬برای انجام بروزرسانیهای حافظه موازی با‬


‫استفاده از شبکه ترکیبی توسعه داده شد‪.‬‬

‫‪1‬‬
‫‪Hot-spot‬‬
‫کانون نشر علوم‬ ‫‪| 386‬‬

‫‪ :Fetch& Add‬این عمل حافظه اتمیک در پیادهسازی همزمانی ‪ N-way‬با پیچیدگی مستقل از ‪ N‬مفید است‪.‬‬
‫در یک عمل )‪ x ،Fetch&Add(x,e‬یک متغیر صحیح و ‪ e‬یک افزایش صحیح است‪ .‬وقتیکه یک پردازنده‬
‫تک این عمل را انجام میدهد‪ ،‬شماتیک بصورت زیر است‪:‬‬
‫)‪Fetch&Add(x,e‬‬
‫;‪{tempx‬‬
‫;‪xtemp+e‬‬
‫};)‪return(temp‬‬
‫وقتی ‪ N‬پردازه میخواهند )‪ Fetch&Add(x,e‬را روی یک حافظه مشابه بطور همزمان اجرا کنند‪ ،‬با دنبال‬
‫کردن یک مفهوم ترتیبی سازی حافظه فقط یکبار بروز میشود‪ .‬مجموع ‪ N‬جمع ‪ e1+e2+…+eN‬با هر ترتیب‬
‫سریال دلخواه از ‪ N‬درخواست تولید میشود‪.‬‬
‫این جمع به کلمه ‪ x‬حافظه اضافه میشود که یک مقدار جدید ‪ x+e1+e2+…+eN‬ایجاد میکند‪ .‬مقادیر برگشت‬
‫داده شده به ‪ N‬درخواست براساس ترتیب سریال سازی دنبال شده همگی منحصر بفردند‪ .‬نتیجه نهایی مشابه اجرای‬
‫ترتیبی ‪ N‬اجرای ‪ Fetch&Add‬میباشد اما با یک عمل منفرد انجام میشود‪ .‬دو درخواست همزمان همانطور‬
‫که در شکل ‪ 8-7‬نشان داده شده است ترکیب میشوند‪.‬‬
‫)‪Fetch&Add(x,e1‬‬
‫‪Switch‬‬ ‫‪Main Memory‬‬
‫‪P1‬‬
‫)‪Fetch&Add(x,e2‬‬
‫‪P2‬‬ ‫‪x‬‬

‫(الف) دو درخواست به سوئیچ میرسند‪.‬‬

‫‪P1‬‬ ‫‪Switch‬‬ ‫‪Fetch&Add(x,e1+e2) Main Memory‬‬

‫‪P2‬‬ ‫‪e1‬‬ ‫‪x‬‬

‫(ب) سوئیچ جمع ‪ e1+e2‬را شکل میدهد‪ e1 ،‬را در بافر ذخیره میکند و درخواست ترکیبی را به حافظه میفرستد‪.‬‬
‫‪Switch‬‬ ‫‪Main Memory‬‬
‫‪P1‬‬
‫‪x‬‬
‫‪P2‬‬ ‫‪e1‬‬ ‫‪x+e1+e2‬‬

‫(ج)مقدار اصلی ذخیره شده در ‪ x‬به سوئیچ برگردانده میشود و مقدار جدید ‪ x+e1+e2‬در حافظه ذخیره میشود‪.‬‬
‫‪x‬‬ ‫‪Main Memory‬‬
‫‪P1‬‬ ‫‪Switch‬‬
‫‪x+e1‬‬
‫‪P2‬‬ ‫‪x+e1+e2‬‬

‫(د)مقادیر‪ x+e1,x‬به ترتیب به ‪ P2 , P1‬برگردانده میشود‪.‬‬


‫شکل‪ :8-7‬دو عمل ‪ Fetch&Add‬برای دسترسی همزمان به یک متغیر مشترک از طریق یک شبکه ترکیبی‪ ،‬ترکیب میشوند‪.‬‬
‫اگر پردازنده ‪ Ans1Fetch&Add(x,e1) ،P1‬و پردازنده ‪ Ans2Fetch&Add(x,e2) ،P2‬را بطور‬
‫همزمان روی متغیر مشترک ‪ x‬انجام دهند یکی از اعمال زیر انجام میشود‪ .‬اگر درخواست ‪ P1‬جلوتر از ‪ P2‬باشد‬
‫مقادیر زیر برگشت داده میشوند‪:‬‬
‫‪Ans1x‬‬
‫)‪Ans2x+e1 (7-2‬‬
‫‪| 387‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫اگر ترتیب برعکس شود مقادیر زیر برگشت داده میشوند‪:‬‬


‫‪Ans1x+e2‬‬
‫)‪Ans2x (7-3‬‬
‫بدون توجه به ترتیب اجرا‪ ،‬مقدار ‪ x+e1+e2‬در حافظه ذخیره میشود‪ .‬وظیفه باکس سوئیچ است تا جمع ‪e1+e2‬‬
‫را شکل دهد‪ .‬همانطور که در شکل ‪ 8.7‬نشان داده شده است این عمل در ‪ 4‬مرحله اجرا میشود‪ .‬درخواست‬
‫)‪ Fetch&Add(x,e1+e2‬منتقل میشود‪ ،‬مقدار ‪( e1‬یا ‪ )e2‬در یک بافر انتظار سوئیچ ذخیره میشود‪ ،‬و مقادیر‬
‫‪ x‬و ‪ x+e1‬برای برآورده کردن درخواستهای اولیه )‪ Fetch&Add(x,e1‬و )‪ Fetch&Add(x,e2‬به ترتیب‬
‫برگردانده میشود‪.‬‬

‫کاربردها و معایب‪ :‬روش ‪ Fetch&Add‬در دسترسی ترتیبی ساختارهای صف تخصیص داده شده بصورت‬
‫موازی مفید است یا در چندشاخه کردن پردازههای موازی با کد مشابه که روی مجموعه داده مختلف عمل میکنند‪.‬‬
‫اجرای موازی ‪ N‬تکرار مستقل حلقه زیر توسط ‪ P‬پردازنده را در نظر بگیرید‪:‬‬
‫‪Do all N=1 to 100‬‬
‫}‪{code using N‬‬
‫‪End all‬‬
‫هر پردازنده یک ‪ Fetch&Add‬روی ‪ N‬قبل از کارکردن روی تکرارهای خاص در حلقه اجرا میکند‪ .‬در این‬
‫حالت‪ ،‬مقدار منحصر بفردی از ‪ N‬به هر پردازنده برگشت داده میشود که در سگمنت کد استفاده میشود‪ .‬کد برای‬
‫هر پردازنده با مقدار اولیه ‪ N=1‬بصورت زیر است‪:‬‬
‫)‪NFetch&Add(N,1‬‬
‫‪While(n<=100) do all‬‬
‫}‪{ Code using n‬‬
‫)‪nFetch&Add(N,1‬‬
‫‪end all‬‬

‫استفاده از یک شبکه ترکیبی برای پیادهسازی عمل ‪ Fetch&Add‬باعث گران شدن هزینه شبکه میشود‪.‬‬
‫براساس تجربه چندکامپیوتر آلترا ‪ ،NYU‬صف پیام و ترکیب در هر جعبه سوئیچ ‪ 2×2‬دوطرفه هزینه شبکه را با‬
‫فاکتور ‪ 6‬افزایش میدهد‪.‬‬

‫سیکل های سوئیچ اضافی برای اینکه کل یک عمل حافظه اتمیک شود مورد نیاز است‪ .‬این ممکن است باعث‬
‫افزایش قابل توجه تأخیر شبکه شود‪ .‬شبکههای ترکیبی چندسطحه پتانسیل پشتیبانی از چندپردازندههای مقیاس‬
‫بزرگ با هزاران پردازنده را دارند‪ .‬مسأله افزایش هزینه و تأخیر ممکن است با استفاده از تکنولوژی سوئیچ سریعتر‬
‫و ارزانتر‪ ،‬حل شود‪.‬‬

‫شبکههای چندسطحه در سیستمهای واقعی‪ IBM RP3 :‬برای دربرگرفتن ‪ 512‬پردازنده با استفاده از‬
‫شبکه امگای سرعت باال برای خواندنها یا نوشتنها و یک شبکه ترکیبی برای همزمانی استفاده از عمل‬
‫کانون نشر علوم‬ ‫‪| 388‬‬

‫‪ Fetch&Add‬طراحی شد‪ .‬یک شبکه امگای ‪ 128‬پورت در ‪ RP3‬پهنای باند ‪ 13GB/s‬با استفاده از ساعت‬
‫‪ 50MHz‬برآورده میکند‪.‬‬

‫شبکههای امگای چندسطحه همچنین در چندپردازنده ‪ )1986 Kuck( Cedar‬در دانشگاه ایلینویز و در‬
‫آلتراکامپیوتر (‪ )Guttlieb 1983‬در دانشگاه نیویورک استفاده شدند‪.‬‬

‫پردازنده باترفالی ‪ )TC2000( BBN‬از ماژولهای سوئیچ کراسبار ‪ 8×8‬برای ساخت یک شبکه باترفالی ‪64×64‬‬
‫دو سطحه برای یک سیستم ‪-64‬پردازنده و از یک سوئیچ باترفالی سه سطحه ‪( 512×512‬فصل دو) برای یک‬
‫سیستم ‪ 512‬پردازنده در سری ‪ TC2000‬استفاده میکند‪ .‬با سختافزار سوئیچ با ساعت ‪ 38MHz‬با گذرگاه داده‬
‫‪ 1‬بایتی حداکثر پهنای باند بین پردازنده برای یک ‪ 64 ،TC2000‬پردازنده ‪ 2.4GB/s‬میباشد‪.‬‬

‫چندپردازنده ‪ CRAY Y-MP‬از بانکهای حافظه برگی شده ‪ 128 ،64‬یا ‪ 256‬راهه استفاده میکند که هر کدام‬
‫میتوانند از طریق ‪ 4‬پورت دسترسی شوند‪ .‬شبکههای کراسبار بین پردازندهها و بانکهای حافظه در چندپردازندههای‬
‫‪ Cray‬استفاده میشوند‪.‬‬
‫‪ Aliant FX/2800‬از اتصاالت داخلی کراسبار بین ‪ 7‬مدار ‪-4‬پردازنده (‪ )i860‬به اضافه یک بورد ورودی‪/‬خروجی‬
‫و ‪ 8‬بورد حافظه نهان مشترک برگی شده که به حافظه فیزیکی از طریق یک گذرگاه حافظه متصل هستند استفاده‬
‫میکند‪.‬‬

‫‪ -2-7‬مکانیزمهای همزمانی و همبستگی حافظه نهان‪ :‬قراردادهای همبستگی حافظه نهان برای حل‬
‫مشکل عدم سازگاری چند حافظه نهان در زیر مورد توجه قرار میگیرند‪ .‬قراردادهای جاسوسی برای سیستمهای‬
‫متصل شده‪-‬با گذرگاه طراحی شدند‪ .‬قراردادهای براساس دایرکتوری به سیستمهای متصل شده با شبکه اعمال‬
‫شدند‪ .‬در انتها پشتیبانی سختافزاری برای همزمانی سریع را مطالعه میکنیم‪.‬‬

‫‪ -1-2-7‬مسأله همبستگی حافظه نهان‪ :‬در یک سلسله مراتب حافظه برای یک سیستم چندپردازنده‪ ،‬ناسازگاری‬
‫داده ممکن است بین سطوح همسایه یا بین یک سطح مشابه اتفاق بیافتد‪ .‬به عنوان مثال‪ ،‬حافظه اصلی و حافظه‬
‫نهان ممکن است شامل کپیهای ناسازگار از شیء داده مشابهی باشند‪ .‬چندین حافظه نهان ممکن است کپیهای‬
‫متفاوت از بلوک حافظه مشابهی را نگه دارند زیرا چندپردازنده بطور آسنکرون و مستقل کار میکنند‪.‬‬

‫حافظههای نهان در یک محیط چندپردازشی‪ ،‬مسأله همبستگی حافظه نهان را معرفی میکنند‪ .‬وقتیکه چند پردازنده‬
‫کپیهای محلی از یک مکان مشترک حافظه منحصر بفرد را نگه میدارند‪ ،‬هر اصالح محلی از آن مکان میتواند‬
‫باعث نمایشی ناسازگار و سراسری از حافظه شود‪ .‬شماتیک همبستگی حافظه نهان از این مسأله با نگه داری یک‬
‫حالت یکنواخت برای هر بلوک حافظه نهان داده جلوگیری میکند‪ .‬ناسازگاریهای حافظه نهان با اشتراک داده‪،‬‬
‫مهاجرت پردازه‪ ،‬یا ورودی‪/‬خروجی تولید میشود و در زیر توضیح داده میشوند‪.‬‬
‫‪| 389‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫ناسازگاری در اشتراک داده‪ :‬مسأله ناسازگاری حافظه نهان فقط وقتیکه چند حافظه نهان خصوصی استفاده‬
‫میشوند اتفاق می افتد‪ .‬در کل‪ ،‬سه منبع برای مشکل وجود دارد‪ :‬اشتراک داده قابل نوشتن‪ ،‬مهاجرت پردازه‪ ،‬و‬
‫فعالیت ورودی‪/‬خروجی‪ .‬شکل ‪ 9-7‬مشکالت اتفاق افتاده توسط دو منبع اول را نشان میدهد‪ .‬یک چندپردازنده با‬
‫دو پردازنده را در نظر بگیرید‪ .‬هر کدام از یک حافظه نهان خصوصی استفاده میکنند و هر دو حافظه اصلی را‬
‫مشترکاً استفاده میکنند‪ .‬اجازه دهید ‪ X‬یک عنصر داده مشترک باشد که توسط هر دو پردازنده مورد رجوع قرار‬
‫گرفته است‪ .‬قبل از برزورسانی‪ ،‬سه کپی ‪ X‬سازگار هستند‪.‬‬
‫اگر پردازنده ‪ P1‬داده جدید ’‪ X‬را در حافظه نهان بنویسد‪ ،‬کپی مشابهی فوراً در حافظه مشترک با استفاده از سیاست‬
‫‪ WT‬نوشته خواهد شد‪ .‬در این حالت ناسازگاری بین دو کپی (’‪ )X,X‬در دو حافظه نهان (شکل‪(9-7‬الف)) اتفاق‬
‫میافتد‪.‬‬
‫وقتیکه سیاست ‪ WB‬استفاده میشود هنوز هم ممکن است ناسازگاری اتفاق بیافتد (شکل ‪(9-7‬الف))‪ .‬باالخره‬
‫حافظه اصلی وقتیکه داده اصالح شده در حافظه نهان جایگزین شود یا نامعتبر شود بروز میشود‪.‬‬

‫مهاجرت پردازه و ‪ :I/O‬در سمت راست شکل‪(9-7‬ب) ظهور ناسازگاری بعد از اینکه یک پردازه شامل متغیر‬
‫مشترک ‪ X‬از پردازنده ‪ 1‬به پردازنده ‪ 2‬مهاجرت کند با استفاده از حافظه نهان ‪ WB‬نشان داده شده است‪ .‬در وسط‬
‫یک پردازه از پردازنده ‪ 2‬به پردازنده ‪ 1‬وقتی حافظه نهان از سیاست ‪ WT‬استفاده میکند را نشان میدهد‪.‬‬

‫در هر دو حالت ناسازگاری بین دو کپی حافظه نهان که با ’‪ X,X‬برچسب خوردهاند اتفاق میافتد‪ .‬احتیاطهای خاصی‬
‫باید به منظور جلوگیری از اینچنین ناسازگاریهایی بهکار برد‪ .‬یک قراردارد همبستگی باید قبل از اینکه پردازهها‬
‫بتوانند به سالمت از یک پردازنده به دیگری مهاجرت کنند برقرار شود‪.‬‬
‫‪ P1‬پردازندهها‬ ‫‪P2‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪ P1‬پردازندهها‬ ‫‪P2‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P1‬‬ ‫‪P2‬‬

‫‪ X‬حافظههای‬ ‫‪X‬‬ ‫’‪X‬‬ ‫‪X‬‬ ‫’‪X‬‬ ‫‪X‬‬ ‫‪ X‬حافظههای‬ ‫‪X‬‬ ‫’‪X‬‬ ‫’‪X‬‬ ‫‪X‬‬
‫نهان‬ ‫نهان‬
‫گذرگاه‬ ‫گذرگاه‬

‫حافظه‬ ‫‪X‬‬ ‫’‪X‬‬ ‫‪X‬‬ ‫حافظه‬ ‫‪X‬‬ ‫’‪X‬‬ ‫‪X‬‬


‫قبل از بروز رسانیمشترک‬ ‫نوشتن سراسری‬ ‫بازپس نویسی‬ ‫قبل از مهاجرت مشترک‬ ‫نوشتن سراسری‬ ‫بازپس نویسی‬

‫(الف) ناسازگاری در اشتراک داده قابل نوشتن‬ ‫(ب) ناسازگاری بعد از مهاجرت پردازهها‬
‫شکل ‪ :9-7‬مسائل همبستگی حافظه نهان در اشتراک داده و مهاجرت پردازه‬
‫مشکالت ناسازگاری ممکن است در طول اعمال ورودی‪/‬خروجی که از حافظههای نهان گذر میکنند اتفاق بیافتد‪.‬‬
‫وقتیکه یک پردازنده ورودی‪/‬خروجی داده جدید ’‪ X‬را به حافظه اصلی بار میکند‪ ،‬با عبور از حافظههای نهان ‪WT‬‬
‫(وسط شکل ‪(10-7‬الف)) ناسازگاری بین حافظه نهان و حافظه مشترک اتفاق میافتد‪ .‬وقتیکه یک داده مستقیماً‬
‫از حافظه مشترک (بایپس حافظه نهان) خارج میشود‪ ،‬حافظههای نهان ‪ WB‬نیز ناسازگاری ایجاد میکنند‪.‬‬

‫یک روش حل مشکل ناسازگاری ورودی‪/‬خروجی الحاق پردازندههای ورودی‪/‬خروجی (‪ )IOP2, IOP1‬به حافظه‪-‬‬
‫های نهان خصوصی (‪ )C2, C1‬بترتیب همانطور که در شکل ‪(10-7‬ب) نشان داده شده است میباشد‪ .‬در این روش‬
‫کانون نشر علوم‬ ‫‪| 390‬‬

‫پردازندههای ورودی‪/‬خروجی با پردازنده‪ ،‬حافظه نهان را مشترک استفاده میکنند‪ .‬سازگاری حافظه نهان میتواند‬
‫حفظ شود اگر سازگاری حافظه نهان به حافظه نهان از طریق گذرگاه حفظ شود‪ .‬عیب بدیهی این شماتیک امکان‬
‫افزایش انحراف حافظه نهان و محلیت دادهی ورودی‪/‬خروجی ضعیف میباشد که ممکن است باعث افزایش نرخ‬
‫فقدان شود‪.‬‬

‫دو روش قراردادی‪ :‬بسیاری از چندپردازندههای قابل دسترس تجاری از سیستمهای حافظه براساس گذرگاه‬
‫استفاده می کنند‪ .‬یک گذرگاه یک دستگاه مناسب برای اطمینان از همبستگی حافظه نهان است زیرا به همه‬
‫پردازندهها در سیستم اجازه میدهد که تراکنشهای جاری حافظه را مشاهده کنند‪ .‬اگر یک تراکنش گذرگاه حالت‬
‫سازگاری یک شیء ذخیره شده در حافظه نهان محلی را تهدید کند‪ ،‬کنترل کننده حافظه نهان میتواند عمل مناسب‬
‫را برای نامعتبر کردن کپی محلی انجام دهد‪ .‬قراردادهایی که از این مکانیزم استفاده میکنند تا همبستگی حافظه‬
‫نهان را اطمینان دهند قراردادهای جاسوسی‪ 1‬نامیده میشوند زیرا هر حافظه نهان روی تراکنشهای سایر حافظههای‬
‫نهان جاسوسی میکند‪.‬‬

‫سیستمهای چندپردازنده مقیاسپذیر‪ ،‬پردازندهها را با استفاده از سیمهای نقطه به نقطه بطور مستقیم یا شبکههای‬
‫چندسطحه متصل میکنند‪ .‬برخالف حالت گذرگاه‪ ،‬وقتیکه پردازندههای بیشتری به این سیستمها اضافه شوند‪،‬‬
‫پهنای باند این شبکهها افزایش مییابد‪ .‬به هر حال‪ ،‬اینچنین شبکههایی مکانیزم جاسوسی مناسبی ندارند و قابلیت‬
‫پخش مؤثری را فراهم نمیکنند‪ .‬در چنین سیستمهایی‪ ،‬مشکل همبستگی حافظه نهان میتواند با استفاده از انواع‬
‫مختلف شماتیکهای دایرکتوری حل شود‪.‬‬

‫در حالت کلی‪ ،‬یک قرارداد همبستگی حافظه نهان شامل مجموعهای از حالتهای ممکن در حافظههای نهان‬
‫محلی‪ ،‬حالت حافظه مشترک‪ ،‬و انتقال حالت انجام شده با پیامهای منتقل شده از طریق شبکه اتصالی به منظور‬
‫نگه داشتن همبستگی حافظه نهان میباشد‪ .‬در زیر ابتدا قراردادهای جاسوسی و سپس قراردادهای براساس‬
‫دایرکتوری را توصیف میکنیم‪ .‬این قراردادها روی نرمافزار‪ ،‬سختافزار یا ترکیبی از هر دو برای پیادهسازی تکیه‬
‫دارند‪ .‬همبستگی حافظه نهان میتواند در یک ‪ TLB‬یا به کمک کامپایلر اجرا شود‪.‬‬

‫‪ -2-2-7‬قراردادهای جاسوسی گذرگاه‬

‫در استفاده از حافظههای نهان خصوصی انجمنی با پردازندههایی که به یک گذرگاه مشترک متصل هستند دو روش‬
‫برای حفظ سازگاری حافظه نهان ارائه شده است‪ :‬سیاست نوشتن‪-‬نامعتبر‪ 2‬و نوشتن‪-‬بروزرسانی‪ .3‬سیاست نوشتن‪-‬‬
‫نامعتبر همه کپیهای دور را وقتیکه یک بلوک حافظه نهان محلی بروز میشود نامعتبر میکند‪ .‬سیاست نوشتن‪-‬‬
‫بروزرسانی بلوک داده جدید را به همه حافظههای نهانی که یک کپی از آن دارند پخش میکند‪.‬‬

‫‪1‬‬
‫‪Snoopy Protocols‬‬
‫‪2‬‬
‫‪Write-invalidate‬‬
‫‪3‬‬
‫‪Write-update‬‬
‫‪| 391‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫قراردادهای جاسوسی به سازگاری داده بین حافظههای نهان و حافظه مشترک بوسیله یک مکانیزم تماشای گذرگاه‬
‫میرسند‪ .‬همانطور که در شکل ‪ 11-7‬نشان داده شده است‪ ،‬دو قرارداد جاسوسی گذرگاه نتایج متفاوتی ایجاد‬
‫میکنند‪ .‬فرض کنید سه پردازنده (‪ )Pn, P2, P1‬کپیهای سازگار از ماژول حافظه‪-‬مشترک که با ‪ X‬عالمت زده‬
‫شده است را نگه میدارند‪.‬‬

‫با استفاده از قرارداد نوشتن‪-‬نامعتبر‪ ،‬پردازنده ‪ P1‬حافظه نهان خودش را از ‪ X‬به ’‪ X‬اصالح میکند و همه سایر‬
‫کپیها از طریق گذرگاه نامعتبر میشوند (در شکل ‪(11-7‬ب) با ‪ I‬نشان داده شده است)‪ .‬به بلوکهای نامعتبر گاهی‬
‫اوقات کثیف‪ 1‬میگویند به این معنی که نباید استفاده شوند‪ .‬قرارداد نوشتن‪-‬بروزرسانی (شکل ‪(11-7‬ج)) محتوای‬
‫جدید بلوک ’‪ X‬را به همه کپیهای حافظه نهان از طریق گذرگاه پخش میکند‪.‬‬

‫اگر حافظههای نهان نوشتن‪-‬سراسری استفاده شوند‪ ،‬کپی حافظه نیز بروز میشود‪ .‬در استفاده از حافظههای نهان‬
‫بازپسنویسی‪ ،‬کپی حافظه بعداً در زمان جایگزینی بلوک بروز میشود‪.‬‬

‫در حافظههای نهان ‪ ، WT‬حاالت یک کپی بلوک حافظه نهان با عملیات خواندن‪ ،‬نوشتن و جایگزینی در حافظه‬
‫نهان عوض میشود‪ .‬شکل ‪ 12-7‬انتقالهای حالت دو قرارداد جاسوسی نوشتن‪-‬نامعتبر برای حافظههای نهان ‪WT‬‬
‫و بازپسنویسی را به ترتیب نشان میدهد‪ .‬یک کپی بلوک از حافظه نهان نوشتن سراسری ‪ i‬الحاق شده به پردازنده‬
‫‪ i‬میتواند یکی از دو حالت حافظه نهان معتبر یا نامعتبر را داشته باشد (شکل ‪(12-7‬الف))‪.‬‬

‫‪X‬‬ ‫حافظه‬ ‫’‪X‬‬ ‫حافظه‬


‫مشترک‬ ‫مشترک‬
‫گذرگاه‬ ‫گذرگاه‬

‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫حافظههای نهان‬ ‫’‪X‬‬ ‫‪I‬‬ ‫‪I‬‬ ‫حافظههای نهان‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬ ‫پردازندهها‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬ ‫پردازندهها‬

‫(الف) کپیهای سازگار از بلوک ‪ X‬در حافظه مشترک و سه حافظه نهان پردازنده‬ ‫(ب) بعد از یک عمل نوشتن‪-‬نامعتبر توسط ‪P1‬‬

‫’‪X‬‬ ‫حافظه‬
‫مشترک‬
‫گذرگاه‬

‫’‪X‬‬ ‫’‪X‬‬ ‫’‪X‬‬ ‫حافظههای نهان‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬ ‫پردازندهها‬

‫(ج) بعد از یک عمل نوشتن‪-‬بروزرسانی توسط ‪P1‬‬


‫شکل ‪ :11-7‬قرادادهای همبستگی نوشتن‪-‬نامعتبر و نوشتن‪-‬بروزرسانی برای حافظههای نهان ‪WT‬‬

‫‪1‬‬
‫‪dirty‬‬
‫کانون نشر علوم‬ ‫‪| 392‬‬

‫یک پردازنده دور را با ‪ j‬نشان میدهیم و ‪ .i#j‬برای هر یک از دو حالت حافظه نهان‪ ،‬شش رخداد ممکن است اتفاق‬
‫بیافتد‪ .‬نکته اینکه همه کپی های حافظه نهان از یک بلوک مشابه یک گراف انتقالی در ایجاد تغییر حالت استفاده‬
‫میکنند‪.‬‬
‫در یک حالت معتبر (شکل ‪(12-7‬الف))‪ ،‬همه پردازندهها میتوانند بطور امن بخوانند ()‪ .)R(i), R(j‬همچنین پردازنده‬
‫محلی ‪ i‬میتواند بطور امن در یک حالت امن بنویسد ()‪ .)W(i‬حالت نامعتبر مرتبط با حالتی است که بلوک نامعتبر‬
‫شود یا جایگزین شود ()‪ z(i‬یا )‪ .)z(j‬هر وقت یک پردازنده دور در کپی حافظه نهان خودش بنویسد ()‪ ،)w(j‬همه‬
‫سایر کپیهای حافظه نهان نامعتبر میشوند‪ .‬یک بلوک حافظه نهان در حافظه نهان ‪ i‬معتبر میشود هرگاه یک‬
‫خواندن ()‪ )R(i‬یا نوشتن ()‪ )w(i‬موفق توسط یک پردازنده محلی ‪ i‬انجام شود‪.‬‬
‫)‪R(i), W(i‬‬
‫)‪R(j‬‬
‫)‪R(i‬‬
‫)‪W(j‬‬ ‫نامعتبر‬ ‫معتبر‬ ‫)‪W(i‬‬
‫)‪Z(i‬‬
‫)‪R(j‬‬
‫)‪Z(j‬‬ ‫)‪Z(i),W(j‬‬ ‫)‪Z(j‬‬

‫(الف) حافظه نهان ‪WT‬‬


‫‪:‬راهنما‬
‫)‪R(i‬‬ ‫)‪R(j‬‬ ‫)‪R(i‬‬
‫)‪W(i‬‬ ‫‪R(j) RW: read-write‬‬
‫‪RW‬‬ ‫‪RO‬‬
‫)‪Z(j‬‬ ‫‪Z(j) RO: Read Only‬‬
‫)‪W(i‬‬ ‫‪INV: Invalidated or not in cache‬‬
‫‪W(i)= write to block by processor i‬‬
‫)‪R(i‬‬ ‫‪R(i)=Read block by processor i‬‬
‫)‪W(j‬‬ ‫)‪W(j‬‬ ‫‪Z(i)= Replace block in cache i‬‬
‫)‪W(i‬‬
‫)‪Z(i‬‬ ‫)‪Z(i‬‬ ‫‪W(j)= Write to block copy in cache j by processor j#i‬‬
‫‪R(j)= read block copy in cache j by processor j#i‬‬
‫‪INV‬‬ ‫‪Z(j)=Replace block copy in cache j#i‬‬

‫)‪R(j),W(j),Z(j),Z(i‬‬
‫(ب) حافظه نهان ‪WB‬‬
‫شکل ‪ :12-7‬دو گراف انتقال حالت برای یک بلوک حافظه نهان با استفاده از قرادادهای جاسوسی نوشتن‪-‬نامعتبر‬
‫درصد سیکلهای نوشتن روی گذرگاه از درصد سیکلهای خواندن در یک حافظه نهان ‪ WT‬بیشتر است زیرا نیاز‬
‫به تقاضای نامعتبرسازی است‪ .‬دایرکتوری حافظه نهان (ثبت حاالت حافظه نهان) میتواند بصورت دو کپی یا دو‬
‫پورت ایجاد شود تا اکثر نامعتبرسازیها را فیلتر کند‪.‬‬

‫حافظههای نهان بازپسنویسی‪ :‬حالت معتبر در یک حافظه نهان بازپسنویسی میتواند به دو حالت حافظه‬
‫نهان تقسیم شود که با ‪( RW‬خواندن‪-‬نوشتن) و ‪( RO‬فقط خواندنی) در شکل ‪(12-7‬ب) نشان داده شده است‪.‬‬
‫حالت حافظه نهان ‪( INV‬نامعتبر شده یا عدم وجود حافظه نهان) معادل با حالت نامعتبر فوق میباشد‪ .‬این شماتیک‬
‫همبستگی سه‪-‬حالته متناسب با یک قرارداد مالکیت میباشد‪.‬‬
‫‪| 393‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫وقتیکه حافظه مالک یک بلوک است‪ ،‬حافظههای نهان فقط میتوانند کپیهای ‪ RO‬از بلوک حافظه نهان را داشته‬
‫باشند‪ .‬به عبارت دیگر‪ ،‬چندین کپی ممکن است در حالت ‪ RO‬موجود باشد و هر پردازنده که یک کپی دارد ( به آن‬
‫نگه دارندهی کپی میگویند) میتواند کپی را بصورت امن بخواند ()‪.)R(i),R(j‬‬

‫وضعیت وقتی وارد حالت ‪ INV‬میشود که یک پردازنده دور کپی محلیش را بنویسد ()‪ )W(j‬یا پردازنده محلی‬
‫کپی خودش را جایگزین کند ()‪ .)z(i‬حالت ‪ RW‬مرتبط با حالتی است که فقط یک کپی حافظه نهان در کل‬
‫سیستم وجود دارد که توسط پردازنده ‪ i‬تصاحب شده است‪ .‬خواندن ()‪ )R(i‬و نوشتن ()‪ )W(i‬میتواند بطور امن در‬
‫حالت ‪ RW‬انجام شود‪ .‬چه از حالت ‪ RO‬یا ‪ INV‬بلوک حافظه نهان بطور منحصر بفرد تصاحب میشود وقتیکه‬
‫یک نوشتن محلی ()‪ )w(i‬اتفاق بیافتد‪.‬‬

‫سایر انتقال حالتها در شکل‪(12-7‬ب) میتواند بطور مشابه رسم شود‪ .‬قبل از اینکه یک بلوک اصالح شود‪ ،‬تصاحب‬
‫باید توسط یک تراکنش گذرگاه فقط‪-‬خواندنی که به همه حافظههای نهان و حافظه پخش میشود‪ ،‬بطور انحصاری‬
‫انجام شود‪ .‬اگر یک کپی بلوک اصالح شده در یک حافظه نهان دور وجود داشته باشد‪ ،‬ابتدا باید حافظه بروز شود‪،‬‬
‫کپی نامعتبر شود و تصاحب به حافظه نهان درخواست شده منتقل شود‪.‬‬

‫قرارداد نوشتن‪-‬یکبار‪ )1983( James Goodman :1‬یک قرارداد همبستگی حافظه نهان برای‬
‫چندپردازندههای براساس گذرگاه پیشنهاد داد‪ .‬این شماتیک مزایای هر دو روش نامعتبر سازی بازپسنویسی و ‪WT‬‬
‫را ترکیب میکند‪ .‬به منظور کاهش ترافیک گذرگاه‪ ،‬اولین نوشتن بلوک حافظه نهان از سیاست ‪ WT‬استفاده میکند‪.‬‬

‫این منتج به یک کپی حافظه سازگار خواهد شد در حالیکه همه کپیهای سایر حافظههای نهان نامعتبر شدهاند‪ .‬بعد‬
‫از اولین نوشتن‪ ،‬حافظه مشترک با استفاده از یک سیاست بازپسنویسی بروز میشود‪ .‬این شماتیک میتواند توسط‬
‫گراف انتقال چهار‪-‬حالته نشان داده شده در شکل ‪ 13-7‬توصیف شود‪ .‬چهار حالت حافظه نهان در زیر تعریف‬
‫میشوند‪:‬‬
‫‪Write- Inv/Read-Inv‬‬
‫‪P-Read‬‬

‫نامعتبر‬ ‫‪P-Read‬‬ ‫معتبر‬

‫‪Read-Inv‬‬ ‫‪Read-Blk‬‬ ‫‪P-Write‬‬


‫‪Read-Inv‬‬

‫‪Read-Blk‬‬

‫کثیف‬ ‫رزرو‬
‫‪P-Write‬‬

‫‪P-Write‬‬ ‫خطوط توپر‪ :‬دستور منتشر شده توسط پردازنده محلی‬


‫خط‪-‬چینها‪ :‬دستورات منتشر شده توسط پردازندههای دور از طریق گذرگاه‬

‫شکل ‪ :13-7‬قراداد نوشتن‪-‬یک بار در حافظه نهان گودمن با استفاده از سیاست نوشتن‪-‬نامعتبر روی حافظههای نهان ‪WB‬‬

‫‪1‬‬
‫‪Write once‬‬
‫کانون نشر علوم‬ ‫‪| 394‬‬

‫معتبر‪ :‬بلوک حافظه نهان‪ ،‬که سازگار با کپی حافظه است‪ ،‬از حافظه مشترک خوانده شده است و هنوز‬ ‫•‬
‫اصالح نشده است‪.‬‬
‫نامعتبر‪ :‬بلوک در حافظه نهان پیدا نمیشود یا با کپی حافظه ناسازگار است‪.‬‬ ‫•‬
‫رزرو‪ :‬داده از زمانی که از حافظه مشترک خوانده شده است‪ ،‬دقیقاً یکبار نوشته شده است‪ .‬کپی حافظه‬ ‫•‬
‫نهان با کپی حافظه سازگار است‪.‬‬
‫کثیف‪ :‬بلوک حافظه نهان بیشتر از یکبار اصالح شده است (نوشته شده است) و کپی حافظه نهان فقط‬ ‫•‬
‫یکی در سیستم وجود دارد (بنابراین با همه سایر کپیها ناسازگار است)‪.‬‬

‫به منظور حفظ سازگاری‪ ،‬قرارداد نیازمند دو مجموعه دستور متفاوت است‪ .‬خطوط توپر در شکل ‪ 13-7‬مرتبط با‬
‫دستورات دسترسی منتشر شده توسط یک پردازنده محلی است که با ‪ write-hit ،read-miss‬و ‪write-‬‬
‫‪ miss‬برچسب خوردهاند‪ .‬هرگاه یک ‪ read-miss‬اتفاق بیافتد به حالت معتبر وارد میشود‪.‬‬

‫اولین ‪ write-hit‬منجر به حالت رزرو میشود‪ .‬دومین ‪ write-hit‬منجر به حالت کثیف میشود و همه ‪write-‬‬
‫‪ hit‬های دیگر در حالت کثیف باقی میماند‪ .‬هر وقت که یک ‪ write-miss‬اتفاق افتاد‪ ،‬بلوک حافظه نهان وارد‬
‫حالت کثیف میشود‪.‬‬

‫خطچینها مرتبط با دستورات نامعتبر میباشند که توسط پردازندههای دور از طریق جاسوسی گذرگاه منتشر میشوند‪،‬‬
‫دستور ‪ read-invalidate‬یک بلوک را میخواند و همه سایر کپیها را نامعتبر میکند‪ .‬دستور ‪write-‬‬
‫‪ invalidate‬همه سایر کپیهای یک بلوک را نامعتبر میکند‪ .‬دستور ‪ bus-read‬مرتبط با یک خواندن حافظه‬
‫نرمال است که توسط یک پردازنده دور از طریق گذرگاه انجام میشود‪.‬‬

‫رخدادها و عملیات حافظه نهان‪ :‬دسترسی‪-‬حافظه و دستورات نامعتبر رخدادها و عملیات زیر را تریگر میکنند‪:‬‬

‫فقدان‪-‬خواندن‪ :‬وقتیکه یک پردازنده میخواهد یک بلوک را بخواند که در حافظه نهان نیست یک ‪read-‬‬
‫‪ miss‬اتفاق میافتد‪ .‬یک عمل ‪ bus-read‬مقداردهی اولیه میشود‪ .‬اگر کپی کثیفی وجود نداشته باشد‪ ،‬آنگاه‬
‫حافظه اصلی کپی سازگار دارد و یک کپی را برای حافظه نهان درخواست دهنده فراهم میکند‪ .‬اگر یک کپی کثیف‬
‫در یک حافظه نهان دور وجود داشته باشد‪ ،‬آن حافظه نهان حافظه اصلی را منع میکند و یک کپی را به حافظه‬
‫نهان درخواست دهنده میفرستد‪ .‬در همه حاالت‪ ،‬کپی حافظه نهان بعد از یک فقدان‪-‬خواندن وارد حالت معتبر‬
‫میشود‪.‬‬

‫اصابت نوشتن‪ :‬اگر کپی در حالت کثیف یا رزرو باشد‪ ،‬نوشتن میتواند بطور محلی انجام شود و حالت جدید‬
‫‪ dirty‬خواهد بود‪ .‬اگر حالت جدید معتبر باشد‪ ،‬دستور نوشتن‪-‬نامعتبر به همه حافظههای نهان پخش میشود و‬
‫سایر کپیها را نامعتبر میکند‪ .‬حافظه مشترک بطور سراسری نوشته میشود و حالت منتج بعد از این اولین نوشتن‪،‬‬
‫رزرو میشود‪.‬‬
‫‪| 395‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫فقدان‪-‬نوشتن‪ :‬وقتی که یک پردازنده برای نوشتن در حافظه نهان محلی دچار خطا شود‪ ،‬کپی باید یا از حافظه‬
‫اصلی یا از حافظه نهان دور با بلوک کثیف آورده شود‪ .‬این با ارسال یک دستور خواندن‪-‬نامعتبر خاتمه مییابد که‬
‫همه کپیهای حافظه نهان را نامعتبر میکند‪ .‬کپی محلی بروز میشود و حالت کثیف خاتمه مییابد‪.‬‬

‫اصابت‪-‬خواندن‪ :‬این دستور همیشه در یک حافظه نهان محلی انجام میشود بدون ایجاد انتقال حالت یا استفاده‬
‫از جاسوسی گذرگاه برای نامعتبرسازی‪.‬‬

‫جایگزینی بلوک‪ :‬اگر یک کپی کثیف باشد‪ ،‬باید به حافظه اصلی توسط جایگزینی بلوک نوشته شود‪ .‬اگر کپی‬
‫تمیز باشد (حالت معتبر‪ ،‬رزرو یا حالت نامعتبر)‪ ،‬هیچ جایگزینی اتفاق نمیافتد‪.‬‬

‫قرارداد یکبار نوشتن گودمن نیازمند خطوط گذرگاه خاصی میباشد تا وقتیکه کپی حافظه نامعتبر باشد حافظه اصلی‬
‫را منع کند‪ ،‬و یک عمل خواندن‪-‬گذرگاه بعد از یک فقدان‪-‬خواندن نیاز میشود‪ .‬اکثر گذرگاههای استاندارد نمیتوانند‬
‫این عملیات بازداری را انجام دهند‪.‬‬

‫‪ IEEE FutureBus+‬برای این گذرگاه خاص پیشنهاد شد‪ .‬استفاده از سیاست نوشتن‪-‬سراسری بعد از اولین‬
‫نوشتن و استفاده از سیاست بازپسنویسی در سایر نوشتنها نامعتبرسازیهای غیرالزم را حذف خواهد کرد‪.‬‬

‫قراردادهای جاسوسی حافظه نهان در چندپردازندههای براساس گذرگاه بخاطر سادگی پیادهسازیشان رایج هستند‪.‬‬
‫سیاستهای نوشتن‪-‬نامعتبر در چندپردازنده ‪ Sequent Symmetry‬و چندپردازنده ‪ Alliant Fx‬پیادهسازی‬
‫شده است‪.‬‬

‫در کنار چندپردازنده ‪ ،DEC Firefly‬مرکز تحقیقات ‪ Xerox Palo Alto‬قرارداد نوشتن‪-‬بروزرسانی دیگری را‬
‫در ایستگاه کاری چندپردازنده ‪ Dragon‬پیادهسازی کرده است‪ .‬قرارداد دراگون از بروزرسانی حافظه تا وقتیکه‬
‫جایگزین نشده است به منظور بهبود بازدهی انتقاالت بین حافظه نهان اجتناب میکند‪.‬‬

‫قرارداد ‪ :Futurebus+‬قراردادهای ‪ Futurebus+‬هر دو تراکنشهای متصل و مجزا را پشتیبانی میکنند‪.‬‬


‫بطور کلی تراکنشهای متصل برای پیادهسازی روی یک سگمنت گذرگاه تک سادهتر و ارزانتر هستند‪ .‬تراکنشهای‬
‫مجزا گرانتر و پیچیدهتر هستند اما همزمانی بیشتری در ساخت چندپردازندههای گذرگاه‪-‬سلسله مراتبی تهیه میکنند‪.‬‬
‫این بخش مکانیزم داوری موازی و همبستگی حافظه نهان توسعه داده شده براساس ‪ Futurebus+‬را توضیح‬
‫میدهد‪ Futurebus+ .‬برای چندپردازندههای حافظه مشترک مناسب است‪ .‬انواع تراکنشهای گذرگاه برای‬
‫راهاندازی حالت ماژولهای حافظه نهان مختلف به منظور تطابق با اکثر قراردادهای همبستگی حافظه نهان تنظیم‬
‫شده است‪ .‬برای حفظ سازگاری حافظه نهان در یک محیط با چندین ‪ Futurebus‬منطقی متصل شده در سلسله‬
‫مراتب توسعه داده شده است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 396‬‬

‫تکرارکنندههای گذرگاه برای پشتیبانی تراکنشهای مجزا استفاده میشوند تا اطمینان دهند که یک کپی از تراکنش‬
‫باید در گذرگاه های همسایه که بلوک مشابهی دارند تکرار شود‪ .‬این به این مفهوم است که تکرارکننده گذرگاه‬
‫شامل یک بافر حافظه نهان است که می تواند متن یک بلوک حافظه نهان را در یک گذرگاه همسایه ثبت کند‪.‬‬
‫قرارداد همبستگی حافظه نهان پیشنهاد شده برای ‪ Futurebus+‬اصالح شدهِ قرار داد گودمن است‪.‬‬

‫قرارداد همبستگی جاسوسی برای تراکنشهای متصل شده کار میکند‪ .‬برای تراکنشهای روی چندین سگمنت‬
‫گذرگاه‪ ،‬ماژولهای رابط اضافی مورد نیاز میشود‪ .‬شکل ‪ 14-7‬یک معماری چندپردازنده حافظه مشترک‪ ،‬تراکنش‬
‫مجزا را نشان میدهد‪.‬‬

‫این سیستم توسعهای از معماری حافظه‪-‬مشترک با ماژولهای عامل حافظه نهان و عامل حافظه میباشد‪ .‬یک‬
‫عامل حافظه نهان تراکنشهای مجزا را استفاده میکند تا همه حقوق و مسئولیتهای تعدادی ماژول حافظه نهان‬
‫دور را تعهد کند‪ .‬عاملهای حافظه نهان باید تگهایی را برای تعیین حاالت بلوک حافظه نهان نگه دارند‪.‬‬

‫به طور مشابه‪ ،‬یک عامل حافظه تراکنش مجزا را استفاده میکند تا همه حقوق و مسئولیتهای بعضی ماژولهای‬
‫حافظه دور را تعهد کند‪ .‬یک عامل حافظه یک تراکنش را تقسیم میکند تا جوازهای خواندن و نوشتن را برای‬
‫مکانی که برای یک سگمنت گذرگاهی که روی آن قرار دارد انتساب دهد‪ .‬همچنین باید نامعتبرسازیهای خارجی‬
‫یا تداخالت را به سگمنت گذرگاه عبور دهد‪ .‬تراکنشهای مجزا برای تکمیل نامعتبرسازیهای تأخیری استفاده شده‬
‫است‪.‬‬

‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬

‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان حافظه نهان‬

‫گذرگاه ‪2‬‬
‫گذرگاه ‪1‬‬ ‫پردازنده‬
‫عامل حافظه نهان‬ ‫عامل حافظه نهان‬
‫حافظه نهان‬
‫‪Future bus+‬‬

‫پردازنده‬ ‫عامل‬ ‫حافظه‬ ‫پردازنده‬


‫عامل حافظه‬
‫حافظه‬ ‫مشترک‬

‫حافظه نهان‬ ‫حافظه نهان‬

‫گذرگاه‪3‬‬ ‫گذرگاه‪4‬‬

‫حافظه‬ ‫حافظه‬ ‫حافظه‬ ‫حافظه‬


‫مشترک‬ ‫مشترک‬ ‫مشترک‬ ‫مشترک‬

‫شکل‪ :14-7‬تراکنشهای مجزا روی یک چندپردازنده‬


‫‪| 397‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫همبستگی‪ 1‬حافظه نهان چندسطحه‪ :‬برای حفظ سازگاری‪ 2‬بین کپیهای حافظه نهان در سطوح مختلف‪،‬‬
‫‪ Wilson‬توسعهای از قرارداد نوشتن‪-‬نامعتبر استفاده شده روی یک گذرگاه تک را پیشنهاد داد‪ .‬سازگاری بین‬
‫کپیهای حافظه نهان در یک سطح مشابه به آنچه توضیح دادیم حفظ میشود‪ .‬سازگاری حافظههای نهان در سطوح‬
‫مختلف در شکل ‪ 3-7‬نشان داده شده است‪.‬‬

‫یک نامعتبرسازی به منظور نامعتبر کردن همه کپیهای حافظههای نهان مشترک در سطح ‪ 2‬باید بطور عمودی به‬
‫باال و پایین منتشر شود‪ .‬فرض کنید پردازنده ‪ P1‬یک درخواست نوشتن را منتشر کند‪ .‬درخواست نوشتن به طرف‬
‫باال تا باالترین سطح منتشر میشود و کپیهای ‪ c18, c16, c22, c20‬را نامعتبر میکند‪ .‬این عمل در شکل با‬
‫پیکان از ‪ c11‬تا همه کپیهای سایهدار نشان داده شده است‪.‬‬

‫حافظههای نهان سطح باال مثل ‪ C20‬بلوکهای کثیف تحتانیشان را ردیابی میکنند‪ .‬یک درخواست خواندن منتشر‬
‫شده توسط ‪ ،P7‬به باالی سلسله مراتب منتشر میشود زیرا هیچ کپی وجود ندارد‪ .‬وقتیکه به سطح باال میرسد‪،‬‬
‫حافظه نهان ‪ C20‬یک درخواست تخلیه را به سمت پایین به حافظه نهان ‪ C11‬میفرستد و کپی کثیف برای حافظه‬
‫نهان خصوصی پردازنده ‪ P7‬تهیه میشود‪ .‬نکته اینکه حافظههای نهان سطح باالتر مثل فیلترهایی برای کنترل‬
‫سازگاری استفاده میشوند‪ .‬دستور نامعتبرسازی یا درخواست خواندن به سمت پایین در خوشههایی که شامل یک‬
‫کپی از بلوک مربوطه نیستند منتشر نمیشود‪ .‬حافظه نهان ‪ C21‬نیز به روشی مشابه عمل میکند‪.‬‬

‫کارایی قرارداد‪ :‬کارایی هر قرارداد جاسوسی بطور زیادی وابسته به الگوهای بارکاری و بازدهی پیادهسازی است‪.‬‬
‫فکر اصلی برای استفاده از مکانیزم جاسوسی به خاطر کاهش ترافیک گذرگاه است با هدف ثانویه کاهش زمان مؤثر‬
‫دسترسی‪-‬حافظه‪ .‬اندازه بلوک برای کارایی حافظه نهان در قراردادهای نوشتن‪-‬نامعتبر خیلی حساس است اما برای‬
‫قراردادهای نوشتن‪-‬بروزرسانی خیر‪.‬‬

‫برای یک سیستم تک پردازنده‪ ،‬ترافیک گذرگاه و زمان دسترسی حافظه‪ ،‬بطور عمده با فقدانهای حافظه نهان‬
‫مشترک شده است‪ .‬نرخ فقدان وقتیکه اندازه بلوک افزایش مییابد‪ ،‬کاهش مییابد‪ .‬به هر حال وقتیکه اندازه بلوک‬
‫به یک نقطه بحرانی میرسد‪ ،‬نرخ فقدان شروع به افزایش میکند‪ .‬برای حافظههای نهان بزرگتر‪ ،‬این نقطه در اندازه‬
‫بلوک بزرگتر اتفاق میافتد‪.‬‬

‫برای یک سیستم که نیازمند مهاجرت پردازه یا همزمانی گستردهای است‪ ،‬قرارداد نوشتن‪-‬نامعتبر بهتر کار میکند‪.‬‬
‫شبیه سازیهای گسترده نشان میدهند که ترافیک گذرگاه در یک چندپردازنده وقتیکه اندازه بلوک زیاد میشود‬
‫ممکن است افزایش یابد‪ .‬نوشتن‪-‬نامعتبر همچنین پیادهسازی اولیه همزمانی را راحت میکند‪ .‬بطور رایج‪ ،‬میانگین‬
‫تعداد کپیهای حافظه نهان نامعتبر شده در یک چندپردازنده کوچک نسبتاً کوچک است‪.‬‬

‫‪1‬‬
‫‪Cache coherency‬‬
‫‪2‬‬
‫‪Consistency‬‬
‫کانون نشر علوم‬ ‫‪| 398‬‬

‫قرارداد نوشتن‪-‬بروزرسانی نیازمند قابلیت پخشی گذرگاه است‪ .‬این قرارداد همچنین میتواند اثر پینگ‪-‬پنگ را روی‬
‫دادههای مشترک بین چندین حافظه نهان اجتناب کند‪ .‬کاهش اشتراک داده ترافیک گذرگاه را در یک چندپردازنده‬
‫نوشتن‪-‬بروزرسانی کم میکند‪ .‬فقط از طریق ردیابی برنامههای زیادی میتوان رفتار حافظه نهان‪ ،‬نرخ اصابت‪،‬‬
‫ترافیک گذرگاه‪ ،‬و زمان دسترسی مؤثر حافظه را آشکار کرد‪.‬‬

‫‪ -3-2-7‬قراردادهای براساس‪ -‬دایرکتوری‬

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

‫وقتی که یک شبکه چندسطحه برای ساخت یک چندپردازنده بزرگ با صدها پردازنده استفاده میشود‪ ،‬قراردادهای‬
‫حافظه نهان جاسوسی باید برای استفاده از قابلیتهای شبکه اصالح شوند‪ .‬چون همه پخشی در یک شبکه‬
‫چندسطحه گران تمام میشود‪ ،‬دستورات سازگاری فقط به حافظههای نهانی که یک کپی از بلوک حافظه نهان را‬
‫نگه می دارند فرستاده خواهند شد‪ .‬این منجر به قراردادهای براساس دایرکتوری برای چندپردازندههای متصل شده‬
‫به شبکه میشود‪.‬‬

‫‪M1‬‬ ‫‪M2‬‬ ‫‪Mm‬‬

‫‪D1‬‬ ‫‪D2‬‬ ‫‪Dm‬‬

‫شبکه اتصال داخلی‬

‫‪C1‬‬ ‫‪C2‬‬ ‫‪Cn‬‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪Pn‬‬

‫شکل ‪ :15-7‬مفهوم پایه یک شماتیک همبستگی حافظه نهان براساس دایرکتوری‬


‫‪| 399‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫ساختارهای دایرکتوری‪ :‬در یک شبکه چندسطحه‪ ،‬همبستگی حافظه نهان با استفاده از دایرکتوری حافظه نهان‬
‫به منظور ذخیره اطالعات در جایی که کپیهای بلوکهای حافظه نهان قرار دارند انجام میشود‪ .‬انواع قراردادهای‬
‫براساس دایرکتوری در چگونگی اطالعات دایرکتوری و اینکه چه اطالعاتی در دایرکتوری ذخیره میشوند با یکدیگر‬
‫فرق میکنند‪.‬‬

‫‪ ،)1976( Tang‬اولین شماتیک دایرکتوری را پیشنهاد کرد که یک دایرکتوری مرکزی کپی همه دایرکتوریهای‬
‫حافظه نهان را دربرمی گیرد‪ .‬این دایرکتوری مرکزی‪ ،‬که همه اطالعات مورد نیاز برای اجرای سازگاری را تهیه‬
‫میکند‪ ،‬معموالً خیلی بزرگ است و باید بطور انجمنی شبیه دایرکتوریهای حافظه نهان شخصی جستجو شود‪.‬‬
‫تداخل و زمان جستجوی طوالنی دو عیب استفاده از دایرکتوری مرکزی برای یک چندپردازنده بزرگ میباشند‪.‬‬

‫یک شماتیک دایرکتوری توزیع شده توسط ‪ Censier‬و ‪ )1978( Feautrier‬پیشنهاد شد‪ .‬هر ماژول حافظه یک‬
‫دایرکتوری مجزا را نگه میدارد که اطالعات حالت و وجود هر بلوک حافظه را ضبط میکند‪ .‬اطالعات و حالت‬
‫محلی هستند‪ .‬ولی اطالعات وجود تعیین میکنند که چه حافظههای نهانی یک کپی از بلوک را دارند‪.‬‬

‫در شکل ‪ ،15-7‬یک فقدان‪-‬خواندن (خطوط نازک) در حافظه نهان ‪ 2‬باعث ارسال یک درخواست به ماژول حافظه‬
‫می شود‪ .‬کنترل کننده حافظه درخواست را به کپی کثیف در حافظه نهان ‪ 1‬میفرستد‪ .‬این حافظه نهان کپیش را‬
‫بازپسنویسی میکند‪ .‬ماژول حافظه میتواند یک کپی برای حافظه نهان درخواست دهنده تهیه کند‪ .‬در حالت یک‬
‫اصابت‪-‬نوشتن در حافظه نهان ‪( 1‬خطوط ضخیم)‪ ،‬یک دستور به کنترلکننده حافظه فرستاده میشود که‬
‫نامعتبرسازی را به همه حافظههای نهان (حافظه نهان ‪ )2‬که در بردار وجود واقع در دایرکتوری ‪ D1‬قرار دارد‬
‫میفرستد‪.‬‬

‫یک قرارداد همبستگی که از همهپخشی استفاده نمیکند باید مکان همه کپیهای هر بلوک داده مشترک را که در‬
‫حافظههای نهان قرار دارد نگه دارد‪ .‬این لیست از مکانهای موجود در حافظههای نهان چه توزیع شده یا متمرکز‬
‫را یک دایرکتوری حافظه نهان میگویند‪ .‬یک ورودی دایرکتوری برای هر بلوک داده شامل تعدادی اشارهگر‬
‫است که مکان های کپیهای بلوک را تعیین میکند‪ .‬هر ورودی دایرکتوری همچنین شامل یک بیت کثیف است‬
‫که تعیین میکند چه موقع یک حافظه نهان اجازه نوشتن در بلوک داده مشترک را دارد‪.‬‬

‫انواع مختلف قراردادهای دایرکتوری در سه طبقهبندی اولیه قرار میگیرند‪ :‬دایرکتوریهای نگاشت کامل‪،‬‬
‫دایرکتوریهای محدود شده و دایرکتوریهای زنجیر شده‪ .‬دایرکتوری نگاشت کامل‪ ،‬داده کافی مرتبط با هر بلوک‬
‫در حافظه سراسری را ذخیره میکند بطوریکه هر حافظه نهان در سیستم میتواند یک کپی از هر بلوک داده را بطور‬
‫همزمان ذخیره کند‪ .‬یعنی هر ورودی دایرکتوری ‪ N‬اشارهگر دارد‪ ،‬که ‪ N‬تعداد پردازندهها در سیستم است‪.‬‬

‫تفاوت دایرکتوری محدود شده با دایرکتوریهای نگاشت کامل در این است که دایرکتوریهای محدود شده بدون‬
‫توجه به اندازه سیستم تعداد ثابتی اشارهگر در هر ورودی دارند‪ .‬دایرکتوریهای زنجیر شده از شماتیک نگاشت کامل‬
‫کانون نشر علوم‬ ‫‪| 400‬‬

‫با توزیع دایرکتوری بین حافظههای نهان تقلید میکنند‪ .‬توصیفات زیر از سه کالس دایرکتوری براساس طبقه‬
‫بندی اولیه انجام شده توسط ‪ )1990( Chaiken, Fields, Kwihara, Agrawal‬میباشند‪.‬‬

‫دایرکتوریهای نگاشت کامل‪ :‬قرارداد نگاشت کامل‪ ،‬ورودیهای دایرکتوری را با یک بیت برای هر پردازنده‬
‫و یک بیت کثیف پیادهسازی میکند‪ .‬هر بیت نمایش دهنده وضعیت بلوک در حافظه نهان پردازنده متناظر است‬
‫(حاضر یا غایب)‪ .‬اگر بیت کثیف یک باشد‪ ،‬آنگاه فقط و فقط یک بیت پردازنده یک است و همان پردازنده میتواند‬
‫در بلوک بنویسد‪.‬‬

‫یک حافظه نهان‪ ،‬دو بیت حالت برای هر بلوک نگه میدارد‪ .‬یک بیت تعیین میکند که چه وقت یک بلوک معتبر‬
‫است و دیگری تعیین میکند که چه موقع یک بلوک معتبر ممکن است نوشته شود‪ .‬قرارداد همبستگی حافظه نهان‬
‫باید بیتهای حالت در دایرکتوری حافظه و آنهایی که در سازگاری حافظه نهان هستند را نگه دارد‪.‬‬

‫شکل ‪(16-7‬الف) سه حالت متفاوت یک دایرکتوری نگاشت کامل را نشان میدهد‪ .‬در حالت اول (سمت چپ)‪،‬‬
‫مکان ‪ X‬در همه حافظههای نهان در سیستم فقدان میدهد‪ .‬حالت دوم (سمت راست) از درخواست سه حافظه نهان‬
‫(‪ )C3, C2, C1‬برای خواندن مکان ‪ X‬منتج میشود‪ .‬سه اشارهگر (بیتهای پردازنده) در ورودی یک میشوند تا‬
‫تعیین کنند که چه حافظههای نهانی کپیهایی از بلوک داده را دارند‪ .‬در دو حالت اول‪ ،‬بیت کثیف در سمت چپ‬
‫دایرکتوری به تمیز‪ )C( 1‬تنظیم شده است که تعیین میکند که هیچ پردازندهای مجاز به نوشتن در بلوک داده نیست‪.‬‬
‫حالت سوم (شکل ‪(16.7‬الف) پایین) از درخواست حافظه نهان ‪ C3‬برای اجازه نوشتن در بلوک منتج میشود‪ .‬در‬
‫حالت سوم‪ ،‬بیت کثیف به کثیف (‪ )D‬تنظیم میشود و فقط یک اشارهگر به بلوک داده در حافظه نهان ‪ C3‬وجود‬
‫دارد‪.‬‬

‫اجازه دهید انتقال از حالت دوم به حالت سوم را با جزئیات بیشتر توضیح دهیم‪ .‬پردازنده ‪ P3‬نوشتن به حافظه نهان‬
‫‪ C3‬را منتشر میکند‪ .‬رخدادهای زیر اتفاق خواهند افتاد‪:‬‬

‫حافظه نهان ‪ C3‬تشخیص میدهد که بلوک شامل مکان ‪ X‬معتبر است اما پردازنده مجاز به نوشتن در‬ ‫‪.1‬‬
‫بلوک نیست که این توسط بیت اجازه‪-‬نوشتن در حافظه نهان تعیین میشود‪.‬‬
‫حافظه نهان ‪ C3‬درخواست نوشتن را به ماژول حافظه شامل مکان ‪ X‬منتشر میکند و پردازنده ‪P3‬‬ ‫‪.2‬‬
‫متوقف میشود‪.‬‬
‫ماژول حافظه درخواست نامعتبرسازی را به حافظههای نهان ‪ C2, C1‬منتشر میکند‪.‬‬ ‫‪.3‬‬
‫حافظههای نهان ‪ C1, C2‬درخواستهای نامعتبرسازی را دریافت میکنند‪ ،‬بیت مرتبط با مکان بلوک‬ ‫‪.4‬‬
‫حافظه نهان ‪ X‬را با نامعتبر تنظیم میکنند و پاسخ را به ماژول حافظه میفرستند‪.‬‬
‫ماژول حافظه‪ ،‬پاسخها را دریافت میکند‪ ،‬بیت کثیف را تنظیم میکند‪ ،‬اشارهگرها به حافظههای نهان‬ ‫‪.5‬‬
‫‪ C2, C1‬را پاک میکند و اجازه نوشتن به حافظه نهان ‪ C3‬را میدهد‪.‬‬

‫‪1‬‬
‫‪Clean‬‬
‫‪| 401‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫‪ .6‬حافظه نهان ‪ C3‬پیام اجازه نوشتن را دریافت میکند‪ ،‬حالت حافظه نهان را بروز میکند و پردازنده ‪P3‬‬
‫را مجدداً فعال میکند‪.‬‬

‫ماژول حافظه صبر میکند تا پاسخها را دریافت کند قبل از اینکه به پردازنده ‪ P3‬اجازه دهد تراکنش نوشتنش را‬
‫تمام کند‪ .‬با صبر برای پاسخها‪ ،‬قرارداد تضمین میدهد که سیستم حافظه سازگاری ترتیبی را برآورده میکند‪ .‬قرارداد‬
‫نگاشت کامل‪ ،‬حدباالی مفیدی برای کارایی همبستگی حافظه نهان براساس دایرکتوری متمرکز را تهیه میکند‪.‬‬
‫اما‪ ،‬به خاطر سربار حافظه زیاد مقیاسپذیر نیست‪ .‬چون اندازه هر ورودی دایرکتوری برای هر بلوک حافظه متناسب‬
‫با تعداد پردازندهها است‪ ،‬حافظه مصرف شده توسط دایرکتوری متناسب با اندازه حافظه )‪ O(N‬ضرب در اندازه‬
‫دایرکتوری )‪ O(N‬میباشد‪ .‬بنابراین سربار حافظه کلی متناسب با مربع اندازه پردازندهها )‪ O(N2‬است‪.‬‬

‫دایرکتوریهای محدود شده‪ :‬قراردادهای دایرکتوری محدود شده برای حل مشکل اندازه دایرکتوری طراحی‬
‫شدهاند‪ .‬محدود کردن تعداد کپیهای هر بلوک داده که بطور همزمان در حافظههای نهان قرار دارند‪ ،‬رشد دایرکتوری‬
‫را به یک ضریب ثابت محدود میکند‪.‬‬

‫یک قرارداد دایرکتوری را میتوان بصورت ‪ DiriX‬کالسبندی کرد‪ .‬این نوع نوشتن را ‪ )1988( Agrawal‬معرفی‬
‫کرد‪ .‬سمبل ‪ i‬اشاره به تعداد اشارهگرها دارد و ‪ X‬برای شماتیک ‪ NB1‬بدون همهپخشی میباشد‪ .‬یک شماتیک‬
‫نگاشت کامل بدون همهپخشی با ‪ DirNNB‬نشان داده میشود‪ .‬یک قرارداد دایرکتوری محدود شده که تعداد ‪i<N‬‬
‫اشارهگر استفاده میکند با ‪ DiriNB‬نشان داده میشود‪ .‬قرارداد دایرکتوری محدود شده مشابه دایرکتوری نگاشت‬
‫کامل است بجز در حالتیکه بیشتر از ‪ i‬حافظه نهان درخواست خواندن کپیهای یک بلوک داده خاصی را بدهند‪.‬‬

‫شکل ‪(16-7‬ب) وضعیتی را که سه حافظه نهان درخواست خواندن کپیهای یک سیستم حافظه را میدهند با یک‬
‫قرارداد ‪ Dir2NB‬نشان میدهد‪ .‬در این حالت ما میتوانیم دو اشارهگر دایرکتوری را مثل یک حافظه نهان انجمنی‬
‫مجموعهای دو راهه ببینیم‪ .‬وقتیکه حافظه نهان ‪ C3‬یک کپی از مکان ‪ X‬را درخواست میدهد‪ ،‬ماژول حافظه باید‬
‫یک کپی را چه در حافظه نهان ‪ C‬یا حافظه نهان ‪ C‬نامعتبر کند‪ .‬این پردازه جایگزینی اشارهگر را خلع ید کردن‪2‬‬
‫‪2‬‬ ‫‪1‬‬
‫میگویند‪ .‬چون دایرکتوری شبیه یک حافظه نهان انجمنی مجموعهای عمل میکند باید یک سیاست جایگزینی‬
‫اشارهگر داشته باشد‪.‬‬

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

‫‪1‬‬
‫‪Non Broadcast‬‬
‫‪2‬‬
‫‪eviction‬‬
‫کانون نشر علوم‬ ‫‪| 402‬‬

‫حافظه مشترک‬ ‫حافظه مشترک‬

‫‪X:‬‬ ‫‪C‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫…‬ ‫‪-‬‬ ‫‪data‬‬ ‫‪X:‬‬ ‫‪C‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫…‬ ‫‪data‬‬

‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬
‫‪X: data‬‬ ‫‪X: data‬‬ ‫‪X: data‬‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬


‫‪Read X‬‬ ‫‪Read X‬‬ ‫‪Read X‬‬ ‫‪Write X‬‬

‫حافظه مشترک‬

‫‪X:‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫…‬ ‫‪data‬‬

‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬

‫‪X‬‬
‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬
‫(الف) سه حالت یک دایرکتوری نگاشت کامل‬

‫حافظه مشترک‬ ‫حافظه مشترک‬

‫‪X:‬‬ ‫‪C‬‬ ‫‪data‬‬ ‫‪X:‬‬ ‫‪C‬‬ ‫‪data‬‬

‫حافظه نهان حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان حافظه نهان‬ ‫حافظه نهان‬
‫‪X: data‬‬ ‫‪X: data‬‬ ‫‪X: data‬‬ ‫‪X: data‬‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬


‫‪Read X‬‬
‫(ب) خلع ید کردن در یک دایرکتوری محدود شده‬
‫حافظه مشترک‬ ‫حافظه مشترک‬

‫‪X:‬‬ ‫‪C‬‬ ‫‪data‬‬ ‫‪X:‬‬ ‫‪C‬‬ ‫‪data‬‬

‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬

‫‪X: data CT‬‬ ‫‪X: data CT‬‬ ‫‪X: data‬‬

‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬


‫‪Write X‬‬
‫‪Read X‬‬
‫(ج) دایرکتوری زنجیر شده‬
‫شکل ‪ :16-7‬سه نوع از قراردادهای دایرکتوری حافظه نهان‬
‫‪| 403‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫اشارهگرهای دایرکتوری در یک قرارداد ‪ DiriNB‬مشخصه پردازنده را بصورت باینری رمزگذاری میکنند‪ .‬بنابراین‬
‫هر اشارهگر نیازمند ‪ Log2N‬بیت حافظه است که ‪ N‬تعداد پردازندهها در سیستم است‪ .‬با فرض مشابه با قرارداد‬
‫نگاشت کامل‪ ،‬سربار حافظهی شماتیک دایرکتوری محدود شده با )‪ O(Nlog2N‬رشد میکند‪.‬‬

‫این قرارداد در مقایسه با سربار حافظه مقیاسپذیر در نظر گرفته میشود زیرا منبع مورد نیاز برای پیادهسازی آنها‬
‫تقریباً بطور خطی با تعداد پردازندهها در سیستم رشد میکند‪ .‬قراردادهای ‪ DiriB‬اجازه میدهند تا بیشتر از ‪ i‬کپی‬
‫از هر بلوک داده وجود داشته باشد‪ .‬اما به یک مکانیزم همهپخشی متوسل میشوند وقتیکه بیشتر از ‪ i‬کپی از یک‬
‫بلوک موجود در حافظههای نهان برای نامعتبر سازی مورد نیاز است‪ .‬به هر حال‪ ،‬شبکههای اتصالی نقطه‪-‬به‪-‬نقطه‬
‫قابلیت همهپخشی را بطور مفیدی تهیه نمیکنند‪ .‬در چنین شبکههایی تکمیل شدن یک پخش مشکل است تا‬
‫ناسازگاری ترتیبی را اطمینان دهد‪.‬‬

‫دایرکتوریهای زنجیر شده‪ :‬دایرکتوریهای زنجیر شده مقیاسپذیری دایرکتوریهای محدود شده را بدون‬
‫محدود کردن تعداد کپیهای مشترک از بلوک داده محقق میکند‪ .‬این نوع از شماتیک همبستگی حافظه نهان‪،‬‬
‫شماتیک زنجیر شده نامیده میشود زیرا کپیهای مشترک دادهها را با نگهداری یک زنجیر از اشارهگرهای دایرکتوری‬
‫ردیابی میکند‪.‬‬

‫این شماتیک در شکل ‪(16-7‬ج) توضیح داده شده است‪ .‬فرض کنید که هیچ کپی مشترکی از مکان ‪ X‬وجود ندارد‪.‬‬
‫اگر پردازنده ‪ P1‬مکان ‪ X‬را بخواند‪ ،‬حافظه یک کپی را به حافظه نهان ‪ C1‬همراه با یک خاتمه زنجیره (‪)CT1‬‬
‫میفرستد‪ .‬حافظه همچنین اشارهگری به حافظه نهان ‪ C1‬نگه میدارد‪ .‬در ادامه وقتیکه پردازنده ‪ P2‬مکان ‪ X‬را‬
‫میخواند‪ ،‬حافظه یک کپی را به حافظه نهان ‪ C2‬میفرستد همراه با یک اشارهگر به حافظه نهان ‪ .C1‬حافظه‬
‫اشارهگری به حافظه نهان ‪ C2‬نگه میدارد‪.‬‬

‫با تکرار گام فوق‪ ،‬همه حافظههای نهان میتوانند یک کپی از مکان ‪ X‬را ذخیره کنند‪ .‬اگر پردازنده ‪ P3‬در مکان ‪X‬‬
‫بنویسد‪ ،‬الزم است که یک پیام نامعتبرسازی داده در طول زنجیر بفرستد (رو به پایین)‪ .‬به منظور اطمینان از سازگاری‬
‫ترتیبی‪ ،‬ماژول حافظه اجازه نوشتن پردازنده ‪ P3‬را تا زمانیکه پردازنده با اشارهگر ‪ CT‬نامعتبر شدن زنجیر را پاسخ‬
‫ندهد رد میکند‪ .‬شاید این شماتیک را باید یک قرارداد خبرچینی‪ 2‬نامید (برخالف قرارداد جاسوسی) زیرا اطالعات‬
‫از فرد به فرد ارسال میشوند نه اینکه با نگاهی سراسری منتشر شوند‪.‬‬

‫امکان جایگزینی بلوک حافظه نهان قراردادهای دایرکتوری‪-‬زنجیر شده را پیچیده میکند‪ .‬فرض کنید که حافظه‬
‫نهان ‪ C1‬تا ‪ CN‬همگی کپیهایی از مکان ‪ X‬را دارند و مکان ‪ X‬و مکان ‪ Y‬به خط حافظه نهان مشابهی (نگاشت‬
‫مستقیم) نگاشت میشوند‪ .‬اگر پردازنده ‪ Pi‬مکان ‪ Y‬را بخواند باید ابتدا مکان ‪ X‬را از حافظه نهانش با امکانات زیر‬
‫خلع ید کند‪:‬‬

‫‪1‬‬
‫‪Chain Termination‬‬
‫‪2‬‬
‫‪gossip‬‬
‫کانون نشر علوم‬ ‫‪| 404‬‬

‫‪ .1‬یک پیام به پایین زنجیر به حافظه نهان ‪ Ci-1‬با یک اشارهگر به حافظه نهان ‪ Ci+1‬بفرستد و ‪ Ci‬را از‬
‫زنجیر بردارد یا‬
‫‪ .2‬مکان ‪ X‬را در حافظه نهان ‪ Ci+1‬تا حافظه نهان ‪ CN‬نامعتبر کند‪.‬‬

‫شماتیک دوم با پیچیدگی کمتری از اولی میتواند پیادهسازی شود‪ .‬در هر حالت‪ ،‬سازگاری ترتیبی با قفل کردن‬
‫مکان حافظه در حالیکه نامعتبرسازی در حال پیشرفت است نگه داشته میشود‪ .‬راهحل دیگر به مشکل جایگزینی‬
‫استفاده از زنجیره پیوندی دوطرفه است‪ .‬این شماتیک اشارهگرهای زنجیرهای رو به جلو و رو به عقب را برای هر‬
‫کپی موجود در حافظه نهان نگه میدارد بطوریکه قرارداد مجبور نیست زنجیر را وقتیکه یک جایگزینی حافظه‬
‫نهان وجود دارد مرور کند‪ .‬دایرکتوری پیوندی دوطرفه شرط جایگزینی را بهینه میکند به هزینه میانگین اندازه‬
‫بلوک پیام بزرگتر ( به خاطر انتقاالت اشارهگرهای دایرکتوری اضافی)‪ ،‬اشارهگر حافظه در حافظه نهان دو برابر‬
‫میشود و قرارداد همبستگی پیچیدهتر میشود‪.‬‬

‫هرچند که قراردادهای زنجیرهای از قراردادهای دایرکتوری محدود شده پیچیدهترند‪ ،‬هنوز هم براساس مقدار حافظه‬
‫استفاده شده برای دایرکتوریها مقیاسپذیر هستند‪ .‬اندازه اشارهگر به اندازه لگاریتم تعداد پردازندهها رشد میکند و‬
‫تعداد اشارهگرها برای هر حافظه نهان یا بلوک حافظه مستقل از تعداد پردازندهها میباشد‪.‬‬

‫روشهای طراحی حافظه نهان‪ :‬واحدهای نسبی حافظههای نهان آدرس فیزیکی و حافظههای نهان آدرس‬
‫مجازی باید براساس زمان دسترسی‪ ،‬مشکل نام مستعار‪ ،‬مشکل تخلیه‪ ،‬سربار کرنل ‪ ،OS‬تگ گذاریهای خاص در‬
‫سطح پردازه و توجهات هزینه‪/‬کارایی قضاوت شوند‪ .‬براساس استفاده از حافظههای نهان خصوصی‪ ،‬سه روش‬
‫طراحی در زیر پیشنهاد میشود‪.‬‬

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

‫حافظههای نهان مشترک‪ :‬یک روش برای نگه داری همبستگی حافظه نهان حذف کامل مشکل با استفاده از‬
‫حافظههای نهان مشترک الحاقی به ماژولهای مشترک میباشد‪ .‬در این حالت حافظه نهان خصوصی وجود ندارد‪.‬‬
‫این روش زمان دسترسی حافظه اصلی را کاهش میدهد اما خیلی کم به کاهش زمان دسترسی حافظه کلی و حل‬
‫تداخلهای دسترسی منجر میشود‪.‬‬

‫حافظههای نهان مشترک میتوانند به عنوان حافظههای نهان سطح دوم ساخته شوند‪ .‬گاهی اوقات فرد میتواند‬
‫حافظههای نهان سطح دوم را بطور جزئی با خوشههای پردازندههای مختلف مشترک کند‪ .‬اگر حافظههای نهان‬
‫مشترک و خصوصی هر دو در سلسه مراتب حافظه استفاده شوند‪ ،‬معماریهای حافظه نهان مختلفی امکانپذیر‬
‫است‪ .‬استفاده از حافظه نهان مشترک به تنهایی در تقابل با مقیاسپذیری کل سیستم میباشد‪ .‬حد بهینهای بین‬
‫‪| 405‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫استفاده از حافظههای نهان خصوصی‪ ،‬حافظههای نهان مشترک توسط خوشههای چندپردازنده و حافظه مشترک‬
‫وجود دارد‪.‬‬

‫ذخیره نکردن دادهها در حافظه نهان‪ :1‬روش دیگر ذخیره نکردن دادههای مشترک قابل نوشتن در حافظه‬
‫نهان است‪ .‬دادههای مشترک در حافظه نهان ذخیره نمیشوند و فقط دستورات یا دادههای خصوصی در حافظههای‬
‫نهان محلی ذخیره میشوند‪ .‬دادههای مشترک شامل قفلها‪ ،‬صفهای پردازه‪ ،‬و هر ساختمان داده دیگری توسط‬
‫بخشهای بحرانی محافظت میشوند‪.‬‬

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

‫تخلیه حافظه نهان‪ :2‬روش سوم تخلیه حافظه نهان است هرگاه که یک همزمانی اجرا شود‪ .‬این ممکن است با‬
‫پردازش تراکنش سیستمهای چندپردازنده بهتر کار کند‪ .‬تخلیه حافظه نهان کُند است مگر اینکه سخت افزار خاصی‬
‫استفاده شود‪ .‬این روش مشکالت مهاجرت پردازه و ورودی‪/‬خروجی را حل نمیکند‪.‬‬

‫تخلیه میتواند بطور انتخابی توسط برنامه نویس یا کامپایلر به منظور افزایش بازدهی استفاده شود‪ .‬تخلیه حافظه‬
‫نهان در همزمانی‪ ،‬ورودی‪/‬خروجی و مهاجرت پردازه می تواند بدون شرط یا انتخابی اجرا شود‪ .‬تخلیه حافظه نهان‬
‫اغلب بیشتر با حافظههای نهان آدرس مجازی استفاده میشود‪.‬‬

‫‪ -4-2-7‬مکانیزم های همزمانی سخت افزاری‬

‫همزمانی شکل خاصی از ارتباطات است که اطالعات کنترلی بجای داده بین پردازههای ارتباطی واقع در پردازنده‪-‬‬
‫های مشابه یا متفاوت تعویض میشوند‪ .‬همزمانی ترتیب درست پردازندهها را اجباری میکند و دسترسی انحصاری‬
‫به داده نوشتنی را اجباری میکند‪ .‬همزمانی میتواند در نرمافزار‪ ،‬میانافزار و سختافزار بین اشتراک داده و اطالعات‬
‫کنترلی حافظه پیادهسازی شود‪.‬‬

‫سیستمهای چندپردازنده مکانیزمهای سختافزاری را برای پیادهسازی عملیات همزمانی سطح پایین یا ابتدایی‬
‫استفاده میکنند‪ .‬از مکانیزمهای سطح نرمافزار (‪ )OS‬مثل سمافورها یا مانیتورها میتوان نام برد‪.‬‬

‫عملیات اتمیک‪ :‬اکثر چندپردازندهها به مکانیزمهای سختافزاری خاصی مجهز شدهاند تا عملیات اتمیک مثل‬
‫خواندن‪ ،‬نوشتن یا عملیات خواندن‪-‬اصالح‪-‬نوشتن که میتوانند برای پیادهسازی بعضی شکلهای همزمانی استفاده‬

‫‪1‬‬
‫‪Uncacheable Data‬‬
‫‪2‬‬
‫‪Cache Flushing‬‬
‫کانون نشر علوم‬ ‫‪| 406‬‬

‫شوند‪ ،‬را اجباری کنند‪ .‬در کنار عملیات حافظه اتمیک‪ ،‬بعضی وقفههای بین پردازنده میتواند برای اهداف همزمانی‬
‫استفاده شوند‪ .‬به عنوان مثال‪ ،‬شکلهای همزمانی‪ Test&Set(lock) ،‬و )‪ Reset(lock‬در زیر توصیف می‪-‬‬
‫شوند‪:‬‬
‫)‪Test & Set(lock‬‬
‫;‪Templock; lock1‬‬
‫;‪Return temp‬‬
‫)‪Reset(lock‬‬
‫;‪Lock0‬‬
‫‪ Test&Set‬با عملیات حافظه خواندن‪-‬اصالح‪-‬نوشتن اتمیک پیادهسازی میشوند‪ .‬برای همزمانی پردازههای‬
‫همروند‪ ،‬نرمافزار ممکن است ‪Test&Set‬را تکرار کند تا وقتیکه مقدار ‪ temp‬صفر شود‪ .‬این روش همزمانی‬
‫ممکن است با بعضی سیکلهای گذرگاه مقید شود در حالیکه وارد مشغول‪-‬منتظر شود‪ .‬توضیحات بیشتر در فصل‬
‫‪ 9‬ارائه شده است‪.‬‬
‫‪ -3-7‬مکانیزم های انتقال پیام‬

‫انتقال پیام در یک شبکه چندکامپیوتر نیازمند پشتیبانی نرمافزاری و سختافزاری خاصی است‪ .‬در این بخش‪،‬‬
‫مسیریابی ذخیره و جلورانی‪ 1‬و مسیریابی خزشی‪ 2‬را مطالعه میکنیم و تأخیرات ارتباطیشان را تجزیه تحلیل میکنیم‪.‬‬
‫‪ -1-3-7‬شماتیک های مسیریابی‪-‬پیام‬

‫شکلهای پیام در زیر معرفی میشوند‪ .‬شکلهای اصالح شده منجر به پیشرفت از ذخیره و جلورانی به مسیریابی‬
‫خزشی در دو نسل چندکامپیوترها شده است‪ .‬یک قرارداد دست تکان دهی برای خط لوله آسنکرون روترهای متوالی‬
‫در طول یک مسیر ارتباطی توصیف می شود‪ .‬در انتها آنالیز تأخیر برای نمایش تفاوت زمانی بین دو شماتیک‬
‫مسیریابی ارائه شده اجرا شده است‪.‬‬

‫شکلهای پیام‪ :‬واحدهای اطالعاتی استفاده شده در مسیریابی پیام در شکل ‪ 17-7‬توصیف میشوند‪ .‬یک پیام‬
‫واحد منطقی برای ارتباطات بین گره است که با تعدادی دلخواه بستههای با طول ثابت ایجاد شده است بنابراین‬
‫یک پیام ممکن است طول متغیر داشته باشد‪.‬‬

‫یک بسته واحد پایه شامل آدرس مقصد برای اهداف مسیریابی است‪ .‬زیرا بستههای متفاوت ممکن است بطور‬
‫آسنکرون به مقصد برسند‪ ،‬یک شماره ترتیب برای هر بسته نیاز است تا بتواند اتصال مجدد پیام رسیده شده را انجام‬
‫دهد‪.‬‬

‫‪1‬‬
‫‪Store and forward‬‬
‫‪2‬‬
‫‪Wormwhole‬‬
‫‪| 407‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫یک بسته میتواند به تعدادی فلیت‪ 1‬با طول ثا بت تقسیم شود‪ .‬اطالعات مسیریابی (مقصد) و شماره ترتیب‪ ،‬هدر‬
‫فلیت را اشغال میکند‪ .‬فلیتهای باقیمانده عناصر داده یک بسته هستند‪.‬‬

‫در چندکامپیوترهای با مسیریابی ذخیره و جلورانی بسته کوچکترین واحد اطالعات انتقالی است‪ .‬در شبکههای‬
‫خزشی‪ ،‬بستهها به فلیتهای بیشتر تقسیم می شوند‪ .‬طول فلیت توسط اندازه شبکه تحت تأثیر قرار میگیرد‪ .‬یک‬
‫شبکه ‪ 256‬گرهه نیازمند ‪ 8‬بیت برای هر فلیت است‪.‬‬

‫طول بسته توسط شماتیک مسیریابی و پیادهسازی شبکه تعیین میشود‪ .‬طولهای بسته رایج در محدوده ‪ 64‬تا ‪512‬‬
‫بیت میباشد‪ .‬شماره ترتیب ممکن است بر اساس طول پیام یک یا دو فلیت اشغال کند‪ .‬سایر فاکتورهای مؤثر بر‬
‫انتخاب بسته و اندازه فلیت شامل پهنای باند کانال‪ ،‬طراحی روتر‪ ،‬چگالی ترافیک شبکه و غیره میباشد‪.‬‬

‫شکل ‪ :17-7‬شکل پیام‪ ،‬بستهها‪ ،‬و فلیتها استفاده شده به عنوان واحدهای ارتباطی در یک شبکه انتقال‪-‬پیام‬

‫مسیریابی سوئیچینگ مداری‪ :2‬در این نوع مسیریابی ابتدا بین منبع و مقصد جلسهای برگزار شده و مسیر‬
‫حرکت مشخص میشود سپس بستهها بین منبع و مقصد منتقل میشوند‪ .‬بنابراین ابتدا یک فلیت بین منبع و مقصد‬
‫منتقل میشود و مسیر مشخص میشود‪ .‬سپس تمامی سایر بسته ها از همان مسیر مشخص شده عبور میکنند‪.‬‬
‫یعنی زمان سویچینگ مداری برابر با زمان برقراری مسیر اولیه ‪+‬زمان انتقال سایر دادهها میباشد‪ .‬در این نوع‬
‫مسیریابی بسته ها به ترتیب ارسال دریافت میشوند‪ .‬ولی در صورت خرابی مسیر همه بستههای بعدی گم میشوند‪.‬‬

‫مسیریابی ذخیره و جلورانی‪ :‬بستهها واحد پایه جریان اطالعات در یک شبکه ذخیره و جلورانی میباشند‪.‬‬
‫مفهوم در شکل ‪( 18-7‬الف) نشان داده شده است‪ .‬هر گره نیازمند یک بافر بسته است‪ .‬یک بسته از گره منبع به‬
‫یک گره مقصد از طریق رشتهای از گرههای میانی منتقل میشود‪.‬‬

‫وقتیکه یک بسته به یک گره میانی میرسد‪ ،‬ابتدا بطور کامل در بافر ذخیره میشود سپس به گره بعدی جلورانی‬
‫میشود اگر کانال خروجی مطلوب و بافر بسته در گره دریافت کننده قابل دسترس باشد‪.‬‬

‫تأخیر در شبکههای ذخیره و جلورانی مستقیماً مرتبط با فاصله (تعداد پرشها) بین منبع و مقصد میباشد‪ .‬این‬
‫شماتیک مسیریابی در اولین نسل چندکامپیوترها پیادهسازی شد‪.‬‬

‫‪1‬‬
‫‪Flow control digits‬‬
‫‪2‬‬
‫‪Circuit swithing‬‬
‫کانون نشر علوم‬ ‫‪| 408‬‬

‫مسیریابی خزشی‪ :‬با تقسیم بسته به فلیتهای کوچکتر چندکامپیوترهای جدیدتر‪ ،‬شماتیک مسیریابی خزشی را‬
‫همانطور که در شکل ‪(18-7‬ب) نشان داده شده است پیادهسازی میکنند‪ .‬بافرهای فلیت در مسیریابهای سخت‬
‫افزاری الحاقی به گرهها استفاده می شوند‪ .‬انتقال از یک گره منبع به گره مقصد از طریق یک رشته از مسیریابها‬
‫انجام میشود‪.‬‬
‫همه فلیتها در بسته مشابه به ترتیب به طریقی خطلوله شده و مجزا منتقل میشوند‪ .‬بسته را میتوان مثل یک‬
‫قطار روی ریل با یک ماشین موتور (هدر فلیت) که به رشتهای طوالنی از واگنها (فلیتهای داده) دید‪.‬‬

‫فقط فلیت هدر میداند که قطار (بسته) به کجا میرود‪ .‬همه فلیتهای داده (واگنها) باید از فلیت هدر تبعیت کنند‪.‬‬
‫بستههای مجزا میتوانند در طول ارسال بههم متصل شوند به هر حال‪ ،‬فلیتها از بستههای مختلف نمیتوانند با‬
‫هم ترکیب شوند در غیراینصورت به مقصد غلط میروند‪ .‬در زیر اثبات میکنیم که مسیریابی خزشی تأخیری تقریباً‬
‫مستقل از فاصله بین منبع و مقصد دارد‪.‬‬
‫گره منبع‬ ‫گره مقصد‬

‫بافر بسته‬ ‫گرههای میانی‬

‫(الف) مسیریابی ذخیره‪-‬و – جلورانی با استفاده از بافرهای بسته در گرههای متوالی‬


‫گره منبع‬ ‫گره مقصد‬

‫بافر فلیت‬
‫گرههای میانی‬

‫(ب) مسیریابی خزشی با استفاده از بافرهای فلیت در روترهای متوالی‬


‫شکل ‪ :18-7‬مسیریابی ذخیره‪-‬و‪-‬جلورانی و خزشی‬
‫خطلوله غیرهمزمان‪ :‬خطلوله کردن فلیتهای متوالی در یک بسته بطور آسنکرون با استفاده از قرارداد دست‬
‫تکاندهی نشان داده شده در شکل ‪ 19-7‬انجام میشود‪ .‬در طول مسیر‪ ،‬یک خط (‪ )R/A‬آماده‪/‬درخواست یک بیتی‬
‫بین روترهای همسایه استفاده میشود‪.‬‬

‫وقتیکه مسیریاب دریافت کننده (‪ )D‬آماده (شکل ‪(19-7‬الف)) دریافت یک فلیت است (مثالً بافر فلیت در دسترس‬
‫است)‪ ،‬خط ‪ R/A‬را صفر میکند‪ .‬وقتیکه مسیریاب ارسال کننده (‪ )S‬آماده است (شکل ‪(19-7‬ب))‪ ،‬خط را یک‬
‫میکند و فلیت ‪ i‬را به کانال میفرستد‪.‬‬

‫در حالیکه فلیت در حال دریافت توسط ‪( D‬شکل ‪(19-7‬ج)) است‪ ،‬خط ‪ R/A‬باال نگه داشته میشود‪ .‬بعد از اینکه‬
‫فلیت ‪ i‬از بافر ‪ D‬حذف میشود (مثالً به گره بعدی ارسال میشود) (شکل ‪(19-7‬د))‪ ،‬سیکل تا اتمام کل بسته تکرار‬
‫میشود و فلیت بعدی ‪ i+1‬دریافت میشود‪.‬‬
‫‪| 409‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫خطلوله غیرهمزمان میتواند خیلی کاراتر باشد و ساعت استفاده شده میتواند سریعتر از آنچه در خطلوله سنکرون‬
‫استفاده میشود باشد‪ .‬به هر حال‪ ،‬خطلوله میتواند متوقف شود اگر بافرهای فلیت یا کانالهای متوالی در طول‬
‫مسیر در یک سیکل خاص در دسترس نباشند‪ .‬در اینصورت‪ ،‬بسته میتواند بافر شود‪ ،‬بلوکه شود یا منحرف شود‪.‬‬
‫‪Router S‬‬ ‫‪Router D‬‬
‫)‪R/A(low‬‬ ‫‪R/A(high‬‬
‫)‬
‫‪channel‬‬
‫‪Flit i‬‬
‫(ب) ‪ S‬برای ارسال فلیت ‪ i‬آماده است‪( .‬الف) ‪ D‬برای دریافت یک فلیت آماده است‪.‬‬
‫‪R/A(high‬‬ ‫)‪R/A(low‬‬
‫)‬

‫‪Flit i‬‬ ‫‪Flit‬‬


‫(ج) ‪ D‬فلیت ‪ i‬را دریافت میکند‪.‬‬ ‫(د) فلیت ‪ i‬از بافر ‪ D‬حذف شده و فلیت ‪ i+1‬به بافر‪i+1S‬‬
‫میرسد ‪.‬‬
‫شکل ‪ :19-7‬قرارداد دستتکاندهی بین دو روتر خزشی‬
‫آنالیز تأخیر‪ :‬مقایسه زمانی بین شبکههای ذخیره و جلورانی و خزشی در شکل ‪ 20-7‬نشان داده شده است‪ .‬فرض‬
‫کنید ‪ L‬طول داده (برحسب بیت) باشد‪ W ،‬پهنای باند کانال (برحسب بیت بر ثانیه)‪ D ،‬فاصله (تعداد گرههای عبور‬
‫𝐹‬
‫شده منهای ‪ )1‬و ‪ F‬طول فلیت برحسب بیت باشد‪ .‬همچنین 𝑊=‪ tf‬تاخیر انتشار فلیت‪ tR ،‬زمان مسیریابی در هر‬
‫مسیریاب و ‪ ts‬زمان سویچینگ باشد‪ .‬طول بسته=‪= L+F‬طول داده‪+‬طول هدر‬
‫تاخیر ارتباطی سویچینگ مداری برابر است با‪:‬‬
‫𝐿‬
‫(معادله ‪TCs=tsetup+tdata=𝐷(𝑡𝐹 + 𝑡𝑅 + 𝑡𝑆 + 𝑡𝐹 + 𝑡𝑠 ) + 𝐹 𝑡𝐹 )5-7‬‬
‫بخش اول زمان برقراری مسیر اولیه میباشد‪ ،‬چون فلیت برای برقراری مسیر ابتدا از مبداء به مقصد میرود و سپس‬
‫از مقصد به مبداء بر میگردد دوبار زمان محاسبه شده است با این تفاوت که در برگشت ‪ tR‬وجود ندارد چون مسیر‬
‫مشخص شده است‪ tsetup .‬داده ارسال نمیکند و فقط فلیت هدر ارسال میشود که در صورتیکه میزان داده ارسالی‬
‫𝐿‬
‫زیاد باشد و به عبارتی ‪ L>>F‬در اینصورت بخش اول در مقابل بخش دوم قابل نادیده گرفتن میباشد و 𝐹𝑡 𝐹=‪TCS‬‬
‫خواهد بود‪.‬‬
‫تأخیر ارتباطی ‪ TSF‬در شبکه ذخیره و جلورانی بصورت زیر بیان میشود‪:‬‬
‫𝐿‬
‫]) 𝐹𝑡 ‪𝑇𝑆𝐹 = 𝐷 [𝑡𝑠 + 𝑡𝑟 + 𝑡𝐹 + 𝐹 (𝑡𝑠 +‬‬ ‫)‪(7-6‬‬
‫عمل مسیریابی فقط برای فلیت هدر انجام میشود نه داده‪.‬‬
‫تأخیر ‪ TWH‬برای یک شبکه مسیریابی خزشی بصورت زیر بیان میشود‪:‬‬
‫𝐿‬
‫)‪𝑇𝑊𝐻 = 𝐷(𝑡𝑠 + 𝑡𝐹 + 𝑡𝑟 ) + 𝐹 𝑚𝑎𝑥(𝑡𝑠 , 𝑡𝐹 ) (7-7‬‬
‫معادله ‪ 6-7‬نشان میدهد که ‪ TSF‬مستقیماً به ‪ D‬مرتبط است‪ .‬در معادله ‪ TWH=L/FtF ، 7-7‬اگر ‪ .L>>F‬بنابراین‬
‫فاصله ‪ D‬تأخیری قابل چشمپوشی در تأخیر مسیریابی دارد‪.‬‬
‫با توجه به معادالت ‪7-7‬و ‪ 5-7‬میتوان گفت ‪ Tvc=tWH‬البته به شرطی که ترافیک کم باشد‪ .‬اگر در سوییچ بافر‬
‫ورودی و بافر خروجی داشته باشیم نیز این رابطه صحیح میباشد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 410‬‬

‫براساس تخمین داده شده‪ ،‬مقدار نوعی ‪ TSF‬بین ‪ 2000‬تا ‪ 6000‬میکرو ثانیه است در حالیکه مقدار نوعی ‪،TWH‬‬
‫‪5‬میکروثانیه یا کمتر است‪ .‬شماتیک ذخیره و جلورانی اغلب توسط نرمافزار کنترل میشود در حالیکه شماتیک خزشی‬
‫کامالً مسیریابی سختافزاری است و بصورت خطلوله است‪.‬‬

‫)الف) مسیریابی ذخیره‪-‬و‪-‬جلورانی‬

‫)ب) مسیریابی خزشی‬


‫شکل ‪ :20-7‬مقایسه زمانی بین دو تکنیک مسیریابی‬
‫‪| 411‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫تمرینات فصل هفتم‬

‫مسأله ‪ -1-7‬یک چندپردازنده با ‪ n‬پردازنده و ‪ m‬ماژول حافظه‪-‬مشترک در نظر بگیرید که همه به یک گذرگاه‬
‫‪ backplane‬با یک داور مرکزی بصورتی که در شکل زیر نشان داده شده است‪ ،‬وصل شدهاند‪:‬‬

‫فرض کنید ‪ m>n‬و هر پردازنده به همه ماژولهای حافظه بطور برابر دسترسی داشته باشد‪ .‬به عبارت دیگر‪ ،‬هر‬
‫پردازنده یک درخواست برای هر ماژول با احتمال ‪ 1/m‬بدهد‪ .‬گذرگاه آدرس و ‪ DTB‬میتوانند در زمان مشابه‬
‫برای سرویس دادن به درخواست های مختلف استفاده شوند‪ .‬هر دو گذرگاه یک سیکل برای گذر آدرسِ یک‬
‫درخواست یا انتقال یک کلمه ‪ 4‬بایتی بین حافظه و پردازنده میگیرند‪ .‬در هر سیکل گذرگاه (‪ ،)Ƭ‬داور بطور تصادفی‬
‫یکی از درخواستهای پردازنده را انتخاب میکند‪.‬‬

‫وقتیکه یک ماژول در انتهای سیکل آدرس مشخص شد (یک سیکل گذرگاه)‪ ،‬یک سیکل حافظه طول میحافظه‬
‫نهاند (که برابر با ‪ c‬سیکل گذرگاه است) تا کلمه آدرس داده شده از ماژول حافظه بازیابی شود‪ ،‬و یک سیکل گذرگاه‬
‫دیگر برای انتقال کلمه به پردازنده درخواست دهنده از طریق گذرگاه داده نیاز است‪.‬‬

‫تا زمانیکه یک سیکل حافظه کامل می شود‪ ،‬داور درخواست دیگری را به ماژول مشابهی نخواهد فرستاد‪ .‬همه‬
‫درخواستهای رد شده نادیده گرفته میشوند و در سیکلهای گذرگاه بعدی ارسال میشود تا زمانیکه انتخاب شود‪.‬‬

‫(الف) پهنای باند حافظه که با میانگین تعداد کلمات منتقل شده در ثانیه روی ‪ DTB‬تعریف میشود را محاسبه‬
‫کنید‪ .‬فرض کنید ‪.n=8 , m=16, Ƭ=100 ns, c.Ƭ=4Ƭ=400ns‬‬
‫(ب) بهره وری حافظه که با میانگین تعداد درخواستهای پذیرفته شده توسط همه ماژولهای حافظه در هر سیکل‬
‫حافظه تعریف میشود را محاسبه کنید‪ .‬پارامترهای قسمت (الف) را مد نظر قرار دهید‪.‬‬

‫مسأله ‪ -2-7‬از گیتهای ‪ AND‬یا ‪( OR‬نه ‪ )wired-OR‬برای ساخت یک شبکه سوئیچ کراسبار ‪ n×n‬بین‬
‫‪ n‬پردازنده و ‪ n‬ماژول حافظه استفاده کنید‪ .‬اجازه دهید پهنای هر نقطه تقاطع ‪ w‬بیت (یا یک کلمه) در هر جهت‬
‫باشد‪.‬‬

‫(الف) یک طرح شماتیکی از یک سوئیچ نقطه تقاطع با استفاده از ‪ cij‬به عنوان یک سیگنال فعال ساز در سطر ‪i‬ام‬
‫و ستون ‪j‬ام ارائه دهید‪ .‬تعداد کل گیتهای ‪ AND‬و ‪ OR‬مورد نیاز را به عنوان تابعی از ‪ n‬و ‪ w‬تخمین بزنید‪.‬‬
‫(ب) فرض کنید اگر ‪ i<j‬پردازنده ‪ Pi‬از پردازنده ‪ Pj‬اولویت بیشتری داشته باشد وقتیکه برای دسترسی به ماژول‬
‫حافظه مشابه رقابت دشته باشند‪ .‬اجازه دهید 𝑛‪ 𝑘 = 𝑙𝑜𝑔2‬پهنای آدرس باشد‪ .‬داوری طراحی کنید که همه‬
‫سیگنالهای فعال سازی ‪ cij‬نقطه تقاطعها را تولید کند‪ ،‬مجدداً گیتهای ‪ AND‬یا ‪ OR‬دو ورودی و گیتهای‬
‫‪ NOT‬مورد نیاز را استفاده کنید‪ .‬فرض می شود‪ ،‬دیکدر آدرس حافظه از هر پردازنده قابل دسترس باشد و بنابراین‬
‫در طراحی داور در نظر نگیرید‪ .‬پیچیدگی طراحی داور را به عنوان تابعی از ‪ n,k‬مشخص کنید‪.‬‬
‫کانون نشر علوم‬ ‫‪| 412‬‬

‫مسأله ‪ -3-7‬یک سیستم دو‪-‬پردازنده (‪ )P1 , P2‬با استفاده از حافظه نهانهای خصوصی ‪ WB‬را مد نظر قرار‬
‫دهید‪ ،‬که همه به یک گذرگاه رقابتی مشترک متصل شده اند‪ .‬هر حافظه نهان چهار فریم بلوک دارد که با شماره‬
‫‪0‬و‪1‬و‪2‬و‪ 3‬در شکل زیر برچسب خوردهاند‪.‬‬

‫پردازنده ‪1‬‬ ‫پردازنده‪2‬‬

‫‪0‬‬ ‫‪0‬‬
‫حافظه‬ ‫‪1‬‬ ‫‪1‬‬ ‫حافظه‬
‫نهان ‪1‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫نهان‪2‬‬
‫‪3‬‬ ‫‪3‬‬
‫گذرگاه‬

‫حافظه اصلی‬

‫حافظه اصلی به هشت بلوک حافظه نهان با شمارههای ‪ 0‬و‪ 1‬و ‪ ....‬و‪ 7‬تقسیم شده است‪ .‬برای حفظ همبستگی‬
‫حافظه نهان‪ ،‬سیستم از قرارداد جاسوسی سه حالته (‪ )RO, RW, Invalid‬براساس سیاست نوشتن‪-‬نامعتبرسازی‬
‫توصیف شده در شکل ‪(12-7‬ب) استفاده میکند‪.‬‬

‫فرض کنید کالک مشابهی پردازندهها و گذرگاه حافظه را راهاندازی میکند‪ .‬در هر سیکل‪ ،‬هر پردازنده میتواند‬
‫یک درخواست برای دسترسی به گذرگاه ارائه کند‪ .‬در حالت درخواستهای گذرگاه همزمان‪ ،‬درخواست پردازنده ‪P1‬‬
‫برآورده شده و ‪ P2‬باید یک سیکل بیشتر برای دسترسی به گذرگاه صبر کند‪.‬‬

‫در همه حاالت‪ ،‬گذرگاه فقط اجازه یک تراکنش در سیکل را میدهد‪ .‬وقتیکه یک دسترسی گذرگاه برآورده شد‪،‬‬
‫درخواست باید تکمیل شود قبل از اینکه درخواست دیگری برآورده شود‪ .‬وقتیکه رقابت گذرگاه وجود ندارد‪،‬‬
‫رخدادهای دسترسی‪ -‬حافظه از هر پردازنده ممکن است نیازمند یک تا دو سیکل برای تکمیل داشته باشند که درزیر‬
‫بصورت مجزا توصیف میشوند‪:‬‬
‫• اصابت‪-‬خواندن در حافظه نهان نیازمند یک سیکل است و هیچ درخواست گذرگاهی وجود ندارد‪.‬‬
‫• فقدان‪ -‬خواندن در حافظه نهان نیازمند دو سیکل بدون رقابت است‪ .‬یکی برای برداشت بلوک و برای‬
‫خواندن پردازنده از حافظه نهان‪.‬‬
‫• اصابت‪-‬نوشتن نیازمند یک سیکل برای نوشتن پردازنده و نامعتبرسازی گذرگاه بطور همزمان است‪.‬‬
‫• فقدان‪ -‬نوشتن نیازمند دو سیکل است‪ :‬یکی برای یرداشت بلوک و نامعتبرسازی گذرگاه‪ ،‬و یکی برای‬
‫نوشتن پردازنده‪.‬‬
‫• جایگزینی یک بلوک کثیف نیازمند یک سیکل برای بروزرسانی حافظه از طریق گذرگاه است‪.‬‬

‫(الف) در حالت رقابت گذرگاه‪ ،‬یک سیکل اضافی برای داوری گذرگاه در همه حاالت فوق بجز اصابت‪-‬خواندن مورد‬
‫نیاز میشود‪.‬‬
‫نشان دهید که چگونه هشت بلوک حافظه نهان به چهار فریم بلوک با استفاده از سازمان حافظه نهان‬ ‫‪.I‬‬
‫نگاست مستقیم نگاشت پیدا میکنند‪.‬‬
‫‪| 413‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫نشان دهید که چگونه هشت فریم بلوک حافظه نهان با استفاده از سازمان حافظه نهان انجمنی‪-‬‬ ‫‪.II‬‬
‫مجموعهای دو‪-‬راهه نگاشت میشوند‪.‬‬
‫(ب) دو رشته رخداد دسترسی‪ -‬حافظه آسنکرون زیر را در نظر بگیرید‪ ،‬که اعداد ضخیم برای نوشتن و بقیه برای‬
‫خواندن هستند‪.‬‬
‫پردازنده شماره ‪0 :1‬و‪0‬و‪0‬و‪1‬و‪1‬و‪4‬و‪33‬و‪5‬و‪5‬و‪5‬‬
‫پردازنده شماره ‪2 :2‬و‪2‬و‪0‬و‪0‬و‪7‬و‪5‬و‪5‬و‪5‬و‪7‬و‪7‬و‪0‬‬
‫اجرای این دو رشته را روی دو پردازنده با اجرای بلوکهای متوالی ردیابی کنید‪ .‬هر دو حافظه نهان ابتداً‬ ‫‪.I‬‬
‫خالی هستند‪ .‬یک سازمان نگاشت‪-‬مستقیم در هر دو حافظه نهان را مد نظر قرار دهید‪ .‬حالت (‪ RO‬یا‬
‫‪)RW‬ی هر بلوک حافظه نهان معتبر و فقدان حافظه نهان و بهرهوری گذرگاه (مشغول یا بیکار) در‬
‫ردیابی بلوک برای هر سیکل را تعیین کنید‪ .‬فرض کنید که رخدادهای دسترسی‪-‬حافظه اولی به هر دو‬
‫حافظه نهان بطور همزمان در یک سیکل اتفاق میافتند‪ .‬نرخ اصابت حافظه نهان ‪1‬و ‪ 2‬را به ترتیب‬
‫محاسبه کنید‪.‬‬
‫یک سازمان حافظه نهان انجمنی‪-‬مجموعهای دو‪-‬راهه و سیاست جایگزینی بلوک حافظه نهان ‪LRU‬‬ ‫‪.II‬‬
‫را در نظر بگیرید‪.‬‬

‫مسأله ‪ -4-7‬اجرای ‪ 24‬قطعه کد ‪ S1‬تا ‪ S24‬را در نظر بگیرید‪ .‬گراف وابستگی آنها روی یک چندپردازنده با ‪4‬‬
‫پردازنده و شش ماژول حافظه در زیر نشان داده شده است‪ .‬فرض کنید همه قطعات اندازه دانه مشابهی دارند و‬
‫زمان اجرای برابری دارند‪ .‬وقتیکه دو یا بیشتر پردازنده سعی به دسترسی ماژول حافظه مشابهی در یک زمان دارند‪،‬‬
‫در خواست پردازنده با شماره کمتر برآورده میشود و سایر پردازندهها به مراحل زمانی بعدی موکول میشوند‪.‬‬

‫‪S1‬‬ ‫‪S2‬‬ ‫‪S3‬‬

‫‪S4‬‬ ‫‪S5‬‬ ‫‪S6‬‬ ‫‪S7‬‬ ‫‪S8‬‬ ‫‪S9‬‬ ‫‪S10‬‬

‫‪S11‬‬ ‫‪S12‬‬ ‫‪S13‬‬ ‫‪S14‬‬

‫‪S15‬‬ ‫‪S16‬‬ ‫‪S17‬‬ ‫‪S18‬‬ ‫‪S19‬‬ ‫‪S20‬‬ ‫‪S21‬‬ ‫‪S22‬‬

‫‪S23‬‬ ‫‪S24‬‬

‫یک پردازنده منتظر از رد دسترسی‪-‬حافظه اخیر اولویت بیشتری روی درخواستهای جدید به ماژول حافظه مشابه‬
‫دارد‪ .‬هیچ پردازندهای نباید بیشتر از سه مرحله برای دسترسی به یک ماژول داده شده منتظر بماند‪ .‬هر قطعه کد‬
‫کانون نشر علوم‬ ‫‪| 414‬‬

‫زمان ثابتی برای دسترسی به یک حافظه و اجرا میگیرد‪ .‬فرض کنید که چهار پردازنده در هر سیکل دستور اجرای‬
‫سگمنت سنکرون شده باشند‪.‬‬
‫در بعضی حاالت‪ ،‬یک قطعه کد ممکن است نیاز به دسترسی همزمان به چندین ماژول حافظه داشته باشد‪ .‬مسأله‬
‫رقابت در شبکه ارتباطی را نادیده بگیرید‪ .‬چهار پردازنده در مد ‪ SIMD‬عمل میکنند‪ ،‬و دستورات متفاوت میتوانند‬
‫توسط پردازندههای مختلف در طول یک سیکل اجرا شوند‪.‬‬

‫میانگین پهنای باند حافظه براساس کلمه در واحد زمان چیست؟ سعی کنید به حداقل زمان اجرا با حداکثر کردن‬
‫درجه موازات در همه مراحل برسید‪.‬‬
‫دستور‬ ‫پردازنده‬ ‫دستور‬ ‫پردازنده‬
‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P4‬‬ ‫‪P1‬‬ ‫‪P2‬‬ ‫‪P3‬‬ ‫‪P4‬‬
‫‪S1‬‬ ‫‪M1‬‬ ‫‪M5‬‬ ‫‪M1‬‬ ‫‪S13‬‬ ‫‪M1‬‬ ‫‪M6‬‬
‫‪S2‬‬ ‫‪M1‬‬ ‫‪M2‬‬ ‫‪M2‬‬ ‫‪M2‬‬ ‫‪S14‬‬ ‫‪M4‬‬ ‫‪M5‬‬ ‫‪M4‬‬
‫‪S3‬‬ ‫‪M3‬‬ ‫‪M3‬‬ ‫‪S15‬‬ ‫‪M3‬‬ ‫‪M3‬‬ ‫‪M3‬‬
‫‪S4‬‬ ‫‪M5‬‬ ‫‪M3‬‬ ‫‪M2‬‬ ‫‪M4‬‬ ‫‪S16‬‬ ‫‪M2‬‬ ‫‪M2‬‬ ‫‪M2‬‬ ‫‪M4‬‬
‫‪S5‬‬ ‫‪M1‬‬ ‫‪M6‬‬ ‫‪M2‬‬ ‫‪S17‬‬ ‫‪M1‬‬
‫‪S6‬‬ ‫‪M2‬‬ ‫‪M1‬‬ ‫‪M3‬‬ ‫‪S18‬‬ ‫‪M2‬‬ ‫‪M5‬‬
‫‪S7‬‬ ‫‪M6‬‬ ‫‪M5‬‬ ‫‪S19‬‬ ‫‪M2‬‬ ‫‪M2‬‬ ‫‪M2‬‬ ‫‪M1‬‬
‫‪S8‬‬ ‫‪M2‬‬ ‫‪M3‬‬ ‫‪S20‬‬ ‫‪M3‬‬ ‫‪M3‬‬ ‫‪M4‬‬
‫‪S9‬‬ ‫‪M3‬‬ ‫‪M4‬‬ ‫‪M4‬‬ ‫‪S21‬‬ ‫‪M2‬‬ ‫‪M4‬‬
‫‪S10‬‬ ‫‪M1‬‬ ‫‪M3‬‬ ‫‪M4‬‬ ‫‪M4‬‬ ‫‪S22‬‬ ‫‪M3‬‬ ‫‪M1‬‬ ‫‪M6‬‬
‫‪S11‬‬ ‫‪M2‬‬ ‫‪M4‬‬ ‫‪M5‬‬ ‫‪M1‬‬ ‫‪S23‬‬ ‫‪M1‬‬ ‫‪M2‬‬ ‫‪M5‬‬ ‫‪M3‬‬
‫‪S12‬‬ ‫‪M2‬‬ ‫‪M6‬‬ ‫‪M5‬‬ ‫‪S24‬‬ ‫‪M3‬‬ ‫‪M4‬‬

‫نکته اینکه در هر مرحله بعضی از ماژولهای حافظه ممکن است بیکار باشند‪ .‬بیشترین پهنای باند حافظه ممکن‬
‫شش کلمه در هر مرحله است‪ .‬بعضی سگمنتها ممکن است نیازمند انتظاری کمتر از سه مرحله برای بدست آوردن‬
‫حافظه درخواست شده باشند‪ .‬اما دروه زمانی انتظار باید حداقل شود‪.‬‬

‫مسأله ‪ -5-7‬مسأله براساس شکل ‪ 11-7‬میباشد که چندین درخواست ‪ Fetch&Add‬به یک متغیر مشترک‬
‫در یک حافظه مشترک ترکیب میکند‪.‬‬

‫(الف) اجزاء شبکه ترکیبی الزم برای ترکیب چهار ‪ Fetch&Add(x,ei) for i=1,2,3,4‬را نشان دهید‪.‬‬
‫(ب) تصویر متوالی و تغییرات سوئیچ و محتوای حافظه را مثل شکل ‪ 8.7‬برای ترکیب چهار درخواست نشان دهید‪.‬‬

‫مسأله ‪-6-7‬به سؤاالت زیر راجع به انتخابهای طراحی در چندکامپیوترهای ساخته شده در گذشته پاسخ دهید‪.‬‬

‫(الف) چرا از پردازندههای کم‪-‬هزینه روی پردازندههای گران به عنوان گرههای پردازشی استفاده شده است؟‬
‫(ب) چرا حافظه توزیع شده روی حافظه مشترک انتخاب شد؟‬
‫(ج) چرا انتقال‪-‬پیام روی سوئیچینگ آدرس انتخاب شد؟‬
‫(د) چرا کنترل ‪ MIMD, MPMD, SPMD‬روی موازات داده ‪ SIMD‬انتخاب شد؟‬
‫‪| 415‬‬ ‫فصل هفتم‪ :‬چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان‬

‫مسأله ‪ -7-7‬اصطالحات زیر راجع به شبکههای چندکامپیوتره و مکانیزمهای انتقال‪-‬پیام را توضیح دهید‪.‬‬

‫(الف) پیام‪ ،‬بسته‪ ،‬و فلیت‬


‫(ب) مسیریابی ذخیره‪-‬و‪-‬جلورانی در سطح بسته‬
‫(ج) مسیریابی خزشی در سطح فلیت‬
‫(د) کانالهای مجازی در مقایسه با کانالهای فیزیکی‬
‫(ه) بنبست بافر در مقایسه با بنبست کانال‬

‫مسأله ‪ -8-7‬اصطالحات زیر راجع به الگوهای ارتباطی در شبکه انتقال‪-‬پیام را توضیح دهید‪.‬‬

‫(الف) تکپخشی در مقایسه با چندپخشی‬


‫(ب) پخشی در مقایسه با کنفرانس‬
‫(ج) ترافیک کانال یا ترافیک شبکه‬
‫(د) تأخیر ارتباطی شبکه‬
‫(ه) پارتیشنبندی شبکه برای ارتباطات چندپخشی‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫‪| 417‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫فصل هشتم‪ -‬موازات سطح داده در معماری های برداری‪ SIMD ،‬و ‪GPU‬‬

‫مجم‬
‫هب این الگوریتماه‪ ،‬الگوریتماهی موازی داده میگوییم زریا موازات آنها بخاطر انجام عملیات همزمان روی وهع زبرگی از دادهاه میباشد هن‬

‫ن‬
‫کنترل چند خ‪.‬‬

‫)‪W.Daniel Hillis and y L.Steel "Data Parallel Alg Guorithms, Comm ACM (1986‬‬

‫شخ‬
‫اگر شما بخواهید یک زمین را م زبنید از کدا م استفاده میکنید‪ :‬دو گاو رن قوی یا ‪ 1024‬جوجه؟‬

‫مقایسه دو پردازنده برداری قدرتمند با تعداد زیادی پردازنده ساده‪ Seymour Cray .‬پدر سوپرکامپیوتر‬

‫‪ -1-8‬مقدمه‬
‫یک سؤال ساده برای معماری یک دستورالعمل‪ ،‬چند داده )‪ ،(SIMD‬این بود که میزان موازات سطح داده‪)DLP( 1‬‬
‫یک مجموعه کاربردی چقدر است؟ پنجاه سال بعد‪ ،‬پاسخ فقط محاسبات علمی ماتریس گرا نبود‪ ،‬بلکه پردازش صدا‬
‫و تصاویر رسانه‪-‬گرا نیز بود‪ .‬بعالوه چون یک دستور میتواند تعداد زیادی داده را مصرف کند‪ SIMD ،‬از لحاظ‬
‫انرژی مؤثرتر از ‪ MIMD‬است زیرا نیازمند برداشت و اجرای یک دستور برای هر عمل داده است‪ .‬این دو پاسخ‬
‫‪ SIMD‬را برای دستگاههای موبایل شخصی جذابتر کرده است‪ .‬در انتها‪ ،‬شاید بزرگترین مزیت ‪ SIMD‬در مقایسه‬
‫با ‪ MIMD‬این است که برنامهنویس هنوز هم بصورت ترتیبی فکر میکند و باز هم با داشتن عملیات داده موازی‬
‫به افزایش سرعت موازات میرسد‪.‬‬

‫این فصل سه نوع ‪ SIMD‬را پوشش میدهد‪ :‬معماری برداری‪ ،‬توسعه مجموعه دستورالعمل ‪ SIMD‬چندرسانهای‪،‬‬
‫و واحدهای پردازش گرافیک‪.2‬‬
‫اولین نوع‪ ،‬که بیشتر از ‪ 30‬سال قبل از دوتای آخر واقع شد‪ ،‬به معنی اجرای خطلوله تعداد زیادی عملیات داده‬
‫میباشد‪ .‬فهم و کامپایل این نوع معماریهای برداری آسانتر از سایر انواع ‪ SIMD‬میباشد اما برای ریزپردازندهها‬
‫تاکنون گران هستند‪ .‬قسمتی از هزینه در ترانزیستورها بود و قسمتی به خاطر هزینه پهنای باند ‪ DRAM‬مورد نیاز‬
‫بود و تکیه زیادی روی حافظه نهان برای برآورده کردن نیازهای ریزپردازندههای سنتی میباشد‪.‬‬
‫نوع دوم ‪ SIMD‬به معنی عملیات داده موازی همزمان میباشد و در اکثر معماریهای دستورالعمل امروزی برای‬
‫پشتیبانی کاربردهای چندرسانهای پیدا میشود‪ .‬برای معماریهای ‪ ،x86‬توسعه یافته دستورالعمل ‪ SIMD‬با‬

‫‪1‬‬
‫‪Data Level Parallelism‬‬
‫‪2‬‬
‫)‪Graphic Processing Units (GPU‬‬
‫کانون نشر علوم‬ ‫‪| 418‬‬

‫‪ MMX‬در سال ‪1996‬شروع شد که با چندین نگارش ‪ SSE1‬در دهه بعد دنبال شد و تا ‪ AVX2‬امروزی ادامه دارد‪.‬‬
‫برای بدست آوردن باالترین نرخ کامپیوتر ‪ ،x86‬اغلب نیازمند استفاده از این دستورات ‪ SIMD‬باالخص برای‬
‫برنامههای ممیز شناور هستیم‪.‬‬

‫نوع سوم ‪ SIMD‬از خانواده ‪ GPU‬میآید‪ ،‬که کارایی باالتری از کامپیوترهای چندهستهای سنتی امروزی عرضه‬
‫میکند‪ .‬درحالیکه ‪GPU‬ها خواصی از معماریهای برداری را به اشتراک استفاده میکنند‪ ،‬اما خواص ممیزی‬
‫خودشان را بعلت اکوسیستمی که دربر میگیرند‪ ،‬نیز دارند‪ .‬این محیط یک پردازنده سیستم و سیستم حافظه عالوه‬
‫بر ‪ GPU‬و حافظه گرافیکی دارد‪ .‬در حقیقت‪ ،‬برای تمایز بین دو معماری‪ ،‬خانواده ‪ GPU‬به این نوع معماری‬
‫نامتجانس‪ 3‬میگوید‪.‬‬

‫شکل ‪ :1-8‬پتانسیل موازات برای ‪ SIMD, MIMD‬و هر دوی ‪ SIMD, MIMD‬برای کامپیوترهای‪ x86‬در طول زمان‪ .‬این شکل فرض‬
‫میکند هر دو سال دو هسته در تراشه برای ‪ MIMD‬اضافه شده است و تعداد عملیات ‪ SIMD‬هر ‪ 4‬سال دو برابر شده است‪.‬‬
‫با مشکالت موازات داده انبوه‪ ،‬هر سه معماری ‪ SIMD‬مزیت سادگی برنامه نویسی نسبت به برنامهنویسی ‪MIMD‬‬
‫موازی کالسیک دارند‪ .‬برای اینکه اهمیت ‪ SIMD‬در مقایسه با ‪ MIMD‬را بررسی کنیم شکل ‪ 1-8‬تعداد‬

‫‪1‬‬
‫‪streaming SIMD Extension‬‬
‫‪2‬‬
‫‪Advanced Vector Extension‬‬
‫‪3‬‬
‫‪Heterogeneous‬‬
‫‪| 419‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫هستههای ‪ MIMD‬در مقایسه با تعداد عملیات ‪-32‬بیتی و ‪-64‬بیتی در هر پالس ساعت در مُد ‪ SIMD‬برای‬
‫کامپیوترهای ‪ x86‬را نشان میدهد‪.‬‬

‫برای کامپیوترهای ‪ ،x86‬انتظار دیدن دو هسته اضافی در تراشه هر دو سال و برای ‪ SIMD‬هر چهار سال دو برابر‬
‫داریم‪ .‬با این مفروضات‪ ،‬در دهه بعدی پتانسیل افزایش سرعت ‪ SIMD‬دو برابر موازات ‪ MIMD‬میباشد‪ .‬بنابراین‪،‬‬
‫اهمیت فهم موازات ‪ SIMD‬حداقل به اندازه فهم موازات ‪ MIMD‬میباشد هرچندکه ‪ MIMD‬اخیراً در بازار‬
‫هیاهو بپا کرده است‪ .‬برای کاربردهایی که هم موازات سطح‪-‬داده و هم موازات سطح‪-‬نخ دارند‪ ،‬پتانسیل افزایش‬
‫سرعت در سال ‪ 2020‬از امروزه خیلی بیشتر خواهد بود‪.‬‬

‫هدف این فصل برای معمارها فهمیدن علت عمومیتر بودن معماری برداری از ‪SIMD‬ی چندرسانهای و همچنین‬
‫شباهتها و تفاوتهای بین معماریهای برداری و ‪ GPU‬میباشد‪ .‬چون دستورات ‪ SIMD‬چندرسانهای زیرمجموعه‬
‫معماریهای برداری است و شامل مدل بهتری برای کامپایل است و چون ‪GPU‬ها شباهتهایی با معماری برداری‬
‫دارند‪ ،‬ابتدا معماری برداری را بررسی میکنیم و سپس به دو تای بعدی میپردازیم‪.‬‬

‫‪ -2-8‬معماری برداری‬
‫معماری برداری مجموعههای عناصر داده پراکنده شده حول حافظه را میقاپد‪ ،‬آنها را در داخل بایتهای ثبات‬
‫ترتیبی قرار میدهد‪ ،‬روی دادهها در این فایل ثبات کار میکند و سپس نتایج را در داخل حافظه قرار میدهد‪ .‬یک‬
‫دستور تک روی برداری از داده اعمال میشود که منتج به چندین عمل ثبات‪-‬ثبات روی عناصر داده مستقل میشود‪.‬‬

‫این فایلهای ثبات بزرگ شبیه بافرهای تحت کنترل کامپایلر عمل میکنند‪ ،‬تا هم تأخیر حافظه پنهان شود و هم‬
‫پهنای باند حافظه تغییر نسبی پیدا کند‪ .‬چون ‪ load, store‬عمیقاً خطلوله شدهاند‪ ،‬برنامه تأخیر حافظه را یکبار‬
‫فقط برای بارکردن برداری یا ذخیره برداری بجای یکبار برای هر عنصر متحمل میشود‪ .‬برنامههای برداری سعی‬
‫میکنند تا حافظه را مشغول نگه دارند‪.‬‬

‫‪ :VMIPS‬ما با یک پردازنده برداری که شامل عناصر اولیه نشان داده در شکل ‪ 2-8‬است شروع میکنیم‪ .‬این‬
‫پردازنده‪ ،‬که تقریباً براساس ‪ Cray-1‬است پایه بحث در طول این فصل است‪ .‬به این مجموعه دستورالعمل‬
‫‪ VMIPS‬میگوییم که قسمت اسکالر آن ‪ MIPS‬و سمت برداری آن توسعه یافته برداری منطقی ‪ MIPS‬است‪.‬‬
‫بقیه این زیر بخش چگونگی وابستگی معماری پایه ‪ VMIPS‬به سایر پردازندهها را تجزیه تحلیل میکند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 420‬‬

‫شکل ‪ :2-8‬ساختار پایه یک معماری برداری‪ .VMIPS ،‬این پردازنده یک معماری اسکالر شبیه ‪ MIPS‬دارد‪ .‬همچنین ‪ 64‬ثبات برداری‬
‫وجود دارد و همه واحدهای عملیاتی واحدهای عملیاتی برداری هستند‪ .‬این فصل دستورات برداری خاصی برای هر دوی محاسبات ریاضی‬
‫و دسترسیهای حافظه تعریف میکند‪ .‬شکل واحدهای برداری برای عملیات منطقی و صحیح را نشان میدهد بطوریکه ‪ VMIPS‬شبیه‬
‫یک پردازنده برداری استاندارد است که شامل این واحدها است‪ .‬ثباتهای برداری و اسکالر تعداد کافی پورت خواندن و نوشتن برای چندین‬
‫عمل برداری همزمان دارد‪ .‬یک مجموعه از سوئیچهای کراسبار این پورتها را به ورودیها و خروجیهای واحدهای عملیاتی متصل‬
‫میکنند‪.‬‬

‫اجزاء اولیه معماری مجموعه دستورالعمل ‪ VMIPS‬عبارتند از‪:‬‬


‫• ثباتهای برداری‪ :‬هر ثبات برداری یک بانک با طول ثابت است که یک بردار را نگه میدارد‪VMIPS .‬‬
‫هشت ثبات برداری دارد‪ ،‬و هر ثبات برداری ‪ 64‬عنصر که هر کدام ‪ 64‬بیتی میباشند را نگه میدارد‪ .‬فایل‬
‫ثبات برداری نیازمند تهیه پورتهای کافی برای تغذیه همه واحدهای عملیاتی برداری میباشد‪ .‬این پورتها‬
‫درجه باالیی از هم پوشانی را بین عملیات برداری برای ثباتهای برداری مختلف اجازه میدهد‪ .‬پورتهای‬
‫خواندن و نوشتن‪ ،‬که در مجموع ‪ 16‬پورت خواندن و ‪ 8‬پورت نوشتن وجود دارد‪ ،‬به ورودیها یا خروجیهای‬
‫واحد عملیاتی توسط یک زوج سوئیچ کراسبار متصل میشوند‪.‬‬
‫• واحدهای عملیاتی برداری‪ :‬هر واحد کامالً خطلوله شده است‪ ،‬و میتواند در هر پالس ساعت یک عمل جدید‬
‫را شروع کند‪ .‬یک واحد کنترل برای تشخیص مخاطره نیاز میشود‪ ،‬هم مخاطرههای ساختاری برای واحدهای‬
‫عملیاتی و مخاطره داده روی دسترسیهای داده‪ .‬شکل ‪ 2.8‬نشان میدهد که ‪ VMIPS‬پنج واحد عملیاتی‬
‫دارد‪ .‬برای سادگی منحصراً روی واحدهای ممیز شناور تمرکز میکنیم‪.‬‬
‫‪| 421‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫• واحد ‪ load/store‬برداری‪ :‬واحدهای حافظه برداری یک بردار را از‪/‬به حافظه بار یا ذخیره میکند‪.‬‬
‫‪Load‬ها و ‪store‬های برداری ‪ VMIPS‬کامالً برداری شدهاند بطوریکه کلمات میتوانند بین ثباتهای‬
‫برداری و حافظه با پهنای باند یک کلمه در هر پالس ساعت بعد از یک تأخیر اولیه منتقل شوند‪ .‬این واحد‪،‬‬
‫‪ load/store‬اسکالر را هم میتواند راهاندازی کند‪.‬‬
‫• مجموعهای از ثباتهای اسکالر‪ :‬ثباتهای اسکالر هم میتوانند دادهها را به عنوان ورودی به واحدهای‬
‫عملیاتی برداری تهیه کنند‪ ،‬هم آدرسها برای گذر به واحد ‪ load/store‬برداری را محاسبه کنند‪ .‬این‬
‫ثباتها‪ 32 ،‬ثبات همه منظوره و ‪ 32‬ثبات ممیز شناور ‪ MIPS‬میباشند‪ .‬یک ورودی واحدهای عملیاتی‬
‫برداری مقادیر اسکالر را به محض اینکه از فایل ثبات اسکالر خوانده شوند لچ میکند‪.‬‬
‫جدول ‪ 1-8‬دستورات برداری ‪ VMIPS‬را لیست کرده است‪ .‬در ‪ ،VMIPS‬عملیات برداری نام مشابه دستورات‬
‫اسکالر ‪ MIPS‬را استفاده میکنند با این تفاوت که حروف ”‪ “VV‬به آن اضافه شدهاند‪ .‬بنابراین دستور ‪ADDVV.D‬‬
‫جمع دو بردار با دقت مضاعف برداری است‪ .‬دستورات برداری به عنوان ورودی یا دو ثبات ورودی میگیرند‬
‫(‪ )ADDVV.D‬یا یک ثبات برداری و یک ثبات اسکالر که با حروف ”‪ “VS‬خاتمه مییابند (‪ .)ADDVS.D‬در‬
‫حالت آخر همه عملیات مقدار مشابهی در ثبات اسکالر به عنوان یک ورودی استفاده میکنند‪ :‬عمل ‪ADDVS.D‬‬
‫محتوای ثبات اسکالر را به هر عنصر در یک ثبات برداری اضافه میکند‪ .‬واحد عملیاتی برداری یک کپی از مقدار‬
‫اسکالر را در زمان انتشار میگیرد‪ .‬اکثر عملیات برداری یک ثبات مقصد برداری دارند‪ ،‬هرچندکه تعداد کمی (مثل‬
‫شمارش جمعیت) یک مقدار اسکالر تولید میکنند که در یک ثبات اسکالر ذخیره میشود‪.‬‬

‫نامهای ‪ LV‬و ‪ SV‬بارکردن و ذخیره کردن برداری را نشان میدهد‪ ،‬و آنها یک بردار کامل از داده دقت مضاعف را‬
‫بارکرده یا ذخیره میکنند‪ .‬یک عملوند ثبات برداری است که باید بار شود یا ذخیره شود‪ ،‬عملوند دیگر که یک ثبات‬
‫همه‪-‬منظوره ‪ MIPS‬است آدرس شروع بردار در حافظه است‪ .‬خواهیم دید که عالوه بر ثباتهای برداری‪ ،‬ما نیازمند‬
‫دو ثبات خاص منظوره دیگر هستیم‪ :‬ثباتهای طول‪-‬بردار و پوشش‪-‬بردار‪ .1‬اولی وقتی استفاده میشود که طول‬
‫بردار طبیعی ‪ 64‬نباشد و دیگری وقتی استفاده میشود که حلقهها شامل دستورات ‪ IF‬شود‪.‬‬

‫معماریهایی که میتوانند کارایی باال داشته باشند بدون اینکه هزینههای انرژی و پیچیدگی طراحی سوپراسکالرهای‬
‫خارج‪-‬از‪-‬ترتیب را داشته باشند مورد توجه معماران میباشند‪ .‬دستورات برداری بطور طبیعی این هدف را برآورده‬
‫میکنند چون معماران میتوانند آنها را برای باال بردن کارایی پردازندههای به‪-‬ترتیب استفاده کنند بدون اینکه‬
‫تقاضای انرژی و پیچیدگی طراحی بطور چشمگیری افزایش یابد‪.‬‬

‫‪1‬‬
‫‪Vector- Mask and Vector-Lenght‬‬
‫کانون نشر علوم‬ ‫‪| 422‬‬

‫دستورالعمل‬ ‫عملوندها‬ ‫عملکردها‬


‫‪ADDVV.D‬‬ ‫‪V1,V2,V3‬‬ ‫عناصر ‪ V2,V3‬را با هم جمع و نتیجه را در ‪ V1‬قرار میدهد‪.‬‬
‫‪ADDVS.D‬‬ ‫‪V1,V2,F0‬‬ ‫‪ F0‬را با همه عناصر ‪ V2‬جمع کرده و هر نتیجه را در ‪V1‬قرار میدهد‪.‬‬
‫‪SUBVV.D‬‬ ‫‪V1,V2,V3‬‬ ‫عناصر ‪ V3‬را از ‪ V2‬کم میکند و نتیجه را در ‪V1‬قرار میدهد‪.‬‬
‫‪SUBVS.D‬‬ ‫‪V1,V2,F0‬‬ ‫‪ F0‬را از عناصر ‪ V2‬کم میکند و هر نتیجه را در ‪ V1‬قرار میدهد‪.‬‬
‫‪SUBSV.D‬‬ ‫‪V1,F0,V2‬‬ ‫عناصر ‪ V2‬را از ‪ F0‬کم میکند و هر نتیجه را در ‪ V1‬قرار میدهد‪.‬‬
‫‪MULVV.D‬‬ ‫‪V1,V2,V3‬‬ ‫عناصر ‪ V2,V3‬را در هم ضرب کرده و هر نتیجه را در ‪ V1‬قرار میدهد‪.‬‬
‫‪MULVS.D‬‬ ‫‪V1,V2,F0‬‬ ‫هر عنصر ‪ V2‬را در ‪ F0‬ضرب میکند و سپس هر نتیجه را در ‪ V1‬قرار میدهد‪.‬‬
‫‪DIVVV.D‬‬ ‫‪V1,V2,V3‬‬ ‫عناصر ‪ V2‬را بر ‪ V3‬تقسیم میکند‪ ،‬سپس نتیجه را در ‪ V1‬ذخیره میکند‪.‬‬
‫‪DIVVS.D‬‬ ‫‪V1,V2,F0‬‬ ‫عناصر ‪ V2‬را بر ‪ F0‬تقسیم میکند و هر نتیجه را در ‪ V1‬ذخیره میکند‪.‬‬
‫‪DIVSV.D‬‬ ‫‪V1,F0,V2‬‬ ‫‪ F0‬را بر عناصر ‪ V2‬تقسیم میکند و نتیجه را در ‪ V1‬ذخیره میکند‪.‬‬
‫‪LV‬‬ ‫‪V1,R1‬‬ ‫ثبات برداری ‪ V1‬را از حافظه با آدرس شروع ‪ R1‬بار میکند‪.‬‬
‫‪SV‬‬ ‫‪R1,V1‬‬ ‫ثبات برداری ‪ V1‬را در حافظه با آدرس شروع ‪ R1‬ذخیره میکند‪.‬‬
‫‪LVWS‬‬ ‫)‪V1,(R1,R2‬‬ ‫‪ V1‬را از آدرس ‪ R1‬با گام ‪ R2‬بار میکند‪.‬‬
‫‪SVWS‬‬ ‫‪(R1+R2),V1‬‬ ‫‪ V1‬را در آدرس ‪ R1‬با گام ‪ R2‬ذخیره میکند‪.‬‬
‫‪LVI‬‬ ‫)‪V1,(R1+V2‬‬ ‫‪ V1‬را با برداری که عناصر آن در )‪ R2+V2(i‬قرار دارد بار میکند‪.‬‬
‫‪SVI‬‬ ‫‪(R1+V2),V1‬‬ ‫‪ V1‬را در برداری که عناصر آن در )‪ R1+V2(i‬قرار دارد ذخیره میکند‪.‬‬
‫‪CVI‬‬ ‫‪V1,R1‬‬ ‫یک بردار اندیس با ذخیره مقادیر ‪ 0,1×R1,2×R1,..,63×R1‬در ‪ V1‬ایجاد‬
‫میکند‪.‬‬
‫‪S—VV.D‬‬ ‫‪V1,V2‬‬ ‫عناصر در ‪ V1,V2‬را مقایسه میکند(‪ .)EQ,NE,GT,LT,GE,LE‬اگر شرط‬
‫‪S—VS.D‬‬ ‫‪V1,F0‬‬ ‫درست باشد‪ 1 ،‬را در بیت مربوطه بردار قرار میدهد‪ ،‬در غیر اینصورت ‪ 0‬قرار‬
‫میدهد‪ .‬بردار بیتی نتیجه را در ثبات پوشش بردار (‪ )VM‬قرار میدهد‪ .‬دستور —‪S‬‬
‫‪ VS.D‬مقایسه مشابهی انجام میدهد اما از یک مقدار اسکالر به عنوان یک عملوند‬
‫استفاده میکند‪.‬‬
‫‪POP‬‬ ‫‪R1,VM‬‬ ‫تعداد ‪ 1‬ها را در ثبات پوشش‪-‬بردار میشمارد و آنرا در ‪ R1‬ذخیره میکند‪.‬‬
‫‪CVM‬‬ ‫ثبات پوشش‪-‬بردار را به یک تنظیم میکند (تمام بیتها)‪.‬‬
‫‪MTC1‬‬ ‫‪VLR,R1‬‬ ‫محتوای ‪ R1‬را به ثبات طول‪-‬بردار ‪ VL‬منتقل میکند‪.‬‬
‫‪MFC1‬‬ ‫‪R1,VLR‬‬ ‫محتوای ثبات طول‪-‬بردار ‪ VL‬را به ثبات ‪ R1‬منتقل میکند‪.‬‬
‫‪MVTM‬‬ ‫‪VM,F0‬‬ ‫محتوای ‪ F0‬را به ثبات پوشش‪-‬بردار ‪ VM‬منتقل میکند‪.‬‬
‫‪MVFM‬‬ ‫‪F0,VM‬‬ ‫محتوای ثبات پوشش‪-‬بردار را به ‪ F0‬منتقل میکند‪.‬‬
‫جدول ‪ :1-8‬دستورات برداری ‪ ،VMIPS‬فقط عملیات ممیز شناور دقت‪-‬مضاعف نشان داده شدهاند‪.‬‬

‫با یک دستور برداری‪ ،‬سیستم میتواند عملیات روی عناصر داده برداری را به روشهای زیادی انجام دهد‪ ،‬شامل‬
‫عملیات روی اجزاء زیادی بطور همزمان‪ .‬این انعطاف پذیری به طراحیهای برداری اجازه میدهد واحدهای اجرایی‬
‫‪| 423‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

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

‫بردارها اندازه دادههای متنوعی را پشتیبانی میکنند‪ .‬بنابراین‪ ،‬یک نگاه از اندازه ثبات برداری ‪ 64‬عنصر داده ‪64‬‬
‫بیتی‪ ،‬و سایر نگاههای معتبر ‪ 128‬عنصر ‪ 32‬بیتی‪ 256 ،‬عنصر ‪ 16‬بیتی و حتی ‪ 512‬عنصر ‪ 8‬بیتی میباشند‪ .‬چنین‬
‫کثرت سختافزاری دلیل مفید بودن یک معماری برداری برای کاربردهای چند رسانهای و کاربردهای علمی می‪-‬‬
‫باشد‪.‬‬
‫پردازندههای برداری چگونه کار میکنند‪ :‬یک مثال‬
‫ما میتوانیم با مشاهده یک حلقه برداری برای ‪ VMIPS‬عملکرد یک پردازنده برداری را بهتر درک کنیم‪ .‬اجازه‬
‫دهید که یک مسأله رایج را مطرح کنیم که از آن در این فصل استفاده میکنیم‪:‬‬
‫‪Y=a×X+Y‬‬
‫‪ X, Y‬بردار هستند که در حافظه مقیم هستند و ‪ a‬یک اسکالر است‪ .‬به این مسأله حلقه ‪ SAXPY1‬یا ‪DAXPY2‬‬
‫میگویند که اولی حلقه داخلی برنامه محک ‪ linpack‬است‪ .‬لینپک مجموعهای از روتینهای جبر خطی است‪ ،‬و‬
‫برنامه محک لینپک شامل روتینهایی برای انجام حذف گاوسی میباشد‪.‬‬
‫فرض کنید که تعداد عناصر‪ ،‬یا طول‪ ،‬ثبات بردار (‪ )64‬مطابق با طول عملیات برداری باشد (بعداً این محدودیت را‬
‫حذف میکنیم)‪.‬‬

‫مثال ‪ :1-8‬کد ‪ MIPS‬و ‪ VMIPS‬را برای حلقه ‪ DAXPY‬نشان دهید‪ .‬فرض کنید که آدرسهای شروع ‪ X‬و‬
‫‪ Y‬به ترتیب در ‪ Rx‬و ‪ Ry‬باشند‪.‬‬
‫پاسخ‪ :‬کد ‪ MIPS‬بصورت زیر است‪:‬‬
‫‪L.D‬‬ ‫‪F0,a‬‬ ‫‪;load scalar a‬‬
‫‪DADDIU‬‬ ‫‪R4,Rx,#512 ;last address to load‬‬
‫‪Loop:‬‬ ‫‪L.D‬‬ ‫)‪F2,0(Rx‬‬ ‫]‪;Load X[i‬‬
‫‪MUL.D‬‬ ‫‪F2,F2,F0‬‬ ‫]‪;a×X[i‬‬
‫‪L.D‬‬ ‫)‪F4,0(Ry‬‬ ‫]‪;Load Y[i‬‬
‫‪ADD.D‬‬ ‫‪F4,F4,F2‬‬ ‫]‪;a×X[i]+Y[i‬‬
‫‪S.D‬‬ ‫)‪F4,0(Ry‬‬ ‫]‪;store into Y[i‬‬
‫‪DADDIU‬‬ ‫‪Rx,Rx,#8‬‬ ‫‪;increment index to X‬‬
‫‪DADDIU‬‬ ‫‪Ry,Ry,#8‬‬ ‫‪;increment index to Y‬‬
‫‪DSUBU‬‬ ‫‪R20,R4,Rx‬‬ ‫‪;compute bound‬‬
‫‪BNEZ‬‬ ‫‪R20,Loop‬‬ ‫‪;check if done‬‬

‫‪1‬‬
‫‪single-precision a×X plus Y,‬‬
‫‪2‬‬
‫‪double-precision a×X plus Y‬‬
‫کانون نشر علوم‬ ‫‪| 424‬‬

‫کد ‪ VMIPS‬برای ‪ DAXPY‬بصورت زیر است‪:‬‬


‫‪L.D‬‬ ‫‪F0,a‬‬ ‫‪;load scalar a‬‬
‫‪L.V‬‬ ‫‪V1,Rx‬‬ ‫‪;load vector X‬‬
‫‪MULVS.D‬‬ ‫‪V2,V1,F0‬‬ ‫‪;vector-scalar multiply‬‬
‫‪LV‬‬ ‫‪V3,Ry‬‬ ‫‪;load vector Y‬‬
‫‪ADDVV.D‬‬ ‫‪V4,V2,V3‬‬ ‫‪;add‬‬
‫‪SV‬‬ ‫‪V4,Ry‬‬ ‫‪;store the result‬‬
‫مهیجترین تفاوت این است که پردازنده برداری بطور زیادی پهنای باند دستورات پویا را کاهش میدهد‪ ،‬اجرای فقط‬
‫‪ 6‬دستور در مقایسه با تقریباً ‪ 600‬دستور برای ‪ .MIPS‬این کاهش به این علت است که عملیات برداری روی ‪64‬‬
‫عنصر کار میکنند و دستورات سربار که تقریباً نصف حلقه ‪ MIPS‬را اشغال میکنند در کد ‪VMIPS‬حذف میشوند‪.‬‬
‫وقتیکه کامپایلر دستورات برداری برای یک رشته دستور تولید میکند و کد منتج اکثر وقتش را در مُد برداری صرف‬
‫میکند به کد برداری شده یا قابل برداری شدن‪ 1‬میگویند‪ .‬حلقههایی میتوانند برداری شوند که وابستگی بین‬
‫تکرارهای حلقه نباشد‪.‬‬
‫تفاوت مهم دیگر بین ‪ MIPS‬و ‪ VMIPS‬فرکانس درهم قفلی خطلوله است‪ .‬در کد ‪ MIPS‬هر ‪ ADD.D‬باید‬
‫منتظر ‪ MUL.D‬باشد و هر ‪ S.D‬باید منتظر ‪ ADD.D‬باشد‪ .‬در یک پردازنده برداری‪ ،‬هر دستور برداری فقط به‬
‫خاطر اولین عنصر هر بردار متوقف میشود‪ ،‬و عناصر بعدی به نرمی در خطلوله جریان مییابند‪ .‬بنابراین توقفهای‬
‫خطلوله فقط یکی برای هر دستور برداری نیاز میشود‪ ،‬نه یکی برای هر عنصر برداری‪ .‬معمارهای برداری به این‬
‫جلورانی زنجیر عملیات وابسته‪-‬عنصر میگویند زیرا عملیات وابسته به یکدیگر زنجیر شدهاند‪ .‬در این مثال‪ ،‬فرکانس‬
‫توقف خطلوله برای ‪ 64 ،MIPS‬برابر بیشتر از ‪ VMIPS‬است‪ .‬خطلوله نرمافزاری یا بازکردن حلقه میتواند توقف‪-‬‬
‫های ‪ MIPS‬را کاهش دهد‪ ،‬به هر حال تفاوت فاحش در پهنای باند دستور نمیتواند بطور قابل توجهی کم شود‪.‬‬

‫زمان اجرای بردار‪ :‬زمان اجرای یک رشته عملیات برداری عمدتاً وابسته به سه فاکتور است‪ )1( :‬طول بردارهای‬
‫عملوند‪ )2( ،‬مخاطرههای ساختاری بین عملیات‪ ،‬و (‪ )3‬وابستگیهای داده‪ .‬با داشتن طول بردار و نرخ مقدار دهی‬
‫اولیه‪ ،‬که نرخی است که یک واحد برداری عملوندهای جدید را مصرف کرده و نتایج جدید را تولید میکند‪ ،‬میتوانیم‬
‫زمان را برای یک دستور برداری محاسبه کنیم‪ .‬همه کامپیوترهای برداری مدرن واحدهای عملیاتی برداری با چندین‬
‫خطلوله موازی (یا چند خط سیر‪ )2‬دارند که می تواند دو یا چند نتیجه را در هر پالس ساعت تولید کند‪ ،‬اما ممکن‬
‫است تعدادی واحد عملیاتی نیز داشته باشند که کامالً خطلوله نشده باشند‪ .‬برای سادگی‪ ،‬پیادهسازی ‪ VMIPS‬ما‬
‫یک خط سیر دارد با نرخ مقدار دهی یک عنصر در هر پالس ساعت برای عملیات منفرد‪ .‬بنابراین‪ ،‬زمان اجرا بر‬
‫اساس پالس ساعت برای یک دستور برداری تقریباً برابر با طول بردار است‪.‬‬
‫برای سادگی بحث اجرای برداری و کارایی برداری‪ ،‬از مفهوم کاروان‪ 3‬استفاده میکنیم که مجموعهای از دستورات‬
‫برداری است که میتوانند بطور بالقوه باهم اجرا شوند‪ .‬همانطور که در ادامه خواهیم دید‪ ،‬شما میتوانید کارایی یک‬

‫‪1‬‬
‫‪Vectorized or vectorizable‬‬
‫‪2‬‬
‫‪Lane‬‬
‫‪3‬‬
‫‪Convoy‬‬
‫‪| 425‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫بخش از کد را با شمارش تعداد کاروانها تخمین بزنید‪ .‬دستورات یک کاروان نباید شامل هیچ مخاطره ساختاری‬
‫باشند‪ ،‬اگر چنین مخاطرههایی موجود باشند‪ ،‬دستورات نیازمند این هستند تا ترتیبی شوند و در کاروانهای مختلف‬
‫مقدار دهی اولیه شوند‪ .‬برای نگه داشتن سادگی تجزیه تحلیل‪ ،‬فرض میکنیم یک کاروان از دستورات باید کامل‬
‫شود قبل از اینکه هر دستور دیگری (اسکالر یا برداری) بتواند شروع به اجرا کند‪.‬‬
‫ممکن است حس شود که عالوه بر رشته دستورات برداری که مخاطره ساختاری دارند‪ ،‬رشتههای با مخاطرههای‬
‫وابستگی خواندن‪-‬بعد از‪-‬نوشتن نیز باید در کاروانهای مختلف قرار گیرند‪ ،‬اما زنجیر کردن به آنها اجازه میدهد تا‬
‫در یک کاروان مشابه قرار گیرند‪.‬‬
‫زنجیر کردن به یک عمل برداری به محض اینکه عناصر منفرد عملوند برداری منبعش قابل دسترس شوند‪ ،‬اجازه‬
‫شروع میدهد‪ .‬نتایج اولین واحد عملیاتی در زنجیر به واحد عملیاتی دوم جلورانی میشوند‪ .‬در عمل‪ ،‬اغلب زنجیر را‬
‫با مجاز کردن پردازنده تا بتواند یک ثبات برداری خاص را بطور همزمان بخواند و بنویسد پیادهسازی میکنیم هرچند‬
‫با عناصر مختلف‪ .‬پیادهسازیهای اولیه زنجیر شبیه جلورانی در خطلوله اسکالر کار میکنند‪ ،‬اما این زمان دستورات‬
‫منبع و مقصد در زنجیر را محدود میکند‪ .‬پیادهسازیهای اخیر از زنجیر منعطف استفاده میکنند که به یک دستور‬
‫برداری اجازه زنجیر شدن با هر دستور برداری دیگر را میدهند با فرض اینکه مخاطره ساختاری نداشته باشیم‪ .‬همه‬
‫معماریهای مدرن زنجیر منعطف را پشتیبانی میکنند که فرض ما در این فصل نیز همین است‪.‬‬
‫برای محاسبه زمان اجرای یک کاروان یک واحد زمانی نیاز داریم تا زمان مورد نیاز برای یک کاروان را تخمین‬
‫بزنیم‪ .‬به این واحد چایم‪ 1‬میگوییم که طبق تعریف واحد زمانی است که برای اجرای یک کاروان صرف میشود‪.‬‬
‫بنابراین یک رشته کد شامل ‪ m‬کاروان در ‪ m‬چایم اجرا میشود که برای طول بردار ‪ n‬برای ‪ VMIPS‬تقریباً برابر‬
‫‪ m×n‬پالس ساعت است‪ .‬تخمین چایم بعضی سربارهای خاص پردازنده را که اکثراً وابسته به طول بردار هستند‬
‫نادیده میگیرد‪ .‬بنابراین اندازه گیری زمان براساس چایم تخمین مناسبتری برای بردارهای بزرگ نسبت به‬
‫بردارهای کوچک است‪ .‬به خاطر نادیده گرفتن سربارهای خاص از تخمین چایم استفاده میکنیم‪ .‬در حالیکه تخمین‬
‫بر اساس پالس ساعت آنها را نادیده نمیگیرد‪.‬‬
‫اگر تعداد کاروانها در یک رشته برداری را بدانیم‪ ،‬زمان اجرا را بر اساس چایم میدانیم‪ .‬یک منبع سربار که با اندازه‬
‫گیری چایم نادیده گرفته میشود‪ ،‬محدودیتهای مقدار دهی اولیه چندین دستور برداری در یک پالس ساعت‬
‫میباشد‪ .‬اگر فقط یک دستور برداری بتواند در هر پالس ساعت مقدار دهی اولیه شود (واقعیتی که در اکثر پردازندهها‬
‫وجود دارد)‪ ،‬تعداد چایم زمان اجرای واقعی یک کاروان را خوب تخمین نمیزند‪ .‬چون طول بردارها معموالً بزرگتر‬
‫از تعداد دستورات در کاروان است‪ ،‬فرض میکنیم که هر کاروان در یک چایم اجرا میشود‪.‬‬

‫مثال ‪ :2-8‬چگونگی واقع شدن رشته کد زیر در کاروان را با فرض وجود یک کپی از هر واحد عملیاتی برداری‬
‫نشان دهید‪.‬‬
‫‪LV‬‬ ‫‪V1,Rx‬‬ ‫‪;load vector X‬‬
‫‪MULVS.D‬‬ ‫‪V2,V1,F0‬‬ ‫‪;vector-scalar multiply‬‬
‫‪LV‬‬ ‫‪V3,Ry‬‬ ‫‪;load vector Y‬‬
‫‪ADDVV.D‬‬ ‫‪V4,V2,V3‬‬ ‫‪;add two vectors‬‬
‫‪1‬‬
‫صدای ناقوص‪ ،‬سنج=‪Chime‬‬
‫کانون نشر علوم‬ ‫‪| 426‬‬

‫‪SV‬‬ ‫‪V4,Ry‬‬ ‫‪;store the sum‬‬


‫این رشته برداری چند چایم میگیرد؟ برای هر عمل ممیز شناور(‪ )FLOP‬چه تعداد پالس ساعت مورد نیاز است؟‬
‫سربار انتشار دستور برداری را نادیده بگیرید‪.‬‬
‫پاسخ‪ :‬اولین کاروان با دستور ‪ LV‬شروع میشود‪ MULVS.D .‬وابسته به اولین ‪ LV‬است‪ ،‬اما زنجیر اجازه میدهد‬
‫تا در یک کاروان باشند‪ .‬دومین ‪ LV‬باید در کاروان مجزایی باشد زیرا یک خطای ساختاری در واحد ‪load/store‬‬
‫برای دستور ‪ LV‬قبلی وجود دارد‪ ADDVV.D .‬وابسته به ‪ LV‬دوم است‪ ،‬اما بازهم میتواند از طریق زنجیر در یک‬
‫کاروان قرار گیرد‪ .‬در انتها‪ SV ،‬یک خطای ساختاری با ‪ LV‬در کاروان دوم دارد‪ ،‬بنابراین باید در کاروان سوم قرار‬
‫گیرد‪ .‬این آنالیز منجر به طرح زیر برای دستورات برداری در کاروان میشود‪.‬‬
‫‪1. LV‬‬ ‫‪MULVS.D‬‬
‫‪2. LV‬‬ ‫‪ADDVV.D‬‬
‫‪3. SV‬‬
‫رشته نیازمند ‪ 3‬عدد کاروان است‪ .‬چون رشته سه چایم میگیرد و دو عمل ممیز شناور در نتیجه هست‪ ،‬تعداد پالسها‬
‫در ‪ 1.5 ،FLOP‬است (با نادیده گ رفتن سربار هر انتشار دستور برداری)‪ .‬هرچند که ما اجازه دادیم ‪ LV‬و‬
‫‪ MULVS.D‬هر دو در کاروان اول اجرا شوند‪ ،‬اکثر ماشینهای برداری دو پالس ساعت برای مقدار دهی اولیه‬
‫دستورات میگیرند‪.‬‬
‫این مثال نشان داد که تخمین چایم بطور معقولی برای بردارهای بزرگ درست است‪ .‬به عنوان مثال برای بردار‬
‫‪-64‬عنصره‪ ،‬زمان ‪ 3‬چایم است‪ ،‬بنابراین رشته حدود ‪ 64*3=192‬پالس ساعت میگیرد‪ .‬سربار انتشار کاروانها‬
‫در دو پالس ساعت مجزا کوچک است‪.‬‬

‫منبع دیگر سربار که مهمتر از محدودیت انتشار است نیز موجود است‪ .‬مهمترین منبع سربار که با مدل چایم نادیده‬
‫گرفته می شود زمان شروع بردار است‪ .‬زمان شروع توسط تأخیر خطلوله واحد عملیاتی برداری مشخص میشود‪.‬‬
‫برای ‪ ،VMIPS‬عمق خطلوله را مشابه با ‪ Cray-1‬در نظر میگیریم هرچند که تأخیرات در اکثر پردازندههای‬
‫مدرن رو به افزایش دارند‪ ،‬باالخص برای بار کردن بردار‪ .‬همه واحدهای عملیاتی کامالً خطلوله شدهاند‪ .‬عمق‬
‫خطلوله ‪ 6‬پالس ساعت برای جمع ممیز‪-‬شناور؛ ‪ 7‬برای ضرب ممیز شناور‪ 20 ،‬برای تقسیم ممیز شناور‪ ،‬و ‪ 12‬برای‬
‫بارکردن بردار است‪.‬‬

‫با این مقادیر‪ ،‬زیربخشهای بعد بهینهسازیهایی ارائه میدهند که یا کارایی را بهبود میدهند یا انواع برنامههایی‬
‫که میتوانند در معماریهای برداری اجرا شوند را افزایش میدهند‪ .‬در کل‪ ،‬به سؤاالت زیر پاسخ خواهیم داد‪:‬‬
‫• چگونه یک پردازنده برداری میتواند یک بردار را سریعتر از یک عنصر در هر پالس ساعت اجرا کند؟‬
‫چند عنصر در هر پالس ساعت کارایی را بهبود خواهد بخشید‪.‬‬
‫• چگونه یک پردازنده برداری برنامههایی را که طول بردارشان مشابه اندازه ثبات برداری نیست (‪ 64‬برای‬
‫‪ )VMIPS‬راهاندازی میکنند؟ چون اکثر بردارهای کاربردی با طول بردار معماری تطابق ندارند‪ ،‬نیازمند‬
‫روشی کارا برای این حالت کلی هستیم‪.‬‬
‫‪| 427‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫• چه چیز اتفاق میافتد اگر یک دستور ‪ IF‬در داخل کدی باشد که باید برداری شود؟ اگر بطور مفیدی‬
‫دستورات شرطی را مدیریت کنیم کد بیشتری میتواند برداری شود‪.‬‬
‫• یک پردازنده برداری چه نیازهایی به سیستم حافظه دارد؟ بدون پهنای باند کافی‪ ،‬اجرای برداری بی‪-‬‬
‫معنی است‪.‬‬
‫• چگونه یک پردازنده برداری ماتریسهای چندبعدی را مدیریت میکند؟ این ساختمان داده رایج باید برای‬
‫معماری برداری به خوبی‪ ،‬برداری شود‪.‬‬
‫• یک پردازنده برداری چگونه ماتریسهای خلوت را مدیریت میکند؟ این ساختمان داده رایج نیز باید به‬
‫درستی برداری شود‪.‬‬
‫• شما چگونه یک برنامه برداری مینویسید؟ ابداعات معماری که با تکنولوژی کامپایلر تطابق نداشته باشد‬
‫بطور گسترده استفاده نمیشوند‪.‬‬
‫ادامه این بخش هر کدام از این بهینه سازیها را برای معماری برداری معرفی میکند‪.‬‬

‫چندین خط سیر‪ :‬بیشتر از یک عنصر در هر پالس ساعت‬

‫یک مزیت حیاتی یک مجموعه دستور برداری آن است که به نرمافزار اجازه میدهد تا مقدار زیادی از کار موازی را‬
‫به سختافزار با استفاده از یک دستور کوتاه واگذار کند‪ .‬یک دستور برداری میتواند با تعداد بیتهای مشابه با یک‬
‫دستور اسکالر سنتی رمزگذاری شود‪ .‬موازات یک دستور برداری اجازه پیادهسازیای را میدهد تا این عملیات‬
‫عنصری با استفاده از واحدهای عملیاتی خطلوله شده عمیق‪( ،‬همانطور که در پیادهسازی ‪ VMIPS‬تا اینجا مطالعه‬
‫کرده ایم)‪ ،‬یک آرایه از واحدهای عملیاتی موازی یا یک ترکیب از واحدهای عملیاتی خطلوله شده و موازی اجرا‬
‫شوند‪ .‬شکل ‪ 3-8‬چگونگی بهبود کارایی بردار را با استفاده از خطلولههای موازی برای اجرای یک دستور جمع‬
‫برداری نشان میدهد‪.‬‬

‫مجموعه دستور ‪ VMIPS‬خصوصیتی دارد که همه دستورات ریاضی برداری فقط اجازه میدهند عنصر ‪ N‬از یک‬
‫ثبات برداری با عنصر ‪ N‬از ثبات برداری دیگر وارد عمل شوند‪ .‬این روش ساخت واحد برداری با موازات زیاد را‬
‫خیلی ساده میکند‪ ،‬که می تواند به عنوان چند خط سیر موازی ساختار دهی شوند‪ .‬مثل یک بزرگراه ترافیکی‬
‫می توانیم توان عملیاتی حداکثر یک واحد برداری را با افزایش تعداد خط سیرها افزایش دهیم‪ .‬شکل ‪ 4-8‬ساختار‬
‫یک واحد برداری ‪ 4‬خط سیره را نشان میدهد‪ .‬بنابراین‪ ،‬با حرکت از یک خطسیر به چهار خط سیر‪ ،‬تعداد پالسهای‬
‫ساعت برای یک چایم از ‪ 64‬به ‪ 16‬کاهش مییابد‪ .‬برای اینکه خطسیرهای چندگانه مفید باشند‪ ،‬هردوی کاربرد و‬
‫معماری باید بردارهای طویل را پشتیبانی کنند در غیر اینصورت آنقدر سریع اجرا میشوند که از پهنای باند دستور‬
‫خارج میشوند و نیازمند روشهای ‪ ILP‬برای تهیه دستورات برداری کافی هستیم‪.‬‬
‫کانون نشر علوم‬ ‫‪| 428‬‬

‫هر خط سیر شامل یک بخش از فایل ثبات برداری و یک خطلوله اجرایی از هر واحد عملیاتی برداری است‪ .‬هر‬
‫واحد عملیاتی برداری دستورات برداری را با نرخ یک عنصر گروهی در هر پالس با استفاده از چند خطلوله (یکی‬
‫برای هر خط سیر) اجرا میکند‪ .‬خط سیر اول اولین عنصر (عنصر ‪ )0‬را برای همه ثباتهای برداری نگه میدارد‪ ،‬و‬
‫بنابراین اولین عنصر در هر دستور برداری عملوندهای منبع و مقصدش را دارد که در خط سیر اول واقع شدهاند‪ .‬این‬
‫تخصیص به خط لوله ریاضی هر خط سیر اجازه میدهد تا عملش را بدون ارتباط با سایر خط سیرها کامل کند‪.‬‬
‫دسترسی به حافظه اصلی نیز نیازمند سیم بندی بین خطسیری است‪ .‬اجتناب از ارتباطات بین خط سیری هزینه‬
‫سیم بندی و پورتهای فایل ثبات مورد نیاز برای ساخت یک واحد اجرایی با موازات باال را کاهش میدهد و کمک‬
‫میکند تا توضیح دهیم چرا کامپیوترهای برداری میتوانند تا ‪ 64‬عمل را در هر پالس ساعت کامل کنند (‪ 2‬واحد‬
‫ریاضی و دو واحد ‪ load/store‬در ‪ 16‬خط سیر)‪.‬‬

‫شکل ‪ :8-3‬استفاده از چندین واحد عملیاتی برای بهبود کارایی یک دستور جمع برداری‪ .C=A+B ،‬پردازنده برداری (الف) در سمت چپ‬
‫یک خطلوله جمع دارد و میتواند یک جمع را در هر پالس کامل کند‪ .‬پردازنده برداری (ب) در سمت راست چهار خطلوله جمع دارد و‬
‫میتواند ‪ 4‬جمع را در هر پالس کامل کند‪ .‬عناصر داخل یک دستور جمع برداری در طول خطلولهها برگی شدهاند‪ .‬مجموعه عناصری که‬
‫با یکدیگر در طول خطلوله حرکت میکنند یک گروه عنصر میگویند‪.‬‬
‫‪| 429‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫شکل ‪ :4-8‬ساختار یک واحد برداری شامل ‪ 4‬خط سیر‪ .‬حافظه ثبات برداری بین خطسیرها تقسیم شده است‪ ،‬که هر خطسیر عناصر‬
‫هر ثبات برداری را با فاصله ‪ 4‬نگه میدارد‪ .‬شکل سه واحد عملیاتی برداری را نشان میدهد‪ :‬یک واحد جمع ‪ ،FP‬یک واحد ضرب‬
‫‪ ،FP‬و یک واحد ‪ .load-store‬هر واحد ریاضی برداری شامل چهار خطلوله (برای هر خط سیر یکی)‪ ،‬که هماهنگ کار میکنند‬
‫تا یک دستور برداری تک را کامل کنند میباشد‪ .‬نکته اینکه هر بخش از فایل ثبات برداری فقط نیازمند تهیه پورتهای کافی برای‬
‫خطلوله های محلی خط سیر خودش است‪ .‬این شکل مسیری برای تهیه عملوند اسکالر برای دستورات برداری‪-‬اسکالر را نشان‬
‫نمیدهد‪ ،‬اما پردازنده اسکالر (یا پردازنده کنترلی) یک مقدار اسکالر را به همه خط سیرها پخش میکند‪.‬‬

‫اضافه کردن چندین خط سیر یک روش رایج برای بهبود کارایی می باشد و نیازمند افزایش کمی روی پیچیدگی‬
‫کنترل است و نیازمند تغییر در کد ماشین موجود نیست‪ .‬همچنین به طراحان اجازه برقراری یک حد وسط بین سطح‬
‫‪ ،Die‬نرخ ساعت‪ ،‬ولتاژ‪ ،‬و انرژی بدون از دست دادن کارایی حداکثر میدهد‪ .‬اگر نرخ ساعت پردازنده برداری نصف‬
‫شود‪ ،‬دو برابر شدن تعداد خط سیرها باعث حفظ کارایی میشود‪.‬‬

‫ثباتهای طول‪-‬بردار‪ :‬مدیریت حلقههایی که طول آنها برابر با ‪ 64‬نیست‪.‬‬

‫یک پردازنده برداری یک طول بردار طبیعی دارد که با تعداد عناصر در هر ثبات برداری مشخص میشود‪ .‬این طول‬
‫که برای ‪ 64 ،VMIPS‬است‪ ،‬بعید است که با طول بردار واقعی در یک برنامه تطابق داشته باشد‪ .‬بعالوه‪ ،‬در یک‬
‫برنامه واقعی طول یک عمل برداری خاص معموالً در زمان کامپایل ناشناخته است‪ .‬در حقیقت‪ ،‬یک قطعه کد ممکن‬
‫است طول بردار متفاوتی نیاز داشته باشد‪ .‬به عنوان مثال کد زیر را مد نظر قرار دهید‪:‬‬
‫کانون نشر علوم‬ ‫‪| 430‬‬

‫)‪for(i=0; i<n; i=i+1‬‬


‫;]‪Y[i]=a*X[i]+Y[i‬‬
‫اندازه همه عملیات برداری وابسته به ‪ n‬است‪ ،‬که ممکن است تا زمان اجرا ناشناخته باشد‪ .‬مقدار ‪ n‬ممکن است‬
‫یک پارامتر ورودی برای زیر روالی باشد که حلقه فوق در آن است و بنابراین مستعد تغییر در طول اجراهای مختلف‬
‫میباشد‪.‬‬
‫راهحل برای این مشکل ایجاد یک ثبات طول‪-‬بردار (‪ )VLR‬میباشد‪ VLR .‬طول هر عمل برداری شامل بار کردن‬
‫برداری یا ذخیره کردن را کنترل میکند‪ .‬مقدار داخل ‪ VLR‬نمیتواند بزرگتر از طول ثباتهای برداری باشد‪ .‬این‬
‫مشکل را تا زمانیکه طول واقعی کمتر یا مساوی حداکثر طول بردار (‪ )MVL1‬باشد حل میکند‪ MVL .‬مشخص‬
‫کننده تعداد عناصر داده در یک بردار یک معماری میباشد‪ .‬این پارامتر به این معنی است که طول ثباتهای برداری‬
‫میتواند در نسلهای بعدی کامپیوتر بدون تغییر مجموعه دستورالعمل رشد کند‪ ،‬همانطور که در ادامه این بخش‬
‫خواهیم دید توسعه ‪ SIMD‬چندرسانهای معادل ‪ MVL‬را ندارد‪ .‬بنابراین آنها هر گاه طول بردارشان را تغییر میدهند‬
‫مجموعه دستورالعملشان را نیز تغییر میدهند‪.‬‬

‫اگر مقدار ‪ n‬در زمان کامپایل ناشناخته باشد و از ‪ MVL‬بیشتر باشد چه؟ روشی که برای حل این مشکل که طول‬
‫بردار بزرگتر از ‪ MVL‬است استفاده میشود محدوده کاوی‪ 2‬نامیده میشود‪ .‬محدوده کاوی یک روش تولید کد است‬
‫بطوریکه هر عمل برداری با طول کمتر یا مساوی ‪ MVL‬انجام شود‪ .‬به عبارتی یک حلقه ایجاد میکنیم بطوریکه‬
‫تعداد تکرار آن ضریبی از ‪ MVL‬باشد و حلقه دیگری که بقیه تکرار آن کمتر از ‪ MVL‬باشد‪ .‬در عمل‪ ،‬کامپایلرها‬
‫معموالً یک حلقه محدوده کاوی تولید میکنند که طوری پارامتربندی شده است که با تغییر طول‪ ،‬هر دو قسمت را‬
‫راهاندازی کند‪ .‬در زیر نگارش محدوده‪-‬کاوی شده حلقه ‪ DAXPY‬را به زبان ‪ C‬نشان دادهایم‪.‬‬
‫;‪low=0‬‬
‫;)‪VL=(n%MVL‬‬ ‫‪ */‬پیدا کردن باقیمانده تقسیم تعداد عناصر بر حداکثر طول بردار*‪/‬‬
‫{ )‪for(j=0;j<=(n/MVL); j=j+1‬‬ ‫‪*/‬حلقه بیرونی*‪/‬‬
‫)‪for(i=low; i<(low+VL); i=i+1‬‬ ‫‪*/‬اجرا برای طول ‪/*VL‬‬
‫;]‪Y[i]=a*X[i]+Y[i‬‬ ‫‪*/‬عملیات اصلی*‪/‬‬
‫;‪low=low+VL‬‬ ‫‪*/‬شروع بردار بعدی*‪/‬‬
‫} ;‪VL=MVL‬‬ ‫‪*/‬مقدار دهی طول به حداکثر طول بردار *‪/‬‬
‫عبارت ‪ n/MVL‬نشان دهنده تقسیم صحیح است‪ .‬اثر این حلقه تقسیم بندی بردار به چند بخش است که توسط‬
‫حلقه داخلی پردازش میشوند‪ .‬طول اولین بخش )‪ (n%MVL‬است و سایر بخشهای باقیمانده دارای طول ‪MVL‬‬
‫میباشند‪ .‬شکل ‪ 5-8‬چگونگی تقسیم بردار بزرگ به چند بخش را نشان میدهد‪.‬‬

‫‪1‬‬
‫‪Maximum Vector Lenght‬‬
‫‪2‬‬
‫‪Strip mining‬‬
‫‪| 431‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫حلقه داخلی در کد قبل با طول ‪ VL‬قابل برداری شدن است‪ ،‬که یا برابر با )‪ (n%MVL‬است یا ‪ .MVL‬ثبات‬
‫‪ VLR‬باید دوبار در کد مقدار دهی شود‪ ،‬یکبار در هر مکانی که متغیر ‪ VL‬در کد منتسب شود‪.‬‬

‫شکل ‪ :5-8‬یک بردار با طول دلخواه که با محدوده‪-‬کاوی پردازش شده است‪ .‬همه بلوکها بجز اولی دارای طول ‪ MVL‬هستند که‬
‫از کل توان پردازنده برداری بهره برداری میکند‪ .‬در این شکل‪ ،‬از متغیر ‪ m‬برای عبارت )‪ (n%MVL‬استفاده میکنیم‪.‬‬

‫ثبات پوشش بردار‪ :‬مدیریت دستورات ‪ IF‬در حلقههای برداری‬

‫از قانون امدال‪ ،‬میدانیم که افزایش سرعت روی برنامهها با سطوح برداریسازی کم تا متوسط خیلی محدود خواهد‬
‫بود‪ .‬حضور شرط داخل حلقهها (دستورات ‪ )IF‬و استفاده از ماتریسهای خلوت دو دلیل عمده برای سطوح پایینتر‬
‫برداریسازی است‪ .‬برنامههایی که شامل دستورات ‪ IF‬در حلقهها هستند نمیتوانند با استفاده از روشهایی که‬
‫تاکنون بحث کردهایم در مد برداری اجرا شوند زیرا دستورات ‪ IF‬باعث وقوع وابستگی کنترل در داخل حلقه میشوند‪.‬‬
‫همچنین‪ ،‬با استفاده از قابلیتهایی که تاکنون دیدهایم نمیتوانیم ماتریسهای خلوت را پیادهسازی کنیم‪ .‬ابتدا‬
‫استراتژیهای مربوط به اجرای شرطی را بحث میکنیم و بحث ماتریسهای خلوت را به بعد موکول میکنیم‪.‬‬

‫کد نوشته به زبان ‪ C‬زیر را مد نظر قرار دهید‪:‬‬

‫)‪for(i=0; i<64; i=i+1‬‬


‫)‪if(X[i]!=0‬‬
‫;]‪X[i]=X[i]-Y[i‬‬
‫این حلقه به خاطر اجرای شرطی بدنهاش بصورت نرمال نمیتواند برداری شود‪ ،‬به هر حال‪ ،‬اگر حلقه داخلی‬
‫میتوانست برای چندین تکرار که ‪ X[i]!=0‬اجرا شود‪ ،‬آنگاه تفریق میتوانست برداری شود‪.‬‬

‫توسعه رایج برای این قابلیت کنترل بردار‪-‬پوشش است‪ .‬ثباتهای پوشش اجرای شرطی هر عملِ عنصر در یک‬
‫دستور برداری را تهیه میکنند‪ .‬کنترل بردار‪-‬پوشش از یک بردار بولین برای کنترل اجرای یک دستور برداری‬
‫استفاده می کند‪ ،‬شبیه دستورات اجرا شده شرطی که از یک شرط بولین برای تشخیص اینکه چه موقع یک دستور‬
‫اسکالر اجرا شود استفاده میکنند‪ .‬وقتیکه ثبات پوشش‪-‬بردار فعال باشد‪ ،‬هر دستور برداری اجرا شده فقط روی‬
‫عناصر برداری عمل میکند که بیت مرتبط در ثبات پوشش‪-‬بردار یک باشد‪ .‬ورودیهای ثبات بردار مقصد که‬
‫متناظر با صفر در ثبات پوشش هستند توسط عمل برداری تحت تأثیر قرار نمیگیرند‪ .‬پاک کردن ثبات پوشش‪-‬‬
‫بردار کل آن را به یک تنظیم میکند و باعث میشود دستورات برداری بعدی روی همه عناصر بردار عمل کنند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 432‬‬

‫میتوان از کد زیر برای حلقه قبلی استفاده کرد‪ ،‬با فرض اینکه آدرس شروع ‪ X‬و‪ Y‬به ترتیب در ‪ Rx‬و ‪ Ry‬قرار‬
‫دارند‪:‬‬

‫‪LV‬‬ ‫‪V1,Rx‬‬ ‫‪;Load vector X into V1‬‬


‫‪LV‬‬ ‫‪V2,Ry‬‬ ‫‪;load vector Y‬‬
‫‪L.D‬‬ ‫‪F0,# 0‬‬ ‫‪;load FP zero into F0‬‬
‫‪SNEVS‬‬ ‫‪V1,F0‬‬ ‫‪;Sets VM(i) to 1 if V1(i)!=F0‬‬
‫‪SUBVV‬‬ ‫‪V1,V1,V2‬‬ ‫‪;Subtract under vector mask‬‬
‫‪SV‬‬ ‫‪V1,Rx‬‬ ‫‪;Store the result in X‬‬
‫استفاده از ثبات پوشش‪-‬بردار سربار دارد‪ .‬با معماریهای اسکالر‪ ،‬دستوراتی که بصورت شرطی اجرا شدهاند هنوز‬
‫نیازمند زمان اجرا هستند اگر شرط برآورده نشده باشد‪ .‬با این وجود‪ ،‬حذف یک پرش و وابستگیهای داده مربوطه‬
‫می تواند دستور شرطی را سریعتر کند حتی اگر گاهی اوقات کارهای غیر مفید انجام دهد‪ .‬بطور مشابه‪ ،‬دستورات‬
‫برداری اجرا شده با پوشش بردار هنوز هم زمان اجرای مشابهی میگیرند‪ ،‬حتی برای عناصری که پوشش آنها صفر‬
‫است‪ .‬بعالوه‪ ،‬حتی با تعداد قابل توجه صفر در پوشش‪ ،‬استفاده از کنترل پوشش‪-‬برداری بطور قابل توجهی سریعتر‬
‫از استفاده از مد اسکالر است‪.‬‬

‫همانطور که در بخش ‪ 4-8‬خواهیم دید‪ ،‬یک تفاوت بین پردازندههای برداری و ‪GPU‬ها روش مدیریت دستورات‬
‫شرطی میباشد‪ .‬پردازندههای برداری ثباتهای پوشش را به عنوان قسمتی از معماری دارند و روی کامپایلر برای‬
‫دستکاری صریح ثباتهای پوشش تکیه دارند‪ .‬در مقایسه‪GPU ،‬ها از سخت افزار برای دستکاری ثباتهای پوشش‬
‫داخلی استفاده میکنند که برای نرم افزار ‪ GPU‬نامرئی است‪ .‬در هر دو حالت‪ ،‬سخت افزار برای اجرای یک عنصر‬
‫برداری چه پوشش صفر باشد یا یک زمان صرف میکند‪ ،‬بنابراین وقتیکه از پوشش استفاده میشود نرخ ‪GFLOPS‬‬
‫تنزل میکند‪.‬‬

‫بانکهای حافظه‪ :‬آماده کردن پهنای باند برای واحدهای ‪Load/Store‬‬


‫رفتار واحد برداری ‪ Load/Store‬بطور قابل توجهی از واحد عملیاتی ریاضی پیچیدهتر است‪ .‬زمان راهاندازی برای‬
‫یک ‪ Load‬زمانی است که اولین کلمه از حافظه گرفته میشود و به ثبات میآید‪ .‬اگر بقیه بردار بتواند بدون توقف‬
‫فراهم شود‪ ،‬آنگاه نرخ مقدار دهی اولیه بردار برابر با نرخی است که کلمات جدید برداشت یا ذخیره میشوند‪ .‬برخالف‬
‫واحدهای عملیاتی سادهتر‪ ،‬نرخ مقدار دهی ممکن است لزوماً یک پالس ساعت نباشد زیرا توقفهای بانک حافظه‬
‫میتواند توان عملیاتی مؤثر را کاهش دهد‪.‬‬

‫معموالً‪ ،‬هزینه راهاندازی واحدهای ‪ Load/Store‬از واحدهای ریاضی بیشتر است‪ -‬بیشتر از ‪ 100‬پالس ساعت‬
‫در اکثر پردازندهها‪ .‬برای ‪ VMIPS‬فرض میکنیم مثل ‪ ،Cray-1‬زمان راهانداری ‪ 12‬پالس ساعت باشد‪.‬‬
‫(کامپیوترهای برداری متأخرتر از حافظه نهان برای کاهش تأخیر ذخیره و بار کردن برداری استفاده میکنند)‪.‬‬
‫‪| 433‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫برای اینکه نرخ مقداردهیِ برداشت یا ذخیره یک کلمه را یک پالس ساعت نگه داریم‪ ،‬سیستم حافظه باید قادر به‬
‫تولید یا پذیرش این حجم زیاد دادهها باشد‪ .‬انتشار دسترسیها بین چندین بانک حافظه مستقل‪ ،‬معموالً نرخ مطلوب‬
‫را برآورده میکند‪ .‬همانطور که خواهیم دید‪ ،‬داشتن تعداد قابل توجه بانک برای رفتار کردن با ذخیره و بار کردنهایی‬
‫که به سطرها و ستونهای داده دسترسی دارند مفید است‪.‬‬

‫اکثر پردازندههای برداری‪ ،‬در مقایسه با برگی کردن ساده حافظه‪ ،‬بانکهای حافظهای را استفاده میکنند که اجازه‬
‫چندین دسترسی مستقل را به سه دلیل میدهند‪:‬‬
‫‪ .1‬اکثر کامپیوترهای برداری چندین ‪ Load‬و ‪ Store‬را در یک پالس ساعت پشتیبانی میکنند‪ ،‬و زمان‬
‫سیکل بانک حافظه معموالً چندین برابر بیشتر از زمان سیکل پردازنده است‪ .‬برای پشتیبانی دسترسیهای‬
‫همزمان از چندین ذخیره و بار کردن‪ ،‬سیستم حافظه نیازمند چندین بانک است و باید قادر به کنترل‬
‫آدرسهای بانکها بصورت مستقل باشد‪.‬‬
‫‪ .2‬اکثر پردازندههای برداری قابلیت پشتیبانی بارکردن یا ذخیره کلماتی که متوالی نیستند را دارند‪ .‬در چنین‬
‫حاالتی‪ ،‬آدرس دهی بانک مستقل‪ ،‬مورد نیاز است نه برگی کردن ساده‪.‬‬
‫‪ .3‬اکثر کامپیوترهای برداری چندین پردازنده که از سیستم حافظه مشترک استفاده میکنند را پشتیبانی‬
‫میکنند‪ ،‬بنابراین هر پردازنده رشته آدرس مستقل خودش را تولید خواهد کرد‪.‬‬
‫این خواص منجر به تعداد زیادی بانک حافظه مستقل شده است که در مثال زیر نشان داده شده است‪.‬‬

‫مثال ‪ :3-8‬بزرگترین پیکربندی )‪ 32 ، Cray T90 (Cray T932‬پردازنده دارد که هر کدام قادر به تولید چهار‬
‫‪ load‬و دو ‪ store‬در هر پالس ساعت هستند‪ .‬پالسهای ساعت پردازنده ‪ 2.167 ns‬است در حالیکه زمان‬
‫سیکل ‪ SRAM‬استفاده شده در سیستم حافظه ‪ 15ns‬میباشد‪ .‬حداقل تعداد بانک حافظه مورد نیاز که به پردازندهها‬
‫اجازه اجرا با پهنای باند کامل حافظه را میدهد‪ ،‬را محاسبه کنید‪.‬‬
‫پاسخ‪ :‬حداکثر تعداد مراجعات به حافظه در هر پالس ‪ 192‬عدد میباشد‪ 32 :‬تعداد پردازنده ضرب در ‪ 6‬مراجعه‬
‫برای هر پردازنده‪ .‬هر بانک ‪ SRAM‬برای ‪ 15/2.167=6.92‬پالس ساعت مشغول است‪ ،‬که ما آنرا به ‪ 7‬پالس‬
‫ساعت پردازنده گرد میکنیم‪ .‬بنابراین‪ ،‬نیازمند حداقل ‪ 192*7=1344‬بانک حافظه هستیم!‬
‫‪ Cray T932‬دارای ‪ 1024‬بانک حافظه است‪ ،‬بنابراین مدلهای اولیه پهنای کامل را برای همه پردازندهها بطور‬
‫همزمان تحمل نمیکردند‪ .‬ترفیع حافظه بعدی ‪SRAM‬های ‪ 15ns‬آسنکرون را با ‪SRAM‬های سنکرون خطلوله‬
‫شده جایگزین کرد که زمان سیکل حافظه بیشتر از نصف شد بنابراین پهنای باند کافی تهیه شد‪.‬‬

‫با داشتن یک دید سطح باالتر‪ ،‬واحدهای ‪ load/store‬برداری نقشی مشابه با واحدهای پیشبرداشت در پردازنده‪-‬‬
‫های اسکالر بازی می کنند که هر دو سعی در برآورده کردن پهنای باند مصرفی توسط پردازندهها با رشتهای از‬
‫دادهها دارند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 434‬‬

‫استراید‪ :1‬مدیریت آرایههای چند بعدی در معماریهای برداری‬


‫مکان عن اصر همسایه در یک بردار در حافظه ممکن است متوالی نباشد‪ .‬به کد ضرب ماتریس زیر به زبان ‪ C‬دقت‬
‫کنید‪:‬‬

‫)‪for (i=0; i<100; i=i+1‬‬


‫{)‪for (j=0; j<100; j=j+1‬‬
‫;‪A[i][j]=0.0‬‬
‫)‪for (k=0; k<100; k=k+1‬‬
‫} ;]‪A[i][j]=A[i][j]+B[i][k]*D[k][j‬‬
‫میتوان ضرب هر سطر ‪ B‬را با هر ستون ‪ D‬برداری کرد و حلقه داخلی با ‪ k‬به عنوان متغیر ایندکس را محدوده‪-‬‬
‫کاوی کنیم‪.‬‬
‫برای انجام اینکار‪ ،‬باید چگونگی آدرس دهی عناصر همسایه در ‪ B‬و عناصر همسایه در ‪ D‬را مورد توجه قرار داد‪.‬‬
‫وقتیکه به یک آرایه حافظه تخصیص داده شد‪ ،‬باید خطی شود و به روش سطری (مثل زبان ‪ )C‬یا به روش ستونی‬
‫(مثل زبان فرترن) در حافظه قرار گیرد‪ .‬این سطری سازی به این معنی است که یا عناصر سطر یا عناصر داخل‬
‫ستون در حافظه همسایه نیستند‪ .‬به عنوان مثال‪ ،‬کد ‪C‬ی باال به روش سطری در حافظه قرار میگیرد‪ ،‬بنابراین‬
‫عناصر ‪ D‬که به طور مکرر در حلقه داخلی دسترسی میشوند به میزان اندازه سطر ضرب در ‪( 8‬تعداد بایت برای هر‬
‫ورودی) یعنی ‪ 800‬بایت از هم جدا هستند‪ .‬در فصل ‪ 5‬دیدیم که بلوکه بندی میتواند محلیت را در سیستمهای‬
‫براساس حافظه نهان بهبود دهد‪ .‬برای پردازندههای برداری بدون حافظه نهان‪ ،‬نیازمند روش دیگری برای برداشت‬
‫عناصر یک بردار که در حافظه همسایه نیستند هستیم‪.‬‬

‫فاصله ی عناصر مجزا از هم که باید در یک ثبات جمع شوند استراید نامیده میشود‪ .‬در این مثال‪ ،‬ماتریس ‪،D‬‬
‫استرایدی به اندازه ‪ 100‬کلمه مضاعف (‪ 800‬بایت) دارد و ماتریس ‪ B‬استرایدی به طول یک کلمه مضاعف (‪8‬‬
‫بایت) دارد‪ .‬برای روش ستونی‪ ،‬که در فرترن استفاده میشود‪ ،‬استرایدها معکوس میشوند‪ .‬ماتریس ‪ D‬استراید با‬
‫طول یک‪ ،‬یا یک کلمه مضاعف (‪ 8‬بایت) دارد‪ ،‬در حالیکه ماتریس ‪ B‬استراید با طول ‪ 100‬یا ‪ 100‬کلمه مضاعف‬
‫(‪ 800‬بایت) دارد‪ .‬بنابراین‪ ،‬بدون تغییر ترتیب حلقهها‪ ،‬کامپایلر نمیتواند فاصلههای طوالنی بین عناصر متوالی را‬
‫هم برای ‪ B‬و هم ‪ D‬مخفی کند‪.‬‬
‫وقتی که یک بردار به داخل یک ثبات برداری بار شد‪ ،‬بطور منطقی عناصر آن همسایه میباشند‪ .‬بنابراین‪ ،‬یک‬
‫پردازنده برداری می تواند استرایدهای بزرگتر از یک را فقط با استفاده از عملیات بارکردن برداری و ذخیره برداری با‬
‫قابلیت استراید راهاندازی کند‪ ،‬که با آن استرایدهای غیر‪-‬واحد‪ 2‬میگویند‪ .‬این قابلیت برای دسترسی به مکانهای‬
‫حافظه غیرمتوالی و تغییر شکل آنها به داخل یک ساختار چگال یکی از مزایای عمده پردازنده برداری است‪.‬‬
‫حافظههای نهان بصورت ذاتی با دادههای استراید واحد کار میکنند‪ ،‬افزایش اندازه بلوک میتواند نرخ فقدان را‬

‫‪1‬‬
‫گام بلند=‪Stride‬‬
‫‪2‬‬
‫‪Non-unit strides‬‬
‫‪| 435‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫برای مجموعه دادههای علمی بزرگ با استراید واحد کاهش دهد‪ ،‬اما افزایش اندازه بلوک میتواند اثر منفی برای‬
‫دادههایی که با استراید غیر واحد دسترسی میشوند داشته باشد‪ .‬درحالیکه روشهای بلوک بندی (فصل ‪ )5‬میتواند‬
‫بعضی از این مشکالت را حل کند‪ ،‬قابلیت دسترسی مؤثر به دادهها که متوالی نیستند یکی از مزایای پردازندههای‬
‫برداری برای مسائل خاص است که در بخش ‪ 7-8‬خواهیم دید‪.‬‬

‫در ‪ ،VMIPS‬که واحد قابل آدرسدهی بایت است‪ ،‬استراید برای مثال ما ‪ 800‬است‪ .‬این مقدار باید بصورت پویا‬
‫محاسبه شود‪ ،‬زیرا اندازه ماتریس ممکن است در زمان کامپایل ناشناخته باشد یا‪ -‬مثل اندازه بردار‪ -‬ممکن است‬
‫برای اجراهای مختلف متغیر باشد‪ .‬استراید بردار‪ ،‬شبیه آدرس شروع بردار میتواند در یک ثبات همه‪-‬منظوره قرار‬
‫گیرد‪ .‬آنگاه دستور ‪ LVWS1 ،VMIPS‬بردار را به داخل یک ثبات برداری میآورد‪ .‬بعالوه‪ ،‬موقع ذخیره یک بردار‬
‫با استراید غیر واحد‪ ،‬از دستور ‪ SVWS2‬استفاده میکنیم‪.‬‬

‫پشتیبانی از استرایدهای باالتر از یک‪ ،‬سیستم حافظه را پیچیده میکند‪ .‬وقتیکه استرایدهای غیر واحد معرفی شدند‪،‬‬
‫درخواست دسترسیها به یک بانک مشابه بطور متناوب امکان پذیر میشود‪ .‬وقتیکه درخواستهای چندگانه برای‬
‫یک بانک رقابت میکنند‪ ،‬تداخل بانک حافظه اتفاق میافتد‪ ،‬بنابراین یک دسترسی متوقف میشود‪ .‬یک تداخل‬
‫بانک و بنابراین یک توقف اتفاق میافتد اگر‪:‬‬
‫تعداد بانکها‬
‫زمان مشغول بودن بانک <‬
‫کوچکترین مضرب مشترک )تعداد بانکها ‪ ،‬استراید(‬

‫مثال ‪ :4-8‬فرض کنید ‪ 8‬بانک حافظه داریم که زمان مشغول بودن بانک ‪ 6‬پالس و کل تأخیر حافظه ‪ 12‬پالس‬
‫باشد‪ .‬چقدر طول میکشد تا یک دستور بارکردن بردار ‪-64‬عنصری با استراید ‪ 1‬کامل شود؟ با استراید ‪ 32‬چه؟‬
‫پاسخ‪ :‬چون تعداد بانکها از زمان مشغول بودن بانک بیشتر است‪ ،‬برای استراید ‪ ،1‬بار کردن ‪ 12+64=76‬پالس‬
‫ساعت طول میکشد‪ ،‬یعنی برای هر عنصر ‪ 1.2‬پالس ساعت طول میکشد‪ .‬بدترین استراید ممکن مقداری است‬
‫که ضریبی از تعداد بانکهای حافظه باشد‪ ،‬مثل این حالت با استراید ‪ 32‬و تعداد بانک ‪ .8‬هر دسترسی به حافظه‬
‫(بعد از اولین دسترسی) با دسترسی قبلی تداخل میکند و مجبور به انتظار به میزان زمان مشغول بودن بانک یعنی‬
‫‪ 6‬پالس ساعت خواهد شد‪ .‬زمان کل ‪ 12+1+6*63=391‬پالس ساعت یا ‪ 6.1‬پالس ساعت به ازای هر عنصر‬
‫خواهد بود‪.‬‬

‫گردآوری‪-‬پخش کردن‪ :3‬مدیریت ماتریسهای خلوت در معماریهای برداری‬


‫همانطور که در باال ذکر شد‪ ،‬ماتریسهای خلوت رایج هستند بنابراین داشتن روشهایی که به برنامههای با‬
‫ماتریس های خلوت اجازه اجرا در مد برداری بدهد مهم است‪ .‬در یک ماتریس خلوت‪ ،‬معموالً عناصر یک بردار به‬

‫‪1‬‬
‫‪Load vector with stride‬‬
‫‪2‬‬
‫‪Store vector with stride‬‬
‫‪3‬‬
‫‪Gather-scatter‬‬
‫کانون نشر علوم‬ ‫‪| 436‬‬

‫شکلی فشرده ذخیره میشوند و سپس بطور غیر مستقیم دسترسی میشوند‪ .‬یک ساختار خلوت ساده را مد نظر قرار‬
‫دهید‪ ،‬ما ممکن است کد را مشابه زیر ببینیم‪:‬‬
‫)‪for(i=0; i<n; i=i+1‬‬
‫;]]‪A[K[i]]=A[K[i]]+C[M[i‬‬
‫این کد جمع برداری روی عناصر ‪ A‬و ‪ C‬را با استفاده از بردارهای اندیس ‪ K‬و ‪ M‬برای تشخیص عناصر غیرصفر‪،‬‬
‫پیادهسازی میکند‪ A( .‬و ‪ C‬باید تعداد عنصر غیرصفر برابر داشته باشند (‪ n‬تا) بنابراین ‪ K‬و ‪ M‬هم اندازه هستند)‪.‬‬
‫مکانیزم اولیه برای پشتیبانی ماتریسهای خلوت عملیات گردآوری‪-‬پخش با استفاده از بردارهای اندیس میباشد‪.‬‬
‫هدف چنین عملیاتی پشتیبانیِ حرکت بین نمایش فشرده (بدون صفر) و نمایش نرمال (با عناصر صفر) یک ماتریس‬
‫خلوت میباشد‪ .‬یک عمل گردآوری یک بردار ایندکس اتخاذ میکند و برداری که آدرس عناصر آن با جمع یک‬
‫آدرس پایه با آفست داده شده در بردار ایندکس بدست میآید را برداشت میکند‪ .‬نتیجه یک بردار چگال در یک‬
‫ثبات برداری است‪ .‬بعد از اینکه با این عناصر در یک شکل چگال عمل شد‪ ،‬بردار خلوت میتواند به شکل توسعه‬
‫یافته توسط یک دستور پخش با استفاده از بردار ایندکس مشابه ذخیره شود‪ .‬پشتیبانی سختافزاری برای چنین‬
‫عملیاتی گردآوری‪-‬پخش نامیده میشود و در همه پردازندههای برداری مدرن ظاهر میشود‪ .‬دستورات ‪،VMIPS‬‬
‫‪ LVI1‬و ‪ SVI2‬میباشند‪ .‬به عنوان مثال‪ ،‬اگر ‪ Ra, Rc, Rk, Rm‬شامل آدرسهای شروع بردارها در رشته قبلی‬
‫باشند‪ ،‬میتوانیم حلقه داخلی را با دستورات برداری مثل زیر کد کنیم‪:‬‬
‫‪LV‬‬ ‫‪Vk,Rk‬‬ ‫‪;load K‬‬
‫‪LVI‬‬ ‫)‪Va,(Ra+Vk‬‬ ‫]][‪;load A[K‬‬
‫‪LV‬‬ ‫‪Vm,Rm‬‬ ‫‪;load M‬‬
‫‪LVI‬‬ ‫]][‪Vc,(Rc+Vm) ;load C[M‬‬
‫‪ADDVV.D‬‬ ‫‪Va,Va,Vc‬‬ ‫‪;add them‬‬
‫‪SVI‬‬ ‫‪(Ra+Vk),Va‬‬ ‫]][‪;store A[K‬‬
‫این روش به کد با ماتریسهای خلوت اجازه میدهد تا در مد برداری اجرا شوند‪ .‬یک کامپایلر برداری ساده نمیتواند‬
‫بصورت خودکار کد منبع فوق را برداری کند زیرا کامپایلر نمیداند که عناصر ‪ K‬مقادیر مجزا هستند‪ ،‬و بنابراین هیچ‬
‫وابستگی وجود ندارد‪ .‬در عوض‪ ،‬راهنماهای برنامه نویس به کامپایلر میگوید که اجرای حلقه در مد برداری ممکن‬
‫است‪.‬‬

‫هرچندکه بارکردن و ذخیرهکردن ایندکسشده (گردآوری و پخش) میتوانند خطلوله شوند‪ ،‬آنها معموالً از ذخیره و‬
‫بار کردن ایندکسنشده کُندتر اجرا میشوند‪ ،‬زیرا بانکهای حافظه در ابتدای دستور شناخته شده نیستند‪ .‬هر عنصر‬
‫یک آدرس منفرد دارد‪ ،‬بنابراین قابل مدیریت گروهی نیستند‪ ،‬و در بسیاری از مکانهای سیستم حافظه تداخل وجود‬
‫خواهد داشت‪ .‬بههر حال‪ ،‬همانطور که در بخش ‪ 7-8‬نشان خواهیم داد‪ ،‬یک سیستم حافظه با طراحی برای این‬
‫حالت و با استفاده از منابع سخت افزاری میتواند کارایی بهتری داشته باشد در مقایسه با معمارهایی که برای چنین‬
‫دسترسیهایی وضعیت عدم مداخله دارند‪.‬‬

‫‪1‬‬
‫‪Load vector indexed or gather‬‬
‫‪2‬‬
‫‪Store vector indexed or scatter‬‬
‫‪| 437‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫در بخش ‪ 4-8‬خواهیم دید که در ‪GPU‬ها همه بارکردنها بصورت گردآوری و همه ذخیره کردنها حالت پخشی‬
‫دارند‪ .‬به منظور اجتناب از اجرای کُند در حالت متناوبِ استرایدهای واحد‪ ،‬برنامهنویس ‪ GPU‬باید تضمین دهد که‬
‫همه آدرسها در گردآوری و پخش مکانهای همسایه هستند‪ .‬همچنین سختافزار ‪ GPU‬باید ترتیب این آدرسها‬
‫را در طول اجرا تشخیص دهد تا گردآوری و پخش استراید واحد دسترسی حافظه کاراتر شود‪.‬‬

‫برنامهنویسی معماریهای برداری‬


‫یک مزیت معماری برداری این است که کامپایلرها میتوانند به برنامهنویسان در زمان کامپایل بگویند چه بخش از‬
‫کد برداری خواهد شد یا نه‪ ،‬همچنین میتوانند علت عدم برداری شدن کد را تذکر دهند‪ .‬که این مدل باعث میشود‬
‫برنامه نویسان خبره چگونگی بهبود کارایی را با اصالح کدشان بفهمند‪ .‬این محاوره بین کامپایلر و برنامه نویس‪،‬‬
‫برنامه نویسی کامپیوترهای برداری را ساده میکند‪.‬‬
‫امروزه‪ ،‬فاکتور عمده ای که بر موفقیت اجرای یک برنامه در مد برداری اثر دارد ساختار خود برنامه میباشد‪ :‬آیا‬
‫حلقهها وابستگی داده دارند (بخش ‪ )5-8‬یا میتوانند طوری ساختار بندی شوند که چنین وابستگی نداشته باشند؟‬
‫این فاکتور با الگوریتم انتخاب شده و به بعضی موارد دیگر و چگونگی کد شدن آنها تحت تأثیر قرار میگیرد‪.‬‬
‫برای توضیح سطوح برداری سازی قابل دسترس در برنامههای علمی‪ ،‬اجازه دهید به سطوح برداریسازی مشاهده‬
‫شده در برنامههای محک مهم نگاهی بیاندازیم‪ .‬جدول ‪ 2-8‬درصد عملیات اجرا شده در مد برداری برای دو نگارش‬
‫کد اجرا شده در ‪ Cray Y-MP‬را نشان میدهد‪ .‬اولین نگارش با بهینهسازی کامپایلر در کد اصلی بدست آمده‬
‫است در حالیکه نگارش دوم تذکرات وسیع از یک تیم برنامهنویس تحقیقاتی ‪ Cray‬را نشان میدهد‪ .‬چندین مطالعه‬
‫روی کارایی کاربردهای پردازندههای برداری تغییرات گستردهای در سطوح برداریسازی کامپایلر را نشان میدهد‪.‬‬
‫افزایش سرعت با‬ ‫عملیات اجرا شده در مد‬ ‫عملیات اجرا شده در مد‬ ‫نام برنامه‬
‫تذکرات بهینه سازی‬ ‫برداری‪ ،‬با کمک برنامهنویس‬ ‫برداری‪ ،‬بهینهسازی‪-‬کامپایلر‬ ‫محک‬
‫‪1.52‬‬ ‫‪97.2%‬‬ ‫‪96.1%‬‬ ‫‪BDNA‬‬
‫‪1.00‬‬ ‫‪94.5%‬‬ ‫‪95.1%‬‬ ‫‪MG3D‬‬
‫‪N/A‬‬ ‫‪88.7%‬‬ ‫‪91.5%‬‬ ‫‪FLOP52‬‬
‫‪1.01‬‬ ‫‪92.0%‬‬ ‫‪91.1%‬‬ ‫‪ARC3D‬‬
‫‪1.07‬‬ ‫‪90.4%‬‬ ‫‪90.3%‬‬ ‫‪SPEC77‬‬
‫‪1.49‬‬ ‫‪94.2%‬‬ ‫‪87.7%‬‬ ‫‪MDG‬‬
‫‪1.67‬‬ ‫‪73.7%‬‬ ‫‪69.8%‬‬ ‫‪TRFD‬‬
‫‪N/A‬‬ ‫‪65.6%‬‬ ‫‪68.8%‬‬ ‫‪DYFESM‬‬
‫‪3.60‬‬ ‫‪59.6%‬‬ ‫‪42.9%‬‬ ‫‪ADM‬‬
‫‪3.92‬‬ ‫‪91.2%‬‬ ‫‪42.8%‬‬ ‫‪OCEAN‬‬
‫‪2.52‬‬ ‫‪54.6%‬‬ ‫‪14.4%‬‬ ‫‪TRACK‬‬
‫‪4.06‬‬ ‫‪79.9%‬‬ ‫‪11.5%‬‬ ‫‪SPICE‬‬
‫‪2.15‬‬ ‫‪75.1%‬‬ ‫‪4.2%‬‬ ‫‪QCD‬‬
‫جدول ‪2-8‬سطوح برداری سازی بین برنامههای محک ‪ Perfect Club‬وقتیکه روی ‪ Cray Y-MP‬اجرا شدند]‪.[Vajapeyam1991‬‬
‫ستون اول سطح برداری سازی با کامپایلر بدون تذکر را نشان میدهد‪ ،‬ستون دوم نتایج را بعد از بهبود کد با تذکرات برنامه نویسان تحقیقاتی‬
‫‪ Cray‬را نشان میدهد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 438‬‬

‫نگارش با تذکر باعث ایجاد حصول سطح برداری سازی قابل توجهی شده است که کامپایلر به تنهایی نمیتوانست‬
‫آنرا بدست آورد با این بهینهسازی همه برنامههای محک بیشتر از ‪ ٪50‬برداری شدهاند‪ .‬میانه بهینه سازی از ‪٪70‬‬
‫به ‪ ٪90‬بهبود یافته است‪.‬‬

‫‪ -3-8‬توسعه مجموعه دستورالعمل ‪ SIMD‬برای چند رسانه ای‬


‫توسعه چندرسانهای ‪ SIMD‬با این نظر شروع شد که بسیاری از کاربردهای چندرسانهای روی انواع داده محدودتری‬
‫از آنچه پردازندههای ‪-32‬بیتی برای آن بهینه شدند عمل میکنند‪ .‬اکثر سیستمهای گرافیکی برای نمایش هر یک‬
‫از سه رنگ اصلی از ‪ 8‬بیت همچنین از ‪ 8‬بیت برای شفافیت استفاده میکنند‪ .‬براساس نوع کاربرد‪ ،‬نمونههای صدا‬
‫معموالً توسط ‪ 8‬یا ‪ 16‬بیت نمایش داده میشوند‪ .‬با تقسیم بندی زنجیره نقلی‪ ،‬مثالً در یک جمع کننده ‪ 256‬بیتی‪،‬‬
‫یک پردازنده میتواند عملیات همزمان روی بردارهای کوتاه سی و دو عملوند ‪ 8‬بیتی‪ ،‬شانزده عملوند ‪16‬بیتی‪ ،‬هشت‬
‫عملوند ‪32‬بیتی یا چهار عملوند ‪ 64‬بیتی را انجام دهد‪ .‬هزینه افزایشی چنین جمعکننده تقسیم شدهای کم است‪.‬‬
‫جدول ‪ 3-8‬دستورات ‪ SIMD‬چندرسانهای رایج را خالصه میکند‪ .‬شبیه دستورات برداری‪ ،‬یک دستور ‪SIMD‬‬
‫عمل مشابهی را روی برداری از داده مشخص میکند‪ .‬برخالف ماشینهای برداری با فایلهای ثبات بزرگ‪ ،‬مثل‬
‫ثبات برداری ‪ ،VMIPS‬که میتواند شصت و چهار عنصر ‪ 64‬بیتی را در هر ‪ 8‬ثبات برداری نگه دارد‪ ،‬دستورات‬
‫‪ SIMD‬متمایل به مشخص کردن تعداد کمتری عملوند هستند و بنابراین فایلهای ثبات کوچکتری استفاده‬
‫میکنند‪.‬‬

‫عملوندها‬ ‫طبقه بندی دستورالعمل‬


‫سی و دو ‪-8‬بیتی‪ ،‬شانزده ‪-16‬بیتی‪ ،‬هشت ‪-32‬بیتی‪ ،‬یا چهار ‪ 64‬بیتی‬ ‫جمع‪/‬تفریق بدون عالمت‬
‫سی و دو ‪-8‬بیتی‪ ،‬شانزده ‪-16‬بیتی‪ ،‬هشت ‪-32‬بیتی‪ ،‬یا چهار ‪ 64‬بیتی‬ ‫حداکثر‪/‬حداقل‬
‫سی و دو ‪-8‬بیتی‪ ،‬شانزده ‪-16‬بیتی‪ ،‬هشت ‪-32‬بیتی‪ ،‬یا چهار ‪ 64‬بیتی‬ ‫میانگین‬
‫سی و دو ‪-8‬بیتی‪ ،‬شانزده ‪-16‬بیتی‪ ،‬هشت ‪-32‬بیتی‪ ،‬یا چهار ‪ 64‬بیتی‬ ‫شیفت به چپ‪/‬راست‬
‫شانزده ‪-16‬بیتی‪ ،‬هشت ‪-32‬بیتی‪ ،‬چهار ‪ 64‬بیتی‪ ،‬یا دو ‪-128‬بیتی‬ ‫ممیز شناور‬
‫جدول ‪ :3-8‬خالصهای از پشتیبانی عملیات با پهنای ‪-256‬بیتی ‪ SIMD‬چندرسانهای رایج‪ .‬نکته اینکه استاندارد ممیز شناور ‪IEEE‬‬
‫‪ 754-2008‬عملیات با دقت نصف (‪-16‬بیتی) و دقت چهار برابر (‪-128‬بیتی) را اضافه کرده است‪.‬‬

‫در مقایسه با معماری های برداری‪ ،‬که مجموعه دستور زیبا و ظریفی دارند و کامپایلرهای برداری از آنها استفاده‬
‫میکنند‪ ،‬توسعه یافته ‪ SIMD‬سه نقطه ضعف عمده دارند‪:‬‬
‫• توسعههای ‪ SIMD‬چندرسانهای تعداد عملوندهای داده در ‪ opcode‬را ثابت نگه میدارند‪ ،‬که منجر‬
‫به اضافه شدن صدها دستور در توسعهیافتههای ‪ MMX, SSE‬و ‪ AVX‬از معماری ‪ x86‬شده است‪.‬‬
‫معماریهای برداری یک ثبات طول بردار دارند که تعداد عملوندها برای عمل جاری را مشخص میکند‪.‬‬
‫این ثباتهای طول‪-‬بردار به سادگی با برنامههایی که طبیعتاً بردارهای کوچکتری از حداکثر تعدادی که‬
‫معماری پشتیبانی میکند‪ ،‬دارند‪ ،‬تطابق مییابند‪ .‬بعالوه‪ ،‬معماریهای برداری یک ثبات حداکثر طول‬
‫بردار ضمنی دارند که با ثبات طول بردار ترکیب میشود تا از استفاده از تعداد زیادی ریزعمل اجتناب‬
‫کنند‪.‬‬
‫‪| 439‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫• ‪SIMD‬ی چندرسانهای مدهای آدرس دهی جالب معماری برداری مثل دسترسیهای استراید و‬
‫دسترسیهای گردآوری‪-‬پخش را ندارد‪ .‬این خواص تعداد برنامههایی که یک کامپایلر میتواند برداری‬
‫کند را افزایش میدهند‪.‬‬
‫• ‪SIMD‬ی چندرسانهای مثل معماری برداری از ثباتهای پوشش برای پشتیبانی اجرای شرطی عناصر‬
‫پشتیبانی نمیکند‪.‬‬
‫این نقاط ضعف تولید کد ‪ SIMD‬را برای کامپایلرها مشکلتر کرده است و پیچیدگی زبان اسمبلی ‪ SIMD‬بیشتر‬
‫است‪.‬‬
‫برای معماری ‪ ،x86‬دستورات ‪ MMX‬در سال ‪ 1996‬برای ثباتهای ممیز‪-‬شناور ‪-64‬بیتی اضافه شدند‪ ،‬بنابراین‬
‫دستورات پایه میتوانستند ‪ 8‬عمل ‪ -8‬بیتی یا چهار عمل شانزده بیتی را بطور همزمان انجام دهند‪ .‬اینها با عملیات‬
‫‪ MAX, MIN‬موازی‪ ،‬مجموعه گسترده ای از دستورات شرطی و پوشش‪ ،‬دستوراتی که معموالً در پردازندههای‬
‫سیگنال دیجیتال یافت میشوند‪ ،‬و دستورات تککاره‪ 1‬ترکیب شدند که ما معتقدیم برای کتابخانههای رسانهای‬
‫مفید هستند‪ .‬نکته اینکه ‪ MMX‬از دستورات انتقال داده ممیز‪-‬شناور برای دسترسی به حافظه استفاده میکند‪.‬‬
‫نوع جدید توسعه ‪SIMD‬ی رشتهای (‪ )SSE2‬که در سال ‪ 1999‬ارائه شد ثباتهای مجزایی اضافه کرد که ‪128‬‬
‫بیت پهنا داشتند‪ ،‬بنابراین دستورات میتوانستند شانزده عمل‪-8‬بیتی‪ ،‬هشت عمل ‪-16‬بیتی‪ ،‬یا چهار عمل ‪-32‬بیتی‬
‫را بطور همزمان اجرا کنند‪ .‬همچنین ریاضیات ممیز‪-‬شناور دقت‪-‬تک موازی را انجام میداد‪ .‬چون ‪ SSE‬ثباتهای‬
‫مجزا دارد‪ ،‬نیازمند دستورات انتقال داده مجزا است‪ .‬اینتل انواع داده ممیز‪-‬شناور ‪ SIMD‬با دقت مضاعف را در‬
‫‪ SSE2‬در ‪ SSE3 ،2001‬در ‪ ،2004‬و ‪ SSE4‬در ‪ 2007‬اضافه کرد‪ .‬دستورات با چهار عمل ممیز شناور دقت تک‬
‫یا دو عمل با دقت مضاعف موازی حداکثر کارایی ممیز شناور را در کامپیوترهای ‪ x86‬افزایش دادند بشرطی که‬
‫برنامه نویسان عملوندها را پهلو به پهلو‪ 3‬قرار دهند‪ .‬در هر نسل آنها همچنین دستورات تک کاره را اضافه کردند‬
‫که هدف آنها شتاب دادن به توابع چندرسانهای خاص بود‪.‬‬
‫توسعه برداری پیشرفته (‪)AVX4‬که در سال ‪ 2010‬اضافه شد‪ ،‬مجدداً پهنای ثباتها را به ‪ 256‬بیت دو برابر کرد و‬
‫بنابراین دستوراتی ارائه داد که تعداد عملیات روی انواع داده را دو برابر کرد‪ .‬جدول ‪ 4-8‬دستورات مفید ‪ AVX‬برای‬
‫محاسبات ممیز‪-‬شناور با دقت مضاعف را نشان میدهد‪ AVX .‬برای گسترش پهنای باند به ‪ 512‬بیت و ‪ 1024‬بیت‬
‫در معماریهای نسلهای آینده آمادگی دارد‪.‬‬
‫به طور کلی‪ ،‬هدف این توسعهها شتاب دادن دقیق به کتابخانهها میباشد نه اینکه کامپایلر آنها را تولید کند‪ ،‬اما‬
‫کامپایلرهای ‪ x86‬اخیر سعی در آماده کردن اینچنین کدهایی باالخص برای کاربردهای ممیز‪-‬شناورگرا دارند‪.‬‬

‫با وجود این ضعفها‪ ،‬چرا توسعههای ‪SIMD‬ی چندرسانهای اینقدر رایج هستند؟ اوالً‪ ،‬اضافه کردن آنها به واحد‬
‫ریاضی استاندارد و پیادهسازی آنها ساده است‪ .‬ثانیاً‪ ،‬آنها در مقایسه با معماریهای برداری حاالت فوقالعاده کمی‬

‫‪1‬‬
‫‪Ad-hoc‬‬
‫‪2‬‬
‫‪Streaming SIMD Extension‬‬
‫‪3‬‬
‫‪Side by side‬‬
‫‪4‬‬
‫‪Advanced vector extension‬‬
‫کانون نشر علوم‬ ‫‪| 440‬‬

‫دارند‪ ،‬که این حاالت برای زمانهای تعویض متن نگران کننده هستند‪ .‬ثالثاً‪ ،‬برای پیادهسازی یک معماری برداری‬
‫نیازمند پهنای باند حافظه زیادی هستیم‪ ،‬که ممکن است کامپیوترها نداشته باشند‪ .‬رابعاً‪ SIMD ،‬مجبور نیست با‬
‫مشکالت حافظه مجازی کار کند وقتیکه یک دستوری که میتواند دسترسیهای حافظه ‪-64‬بیتی تولید کند در‬
‫وسط یک بردار خطای صفحه تولید کند‪ .‬توسعههای ‪ SIMD‬به ازای هر گروه عملوند ‪ SIMD‬که در حافظه واقع‬
‫شده است یک دستور انتقال داده استفاده میکند و بنابراین از محدوده صفحه خارج نمیشود‪ .‬مزیت دیگر بردارهای‬
‫باطول‪-‬ثابت و کوتاه ‪ SIMD‬این است که معرفی دستوراتی که میتوانند به استانداردهای جدید رسانه کمک کنند‪،‬‬
‫مثل دستوراتی که جایگشت انجام میدهند یا دستوراتی که عملوندهای کمتری از دستورات برداری مصرف میکنند‪،‬‬
‫ساده است‪ .‬در انتها‪ ،‬در مورد چگونگی کار کردن معماریهای برداری با حافظه نهان نگرانی وجود دارد‪.‬‬
‫توضیح‬ ‫دستور ‪AVX‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را با هم جمع میکند‪.‬‬ ‫‪VADDPD‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را از هم تفریق میکند‪.‬‬ ‫‪VSUBPD‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را در هم ضرب میکند‪.‬‬ ‫‪VMULPD‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را بر هم تقسیم میکند‪.‬‬ ‫‪VDIVPD‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را با هم جمع و ضرب میکند‪.‬‬ ‫‪VFMADDPD‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را با هم تفریق و ضرب میکند‪.‬‬ ‫‪VFMSUBPD‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را برای ‪ EQ,NEQ, LT, LE, GT, GE‬باهم مقایسه‬
‫‪VCMPxx‬‬
‫میکند‪.‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را منتقل میکند‪.‬‬ ‫‪VMOVAPD‬‬
‫چهار عملوند دقت‪-‬مضاعف فشرده را به چهار مکان در ثباتهای ‪-256‬بیتی انتشار می‪-‬‬
‫‪VBROADCASTSD‬‬
‫دهد‪.‬‬
‫جدول ‪ :4-8‬دستورات ‪ AVX‬برای معماری ‪ x86‬که برای برنامههای ممیز‪-‬شناور دقت‪-‬مضاعف مفید هستند‪ .‬دقت‪-‬مضاعف فشرده‬
‫برای ‪256 AVX‬بیتی به معنی چهار عملوند ‪ 64‬بیتی است که در مد ‪ SIMD‬اجرا میشوند‪.‬‬
‫مثال ‪ :4-8‬برای اینکه بفهمید دستورات چندرسانهای چگونه هستند‪ ،‬فرض کنید که دستورات چندرسانهای‬
‫‪SIMD‬ی ‪-256‬بیتی را به ‪ MIPS‬اضافه کردهایم‪ .‬در این مثال روی ممیز‪-‬شناور تمرکز میکنیم‪ .‬پسوند ”‪“4D‬‬
‫را به دستورات اضافه میکنیم تا نشان دهیم که روی چهار عملوند ممیز شناور بطور همزمان عمل میکنند‪ .‬شبیه‬
‫معماریهای برداری‪ ،‬شما میتوانید اینطور فکر کنید که یک پردازنده ‪ SIMD‬نیز چند خط سیر دارد (در این حالت‬
‫چهار تا)‪ MIPS SIMD .‬ثباتهای ممیز‪-‬شناور را به عنوان عملوندهای دستورات ‪ 4D‬استفاده میکند‪ .‬در این‬
‫مثال کد ‪ MIPS SIMD‬را برای حلقه ‪ DAXPY‬نشان دهید‪ .‬فرض کنید آدرسهای شروع ‪ X‬و ‪ Y‬به ترتیب در‬
‫‪ Rx‬و ‪ Ry‬قرار دارد‪ .‬تغییرات کد ‪ MIPS‬برای ‪ SIMD‬را بصورت زیرخطدار نشان دهید‪.‬‬
‫پاسخ‪ :‬کد ‪ MIPS‬بصورت زیر است‪:‬‬
‫‪L.D‬‬ ‫‪F0,a‬‬ ‫‪;load scalar a‬‬
‫‪MOV‬‬ ‫‪F1,F0‬‬ ‫‪;copy a into F1 for SIMD MUL‬‬
‫‪MOV‬‬ ‫‪F2,F0‬‬ ‫‪;copy a into F2 for SIMD MUL‬‬
‫‪MOV‬‬ ‫‪F3,F0‬‬ ‫‪;copy a into F3 for SIMD MUL‬‬
‫‪DADDIU‬‬ ‫‪R4,Rx,#512 ;last address to load‬‬
‫‪| 441‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫‪Loop: L.4D‬‬ ‫)‪F4,0(Rx‬‬ ‫]‪;load X[i], X[i+1], X[i+2], X[i+3‬‬


‫‪MUL.4D‬‬ ‫‪F4,F4,F0‬‬ ‫]‪;a×X[i], a×X[i+1], a×X[i+2], a×X[i+3‬‬
‫‪L.4D‬‬ ‫)‪F8,0(Ry‬‬ ‫]‪;load Y[i], Y[i+1], Y[i+2], Y[i+3‬‬
‫‪ADD.4D‬‬ ‫‪F8,F8,F4‬‬ ‫]‪;a×X[i]+Y[i],…,a×X[i+3]+Y[i+3‬‬
‫‪S.4D‬‬ ‫)‪F8,0(Rx‬‬ ‫]‪;store into Y[i],Y[i+1],Y[i+2],Y[i+3‬‬
‫‪DADDIU‬‬ ‫‪Rx,Rx,#32‬‬ ‫‪;increment index to X‬‬
‫‪DADDIU‬‬ ‫‪Ry,Ry,#32‬‬ ‫‪;increment index to Y‬‬
‫‪DSUBU‬‬ ‫‪R20,R4,Rx‬‬ ‫‪;compute bound‬‬
‫‪BNEZ‬‬ ‫‪R20,Loop‬‬ ‫‪;check if done‬‬
‫تغییرات‪ ،‬هر دستور ‪ ِِMIPS‬دقت‪-‬مضاعف را با معادل ‪ 4D‬آن جایگزین کرده است‪ ،‬افزایش را از ‪ 8‬به ‪ 32‬و‬
‫ثباتها را از ‪ F2‬و ‪ F4‬به ‪ F4‬و ‪ F8‬تغییر داده است تا فضای کافی از فایل ثبات برای چهار عملوند دقت‪-‬مضاعف‬
‫بگیرد‪ .‬بنابراین هر خط سیرِ ‪ SIMD‬از اسکالر ‪ a‬یک کپی دارد‪ ،‬مقدار ‪ F0‬را به ‪ F3,F2,F1‬کپی کردهایم‪.‬‬
‫(توسعههای واقعی دستورات ‪ ،SIMD‬دستوری دارند که یک مقدار را به همه ثباتهای گروه انتشار میدهد)‪.‬‬
‫بنابراین‪ ،‬ضرب ‪ F4*F0, F5*F1, F6*F2, F7*F3‬را خواهد داشت‪ .‬هرچندکه ‪ SIMD MIPS‬کاهش مهیج‬
‫‪ 100‬برابری پهنای باند دستور ‪ VMIPS‬را ندارد ولی کاهشی ‪ 4‬برابری دارد و تعداد دستورات را از ‪ 578‬در ‪MIPS‬‬
‫به ‪ 149‬کاهش میدهد‪.‬‬

‫برنامهنویسی معماریهای ‪SIMD‬ی چندرسانهای‬


‫با داشتن طبیعت تککاره توسعهیافتههای ‪ SMID‬چندرسانهای‪ ،‬سادهترین روش استفاده این دستورات از طریق‬
‫کتابخانهها یا با نوشتن زبان اسمبلی است‪.‬‬
‫توسعههای اخیر به کامپایلر قدرت بیشتری میدهند‪ .‬با قرض گرفتن روشهای کامپایلرهای برداری‪ ،‬کامپایلرها‬
‫شروع به تولید دستورات ‪ SIMD‬بطور خودکار میکنند‪ .‬به عنوان مثال‪ ،‬امروزه کامپایلرهای توسعه یافته میتوانند‬
‫دستورات ممیز‪-‬شناور ‪ SIMD‬را به منظور کارایی بیشتر برای کدهای علمی تولید کنند‪ .‬به هر حال‪ ،‬برنامهنویسان‬
‫باید مطمئن باشند که همه دادههای داخل حافظه را به پهنای واحد ‪ SIMD‬اختصاص میدهند تا از تولید دستورات‬
‫اسکالر برای کدهای قابل برداری شدن توسط کامپایلر جلوگیری کنند‪.‬‬
‫‪ -4-8‬واحدهای پردازش گرافیکی (‪)GPU‬‬
‫هر کسی میتواند با چندصد دالر یک ‪ GPU‬بخرد که صدها واحد ممیز‪-‬شناور موازی دارد که کارایی محاسباتی‬
‫باالیی را دسترسپذیر میکند‪ .‬جذابیت محاسبات ‪ GPU‬وقتی شکوفا میشود که این پتانسیل با یک زبان برنامه‪-‬‬
‫نویسی که برنامه نویسی ‪ GPU‬را ساده میکند ترکیب شود‪ .‬بنابراین اکثر برنامههای علمی و کاربردهای چندرسانه‪-‬‬
‫ای میسنجند که چه موقع از ‪ GPU‬یا ‪ CPU‬استفاده کنند‪ .‬در این بخش روی استفاده از ‪ GPU‬برای محاسبات‬
‫تمرکز میکنیم‪.‬‬
‫کامال با معماریهای برداری و ‪ SIMD‬متفاوت است‪ ،‬ابتدا‬
‫ً‬ ‫چون اصطالحات و بعضی خواص سختافزاری ‪GPU‬‬
‫با مدل برنامهنویسی برای ‪ GPU‬شروع میکنیم سپس معماری آنرا بررسی میکنیم‪.‬‬
‫کانون نشر علوم‬ ‫‪| 442‬‬

‫برنامهنویسی ‪GPU‬‬
‫چالش برنامه نویسان ‪ GPU‬بدست آوردن کارایی باال در ‪ GPU‬و هماهنگی زمانبندی محاسبات روی پردازنده‬
‫سیستم و ‪ GPU‬و انتقال داده بین حافظه سیستم و حافظه ‪ GPU‬میباشد‪ .‬عالوه بر این همانطور که در ادامه این‬
‫فصل خواهیم دید‪ GPU ،‬بطور مجازی هر نوع موازاتی که توسط محیط برنامه نویسی قابل تسخیر میباشد را نیز‬
‫دارد‪ :‬چندنخی‪ MIMD ،SIMD ،‬و حتی سطح دستورالعمل‪.‬‬
‫‪ NVIDIA‬تصمیم به توسعه یک زبان شبیه‪ C-‬و محیط برنامهنویسی گرفت که قابلیت تولید برنامهنویسان ‪GPU‬‬
‫را با حمله به هر دوی چالشهای محاسبات نامتجانس و موازات چند وجهه بهبود میدهد‪ .‬نام سیستم آنها ‪CUDA1‬‬
‫میباشد‪ CUDA .‬کد ‪ C/C++‬را برای پردازنده سیستم (میزبان) و شبیه آن را برای ‪( GPU‬دستگاه‪ ،‬حرف ‪ D‬در‬
‫‪ )CUDA‬تولید میکند و یک زبان برنامهنویسی مشابه ‪ OpenGl‬میباشد‪ ،‬که چندین کمپانی آنرا برای ارائه یک‬
‫زبان مستقل از سختافزار توسعه میدهند‪.‬‬
‫‪ NVIDIA‬تصمیم گرفت که تم یکسان برای همه این نوع موازات‪ ،‬نخ ‪ CUDA‬باشد‪ .‬با استفاده از این موازات‬
‫‪2‬‬

‫سطح پایین به عنوان نسخه اولیه برنامهنویسی‪ ،‬کامپایلر و سختافزار میتواند هزاران نخ ‪ CUDA‬را با هم جمع‬
‫کند تا از انواع مختلف موازات داخل ‪ GPU‬بهرهبرداری کند شامل‪ :‬چندنخی‪ SIMD, MIMD ،‬و موازات سطح‬
‫دستور‪ .‬بنابراین‪ NVIDIA ،‬مدل برنامهنویسی ‪ CUDA‬را به تک دستور‪ -‬چندنخ (‪ )SIMT3‬کالسبندی کرد‪ .‬به‬
‫دالیلی که بعداً خواهیم گفت‪ ،‬این نخها با یکدیگر بلوک بندی میشوند و بصورت گروههای ‪32‬نخی که به آن بلوک‬
‫نخ‪ 4‬میگویند اجرا میشوند‪ .‬به سختافزاری که یک بلوک کامل نخها را اجرا میکند یک پردازنده ‪SIMD‬ی‬
‫چندنخی‪ 5‬میگوییم‪.‬‬
‫قبل از اینکه یک مثال از برنامه ‪ CUDA‬را بیان کنیم نیازمند جزئیات زیر میباشیم‪:‬‬
‫• برای تمایز بین توابع ‪( GPU‬دستگاه) و توابع پردازنده سیستم (میزبان)‪ CUDA ،‬از _‪ _device‬یا‬
‫_‪ _global‬برای ‪ GPU‬و _‪ _host‬برای ‪ CPU‬استفاده میکند‪.‬‬
‫• متغیرهای ‪ CUDA‬که در توابع _‪ _device‬یا _‪ _global‬تعریف میشوند در حافظه ‪GPU‬‬
‫تخصیص داده میشوند (کد زیر)‪ ،‬که توسط پردازندههای ‪SIMD‬ی چندنخی قابل دسترس است‪.‬‬
‫• طریقه فراخوانی تابع توسعه یافته برای تابع ‪ name‬که در ‪ GPU‬اجرا میشود به صورت زیر است‪:‬‬
‫)… ‪Name<<<dimGrid, dimBlock>>>(… parameter list‬‬
‫که ‪ dimGrid‬و ‪ dimBlock‬ابعاد کد (بر حسب بلوک) و ابعاد بلوک (برحسب نخ) را مشخص‬
‫میکنند‪.‬‬

‫‪1‬‬
‫‪Compute Unified Device Architecture‬‬
‫‪2‬‬
‫‪CUDA Thread‬‬
‫‪3‬‬
‫‪Single Instruction, Multiple Thread‬‬
‫‪4‬‬
‫‪Thread Block‬‬
‫‪5‬‬
‫‪MultiThreaded SIMD Processor‬‬
‫‪| 443‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫• به منظور تشخیص بلوکها (‪ )blockIdx‬و تشخیص نخها در بلوک (‪ CUDA ،)threadIdx‬یک‬


‫کلمه کلیدی برای تعداد نخها در بلوک (‪ ،)blockDim‬که از پارامتر ‪ dimBlock‬پاراگراف قبلی‬
‫میآید تهیه کرد‪.‬‬
‫قبل از مشاهده کد ‪ ،CUDA‬حلقه ‪ DAXPY‬از بخش ‪ 2.8‬را با کد ‪C‬ی سنتی مینویسیم‪:‬‬
‫‪//Invoke DAXPY‬‬
‫;)‪daxpy(n, 2.0, x, y‬‬
‫‪//DAXPY in C‬‬
‫)‪void daxpy (int n , double a, double *x, double *y‬‬
‫{‬
‫)‪for( int i=0; i<n; ++i‬‬
‫;]‪y[i]=a*x[i]+y[i‬‬
‫}‬
‫نگارش آن در ‪ CUDA‬به شکل زیر است‪ .‬با ‪ n‬نخ‪ ،‬یکی برای هر عنصر بردار‪ ،‬شروع میکنیم با ‪ 256‬نخ ‪CUDA‬‬
‫در هر بلوک نخ در یک پردازنده ‪SIMD‬ی چندنخی‪ .‬تابع ‪ GPU‬با محاسبه اندیس عنصر مرتبط ‪ i‬براساس ‪ID‬ی‬
‫بلوک‪ ،‬تعداد نخ در بلوک‪ ،‬و ‪ID‬ی نخ شروع میشود‪ .‬تا وقتیکه این اندیس در محدوده آرایه باشد (‪ ،)i<n‬ضرب و‬
‫جمع را انجام میدهد‪.‬‬
‫‪// Invoke DAXPY with 256 threads per Thread Block‬‬
‫_‪_host‬‬
‫;‪int nblocks=(n+255)/256‬‬
‫;)‪daxpy<<<nblocks, 256>>> (n, 2.0, x, y‬‬
‫‪//DAXPY in CUDA‬‬
‫_‪_device‬‬
‫)‪void daxpy(int n, double a, double *x , double *y‬‬
‫{‬
‫;‪int i= blockIdx.x*blockDim.x+ threadIdx.x‬‬
‫};]‪if(i<n) y[i]=a*x[i]+y[i‬‬
‫با مقایسه کدهای ‪ C‬و ‪ ،CUDA‬یک الگوی مشترک برای موازی سازی کد ‪CUDA‬ی موازات‪-‬داده مییابیم‪.‬‬
‫نگارش ‪ C‬حلقهای دارد که هر تکرار از تکرار دیگر مستقل است‪ ،‬که به حلقه اجازه میدهد تا مستقیماً به شکل یک‬
‫کد موازی درآید بنابراین هر تکرار حلقه یک نخ مستقل خواهد شد‪( .‬همانطور که قبالً توضیح داده شد و در بخش‬
‫‪ 5.8‬به تفصیل توضیح داده می شود کامپایلرهای برداری متکی به کمبود وابستگی بین تکرارهای یک حلقه نیز‬
‫هستند که به آن وابستگیهای حامل حلقه‪ 1‬میگویند)‪ .‬برنامهنویس صریحاً موازات را در ‪ CUDA‬با تعیین ابعاد‬
‫شبکه و تعداد نخها به ازای هر پردازندهی ‪ SIMD‬مشخص میکند با انتساب یک نخ به هر عنصر‪ ،‬نیازی به‬
‫همزمانی بین نخها موقع نوشتن نتایج در حافظه نیست‪.‬‬

‫‪1‬‬
‫‪Loop Carried Dependence‬‬
‫کانون نشر علوم‬ ‫‪| 444‬‬

‫سخت افزار ‪ GPU‬اجرای موازی و مدیریت نخ را راهاندازی میکند؛ و این توسط برنامه کاربردی یا سیستم عامل‬
‫انجام نمیشود‪ .‬برای سادهسازی زمانبندی توسط سختافزار‪ CUDA ،‬نیازمند این است که بلوکهای نخ قادر باشند‬
‫مستقالً و به هر ترتیبی اجرا شوند‪ .‬بلوکهای نخ مختلف نمیتوانند مستقیماً باهم ارتباط برقرار کنند‪ ،‬هرچند که‬
‫میتوانند با استفاده از عملیات اتمیک در حافظه سراسری هماهنگ شوند‪.‬‬
‫بزودی خواهیم دید که بسیاری از مفاهیم سختافزار ‪ GPU‬در ‪ CUDA‬واضح نیستند‪ .‬این از دید سودمندی‬
‫برنامهنویس چیز خوبی است‪ ،‬اما اکثر برنامهنویسان در حال استفاده از ‪ GPU‬بجای ‪ CPU‬برای بدست آوردن‬
‫کارایی میباشند‪ .‬برنامهنویسان حرفهای باید موقعیکه در ‪ CUDA‬کد مینویسند‪ ،‬سختافزار ‪ GPU‬را به خاطر‬
‫داشته باشند‪ .‬به دالیلی که مختصراً توضیح داده شد‪ ،‬آنها میدانند که نیازمند گروه بندی ‪ 32‬نخ در جریان کنترل‬
‫هستند تا بهترین کارایی را از پردازندههای ‪SIMD‬ی چندنخی بدست آورند همچنین تعداد نخ زیادی به ازای هر‬
‫پردازنده ‪SIMD‬ی چندنخی به منظور پنهان کردن تأخیر ‪ DRAM‬ایجاد کنند‪ .‬همچنین باید آدرسهای داده را‬
‫در یک یا چند بلوک حافظه به منظور بدست آوردن کارایی مورد انتظار از حافظه بطور محلی حفظ کنند‪.‬‬

‫شبیه بسیاری از سیستمهای موازی‪ ،‬بین سودمندی و کارایی در ‪ CUDA‬مصالحهای وجود دارد تا به برنامهنویسان‬
‫کنترل صریحی از سختافزار بدهد‪ .‬البته این مسأله در اکثر محاسبات موازی وجود دارد‪.‬‬

‫ساختارهای محاسباتی ‪NVIDIA GPU‬‬

‫با توجه به مطالب گفته شده در باال میتوانیم توضیح دهیم که چرا ‪GPU‬ها شکل معماری و اصطالحات مختص‬
‫خودشان را مستقل از ‪ CPU‬دارند‪ .‬یکی از موانع فهم ‪GPU‬ها اصطالحات نامفهوم است‪ ،‬که بعضی اصطالحات‬
‫نامهای گمراه کننده دارند‪ .1‬برای توضیح معماری ‪ GPU‬از زبان فنی ‪ NVIDIA GPU‬استفاده میکنیم‪.‬‬

‫جدول ‪ 5-8‬اصطالحات توصیفی استفاده شده در این بخش را لیست کرده است‪ .‬این شکل اصطالحات را برای‬
‫محاسبات‪ ،‬برای ‪ NVIDIA GPU‬و خالصه توضیحی از آنها را بیان میکند‪ .‬در ادامه این بخش خواص ریزمعماری‬
‫‪ GPU‬را با استفاده از این اصطالحات توضیح میدهیم‪.‬‬
‫ما برای مثالهایمان از سیستمهای ‪ NVIDIA‬استفاده میکنیم زیرا نمونهای از معماری ‪ GPU‬هستند‪.‬‬

‫شبیه معماریهای برداری‪GPU ،‬ها با مسائل موازات سطح‪-‬داده به خوبی کار میکنند‪ .‬هر دو انتقال داده گردآوری‪-‬‬
‫پخش و ثباتهای پوشش دارند‪ ،‬و پردازندههای ‪ GPU‬حتی ثباتهای بیشتری از پردازندههای برداری دارند‪ .‬چون‬
‫‪GPU‬ها یک پردازنده اسکالر الحاقی ندارند‪ ،‬گاهی اوقات یک خصوصیت را در زمان اجرا در سختافزار پیادهسازی‬
‫میکنند درحالیکه کامپیوترهای برداری آنرا در زمان کامپایل و در نرمافزار پیادهسازی میکنند‪ .‬برخالف اکثر‬
‫معماریهای برداری‪GPU ،‬ها روی چندنخی با یک پردازنده ‪SIMD‬ی چندنخی به منظور پنهان کردن تأخیر‬

‫‪ 1‬برای مطالعه بیشتر راجع به ‪ GPU‬و عملکردشان میتوانید به کتاب گرافیک کامپیوتر ترجمه مهندس سعیدینیا انتشارات شهرآب‬
‫مراجعه کنید‪.‬‬
‫‪| 445‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫حافظه تکیه دارند‪ .‬به هر حال‪ ،‬کد کارا برای هر دو معماریهای برداری و ‪ GPU‬نیازمند این است که برنامهنویس‬
‫روی عملیات ‪SIMD‬ی گروهی فکر کند‪.‬‬
‫تعریف‬ ‫اصطالح‬ ‫نامی که در خارج از‬ ‫نام توصیفی‬ ‫نوع‬
‫‪CUDA/NVIDIA‬‬ ‫‪ GPU‬استفاده می‪-‬‬
‫‪GPU‬‬ ‫شود‪.‬‬
‫یکه حلقه قابل برداری شدن‪ ،‬روی یک ‪ GPU‬اجرا میشود‪،‬‬ ‫گرید‬ ‫حلقه قابل برداری‬ ‫حلقه قابل‬
‫از یک یا چند بلوک نخ ساخته شده است (بدنههای حلقه قابل‬ ‫شدن‬ ‫برداری شدن‬
‫برداری شدن) و میتواند بصورت موازی اجرا شود‪.‬‬

‫سطح تجرید برنامه نویسی‬


‫یک حلقه برداری شده که روی یک پردازنده ‪SIMD‬ی چند‪-‬‬ ‫بلوک نخ‬ ‫بدنهی (محدوده‬ ‫بدنه حلقه‬
‫نخی اجرا میشود‪ ،‬از یک یا چند دستور ‪ SIMD‬ساخته شده‬ ‫کاوی شده) یک‬ ‫برداری شده‬
‫است‪ .‬آنها میتوانند از طریق حافظه محلی باهم ارتباط برقرار‬ ‫حلقه برداری شده‬
‫کنند‪.‬‬
‫یک برش عمودی از یک نخِ دستورات ‪ SIMD‬مرتبط با یک‬ ‫نخ ‪CUDA‬‬ ‫یک تکرار از یک‬ ‫رشتهای از‬
‫عنصر اجرا شده توسط یک خطسیر ‪ .SIMD‬نتایج براساس‬ ‫حلقه اسکالر‬ ‫عملیات خطسیر‬
‫ثبات پوشش یا پیشبینی ذخیره میشوند‪.‬‬ ‫‪SIMD‬‬
‫یک نخ سنتی‪ ،‬اما فقط شامل دستورات ‪ SIMD‬هست که‬ ‫‪Wrap‬‬ ‫نخی از دستورات‬ ‫یک نخ از‬
‫روی یک پردازنده ‪SIMD‬ی چندنخی اجرا میشود‪ .‬نتایج‬ ‫برداری‬ ‫دستورات‬

‫شیءماشین‬
‫براساس پوشش ذخیره میشوند‪.‬‬ ‫‪SIMD‬‬
‫یک دستور ‪ SIMD‬که در طول یک خطسیر اجرا میشود‪.‬‬ ‫دستور ‪PTX‬‬ ‫دستور برداری‬ ‫دستور ‪SIMD‬‬

‫یک پردازنده ‪SIMD‬ی چندنخی که نخهایی از دستورات‬ ‫چندپردازنده رشتهای‬ ‫پردازنده برداری‬ ‫پردازندهی‬
‫‪ SIMD‬را مستقل از سایر پردازندههای ‪ SIMD‬اجرا میکند‬ ‫(‪)streaming‬‬ ‫(چندنخی)‬ ‫‪SIMD‬ی‬
‫چندنخی‬
‫چندین بلوک نخ ( بدنههای حلقههای برداری شده) را به‬ ‫موتور نخ گیگا‬ ‫پردازنده اسکالر‬ ‫زمانبند بلوک‬

‫سخت افزار پردازشی‬


‫پردازندههای ‪SIMD‬ی چندنخی انتساب میدهد‪.‬‬ ‫نخ‬
‫واحد سختافزاری که نخهای دستورات ‪ SIMD‬را وقتیکه‬ ‫زمانبند ‪Warp‬‬ ‫زمانبند نخ در یک‬ ‫زمانبند نخ‬
‫آماده اجرا هستند زمانبندی و منتشر میکند‪ :‬شامل یک‬ ‫‪CPU‬ی چندنخی‬ ‫‪SIMD‬‬
‫‪ scoreboard‬برای ردیابی اجرای نخ ‪ SIMD‬است‪.‬‬
‫یک خطسیر ‪ SIMD‬عملیات را در یک نخ از دستورات‬ ‫پردازنده نخ‬ ‫خطسیر برداری‬ ‫خطسیر ‪SIMD‬‬
‫‪ SIMD‬روی یک عنصر اجرا میکند‪ .‬نتایج براساس پوشش‬
‫ذخیره میشوند‬
‫حافظه ‪ DRAM‬که توسط همه پردازندههای ‪SIMD‬ی یک‬ ‫حافظه سراسری‬ ‫حافظه اصلی‬ ‫حافظه ‪GPU‬‬
‫‪ GPU‬قابل دسترس است‪.‬‬
‫قسمتی از حافظه ‪ DRAM‬خصوصی برای هر خطسیر‬ ‫حافظه محلی‬ ‫حافظه محلی نخ یا‬ ‫حافظه خصوصی‬
‫سخت افزار حافظه‬

‫‪SIMD‬‬ ‫پشته (‪)OS‬‬


‫‪ SRAM‬محلی سریع برای یک پردازنده ‪ ،SIMD‬که برای‬ ‫حافظه مشترک‬ ‫حافظه محلی‬ ‫حافظه محلی‬
‫سایر پردازندههای ‪ SIMD‬قابل دسترس نیست‪.‬‬
‫ثباتهای یک خطسیر ‪ SIMD‬که در طول یک بلوک نخ‬ ‫ثباتهای پردازنده نخ‬ ‫ثباتهای خطسیر‬ ‫ثباتهای خط‪-‬‬
‫کامل اختصاص داده شده است‪.‬‬ ‫برداری‬ ‫سیر ‪SIMD‬‬
‫جدول ‪ :5-8‬راهنمای سریع برای اصطالحات ‪ GPU‬که در این بخش استفاده شده است‪ .‬ستونها را برای اصطالحات سخت افزاری‬
‫استفاده میکنیم‪ .‬اصطالحات در چهار گروه در سطرها دسته بندی شدهاند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 446‬‬

‫یک گرید‪ 1‬کدی است که روی یک ‪ GPU‬اجرا میشود و شامل مجموعهای از بلوکهای نخ میباشد‪ .‬جدول ‪-8‬‬
‫‪ 5‬یک گرید را با یک حلقه برداری شده‪ 2‬و بین یک بلوک نخ را با بدنه آن حلقه (بعد از اینکه محدوده کاوی شد‬
‫بطوریکه یک حلقه کامالً محاسباتی شد) مقایسه میکند‪ .‬به عنوان مثال فرض کنید میخواهیم دو بردار را در‬
‫یکدیگر ضرب کنیم‪ ،‬که هر کدام ‪ 8192‬عنصر دارد‪ .‬شکل ‪ 6-8‬رابطه بین این مثال و دو اصطالح اول ‪ GPU‬را‬
‫نشان میدهد‪ .‬کد ‪GPU‬ای که روی ضرب کل ‪ 8192‬عنصر کار میکند یک گرید نامیده میشود ( یا حلقه برداری‬
‫شده)‪ .‬برای شکستن آن به اندازههای قابل مدیریت‪ ،‬یک گرید از بلوکهای نخ ساخته شده است ( یا بدنه یک‬
‫حلقه برداری شده)‪ ،‬هر کدام تا ‪ 512‬عنصر دارند‪ .‬نکته اینکه یک دستور ‪ SIMD‬در هر زمان ‪ 32‬عنصر را اجرا‬
‫میکند‪ .‬با بردارهای ‪ 8192‬عنصره‪ ،‬این مثال ‪ 16‬بلوک نخ دارد چون ‪ .16=8192/512‬گرید و بلوک نخ مفاهیم‬
‫انتزاعی برنامهنویسی هستند که در سختافزار ‪ GPU‬پیادهسازی شده است که به برنامهنویس کمک میکند تا کد‬
‫‪CUDA‬یشان را سازمان دهی کنند‪( .‬بلوک نخ مشابه یک حلقه برداری محدوده کاوی شده با برداری به طول ‪32‬‬
‫هستند)‪.‬‬
‫یک بلوک نخ توسط زمانبند بلوک نخ به پردازندهای که آن کد را اجرا میکند انتساب داده میشود که ما به آن‬
‫پردازنده ‪SIMD‬ی چندنخی میگوییم‪ .‬زمانبند بلوک نخ‪ ،‬به یک پردازنده کنترلی در معماری برداری مقداری شباهت‬
‫دارد‪ .‬زمانبند بلوک نخ تعداد بلوکهای نخ مورد نیاز برای حلقه را مشخص میکند و آنها را به پردازندههای ‪SIMD‬ی‬
‫چندنخ مختلف میدهد تا زمانیکه حلقه کامل شود‪ .‬در این مثال‪ 16 ،‬بلوک نخ را به پردازندههای ‪ SIMD‬چندنخی‬
‫میفرستد تا همه ‪ 8192‬عنصر حلقه را تمام کنند‪.‬‬
‫شکل ‪ 7-8‬یک دیاگرام ساده از یک پردازنده ‪SIMD‬ی چند نخ را نشان میدهد‪ .‬آن شبیه یک پردازنده برداری‬
‫هست ولی واحدهای عملیاتی موازی زیادی دارد در حالیکه در پردازنده برداری کمترند ولی عمیقاً خطلوله شدهاند‪.‬‬
‫در مثال برنامهنویسی شکل ‪ 7-8‬هر پردازنده ‪SIMD‬ی چندنخی به ‪ 512‬عنصر از بردارها انتساب داده شده است‪.‬‬
‫پردازندههای ‪ SIMD‬پردازندههای کاملی با ‪PC‬های مجزا هستند و با استفاده از نخها برنامهنویسی شدهاند‪.‬‬
‫سختافزار ‪ GPU‬شامل مجموعهای از پردازندههای ‪SIMD‬ی چندنخ میباشد که یک گرید از بلوکهای نخ را‬
‫اجرا میکند (بدنههای حلقه برداری شده)؛ یعنی یک ‪ GPU‬یک چندپردازنده است که از پردازندههای ‪SIMD‬ی‬
‫چندنخی ساخته شده است‪.‬‬
‫چهار پیادهسازی اولیه معماری ‪ 14 ،11 ،7 Fermi‬یا ‪ 15‬پردازنده ‪SIMD‬ی چندنخ دارند‪ ،‬نگارشهای آینده ممکن‬
‫است فقط ‪ 2‬یا ‪ 4‬تا داشته باشند‪ .‬برای ایجاد مقیاسپذیری شفاف بین مدلهای ‪ GPU‬با تعداد مختلف پردازندههای‬
‫‪SIMD‬ی چندنخی‪ ،‬زمانبند بلوک نخ‪ ،‬بلوکهای نخ را به پردازندههای ‪SIMD‬ی چندنخی انتساب میدهد‪ .‬شکل‬
‫‪ 8-8‬طرح پیادهسازی شده معماری ‪Fermi‬ی ‪ GTX 480‬را نشان میدهد‪.‬‬

‫‪1‬‬
‫شبکه=‪Grid‬‬
‫‪2‬‬
‫‪Vectorized Loop‬‬
‫‪| 447‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫شکل ‪ : 6-8‬نگاشت یک گرید (حلقه قابل برداری شدن)‪ ،‬بلوکهای نخ (بلوکهای پایه ‪ ،)SIMD‬و نخهایی از دستورات‬
‫‪ SIMD‬به یک ضرب بردار در بردار‪ ،‬که هر بردار طول ‪ 8192‬عنصر دارد‪ .‬هر نخ از دستورات ‪ SIMD‬در هر دستور ‪ 32‬عنصر‬
‫را محاسبه میکند‪ ،‬و در این مثال هر بلوک نخ شامل ‪ 16‬نخ از دستورات ‪ SIMD‬است و شبکه شامل ‪ 16‬بلوک نخ است‪ .‬سخت‬
‫افزار زمانبند بلوک نخ‪ ،‬بلوکهای نخ را به پردازندههای ‪SIMD‬ی چندنخی انتساب میدهد و سخت افزار زمانبند‪ ،‬نخی از‬
‫دستورات ‪ SIMD‬را انتخاب میکند تا در هر پالس ساعت داخل یک پردازنده ‪ SIMD‬اجرا شود‪ .‬فقط نخهای ‪ SIMD‬در یک‬
‫بلوک نخ مشابه میتوانند از طریق حافظه محلی با هم ارتباط برقرار کنند‪( .‬حداکثر تعداد نخهای ‪ SIMD‬که میتوانند بطور‬
‫همزمان در هر بلوک نخ اجرا شوند برای نسل ‪ Tesla‬از ‪GPU‬ها ‪ 16‬و برای نسل بعدی یعنی ‪ Fermi‬از ‪ 32 ،GPU‬میباشد)‪.‬‬
‫کانون نشر علوم‬ ‫‪| 448‬‬

‫شکل ‪ 7-8‬یک بالک دیاگرام ساده از یک پردازنده ‪SIMD‬ی چندنخی‪ .‬این پردازنده ‪ 16‬خطسیر دارد‪ .‬زمانبند ن ِخ ‪ 48 ، SIMD‬نخ‬
‫مستقل از دستورات ‪ SIMD‬دارد که با یک جدول از ‪ 48‬عدد ‪ PC‬آنها را زمانبندی میکند‪.‬‬

‫شیء ماشین که سختافزار تولید‪ ،‬مدیریت‪ ،‬زمانبندی‪ ،‬و اجرا میکند‪ ،‬نخی از دستورات ‪ SIMD‬میباشد و نخی‬
‫است که دربرگیرنده دستورات ‪SIMD‬ی منحصر بفرد است‪ .‬این نخهای دستورات ‪PC ، SIMD‬خودشان را دارند‬
‫و روی یک پردازنده ‪SIMD‬ی چندنخی اجرا میشوند‪ .‬زمانبند نخ ‪ SIMD‬یک ‪ scoreboard‬دارد که به آن‬
‫میگوید کدام نخ از دستورات ‪ SIMD‬برای اجرا آماده هستند‪ ،‬و آنها را به واحد ‪ dispatch‬میفرستد تا روی‬
‫یک پردازنده ‪SIMD‬ی چندنخی اجرا شود‪ .‬بنابراین سختافزار ‪ GPU‬دو سطح از زمانبند سختافزاری دارد‪)1( :‬‬
‫زمانبند بلوک نخ که بلوکهای نخ را به پردازندههای ‪SIMD‬ی چندنخی انتساب میدهد و تضمین میدهد که‬
‫بلوکهای نخ به پردازندههایی انتساب داده میشوند که داده مرتبط را در حافظههای محلیشان دارند‪ )2( .‬زمانبند‬
‫نخ ‪ SIMD‬داخل یک پردازندهی ‪ ،SIMD‬زمانبندی میکند چه موقع نخهای دستورات ‪ SIMD‬باید اجرا شوند‪.‬‬
‫دستورات ‪SIMD‬ی این نخها ‪ 32‬تایی میباشند‪ ،‬بنابراین هر نخ از دستورات ‪SIMD‬ی این مثال ‪ 32‬عنصر‬
‫محاسباتی را محاسبه خواهد کرد‪ .‬در این مثال‪ ،‬بلوکهای نخ شامل ‪ 512/32=16‬نخ ‪ SIMD‬میباشند‪( .‬شکل‬
‫‪ 8-6‬را ببینید)‪.‬‬
‫‪| 449‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫شکل ‪ :8-8‬طرحِ ‪ .Fermi 480 GTX‬این دیاگرام ‪ 16‬پردازنده ‪SIMD‬ی چندنخی را نشان میدهد‪ .‬زمانبند بلوک نخ در سمت‬
‫چپ برجسته شده است‪ GTX 480 .‬شش پورت ‪ 64‬بیتی ‪ GDDR5‬دارد که تا ‪ 6GB‬ظرفیت را پشتیبانی میکند‪ .‬رابط میزبان‬
‫‪ PCI Express 2.0×16‬میباشد‪ .‬نخ گیگا نام زمانبند است که بلوکهای نخ را به چندپردازندهها توزیع میکند‪ ،‬که هر کدام‬
‫زمانبند نخ ‪SIMD‬ی خودش را دارد‪.‬‬

‫چون نخ شامل دستورات ‪ SIMD‬میباشد‪ ،‬پردازنده ‪ SIMD‬باید برای انجام عملیات‪ ،‬واحدهای عملیاتی موازی‬
‫داشته باشد‪ .‬ما به آنها خطسیرهای ‪ SIMD‬میگوییم و مشابه خطسیرهای برداری در بخش ‪ 2-8‬میباشند‪.‬‬
‫تعداد خطسیرها برای هر پردازنده ‪ SIMD‬در نسلهای ‪ GPU‬متفاوت است‪ .‬در ‪ ،Fermi‬هر نخ با پهنای ‪ 32‬به‬
‫‪ 16‬خطسیر ‪SIMD‬ی فیزیکی نگاشت داده میشوند‪ ،‬بنابراین هر دستور ‪ SIMD‬در یک نخ از دستورات ‪SIMD‬‬
‫دو پالس ساعت برای تکمیل شدن میگیرد‪ .‬هر نخ از دستورات ‪ SIMD‬در مرحله ‪ lock‬اجرا میشود و فقط در‬
‫ابتدا زمانبندی میشود‪ .‬اگر بخواهیم یک پردازنده ‪ SIMD‬را با یک پردازنده برداری مقایسه کنیم‪ ،‬میتوانیم بگوییم‬
‫‪ 16‬خط سیر دارد‪ ،‬طول بردار ‪ 32‬است‪ ،‬و اندازه چایم ‪ 2‬پالس ساعت است‪.‬‬
‫چون طبق تعریف نخهای دستورات ‪ SIMD‬مستقل از هم هستند‪ ،‬زمانبند نخ ‪ SIMD‬میتواند هرکدام از نخهای‬
‫دستورات ‪ SIMD‬را که آماده هستند انتخاب کند‪ ،‬و نیازی به بررسی دستور ‪SIMD‬ی بعدی در نخ ندارد‪ .‬زمانبند‬
‫نخ ‪ SIMD‬یک ‪ scoreboard‬دارد و تا ‪ 48‬نخ دستورات ‪ SIMD‬را ردیابی میکند تا ببیند که کدام دستور‬
‫‪ SIMD‬برای اجرا آماده است‪ .‬به خاطر اینکه دستورات دسترسی به حافظه ممکن است تعداد غیرقابل پیشبینی‬
‫پالس ساعت به خاطر مثالً تداخالت حافظه‪ ،‬بگیرند این ‪ scoreboard‬مورد نیاز است‪ .‬شکل ‪ 9-8‬زمانبند نخ‬
‫کانون نشر علوم‬ ‫‪| 450‬‬

‫‪ SIMD‬را نشان میدهد که نخهای دستورات ‪ SIMD‬را به ترتیبی متفاوت بر حسب زمان انتخاب میکند‪ .‬فرض‬
‫معمار ‪ GPU‬این است که کاربردهای ‪ GPU‬به تعداد کافی نخ از دستورات ‪ SIMD‬دارد که چندنخی میتواند هم‬
‫تأخیر ‪ DRAM‬را مخفی کند و هم بهرهوری پردازندههای ‪SIMD‬ی چندنخی را افزایش دهد‪ .‬به هر حال‪،‬‬
‫‪NVIDIA Fermi GPU‬ی اخیر یک حافظه نهان ‪ L2‬نیز دارد‪( .‬بخش ‪)7-8‬‬

‫با ادامه مثال ضرب برداری‪ ،‬هر پردازنده ‪SIMD‬ی چندنخی باید ‪ 32‬عنصر از دو بردار را از حافظه به ثباتها بار‬
‫کند‪ ،‬ضرب را با خواندن و نوشتن ثباتها انجام دهد‪ ،‬و حاصلضرب را از ثباتها به حافظه برگرداند‪ .‬برای نگهداری‬
‫این عناصر حافظه‪ ،‬یک پردازندهی ‪ 32768 ،SIMD‬ثبات ‪-32‬بیتی مؤثر دارد‪ .‬شبیه یک پردازنده برداری‪ ،‬این‬
‫ثباتها بطور منطقی در بین خطسیرهای برداری یا در این حالت خطسیرهای ‪ SIMD‬تقسیم میشوند‪ .‬هر نخِ‬
‫‪ SIMD‬میتواند تا ‪ 64‬ثبات برداری داشته باشد‪ ،‬که هر ثبات برداری ‪ 32‬عنصر دارد و هر عنصر ‪ 32‬بیتی میباشد‪.‬‬
‫(چون عملوندهای ممیز شناور دقت‪-‬مضاعف از دو ثبات همسایه استفاده میکنند‪ ،‬یک نگاه دیگر این است که هر‬
‫نخِ ‪ 32 ،SIMD‬ثبات برداری با ‪ 32‬عنصر دارد و هر عنصر ‪ 64‬بیتی است)‪.‬‬

‫شکل ‪ :9-8‬زمانبندی نخهای دستورات ‪ .SIMD‬زمانبند‪ ،‬یک نخ آماده از دستورات ‪ SIMD‬را انتخاب میکند و یک دستور را بطور‬
‫همزمان به همه خطسیرهای ‪ SIMD‬که ن ِخ ‪ SIMD‬را اجرا میکنند منتشر میکند‪ .‬چون نخهای دستورات ‪ SIMD‬مشابه هستند‪،‬‬
‫زمانبند ممکن است در هر زمان یک نخ ‪ SIMD‬متفاوت انتخاب کند‪.‬‬
‫‪| 451‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫چون ‪ Fermi‬شانزده خط سیر ‪ SIMD‬دارد‪ ،‬که هر کدام ‪ 2048‬ثبات دارند‪ ،‬هر نخ ‪ CUDA‬یک عنصر از هر ثبات‬
‫برداری را میگیرد‪ .‬برای راهاندازی ‪ 32‬عنصر هر نخ از دستورات ‪ SIMD‬با ‪ 16‬خط سیر‪ ،‬نخهای ‪ CUDA‬از یک‬
‫بلوک نخ میتوانند تا نصف ‪ 2048‬ثبات را استفاده کنند‪.‬‬

‫معماری مجموعه دستورالعمل ‪NIDIA GPU‬‬


‫برخالف اکثر پردازندههای سیستم‪ ،‬مجموعه دستورالعمل کامپایلرهای ‪ NVIDIA‬خالصهای از مجموعه دستورالعمل‬
‫سخت افزار است‪ PTX1 .‬یک مجموعه دستورالعمل پایدار برای کامپایلرها تهیه میکند‪ .‬مجموعه دستورالعمل‬
‫سخت افزاری از دید برنامه نویس پنهان است‪ .‬دستورات ‪ PTX‬عملیات را روی یک نخ ‪ CUDA‬توصیف میکنند‪،‬‬
‫و معموالً یک نگاشت یک‪-‬به‪-‬یک با دستورات سخت افزار هستند‪ ،‬اما یک ‪ PTX‬میتواند به دستورات ماشین‬
‫متعددی توسعه یابد و بالعکس‪ PTX .‬ثباتهای مجازی را استفاده میکند‪ ،‬بنابراین کامپایلر تعیین میکند که یک‬
‫نخِ ‪ SIMD‬به چه تعداد ثبات برداری فیزیکی نیازمند است‪ ،‬و آنگاه یک بهینهساز حافظه ثبات قابل دسترس را بین‬
‫نخهای ‪ SIMD‬تقسیم میکند‪ .‬این بهینهساز همچنین کد مرده را حذف میکند‪ ،‬دستورات را به هم میآمیزد‪ ،‬و‬
‫مکانهایی که پرشها ممکن است از هم دور شوند را محاسبه میکند و مکانهایی که مسیرهای ازهم دور شده‬
‫میتوانند با هم همگرا شوند را محاسبه میکند‪.‬‬

‫درحالیکه تشابههایی بین ریزمعماری ‪ x86‬و ‪ PTX‬وجود دارد تفاوت این است که در ‪ x86‬این ترجمه در سخت‬
‫افزار در طول زمان اجرا اتفاق میافتد درحالیکه در ‪ GPU‬در زمان بارکردن و در نرمافزار اتفاق میافتد‪.‬‬
‫شکل یک دستور ‪ PTX‬بصورت زیر است‪:‬‬
‫;‪Opcode.type d,a,b,c‬‬
‫که ‪ d‬عملوند مقصد است؛ ‪ a,b,c‬عملوندهای منبع هستند؛ و نوع عمل یکی از موارد زیر است‪:‬‬

‫تصریح کننده ‪.‬نوع‬ ‫نوع‬


‫‪.b8, .b16, .b32, .b64‬‬ ‫بیتهای بدون نوع ‪ 32 ،16 ،8‬و ‪ 64‬بیتی‬
‫‪.u8, .u16, .u32, .u64‬‬ ‫صحیح بدون عالمت ‪ 32 ،16 ،8‬و ‪ 64‬بیتی‬
‫‪.s8, .s16, .s32, .s64‬‬ ‫صحیح عالمت دار ‪ 32 ،16 ،8‬و‪ 64‬بیتی‬
‫‪.f16, .f32, .f64‬‬ ‫ممیز شناور ‪ 32 ،16‬و ‪ 64‬بیتی‬

‫عملوندهای منبع ثباتهای ‪-32‬بیتی یا ‪-64‬بیتی یا یک مقدار ثابت هستند‪ .‬مقصدها ثبات هستند بجز برای دستور‬
‫ذخیره‪.‬‬
‫جدول ‪ 6-8‬مجموعه دستور پایه ‪ PTX‬را نشان میدهد‪ .‬همه دستورات میتوانند با یک ثبات پیشبینی ‪-1‬بیتی‬
‫پیشبینی شوند‪ ،‬که میتواند توسط یک دستور تنظیم پیشبینی (‪ )setp‬یک شود‪ .‬دستورات کنترل جریان فراخوانی‬
‫تابع‪ ،‬و ‪ ،branch ،thread exit ،return‬و دستور سد همزمانی برای نخهای داخل یک بلوک نخ‬
‫(‪ )bar.sync‬میباشند‪ .‬قرار دادن یک پیشبینی جلو یک دستور پرش‪ ،‬پرشهای شرطی را ایجاد میکند‪ .‬برنامه‪-‬‬

‫‪1‬‬
‫‪Parallel Thread Execution‬‬
‫کانون نشر علوم‬ ‫‪| 452‬‬

‫نویس ‪ PTX‬یا کامپایلر‪ ،‬ثباتهای مجازی ‪-32‬بیتی یا ‪-64‬بیتی نوعدار یا مقادیر بدون نوع را مشخص میکنند‪ .‬به‬
‫عنوان مثال‪ ..... ،R1 ،R0 ،‬برای مقادیر ‪ 32‬بیتی و ‪ RD0,RD1,….‬برای ثباتهای ‪-64‬بیتی میباشند‪ .‬انتساب‬
‫ثباتهای مجازی به ثباتهای فیزیکی در زمان بار کردن با ‪ PTX‬اتفاق میافتد‪.‬‬
‫رشته کد زیر دستورات ‪ PTX‬برای یک تکرار حلقه ‪ DAXPY‬میباشد‪:‬‬
‫‪Shl.u32‬‬ ‫‪R8,blockIdx,9‬‬ ‫‪;Thread Block ID*Block size‬‬
‫)‪(512 or 29‬‬
‫‪Add.u32‬‬ ‫‪R8,R8, threadIdx‬‬ ‫‪;R8=i=my CUDA Thread ID‬‬
‫‪Shl.u32‬‬ ‫‪R8,R8,3‬‬ ‫‪;byte offset‬‬
‫]‪Ld.global.f64 RD0,[X+R8‬‬ ‫]‪;RD0=X[i‬‬
‫]‪Ld.global.f64 RD2,[Y+R8‬‬ ‫]‪;RD2=Y[i‬‬
‫‪Mul.f64‬‬ ‫‪RD0,RD0,RD4‬‬ ‫‪;Product in RD0=RD0*RD4‬‬
‫)‪(scalar a‬‬
‫‪Add.f64‬‬ ‫‪RD0,RD0,RD2‬‬ ‫)]‪;sum in RD0=RD0+RD2 (Y[i‬‬
‫‪St.global.f64 [Y+R8], RD0‬‬ ‫)]‪;Y[i]=sum(X[i]*a+Y[i‬‬

‫همانطور که در باال مشاهده میکنید‪ ،‬مدل برنامه نویسی ‪ CUDA‬یک نخ ‪ CUDA‬را به هر تکرار حلقه انتساب‬
‫میدهد و یک شماره مشخصه منحصر بفرد به هر بلوک نخ (‪ )blockIdx‬و یکی به هر نخ ‪ CUDA‬در داخل یک‬
‫بلوک (‪ )threadIdx‬انتساب میدهد‪ .‬بنابراین‪ 8192 ،‬نخ ‪ CUDA‬تولید میکند و شماره منحصر بفرد برای آدرس‬
‫دهی به هر عنصر در آرایه استفاده میکند‪ ،‬بنابراین هیچ افزایشی یا کد پرشی وجود ندارد‪ .‬سه دستور ‪ PTX‬اول‬
‫آفست بایت عنصر منحصر بفرد را محاسبه میکند که به آدرس پایه آرایه اضافه میشود‪ .‬بقیه دستورات ‪ PTX‬دو‬
‫عملوند ممیز‪-‬شناور با دقت‪-‬مضاعف را بار میکند‪ ،‬آنها را جمع و ضرب میکند‪ ،‬و جمع را ذخیره میکند‪( .‬کد ‪PTX‬‬
‫مرتبط با کد ‪ CUDA‬را اگر ‪ i<n‬باشد توصیف خواهیم کرد)‪.‬‬

‫نکته اینکه برخالف معماریهای برداری‪GPU ،‬ها دستورات مجزا برای انتقال داده ترتیبی‪ ،‬انتقال داده سیل آسا و‬
‫انتقال گردآوری‪-‬پخش ندارند‪ .‬همه انتقال دادهها گردآوری‪-‬پخش هستند! برای بدست آوردن بهرهوری انتقال‬
‫دادههای ترتیبی‪GPU ،‬ها سخت افزار در هم آمیختگی آدرس خاص دارند تا تشخیص دهند چه موقع خطسیرهای‬
‫‪ SIMD‬در یک نخ از دستورات ‪ SIMD‬آدرسهای ترتیبی منتشر میکنند‪ .‬این سخت افزار زمان اجرا واحد رابط‬
‫حافظه را آگاه میکند تا انتقال داده بلوکی ‪ 32‬کلمه ترتیبی را درخواست دهد‪.‬‬
‫پرشهای شرطی در ‪GPU‬ها‬
‫شباهتهای زیادی بین معماریهای برداری و‪GPU‬ها در مدیریت دستورات ‪ IF‬وجود دارد که اولی بیشتر مکانیزم‬
‫را در نرم افزار انجام میدهد و دومی بیشتر از سخت افزار استفاده میکند‪ .‬عالوه بر ثباتهای پیشبینی صریح‪،‬‬
‫سخت افزار ‪ GPU‬از پوششهای داخلی‪ ،‬یک پشته همزمانی پرش‪ ،‬و عالمتهای دستوری استفاده میکند تا‬
‫مدیریت کند که چه موقع یک پرش به چندین مسیر اجرایی واگرا میشود و چه موقع مسیرها به هم همگرا میشوند‪.‬‬
‫‪| 453‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫جدول ‪ :6-8‬دستورات نخ پایه ‪PTX GPU‬‬

‫در سطح اسمبلی ‪ ،PTX‬جریان کنترل یک نخ ‪ CUDA‬توسط دستورات ‪ PTX‬مثل ‪ return ،call ،branch‬و‬
‫‪ exit‬به عالوه یک پیشبینی به ازای هر نخ خط سیر منفرد از هر دستور‪ ،‬که توسط برنامهنویس با یک ثبات‬
‫کانون نشر علوم‬ ‫‪| 454‬‬

‫پیشبینی یک بیتی به ازای هر نخ خط سیر مشخص میشود توصیف میشوند‪ .‬اسمبلر ‪ PTX‬گراف پرش ‪ PTX‬را‬
‫تجزیه تحلیل میکند و آنرا برای سریعترین سخت افزار ‪ GPU‬بهینه میکند‪.‬‬

‫در سخت افزار ‪GPU‬ی سطح دستور‪ ،‬جریان کنترل شامل دستورات ‪branch, jump, jump indexed,‬‬
‫‪ call, call indexed, return, exit‬و دستورات خاصی است که پشته همزمانی پرش را مدیریت میکنند‪.‬‬
‫سخت افزار ‪ GPU‬به ازای هر نخ ‪ SIMD‬یک پشته تهیه میکند‪ ،‬یک ورودی پشته شامل‪ ،‬یک توکن شناسه‪،‬‬
‫یک آدرس دستور مقصد‪ ،‬و یک پوشش نخ‪-‬فعال مقصد میباشد‪ .‬دستورات ‪GPU‬ی خاصی وجود دارد که ورودی‪-‬‬
‫های پشته را برای یک نخ ‪ SIMD‬پوش میکنند و دستورات خاصی که یک ورودی را از پشته پاپ میکنند‬
‫همچنین می توانند به هر ورودی پشته و آدرس دستور مقصد دسترسی داشته باشند‪ .‬سخت افزار دستورات ‪GPU‬‬
‫همچنین پیشبینی به ازای‪ -‬هر خط سیر (فعال‪/‬غیرفعال) منفرد دارند‪ ،‬که توسط یک ثبات یک بیتی پیش بینی به‬
‫ازای هر خط سیر مشخص میشوند‪.‬‬

‫اسمبلر ‪ PTX‬یک دستور ‪ IF/THEN/ELSE‬سطح بیرونی کد شده با دستورات پرش ‪ PTX‬را به دستورات‬
‫‪GPU‬ی پیشبینی شده بدون هیچ دستور پرش ‪ GPU‬بهینه میکند‪ .‬یک جریان کنترل پیچیدهتر معموالً منتج به‬
‫ترکیب پیشبینی و دستورات پرش ‪ GPU‬با دستورات خاص و نشانههایی که از پشته همزمانی استفاده میکند‬
‫میباشد تا یک ورودی پشته را پوش کند وقتیکه بعضی خطسیرها به آدرس مقصد پرش میکند در حالیکه بقیه‬
‫به نتیجه نمیرسند‪ NVIDIA .‬در این مواقع به آن انشعاب پرش میگوید‪ .‬این ترکیب نیز وقتیکه یک خط سیر‬
‫‪ SIMD‬یک نشانه همزمانی یا همگرایی را اجرا میکند استفاده میشود‪ ،‬که یک ورودی پشته را پاپ میکند و به‬
‫آدرس ورودی‪-‬پشته با پوشش نخ‪-‬فعال ورودی‪-‬پشته پرش میکند‪ .‬اسمبلر ‪ PTX‬پرشهای حلقه را تشخیص‬
‫میدهد و دستورات پرش ‪GPU‬ی تولید میکند که به باالی حلقه پرش میکند‪.‬‬

‫ساختارهای حافظه ‪NVIDIA GPU‬‬

‫شکل ‪ 10-8‬ساختارهای حافظه ‪ NVIDIA GPU‬را نشان میدهد‪ .‬به هر خط سیر ‪ SIMD‬در یک پردازنده‬
‫‪SIMD‬ی چندنخی یک بخش خصوصی حافظه ‪ off-chip DRAM‬داده میشود‪ ،‬که ما به آن حافظه خصوصی‬
‫میگوییم‪ .‬این بخش برای قطعه پشته‪ ،‬برای متغیرهای خصوصی که در ثباتها جا نمیشوند استفاده میشود‪ .‬خط‬
‫سیرهای ‪ SIMD‬حافظههای خصوصی را به اشتراک نمیگذارند‪GPU .‬های اخیر این حافظه خصوصی را در‬
‫حافظههای نهان ‪ L1‬و ‪ L2‬ذخیره میکنند تا به کمبود ثباتها کمک کنند و فراخوانی تابع را سرعت دهند‪.‬‬

‫به حافظه ‪ on-chip‬که برای هر پردازنده ‪ SIMD‬چندنخی محلی است‪ ،‬حافظه محلی میگوییم‪ .‬که توسط‬
‫خطسیرهای ‪SIMD‬ی داخل یک پردازنده ‪SIMD‬ی چندنخ به اشتراک گذاشته میشود‪ ،‬اما بین پردازندههای‬
‫‪SIMD‬ی چندنخی مشترک نیست‪ .‬پردازنده ‪SIMD‬ی چندنخی بطور پویا بخشی از حافظه محلی را به بلوک نخ‬
‫بعد از تولید آن اختصاص میدهد و وقتیکه همه نخهای بلوک نخ خارج میشوند حافظه را آزاد میکند‪ .‬این قسمت‬
‫حافظه محلی برای بلوک نخ اختصاصی است‪.‬‬
‫‪| 455‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫در انتها به ‪ off-chip DRAM‬که توسط همه ‪ GPU‬و همه بلوکهای نخ مشترک است حافظه ‪ GPU‬میگوییم‪.‬‬
‫مثالً ضرب بردار فقط از حافظه ‪ GPU‬استفاده میکند‪.‬‬

‫شکل ‪ :10-8‬ساختارهای حافظه ‪ .GPU‬حافظه ‪ GPU‬توسط همه گریدها مشترک است (حلقههای برداری شده)‪ ،‬حافظه محلی‬
‫توسط همه نخهای دستورات ‪ SIMD‬در داخل یک بلوک نخ مشترک است‪ ،‬و حافظه خصوصی مختص یک نخ ‪ CUDA‬است‪.‬‬

‫پردازنده سیستم‪ ،‬که به آن میزبان میگویند‪ ،‬میتواند از‪/‬به حافظه ‪ GPU‬خوانده یا بنویسد‪ .‬حافظه محلی برای‬
‫میزبان قابل دسترس نیست زیرا خصوصی هر پردازنده ‪SIMD‬ی چندنخ است‪ .‬حافظه های خصوصی نیز برای‬
‫میزبان قابل دسترس نیستند‪.‬‬
‫به جای تکیه بر حافظههای نهان بزرگ که همه مجموعه کاری یک کاربرد را در برمیگیرند‪GPU ،‬ها از حافظههای‬
‫نهان کوچکتر استفاده میکنند و روی چندنخ کردن گسترده نخهای دستورات ‪ SIMD‬تکیه میکنند تا تأخیر طوالنی‬
‫‪ DRAM‬را مخفی کنند‪ ،‬زیرا مجموعه کاریشان میتواند صدها مگابایت باشد‪ .‬با استفاده از چندنخی برای مخفی‬
‫کردن تأخیر ‪ ، DRAM‬سطح تراشه استفاده شده برای حافظه نهان در پردازندههای سیستم برای منابع محاسباتی‬
‫و تعداد زیاد ثباتها برای نگهداری وضعیت نخهای زیاد دستورات ‪ SIMD‬صرف میشود‪ .‬در مقایسه‪ ،‬همانطور که‬
‫در باال توضیح داده شد‪ ،‬بار کردن و ذخیره سازی برداری تأخیر را بین تعداد زیاد عناصر مستهلک میکند‪ ،‬زیرا فقط‬
‫یک تأخیر را تحمل میکند و بقیه دسترسیها خطلوله میشوند‪.‬‬
‫با وجود اینکه تأخیر حافظه در فلسفه فوق مخفی میشود‪ ،‬اما در ‪ GPU‬ها و پردازندههای برداری اخیر حافظه نهان‬
‫اضافه شده است‪ .‬مثالً‪ ،‬در معماری ‪ Fermi‬اخیر حافظه نهان اضافه کردهاند تا تقاضای حافظه ‪ GPU‬را کاهش‬
‫دهند یا تأخیراتی که توسط چندنخی قابل اختفا نیستند را پوشش دهند‪ .‬بنابراین حافظه نهان برای حافظه محلی‬
‫برای فریمهای پشته‪ ،‬فراخوانی های تابعی‪ ،‬و کمبود ثبات مناسب است زیرا موقع فراخوانی تابع‪ ،‬تأخیر مهم است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 456‬‬

‫همچنین حافظههای نهان در مصرف انرژی صرفه جویی میکنند زیرا دسترسیهای حافظه نهان روی تراشه انرژی‬
‫کمتری از چندین دسترسی به تراشههای ‪ DRAM‬خارجی صرف میکنند‪.‬‬

‫ابداعات جدید در معماری ‪Fermi GPU‬‬


‫پردازنده ‪SIMD‬ی چندنخی ‪ Fermi‬از ورژن ساده آن در شکل ‪ 7-8‬پیچیدهتر است‪ .‬برای افزایش بهرهوری‬
‫سخت افزار‪ ،‬هر پردازنده ‪ SIMD‬دو زمانبند نخ ‪ SIMD‬و دو واحد ارسال دستور دارد‪ .‬دو زمانبند نخ ‪ SIMD‬دو نخ‬
‫از دستورات ‪ SIMD‬را انتخاب میکنند و یک دستور از هر کدام را به دو مجموعهی ‪ 16‬خط سیر ‪16 ،SIMD‬‬
‫واحد ‪ ،load/store‬یا ‪ 4‬واحد عملیاتی خاص منتشر میکنند‪ .‬بنابراین هر دو پالس ساعت دو نخ از دستورات‬
‫‪ SIMD‬به هر یک از این مجموعه ها زمانبندی میشوند‪ .‬چون نخها مستقل هستند‪ ،‬نیازی به چک کردن وابستگی‪-‬‬
‫های داده در رشته دستور نیست‪ .‬این ابداع مشابه یک پردازنده برداری چندنخی است که میتواند دستورات برداری‬
‫را از دو نخ مستقل منتشر کند‪.‬‬
‫شکل ‪ 11-8‬انتشار دستورات زمانبند دوگانه را نشان میدهد و شکل ‪ 12-8‬بلوک دیاگرام پردازنده ‪SIMD‬ی چند‬
‫نخی یک ‪ Fermi GPU‬را نشان میدهد‪.‬‬

‫شکل ‪ :11-8‬بلوک دیاگرام دو زمانبند نخ ‪SIMD‬ی ‪.Fermi‬‬

‫‪ Fermi‬چندین ابداع زیر را نسبت به نسلهای قبلی ‪GPU‬ها معرفی کرد‪:‬‬


‫• ریاضیات ممیز شناور با دقت‪-‬مضاعف سریع‪ Fermi -‬سرعت محاسبات دقت‪-‬مضاعف را دو برابر دقت‬
‫تک کرد در حالیکه در ‪ Tesla‬ده برابر بود‪ .‬بنابراین هر جا نیاز به دقت بیشتر بود از دقت مضاعف استفاده‬
‫کرد بدون نگرانی زیاد راجع به کند شدن محاسبات‪ .‬کارایی حداکثر دقت مضاعف از ‪78 GFLOP/sec‬‬
‫در نسلهای قدیم ‪ GPU‬به ‪ 515 GFLOP/sec‬برای دستورات ضرب‪-‬جمع رسید‪.‬‬
‫• حافظههای نهان برای حافظه ‪ -GPU‬در حالیکه فلسفه ‪ GPU‬داشتن تعداد کافی نخ است تا تأخیر‬
‫‪ DRAM‬مخفی شود‪ ،‬متغیرهایی مثل متغیرهای محلی وجود دارند که بین نخها مورد نیاز هستند‪.‬‬
‫‪ Fermi‬هم حافظه نهان داده ‪ L1‬هم حافظه نهان دستورالعمل ‪ L2‬برای هر پردازنده ‪SIMD‬ی‬
‫‪| 457‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫چندنخی دارد و یک حافظه نهان ‪ 768KB L2‬مشترک بین همه پردازندههای ‪SIMD‬ی چندنخی‬
‫داخل ‪ GPU‬دارد‪ .‬این هم باعث کاهش فشار پهنای باند حافظه ‪ GPU‬و هم کاهش مصرف انرژی‬
‫میشود‪.‬‬
‫آدرس ‪-64‬بیتی و فضای آدرس متحدالشکل برای همه حافظههای ‪ -GPU‬این ابداع استفاده از اشاره‪-‬‬ ‫•‬
‫گرهای مورد نیاز در ‪ C++, C‬را ساده میکند‪.‬‬
‫کدهای تصحیح خطا برای تشخیص و تصحیح خطاها در حافظه و ثباتها‪.‬‬ ‫•‬

‫شکل ‪ :12-8‬بلوک دیاگرام پردازنده ‪SIMD‬ی چندنخی یک ‪ .Fermi GPU‬هر خط سیر ‪ SIMD‬یک واحد ممیز شناور خط لوله‬
‫شده‪ ،‬یک واحد صحیح خط لوله شده‪ ،‬منطقهایی برای ارسال دستورات و عملوندهایی برای این واحدها‪ ،‬و یک صف برای نگهداری‬
‫نتیجه دارد‪ .‬چهار واحد عملیاتی خاص )‪ (SFUs‬توابعی مثل مجذور مربع‪ ،‬معکوس‪ ،‬سینوس و کسینوس را محاسبه میکنند‪.‬‬

‫تعویض متن سریعتر‪ Fermi -‬پشتیبانی سختافزاری برای تعویض متن سریعتر دارد‪ Fermi .‬میتواند‬ ‫•‬
‫در کمتر از ‪ 25‬میکروثانیه سوئیچ کند که ‪ 10‬برابر سریعتر از توان نسلهای قبلی است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 458‬‬

‫دستورات اتمیک سریعتر‪ -‬این دستورات ابتدا در معماری ‪ Tesla‬معرفی شدند‪ Fermi ،‬کارایی دستورات‬ ‫•‬
‫اتمیک را به ‪ 5‬تا ‪ 20‬برابر تا چند میکروثانیه بهبود داد‪ .‬یک واحد سخت افزاری خاص مرتبط با حافظه‬
‫نهان ‪ ،L2‬نه داخل پردازندههای ‪SIMD‬ی چندنخی‪ ،‬دستورات اتمیک را مدیریت میکنند‪.‬‬

‫شباهتها و تفاوتها بین معماریهای برداری و ‪GPU‬ها‬


‫همانطور که دیدیم تعداد زیادی شباهت بین معماریهای برداری و ‪ GPU‬وجود دارد‪ .‬با توجه به این شباهتها‬
‫ممکن است فرد فکر کند چرا ‪GPU‬های جدید ایجاد میشوند‪ .‬چون هر دو معماری برای اجرای برنامههای موازات‬
‫سطح داده طراحی شدهاند‪ ،‬اما مسیرهای گوناگونی را طی میکنند‪ ،‬این مقایسه عمقی باعث میشود فهم بهتری از‬
‫آنچه که یک سخت افزار ‪ DLP‬نیاز دارد داشته باشیم‪ .‬جدول ‪ 7-8‬ابتدا اصطالحات برداری را نشان میدهد و سپس‬
‫معادل آنها را در ‪ GPU‬معرفی میکند‪.‬‬

‫یک پردازنده ‪ SIMD‬شبیه یک پردازنده برداری است‪ .‬پردازندههای چندگانه ‪ SIMD‬در یک ‪ GPU‬شبیه هسته‪-‬‬
‫های ‪ MIMD‬مستقل کار میکنند مثل اکثر کامپیوترهای برداری که چند پردازنده برداری دارند‪ .‬در اینجا‬
‫‪ NVIDIA GTX 480‬را به عنوان یک ماشین ‪-15‬هستهای با سخت افزاری که چندنخی را پشتیبانی میکند و‬
‫هر هسته ‪ 16‬خط سیر دارد در نظر میگیریم‪ .‬بزرگترین تفاوت‪ ،‬چندنخی است که پایه ‪GPU‬ها میباشد و در‬
‫پردازندههای برداری وجود ندارد‪.‬‬
‫با مشاهده ثباتها در دو معماری‪ ،‬فایل ثبات ‪ VMIPS‬کل بردار را نگه میدارد یعنی یک بلوک پیوسته از ‪ 64‬عدد‬
‫اعشاری دقت مضاعف است‪ .‬در مقایسه‪ ،‬یک بردار تک در یک ‪ GPU‬بین ثباتهای همه خط سیرهای ‪SIMD‬‬
‫توزیع میشود‪ .‬یک پردازنده ‪ 8 VMIPS‬ثبات برداری با ‪ 64‬عنصر دارد‪ ،‬یعنی در کل ‪ 512‬عنصر دارد‪ .‬یک نخ از‬
‫دستورات ‪ SIMD‬در ‪ GPU‬تا ‪ 64‬ثبات با ‪ 32‬عنصر یعنی ‪ 2048‬عنصر دارد‪ .‬این ثباتهای فوقالعاده زیاد ‪GPU‬‬
‫چندنخی را پشتیبانی میکنند‪.‬‬
‫شکل ‪ 13-8‬یک بلوک دیاگرام از واحدهای اجرایی یک پردازنده برداری در سمت چپ و یک پردازنده ‪SIMD‬‬
‫چندنخی از یک ‪ GPU‬در سمت راست را نشان میدهد‪ .‬برای آموزش بهتر فرض میکنیم پردازنده برداری چهار‬
‫خط سیر دارد و پردازنده ‪SIMD‬ی چندنخی نیز چهار خط سیر ‪ SIMD‬دارد‪ .‬این شکل نشان میدهد که چهار خط‬
‫سیر ‪ SIMD‬مشابه چهار خط سیر واحد برداری عمل میکنند و یک پردازنده ‪ SIMD‬خیلی شبیه یک پردازنده‬
‫برداری است‪.‬‬
‫در واقعیت تعداد خط سیرهای بسیار بیشتری در ‪ GPU‬وجود دارد‪ ،‬بنابراین چایم در ‪ GPU‬کوتاهتر است‪ .‬در‬
‫حالیکه یک پردازنده برداری ‪ 2‬تا ‪ 8‬خط سیر دارد و طول بردار ‪ 32‬است که باعث میشود چایم ‪ 4‬تا ‪ 16‬پالس ساعت‬
‫شود‪ ،‬یک پردازنده ‪SIMD‬ی چندنخی ممکن است ‪ 8‬تا ‪ 16‬خط سیر داشته باشد‪ .‬این تفاوت علت استفاده از‬
‫پردازنده ‪ SIMD‬است‪.‬‬
‫‪| 459‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫اصطالح ‪CUDA/NVIDI‬‬ ‫اصطالح‬


‫توضیح‬ ‫نوع‬
‫‪ GPU‬معادل‬ ‫برداری‬
‫حلقه‬

‫تجرید برنامه‬
‫مفاهیم مشابه هستند البته ‪ GPU‬اصطالحات کمتری استفاده میکند‪.‬‬ ‫گرید‬ ‫برداری‬
‫شده‬
‫چون یک دستور برداری فقط دو سیکل در ‪ Fermi‬و چهار سیکل در‬
‫‪---‬‬ ‫چایم‬
‫‪ Tesla‬میگیرد تا کامل شود‪ ،‬یک چایم در ‪GPU‬ها کوتاه است‪.‬‬
‫یک دستور ‪ PTX‬از یک نخ ‪ SIMD‬به همه خط سیرهای ‪SIMD‬‬ ‫دستور‬
‫دستور ‪PTX‬‬
‫پخش میشود‪ ،‬مشابه یک دستور برداری است‪.‬‬ ‫برداری‬
‫همه بارکردنها و ذخیره کردنهای ‪ GPU‬گردآوری و پخش هستند‪،‬‬ ‫‪ load/store‬سراسری‬ ‫گردآوری‪/‬‬

‫شیء ماشین‬
‫ولی هر خط سیر ‪ SIMD‬یک آدرس منحصر میفرستد‪.‬‬ ‫(‪)ld.global,st.global‬‬ ‫پخش‬
‫ثباتهای پوشش برداری صریحاً قسمتی از حالت برداری هستند‪ ،‬در‬
‫حالیکه ثباتهای پوشش ‪ GPU‬در داخل سخت افزار هستند‪.‬سخت‬ ‫ثباتهای پیشبینی و ثباتهای‬ ‫ثباتهای‬
‫افزار شرطی ‪ GPU‬یک خصوصیت جدید ماورای ثباتهای پیشبینی‬ ‫پوشش داخلی‬ ‫پوشش‬
‫به منظور مدیریت پویای پوششها اضافه میکند‪.‬‬
‫اینها مشابه هستند‪ ،‬اما پردازندههای ‪ SIMD‬متمایل به داشتن تعداد‬
‫زیادی خط سیر هستند‪ ،‬چند پالس ساعت به ازای هر خط سیر تا کامل‬
‫شدن یک بردار میگیرند‪ ،‬در حالیکه معماریهای برداری تعداد کمی‬ ‫پردازنده‬
‫پردازنده ‪SIMD‬ی چندنخی‬
‫خط سیر دارند و برای تکمیل شدن یک بردار تعداد زیادی پالس ساعت‬ ‫برداری‬
‫میگیرند‪ .‬آنها همچنین چندنخی هستند در حالیکه بردارها معموالً‬
‫نیستند‪.‬‬
‫در پردازنده ‪SIMD‬ی چندنخ زمانبند بلوک نخ است که بلوکهای نخ‬
‫را به آن اختصاص میدهد‪ ،‬در حالیکه ‪ GPU‬عملیات برداری وجود‬ ‫پردازنده‬

‫سخت افزار پردازش و حافظه‬


‫زمانبند بلوک نخ‬
‫ندارند و استراید‪-‬واحد یا دستورات انتقال داده استراید که پردازندههای‬ ‫کنترل‬
‫کنترل اغلب آنرا فراهم میکنند وجود ندارد‬
‫به خاطر کمبود حافظه مشترک و تأخیر باال برای ارتباط روی یک‬
‫گذرگاه ‪ 1000( PCI‬پالس ساعت)‪ ،‬پردازنده سیستم در یک ‪ GPU‬به‬ ‫پردازنده‬
‫پردازنده سیستم‬
‫ندرت روی کارهای مشابهی میگیرد که یک پردازنده اسکالر در یک‬ ‫اسکالر‬
‫معماری برداری انجام میدهد‪.‬‬
‫خط سیر‬
‫هردو واحدهای عملیاتی با ثبات هستند‪.‬‬ ‫خط سیر ‪SIMD‬‬
‫برداری‬
‫معادل یک ثبات برداری مشابه ثبات در همه ‪ 32‬خط سیر ‪SIMD‬ی‬
‫یک پردازنده ‪SIMD‬ی چندنخی که یک نخ از دستورات ‪ SIMD‬را‬ ‫ثباتهای‬
‫ثباتهای خط سیر ‪SIMD‬‬
‫اجرا میکند میباشد‪ .‬تعداد ثباتها به ازای هر نخ ‪ SIMD‬منعطف است‪،‬‬ ‫برداری‬
‫اما حداکثر ‪ 64‬است‪ ،‬بنابراین حداکثر تعداد ثباتهای برداری ‪ 64‬است‪.‬‬
‫حافظه‬
‫حافظه برای ‪ GPU‬در مقایسه با حافظه سیستم در حالت برداری‪.‬‬ ‫حافظه ‪GPU‬‬
‫اصلی‬
‫جدول ‪ :7-8‬معادل ‪GPU‬ی اصطالحات برداری‬
‫کانون نشر علوم‬ ‫‪| 460‬‬

‫شکل ‪ :13-8‬یک پردازنده برداری با چهار خط سیر در سمت چپ و یک پردازنده ‪SIMD‬ی چندنخ از یک ‪ GPU‬با چهار خط سیر‬
‫‪ SIMD‬در سمت راست‪GPU( .‬ها معموالً ‪ 8‬تا ‪ 16‬خط سیر ‪ SIMD‬دارند)‪ .‬پردازنده کنترل عملوندهای اسکالر را برای عملیات‬
‫برداری‪-‬اسکالر تهیه میکند‪ ،‬آدرس را برای دسترسیهای استراید واحد و غیر واحد به حافظه افزایش میدهد‪ ،‬و سایر عملیات محاسباتی‬
‫را انجام میدهد‪ .‬حداکثر کارایی حافظه در ‪ GPU‬فقط زمانی اتفاق میافتد که واحد درهم آمیز آدرس بتواند آدرسهای محلی را کشف‬
‫کند‪ .‬بطور مشابه‪ ،‬کارایی محاسباتی حداکثر زمانی اتفاق میافتد که همه بیتهای پوشش داخلی مشابه باشند‪ .‬نکته اینکه پردازنده‬
‫‪ SIMD‬به ازای هر نخ ‪ SIMD‬یک ‪ PC‬دارد تا به چندنخی کمک کند‪.‬‬

‫در مقایسه با دستورات دسترسی حافظه در دو معماری‪ ،‬همه بار کردنهای ‪ GPU‬دستورات گردآوری هستند و همه‬
‫ذخیره کردنهای ‪ GPU‬دستورات پخش هستند‪ .‬اگر آدرسهای دادهی نخهای ‪ CUDA‬به آدرسهای نزدیک‬
‫اشاره کنند که در یک بلوک حافظه‪/‬حافظه نهان مشابه در یک زمان قرار داشته باشند‪ ،‬واحد درهمآمیز آدرس‪1‬‬

‫‪ GPU‬پهنای باند حافظه باالیی را تضمین میکند‪ .‬دستورات ذخیره و بارکردن استراید‪-‬واحد صریح از معماریهای‬
‫برداری در مقایسه با استراید واحد ضمنیِ برنامهنویسی ‪ GPU‬باعث میشود که برنامهنویس برای نوشتن کد کارا‬
‫راجع به عملیات ‪ SIMD‬فکر کند‪ .‬همانطور که نخهای ‪ CUDA‬آدرسهای خودشان را تولید میکنند‪ ،‬بردارهای‬
‫آدرس در هر دو معماریهای برداری و ‪ GPU‬یافت میشوند‪.‬‬

‫‪1‬‬
‫‪Address Coalescing Unit‬‬
‫‪| 461‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫دو معماری روشهای متفاوتی را برای مخفی کردن تأخیر حافظه استفاده میکنند‪ .‬معماریهای برداری آنرا بین‬
‫همه عناصر بردار با خطلوله کردن عمیق دسترسی مستهلک میکنند بنابراین شما هزینه تأخیر را فقط برای یک‬
‫‪ load‬یا ‪ store‬پرداخت خواهید کرد‪ .‬بنابراین‪ load , store ،‬برداری شبیه انتقال بلوک بین حافظه و ثباتهای‬
‫برداری است‪ .‬در مقایسه‪GPU ،‬ها تأخیر حافظه را با استفاده از چندنخی کردن مخفی میکنند‪( .‬بعضی تحقیقها‬
‫روی اضافه کردن چندنخی در معماریهای برداری سرمایه گذاری میکنند تا از هر دو مزیت استفاده کنند‪).‬‬

‫برای دستورات پرش شرطی‪ ،‬هر دو معماری آنها را با استفاده از ثباتهای پوشش پیادهسازی میکنند‪ .‬هر دو مسیر‬
‫پرش شرطی‪ ،‬زمان و‪/‬یا فضا اشغال میکنند حتی اگر نتیجهای ذخیره نکنند‪ .‬تفاوت این است که کامپایلرهای‬
‫برداری ثباتهای پوشش را صریحاً در نرمافزار مدیریت میکنند درحالیکه سخت افزار ‪ GPU‬و اسمبلر آنها را‬
‫بصورت ضمنی با استفاده از نشانههای همزمانی پرش و یک پشته داخلی برای ذخیره‪ ،‬تکمیل و بازیابی پوششها‬
‫مدیریت میکنند‪.‬‬

‫همانطور که توضیح داده شد‪ ،‬مکانیزم پرش شرطیِ ‪ GPU‬مشکل محدوده کاوی معماریهای برداری را به زیبایی‬
‫مدیریت میکند‪ .‬وقتیکه طول بردار در زمان اجرا ناشناخته باشد‪ ،‬برنامه باید ‪ modulo‬طول بردار کاربردی و‬
‫حداکثر طول بردار را محاسبه کند و آنرا در ثبات طول بردار ذخیره کند‪ .‬سپس حلقه محدوده کاوی شده ثبات طول‬
‫بردار را به حداکثر طول بردار برای باقیمانده حلقه ریست میکند‪ .‬این حالت برای ‪GPU‬ها سادهتر است زیرا فقط‬
‫حلقه را تا زمانیکه همه خطسیرهای ‪ SIMD‬به کران حلقه برسند تکرار میکند‪ .‬در آخرین تکرار‪ ،‬بعضی خطسیرهای‬
‫‪ SIMD‬پوشش داده میشوند و بعد از خاتمه حلقه بازیابی میشوند‪.‬‬

‫پردازندهی کنترلِ یک کامپیوتر برداری نقش مهمی در اجرای دستورات برداری بازی میکند‪ .‬این پردازنده عملیات‬
‫را به همه خط سیرهای برداری و یک مقدار ثبات اسکالر را برای عملیات برداری‪-‬اسکالر پخش میکند‪ .‬این پردازنده‬
‫همچنین محاسبات ضمنی را انجام میدهد که در ‪GPU‬ها صریح هستند‪ ،‬مثل افزایش آدرسهای حافظه برای‬
‫‪ load‬و ‪store‬های استراید‪-‬واحد و غیرواحد‪ .‬پردازندهی کنترل در ‪ GPU‬وجود ندارد‪ .‬نزدیکترین قیاس زمانبند‬
‫بلوک نخ است که بلوکهای نخ (بدنه حلقه برداری) را به پردازندههای ‪SIMD‬ی چندنخی انتساب میدهد‪.‬‬
‫مکانیزمهای سختافزاری زمان اجرا در یک ‪ GPU‬که هم آدرسها را تولید میکنند و اگر همسایه باشند آنرا در‬
‫حافظه نهان ذخیره میکنند‪ ،‬و در بسیاری از کاربردهای ‪ DLP‬رایج هستند‪ ،‬کارامدی توان کمتری از یک پردازنده‬
‫کنترل دارند‪.‬‬

‫پردازنده اسکالر در یک کامپیوتر برداری دستورات اسکالرِ یک برنامه برداری را اجرا میکند؛ یعنی عملیاتی که اجرای‬
‫آنها در واحد برداری کند است را انجام میدهد‪ .‬هرچندکه پردازنده سیستم که مرتبط با یک ‪ GPU‬است نزدیکترین‬
‫قیاس با یک پردازنده اسکالر در یک معماری برداری است‪ ،‬فضاهای آدرس مجزا به اضافه انتقال روی یک گذرگاه‬
‫‪ PCI‬به معنی هزاران سیکل سربار برای استفاده آنها با یکدیگر میباشد‪ .‬پردازنده اسکالر از پردازنده برداری برای‬
‫محاسبات ممیز‪ -‬شناور در یک کامپیوتر برداری کندتر است‪ ،‬نه به اندازه نسبت پردازنده سیستم در مقایسه با پردازنده‬
‫‪SIMD‬ی چندنخی‪.‬‬
‫کانون نشر علوم‬ ‫‪| 462‬‬

‫بنابراین‪ ،‬هر واحد برداری در یک ‪ GPU‬باید محاسباتی که شما انتظار دارید روی یک پردازنده اسکالر در یک‬
‫کامپیوتر برداری انجام شود را انجام دهد‪ .‬اگر پردازندههای سیستم با ‪GPU‬ها بطور ترکیبیتری در آینده استفاده‬
‫شوند‪ ،‬پردازنده سیستم میتواند نقشی مشابه پردازندههای اسکالر برای معماریهای برداری و ‪SIMD‬چندرسانهای‬
‫بازی کنند‪.‬‬

‫شباهتها و تفاوتهای بین کامپیوترهای ‪ SIMD‬چندرسانهای و ‪GPU‬ها‬


‫در سطح باال‪ ،‬کامپیوترهای چندهستهای با توسعه دستور ‪SIMD‬ی چندرسانهای شباهتهایی با ‪GPU‬ها دارند‪.‬‬
‫خالصه شباهتها و تفاوتها درجدول ‪ 8-8‬ارائه شده است‪.‬‬
‫هر دو چندپردازنده هستند که پردازندهها چندین خط سیر ‪ SIMD‬استفاده میکنند‪ ،‬البته ‪GPU‬ها پردازندههای‬
‫بیشتر و خط سیرهای بسیار بیشتری دارند‪ .‬هر دو برای بهبود بهرهوری پردازنده سخت افزار چندنخی استفاده‬
‫میکنند‪ ،‬هرچند که ‪GPU‬ها پشتیبانی بیشتری برای نخهای بسیار بیشتری دارند‪ .‬ابداعات جدید در ‪GPU‬ها به‬
‫این معنی است که هر دو نرخ کارایی مشابهی بین ریاضیات ممیز شناور دقت تک و دقت مضاعف دارند‪ .‬هر دو از‬
‫حافظه نهان استفاده میکنند هرچند که ‪GPU‬ها حافظه نهان کوچکتری استفاده میکنند و کامپیوترهای چندهسته‪-‬‬
‫ای حافظههای نهان چندسطحه بزرگی استفاده میکنند و سعی میکنند کل مجموعه کاری را دربرگیرند‪ .‬هر دو‬
‫فضای آدرس ‪-64‬بیتی استفاده میکنند‪ ،‬هرچندکه حافظه اصلی فیزیکی در ‪GPU‬ها خیلی کوچکتر است‪ .‬در حالیکه‬
‫‪GPU‬ها حفاظت حافظه را در سطح صفحه پشتیبانی میکنند‪ ،‬اما از صفحه بندی براساس تقاضا پشتیبانی نمیکنند‪.‬‬
‫‪GPU‬‬ ‫چندهستهای با ‪SIMD‬‬ ‫خصوصیت‬
‫‪ 8‬تا ‪16‬‬ ‫‪ 4‬تا ‪8‬‬ ‫پردازندههای ‪SIMD‬‬
‫‪ 8‬تا ‪16‬‬ ‫‪ 2‬تا ‪4‬‬ ‫پردازنده‪/‬خطسیر ‪SIMD‬‬
‫‪ 16‬تا ‪32‬‬ ‫‪ 2‬تا ‪4‬‬ ‫پشتیبانی سخت افزاری چندنخی برای نخهای ‪SIMD‬‬
‫‪2:1‬‬ ‫‪2:1‬‬ ‫نرخ کارایی دقت تک به دقت مضاعف‬
‫‪0.75MB‬‬ ‫‪8MB‬‬ ‫بزرگترین اندازه حافظه نهان‬
‫‪64-bit‬‬ ‫‪64-bit‬‬ ‫اندازه آدرس حافظه اصلی‬
‫‪4 to 6GB‬‬ ‫‪8GB to 256GB‬‬ ‫اندازه حافظه اصلی‬
‫بله‬ ‫بله‬ ‫حفاظت حافظه در سطح صفحه‬
‫خیر‬ ‫بله‬ ‫صفحه بندی براساس تقاضا‬
‫خیر‬ ‫بله‬ ‫تجمع پردازنده اسکالر‪/‬پردازنده ‪SIMD‬‬
‫خیر‬ ‫بله‬ ‫همبستگی حافظه نهان‬
‫جدول ‪ :8-8‬شباهتها و تفاوتهای بین چندهستهای با توسعه ‪SIMD‬ی چند رسانهای و ‪GPU‬های اخیر‬

‫عالوه بر تفاوتهای عددی بزرگ در پردازندهها‪ ،‬خط سیرهای ‪ ،SIMD‬پشتیبانی نخ سخت افزاری‪ ،‬و اندازه حافظه‬
‫نهان‪ ،‬تفاوتهای معماری بسیاری نیز وجود دارند‪ .‬پردازنده اسکالر و دستورات ‪SIMD‬ی چندرسانهای در کامپیوترها‬
‫سنتی کامالً با هم مجتمع شدهاند‪ ،‬در‪GPU‬ها توسط یک گذرگاه ‪ I/O‬از هم جدا شدهاند‪ ،‬و حتی حافظههای اصلی‬
‫مجزایی دارند‪ .‬پردازندههای ‪SIMD‬ی چندگانه در یک ‪ GPU‬از یک فضای آدرس استفاده میکنند‪ ،‬اما حافظههای‬
‫‪| 463‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫نهان همانند کامپیوترهای چندهستهای سنتی‪ ،‬همبسته نیستند‪ .‬برخالف ‪GPU‬ها دستورات ‪SIMD‬ی چندرسانهای‬
‫از دسترسیهای حافظه گردآوری‪-‬پخش پشتیبانی نمیکنند‪.‬‬
‫‪ -5-8‬تشخیص و توسعه موازات سطح‪-‬حلقه‬
‫حلقهها در برنامهها سرچشمه بسیاری از انواع موازات میباشند که ما در فصلهای قبل بحث کردیم‪ .‬در این بخش‪،‬‬
‫تکنولوژی کامپایلر برای استخراج مقدار موازاتی که میتوان در یک برنامه بهره برداری کرد و همچنین پشتیبانی‬
‫سخت افزاری برای این روشهای کامپایلری بحث میشوند‪ .‬دقیقاً تعریف میکنیم که چه موقع یک حلقه موازی‬
‫است (یا قابل برداری شدن است)‪ ،‬چگونه وابستگی میتواند از موازات یک حلقه جلوگیری کند‪ ،‬و چه روشهایی‬
‫برای حذف بعضی از انواع وابستگی وجود دارد‪ .‬پیدا کردن و مدیریت موازات سطح‪-‬حلقه برای بهرهبرداری از هر‬
‫دوی ‪ DLP‬و ‪ TLP‬بحرانی است‪.‬‬

‫موازات سطح حلقه معموالً در سطح منبع آنالیز میشود در حالیکه اکثر آنالیزهای ‪ ILP‬وقتی انجام میشود که‬
‫دستورات توسط کامپایلر تولید میشوند‪ .‬آنالیز سطح‪-‬حلقه شامل تشخیص اینکه چه وابستگیهایی بین عملوندها‬
‫در تکرارهای حلقه وجود دارد میشود‪ .‬در حال حاضر روی وابستگی داده تمرکز میکنیم که وقتیکه یک عملوند‬
‫در یک نقطه نوشته میشود و در نقطه دیگری خوانده میشود ایجاد میشود‪ .‬وابستگیهای نام نیز وجود دارد که‬
‫توسط روشهای تغییر نام که قبالً بحث کردیم حذف میشود‪.‬‬

‫آنالیز موازات سطح‪-‬حلقه روی تشخیص اینکه چه وقت دسترسیهای داده در تکرارهای بعدی وابسته به مقادیر‬
‫داده در تکرارهای اخیر است میباشد‪ ،‬به چنین وابستگیهایی وابستگی حملشده‪-‬حلقه میگویند‪ .‬اکثر مثالهایی‬
‫که تاکنون بررسی کردیم وابستگیهای حملشده‪-‬حلقه نداشتند و بنابراین در سطح‪-‬حلقه موازی بودند‪ .‬برای‬
‫مشاهده اینکه یک حلقه موازی است‪ ،‬کد زیر را در نظر بگیرید‪:‬‬
‫)‪for(i=999;i>=0; i=i-1‬‬
‫;‪x[i]=x[i]+s‬‬
‫در این حلقه‪ ،‬دو استفاده ]‪ x[i‬وابسته اند‪ ،‬اما این وابستگی در داخل یک تکرار است و در حلقه حمل (منتقل) نشده‬
‫است‪ .‬یک وابستگی حملشده‪-‬حلقه بین استفادههای متوالی ‪ i‬در تکرارهای مختلف وجود دارد‪ ،‬اما این وابستگی‬
‫شامل یک متغیر اندیس است و به راحتی قابل تشخیص و قابل حذف است‪ .‬روش حذف وابستگی متغیر اندیس را‬
‫با بازکردن حلقه در فصل ‪ 6‬دیدیم و در این فصل مثال دیگری را ارائه خواهیم داد‪.‬‬

‫چون یافتن موازات سطح حلقه شامل تشخیص ساختارهایی مثل حلقهها‪ ،‬مراجعات آرایه‪ ،‬و محاسبه متغیر اندیس‪،‬‬
‫میباشد کامپایلر می تواند این آنالیز را به راحتی در سطح کد منبع انجام دهد نه در سطح کد‪-‬ماشین‪ .‬اجازه دهید‬
‫مثال پیچیدهتری مطرح کنیم‪.‬‬
‫کانون نشر علوم‬ ‫‪| 464‬‬

‫مثال ‪ :5-8‬به حلقه زیر دقت کنید‪:‬‬


‫{)‪For(i=0; i<100; i=i+1‬‬
‫;]‪A[i+1]=A[i]+C[i‬‬ ‫‪/*S1*/‬‬
‫;]‪B[i+1]=B[i]+A[i+1‬‬ ‫‪/*S2*/‬‬
‫}‬
‫فرض کنید ‪ A, B, C‬آرایههای غیر همپوش و مجزا هستند‪( .‬در عمل‪ ،‬آرایهها ممکن است گاهی اوقات مشابه یا‬
‫همپوش باشند‪ .‬زیرا آرایهها ممکن است به عنوان پارامتر به زیرروال دربرگیرنده حلقه ارسال شوند‪ ،‬تشخیص اینکه‬
‫چه موقع آرایهها ممکن است مشابه باشند یا همپوش نیارمند آنالیز پیچیده بین زیرورال در برنامه میباشد)‪ .‬وابستگی‪-‬‬
‫های داده بین عبارات ‪ S1‬و ‪ S2‬در حلقه چه هستند؟‬
‫دو نوع وابستگی متفاوت وجود دارد‪:‬‬
‫‪ S1 -1‬مقدار محاسبه شده توسط ‪ S1‬در تکرارهای قبلی را استفاده میکند‪ ،‬زیرا تکرار ‪ i‬مقدار ]‪ A[i+1‬را‬
‫محاسبه میکند‪ ،‬که در تکرار ‪ i+1‬خوانده میشود‪ .‬این مسأله برای ‪ S2‬نیز برای ]‪ B[i‬و ]‪ B[i+1‬درست‬
‫است‪.‬‬
‫‪ S2 -2‬مقدار ]‪ A[i+1‬محاسبه شده توسط ‪ S1‬در همان تکرار را استفاده میکند‪.‬‬

‫این دو وابستگی ها متفاوتند و اثرات متفاوتی دارند‪ .‬برای مشاهده تفاوت آنها‪ ،‬اجازه دهید فرض کنیم فقط یکی از‬
‫این وابستگیها در هر لحظه وجود دارد‪ :‬چون وابستگی عبارت ‪ S1‬روی تکرار قبلی ‪ S1‬است‪ ،‬این وابستگی حمل‬
‫شده حلقه است‪ .‬این وابستگی مجبور میکند که تکرارهای متوالی این حلقه بصورت ترتیبی اجرا شوند‪.‬‬

‫وابستگی دوم (‪ S2‬وابسته به ‪ S1‬است) داخل یک تکرار است و حمل شده توسط حلقه نیست‪ .‬بنابراین‪ ،‬اگر این‬
‫تنها وابستگی باشد‪ ،‬چندین تکرار حلقه می توانند بصورت موازی اجرا شوند‪ ،‬و هر تکرار دستورات در یک حلقه به‬
‫ترتیب نگه داشته میشوند‪ .‬این نوع وابستگی را در فصل ‪ 6‬دیدیم که بازکردن حلقه قابلیت استخراج موازات را‬
‫داشت‪ .‬این وابستگیهای بین‪-‬حلقه‪ 1‬رایج هستند مثل مرتب سازی آرایهها‪.‬‬
‫همچنین این امکان وجود دارد که وابستگی حمل شده‪-‬حلقه داشته باشیم ولی از موازات جلوگیری نکند‪ ،‬به مثال‬
‫‪ 8-6‬دقت کنید‪.‬‬

‫مثال ‪ : 6-8‬به حلقه زیر دقت کنید‪:‬‬


‫{)‪for(i=0; i<100; i=i+1‬‬
‫;]‪A[i]=A[i]+B[i‬‬ ‫‪/*S1*/‬‬
‫;]‪B[i+1]=C[i]+D[i‬‬ ‫} ‪/*S2*/‬‬
‫وابستگیهای بین ‪ S1‬و ‪ S2‬چه هستند؟ آیا این حلقه موازی است؟ اگر نیست‪ ،‬چگونه آنرا میتوانیم موازی کنیم؟‪.‬‬
‫پاسخ‪ :‬عبارت ‪ S1‬مقدار منتسب شده در تکرار قبلی توسط عبارت ‪ S2‬را استفاده میکند‪ ،‬بنابراین یک وابستگی‬
‫حمل شده‪-‬حلقه بین ‪ S2‬و ‪ S1‬وجود دارد‪ .‬با وجود این وابستگی حملشده‪-‬حلقه‪ ،‬این حلقه میتواند موازی شود‪.‬‬

‫‪1‬‬
‫‪Intra-loop‬‬
‫‪| 465‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫برخالف حلقه قبلی‪ ،‬این وابستگی چرخشی نیست؛ هیچ عبارتی به خودش وابسته نیست؛ و هرچندکه ‪ S1‬به ‪S2‬‬
‫وابسته است اما ‪ S2‬به ‪ S1‬وابسته نیست‪ .‬یک حلقه میتواند موازی شود اگر بتواند بدون دور (سیکل) در وابستگیها‬
‫نوشته شود‪ ،‬زیرا عدم حضور سیکل به معنی این است که وابستگیها یک ترتیب جزئی در عبارات دارند‪.‬‬
‫هرچندکه هیچ وابستگی دوار در حلقه فوق وجود ندارد‪ ،‬باید برای تطابق به یک ترتیب جزئی تبدیل شود و موازات‬
‫آن استخراج شود‪ .‬دو مالحظه در این تبدیل بحرانی هستند‪:‬‬
‫‪ -1‬هیچ وابستگی از ‪ S1‬به ‪ S2‬وجود ندارد‪ .‬اگر اینچنین وابستگی میبود آنگاه وابستگی دوار میشد و حلقه‬
‫موازی نبود‪ .‬چون چنین وابستگی وجود ندارد‪ ،‬تعویض دو عبارت تأثیری روی اجرای ‪ S2‬ندارد‪.‬‬
‫‪ -2‬در اولین تکرار حلقه‪ ،‬عبارت ‪ S1‬وابسته به مقدار ]‪ B[0‬است که قبل از شروع حلقه محاسبه شده است‪.‬‬
‫این دو مالحظه به ما اجازه میدهد تا حلقه فوق را با کد زیر جایگزین کنیم‪:‬‬
‫;]‪A[0]=A[0]+B[0‬‬
‫{)‪for(i=0; i<99; i=i+1‬‬
‫;]‪B[i+1]=C[i]+D[i‬‬
‫;]‪A[i+1]=A[i+1]+B[i+1‬‬
‫}‬
‫;]‪B[100]=C[99]+D[99‬‬
‫وابستگی بین دو عبارت حملشده‪-‬حلقه نیستند‪ ،‬بطوریکه تکرارهای حلقه ممکن است همپوش شوند‪ ،‬اگر عبارت‬
‫در هر تکرار به ترتیب نگه داشته شوند‪.‬‬

‫بنابراین تجزیه تحلیل با یافتن همه وابستگیهای حمل شده‪-‬حلقه شروع میشود‪ .‬اگر آنالیز بگوید وابستگی ممکن‬
‫است موجود باشد‪ ،‬این اطالعات وابستگی نادرست خواهند بود‪ .‬به مثال زیر دقت کنید‪:‬‬
‫{)‪for(i=0;i<100; i=i+1‬‬
‫;]‪A[i]=B[i]+C[i‬‬
‫;]‪D[i]=A[i]*E[i‬‬
‫}‬
‫مراجعه دوم به ‪ A‬در این مثال نیازمند ترجمه به دستور ‪ load‬ندارد‪ ،‬زیرا میدانیم که مقدار توسط عبارت قبلی‬
‫محاسبه و ذخیره شده است‪ ،‬بنابراین مراجعه دوم به ‪ A‬به سادگی میتواند یک مراجعه به ثبات باشد که مقدار ‪A‬‬
‫در آن قرار دارد‪ .‬انجام این بهینه سازی نیازمند این است که بدانیم که دو مراجعه همیشه به آدرس مشابهی از حافظه‬
‫هستند و هیچ دسترسی تداخلی به مکان مشابه وجود ندارد‪ .‬به طور معمول‪ ،‬آنالیز در وابستگی داده فقط میگوید‬
‫که یک مراجعه ممکن است به دیگری وابسته باشد‪ ،‬آنالیز پیچیدهتری نیاز است تا مشخص کند که دو مراجعه به‬
‫دقیقاً آدرس یکسانی میباشند‪ .‬در مثال فوق‪ ،‬یک تجزیه تحلیل ساده کافی است زیرا که دو مراجعه در بلوک پایه‬
‫مشابهی هستند‪.‬‬

‫اغلب وابستگیهای حمل شده حلقه به شکل بازگشتی هستند‪ .‬یک بازگشت وقتی اتفاق میافتد که یک متغیر‬
‫براساس مقدار آن متغیر در تکرار قبلی تعریف شود‪ .‬مثل قطعه کد زیر‪:‬‬
‫{)‪for(i=1;i<100;i=i+1‬‬
‫کانون نشر علوم‬ ‫‪| 466‬‬

‫;]‪Y[i]=Y[i-1]+Y[i‬‬
‫}‬
‫تشخیص یک بازگشت به دو دلیل میتواند مهم باشد‪ :‬بعضی معماریها (باالخص کامپیوترهای برداری) پشتیبانی‬
‫خاصی برای اجرای بازگشت دارند و در یک متن ‪ ،ILP‬ممکن است هنوز هم بهرهبرداری از یک مقدار نسبتاً خوب‬
‫از موازات امکانپذیر باشد‪.‬‬

‫پیدا کردن وابستگیها‬


‫پیدا کردن وابستگیها در یک برنامه به دو دلیل مهم است‪ :‬تشخیص اینکه چه حلقهای ممکن است شامل موازات‬
‫باشد و حذف وابستگیهای نام‪ .‬پیچیدگی آنالیز وابستگی به خاطر ظهور آرایهها و اشارهگرها در زبانهایی مثل ‪C‬‬
‫یا ‪ C++‬یا ارسال پارامترها با‪-‬مرجع در فرترن بیشتر میشود‪ .‬چون مراجعات به متغیر اسکالر صریحاً به یک نام‬
‫اشاره میکند‪ ،‬به سادگی با نام مستعار قابل آنالیز است‪.‬‬

‫در کل چگونه کامپایلر وابستگیها را تشخیص میدهد؟ تقریباً همه الگوریتمهای آنالیز وابستگی روی این فرض‬
‫که اندیسهای آرایه نسبی هستند کار میکنند‪ .‬به عبارت سادهتر‪ ،‬یک اندیس آرایه یک‪-‬بعدی نسبی است اگر بتواند‬
‫به شکل ‪ a×i+b‬نوشته شود که ‪ a, b‬ثابت هستند و ‪ i‬متغیر اندیس حلقه است‪ .‬اندیس یک آرایه چندبعدی نسبی‬
‫است اگر اندیس هر بُعد آن نسبی باشد‪ .‬دسترسیهای آرایه خلوت‪ ،‬که معموالً به شکل ]]‪ x[y[i‬میباشد‪ ،‬یکی از‬
‫مثالهای دسترسیهای غیرنسبی است‪.‬‬
‫تشخیص اینکه چه وقت یک وابستگی بین دو مراجعه به آرایه مشابه در یک حلقه وجود دارد معادل تشخیص این‬
‫است که چه موقع دو تابع نسبی برای اندیسهای مختلف بین کرانهای حلقه مقدار مشابهی دارند‪ .‬به عنوان مثال‪،‬‬
‫فرض کنید که ما یک عنصر آرایه با مقدار اندیس ‪ a×i+b‬ذخیره کردهایم و از آرایه مشابهی با مقدار اندیس ‪c×i+d‬‬
‫بار کردهایم‪ ،‬که ‪ i‬متغیر اندیس حلقه‪ for-‬از ‪ m‬تا ‪ n‬میباشد‪ .‬یک وابستگی وجود دارد اگر دو شرط زیر برقرار‬
‫باشد‪:‬‬
‫‪ -1‬دو اندیس تکرار ‪ j,k‬وجود دارند که هردو در محدوده حلقه ‪ for‬میباشند که ‪.m≤j≤n, m≤k≤n‬‬
‫‪ -2‬حلقه در یک عنصر آرایه با اندیس ‪ a×j+b‬ذخیره میکند و بعداً از آرایه مشابه برداشت میکند با اندیس‬
‫‪ c×k+d‬که ‪.a×j+b=c×k+d‬‬
‫در کل‪ ،‬نمی توانیم تشخیص دهیم که چه موقع وابستگی در زمان کامپایل وجود دارد‪ .‬به عنوان مثال‪ ،‬مقادیر ‪a,b,c‬‬
‫و ‪ d‬ممکن است ناشناخته باشند (ممکن است مقادیر آرایه دیگری باشند)‪ ،‬که وجود وابستگی را غیرممکن میکند‪.‬‬
‫در حاالت دیگر‪ ،‬تست وابستگی ممکن است گران باشد و در زمان کامپایل قابل تصمیمگیری باشد‪ ،‬به عنوان مثال‪،‬‬
‫دسترسیها ممکن است وابسته به اندیسهای تکرارِ حلقههای تودرتو چندگانه باشد‪ .‬بسیاری از برنامهها اندیسهای‬
‫ساده دارند و ‪ a,b,c,d‬همه ثابت هستند‪ .‬برای این حاالت‪ ،‬تعبیه تستهای قابل قبول در زمان کامپایل برای‬
‫وابستگی ممکن است‪.‬‬
‫به عنوان یک مثال‪ ،‬یک تست ساده و کافی برای عدم حضور وابستگی‪ ،‬بزرگترین مقسومعلیه مشترک (‪)GCD‬‬
‫میباشد‪ .‬زیرا اگر یک وابستگی حملشده‪-‬حلقه وجود داشته باشد‪ ،‬آنگاه )‪ GCD(a,c‬باید بر )‪ (d-b‬تقسیم پذیر‬
‫‪| 467‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫باشد‪( .‬به یاد داشته باشید که یک عدد صحیح ‪ x‬بر عدد صحیح دیگر ‪ y‬قابل تقسیم است اگر یک خارج قسمت‬
‫صحیح وجود داشته باشد و باقیمانده موجود نباشد)‪.‬‬

‫مثال ‪ :7-8‬از تست ‪ GCD‬استفاده کنید و تشخیص دهید که آیا در حلقه زیر وابستگی وجود دارد‪:‬‬
‫{)‪For(i=0; i<100; i=i+1‬‬
‫;‪X[2*i+3]=X[2*i]*5.0‬‬
‫}‬
‫پاسخ‪ :‬با مقادیر ‪ GCD(a,c)=2 ، a=2, b=3,c=2, d=0‬و ‪ .d-b=-3‬بنابراین ‪ 3-‬بر ‪ 2‬قابل قسمت نیست‬
‫(‪ 3- ،2‬را تقسیم نمیکند) بنابراین وابستگی وجود ندارد‪.‬‬

‫تست ‪ GCD‬شرط کافی برای تضمین اینکه وابستگی وجود ندارد میباشد‪ ،‬اما حاالتی وجود دارند که تست ‪GCD‬‬
‫موفق است ولی وابستگی وجود ندارد‪ .‬این میتواند به خاطر این باشد که تست ‪ GCD‬کرانهای حلقه را مدنظر‬
‫قرار نمیدهد‪.‬‬

‫درکل‪ ،‬تشخیص اینکه چه موقع یک وابستگی واقعاً وجود دارد ‪ NP-complete‬است‪ .‬در عمل‪ ،‬بسیاری حاالت‬
‫رایج می توانند با دقت و با هزینه کم آنالیز شوند‪ .‬اخیراً روشهایی از تستهای دقیق و سلسله مراتبی استفاده‬
‫میکنند و کافی و دقیق هستند‪( .‬یک تست دقیق است اگر دقیقاً تشخیص دهد چه موقع یک وابستگی وجود دارد‪.‬‬
‫هرچند که در حالت کلی مسأله ‪ NP-complete‬است ولی تستهای دقیقی برای شرایط محدود وجود دارند که‬
‫خیلی ارزانترند‪).‬‬

‫به عالوه برای تشخیص وجود یک وابستگی‪ ،‬یک کامپایلر نوع وابستگی را کالسبندی میکند‪ .‬این کالسبندی به‬
‫کامپایلر اجازه تشخیص وابستگیهای نام و حذف آنها در زمان اجرا با تغییر نام و کپی میدهد‪.‬‬

‫مثال ‪ :8-8‬حلقه زیر چندین نوع وابستگی دارد‪ .‬همه وابستگیهای داده‪ ،‬وابستگیهای خروجی‪ ،‬و ضد وابستگیها‬
‫را بیابید و با تغییر نام وابستگیهای خروجی و ضد وابستگی را حذف کنید‪.‬‬
‫{)‪for(i=0; i<100; i=i+1‬‬
‫;‪Y[i]=X[i]/c‬‬ ‫‪/*S1*/‬‬
‫;‪X[i]=X[i]+c‬‬ ‫‪/*S2*/‬‬
‫;‪Z[i]=Y[i]+c‬‬ ‫‪/*S3*/‬‬
‫;]‪Y[i]=c-Y[i‬‬ ‫‪/*S4*/‬‬
‫}‬
‫در بین چهار عبارت وابستگیهای زیر وجود دارند‪:‬‬
‫‪ -1‬به خاطر ]‪ Y[i‬از ‪ S1‬به ‪ S3‬و از ‪ S1‬به ‪ S4‬وابستگی داده داریم‪ .‬اینها حملشده‪-‬حلقه نیستند‪ ،‬بنابراین‬
‫آنها حلقه را از موازی بودن منع میکنند‪ .‬این وابستگیها ‪ S3‬و ‪ S4‬را مجبور میکنند تا منتظر اتمام ‪S1‬‬
‫باشند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 468‬‬

‫‪ -2‬یک ضد وابستگی از ‪ S1‬به ‪ S2‬به خاطر ]‪ X[i‬وجود دارد‪.‬‬


‫‪ -3‬یک ضد وابستگی از ‪ S3‬به ‪ S4‬به خاطر ]‪ Y[i‬وجود دارد‪.‬‬
‫‪ -4‬یک وابستگی خروجی از ‪ S1‬به ‪ S4‬به خاطر ]‪ Y[i‬وجود دارد‪.‬‬
‫نگارش زیر از حلقه این وابستگیهای غلط (شبه وابستگی)‪ 1‬را حذف میکنند‪.‬‬
‫{)‪for(i=0;i<100;i=i+1‬‬
‫;‪T[i]=X[i]/c‬‬ ‫‪ Y */‬به ‪ T‬به خاطر حذف وابستگی خروجی تغییر نام داده شده است‪/* .‬‬
‫‪ X*/‬به ‪ X1‬به خاطر حذف ضد وابستگی تغییر نام داده شده است *‪X1[i]=X[i]+c; /‬‬
‫;‪Z[i]=T[i]+c‬‬ ‫‪ Y */‬به ‪ T‬به خاطر حذف ضد وابستگی تغییر نام داده شده است *‪/‬‬
‫;]‪Y[i]=c-T[i‬‬
‫}‬
‫بعد از حلقه‪ ،‬متغیر ‪ X‬به ‪ X1‬تغییر نام داده میشود‪ .‬در کدی که بعد از حلقه میآید‪ ،‬کامپایلر میتواند نام ‪ X1‬را به‬
‫‪ X‬تغییر دهد‪ .‬در این حالت‪ ،‬تغییر نام نیازمند یک عمل کپی واقعی نیست و میتواند با جایگزینی نامها یا تخصیص‬
‫ثبات انجام شود‪ .‬در سایر حاالت‪ ،‬تغییر نام نیازمند کپی است‪.‬‬

‫آنالیز وابستگی یک فنآوری بحرانی برای بهرهبرداری از موازات است‪ .‬برای تشخیص موازات سطح حلقه‪ ،‬آنالیز‬
‫وابستگی یک ابزار پایه است‪ .‬کامپایل مفید برنامهها برای کامپیوترهای برداری‪ ،‬کامپیوترهای ‪ ،SIMD‬یا‬
‫چندپردازندهها بطور بحرانی وابسته به این آنالیز است‪ .‬عیب عمده آنالیز وابستگی آن است که تحت مجموعه‬
‫محدودی از شرایط‪ ،‬مثل مراجعات داخل یک حلقه تودرتو و توابع اندیس نسبی اِعمال میشود‪ .‬بنابراین‪ ،‬شرایط‬
‫زیادی وجود دارد که آنالیز وابستگی آرایهگرا نمیتواند به ما بگوید ما چه میخواهیم بدانیم‪ ،‬به عنوان مثال‪ ،‬آنالیز‬
‫دسترسیها با اشارهگرها‪ ،‬نسبت به اندیسهای آرایه سختتر است‪( .‬این دلیل ارجحیت فرترن بر ‪ C,C++‬برای‬
‫بسیاری از کاربردهای علمی طراحی شده برای کامپیوترهای موازی میباشد‪ ).‬بطور مشابه‪ ،‬آنالیز مراجعات بین‬
‫فراخوانیهای حلقه واقعاٌ سخت است‪ .‬بنابراین‪ ،‬در حالیکه آنالیز کد نوشته شده در زبانهای ترتیبی مهم است‪ ،‬ما‬
‫نیازمند روشهایی مثل ‪ OpenMP‬و ‪ CUDA‬هستیم که میتوانیم صریحاً در آن حلقههای موازی بنویسیم‪.‬‬

‫حذف محاسبات وابسته‬


‫همانطور که گفته شد‪ ،‬یکی از مهمترین شکلهای وابستگی محاسباتی بازگشتی میباشد‪ .‬ضرب نقطهای یک مثال‬
‫کامالً بازگشتی است‪:‬‬
‫)‪for(i=9999;i>=0;i=i-1‬‬
‫;]‪sum=sum+x[i]*y[i‬‬
‫این حلقه موازی نیست زیرا یک وابستگی حملشده‪-‬حلقه روی متغیر ‪ sum‬دارد‪ .‬ما میتوانیم آنرا به دو حلقه‬
‫تبدیل کنیم که یکی از آنها کامالً موازی است و دیگری میتواند بصورت جزئی موازی باشد‪ .‬اولین حلقه قسمت‬
‫کامالً موازی حلقه را اجرا میکند بصورت زیر‪:‬‬

‫‪1‬‬
‫یادآوری میکنیم که به ضد وابستگی و وابستگی خروجی شبه وابستگی نیز میگویند‬
‫‪| 469‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫)‪for(i=9999;i>=0;i=i-1‬‬
‫;]‪sum[i]=x[i]*y[i‬‬
‫نکته اینکه جمع می تواند از یک اسکالر به یک کمیت برداری توسعه یابد (تبدیلی که به آن توسعه اسکالر میگویند)‬
‫و این تبدیل این حلقه را کامالً موازی میکند‪ .‬بعد از انجام این مرحله نیازمند جمع عناصر این بردار بصورت زیر‬
‫هستیم‪:‬‬
‫)‪for(i=9999; i>=0; i=i-1‬‬
‫;]‪finalsum=finalsum+sum[i‬‬
‫هرچند که این حلقه موازی نیست‪ ،‬ساختار خاصی دارد که به آن تقلیل میگویند‪ .‬تقلیل (ساده سازی)‪ 1‬در جبر خطی‬
‫رایج هستند و در فصل ‪ 10‬خواهیم دید که یک قسمت کلیدی از روش موازات ‪ MapReduce‬استفاده شده در‬
‫کامپیوترهای مقیاس‪-‬ورهاوس میباشد‪ .‬بطور کلی هر تابع میتواند به عنوان یک عملگر تقلیل (سادهسازی) استفاده‬
‫شود‪ ،‬و حاالت رایج شامل عملگرهای ‪ min,max‬میباشد‪.‬‬
‫ساده سازی گاهی اوقات توسط سخت افزار خاصی در یک معماری برداری و ‪ SIMD‬مدیریت میشود که اجازه‬
‫میدهد ساده سازی با سرعت بیشتری از مد اسکالر انجام شود‪ .‬که این با پیادهسازی یک روش مشابه با آنچه در‬
‫محیط چندپردازنده می تواند انجام شود قابل انجام است‪ .‬هرچند که تبدیل کلی با هر تعداد پردازنده کار میکند‪،‬‬
‫فرض کنید که ‪ 10‬پردازنده داریم‪ .‬در اولین مرحلهی سادهسازی جمع‪ ،‬هر پردازنده کد زیر را انجام میدهد (که ‪p‬‬
‫شماره پردازنده است در محدوده ‪ 0‬تا ‪:)9‬‬
‫)‪for(i=999; i>=0; i=i-1‬‬
‫;]‪finalsum[p]=finalsum[p]+sum[i+1000*p‬‬
‫این حلقه‪ ،‬که تا حداکثر ‪ 1000‬عنصر را در هر یک از ‪ 10‬پردازنده اجرا میکند‪ ،‬کامالً موازی است‪ .‬یک حلقه اسکالر‬
‫سادهتر آنگاه میتواند جمع ده جمع نهایی را کامل کند‪ .‬روشهای مشابهی در پردازندههای ‪ SIMD‬و برداری انجام‬
‫میشود‪.‬‬
‫مهم است که ببینیم تبدیل فوق روی اشتراک پذیری جمع تکیه میکند‪ .‬هرچندکه ریاضی با دقت و رِنج نامحدود‬
‫اشتراک پذیر است‪ ،‬ریاضی کامپیوتر اشتراک پذیر نیست یا برای ریاضیات صحیح به خاطر محدودیت رنج یا برای‬
‫ریاضایت ممیز‪ -‬شناور به خاطر محدودیت رنج و دقت‪ .‬بنابراین‪ ،‬استفاده از این روشهای ساختاردهی مجدد گاهی‬
‫اوقات میتواند منجر به رفتار اشتباه شود‪ ،‬هرچند که چنین اتفاقی به ندرت میافتد‪ .‬به این دلیل‪ ،‬کامپایلرها نیازمند‬
‫چنین بهینه سازی هستند که روی اشتراک پذیری تکیه دارند‪.‬‬
‫‪ -6-8‬مطالب مرتبط‬
‫انرژی و ‪ :DLP‬کُند و گسترده در مقایسه با سریع و محدود‬

‫‪1‬‬
‫‪reduction‬‬
‫کانون نشر علوم‬ ‫‪| 470‬‬

‫یک مزیت انرژی از معماریهای موازی سطح‪-‬داده از معادله انرژی فصل ‪ 1‬بدست میآید‪ .‬با فرض وجود موازات‬
‫سطح‪ -‬داده کافی کارایی مشابه است اگر نرخ ساعت را نصف کنیم و منابع اجرایی را دو برابر کنیم‪ :‬دوبرابر کردن‬
‫خط سیرهای یک کامپیوتر برداری‪ ،‬گستردهتر کردن ثباتها و ‪ALU‬ها برای ‪ SIMD‬چندرسانهای‪ ،‬و خطسیرهای‬
‫‪SIMD‬ی بیشتر برای ‪GPU‬ها‪ .‬اگر بتوانیم ولتاژ را با کم کردن نرخ ساعت کاهش دهیم‪ ،‬واقعاً میتوانیم انرژی و‬
‫توان مصرفی برای محاسبات را کاهش دهیم در حالیکه حداکثر کارایی را حفظ کردهایم‪ .‬بنابراین‪ ،‬پردازندههای‬
‫‪ DLP‬متمایل به داشتن نرخهای ساعت کمتر از پردازندههای سیستم که روی نرخ ساعت باالتر برای کارایی تکیه‬
‫دارند‪ ،‬هستند‪.‬‬
‫در مقایسه با پردازندههای خارج‪-‬از‪-‬ترتیب‪ ،‬پردازندههای ‪ DLP‬منطق کنترلی سادهتری برای شروع تعداد زیادی از‬
‫عملیات در هر پالس ساعت دارند؛ برای مثال‪ ،‬کنترل برای همه خطسیرهای پردازندههای برداری مشابه است و‬
‫منطق خاصی برای تصمیم گیری روی انتشار چند دستور وجود ندارد‪ .‬معماریهای برداری با خاموش کردن بخش‬
‫استفاده نشده تراشه آنرا سادهتر میکنند‪ .‬هر دستور برداری همه منابع مورد نیازش را وقتیکه دستور منتشر میشود‬
‫صریحاً توصیف میکند‪.‬‬
‫حافظه بانک شده و حافظه گرافیکی‬
‫بخش ‪ 2-8‬اهمیت پهنای باند حافظه را برای معماریهای برداری برای پشتیبانی از استراید واحد‪ ،‬استراید غیر واحد‬
‫و دسترسیهای گردآوری‪-‬پخش بیان کرده است‪.‬‬
‫برای رسیدن به کارایی باالیشان‪GPU ،‬ها نیازمند پهنای باند حافظه قابل توجهی هستند‪ .‬تراشههای ‪DRAM‬‬
‫خاصی بنام ‪ GDRAM‬برای رسیدن به این پهنای باند فقط برای ‪GPU‬ها طراحی شدهاند‪ .‬تراشههای ‪GDRAM‬‬
‫پهنای باند بیشتری دارند ولی اغلب ظرفیت کمتری از تراشههای ‪ DRAM‬رایج دارند‪ .‬برای برآوردن این پهنای‬
‫باند‪ ،‬تراشههای ‪ GDRAM‬معموالً مستقیماً در داخل همان بوردی که ‪ GPU‬قرار دارد لحیم میشوند نه اینکه‬
‫مثل حافظه سیستم در ماژولهای ‪ DIMM‬قرار داده شوند و در داخل یک اسالت در یک بورد قرار گیرند‪.‬‬
‫ماژولهای ‪ DIMM‬ظرفیت باالتری دارند و برای ارتقاء سیستم مناسبترند در حالیکه ‪ GDRAM‬اینطور نیست‪.‬‬
‫این محدودیت ظرفیت که در سال ‪ 4GB ،2011‬بوده است‪ ،‬با هدف اجرای مسائل بزرگتر که یک استفاده طبیعی‬
‫از قدرت محاسباتی افزایش یافته ‪ GPU‬است‪ ،‬تداخل دارد‪.‬‬
‫برای بدست آوردن کارایی ممکن‪GPU ،‬ها تالش میکنند که همه خواص ‪GDRAM‬ها را استفاده کنند‪ .‬آنها‬
‫معموالً بصورت داخلی به صورت ‪ 4‬تا ‪ 8‬بانک سازماندهی شدهاند‪ ،‬که توانی از ‪ 2‬سطر (معموالً ‪ )16384‬و توانی از‬
‫‪ 2‬بیت در هر سطر (معموالً ‪ )8192‬دارند‪.‬‬
‫به خاطر وجود پتانسیل باالی تقاضاهای ‪ GDRAM‬چه از دید کارهای محاسباتی چه کارهای گرافیکی شتابدار‪،‬‬
‫سیستم حافظه باید تعداد ز یادی تقاضای غیرمرتبط را مشاهده کند‪ .‬این تنوع به کارایی حافظه آسیب میرساند‪.‬‬
‫کنترلر حافظه ‪ GPU‬صفهای مجزایی از ترافیک را برای بانکهای مختلف ‪ GDRAM‬نگه میدارد‪ ،‬و تا زمانیکه‬
‫ترافیک کافی برای باز کردن یک سطر وجود داشته باشد صبر میکند و همه تقاضاهای داده را به یکباره منتقل‬
‫میکند‪.‬‬
‫‪| 471‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫دسترسیهای استراید و فقدانهای ‪TLB‬‬


‫یک مشکل با دسترسیهای استراید چگونگی محاوره با ‪ TLB‬برای حافظه مجازی در معماریهای برداری یا‬
‫‪GPU‬ها میباشد‪GPU( .‬ها از ‪ TLB‬برای نگاشت حافظه استفاده میکنند)‪ .‬براساس چگونگی سازمان یافتن ‪TLB‬‬
‫و اندازه آرایهای که در حافظه دسترسی میشود‪ ،‬حتی ممکن است تا یک فقدان ‪ TLB‬برای هر دسترسی به یک‬
‫عنصر آرایه داشته باشیم‪.‬‬
‫‪ -7-8‬کنار هم قراردادن همه‪ :‬موبایل در مقایسه با ‪GPU‬های سرور و ‪ Tesla‬در مقایسه با ‪Core i7‬‬
‫با توجه به عمومیت کاربردهای گرافیکی‪GPU ،‬ها هماکنون در کالینتهای موبایل و سرورهای سنتی یا‬
‫کامپیوترهای رومیزی پیدا میشوند‪ .‬جدول ‪ 9-8‬خواص کلیدی ‪ NVIDIA Tegra 2‬را برای کالینتهای موبایل‬
‫که در ‪ LG Optimus 2X‬استفاده میشوند و سیستم عامل اندروید را اجرا میکنند و ‪ Fermi GPU‬را برای‬
‫سرورها لیست کرده است‪ .‬مهندسان سرور ‪ GPU‬امیدوارند که آنرا قادر به انجام انیمیشن زنده کنند تا ‪5‬سال بعد‬
‫از اینکه یک ‪ movie‬منتشر شد‪ .‬مهندسان ‪ GPU‬موبایل میخواهند بتوانند این عمل را روی یک کالینت موبایل‬
‫انجام دهند با کیفیت یک سرور یا یک کنسول بازی حتی اگر ‪ 5‬سال بعدتر باشد‪ .‬یک مثال عینی‪ ،‬هدف این است‬
‫که یک فیلم مثل ‪ Avator‬بتواند با کیفیت باالی گرافیکی بطور زمان قطعی روی یک سرور ‪ GPU‬تا سال ‪2015‬‬
‫اجرا شود و روی موبایل ‪ GPU‬تا سال ‪.2020‬‬

‫‪NVIDIA Fermi GTX 480‬‬ ‫‪NVIDIA Tegra 2‬‬


‫رومیزی‪ ،‬سرور‬ ‫کالینت موبایل‬ ‫بازار‬

‫قابل اجرا نیست‪.‬‬ ‫‪Dual-Core‬‬ ‫‪ARM‬‬


‫پردازنده سیستم‬
‫‪Cortex-A9‬‬
‫‪PCI Expre 2.0×16‬‬ ‫قابل اجرا نیست‪.‬‬ ‫رابط سیستم‬
‫‪6GBytes/sec‬‬ ‫‪(each‬‬ ‫‪direction),‬‬
‫قابل اجرا نیست‬ ‫پهنای باند رابط سیستم‬
‫)‪12GBytes/sec (total‬‬
‫‪1.4GHz‬‬ ‫تا ‪1GHz‬‬ ‫نرخ کالک‬
‫‪15‬‬ ‫غیرقابل دسترس‬ ‫چندپردازندههای ‪SIMD‬‬
‫چندپردازندههای ‪/SIMD‬‬
‫‪32‬‬ ‫غیر قابل دسترس‬
‫خطسیرهای ‪SIMD‬‬
‫‪32-bit‬‬ ‫‪LP-‬‬
‫‪384-bit GDDR5‬‬ ‫رابط حافظه‬
‫‪DDR2/DDR2‬‬
‫‪177GBytes/sec‬‬ ‫‪2.7 GBytes/sec‬‬ ‫پهنای باند حافظه‬
‫‪1.5GBytes‬‬ ‫‪1 GByte‬‬ ‫ظرفیت حافظه‬
‫‪3030M‬‬ ‫‪242M‬‬ ‫ترانزیستورها‬
‫‪40nm TSMC process‬‬
‫‪40nmTSMC process G‬‬ ‫پردازه‬
‫‪G‬‬
‫‪520mm2‬‬ ‫‪57 mm2‬‬ ‫سطح دای‬
‫‪167watts‬‬ ‫‪1.5watts‬‬ ‫توان‬
‫جدول ‪ :9-8‬خواص کلیدیِ ‪GPU‬ها برای کالینتهای موبایل و سرورها‪ Tegra 2 .‬پلتفرم مرجع برای سیستم عامل اندروید‬
‫است که در تلفن سلولی ‪ LG Optimus 2X‬یافت میشود‪.‬‬
‫کانون نشر علوم‬ ‫‪| 472‬‬

‫‪ NVIDIA Tegra 2‬برای وسایل موبایل هر دوی پردازنده سیستم و ‪GPU‬را در یک تراشه قرار میدهد که از‬
‫یک حافظه فیزیکی استفاده میکنند‪ .‬پردازنده سیستم ‪ ARM Cortex-A9‬دو هستهای است‪ ،‬که هر هسته‬
‫اجرای خارج از ترتیب را با دو دستور منتشر شده در هر پالس انجام میدهد‪ .‬هر هسته شامل یک واحد ممیز شناور‬
‫اختیاری است‪.‬‬

‫‪ GPU‬شتاب دهنده سخت افزاری برای سایه زنی پیکسل قابل برنامه نویسی‪ ،‬نورپردازی قابل برنامه نویسی‪ ،‬و‬
‫گرافیک ‪ 3‬بعدی دارد اما شامل خواص محاسباتی ‪ GPU‬مورد نیاز برای اجرای برنامههای ‪ CUDA‬و ‪OpenCL‬‬
‫نیست‪.‬‬
‫اندازه ‪ )7.5×7.5 mm( 57mm die‬در یک پردازه ‪ 40nm TSMC‬میباشد‪ ،‬و شامل ‪242‬میلیون‬ ‫‪2‬‬

‫ترانزیستور است‪ .‬مصرف آن ‪ 1.5‬وات است‪.‬‬


‫‪ NVIDIA GTX 480‬در جدول ‪ 10-8‬اولین پیادهسازی معماری ‪ Fermi‬میباشد‪ .‬نرخ ساعت ‪ 1.4GHz‬است‬
‫و شامل ‪ 15‬پردازنده ‪ SIMD‬میباشد‪ .‬مسیر به حافظه ‪ GDDR5‬پهنای ‪ 384‬بیت (‪ )6×64‬دارد و با کالک‬
‫‪ 1.84GHz‬پهنای باند حداکثر ‪ 177GBytes/sec‬با انتقال در هر دو لبه کالک با نرخ حافظه دوبرابر دارد‪.‬‬
‫آن از طریق اتصال ‪ PCI Express 2.0×16‬به حافظه و پردازنده سیستم میزبان وصل میشود و حداکثرنرخ‬
‫انتقال دوطرفه ‪ 12GBytes/sec‬دارد‪.‬‬
‫‪ratio‬‬ ‫‪Ratio‬‬ ‫‪GTX 480‬‬ ‫‪GTX 280‬‬ ‫‪Core i7‬‬
‫‪480/i7‬‬ ‫‪280/i7‬‬ ‫‪960‬‬
‫‪3.8‬‬ ‫‪7.5‬‬ ‫‪15‬‬ ‫‪30‬‬ ‫‪4‬‬ ‫تعداد عناصر پردازشی (هستهها یا ‪SM‬ها)‬
‫‪0.44‬‬ ‫‪0.41‬‬ ‫‪1.4‬‬ ‫‪1.3‬‬ ‫‪3.2‬‬ ‫فرکانس کالک (‪)GHz‬‬
‫‪2.0‬‬ ‫‪2.2‬‬ ‫‪520‬‬ ‫‪576‬‬ ‫‪263‬‬ ‫اندازه دای‬
‫‪1.0‬‬ ‫‪1.6‬‬ ‫‪TSMC‬‬ ‫‪TSMC‬‬ ‫‪Intel 45‬‬ ‫تکنولوژی‬
‫‪40nm‬‬ ‫‪65nm‬‬ ‫‪nm‬‬
‫‪1.3‬‬ ‫‪1.0‬‬ ‫‪167‬‬ ‫‪130‬‬ ‫‪130‬‬ ‫توان (تراشه‪ ،‬نه ماژول)‬
‫‪4.4‬‬ ‫‪2.0‬‬ ‫‪3030M‬‬ ‫‪1400M‬‬ ‫‪700M‬‬ ‫ترانزیستورها‬
‫‪5.5‬‬ ‫‪4.4‬‬ ‫‪177‬‬ ‫‪141‬‬ ‫‪32‬‬ ‫پهنای باند حافظه (‪)GBytes/sec‬‬
‫‪8.0‬‬ ‫‪2.0‬‬ ‫‪32‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫پهنای ‪SIMD‬ی دقت‪-‬تک‬
‫‪8.0‬‬ ‫‪0.5‬‬ ‫‪16‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫پهنای ‪SIMD‬ی دقت‪-‬مضاعف‬
‫‪2.5‬‬ ‫‪4.6‬‬ ‫‪63‬‬ ‫‪117‬‬ ‫‪26‬‬ ‫دقت‪-‬تک‬ ‫اسکالر‬ ‫‪FLOPS‬‬ ‫حداکثر‬
‫(‪)GFLOP/sec‬‬
‫‪6.6-13.1‬‬ ‫‪3.0-9.1‬‬ ‫‪515 or‬‬ ‫‪311 to‬‬ ‫‪102‬‬ ‫دقت‪-‬تک‬ ‫‪SIMD‬‬ ‫‪FLOPS‬‬ ‫حداکثر‬
‫‪1344‬‬ ‫‪933‬‬ ‫(‪)GFLOP/sec‬‬
‫)‪(6.6‬‬ ‫)‪(3.0‬‬ ‫)‪(515‬‬ ‫)‪(311‬‬ ‫‪N.A‬‬ ‫)‪(SP 1 add or multiply‬‬
‫)‪(13.1‬‬ ‫)‪(6.1‬‬ ‫)‪(1344‬‬ ‫)‪(622‬‬ ‫‪N.A‬‬ ‫‪(Sp 1 instruction fused multiply‬‬
‫)‪adds‬‬
‫‪--‬‬ ‫)‪(9.1‬‬ ‫‪N.A‬‬ ‫)‪(933‬‬ ‫‪N.A‬‬ ‫‪(Rare SP dual issue fused multiplu-‬‬
‫)‪add and multiply‬‬
‫‪10.1‬‬ ‫‪1.5‬‬ ‫‪515‬‬ ‫‪78‬‬ ‫‪51‬‬ ‫حداکثر ‪ SIMD FLOPS‬دقت‪-‬مضاعف‬
‫(‪)GFLOP/sec‬‬
‫جدول ‪ :10-8‬ویژگیهای ‪ Intel Core i7-960‬و ‪ NVIDIA GTX 280‬و ‪GTX 480‬‬
‫‪| 473‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫همه ویژگیهای فیزیکی ‪ GTX 480 die‬بطور مؤثری بزرگ است‪ :‬شامل ‪ 3‬میلیارد ترانزیستور است‪ ،‬اندازه دای‬
‫‪ (22.8×22.8mm) 520mm2‬در یک پردازه ‪ 40nm TSMC‬میباشد و توان رایج ‪ 167‬وات است‪ .‬کل‬
‫ماژول ‪ 250‬وات است که شامل ‪ GPU, GDRAM, fans, power regulators‬و غیره میباشد‪.‬‬

‫مقایسه یک ‪ GPU‬و‪ MIMD‬با ‪SIMD‬ی چندرسانهای‬


‫یک گروه از محققین اینتل یک مقاله ]‪ [Lee et al.2010‬منتشر کردند که ‪ Intel i7‬چهار‪-‬هستهای را با‬
‫توسعه ‪SIMD‬ی چندرسانهای ‪GPU‬ی نسل قبل‪ Tesla GTX 280 ،‬مقایسه کردهاند‪ .‬شکل ‪ 27-8‬خواص دو‬
‫سیستم را لیست کرده است‪ .‬هر دو محصول در سال ‪ 2009‬به بازار آمدند‪ Core i7 .‬در تکنولوژی نمیه رسانا ‪-45‬‬
‫نانومتر اینتل است درحالیکه ‪ GPU‬در تکنولوژی ‪-65‬نانومتری ‪ TSMC‬است‪.‬‬

‫شکل ‪ 8-1:4‬مدل ‪[Williams et al.2009] Roofline‬‬


‫کانون نشر علوم‬ ‫‪| 474‬‬

‫نمودارهای ‪ Core i7 920‬و ‪ GTX 280‬شکل ‪ 14-8‬تفاوتهای دو معماری را نشان میدهد‪ 920 .‬نرخ ساعت‬
‫کُندتری از ‪ 2.66GHz( 960‬در مقایسه با ‪ )3.2GHz‬دارد اما بقیه سیستم مشابه است‪ .‬نه تنها ‪GTX 280‬‬
‫پهنای باند حافظه و کارایی ممیز‪-‬شناور دقت‪-‬مضاعف بیشتری دارد‪ ،‬بلکه حداکثر دقت‪-‬مضاعف آن در سمت چپ‬
‫بیشتر است‪ .‬نقطه حداکثر دقت‪-‬مضاعف ‪ 0.6‬برای ‪ GTX 280‬است درحالیکه برای ‪ 2.6 ،Core i7‬است‪.‬‬
‫‪| 475‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫تمرینات فصل هشتم‬

‫‪ -8-1‬به کد زیر که دو بردار را که دارای مقادیر کامپلکس دقت‪-‬تک هستند در هم ضرب میکند دقت کنید‪:‬‬
‫{)‪for(i=0; i<300; i++‬‬
‫;]‪c_re[i]=a_re[i]* b_re[i]- a_im[i]*b_im[i‬‬
‫;]‪c_im[i]=a_re[i]*b_im[i]+a_im[i]*b_re[i‬‬
‫}‬
‫فرض کنید پردازنده با سرعت ‪ 700MHz‬کار میکند و حداکثر طول بردار ‪ 64‬است‪ .‬واحد ‪ load/store‬سربار‬
‫راهاندازی ‪ 15‬سیکل دارند‪ ،‬واحد ضرب ‪ 8‬سیکل و واحد جمع‪/‬تفریق ‪ 5‬سیکل‪.‬‬
‫(الف) این حلقه را به کد اسمبلی ‪ VMIPS‬با استفاده از روش محدوده‪-‬گرا تبدیل کنید‪.‬‬
‫(ب) با فرض وجود زنجیر و یک خط لوله حافظه‪ ،‬چه تعداد چایم مورد نیاز است؟ با احتساب سربارهای راهاندازی‬
‫چقدر سیکل ساعت برای بدست آوردن یک نتیجه کامپلکس مورد نیاز است؟‬
‫(ج) اگر رشته برداری زنجیر شده باشد‪ ،‬چه تعداد سیکل ساعت برای یک نتیجه کامپلکس با احتساب سربار نیاز‬
‫است؟‬
‫(د) حال فرض کنید که پردازنده سه خطلوله حافظه و زنجیر دارد‪ .‬اگر هیچ تداخل بانکی در دسترسیهای حافظه‬
‫وجود نداشته باشد چه تعداد سیکل ساعت برای هر نتیجه مورد نیاز است؟‬

‫‪ -8-2‬در بخش ‪ 5-8‬عمل سادهسازی که یک بردار را به یک اسکالر کاهش میداد بحث کردیم‪ .‬سادهسازی‬
‫نوعی خاص از بازگشت حلقه است‪ .‬مثالی در زیر نشان داده شده است‪:‬‬
‫;‪dot=0.0‬‬
‫;]‪for(i=0; i<64;i++) dot=dot+a[i]*b[i‬‬
‫یک کامپایلر برداری ممکن است تبدیلی را به نام توسعه اسکالرکه ‪ dot‬را به یک بردار توسعه میدهد اِعمال کند‬
‫و حلقه را بشکند بطوریکه ضرب بتواند به عنوان یک عمل برداری انجام شود‪ ،‬و سادهسازی را به عنوان یک عمل‬
‫اسکالر مجزا رها کند‪:‬‬
‫;]‪for(i=0; i<64;i++) dot[i]=a[i]*b[i‬‬
‫;]‪for(i=1;i<64=i++) dot[0]=dot[0]+dot[i‬‬
‫همانطور که در بخش ‪ 5-8‬توضیح داده شد‪ ،‬اگر ما جمع ممیز‪-‬شناور را شرکت پذیر در نظر بگیریم‪ ،‬روشها مختلفی‬
‫برای موازی سازی سادهسازی قابل دسترس است‪:‬‬
‫(الف) یک روش بازگشت دوبله نامیده میشود‪ ،‬که رشتهای از بردارهای کوتاهتر را جمع میکند (مثالً دو برداری‪32‬‬
‫عنصری سپس دو بردار ‪ 16‬عنصری و غیره)‪ .‬چگونگی اجرای حلقه دوم را به زبان ‪ C‬در این روش نشان دهید‪.‬‬
‫(ب) در بعضی پردازندههای برداری‪ ،‬عناصر منفرد داخل ثباتهای برداری قابل آدرس دهی هستند‪ .‬در این حالت‪،‬‬
‫عملوندهای یک عمل برداری ممکن است دو بخش مختلف یک ثبات برداری مشابه باشند‪ .‬این اجازه سادهسازی‬
‫دیگری میدهد که به آن جمع جزئی میگویند‪ .‬ایده کاهش بردار به ‪ m‬جمع است که ‪ m‬تأخیر کلی بین واحد‬
‫عملیاتی برداری است‪ ،‬شامل خواندن عملوند و زمانهای نوشتن‪ .‬فرض کنید که ثباتهای برداری ‪ VMIPS‬قابل‬
‫کانون نشر علوم‬ ‫‪| 476‬‬

‫آدرس دهی باشند (مثالً شما میتوانید یک عمل برداری را با عملوند )‪ ، V1(16‬شروع کنید‪ ،‬یعنی عملوند ورودی‬
‫با عنصر ‪ 16‬شروع میشود)‪ .‬همچنین‪ ،‬فرض کنید که تأخیر کلی برای جمع‪ ،‬شامل خواندن عملوند و نوشتن نتیجه‬
‫هشت سیکل باشد‪ .‬یک رشته کد ‪ VMIPS‬بنویسید که محتوای ‪ V1‬را به ‪ 8‬جمع جزئی کاهش دهد‪.‬‬
‫(ج) وقتیکه یک سادهسازی روی یک ‪ GPU‬انجام میشود‪ ،‬یک نخ با هر عنصر در بردار ورودی مجتمع شود‪ .‬گام‬
‫اول برای هر نخ نوشتن مقدار مرتبط در حافظه مشترک میباشد‪ .‬بعد‪ ،‬هر نخ وارد حلقهای میشود که هر زوج از‬
‫مقادیر ورودی را جمع میکند‪ .‬این سادهسازی تعداد عناصر را به نصف بعد از هر تکرار کاهش میدهد‪ ،‬به این معنی‬
‫که تعداد نخهای فعال نیز بعد از هر تکرار به نصف کاهش مییابد‪ .‬به منظور حداکثر کردن کارایی سادهسازی‪،‬‬
‫نخهای فعال باید پیوسته باشند‪ .‬بنابراین‪ ،‬هر نخ باید آرایه مشترک را به روشی که از تداخل بانک در حافظه مشترک‬
‫جلوگیری کند اندیس دهد‪ .‬حلقه زیر اولین مرحله راهنمایی فوق را بیان میکند و از عملگر ‪ modulo‬استفاده‬
‫میکند که برای ‪ GPU‬ها خیلی هزینه بر است‪:‬‬
‫;‪unsigned int tid=threadIdx.x‬‬
‫{)‪if(unsigned int s=1; s<blockDim.x; s*=2‬‬
‫;]‪sdata[tid]+=sdata[tid+s‬‬
‫}‬
‫;)(‪_syncthreads‬‬
‫}‬
‫حلقه را مجداداً بازنویسی کنید تا اهداف راهنمایی فوق را برآورده کند و استفاده از عملگر ‪ modulo‬را حذف کنید‪.‬‬
‫فرض کنید که ‪ 32‬نخ در هر ریسمان وجود دارد و یک تداخل بانک هر وقت که دو یا چند نخ از ریسمان به مکان‬
‫مشابهی (که ‪modulo‬ی آنها با ‪ 32‬یکی شود) ارجاع دهند اتفاق میافتد‪.‬‬

‫‪ -8-3‬فرض کنید که معماری ‪ GPU‬شامل ‪ 10‬پردازنده ‪ SIMD‬باشد‪ .‬هر دستور ‪ SIMD‬پهنای ‪ 32‬دارد و هر‬
‫پردازنده ‪ SIMD‬شامل ‪ 8‬خطسیر برای ریاضیات دقت‪-‬تک و دستورات ‪ load/store‬باشد‪ ،‬به این معنی که هر‬
‫دستور ‪SIMD‬ی غیر‪-‬واگرا میتواند ‪ 32‬نتیجه را در هر ‪ 4‬سیکل بسازد‪ .‬فرض کنید که ‪ 70%‬همه دستورات‬
‫‪ SIMD‬اجرا شده ریاضیات دقت‪-‬تک و ‪ 20%‬آن ‪ Load/store‬باشد‪ .‬چون همه تأخیرات حافظه پوشش داده‬
‫نشدهاند‪ ،‬فرض کنید میانگین نرخ انتشار دستور ‪ 0.85 ، SIMD‬باشد‪ .‬فرض کنید که ‪ GPU‬سرعت کالک‬
‫‪ 1.5GHz‬دارد‪.‬‬
‫(الف) توان عملیاتی را براساس ‪ GFLOP/sec‬برای این کرنل روی این ‪ GPU‬محاسبه کنید‪.‬‬
‫(ب) فرض کنید که شما انتخابهای زیر را داشته باشید‪:‬‬
‫(‪ )1‬افزایش تعداد خطسیرهای دقت‪-‬تک به ‪.16‬‬
‫(‪ )2‬افزایش تعداد پردازندههای ‪ SIMD‬به ‪( 15‬فرض کنید که این تغییر بر هیچکدام از سایر پارامترهای‬
‫کارایی تأثیر نداشته باشد و کد به پردازندههای اضافی تقسیم شود)‪.‬‬
‫(‪ )3‬افزایش یک حافظه نهان که بطور مؤثر تأخیر حافظه را ‪ 40%‬کاهش دهد‪ ،‬که نرخ انتشار دستور را‬
‫به ‪ 0.95‬افزایش میدهد‪.‬‬
‫افزایش سرعت توان عملیاتی برای هر یک از این بهبودها چیست؟‬
‫‪| 477‬‬ ‫فصل هشتم‪ :‬موازات سطح داده در معماریهای برداری‪ SIMD ،‬و ‪GPU‬‬

‫‪ -8-4‬در این تمرین‪ ،‬چند حلقه را تست میکنیم و پتانسیل آنها را برای موازی سازی آنالیز میکنیم‪.‬‬
‫(الف) آیا حلقه زیر وابستگی حملشده‪-‬حلقه دارد؟‬
‫{)‪for(i=0; i<100; i++‬‬
‫;]‪A[i]=B[2*i+4‬‬
‫;]‪B[4*i+5]=A[i‬‬
‫}‬
‫(ب) در حلقه زیر‪ ،‬همه وابستگیهای داده‪ ،‬وابستگیهای خروجی‪ ،‬و ضدوابستگیها را بیابید‪ .‬وابستگیهای خروجی‬
‫و ضدوابستگی را با تغییر نام حذف کنید‪:‬‬
‫{)‪f (i=0; i<100; i++‬‬
‫‪A[i]=A[i]*B[i]; /*S1*/‬‬
‫‪B[i]=A[i]+c; /*S2*/‬‬
‫‪A[i]=C[i]*c; /*S3*/‬‬
‫‪C[i]=D[i]*A[i]; /*S4*/‬‬
‫}‬
‫(ج) به حلقه زیر دقت کنید‪:‬‬
‫{)‪for(i=0;i<100;i++‬‬
‫‪A[i]=A[i]+B[i]; /*S1*/‬‬
‫‪B[i+1]=C[i]+D[i]; /*S2*/‬‬
‫{‬
‫آیا بین ‪ S1,S2‬وابستگی وجود دارد؟ آیا این حلقه موازی است؟ اگر نه‪ ،‬چگونه باید آنرا موازی کنیم‪.‬‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫فصل نهم موازات سطح –نخ‬
‫مح‬
‫ما تمام توسعه صوالتمان را هب طرحاهی چند هستهای رد آینده اختصاص دادهایم‪ .‬ما معتقدیم که این نقطه عطفی رد صنعت است‪.‬‬

‫رئیس اینتل ‪،Paul Otellini‬‬

‫توصیف جهت آینده اینتل در گروه توسعه دهندگان اینتل در سال ‪2005‬‬

‫‪ -1-9‬مقدمه‬
‫برای شروع این فصل‪ ،‬توجه شما را به این نکته جلب میکنیم که توسعه معماریهای تک‪-‬پردازنده برای سالها‬
‫است که از دید بعضی محققین به انتها رسیده است‪ .‬در طول سالهای ‪ 2003-1986‬کارایی تک‪-‬پردازندهها پیشرفت‬
‫داشت‪ ،‬و از شروع کامپیوترهای ترانزیستوری از اواخر دهه ‪ 1950‬و اوائل دهه ‪ 1960‬به بیشترین سرعتش رسید‪.‬‬

‫با این وجود‪ ،‬اهمیت چندپردازندهها از ‪ 1990‬که طراحان به فکر راهی برای ساخت سرورها و سوپرکامپیوترهایی که‬
‫به کارایی بیشتری از تک‪-‬پردازندهها میرسیدند‪ ،‬افتادند شروع به پیشرفت کرد‪ ،‬این در حالی بود که از مزایای‬
‫چشمگیر هزینه‪-‬کارایی ریزپردازندهها بهرهبرداری میکردند‪ .‬همانطور که در فصل ‪ 1‬گفتیم‪ ،‬کاهش کارایی تک‪-‬‬
‫پ ردازنده از کمبود موازات سطح دستور همراه با توان مصرفی شروع شد و باعث ایجاد ناحیه جدیدی در معماری‬
‫کامپیوتر شد که چندپردازندهها نقش عمده در آن بازی میکنند‪.‬‬

‫افزایش اهمیت چندپردازشی چند فاکتور عمده را انعکاس میدهد‪:‬‬

‫• راندمان پایین در سیلیکون و انرژی استفاده شده بین سالهای ‪ 2000‬تا ‪ 2005‬زمانی که طراحان تمایل به‬
‫یافتن و بهرهبرداری از ‪ ILP‬بیشتری داشتند‪ ،‬اتفاق افتاد زیرا هزینه توان و سیلیکون از کارایی رشد بیشتری داشت‪.‬‬
‫تنها روش مقیاس پذیر و همه منظوره برای افزایش کارایی بیشتر از تکنولوژی پایه‪ ،‬استفاده از چندپردازشی میباشد‪.‬‬
‫• رشد بهرهوری از سرورهای انتهایی مثل رایانش ابری‪ 1‬و نرم افزار‪-‬به عنوان سرویس اهمیت بیشتری یافت‪.‬‬
‫• رشد در کاربردهای حساس‪-‬به داده مثل وقوع مقدار انبوه دادهها در اینترنت اتفاق افتاد‪.‬‬
‫• این بینش که افزایش کارایی در کامپیوترهای رومیزی اهمیت کمتری دارد زیرا یا کارایی جاری قابل پذیرش‬
‫است یا کاربردهای حساس‪ -‬به داده یا محاسبه توسط ابری قابل انجام هستند‪.‬‬
‫• دانش توسعه یافتهای که چگونگی استفاده سودمند از چندپردازندهها را مشخص میکرد باالخص در محیطهای‬
‫سرور که موازات طبیعی قابل توجهی وجود دارد‪ ،‬و از مجموعه دادههای بزرگ‪ ،‬موازات طبیعی (که در کدهای علمی‬
‫اتفاق میافتد)‪ ،‬یا موازات بین تعداد زیادی درخواست مستقل (موازات سطح‪-‬درخواست)‪ ،‬ناشی میشود‪.‬‬
‫در این فصل روی بهرهبرداری از موازات سطح‪-‬نخ (‪ )TLP2‬تمرکز میکنیم‪ TLP .‬به معنی وجود چندین شمارنده‬
‫برنامه میباشد و ابتدا توسط ‪ MIMD‬بهرهبرداری شد‪ .‬با وجود اینکه ‪ MIMD‬چند دهه سن دارد‪ ،‬موضوع موازات‬

‫‪1‬‬
‫‪Cloud computing‬‬
‫‪2‬‬
‫‪Thread Level Parallelism‬‬
‫کانون نشر علوم‬ ‫‪| 480‬‬

‫سطح‪ -‬نخ از کاربردهای محاسباتی تا سرورهای انتهایی تقریباً جدید است‪ .‬همچنین‪ ،‬استفاده گسترده از موازات‬
‫سطح‪-‬نخ برای کاربردهای همه‪-‬منظوره در مقایسه با کاربردهای علمی تقریباً جدید است‪.‬‬
‫تمرکز ما در این فصل روی چندپردازندهها است‪ ،‬که به عنوان کامپیوترهایی که شامل پردازندههای قویاً متصل‬
‫هستند تعریف میشوند که مدیریت و استفاده از آنها توسط یک سیستم عامل کنترل میشود و حافظه از طریق یک‬
‫فضای آدرس مشترک‪ ،‬به اشتراک گذاشته میشود‪ .‬اینچنین سیستمهایی موازات سطح نخ را از طریق دو مدل‬
‫نرمافزاری مختلف بهرهبرداری میکنند‪ :‬اولین روش‪ ،‬اجرای یک مجموعه از نخهای قویاً متصل است که روی یک‬
‫کار واحد با هم همکاری میکنند که به آن پردازش موازی میگویند‪ .‬روش دوم‪ ،‬اجرای چندین پردازه تقریباً مستقل‬
‫است که ممکن است از طریق یک یا چند کاربر شروع شده باشند که نوعی از موازات سطح‪-‬تقاضا میباشد هرچند‬
‫که مقیاس آن کوچکتر است‪ .‬موازات سطح‪-‬تقاضا ممکن است توسط یک کاربرد که روی چند پردازنده اجرا میشود‬
‫بهرهبرداری شود‪ ،‬مثل یک پایگاه داده که به درخواستها پاسخ میدهد‪ ،‬یا توسط چندین کاربرد در حال اجرای‬
‫مستقل که اغلب به آن چندبرنامگی میگویند‪ ،‬استفاده شود‪.‬‬
‫چندپردازندههایی که در این فصل بررسی میکنیم از لحاظ اندازه در محدوده دو پردازنده تا چندین دوجین پردازنده‬
‫میباشند و از طریق حافظه مشترک به هم متصل و مدیریت میشوند‪ .‬هرچندکه اشترک حافظه به معنی یک فضای‬
‫آدرس مشترک است‪ ،‬اما لزوماً به معنی وجود یک حافظه فیزیکی نیست‪ .‬چنین چندپردازندههایی شامل هم سیستم‪-‬‬
‫های تک‪-‬تراشه با چندین هسته که به آنها چندهسته میگویند‪ ،‬و کامپیوترهایی که شامل چندین تراشه است و هر‬
‫کدام ممکن است یک طرح چندهسته داشته باشند‪ ،‬میباشند‪.‬‬
‫حال به موضوع چندنخی برمیگردیم‪ ،‬روشی که چند نخ در حال اجرا به روشی برگی شده را روی یک پردازنده چند‬
‫انتشاره پشتیبانی میکند‪ .‬تعداد زیادی پردازنده چندهستهای نیز از چندنخی پشتیبانی میکنند‪.‬‬
‫در فصل بعد‪ ،‬به کامپیوترهای در مقیاس فوقالعاده بزرگ توجه میکنیم که از تعداد خیلی زیادی پردازنده ساخته‬
‫شدهاند که با تکنولوژی شبکه به هم متصل شدهاند که اغلب به آنها خوشه میگویند‪ .‬این سیستمهای در مقیاس‬
‫بزرگ اغلب برای محاسبات انبوه‪ 1‬استفاده میشوند که یا با استفاده از تعداد زیادی درخواست مستقل یا کارهای‬
‫محاسباتی با موازات باال کار میکنند‪ .‬وقتیکه این خوشهها به دهها هزار سرور و بیشتر رشد میکنند به آنها‬
‫کامپیوترهای در مقیاس ورهاوس میگویند‪.‬‬

‫عالوه بر چندپردازندههایی که در این فصل بررسی میشوند و سیستمهای مقیاس ورهاوس که در فصل بعد مطالعه‬
‫میشوند‪ ،‬محددودهای از چندپردازندههای مقیاس‪-‬باالی خاص وجود دارند که گاهی اوقات به آنها چندکامپیوتر‬
‫میگویند که به اندازه چند پردازندهها متصل محکم نیستند اما از سیستمهای ورهاوس متصل محکم تر هستند‪.‬‬
‫استفاده اولیه چنین چندکامپیوترهایی محاسبات علمی انتهایی میباشند‪.‬‬

‫تمرکز ما در این فصل روی چندپردازندههای با تعداد کم تا متوسط (‪ 2‬تا ‪ )32‬میباشد‪ .‬سنجش چنین طراحیهایی‬
‫براساس تعداد واحدها و هزینه آنها میباشد‪.‬‬

‫‪1‬‬
‫‪Cloud Computing‬‬
‫‪| 481‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫معماری چندپردازنده‬

‫برای بدست آوردن مزایای یک چندپردازنده ‪ MIMD‬با ‪ n‬پردازنده‪ ،‬باید حداقل ‪ n‬نخ یا پردازه داشته باشیم‪ .‬نخهای‬
‫مستقل در یک پردازه معموالً توسط برنامهنویس تعیین میشوند یا توسط سیستم عامل (از چندین درخواست مستقل)‬
‫ایجاد میشوند‪ .‬در طرف دیگر‪ ،‬یک نخ ممکن است شامل دهها تکرار یک حلقه باشد که توسط یک کامپایلر که از‬
‫موازات داده در حلقه بهره برداری میکند تولید شده باشد‪ .‬هرچند که تعداد محاسبات منتسب شده به یک نخ که به‬
‫آن اندازه دانه میگویند‪ ،‬برای تعیین چگونگی بهرهبرداری مفید از موازات سطح‪-‬دستور مهم است‪ ،‬تفاوت کیفی‬
‫مهم با موازات سطح‪-‬دستور این است که موازت سطح‪-‬نخ در سطح باال توسط نرمافزار یا برنامهنویس مشخص‬
‫میشود و اینکه نخها شامل صدها تا میلیونها دستور هستند که ممکن است بطور موازی اجرا شوند‪.‬‬

‫نخها میتوانند برای بهرهبرداری از موازات سطح‪-‬داده نیز استفاده شوند‪ ،‬هرچند که سربار آن از آنچه برای پردازنده‪-‬‬
‫های ‪ SIMD‬یا ‪ GPU‬دیدیم بیشتر است‪ .‬این سربار به این معنی است که اندازه دانه باید به اندازه کافی بزرگ‬
‫باشد تا از موازات بطور مؤثری بهره برداری شود‪ .‬به عنوان مثال‪ ،‬هرچندکه یک پردازنده برداری یا ‪ GPU‬ممکن‬
‫است قادر به موازی سازی مفید عملیات در بردارهای کوچک باشد‪ ،‬اندازه دانه منتج وقتیکه موازات بین تعداد زیادی‬
‫نخ تقسیم شود ممکن است آنقدر کم باشد که سربار ایجاد شده بهرهبرداری از موازات را احتماالٌ برای یک ‪MIMD‬‬
‫هزینه بر کند‪( .‬فصل ‪)2‬‬

‫چندپردازندههای حافظه‪-‬مشترک موجود براساس تعداد پردازندههایی که دارند‪ ،‬در دو کالس قرار میگیرند که‬
‫سازمان حافظه و استراتژی ارتباطی را نیز دیکته میکنند‪ .‬به چندپردازندهها براساس سازمان حافظهشان اشاره‬
‫میکنیم زیرا تعداد پردازندهها در طول زمان در حال تغییر است‪.‬‬

‫گروه اول که به آنها چندپردازندههای متقارن (حافظه‪-‬مشترک)‪ ،SMP ،‬یا چندپردازندههای حافظه‪-‬مشترک متمرکز‬
‫میگوییم‪ ،‬تعداد کمی هسته‪ ،‬معموالً هشت تا یا کمتر دارند‪ .‬در چندپردازندههایی که تعداد کمی پردازنده دارند‪،‬‬
‫امکان اشتراک یک حافظه متمرکز بطوریکه همه پردازندهها دسترسی مساوی به آن داشته باشند وجود دارد به‬
‫همین دلیل به آن متقارن میگویند‪ .‬در تراشههای چندهستهای‪ ،‬حافظه بروشی متمرکز بین همه هستهها به اشتراک‬
‫گذاشته میشود و همه چندهستههای موجود ‪ SMP‬هستند‪ .‬وقتیکه بیشتر از یک چندهسته متصل میشوند‪،‬‬
‫حافظههای مجزایی برای هر چندهسته وجود دارند‪ ،‬بنابراین حافظه توزیع شده است نه متمرکز‪.‬‬

‫به معماریهای ‪ SMP‬گاهی اوقات چند پردازندههای دسترسی حافظه متحدالشکل (‪ ،UMA‬فصل اول) میگویند‬
‫زیرا همه پردازندهها تأخیر یکسانی از حافظه دارند حتی اگر حافظه در چندین بانک سازماندهی شده باشد‪ .‬معماری‬
‫‪ SMP‬در شکل ‪ 1-9‬نشان داده شده است‪ .‬معماری ‪ SMP‬موضوع بخش ‪ 2-9‬میباشد‪ ،‬و روش را با یک‬
‫چندهستهای توضیح میدهیم‪.‬‬
‫کانون نشر علوم‬ ‫‪| 482‬‬

‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬

‫یک یا چند سطح‬ ‫یک یا چند سطح‬ ‫یک یا چند سطح‬ ‫یک یا چند سطح‬ ‫حافظههای‬
‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫حافظه نهان‬ ‫نهان خصوصی‬

‫حافظه نهان مشترک‬

‫حافظه اصلی‬ ‫سیستم ‪I/O‬‬

‫شکل ‪ :1-9‬ساختار پایه چندپردازنده حافظه‪-‬مشترک متمرکز براساس یک تراشه چندهستهای‪ .‬چند زیرسیستم پردازنده‪-‬حافظه نهان‪،‬‬
‫حافظه فیزیکی مشابهی را به اشتراک می گذارند‪ ،‬معموالً یک سطح از حافظه نهان مشترک‪ ،‬و یک یا چند سطح از حافظه نهان به ازای‬
‫هر هسته خصوصی است‪ .‬خصوصیت کلیدی این معماری‪ ،‬زمان دسترسی برابر به همه حافظهها از همه پردازندهها است‪ .‬در یک چندتراشه‬
‫حافظه نهان مشترک حذف میشود و گذرگاه یا شبکه میان ارتباطی که پردازندهها را به حافظه وصل میکند بین تراشهها کار میکند‪.‬‬

‫روش دوم شامل چندپردازندههایی با حافظه فیزیکی توزیع شده است که به آن حافظه مشترک توزیع شده )‪(DSM‬‬
‫میگویند‪ .‬شکل ‪ 2-9‬این مدل را نشان میدهد‪ .‬برای پشتیبانی از تعداد بیشتری پردازنده‪ ،‬حافظه باید بین پردازندهها‬
‫توزیع شده باشد نه متمرکز‪ ،‬در غیر اینصورت سیستم حافظه نمیتواند با سرعت به تقاضاهای تعداد زیادی پردازنده‬
‫پاسخ دهد‪ .‬اگر کارایی پردازنده و انجمنپذیری در پهنای باند حافظه پردازنده بهبود نیابد‪ ،‬نمیتوان تعداد‬
‫چندپردازندهها را در حافظه توزیع شده افزایش داد‪ .‬معرفی پردازندههای چندهستهای به این معنی است که حتی‬
‫چندپردازندههای دو‪-‬تراشه حافظه توزیع شده استفاده میکنند و برای اتصال آنها از شبکههای ایستا و پویا استفاده‬
‫میشود‪( .‬فصل ‪.)2‬‬

‫توزیع حافظه بین گرهها پهنای باند را افزایش داده و تأخیر به حافظه محلی را کاهش میدهد‪ .‬به یک چندپردازنده‬
‫‪ DSM‬یک ‪ NUMA‬نیز می گویند زیرا زمان دسترسی وابسته به مکان یک کلمه داده در حافظه است‪ .‬عیب‬
‫کلیدی یک ‪ DSM‬این است که ارتباط داده بین پردازندهها گاهی اوقات خیلی پیچیده میشود و ‪ DSM‬نیازمند‬
‫توجه بیشتر نرم افزار برای افزایش پهنای باند حافظه است‪ .‬چون همه چندپردازندههای چندهستهای با بیشتر از یک‬
‫تراشه پردازنده‪ ،‬از حافظه توزیع شده استفاده میکنند‪ ،‬عملیات حافظه توزیع شده چند پردازنده را از این دید توضیح‬
‫میدهیم‪( .‬توضیحات بیشتر در این زمینه در فصل اول ارایه شده است)‪.‬‬

‫در هر دو معماریهای ‪ DSM‬و ‪ ،SMP‬ارتباطات بین نخها از طریق یک فضای آدرس مشترک اتفاق میافتد‪ ،‬به‬
‫این معنی که یک مراجعه حافظه می تواند توسط هر پردازنده به هر مکان حافظه انجام شود‪ ،‬با فرض اینکه حقوق‬
‫‪| 483‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫دسترسی صحیح داشته باشند‪ .‬اصطالح حافظه مشترک مجتمع با ‪ SMP‬و ‪ DSM‬اشاره به این حقیقت دارد که‬
‫فضای آدرس مشترک است‪.‬‬

‫در مقایسه‪ ،‬خوشهها و کامپیوترهای مقیاس ورهاوس فصل بعد شبیه کامپیوترهای منفرد متصل شده توسط یک‬
‫شبکه میباشند و حافظه یک پردازنده نمیتواند توسط پردازنده دیگری بدون کمک قراردادهای نرمافزاری اجرا شده‬
‫روی هر دو پردازنده دسترسی شود‪ .‬در چنین طرحهایی‪ ،‬قراردادهای انتقال‪ -‬پیام برای ارتباط داده بین پردازندهها‬
‫استفاده میشوند‪( .‬فصل ‪)7‬‬
‫‪ MP‬چند‬ ‫‪ MP‬چند‬ ‫‪ MP‬چند‬ ‫‪ MP‬چند‬
‫هستهای‬ ‫هستهای‬ ‫هستهای‬ ‫هستهای‬

‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫حافظه‬


‫‪I/O‬‬ ‫‪I/O‬‬

‫شبکه میان ارتباطی‬

‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬ ‫‪I/O‬‬


‫حافظه‬
‫‪ MP‬چند‬ ‫‪ MP‬چند‬ ‫‪ MP‬چند‬ ‫‪ MP‬چند‬
‫هستهای‬ ‫هستهای‬ ‫هستهای‬ ‫هستهای‬

‫شکل ‪ :2-9‬معماری پایهی یک چندپردازنده حافظه‪-‬توزیع شده در سال ‪ 2011‬که معموالً دربرگیرنده یک تراشه چندپردازنده چندهستهای‬
‫با حافظه و ‪ I/O‬الحاقی و یک رابط به یک شبکه میان ارتباطی است که همه گرهها را به هم متصل میکند‪ .‬هر هسته پردازنده کل‬
‫حافظه را به اشتراک می گذارد‪ ،‬هرچندکه زمان دسترسی به حافظه الحاقی به تراشه هسته سریعتر از زمان دسترسی به حافظه دور است‪.‬‬

‫چالشهای پردازش موازی‬

‫کاربرد چندپردازندهها از اجرای کارهای مستقل بدون ارتباط‪ ،‬تا اجرای برنامههای موازی که نخها باید برای اتمام‬
‫کار ارتباط برقرار کنند میباشد‪ .‬دو مانع مهم‪ ،‬که هر دو با قانون امدال قابل توضیح است‪ ،‬پردازش موازی را چالش‬
‫برانگیز میکند‪ .‬درجه مشکل بودن یا سادگی این موانع توسط کاربرد و معماری مشخص میشود‪.‬‬

‫اولین مانع طریقه عمل با موازات محدود قابل دسترس در برنامهها است‪ ،‬و دومین مانع از هزینه نسبتاً باالی‬
‫ارتباطات نشأت میگیرد‪ .‬محدودیت در موازات قابل دسترس‪ ،‬رسیدن به افزایش سرعت در هر پردازنده موازی را‬
‫مشکل میکند که در مثال ‪ 1-9‬نشان داده شود‪.‬‬

‫مثال ‪ :1-9‬فرض کنید که میخواهید به افزایش سرعت ‪ 80‬با ‪ 100‬پردازنده برسید‪ .‬چه درصدی از محاسبات‬
‫اصلی باید ترتیبی باشد؟‬

‫پاسخ‪ :‬از قانون امدال در فصل ‪ 1‬داریم‪:‬‬


‫کانون نشر علوم‬ ‫‪| 484‬‬

‫‪1‬‬
‫= 𝑝𝑢𝑑𝑒𝑒𝑝𝑠‬
‫𝑑𝑒𝑐𝑛𝑎‪𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑒𝑛ℎ‬‬
‫) 𝑑𝑒𝑐𝑛𝑎‪+ (1 − 𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑒𝑛ℎ‬‬
‫𝑑𝑒𝑐𝑛𝑎‪𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝑒𝑛ℎ‬‬

‫به منظور سادگی‪ ،‬فرض می کنیم که برنامه فقط در دو مد عمل کند‪ :‬موازی با استفاده از همه پردازندهها که مد‬
‫توسعه یافته است‪ ،‬یا ترتیبی با فقط استفاده از یک پردازنده‪ .‬با این فرض‪ ،‬افزایش سرعت در مد توسعه یافته برابر‬
‫با تعداد پردازندهها است‪ .‬با جایگذاری در معادله قبل داریم‪:‬‬
‫‪1‬‬
‫= ‪80‬‬
‫𝑙𝑒𝑙𝑙𝑎𝑟𝑎𝑝𝑛𝑜𝑖𝑡𝑐𝑎𝑟𝐹‬
‫) 𝑙𝑒𝑙𝑙𝑎𝑟𝑎𝑝𝑛𝑜𝑖𝑡𝑐𝑎𝑟𝐹 ‪+ (1 −‬‬
‫‪100‬‬
‫با ساده کردن این معادله داریم‪:‬‬
‫‪0.8 × 𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑝𝑎𝑟𝑎𝑙𝑙𝑒𝑙 + 80 × (1 − 𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑝𝑎𝑟𝑎𝑙𝑙𝑒𝑙 ) = 1‬‬
‫‪→ 80 − 79.2 × 𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑝𝑎𝑟𝑎𝑙𝑙𝑒𝑙 = 1‬‬
‫‪80 − 1‬‬
‫= 𝑙𝑒𝑙𝑙𝑎𝑟𝑎𝑝𝑛𝑜𝑖𝑡𝑐𝑎𝑟𝐹‬ ‫‪= 0.9975‬‬
‫‪79.2‬‬
‫بنابراین برای رسیدن به افزایش سرعت ‪ 80‬با ‪ 100‬پردازنده‪ ،‬فقط ‪ 0.25%‬از محاسبات اصلی میتوانند ترتیبی‬
‫باشند‪ .‬مطمئناً برای رسیدن به افزایش سرعت خطی (افزایش سرعت ‪ n‬با ‪ n‬پردازنده)‪ ،‬کل برنامه باید موازی باشد‬
‫و هیچ بخش از آن نباید ترتیبی باشد‪ .‬در عمل‪ ،‬برنامهها فقط در مد کامالً ترتیبی یا موازی کار نمیکنند‪ ،‬و تعدادی‬
‫از پردازندهها را در مد موازی استفاده میکنند‪(.‬فصل ‪)3‬‬

‫چالش عمده دیگر در پر دازش موازی تأخیر بزرگِ دسترسی دور در یک پردازنده موازی است‪ .‬در چندپردازندههای‬
‫حافظه‪-‬مشترک موجود‪ ،‬تبادل داده بین هستههای مجزا ممکن است به اندازه ‪ 30‬تا ‪ 50‬پالس هزینه داشته باشد و‬
‫بین هستهها در تراشههای مجزا از ‪ 100‬تا ‪ 500‬یا بیشتر پالس ساعت (برای چندپردازندههای مقیاس بزرگ)‪ ،‬وابسته‬
‫به مکانیزم ارتباطی‪ ،‬نوع شبکه ارتباطی‪ ،‬و مقیاس چندپردازنده هزینه دارد‪ .‬اثر تأخیرات ارتباطی طوالنی قابل توجه‬
‫است‪ .‬به مثال ‪ 2-9‬دقت کنید‪.‬‬

‫مثال ‪ :2-9‬فرض کنید که یک کاربرد داریم که روی یک چند‪-‬پردازنده با ‪-32‬پردازنده اجرا میشود‪ ،‬که مدیریت‬
‫مراجعات راه دور آن ‪ 200ns‬طول میکشد‪ .‬برای این کاربرد‪ ،‬فرض کنید که همه مراجعات بجز آنهایی که شامل‬
‫اصابت در حافظه محلی سلسله مراتب هستند کمی خوشبینانه هستند‪ .‬پردازندهها روی تقاضای دور متوقف میشوند‬
‫و نرخ ساعت پردازنده ‪ 3.3GHz‬میباشد‪ .‬اگر ‪ CPI‬پایه ‪ 0.5‬باشد‪ ،‬هنگامیکه هیچ ارتباطی وجود ندارد‪ ،‬چندپردازنده‬
‫چقدر سریعتر از حالتی است که ‪ 0.2%‬دستورات یک مراجعه راه دور باشند؟‬

‫پاسخ‪ :‬ابتدا ‪ CPI‬را محاسبه میکنیم‪ CPI .‬مؤثر برای چندپردازنده با ‪ 0.2%‬مراجعات راه دور عبارت است از‪:‬‬
‫‪CPI=Base CPI+Remote request Rate×Remote request cost=0.5+0.2%×Remote request cost‬‬
‫هزینه درخواست راه دور عبارت است از‪:‬‬
‫𝑠𝑛‪𝑅𝑒𝑚𝑜𝑡𝑒 𝑎𝑐𝑐𝑒𝑠𝑠 𝑐𝑜𝑠𝑡 200‬‬
‫=‬ ‫𝑠𝑒𝑙𝑐𝑦𝑐 ‪= 666‬‬
‫𝑒𝑚𝑖𝑡 𝑒𝑙𝑐𝑦𝐶‬ ‫𝑠𝑛‪0.3‬‬
‫‪| 485‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫بنابراین میتوانیم ‪ CPI‬را محاسبه کنیم‪.‬‬


‫‪CPI=0.5+1.2=1.7‬‬
‫چندپردازنده با همه مراجعات محلی ‪ 1.7/0.5=3.4‬برابر سریعتر است‪ .‬در عمل‪ ،‬تجزیه تحلیل کارایی خیلی‬
‫پیچیده تر است‪ ،‬زیرا کسری از مراجعات غیر ارتباطی در سلسله مراتب محلی فقدان میدهد و زمان دسترسی دور‬
‫یک مقدار ثابت نیست‪ .‬به عنوان مثال‪ ،‬هزینه یک مراجعه دور میتواند کمی بدتر شود‪ ،‬زیرا تداخل بوجود آمده با‬
‫مراجعات زیاد که سعی در استفاده از شبکه اتصالی سراسری دارند منجر به افزایش تأخیر میشود‪.‬‬

‫این مشکالت یعنی موازات ناکافی و تأخیر طوالنی دسترسی دور‪ ،‬دو تا از بزرگترین چالشها در استفاده از‬
‫چندپردازندهها هستند‪ .‬مسأله موازات ناکافی میتواند بطور ابتدایی توسط نرمافزار با الگوریتمهای جدید که کارایی‬
‫موازات بهتری ارائه میدهند بهبود یابد‪ .‬کاهش اثر تأخیر طوالنی راه دور میتواند با معماری و توسط برنامهنویس‬
‫کم شود‪ .‬به عنوان مثال‪ ،‬میتوانیم فرکانس دسترسیهای راه دور را یا با مکانیزمهای سخت افزاری‪ ،‬مثل ذخیره‬
‫کردن دادههای مشترک در حافظه نهان‪ ،‬یا مکانیزمهای نرمافزاری‪ ،‬مثل ساختار بندی مجدد دادهها بطوریکه‬
‫دسترسیهای بیشتری محلی شوند‪ ،‬کاهش دهیم‪ .‬می توان تأخیر را با استفاده از چندنخی یا با استفاده از پیش‬
‫برداشت کم کرد‪ .‬اکثر این فصل تمرکز ما روی تکنیکهای کاهش اثر تأخیر ارتباطی دور است‪.‬‬

‫‪ -2-9‬معماری های حافظه‪-‬مشترک متمرکز‬


‫این مشاهده که استفاده از حافظههای نهان چندسطحه و بزرگ میتواند بطور قابل توجهی تقاضاهای پهنای باند‬
‫حافظه یک پردازنده را کاهش دهد بینش کلیدی است که محرک چندپردازندههای حافظه متمرکز است‪ .‬در ابتدا‪،‬‬
‫این پردازندهها تک هستهای بودند و یک بورد کامل را اشغال میکردند‪ ،‬و حافظه روی یک گذرگاه مشترک قرار‬
‫داده میشد‪ .‬اخیراً‪ ،‬در پردازندههای با کارایی باال‪ ،‬تقاضاهای حافظه از قابلیت گذرگاهها پیش افتادهاند‪ ،‬ریزپردازنده‪-‬‬
‫های اخیر مستقیماً حافظه را به یک تراشه تک متصل میکنند‪ ،‬که گاهی به آن گذرگاه حافظه یا خصوصی میگویند‬
‫تا آنرا از گذرگاه ‪ I/O‬متمایز کنند‪ .‬دسترسی به یک حافظه محلی تراشه چه برای یک عمل ‪ I/O‬یا برای یک‬
‫دسترسی از تراشه دیگر نیازمند حرکت از طریق تراشهای است که مالک حافظه است‪ .‬بنابراین‪ ،‬دسترسی به حافظه‬
‫نامتقارن است‪ :‬برای حافظه محلی سریعتر است و برای حافظه دور کندتر‪.‬‬

‫ماشینهای حافظه‪-‬مشترک متقارن معموالً ذخیره کردن دادههای خصوصی و مشترک در حافظه نهان را پشتیبانی‬
‫میکنند‪ .‬دادههای خصوصی توسط یک پردازنده استفاده میشوند‪ ،‬در حالیکه داده مشترک توسط چندپردازنده استفاده‬
‫میشوند‪ ،‬که لزوماً نیازمند ارتباط از طریق پردازندهها برای خواندن و نوشتن داده مشترک است‪ .‬وقتیکه یک داده‬
‫خصوصی در حافظه نهان ذخیره میشود‪ ،‬مکان آن به حافظه نهان مهاجرت میکند‪ ،‬و باعث کاهش زمان متوسط‬
‫دسترسی و همچنین پهنای باند حافظه مورد نیاز میشود‪ .‬چون هیچ پردازنده دیگری از داده استفاده نمیکند‪ ،‬رفتار‬
‫برنامه مشابه یک تکپردازنده است‪ .‬وقتیکه داده مشترک در حافظه نهان ذخیره میشود‪ ،‬مقدار مشترک ممکن‬
‫است در چندین حافظه نهان تکرار شود‪ .‬به منظور کاهش تأخیر دسترسی و پهنای باند حافظه مورد نیاز‪ ،‬این تکرار‬
‫باعث کاهش تداخل برای خواندن همزمان چند پردازنده میشود‪ .‬ذخیره کردن دادههای مشترک در حافظه نهان‬
‫کانون نشر علوم‬ ‫‪| 486‬‬

‫باعث ایجاد مسأله جدیدی بنام همبستگی حافظه نهان میشود‪ .‬که این موضوع بطور مفصل در بخش ‪ 2-7‬بررسی‬
‫شد و جهت یادآوری از قراردادهای تجسس یا براساس دایرکتوری جهت غلبه بر این مسأله استفاده میشود‪:‬‬

‫براساس دایرکتوری‪ -‬وضعیت اشتراک یک بلوک خاص از حافظه فیزیکی در یک مکان نگه داشته‬ ‫•‬
‫میشود که به آن دایرکتوری میگویند‪ .‬دو نوع دایرکتوری داریم‪ .‬در ‪ SMP‬دایرکتوری متمرکز و در‬
‫‪ DSM‬دایرکتوری توزیع شده استفاده میشود‪.‬‬
‫جاسوسی‪ -‬بجای نگه داشتن حالت اشتراک در یک دایرکتوری‪ ،‬هر حافظه نهانی که یک کپی از یک‬ ‫•‬
‫بلوک داده از حافظه فیزیکی دارد می تواند وضعیت اشتراک یک بلوک را ردیابی کند‪ .‬در یک ‪،SMP‬‬
‫حافظههای نهان معموالً همگی از طریق رسانه همهپخشی (مثالً یک گذرگاه) قابل دسترس هستند و‬
‫همه کنترلهای حافظه نهان رسانه را جاسوسی یا مانیتور میکنند تا مشخص کنند چه موقع آنها یک‬
‫کپی از بلوک درخواست داده شده روی گذرگاه یا سوئیچ دارند‪ .‬از جاسوسی همچنین میتوان به عنوان‬
‫قرارداد همبستگی برای چندپردازندههای چندتراشهای استفاده کرد و بعضی طرحها از قرارداد جاسوسی‬
‫روی یک قرارداد دایرکتوری در داخل هر چندهسته پشتیبانی میکنند‪.‬‬

‫محدودیتهای چندپردازندههای حافظه‪-‬مشترک متقارن و قراردادهای جاسوسی‬

‫هرچه تعداد پردازندهها در یک چندپردازنده زیاد میشود‪ ،‬یا تقاضاهای هر پردازنده پیشرفت میکند‪ ،‬هر منبع‬
‫متمرکزی در سیستم می تواند یک گلوگاه باشد‪ .‬با استفاده از اتصال پهنای باند بزرگتر قابل دسترس روی‪-‬تراشه و‬
‫یک حافظه نهان ‪ L3‬مشترک‪ ،‬که از حافظه سریعتر است‪ ،‬طراحان باید چهار تا هشت هسته کارایی‪-‬باال را به روشی‬
‫متقارن پشتیبانی کنند‪.‬‬

‫پهنای باند جاسوسی در حافظههای نهان نیز به یک مشکل تبدیل میشود‪ ،‬زیرا هر حافظه نهان باید هر فقدان روی‬
‫حافظه نهان را تست کند‪ .‬تکرار تگها یک راه حل برای این مشکل است‪ .‬راه حل دیگر که در بعضی چندهستههای‬
‫اخیر قرار دارد‪ ،‬قرار دادن یک دایرکتوری در بیرونیترین حافظه نهان میباشد‪ .‬دایرکتوری بطور صریح مشخص‬
‫میکند کدام حافظه نهان پردازنده یک کپی از هر عنصر در بیرونیترین حافظه نهان دارد‪ .‬این روش توسط اینتل‬
‫روی ‪ i7‬و سریهای ‪ Xeon 7000‬استفاده میشود‪ .‬استفاده از این دایرکتوری گلوگاه گذرگاه را حذف نمیکند‬
‫ولی از دایرکتوری توزیع شده بهتر است‪.‬‬

‫چگونه یک طراح میتواند پهنای باند حافظه را برای پشتیبانی پردازندههای بیشتر یا سریعتر افزایش دهد؟ برای‬
‫افزایش پهنای باند ارتباطی بین پردازندهها و حافظه‪ ،‬طراحان چندین گذرگاه را به عنوان شبکه میان ارتباطی استفاده‬
‫میکنند‪ ،‬مثل کراسبار یا شبکههای نقطه‪-‬به‪-‬نقطه‪ .‬در چنین طرحهایی سیستم حافظه (چه حافظه اصلی یا یک‬
‫حافظه نهان مشترک) می توانند در چندین بانک فیزیکی پیکربندی شوند تا پهنای باند مؤثر حافظه ارتقا یابد در‬
‫حالیکه زمان دسترسی یکنواخت به حافظه حفظ شود‪ .‬شکل ‪ 3-9‬نشان میدهد که چگونه چنین سیستمی وقتیکه‬
‫روی یک چند‪-‬هسته تک‪ -‬تراشه پیاده شود‪ ،‬خواهد بود‪ .‬هرچندکه چنین روشی برای مجاز بودن بیشتر از چهار‬
‫‪| 487‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫هسته متصل به یک تراشه ممکن است استفاده شود‪ ،‬اما به خوبی برای یک چند‪-‬پردازنده چندتراشه مقیاسپذیر‬
‫نیست‪ ،‬زیرا حافظه به تراشههای چندهسته منفرد الحاق شده است و متمرکز نیست‪.‬‬

‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬

‫یک یا چند سطح‬ ‫یک یا چند سطح‬ ‫یک یا چند سطح‬ ‫یک یا چند سطح‬
‫از حافظه نهان‬ ‫از حافظه نهان‬ ‫از حافظه نهان‬ ‫از حافظه نهان‬
‫خصوصی‬ ‫خصوصی‬ ‫خصوصی‬ ‫خصوصی‬

‫شبکه میان ارتباطی‬

‫بانک ‪ 0‬حافظه‬ ‫بانک ‪ 1‬حافظه‬ ‫بانک ‪ 2‬حافظه‬ ‫بانک ‪ 3‬حافظه‬


‫نهان مشترک‬ ‫نهان مشترک‬ ‫نهان مشترک‬ ‫نهان مشترک‬

‫حافظه‬ ‫سیستم ‪I/O‬‬

‫شکل ‪ :3-9‬یک چندپردازنده تک‪ -‬چندهستهای با دسترسی حافظه یکنواخت از طریق یک حافظه‬
‫نهان مشترک بانک شده و یک شبکه میان اتصالی نه یک گذرگاه‪.‬‬

‫‪ AMD Opteron‬روش بینابین قرارداد جاسوسی و دایرکتوری ارائه داده است‪ .‬حافظه مستقیماً به هر تراشه‬
‫چندهسته متصل شده است و تا چهار تراشه چند هسته میتوانند متصل شوند‪ .‬سیستم ‪ NUMA‬است زیرا حافظه‬
‫محلی گاهی اوقات سریعتر است‪ .‬اپترون قراردارد همبستگیش را با استفاده از لینکهای نقطه‪-‬به‪-‬نقطه پیادهسازی‬
‫میکند تا با سه تراشه دیگر بطور همهپخشی ارتباط برقرار کند‪ .‬چون لینکهای بین پردازنده مشترک نیستند‪ ،‬تنها‬
‫راهی که یک پردانده می تواند بداند چه موقع یک عمل نامعتبر سازی کامل شده است توسط تصدیق (‪ )ack‬صریح‬
‫است‪ .‬بنابراین‪ ،‬قرارداد همبستگی از همه پخشی برای پیدا کردن کپیهای مشترک استفاده میکند‪ ،‬شبیه یک‬
‫قرارداد جاسوسی‪ ،‬اما برای تنظیم عملیات از ‪ ack‬شبیه یک قرارداد دایرکتوری استفاده میکند‪ .‬بعضی نرمافزارها با‬
‫چندپردازنده اپترون شبیه ‪ UMA‬رفتار میکنند چون حافظه محلی در اپترون فقط گاهی اوقات سریعتر از حافظه‬
‫دور است‪.‬‬

‫یک قرارداد همبستگی جاسوسی میتواند بدون گذرگاههای متمرکز استفاده شود‪ ،‬اما هنوز هم نیازمند همه پخشی‬
‫است تا حافظههای نهان منفرد را جاسوسی کند‪ .‬این ترافیک همبستگی حافظه نهان محدودیت دیگری روی‬
‫مقیاسپذیری و سرعت پردازندهها ایجاد میکند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 488‬‬

‫‪ -3-9‬کارایی چندپردازنده های حافظه‪-‬مشترک متقارن‬


‫در یک چندهستهای که از قرارداد همبستگی تجسس استفاده میکند‪ ،‬چند پدیده مختلف برای تشخیص کارایی‬
‫باهم ترکیب می شوند‪ .‬باالخص‪ ،‬کارایی حافظه نهان کلی‪ ،‬ترکیبی از رفتار ترافیک فقدان حافظه نهان تک‪-‬پردازنده‬
‫و ترافیک ایجاد شده توسط ارتباطات میباشد که منتج به نامعتبرسازی و فقدانهای حافظه نهان میشود‪ .‬تغییر‬
‫تعداد پردازنده‪ ،‬اندازه حافظه نهان و اندازه بلوک میتواند بر این دو جزء نرخ فقدان به روشهای گوناگون تأثیر‬
‫بگذارد و منجر به رفتار کلی سیستم شود که ترکیبی از دو تأثیر است‪.‬‬

‫همانطور که قبالً گفتیم نرخ فقدان تکپردازنده به سه کالس ظرفیت‪ ،‬اجباری و تداخل تقسیم میشوند‪ .‬به طور‬
‫مشابه فقدانهای نشأت گرفته از ارتباطات بینپردازنده‪ ،‬که به آنها فقدانهای همبستگی میگویند‪ ،‬میتوانند به دو‬
‫منبع مجزا تقسیم شوند‪.‬‬

‫اولین منبع که فقدانهای اشتراک درست نامیده می شوند از ارتباط داده از طریق مکانیزم همبستگی حافظه نهان‬
‫نشأت می گیرند‪ .‬در یک قرارداد براساس نامعتبرسازی اولین نوشتن توسط یک پردازنده به یک بلوک حافظه نهان‬
‫مشترک منجر به یک نامعتبرسازی میشود که مالکیت آن بلوک را مشخص میکند‪ .‬به عالوه‪ ،‬وقتیکه پردازنده‬
‫دیگر میخواهد کلمه اصالح شده در آن بلوک حافظه نهان را بخواند‪ ،‬یک فقدان اتفاق میافتد و بلوک نتیجه منتقل‬
‫میشود‪ .‬هر دوی این فقدانها به عنوان فقدانهای مشترک درست کالس بندی میشوند زیرا مستقیماً از اشتراک‬
‫داده بین پردازندهها نشأت میگیرند‪.‬‬

‫اثر دوم که اشتراک غلط نامیده میشود از یک الگوریتم همبستگی براساس نامعتبر سازی با یک بیت معتبر به ازای‬
‫هر بلوک نشأت میگیرد‪ .‬اشتراک غلط وقتیکه یک بلوک نامعتبر میشود اتفاق میافتد (مراجعات بعدی منتج به‬
‫فقدان میشوند)‪ ،‬زیرا بعضی کلمات در بلوک‪ ،‬بجز کلمهای که خوانده میشود‪ ،‬نوشته میشوند‪ .‬اگر کلمه نوشته‬
‫شده واقعاً توسط یک پردازنده که سیگنال نامعتبرسازی را دریافت میکند استفاده شود‪ ،‬آنگاه مراجعه یک مراجعه‬
‫درست است و منجر به یک فقدان مستقل از اندازه بلوک میشود‪ .‬اگر کلمه نوشته شده و خوانده شده متفاوت باشند‬
‫یک نامعتبرسازی منجر به یک مقدار جدید که باید محاوره شود نخواهد شد‪ ،‬اما فقط منجر به یک فقدان حافظه‬
‫نهان اضافی می شود‪ ،‬بنابراین یک فقدان اشتراک غلط است‪ .‬در یک فقدان اشتراک غلط‪ ،‬بلوک به اشتراک گذاشته‬
‫میشود‪ ،‬اما هیچ کلمهای در حافظه نهان واقعاً به اشتراک گذاشته نمیشود‪ ،‬و فقدان اتفاق نخواهد افتاد اگر اندازه‬
‫بلوک یک کلمه باشد‪ .‬مثال ‪ 3-9‬مسأله را واضحتر میکند‪.‬‬

‫مثال ‪ :3-9‬فرض کنید کلمات ‪ x1‬و ‪ x2‬در یک بلوک مشابه حافظه نهان باشند‪ ،‬و در وضعیت مشترک هر دو‬
‫پردازنده ‪ P1‬و ‪ P2‬باشند‪ .‬به رشته رخدادهای زیر دقت کنید‪ ،‬کدامیک فقدان اشتراک درست‪ ،‬یک فقدان اشتراک‬
‫غلط یا یک اصابت میباشند‪.‬‬

‫هر فقدانی که اتفاق بیافتد و اندازه بلوک یک کلمه باشد‪ ،‬یک فقدان اشتراک درست میباشد‪.‬‬
‫‪| 489‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫‪P2‬‬ ‫‪P1‬‬ ‫زمان‬


‫‪Write x1‬‬ ‫‪1‬‬
‫‪Read x2‬‬ ‫‪2‬‬
‫‪Write x1‬‬ ‫‪3‬‬
‫‪write x2‬‬ ‫‪4‬‬
‫‪read x2‬‬ ‫‪5‬‬
‫پاسخ‪ :‬کالسبندی ها براساس مراحل زمانی بصورت زیر است‪:‬‬

‫این رخداد یک فقدان اشتراک صحیح است‪ ،‬زیرا ‪ x1‬توسط ‪ P2‬خوانده شده و نیازمند نامعتبرسازی از‬ ‫‪.1‬‬
‫‪ P2‬است‪.‬‬
‫این رخداد یک فقدان اشتراک غلط است‪ ،‬زیرا ‪ x2‬توسط نوشتن ‪ x1‬در ‪ p1‬نامعتبرشده است‪ ،‬اما مقدار‬ ‫‪.2‬‬
‫‪ x1‬در ‪ P2‬استفاده نشده است‪.‬‬
‫این رخداد یک فقدان اشتراک غلط است‪ ،‬زیرا بلوک شامل ‪ x1‬به خاطر خواندن در ‪ P2‬مشترک نشانه‬ ‫‪.3‬‬
‫گذاری شده است‪ ،‬اما ‪ x1 ،P2‬را نخواند‪ .‬بلوک حافظه نهان شامل ‪ x1‬بعد از خواندن توسط ‪ P2‬در‬
‫وضعیت مشترک خواهد بود‪ ،‬یک فقدان نوشتن برای بدستآوردن دسترسی انحصاری به بلوک نیاز‬
‫میشود‪ .‬در بعضی قراردادها به این یک قرار داد ارتقا میگویند‪ ،‬که یک نامعتبرسازی گذرگاه تولید میکند‬
‫اما بلوک حافظه نهان را منتقل نمیکند‪.‬‬
‫این رخداد به دلیل مرحله ‪ 3‬یک فقدان اشتراک غلط است‪.‬‬ ‫‪.4‬‬
‫این رخداد یک فقدان اشتراک درست است‪ ،‬زیرا مقدار در حال خواندن توسط ‪ P2‬نوشته شده است‪.‬‬ ‫‪.5‬‬

‫هرچندکه اثرات فقدانهای درست و غلط را در بارکاری تجاری خواهیم دید‪ ،‬نقش فقدانهای همبستگی برای‬
‫کاربردهای قویاً متصل که مقدار زیادی داده کاربر را به اشتراک میگذارند‪ ،‬قابل توجهتر است‪.‬‬

‫یک بارکاری تجاری‬

‫در این بخش‪ ،‬رفتار سیستم حافظهی یک چندپردازنده حافظه‪-‬مشترک چهار‪-‬پردازنده را وقتیکه یک بارکاری‬
‫تجاری همه‪-‬منظوره را اجرا میکند بررسی میکنیم‪ .‬این مطالعه با یک سیستم چهار‪-‬پردازنده آلفا در سال ‪1998‬‬
‫انجام شد‪ ،‬اما جامعترین و بینشآفرین ترین مطاله کارایی یک چند پردازنده روی چنین بارهای کاری میباشد‪ .‬نتایج‬
‫یا از یک سرور الفای ‪ 4100‬بدست میآیند یا از یک شبیه ساز قابل پیکربندی مدل شده بعد از آلفاسرور ‪ .4100‬هر‬
‫پردازنده در آلفا سرور ‪ 4100‬یک آلفا ‪ 21164‬میباشد که چهار دستور را در هر پالس ساعت منتشر میکند و با‬
‫سرعت ‪ 300MHz‬کار میکند‪.‬‬

‫با وجود اینکه نرخ ساعت پردازنده آلفا در این سیستم بطور قابل توجهی کمتر از پردازندههای سیستمهای طراحی‬
‫شده در سال ‪ 2010‬است‪ ،‬ساختار پایه سیستم‪ ،‬شامل پردازنده چهار‪-‬انتشاره و سلسله مراتب حافظه نهان سه‪-‬‬
‫سطحه‪ ،‬خیلی مشابه ‪ Intel i7‬چندهستهای و سایر پردازندهها میباشد که در جدول ‪ 1.9‬نشان داده شده است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 490‬‬

‫حافظههای نهان آلفا کوچکترند‪ ،‬همچنین زمانهای فقدان نیز از ‪ i7‬کمتر است‪ .‬بنابراین رفتار سیستم آلفا بینش‬
‫جالبی برای رفتار طرحهای چندهستهای مدرن ایجاد میکند‪.‬‬
‫‪Intel i7‬‬ ‫‪Alpha 21164‬‬ ‫سطح حافظه نهان خصوصیت‬
‫‪32KB I/ 32KB D 8KB I/ 8KBD‬‬ ‫اندازه‬
‫‪4-way I/ 8-way D‬‬ ‫انجمن پذیری نگاشت مستقیم‬
‫‪L1‬‬
‫‪64B‬‬ ‫‪32B‬‬ ‫اندازه بلوک‬
‫‪10‬‬ ‫‪7‬‬ ‫هزینه فقدان‬
‫‪256KB‬‬ ‫‪96KB‬‬ ‫اندازه‬
‫‪8-way‬‬ ‫انجمن پذیری ‪3-way‬‬
‫‪L2‬‬
‫‪64B‬‬ ‫‪32B‬‬ ‫اندازه بلوک‬
‫‪35‬‬ ‫‪21‬‬ ‫هزینه فقدان‬
‫‪2MB per core‬‬ ‫‪2MB‬‬ ‫اندازه‬
‫‪16-way‬‬ ‫انجمن پذیری نگاشت مستقیم‬
‫‪L3‬‬
‫‪64B‬‬ ‫‪64B‬‬ ‫اندازه بلوک‬
‫‪~100‬‬ ‫‪80‬‬ ‫هزینه فقدان‬
‫جدول ‪ :1-9‬خواص سلسله مراتب حافظه نهان ‪ Alpha 21164‬استفاده شده در این مطالعه و ‪ .Intel i7‬در ‪ i7‬اندازهها بزرگتر و‬
‫انجمن پذیری بیشتر است‪،‬همچنین هزینه فقدان نیز بیشتر است‪ ،‬بنابراین رفتار ممکن است کمی متفاوت باشد‪.‬‬

‫بارکاری استفاده شده برای این مطالعه شامل سه کاربرد است‪:‬‬

‫‪ .1‬یک بار کاری پردازش‪-‬تراکنش آنالین (‪ )OLTP1‬که بعد از ‪ TPC-B‬مدل شده است و از ‪Oracle‬‬
‫‪ 7.3.2‬به عنوان پایگاه داده استفاده میکند‪ .‬بار کاری شامل مجموعهای از پردازندههای کالینت که‬
‫درخواستها را تولید میکنند و یک مجموعه از سرورها که آنها را مدیریت میکنند‪ ،‬میباشد‪ .‬پردازههای‬
‫سرور ‪ 85%‬زمان کاربر را مصرف میکنند‪ ،‬و بقیه زمان برای کالینتها میباشد‪ .‬هرچند که تأخیر ‪I/O‬‬
‫با تنظیم دقیق و درخواستهای کافی برای اینکه پردازنده مشغول نگهداشته شود مخفی میشود ‪،‬‬
‫پردازههای سرور معموالً برای ‪ I/O‬بعد از حدود ‪ 25000‬دستور بلوکه میشوند‪.‬‬
‫‪ .2‬یک بارکاری سیستم پشتیبانی تصمیم (‪ ) DSS2‬براساس ‪ ،TPC-D‬که ‪ Oracle 7.3.2‬را به عنوان‬
‫پایگاه داده استفاده میکند‪ .‬بارکاری فقط دربرگیرنده ‪ 6‬تا از ‪ 17‬عدد پُرس و جوی‪ 3‬خواندن در ‪TPC-D‬‬
‫میباشد‪ ،‬البته ‪ 6‬پرس و جوی تست شده در برنامه محک محدوده فعالیتها در کل برنامههای محک را‬
‫پوشش میدهد‪ .‬برای مخفی کردن تأخیر ‪ ،I/O‬موازات هم در داخل پرس و جوها ‪ ،‬و هم بین کل پرس‬
‫و جو ها بهره برداری میشود‪ .‬فراخوانیهای بلوکه شده دارای تناوب کمتری از برنامه محک ‪OLTP‬‬
‫هستند‪ ،‬پرسوجوها قبل از بلوکه شدن حدود ‪ 1.5‬میلیون دستور هستند‪.‬‬

‫‪1‬‬
‫‪Online Transaction Processing‬‬
‫‪2‬‬
‫‪Decision Support System‬‬
‫‪3‬‬
‫‪Query‬‬
‫‪| 491‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫‪ .3‬یک برنامه محک جستجوی ایندکس وب (‪ )AltaVista‬براساس یک جستجو در ورژن حافظه نگاشت‬
‫شده به پایگاه داده آلتاویستا (‪ .)200GB‬حلقه داخلی کامالً بهینه شده است‪ .‬چون ساختار جستجو ایستا‬
‫است‪ ،‬همزمانی کمی بین نخها مورد نیاز است‪ .‬آلتا ویستا رایجترین موتور جستجوی وب قبل از ایجاد‬
‫گوگل بود‪.‬‬

‫جدول ‪ 2-9‬درصد زمان صرف شده در مد کاربر‪ ،‬کرنل‪ ،‬و حلقه بیکاری را نشان میدهد‪ .‬فرکانس ‪ I/O‬هم زمان‬
‫کرنل و هم زمان بیکاری را افزایش میدهد‪ .‬آلتاویستا که کل پایگاه داده جستجو را به داخل حافظه نگاشت میدهد‬
‫بطور فوق العادهای تنظیم شده است و کمترین زمان بیکاری و کرنل را نشان داده است‪.‬‬
‫درصد زمان بیکاری پردازنده‬ ‫درصد زمان کرنل‬ ‫درصد زمان استفاده شده‬ ‫برنامه محک‬
‫‪11‬‬ ‫‪18‬‬ ‫‪71‬‬ ‫‪OLTP‬‬
‫‪9‬‬ ‫‪4‬‬ ‫‪87‬‬ ‫‪( DSS‬میانگین بین همه پرس و جوها)‬
‫‪<1‬‬ ‫‪<1‬‬ ‫‪>98‬‬ ‫آلتا ویستا‬
‫جدول ‪ :2-9‬توزیع زمان اجرا در بارکاریهای تجاری‪ .‬برنامه محک ‪ OLTP‬بیشترین کسر زمان ‪ OS‬و بیکاری پردازنده را دارد (که‬
‫زمان انتظار ‪ I/O‬است)‪ .‬برنامه محک ‪ DSS‬زمان ‪ OS‬کمتری دارد ‪ ،‬زیرا ‪ I/O‬کمتری دارد‪ ،‬اما هنوز هم بیشتر از ‪9‬درصد بیکار است‪.‬‬
‫تنظیم فوقالعاده موتور جستجوی آلتا ویستا در این سنجش واضح است‪ .‬دادهها برای این بارکاری توسط ‪Barroso, Gharacholo,‬‬
‫]‪ and Bugnion[1998‬روی یک آلفاسرور چهار‪-‬پردازنده ‪ 4100‬جمعآوری شدهاند‪.‬‬

‫سنجش کارایی بارکاری تجاری‬

‫با مشاهده کل زمان اجرای پردازنده برای این برنامههای محک روی سیستم چهار‪-‬پردازنده شروع میکنیم‪ ،‬این‬
‫برنامههای محک زمان اجرای ‪I/O‬ی قابل توجهی دارند که در سنجش زمان پردازنده نادیده گرفته میشوند‪ .‬شش‬
‫پرس و جوی ‪ DSS‬را در یک برنامه محک گروه بندی میکنیم‪ ،‬و به آن میانگین رفتار میگوییم‪ CPI .‬مؤثر برای‬
‫این برنامههای محک بطور گستردهای متفاوت است‪ ،‬از ‪CPI‬ی ‪ 1.3‬برای جستجوی وب آلتاویستا تا میانگین‬
‫‪CPI‬ی ‪ 1.6‬برای ‪ DSS‬تا ‪ 7.0‬برای بارکاری ‪ .OLTP‬شکل ‪ 4-9‬نمودار زمان اجرای این سه برنامه محک را‬
‫نشان میدهد‪ .‬کارایی بارکاری ‪ DSS‬و آلتاویستا قابل قبول است‪ ،‬کارایی ‪ OLTP‬به خاطر کارایی ضعیف سلسله‬
‫مراتب حافظه‪ ،‬خیلی ضعیف است‪.‬‬

‫چون بارکاری ‪ OLTP‬متقاضی سیستم حافظه با تعداد زیادی فقدان ‪ L3‬میباشد‪ ،‬تمرکز ما روی اثر اندازه حافظه‬
‫نهان ‪ ،L3‬تعداد پردازنده‪ ،‬و اندازه بلوکِ برنامه محک ‪ OLTP‬است‪ .‬شکل ‪ 5-9‬اثرات افزایش اندازه حافظه نهان‬
‫را‪ ،‬با استفاده از حافظههای نهان انجمنی دو‪-‬راهه که تعداد زیادی از فقدانهای تداخل را کاهش میدهد‪ ،‬نشان‬
‫میدهد‪ .‬زمان اجرا وقتی حافظه نهان ‪ L3‬رشد میکند به خاطر کاهش فقدانهای ‪ L3‬بهبود مییابد‪ .‬وقتی اندازه از‬
‫‪ 1‬به ‪ 2‬مگابایت تغییر میکند بهره زیادی بدست میآید و از سایر تغییرات بهره کمی بدست میآید‪ .‬سوال این است‬
‫چرا؟‬
‫کانون نشر علوم‬ ‫‪| 492‬‬

‫شکل ‪ :4-9‬زمان اجرا برای سه برنامه (‪ )OLTP, DSS, AltaVista‬در بارکاری تجاری به چند قسمت تقسیم میشود‪ .‬اعداد‬
‫‪ DSS‬میانگین بین شش پرسو جوی مختلف میباشد‪ CPI .‬بطور گستردهای متفاوت است از ‪ 1.3‬برای آلتاویستا‪ ،‬تا‪ 1.61‬برای‬
‫پرس و جوهای ‪ ،DSS‬تا ‪ 7.0‬برای ‪ .OLTP‬سایر توقفها (‪ )other stalls‬شامل توقفهای منابع‪ ،‬پیشبینی غلط پرش‪ ،‬سد‬
‫حافظه‪ ،‬و فقدانهای ‪ TLB‬میشود‪ .‬برای این برنامههای محک‪ ،‬توقفهای خطلوله براساس منبع فاکتور پایه هستند‪ .‬این دادهها‬
‫رفتار دسترسیهای کاربر و کرنل ترکیب میشوند‪ .‬فقط ‪ OLTP‬کسر قابل توجهی از دسترسیهای کرنل را دارد‪ .‬و دسترسیهای‬
‫کرنل رفتار بهتری از دسترسیهای کاربر دارند!‬
‫برای فهم بهتر پاسخ این سؤال‪ ،‬نیازمند تشخیص اینکه چه فاکتورهایی در نرخ فقدان ‪ L3‬مشارکت دارند و وقتیکه‬
‫حافظه نهان ‪ L3‬رشد میکند چگونه تغییر میکنند میباشیم‪ .‬شکل ‪ 6-9‬تعداد سیکلهای دسترسی حافظه به ازای‬
‫هر دستور از پنج منبع را نشان میدهد‪ .‬دو تا از بزرگترین منابع سیکلهای دسترسی حافظه با ‪L3‬ی ‪1MB‬ی‬
‫فقدانهای تداخل دستور‪/‬ظرفیت میباشند‪ .‬با ‪L3‬ی بزرگتر این منابع اثر کمتری دارند‪ .‬متاسفانه‪ ،‬فقدانهای اجباری‪،‬‬
‫اشتراک غلط و اشتراک درست با ‪L3‬ی بزرگتر بدون تأثیر هستند‪ .‬بنابراین با ‪ 4MB‬و ‪ 8MB‬فقدانهای اشتراک‬
‫درست درصد عمدهای از فقدانها هستند‪ ،‬کمبود تغییر در فقدانهای درست منجر به کاهش محدود نرخ فقدان کلی‬
‫میشود وقتیکه اندازه حافظه نهان ‪ L3‬بیشتر از ‪ 2MB‬میشود‪.‬‬

‫افزایش اندازه حافظه نهان اکثر فقدانهای تک‪-‬پردازنده را حذف میکند در حالیکه فقدانهای چندپردازنده دست‬
‫نخورده باقی میمانند‪ .‬چگونه افزایش تعداد پردازندهها بر روی انواع مختلف فقدان تأثیر میگذارد؟ شکل‪ 7-9‬این‬
‫دادهها را با فرض پیکربندی پایه با یک حافظه نهان ‪L3‬ی انجمنی مجموعهای دو‪-‬راههی ‪ 2‬مگابایتی نشان‬
‫میدهد‪ .‬همانطور که ما انتظار داریم‪ ،‬افزایش در نرخ فقدان اشتراک درست‪ ،‬که با هیچ کاهش فقدان تک پردازندهای‬
‫جبران نمیشود‪ ،‬منجر به افزایش کلی در سیکلهای دسترسی حافظه به ازای هر دستور میشود‪.‬‬
‫‪| 493‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫شکل ‪ :5-9‬کارایی نسبی ‪ OLTP‬وقتیکه اندازه حافظه نهان ‪ ،L3‬که یک حافظه نهان انجمنی مجموعهای دو‪-‬راهه است‪ ،‬از ‪1‬تا‬
‫‪8‬مگابایت رشد میکند‪ .‬زمان بیکاری وقتیکه اندازه حافظه نهان اضافه میشود رشد میکند‪ ،‬و بعضی از بهرههای کارایی کاهش‬
‫مییابد‪ .‬این رشد اتفاق میافتد زیرا با توقفهای سیستم حافظه کمتر‪ ،‬پردازههای سرور بیشتری برای پوشش تأخیر ‪ I/O‬مورد نیاز‬
‫می شوند‪ .‬بارکاری باید بازگشت کند تا توازن محاسبه‪/‬ارتباط برقرار شود‪ ،‬و زمان بیکاری تحت کنترل نگه داشته شود‪ .‬کد ‪PAL‬‬
‫یک مجموعه از دستورات سطح ‪ OS‬خاص است که در مد ‪ privileged‬اجرا میشوند‪.‬‬

‫شکل ‪ :7-9‬سیکلهای دسترسی حافظه وقتیکه تعداد پردازندهها افزایش مییابند به خاطر افزایش اشتراک درست افزایش مییابد‪.‬‬
‫فقدانهای اجباری کمی زیاد میشوند زیرا هر پردازنده باید اکنون فقدانهای اجباری بیشتری را مدیریت کند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 494‬‬

‫سؤال آخری که بررسی می کنیم این است که چگونه افزایش اندازه بلوک برای این بارکاری مفید است‪ .‬شکل ‪-9‬‬
‫‪ 8‬تعداد فقدانها به ازای هر ‪ 1000‬دستور را نشان میدهد وقتیکه اندازه بلوک از ‪ 32‬تا ‪ 256‬بایت افزایش مییابد‪.‬‬
‫افزایش اندازه بلوک از ‪ 32‬به ‪ 256‬بایت بر چهار جزء نرخ فقدان اثر دارد‪:‬‬

‫نرخ فقدان اشتراک درست با بیشتر از ضریب ‪ 2‬کاهش مییابد‪ ،‬که نشان دهنده بعضی محلیتها در‬ ‫•‬
‫الگوهای اشتراک درست است‪.‬‬
‫نرخ فقدان اجباری بطور قابل توجهی کاهش داده میشود که انتظار ما نیز همین است‪.‬‬ ‫•‬
‫فقدانهای تداخل‪/‬ظرفیت کاهش کوچکی (ضریب ‪ 1.26‬در مقایسه با ضریب ‪ 8‬در افزایش اندازه بلوک)‬ ‫•‬
‫نشان میدهد‪ ،‬که بیانگر این است که محلیت مکانی در فقدانهای تک پردازنده که برای حافظههای‬
‫نهان ‪L3‬ی باالتر از ‪ 2MB‬اتفاق میافتد‪ ،‬باال نیست‪.‬‬
‫نرخ فقدان اشتراک غلط‪ ،‬تقریباً دو برابر میشود‪.‬‬ ‫•‬

‫شکل ‪ 8-9‬تعداد فقدانها به ازای هر ‪ 1000‬دستور وقتیکه اندازه بلوک حافظه نهان ‪ L3‬افزایش داده میشود سقوط میکند‪ ،‬که برای‬
‫اندازه بلوک ‪ L3‬حداقل ‪ 128‬بایت حالت مناسبی است‪ .‬حافظه نهان ‪2 ،L3‬مگابایت است و انجمنی مجموعه ای دو‪-‬راهه است‪.‬‬

‫کمبود اثر کافی روی نرخ فقدان دستور تکان دهنده است‪ .‬اگر فقط یک حافظه نهان دستورالعمل با این عملکرد‬
‫وجود میداشت‪ ،‬می توانستیم نتیجه بگیریم که محلیت مکانی خیلی ضعیف است‪ .‬سایر مطالعات محلیت مکانی کم‬
‫در رشته دستورات پایگاه داده و بار کاری ‪ OLTP‬که تعداد زیادی بلوک پایه کوچک و رشته کد خاص‪-‬منظوره‬
‫دارند را گزارش دادهاند‪ .‬براساس این دادهها‪ ،‬هزینه فقدان برای اندازه بلوک ‪ L3‬در مقایسه اندازه بلوک ‪-32‬بایت‬
‫میتواند ضریبی از هزینه فقدان بلوک ‪-32‬بایتی باشد‪.‬‬
‫‪| 495‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫اندازه بلوک هزینه فقدان نسبت به هزینه فقدان بلوک ‪-32‬بایتی‬


‫‪1.19‬‬ ‫‪ 64‬بایت‬
‫‪1.36‬‬ ‫‪ 128‬بایت‬
‫‪1.52‬‬ ‫‪ 256‬بایت‬
‫با ‪DDR SDRAM‬های مدرن که دسترسی بلوک را سریع میکنند‪ ،‬این اعداد قابل دستیابی هستند‪ ،‬باالخص‬
‫برای اندازه بلوک ‪ 128‬بایتی‪ .‬به عالوه ما باید راجع به اثرات افزایش ترافیک حافظه و تداخل ممکن برای حافظه‬
‫با سایر هستهها نگران باشیم‪ .‬این اثر اخیر بهره بدست آمده از بهبود کارایی تک پردازنده را منفی میکند‪.‬‬

‫یک بارکاری ‪ OS‬و چندبرنامگی‬

‫مطالعه بعدی یک بارکاری چندبرنامه شده است که شامل هم فعالیتهای کاربر و هم فعالیت ‪ OS‬است‪ .‬بارکاری‬
‫استفاده شده دو کپی مستقل از فازهای کامپایلِ برنامه محک ‪ Andrew‬میباشد‪ ،‬برنامه محکی که یک محیط‬
‫نرمافزاری را تقلید میکند‪ .‬فاز کامپایل شامل یک نگارش دستور ‪ make‬یونیکس است که با استفاده از ‪ 8‬پردازنده‬
‫اجرا میشود‪ .‬بارکاری برای ‪ 5.24‬ثانیه روی ‪ 8‬پردازنده اجرا میشود‪ ،‬که ‪ 203‬پردازه را اجرا میکند و ‪ 787‬درخواست‬
‫دیسک روی سه سیستم فایل مختلف انجام میدهد‪ .‬بارکاری با ‪ 128MB‬از حافظه اجرا میشود و هیچ فعالیت‬
‫صفحه بندی اتفاق نمیافتد‪.‬‬

‫بارکاری سه فاز مجزا دارد‪ ،‬کامپایل کردن برنامههای محک‪ ،‬که شامل فعالیتهای محاسباتی قابل توجه‪ ،‬نصب‬
‫فایلهای شیء در یک کتابخانه‪ ،‬و حذف فایلهای شیء است‪ .‬فاز آخر بطور کامل توسط ‪ I/O‬کنترل میشود و‬
‫فقط دو پردازه فعال هستند (یکی برای هر اجرا)‪ .‬در فاز میانی‪ I/O ،‬همچنین یک نقش عمده بازی میکند و‬
‫پردازنده خیلی بیکار است‪ .‬بارکاری نسبت به بارکاری تجاری حساسیت بیشتری به سیستم و ‪ I/O‬دارد‪.‬‬

‫برای سنجش بارکاری‪ ،‬فرض میکنیم سیستمهای حافظه و ‪ I/O‬زیر را داریم‪:‬‬

‫‪ .1‬سطح ‪ 1‬حافظه نهان دستورالعمل‪ ،32KB -‬انجمنی مجموعهای دو راهه با بلوک ‪ 64‬بایتی‪ ،‬زمان اصابت‬
‫یک پالس ساعت‪.‬‬
‫‪ .2‬سطح ‪ 1‬حافظه نهان داده‪ ،32KB -‬انجمنی مجموعهای دو‪-‬راهه با بلوک ‪-32‬بایتی‪ ،‬زمان اصابت یک‬
‫پالس ساعت‪ .‬حافظه نهان داده ‪ L1‬را تغییر میدهیم تا اثر آن را روی رفتار حافظه نهان بررسی کنیم‪.‬‬
‫‪ .3‬حافظه نهان سطح ‪ 1MB -2‬یکپارچه‪ ،‬انجمنی مجموعه ای دو‪-‬راهه با بلوک ‪-128‬بایتی‪ 10 ،‬پالس‬
‫ساعت زمان اصابت‪.‬‬
‫‪ .4‬حافظه اصلی‪ -‬یک حافظه روی یک گذرگاه با زمان دسترسی ‪ 100‬پالس ساعت‪.‬‬
‫‪ .5‬سیستم دیسک‪ -‬تأخیر دسترسی‪-‬ثابت ‪3‬میلی ثانیه ( کمتر از نرمال تا زمان بیکاری کاهش یابد)‪.‬‬
‫کانون نشر علوم‬ ‫‪| 496‬‬

‫جدول ‪ 3-9‬درصد زمان اجرا برای ‪ 8‬پردازنده را با استفاده از پارامترهای زیر نشان میدهد‪:‬‬

‫‪ .1‬بیکاری‪ -‬اجرا در حلقه بیکاری مد کرنل‪.‬‬


‫‪ .2‬کاربر‪ -‬اجرا در کد کاربر‪.‬‬
‫‪ .3‬همزمانی‪ -‬اجرا یا منتظر برای متغیرهای همزمانی‪.‬‬
‫‪ .4‬کرنل‪ -‬اجرا در ‪ OS‬که نه بیکار است و نه در دسترسی همزمانی‪.‬‬

‫این بارکاری چندبرنامه شده سقوط کارایی قابل توجهی برای حافظه نهان دستورالعمل برای ‪ OS‬دارد‪ .‬نرخ فقدان‬
‫حافظه نهان دستورالعمل در ‪ OS‬برای اندازه بلوک ‪ ،64‬حافظه نهان انجمنی مجموعهای دو‪-‬راهه از ‪ 1.7%‬برای‬
‫یک حافظه نهان ‪ 32KB‬تا ‪ 0.2%‬برای یک حافظه نهان ‪ 256KB‬متغیر است‪ .‬فقدانهای حافظه نهان‬
‫دستورالعمل سطح‪-‬کاربر تقریباً یک‪-‬ششم نرخ ‪ OS‬بین تغییرات اندازههای حافظه نهان است‪ .‬این تخمین جزئی‬
‫به خاطر این حقیقت است که‪ ،‬هرچندکه کد کاربر ‪ 9‬برابر دستورات کرنل اجرا میشود‪ ،‬آن دستورات فقط چهار برابر‬
‫زمان میگیرند تا زمانیکه تعداد دستورات کمتری توسط کرنل اجرا شود‪.‬‬
‫اجرای کرنل انتظار همرمانی بیکاری پردازنده (انتظار برای ‪)I/O‬‬ ‫اجرای کاربر‬
‫‪69%‬‬ ‫‪1%‬‬ ‫‪3%‬‬ ‫دستورات اجرا شده ‪27%‬‬
‫‪64%‬‬ ‫‪2%‬‬ ‫‪7%‬‬ ‫‪27%‬‬ ‫زمان اجرا‬
‫جدول ‪ :3-9‬توزیع زمان اجرا در بار کاری "‪ "make‬موازی چندبرنامه شده‪ .‬درصد باالی زمان بیکاری به خاطر تأخیر دیسک است‬
‫وقتیکه فقط یکی از ‪ 8‬پردازنده فعال است‪ .‬این دادهها و سنجشهای بعدی برای این بار کاری با سیستم ‪ SimOs‬جمعآوری شده است‬
‫]‪ .[Rosenblum et al. 1995‬اجرای واقعی و مجموعه داده توسط ‪ M.Rosenblum, S.Herrod, E.Bugnion‬از دانشگاه‬
‫استنفورد انجام شده است‪.‬‬

‫کارایی بارکاری ‪ OS‬چندبرنامه شده‬

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

‫باوجود اینکه کد کاربر دستورات بیشتری اجرا میکند‪ ،‬رفتار سیستم عامل میتواند باعث نرخهای فقدان حافظه‬
‫نهان بیشتری از پردازههای کاربر به دو دلیلِ اندازه کد بیشتر و کمبود محلیت شود‪ .‬اوالً‪ ،‬کرنل همه صفحات را قبل‬
‫از تخصیص آنها به کاربر مقدار دهی میکند که بطور قابل توجهی جزء اجباری نرخ فقدان را افزایش میدهد‪ .‬ثانیاً‪،‬‬
‫کرنل واقعاً دادهها را به اشتراک میگذارد و بنابراین نرخ فقدان همبستگی زیاد دارد‪ .‬در مقابل پردازه کاربر فقط‬
‫‪| 497‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫وقتیکه پردازه در یک پردازنده دیگر زمانبندی میشود‪ ،‬منجر به فقدانهای همبستگی میشود که این جزء فقدان‪،‬‬
‫ناچیز است‪.‬‬

‫شکل ‪ 9-9‬نرخ فقدان داده را در مقایسه با اندازه حافظه نهان داده و اندازه بلوک برای اجزاء کاربر و کرنل نشان‬
‫می دهد‪ .‬افزایش اندازه حافظه نهان داده بر نرخ فقدان کاربر تأثیر بیشتری دارد‪ .‬افزایش اندازه بلوک تأثیر مفیدی‬
‫برای هر دو نرخ فقدان دارد‪ ،‬زیرا کسر زیادی از فقدانها از فقدانهای اجباری و ظرفیت نشأت میگیرند‪ ،‬که هر دو‬
‫میتوانند با اندازه بلوک بزرگتر بهبود یابند‪ .‬چون فقدانهای همبستگی نسبتاً کمتر هستند‪ ،‬تأثیر منفی افزایش اندازه‬
‫بلوک کم است‪ .‬برای فهم بهتر رفتار متفاوت پردازههای کاربر و کرنل‪ ،‬میتوانیم به چگونگی رفتار فقدانهای کرنل‬
‫نگاهی بیاندازیم‪.‬‬

‫شکل ‪ :9-9‬نرخهای فقدان برای اجزاء کرنل و کاربر که روی افزایش اندازه حافظه نهان ‪( L1‬در سمت چپ) و افزایش اندازه بلوک‬
‫حافظه نهان داده (در راست) رفتار متفاوتی دارند‪ .‬افزایش اندازه حافظه نهان داده ‪ L1‬از ‪ 32KB‬تا ‪ ( 256KB‬با اندازه بلوک ‪-32‬بایت)‬
‫منجر به کاهش بیشتر نرخ فقدان کاربر نسبت به نرخ فقدان کرنل میشود‪ :‬نرخ فقدان سطح‪-‬کاربر با ضریب ‪ 3‬تنزل مییابد در حالیکه‬
‫نرخ فقدان کرنل با ضریب ‪ 1.3‬کاهش می یابد‪ .‬نرخ فقدان هردوی کرنل و کاربر با افزایش اندازه بلوک بطور پیوسته کاهش مییابد‬
‫(اندازه حافظه نهان ‪ 32KB ، L1‬ثابت نگه داشته شده است)‪ .‬برخالف تأثیر اندازه حافظه نهان‪ ،‬افزایش اندازه بلوک نرخ فقدان کرنل‬
‫را بطور قابل توجهی بهبود میدهد (با افزایش اندازه بلوک از ‪-16‬بایت به ‪-128‬بایت‪ ،‬مراجعات کرنل با فاکتور ‪ 4‬و کاربر با فاکتور ‪3‬‬
‫کاهش مییابند)‪.‬‬
‫شکل ‪ 10-9‬نوسانات فقدانهای کرنل در مقابل افزایش اندازه حافظه نهان و اندازه بلوک را نشان میدهد‪ .‬فقدانها‬
‫به سه کالس تقسیم میشوند‪ :‬فقدانهای اجباری‪ ،‬فقدانهای همبستگی ( برای اشتراک درست و غلط)‪ ،‬و فقدان‪-‬‬
‫های ظرفیت‪/‬تداخل ( که شامل فقدانهای ایجاد شده توسط تداخل بین ‪ OS‬و پردازه کاربر و بین چندین پردازه‬
‫کاربر میشود)‪ .‬شکل ‪ 11-9‬اثبات میکند که‪ ،‬برای مراجعات کرنل‪ ،‬افزایش اندازه حافظه نهان فقط نرخ فقدان‬
‫ظرفیت‪/‬تداخل یک پردازنده کاهش مییابد‪ .‬در مقابل‪ ،‬افزایش اندازه بلوک باعث کاهش در نرخ فقدان اجباری‬
‫میشود‪ .‬نبود افزایش زیاد در نرخ فقدان همبستگی وقتیکه اندازه بلوک افزایش مییابد به این معنی است که اثرات‬
‫اشتراک غلط احتماالً ناکافی است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 498‬‬

‫اگر ما تعداد بایت های مورد نیاز به ازای هر مراجعه داده را آنالیز کنیم‪ ،‬خواهیم دید که کرنل نرخ ترافیک بیشتری‬
‫دارد که با اندازه بلوک رشد میکند که در شکل ‪ 11-9‬نشان داده شده است‪ .‬علت وقوع این ساده است‪ :‬وقتیکه از‬
‫یک بلوک ‪-16‬بایتی به یک بلوک ‪-128‬بایتی میرویم‪ ،‬نرخ فقدان حدوداً ‪ 3.7‬برابر کاهش مییابد‪ ،‬اما تعداد‬
‫بایتهای منتقل شده به ازای هر فقدان ‪ 8‬برابر افزایش مییابد‪ ،‬بنابراین ترافیک کلی فقدان فقط با ضریب ‪2‬‬
‫افزایش مییابد‪ .‬این قضیه برای برنامه کاربر دو برابر است وقتیکه اندازه بلوک از ‪ 16‬به ‪ 128‬میرود‪.‬‬

‫شکل ‪ 10-9‬اجزاء نرخ فقدان داده کرنل وقتیکه اندازه حافظه نهان داده ‪ L1‬از ‪ 32KB‬به ‪ 256KB‬افزایش مییابد تغییر میکند‪ ،‬وقتیکه‬
‫بارکاری چندبرنامه شده روی ‪ 8‬پردازنده اجرا میشود‪ .‬جزء نرخ فقدان اجباری ثابت میماند‪ ،‬زیرا تحت تأثیر اندازه حافظه نهان نیست‪ .‬جزء‬
‫ظرفیت با بیشتر از فاکتور ‪ 2‬کاهش می یابد زیرا جزء همبستگی تقریباً دو برابر میشود‪ .‬افزایش در فقدانهای همبستگی به خاطر این‬
‫اتفاق می افتد که احتمال اینکه یک فقدان توسط یک نامعتبرسازی ایجاد شود با اندازه حافظه نهان افزایش مییابد زیرا به خاطر ظرفیت‬
‫ورودیهای کمتری تکان میخورند‪ .‬همانطور که انتظار داریم‪ ،‬افزایش اندازه بلوک در حافظه نهان داده ‪ L1‬بطور قابل توجهی نرخ فقدان‬
‫اجباری در مراجعات کرنل را کاهش میدهد‪ .‬همچنین اثر قابل توجهی روی نرخ فقدان ظرفیت دارد که آنرا با فاکتور‪ 2.4‬روی اندازههای‬
‫بلوک کاهش می دهد‪ .‬افزایش اندازه بلوک کاهش کمی در ترافیک همبستگی دارد که در اندازه ‪-64‬بایت پایدار شده و در اندازه ‪-128‬‬
‫بایت هیچ تغییری نمی کند‪ .‬زیرا کاهش قابل توجهی در نرخ فقدان همبستگی با افزایش اندازه بلوک نداریم‪ ،‬کسر نرخ فقدان به خاطر‬
‫همبستگی از ‪ ٪7‬به حدود ‪ ٪15‬رشد میکند‪.‬‬

‫برای بارکاری چندبرنامه شده‪ OS ،‬متقاضی بیشتری برای سیستم حافظه است‪ .‬اگر در بارکاری‪ ،‬فعالیت ‪ OS‬یا شبه‬
‫‪ OS‬بیشتری وجود داشته باشد‪ ،‬و رفتار مشابه آنچه باشد که در این بارکاری اندازه گرفتهایم‪ ،‬ساخت یک سیستم‬
‫حافظه که به اندازه کافی توانا باشد بسیار مشکل است‪ .‬یک روش ممکن برای افزایش کارایی این است که ‪ OS‬را‬
‫حساس به حافظه نهان کنیم یا با محیط برنامه نویسی بهتر یا به کمک برنامهنویس‪ .‬به عنوان مثال‪ OS ،‬حافظه را‬
‫برای درخواستهای نشأت گرفته از فراخوانیهای سیستمی مختلف مجدداً استفاده میکند‪ .‬باوجود این حقیقت که‬
‫حافظه مجدداً استفاده شده کامالً رونویسی خواهد شد‪ ،‬سخت افزار اینرا تشخیص نمیدهد و سعی میکند تا‬
‫همبستگی و احتمال اینکه بعضی از بخشهای یک بلوک حافظه نهان ممکن است خوانده شود‪ ،‬را حفظ کند‪ .‬این‬
‫رفتار مشابه استفاده مجدد از مکانهای پشته در احضار زیرروال است‪ .‬سریهای ‪ IBM Power‬به کامپایلر اجازه‬
‫‪| 499‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫میدهند تا این نوع رفتار احضار زیربرنامه را مشخص کند‪ ،‬و پردازندههای ‪AMD‬ی جدید پشتیبانی مشابهی را‬
‫انجام میدهند‪ .‬تشخیص چنین رفتاری توسط سیستم عامل مشکلتر است‪ ،‬و نیازمند کمک برنامهنویس است‪ ،‬اما‬
‫بازدهی آن بیشتر است‪.‬‬

‫شکل ‪ :11-9‬تعداد بایتهای مورد نیاز برای مراجعه داده وقتیکه اندازه بلوک افزایش مییابد هم برای اجزاء کرنل و هم کاربر رشد میکند‪.‬‬

‫‪ -4-9‬حافظه‪-‬مشترک توزیع شده و همبستگی براساس‪-‬دایرکتوری‬


‫همانطور که دیدیم یک قرارداد جاسوسی نیازمند ارتباط با همه حافظههای نهان روی هر فقدان حافظه نهان‪ ،‬شامل‬
‫نوشتنهای دادههای مشترک میباشد‪ .‬میتوان پهنای باند حافظه و پهنای باند ارتباطی را با حافظه توزیع یافته‬
‫افزایش داد‪ .‬این روش ترافیک حافظه محلی را از ترافیک حافظه دور مجزا میکند که باعث کاهش تقاضاهای‬
‫پهنای باند در سیستم حافظه و در شبکه ارتباطی میشود‪ .‬روش استفاده شده برای این سیستم حافظه‪ ،‬قرارداد‬
‫دایرکتوری میباشد که به تفصیل در بخش ‪ 2-7‬توضیح داده شده است‪.‬‬

‫یک دایرکتوری حالت هر بلوک که ممکن است در حافظه نهان ذخیره شود را نگه میدارد‪ .‬اطالعات داخل‬
‫دایرکتوری شامل این است که کدام حافظههای نهان (یا مجموعهای از حافظههای نهان) کپیهایی از بلوک دارند‪،‬‬
‫چه موقع بلوک کثیف یا غیره است‪ .‬در داخل یک چندهسته با حافظه نهان خارجی مشترک (‪ )L3‬پیادهسازی‬
‫شماتیک دایرکتوری ساده است‪ :‬یک بردار بیتی به اندازه تعداد هستهها برای هر بلوک ‪ L3‬نگه میداریم‪ .‬بردار بیتی‬
‫تعیین میکند کدام حافظههای نهان خصوصی کپیهایی از بلوک موجود در ‪ L3‬را دارند و نامعتبرسازیها فقط به‬
‫آن حافظههای نهان فرستاده میشوند‪ .‬این روش برای یک چندهسته بدرستی کار میکند اگر ‪ L3‬فراگیر باشد و‬
‫این شماتیک در ‪ Intel i7‬استفاده میشود‪.‬‬
‫کانون نشر علوم‬ ‫‪| 500‬‬

‫راهحل دایرکتوری در یک چندهسته مقیاسپذیر نیست‪ ،‬حتی اگر از همهپخشی جلوگیری کند‪ .‬دایرکتوری باید توزیع‬
‫شود‪ ،‬اما توزیع باید به روشی انجام شود که قرارداد همبستگی بداند کجا اطالعات دایرکتوری را برای هر بلوک‬
‫حافظه که در حافظه نهان ذخیره شده بیابد‪ .‬یک روش‪ ،‬توزیع دایرکتوری در طول حافظه است‪ ،‬بطوریکه درخواست‪-‬‬
‫های همبستگی مختلف بتوانند به دایرکتوریهای مختلف بروند همانطور که درخواستهای حافظه مختلف به‬
‫حافظه های مختلف میروند‪ .‬یک دایرکتوری توزیع شده این خصوصیت که وضعیت اشتراک یک بلوک همیشه در‬
‫یک مکان مشخصِ شناخته شده است را نگه میدارد‪ .‬این خصوصیت همراه با نگهداری اطالعاتی که میگویند‬
‫کدام گره های دیگر ممکن است بلوک را در حافظه نهان ذخیره کنند باعث اجتناب قرارداد از همه پخشی میشود‪.‬‬
‫شکل ‪ 12-9‬چندپردازنده حافظه‪-‬توزیع شده با دایرکتوریهای اضافه شده در هر گره را نشان میدهد‪.‬‬
‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬
‫چندهسته ‪+‬‬ ‫چندهسته ‪+‬‬ ‫چندهسته ‪+‬‬ ‫چندهسته ‪+‬‬
‫کشها‬ ‫کشها‬ ‫کشها‬ ‫کشها‬

‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬


‫دایرکتوری‬ ‫دایرکتوری‬ ‫دایرکتوری‬ ‫دایرکتوری‬

‫شبکه میان ارتباطی‬

‫دایرکتوری‬ ‫دایرکتوری‬ ‫دایرکتوری‬ ‫دایرکتوری‬


‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬ ‫حافظه‬ ‫‪I/O‬‬

‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬ ‫پردازنده‬


‫چندهسته ‪+‬‬ ‫چندهسته ‪+‬‬ ‫چندهسته ‪+‬‬ ‫چندهسته ‪+‬‬
‫کشها‬ ‫کشها‬ ‫کشها‬ ‫کشها‬

‫شکل ‪ :12-9‬یک دایرکتوری به هر گره اضافه شده است تا همبستگی حافظه نهان را در یک چندپردازنده حافظه‪-‬توزیع شده پیادهسازی‬
‫کند‪ .‬در این حالت‪ ،‬یک گره به عنوان یک تراشه چندهسته نشان داده شده است‪ ،‬و اطالعات دایرکتوری برای حافظه انجمنی ممکن‬
‫است در داخل یا خارج چند هسته باشد‪ .‬هر دایرکتوری مسئول ردیابی حافظههای نهانی که آدرسهای حافظه در هر گره را به اشتراک‬
‫میگذارند میباشد‪.‬‬
‫سادهترین پیادهسازی دایرکتوری یک ورودی در دایرکتوری برای هر بلوک حافظه در نظر میگیرد‪ .‬در چنین پیاده‪-‬‬
‫سازیهایی‪ ،‬میزان اطالعات متناسب با حاصل ضرب تعداد بلوکهای حافظه ( بلوکهای حافظه نهان ‪ L2, L3‬هم‬
‫اندازهاند) در تعداد گرهها میباشد که یک گره یک پردازنده چندهسته یا مجموعه کوچکی از پردازندهها که همبستگی‬
‫را بصورت داخلی پیادهسازی میکنند میباشد‪ .‬این سربار برای چندپردازندههای با تعداد کمتر از صد پردازنده (که‬
‫هرکدام ممکن است یک چندهسته باشند) مشکلی نیست زیرا سربار دایرکتوری با اندازه بلوک منطقی قابل تحمل‬
‫است‪ .‬برای چندپردازندههای بزرگتر‪ ،‬نیازمند روشی هستیم تا به ساختار دایرکتوری اجازه دهد مقیاسپذیر باشد‪ ،‬اما‬
‫سیستمهای در اندازه سوپرکامپیوتر نگران این مسأله هستند‪.‬‬
‫‪| 501‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫‪ -5-9‬اصول همزمانی‬
‫مکانیزمهای همزمانی معموالً با روتینهای نرمافزاری سطح‪-‬کاربر که روی دستورات همزمانی تأمین شده‪-‬سخت‬
‫افزار قرار دارند ساخته میشوند‪ .‬برای چندپردازندههای کوچکتر یا شرایط با تداخل‪-‬کمتر‪ ،‬قابلیت کلیدی سختافزار‬
‫یک دستور غیر قابل وقفه یا یک رشته دستور است که بطور اتمیک قادر به بازیابی و تغییر یک مقدار باشد‪ .‬سپس‬
‫مکانیزمهای همزمانی نرمافزار با استفاده از این قابلیت ساخته میشود‪ .‬در این بخش روی پیادهسازی عملیات‬
‫همزمانی قفل و بازکردن قفل تمرکز میکنیم‪ Lock .‬و ‪ Unlock‬میتوانند برای تولید مستقیم انحصار متقابل‬
‫استفاده شوند‪.‬‬

‫در شرایط تداخل‪-‬باال‪ ،‬همزمانی میتواند به یک گلوگاه کارایی تبدیل شود زیرا تداخل تأخیرات اضافی معرفی‬
‫میکند و زیرا تأخیر در چنین چندپردازندههایی بزرگتر است‪.‬‬

‫روشهای سخت افزاری پایه‬

‫یک قابلیت کلیدی که برای پیادهسازی همزمانی در یک چندپردازنده نیاز داریم مجموعهای از روشهای سخت‪-‬‬
‫افزاری با قابلیت خواندن و اصالح اتمیک یک مکان حافظه میباشد‪ .‬بدون چنین قابلیتی‪ ،‬هزینه ساخت روشهای‬
‫همزمانی پایه زیاد خواهد بود و با افزایش تعداد پردازندهها افزایش خواهد یافت‪ .‬چندین روش پایه سختافزاری‬
‫وجود دارد که قابلیت خواندن و اصالح یک مکان را بصورت اتمیک فراهم میکنند این روشها امکان این را دارند‬
‫بفهمیم آیا عمل خواندن و نوشتن بصورت اتمیک اجرا شده است یا خیر‪ .‬این روشهای سختافزاری سنگ بنای‬
‫پایه هستند که برای ساخت گونههای وسیعی از عملیات همزمانی سطح‪-‬کاربر مثل قفلها و سدها‪ 1‬استفاده میشوند‪.‬‬
‫درکل‪ ،‬معماران انتظار ندارند کاربران از این روشهای سختافزاری استفاده کنند اما انتظار دارند که برنامهنویسان‬
‫سیستم از این روشها استفاده کنند و یک کتابخانه همزمانی بسازند که یک پردازه پیچیده و خدعه آمیز است‪ .‬اجازه‬
‫دهید تا با یکی از این روشهای سختافزاری شروع کنیم و نشان دهیم که چگونه این روشها برای ساخت بعضی‬
‫عملیات همزمانی پایه استفاده میشوند‪.‬‬

‫یک عمل رایج برای ساخت عملیات همزمانی ‪ exchange‬اتمیک میباشد‪ ،‬که مقدار یک ثبات را با مقدار یک‬
‫حافظه تعویض میکند‪ .‬برای مشاهده اینکه چگونه میتوانیم از این برای ساخت یک عمل همزمانی پایه استفاده‬
‫کنیم‪ ،‬فرض کنید که میخواهیم یک قفل ساده بسازیم که مقدار ‪ 0‬برای تعیین اینکه قفل آزاد است و ‪ 1‬برای تعیین‬
‫اینکه قفل غیرقابل دسترس است استفاده میشود‪ .‬یک پردازنده سعی میکند با تعویض ‪ 1‬که در یک ثبات است با‬

‫‪1‬‬
‫‪barrier‬‬
‫کانون نشر علوم‬ ‫‪| 502‬‬

‫آدرس حافظه مرتبط با قفل‪ ،‬قفل را تنظیم کند‪ .‬مقدار بازگشتی از دستور ‪ 1 ،exchange‬است اگر تعدادی از‬
‫سایر پردازندهها درخواست دسترسی کرده باشند در غیر اینصورت صفر برگردانده میشود‪.‬‬

‫به عنوان مثال‪ ،‬دو پردازنده را در نظر بگیرید که هریک سعی در انجام همزمان ‪ exchange‬دارند‪ :‬این رقابت‬
‫شکسته میشود زیرا دقیقاً یکی از پردازندهها ابتدا ‪ exchange‬را انجام میدهد‪ ،‬و صفر برمیگرداند و پردازنده‬
‫دوم وقتیکه ‪ exchange‬را انجام داد ‪ 1‬برمیگرداند‪ .‬کلید استفاده از ‪( exchange‬یا ‪ )swap‬برای پیادهسازی‬
‫همزمانی این است که عمل اتمیک است‪ exchange :‬غیرقابل تقسیم است‪ ،‬و دو ‪ exchange‬همزمان توسط‬
‫مکانیزمهای ترتیبی سازی نوشتن مرتب خواهند شد‪ .‬برای دو پردازنده غیر ممکن است که متغیر همزمانی را تنظیم‬
‫کنند‪.‬‬

‫روشهای اتمیک دیگری نیز برای پیاده سازی همزمانی وجود دارند‪ .‬همه آنها این خصوصیت کلیدی را دارند که‬
‫مقدار حافظه را میخوانند و بروز میکنند به روشی که میتوانیم بگوییم چه موقع دو عمل بطور اتمیک اجرا شدهاند‪.‬‬
‫یک عمل که در چندپردازندههای قدیمیتر استفاده شد‪ test-and-set ،‬است که یک مقدار را تست کرده و اگر‬
‫مقدار تست را گذراند‪ ،‬آنرا ‪ set‬میکند‪ .‬به عنوان مثال‪ ،‬میتوانیم عملی را تعریف کنیم که برای صفر تست میکند‬
‫و آن را به یک تنظیم میکند‪ ،‬که میتواند به روشی مشابه با ‪ exchange‬اتمیک استفاده شود‪ .‬روش همزمانی‬
‫اتمیک دیگر ‪ fetch-and-increment‬است‪ :‬مقدار یک مکان حافظه را برمیگرداند و بطور خودکار آنرا‬
‫افزایش میدهد‪ .‬با استفاده از مقدار صفر برای تعیین اینکه متغیر همزمانی مطالبه نشده است‪ ،‬میتوانیم از ‪fetch-‬‬
‫‪ and-increment‬مثل ‪ exchange‬استفاده کنیم‪.‬‬

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

‫یک روش داشتن یک زوج دستورالعمل است که دستور دوم مقداری را برگرداند که بتوان استنتاج کرد چه موقع‬
‫زوج دستور اجرا شدهاند اگر دستورات اتمیک باشند‪ .‬زوج دستور بطور مؤثری اتمیک هستند اگر همه سایر عملیات‬
‫اجرا شده توسط هر پردازنده قبل یا بعد از زوج دستور اتفاق بیافتند‪ .‬بنابراین‪ ،‬وقتیکه یک زوج دستور بطور مؤثری‬
‫اتمیک هستند‪ ،‬هیچ پردازنده دیگری نمیتواند مقدار بین زوج دستور را تغییر دهد‪.‬‬
‫‪| 503‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫یک زوج دستور شامل یک ‪ load‬خاص که بار کردن پیوندی‪ 1‬نامیده میشود و یک ‪ store‬خاص که ذخیره‬
‫شرطی‪ 2‬نامیده میشود‪ ،‬میباشد‪ .‬این دستورات بترتیب استفاده میشوند‪ :‬اگر محتویات مکان حافظه تعیین شده‬
‫توسط ‪ LL‬تغییر داده شود قبل از اینکه ‪ SC‬در آدرس مشابهی اتفاق بیافتد‪ ،‬آنگاه ‪ SC‬موفق نمیشود (رد میشود)‪.‬‬
‫اگر پردازنده بین دو دستور تعویض متن انجام دهد آنگاه ذخیره شرطی رد میشود‪ .‬ذخیره شرطی ‪ 1‬برمیگرداند اگر‬
‫موفق باشد وگرنه صفر برمیگرداند‪ .‬چون ‪ LL‬مقدار اولیه را برمیگرداند و ذخیره شرطی در صورتی که موفق باشد‬
‫یک برمیگرداند‪ ،‬رشته زیر یک تعویض اتمیک روی مکان حافظه تعیین شده توسط محتوای ‪ R1‬پیادهسازی‬
‫میکند‪:‬‬

‫‪Try:‬‬ ‫‪MOV R3,R4‬‬ ‫‪;move exchange value‬‬


‫‪LL‬‬ ‫)‪R2,0(R1‬‬ ‫‪;Load linked‬‬
‫‪SC‬‬ ‫)‪R3,0(R1‬‬ ‫‪;store conditional‬‬
‫‪BEQZ R3,TRY‬‬ ‫‪;Branch store fails‬‬
‫‪MOV R4,R2‬‬ ‫‪;put load value in R4‬‬
‫در انتهای این رشته محتویات ‪ R4‬و مکان حافظه تعیین شده توسط ‪ R1‬بطور خودکار تعویض میشوند ( با نادیده‬
‫گرفتن هر اثر پرش های تأخیر داده شده)‪ .‬هرگاه که یک پردازنده مداخله کرده و مقدار حافظه بین دستورات ‪LL,‬‬
‫‪ SC‬را اصالح میکند‪ SC ،‬مقدار ‪ 0‬در ‪ R3‬برمیگرداند و منجر به تکرار مجدد رشته میشود‪.‬‬
‫یک مزیت مکانیزم ‪ LL/SC‬این است که میتواند برای ساخت سایر روشها استفاده شود‪ .‬به عنوان مثال پیادهسازی‬
‫‪ fetch-and-increment‬بصورت زیر است‪:‬‬
‫‪Try: LL‬‬ ‫)‪R2,0(R1‬‬ ‫‪;Load linked‬‬
‫‪DADDUIR3,R2,#1‬‬ ‫‪;INCREMENT‬‬
‫‪SC‬‬ ‫)‪R3,0(R1‬‬ ‫‪;store conditional‬‬
‫‪BEQZ R3,try‬‬ ‫‪;branch store fails‬‬
‫این دستورات با ردیابی آدرس تعیین شده در دستور ‪ LL‬در یک ثبات که اغلب ثبات پیوند نامیده میشود پیادهسازی‬
‫می شود‪ .‬اگر یک وقفه اتفاق بیافتد‪ ،‬یا اگر آدرس تطابق بلوک حافظه نهان در ثبات پیوند نامعتبر شود (به عنوان‬
‫مثال توسط ‪ SC‬دیگر)‪ ،‬ثبات پیوند پاک میشود‪ .‬دستور ‪ SC‬به سادگی چک میکند که آدرس آن با ثبات پیوند‬
‫تطابق دارد‪ .‬اگر بود‪ SC ،‬موفق است وگرنه ناموفق است‪ .‬چون ذخیره شرطی بعد از هر ذخیره به آدرس ‪ LL‬یا‬
‫استثناء شکست می خورد در انتخاب اینکه چه دستوری باید بین دو دستور قرار گیرد باید دقت کرد‪ .‬باالخص‪ ،‬فقط‬
‫دستورات ثبات‪-‬ثبات بطور امن مجازند‪ ،‬درغیر اینصورت امکان وقوع بنبست وجود دارد و پردازنده نمیتواند هیچگاه‬
‫‪ SC‬را تمام کند‪ .‬بعالوه تعداد دستورات بین ‪ LL‬و ‪ SC‬باید کم باشد تا احتمال شکست ‪ SC‬حداقل شود‪.‬‬

‫‪1‬‬
‫)‪load linked or load locked (LL‬‬
‫‪2‬‬
‫)‪store conditional (SC‬‬
‫کانون نشر علوم‬ ‫‪| 504‬‬

‫پیادهسازی قفلها با استفاده از همبستگی‬


‫وقتیکه یک عمل اتمیک داریم‪ ،‬میتوانیم مکانیزمهای همبستگی یک چندپردازنده را برای پیادهسازی قفل‬
‫چرخشی‪( 1‬قفلی که یک پردازنده بطور پیوسته سعی در بدست آوردن آن دارد‪ ،‬و حول یک حلقه میچرخد تا موفق‬
‫شود) استفاده کنیم‪ .‬قفلهای چرخشی وقتیکه برنامهنویسان انتظار دارند قفل برای مدت زمان کوتاهی نگه داشته‬
‫شود و وقتیکه میخواهند پردازه قفل تأخیر کمی داشته باشد وقتی قفل قابل دسترس است استفاده میشوند‪ .‬چون‬
‫قفلهای چرخشی پردازنده را مقید میکنند (در یک حلقه برای آزاد شدن قفل منتظر میشود)‪ ،‬در بعضی شرایط‬
‫نامناسب هستند‪.‬‬
‫سادهترین پیادهسازی‪ ،‬که در صورت نبود همبستگی حافظه نهان استفاده میکنیم‪ ،‬نگهداری متغیرهای قفل در‬
‫حافظه است‪ .‬یک پردازنده می تواند برای بدست آوردن قفل با استفاده از یک عمل اتمیک بطور پیوسته تالش کند‬
‫مثل ‪ exchange‬اتمیک‪ ،‬و تست کند که چه موقع ‪ exchange‬قفل را وقتی آزاد شد برمیگرداند‪ .‬برای‬
‫آزادسازی قفل‪ ،‬پردازنده مقدار ‪ 0‬را در قفل ذخیره میکند‪ .‬در زیر رشته کدی است که یک قفل چرخشی را که‬
‫آدرس آن در ‪ R1‬است با استفاده از یک ‪ exchange‬اتمیک قفل میکند‪:‬‬
‫‪DADDUI R2,R0,#1‬‬
‫)‪Lockit: EXCH R2,0(R1‬‬ ‫‪;atomic exchange‬‬
‫‪BNEZ R2,lockit‬‬ ‫?‪;already locked‬‬
‫اگر چندپردازنده همبستگی حافظه نهان را پشتیبانی کند‪ ،‬میتوانیم قفلها را با استفاده از مکانیزم همبستگی برای‬
‫نگهداری مقدار قفل بطور همبسته در حافظه نهان ذخیره کنیم‪ .‬ذخیره قفلها درحافظه نهان دو مزیت دارد‪ .‬اوالً‪،‬‬
‫یک پیادهسازی را ایجاد میکند که پردازه ”‪( “spinning‬سعی در تست و بدست آوردن قفل در یک حلقه )‬
‫می تواند در یک کپی ذخیره شده در حافظه نهان محلی انجام شود نه دسترسی به حافظه سراسری در هر بار تالش‬
‫برای بدست آوردن قفل‪ .‬مزیت دوم در این نکته نهفته است که معموالً محلیت در دسترسیهای محلی وجود دارد‪،‬‬
‫یعنی پردازندهای که قفل را اخیراً استفاده کرده است بزودی در آینده آنرا مجدداً استفاده میکند‪ .‬در چنین حاالتی‪،‬‬
‫مقدار قفل ممکن است در حافظه نهان آن پردازنده قرار گیرد‪ ،‬که بطور زیادی زمان بدست آوردن قفل را کاهش‬
‫میدهد‪.‬‬
‫بدست آوردن اولین مزیت‪ -‬چرخش کپی ذخیره شده در حافظه نهان محلی بجای تولید یک درخواست حافظه برای‬
‫هر تالش برای بدست آوردن قفل‪ -‬نیازمند تغییر در روال چرخش است‪ .‬هر تالش برای تعویض در حلقه نیازمند‬
‫یک عمل نوشتن است‪ .‬اگر چندین پردازنده تالش برای بدست آوردن قفل کنند‪ ،‬هر کدام یک نوشتن تولید خواهند‬
‫کرد‪ .‬اکثر این نوشتنها منجر به فقدان نوشتن می شوند زیرا هر پردازنده سعی در بدست آوردن متغیر قفل در یک‬
‫حالت انحصاری دارد‪.‬‬
‫بنابراین‪ ،‬باید روال چرخش قفل را اصالح کنیم بطوریکه چرخشها با انجام خواندن روی یک کپی محلی قفل انجام‬
‫شود تا زمانیکه با موفقیت ببیند که قفل قابل دسترس است‪ .‬سپس برای بدست آوردن قفل با انجام یک عمل‬
‫‪ swap‬تالش میکند‪ .‬یک پردازنده ابتدا متغیر قفل را میخواند تا حالت آنرا تست کند‪ .‬یک پردازنده خواندن و‬
‫تست را نگه می دارد تا زمانیکه مقدار خواندن تعیین کند که قفل بازشده است‪ .‬سپس پردازنده با همه سایر‬

‫‪1‬‬
‫‪Spin Lock‬‬
‫‪| 505‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫پردازندههایی که بطور مشابه بطور چرخهای منتظر هستند رقابت میکند تا ببیند که کدامیک میتواند ابتدا متغیر را‬
‫قفل کند‪ .‬همه پردازندهها یک دستور ‪ swap‬را که مقدار قبلی را میخواند و یک ‪ 1‬را در متغیر قفل ذخیره میکند‬
‫استفاده میکنند‪ .‬برنده ‪ 0‬را خواهد دید‪ ،‬و بازندگان ‪ 1‬را خواهند دید که توسط برنده جایگزین شده است‪( .‬بازندگان‬
‫برای تنظیم متغیر به مقدار قفل شده ادامه میدهند که مهم نیست)‪ .‬پردازنده برنده کد را بعد از قفل اجرا میکند‪،‬‬
‫وقتیکه تمام میشود‪ 0 ،‬را در متغیر قفل ذخیره میکند تا قفل را آزاد کند‪ ،‬که رقابت مجدداً شروع میشود‪ .‬کد زیر‬
‫برای انجام قفل چرخشی میباشد ( ‪ 0‬باز است و ‪ 1‬قفل)‪:‬‬
‫‪Lockit:‬‬ ‫)‪LD R2,0(R1‬‬ ‫‪;load of lock‬‬
‫‪BNEZ R2,Lockit‬‬ ‫‪;not available-spin‬‬
‫‪DADDUI R2,R0#1‬‬ ‫‪;load locked value‬‬
‫)‪EXCH R2,0(R1‬‬ ‫‪;swap‬‬
‫‪BNEZ R2,Lockit‬‬ ‫‪;branch if lock wasn't 0‬‬
‫وضعیت همبستگی‬
‫فعالیت گذرگاه‪/‬دایرکتوری‬ ‫قفل در انتهای‬ ‫‪P2‬‬ ‫‪P1‬‬ ‫‪P0‬‬ ‫مرحله‬
‫مرحله‬
‫فقدانهای حافظه نهان برای ‪ P1‬و ‪ P2‬به ترتیب‬ ‫شروع به چرخش می‪-‬‬
‫شروع به چرخش میکند‪،‬‬
‫دیگری برآورده میشود‪ .‬وضعیت ‪ Lock‬مشترک‬ ‫مشترک‬ ‫کند‪ ،‬تست میکند آیا‬ ‫قفل دارد‬ ‫‪1‬‬
‫تست میکند آیا ‪lock=0‬‬
‫میشود‪.‬‬ ‫‪lock=0‬‬
‫قفل را به ‪0‬‬
‫نامعتبرسازی نوشتن از متغیر قفل از طرف ‪P0‬‬ ‫انحصاری (‪)P0‬‬ ‫(نامعتبرسازی میرسد)‬ ‫(نامعتبرسازی میرسد)‬ ‫تنظیم می‪-‬‬ ‫‪2‬‬
‫کند‬
‫گذرگاه‪/‬دایرکتوری فقدان حافظه نهان ‪ P2‬را‬
‫سرویس میکند؛ بازپس نویسی از ‪ ،P0‬وضعیت‬ ‫مشترک‬ ‫فقدان حافظه نهان‬ ‫فقدان حافظه نهان‬ ‫‪3‬‬
‫مشترک است‪.‬‬
‫‪ lock=0‬تست موفق‬ ‫(تا زمانیکه گذرگاه‪/‬دایرکتوری‬
‫فقدان حافظه نهان برای ‪ P2‬برآورده میشود‪.‬‬ ‫مشترک‬ ‫‪4‬‬
‫است‪.‬‬ ‫مشغول باشد صبر میکند)‬
‫اجرای ‪ ،swap‬گرفتن‬
‫فقدان حافظه نهان برای ‪ P1‬برآورده میشود‪.‬‬ ‫مشترک‬ ‫‪lock=0‬‬ ‫‪5‬‬
‫فقدان حافظه نهان‪.‬‬
‫گذرگاه‪/‬دایرکتوری فقدان حافظه نهان ‪ P2‬را‬ ‫کامل کردن ‪:swap‬‬
‫اجرای ‪ ،swap‬فقدان حافظه‬
‫سرویس میکند؛ نامعتبرسازی تولید میکند‪ ،‬قفل‬ ‫انحصاری (‪)P2‬‬ ‫برگشت ‪ 0‬و تنظیم‬ ‫‪6‬‬
‫نهان را میگیرد‬
‫منحصر است‪.‬‬ ‫‪lock=1‬‬
‫گذرگاه‪/‬دایرکتوری فقدان حافظه نهان ‪ P1‬را‬ ‫‪ swap‬کامل میشود و ‪1‬‬
‫سرویس میکند؛ نامعتبرسازی را میفرستد و از‬ ‫انحصاری (‪)P1‬‬ ‫ورود به ناحیه بحرانی‬ ‫برمیگرداند‪ ،‬و قفل را ‪ 1‬می‪-‬‬ ‫‪7‬‬
‫‪ P2‬بازپس‪-‬نویسی تولید میکند‪.‬‬ ‫کند‪.‬‬
‫چرخش‪ ،‬تست میکند آیا‬
‫هیچی‬ ‫‪8‬‬
‫‪lock=0‬‬
‫جدول ‪ : 4-9‬مراحل همبستگی حافظه نهان و ترافیک گذرگاه برای سه پردازنده ‪ .P2,P1,P0‬این شکل همبستگی نامعتبرسازی نوشتن را‬
‫فرض میکند‪ P0 .‬با قفل شروع میشود (مرحله ‪ ،)1‬و مقدار قفل ‪ 1‬است‪ ،‬قفل ابتد ًا انحصاری است و قبل از شروع مرحله ‪ 1‬توسط ‪ P0‬نگه‬
‫داشته میشود‪ P0 .‬خارج میشود و قفل را باز میکند (مرحله ‪ P1, P2 .)2‬برای خواندن مقدار بازشده در طول ‪ swap‬رقابت میکنند (مراحل‬
‫‪ 3‬تا ‪ P2 .)5‬برنده میشود و وارد بخش بحرانی میشود (مراحل ‪ 6‬و ‪ ،)7‬درحالیکه تالش ‪ P1‬شکست میخورد بطوریکه وارد انتظار چرخشی‬
‫میشود (مراحل ‪7‬و‪ .)8‬در یک سیستم واقعی‪ ،‬این رخدادها خیلی بیشتر از ‪ 8‬پالس ساعت میگیرد‪ ،‬چون بدست آوردن گذرگاه و پاسخ به فقدانها‬
‫زمان بیشتری میگیرد‪ .‬وقتیکه به مرحله ‪ 8‬رسید‪ ،‬پردازه میتواند با ‪ P2‬تکرار شود‪ ،‬عاقبت دسترسی انحصاری بدست میآید و قفل به ‪ 0‬تنظیم‬
‫میشود‪.‬‬
‫کانون نشر علوم‬ ‫‪| 506‬‬

‫اجازه دهید طریقه استفاده این شماتیک قفل چرخشی از مکانیزمهای همبستگی حافظه نهان را تجزیه تحلیل کنیم‪.‬‬
‫جدول ‪ 4-9‬پردازنده و گذرگاه یا عملیات دایرکتوری برای چندین پردازهای که سعی در قفل کردن یک متغیر با‬
‫استفاده از یک ‪ swap‬اتمیک دارند را نشان میدهد‪ .‬وقتیکه پردازندهی دارای قفل‪ 0 ،‬در قفل ذخیره میکند‪ ،‬همه‬
‫سایر حافظههای نهان نامعتبر میشوند و باید مقدار جدید را برداشت کنند تا کپیشان از قفل را بروز کنند‪ .‬یک‬
‫حافظه نهان کپی مقدار قفل نشده (‪ )0‬را ابتدا میگیرد و عمل ‪ swap‬را انجام میدهد‪ .‬وقتیکه فقدان حافظه‬
‫نهان سایر پردازندهها برآورده میشود‪ ،‬آنها متغیر را قفل شده میبینند ‪ ،‬بنابراین آنها باید به تست و چرخش بازگردند‪.‬‬
‫این مثال مزیت دیگری از روشهای بارکردن پیوندی‪ /‬ذخیره شرطی را نشان میدهد‪ :‬عملیات خواندن و نوشتن‬
‫صریحاً مجزا شدهاند‪ LL .‬منجر به هیچ ترافیک گذرگاهی نخواهد شد‪ .‬این حقیقت رشته کد ساده زیر را مجاز‬
‫میکند‪ ،‬که خواص مشابهی با نگارش بهینه شده با استفاده از ‪ exchange‬دارد (‪ R1‬آدرس قفل را دارد‪L1 ،‬‬
‫جایگزین ‪ LD‬شده است و ‪ SC‬جایگزین ‪ EXCH‬شده است)‪:‬‬
‫)‪Lockit: LL R2, 0(R1‬‬
‫‪BNEZ R2,Lockit‬‬ ‫‪;not available-spin‬‬
‫‪DADDUI R2,R0,#1‬‬ ‫‪;Locked value‬‬
‫)‪SC R2,0(R1‬‬ ‫‪;Store‬‬
‫‪BEQZ R2,Lockit‬‬ ‫‪;branch if store fails‬‬
‫پرش اول حلقه چرخش را شکل میدهد‪ ،‬پرش دوم رقابتها را وقتیکه دو پردازنده قفل را همزمان قابل دسترس‬
‫میبینند حل و فصل میکند‪.‬‬
‫‪ – 6-9‬مدل های سازگاری حافظه ‪ :‬مقدمه‬

‫همبستگی حافظه نهان اطمینان میدهد که چند پردازنده نمای سازگار از حافظه ببینند‪ .‬همبستگی به سؤال نمای‬
‫سازگار حافظه چگونه باید باشد پاسخ نمیدهد‪ .‬به عبارتی چه موقع یک پردازنده باید یک مقدار را که توسط پردازنده‬
‫دیگر بروز شده است ببیند؟ چون پردازندهها از طریق متغیرهای مشترک ارتباط برقرار میکنند ( برای مقادیر داده و‬
‫همزمانی استفاده میشوند)‪ ،‬سؤال بصورت زیر تقلیل مییابد‪ .‬به چه ترتیبی یک پردازنده دادههای نوشته شده‬
‫پردازنده دیگر را مشاهده میکند؟ چون تنها راه مشاهده نوشتنهای پردازنده دیگر از طریق خواندنها است‪ ،‬سؤال‬
‫این است که چه خواصی باید در خالل خواندنها و نوشتنها به مکانهای مختلف توسط پردازندههای مختلف اجرا‬
‫شود؟‬

‫هرچند که سؤال ممکن است ساده بنظر برسد‪ ،‬اما بطور قابل توجهی پیچیده است که در مثال ساده زیر خواهیم‬
‫دید‪ .‬اینجا دو قطعه کد از پردازندههای ‪ P1,P2‬نشان داده شدهاند‪:‬‬
‫‪P1:‬‬ ‫;‪A=0‬‬ ‫‪P2:‬‬ ‫;‪B=0‬‬
‫……‬ ‫……‬
‫;‪A=1‬‬ ‫;‪B=1‬‬
‫;‪L1‬‬ ‫‪if(B==0)…..‬‬ ‫‪L2:‬‬ ‫…)‪if(A==0‬‬
‫فرض کنید که پردازهها روی پردازندههای مختلف اجرا میشوند و مکانهای ‪ A, B‬توسط هر دو پردازنده در حافظه‬
‫نهان ذخیره شدهاند و دارای مقدار اولیه صفر هستند‪ .‬اگر نوشتنها اثر فوری داشته باشند و فوراً توسط سایر پردازندهها‬
‫‪| 507‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫دیده شوند‪ ،‬برای هر دو عبارت ‪( if‬برچسبهای ‪ )L1,L2‬غیرممکن است تا شرایطشان را بصورت درست ارزیابی‬
‫کنند‪ ،‬زیرا رسیدن به عبارت ‪ if‬به این معنی است که یا ‪ A‬یا ‪ B‬به مقدار ‪ 1‬انتساب داده شدهاند‪ .‬اما فرض کنید که‬
‫نوشتن نامعتبرسازی تأخیر داشته باشد‪ ،‬و پردازنده مجاز به ادامه در خالل این تأخیر باشد‪ .‬آنگاه‪ ،‬ممکن است که‬
‫هردوی ‪ P1‬و ‪ P2‬نامعتبرسازیهای ‪ B‬و ‪( A‬به ترتیب) را نبینند قبل از اینکه برای خواندن مقادیر تالش کنند‪.‬‬
‫اکنون سؤال این است که آیا این رفتار مجاز است؟ اگر بله تحت چه شرایطی؟‬
‫مستقیم ترین مدل برای سازگاری حافظه ‪ ،‬سازگاری ترتیبی نامیده میشود‪ .‬سازگاری ترتیبی نیازمند این است که‬
‫نتیجه هر اجرا مشابه باشد اگر دسترسیهای حافظه اجرا شده توسط هر پردازنده به ترتیب حفظ شود و دسترسیهای‬
‫پردازندههای مختلف بطور دلخواه باشند‪ .‬سازگاری ترتیبی احتمال اجرای بعضی اجراهای مبهم مثال قبل را حذف‬
‫میکند زیرا انتسابها باید قبل از شروع دستورات ‪ if‬تکمیل شوند‪.‬‬
‫سادهترین راه پیاده سازی سازگاری ترتیبی نیازمند یک پردازنده است که تکمیل هر دسترسی حافظه را تأخیر دهد‬
‫تا زمانیکه همه نامعتبرسازی های منجر شده توسط آن دسترسی تکمیل شود‪ .‬در حقیقت تأخیر به دسترسی حافظه‬
‫بعدی مفید است تا زمانیکه قبلیها تکمیل شوند‪ .‬به خاطر داشته باشید که سازگاری ترتیبی دربرگیرنده عملیاتی بین‬
‫متغیرهای مختلف است‪ :‬دو دسترسی که باید مرتب شوند به مکانهای حافظه متفاوت است‪ .‬در این مثال ‪ ،‬باید‬
‫خواندن ‪ A‬یا ‪ )A==0 or B==0( B‬را تا زمانیکه نوشتن قبلی تکمیل شود (‪ )B=1 or A=1‬تأخیر دهیم‪.‬‬
‫هرچندکه سازگاری ترتیبی الگوی برنامهنویسی سادهای را نشان میدهد‪ ،‬پتانسیل کارایی را کاهش میدهد‪،‬‬
‫باالخص برای یک چندپردازنده با تعداد زیاد پردازنده یا تأخیر ارتباطی طوالنی که در مثال ‪ 4-9‬خواهیم دید‪.‬‬

‫مثال ‪ :4-9‬فرض کنید که پردازندهای داریم که یک فقدان نوشتن تا برقراری مالکیت ‪ 50‬سیکل طول بکشد‪10 ،‬‬
‫سیکل برای انتشار هر نامعتبر سازی بعد از ایجاد مالکیت‪ ،‬و ‪ 80‬سیکل تا یک نامعتبرسازی تکمیل شود و تصدیق‬
‫(‪ )ack‬آن منتشر شود‪ .‬فرض کنید ‪ 4‬پردازنده دیگر یک بلوک حافظه نهان را به اشتراک بگذارند‪ ،‬چقدر یک فقدان‬
‫نوشتن پردازنده نویسنده را متوقف میکند اگر پردازنده سازگار ترتیبی باشد؟ فرض کنید که نامعتبرسازیها باید قبل‬
‫از اینکه کنترل کننده همبستگی بداند که تکمیل شدهاند صریحاً تصدیق شوند‪ .‬فرض کنید بعد از بدست آوردن‬
‫مالکیت برای فقدان نوشتن بدون انتظار برای نامعتبرسازیها‪ ،‬میتوانیم به اجرا ادامه دهیم ‪ ،‬چقدر نوشتن زمان‬
‫میگیرد؟‬
‫پاسخ‪ :‬وقتیکه منتظر نامعتبرسازی هستیم‪ ،‬هر نوشتن به اندازه جمع زمان مالکیت به اضافه زمان تکمیل‬
‫نامعتبرسازی طول میکشد‪ .‬چون نامعتبرسازیها میتوانند همپوش باشند‪ ،‬فقط باید نگران آخری باشیم‪ ،‬که‬
‫‪ 10+10+10+10=40‬سیکل بعد از برقراری مالکیت شروع میشود‪ .‬بنابراین زمان کل برای نوشتن‬
‫‪ 50+40+80=170‬سیکل میباشد‪ .‬در مقایسه‪ ،‬زمان مالکیت فقط ‪ 50‬سیکل است‪ .‬با پیادهسازی بافر نوشتن‬
‫مناسب‪ ،‬امکان ادامه قبل از اینکه مالکیت برقرار شود وجود دارد‪.‬‬

‫برای ایجاد کارایی بهتر‪ ،‬محققین و معماران دو مسیر دیگر را بسط دادهاند‪ .‬اوالً پیادهسازیهای بلند پروازانهای را‬
‫توسعه دادهاند که سازگاری ترتیبی را حفظ میکند اما تکنیکهای اختفای‪-‬تأخیر برای کاهش هزینه استفاده میکنند‬
‫این روش را در بخش ‪ 7-9‬بررسی میکنیم‪ .‬ثانیاً آنها مدلهای سازگاری حافظه با محدودیت کمتری را توسعه‬
‫کانون نشر علوم‬ ‫‪| 508‬‬

‫دادهاند که برای سختافزار سریعتر مجازند‪ .‬اینچنین مدلهایی میتوانند بر چگونگی مشاهده چندپردازنده از دید‬
‫برنامهنویس تأثیر بگذارند‪ ،‬بنابراین قبل ازاینکه این مدلهای با محدودیت کمتر را بررسی کنیم اجازه دهید به‬
‫انتظارات برنامهنویس نگاهی بیاندازیم‪.‬‬
‫دید برنامهنویس‬
‫هرچندکه مدل سازگاری ترتیبی عیب کارایی دارد‪ ،‬از دید برنامهنویسان مزیت سادگی را دارد‪ .‬چالش توسعه یک‬
‫مدل برنامهنویسی است که توضیح آن ساده است و هنوز پیادهسازی کارایی‪-‬باال را اجازه میدهد‪.‬‬
‫یک مدل برنامهنویسی که اجازه پیادهسازی مؤثرتر را میدهد این است که فرض کنیم برنامهها سنکرون شدهاند‪.‬‬
‫یک برنامه سنکرون شده است اگر همه دسترسیها به دادههای مشترک توسط عملیات همزمانی مرتب شده باشند‪.‬‬
‫یک مراجعه داده توسط یک عمل همزمانی همزمان شده است اگر در هر اجرای ممکن‪ ،‬نوشتن یک متغیر توسط‬
‫یک پردازنده و یک دسترسی (نوشتن یا خواندن) به آن متغیر توسط پردازنده دیگر توسط یک زوج عمل همزمانی‬
‫مجزا شده باشند‪ ،‬یکی بعد از ن وشتن توسط پردازنده نویسنده اجرا شود و دیگری قبل از دسترسی پردازنده دومی‬
‫اجرا شود‪ .‬حالت هایی که متغیرها ممکن است بدون مرتب سازی توسط همزمانی بروز شوند رقابت داده نامیده‬
‫میشوند زیرا خروجی اجرا وابسته به سرعت نسبی پردازندهها است‪ ،‬و ‪ ،‬شبیه رقابتها در طراحی سختافزار خروجی‬
‫غیرقابل پیشبینی است‪ ،‬که منجر به نام دیگری برای برنامههای همزمانی میشود‪ :‬آزاد‪-‬از رقابت‪ -‬داده‪.1‬‬
‫به عنوان یک مثال ساده‪ ،‬متغیری را در نظر بگیرید که توسط دو پردازنده متفاوت خوانده و بروز میشود‪ .‬هر پردازنده‬
‫خواندن و بروز را با یک قفل و بازکردن قفل احاطه میکند‪ ،‬برای اطمینان از انحصار متقابل برای بروز رسانی و‬
‫اطمینان از اینکه خواندن سازگار است‪ .‬هر نوشتن از خواندن توسط پردازنده دیگر توسط یک زوج عمل همزمانی‬
‫مجزا شده است‪ :‬یک بازکردن (بعد از نوشتن) و یک قفل (قبل از خواندن)‪ .‬در حقیقت اگر دو پردازنده بدون مداخله‬
‫خواندن در حال نوشتن یک متغیر باشند‪ ،‬آنگاه باید نوشتنها نیز توسط عملیات همزمانی جدا شود‪.‬‬
‫اینکه اکثر برنامهها همزمان شده اند یک نظر کامالً پذیرفته شده است‪ .‬این نظر عمدتاً درست است زیرا اگر‬
‫دسترسیها همزمان نشده باشند‪ ،‬رفتار برنامه احتماالً غیرقابل پیشبینی است زیرا سرعت اجرا تعیین میکند که‬
‫کدام پردازنده برنده رقابت داده خواهد شد و بنابراین بر نتایج برنامه تأثیر میگذارد‪ .‬حتی با سازگاری ترتیبی‪ ،‬استدالل‬
‫راجع چنین برنامههایی خیلی مشکل است‪.‬‬
‫برنامهنویسان میتوانند با ساخت مکانیزمهای همزمانی خودشان برای ضمانت ترتیب تالش کنند‪ ،‬اما این فوقالعاده‬
‫خدعه آمیز است‪ ،‬میتواند منجر به برنامههای خطادار شود‪ ،‬و ممکن است معماری آنرا پشتیبانی نکند‪ ،‬و به این‬
‫معنی است که ممکن است در نسلهای آینده چندپردازندهها کار کنند‪ .‬درعوض‪ ،‬غالباً همه برنامهنویسان استفاده از‬
‫کتابخانههای همزمانی را انتخاب خواهند کرد که برای چند پردازندهها و نوع همزمانی صحیح و بهینه شده است‪.‬‬
‫استفاده از روشهای همزمانی استاندارد اطمینان میدهد که حتی اگر معماری یک مدل سازگاری راحتتر از‬
‫سازگاری ترتیبی پشتیبانی کند‪ ،‬یک برنامه سنکرون شده درست رفتار خواهد کرد مثل وقتیکه سختافزار سازگاری‬
‫ترتیبی را پیاده کرده باشد‪.‬‬

‫‪1‬‬
‫‪Data-race-free‬‬
‫‪| 509‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫مدلهای سازگاری راحت (ریلکس)‪ :‬اصول‬


‫ایده کلیدی در مدلهای سازگاری ریلکس اجازه دادن به خواندنها و نوشتنها است تا بصورت خارج از ترتیب‬
‫تکمیل شوند‪ ،‬اما از عملیات همزمانی استفاده شود تا ترتیب را اجباری کنند‪ ،‬بطوریکه یک برنامه سنکرون شده‬
‫بدرستی رفتار کند مثل وقتیکه پردازنده سازگار ترتیبی بود‪ .‬انواع مختلفی از مدلهای ریلکس وجود دارد که براساس‬
‫نوع ترتیب خواندن و نوشتن کالسبندی می شوند‪ .‬ترتیب را توسط یک مجموعه قانون به شکل ‪ X→Y‬تعیین‬
‫میکنیم‪ ،‬به این معنی که عمل ‪ X‬باید قبل از عمل ‪ Y‬انجام شود‪ .‬سازگاری ترتیبی به معنی همه چهار ترتیب ممکن‬
‫است‪ .R→W, R→R, W→R, W→W :‬مدلهای ریلکس شده توسط اینکه با کدام یک از چهار مجموعه ترتیب‬
‫ریلکس هستند (بیخیال کدام یک هستند) تعریف میشوند‪:‬‬
‫‪ .1‬ریلکس بودن با ترتیب ‪ W→R‬مدلی ایجاد میکند که تحت عنوان مرتب سازی ذخیره کلی یا سازگاری‬
‫پردازنده شناخته میشود‪ .‬چون این روش ترتیب بین نوشتنها را حفظ میکند‪ ،‬بسیاری از برنامهها که تحت‬
‫سازگاری ترتیبی عمل میکنند از این مدل بدون هیچ سازگاری اضافهتری استفاده میکنند‪.‬‬
‫‪ .2‬ریلکس بودن با ترتیب ‪ W→W‬منجر به مدلی میشود که تحت عنوان ترتیب ذخیره جزئی شناخته میشود‪.‬‬
‫‪ .3‬ریلکس بودن با ‪ R→W, R→R‬منجر به انواع گوناگونی از مدلها میشود شامل‪ ،‬ترتیب ضعیف‪ ،‬مدل‬
‫سازگاری ‪ ،PowerPC‬و سازگاری آزاد‪ ،‬براساس جزئیات محدودیت‪-‬های ترتیب و اینکه چگونه عملیات‬
‫همزمانی ترتیب را اجباری میکنند‪.‬‬
‫با ریلکس بودن راجع به این ترتیبها‪ ،‬پردازنده میتواند مزایای کارایی قابل توجهی بدست آورد‪ .‬به هر حال‬
‫پیچیدگیهای زیادی در توصیف مدلهای سازگاری ریلکس شده وجود دارد شامل مزایا و پیچیدگیهای ریلکس‬
‫بودن با ترتیبهای مختلف‪ ،‬تعریف دقیق اینکه کامل شدن یک نوشتن به چه معنی است‪ ،‬و تصمیم راجع به اینکه‬
‫چه موقع پردازندهها می توانند مقادیری که پردازنده خودش نوشته است را ببیند‪ .‬برای اطالعات بیشتر راجع به‬
‫پیچیدگیها‪ ،‬روشهای پیادهسازی‪ ،‬و پتانسیل کارایی مدلهای ریلکس توصیه میکنیم کتاب آموزشی فوقالعاده‬
‫]‪ Adve and Gharachorloo [1996‬را مطالعه کنید‪.‬‬
‫نکات نهایی روی مدلهای سازگاری‬
‫در حال حاضر‪ ،‬اکثر پردازندههای ساخته شده بعضی انواع مدلهای سازگاری ریلکس را پشتیبانی میکنند‪ ،‬که از‬
‫سازگاری پردازنده تا سازگاری آزاد متغیر است‪ .‬چون همزمانی خیلی وابسته به چندپردازنده و مستعد خطا است‪،‬‬
‫انتظار این است که برنامهنویسان از کتابخانههای همزمانی استاندارد استفاده کنند و برنامههای سنکرون بنویسند‪،‬‬
‫که باعث میشود مدل سازگاری ضعیف برای برنامهنویسان نامرئی شود و کارایی باالتری بدست آید‪.‬‬

‫‪1‬‬ ‫‪ - 7-9‬مطالب مرتبط‬


‫چون چندپردازندهها بسیاری از خواص سیستم را بازتعریف میکنند (مثالً سنجش کارایی‪ ،‬تأخیر حافظه‪ ،‬و اهمیت‬
‫مقیاسپذیری)‪ ،‬مسائل طراحی جالبی را معرفی میکنند که بر هردوی سختافزار و نرمافزار تأثیر میگذارد‪ .‬در این‬

‫‪1‬‬
‫‪Crosscutting issues‬‬
‫کانون نشر علوم‬ ‫‪| 510‬‬

‫بخش چندین مثال مرتبط با مطلب سازگاری حافظه ارائه میکنیم و کارایی بدست آمده را وقتیکه چندنخی به‬
‫چندپردازشی اضافه میشوند بررسی خواهیم کرد‪.‬‬
‫بهینهسازی کامپایلر و مدل سازگاری‬
‫دلیل دیگر برای تعریف یک مدل برای سازگاری حافظه تعیین محدودهای از بهینهسازیهای کامپایلر میباشد که‬
‫میتواند روی دادههای مشترک انجام شود‪ .‬در برنامههای موازی صریح‪ ،‬کامپایلر نمیتواند یک خواندن و یک‬
‫نوشتن دو عنصر داده مشترک مختلف را تعویض کند زیرا تبدیالت ممکن است بر معنای برنامه تأثیر بگذارد مگر‬
‫اینکه نقاط همزمانی صریحاً تعریف شده باشند و برنامهها سنکرون شده باشند‪ .‬این حتی از بهینهسازیهای نسبتاً‬
‫ساده مثل تخصیص ثبات به دادههای مشترک جلوگیری میکند زیرا چنین پردازهای خواندنها و نوشتنها را تعویض‬
‫میکند‪ .‬در برنامههای موازی ضمنی‪ ،‬مثل آنهایی که در فرترن با کارایی باال نوشته شدهاند (‪ ،)HPF‬برنامهها باید‬
‫سنکرون شوند و نقاط سنکرون شده شناخته شده باشند‪ ،‬بنابراین این مطلب بوجود نمیآید‪ .‬اینکه چه موقع کامپایلرها‬
‫میتوانند از مدل های سازگاری حافظه منفعت قابل توجهی بدست آورند هم از دید تحقیقات هم از دید عملی یک‬
‫سؤال باز است‪.‬‬
‫شمول و پیادهسازی آن‬
‫همه چندپردازندهها از سلسلهمراتب حافظه برای کاهش تقاضای ارتباط سراسری و تأخیر فقدانهای حافظه نهان‬
‫استفاده میکنند‪ .‬اگر حافظه نهان هم شمول چندسطحه تهیه کند – هر سطح از سلسله مراتب حافظه نهان‬
‫زیرمجموعهای از سطح دورتر از پردازنده باشد‪ -‬آنگاه میتوانیم ساختار چندسطحه استفاده کنیم تا تداخل بین‬
‫ترافیک همبستگی و ترافیک پردازنده را کاهش دهیم که زمانی این تداخل اتفاق میافتد که جاسوسیها و دسترسی‪-‬‬
‫های حافظه نهان باید برای حافظه نهان رقابت کنند‪ .‬بسیاری از چندپردازندهها با حافظههای نهان چندسطحه‬
‫خصوصیت شمول را اجباری میکنند‪ ،‬هرچندکه چندپردازندههای اخیر با حافظههای نهان ‪ L1‬کوچکتر و اندازههای‬
‫بلوک متفاوت گاهی اوقات شمول را اجباری نمیکنند‪ .‬این محدودیت گاهی اوقات خصوصیت زیرمجموعه نیز نامیده‬
‫میشود زیرا هر حافظه نهان زیرمجموعهای از حافظه نهان پایینتر در سلسله مراتب است‪.‬‬
‫در یک نگاه اجمالی‪ ،‬حفظ خصوصیت شمول چندسطحه بدیهی بنظر میرسد‪ .‬یک مثال دو‪-‬سطحه را مد نظر قرار‬
‫دهید‪ :‬هر فقدان در ‪ L1‬در ‪ L2‬منجر به اصابت میشود یا یک فقدان در ‪ L2‬تولید میکند که باعث میشود به هر‬
‫دوی ‪ L1‬و ‪ L2‬آورده شود‪ .‬بعالوه‪ ،‬هر نامعتبرسازی که در ‪ L2‬اصابت میکند باید به ‪ L1‬فرستاده شود‪ ،‬که باعث‬
‫میشود بلوک در صورت وجود نامعتبر شود‪.‬‬
‫سوال این است که چه اتفاقی میافتد وقتیکه اندازههای بلوک ‪ L1‬و ‪ L2‬متفاوت باشند‪ .‬انتخاب اندازههای بلوک‬
‫مختلف کامالً منطقی است زیرا ‪ L2‬بزرگتر است و هزینه فقدان آن بزرگتر است و بنابراین میخواهیم تا اندازه بلوک‬
‫بزرگتری استفاده کنیم‪ .‬چه اتفاقی برای شمول خودکار میافتد وقتیکه اندازههای بلوک متفاوت است؟ یک بلوک‬
‫در ‪ L2‬نشان دهنده چندین بلوک در ‪ L1‬است و یک فقدان در ‪ L2‬منجر به جایگزینی دادههایی میشود که معادل‬
‫چند بلوک ‪ L1‬هستند‪ .‬به عنوان مثال‪ ،‬اگر اندازه بلوک ‪ L2‬چهار برابر ‪ L1‬باشد‪ ،‬آنگاه یک فقدان در ‪ L2‬جایگزین‬
‫معادل چهار بلوک ‪ L1‬خواهد بود‪ .‬اجازه دهید مثال را با جزئیات بیشتری مدنظر قرار دهیم‪.‬‬
‫‪| 511‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫مثال ‪ :5-9‬فرض کنید اندازه بلوک ‪ L2‬چهار برابراندازه بلوک ‪ L1‬باشد‪ .‬نشان دهید که چگونه یک فقدان برای‬
‫یک آدرس که منجر به یک جایگزینی در ‪ L1‬و ‪ L2‬میشود منجر به نقض خصوصیت شمول میشود‪.‬‬
‫پاسخ‪ :‬فرض کنید که ‪ L1‬و ‪ L2‬نگاشت مستقیم باشند و اندازه بلوک ‪ b ،L1‬بایت باشند و اندازه بلوک ‪4b ،L2‬‬
‫بایت باشد‪ .‬فرض کنید ‪ L1‬شامل دو بلوک با آدرس شروع ‪ x‬و ‪ x+b‬باشد که ‪ ،x mod 4b=0‬به این معنی که‬
‫‪ x‬آدرس یک بلوک در ‪ L2‬نیز هست؛ آنگاه یک بلوک در ‪ L2‬شامل بلوک های ‪ L1‬یعنی ‪ x‬و ‪ x+b‬و ‪ x+2b‬و‬
‫‪ x+3b‬میباشد‪ .‬فرض کنید که پردازنده یک مراجعه به بلوک ‪ y‬تولید کند که به بلوک شامل ‪ x‬در هر دو حافظه‬
‫نهان نگاشت پیدا کند و بنابراین منجر به فقدان شود‪ .‬چون ‪ L2‬فقدان دارد‪ 4b ،‬بایت برداشت میکند و با بلوکهای‬
‫شامل ‪ x+3b, x+2b, x+b, x‬جایگزین میکند در حالیکه ‪ b ،L1‬بایت میگیرد و بلوک شامل ‪ x‬را جایگزین‬
‫میکند‪ .‬زیرا ‪ L1‬هنوز شامل ‪ x+b‬میباشد اما ‪ L2‬ندارد بنابراین خصوصیت شمول حفظ نمیشود‪.‬‬

‫برای حفظ شمول با چند اندازه بلوک‪ ،‬باید سطوح باالتر سلسله مراتب را جستجو کنیم وقتیکه یک جایگزینی در‬
‫سطح پایینتر انجام میشود تا اطمینان بدهد که هر کلمه که در سطح پایینتر جایگزین شده است در حافظههای‬
‫نهان سطح باالتر نامعتبر شود‪ ،‬سطوح مختلف انجمن پذیری نوع مشابهی از مشکل ایجاد میکند‪ Bear .‬و ‪Wang‬‬
‫]‪ [1988‬مزایا و چالشهای شمول را با جزئیات توصیف کردند‪ Intel i7 .‬برای ‪ L3‬شمول را استفاده میکند به‬
‫این معنی که دربرگیرنده همه محتوای ‪ L1‬و ‪ L2‬میباشد‪ .‬این به آنها اجازه میدهد تا یک شماتیک دایرکتوری‬
‫مستقیم در ‪ L3‬پیاده کنند و تداخل جاسوسی روی ‪ L1‬و ‪ L2‬برای شرایطی که دایرکتوری تعیین میکند که ‪L1,L2‬‬
‫یک کپی از بلوک دارند را حداقل کنند‪ AMD Opteron .‬شمول در ‪ L2‬را دارد اما این محدودیت را برای ‪L3‬‬
‫ندارد‪ .‬آنها از یک قرارداد جاسوسی استفاده میکنند‪ ،‬اما فقط نیازمند جاسوسی در ‪ L2‬است مگر اینکه اصابتی وجود‬
‫داشته باشد‪ ،‬که یک جاسوسی به ‪ L1‬فرستاده میشود‪.‬‬

‫حصول کارایی از استفاده از چندپردازنده و چندنخی‬


‫در این بخش‪ ،‬به دو مطالعه راجع به تأثیر استفاده از چندنخی روی یک پردازنده چندهستهای نگاهی میاندازیم‪ .‬دو‬
‫مطالعه روی پردازنده‪ Sun T1‬و ‪ IBM Power5‬میباشد‪.‬‬
‫ما روی کارایی چندهسته ‪ T1‬با استفاده از سه برنامه محک سرورگرای ‪TPC-C, SPECJBB (the SPEC‬‬
‫‪ Java Business Benchmark), SPECWEB99‬نگاهی میاندازیم‪ .‬برنامه محک ‪ SPECWeb99‬فقط‬
‫روی ورژن چهار‪-‬هستهای ‪ T1‬اجرا میشود زیرا نمیتواند برای استفاده همه ‪ 32‬نخِ یک پردازنده هشت‪-‬هسته‬
‫مقیاسپذیر شود‪ ،‬دو برنامه محک دیگر با هشت هسته هرکدام چهار نخ برای کل ‪ 32‬نخ اجرا میکنند‪ .‬جدول ‪4-9‬‬
‫‪ CPI‬بهازای‪-‬هر نخ و به ازای هر‪-‬هسته و ‪ CPI‬مؤثر و دستورات در هر پالس (‪ )IPC‬برای ‪ T1‬هشت‪-‬هسته را‬
‫نشان میدهد‪.‬‬
‫‪1‬‬
‫‪ IBM Power 5‬یک دو‪-‬هسته است که چندنخی همزمان ) ‪ (SMT‬را پشتیبانی میکند‪ .‬برای آنالیز کارایی‬
‫چندنخی در یک چندپردازنده‪ ،‬سنجشها روی سیستم ‪ IBM‬با هشت پردازنده ‪ Power 5‬که هرکدام فقط یک‬
‫هسته استفاده میکنند انجام شده است‪ .‬شکل ‪ 13-9‬افزایش سرعت برای یک چندپردازنده با ‪1-8‬پردازنده‬

‫‪1‬‬
‫‪Simultaneous multithreading‬‬
‫کانون نشر علوم‬ ‫‪| 512‬‬

‫‪ ، Power 5‬با و بدون ‪ ،SMT‬برای های محک ‪ SPECRate200‬نشان میدهد‪ .‬بطور میانگین‬
‫‪SPECintRate‬؛ ‪ 1.23‬برابر سریععتر و ‪SPECfpRate‬؛ ‪ 1.16‬برابر سریعتر است‪ .‬نکته اینکه تعداد کمی‬
‫برنامه محک ممیزشناور کاهش ناچیزی روی کارایی در مد ‪ SMT‬تجربه میکنند که حداکثر کاهش سرعت به‬
‫‪ 0.93‬میرسد‪ .‬محدودیتهای سیستم حافظه در مد ‪ SMT‬علت خوب کار نکردن آن است‪.‬‬
‫‪ IPC‬مؤثر برای هشت هسته‬ ‫‪ CPI‬مؤثر برای هشت هسته‬ ‫‪ CPI‬به ازای هر هسته‬ ‫‪ CPI‬به ازای هر نخ‬ ‫برنامه محک‬
‫‪4.4‬‬ ‫‪0.225‬‬ ‫‪1.8‬‬ ‫‪7.2‬‬ ‫‪TPC-c‬‬
‫‪5.7‬‬ ‫‪0.175‬‬ ‫‪1.40‬‬ ‫‪5.6‬‬ ‫‪SPECJBB‬‬
‫‪4.8‬‬ ‫‪0.206‬‬ ‫‪1.65‬‬ ‫‪6.6‬‬ ‫‪SPECWeb99‬‬
‫جدول ‪ CPI :5-9‬به ازای‪-‬نخ‪ ،‬به ازای‪-‬هسته‪CPI ،‬ی مؤثر هشت‪-‬هسته‪ ،‬و ‪ IPC‬مؤثر (معکوس ‪ )CPI‬برای پردازنده ‪ Sun T1‬هشت‪-‬هسته‬

‫‪ – 8-9‬پردازنده های چندهسته و کاراییشان‬


‫در سال ‪ ،2011‬چندهستهای یک موضوع برای همه پردازندههای جدید بود‪ .‬پیادهسازیها برای پشتیبانی‬
‫چندپردازندههای چندتراشه ای بزرگتر بسیار متنوع است‪ .‬در این بخش‪ ،‬طراحی چهار پردازنده چندهسته متفاوت و‬
‫بعضی خواص کارایی را بررسی میکنیم‪.‬‬
‫جدول ‪ 6-9‬خواص کلیدی چهار پردازنده چندهستهای طراحی شده برای کاربردهای سرور را نشان میدهد‪Intel .‬‬
‫‪ Xeon‬براساس طرحی مشابه ‪ i7‬میباشد ولی هستههای بیشتری دارد ‪ ،‬نرخ کالک کمتری دارد (توان محدود‬
‫است)‪ ،‬و حافظه نهان ‪ L3‬بزرگتری دارد‪ AMD Opteron .‬و ‪ Phenom‬رومیزی هسته اصلی مشابهی دارند‪،‬‬
‫در حالیکه ‪ SUN T2‬وابسته به ‪ SUN T1‬است‪ Power7 .‬توسعه یافته ‪ Power5‬میباشد با هستههای بیشتر‬
‫و حافظه نهانهای بزرگتر‪.‬‬
‫ابتدا ما کارایی و مقیاسپذیری کارایی این سه پردازنده چندهسته را وقتیکه به عنوان چندپردازندههای چندتراشهای‬
‫پیکربندی میشوند مقایسه میکنیم (‪ AMD Opteron‬را به خاطر دادههای ناکافی حذف کردیم)‪.‬‬
‫عالوه بر چگونگی تفاوت این سه ریزپردازنده در تاکیدشان روی ‪ ILP‬در مقایسه با ‪ ،TLP‬تفاوتهای قابل توجهی‬
‫در بازارهای مقصد آنها نیز وجود دارد‪ .‬بنابراین تمرکز ما کمتر روی کارایی آنها است و بیشتر روی مقیاسپذیری‬
‫کارایی با اضافه شدن پردازندهها میباشد‪ .‬بعد از آنالیز این دادهها‪ ،‬ما کارایی ‪ Intel Core i7‬چندهستهای را با‬
‫جزئیات بیشتر بررسی خواهیم کرد‪.‬‬
‫‪| 513‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫شکل ‪ :13-9‬مقایسه کارایی ‪ SMT‬و تک‪-‬نخ (‪ )ST‬روی هشت‪-‬پردازنده ‪ .IBM eServer p5575‬نکته اینکه محور ‪ y‬از افزایش‬
‫سرعت ‪ 0.9‬به خاطر افت کارایی شروع میشود‪ .‬فقط یک پردازنده در هر هسته ‪ Power5‬فعال است که بهبود کمی روی نتایج ‪ SMT‬با‬
‫کاهش تداخل در سیستم حافظه میدهد‪ .‬نتایج ‪ SMT‬با ایجاد ‪ 16‬نخ کاربر بدست آمده است‪ ،‬درحالیکه نتایج ‪ ST‬فقط هشت نخ استفاده‬
‫میکنند با یک نخ برای هر پردازنده‪ Power5 .‬توسط ‪ OS‬به مد تک نخ سوئیچ میکند‪ .‬این نتایج توسط ‪ John McCalpin‬از ‪IBM‬‬
‫گردآوری شدهاند‪ .‬از دادهها میبینیم که انحراف معیار استاندارد نتایج برای ‪ SPECfpRate‬از ‪ SPECintRate‬بیشتر است‪ ،‬که نشان دهنده‬
‫این است که بهبود ‪ SMT‬بطور گسترده تغییر میکند‪.‬‬

‫ما کارایی را برای سه مجموعه برنامه محک نشان میدهیم‪SPECintRate, SPECfpRate, :‬‬
‫‪ .SPECjbb2005‬برنامههای محک ‪ ،SPECRate‬کارایی این چندپردازنده را برای موازات سطح درخواست‬
‫نشان میدهند‪ ،‬زیرا با موازات و همپوشانی برنامههای مستقل مشخص شدهاند‪ .‬باالخص هیچ چیز غیر از سرویس‪-‬‬
‫های سیستم مشترک نشدهاند‪ SPECjbb2005 .‬یک برنامه محک تجاری مقیاسپذیر جاوا است که سه سیستم‬
‫کالینت‪/‬سرور را مدل میکند‪ ،‬و تمرکز آن روی سرور است‪ .‬برنامه محک پیادهسازیهای ماشین مجازی جاوا را‬
‫مثل کامپایلرهای ‪ ،in time‬نخها‪ ،‬و بعضی مفاهیم سیستم عامل بکار میاندازد و همچنین مقیاسپذیری سیستم‪-‬‬
‫های چندپردازنده را تست میکند‪.‬‬
‫شکل ‪ 14-9‬کارایی برنامههای محک ‪ SPECRate CPU‬را وقتیکه تعداد هستهها افزایش مییابند نشان میدهد‪.‬‬
‫تقریباً افزایش سرعت خطی بدست میآید وقتیکه تعداد تراشههای پردازنده و بنابراین تعداد هستهها افزایش مییابند‪.‬‬
‫کانون نشر علوم‬ ‫‪| 514‬‬

‫شکل ‪ :14-9‬کارایی روی برنامههای محک ‪ SPECRate‬برای سه پردازنده چندهسته وقتیکه تعداد تراشههای پردازنده افزایش مییابد‪.‬‬
‫نکته اینکه برای این برنامه محک با موازات باال‪ ،‬تقریباً افزایش سرعت خطی بدست میآید‪ .‬هر دو نمودار درر مقیاس ‪ log-log‬است‬
‫بنابراین افزایش سرعت خط مستقیم است‪.‬‬

‫‪Sun T2‬‬ ‫‪Intel Xenon 7560‬‬ ‫‪IBM Power7‬‬ ‫‪AMD Opteron 8439‬‬ ‫خصوصیت‬
‫‪500M‬‬ ‫‪2300M‬‬ ‫‪1200M‬‬ ‫‪904M‬‬ ‫ترانزیستورها‬
‫‪95w‬‬ ‫‪130W‬‬ ‫‪140W‬‬ ‫‪137 W‬‬ ‫توان (اسمی)‬
‫‪8‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫‪6‬‬ ‫حداکثر هسته‪/‬تراشه‬
‫ریز‪-‬دانه‬ ‫‪SMT‬‬ ‫‪SMT‬‬ ‫خیر‬ ‫چندنخی‬
‫‪8‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪1‬‬ ‫نخ‪/‬هسته‬
‫‪2‬تا از ‪ 2‬نخ‬ ‫‪ 4‬تا از یک نخ‬ ‫‪ 6‬تا از یک نخ‬ ‫‪ 3‬تا از یک نخ‬ ‫انتشار دستور‪/‬ساعت‬
‫‪1.6GHz‬‬ ‫‪2.7GHz‬‬ ‫‪4.1GHz‬‬ ‫‪2.8GHz‬‬ ‫نرخ ساعت‬
‫‪ ،4MB ،L2‬مشترک‬ ‫‪ ،24MB ،L3‬مشترک‬ ‫‪( ،32MB ،L3‬با استفاده از‬ ‫‪ ،6MB ،L3‬مشترک‬
‫‪ DRAM‬توکار)‪ ،‬مشترک یا‬ ‫بیرونیترین حافظه نهان‬
‫خصوصی‪/‬هسته‬
‫بله‬ ‫بله‪ L3 ،‬مجموعه مرجع است‪.‬‬ ‫بله‪ L3 ،‬مجموعه مرجع است‪.‬‬ ‫خیر‪ ،‬هرچندکه ‪ L2‬زیرمجموعه‪-‬‬
‫شمول‬
‫ای از ‪ L1‬میباشد‬
‫‪MOESI‬‬ ‫‪MESIF‬‬ ‫‪ MESI‬توسعه یافته با‬ ‫‪MOESI‬‬
‫قرارداد همبستگی چندهسته‬
‫تذکرات رفتاری و محلی‬
‫دایرکتوری در ‪L2‬‬ ‫دایرکتوری در ‪L3‬‬ ‫دایرکتوری در ‪L3‬‬ ‫جاسوسی‬ ‫پیادهسازی همبستگی‬
‫چندهسته‬
‫از طریق چهار لینک‬ ‫تا ‪ 8‬هسته پردازنده میتوانند‬ ‫تا ‪ 32‬تراشه پردازنده میتوانند‬ ‫تا ‪ 8‬تراشه پردازنده با‬
‫همبستگی به ازای هر‬ ‫از طریق اتصال‬ ‫با لینکهای ‪ SMP‬متصل‬ ‫‪ HyperTransport‬در یک‬
‫پردازنده پیادهسازی می‪-‬‬ ‫‪ Quickpath‬پیاده سازی‬ ‫شوند‪ .‬ساختار دایرکتوری‬ ‫حلقه متصل شدهاند با استفاده از‬
‫شوند که برای جاسوسی‬ ‫شوند‪ ،‬با پشتیبانی برای‬ ‫توزیع یافته پویا است‪.‬‬ ‫دایرکتوری یا جاسوسی‪ ،‬سیستم‬ ‫پشتیبانی همبستگی توسعه‬
‫میتوانند استفاده شوند‪ .‬تا‬ ‫دایرکتوریها با منطق بیرونی‬ ‫دسترسی خارج یک تراشه ‪-8‬‬ ‫‪ NUMA‬میباشد‪.‬‬ ‫یافته‬
‫دو تراشه مستقیماً متصل‬ ‫هسته متقارن است‪.‬‬
‫میشوند‪ ،‬و تا چهار اتصال با‬
‫استفاده از ‪ ASIC‬خارجی‬
‫جدول ‪ :6-9‬خالصه ویژگیهای چهار پردازنده چندهستهای انتهایی اخیر (‪ )2010‬طراحی شده برای سرورها‪ .‬جدول شامل بیشترین تعداد‬
‫هسته این پردازندهها میباشد‪ .‬ورژنهای با تعداد هسته و سرعت ساعت کمتری از این پردازندهها نیز وجود دارد‪ .‬ما فقط پیادهسازی تک‪-‬‬
‫هستهای این چندهستهای ها را بررسی کردهایم‪.‬‬
‫شکل ‪ 15-9‬دادههای مشابهی را برای برنامه محک ‪ SPECjbb2005‬نشان میدهد‪ .‬حدبهینهای بین بهرهبرداری‬
‫از ‪ ILP‬بیشتر و فقط تمرکز روی ‪ TLP‬پیچیده است و بطورگستردهای وابسته به بارکاری است‪SPECjbb2005 .‬‬
‫‪| 515‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫یک بارکاری است که پردازندههای افوده شده را مقیاسپذیر میکند و زمان را ثابت نگه میدارد نه اندازه مساله را‪.‬‬
‫در این حالت برای بدست آوردن افزایش سرعت خطی تا ‪ 64‬هسته موازات کافی اتفاق میافتد‪.‬‬

‫شکل ‪ :15-9‬کارایی برنامه محک ‪ SPECjbb2005‬برای سه پردازنده چندهستهای وقتیکه تعداد تراشههای پردازنده افزایش مییابد‪.‬‬
‫نکته اینکه برای این برنامه محک موازی‪ ،‬تقریباً افزایش سرعت خطی بدست میآید‪.‬‬

‫کارایی و بازدهی انرژی چندهسته ‪Intel Core i7‬‬


‫در این بخش‪ ،‬کارایی ‪ i7‬را روی برنامههای محک موازی جاوا و برنامه محکهای ‪ PARSEC‬بررسی میکنیم‪.‬‬
‫ابتدا‪ ،‬به کارایی چندهستهای و مقیاسپذیری درمقایسه یک تک‪-‬هسته بدون استفاده از ‪ SMT‬نگاه میکنیم‪ .‬سپس‬
‫هر دو قابلیت چندهستهای و ‪ SMT‬را ترکیب کنیم‪ .‬همه دادههای این بخش از اسماعیل زاده ]‪ [2011‬استفاده‬
‫میشوند‪ tradebeans .‬و ‪ pjbb2005‬هیچگاه به افزایش سرعت بیشتر از ‪ 1.55‬نمیرسد حتی با چهار هسته‬
‫و مجموع هشت نخ‪ ،‬و بنابراین مناسب برای ارزیابی هستههای بیشتر نیستند‪.‬‬
‫شکل ‪ 17-9‬نمودارهای افزایش سرعت و بازدهی انرژی برنامههای محک ‪ PARSEC‬و جاوا بدون استفاده از‬
‫‪ SMT‬را نشان میدهد‪ .‬بازدهی انرژی به معنی نسبت انرژی مصرف شده توسط دو یا چهار هسته به انرژی مصرف‬
‫شده توسط یک‪-‬هسته میباشد‪ ،‬بنابراین بازدهی انرژی بیشتر بهتر است مقدار ‪ 1.0‬نقطه بدون سود و ضرر است‪.‬‬
‫هسته های استفاده نشده در همه حاالت در مد خواب عمیق بودند که مصرف توانشان را با خاموش کردن آنها‬
‫حداقل میکند‪ .‬در مقایسه دادههای برای برنامههای محک چند‪-‬هستهای و تک‪-‬هستهای‪ ،‬مهم است که بیاد آوریم‬
‫که هزینه انرژی کامل حافظه نهان ‪ L3‬و رابط حافظه در حالت تک‪-‬هسته پرداخت شده است‪ .‬این حقیقت این‬
‫احتمال را که مصرف انرژی برای کاربردهایی که به خوبی مقیاسپذیرند افزایش میدهد‪ .‬میانگین هارمونیک برای‬
‫خالصه نتایج استفاده شده است‪.‬‬
‫همانطور که شکل نشان میدهد برنامههای محک ‪ PARSEC‬افزایش سرعت بیشتری از های محک جاوا بدست‬
‫میآورند‪ ،‬به بازدهی افزایش سرعت ‪ 76%‬برای چهار هسته میرسند‪ .‬هرچندکه این مشاهده از لحاظ داده واضح‬
‫هست‪ ،‬اما آنالیز علت وجود این تفاوت مشکل است‪ .‬به عنوان مثال‪ ،‬کامالً محتمل است که اثرات قانون امدال‬
‫افزایش سرعت بارکاری جاوا را کاهش داده باشد‪ .‬به عالوه‪ ،‬محاوره بین معماری پردازنده و کاربرد‪ ،‬که بر مطالبی‬
‫مثل هزینه همزمانی یا ارتباطات اثر دارد امکانپذیر است‪ .‬باالخص‪ ،‬کاربردهای که بخوبی موازی شدهاند مثل‬
‫کانون نشر علوم‬ ‫‪| 516‬‬

‫‪ ،PARSEC‬گاهی اوقات از مزایای نرخ محاسبات و ارتباطات بهره ببرند که وابستگی به هزینه ارتباطات را کاهش‬
‫میدهد‪.‬‬

‫شکل ‪ :17-9‬این نمودار افزایش سرعت برای اجراهای دو و چهار‪-‬هسته ای بارهای کاری جاوای موازی و ‪ PARSEC‬بدون ‪SMT‬‬
‫را نشان میدهد‪ .‬این دادهها توسط اسماعیلزاده ]‪ [2011‬گردآوری شده اند‪ .‬افزایش سرعت و بازدهی انرژی با میانگین هارمونیک‬
‫خالصه شدهاند‪.‬‬

‫این تفاوتها در افزایش سرعت به تفاوت در بازدهی انرژی منتقل میشود‪ .‬به عنوان مثال‪ ،‬برنامههای محک‬
‫‪ PARSEC‬بازدهی انرژی را به میزان کمی نسبت به نگارش تک‪-‬هسته بهبود میدهند؛ این نتیجه ممکن ازت‬
‫بطور قابل توجهی توسط این حقیقت که حافظه نهان ‪ L3‬در اجراهای چندهستهای بطور مفیدتری استفاده میشود‬
‫نسبت به حالت تک‪-‬هستهای تحت تأث یر واقع شود و هزینه انرژی در هر دو حالت مشابه است‪ .‬بنابراین برای‬
‫برنامههای محک ‪ ،PARSEC‬روشهای چندهستهای به آنچه که طراحان انتظار دارند وقتیکه از طرح تمرکز‪-‬‬
‫روی ‪ ILP‬به طرح چندهستهای سوئیچ میکنند برسد مثالًّ آن کارایی را به سرعت یا با سرعت بیشتر از توان‬
‫مقیاسپذیر میکند که منتج به بازدهی انرژی ثابت یا بهبود یافته میشود‪ .‬در حالت جاوا‪ ،‬میبینیم که نه اجراهای‬
‫دو هستهای نه چهار هسته ای در بازدهی انرژی بدون ضرر و مزیت هستند به خاطر سطوح افزایش سرعت کمتر‬
‫بارکاری جاوا‪ .‬بازدهی انرژی در حالت جاوای چهار‪-‬هستهای بطور معقوالنهای باال است (‪ .)0.94‬بنابراین روش‬
‫‪ TLP‬از روش ‪ ILP‬برای بهبود کارایی این کاربردها بهتر است‪.‬‬

‫قرار دادن چندهستهای و ‪ SMT‬با هم‬


‫در انتها‪ ،‬ترکیب چندهسته ای و چندنخی را با سنجش دو مجموعه برنامه محک برای دوتا چهار پردازنده و یک تا‬
‫دو نخ (مجموع چهار نقطه داده و تا هشت نخ) مورد توجه قرار میدهیم‪ .‬شکل ‪ 18-9‬افزایش سرعت و بازدهی‬
‫انرژی بدست آمده روی ‪ Intel i7‬وقتیکه تعداد پردازندهها دو تا چهار هستند و ‪ SMT‬بهرهبرداری نشد‪ ،‬را نشان‬
‫میدهد از میانگین هارمونیک برای خالصه سازی دو مجموعه برنامه محک استفاده شده است‪ .‬بوضوح‪ ،‬وقتیکه‬
‫موازات سطح‪-‬نخ قابل دسترس در شرایط چندهسته به اندازه کافی است ‪ SMT‬میتواند به کارایی اضافه شود‪ .‬به‬
‫‪| 517‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫عنوان مثال‪ ،‬در چهار‪-‬هسته بدون ‪ SMT‬بازدهی افزایش سرعت برای جاوا و ‪ PARSEC‬به ترتیب ‪ 67%‬و ‪76%‬‬
‫است‪ .‬با ‪ SMT‬روی چهار هسته‪ ،‬این نسبتها روی چهار هسته‪ 83% ،‬و ‪ 97%‬میشوند‪.‬‬
‫بازدهی انرژی تصویر کمی متفاوتتر ارائه میدهد‪ .‬در حالت ‪ ،PARSEC‬افزایش سرعت برای حالت ‪ SMT‬چهار‪-‬‬
‫هسته (هشت نخ) خطی است‪ ،‬و توان باسرعت کمتر مقیاسپذیر میشود‪ ،‬و منتج به بازدهی انرژی ‪ 1.1‬میشود‪.‬‬
‫شرایط جاوا پیچیدهتر است؛ حداکثر بازدهی انرژی برای اجرای ‪SMT‬ی دو‪-‬هسته (چهار‪-‬نخ) ‪ 0.97‬میباشد و‬
‫برای اجرای ‪SMT‬ی چهار‪-‬هسته (هشت‪-‬نخ) ‪ 0.89‬میشود‪ .‬به نظر میرسد که برنامههای محکهای جاوا با‬
‫اثرات قانون امدال وقتیکه بیشتر از چهار نخ استفاده میشود روبرو میشوند‪ .‬براساس مشاهده بعضی معماران‪،‬‬
‫چندهسته مسئولیت کارایی را بیشتر به برنامهنویس شیفت میدهند‪.‬‬

‫شکل ‪ :18-9‬این شکل اجرای ‪2‬و ‪ 4‬هستهای بارکاریهای جاوا و ‪ PARSEC‬را با و بدون استفاده از ‪ SMT‬نشان میدهد‪ .‬نتایج‬
‫فوق در تعداد نخ از ‪ 2‬تا ‪ 8‬نخ متفاوتند و خواص معماری و خواص کاربردی را انعکاس میدهند‪.‬‬

‫نتیجهگیری‬
‫بیشتر از ‪ 30‬سال‪ ،‬محققین و طراحان پایان تک‪-‬پردازنده و غلبه چندپردازندهها را پیشبینی کردند‪ .‬تا سالهای آخر‬
‫این قرن اثبات شد که این پیشبینی اشتباه است‪ .‬هزینه بهرهبرداری از ‪ILP‬ی بیشتر در بازدهی یک عامل بازدارنده‬
‫است‪ .‬در حقیقت‪ ،‬چندهستهای مسأله توان را حل نکرده است‪ ،‬زیرا هردوی تعداد ترانزیستورها و تعداد ترانزیستورهای‬
‫سوئیچ را افزایش میدهد که دو مصرف کننده پایه توان هستند‪.‬‬
‫به هر حال‪ ،‬چندهسته بازی را تغییر داد‪ .‬با مجاز کردن هستههای بیکار تا بتوانند وارد مد ذخیره‪-‬توان شوند‪،‬‬
‫بهبودهایی در بازدهی توان میتواند بدست آید که نتایج آن در این فصل نشان داده شد‪ .‬بطور مهمتر‪ ،‬چندهستهای‬
‫کانون نشر علوم‬ ‫‪| 518‬‬

‫به منظور مشغول نگه داشتن پردازنده بیشتر روی ‪ TLP‬تکیه میکند که کاربرد و برنامهنویس مسئول تعیین آن‬
‫میباشند در صورتیکه سختافزار مسئول ‪ ILP‬است‪ .‬این تفاوتها در کارایی و بازدهی انرژی چندهستهای برای‬
‫برنامههای محک جاوا در مقایسه با ‪ PARSEC‬مطرح شدند‪.‬‬
‫هرچندکه چندهسته مستقیماً به چالش بازدهی انرژی مقداری کمک میکند و اکثر بار را به سیستم نرمافزار منتقل‬
‫میکند‪ ،‬هنوز هم چالشها مشکل و مسائل حل نشدهای باقی میمانند‪.‬‬
‫‪| 519‬‬ ‫فصل نهم‪ :‬موازات سطح نخ‬

‫تمرینات فصل نهم‬

‫‪ -9-1‬فرض کنید برای یک کاربرد تابعی به شکل )‪ F(i,p‬داریم که کترتیبی از زمان را میدهد که دقیقاً ‪ i‬پردازنده‬
‫از کل ‪ p‬پردازنده قابل استفادهاند‪ .‬این به معنی ‪ ∑𝑝𝑖=1 𝐹(𝑖, 𝑝) = 1‬میباشد‪ .‬فرض کنید که وقتی ‪ i‬پردازنده‬
‫در حال استفادهاند‪ ،‬کاربرد ‪i‬برابر سریعتر اجرا میشود‪ .‬قانون امدال را طوری بازنویسی کنید که افزایش سرعت را به‬
‫عنوان تابعی از ‪ p‬برای بعضی کاربردها بدست آورد‪.‬‬
‫‪ -9-2‬در این تمرین‪ ،‬ما اثر همبندی شبکه ارتباطی را برحسب تعداد سیکل ساعت به ازای هر دستور )‪(CPI‬‬
‫برنامههای در حال اجرا روی یک چندپردازنده حافظه‪-‬توزیع شده ‪-64‬پردازنده بررسی میکنیم‪ .‬نرخ ساعت پردازنده‬
‫پردازنده ‪ 3.3GHz‬است و ‪ CPI‬پایهی یک کاربرد با مراجعات واقع در حافظه نهان ‪ 0.5‬است‪ .‬فرض کنید که‬
‫‪ 0.2%‬از دستورات دربرگیرنده مراجعه ارتباطی دور هستند‪ .‬بهای مراجعه ارتباطی راهدور ‪(100+ 10h)ns‬‬
‫میباشد که ‪ h‬تعداد پرش (‪) hop‬های شبکه ارتباطی است که یک مراجعه دور به حافظه پردازنده دور و بازگشت‬
‫از آن میگیرد‪ .‬فرض کنید همه لینکهای ارتباطی دوطرفه باشند‪.‬‬
‫(الف) بدترین‪-‬حالت هزینه ارتباطی وقتیکه ‪ 64‬پردازنده بصورت یک حلقه ‪ ،‬یک شبکه ‪ ،8×8‬یا یک فوق مکعب‬
‫مرتب شدهاند را محاسبه کنید‪.‬‬
‫(ب) ‪ CPI‬پایهی یک کاربرد بدون ارتباطات دور با ‪ CPI‬بدست آمده برای هر یک از سه همبندی قسمت الف‬
‫مقایسه کنید‪.‬‬
‫(ج) چقدر یک کاربرد بدون ارتباطات دور از کاربرد با ارتباطات دور در همبندیهای قسمت الف سریععتر است؟‬
‫‪ -9-3‬چگونه قرارداد جاسوسی پایه برای یک حافظه نهان نوشتن‪-‬سراترتیبی )‪ (WT‬تغییر داده میشود؟ چه توابع‬
‫سختافزاری هستند که برای حافظه نهان ‪ WT‬در مقایسه با حافظه نهان بازپس‪-‬نویسی )‪ (WB‬نیاز نیستند؟‬
‫‪ -9-4‬یک قرارداد همبستگی حافظه نهان براساس دایرکتوری را مدنظر قرار دهید‪ .‬دایرکتوری هماکنون دارای‬
‫اطالعاتی است که مشخص میکند پردازنده ‪ P1‬دادههایی در مد انحصاری دارد‪ .‬اگر دایرکتوری یک درخواست‬
‫برای بلوک مشابهی از پردازنده ‪ P1‬دریافت کند معنی آن چیست؟ کنترل کننده دایرکتوری چه کاری باید انجام‬
‫دهد؟‬
‫‪ -9-5‬یک کنترلر دایرکتوری میتواند نامعتبرسازیهایی برای خطوطی که توسط کنترل کننده حافظه نهان محلی‬
‫جایگزین شدهاند بفرستد‪ .‬برای اجتناب از چنین پیامهایی و سازگار نگه داشتن دایرکتوری‪ ،‬تذکرات جایگزینی‬
‫استفاده میشوند‪ .‬چنین پیامهایی به کنترلر میگویند که یک بلوک جایگزین شده است‪ .‬قرارداد همبستگی‬
‫دایرکتوری این فصل را برای جایگزینی چنین تذکراتی اصالح کنید‪.‬‬
‫‪ -9-6‬دستورات ‪ test-and-set‬کالسیک را با استفاده از زوج دستورات ‪load-linked/store-linked‬‬
‫پیادهسازی کنید‪.‬‬
‫کانون نشر علوم‬ ‫‪| 520‬‬

‫‪ -9-7‬مدل سازگاری حافظه توصیفی از سیستم حافظه برای برنامهنویس ارائه میکند‪ .‬قطعه کد زیر را مد نظر‬
‫قرار دهید که مقادیر اولیه ‪ A=flag=C=0‬میباشد‪.‬‬
‫‪P1‬‬ ‫‪P2‬‬
‫‪A=2000‬‬ ‫};{)‪while(flag==1‬‬
‫‪Flag=1‬‬ ‫‪C=A‬‬
‫(الف) در انتهای قطعه کد‪ ،‬شما چه مقداری برای ‪ C‬انتظار دارید؟‬
‫(ب) یک سیستم با شبکه ارتباطی همه‪-‬منظوره‪ ،‬یک حافظه نهان براساس دایرکتوری‪ ،‬و پشتیبانی برای ‪load‬های‬
‫بلوک نشدنی نتیجهای تولید میکند که در آن ‪ C=0‬میباشد‪ .‬سناریوی مطرح کنید که این نتیجه امکانپذیر باشد‪.‬‬
‫(ج) اگر شما بخواهید سیستم سازگار ترتیبی باشد‪ ،‬چه محدودیتهای کلیدی را باید تحمیل کنید؟‬
‫فرض کنید که یک پردازنده مدل سازگاری ریلکس را پشتیبانی میکند‪ .‬یک مدل سازگاری ریلکس نیازمند تعریف‬
‫صریح همزمانی میباشد‪ .‬فرض کنید که پردازنده یک دستور ”‪ “barrier‬را پشتیانی میکند‪ ،‬که تضمین میدهد‬
‫که همه عملیات حافظه قبل از دستور ‪ barrier‬تکمیل شود قبل از اینکه هر عمل حافظه بعد از ‪ barrier‬اجازه‬
‫داده شود‪ .‬شما کجا باید دستورات ‪ barrier‬را در قطعه کد فوق اضافه کنید تا نتایج سازگاری ترتیبی را بدست‬
‫آورید؟‬
‫‪ -9-8‬اثبات کنید که در یک سلسله مراتب حافظه نهان دو‪-‬سطحه که ‪ L1‬به پردازنده نزدیکتر است‪ ،‬شمول بدون‬
‫هیچ عمل اضافه تری حفظ میشود اگر ‪ L2‬حداقل انجمن پذیری ‪ L1‬را داشته باشد‪ ،‬هر دو حافظه نهان از جایگزینی‬
‫‪ LRU1‬استفاده کنند و هر دو حافظه نهان اندازه بلوک مشابهی داشته باشند‪.‬‬
‫‪ -9-9‬چندپردازندهها و خوشهها معموالً افزایش کارایی را نشان میدهند وقتیکه تعداد پردازندهها افزایش مییابد‪،‬‬
‫که برای ‪ n‬پردازنده افزایش سرعت ‪ n‬ایدهآل است‪ .‬هدف این برنامه محک بایاس شده این است که بدترین کارایی‬
‫را برای یک برنامه با اضافه شدن پردازندهها بدست آورد‪ .‬این به این معنی است که یک پردازنده روی یک‬
‫چندپردازنده یا خوشه برنامه را از همه سریعتر اجرا میکند‪ ،‬دوتا کندتر‪ ،‬چهارتا کندتر از دوتا و غیره‪ .‬خواص کلیدی‬
‫کارایی برای هر سازمانی که افزایش سرعت معکوس میدهد چیست؟‬

‫‪1‬‬
‫‪Line Replaceable Unit‬‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫فصل دهم‪ -‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات‬
‫سطح‪-‬درخواست و سطح‪-‬داده‬

‫دیتاسنتر یک کامپیورت است‪.‬‬

‫‪Google(2007) ،Luiz Andre Barroso‬‬

‫ص‬ ‫شخ‬
‫یکصد سال پیش‪ ،‬شرکتاه روش تولید ربقشان با استفاده از موتوراهی بخار و ژرناتوراهی صی را متوقف کردند و هب شبکه الکتریکی جدید و ل‬
‫تغ‬ ‫نج‬ ‫تغ‬ ‫ع‬
‫شدند‪ .‬توان ارزان پمپ شده توسط خدمات الکتریکی فقط طریقه ملکرد مشاغل را ییر نداد‪ .‬این خدمات یک واکنش ز یرهای و ییرات‬

‫اجتماعی را ایجاد کرد که دنیای مدرن را بوجود آورد‪ .‬امروزه یک انقالب مشاهب رد حال اتفاق است‪ .‬با استفاده از شبکه محاسباتی سراسری‬
‫جت‬
‫اینترنتی‪ ،‬هیزات رپدازش اطالعاتی‪ ،‬انبوه دادهاه و کد رنم افزاری را هب خاهناهی ما و مشاغل ما پمپ میکنند‪ .‬رد این زمان محاسبات یک‬

‫ازبار شدهاند‪.‬‬
‫‪Nicholas Carr‬‬
‫سوییچ بزرگ‪ :‬سیم بندی مجدد جهان‪ ،‬از ادیسون تا گوگل (‪)2008‬‬
‫‪ -1-10‬مقدمه‬
‫سیس‬
‫هرکس میتواند یک ‪ CPU‬ی سریع بسازد‪ .‬هنر ساخت یک تم سریع است‪.‬‬
‫‪Seymour Cray‬‬
‫پدر سوپرکامپیوتر‬

‫کامپیوترهای مقیاس‪-‬ورهاوس (‪ )WSC‬پایه سرویسهای اینترنت مثل جستجو‪ ،‬شبکه اجتماعی‪ ،‬نقشههای آن‪-‬‬
‫الین‪ ،‬اشتراک ویدئو‪ ،‬فروشگاه آنالین‪ ،‬سرویسهای ایمیل‪ ،‬و غیره میباشند که همه روزه توسط تعداد زیادی‬
‫استفاده میشوند‪ .‬محبوبیت فوقالعاده زیاد این سرویسهای اینترنت ایجاد ‪WSC‬ها که با تقاضاهای سریع جامعه‬
‫روبرو شده است‪ ،‬را ضروری کرده است‪ .‬هرچندکه ‪WSC‬ها ممکن است به عنوان دیتاسنترهای بزرگ ظاهر شوند‪،‬‬
‫معماری آنها و عملکرد آنها کامالً متفاوت است‪WSC .‬های امروزی شبیه یک ماشین غول پیکر عمل میکنند و‬
‫هزینه آن ‪ 150M$‬برای ساختمان‪ ،‬زیرساخت سرد سازی و الکتریکی‪ ،‬سرورها‪ ،‬و تجهیزات شبکه که ‪ 50000‬تا‬
‫‪ 100000‬سرور را دربرگرفته و متصل میکنند‪ ،‬میباشد‪ .‬به عالوه رشد سریع رایانش ابری ‪WSC‬ها را برای هر فرد‬
‫که یک کارت اعتباری دارد‪ ،‬در دسترس قرار میدهد‪.‬‬
‫‪| 523‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫معماری کامپیوتر به طور طبیعی برای طراحی ‪WSC‬ها توسعه داده میشود‪ .‬به عنوان مثال‪ Luiz Barroso ،‬از‬
‫گوگل تحقیق تزش را در معماری کامپیوتر انجام داد‪ .‬او معتقد است که مهارتهای معمار برای طرحهای مقیاس‬
‫باال‪ ،‬طراحی برای قابلیت اطمینان‪ ،‬و مهارت دیباگ سختافزار برای ایجاد و عملکرد ‪WSC‬ها خیلی مفید است‪.‬‬

‫در این مقیاس خیلی بزرگ‪ ،‬نیازمند ابداعاتی در توزیع توان‪ ،‬سرد کردن‪ ،‬و مدیریت میباشیم‪WSC .‬ها فرزند مدرنِ‬
‫سوپرکامپیوتر میباشند و ‪ Seymour Cray‬پدربزرگ معماریهای ‪ WSC‬امروزی است‪ .‬کامپیوترهای انتهایی‬
‫او محاسباتی را راهاندازی میکردند که در هیچ مکانی غیر از آن انجام نمیشدند‪ ،‬اما آنقدر گران بودند که فقط تعداد‬
‫اندکی کمپانی از عهده آن برمیآمدند‪ .‬در این زمان هدف تهیه فنآوری اطالعات برای جهان است نه فقط محاسبات‬
‫با کارایی‪-‬باال (‪ )HPC‬برای دانشمندان و مهندسین‪ ،‬بنابراین ‪WSC‬ها تقریباً نقش مهمتری برای جامعه امروزی از‬
‫آنچه سوپرکامپیوترهای کری در گذشته انجام میدادند بازی میکنند‪.‬‬

‫مسلماً‪WSC ،‬ها کاربران بیشتری از محاسبات کارایی‪-‬باال دارند و اشتراک بیشتری در بازار ‪ IT‬ارائه میکنند‪.‬‬
‫برحسب سنجش بر اساس تعداد کاربران یا بازدهی‪ ،‬گوگل حداقل ‪ 250‬برابر بزرگتر از مرکز تحقیقات کری میباشد‪.‬‬

‫اشتراکات معماریهای ‪ WSC‬و معماریهای سرور عبارتند از‪:‬‬

‫هزینه‪-‬کارایی‪ -‬کار انجام شده به ازای هر دالر به خاطر مقیاس‪ ،‬تا اندازهای بحرانی است‪ .‬کاهش هزینه‬ ‫•‬
‫سرمایهی یک ‪ WSC‬به اندازه ‪ ،10%‬میتواند ‪ 15M$‬صرفه جویی داشته باشد‪.‬‬
‫بازدهی انرژی‪ -‬هزینههای توزیع توان وابسته به مصرف توان است؛ قبل از اینکه بتوان توان را مصرف‬ ‫•‬
‫کرد باید توان را توزیع کرد‪ .‬هزینههای سیستم مکانیکی وابسته به توان است‪ :‬باید گرمای تولید شده‬
‫را حذف کرد‪ .‬بنابراین‪ ،‬هزینه توزیع و هزینه سیستمهای خنک کننده از توان حداکثر و توان مصرفی‬
‫نشأت میگیرد‪ .‬به عالوه‪ ،‬بازدهی انرژی بخش مهمی در نظارت محیطی است‪ .‬بنابراین‪ ،‬کار انجام شده‬
‫به ازای هر ژول برای ‪WSC‬ها و سرورها به خاطر هزینه باالی ساختمان و توان زیرساخت مکانیکی‬
‫برای یک ورهاوس از کامپیوترها و برای هزینههای ماهانه توان مصرفی سرورها بحرانی است‪.‬‬
‫قابلیت اطمینان از طریق افزونگی‪ -‬طبیعت اجرای طوالنی سرویسهای اینترنت به این معنی است که‬ ‫•‬
‫سختافزار و نرمافزار در یک ‪ WSC‬باید مجموعاً بیشتر از ‪ ٪99.99‬قابل دسترس بودن را فراهم کنند‪،‬‬
‫یعنی باید کمتر از یک ساعت در سال از کار افتاده باشد‪ .‬افزونگی‪ ،‬کلید قابلیت اطمینان برای ‪WSC‬ها‬
‫و سرورها میباشد‪ .‬درحالیکه معماران سرور برای رسیدن به دسترسپذیری باال اغلب سختافزار بیشتر‬
‫با هزینه بیشتر استفاده میکنند‪ ،‬معماران ‪WSC‬ها به جای آن تکیه روی چندین سرور مقرون به صرفه‬
‫که توسط یک شبکه هزینه پایین به هم متصل شدهاند و افزونگی مدیریت شده توسط نرمافزار دارند‪.‬‬
‫بنابراین‪ ،‬اگر هدف رسیدن به دسترسپذیری باالتر از ‪ ٪99.99‬میباشد‪ ،‬چندین ‪ WSC‬مورد نیاز است‬
‫تا رخدادهایی که کل ‪ WSC‬باید از عهده آن برآید را پوشش دهند‪ .‬همچنین چند ‪ WSC‬تأخیر سرویس‪-‬‬
‫های گسترده را کاهش میدهد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 524‬‬

‫‪ -Network I/O‬معماریهای سرور و معماریهای ‪ WSC‬باید یک رابط شبکه خوب برای دنیای‬ ‫•‬
‫بیرونی تهیه کنند‪ .‬شبکه برای حفظ سازگاری دادهها بین چندین ‪ WSC‬و رابط به دنیای بیرونی مورد‬
‫نیاز است‪.‬‬
‫بارهای کاری پردازش دستهای و محاورهای‪ -‬عالوه بر اینکه ‪WSC‬ها و سرورها بارکاریهای محاورهای‬ ‫•‬
‫باال برای سرویسهایی شبیه شبکه اجتماعی با میلیونها کاربر را اجرا میکنند‪ ،‬برنامههای دستهای‬
‫موازی انبوه را برای محاسبهی متادیتای مفید برای این سرویسها نیز اجرا میکنند‪ .‬به عنوان مثال‪،‬‬
‫برای تبدیل صفحاتی که از خزیدن‪ 1‬در وب بدست میآیند به اندیسهای جستجو ‪MapRduce‬‬
‫‪ jobs‬اجرا میشوند‪.‬‬

‫همچنین خواصی وجود دارند که با معماری سرور مشترک نیستند‪:‬‬

‫موازات فراوان‪ -‬نگرانی یک معمار سرور این است که چه موقع کاربردها در بازار مقصد‪ ،‬موازات کافی‬ ‫•‬
‫دارد تا از سختافزار موازی استفاده کند و چه موقع هزینه برای سختافزار ارتباطی خیلی باال است تا از‬
‫این موازات بهرهبرداری کند‪ .‬یک معمار ‪ WSC‬چنین نگرانی ندارد‪ .‬اوالً‪ ،‬کاربردهای دستهای از مقدار‬
‫زیادی مجموعه داده مستقل که نیازمند پردازش مستقل است بهره میبرد‪ ،‬مثل میلیاردها صفحات وب‬
‫از جستجوهای وب‪ .‬این پردازش موازات سطح‪-‬داده است که به داده در وسایل ذخیره سازی انبوه بجای‬
‫حافظه اِعمال میشود‪ .‬ثانیاً‪ ،‬کاربردهای سرویس اینترنت محاورهای ‪ ،‬که به آن نرمافزار به عنوان سرویس‬
‫)‪ (SaaS‬نیز میگویند‪ ،‬میتواند از میلیونها کاربر مستقل از سرویسهای اینترنت محاورهای بهره ببرد‪.‬‬
‫در ‪ SaaS‬خواندنها و نوشتنها بندرت وابسته میباشند‪ ،‬بنابراین ‪ SaaS‬بندرت نیازمند همزمانی می‪-‬‬
‫باشد‪ .‬به عنوان مثال‪ ،‬جستجو یک اندیس فقط‪-‬خواندنی استفاده میکند و ایمیل معموالً خواندن و نوشتن‬
‫اطالعات مستقل است‪ .‬به این نوع ساده از موازات موازات سطح‪-‬درخواست میگوییم‪ ،‬که تعداد زیادی‬
‫تالش مستقل میتوانند بطور ذاتی بصورت موازی پیشبروند بدون نیاز به ارتباطات یا همزمانی؛ به‬
‫عنوان مثال بروزرسانی بر اساس‪-‬ژورنال‪ 2‬میتواند تقاضاهای توان عملیاتی را کاهش دهد‪ .‬باوجود‬
‫موفقیت ‪ SaaS‬و ‪WSC‬ها‪ ،‬کاربردهای قدیمیتر مثل پایگاه دادههای رشنال‪ ،‬با تکیه بر موازات سطح‪-‬‬
‫درخواست تضعیف میشوند‪.‬‬
‫مقدار هزینههای عملیاتی‪ -‬معماران سرور معموالً سیستمهایشان را برای حداکثر کارایی بر اساس بودجه‬ ‫•‬
‫طراحی میکنند و نگران توان هستند تا مطمئن شوند که از ظرفیت خنک سازی محیط شان تجاوز‬
‫نکنند‪ .‬آنها معموالً هزینههای عملیاتی یک سرور را نادیده میگیرند‪ ،‬فرض میکنند که در مقایسه با‬
‫هزینههای خرید ناچیز است‪WSC .‬ها دوره عمر بیشتری دارند‪ -‬استهالک ساختمان و زیرساختهای‬
‫خنک سازی و الکتریکی بیشتر از ‪ 10‬سال است‪ -‬بنابراین هزینههای عملیاتی محسوس است‪ :‬انرژی‪،‬‬
‫توزیع توان‪ ،‬و خنک سازی بیشتر از ‪ 30‬درصد هزینههای یک ‪ WSC‬را استفاده میکند‪.‬‬

‫‪1‬‬
‫‪Crawling‬‬
‫‪2‬‬
‫‪Journal-Based updating‬‬
‫‪| 525‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫مقیاس و فرصتها‪ /‬مسائل مرتبط با مقیاس‪ -‬اغلب کامپیوترهای بزرگ فوقالعاده گران هستند زیرا‬ ‫•‬
‫نیازمند سختافزار خاص میباشند‪ ،‬و هزینه سفارشیسازی آنها نمیتواند بطور مؤثری تقلیل یابد زیرا‬
‫تعداد کمی کامپیوتر خیلی بزرگ ساخته میشوند‪ .‬به هر حال‪ ،‬وقتیکه شما ‪ 50000‬سرور و زیرساختهای‬
‫مرتبط با آن برای ساخت یک ‪ WSC‬را میخرید تخفیف قابل توجهی میگیرید‪ .‬به خاطر مقیاس بزرگ‬
‫‪WSC‬ها مسا عد خطا هستند‪ .‬حتی اگر یک سرور میانگین زمان تا خطا (‪)MTTF‬ی ‪ 25‬سال‬
‫(‪200000‬ساعت) داشته باشد‪ ،‬یک معمار ‪ WSC‬نیازمند طرحی است که روزانه با ‪ 5‬خطای سرور مواجه‬
‫میشود‪ .‬همانطور که در جدول ‪ 1.10‬مشاهده میکنید‪ ،‬خطای دیسک در یک سال نرخ ‪ 2%‬تا ‪10%‬‬
‫دارد‪ .‬اگر هر سرور ‪ 4‬دیسک داشته باشد و نرخ خطای ساالنه آنها ‪ 4%‬باشد‪ ،‬معمار یک ‪ WSC‬با ‪50000‬‬
‫سرور باید انتظار دیدن یک خطای دیسک در هر ساعت داشته باشد‪.‬‬
‫تعداد تقریبی‬
‫نتیجه‬ ‫علت‬ ‫رخدادها در یک‬
‫سال‬
‫اتالف توان در کل ‪WSC‬؛ باعث توقف ‪ WSC‬نخواهد شد اگر ‪ UPS‬و ژنراتور کار کند‬ ‫خطاهای‬
‫‪ 1‬یا ‪2‬‬
‫(ژنراتورها تقریباً ‪ %99‬اوقات کار میکنند)‪.‬‬ ‫تأسیسات توان‬
‫قطعی برنامهریزی شده برای ارتقاء زیرساختها‪ ،‬زمانهای زیادی نیازمند گسترش شبکه‬
‫هستیم که نیازمند کابل بندی مجدد است‪ ،‬ارتقاء میانافزار سوئیچ‪ ،‬و غیره‪ .‬حدود ‪ 9‬قطعی‬ ‫ارتقاء خوشه‬ ‫‪4‬‬
‫برنامهریزی شده به ازای هر قطعی برنامهریزی نشده وجود دارد‪.‬‬
‫خطاهای درایو‪-‬‬
‫نرخ خطای دیسک ساالنه ‪2‬تا ‪ 4‬درصد است‪.‬‬
‫سخت‬
‫هنوز هم کار میکند ولی ‪ 10x‬تا ‪ 20x‬کندتر است‪.‬‬ ‫دیسکهای کند‬
‫یک خطای ‪ DRAM‬غیرقابل تصحیح در هر سال‪.‬‬ ‫حافظه های بد‬
‫‪1000‬‬
‫ماشینهای بد‬
‫پیکربندی منجر به حدود ‪ %30‬خرابیهای سرویس میشود‪.‬‬
‫پیکربندی شده‬
‫ماشینهای‬
‫‪1‬درصد ریبوتهای سرور بیشتر از یکبار در هفته‪.‬‬
‫فلسی‬
‫خرابیهای هر‬
‫ریبوت ماشبن‪ ،‬معموالً ‪ 5‬دقیقه میگیرد‪.‬‬ ‫‪5000‬‬
‫سرور‬
‫جدول ‪ :1-10‬لیست قطعیها و آنامولیها با فرکانس ظهور تقریبی در سال اول یک خوشه با ‪ 2400‬سرور‪.‬‬

‫مثال ‪ :1-10‬قابل دسترس بودن یک سرویس در حال اجرا روی ‪ 2400‬سرور را با استفاده از اطالعات جدول‬
‫‪ 10-1‬محاسبه کنید‪ .‬برخالف یک سرویس در یک ‪WSC‬ی واقعی‪ ،‬در این مثال سرویس نمیتواند خطاهای‬
‫سختافزار یا نرمافزار را تحمل کند‪ .‬فرض کنید که زمان ریبوت نرمافزار ‪ 5‬دقیقه است و زمان تعمیر سختافزار‬
‫یک ساعت است‪.‬‬

‫پاسخ‪ :‬میتوان قابل دسترس بودن سرویس را با محاسبه زمان قطع برقها به خاطر خطای هر جزء محاسبه کرد‪.‬‬
‫از روی محافظه کاری کمترین مقدار در هر طبقه در جدول ‪ 1-10‬را مدنظر قرار میدهیم و ‪ 1000‬قطع برق را بین‬
‫کانون نشر علوم‬ ‫‪| 526‬‬

‫چهار جزء در نظر می‪-‬گیریم‪ .‬دیسکهای کُند را نادیده میگیریم‪ -‬پنجمین جزء از ‪ 1000‬قطع برق‪ -‬زیرا آنها بر‬
‫کارایی صدمه میزنند نه قابل دسترس بودن‪ ،‬همچنین خطاهای تاسیسات توان را نادیده میگیریم‪ ،‬زیرا سیستم‬
‫منبع تغذیه بدون وقفه (‪ 99% )UPS‬آنها را پوشش میدهد‪ .‬تعداد ساعات خرابی در سال برابر است با‪:‬‬
‫= ‪Hours Outageservice = (4+250+250+250)×1 hour + (250+5000)×5 minutes‬‬
‫‪754+438 = 1192hours‬‬
‫زیرا ‪ 365×24=8760‬ساعت در یک سال وجود دارد‪ ،‬قابل دسترس بودن برابر است با‪:‬‬
‫)‪(8760−1192‬‬ ‫‪7568‬‬
‫‪Availabilitysystem= 8760‬‬ ‫‪= 8760 = 86%‬‬
‫که‪ ،‬بدون افزونگی نرمافزار بطوریکه قطعیهای زیادی را پوشش دهد‪ ،‬یک سرویس روی ‪ 2400‬سرور بطور میانگین‬
‫یک روز در هفته از کار افتاده است‪.‬‬

‫در بخش ‪ 10-10‬توضیح میدهیم که طالیهدار ‪WSC‬ها کامپیوترهای خوشه هستند‪ ،‬خوشهها مجموعهای از‬
‫کامپیوترهای مستقل هستند که با استفاده از شبکههای محلی استاندارد (‪LAN‬ها) و سوییچهای تولید انبوه به‬
‫یکدیگر متصل شدهاند‪ .‬برای بارکاریهایی که نیازمند ارتباطات متمرکز نیستند‪ ،‬خوشهها محاسبات با هزینه‬
‫مناسبتری از چندپردازندههای حافظه مشترک عرضه میکنند‪ .‬خوشهها از سال‪ 1990‬برای محاسبات علمی و سپس‬
‫برای سرویسهای اینترنت رایج شدند‪ .‬یک نمای ‪ WSC‬این است که آنها فقط تکامل منطقی خوشهها از صدها‬
‫سرور تا دهها هزار سرور میباشند‪.‬‬

‫یک سؤال طبیعی این است که چه موقع ‪WSC‬ها مشابه خوشههای مدرن برای محاسبات با کارایی‪-‬باال هستند‪.‬‬
‫علیرغم اینکه بعضی ‪WSC‬ها و خوشهها هزینه و مقیاس مشابهی دارند (طرحهای ‪HPC1‬یی با یک میلیون‬
‫پردازنده وجود دارند که هزینه آنها صدها میلیون دالر است)‪ ،‬خوشهها پردازندههای خیلی سریعتر و شبکههای خیلی‬
‫سریعتر بین گرهها از آنهایی که در ‪ WSC‬پیدا میشوند دارند زیرا کاربردهای ‪ HPC‬مستقلتر هستند و با فرکانس‬
‫بیشتری ارتباط برقرار میکنند (بخش ‪ 3-10‬را ببینید)‪ .‬طرحهای ‪ HPC‬متمایل به استفاده از سختافزار سفارشی‬
‫هستند –باالخص در شبکه‪ -‬بنابراین ارزان نیستند‪ .‬به عنوان مثال‪ ،‬ریزپردازنده ‪ IBM Power 7‬به تنهایی‬
‫هزینه و مصرف توان بیشتری از کل یک گره سرور در ‪WSC‬ی گوگل دارد‪ .‬محیط برنامهنویسی نیز روی موازات‬
‫سطح‪-‬نخ و سطح‪-‬درخواست تأکید دارد‪ ،‬معموالً ترجیح در اتمام یک کار دارد تا اینکه کارهایی مستقل را از طریق‬
‫موازات سطح‪-‬درخواست انجام دهد‪ .‬خوشههای ‪ HPC‬متمایل به کارهایی با زمان اجرای طوالنی هستند که بطور‬
‫کامل از سرورها بهرهبرداری میکنند‪ ،‬حتی برای هفتهها‪ ،‬در حالیکه بهرهوری سرورها در ‪WSC‬ها در محدوده ‪10‬‬
‫تا ‪ 50‬درصد است(شکل ‪ 1-10‬را ببینید) و هر روزه متغیر است‪.‬‬

‫مقایسه ‪WSC‬ها با دیتاسنترهای سنتی چگونه است؟ اپراتورهای یک دیتاسنتر سنتی معموالً ماشینها و نرمافزار‬
‫شخص ثالث را از قسمتهای مختلف سازمان جمعآوری میکنند و آنها را به طور متمرکز برای دیگران اجرا میکنند‪.‬‬
‫تمرکز اصلی آنها یکپارچگی سرویسهای زیاد روی ماشینهای کمتر است‪ ،‬که از یکدیگر برای محافظت از اطالعات‬
‫حساس مجزا شدهاند‪ .‬بنابراین‪ ،‬در دیتاسنترها ماشینهای مجازی اهمیت روزافزایی دارند‪ .‬برخالف ‪WSC‬ها‪،‬‬

‫‪1‬‬
‫‪High performance computing‬‬
‫‪| 527‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫دیتاسنترهای سنتی متمایل به توزیع سختافزار و نرمافزار نامتجانس هستند تا مشتریان مختلفشان داخل یک‬
‫سازمان را سرویس بدهند‪ .‬برنامهنویسان ‪ WSC‬نرمافزار شخصیشان را تهیه میکنند و ‪WSC‬ها سختافزار‬
‫متجانستری دارند؛ هدف ‪ WSC‬این است تا نرمافزار‪/‬سختافزار یک ورهاوس شبیه یک کامپیوتر عمل کند که‬
‫انواع مختلفی کاربرد را اجرا میکند‪ .‬بیشترین هزینه یک دیتاسنتر سنتی‪ ،‬افرادی هستند که آنرا نگهداری میکنند‪،‬‬
‫درحالیکه در یک ‪WSC‬یی که بخوبی طراحی شده است‪ ،‬بیشترین هزینه مربوط به سختافزار سرور است و هزینه‬
‫افراد خیلی مهم نیست‪ .‬همچنین دیتاسنترهای سنتی مقیاس یک ‪ WSC‬را ندارند بنابراین مزایای اقتصادی مقیاس‬
‫توضیح داده شده در فوق را بدست نمیآورند‪ .‬بنابراین‪ ،‬اگر یک ‪ WSC‬را به عنوان یک دیتاسنتر فوقالعاده بزرگ‬
‫در نظر بگیرید‪ ،‬در آن کامپیوترها بطور مجزا در یک فضا با زیرساختهای الکتریکی و خنک سازی خاص قرار داده‬
‫شدهاند‪ ،‬دیتاسنترهای رایج چالشها و فرصتهای یک ‪ WSC‬را چه از لحاظ الکتریکی یا عملیاتی ندارند‪.‬‬

‫چون معماران کمی نرمافزاری که روی یک ‪ WSC‬اجرا میشود را درک میکنند‪ ،‬با بارکاری و مدل برنامهنویسی‬
‫یک ‪ WSC‬شروع میکنیم‪.‬‬

‫‪ -10-2‬مدل های برنامهنویسی و بارکاری ها برای کامپیوترهای مقیاس‪-‬ورهاوس‬

‫عالوه بر سرویسهای اینترنتی که روزانه بطور عمومی با آنها مواجه میشویم مثل جستجو‪ ،‬اشتراک ویدئو‪ ،‬و شبکه‬
‫اجتماعی‪WSC ،‬ها همچنین کاربردهای دستهای را مثل تبدیل ویدئو به فرمتهای جدید یا ایجاد اندیسهای‬
‫جستجو از خزیدن در وب‪ ،‬اجرا میکنند‪.‬‬

‫امروزه‪ ،‬رایجترین ‪ Framework‬برای پردازش دستهای در ‪WSC‬ها ‪[Dean and MapReduce‬‬


‫]‪ Ghemawat‬و ‪ Hadoop‬میباشند‪ .‬شکل ‪ 2-10‬عمومیت روزافزون ‪ MapReduce‬در گوگل را نشان‬
‫میدهد‪( .‬فیس بوک ‪ Hadoop‬را روی ‪ 2000‬سرور پردازش‪-‬دستهای اجرا میکرد‪ .‬در سال ‪ 2011‬فیس بوک‬
‫‪ 60000‬سرور داشت)‪ Map .‬ابتدا یک تابع تهیه شده توسط برنامهنویس به هر رکورد ورودی منطقی اِعمال میکند‪.‬‬
‫‪ Map‬روی هزاران کامپیوتر اجرا میشود تا یک نتیجه میانی از زوج کلید‪-‬مقدار تولید کند‪ Reduce .‬خروجی‬
‫این کارهای توزیع شده را گردآوری کرده و آنها را با استفاده از یک تابع تعریف شده توسط برنامهنویس دیگر تغییر‬
‫میدهد‪ .‬با پشتیبانی مناسب نرمافزار‪ ،‬هر دو بطور زیادی موازی هستند و به سادگی قابل فهم و استفادهاند‪ .‬در ‪30‬‬
‫دقیقه‪ ،‬یک برنامهنویس تازهکار میتواند ‪ MapReduce‬را روی هزاران کامپیوتر اجرا کند‪MapReduce .‬‬
‫یک مدل برنامهنویسی برای پردازش مجموعه دادههای بزرگ با یک الگوریتم موازی‪ ،‬توزیع شده در یک خوشه‬
‫میباشد (منبع تعریف سایت گوگل)‪.‬‬
‫کانون نشر علوم‬ ‫‪| 528‬‬

‫‪Sep-09‬‬ ‫‪Sep-07 Mar-06 Aug-04‬‬


‫‪3467000‬‬ ‫‪2217000‬‬ ‫‪171000‬‬ ‫‪29000‬‬ ‫تعداد کارهای ‪MapReduce‬‬
‫‪475‬‬ ‫‪395‬‬ ‫‪874‬‬ ‫‪634‬‬ ‫میانگین زمان خاتمه (ثانیه)‬
‫‪25562‬‬ ‫‪11081‬‬ ‫‪2002‬‬ ‫‪217‬‬ ‫سرورهای استفاده شده در سال‬
‫‪544130‬‬ ‫‪403152‬‬ ‫‪52254‬‬ ‫‪3288‬‬ ‫خواندن داده ورودی (ترابایت)‬
‫‪90120‬‬ ‫‪34774‬‬ ‫‪6743‬‬ ‫‪758‬‬ ‫دادههای میانی (ترابایت)‬
‫‪57520‬‬ ‫‪14018‬‬ ‫‪2970‬‬ ‫‪193‬‬ ‫دادههای خروجی نوشته شده‬
‫‪488‬‬ ‫‪394‬‬ ‫‪268‬‬ ‫‪157‬‬ ‫میانگین تعداد سرورها به ازای هر کار‬
‫جدول ‪ :2-10‬بهرهوری ساالنه ‪ MapReduce‬در گوگل در طول زمان‪ .‬بعد از ‪ 5‬سال تعداد کارهای ‪ MapReduce‬با ضریب‬
‫‪ 100‬افزایش یافته است و میانگین تعداد کارها به ازای هر سرور با ضریب ‪ 3‬افزایش مییابد‪ .‬در دو سال اخیر افزایش به ترتیب با‬
‫ضریب ‪ 1.6‬و ‪ 1.2‬بوده است‪.‬‬

‫به عنوان مثال‪ ،‬یک برنامه ‪ MapReduce‬تعداد وقوع هر کلمه انگلیسی را در مجموعه بزرگی از اسناد محاسبه‬
‫میکند‪ .‬در زیر یک نگارش ساده شده از برنامه موجود است‪ ،‬که فقط حلقه داخلی را نشان میدهد و فقط یک وقوع‬
‫همه کلمات انگلیسی پیدا شده در یک سند را پیدا میکند ]‪:[Dean and Ghemawat 2008‬‬

‫‪Map (String key, String value):‬‬


‫‪//key:document name‬‬
‫‪//value: document content‬‬
‫‪For each word w in value:‬‬
‫‪EmitIntermediate(w, “1”) ; //Produce list of all words‬‬
‫‪Reduce (String key, Iterator values):‬‬
‫‪//key: a word‬‬
‫‪//values: a list of counts‬‬
‫;‪int result=0‬‬
‫‪for each v in values:‬‬
‫;)‪result+=ParseInt(v‬‬ ‫‪//get integer from key-value pair‬‬
‫;))‪Emit (AsString(result‬‬

‫تابع ‪ EmitIntermediate‬استفاده شده در تابع ‪ Map‬هر کلمه در سند را با تعداد یک جستجو میکند‪ .‬سپس‬
‫تابع ‪ Reduce‬همه مقادیر به ازای هر کلمه را برای هر سند با استفاده از )(‪ ParseInt‬جمع میکند تا تعداد‬
‫وقوع هر کلمه در همه سندها را بدست آورد‪ .‬محیط اجرایی ‪ MapReduce‬کارهای ‪ map‬را زمانبندی میکند‬
‫و کار را به گرههای یک ‪ WSC‬کاهش میدهد‪( .‬نگارش کامل برنامه در ]‪Dean and Ghemawat [2004‬‬
‫یافت میشود)‪.‬‬

‫میتوان به ‪ MapReduce‬به عنوان عمومیتی از عمل یک‪-‬دستور‪ ،‬چند‪-‬داده (‪ )SIMD‬فکر کرد که توسط یک‬
‫تابع دنبال میشود که خروجی آن کار ‪ Map‬را کاهش میدهد‪ .‬زیرا کاهش در برنامههای ‪ SIMD‬رایج است‪،‬‬
‫‪| 529‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫سخت افزار ‪ SIMD‬عملیات خاصی را برای آنها عرضه میکند‪ .‬به عنوان مثال‪ ،‬دستورات ‪ AVX SIMD‬اخیر‬
‫شامل دستورات "‪ "horizontal‬میباشد که زوج عملوندها که در ثباتهای همسایه هستند را با هم جمع میکند‪.‬‬

‫برای تطابق با تغییرپذیری کارایی هزاران کامپیوتر‪ ،‬زمانبند ‪ MapReduce‬کارهای جدید را براساس اینکه با چه‬
‫سرعتی گرهها کارهای قبلی را تکمیل میکنند انتساب میدهد‪ .‬بوضوح‪ ،‬یک کار کُند میتواند تکمیل یک کار‬
‫‪ MapReduce‬بزرگ را متوقف کند‪ .‬در یک ‪ ،WSC‬راهحل برای کارهای کُند تهیه مکانیزمهای نرمافزاری‬
‫است تا از عهده چنین تغییراتی که در این مقیاس ذاتی است برآید‪ .‬این روش تضاد حادی با راهحلی که برای یک‬
‫سرور در دیتاسنتر سنتی استفاده میشد دارد‪ ،‬که در کارهای کُند سنتی سخت‪-‬افزار باید تفکیک شود و نیازمند‬
‫جایگزینی است یا نرم افزار سرور نیازمند تنظیم و دوباره نویسی است‪ .‬عدم تجانس کارایی در نُرم ‪ 50000‬سرور در‬
‫یک ‪ WSC‬است‪ .‬به عنوان مثال‪ ،‬نزدیک به انتهای یک برنامه ‪ ،MapReduce‬سیستم شروع به پشتیبانگیری‬
‫اجراهای سایر گرههای کارهایی که هنوز تمام نشدهاند میکند و نتایج را از هرکدام که زودتر تمام شده باشد میگیرد‪.‬‬

‫مثال دیگری از چگونگی تفاوت ‪ WSC‬استفاده از تکرار دادهها به منظور غلبه بر خطا میباشد‪ .‬با تعداد تجهیزات‬
‫زیاد یک ‪ ،WSC‬خطاپذیری آن جالب نخواهد بود که در مثال قبل مطرح کردیم‪ .‬برای رسیدن به قابلیت دسترس‬
‫‪ ،99.99%‬نرم افزار سیستم باید از عهده این واقعیت برآید‪ .‬برای کاهش هزینههای عملیاتی‪ ،‬همه ‪WSC‬ها‬
‫نرمافزار مانیتور کردن اتوماسیون را استفاده میکنند بطوریکه یک اپراتور مسئول بیشتر از ‪ 1000‬سرور است‪.‬‬

‫قطعههای کاری برنامهنویسی مثل ‪ MapReduce‬برای پردازش دستهای و ‪SaaS‬هایی مثل جستجو روی‬
‫سرویسهای نرمافزاری داخلی برای موفقیتشان تکیه دارند‪ .‬به عنوان مثال‪ MapReduce ،‬روی سیستم فایل‬
‫گوگل )‪ (GFS1‬تکیه دارد تا فایلها را برای هر کامپیوتر تهیه کند بطوریکه کارهای ‪ MapReduce‬بتوانند در‬
‫هر جایی زمانبندی شوند‪.‬‬

‫عالوه بر ‪ ،GFS‬مثالهایی از چنین سیستمهای ذخیره مقیاسپذیر شامل سیستم ذخیره سازی کلید مقدار آمازون و‬
‫جدول بزرگ سیستم ذخیره رکورد گوگل میباشند‪ .‬نکته اینکه اینچنین سیستمهایی اغلب روی یکدیگر ساخته‬
‫میشوند‪ .‬به عنوان مثال‪ ،‬جدول بزرگ معموال الگها و دادههایش را روی ‪ GFS‬ذخیره میکند‪.‬‬

‫این سرویس های داخلی تصمیمات متفاوتی را نسبت به نرم افزاری که روی یک سرور اجرا میشود میگیرند‪ .‬به‬
‫عنوان یک مثال‪ ،‬به جای اینکه فرض شود واحد ذخیره سازی مثل سرورهای ذخیره سازی ‪ RAID‬قابل اطمینان‬
‫است‪ ،‬این سیستمها اغلب المثنیهای کاملی از داده تولید میکنند‪ .‬المثنیها میتوانند به کارایی خواندن و قابل‬
‫دسترس بودن کمک کنند؛ با جایابی مناسب‪ ،‬المثنیها میتوانند بر تعداد زیادی خطاهای سیستم غلبه کنند‪ .‬بعضی‬
‫سیستمها بجای اینکه المثنیهای کاملی را نگه دارند ردپایی از آن را نگه میدارند‪ .‬مثالی دیگر از روشهای متفاوت‬

‫‪1‬‬
‫‪Google File System‬‬
‫کانون نشر علوم‬ ‫‪| 530‬‬

‫این است که نرمافزار ذخیره ‪ WSC‬بجای اینکه از همه نیازهای سیستمهای پایگاه داده سنتی (اتمیک بودن‪،‬‬
‫سازگاری‪ ،‬جداسازی و دوام) استفاده کند اغلب از سازگاری ریلکس استفاده میکند‪.‬‬

‫‪ -3-10‬معماری کامپیوتر کامپیوترهای مقیاس ورهاوس‬


‫شبکهها بافت اتصالی هستند که ‪ 50000‬سرور را به یکدیگر وصل میکنند‪WSC .‬ها سلسله مراتبی از شبکهها را‬
‫استفاده میکنند که نمونهای از آن در شکل ‪ 2-10‬نشان داده شده است‪ .‬یک شبکه ترکیبی کارایی مشابه با‬
‫گرانترین سوییچ سفارشی انتهایی برای ‪ 50000‬سرور تهیه میکند‪ .‬همانطور که در بخش ‪ 6-10‬خواهیم دید‬
‫راهحلهای کنونی ایدهآل نیستند و شبکهی ‪ WSC‬هنوز موضوع تحقیقات است‪.‬‬
‫رکِ ‪19‬اینچ (‪ )48.26cm‬هنوز هم قطعه استاندارد برای نگهداری سرورها میباشد‪ .‬سرورها براساس تعداد واحد‬
‫رکی‪ )U( 1‬که در یک رک اشغال میکنند سنجیده میشوند‪ .‬یک ‪ ،U‬ارتفاع ‪ 1.75‬اینچ (‪ )4.45 cm‬دارد و حداقل‬
‫فضایی است که یک سرور میتواند اشغال میکند‪.‬‬

‫یک رک ‪ 7‬فوتی )‪ 48 (213.36 cm‬عدد ‪ U‬عرضه میکند‪ .‬این محاسبه با این جمله که رایجترین سوییچ برای‬
‫یک رک یک سوییچ اترنت ‪ -48‬پورت است تطابق ندارد‪ .‬این محصول کاالیی است که هزینه آن برای هر پورت‬
‫‪ 1Gbit/Sec‬اترنت در سال ‪ 30 ، 2011‬دالر بوده است ]‪ .[Barroso and Holzle 2009‬پهنای باند داخل‬
‫یک رک برای هر سرور مشابه است‪ ،‬بنابراین در داخل یک رک مهم نیست که نرمافزار گیرنده و فرستنده کجا قرار‬
‫دارد‪ .‬این انعطافپذیری از دید نرمافزار ایدهآل است‪.‬‬

‫این سوییچها دو تا هشت پورت ‪ uplink‬دارند‪ ،‬که برای اتصال رک به سوییچ باالتر در سلسله مراتب میباشند‪.‬‬
‫بنابراین‪ ،‬پهنای باند خروجی رک ‪ 6‬تا ‪ 24‬برابر (‪48⁄8‬تا ‪ )48⁄2‬از پهنای باند داخل رک کمتر است‪ .‬به این‬
‫نسبت ‪ oversubscription‬میگویند‪ .‬بزرگ بودن این نسبت یعنی اینکه برنامهنویسان باید از نتایج کارایی‬
‫آگاه باشند وقتیکه فرستندهها و گیرندهها در رکهای مختلف قرار دارند‪ .‬افزایش بار زمانبندی‪-‬نرمافزاری‪ ،‬آرگومان‬
‫دیگری برای سوییچهای شبکه است که برای دیتاسنتر طراحی میشوند‪.‬‬

‫‪1‬‬
‫)‪Number of rack units (U‬‬
‫‪| 531‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫شکل ‪ 2-10‬سلسله مراتب سوئیچها در یک ‪WSC‬‬

‫حافظه جانبی‬
‫یک طرح طبیعی این است که رک را با سرورها پر کنیم البته مقداری از فضای رک برای سوییچها مورد نیاز است‪.‬‬
‫این طرح باعث ایجاد یک سؤال میشود حافظه جانبی کجا قرار میگیرد؟ از دید ساخت سختافزار‪ ،‬سادهترین‬
‫راهحل قرار دادن دیسکها در داخل سرورها و تکیه روی اتصاالت اترنت برای دسترسی اطالعات دیسکها برای‬
‫سرورهای دور میباشد‪ .‬راه دیگر حافظه جانبی ملحق شده به شبکه (‪ )NAS1‬میباشد‪ .‬راه حل ‪ NAS‬معموالً به‬
‫ازای هر ترابایت حافظه جانبی گرانتر است اما خواص زیادی دارد‪ :‬مثالً تکنیکهای ‪ RAID‬را برای بهبود قابلیت‬
‫اطمینان حافظه جانبی تهیه میکند‪.‬‬

‫‪WSC‬ها معموالً روی دیسکهای محلی تکیه میکنند و نرمافزاری برای حافظه جانبی تهیه میکنند که اتصال‬
‫پذیری و قابلیت اطمینان را مدیریت میکند‪ .‬به عنوان مثال‪ GFS ،‬از دیسکهای محلی استفاده میکند و حداقل‬
‫سه المثنی برای غلبه بر مشکالت قابلیت اطمینان نگه میدارد‪ .‬این افزونگی خطاهای دیسک محلی و خطاهای‬
‫توان در رکها و کل خوشه را پوشش میدهد‪ .‬انعطافپذیری سازگاری شرطی ‪ GFS‬هزینه سازگار نگهداشتن‬
‫المثنیها‪ ،‬همچنین نیازمندیهای پهنای باند شبکه برای سیستم حافظه جانبی را کاهش میدهد‪ .‬الگوهای دسترسی‬
‫محلی به معنی پهنای باند باال برای حافظه جانبی محلی نیز میباشد که در ادامه خواهیم دید‪.‬‬

‫‪1‬‬
‫)‪Network attached storage (NAS‬‬
‫کانون نشر علوم‬ ‫‪| 532‬‬

‫وقتی راجع به معماری یک ‪ WSC‬صحبت میکنیم‪ ،‬عبارت خوشه ابهام آور است‪ .‬با استفاده از تعریف بخش ‪-10‬‬
‫‪ ،1‬یک ‪ WSC‬فقط یک خوشه فوقالعاده بزرگ است‪ Barroso .‬و ‪ Holzle‬اصطالح خوشه را به معنی گروهی‬
‫از کامپیوترها‪ ،‬با اندازهی حدود ‪ 30‬رک استفاده کردهاند‪ .‬در این فصل‪ ،‬به منظور جلوگیری از ابهام از عبارت آرایه به‬
‫معنی یک مجموعه از رکها استفاده میکنیم با حفظ معنی اصلی کلمه خوشه به معنی مجموعهای از کامپیوترهای‬
‫شبکه شده داخل یک رک‪.‬‬

‫سوییچ آرایه‬

‫سوییچی که یک آرایه از رکها را متصل میکند بطور قابل توجهی گرانتر از سوییچ اترنت ‪-48‬پورت میباشد‪ .‬این‬
‫هزینه به خاطر اتصاالت بیشتر و پهنای باند بیشتر میباشد تا مشکل ‪ oversubscription‬را حل کند‪.‬‬
‫‪ Barroso‬و ‪ Holzle‬گزارش دادهاند که یک سوییچ که پهنای باند دوبخشی ‪ 10‬برابر یک سوییچ رک دارد‪،‬‬
‫هزینه تقریباً ‪ 100‬برابر دارد‪ .‬یک دلیل این است که هزینه پهنای باند سوییچ برای ‪n‬پورت میتواند با درجه ‪n2‬‬
‫رشد کند‪.‬‬

‫دلیل دیگر برای هزینه باال این است که این محصوالت سود زیادی برای شرکتهایی که آنها را تولید میکنند‬
‫دارند‪ .‬این شرکتها این هزینهها را به خاطر تهیه خواصی مثل نظارت بسته منطقی میدانند‪ .‬علت گرانی این خواص‬
‫این است که باید با سرعت خیلی باال عمل کنند‪ .‬به عنوان مثال‪ ،‬سوییچهای شبکه از تراشههای حافظه قابل‬
‫آدرسدهی محتوا و آرایههای گیت قابل برنامهنویسی‪ -‬فیلد )‪ (FPGA1‬استفاده میکنند تا این خواص را برآورده‬
‫کنند‪ ،‬اما این تراشهها ذاتاً گران هستند‪ .‬درحالیکه چنین خواصی برای تنظیمات اینترنت نفیس هستند‪ ،‬در داخل یک‬
‫دیتاسنتر معموالً استفاده نمیشوند‪.‬‬

‫سلسه مراتب حافظه ‪WSC‬‬

‫جدول ‪ 4-10‬تأخیر‪ ،‬پهنای باند‪ ،‬و ظرفیت سلسله مراتب حافظه داخل یک ‪ WSC‬را نشان میدهد و شکل ‪3-10‬‬
‫دادههای مشابهی را با نمودار نشان میدهد‪ .‬این دادهها بر اساس مفروضات زیر هستند ‪[Barroso and holzle‬‬
‫]‪:2009‬‬

‫هر سرور شامل ‪ 16GB‬از حافظه با زمان دسترسی ‪-100‬نانوثانیه و انتقال ‪ 20GBytes/Sec‬و ‪2‬‬ ‫•‬
‫ترابایت دیسک است که زمان دسترسی ‪-10‬میلی ثانیه و انتقال ‪ 200Mbytes/Sec‬عرضه میکند‪.‬‬
‫به ازای هر بورد دو سوکت وجود دارد که یک پورت اترنت یک گیگابایت درثانیه را به اشتراک میگذارند‪.‬‬
‫هر زوج رک دربرگیرنده یک سوییچ رک میباشد و ‪ 80‬سرورِ ‪ ،2U‬را نگه میدارد (بخش ‪ 7-10‬را‬ ‫•‬
‫ببینید)‪ .‬نرمافزار شبکه به اضافه سربار سوییچ تأخیر ‪ DRAM‬را به ‪ 100‬میکروثانیه و تأخیر دسترسی‬
‫دیسک را به ‪11‬میلی ثانیه افزایش میدهد‪ .‬بنابراین‪ ،‬ظرفیت کلی ذخیره یک رک تقریباً یک ترابایت‬

‫‪1‬‬
‫)‪Field-programmable gate arrays (FPGAs‬‬
‫‪| 533‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫‪ DRAM‬و ‪ 160‬ترابایت حافظه دیسک است‪ .‬اترنت ‪ 1Gbit/Sec‬پهنای باند راه دور را به ‪DRAM‬‬
‫یا دیسک داخل رک به ‪ 100Mbytes/Sec‬محدود میکند‪.‬‬
‫سوییچ آرایه میتواند ‪ 30‬رک را مدیریت کند‪ ،‬بنابراین ظرفیت ذخیرهی یک آرایه تا ضریب ‪ 30‬افزایش‬ ‫•‬
‫مییابد‪ ،‬تا ‪ 30‬ترابایت ‪ DRAM‬و ‪ 4.8‬پتابایت از دیسک‪ .‬سخت افزار و نرم افزار سوییچ آرایه تأخیر‬
‫‪ DRAM‬داخل یک آرایه را تا ‪200‬میکروثانیه و تأخیر دیسک را تا ‪ 12‬میلی ثانیه افزایش میدهد‪ .‬پهنای‬
‫باند سوییچ آرایه ‪ ،‬پهنای باند دور چه برای ‪ DRAM‬یا آرایه دیسک را تا ‪ 10‬مگابایت در ثانیه محدود‬
‫میکند‪.‬‬

‫جدول ‪ 4-10‬و شکل ‪ 3-10‬نشان میدهند که میزان افزایش تأخیر ‪ DRAM‬محلی نسبت به ‪ DRAM‬رک و‬
‫‪ DRAM‬رک نسبت به ‪ DRAM‬آرایه به خاطر سربار شبکه قابل توجه است‪ .‬البته با وجود افزایش تأخیر در‬
‫سطوح مختلف هنوز هم ‪ 10‬برابر سریعتر از تأخیر دیسک محلی میباشد‪ .‬شبکه تفاوت پهنای باند بین ‪ِِDRAM‬‬
‫رک و دیسکِ رک و بین ‪ DRAM‬آرایه و دیسک آرایه را متالشی میکند‪.‬‬

‫آرایه‬ ‫رک‬ ‫محلی‬


‫‪300‬‬ ‫‪100‬‬ ‫‪0.1‬‬ ‫تأخیر ‪( DRAM‬میکروثانیه)‬
‫‪12000‬‬ ‫‪11000‬‬ ‫‪10000‬‬ ‫تأخیر دیسک (میکروثانیه)‬
‫‪10‬‬ ‫‪100‬‬ ‫‪20000‬‬ ‫پهنای باند )‪DRAM(MB/sec‬‬
‫‪10‬‬ ‫‪100‬‬ ‫‪200‬‬ ‫پهنای باند دیسک (‪)MB/Sec‬‬
‫‪31200‬‬ ‫‪1040‬‬ ‫‪16‬‬ ‫ظرفیت )‪DRAM(GB‬‬
‫‪4800000‬‬ ‫‪160000‬‬ ‫‪2000‬‬ ‫ظرفیت دیسک (‪)GB‬‬
‫جدول ‪ :4-10‬تأخیر‪ ،‬پهنای باند و ظرفیت سلسله مراتب حافظی یک ‪ .WSC‬شکل ‪ 3-10‬همین اطالعات را بصورت نمودار نشان میدهد‪.‬‬

‫شکل ‪ :3-10‬نمودار تأخیر‪ ،‬پهنای باند و ظرفیت سلسله مراتب حافظهی یک ‪ WSC‬برای دادههای جدول ‪4-10‬‬
‫کانون نشر علوم‬ ‫‪| 534‬‬

‫‪ WSC‬نیازمند ‪ 20‬آرایه است تا به ‪ 50000‬سرور برسد‪ ،‬بنابراین بیشتر از یک سطح سلسله مراتب شبکه وجود دارد‪.‬‬
‫شکل ‪ 4-10‬روترهای الیه ‪ 3‬سنتی را نشان میدهد که آرایهها را به یکدیگر و اینترنت متصل میکنند‪.‬‬

‫شکل ‪ :4-10‬سه الیه شبکه استفاده شده برای اتصال آرایهها به یکدیگر و اینترنت‪ .‬بعضی ‪WSC‬ها یک روتر مرزی مجزا استفاده‬
‫میکنند که اینترنت را به سوئیچهای الیه ‪ 3‬دیتاسنتر وصل میکند‪.‬‬

‫اکثر کاربردها در داخل یک آرایهی ‪ WSC‬قرار میگیرند‪ .‬کاربردهایی که نیازمند بیشتر از یک آرایه هستند از‬
‫اشتراک یا پارتیشنبندی استفاده میکنند‪ ،‬به این معنی دیتاست به قطعات مستقل تقسیم میشود و در آرایههای‬
‫مختلف توزیع میشوند‪ .‬عملیات روی کل دیتاست به سرورهایی که میزبان قطعات هستند فرستاده میشوند و نتایج‬
‫توسط کامپیوتر کالینت به یکدیگر وصل میشوند‪.‬‬

‫مثال ‪ :2-10‬با فرض اینکه ‪ 90%‬دسترسیها محلی به سرور و ‪ 9%‬خارج از سرور باشند اما داخل یک رک‬
‫باشند و ‪ 1%‬خارج از یک رک باشند ولی داخل یک آرایه باشند‪ ،‬میانگین تأخیر حافظه چقدر است؟‬
‫پاسخ‪ :‬میانگین زمان دسترسی حافظه برابر است با‪:‬‬
‫‪(90%×0.1)+(9%×100)+(1%×300)=0.09+9+3=12.09 μS.‬‬
‫یعنی ‪ 120‬برابر بیشتر از حالتی که کل دسترسیها محلی باشند‪ .‬محلیت دسترسیها داخل یک سرور برای کارایی‬
‫یک ‪ WSC‬مهم است‪.‬‬
‫مثال ‪ :3-10‬انتقال ‪ 1000MB‬بین دیسکهای داخل سرور‪ ،‬بین سرورهای داخل رک‪ ،‬و بین سرورها در‬
‫رکهای مختلف یک آرایه چقدر طول میکشد؟ انتقال ‪ 1000MB‬بین ‪DRAM‬ها در سه حالت چقدر سریعتر‬
‫است؟‬
‫پاسخ‪:‬انتقال ‪ 1000MB‬بین دیسکها زمانهای زیر را میگیرد‪:‬‬
‫‪Within server=1000/200=5 seconds‬‬
‫‪Within rack= 1000/100=10seconds‬‬
‫‪| 535‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫‪Within array= 1000/10=100seconds‬‬


‫انتقال حافظه‪-‬به حافظه زمانهای زیر را میگیرد‪:‬‬
‫‪Within server= 1000/2000= 0.05seconds‬‬
‫‪Within rack= 1000/100=10seconds‬‬
‫‪Within array= 1000/10=10seconds‬‬
‫بنابراین برای انتقال بلوک خارج از یک سرور‪ ،‬مهم نیست که دادهها در حافظه یا دیسک باشد زیرا رک و سوییچ‬
‫آرایه گلوگاه هستند‪ .‬این محدودیتهای کارایی بر طراحی نرمافزار ‪ WSC‬تأثیر میگذارد و نیاز به سوییچهای با‬
‫کارایی باالتر را القاء میکند (بخش ‪ 6-10‬را ببینید)‪.‬‬

‫با داشتن معماری تجهیزات ‪ ،IT‬هم اکنون آماده هستیم تا چگونگی جایابی‪ ،‬توان و سرد کردن آنرا ببینیم و هزینه‬
‫ساخت و کارکردن کل ‪ WSC‬را در مقایسه با تجهیزات ‪ IT‬بحث کنیم‪.‬‬

‫‪ -4-10‬زیرساختار فیزیکی و هزینه کامپیوترهای مقیاس ورهاوس‬

‫برای ساخت یک ‪ ،WSC‬ابتدا نیازمند ساخت یک ورهاوس هستید‪ .‬یکی از اولین سؤاالت این است کجا؟ سازندگان‬
‫واقعی روی مکان تأکید دارند‪ ،‬اما مکان برای یک ‪ WSC‬به معنی مجاورت به فیبرهای نوری زیرساخت اینترنت‪،‬‬
‫هزینه کم الکتریسیته‪ ،‬و ریسک کم در برابر حوادث محیطی مثل زلزله‪ ،‬سیل‪ ،‬و طوفان میباشد‪ .‬برای یک شرکت‬
‫با تعداد زیادی ‪ WSC‬مسأله دیگر پیدا کردن مکانی میباشد که از لحاظ جغرافیایی نزدیک جمعیت جاری یا آینده‬
‫کاربران اینترنت باشد‪ ،‬تا تأخیر روی اینترنت را کاهش دهد‪ .‬سایر نگرانیها راجع به دنیای مادی مثل نرخهای‬
‫مالیات میباشد‪.‬‬

‫هزینههای زیرساخت برای توزیع توان و خنک سازی هزینههای ساخت یک ‪ WSC‬را کوتاه جلوه میدهند بنابراین‬
‫ما روی اولی تمرکز میکنیم‪ .‬شکل ‪ 5-10‬و ‪ 6-10‬زیرساختهای توزیع توان و خنک سازی داخل یک ‪WSC‬‬
‫را نشان میدهند‪.‬‬

‫در آمریکای شمالی توان الکتریکی پنج مرحله را طی میکند و چهار تغییر ولتاژ تا رسیدن به سرور با شروع از خطوط‬
‫ولتاژ‪-‬باال در برج‪-‬های ‪115000‬ولتی اتفاق میافتد (البته در مکانهای دیگر این موارد ممکن است عیناً تکرار‬
‫نشود)‪:‬‬

‫‪ .1‬ایستگاه فرعی از ‪115000‬ولت تا خطوط ولتاژ‪-‬متوسط ‪13200‬ولتی با بازدهی ‪ 99.7%‬سوییچ میکند‪.‬‬


‫‪ .2‬برای اجتناب از ازکار افتادن کل ‪ WSC‬اگر توان قطع شود‪ ،‬یک ‪ WSC‬یک منبع تغذیه بدون وقفه‬
‫(‪ )UPS‬دارد‪ ،‬همانطور که بعضی سرورها ‪ UPS‬دارند‪ .‬این حالت‪ ،‬شامل موتورهای دیزل بزرگ است تا‬
‫بتواند در مواقع اورژانس جانشین شرکت برق شود همچنین شامل باتریها و چرخهایی است که توان را‬
‫بعد از قطع سرویس حفظ میکنند قبل از اینکه موتورهای دیزلی آماده شوند‪ .‬ژنراتورها و باتریها فضای‬
‫زیادی را اشغال میکنند‪ UPS .‬سه نقش بازی میکند‪ :‬آماده کردن توان (حفظ سطوح ولتاژ مناسب و‬
‫کانون نشر علوم‬ ‫‪| 536‬‬

‫سایر خواص)‪ ،‬حفظ بار الکتریکی تا وقتیکه ژنراتورها شروع به کار کنند و وارد خط شوند‪ ،‬و حفظ بار‬
‫الکتریکی وقتیکه سوییچ از ژنراتورها به شبکه برق سراسری برمیگردد‪ .‬بازدهی این ‪ UPS‬خیلی بزرگ‬
‫‪ 94%‬میباشد‪ ،‬بنابراین تأسیسات ‪ 6%‬توان را با داشتن ‪ UPS‬از دست میدهند‪ WSC UPS .‬میتواند‬
‫‪ 7%‬تا ‪ 12%‬هزینه کل تجهیزات ‪ IT‬را شامل شود‪.‬‬
‫‪ .3‬سومین مسأله در سیستم واحد توزیع توان )‪ (PDU1‬میباشد که توان سه فازهی ‪480‬ولتی داخلی را به‬
‫ولتاژ پایین تبدیل میکند‪ .‬بازدهی تبدیل ‪ 98%‬میباشد‪ .‬یک ‪PDU‬ی معمولی بار ‪ 75‬تا ‪ 225‬کیلو وات‬
‫یا حدود ‪ 10‬رک را مدیریت میکند‪.‬‬
‫‪ .4‬یک مرحله کم کردن برای توان دو فازه ‪ 208‬ولت وجود دارد که سرورها میتوانند استفاده کنند که‬
‫بازدهی آن ‪ 98%‬میباشد‪( .‬داخل سرور‪ ،‬مراحل بیشتری وجود دارد تا ولتاژ را برای استفاده تراشهها‬
‫پایین بیاورد‪ .‬بخش ‪ 7-10‬را ببینید)‪.‬‬

‫اتصالدهندهها‪ ،‬تقسیمها و سیمبندی الکتریکی مجموعاً بازدهی ‪ 99%‬دارند‪.‬‬


‫‪WSC‬های خارج از آمریکای شمالی مقادیر تبدیل متفاوتی دارند‪ ،‬اما طرح کلی مشابه میباشد‪.‬‬
‫در مجموع‪ ،‬بازدهی تبدیل توان ‪115000‬ولت از شبکه سراسری به توان ‪208‬ولت که سرورها میتوانند استفاده‬
‫کنند ‪ 89%‬میباشد‪:‬‬
‫‪99.7%×94%×98%×98%×99%=89%‬‬
‫این بازدهی کلی تقریباً ‪ ٪10‬هدردهی انرژی دارد اما مهندسین سعی میکنند آنرا بهتر کنند‪.‬‬

‫شکل ‪ :5-10‬توزیع توان و جاهایی که قطع اتفاق میافتد‪ .‬نکته اینکه بهترین بهبود ‪ 11%‬میباشد‪.‬‬

‫‪1‬‬
‫‪Power Distribution Unit‬‬
‫‪| 537‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫واحد تهویه مطبوع اتاق کامپیوتر (‪ )CRAC1‬هوای داخل سرور را با استفاده از آب خنک سرد میکند‪ ،‬شبیه یخچال‬
‫که گرما را با انتقال آن به خارج یخچال حذف میکند‪ .‬وقتیکه یک مایع گرما را جذب میکند‪ ،‬تبخیر میشود‪ .‬بطور‬
‫معکوس وقتیکه یک مایع گرما آزاد میکند منقبض میشود‪ .‬تهویه کننده‪ ،‬هوای مایع را با فشار کم به داخل بوبین‬
‫(سیمپیچ) می فرستد تا گرما را جذب کند و تبخیر شود‪ ،‬و سپس به یک منجمد کننده بیرونی میفرستد تا گرما را‬
‫آزاد کرده و منقبض شود‪ .‬هوای سرد برای سرورها معموالً بین ‪ 18‬تا ‪ 22‬درجه سلسیوس است‪ .‬شکل ‪ 6-10‬مجموعه‬
‫بزرگی از فنها و پمپهای آب را نشان میدهد که آب و هوا را در سیستم منتقل میکنند‪.‬‬

‫یکی از سادهترین روشهای بهبود بازدهی انرژی این است که تجهیزات ‪ IT‬در درجه حرارت باالتری کار کنند و‬
‫نیاز به خنک کردن آنها کم باشد‪ .‬بعضی ‪WSC‬ها تجهیزاتشان را در دمای باالتری از ‪22‬درجه سیلسیوس راه‬
‫میاندازند‪.‬‬

‫عالوه بر خنک کنندهها‪ ،‬بعضی دیتاسنترها از برجهای خنک کننده برای ورود هوای خنک بیرونی برای خنک کردن‬
‫آب قبل از ارسال آن به خنک کننده استفاده میکنند‪ .‬آب گرم روی صفحات بزرگی در برج گسیل میشود‪ ،‬و گرما‬
‫را از طریق تبخیر به بیرون هدایت میکند و بنابراین آب سرد میشود‪ .‬به این تکنیک خنک سازی به کمک هوا‬
‫میگویند‪ .‬روشی دیگر از آب سرد بجای هوای سرد استفاده میکند‪WSC .‬ی گوگل در بلژیک خنک کننده داخلی‬
‫آب‪-‬به‪-‬آب استفاده میکند تا آب سرد را از یک کانال صنعتی بیاورد و آب گرم داخل ‪ WSC‬را سرد کند‪ .‬برای‬
‫تجهیزات ‪ IT‬جریان هوا به خوبی استفاده میشود حتی گاهی اوقات جریان هوا شبیه سازی میشود‪ .‬طرحهای‬
‫پربازده حرارت هوای سرد را با کاهش شانس ترکیب آن با هوای گرم حفظ میکنند‪.‬‬

‫شکل ‪ :6-10‬طراحی مکانیکی برای سیستمهای خنک کننده‪CWS= circulating water system .‬‬

‫‪1‬‬
‫‪Computer room air conditioning‬‬
‫کانون نشر علوم‬ ‫‪| 538‬‬

‫هزینه توان تجهیزات خنک سازی نسبت به تجهیزات ‪ IT‬در یک دیتاسنتر نوعی عبارت است از‪:‬‬

‫خنک کنندهها ‪ 30‬تا ‪ 50‬درصد توان تجهیزات ‪ IT‬هستند‪.‬‬ ‫•‬


‫‪ 10 CRAC‬تا ‪ 20‬درصد توان تجهیزات آی تی را به خاطر تعداد زیاد فنها استفاده میکنند‪.‬‬ ‫•‬

‫‪ Barroso‬و ‪ Holzle‬توان مصرفی تجهیزات آیتی ‪WSC‬ی گوگل در سال ‪ 2007‬را بصورت زیر برآورد کردهاند‪:‬‬

‫‪ 33٪‬از توان برای پردازندهها‬ ‫•‬


‫‪ 30٪‬برای ‪DRAM‬‬ ‫•‬
‫‪ 10٪‬برای دیسکها‬ ‫•‬
‫‪ 5٪‬برای شبکه‬ ‫•‬
‫‪ 22٪‬برای سایر دالیل (داخل سرورها)‬ ‫•‬

‫سنجش بازدهی یک ‪WSC‬‬


‫یک واحد ساده و در عین حال پراستفاده برای ارزیابی بازدهی یک دیتاسنتر یا ‪ WSC‬بازدهی بهرهبرداری توان‬
‫(‪ )PUE1‬نامیده میشود‪:‬‬

‫)توان تجهیزات آیتی(‪)/‬توان کلی تاسیسات(=‪PUE‬‬

‫بنابراین ‪ PUE‬باید بزرگتر یا مساوی ‪ 1‬باشد‪ ،‬و هرچه ‪ PUE‬بزرگتر کارایی ‪ WSC‬کمتر میباشد‪.‬‬

‫‪PUE [2006] GreenBerg‬ی ‪ 19‬دیتاسنتر و بخشی از سربار که به زیرساخت خنک کننده وارد میشود را‬
‫گزارش کرده است‪ .‬شکل ‪ 7-10‬یافتههای آنها را بصورت نزولی از باالترین تا کمترین بازدهی نشان میدهد‪ .‬میانه‬
‫‪ 1.69 ،PUE‬میباشد‪ ،‬که زیرساخت خنک کننده بیشتر از نصف توان سرورها استفاده میکنند – بطور میانگین‬
‫‪ 0.55‬از ‪ 1.69‬برای خنک کردن است‪ .‬نکته اینکه اینها میانگین ‪ PUE‬هستند و همانطور که خواهیم دید میتوانند‬
‫بطور روزانه براساس بارکاری و دمای هوای بیرونی تغییر کنند‪.‬‬

‫چون کارایی به ازای دالر واحد نهایی میباشد‪ ،‬هنوز نیازمند اندازهگیری کارایی هستیم‪ .‬همانطور که گفتیم براساس‬
‫فاصله دادهها پهنای باند کاهش یافته و تأخیر زیاد میشود‪ .‬در یک ‪ ،WSC‬پهنای باند ‪ DRAM‬داخل یک سرور‬
‫‪ 200‬برابر بزرگتر از داخل یک رک است‪ ،‬و پهنای باند رک ‪ 10‬برابر بزرگتر از داخل یک آرایه است‪ .‬بنابراین‪ ،‬نوع‬
‫دیگری از محلیت وجود دارد که باید برای جایگزینی دادهها و برنامههای داخل یک ‪ WSC‬مورد توجه قرار گیرد‪.‬‬

‫‪1‬‬
‫‪Power utilization effectiveness‬‬
‫‪| 539‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫درحالیکه تمرکز طراحان یک ‪ WSC‬روی پهنای باند است‪ ،‬برای برنامهنویسان توسعه دهنده کاربردی در یک‬
‫‪ WSC‬تأخیر مهم است زیرا تأخیر برای کاربران قابل روئیت است‪ .‬رضایت کاربران و سودمندی با زمان پاسخ یک‬
‫سرویس گره خوردهاند‪ .‬چند مطالعه اشتراک زمانی نشان میدهد که بهرهوری کاربر بطور معکوس با زمان یک‬
‫محاوره مرتبط است که معموالً به زمان ورود فرد‪ ،‬زمان پاسخ سیستم‪ ،‬و زمانی که فرد راجع به پاسخ فکر میکند‬
‫تا داده بعدی را وارد کند تقسیم میشود‪ .‬نتایج آزمایشات نشان میدهد که کاهش ‪ 30‬درصدی زمان پاسخ زمان‬
‫یک محاوره را ‪ 70‬درصد کوتاه میکند‪ .‬این نتیجه غیرمعقول توسط طبیعت انسان توضیح داده میشود‪ :‬افراد نیازمند‬
‫زمان کمتری برای فکر کردن هستند وقتیکه پاسخ سریعتری میگیرند‪.‬‬

‫جدول ‪ 5-10‬نتایج اینچنین آزمایشاتی را روی موتور جستجوی ‪ Bing‬نشان میدهد که تأخیرات ‪ 50ms‬تا‬
‫‪ 2000ms‬در سرور جستجو قرار داده شد‪ .‬همانطور که از مطالعات قبلی انتظار داریم‪ ،‬زمانِ کلیک بعدی تقریباً‬
‫تأخیر را دو برابر کرده است‪ :‬یعنی یک تأخیر ‪ 200ms‬در سرور منجر به ‪ 500ms‬تأخیر در کلیک بعدی شده‬
‫است‪ .‬تحقیق مشابهی روی موتور جستجوی گوگل انجام شد که نتیجه آن این بود که بعد از پنج هفته کاربرانی که‬
‫تأخیر ‪ 200‬میلی ثانیه را تجربه میکردند میزان جستجوهایشان ‪ ٪0.1‬کمتر شد و کاربرانی که تأخیر ‪400‬میلی‬
‫ثانیه را تجربه میکردند ‪ ٪0.2‬جستجوهایشان کمتر شد‪ .‬با میزان پول بدست آمده در جستجو حتی چنین تغییر‬
‫کوچکی بهت آور بود‪ .‬در حقیقت نتایج آنقدر منفی بود که آزمایش قبل از موعد مقرر خاتمه یافت ‪[Schurman‬‬
‫]‪.and Brutlag 2009‬‬

‫شکل ‪ :7-10‬بازدهی بهرهبرداری توانِ ‪ 19‬دیتاسنتر در سال ‪ .[Greenberg et al.2006] 2006‬در محاسبه ‪ ،PUE‬توان‬
‫تهویه هوا (‪ )AC‬و سایر کاربردها (مثل توزیع توان) با توان تجهیزات ‪ IT‬نرمال شده اند‪ .‬بنابراین توان تجهیزات آیتی باید ‪1.0‬‬
‫باشند و ‪ AC‬از ‪ 0.30‬تا ‪ 1.40‬برابر توان تجهیزات ‪ IT‬متغیر است‪ .‬توان "‪ "other‬از حدود ‪ 0.05‬تا ‪ 0.60‬برابر تجهیزات آیتی‬
‫متغیر است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 540‬‬

‫درآمد‪/‬‬ ‫رضایت‬ ‫هر‬ ‫جستجو‪/‬‬ ‫زمان اضافه شده تا کلیک‬ ‫تأخیر سرور‬
‫کاربر‬ ‫کاربر‬ ‫کلیک‪/‬کاربر‬ ‫کاربر‬ ‫بعدی )‪(ms‬‬ ‫(‪)ms‬‬
‫‪--‬‬ ‫‪--‬‬ ‫‪--‬‬ ‫‪--‬‬ ‫‪--‬‬ ‫‪50‬‬

‫‪--‬‬ ‫‪-0.4%‬‬ ‫‪-0.3%‬‬ ‫‪--‬‬ ‫‪500‬‬ ‫‪200‬‬

‫‪-1.2%‬‬ ‫‪-0.9%‬‬ ‫‪-1.0%‬‬ ‫‪--‬‬ ‫‪1200‬‬ ‫‪500‬‬

‫‪-2.8%‬‬ ‫‪-1.6%‬‬ ‫‪-1.9%‬‬ ‫‪-0.7%‬‬ ‫‪1900‬‬ ‫‪1000‬‬

‫‪-4.3%‬‬ ‫‪-3.8%‬‬ ‫‪-4.4%‬‬ ‫‪-1.8%‬‬ ‫‪3100‬‬ ‫‪2000‬‬

‫جدول ‪ :5-10‬تأثیر منفی تأخیر در موتور جستجوی ‪ Bing‬روی رفتار کاربر‪[Schurman and Brutlag 2009] .‬‬

‫هزینه یک ‪WSC‬‬

‫همانطور که در مقدمه گفتیم‪ ،‬برخالف اکثر معماران‪ ،‬طراحان ‪ WSC‬نگران هزینههای عملیاتی عالوه بر هزینه‬
‫ساخت ‪ WSC‬هستند‪ .‬حسابدارها به اولی هزینه عملیاتی (‪ )OPEX‬و به دومی هزینه سرمایه )‪ (CAPEX‬میگویند‪.‬‬

‫‪ [2010] Hamilton‬یک مطالعه موردی برای تخمین هزینه یک ‪ WSC‬انجام داد تا هزینه انرژی را به ظهور‬
‫برساند‪ .‬او مشخص کرد که ‪ CAPEX‬تأسیسات ‪8MW‬ی ‪ 88M$‬است و تقریباً ‪ 46000‬سرور و تجهیزات شبکه‬
‫اضافه شده ‪ 79M$‬به ‪ CAPEX‬یک ‪ WSC‬اضافه میکند‪ .‬جدول ‪ 6-10‬مفروضات این مطالعه را نشان میدهد‪.‬‬

‫اکنون میتوانیم هزینه کلی انرژی را بدست آوریم‪ ،‬زیرا قوانین حسابداری آمریکا اجازه تبدیل ‪ CAPEX‬به ‪OPEX‬‬
‫را میدهد‪ .‬میتوان استهالک ‪ CAPEX‬را با مقدار ثابت ماهیانه برای عمر مفید تجهیزات بدست آورد‪ .‬جدول ‪-10‬‬
‫‪ OPEX 7‬ماهیانه برای این مطالعه موردی را نشان میدهد‪ .‬نکته اینکه نرخ استهالک بطور قابل توجهی متفاوت‬
‫است‪ 10 ،‬سال برای تأسیسات‪ 4 ،‬سال برای تجهیزات شبکه‪ ،‬و ‪ 3‬سال برای سرورها‪ .‬بنابراین‪ ،‬تأسیسات ‪WSC‬‬
‫یک دهه دوام میآورد‪ ،‬اما شما نیازمند جایگزینی سرورها هر ‪ 3‬سال و تجهیزاتش شبکه هر ‪ 4‬سال هستید‪ .‬حال‬
‫میتوانیم ‪ OPEX‬را برای یک ‪ WSC‬محاسبه کنیم‪ .‬برای ‪ OPEX ،3.8M$‬ماهانه حدوداً ‪ CAPEX ٪2‬میباشد‪.‬‬

‫این شکل به ما اجازه میدهد تا یک محاسبه دستی داشته باشیم و تصمیماتی راجع به اجزایی که باید استفاده کنیم‬
‫وقتیکه راجع به انرژی نگرانیم‪ ،‬بگیریم‪ .‬هزینه کل یک وات در هر سال در یک ‪ ،WSC‬که شامل هزینه استهالک‬
‫توان و زیرساخت خنک کننده میباشد‪ ،‬عبارت است از‪:‬‬
‫هزینه ماهیانه توان ‪ +‬هزینه ماهیانه زیرساخت‬ ‫‪$765𝐾 + $475‬‬
‫= ‪× 12‬‬ ‫‪= $1.86‬‬
‫اندازه تأسیسات بر وات‬ ‫𝑀‪8‬‬

‫هزینه تقریباً ‪ 2‬دالر به ازای هر وات است‪.‬‬


‫‪| 541‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫اندازه‬ ‫واحد‬ ‫اندازه‬ ‫واحد‬


‫‪300000$‬‬ ‫هزینه‪ /‬سوئیچ آرایه‬ ‫‪8000000‬‬ ‫اندازه تأسیسات ( بار بحرانی بر حسب وات)‬
‫‪2‬‬ ‫تعداد سوئیچهای الیه ‪3‬‬ ‫‪80%‬‬ ‫میانگین توان مصرفی‬
‫‪500000$‬‬ ‫هزینه‪ /‬سویچ الیه ‪3‬‬ ‫‪1.45‬‬ ‫بازدهی مصرف توان‬
‫‪2‬‬ ‫تعداد روترهای مرزی‬ ‫‪0.07$‬‬ ‫هزینه توان (‪)/kwh$‬‬
‫‪144800$‬‬ ‫هزینه‪ /‬روتر مرزی‬ ‫‪82%‬‬ ‫درصد توان و زیرساخت خنک کننده (‪ ٪‬هزینه کل تأسیسات)‬
‫‪12810000$‬‬ ‫‪ CAPEX 88000000$‬برای ابزارهای شبکه‬ ‫‪ CAPEX‬برای تأسیسات ( بدون تجهیزات آیتی)‬
‫‪167510000$‬‬ ‫کل ‪CAPEX‬برای ‪WSC‬‬ ‫‪45978‬‬ ‫تعداد سرورها‬
‫‪3‬سال‬ ‫زمان استهالک سرور‬ ‫‪145$‬‬ ‫هزینه‪/‬سرور‬
‫‪ 4‬سال‬ ‫زمان استهالک شبکه‬ ‫‪66700000$‬‬ ‫‪ CAPEX‬برای سرورها‬
‫‪ 10‬سال‬ ‫زمان استهالک تأسیسات‬ ‫‪1150‬‬ ‫تعداد سوئیچهای رک‬
‫‪5%‬‬ ‫ارزش ساالنه پول‬ ‫‪4800$‬‬ ‫هزینه‪/‬سوئیچ رک‬
‫‪22‬‬ ‫تعداد سوئیچهای آرایه‬
‫جدول ‪ :6-10‬مطالعه موردی یک ‪ ،WSC‬براساس ]‪ ،Hamilton[2010‬هزینهها تا ‪ 5000$‬گرد شده است‪ .‬هزینههای پهنای‬
‫باند اینترنت بر اساس کاربرد متفاوت است‪ ،‬بنابراین در اینجا مطرح نشده است‪ ٪18 .‬هزینه باقیمانده ‪ CAPEX‬برای تأسیساتی شامل‬
‫خرید مواد و هزینه ساخت ساختمان می باشد‪ .‬ما هزینه نیروی انسانی را برای امنیت و مدیریت تأسیسات در شکل ‪ 12-10‬اضافه‬
‫کردهایم که در مطالعه موردی نبوده اند‪ .‬نکته اینکه مطالعه هامیلتون قبل از اتصال او به آمازون بوده است و براساس ‪WSC‬ی یک‬
‫شرکت خاص نبوده است‪.‬‬

‫درصد هزینه ماهانه‬ ‫هزینه ماهانه‬ ‫جنس‬ ‫هزینه کلی (‪٪‬کل)‬


‫‪53%‬‬ ‫‪2000000$‬‬ ‫سرورها‬
‫‪8%‬‬ ‫‪290000$‬‬ ‫تجهیزات شبکه‬
‫استهالک ‪)85٪( CAPEX‬‬
‫‪20%‬‬ ‫‪765000$‬‬ ‫زیرساخت توان و خنک سازی‬
‫‪4%‬‬ ‫‪170000$‬‬ ‫سایر زیرساختها‬
‫‪13%‬‬ ‫‪475000$‬‬ ‫توان مصرفی ماهانه‬
‫)‪OPEX(15%‬‬
‫‪2%‬‬ ‫‪85000$‬‬ ‫حقوق و مزایای ماهانه افراد‬
‫‪100%‬‬ ‫‪3800000$‬‬ ‫کل ‪OPEX‬‬
‫جدول ‪ OPEX 7-10‬ماهیانه برای جدول ‪ ،6-10‬که تا ‪5000‬دالر گرد شده است‪ .‬نکته اینکه استهالک ‪ 3‬ساله برای سرورها به این‬
‫معنی است که شما باید هر سه سال سرورهای جدید بخرید‪ ،‬درحالیکه تأسیسات استهالک ‪ 10‬ساله دارد‪ .‬بنابراین‪ ،‬هزینههای سرمایه‬
‫مستهلک شده برای سرورها حدود ًا سه برابر تأسیسات است‪ .‬هزینههای انسانی شامل ‪ 3‬محافظ امنیتی بطور پیوسته ‪ 24‬ساعت در روز‬
‫و ‪ 365‬روز در سال و درآمد ‪ 20‬دالر در ساعت به ازای هر فرد‪ ،‬و یک فرد تأسیساتی بطور ‪ 24‬ساعته و ‪ 365‬روز در سال با درآمد ساعتی‬
‫‪ 30‬دالر‪30 .‬درصد منافع برای حقوق میباشد‪ .‬این محاسبه شامل پهنای باند شبکه برای اینترنت نمیشود زیرا کاربرد به کاربرد متفاوت‬
‫است ‪.‬‬
‫نکته اینکه بیشتر از یک سومِ ‪ OPEX‬به توان مربوط است‪ ،‬که هزینه گرایش به افزایش دارد در حالیکه هزینه‬
‫سرور براساس زمان رو به پایین است‪ .‬تجهیزات شبکه ‪ 8%‬از کل ‪ OPEX‬و ‪ 19%‬از سرور ‪ CAPEX‬است و‬
‫هزینه تجهیزات شبکه با سرعت سرورها متمایل به پایین نیستند‪ .‬این تفاوت باالخص برای سوییچها در سلسله‬
‫مراتب شبکه باالی رک مهم است که بیشترین هزینه شبکه را شامل میشوند‪( .‬بخش ‪ 6-10‬را ببینید)‪ .‬هزینه‬
‫کانون نشر علوم‬ ‫‪| 542‬‬

‫نیروی انسانی برای امنیت و مدیریت تأسیسات فقط ‪ 2%‬از ‪ OPEX‬میباشد‪ .‬با تقسیم ‪ OPEX‬در جدول ‪7-10‬‬
‫بر تعداد سرورها و ساعات در ماه‪ ،‬هزینه حدود ‪ 0.11$‬به ازای هر سرور به ازای هر ساعت است‪.‬‬

‫مثال ‪ :4-10‬هزینه الکتریسیته در آمریکا منطقه به منطقه متفاوت است از ‪ 0.03$‬تا ‪ 0.15$‬به ازای هر کیلو‬
‫وات ساعت‪ .‬تأثیر آن روی هزینههای سرور ساعتی برای این دو نرخ کرانی چیست؟‬
‫پاسخ‪ :‬ما بار بحرانیِ ‪ 8MW‬را در ‪ PUE‬و میانگین بهرهوری توان از جدول ‪ 6-10‬ضرب میکنیم تا متوسط‬
‫بهرهوری توان را محاسبه کنیم‪:‬‬
‫‪8×1.45×80%=9.28Megawatts‬‬
‫آنگاه هزینه ماهانه توان از ‪ 475000$‬در جدول ‪ 7-10‬تا ‪ 205000$‬در ‪ 0.03$‬به ازای هر کیلو وات‪-‬ساعت‬
‫و تا ‪ 1015000$‬در ‪ 015$‬در هر کیلو وات‪-‬ساعت میرسد‪ .‬این تغییرات در هزینه الکتریسیته هزینههای سرور‬
‫ساعتی را از ‪ 0.11$‬به ترتیب تا ‪ 0.10$‬و ‪ 0.13$‬میرساند‪.‬‬

‫مثال‪ :5-10‬چه اتفاقی میافتد اگر زمانهای استهالک همه مشابه هم یعنی ‪ 5‬سال باشند؟ تغییر چگونه هزینه‬
‫را به ازای هر سرور در هر ساعت تغییر میدهد؟‬
‫سایت‬ ‫در‬ ‫پاسخ‪:‬‬
‫‪http://mvdirona.com/jrh/TalksAndPapers/PerpectiveDataCenterCostAndP‬‬
‫‪ ower.xls‬صفحه گسترده مرتبط وجود دارد‪ .‬تغییر زمان استهالک به ‪ 5‬سال چهار سطر اول شکل ‪ 12-10‬را‬
‫بصورت زیر تغییر میدهد‪:‬‬
‫‪37% 1260000$‬‬ ‫سرورها‬
‫‪7%‬‬ ‫‪242000$‬‬ ‫تجهیزات شبکه‬
‫زیرساخت توان و خنک سازی ‪33% 1115000$‬‬
‫‪7%‬‬ ‫‪245000$‬‬ ‫سایر زیرساختها‬
‫و ‪ OPEX‬ماهانه کلی ‪ 3.422000$‬میباشد‪ .‬اگر ما همه چیز را هر ‪ 5‬سال جایگزین کنیم‪ ،‬هزینه ‪ 0.103$‬به‬
‫ازای هر سرور ساعت خواهد شد‪ ،‬اکنون هزینه استهالک بیشتر برای تأسیسات خواهد بود نه سرورها که در شکل‬
‫‪ 10-12‬نشان داده شده است‪.‬‬

‫نرخ ‪ 0.11$‬به ازای هر سرور به ازای هر ساعت از هزینهای که هر شرکت بطور خصوصی کار کنند و دیتاسنترهای‬
‫خودشان را داشته باشند کمتر است‪ .‬منافع هزینه ‪ WSC‬منجر به این شده است که شرکتهای اینترنتی بزرگ‬
‫محاسبات را مثل شبکه های توزیع سراسری‪ ،‬مثل برق‪ ،‬ارائه دهند و شما در مقابل آنچه استفاده میکنید هزینه‬
‫میدهید‪ .‬امروزه محاسبات سراسری تحت عنوان رایانش ابری شناخته میشوند‪.‬‬
‫‪| 543‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫‪ -5-10‬رایانش ابری‪ :‬بازگشت محاسبات سراسری‬


‫به خاطر تقاضای روزافزون کاربران اینترنت‪ ،‬شرکتهای اینترنتی مثل آمازون‪ ،‬گوگل‪ ،‬و میکروسافت‪ ،‬کامپیوترهای‬
‫مقیاس ورهاوس بزرگتری از اجزاء اولیه ساختند‪ .‬این تقاضا منجر به ابداع نرمافزارهای سیستمی برای پشتیبانی‬
‫عملیات در این مقیاس شد مثل ‪ .Bigtable, Dynamo, GFS, MapReduce‬همچنین تقاضای تکنیک‪-‬‬
‫های عملیاتی که حداقل ‪ 99.99%‬اوقات با وجود خطاهای اجزاء و حمالت امنیتی قابل دسترس باشد مطرح شد‪.‬‬
‫مثالهایی از این تکنیکها شامل افزونگی با قابلیت دسترس باال‪ ،1‬فایروالها‪ ،‬ماشینهای مجازی‪ ،‬و محافظت در‬
‫مقابل حملههای امنیتی توزیع شده میشوند‪ .‬با نرمافزار و مهارتی که قابلیت مقیاسپذیری تقاضای کاربر و بازگشت‬
‫سرمایه را فراهم میکنند‪WSC ،‬ها با ‪ 50000‬تا ‪ 100000‬سرور در سال ‪ 2011‬رایج شدند‪.‬‬

‫براساس مطالعهای در سال ‪ 2006‬که یک ‪ WSC‬را با یک دیتاسنتر با فقط ‪ 1000‬سرور مقایسه کرده است‪ ،‬هامیلتون‬
‫]‪ [2010‬مزایای زیر را گزارش کرده است‪:‬‬

‫‪ 5.7‬برابر کاهش در هزینه ذخیره سازی‪ -‬هزینه ‪ WSC‬برای یک گیگا بایت در هر سال برای حافظه‬ ‫•‬
‫دیسک ‪ 4.6$‬است که این عدد برای دیتاسنتر ‪ 26$‬میباشد‪.‬‬
‫‪ 7.1‬برابر کاهش در هزینههای مدیریتی‪ -‬نسبت سرورها به ازای هر مدیر ‪ 1000‬برای ‪ WSC‬است‬ ‫•‬
‫که برای دیتاسنتر ‪ 140‬میباشد‪.‬‬
‫‪ 7.3‬برابر کاهش هزینههای شبکه‪ -‬هزینه پهنای باند اینترنت در ‪ 13$ ،WSC‬به ازای‬ ‫•‬
‫‪ Mbit/sec/month‬میباشد که این رقم برای دیتاسنتر ‪ 95$‬میباشد‪ .‬اگر شما‬
‫‪ 1000Mbit/sec‬سفارش بدهید از اینکه ‪ 10Mbit/sec‬سفارش دهید هزینه بهتری پرداخت‬
‫میکنید‪.‬‬

‫اقتصاد مقدار (م‪ .‬افزایش تولید به منظور سرشکن کردن هزینه سربار) دیگری نیز از خرید بدست میآید‪ .‬سطح زیاد‬
‫خرید منجر به تخفیف هزینه حجیم روی سرورها و ابزارهای شبکه میشود‪ .‬همچنین اجازه بهینه سازی زنجیره‬
‫تولید را میدهد‪ Dell, IBM, SGI .‬سفارشات جدید را در یک هفته برای یک ‪ WSC‬بجای ‪ 4‬تا ‪ 6‬ماه تحویل‬
‫میدهند‪ .‬زمان تحویل کوتاهتر رشد شبکه توزیع را با تطابق به تقاضا ساده میکند‪.‬‬

‫اقتصاد مقدار همچنین به هزینههای عملیاتی اِعمال میشود‪ .‬از بخش قبلی‪ ،‬دیدیم که اکثر دیتاسنترها با ‪PUE‬ی‬
‫‪ 2.0‬کار میکنند‪ .‬شرکتهای بزرگ میتوانند مهندسین مکانیک و نیرو را برای توسعه ‪WSC‬ها با ‪PUE‬ی کمتر‬
‫در محدوده ‪( 1.2‬بخش‪ 7-10‬را ببینید) استخدام کنند‪.‬‬

‫سرویسهای اینترنت نیازمند توزیع به چندین ‪ WSC‬هستند هم برای قابلیت اطمینان و هم کاهش تأخیر‪ ،‬باالخص‬
‫برای بازارهای بینالمللی‪ .‬همه شرکتهای بزرگ به این دالیل از چندین ‪ WSC‬استفاده میکنند‪ .‬برای شرکتهای‬
‫خصوصی ایجاد چند دیتاسنتر کوچک گرانتر حول دنیا گرانتر از یک دیتاسنتر در یک شرکت مرکزی تمام میشود‪.‬‬

‫‪1‬‬
‫‪failover‬‬
‫کانون نشر علوم‬ ‫‪| 544‬‬

‫درانتها‪ ،‬به خاطر دالیل ذکر شده در بخش ‪ ،1-10‬سرورهای دیتاسنتر تمایل به بهرهوری ‪ 10‬تا ‪ 20‬درصد اوقات‬
‫دارند‪ .‬دسترس پذیر کردن ‪WSC‬ها برای عموم میتواند بهرهوری را به بیشتر از ‪ ٪50‬برساند‪ .‬بنابراین اقتصاد مقدار‬
‫برای یک ‪ WSC‬در بعضی موارد ضریب ‪ 5‬تا ‪ 7‬و برای بعضی موارد ضریب ‪ 1.5‬تا ‪ 2‬مزیت عرضه میکند‪.‬‬

‫در حالیکه تعداد زیادی تهیه کننده ابری وجود دارد‪ ،‬ما خواص سرویس وب آمازون (‪ )AWS‬را به خاطر عمومیت و‬
‫سطح پایین و تجرید منعطفتر سرویسش بررسی میکنیم‪ .‬با وجود اینکه ‪ Google App Engine‬و‬
‫‪ Microsoft Azure‬سطح تجرید را به منظور مدیریت زمان اجرا و عرضه سرویسهای مقیاسپذیر خودکار‬
‫رشد دادهاند‪ ،‬که برای بعضی مشتریان مناسبترند‪ ،‬اما به خوبی تطابق ‪ AWS‬با موضوعات این کتاب نیستند‪.‬‬

‫سرویسهای وب آمازون‪ 1‬محاسبات سراسری به سیستمها اشتراک زمانی و حتی سیستمهای پردازش دستهای‬
‫در سالهای ‪ 1960‬و ‪ 1970‬برمیگردند که شرکتها فقط یک ترمینال و یک خط تلفن میخریدند و براساس میزان‬
‫محاسباتی که استفاده میکردند پول میدادند‪ .‬از زمان انتهای اشتراک زمانی تالشهای زیادی برای عرضه چنین‬
‫سرویسهایی انجام شد اما اکثر آنها شکست خورد‪.‬‬

‫وقتیکه آمازون محاسبات سراسری را از طریق سرویس ذخیره ساده آمازون (‪ )AmazonS3‬و سپس کامپیوتر‬
‫االستیک ابری آمازون (‪ )Amazon EC3‬ارائه داد‪ ،‬تصمیمات شغلی و تکنیکی جدیدی گرفت‪:‬‬

‫ماشینهای مجازی‪ .‬ساخت ‪ WSC‬با استفاده از اجزاء کامپیوترهای ‪ x86‬که سیستم عامل لینوکس را‬ ‫•‬
‫اجرا میکند و ماشین مجازی ‪ Xen‬که چندین مشکالت را حل کرد‪ .‬اوالً‪ ،‬به آماوزن برای محافظت‬
‫کاربران در مقابل یکدیگر کمک میکند‪ .‬ثانیاً‪ ،‬توزیع نرمافزار را داخل یک ‪ WSC‬ساده میکند که‬
‫مشتریان فقط یک تصویر نصب میکند و سپس ‪ AWS‬بطور خودکار آنرا به همه نمونههای استفاده‬
‫شده توزیع می کند‪ .‬ثالثاً‪ ،‬قابلیت حذف یک ماشین مجازی بطور قابل اطمینان برای آمازون و مشتریان‬
‫آمازون کنترل بهرهوری منابع را ساده کرده است‪ .‬رابعاً‪ ،‬چون ماشینهای مجازی میتوانند نرخی که آنها‬
‫پردازندههای فیزیکی‪ ،‬دیسکها‪ ،‬و شبکهها و حافظه اصلی را استفاده میکنند‪ ،‬محدود کنند‪ ،‬به ‪AWS‬‬
‫چند نقطه هزینه میدهد‪ :‬کمترین هزینه با بسته بندی چندین هسته مجازی روی یک سرور تک و‬
‫بیشترین هزینه با دسترسی انحصاری به همه منابع ماشین‪ .‬خامساً‪ ،‬ماشینهای مجازی هویت سختافزار‬
‫قدیمتر را پنهان میکنند‪ ،‬که به ‪ AWS‬اجازه میدهد تا زمان را روی یک ماشین قدیمیتر که ممکن‬
‫است برای مشتریان جالب نباشد استفاده کند‪ .‬در انتها‪ ،‬ماشینهای مجازی به ‪ AWS‬اجازه معرفی‬
‫سختافزار جدیدتر و سریعتر چه با بستهبندی هستههای مجازی بیشتر در هر سرور یا عرضه نمونههایی‬
‫که به ازای هر هسته مجازی کارایی بیشتری دارند میدهد‪.‬‬
‫هزینه خیلی پایین‪ -‬وقتیکه ‪ AWS‬نرخ ‪ 0.10$‬در هر ساعت به ازای هر نمونه را در سال ‪2006‬‬ ‫•‬
‫اعالن کرد‪ ،‬بطور تعجبآوری مقدار کمی بود‪ .‬یک نمونه یک ماشین مجازی بود و با ‪ 0.10$‬در هر‬

‫‪11‬‬
‫)‪Amazon Web Services (AWS‬‬
‫‪| 545‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫ساعت ‪ AWS‬دو نمونه به ازای هر هسته روی یک سرور چند هسته اختصاص داد‪ .‬بنابراین‪ ،‬یک واحد‬
‫کامپیوتر ‪ EC2‬معادل یک ‪ AMD‬اپترون ‪ 1.0‬تا ‪ 2GHz‬یا ‪ Intel Xeon‬در آن دوره بود‪.‬‬
‫• (ابتداً) تکیه بر نرمافزار کد منبع باز‪ .‬قابلیت دسترس پذیری نرمافزار با کیفیت‪-‬خوب که هیچ مشکل‬
‫گواهی یا هزینه مرتبط با اجرای صدها یا هزاران سرور محاسبات سراسری را برای آمازون و مشتریانش‬
‫اقتصادیتر کرد‪ .‬اخیراً‪ AWS ،‬شروع به عرضه نمونههایی شامل نرمافزار تجاری شخص ثالث با هزینه‬
‫باالتر کرد‪.‬‬
‫(ابتدا ) عدم وجود ضمانت سرویس‪ .‬آمازون فقط بهترین تالش را قول داد‪ .‬هزینه آنقدر پایین بود که‬
‫ً‬ ‫•‬
‫خیلیها بدون ضمانت سرویس میتوانستند زندگی کنند‪ .‬امروزه ‪ AWS‬قابل دسترس بودن ‪ SLA‬را با‬
‫حداکثر ‪ 99.95%‬روی سرویسهایی چون ‪ Amazon EC2‬و ‪ Amazon S3‬ارائه میکند‪.‬‬
‫‪ Amazon S3‬برای دوام ‪ 99.999999999%‬با ذخیره چندین المثنی از هر شیء در مکانهای‬
‫مختلف طراحی شد‪ .‬یعنی شانس از بین رفتن یک شیء یک در ‪100‬میلیارد است‪ .‬همچنین ‪ AWS‬یک‬
‫داشبورد سالمتی سرویس تهیه کرد که وضعیت عملیاتی جاری هر سرویس ‪ AWS‬را بطور زمان قطعی‬
‫نشان میدهد‪ ،‬بطوریکه زمان کار و کارایی ‪ AWS‬کامالً شفاف هستند‪.‬‬
‫• نیازی به کنترات (قرارداد) نیست‪ .‬به خاطر اینکه هزینهها خیلی پایین است‪ ،‬برای شروع استفاده ‪EC2‬‬
‫فقط نیاز به یک کارت اعتباری است‪.‬‬
‫جدول ‪ 8-10‬هزینه ساعتیِ انواع مختلف نمونههای ‪ EC2‬در سال ‪ 2011‬را نشان میدهد‪ .‬عالوه بر محاسبات‪،‬‬
‫‪ EC2‬برای ذخیره سازی بلند مدت و ترافیک اینترنت شارژ میشود‪( .‬هزینهای برای ترافیک شبکه داخل محدوده‬
‫‪ AWS‬وجود ندارد)‪ .‬هزینه ذخیره ‪ 0.10$ ،Elastic Block‬به ازای هر گیگابایت با ورود به ‪ EC2‬و ‪0.08$‬‬
‫تا ‪ 0.15$‬به ازای هر گیگابایت با ترک ‪ EC2‬وابسته به حجم میباشد‪ .‬از لحاظ تاریخی با پرداخت ‪ 100$‬در هر‬
‫ماه شما میتوانید ظرفیتی معادل تمام ظرفیتهای دیسکهای مغناطیسی ساخته شده در سال ‪ 1960‬استفاده کنید‪.‬‬
‫اندازه‬ ‫دیسک‬ ‫حافظه‬ ‫محاسبه‬ ‫هسته‪-‬‬ ‫واحدهای‬ ‫نرخ‬ ‫در هر‬ ‫نمونه‬
‫آدرس‬ ‫(‪)GB‬‬ ‫(‪)GB‬‬ ‫واحد‪/‬‬ ‫های‬ ‫محاسبه‬ ‫ساعت‬
‫هسته‬ ‫مجازی‬
‫‪32/64bit‬‬ ‫‪EBS‬‬ ‫‪0.6‬‬ ‫‪0.5-‬‬ ‫‪1‬‬ ‫‪0.5-‬‬ ‫‪0.5-‬‬ ‫‪0.02$‬‬ ‫میکرو‬
‫‪2.0‬‬ ‫‪2.0‬‬ ‫‪2‬‬
‫‪32bit‬‬ ‫‪160‬‬ ‫‪1.7‬‬ ‫‪1.0‬‬ ‫‪1‬‬ ‫‪1.0‬‬ ‫‪1.0‬‬ ‫‪.0.085$‬‬ ‫استاندارد کوچک‬
‫‪64bit‬‬ ‫‪850‬‬ ‫‪7.5‬‬ ‫‪2.0‬‬ ‫‪2‬‬ ‫‪4.0‬‬ ‫‪4.0‬‬ ‫‪0.340$‬‬ ‫استاندارد بزرگ‬
‫‪64bit‬‬ ‫‪1690‬‬ ‫‪15.0‬‬ ‫‪2.0‬‬ ‫‪4‬‬ ‫‪8.0‬‬ ‫‪8.0‬‬ ‫‪0.680$‬‬ ‫استاندارد خیلی بزرگ‬
‫‪64bit‬‬ ‫‪420‬‬ ‫‪17.1‬‬ ‫‪3.25‬‬ ‫‪2‬‬ ‫‪6.5‬‬ ‫‪5.9‬‬ ‫‪0.500$‬‬ ‫حافظه‪-‬بزرگ فوقالعاده بزرگ‬
‫‪64bit‬‬ ‫‪850‬‬ ‫‪34.2‬‬ ‫‪3.25‬‬ ‫‪4‬‬ ‫‪13.0‬‬ ‫‪11.8‬‬ ‫‪1000$‬‬ ‫حافظه‪-‬بزرگ دوبل فوقالعاده بزرگ‬
‫‪64bit‬‬ ‫‪1690‬‬ ‫‪68.4‬‬ ‫‪2.50‬‬ ‫‪8‬‬ ‫‪26.0‬‬ ‫‪23.5‬‬ ‫‪2000$‬‬ ‫حافظه‪-‬بزرگ چهاربرابر فوقالعاده‬
‫بزرگ‬
‫‪32bit‬‬ ‫‪350‬‬ ‫‪1.7‬‬ ‫‪2.50‬‬ ‫‪2‬‬ ‫‪5.0‬‬ ‫‪2.0‬‬ ‫‪0.170$‬‬ ‫‪ High-CPU‬متوسط‬
‫‪64bit‬‬ ‫‪1690‬‬ ‫‪7.0‬‬ ‫‪2.50‬‬ ‫‪8‬‬ ‫‪20.0‬‬ ‫‪8.0‬‬ ‫‪0.680$‬‬ ‫‪ High-CPU‬فوقالعاده بزرگ‬
‫‪64bit‬‬ ‫‪1690‬‬ ‫‪23.0‬‬ ‫‪4.20‬‬ ‫‪8‬‬ ‫‪33.5‬‬ ‫‪18.8‬‬ ‫‪1600$‬‬ ‫خوشه فوقالعاده بزرگ چهاربرابر‬
‫جدول ‪ :8-10‬هزینه و خواص نمونههای ‪ EC2‬براساس تقاضا در ایالت ویرجینیای آمریکا در سال ‪ 2011‬افزایش داشته است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 546‬‬

‫‪Sep09‬‬ ‫‪Sep-07‬‬ ‫‪Mar-06‬‬ ‫‪Aug-04‬‬


‫‪0.11‬‬ ‫‪0.10‬‬ ‫‪0.21‬‬ ‫‪0.15‬‬ ‫میانگین زمان تکمیل (ساعت)‬
‫‪488‬‬ ‫‪394‬‬ ‫‪268‬‬ ‫‪157‬‬ ‫میانگین تعداد سرور به ازای هر کار‬
‫‪0.68$‬‬ ‫‪0.68$‬‬ ‫‪0.68$‬‬ ‫‪0.68$‬‬ ‫هزینه در ساعت هر نمونه ‪High-CPU EC2 XL‬‬
‫‪38.07$‬‬ ‫‪25.56$‬‬ ‫‪38.47$‬‬ ‫‪16.35$‬‬ ‫میانگین هزینه ‪ EC2‬برای هر کار ‪MapReduce‬‬
‫‪3.19‬‬ ‫‪3.26‬‬ ‫‪5.80‬‬ ‫‪2.34‬‬ ‫میانگین تعداد درخواستهای ‪( EBS-I/o‬میلیون)‬
‫‪0.10$‬‬ ‫‪0.10$‬‬ ‫‪0.10$‬‬ ‫‪0.10$‬‬ ‫هزینه ‪ EBS‬به ازای هر میلیون درخواست‬
‫‪0.32$‬‬ ‫‪0.33$‬‬ ‫‪0.58$‬‬ ‫‪0.23$‬‬ ‫میانگین هزینه ‪ EBS I/O‬برای هر کار ‪MapReduce‬‬
‫‪38.39$‬‬ ‫‪25.89$‬‬ ‫‪39.05$‬‬ ‫‪16.58$‬‬ ‫میانگین کل هزینه به ازای هر کار ‪MapReduce‬‬
‫‪3467000‬‬ ‫‪2271000‬‬ ‫‪171000‬‬ ‫‪29000‬‬ ‫تعداد ساالنه کار ‪MapReduce‬‬
‫‪133107414$ 57394985$ 6678011$ 480910$‬‬ ‫هزینه کل کارهای ‪ MapReduce‬روی ‪EC2/EBS‬‬
‫جدول ‪ :9-10‬هزینه تخمین زده شده اگر شما بارکاری ‪ MapReduce‬گوگل را (جدول ‪ )2-10‬با هزینههای سال ‪ 2011‬روی ‪AWS EC2‬‬
‫‪ and EBS‬اجرا کنید‪ .‬هزینهها برای سال ‪ 2011‬تخمین زده شده و برای سالهای بعدی کامالً دقیق نیست‪.‬‬

‫مثال ‪ :6-10‬هزینه اجرای میانگین کارهای ‪ MapReduce‬در جدول ‪ 2-10‬را روی ‪ EC2‬محاسبه کنید‪.‬‬
‫فرض کنید تعداد کارها فراوان است‪ .‬هزینههای کمبود ماهانه را صرفنظر کنید‪ ،‬اما هزینه دیسک ‪ I/O‬را برای‬
‫ذخیره بلوک االستیک ‪ )EBS( AWS‬مد نظر قرار دهید‪ .‬سپس هزینه ساالنه برای اجرای همه کارهای‬
‫‪ MapReduce‬را محاسبه کنید‪.‬‬
‫پاسخ‪ :‬اولین سؤال این است که اندازه صحیح نمونه منطبق با سرور معمولی گوگل چیست؟ جدول ‪ 9-10‬در بخش‬
‫‪ 10-7‬نشان میدهد که در سال ‪ 2007‬سرور معمولی گوگل چهار هسته با سرعت ‪ 2.2GHz‬با ‪ 8GB‬حافظه‬
‫داشته است‪ .‬چون یک نمونه یک هسته مجازی است که معادل ‪ 1 AMD Opteron‬تا ‪ 1.2GHz‬میباشد‪،‬‬
‫منطبقترین گزینه در جدول ‪ High-CPU 8-10‬فوقالعاده بزرگ با هشت هسته و ‪ 7GB‬حافظه است‪ .‬به منظور‬
‫سادگی‪ ،‬فرض خواهیم کرد که دسترسی میانگین حافظه ‪ 64KB ،EBS‬میباشد به منظور محاسبه تعداد ‪I/O‬ها‪.‬‬
‫جدول ‪ 9-10‬میانگین و کل هزینه ساالنه اجرای ‪ MapReduce‬روی ‪ EC2‬را محاسبه میکند‪ .‬میانگین کار‬
‫‪ MapReduce‬در سال ‪ 2009‬کمی پایینتر از ‪ 40$‬روی ‪ EC2‬است و کل بار کاری برای ‪ 2009‬هزینه‬
‫‪ 133M$‬روی ‪ AWS‬دارد‪ .‬نکته اینکه دسترسیهای ‪ EBS‬حدود ‪ ٪1‬کل هزینه این کارها است‪.‬‬

‫مثال ‪ :7-10‬با داشتن اینکه هزینههای کارهای ‪ MapReduce‬در حال افزایش است و در حال حاضر از‬
‫‪ 100M$‬در سال تجاوز کرده است‪ ،‬فرض کنید رئیس شما از شما خواسته تا با هزینههای کمتر سرمایهگذاری‬
‫کنید‪ .‬دو گزینه هزینه کمتر نمونههای رزروشده ‪ AWS‬یا نمونههای ‪ Spot‬میباشند‪ .‬کدام یک را پیشنهاد میکنید؟‬
‫پاسخ‪ :‬نمونههای رزرو شده ‪ AWS‬نرخ ساالنه ثابتی به عالوه نرخ ساعتی به ازای هر استفاده شارژ میکنند‪ .‬در‬
‫سال ‪ ،2011‬هزینه ساالنه نمونه ‪ High-CPU‬فوقالعاده بزرگ ‪ 1820$‬و نرخ ساعتی ‪ 0.24$‬بوده است‪ .‬چون‬
‫ما برای نمونهها زمانیکه از آن استفاده کنیم پرداخت میکنیم فرض کنید میانگین بهرهوری نمونههای رزرو شده‬
‫‪ 80%‬باشد‪ .‬آنگاه میانگین هزینه به ازای هر ساعت عبارت است از‪:‬‬
‫‪| 547‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫هزینه ساالنه‬
‫هزینه ساعتی ‪+‬‬ ‫‪$1820‬‬
‫تعداد ساعتها در سال‬ ‫‪+ $0.24‬‬
‫‪= 8760‬‬ ‫‪= (0.21 + 0.24) × 125 = $0.56‬‬
‫بهرهوری‬ ‫‪80%‬‬
‫بنابراین‪ ،‬صرفه جویی با استفاده از نمونههای رزرو شده تقریباً ‪ 17%‬یا ‪ 23M$‬برای بار کاری ‪MapReduce‬‬
‫در سال ‪ 2011‬میباشد‪.‬‬
‫با نمونهبرداری چند روز در ژانویه ‪ ،2011‬میانگین هزینه ساعتی نمونه فوقالعاده بزرگ ‪،HIGH-CPU SPOT‬‬
‫‪ 0.235$‬میباشد‪ .‬بنابراین کمترین هزینه پیشنهادی برای داشتن یک سرور میباشد که هزینه میانگین نمیتواند‬
‫باشد زیرا شما میخواهید کارهایتان را تا خاتمه بدون دستانداز اجرا کنید (م‪ .‬سرعت کم یا زیاد شود)‪ .‬اجازه دهید‬
‫فرض کنیم شما نیازمند پرداخت دوبرابر حداقل هزینه برای اجرای کامل کارهای بزرگ ‪ MapReduce‬هستید‪.‬‬
‫هزینه صرفهجویی شده برای بارکاری ‪ 2009‬تقریباً ‪ 31%‬یا ‪ 41M$‬میباشد‪ .‬بنابراین شما بطور آزمایشی نمونه‪-‬‬
‫های ‪ Spot‬را به رئیستان به خاطر تعداد کمتر و صرفهجویی مالی بیشتر پیشنهاد میکنید‪ .‬به هرحال‪ ،‬شما به‬
‫رئیستان میگویید که نیازمند اجرای کارهای ‪ MapReduce‬روی نمونههای ‪ Spot‬هستید تا ببینید پرداخت‬
‫پایانی شما بطوریکه مطمئن باشند کارها تکمیل میشوند چقدر است و واقعاً صدها نمونه فوقالعاده بزرگ ‪High-‬‬
‫‪ CPU‬برای اجرای این کارها بطور روزانه قابل دسترس هستند‪.‬‬

‫‪ -6-10‬مطالب مرتبط‬
‫شبکهی ‪ WSC‬به عنوان یک گلوگاه‬
‫در بخش ‪ 4-10‬دیدیم که ابزارهای شبکه باالی سوییچ رک کسر قابل توجهی از هزینه یک ‪ WSC‬میباشند‪.‬‬
‫لیست هزینه یک سوییچ دیتاسنتر یک گیگابایتی ‪ 128‬پورت ‪ [EX8216] Juniper‬در صورت پیکربندی کامل‬
‫‪ 716000$‬بدون رابطهای نوری و ‪ 908000$‬با آنها میباشد‪( .‬این لیست هزینهها بشدت تخفیف میخورد اما‬
‫بازهم هزینه آن بیشتر از ‪ 50‬برابر یک سوییچ رک میباشد)‪ .‬این سوییچها متمایل به مصرف توان هستند‪ .‬به عنوان‬
‫مثال‪ EX8216 ،‬حدود ‪ 19200‬وات مصرف میکند که ‪ 500‬تا ‪ 1000‬برابر بیشتر از یک سرور ‪ WSC‬میباشد‪.‬‬
‫بهعالوه این سوییچهای بزرگ بطور دستی پیکربندی میشوند و در مقیاس بزرگ شکننده هستند‪ .‬به خاطر این‬
‫هزینه باال استفاده از افزونگی بیشتر از دو برابر در یک ‪ WSC‬که از این سوییچهای بزرگ استفاده میکند مشکل‬
‫است‪ ،‬که این گزینههای تحملپذیری خطا را محدود میکند‪.[Hamilton 2009] .‬‬

‫به هرحال‪ ،‬تأثیر حقیقی روی سوییچها‪ ،‬چگونگی تأثیر ‪ OverSubscription‬روی طراحی نرمافزار و جایگزینی‬
‫سرویسها و دادهها در داخل یک ‪ WSC‬میباشد‪ .‬شبکه ‪WSC‬ی ایدهآل یک جعبه سیاه است که همبندی و‬
‫پهنای باند در آن بیمعنی است زیرا هیچ محدودیتی وجود ندارد‪ :‬شما میتوانید هر بار کاری را در هر مکان اجرا‬
‫کنید و برای بهرهوری سرور بهینه کنید نه اینکه ترافیک محلی باشد‪ .‬امروزه گلوگاههای شبکهی ‪ WSC‬شامل‬
‫جایابی دادهها میباشد که باعث پیچیدگی نرمافزار ‪ WSC‬میشود‪ .‬چون این نرمافزار گرانبهاترین دارایی یک شرکت‬
‫‪ WSC‬میباشد‪ ،‬هزینه این پیچیدگی اضافه شده میتواند قابل توجه باشد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 548‬‬

‫]‪ Thacker[2007‬یک تکنولوژی شبکه عاریتی از سوپرکامپیوترها پیشنهاد کرد که بر مشکالت هزینه و کارایی‬
‫غلبه کند‪ Vahdat et al.[2010] .‬یک زیرساخت شبکه مشابهی پیشنهاد داد که میتواند تا ‪ 100000‬پورت و‬
‫پهنای باند دوبخشی ‪ 1‬پتابیت‪/‬ثانیه مقیاسپذیر شود‪ .‬مزیت عمده این سوییچهای دیتاسنتر جدید سادهسازی چالش‪-‬‬
‫های نرمافزاری به خاطر ‪ oversubscription‬میباشد‪.‬‬

‫استفاده از انرژی بطور مفید داخل سرور‬

‫درحالیکه ‪ PUE‬بازدهی یک ‪ WSC‬را اندازه میگیرد‪ ،‬چیزی راجع به آنچه داخل تجهیزات ‪ IT‬میگذرد ندارد‪.‬‬
‫بنابراین‪ ،‬منبع دیگری از بازدهی کمِ برق که در شکل ‪ 5-10‬پوشش داده نشده است مصرف توان داخل سرور است‬
‫که ورودی ‪ 208‬ولتی یا ‪ 110‬ولتی را به ولتاژهایی که تراشهها و دیسکها استفاده میکنند و معموالً ‪ 3.3‬و ‪ 5‬و‬
‫‪ 12‬ولت است تبدیل میکند‪ 12 .‬ولت هنوز هم به ‪ 1.2‬تا ‪ 1.8‬ولت روی بورد کاهش مییابد براساس اینکه چه‬
‫میزان ریزپردازنده و حافظه نیاز دارد‪ .‬در سال ‪ 2007‬بسیاری از منابع تغذیه ‪ ٪60‬تا ‪ ٪80‬بازدهی داشتند‪ ،‬که یعنی‬
‫هدر روی بیشتری در داخل سرور وجود دارد که از آنچه در مراحل دیگر و از تغییر خطوط ولتاژ‪-‬باال در برج تأسیسات‬
‫تا تهیه خطوط ولتاژ پایین در سرور‪ ،‬وجود دارد قابل توجهتر است‪ .‬یک دلیل این است که سرورها باید محدودهای‬
‫از ولتاژها را برای تراشهها و دیسکها تهیه کنند‪ ،‬زیرا ایدهای راجع به آنچه روی مادربورد است ندارند‪ .‬دلیل دوم‬
‫این است که میزان وات تولیدی منبع تغذیه اغلب بیشتر از استفاده تجهیزات روی بورد هست‪ .‬به عالوه چنین‬
‫مادربوردهایی اغلب از بدترین بازدهیشان یعنی ‪ ٪25‬یا کمتر استفاده میکنند‪ .‬مادربوردهای کامپیوتر‪ ،‬ماژولهای‬
‫رگوالتور ولتاژ (‪ )VRM1‬دارند‪ .‬بازدهی این ماژولها نسبتاً کم است‪.‬‬

‫برای بهبود جدیدترین تکنولوژی‪ ،‬جدول ‪ 10-10‬استانداردهای ابتکاری محاسباتی ]‪ [2007‬برای درجه بندی منابع‬
‫تغذیه و اهدافشان در طول زمان را نشان میدهد‪ .‬این استاندارد نیازهای بار ‪ ٪20‬و ‪ ٪50‬و ‪ ٪100‬را معلوم میکند‪.‬‬

‫]‪ Barroso and Holzle[2007‬گفتند که کل سرور باید تناسب انرژی داشته باشد‪ ،‬یعنی‪ ،‬سرورها باید انرژی‬
‫را متناسب با مقدار کار انجام شده مصرف کنند‪ .‬شکل ‪ 8-10‬توان مصرفی برنامه محک ‪ SPECpower‬را در‬
‫مقایسه با هدف ایدهآل نشان میدهد‪ SPECpower .‬یک برنامه محک سرور است که انرژی استفاده شده در‬
‫سطوح مختلف کارایی را اندازه میگیرد‪ .‬خط تناسب انرژی به بهرهوری انرژی واقعیِ پربازدهترین سرورها برای‬
‫‪ SPECpower‬در ژوالی ‪ 2010‬اضافه شده است‪ .‬این برنامه محک ‪ 2.5‬برابر بهتر از سایر برنامههای محک‬
‫سرور در آن سال است‪ .‬اکثر سرورها بازدهی خوبی ندارند‪ .‬به عنوان مثال‪ ،‬بهترین سرورهای ‪ SPECpower‬از‬
‫دیسکهای نیمههادی استفاده می کنند که ظرفیت آنها از حافظه اصلی کمتر است! حتی این سیستم با بازدهی‬
‫خوب وقتیکه بیکار است تقریباً ‪ ٪30‬از کل توان را استفاده میکند و در ‪ ٪10‬بار تقریباً ‪ ٪50‬کل توان را استفاده‬
‫میکند‪ .‬بنابراین‪ ،‬تناسب انرژی یک هدف متعالی باقی میماند نه یک یافته افتخار آمیز‪.‬‬

‫‪1‬‬
‫‪Voltage Regulator Modules‬‬
‫‪| 549‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫طال (ژوئن ‪)2010‬‬ ‫نقره (ژوئن ‪)2009‬‬ ‫برنز (ژوئن ‪)2008‬‬ ‫پایه‬ ‫شرایط بار‬
‫‪87%‬‬ ‫‪85%‬‬ ‫‪82%‬‬ ‫‪80%‬‬ ‫‪20%‬‬
‫‪90%‬‬ ‫‪88%‬‬ ‫‪82%‬‬ ‫‪80%‬‬ ‫‪50%‬‬
‫‪87%‬‬ ‫‪85%‬‬ ‫‪82%‬‬ ‫‪80%‬‬ ‫‪100%‬‬
‫جدول ‪ :10-10‬ردهبندی بازدهی و اهداف منابع تغذیه در طول زمان برای محاسبات صرفجوی ابتکاری‪ .‬این نرخها برای واحدهای‬
‫منبع تغذیه چند‪-‬خروجی‪ 1‬میباشند که به منابع تغذیه سرور و رومیزی در سیستمهای بدون افزونگی اشاره میکنند‪ .‬استاندارد دیگری‬
‫نیز برای ‪PSU‬های تک‪-‬خروجی وجود دارد که معموالً در پیکربندیهای با افزونگی (‪1u/2u single-, dual, and four-‬‬
‫)‪ socket and blade servers‬استفاده میشوند‪.‬‬

‫نرمافزار سیستم در صورتی که کارایی را بهبود دهد‪ ،‬طوری طراحی میشود که همه منابع قابل دسترس را استفاده‬
‫کند بدون اینکه نگران توان مصرفی باشد‪ .‬به عنوان مثال‪ ،‬سیستمهای عامل همه حافظه را برای برنامهها و دادهها‬
‫یا برای ذخیره کردن فایلها در حافظه نهان استفاده میکنند با وجود این حقیقت که اکثر دادهها احتماالً هیچگاه‬
‫استفاده نمیشوند‪ .‬در طرحهای آینده معماران نرمافزار باید عالوه بر کارایی‪ ،‬انرژی را نیز در نظر بگیرند‪[Carter .‬‬
‫]‪.and Rajamani 2010‬‬

‫شکل ‪ :8-10‬بهترین نتایج بدست آمده از برنامه محک ‪ SPECpower‬در سال ‪ 2010‬در مقایسه با انرژی متناسب ایدهآل‪ .‬سیستم‬
‫‪ HP Proliant SL2x170z G6‬میباشد که یک خوشه از چهار ‪ Intel Xeon L5640‬دو‪-‬سوکته استفاده میکند که هر‬
‫سوکت شش هسته دارد و با سرعت ‪ 2.27GHz‬کار میکنند‪ .‬سیستم ‪ 64GB DRAM‬و یک ‪ 60GB SSD‬ریز برای ذخیره سازی‬
‫ثانویه دارد‪( .‬این حقیت که حافظه اصلی بزرگتر از ظرفیت دیسک است به این معنی است که این سیستم مناسب این برنامه محک‬
‫است)‪ .‬نرمافزار استفاده شده ‪ IBM Java Virtual Machine‬نگارش ‪ 9‬و ویندوز سرور ‪ 2008‬ویرایش تجاری میباشد‪.‬‬

‫مثال ‪ : 7-10‬با استفاده از دادههای شکل ‪ ،8-10‬صرفهجویی توان از پنج سرور با بهرهوری ‪ 10%‬در مقایسه با‬
‫یک سرور با بهرهوری ‪ 50%‬چه تغییری میکند؟‬
‫کانون نشر علوم‬ ‫‪| 550‬‬

‫پاسخ‪ :‬توان مصرفی یک سرور با بار ‪ 308 ،10%‬وات است و با بار ‪ 451 ،50%‬وات است‪ .‬بنابراین صرفهجویی‬
‫عبارت است از‪:‬‬
‫‪5×308/451=(1540/451)=3.4‬‬
‫یا حدوداً با ضریب ‪ .3.4‬اگر بخواهیم یک ناظر خوب در ‪ WSC‬باشیم‪ ،‬باید سرورها را هنگامیکه بهرهوری تنزل‬
‫دارد یکی کنیم‪ ،‬و سرورهایی بخریم که تناسب انرژی داشته باشند یا چیز دیگری بیابیم که در دورههایی که فعالیت‬
‫کم است مفید باشد‪.‬‬

‫با پیش زمینه ایجاد شده در شش بخش قبل‪ ،‬هماکنون آماده قدردانی از کار معماران ‪WSC‬ی گوگل هستیم‪.‬‬

‫‪ -7-10‬کنار هم قرار دادن همه باهم ‪ :‬کامپیوتر مقیاس‪-‬ورهاوس گوگل‬


‫چون شرکتهای زیادی با ‪ WSC‬در بازار شدیداً رقابت میکنند‪ ،‬تاکنون تمایلی به اشتراک ابداعاتشان با عموم (و‬
‫یکدیگر) نداشتهاند‪ .‬در سال ‪ 2009‬گوگل بهترین ‪WSC‬یش را توصیف کرد‪ .‬گوگل وضعیت ‪WSC‬یش در سال‬
‫‪ 2007‬را بطور سخاوتمندانه تهیه کرد‪ .‬بنابراین این بخش بروزترین توصیف از یک ‪WSC‬ی گوگل است‬
‫]‪ .[clidaras, Johnson, and Felderman 2010‬اخیراً فیسبوک جدیدترین توصیف دیتاسنترش را در‬
‫‪ http://opencompute.org‬ارائه داده است‪.‬‬

‫کانتینرها‬

‫گوگل و میکروسافت ‪WSC‬هایی با استفاده از کانتینرهای کشتیرانی ساختهاند‪ .‬ایدهی ساخت یک ‪ WSC‬از‬
‫کانتینرها ماژولی ساختن ‪ WSC‬می باشد‪ .‬هر کانتینر مستقل است‪ ،‬و تنها ارتباطات بیرونی‪ ،‬شبکه‪ ،‬توان و آب‬
‫می باشد‪ .‬کانتینرها‪ ،‬شبکه‪ ،‬توان و خنک سازی را برای سرورهای داخلیشان آماده میکنند‪ ،‬بنابراین وظیفهی یک‬
‫‪ WSC‬فراهم کردن شبکه‪ ،‬توان و آب سرد به کانتینر و پمپ آب گرم منتج به برجها و چیلرهای خننک کننده‬
‫بیرونی است‪.‬‬

‫‪WSC‬ی گوگل که ما آنرا مرور میکنیم شامل ‪ 45‬کانتینر با طول ‪-40‬فوت در یک فضای ‪ 300‬در ‪ 250‬فوتی یا‬
‫‪75000‬فوت مربع (حدوداً ‪ 7000‬متر مربع) میباشد‪ .‬در یک ورهاوس (سوله) ‪ 30 ،‬کانتینر قرار دارد که ه دو تا با‬
‫هم بصورت پشته شده قرار گرفتهاند‪ ،‬یعنی ‪ 15‬زوج کانتینر روی هم قرار دارند‪ .‬گوگل مکان ‪ WSC‬را فاش نکرد‪،‬‬
‫اما زمانی ساخته شد که گوگل ‪WSC‬ها را در ‪ Oregon ،Dalles‬توسعه داد که آب و هوای معتدل دارند و‬
‫نزدیک منبع هیدروالکتریک و فیبر ستون فقرات اینترنت است‪ .‬این ‪ 10 WSC‬مگاواتی ‪PUE‬ی ‪ 1.23‬در ‪ 12‬ماه‬
‫قبل ارائه داده است‪ .‬از ‪ 0.23‬سربارِ ‪ ٪0.85 ،PUE‬برای هدر رفت خنک سازی (‪ )0.195 PUE‬و ‪٪15‬‬
‫‪| 551‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫(‪ )0.035‬برای هدر رفت توان میباشد‪ .‬سیستم در نوامبر ‪ 2005‬فعال شد و این بخش وضعیت آنرا در ‪2007‬‬
‫توصیف میکند‪.‬‬

‫یک کانتینر گوگل میتواند تا ‪ 250‬کیلو وات را مدیریت کند‪ .‬یعنی کانتینر میتواند ‪ 780‬وات را در هر فوت مربع‬
‫(‪ 0.09‬متر مربع)‪ ،‬یا ‪ 133‬وات در هر فوت مربع در کل فضای ‪ 75000‬فوت مربع با ‪ 40‬کانتینر مدیریت کند‪ .‬به هر‬
‫حال میانگین کانتینر در این ‪ WSC‬فقط ‪ 222‬کیلووات است‪.‬‬

‫شکل ‪ 9-10‬یک نمای نیمرخ از کانتینر گوگل را نشان میدهد‪ .‬یک کانتینر حداکثر ‪ 1160‬سرور را نگه میدارد‪،‬‬
‫بنابراین کانتینرها برای ‪ 52000‬سرور فضا دارند‪( .‬این ‪ WSC‬حدوداً ‪ 40000‬سرور دارد)‪ .‬سرورها بصورت ‪ 20‬تایی‬
‫در رکها پشته شدهاند و در دو ردیف دراز که هر کدام ‪ 29‬رک (که به آن قفسه نیز میگویند) دارند شکل دهی‬
‫میشوند‪ .‬سوییچهای رک ‪-48‬پورته‪ ،‬سوییچهای اترنت ‪1‬گیگا بیت‪/‬ثانیه هستند‪ ،‬که در هر رک قرار میگیرند‪.‬‬

‫خنک سازی و توان در ‪WSC‬ی گوگل‬

‫شکل ‪ 10-10‬یک برش مقطعی از کانتینر است که جریان هوا را نشان میدهد‪ .‬رکهای کامپیوتر به سقف کانتینر‬
‫متصل شدهاند‪ .‬در وسط کانتینر‪،‬کف برآمده است و خنک کننده زیر کف قرار دارد و هوا را به داخل راهروی بین‬
‫رکها میدمد‪ .‬هوای گرم از پشت رکها برگشت داده میشود‪ .‬فضای محدود شده کانتینر از ترکیب هوای سرد و‬
‫گرم جلوگیری میکند که بازدهی خنک سازی را بهبود میدهد‪ .‬فنهای با سرعت متغیر با کمترین سرعتی که‬
‫خنک کردن رک نیازمند است کار میکنند نه با سرعت ثابت‪.‬‬

‫هوای خنک در دمای ‪ 81‬درجه فارنهایت (‪ 27‬درجه سلسیوس) نگه داشته میشود که در مقایسه با دیتاسنترهای‬
‫رایج مناسبتر است‪ .‬یک دلیل که دیتاسنترهای سنتی چنین خنک کار میکردند برای تجهیزات ‪ IT‬نبود‪ ،‬اما برای‬
‫این بود که نقاط داغ داخل دیتاسنتر مشکالت مجزایی تولید نکنند‪ .‬با کنترل دقیق جریان هوا برای اجتناب از نقطه‬
‫داغ‪ ،‬کانتینر میتواند با درجه حرارت بیشتری کار کند‪.‬‬

‫خنککنندههای خارجی فیوزهایی دارند که اگر هوا مطلوب باشد‪ ،‬فقط برجهای خنک کننده بیرونی برای سرد کردن‬
‫آب نیاز هستند‪ .‬خنک کنندهها اگر درجه حرارت آب خارجی از برج خنک کننده ‪ 70‬درجه فارنهایت (‪21‬درجه‬
‫سلسیوس) باشد قطع میشوند‬
‫کانون نشر علوم‬ ‫‪| 552‬‬

‫شکل ‪ :9-10‬گوگل استاندارد ‪ 1AAA‬را برای کانتینرها سفارشی کرده است‪ .40×8×9.5 feet (12.2×2.4×2.9 meters) :‬سرورها‬
‫بصورت ‪20‬تایی در رکها پشته شدهاند‪ .‬دو ردیف دراز از رکها داریم‪ .‬در هر ردیف ‪ 29‬رک وجود دارد‪ ،‬هر ردیف در یک طرف کانتینر قرار‬
‫دارد‪ .‬یک راهرو خنک ساز در وسط کانتینر وجود دارد که هوای گرم را به خارج میبرد‪ .‬ساختار آویزان رک تعمیر سیستم خنک سازی را‬
‫بدون برداشتن سرورها سادهتر می کند‪ .‬برای اینکه به افراد داخل کانتینر اجازه تعمیر اجزاء داده شود‪ ،‬کانتینر شامل سیستمهای امنیتی برای‬
‫تشخیص آتش و حذف غبار‪ ،‬خروجی و نور اضطراری و بستن توان اضطراری میباشد‪ .‬یک تور ویدئویی از دیتاسنتر در‬
‫‪ www.google.com/corporate/green/datacenters/summit.html‬وجود دارد‪ .‬مایکروسافت‪ ،‬یاهو و شرکتهای‬
‫دیگری در حال ساخت دیتاسنترها با این ایدهها هستند اما کانتینرها از استاندارد ایزو استفاده نمیکنند زیرا اندازه کانتینر سفارشی است‪.‬‬

‫اگر هوای بیرون خیلی سرد باشد‪ ،‬برجهای خنک کننده نیازمند بخاریهایی برای اجتناب از یخ زدن میباشند‪ .‬یکی‬
‫از مزایای قرار دادن یک ‪ WSC‬در داالس این است که درجه حرارت ساالنه در محدوده ‪ 15‬تا ‪ 66‬درجه فارنهایت‬
‫(‪ 9-‬تا ‪ 19‬درجه سلسیوس) با میانگین ‪ 41‬درجه فارنهایت (‪5‬درجه سلسیوس) قرار دارد‪ ،‬بنابراین خنک کنندهها‬
‫میتوانند اغلب خاموش باشند‪ .‬در مقایسه الس وگاس‪ ،‬نوادا‪ ،‬در محدودهی ‪ 42-‬تا ‪ 62‬درجه فارنهایت (‪ 41-‬تا ‪17‬‬
‫درجه سلسیوس) با میانگین ‪ 29‬درجه فارنهایت (‪2-‬درجه سلسیوس) هستند‪ .‬به عالوه‪ ،‬برای سرد کردن داخل کانتینر‬
‫تا ‪ 81‬درجه فارنهایت (‪27‬درجه سلسیوس) استفاده از مادر طبیعت بهتر است‪.‬‬
‫‪| 553‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫شکل ‪ :10-10‬جریان هوای داخل کانتینر نشان داده شده در شکل ‪ .9-10‬این دیاگرام سطح مقطع دو رک در هر طرف کانتینر را نشان‬
‫میدهد‪ .‬هوای سرد به داخل راهرو در وسط کانتینر دمیده میشود و به سرورها مکیده میشود‪ .‬هوای داغ در لبههای کانتینر برمیگردد‪.‬‬
‫این طرح جریان هوای گرم و سرد را مجزا میکند‪.‬‬

‫شکل ‪ 11-10‬سرور طراحی شده توسط گوگل برای این ‪ WSC‬را نشان میدهد‪ .‬برای بهبود بازدهی‪ ،‬منبع تغذیه‬
‫فقط ‪ 12‬ولت برای مادربورد تهیه میکند و مادربورد ولتاژ کافی برای دیسکهایی که روی بورد دارد تهیه میکند‪.‬‬
‫(لپتاپها به دیسکهایشان بطور مشابه توان میدهند)‪ .‬سرورها بطور عادی سطوح ولتاژ زیادی که توسط دیسکها‬
‫و تراشهها مستقیماً الزم میشوند را تهیه میکنند‪ .‬این سادهسازی به معنی این است که منبع تغذیه ‪ 2007‬میتواند‬
‫با بازدهی ‪ 92%‬اجرا شود‪ ،‬که باالتر از نرخ طالی منابع تغذیه در سال ‪( 2010‬جدول ‪ )10-10‬میباشد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 554‬‬

‫شکل ‪ :11-10‬سرورِ ‪ WSC‬ی گوگل‪ .‬منبع تغذیه در سمت چپ است و دو دیسک در باال هستند‪ .‬دو فن زیر دیسک چپ دو سوکت‬
‫ریزپردازنده ‪ AMD Barcelona‬که هر کدام با دو هسته که با سرعت ‪ 2.2GHz‬کار میکنند را پوشش میدهند‪ .‬هشت ‪DIMM‬‬
‫در سمت راست پایین که هر کدام ‪ 1GB‬نگه میدارند‪ ،‬ظرفیت کلی ‪ 8GB‬دارند‪ .‬هیچ ورقه اضافی وجود ندارد‪ ،‬سرورها به داخل باتری‬
‫وصل میشوند و یک پلنیوم مجزا در رک برای هر سرور وجود دارد که به کنترل جریان هوا کمک میکند‪ .‬به خاطر ارتفاع باتریها‪20 ،‬‬
‫سرور در یک رک قرار میگیرد‪.‬‬

‫مهندسین گوگل فهمیدند که ‪ 12‬ولت به معنی این است که میتوان از ‪ UPS‬به عنوان یک باتری استاندارد در هر‬
‫قفسه استفاده کرد‪ .‬بنابراین‪ ،‬بجای اینکه یک اتاق باتری مجزا داشته باشیم‪ ،‬که شکل ‪ 5-10‬نشان میدهد بازدهی‬
‫‪ 94٪‬دارد‪ ،‬هر سرور باتری اسیدی سربی خودش را دارد که ‪ %99.99‬بازدهی دارد‪ .‬این ‪ UPS‬توزیع شده در هر‬
‫ماشین گسترش مییابد‪ ،‬که به معنی این است که پول یا توانی روی افزایش ظرفیت نداریم‪ .‬آنها از واحدهای ‪UPS‬‬
‫آماده برای محافظت از سوییچهای شبکه استفاده میکنند‪.‬‬

‫چه چیزی در مورد صرفهجویی توان با استفاده از فرکانس ولتاژ پویا (‪ )DVFS‬که در فصل ‪ 1‬توصیف شد وجود‬
‫دارد؟ ‪ DVFS‬در این خانواده از ماشین ها گسترش داده نشده است زیرا اثر روی تأخیر طوری است که فقط در‬
‫نواحی فعالیت خیلی کمی در بارهای کاری آنالین قابل روئیت است‪ ،‬و حتی در این حاالت صرفه جویی در پهنای‬
‫سیستم خیلی کم است‪ .‬یک حلقه کنترل مدیریت پیجیده برای گسترش آن مورد نیاز است بنابراین قابل توجیه‬
‫نیست‪.‬‬
‫‪| 555‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫یکی از کلیدهای رسیدن به ‪PUE‬ی ‪ 1.23‬قرار دادن وسایل اندازهگیری (که به آنها ترانسفورماتور جریان میگویند)‬
‫در همه مدارات سرتاسر کانتینر و هرجایی در ‪ WSC‬میباشد تا بازدهی توان واقعی را اندازه بگیرد‪ .‬این اندازهگیریها‬
‫به گوگل اجازه تنظیم طرح ‪ WSC‬در طول زمان میدهد‪.‬‬

‫شکل ‪ :12-10‬بازدهی بهرهوری توان )‪ (PUE‬از ده ‪WSC‬ی گوگل در طول زمان‪WSC .‬ی با برچسب ‪ A‬در این بخش توصیف شد‪.‬‬
‫آن باالترین خط در ‪ Q3’07‬و ‪ Q2’10‬میباشد‪( .‬از ‪www.google.com/corporate/green/datacenters‬‬
‫‪ .)/measuring.htm‬اخیر ًا فیسبوک یک دیتاسنتر جدید را که باید ‪PUE‬ی مؤثر ‪ 1.07‬را اجرا کند انتشار داده است‬
‫(‪ http://opencompute.org‬را ببینید‪).‬‬

‫گوگل ‪PUE‬ی ‪WSC‬هایش را هر ربع منتشر میکند‪ .‬شکل ‪ PUE 12-10‬برای ده ‪WSC‬ی گوگل را نشان‬
‫میدهد از ربع سوم در ‪ 2007‬تا ربع دوم در ‪ .2010‬این بخش ‪WSC‬ی گوگل با برچسب ‪ A‬را توصیف میکند‪.‬‬
‫‪WSC‬ی ‪ E‬از گوگل با ‪PUE‬ی ‪ 1.16‬کار میکند با خنک سازی ‪ 0.105‬به خاطر درجه حرارت عملیاتی باالتر‬
‫و فیوزهای خنک کننده‪ .‬توزیع توان ‪ 0.039‬است به خاطر ‪UPS‬های توزیع شده و یک منبع تغذیه تک‪ .‬بهترین‬
‫نتیجه ‪ 1.12 WSC‬بود‪ .‬در آوریل ‪ ،2009‬میانگین ‪-12‬ماهه بین تمام دیتاسنترها ‪ 1.19‬بود‪.‬‬

‫سرورها در یک ‪WSC‬ی گوگل‬

‫سرور شکل ‪ 11-10‬دو سوکت دارد که هر کدام شامل یک پردازنده ‪ AMD Opteron‬دو‪-‬هستهای است که‬
‫با سرعت ‪ 2.2GHz‬کار میکند‪ .‬عکس هشت ‪ DIMM‬را نشان میدهد و این سرورها معموالً با هشت گیگا بایت‬
‫کانون نشر علوم‬ ‫‪| 556‬‬

‫‪ DDR2 DRAM‬گسترش مییابند‪ .‬خصوصیت جدید این است که ساعت گذرگاه حافظه به ‪ 533MHz‬از‬
‫استاندارد ‪ 666MHz‬کم شده است زیرا گذرگاه کندتر تأثیر کمتری روی کارایی دارد اما اثر زیادی روی توان دارد‪.‬‬

‫طرح اصلی یک رابط شبکه )‪ (NIC‬برای یک لینک ‪1‬گیگابیت‪/‬ثانیه دارد‪ .‬هرچندکه تصویر شکل ‪ 11-10‬دو درایو‬
‫دیسک ‪ SATA‬را نشان میدهد اما سرور اصلی فقط یکی دارد‪ .‬توان حداکثر طرح اصلی ‪ 160‬وات و ‪ 85‬وات برای‬
‫زمان بیکاری است‪.‬‬

‫طرح اصلی برای عرضه حافظه جانبی بیشتر تکمیل شد‪ .‬اوالً‪ ،‬یک طبقه ثانوی دربرگیرنده ‪ 10‬دیسک ‪ SATA‬به‬
‫سرور متصل می شود‪ .‬برای گرفتن یک دیسک بیشتر‪ ،‬دیسک دوم در نقاط خالیِ مادربورد جای میگیرد‪ ،‬که گره‬
‫ذخیره سازی را به ‪ 12‬دیسک ‪ SATA‬میرساند‪ .‬در انتها چون یک گره ذخیره سازی میتواند یک لینک اترنت‬
‫‪1Gbit/Sec‬را اشباع کند‪ ،‬یک ‪ NIC‬اترنت دیگر اضافه شد‪ .‬حداکثر توان مصرفی برای یک گره ذخیرهسازی‬
‫‪ 300‬وات است و در زمان بیکاری ‪ 198‬وات است‪.‬‬

‫نکته اینکه گره ذخیره سازی دو اسالت یک رک را اشغال میکند که این یک دلیل است که گوگل بجای‬
‫‪52000‬سرور ‪ 40000‬سرور استفاده کرده است‪ .‬در این تأسیسات‪ ،‬نرخ حدود دو گره محاسباتی برای هر گره ذخیره‬
‫سازی بود‪ ،‬اما این نرخ در ‪WSC‬های گوگل متغیر است‪ .‬بنابراین‪WSC ،‬ی ‪A‬ی گوگل حدود ‪ 190000‬دیسک در‬
‫‪ 2007‬یا بطور میانگین ‪ 5‬دیسک به ازای هر سرور داشت‪.‬‬

‫شبکه در یک ‪WSC‬ی گوگل‬

‫‪ 40000‬سرور به سه آرایه که هر کدام بیشتر از ‪ 10000‬سرور دارند تقسیم شده است‪( .‬در ترمینولوژی گوگل آرایه‬
‫ها خوشه نامیده میشوند)‪ .‬سوییچ رک ‪-48‬پورت ‪ 40‬پورت را برای اتصال به سرور استفاده میکند و ‪ 8‬آپلینک را‬
‫برای سوییچهای آرایه کنار گذاشته است‪.‬‬

‫سوییچهای آرایه برای پشتیبانی تا ‪ 480‬لینک اترنت ‪ 1Gbit/Sec‬و چند پورت ‪10‬گیگابیت‪/‬ثانیه پیکربندی شدهاند‪.‬‬
‫پورتهای ‪ 1Gbit/Sec‬برای اتصال به سوییچهای رک استفاده میشوند‪ ،‬که هر سوییچ رک یک لینک برای هر‬
‫سوییچ آرایه دارد‪ .‬پورتهای ‪ 10Gbit/sec‬به هر یک از دو روتر دیتاسنتر وصل میشوند‪ ،‬که همه روترهای آرایه‬
‫را به هم پیوسته میکند و اتصال به دنیای بیرونی را برقرار میکند‪ WSC .‬دو روتر دیتاسنتر برای قابلیت اعتماد‬
‫استفاده میکند‪ ،‬بطوریکه یک خطای روتر دیتاسنتر کل ‪ WSC‬را از کار نیاندازد‪.‬‬
‫‪| 557‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫تعداد پورتهای آپ لینک استفاده شده به ازای هر سوییچ رک از حداقل ‪ 2‬تا حداکثر ‪ 8‬تا متغیر است‪ .‬در حالت دو‬
‫پورته‪ ،‬سوییچهای رک با نرخ ‪ 20:1 OverSubscription‬عمل میکنند‪ .‬یعنی پهنای باند شبکه داخل سوییچ‬
‫‪ 20‬برابر پهنای باند خارج سوییچ است‪ .‬کاربردهایی با تقاضاهای ترافیک خیلی زیاد ماورای رک از کارایی پایین‬
‫شبکه رنج میبرند‪ .‬بنابراین‪ ،‬طرح ‪ 8‬پورت آپلینک برای نرخ ‪ OvesrSubscription‬کمتر ‪ 5:1‬برای آرایهها با‬
‫تقاضاهای ترافیک بیشتر استفاده میشوند‪.‬‬

‫مانیتورکردن و تعمیر یک ‪WSC‬ی گوگل‬

‫برای یک اپراتور که مسئول بیشتر از ‪ 1000‬سرور است‪ ،‬نیازمند زیرساخت مانیتورینگ گسترده و مقداری اتوماسیون‬
‫هستیم تا به رخدادهای روتین کمک کند‪.‬‬

‫گوگل نرم افزار مانیتورینگی برای ردیابی سالمت همه سرورها و ابزارهای شبکه گسترش داده است‪ .‬تستهای‬
‫خطایابی در همه زمانها اجرا میشوند‪ .‬وقتیکه یک سیستم خطا میدهد‪ ،‬بسیاری از مشکالت ممکن راهحلهای‬
‫خودکار ساده دارند‪ .‬در این حالت‪ ،‬مرحله بعدی راهاندازی مجدد سیستم و سعی در نصب مجدد اجزای نرمافزار‬
‫میباشد‪ .‬بنابرین‪ ،‬روال اکثر خطاها را مدیریت میکند‪.‬‬

‫ماشینهایی که از مرحله اول خطا میدهند به صف ماشینهایی که باید تعمیر شوند اضافه میشوند‪ .‬تست خطای‬
‫مشکل همراه شماره ماشین خطادار در صف قرار داده میشود‪.‬‬

‫برای مستهلک کردن هزینه تعمیر‪ ،‬ماشینهای خطادار به طور دستهای به تکنیسینهای تعمیرکار فرستاده میشوند‪.‬‬
‫وقتیکه نرمافزار خطایاب در نتیجه تست مطمئن شد‪ ،‬قطعه فوراً جایگزین میشود و پردازه تست دستی را طی‬
‫نمیکند‪ .‬به عنوان مثال‪ ،‬اگر تست بگوید دیسک ‪ 3‬از گره ذخیره بد است‪ ،‬دیسک فوراً تعویض میشود‪ .‬ماشینهای‬
‫خطادار بدون تست یا با اطمینان کم در تست بطور دستی تست میشوند‪.‬‬

‫هدف این است که کمتر از ‪ ٪1‬همه گره ها در هر زمان در صف تعمیر دستی باشند‪ .‬میانگین زمان در صف تعمیر‬
‫یک هفته است‪ ،‬هرچند که زمان کمتری میگیرد تا تکنیسینها آنرا تعمیر کنند‪ .‬تأخیر بیشتر اهمیت توان عملیاتی‬
‫تعمیر را نشان میدهد که بر هزینه عملیات تأثیر میگذارد‪ .‬نکته اینکه تعمیر خودکار در مرحله قبل برای ریبوت‪/‬نصب‬
‫مجدد تا ساعتها برای تست مستقیم و دقیق تا مطمئن شویم ماشین براستی عملیاتی است زمان میگیرد‪.‬‬

‫خالصه‬
‫از ‪ ،2007‬گوگل هماکنون ابداعاتی برای بهبود بازدهی انرژیِ ‪WSC‬هایش ارائه کرده است تا ‪PUE‬ی ‪ 1.23‬را‬
‫در ‪WSC‬ی ‪A‬ی گوگل تحویل دهد‪:‬‬
‫کانون نشر علوم‬ ‫‪| 558‬‬

‫ب ه منظور تهیه قفسه ارزان برای سرورهای ضمیمه‪ ،‬کانتینرهای اصالح شده پلنیومهای هوای سرد و‬ ‫•‬
‫گرم را مجزا کردهاند‪ ،‬که به کاهش تغییر درجه حرارت هوای ورودی برای سرورها کمک میکند‪ .‬اگر‬
‫نقاط داغ کمتری وجود داشته باشند‪ ،‬هوای سرد میتواند با دمای گرمتر تحویل شود‪.‬‬
‫این کانتینرها فاصله حلقه چرخش هوا را کاهش میدهند تا انرژی انتقال هوا کاهش یابد‪.‬‬ ‫•‬
‫سرورهای عملیاتی با دمای باالتر به معنی این است که هوا فقط باید تا ‪27‬درجه سلسیوس خنک شوند‬ ‫•‬
‫نه ‪ 18‬تا ‪ 22‬درجه سلسیوس در سیستمهای سنتی‪.‬‬
‫قرار دادن ‪WSC‬ها در آب و هوای معتدل باعث میشود قسمتی از سال‪ ،‬مادر طبیعت هوا را سرد کند‪.‬‬ ‫•‬
‫گسترش نرمافزار و سختافزار مانیتورینگ برای اندازه گیری ‪PUE‬ی واقعی بازدهی عملیاتی را بهبود‬ ‫•‬
‫میدهد‪.‬‬
‫طراحی مادربوردهایی که فقط نیازمند ‪ 12‬ولت تغذیه هستند یعنی عمل ‪ UPS‬بتواند با باتریهای‬ ‫•‬
‫استاندارد که در هر سرور قرار میگیرند انجام شوند‪ .‬در صورتیکه یک اتاق مجزا برای ‪ UPS‬هزینه‬
‫زیادی دارد و یک منبع ناکارآمدی توزیع توان داخل یک ‪ WSC‬کم میشود‪.‬‬
‫طراحی دقیق بورد سرور به منظور بهبود بازدهی انرژی‪ .‬به عنوان مثال کم کردن ساعت گذرگاه ‪front-‬‬ ‫•‬
‫‪ side‬در این ریزپردازندهها بهرهوری انرژی را کاهش میدهد و تأثیر ناچیزی روی کارایی دارد‪.‬‬

‫طراحی ‪ WSC‬باید در سالهای متوالی بهبود یابد همانطور که گوگل ‪ PUE‬را از ‪ 1.23‬برای ‪WSC‬ی ‪ A‬به‬
‫‪ 1.12‬رساند‪ .‬شاید در آینده هزینه انرژی را با ساخت تجهیزات داخل ‪ WSC‬مدنظر قرار دهیم ‪[chang et‬‬
‫‪al.2010].‬‬
‫‪| 559‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫تمرینات فصل دهم‬


‫‪ -10-1‬یکی از توانمندیهای مهم ‪ WSC‬میزان کافی موازات سطح‪-‬درخواست در مقایسه با موازات سطح‬
‫دستور یا نخ است‪ .‬این پرسش معنی انواع مختلف موازات روی معماری کامپیوتر و طراحی سیستم را بسط میدهد‪.‬‬
‫(الف) سناریوهایی را بحث کنید که بهبود موازات سطح نخ یا دستور منافع بیشتری از موازات سطح درخواست داشته‬
‫باشد‪.‬‬
‫(ب) معنای طراحی نرمافزار موازات سطح درخواست چیست؟‬
‫(ج) معایب افزایش موازات سطح درخواست چیست؟‬

‫‪ -10-2‬وقتی که یک تولید کننده سرویس محاسباتی ابری کارهای ماشینهای مجازی چندگانه (‪( )VM‬مثالً‬
‫‪ )MapReduce‬را دریافت میکند‪ ،‬انتخابهای زمانبندی زیادی وجود دارد‪ VM .‬ها میتوانند به روش روند‪-‬‬
‫رابین زمانبندی شوند تا بین همه پردازندههای قابل دسترس و سرورها منتشر شوند یا میتوانند باهم یکی شوند تا‬
‫پردازندههایی را استفاده کنند‪ .‬با استفاده از این گزینههای زمانبندی‪ ،‬اگر یک کار با ‪ VM 24‬عرضه شود و ‪30‬‬
‫پردازنده در ابری قابل دسترس باشد (که هر کدام قادر به اجرای حداکثر ‪ VM 3‬باشد)‪ ،‬روند رابین ‪ 24‬پردازنده‬
‫استفاده خواهد کرد‪ ،‬در حالیکه زمانبندی یکی کننده ‪ 8‬پردازنده استفاده میکند‪ .‬زمانبند همچنین میتواند هستههای‬
‫پردازنده قابل دسترس در ردههای مختلف را استفاده کند‪ :‬سوکت‪ ،‬سرور رک‪ ،‬و آرایهای از رکها‪.‬‬
‫(الف) فرض کنید که همه کارهای پیشنهاد شده همه بارکاریهای محاسباتی سنگین با نیازهای پهنای باند حافظه‬
‫مختلف هستند‪ ،‬مزایا و معایب روند‪-‬رابین در مقایسه با زمانبندی یکی کننده برحسب توان‪ ،‬هزینههای خنک سازی‪،‬‬
‫کارایی و قابلیت اطمینان چیست؟‬
‫(ب) فرض کنید که کارهای پیشنهاد شده همه کارهای بارکاری ‪-I/O‬سنگین باشند‪ ،‬مزایا و معایب روند‪-‬رابین در‬
‫مقایسه با زمانبندی یکی کننده در ردههای مختلف چیست؟‬
‫(ج) فرض کنید که کارهای پیشنهاد شده همه کارهای بارکاری شبکه‪-‬سنگین باشند‪ ،‬موافقین و مخالفین روند‪-‬‬
‫رابین در مقایسه با زمانبندی یکی کننده در ردههای مختلف چیست؟‬

‫‪ MapReduce -10-3‬مقدار زیادی موازات با داشتن کارهای داده‪-‬مستقل اجرا شده در گرههای مختلف را‬
‫توانا میکند‪ ،‬اما محدودیتهایی در سطوح موازات وجود دارند‪ .‬به عنوان مثال‪ ،‬برای افزونگی‪MapReduce ،‬‬
‫بلوکهای داده را در چندین گره خواهد نوشت که دیسک و پهنای باند شبکه را مصرف میکند‪ .‬یک دیتاست کلی‬
‫با اندازه ‪ ،300GB‬پهنای باند شبکهی ‪1‬گیگابیت‪/‬ثانیه‪ ،‬نرخ ‪ ،10 sec/GB map‬و نرخ ‪20 sec/GB‬‬
‫‪reduce‬را مدنظر بگیرید‪ .‬همچنین فرض کنید که ‪ ٪30‬دادهها باید از گرههای دور خوانده شوند‪ ،‬و هر فایل‬
‫خروجی به خاطر افزونگی در دو گره دیگر نیز نوشته میشود‪ .‬شکل‪ 4-10‬را برای سایر پارامترها استفاده کنید‪.‬‬
‫(الف) فرض کنید که همه گرهها در رک مشابهی باشند‪ .‬زمان اجرای مورد انتظار با ‪ 5‬گره چیست؟ ‪ 10‬گره؟ ‪100‬‬
‫گره؟ ‪ 1000‬گره؟ گلوگاه را در هر اندازه گره بحث کنید‪.‬‬
‫(ب) فرض کنید هر رک ‪ 40‬گره دارد و هر خواندن‪/‬نوشتن دور شانس برابری برای رفتن به هر گره داشته باشند‪.‬‬
‫زمان اجرای مورد انتظار برای ‪ 100‬گره چیست؟ ‪ 100‬گره؟‬
‫کانون نشر علوم‬ ‫‪| 560‬‬

‫(ج) یک مالحظه مهم حداقل کردن انتقال داده تا حد ممکن است‪ .‬برای اینکه کاهش قابل توجهی از دسترسیهای‬
‫محلی تا رک تا آرایه بدست آید‪ ،‬نرم افزار باید قویاً برای حداکثر کردن محلیت بهینه شود‪ .‬فرض کنید که ‪ 40‬گره‬
‫به ازای هر رک وجود دارد‪ ،‬و ‪ 1000‬گره در کار ‪ MapReduce‬استفاده شود‪ .‬اگر دسترسیهای دور داخل یک‬
‫رک مشابه ‪ ٪20‬اوقات باشد زمان اجرا چقدر است؟ ‪ ٪50‬زمان؟ ‪ ٪80‬زمان؟‬
‫(د)با برنامه ‪ MapReduce‬ساده در بخش ‪ ، 2-10‬بهینهسازیهای ممکن برای حداکثر کردن محلیت بارکاری‬
‫را بحث کنید‪.‬‬

‫‪ -10-4‬برنامهنویسان ‪ WSC‬اغلب تکرار داده را برای غلبه بر خطاها در نرمافزار استفاده میکنند‪ .‬به عنوان مثال‪،‬‬
‫‪ Hadoop HDFS‬تکرار سه‪-‬راهه ( یک کپی محلی‪ ،‬یک کپی دور در رک‪ ،‬و یک کپی دور در یک رک مجزا)‬
‫استخدام میکند‪.‬‬
‫(الف) یک تحقیق جهانی ‪ 2010‬نشان داد که بیشتر از نصف خوشههای ‪ 10 Hadoop‬گره یا کمتر دارند‪ ،‬با اندازه‬
‫دیتاست ‪ 10TB‬یا کمتر‪ .‬با استفاده از فرکانس خطای داده در شکل ‪ ،1-10‬چه نوع دسترسپذیری یک خوشه‬
‫‪ 10 Hadoop‬گرهه با تکرار یک‪ ،-‬دو‪-‬و سه‪-‬راهه دارد؟‬
‫(ب) با استفاده از فرکانس خطای داده در شکل ‪ ،1-10‬و خوشه ‪-100‬گرهه چه نوع دسترسپذیری یک خوشه‬
‫‪ 10 Hadoop‬گرهه با تکرار یک‪ ،-‬دو‪-‬و سه‪-‬راهه دارد؟‬
‫(ج) سربار نسبی تکرار با مقدار داده نوشته شده به ازای هر ساعت محاسبه محلی تغییر میکند‪ .‬مقدار ترافیک ‪I/O‬‬
‫اضافی و ترافیک شبکه (بین و در طول رک) برای یک کار ‪-1000 Hadoop‬گرهه که ‪ 1PB‬از داده را مرتب‬
‫میکند را محاسبه کنید‪ ،‬نتایج میانی برای بهم آمیختن دادههای نوشته شده در ‪ HDFS‬کجا هستند؟‬

‫‪ -10-5‬سلسله مراتب حافظه‪ :‬ذخیره کردن در حافظه نهان بطور گسترده در بعضی طرحهای ‪ WSC‬به‬
‫منظور کاهش تأخیر استفاده می شود‪ ،‬و چندین گزینه ذخیره کردن در حافظه نهان برای برآوردن تغییر الگوهای‬
‫دسترسیها و نیازها وجود دارد‪.‬‬
‫(الف) اجازه دهید انتخابهای طراحی برای استریم مدیای غنی‪ 1‬از وب را مد نظر قرار دهیم (مثالً ‪ .)Netflix‬اوالّ‬
‫ما نیازمند تخمین تعداد فیلمها‪ ،‬تعداد فرمتهای انکد برای هر فیلم و کاربرانی که بطور همزمان آنرا میبینند‬
‫داریم‪ .‬در ‪ 12000 Netflix ، 2010‬عنوان برای استریمهای آنالین داشت‪ ،‬هر عنوان حداقل چهار فرمت انکد‬
‫داشت (در ‪ ،1600 ،1000 ،500‬و ‪ .)Kbps2200‬فرض کنید که ‪ 100000‬بیننده همزمان برای کل سایت وجود‬
‫دارد‪ ،‬و بطور میانگین هر فیلم ‪ 1‬ساعت طول میکشد‪ .‬کل ظرفیت حافظه‪ ،‬پهنای باند ‪ I/O‬و شبکه‪ ،‬و نیازهای‬
‫محاسباتی مرتبط‪ -‬با استریم ویدئو را تخمین بزنید‪.‬‬
‫(ب) الگوهای دس ترسی و خواص مراجعات محلی به ازای هر کاربر‪ ،‬فیلم‪ ،‬و در طول کل فیلمها چقدر است؟‬
‫(راهنمایی‪ :‬تصادفی در مقایسه با ترتیبی‪ ،‬محلیت مکانی و زمانی خوب یا ضعیف‪ ،‬اندازه مجموعه کاری بزرگ در‬
‫مقایسه با نسبتاُ کوچک‪).‬‬

‫‪1‬‬
‫‪Streaming rich media‬‬
‫‪| 561‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫(ج) چه گزینههای ذخیرهسازی با استفاده از ‪ SSD ،DRAM‬و دیسکهای سخت وجود دارد؟ آنها را بر اساس‬
‫کارایی مقایسه کنید‪.‬‬

‫‪ -10-6‬شبکه دیتاسنتر‪ MapReduce :‬و ‪ WSC‬ترکیب قدرتمندی برای انجام پردازش داده در مقیاس‬
‫بزرگ هستند‪ :‬به عنوان مثال‪ ،‬گوگل در ‪ 2008‬یک پتابایت رکورد را در کمتر از ‪ 6‬ساعت با استفاده از ‪ 4000‬سرور‬
‫و ‪ 48000‬درایو سخت ذخیره کرد‪.‬‬
‫(الف) پهنای باند دیسک را از جدول ‪ 1-10‬و متنهای مرتبط استنتاج کنید‪ .‬چند ثانیه طول میکشد تا داده از حافظه‬
‫اصلی خوانده و نتایج ذخیره شده نوشته شود؟‬
‫(ب) فرض کنید که هر سرور دو رابط شبکه اترنت ‪ 1GB/sec‬دارد و زیرساخت سویچ ‪ WSC‬با ضریب ‪4‬‬
‫‪ oversubscribe‬شده است‪ ،‬چند ثانیه طول میکشد تا کل دیتاست در سرتاسر ‪ 4000‬سرور حرکت کند؟‬
‫(ج) فرض کنید انتقال شبکه گلوگاه کارایی برای مرتب سازی پتابایت باشد‪ ،‬میتوانید نرخ‬
‫‪oversubscription‬ی که گوگل در دیتاسنترش دارد را تخمین بزنید؟‬
‫(د) حال فرض کنید اترنت ‪ 10Gb/Sec‬بدون ‪ oversubscription‬داریم‪ -‬به عنوان مثال ‪-48‬پورت اترنت‬
‫‪ .10Gb/Sec‬چقدر طول میکشد تا یک پتا بایت از داده بُر بخورد؟‬
‫(ه) دو روش زیر را مقایسه کنید‪ )1( :‬روش مقیاس انبوه با نرخ ‪ subscription‬باال و (‪ )2‬یک سیستم با مقیاس‬
‫نسبتاً کم با پهنای باند شبکه باال‪ .‬پتانسیل گلوگاههای آنها چیست؟ مزایا و معایب آنها براساس مقیاس پذیری و‬
‫‪ TCO1‬چیست؟‬
‫(ز) مرتب سازی و بسیاری از بارکاریهای محاسبات علمی مهم از لحاظ ارتباطی سنگین هستند‪ ،‬در حالیکه بسیاری‬
‫از بارکاریهای دیگر نیستند‪ .‬سه بارکاری نام ببرید که از شبکه سرعت‪-‬باال سود نمیبرد‪ .‬چه نمونههای ‪ EC2‬شما‬
‫برای استفاده در این دو کالس بار کاری پیشنهاد میکنید؟‬

‫‪ -10-7‬در بخش ‪ 7-10‬استفاده از منابع باتری به ازای‪-‬هر سرور در طرح گوگل بحث شد‪ .‬اجازه دهید نتایج‬
‫این طرح را آنالیز کنیم‪.‬‬
‫(الف) فرض کنید که استفاده از یک باتری به عنوان یک ‪ UPS‬سطح‪-‬سرور‪-‬مینی ‪ %99.99‬بازدهی دارد و نیاز‬
‫به یک ‪ UPS‬در پهنای‪-‬تأسیسات را که فقط ‪ ٪92‬بازدهی دارد حذف میکند‪ .‬فرض کنید که سوییچهای ایستگاهای‬
‫فرعی ‪ %99.7‬بازدهی داشته باشند و بازدهی برای ‪ ،PDU‬مراحل کم کردن ولتاژ‪ ،2‬و سایر تقسیمات الکتریکی‬
‫به ترتیب ‪ ٪98 ،٪98‬و ‪ ٪99‬بازدهی داشته باشند‪ .‬بهبود بازدهی زیرساخت توان کلی را با استفاده از پشتیبانی باتری‬
‫به ازای هر سرور محاسبه کنید‪.‬‬
‫(ب) چه موقع هزینه روش باتری به ازای هر سرور با ‪ UPS‬کلی در سطح تأسیسات برابری میکند؟ (سود و زیانی‬
‫ندارد)‬

‫‪1‬‬
‫‪Total cost of ownership‬‬
‫‪2‬‬
‫‪Step-down stages‬‬
‫کانون نشر علوم‬ ‫‪| 562‬‬

‫‪ -10-8‬همانطور که در این فصل بحث شد‪ ،‬تجهیزات خنک سازی در ‪ WSC‬خودشان میتوانند انرژی زیادی‬
‫مصرف کنند‪ .‬هزینههای خنک سازی میتواند با مدیریت توان کاهش داده شوند‪ .‬جایابی بارکاری اگاه‪-‬دما یک‬
‫بهینه سازی است که برای مدیریت دما به منظور کاهش هزینههای خنک سازی پیشنهاد شده است‪ .‬ایده تعیین‬
‫مشخصه خنک سازیِ یک اتاق داده شده و نگاشت سیستمهای گرمتر برای نقاط داغتر میباشد‪ ،‬بطوریکه در سطح‬
‫‪ WSC‬نیازهای خنک سازی کلی کاهش داده میشوند‪.‬‬
‫(الف) ضریب کارایی (‪)COP‬ی یک واحد ‪ CRAC‬به عنوان نرخ گرمای حذف شده (‪ )Q‬به مقدار کار الزم (‪)W‬‬
‫برای حذف گرما تعریف میشود‪COP .‬ی یک واحد ‪ CRAC‬با دمای هوایی که واحد ‪ CRAC‬به داخل پلنیوم پوش‬
‫میکند افزایش مییابد‪ .‬اگر هوای بازگشتی از واحد ‪ CRAC‬با ‪ 20‬درجه سلسیوس باشد و ما ‪ 10KW‬گرما را با‬
‫‪COP‬ی ‪ 1.9‬حذف کنیم‪ ،‬چه میزان انرژی در واحد ‪ CRAC‬صرف میکنیم؟ اگر خنک کردن حجم مشابهی از هوا‬
‫با ‪ 25‬درجه سلسیوس ‪COP‬ی ‪ 3.1‬بگیرد‪ ،‬اکنون چه میزان انرژی ما در واحد ‪ CRAC‬صرف میکنیم؟‬
‫(ب) یک الگوریتم توزیع بارکاری را در نظر بگیرید که قادر به انطباق بارکاریهای داغ با نقاط سرد است تا به واحد‬
‫‪ CRAC‬اجازه دهد با دمای باالتری کار کند تا بازدهی خنک سازی را بهبود دهد‪ .‬صرفهجویی توان بین دو حالت‬
‫توصیف شده در فوق چیست؟‬
‫(ج) در مقیاس سیستمهای ‪ ،WSC‬مدیریت توان میتواند یک مسأله پیچیده و چندوجهه باشد‪ .‬بهینهسازیها برای‬
‫بهبود بازدهی انرژی می تواند در سخت افزار و در نرم افزار‪ ،‬در سطح سیستم و در سطح خوشه برای تجهیزات ‪IT‬‬
‫یا تجهیزات خنک سازی و غیره پیاده سازی شود‪ .‬مهم است تا این محاورهها را وقتیکه راهحل کلی بازدهی انرژی‬
‫برای ‪ WSC‬طراحی میکنید مدنظر قرار دهید‪ .‬یک الگوریتم یکی ساز را در نظر بگیرید که به بهرهوری سرور نگاه‬
‫میکند و کالسهای بارکاری مختلف را روی سرور مشابهی یکی میکند تا بهرهوری سرور را افزایش دهد (این‬
‫می تواند بطور بالقوه عملکرد سرور را با بازدهی انرژی باالتری داشته باشد اگر سیستم تناسب انرژی نداشته باشد)‪.‬‬
‫چگونه این بهینه سازی با یک الگوریتم همروند که سعی در استفاده از وضعیتهای توان مختلف دارد محاوره‬
‫میکند؟ مثالهای دیگری مطرح کنید که چند بهینه سازی میتوانند با دیگری در یک ‪ WSC‬تداخل کنند‪ .‬شما‬
‫چگونه این مشکل را حل میکنید؟‬

‫‪ -10-9‬جدول ‪ 1-10‬لیستی از قطعیها در یک آرایه از سرورها میباشد‪ .‬وقتیکه با مقیاس بزرگی از ‪WSC‬ها‬
‫سروکار دارید‪ ،‬مهم است تا طرح خوشه را با معماریهای نرمافزاری باالنس کنید تا به زمان فعالیت مود نیاز‪ 1‬برسید‬
‫بدون اینکه موجب افزایش هزینه زیادی شوید‪ .‬این سؤال معنی رسیدن به قابلیت دسترس فقط از طریق سختافزار‬
‫را بسط میدهد‪.‬‬
‫(الف) فرض کنید که یک اپراتور عالقه به رسیدن ‪ ٪95‬دسترسپذیری از طریق فقط بهبود سخت افزار سرور دارد‪،‬‬
‫چه تعداد رخداد از هر نوع باید کاهش یابد؟ فرض کنید که خرابیهای سرور تکی بطور کامل از طریق ماشینهای‬
‫افزونه مدیریت میشود؟‬

‫‪1‬‬
‫یک دوره زمانى که تجهیزات ‪ .‬پریود زمانى که در طول ان یک سیستم کامپیوتر فعال است یا صحیح عمل مى کند‪Uptime:‬‬
‫بدون خرابى کار مى کنند‬
‫‪| 563‬‬ ‫فصل دهم‪ :‬کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح‪-‬درخواست و سطح‪-‬داده‬

‫(ب) پاسخ به قسمت (الف) چقدر تغییر میکند اگر خرابیهای سرویس تکی توسط افزونگی ‪ ٪50‬اوقات مدیریت‬
‫شود؟ ‪ ٪20‬اوقات؟ هیچ زمانی؟‬
‫(ج) اهمیت افزونگی نرمافزاری برای رسیدن به سطح باالیی از دسترسپذیری را بحث کنید‪ .‬اگر یک اپراتور ‪WSC‬‬
‫خرید ماشینهایی که ارزانترند اما ‪ ٪10‬قابلیت اطمینان کمتری دارند را مد نظر قرار دهد‪ ،‬چه استلزاماتی را باید‬
‫روی معماری نرمافزار داشته باشد؟ چالشهای مرتبط با افزونگی نرمافزار چیست؟‬

‫‪ -10-10‬هزینه فعلی استاندارد ‪ DDR3 DRAM‬در مقایسه با ‪DDR3 DRAM‬ی که کد تصحیح خطا‬
‫(‪ ) ECC‬دارد را مقایسه کنید‪ .‬افزایش هزینه به ازای هر بیت برای رسیدن به قابلیت اطمینان بیشتر که ‪ ECC‬تهیه‬
‫میکند چقدر است؟‬

‫‪ -10-11‬قابلیت اطمینان ‪ WSC‬و مفاهیم مدیریت‬


‫(الف) یک خوشه از سرورها را در نظر بگیرید که هر کدام ‪ 2000$‬هزینه دارند‪ .‬نرخ خطای ‪ ٪5‬ساالنه‪ ،‬میانگین‬
‫یک ساعت زمان سرویس برای تعمیر‪ ،‬و قطعات جایگزین نیازمند ‪ ٪10‬هزینه سیستم به ازای هر خطا را مد نظر‬
‫قرار دهید‪ ،‬هزینه نگهداری به ازای هر سرور چقدر است؟ نرخ ساعتی ‪100‬دالر در ساعت برای یک تکنیسین‬
‫سرویس در نظر بگیرید‪.‬‬
‫(ب) تفاوت بین این مدل مدیریت با مدیریت داخل یک دیتاسنتر تجاری سنتی با تعداد زیادی کاربرد با اندازه متوسط‬
‫که هر کدام روی زیرساخت سختافزاری خصوصیش اجرا میشود چیست؟‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫فصل یازدهم ‪-‬مقدمه ای بر محاسبات گرید‬
‫در این فصل محاسبات گرید را معرفی میکنیم و کاربردها و اهداف این شبکهها و معماری آنها را بررسی خواهیم‬
‫کرد و در انتها چند نمونه پروژه جهانی انجام شده بر حسب گرید را معرفی میکنیم‪.‬‬

‫‪ -1-11‬مقدمه‬
‫در چند سال اخیر‪ ،‬تعداد بسیاری از محققین‪ ،‬دست به مطالعه علمی و عملی جهت اتصال منابعی که به لحاظ‬
‫جغرافیایی توزیع شده هستند زدهاند‪ ،‬تا با اتصال این منابع به یکدیگر یک محیط پردازشی مجازی بسیار بزرگ پدید‬
‫آید به طوری که این اتصال و بستر زیرین‪ ،‬همانند یک سیستم تکی ولی بسیار قدرتمند به لحاظ توان پردازشی و‬
‫ظرفیت ذخیره سازی به نظر آید‪ .‬در چنین شِمایی‪ ،‬در واقع ممکن است طیف گستردهای از منابع محاسباتی از چند‬
‫پردازندهها تا خوشه های قدرتمند و حتی کامپیوترهای شخصی به یکدیگر متصل شوند‪ .‬به این رهیافت جدید‪،‬‬
‫نامهای گوناگونی همانند‪،Global Computing ،Scalable Computing ،Meta Computing :‬‬
‫‪ Internet Computing‬و اخیراً ‪ Grid Computing‬داده شده است‪.‬‬
‫در حقیقت‪ ،‬اینترنت‪ ،‬بستری را برای اتصال کامپیوترهای نامتجانس سراسر دنیا به یکدیگر مهیا کرد‪ .‬فنآوری وب‬
‫جهانی‪ ،‬تالشی بود برای ساخت یک بستر اطالعاتی برروی اینترنت‪ .‬اکنون محاسبات گرید‪ ،‬هدف ساخت یک بستر‬
‫محاسباتی‪ ،‬اطالعاتی و ارتباطی بر روی اینترنت را دنبال میکند‪ .‬اینترنت و وب این امکان را به ما دادهاند که به‬
‫تمامی اطالعات در سراسر جهان در هر لحظه که بخواهیم به طور نامحدود و به سهولت دست پیدا کنیم‪ ،‬گرید این‬
‫امکان را به ما میدهد که نه تنها به اطالعات (و منابع اطالعاتی) بلکه به طور کل به هر منبعی که بخواهیم به‬
‫طور نامحدود دست پیدا کنیم و باالخص به منابع محاسباتی‪ .‬درست همانند شبکه‪ 1‬برق شهری که هر موقع که‬
‫توان الکتریسیته نامحدود می خواهیم کافی است دو شاخه دستگاه را به پریز برق شهر متصل کنیم‪ ،‬گرید هم این‬
‫امکان را می دهد که هر موقع توان محاسباتی نامحدود بخواهیم‪ ،‬بتوانیم از قدرت محاسباتی تمام ماشینهای‬
‫پردازشگر سراسر دنیا استفاده کنیم‪ .‬به عبارت بهتر از کلیه ماشینهای جهان‪ ،‬برنامههای کاربردی‪ ،‬دادهها و اطالعات‪،‬‬
‫دستگاههای ذخیره سازی و حتی دستگاههای خاصی که به آنها نیاز داریم‪ ،‬بتوانیم استفاده مستقیم کنیم‪.‬‬

‫محاسبات در واقع یک فنآوری است‪ .‬هر فنآوری از دو بخش تشکیل شده است‪ :‬بخش اول‪ ،‬اصول و مفاهیم و‬
‫تئوریها و روشها را شامل می شود و بخش دیگر کاربردهای مختلف آن فنآوری در زمینههای گوناگون است‪.‬‬
‫محاسبات گرید‪ 2‬نیز یک فنآوری است و از این قاعده مستثنی نیست‪ .‬در این بخش اصول‪ ،‬تئوریها و مفاهیم کلی‬
‫فن آوری محاسبات گرید از یک سو و از سوی دیگر‪ ،‬کاربردهای مختلف که برای این فنآوری وجود دارند بررسی‬
‫خواهند شد‪.‬‬

‫محاسبات گرید‪ ،‬یک فنآوری جدید است که با استفاده از زیرساختهای ارتباطی و شبکههای کامپیوتری و نیز با‬
‫بکارگیری حد اعالی مفاهیم و امکانات سیستمهای توزیع شده‪ ،‬به ما امکان دسترسی به انواع مختلف منابع را به‬

‫‪1‬‬
‫‪Grid‬‬
‫‪2‬‬
‫‪Grid Computing‬‬
‫کانون نشر علوم‬ ‫‪| 566‬‬

‫صورت راه دور میدهد‪ .‬امروزه میتوان با استفاده از فنآوری گرید‪ ،‬منابع محاسباتی ناهمگون را به یکدیگر متصل‬
‫کرد طوری که کل این ساختار همانند یک ماشین مجازی یکپارچه و تکی به نظر کاربر بیاید و سپس برنامههای‬
‫کاربردی بسیار پیچیده و بزرگ را که به توان پردازشی بسیار باال و حجم عظیمی از دادههای ورودی نیاز دارند‪ ،‬بر‬
‫روی این ماشین مجازی اجرا کرد‪ .‬به طور مثال با استفاده از این فنآوری میتوان چندین ابررایانه‪ ،‬خوشه و کامپیوتر‬
‫خانگی‪ ،‬همگی را به یکدیگر متصل کرد‪ .‬پس در حالت کلی‪ ،‬یک گرید میتواند طیف وسیعی از منابع ناهمگون را‬
‫در برگیرد‪ .‬اما باید دانست منظور از منابع‪ ،‬صرفاً منابع محاسباتی ناهمگون (مانند کامپیوترهای خانگی‪ ،‬ابررایانهها‪،‬‬
‫خوشهها و ‪ )...‬نیست‪ ،‬بلکه دستگاههای ذخیره سازی داده‪ ،‬بانکهای اطالعاتی‪ ،‬نرم افزارها‪ License ،‬های‬
‫نرمافزاری‪ ،‬همه و همه جزء منابعی محسوب می شوند که گرید امکان به اشتراک گذاردن و استفاده راه دور از آنها‬
‫را به طریقی کامالً مدیریت شده‪ ،‬هماهنگ و امن فراهم میسازد‪ .‬جالب است بدانید حتی دستگاههای خاص منظوره‬
‫نیز میتوانند تحت پوشش گرید و به عنوان یکی از منابع آن‪ ،‬مورد بهرهبرداری قرارگیرند‪ .‬به طور مثال از یک چاپگر‬
‫لیزری عادی گرفته تا تلسکوپهای رادیویی‪ ،‬میکروسکوپهای الکترونی گران قیمت‪ ،‬ماهوارهها‪ ،‬دوربینهای‬
‫مداربسته و حتی یک سنسور حرارتی بسیار کوچک میتوانند تحت پوشش گرید قرارگیرند‪ .‬نکته جالب دیگر‪ ،‬این‬
‫است که این منابع از لحاظ جغرافیایی ممکن است در هر نقطهای از جهان قرار گرفته باشند‪ .‬گرید‪ ،‬طبق تعریف‬
‫هیچ محدودیتی از لحاظ محدوده جغرافیایی منابع تحت پوشش ندارد‪ .‬ممکن است یک سنسور پنج میلیمتری در‬
‫سنگاپور و یک ابررایانه غول پیکر در تگزاس آمریکا و یک کامپیوتر خانگی در شهر ملبورن در استرالیا همگی تحت‬
‫پوشش یک گرید واحد باشند و در نتیجه میتوان برنامهای نوشت که از هر سه آنها همزمان استفاده مستقیم کند‪.‬‬
‫از طرف دیگر‪ ،‬هر کدام از این منابع ممکن است متعلق به نهادها و سازمانها و اشخاص مختلف باشند که طبق‬
‫سیاستهای تعیین شده از سمت صاحبان آنها‪ ،‬قابل بهره برداری در گرید هستند (و مالکان آنها ممکن است برای‬
‫استفاده از آنها‪ ،‬هزینههایی را دریافت کنند)‪.‬‬

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

‫از طرف دیگر‪ ،‬گرید‪ ،‬تشریک مساعی و همکاری سازمانهای مختلف در سراسر دنیا در زمینه پروژههای مشترک را‬
‫امکان پذیر می سازد و بستری بسیار مناسب جهت به تحقق پیوستن سازمانهای مجازی پویا‪ 1‬ایجاد مینماید‪.‬‬
‫منظور از سازمان مجازی پویا سازمانی است که مرز جغرافیایی ندارد و ممکن است کاربرانی از سراسر دنیا کارمندان‬
‫آن باشند که از راه دور با یکدیگر در جهت اهداف مشترک آن سازمان کار تیمی انجام میدهند و با یکدیگر تعامل‬

‫‪1‬‬
‫‪Dynamic Virtual Organization‬‬
‫‪| 567‬‬ ‫مقدمهای بر محاسبات گرید‬

‫دارند و میتوانند از طریق فنآوری گرید‪ ،‬از کلیه منابع سازمان (ماشینها‪ ،‬اطالعات‪ ،‬برنامههای کاربردی‪license ،‬‬
‫های نرمافزاری‪ ،‬دستگاههای ذخیره سازی‪ ،‬دستگاههای خاص و ‪ )...‬طبق سیاستهای سازمان‪ ،‬در جهت انجام‬
‫پروژههای سازمان به صورت مشترک بهرهبرداری کنند‪.‬‬

‫‪ -2-11‬مفاهیم کلیدی سیستم های توزیع شده‬

‫چنانچه بخواهیم درک درستی از سیستمهای گرید داشته باشیم‪ ،‬به این دلیل که این سیستمها شکل خاصی از‬
‫سیستم های توزیع شده اما با خصوصیات و ملزومات و اهداف خاص خود هستند‪ ،‬الزم است در ابتدا با مفاهیم پایه‬
‫ای و اصول کلیدی سیستمهای توزیع شده آشنایی کاملی پیدا کنیم‪.‬‬

‫«یک سیستم توزیع شده‪ ،‬مجموعهای از کامپیوترهای مستقل است که برای کاربرانش به صورت یک سیستم‬
‫منسجم واحد‪ 1‬به نظر می آید‪[Tanenbaum-DS-2002] ».‬‬

‫هر مجموعه ای متشکل از چند کامپیوتر متصل به هم‪ ،‬برای اینکه بتواند به عنوان یک سیستم توزیع شده تلقی‬
‫گردد‪ ،‬باید دو نیازمندی را برآورده سازد‪ :‬شرط اول‪ ،‬خود مختاری‪ 2‬و استقالل کامپیوترهاست و شرط دوم‪ ،‬مفهومی‬
‫است که ما آن را شفافیت توزیع‪ 3‬می نامیم‪.‬‬

‫تمامی کامپیوترهایی که سخت افزار زیرین یک سیستم توزیع شده را شکل می دهند‪ ،‬باید از یکدیگر مستقل باشند‪،‬‬
‫به این معنا که آنها باید خود مختار باشند‪ .‬اگر خود مختاری و استقالل این کامپیوترها حفظ نشود‪ ،‬کل سیستم‬
‫نمیتواند به عنوان یک سیستم توزیع شده تلقی گردد‪.‬‬

‫نیازمندی دوم (که بسیار مهمتر از نیازمندی اول است) این است که کل سیستم برای کاربرانش به صورت یک‬
‫سیستم تکی‪ 4‬و منسجم و واحد به نظر برسد؛ به این معنا که کاربران در هنگام کار با یک سیستم توزیع شده (که‬
‫مت شکل از چندین کامپیوتر به هم متصل است) باید فکر کنند که در حال کار با یک کامپیوتر تکی هستند (ولی‬
‫احتماالً با قدرت پردازشی و ذخیرهسازی اطالعات بسیار بیشتر از یک سیستم کامپیوتری تکی)‪.‬‬

‫شفافیت (پنهان سازی) توزیع‪ ،‬یک هدف و نیت مهم و حیاتی برای هر سیستم توزیع شده است و به معنای پنهان‬
‫کردن این حقیقت است که پردازش ها و منابع یک سیستم توزیع شده‪ ،‬به صورت فیزیکی برروی چندین کامپیوتر‬
‫قرار دارند‪ .‬کاربر باید کل سیستم را به صورت یک سیستم تکی و یکپارچه ببیند و از آن استفاده کند‪ .‬شفافیت توزیع‪،‬‬
‫جنبههای گوناگونی را در برمیگیرد و در حقیقت انواع مختلفی از شفافیت در سیستمهای توزیع شده مطرح است‪.‬‬
‫جدول ‪ 1-11‬لیستی از آنها را نمایش می دهد‪:‬‬

‫‪1‬‬
‫‪Single coherent system‬‬
‫‪2‬‬
‫‪Autonomy‬‬
‫‪3‬‬
‫‪Distribution Transparency‬‬
‫‪4‬‬
‫–تنها یک عدد کامپیوتر نه مجموعهای از چندین کامپیوتر ‪Single.‬‬
‫کانون نشر علوم‬ ‫‪| 568‬‬

‫مفهوم‬ ‫نوع شفافیت‬

‫پنهان کردن تفاوتهای میان کامپیوترهای مختلف در نگهداری و نمایش داده‪ 1‬و اینکه یک‬
‫‪Access‬‬
‫منبع چگونه قابل دستیابی است‪.‬‬

‫پنهان کردن اینکه یک منبع (به صورت فیزیکی) در کجا قرار دارد‪.‬‬ ‫‪Location‬‬
‫پنهان کردن اینکه یک منبع ممکن است از محلی به محل دیگر تغییر مکان بدهد‪.‬‬ ‫‪Migration‬‬
‫پنهان کردن اینکه یک منبع ممکن است در حالیکه دارد از آن استفاده می شود تغییر مکان‬
‫‪Relocation‬‬
‫بدهد‪.‬‬
‫پنهان کردن این نکته که آیا یک منبع (نرم افزاری) در حافظه اصلی قرار دارد یا بر روی‬
‫‪Persistence‬‬
‫دیسک‪.‬‬
‫پنهان کردن اینکه یک منبع ممکن است تکرار شده باشد (به طور مثال برای افزایش دسترسی‬ ‫‪Replication‬‬
‫)‪ .‬پذیری و باال بردن تحمل پذیری در مقابل خطا‬ ‫(تکرار)‬
‫پنهان کردن اینکه یک منبع ممکن است میان چندین کاربر که به صورت همزمان از آن‬
‫‪Concurrency‬‬
‫(در حقیقت کاری کنیم که کاربر متوجه نشود استفاده میکنند‪ ،‬به اشتراک گذاشته شود‬
‫(همروندی)‬
‫دیگران در همین لحظه مشغول کار با این منبع هستنند)‪.‬‬
‫‪.‬پنهان کردن از کار افتادن منابع و همین طور برطرف شدن خرابی آنها‬ ‫‪Failure‬‬
‫جدول ‪ 1-11‬انواع مختلف شفافیت در سیستمهای توزیع شده‬
‫جمعبندی مطلب راجع به شفافیتها‪ :‬در بخش قبل انواع شفافیتها در سیستمهای توزیع شده شرح داده‬
‫شدند‪ ،‬اما ذکر چند نکته تکمیلی در خاتمه بحث کامالً ضروری به نظر می رسد‪.‬‬

‫‪ -1‬پیاده سازی شفافیتها در سیستمهای توزیع شده دارای حالتهای متفاوت است‪ .‬این طور نیست که یک سیستم‬
‫توزیع شده باید لزوماً تمامی شفافیت های یاد شده را پشتیبانی و پیاده سازی کند تا سیستم توزیع شده تلقی گردد‪،‬‬
‫بلکه هر سیستم توزیع شده‪ ،‬معموالً بخشی از این شفافیتها را ارائه میدهد و سیستم توزیع شدهای که بتواند تمام‬
‫شفافیت های یاد شده را آن هم در حد اعالی خود ارائه دهد‪ ،‬به دلیل مشکالت و پیچیدگی بسیار زیادی که برای‬
‫این کار وجود دارد‪ ،‬تا کنون پیاده سازی نشده و خیلی ایدهآل به نظر میرسد‪.‬‬

‫‪ -2‬بدون شک داشتن شفافیت توزیع بر نداشتن آن ترجیح داده میشود اما همیشه یک مصالحه میان درجه باالیی‬
‫از شفافیت با کارایی کلی سیستم وجود دارد‪ .‬در بسیاری موارد‪ ،‬اگر بخواهیم همه چیز را‪ ،‬کورکورانه و بدون در نظر‬
‫گرفتن تمامی جوانب کار از دید کاربر پنهان کنیم‪ ،‬ممکن است کارایی سیستم به طرز شدیدی کاهش یابد‪.‬‬

‫به طور مثال‪ ،‬بسیاری از مرورگرهای وب‪ ،‬وقتی کاربر دستور اتصال به وبسایت را میدهد ولی پاسخی از سمت‬
‫وبسایت نمیآید‪ ،‬چندین بار دوباره سعی میکنند تا درنهایت اگر ارتباط برقرار نشد‪ ،‬پیغام مناسب مبنی بر عدم‬
‫برقراری ارتباط با وبسایت را به کاربر نشان دهند‪ .‬نتیجتاً‪ ،‬تالش برای اینکه یک عدم برقراری اتصال با وبسایت‬
‫‪| 569‬‬ ‫مقدمهای بر محاسبات گرید‬

‫را قبل از سعی مجدد آن از دید کاربر پنهان کنیم‪ ،‬منجر به کُندی کل سیستم میشود (چون مثالً کاربر باید مدتها‬
‫منتظر بماند تا در نهایت بفهمد که برقراری ارتباط با وبسایت مورد نظر امکان پذیر نمی باشد!)‪.‬‬

‫درنتیجه‪ ،‬ایده بهتر این است که ناموفق بودن هر مرتبه سعی را به کاربر نشان دهیم (به جای اینکه آن را از او‬
‫پنهان کنیم) و به او اجازه دهیم که انتخاب کند آیا الزم است تالش مجدد صورت گیرد یا اینکه باید کل کار را لغو‬
‫کرد‪.‬‬

‫‪ -2-1-11‬مقایسه تحلیلی میان ‪DS3 ،NOS2 ،DOS1‬‬


‫گاهی اوقات‪ ،‬اصطالحات سیستمعامل توزیعشده )‪ (DOS‬و سیستم توزیع شده )‪ (DS‬اشتباهاً به جای یکدیگر بکار‬
‫برده میشوند‪ ،‬در صورتی که این دو مفهوم کامالً متفاوت از یکدیگرند‪.‬‬

‫در این بخش‪ ،‬مرروی مختصر و سریع بر روی تعاریف سیستم عاملهای توزیع شده )‪ ،(DOS‬سیستم عاملهای‬
‫شبکهای )‪ (NOS‬و سیستمتهای توزیع شده )‪ (DS‬و مزایا و معایب هر یک خواهیم داشت‪ .‬در ادامه‪ ،‬یک مقایسه‬
‫تحلیلی میان آنها خواهد آمد و در پایان‪ ،‬یک تعریف استاندارد از میان افزار (‪ )Middleware‬ارائه خواهد شد‪.‬‬

‫سیستم عاملها برای کامپیوترهای توزیعشده به طور کلی به دو دسته تقسیم می شوند‪:‬‬

‫✓ سیستمتهای ‪( Tightly-Coupled‬به اختصار ‪ T.C‬یا ‪ )DOS‬در سیستمهای ‪ ،T.C‬هدف نهایی سیستم‪-‬‬


‫ع امل این است که یک دید واحد و عمومی از منابعی که مدیریت میکند به کاربران و برنامههای کاربردی‬
‫ارائه دهد‪.‬‬
‫✓ سیستمهای ‪( Loosely-Coupled‬به اختصار ‪ L.C‬یا ‪ )NOS‬سیستمهای ‪ L.C‬را میتوان به صورت‬
‫مجموعهای از کامپیوترهای مستقل که هر کدام سیستم عامل خودشان را دارند در نظر گرفت‪ ،‬اما این سیستم‬
‫عاملها با یکدیگر کار میکنند تا سرویسها و منابعشان را در اختیار یکدیگر قرار دهند (کاربر یک ماشین از‬
‫سرویسهای ارائه شده توسط سایر ماشینها استفاده کند)‪.‬‬

‫بنابراین‪ ،‬اولین وظیفه هر ‪ DOS‬این است که سخت افزار زیرین را به صورت یک ماشین تکی به کاربران و‬
‫برنامهنویسان نشان دهد و یک ماشین مجازی (‪ )VM‬از سخت افزار زیرین به آنها ارائه کند که برنامهنویسی روی‬

‫‪1‬‬
‫)سیستم عامل توزیع شده( ‪DOS: Distributed Operating System‬‬
‫‪2‬‬
‫)سیستم عامل شبکهای( ‪NOS: Network Operating System‬‬
‫‪3‬‬
‫)سیستم توزیع شده( ‪DS: Distributed System‬‬
‫کانون نشر علوم‬ ‫‪| 570‬‬

‫آن بسیار ساده باشد تا برنامهنویسان از درگیر شدن با مسائل پیچیده برنامهنویسی موازی روی ماشینهای چند‬
‫پردازنده یا مالتی کامپیوترهای همگن نجات یابند‪.‬‬

‫اما دومین وظیفه هر ‪ ،DOS‬این است که به صورت یک مدیر منابع (درست همانند سیستم عاملهای عادی برای‬
‫کامپیوترهای تک پردازنده) عمل کند‪.‬‬

‫اگر دو وظیفه فوق را کنار یکدیگر قرار دهیم‪ ،‬میتوان به سادگی نتیجهگیری کرد که هدف نهایی هر سیستم عامل‬
‫توزیع شده ارائه یک سیستم واحد منسجم و تکی (مجازی) به کاربر است‪ .‬در نتیجه‪DOS ،‬ها‪ ،‬معموالً درجه باالیی‬
‫از شفافیت ارائه می کنند که بسیار مطلوب است‪ ،‬اما در قبال این مزیت بسیار بزرگ‪ ،‬دارای نواقص و معایبی هم‬
‫میباشند‪.‬‬

‫✓ اول از همه اینکه آنها قادر به مدیریت کامپیوترهای مستقل یا نامتجانس (غیرهمگن) نیستند !‬
‫✓ دوم‪ ،‬به این دلیل که ماشینهای چند پردازنده دارای معماری ثابت شده هستند (اصطالحاً ‪Hard–Wired‬‬
‫شده اند)‪ ،‬توسعه و گسترش آنها معموالً امکان پذیر نیست‪ .‬به طور مثال شما قادر نخواهید بود تا تعداد‬
‫پردازندههای یک چند پردازنده را به منظور رسیدن به توان پردازش باالتر افزایش دهید‪ .‬بنابراین سیستم‬
‫عاملهای توزیع شده‪ ،‬معموالً به سختی توسعه پذیر هستند‪.‬‬
‫✓ سوم‪ ،‬ماشینهای چندپردازنده و همین طور مالتیکامپیوترهای همگن معموالً ماشینهای خاص منظورهای‬
‫هستند که برای حل مسائل خاص بکار میروند‪ .‬بنابراین‪ ،‬معموالً آنها از خاصیت باز بودن برخوردار نیستند‪،‬‬
‫به این معنا که ‪ Port‬کردن یک نرم افزار که برای اجرا روی یک چند پردازنده خاص تعریف شده است (یا‬
‫یک چند کامپیوتر همگن خاص) روی یک چند پردازنده دیگر (یا یک چند کامپیوتر همگن دیگر) جهت اجرا‪،‬‬
‫امکان پذیر نیست یا به سختی امکان پذیر است! این مطلب به طور ضمنی بیانگر این مطلب است که‬
‫اصطالحاً ‪ Interoperability‬میان ‪DOS‬های مختلف چندان وجود ندارد‪.‬‬

‫سیستم عاملهای شبکهای یا ‪ ،NOS‬سیستمهای ‪ Loosely-Coupled‬هستند که برای مجموعهای از‬


‫کامپیوترهای مستقل یا چند کامپیوترهای ناهمگن (مجموعهای از کامپیوترهای مستقل که ممکن است هر کدام‬
‫دارای معماری خاص خود باشند) بکار می روند‪ .‬اگر چه مدیریت سخت افزار زیرین مسأله مهمی است‪ ،‬اما نیت‬
‫نهایی هر ‪ ،NOS‬ارائه سرویسهای محلی به ماشینهای سرویس گیرنده راه دور در شبکه است‪ .‬درست بر خالف‬
‫سیستم عامل های توزیع شده )‪ ،(DOS‬سیستم عاملهای شبکهای با این فرض ساخته نشدهاند که سخت افزار‬
‫زیرین همگن است و باید طوری مدیریت شود که یک دید به صورت یک سیستم تکی از آن به کاربر ارائه شود‪.‬‬
‫بنابراین‪ ،‬سیستم عاملهای شبکهای معموالً درجه پایینی از شفافیت دارند‪.‬‬
‫‪| 571‬‬ ‫مقدمهای بر محاسبات گرید‬

‫مهمترین ایراد سیستم عاملهای شبکه ای‪ ،‬درجه پایین شفافیت در آنهاست‪ .‬به این معنا که چنانچه برنامه نویسی‬
‫بخواهد یک نرم افزار توزیع شده روی یک ‪ NOS‬تولید کند‪ ،‬باید خودش تمامی پیچیدگیها را تا حدود زیادی‬
‫مدیریت کند‪ .‬الزم است پروتکلهای ارتباطی و شبکهای استاندارد شده‪ ،‬در این محیط وجود داشته باشند و تمامی‬
‫سیستم عاملهای روی کامپیوترهای موجود‪ ،‬سرویسهای خود را طبق این پروتکلهای استاندارد ارائه دهند تا سایر‬
‫ماشینها بتوانند از آنها استفاده کنند‪.‬‬

‫کاربران معموالً دچار مشکالت زیادی در ‪NOS‬ها هستند‪ ،‬زیرا دید یکپارچه و عمومی از سرویسهای موجود در‬
‫سیستم وجود ندارد‪ .‬به طور مثال‪ ،‬هنگامی که کاربر میخواهد فایلی را از روی ماشین ‪ A‬بردارد‪ ،‬باید بداند سیستم‬
‫عاملی که روی ماشین ‪ A‬اجرا میشود چیست‪ ،‬باید صریحاً به آن ماشین از راه دور ‪ LOGIN‬کند و فرمت آدرسدهی‬
‫و دسترسی به آن فایل را طبق استاندارد همان سیستم عامل (روی ماشین ‪ )A‬ارائه کند‪ .‬در واقع روش دسترسی به‬
‫فایلهای مختلف روی ماشینهای مختلف با یکدیگر تفاوت دارد‪ .‬به طور مثال اتصال از راه دور به یک ماشین‬
‫لینوکس با یک ماشینی که سیستم عامل خانواده ویندوز روی آن در حال اجراست با یکدیگر تفاوت دارند‪ .‬فرمت‬
‫آدرس دهی فایل نیز تفاوتهای خاص خود را دارد‪.‬‬

‫در حالیکه در ‪DOS‬ی که مثالً بر روی یک چند کامپیوتر همگن (متشکل از چندین کامپیوتر اما با معماری و ساختار‬
‫مشابه) قرار دارد‪ ،‬اصوالً قرار نیست کاربر حتی بفهمد در سخت افزار زیرین‪ ،‬چندین کامپیوتر وجود دارند چه برسد‬
‫به اینکه بخواهد صریحاً به هر کدام از آنها به یک مدل از راه دور متصل شود و در هر یک به نوعی متفاوت از‬
‫سایرین فرمت آدرس فایل را بدهد تا فایل را دریافت کند! او یک ماشین مجازی تکی از کامپیوترهای زیرین خواهد‬
‫دید با یک دیسک سخت با ظرفیت بسیار زیاد که تمامی فایلها در آن قرار دارند و روش دستیابی به تمامی فایلها‪،‬‬
‫یکسان است‪.‬‬

‫با وجود اینکه پایینی درجه شفافیت در سیستم عاملهای شبکهای‪ ،‬مهمترین نقطه ضعف آنها محسوب می شود‪،‬‬
‫ولی این سیستمها‪ ،‬دارای مزایای خوبی هستند‪:‬‬

‫✓ اول اینکه آنها میتوانند کامپیوترهای مستقل از یکدیگر با معماری متفاوت را (به واسطه وضع پروتکلهای‬
‫استاندارد) مدیریت کنند‪.‬‬
‫✓ دوم اینکه منابع در یک سیستم عامل شبکهای‪ ،‬به صورت جداگانه و مستقل از هم مدیریت میشوند‪ ،‬یعنی‬
‫سیستم عامل موجود روی هر کامپیوتر‪ ،‬خودش منابع روی همان ماشین را مدیریت میکند و در نتیجه به‬
‫راحتی میتوان چنین ساختاری را با افزودن گرههای بیشتر (ماشینهای بیشتر)‪ ،‬توسعه داد‪ .‬اصطالحاً توسعه‪-‬‬
‫پذیری باالیی دارد‪ .‬به یاد آوریم دومین وظیفه ذکر شده ‪ ،DOS‬این بود که به صورت مدیر منابع کل سخت‬
‫افزار زیرین عمل کند و از کل سخت افزار زیرین یک ماشین مجازی به صورت یک سیستم تکی ارائه دهد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 572‬‬

‫پس هنگامی که قرار است یک گره جدید (مثالً به یک چندکامپیوتر همگن) اضافه شود‪ ،‬این وظیفه ‪DOS‬‬
‫خواهد بود که منابع آن را نیز مدیریت کند و این مسأله‪ ،‬خود دارای مشکالت و معضالت خاص خود است و‬
‫‪ DOS‬را دچار مشکل میکند‪ .‬اما در ‪ NOS‬ها‪ ،‬چون هر گره دارای سیستم عامل خودش است که منابع آن‬
‫را مدیریت میکند‪ ،‬این وظیفه برگردن ‪ NOS‬نمیافتد و در نتیجه میتوان برای گسترش و توسعه تواناییهای‬
‫کل سیستم‪ ،‬تعداد گره ها در سیستم را بدون دغدغه و دلنگرانی و مهمتر از آن‪ ،‬بدون صرف هزینه اضافی‬
‫افزایش داد‪.‬‬
‫✓ سوم اینکه سیستم عاملهای شبکهای‪ ،‬سیستمهای باز هستند‪ .‬به دلیل اینکه تمامی گرههای موجود در شبکه‬
‫باید از پروتکلهای استاندارد پشتیبانی کنند تا بتوانند به راحتی با یکدیگر ارتباط برقرار کرده و سرویسهایشان‬
‫را در اختیار یکدیگر قرار دهند‪ ،‬دستیابی به ‪ Interoperability‬در سیستم عاملهای شبکهای معموالً‬
‫نسبتاً ساده است‪ .‬اما وضعیت ‪ Portability‬کامالً متفاوت است‪ :‬به این دلیل که گرههای مختلف ممکن‬
‫است سیستم عاملهای متفاوتی داشته باشند‪ ،‬گاهی اوقات ‪ Port‬کردن یک نرم افزار جهت اجرا روی یک‬
‫گره دیگر بسیار مشکل است‪.‬‬

‫سیستمهای توزیعشده ‪ DS :‬با در نظر داشتن تعریفی که ارائه کردیم‪ ،‬نه سیستم عاملهای توزیع شده‬
‫)‪ (DOS‬و نه سیستم عاملهای شبکهای )‪ (NOS‬نمیتوانند به عنوان سیستمهای توزیع شده تلقی گردند‪ :‬یک‬
‫‪ DOS‬نمیتواند مجموعهای از کامپیوترهای مستقل و نامتجانس را مدیریت کند و یک ‪ NOS‬نمیتواند دیدی از‬
‫سیستم به صورت یک سیستم تکی و یکپارچه‪ 1‬ارائه دهد‪.‬‬

‫سوألی که به ذهن میرسد این است که آیا میتوان سیستمی تولید کرد هم مزایای ‪DOS‬ها و هم مزایای ‪NOS‬ها‬
‫را داشته باشد؟ از یک طرف مانند سیستم عاملهای شبکهای‪ ،‬توسعه پذیر و باز باشد و از طرف دیگر مانند سیستم‬
‫عاملهای توزیعشده‪ ،‬دارای درجه باالیی از شفافیت و راحتی استفاده باشد؟‬

‫ر اه حل را باید در یک الیه اضافه از نرم افزار بر باالی سیستم عاملهای شبکهای یافت که کمابیش ناهمگونی و‬
‫عدم همخوانی ‪Platform‬های زیرین را مدیریت کند و همین طور درجه خوبی از شفافیت را به کاربران و‬
‫برنامهنویسان و نرم افزارهای توزیع شده ارائه دهد‪.‬‬
‫بسیاری از سیستمهای توزیع شده مدرن امروزی توسط چنین الیه نرم افزاری اضافی که میان افزار‬
‫(‪ )Middleware‬نام دارد ساخته شدهاند‪.‬‬

‫‪1‬‬
‫‪Single Coherent System‬‬
‫‪| 573‬‬ ‫مقدمهای بر محاسبات گرید‬

‫مزایای سیستمهای توزیعشده‬


‫سیستمهای توزیع شده هر دو گونه مزایای سیستم عاملتهای توزیع شده و سیستم عاملتهای شبکهای را در خود‬
‫جمع میکنند‪ :‬آنها‪ ،‬سیستم های توسعه پذیر و باز هستند در عین اینکه یک دید به صورت یک سیستم تکی و‬
‫یکپارچه از کل ماشینهای سیستم با درجه نسبتاً باالیی از شفافیت ارائه میدهند‪.‬‬
‫اما انگیزه های بسیار دیگری برای ساخت یک سیستم توزیع شده وجود دارند که مروری خالصه به آنها در این‬
‫بخش خواهیم داشت‪.‬‬

‫✓ یک هدف هر سیستم توزیع شده این است که دسترسی به منابع راه دور را برای کاربران کل سیستم‪ ،‬ساده‬
‫و آسان نماید و منابع راه دور را به صورت کامالً کنترل شدهایی (با رعایت تمامی سیاستهای وضع شده)‬
‫میان کلیه کاربران سیستم به اشتراک بگذارد (حد اعالی چنین امکانی را در سیستمهای گرید میتوان امروزه‬
‫مشاهده کرد)‪ .‬مهمترین دلیل برای به اشتراک گذاردن منابع‪ ،‬انگیزه اقتصادی آن است‪.‬‬
‫✓ یک انگیزه دیگر برای ساختن سیستمهای توزیع شده‪ ،‬کار و همکاری جمعی از طریق تسهیالت کامپیوتری‬
‫و شبکهای‪ 1‬است‪ ،‬به این معنا که گروهی از افراد که از لحاظ مکان جغرافیایی با یکدیگر فاصله دارند‪ ،‬بتوانند‬
‫با یکدیگر و به صورت گروهی روی یک پروژه مشترک کار کنند‬
‫✓ یک انگیزه جدید دیگر برای ساختن سیستمهای توزیع شده‪ ،‬بازیتهای کامپیوتری جمعی است که در آن‬
‫صدها نفر بازیکن میتوانند به صورت ‪ Online‬با یکدیگر مسابقه دهند‪.‬‬
‫✓ دلیل دیگری برای ساخت سیستمهای توزیع شده این است که برخی از کاربردها‪ ،‬ذاتاً ماهیت توزیع شده‬
‫دارند‪ .‬مثل رأی گیری انتخابات ریاست جمهوری‪.‬‬
‫✓ انگیزه دیگر برای تولید و ساخت سیستمهای توزیع شده‪ ،‬دستیابی به توان محاسباتی باال است‪ .‬این درست‬
‫همان انگیزهای است که منجر به ساخت خوشهها و نیز گریدهای محاسباتی شده است که موضوع بحث‬
‫این فصل است‪.‬‬
‫معموالً چند پردازندهها بسیار گرانتر از آن هستند که سازمانها یا دپارتمانهای عادی بتوانند از پس هزینه خرید آن‬
‫برآیند‪ ،‬اما همیشه در هر لحظه تعداد زیادی کامپیوتر بیکار در هر سازمانی یافت میشوند‪ .‬با ایجاد یک سیستم‬
‫توزیعشده خاص بر روی کامپیوترهای سازمان‪ ،‬میتوان به توان پردازشی باالیی توسط پردازش موازی دست یافت‪.‬‬
‫سیستم توزیع شده باید این توانایی را داشته باشد که برنامه را به چندین بخش که بتوانند به صورت همزمان و‬
‫موازی اجرا شوند بشکند و بعد هر تکه را به یک ماشین بیکار در سازمان جهت اجرا بدهد‪ .‬در نتیجه به صورت کامالً‬
‫مقرون به صرفهای میتوان به توان محاسباتی باال رسید‪:‬‬
‫«به جای خرید یک چندپردازنده گران‪ ،‬از کامپیوترهای بیکار در شبکه‪ ،‬توسط یک سیستم توزیع شده جهت دستیابی‬
‫به توان محاسباتی باال استفاده کنید»‪ .‬این‪ ،‬فلسفه اصلی ایجاد سیستمهای گرید محاسباتی است‪.‬‬

‫‪1‬‬
‫‪Computer–Supported Cooperative Work‬‬
‫کانون نشر علوم‬ ‫‪| 574‬‬

‫‪ -3-11‬مروری بر فنآوری های قبل از محاسبات گرید و تاریخچه محاسبات گرید‬


‫محاسبات گرید‪ ،‬به آن شکلی که ما امروز آن را میشناسیم‪ ،‬حاصل تکامل و آمیزش پروژههای تحقیقاتی بسیاری‬
‫در طول سالیان دراز است‪ .‬در این بخش‪ ،‬مروری به سابقه تاریخی محاسبات گرید و فنآوریهای مشابه قبل از آن‬
‫میاندازیم و در واقع خواهیم دید پیشرفت و تکامل چه فنآوریهایی دست به دست هم دادهاند تا محاسبات گرید‬
‫امروزی شکل بگیرد‪ .‬این محاسبات عبارتند از‪:‬‬
‫محاسبات با کارایی باال‪ : 1‬منظور از محاسبات با کارایی باال‪ ،‬عمدتاً همان اصطالح قدیمی ‪Super-‬‬ ‫•‬
‫‪ Computing‬یعنی انجام محاسبات با استفاده از ابررایانهها میباشد‪ .‬همانطوری که میدانیم‪ ،‬امروزه صدها‬
‫ابررایانه با ظرفیتها و معماریهای گوناگون در سراسر دنیا وجود دارند و از آنها استفادههای گستردهای در‬
‫کاربردهای علمی‪ ،‬نظامی‪ ،‬تجاری و غیره میشود‪ .‬تاکنون‪ ،‬تعداد بسیار زیادی الگوریتمهای کلیدی پردازش‬
‫موازی جهت پشتیبانی از اجرای (موازی) برنامهها روی چندین پردازنده (که در کنار یکدیگر واقع شدهاند)‬
‫طراحی و تولید شدهاند‪ .‬در حقیقت‪ ،‬نیمی از ابررایانههای موجود در دنیا‪ ،‬امروزه در شرکتها و سازمانهای‬
‫گوناگون (و نه آزمایشگاههای تخصصی و علمی خاص) استفاده میشوند و باید گفت این سیستمها در حل‬
‫طیف گوناگونی از انواع مسائل متنوع و در انواع مختلفی از محیطها کاربرد دارند‪ .‬مثل مخابرات صنعت حمل‬
‫و نقل و صنعت خودروسازی‬
‫محاسبات خوشهای‪ :‬فنآوری محاسبات خوشهای‪ ،‬در پاسخ به قیمت بسیار باالی ابررایانههای سنتی که چند‬ ‫•‬
‫پردازنده بودند ابداع شد‪ .‬بسیاری از پروژههای تحقیقاتی وجود دارند که جهت اجرا نیاز به انجام محاسبات‬
‫پیچیده و بزرگ بسیاری دارند‪ ،‬اما صاحبان پروژه‪ ،‬از پس خرید چند پردازنده برای شرکت یا سازمانشان بر‬
‫نمیآیند‪ .‬در این حالت از خوشهها استفاده میشود‪.‬‬
‫محاسبات نظیر به نظیر‪ :2‬امروزه‪ ،‬تعداد برنامه کاربردی ‪ p2p‬به اشتراک گذاردن فایل زیاد است و دسترسی‬ ‫•‬
‫به شبکههای نظیر به نظیر بسیار محبوب شده است؛ کاربران زیادی در سراسر دنیا عضو این شبکهها هستند‬
‫و هزاران گیگا بایت اطالعات را برای دریافت کردن‪ ،‬به اشتراک گذارندهاند‪ .‬این محاسبات به دو صورت‬
‫متمرکز و غیرمتمرکز باهم در ارتباط هستند‪.‬‬
‫محاسبات داوطلبانه‪ : 3‬امروزه اینترنت به لحاظ گستره جغرافیایی تحت پوشش بسیار گسترده است و استفاده‬ ‫•‬
‫از آن نیز فراگیر شده است به طوریکه میلیونها کاربر در سرتاسر دنیا دارد‪ .‬از طرف دیگر‪ ،‬کامپیوترهای‬
‫خانگی رشد مناسبی در زمینه توان محاسباتی پیدا کردهاند به طوریکه میتوان روی توان پردازشی آنها و‬

‫‪1‬‬
‫‪High-Performance Computing‬‬
‫‪2‬‬
‫برای اختصار ‪P2P‬در مقاالت و نوشته ها‪ ،‬گاهی اصالح نظیر به نظیر را به صورت ‪: Peer-to-Peer Computing‬‬
‫دهند‪.‬نشان می‬
‫‪3‬‬
‫‪Volunteer Computing‬‬
‫‪| 575‬‬ ‫مقدمهای بر محاسبات گرید‬

‫استفاده از آنها جهت پروژههای بزرگ‪ ،‬کامالً حساب باز کرد‪ .‬میدانیم پروژه تحقیقاتی علمی بسیار بزرگی در‬
‫دنیا وجود دارند که این پروژه ها‪ ،‬به توان محاسباتی بسیار باالیی جهت انجام نیاز دارند‪ ،‬طوری که حتی اگر‬
‫قویترین ابررایانه دنیا را هم به آنها اختصاص دهیم‪ ،‬شاید دهها سال اجرای آنها به طول بیانجامد‪ .‬دانشمندان‬
‫به این فکر افتادند که بتوانند از زمانهایی که کامپیوتر کاربران متصل به اینترنت بیکار است از ماشین آنها‬
‫(پالسهای بیکار پردازندههای کامپیوترهای کاربران) جهت انجام این محاسبات استفاده کنند‪ .‬چون تعداد‬
‫کاربران اینترنت بسیار زیاد است و چون توان محاسباتی کامپیوترهای خانگی باالرفته است‪ ،‬احتماالً حجم‬
‫عظیمی از پردازشها‪ ،‬بدین صورت قابل انجام خواهند بود و از این طریق به منبع محاسباتی بسیار عظیمی‬
‫دست خواهند یافت‪ .‬برای این کار‪ ،‬الزم است پروژه طوری برنامه نویسی شود که به تعداد بسیار زیادی زیر‪-‬‬
‫کار شکسته شود‪ .‬سپس کاربرانی که مایل هستند برای پیشبرد این پروژههای علمی (و معموالً بشر دوستانه‬
‫و غیر تجاری) همکاری کنند‪ ،‬یک نرم افزار ‪ Client‬را از وب سایت مربوطه دریافت میکنند‪ .‬توجه کنید که‬
‫کاربران برای همکاری در این پروژهها‪ ،‬داوطلب‪ 1‬میشوند و به هیچ وجه بحث استفاده پنهانی از کامپیوترهای‬
‫کاربران جهت انجام محاسبات مطرح نیست‪.‬‬

‫‪ -1-3-11‬محاسبات گرید‬
‫بعد از بر مروری کوتاه بر کلیه فنآوریهای قبل از محاسبات گرید‪ ،‬در این بخش تاریخچه بوجود آمدن خود‬
‫محاسبات گرید را ارائه میکنیم‪ .‬در واقع محاسبات گرید سعی دارد تا تمام کارهایی که تاکنون در حوزههای‬
‫محاسبات با کارایی باال )‪ ، (HPC‬محاسبات خوشه‪ ،‬محاسبات نظیر به نظیر و محاسبات دواطلبانه صورت میگرفته‬
‫را زیر یک چتر تعریفی‪ ،‬گردهم آورد‪.‬‬

‫در اواسط دهه ‪ 1990‬میالدی‪ ،‬پروژههای تحقیقاتی بسیاری در دانشگاهها و محافل تحقیقاتی‪ ،‬متمرکز بر روی‬
‫محاسبات توزیع شده وجود داشتند‪ .‬یک زمینه تحقیقاتی اصلی تمرکز بر روی تولید ابزارهایی داشت که از طریق‬
‫آنها بتوان سیستمهای ‪ High-Performance Computing‬را به یکدیگر متصل کرد‪ ،‬به طوریکه این‬
‫سیستمهای توزیع شده به صورت یک ماشین بزرگ واحد عمل کنند‪.‬‬

‫در واقع هدف اصلی ‪ Distributed Super Computing‬بود‪ .‬در کنفرانس ‪IEEE/ACM Super‬‬
‫‪ Computing‬در سال ‪ 1995‬در ‪ ،Sandiego‬از ‪ 11‬شبکه پر سرعت جهت اتصال ‪ 17‬سایت با منابع‬
‫محاسباتی بسیار گرانقیمت و پر قدرت جهت ارائه یک سیستم نمایشی به صورت یک ‪Super Meta‬‬
‫‪ Computer‬استفاده شد (به همین دلیل گاهی به محاسبات گرید‪ ،‬اصطالحاً ‪ Meta Computing‬نیز می‪-‬‬
‫گویند)‪ .‬این سیستم نمایشی‪ I-WAY ،‬نام گذاری شد و ‪ IAN Foster‬از آزمایشگاه ملی آرگون دپارتمان انرژی‬

‫‪1‬‬
‫‪Volunteer‬‬
‫کانون نشر علوم‬ ‫‪| 576‬‬

‫ایاالت متحده آمریکا‪ 1‬رهبری و هدایت آن را بر عهده داشت‪ 60 .‬برنامه کاربردی متفاوت که طیف وسیعی از‬
‫تواناییها در زمینههای علوم و مهندسی را در بر گرفته بود‪ ،‬تولید و بر روی این ساختار )‪ (I-WAY‬اجرا شد‪ .‬بسیاری‬
‫از مفاهیم اولیه محاسبات گرید در تولید این سیستم‪ ،‬معرفی و کشف شدند و دلیل آن این بود که تیم پروژه‪ ،‬ابزارهای‬
‫بسیاری برای اینکه تمامی منابع محاسباتی بتوانند با یکدیگر به خوبی کار کنند‪ ،‬ساختند‪.‬‬

‫آمریکا‪2‬‬ ‫موفقیت در ساخت ونمایش ‪ I-WAY‬باعث شد تا آژانس پروژههای تحقیقاتی پیشرفته وزارت دفاع‬
‫)‪ (DARPA‬بر روی پروژهای جهت تولید ابزارهای زیر بنایی جهت محاسبات توزیع شده‪ ،‬در اکتبر ‪ 1996‬میالدی‪،‬‬
‫سرمایه گذاری کند‪ .‬هدایت این پروژه تحقیقاتی نیز بر عهده ‪( IAN Foster‬از آزمایشگاه ملی آرگون) و ‪Carl‬‬
‫‪ Kesselman‬از دانشگاه کالیفرنیای جنوبی بود‪ .‬این پروژه ‪ Globus‬نامیده شد و تیم پروژه‪ ،‬مجموعهای از‬
‫ابزارها را تولید کرد که در واقع زیربنایی برای فعالیتهای تحقیقاتی روی محاسبات گرید در دانشگاهها در محافل‬
‫مختلف شد‪.‬‬

‫در کنفرانس ‪ Super Computing‬در سال ‪ 80 ،1997‬سایت در سراسر دنیا با اجرای نرم افزاری بر پایه‬
‫‪ 3 Globus toolkit‬به یکدیگر متصل شدند‪ .‬به این تالش صورت گرفته‪ ،‬اصطالحاً عنوان محاسبات گرید‬
‫(‪ )Grid Computing‬داده شد که در واقع تمثیلی از شبکههای توزیع برق قدرت می باشد‪.‬‬

‫در واقع ایدهای که طراحان ‪ MULTICS‬با الهام از شبکه توزیع برق در سال ‪ 1964‬در سر میپروراندند‪ ،‬در سال‬
‫‪ 1997‬به صورت تغییر شکل یافتهای‪ ،‬محقق شد‪ .‬طراحان ‪ MULTICS‬فکر میکردند باید یک کامپیوتر قدرتمند‬
‫بسازند تا به صورت منبع بیانتهای محاسباتی بتوان از آن استفاده کرد‪ .‬زیرا اوالً مسائل امروزه آنقدر پیچیده و بزرگ‬
‫هستند که قویترین ابررایانه دنیا نیز قادر به اجرای مناسب بسیاری از آنها نمیباشد و ثانیاً دادههای ورودی مورد‬
‫نیاز این مسائل گاهاً بر روی سایتهای مختلف در نقاط جغرافیایی مختلف توزیع شدهاند و حتی تجمیع آنها بر روی‬
‫یک ماشین نیز به هیچ وجه امکان پذیر و عملی نیست؛ اما دستیابی به توان محاسباتی نامحدود جهت حل چنین‬
‫مسائلی‪ ،‬امروزه با شبکههای گرید و فنآوری محاسبات گرید‪ ،‬محقق و امکان پذیر شده است‪.‬‬

‫‪ -2-3-11‬ارائه تعریف برای فن آوری محاسبات گرید‬


‫محاسبات گرید یک فنآوری جدید است که با استفاده از زیرساختهای ارتباطی و شبکههای کامپیوتری و نیز با‬
‫بکارگیری حد اعالی مفاهیم و امکانات سیستمهای توزیع شده‪ ،‬به ما امکان دسترسی به انواع مختلف منابع را به‬

‫‪1‬‬
‫‪United States Department of Energy's Argonne Natioual Lab‬‬
‫‪2‬‬
‫‪Defense Advanced Research Projects Agency‬‬
‫‪3‬‬
‫گویند و امروزه تبدیل به ابزاری برای ‪ Globus ،Globus toolkit‬به مجموع کلیه ابزارهای تولید شده درپروژه‬
‫است‪ open Source.‬است و ‪open‬است‪ .‬این مجموعه دارای معماری ها شده‪Grid‬ساختن‬
‫‪| 577‬‬ ‫مقدمهای بر محاسبات گرید‬

‫صورت راه دور میدهد‪ .‬امروزه میتوان با استفاده از فنآوری گرید‪ ،‬منابع محاسباتی ناهمگون را به یکدیگر متصل‬
‫کرد طوری که کل این ساختار همانند یک ماشین مجازی یکپارچه و تکی به نظر کاربر بیاید و سپس برنامههای‬
‫کاربردی بسیار پیچیده و بزرگ را که به توان پردازشی بسیار باال و حجم عظیمی از دادههای ورودی نیاز دارند‪ ،‬بر‬
‫روی این ماشین مجازی اجرا کرد‪ . .‬گرید‪ ،‬طبق تعریف هیچ محدودیتی از لحاظ محدوده جغرافیایی منابع تحت‬
‫پوشش ندارد‪ .‬دستیابی به توان محاسباتی نامحدود و ‪ Distributed Super Computing‬لزوماً تنها انگیزه‬
‫و هدف محاسبات گرید نمیباشد و این فنآوری در زمینههای مختلف کاربرد دارد‪ .‬به همین دلیل مشاهده میکنیم‬
‫امروزه‪ ،‬انواع مختلفی از سیستمهای گرید‪ ،‬با تعاریف و امکانات مختلف ساخته شدهاند که اهداف متفاوتی را دنبال‬
‫می کنند‪.‬‬

‫‪ -1-2-3-11‬تعریف ‪ IBM‬از محاسبات گرید‬

‫یک گرید مجموعه ای از منابع محاسباتی توزیع شده در یک شبکه محلی یا یک شبکه گسترده است که برای کاربر‬
‫نهایی یا برنامههای کاربردی به صورت یک سیستم کامپیوتری و محاسباتی مجازی بزرگ‪ 1‬به نظر میرسد‪ .‬دیدگاه‬
‫اصلی آن‪ ،‬ایجاد سازمانهای مجازی پویا‪ 2‬از طریق به اشتراک گذاردن منابع به شیوهای هماهنگ و امن میان‬
‫کاربران‪ ،‬دانشگاهها و سازمانهاست‪ .‬محاسبات گرید رهیافتی از محاسبات توزیع شده است که پلی میان فاصلههای‬
‫جغرافیایی دور‪ ،‬میان سازمانها‪ ،‬معماریهای مختلف ماشینها و نرم افزارهای مختلف میزند و به هر کس که به‬
‫گرید متصل شده باشد‪ ،‬توان محاسباتی نامحدود‪ ،‬امکان همکاری با سایرین و دسترسی به انواع اطالعات را میدهد‪.‬‬

‫‪ -2-2-3-11‬تعریف ‪ Globus Alliance3‬از گرید‬

‫اصطالح گرید به زیرساختی گفته میشود که استفاده مجتمع با تشریک مساعی‪ 4‬از کامپیوترها‪ ،‬شبکههای‬
‫کامپیوتری‪ ،‬بانکهای اطالعاتی و دستگاههای علمی را که تحت تملک و مدیریت سازمانهای مختلف هستند را‬
‫امکان پذیر میکند‪ .‬برنامههای کاربردی گرید معموالً نیازمند حجم عظیمی از دادهها و‪/‬یا توان محاسباتی بسیار باال‬
‫هستند و اغلب احتیاج به‪ ،‬به اشتراک گذاری امن منابع میان سازمانهای مختلف دارند و بنابراین با زیرساختهای‬
‫فعلی اینترنت و وب‪ ،‬اجرای آنها به آسانی امکان پذیر نیست‪.‬‬

‫‪1‬‬
‫‪Large virtual computing system‬‬
‫‪2‬‬
‫‪Virtual Dynamic Organization‬‬
‫‪3‬‬
‫–اولین نمونه گرید در دنیا‪ -‬است‪ Globus.‬در واقع همان انجمن بوجود آوردنده گرید ‪Globus Allicance‬‬
‫‪4‬‬
‫‪Collaborative‬‬
‫کانون نشر علوم‬ ‫‪| 578‬‬

‫‪ 3-2-3-11‬دیدگاه صنعتی از تعریف گرید‬

‫یک گرید محاسباتی‪ ،‬یک زیرساخت نرمافزاری‪/‬سختافزاری است که دسترسی به منابع محاسباتی پیشرفته را به‬
‫صورتی قابل اعتماد‪ ،‬سازگار‪ ،‬فراگیر و ارزان فراهم میکند‪ .‬مسأله اصلی گرید‪ ،‬به اشتراک گذاری هماهنگ منابع و‬
‫حل مسأله در سازمانهای مجازی پویای چند ارگانی‪ 1‬است‪.‬‬

‫‪ -4-11‬بررسی انواع مختلف سرویس های قابل ارائه در شبکه های گرید‬
‫چون گرید طیف مختلفی از منابع متفاوت را میتواند تحت پوشش قراردهد و گاهی هدف نهایی آن‪ ،‬ایجاد سازمان‪-‬‬
‫های مجازی است‪ ،‬بنابراین باید سرویسهای متفاوتی را ارائه دهد‪ .‬نمونههایی از این سرویسها عبارتند از‪:‬‬
‫سرویسهای محاسباتی‪ :‬مهمترین سرویس قابل ارائه در شبکههای گرید سرویس محاسباتی است که به‬ ‫•‬
‫معنای دسترسی امن‪ ،‬هماهنگ و مستقیم به منابع (ماشینهای) محاسباتی توزیع شده است‪.‬‬
‫سرویسهای داده‪ :‬این سرویسها‪ ،‬دسترسی امن به مجموعه دادههای راه دور و مدیریت آنها را فراهم‬ ‫•‬
‫میکنند‪ .‬توسط این سرویسها‪ ،‬میتوان انبارههای داده مجازی با ظرفیت بسیار باال داشت (با استفاده از‬
‫تجمیع منابع ذخیره سازی ماشینهای توزیع شده مختلف به صورت شفاف جهت ارائه یک انباره داده یکپارچه‬
‫و منسجم و تکی مجازی)‪ .‬در چنین شِمایی‪ ،‬ممکن است مجموعه دادهها‪ ،‬تکرار شوند‪ ،‬کاتالوگهایی برای‬
‫دادههای مختلف ایجاد شوند و از شفافیتهای دسترسی‪ ،‬مکانی‪ ،‬پنهان سازی تعویض محل منبع‪ ،‬پنهان‬
‫سازی تعویض محل منبع در حین استفاده و پنهان سازی تکرار منبع‪ ،2‬در حد اعال استفاده شود‪ .‬جهت پردازش‬
‫داده‪3‬‬ ‫مجوعه دادهها‪ ،‬از سرویسهای گرید محاسباتی استفاده میشود‪ .‬به چنین ترکیبی معموالً یک گرید‬
‫میگویند‪.‬‬
‫سرویسهای برنامه کاربردی‪ :‬همانطوری که میدانیم معماری سرویسگرا‪ 4‬شدیداً تبدیل به بحثی جنجال بر‬ ‫•‬
‫انگیز و پرکاربرد در مهندسی نرم افزار مدرن شده است‪ .‬توسط این معماری برنامههای کاربردی توزیع شدهای‬
‫میتوان بر روی هر ساختار ارتباطی‪/‬شبکهای و خصوصاً اینترنت ایجاد کرد که در واقع به صورت ترکیبی از‬
‫سرویسهای مختلفی ساخته میشود که این سرویسها میتوانند توسط شرکتهای مختلف پیاده سازی‬
‫شوند و بر روی ماشینهای مختلفی که حتی میتوانند نامتجانس و ناهمگن باشند‪ ،‬قرار گرفته باشند‪ .‬در‬
‫معماری سرویسگرا‪ ،‬توسط پروتکلهای باز استاندارد شده‪ ،‬میتوان به روشی یکسان به تمام سرویسها‬
‫صرف نظر از اینکه این سرویسها‪ ،‬بر روی چه ماشینی قرار داشته باشد‪ ،‬چه سیستم عاملی روی آن ماشین‬

‫‪1‬‬
‫‪Problem solving in dynamic, Multi-Institutional virtual organizations‬‬
‫‪2‬‬
‫‪Replication Transparency‬‬
‫‪33‬‬
‫‪Data Grid‬‬
‫‪4‬‬
‫‪SOA: Software-Oriented Architecture‬‬
‫‪| 579‬‬ ‫مقدمهای بر محاسبات گرید‬

‫در حال اجرا باشد‪ ،‬از چه زبان برنامه نویسی برای پیاده سازی آن سرویسها استفاده شده باشد و ‪ ...‬استفاده‬
‫کرد‪.‬‬
‫سرویسهای اطالعاتی‪ :‬درست همانند فنآوری اینترنت که دسترسی به منابع اطالعاتی روی ماشینهای‬ ‫•‬
‫نامتجانس در سراسر دنیا را به شیوه یکسانی در اختیار میدهد‪ ،‬فنآوری گرید نیز میتواند چنین سرویسهایی‬
‫را در حد باالتر ارائه دهد‪.‬‬
‫سرویسهای دانش‪ :‬مدیرت دانش‪ 1‬و مدیریت سرمایههای فکری‪ 2‬در سازمانها‪ ،‬امروزه به عنوان مهمترین‬ ‫•‬
‫استراتژی بهینه سازی کسب و کار‪ 3‬و به عنوان عاملی در حفظ بقای سازمانها مطرح است‪ .‬یک گرید دانش‬
‫باید کلیه تسهیالت مورد نیاز اجرای پروژههای مدیریت دانش سازمانی را در اختیار قراردهد‪ .‬کشف دانش از‬
‫بانکهای اطالعاتی و داده کاوی صرفاً تنها یکی از صدها امکاناتی است که باید در گرید در سطح کل‬
‫سازمان فراهم باشد‪ .‬انبارههای دانش باید برای ذخیره دانش سازمان فراهم باشند و تمامی افراد سازمان به‬
‫آن دسترسی داشته باشند‪ .‬گرید باید تسهیالتی فراهم آورد تا اصطالحاً دانش در سازمان جریان پیدا کند‪:‬‬
‫دانش درست‪ ،‬در زمان درست به دست افراد درست در کل سازمان برسد‪ .‬افراد باید از طریق تسهیالتی که‬
‫گرید دانش در اختیار میگذارد‪ ،‬دانششان را میان یکدیگر به اشتراک بگذارند و بتوانند یادگیری جمعی انجام‬
‫دهند و عمالً در کارهایشان از دانش به نحو موثر استفاده کنند‪.‬‬

‫‪ -5-11‬اهداف و مزایای محاسبات گرید‬


‫اهداف و مزایای محاسبات گرید عبارتند از‪:‬‬

‫‪ .1‬استفاده از منابع بیکار یا منابعی که استفاده بهینه از آنها نشده است‪ :‬یک محیط اداری‪ ،‬یک دپارتمان در‬
‫سازمان یا هر محیطی که چندین کامپیوتر متصل شده به هم از طریق یک شبکه کامپیوتری دارد را در نظر‬
‫بگیرید‪ .‬سادهترین کاربرد در استفاده از محاسبات گرید‪ ،‬اجرای یک برنامه کاربردی (نرم افزار) بر روی یک‬
‫کامپیوتر دیگر در شبکه مذکور است‪ .‬کامپیوتری که این نرمافزار همیشه روی آن اجرا میشده است‪ ،‬ممکن‬
‫است برخالف معمول‪ ،‬به دلیل اجرای یک یا چند پردازش دیگر‪ ،‬ناگهان به پیک کاری برسد و شدیداً درگیر‬
‫و مشغول شود‪ .‬ایده مطلوب این است که این نرم افزار بر روی یک کامپیوتر دیگر در گرید که فعالً بیکار‬
‫است (و نه بر روی کامپیوتر همیشگی) اجرا شود‪.‬‬
‫‪ .2‬پشتیبانی از محاسبات موازی توزیع شده‪ :‬یکی از جذابترین ویژگیهای محاسبات گرید‪ ،‬توانایی آن در اجرای‬
‫برنامهها به صورت موازی و توزیع شده است‪ .‬دقیقاً مشابه با ایدهای که در محاسبات خوشهای وجود دارد‪ .‬اما‬

‫‪1‬‬
‫‪Organizational Knowledge Management‬‬
‫‪2‬‬
‫‪Intellectual Capital Management‬‬
‫‪3‬‬
‫‪Business Optimization Strategy‬‬
‫کانون نشر علوم‬ ‫‪| 580‬‬

‫از آنجا که گستردگی گرید بسیار زیاد است و میتواند انواع پردازشگرهای نامتجانس را تحت پوشش خود در‬
‫آورد‪ ،‬یک گرید میتواند خود شامل چندین خوشه باشد‪ .‬به همین دلیل‪ ،‬گاهی به گرید‪ ،‬اصطالحاً خوشهای از‬
‫خوشهها‪ 1‬نیز میگویند‪.‬‬
‫‪ .3‬سازمانهای مجازی‪ -‬همکاری و تشریک مساعی‪ :‬یک هدف دیگر محاسبات گرید این است که به تعداد‬
‫وسیعی از کاربران راه دور‪ ،‬امکان همکاری و تشریک مساعی و کار گروهی را به شکلی کامالً عملی و ساده‬
‫بدهد‪ .‬محاسبات گرید امروزه با وضع استانداردهای مهمی به سیستمهای بسیار ناهمگن امکان داده تا بتوانند‬
‫با یکدیگر کار کنند و از طریق اتصال انواع سیستمهای متفاوت‪ ،‬تصویری از یک سیستم مجازی محاسباتی‬
‫بسیار بزرگ ارائه دهند‪.‬‬
‫‪ .4‬دسترسی به منابع بیشتر‪ :‬یک گرید میتواند عالوه بر منابع پردازشگر و منابع ذخیره سازی اطالعات‪ ،‬دسترسی‬
‫به طیف وسیعی از انواع منابع و سرویسها مانند دستگاههای خاص‪ ،‬نرم افزارها‪License ،‬های خریداری‬
‫شده برای نرم افزارها و غیره را امکان پذیر سازد‪ .‬نکته جالب این است که گرید همواره این قابلیت را دارد‬
‫که بتوان به منابع آن افزود و به توان و ظرفیت بیشتر یا به امکانات بیشتر دست یافت‪ .‬افزودن منابع اضافی‬
‫به گرید‪ ،‬میتواند افزودن به لحاظ تعداد بیشتر یا به لحاظ ظرفیت بیشتر به سیستم باشد‪.‬‬
‫‪ .5‬تقسیم بار‪ :‬یک گرید میتواند‪ ،‬مجموعه عظیمی از منابع را که روی کامپیوترهای مختلف قرار دارند با یکدیگر‬
‫متحد کرده و کنار یکدیگر قرار دهد تا یک ماشین مجازی با منابع بسیار زیاد تولید کند‪ .‬در واقع هر گرید‬
‫میتواند تعداد زیادی کامپیوتر که ممکن است در سایتهای مختلف نیز قرار گرفته باشند را تحت پوشش‬
‫قرار دهد و جهت اجرای برنامههای کاربردی‪ ،‬از آنها استفاده نموده و آنها را مورد بهرهبرداری قرار دهد‪ .‬عمل‬
‫تقسیم بار در گرید‪ ،‬به این معناست که سیستم مدیریتی گرید برای هر برنامهکاربردی واگذار شده‪ ،‬بهترین‬
‫منبع پردازشگر (کامپیوتر) را جهت اجرای آن برنامه مشخص کند و برنامه را به آن کامپیوتر جهت اجرا واگذار‬
‫کند‪ .‬به این ترتیب‪ ،‬با استفاده از زمانبندی مؤثر کارها و توزیع مناسب برنامههای کاربردی میان منابع پردازشگر‬
‫(کامپیوترهای گرید)‪ ،‬کل بار میان کلیه کامپیوترها تقسیم خواهد شد‪ .‬به این ترتیب‪ ،‬هم متوسط زمان انتظار‬
‫و متوسط زمان اجرای هر برنامه کاربردی پایین خواهد آمد و هم حداکثر بهرهبرداری و استفاده بهینه از کلیه‬
‫منابع پردازشگر گرید به عمل میآید و از طرف دیگر باعث می شود تا بتوان حالتهایی که ‪ peak‬های کاری‬
‫روی کامپیوترهای خاصی به صورت غیر منتظرهای گاه و بیگاه اتفاق می افتند را به نحو مؤثری مدیریت‬
‫کرد‪.‬‬
‫‪ .6‬قابلیت اعتماد‪ :‬گرید میتواند شامل منابعی نسبتاً ارزان قیمت باشد که به لحاظ جغرافیایی در مکانهای‬
‫مختلف قرار گرفته اند‪ .‬به همین دلیل‪ ،‬اگر به طور مثال برق یک کامپیوتر یا ناحیهای به طور ناگهانی قطع‬

‫‪1‬‬
‫‪Cluster of Clusters‬‬
‫‪| 581‬‬ ‫مقدمهای بر محاسبات گرید‬

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

‫‪ -6-11‬انواع گرید‬
‫در این بخش اول‪ ،‬انواع تقسیم بندیهایی که برای فنآوری گرید مطرح است را به طور خالصه بررسی خواهیم‬
‫کرد‪ .‬سپس‪ ،‬نگاهی کامالً عمیق بر روی یک نوع خاص اما پرکاربر از گرید بنام گریدهای رومیزی‪ 1‬خواهیم داشت‪.‬‬

‫‪ -1-6-11‬انواع تقسیم بندی های گرید‬


‫در ادامه دو تقسیم بندی مهم از شبکههای گرید را مطرح میکنیم که عبارتند از‪:‬‬

‫‪ .1‬تقسیم بندی به لحاظ محدوده جغرافیایی تحت پوشش گرید‬


‫گاهی اوقات‪ ،‬سیستمهای گرید را بر اساس محدوه جغرافیایی که میتوانند تحت پوشش قراردهند‪ ،‬تقسیم بندی‬
‫میکنند‪ .‬در این تقسیم بندی‪ ،‬انواع مختلف متصور گرید‪ ،‬به شرح زیر است‪:‬‬

‫الف‪ :‬گریدهای دپارتمانی‪ :‬این گریدها‪ ،‬جهت حل مسائل برای گروه خاصی از افراد در یک سازمان یا شرکت‬
‫ایجاد میشود‪ .‬منابع این گرید‪ ،‬در اختیار سایر گروههای سازمان قرار نمیگیرد و صرفاً میان افراد گروه به اشتراک‬
‫گذارده میشود‪.‬‬

‫ب‪ :‬گریدهای سازمانی‪ :‬این گریدها منابعی را تحت پوشش قرار میدهند که در سطح یک سازمان بزرگ توزیع‬
‫شدهاند و به کل کاربران سازمان سرویس میدهند‪ .‬منظور از سازمان بزرگ‪ ،‬سازمانی است که ممکن است از چندین‬
‫شرکت یا مؤسسه مختلف تشکیل شده باشد اما همگی صرفًا برای همان سازمان کار میکنند‪.‬‬

‫‪1‬‬
‫‪Desktop Grid‬‬
‫کانون نشر علوم‬ ‫‪| 582‬‬

‫ج‪ :‬گریدهای فراسازمانی‪ :‬این گریدها‪ ،‬گریدهایی هستند که میان چند سازمان‪ ،‬شرکت‪ ،‬موسسه یا ارگان‬
‫مختلف‪ ،‬جهت پروژهها یا نیازهای مشترک بنا میشود‪.‬‬

‫د‪ :‬گریدهای گسترده در سطح دنیا‪ :‬گریدهایی هستند که در محدوده اینترنت ایجاد میشوند و ممکن است‬
‫کاربرانی از سراسر دنیا داشته باشند‪ .‬این گریدها‪ ،‬ممکن است توسط سازمانها برای تسهیل کردن کارهایشان یا‬
‫جهت سرویسدادن به کاربران مختلف (اجاره منابع به کاربران در سراسر دنیا) بنا شوند‪ .‬در واقع این گریدها‪ ،‬قدرت‬
‫منابع توزیع شده را به کاربرانی در سراسر دنیا جهت انجام نیازهای محاسباتیشان ارائه میدهند‬

‫‪ .2‬تقسیم بندی گریدها به لحاظ سرویسهای مختلفی که ارائه میدهند‬

‫گاهی اوقات‪ ،‬گریدها را برحسب سرویسهای مختلفی که ارائه میدهند تقسیم بندی میکنند‪ .‬البته شاید این تقسیم‬
‫بندی کار چندان دقیقی نباشد‪ ،‬چون هر گرید ممکن است در عمل‪ ،‬ترکیبی از این سرویسها را در سطوح مختلفی‬
‫از قابلیتهای متفاوت ارائه دهد‪ .‬در ادامه‪ ،‬انواع گرید در این تقسیمبندی معرفی میکنیم‪:‬‬

‫‪ -1‬گریدهای محاسباتی‪ :‬گریدهایی هستند که سرویس محاسباتی ارائه میدهند‪ .‬بعضاً مشاهده میشود‬
‫گریدهای محاسباتی را بر حسب نوع کامپیوترهایی که میتواند تحت پوشش قراردهد‪ ،‬تقسیم بندی میکنند‪ .‬در این‬
‫تقسیم بندی‪ ،‬انواع گرید محاسباتی به شرح زیر است‪:‬‬
‫✓ گریدهای رومیزی‪ :‬گریدهایی هسنتد که بر روی کامپیوترهای رومیزی کارمندان سازمان بنا میشوند‪ .‬در واقع‬
‫کامپیوترهای کارمندان سازمان‪ ،‬در اختیار گرید سازمان قرار میگیرند تا پروژههای سازمان که به توان‬
‫محاسباتی باال نیاز دارند‪ ،‬بتوانند انجام شوند‪ .‬هدف این گرید‪ ،‬بهرهبرداری بهینه از منابع محاسباتی سازمان‬
‫است بدون اینکه کار کارمندان سازمان که از کامپیوترها استفاده میکنند‪ ،‬مختل شود‪ .‬این نوع گریدها در‬
‫این فصل به طور کامل بررسی خواهند شد‪.‬‬
‫✓ گرید با کامپیوترهای سرویسدهنده‪ :1‬همانند گریدهای رومیزی با این تفاوت که بعضی از کامپیوترهای‬
‫قدرتمند به صورت اختصاصی به عنوان پردازشگرهای گرید در این ساختار وجود دارند‪ ،‬یعنی این کامپیوترها‬
‫متعلق به کارمندان سازمان نیستند و از آنها منحصراً برای اجرای پردازشهای گرید سازمان استفاده میشود‪.‬‬
‫✓ گریدهای خوشهای‪/‬با کارایی باال‪ :2‬این گریدها‪ ،‬منابع محاسباتی پرقدرت همانند ابررایانهها یا خوشههای با‬
‫کارایی باال را تحت پوشش قرار میدهند‪ .‬هدف این گریدها‪ ،‬ارائه یک ماشین مجازی بسیار پرقدرت جهت‬
‫اجرای برنامههای کاربردی فوق العاده سنگین است‪.‬‬

‫‪1‬‬
‫‪Server Grids‬‬
‫‪2‬‬
‫‪High-Performance/Cluster Grids‬‬
‫‪| 583‬‬ ‫مقدمهای بر محاسبات گرید‬

‫‪ -2‬گریدهای داده‪ :‬گریدهایی هستند که سرویس داده ارائه میدهند‪.‬‬


‫‪ -3‬سایر گریدها‪ :‬گریدها میتوانند عالوه بر سرویسهای محاسباتی و سرویس داده‪ ،‬سرویسهای اطالعاتی‪،‬‬
‫برنامههای کاربردی و دانش ارائه کنند‪ .‬اما هنوز تقسیم بندی بر اساس این سرویسها صورت نگرفته و‬
‫نمونههایی از گرید که به طور انحصاری و صرفاً مثالً سرویس دانش بدهند‪ ،‬به چشم نمیخورد‪ .‬بنابراین در‬
‫این تقسیم بندی‪ ،‬صرفاً گریدها به دو دسته عمده گریدهای محاسباتی و گریدهای داده طبقه بندی میشوند‪.‬‬

‫‪ -2-6-11‬گریدهای رومیزی‬
‫گرید رومیزی درواقع گریدی است که از اتصال کامپیوترهای شخصی و یا ایستگاههای کاری درون سازمان به‬
‫یکدیگر درست شده است (البته کامپیوترهای قابل حمل را نیز میتواند تحت پوشش قرار دهد) و هدف اصلی این‬
‫کار‪ ،‬ایجاد یک منبع محاسباتی بسیار قوی برای سازمان بدون هزینههای اضافی سربار است‪ ،‬به طوریکه این منبع‪،‬‬
‫توانایی اجرای برنامههای کامپیوتری عظیمِ ‪ Computation-intensive‬و‪/‬یا ‪ Data-Intensive‬را داشته‬
‫باشد‪.‬‬

‫محاسبات داوطلبانه‪ ،‬اولین تالش موفق برای محاسبات توزیعشده با استفاده از کامپیوترهای معمولی خانگی در‬
‫مقیاس بزرگ می باشد‪ .‬مهمترین دلیل موفقیت محاسبات داوطلبانه‪ ،‬روش ساده آن در استفاده از پالسهای بیکار‬
‫پردازندههای کامپیوترهای کاربران میباشد‪ .‬تنها کاری که میبایست صورت گیرد این است که کاربر داوطلب‪ ،‬یک‬
‫نرم افزار کوچک سرویسگیرنده (نرم افزار پردازشگر) را دریافت میکند‪ .‬این برنامه‪ ،‬اطالعاتی را که باید پردازش‬
‫شوند در قالب بستههای کوچک اطالعاتی از سرویسدهنده مرکزی دریافت میکند و زمانی که کامپیوتر کاربر به‬
‫حالت بیکار – مثالً ‪ -Screen Saver‬میرود‪ ،‬برنامه فعال میشود و دادهها را پردازش میکند و سپس نتیجه را‬
‫به سرویسدهنده مرکزی ارسال میکند‪.‬‬

‫بررسی چند نکته اساسی در محاسبات داوطلبانه‪ ،‬کامالً الزم به نظر می رسد‪:‬‬

‫مدیریت منابع در این سیستمها‪ ،‬به صورت غیرفعال صورت میگیرد‪ :‬به این معنا که سرویسدهنده مرکزی‪،‬‬ ‫•‬
‫قابلیت مدیریت پیوسته و دائم منابع محاسباتی را ندارد‪.‬‬
‫معموالً از پروتکل ‪ HTTP‬برای ارتباط میان پردازشگر و سرویسدهنده مرکزی استفاده میشود‪.‬‬ ‫•‬
‫نکته دیگری که سرویسدهنده مرکزی الزم است تا با آن دست و پنجه نرم کند‪ ،‬مسأله عدم همخوانی و‬ ‫•‬
‫تجانس کامپیوترهای پردازشگر و نیز تفاوت در توان محاسباتی است‪.‬‬
‫کانون نشر علوم‬ ‫‪| 584‬‬

‫نکته بعدی که بسیار قابل تأمل است این است که اساس ایده و روش محاسبات داوطلبانه‪ ،‬بر روی داوطلبانه‬ ‫•‬
‫بودن مشارکت استوار است‪ .‬بنابراین دسترسی پذیری و میزان سودمند بودن هر منبعی‪ ،‬تحت کنترل و اراده‬
‫صاحب آن می باشد‪.‬‬

‫چون اکثر سازمانها شبکه داخلی با سرعت باال دارند میتوانند از این محاسبات داوطلبانه استفاده کنند‪.‬‬

‫یک گرید رومیزی‪ ،‬گریدی است که ویژگیهای زیر را داشته باشد‪:‬‬

‫مجموعه تعریف شدهای از کامپیوترهای مشخص بر روی یک شبکه مشترک‪ ،‬به طوریکه کل این شبکه‬ ‫•‬
‫صرفاً یک دروازه ارتباطی برای ارتباط با خارج داشته باشد و کل آن در پشت یک دیواره آتش قرار داشته‬
‫باشد‪ .‬همگی کامپیوترها‪ ،‬یک سیستم عامل یکسان (یا همگون) را اجرا کرده باشند‪ .‬به طور مثال همگی‬
‫سیستم عامل خانواده ویندوز را اجرا کرده باشند‪.‬‬
‫مجموعهای از سیاست ها که نحوه مشارک کامپیوترها در گرید را مشخص می کنند‪ ،‬تعریف شده و پیاده‬ ‫•‬
‫سازی شدهاند‪ .‬این سیاست ها‪ ،‬باید از اضافه شدن یا حذف شدن یک کامپیوتر از گرید‪ ،‬بدون دخالت مدیر‬
‫گرید پشتیبانی کنند‪.‬‬
‫معماری چنین گریدی به صورت یک شبکه مجازی با همبندی ‪ hub-and-Spoke‬است‪ .‬به این صورت‬ ‫•‬
‫که یک سرویس دهنده اختصاصی مرکزی وجود دارد که همه کامپیوترهای گرید به آن مستقیماً (به صورت‬
‫منطقی) متصل هستند‪ .‬به عبارت دیگر‪ ،‬کامپیوترها در چنین گریدی‪ ،‬از وجود یکدیگر بیخبر هستند مگر‬
‫اینکه مستقیماً توسط سرویسدهنده مرکزی به آنها اطالع داده شود‪.‬‬
‫شبکهای که کامپیوترهای گرید به آن متصل هستند‪ ،‬میتوانند از لحاظ فیزیکی هر همبندی داشته باشند‪.‬‬ ‫•‬
‫سرویس دهنده مرکزی گرید سازمان‪ ،‬یکی از کامپیوترهای شبکه است که انحصاراً این نقش را بازی می‬ ‫•‬
‫کند و از این کامپیوتر جهت کار دیگری استفاده نمیشود‪.‬‬
‫نکته مهم در هر گرید رومیزی‪ ،‬این است که در واقع وقتی قرار است برروی زیرساخت شبکهای و کامپیوترهای‬ ‫•‬
‫سازمان‪ ،‬یک گرید نصب شود‪ ،‬قرار نیست کار و ساختار قبلی کامپیوترها و کاربران مختل شود‪.‬‬
‫آخرین ویژهگی که برای هر گرید رومیزی میتوان متصور شد‪ ،‬یک مکانیزم مدیریتی فعال (برخالف سیستم‪-‬‬ ‫•‬
‫های محاسبات داوطلبانه که غیرفعال هستند)‪ ،‬جهت توزیع‪ ،‬اجرا و بازیابی کارها است‪ .‬به این صورت که کل‬
‫گرید تحت مانیتورینگ‪ ،‬مدیریت و کنترل کامل سرویس دهنده مرکزی در آید‪.‬‬

‫" هدف اصلی از بنا نهادن هر گرید رومیزی‪ ،‬بهم پیوستن منابع محاسباتی سازمان جهت ایجاد یک منبع محاسباتی‬
‫بزرگ و مجازیِ تکی‪ ،‬مدیریت پذیر و قابل استفاده است به طوریکه کارایی کامپیوترهای سازمان با شرکت در گرید‪،‬‬
‫تنزل درجه محسوسی نداشته باشد‪".‬‬
‫‪| 585‬‬ ‫مقدمهای بر محاسبات گرید‬

‫چالشهای شبکه گرید رومیزی عبارتند از‪:‬‬

‫پخش فایلهای کاربر روی سیستمهای مختلف‪.‬‬ ‫•‬


‫روشن کردن سیستم از راه دور وقتی کاربر سیستم خود را خاموش کرده است‪.‬‬ ‫•‬
‫انتقال سیستم توسط کاربر به خارج از سازمان در صورت قابل حمل بودن آن‪.‬‬ ‫•‬

‫اصطالحات گرید رومیزی عبارتند از‪:‬‬

‫* سرویس دهنده گرید‪ :‬منظور همان کامپیوتر مرکزی است که کل سیستم گرید رومیزی را کنترل و مدیریت‬
‫میکند‪.‬‬

‫* پردازشگر گرید (‪ :)Grid Client‬یک کامپیوتر تکی در سازمان که عضو گرید سازمان است و از منابع‬
‫محاسباتی آن‪ ،‬جهت اجرای برنامههای کاربردی توزیعشده گرید استفاده خواهد شد‪.‬‬

‫* مجری پردازشگر گرید‪ : 1‬مولفه نرمافزاری در زیرساخت گرید است که برروی کامپیوترهای سازمان نصب‬
‫میشود و آنها را قادر میسازد تا به عنوان یک پردازشگر گرید عمل نمایند‪.‬‬

‫* واحد کاری‪ : 2‬یک واحد کاری‪ ،‬یک بسته محاسباتی است که توسط سرویسدهنده گرید به پردازشگر گرید‬
‫واگذار میشود‪.‬‬

‫در یک شبکه گرید باید موارد زیر برآورده شوند‪:‬‬

‫امنیت‪ :‬گرید رومیزی‪ ،‬باید از صحت و درستی‪ 3‬محاسبات توزیع شده محافظت نماید‪ .‬باید روشهایی بکار‬ ‫•‬
‫بسته شوند تا دادههای برنامههای توزیعشده و همین طور خودِ برنامهها‪ ،‬توسط خرابکاران دستکاری نشوند‪.‬‬
‫شفافیت‪ :‬گرید رومیزی‪ ،‬از کلیه منابع محاسباتی‪ ،‬ذخیرهسازی و شبکهای کامپیوترهای سازمان استفاده میکند‪.‬‬ ‫•‬
‫این استفاده باید به نحوی باشد که هیچگونه افت کارایی بر روی ماشین پردازشگر ایجاد نکند‪.‬‬
‫بازبودن‪ :‬ارزش یک گرید رومیزی با تعداد و انواع برنامههای کاربردی که میتوانند بر روی آن اجرا شوند‬ ‫•‬
‫رابطه مستقیم دارد‪ .‬به عالوه یک گرید رومیزی باید طوری طراحی شده باشد که بتوان به راحتی برنامههای‬
‫کاربردی جدیدی که تولید میشوند را با برنامههای فعلی پیوند داد‪.‬‬
‫استحکام‪ :‬گرید رومیزی‪ ،‬باید قادر باشد تا کارهای محاسباتی را با کمترین خطاها به پایان برساند‪.‬‬ ‫•‬

‫‪1‬‬
‫‪Grid Client Executive‬‬
‫‪2‬‬
‫‪Work-Unit‬‬
‫‪3‬‬
‫‪Integrity‬‬
‫کانون نشر علوم‬ ‫‪| 586‬‬

‫گسترش پذیری‪ :‬باید طراحی گرید رومیزی‪ ،‬طوری باشد که بتواند با زیاد شدن تعداد کامپیوترها‪ ،‬کماکان به‬ ‫•‬
‫کار خود ادامه دهد و از منابع محاسباتی جدید نیز بتواند حداکثر بهره برداری را انجام دهد‪ .‬گسترش ممکن‬
‫است در چند بُعد اتفاق افتد‪.‬‬
‫مدیریت پذیری بصورت مرکزی‪ :‬گرید رومیزی‪ ،‬باید این ویژگی را داشته باشد که بتوان توسط سرویسدهنده‬ ‫•‬
‫مرکزی کنترل کاملی به روی کلیه منابع راه دور درگرید داشت و آنها را مدیریت کرد‪.‬‬

‫اکثر برنامههای کاربردی که برای اجرا روی گرید رومیزی تولید میشوند به یکی از سه دسته زیر تعلق دارند‪:‬‬

‫داده موازی‪ :‬این برنامهها‪ ،‬مجوعه دادههای بسیار حجیم را به صورت ترتیبی پردازش میکنند با این شرط‬ ‫•‬
‫که هیچ وابستگی میان پردازش یک رکورد از مجموعه داده با پردازش رکورد بعدی وجود نداشته باشد‪.‬‬
‫تعویض پارامتر‪ :‬این برنامهها از یک روش تکرار شونده برای تولید یک سری چند بُعدی از مقادیر ورودی‬ ‫•‬
‫جهت ارزیابی مجموعه مشخص از توابع خروجی استفاده میشوند‪.‬‬
‫احتماالتی‪ :‬این برنامهها به تعداد بسیار زیادی با استفاده از دادههای تصادفی برای ساختن مقادیر ورودی‪،‬‬ ‫•‬
‫برای ارزیابی مجموعه مشخص از توابع خروجی تالش میکنند‪.‬‬

‫چه نوع برنامه کاربردی روی گرید برای اجرا مناسب میباشد؟‬

‫معیار اصلی که باید اندازه گیری و برآورده شود‪ ،‬اصطالحاً میزان ‪ Compute-Intensity‬بودن یک واحد کاری‬
‫می باشد‪ ،‬که در واقع بیان کننده نسبت درصد زمانی است که برای انتقال داده به پردازشگر گرید (و بازپرس گیری‬
‫نتایج از آن) به زمانی که برای انجام محاسبات برروی داده صرف میشود‪ ،‬میباشد‪ .‬در واقع نرخِ ‪Compute-‬‬
‫‪( ،Intensity‬که آن را با ‪ CI‬نمایش میدهیم) با فرمول زیر بدست میآید‪:‬‬

‫)‪4  workunitDuration(sec onds‬‬


‫= ‪CI‬‬
‫)‪Inputsize( KB) + Outputsize( KB‬‬

‫به طور مثال‪ ،‬اگر ما یک برنامه کاربردی آماده سازی شده برای اجرا روی گرید داشته باشیم که در آن یک واحد‬
‫کاری به طور متوسط در ‪ 15‬دقیقه (‪ 900‬ثانیه) برروی یک پردازشگر فرضی گرید با توان محاسباتی میانگین اجرا‬
‫میشود و ‪ (2000KB) 2MB‬داده ورودی داشته باشد و ‪ (400KB) 0.4MB‬داده خروجی تولید کند‪ ،‬خواهیم‬
‫داشت‪:‬‬
‫‪CI = (4  900) / (2000 + 400) = 1.5‬‬
‫در حالت عمومی‪ ،‬برنامههای کاربردی آماده اجرا روی گرید که ‪ CI‬آنها بزرگتر ‪ 1‬شود‪ ،‬برای اجرا روی گرید مناسب‬
‫هستند‪ .‬اما به هر حال این تصمیم‪ ،‬یک قاعده الزم االجرا نیست‪ ،‬به طور اخص اگر میان سرویسدهنده مرکزی‬
‫‪| 587‬‬ ‫مقدمهای بر محاسبات گرید‬

‫گرید و پردازشگرهای گرید سازمانتان خطوط اختصاصی بسیار پرسرعت وجود داشته باشد (به طور مثال ‪Gigabit‬‬
‫‪.)Ethernet‬‬
‫تنظیم دقیق‪ 1‬کردن یک برنامه کاربردی آماده سازی شده جهت اجرا روی گرید‬
‫یک عامل مهم که باید آن را در بررسی مناسب بودن یک برنامه کاربردی جهت اجرا روی گرید لحاظ کرد این‬
‫است که چگونه جهت بدست آوردن منفعت از یک گرید رومیزی در اجرای آن برنامه‪ ،‬برنامه ریزی کرد‪ .‬در حالت‬
‫کلی‪ ،‬منفعت‪ ،‬ترکیبی از دو فاکتور زیر خواهد بود‪:‬‬

‫✓ اینکه بتوان همان جوابها را سریعتر بدست آورد‪ :‬با شکستن به تعداد ثابتی پردازش بر روی ‪ N‬واحد کاری‬
‫که می توانند به صورت موازی اجرا شوند‪ ،‬از قدرت گرید رومیزی جهت تولید نتایج به روش کامالً سریعتر‬
‫استفاده میشود‪.‬‬
‫✓ بدست آوردن یک نتیجه بهتر در همان زمان‪ :‬در چنین حالتی زمان مورد انتظار برای رسیدن به نتایج ثابت‬
‫نگه داشته می شود ولی محاسبات قابل توجه بسیار بیشتری در همان مدت زمانی قبلی انجام میگیرد ( به‬
‫طور مثال در شبیهسازیها)‪.‬‬

‫با بررسی دقیقتر یک فضای پارامتری‪ ،‬با دانستن اینکه کدام یک از این منفعتها مهمتر است ( بسته به نوع برنامه‬
‫کاربردی)‪ ،‬میتوان انتخاب دقیقتری برای ‪ workunit duration‬و سایر دادههای ورودی‪/‬خروجی و سایر‬
‫پارامترها و نحوه شکستن داشت‪ ،‬که تمامی اینها می تواند بر روی نرخ ‪ ،CI‬مستقیماً تأثیر گذار باشد و باعث شود‬
‫که برنامه کمتر‪ /‬بیشتر جهت اجرا شدن روی گرید مناسب باشد‪.‬‬

‫اینکه به مصالحههای مختلف‪ ،‬وزن های مختلف داده شود‪ ،‬عملی خواهد بود که باید چندین بار تکرار شود تا در‬
‫نهایت به نتایج دلخواه رسید‪ .‬این عمل بیشتر شبیه یک هنر خواهد بود تا یک علم‪.‬‬

‫‪ -7-11‬معماری و اجزای گرید‬


‫در این بخش به شرح مؤلفهها و اجزای نرم افزاری که هر گرید باید برای اجرایی بودن و سرویس دادن داشته باشد‬
‫پرداخته میشود‪ .‬سپس به بررسی نکات اصلی مطرح در معماری گرید میپردازیم‪.‬‬

‫‪ -1-7-11‬مؤلفههای اصلی گرید‬


‫مؤلفههای کلیدی و اصلی که در ساختار هرگرید –صرف نظر از نوع گرید‪ -‬وجود دارند عبارتند از‪:‬‬

‫‪ .1‬مؤلفههای مدیریتی‬

‫‪1‬‬
‫‪Fine-Tune‬‬
‫کانون نشر علوم‬ ‫‪| 588‬‬

‫‪ .2‬نرم افزار مجری پردازشگر گرید‬


‫‪ .3‬نرم افزار واگذاری کارها به گرید‬
‫‪ .4‬مدیریت گرید به صورت توزیع شده‪ :‬گرید ممکن است از اتصال چند خوشه به هم بوجود آمده باشد‪ .‬در نتیجه‬
‫در این گریدها‪ ،‬مدیریت گرید به صورت سلسله مراتبی و توزیع شده صورت میگیرد و در واقع کل گرید به‬
‫صورت سلسله مراتبی سازماندهی و مدیریت میشود‪.‬‬
‫‪ .5‬زمانبندها‪ :‬تقریباً تمامی سیستمهای گرید هر کدام دارای نوعی از نرمافزار زمانبندی کارها هستند‪ .‬هنگامی‬
‫که یک برنامه کاربردی گرید توسط کاربری واگذار میشود‪ ،‬این نرم افزار‪ ،‬ماشین (ماشینهای) مناسب را که‬
‫برنامه باید روی آن اجرا شود مشخص میکند‪.‬‬
‫‪ .6‬مکانیزمهای ارتباط بین پردازهای و زبانها و محیطهای برنامهنویسی روی گرید‪ :‬هر سیستم گرید باید‬
‫مکانیزمهایی جهت برقراری ارتباطات بین پردازهای (میانِ کارهای گرید) در اختیار دهد تا کارهای مربوط به‬
‫برنامههای کاربردی توزیع شده‪ ،‬بتوانند از آن طریق با یکدیگر ارتباط برقرار کنند‪.‬‬

‫‪ -2-7-11‬شرح معماری الیه ای گرید و مؤلفه های آن‬


‫معماری گرید در چهار الیه مختلف سازماندهی میشود (به شکل ‪ 1-11‬توجه نمایید)‪ .‬الیهها از سطح پایین به باال‬
‫به ترتیب عبارتند از ‪ User-Level Middleware ،Core Middleware ،Fabric‬و در باالترین سطح‪،‬‬
‫الیه ‪ Application‬قرار گرفته است‪.‬‬

‫پایینیترین الیه‪ Fabric ،‬است که کلیه منابع در دسترس گرید را در بر میگیرد‪ .‬الیه باالیی آن‪Core ،‬‬
‫‪ Middleware‬است و همانطوری که در شکل نیز مشاهده میشود‪ ،‬یک میان افزار است که کلیه سرویسهای‬
‫پایهای و اساسی گرید را ارائه میدهد‪ .‬الیه بعدی نیز یک میان افزار تحت عنوان ‪User-Level Middleware‬‬
‫است که سرویسهای سطح کاربری گرید را ارائه میدهد‪ .‬در باالترین سطح‪ ،‬برنامههای کاربردی توزیع شده قرار‬
‫میگیرند که بر روی گرید اجرا خواهند شد‪.‬‬

‫با توجه به شکل مشخص میشود که هسته هر سیستم گرید توسط دو الیه میانافزار که بر روی یکدیگر قرار‬
‫گرفتهاند ساخته میشود‪ .‬میانافزار زیرین (‪ )Core Middleware‬سرویسهای اصلی گرید را ارائه کرده و این‬
‫سرویسها در اختیار کامپوننتهای میانافزار باالتر (‪ )User-Level Middleware‬قرار میگیرند‪ .‬میانافزار‬
‫باالیی نیز به نوبه خود امکاناتی را ارائه میدهد که به توسط آنها بتوان برنامههای کاربردی گرید را تولید و بر روی‬
‫گرید اجرا کرد‪.‬‬

‫در الیه ‪ ،Fabric‬انواع منابع مختلف (از انواع مختلف) به همراه مدیران محلی آن منابع قرار دارند‪ .‬به عالوه کلیه‬
‫واسطهای ارتباطی با مدیران منابع نیز در این الیه قرار میگیرند‪ .‬به طور مثال‪ ،‬توابع ‪ API‬و یا توابع کتابخانهای‬
‫‪| 589‬‬ ‫مقدمهای بر محاسبات گرید‬

‫که امکان ارتباط با سیستم عاملها‪ ،‬وسایل‪ ،‬سرویسدهندههای شبکهای‪ ،‬سیستمهای مدیریت بانک اطالعاتی و ‪...‬‬
‫را میدهند‪ ،‬همگی در این الیه قرار میگیرند‪ .‬میانافزار باالیی (‪ )Core Middleware‬از همین امکانات برای‬
‫ساخت سیستم توزیع شده و دسترسی به منابع مختلف استفاده میکند‪.‬‬

‫الیه ‪ Core Middleware Layer‬دقیقاً یک سیستم توزیع شده است که به صورت یک میانافزار پیادهسازی‬
‫میشود‪ .‬وظیفه اصلی این الیه‪ ،‬ارائه درجه باالیی از شفافیت در دسترسی به منابع ناهمگون در الیه ‪ Fabric‬است‪.‬‬
‫به عبارت دیگر این الیه‪ ،‬تفاوتها در نحوه دستیابی به منابع مشابه اما ناهمگون را از دید سرویسگیرندههای‬
‫میانافزار فوقانی (‪ )User-Level Middleware‬پنهان ساخته و روشهای یکسانی برای دسترسی به آنها‬
‫ارائه میدهد‪ .‬سرویسهای پایهای و هستهای گرید همه در این الیه تعریف و پیادهسازی میشوند‪.‬‬

‫شکل ‪ : 1-11‬معماری الیهای گرید محاسباتی‬


‫کانون نشر علوم‬ ‫‪| 590‬‬

‫‪ User Level Middleware Layer‬یک میانافزار است که بر روی میانافزار ‪Core Middleware‬‬
‫قرارگرفته و از سرویسهای آن استفاده میکند‪ .‬این الیه دو وظیفه عمده دارد‪:‬‬

‫‪ .1‬مدیریت و واسطهگری منابع‪ :‬مهمترین مسأله در هر گرید مدیریت منابع به صورتی کامالً بهینه‪ ،‬امن‬
‫و طبق سیاست های از پیش تعیین شده مالکان منابع در دسترسی به آن منابع است‪ .‬هنگامی که یک کاربر‬
‫یک برنامه کاربردی را جهت اجرا به سرویسدهنده گرید واگذار میکند‪ ،‬در وهله اول باید لیست کاملی از‬
‫کلیه منابع محاسباتی در دسترس گرید داشته باشیم تا بدانیم از کدام یک از منابع محاسباتی و طبق چه‬
‫سیاستها و هزینههایی میتوان استفاده کرد‪.‬‬
‫‪ .2‬زبانهای برنامهنویسی روی گرید‪ ،1‬کتابخانهها‪ ،‬کامپایلرها‪ ،‬محیطها و سیستمهای زمان‪-‬‬
‫اجرا‪ :‬برنامههای کاربردی روی گرید معموالً برنامههایی هستند که شدیداً ‪ Data-Intensive‬و‪/‬یا ‪CPU-‬‬
‫‪ Intensive‬هستند‪ .‬آنها برنامههایی غول پیکر هستند که معموالً به حجم عظیمی از دادههای ورودی نیاز‬
‫دارند که این دادهها معموالً بر روی ماشینهای مختلف و در سایتهای مختلف توزیع شدهاند‪ .‬این برنامهها‬
‫معموالً به توان محاسباتی بسیاری نیاز دارند و الزم است از چندپردازندههای قدرتمند و یا خوشهها و یا‬
‫ماشینهای متعدد در اجرای آنها استفاده شود‪ .‬آنها اکثراً به صورت تعداد زیادی زیربرنامه توزیع شده و‪/‬یا‬
‫موازی پیاده سازی میشوند و این زیربرنامهها الزم دارند به کرات در طول زمان با یکدیگر تعامل کنند و‬
‫دادههایی را میان یکدیگر رد و بدل کنند‪ .‬وظیفه این الیه مدیریت این مسأله میباشد‪.‬‬

‫‪ Application/Portal Layer‬در باالترین سطح در هر گرید‪ ،‬برنامههای کاربردی گرید قرار میگیرند‪ .‬در‬
‫این الیه عالوه بر برنامههای کاربردی‪ ،‬پرتالها یا به عبارت دقیقتر پرتالهایِ گرید قرار میگیرند‪ .‬کاربران باید‬
‫بتوانند از طریق پرتال های گرید‪ ،‬منابع (باالخص منابع محاسباتی) را شناسایی کنند‪ ،‬به طور راه دور به آنها متصل‬
‫شوند‪ ،‬برنامههای خود را برای اجرا روی آنها بفرستند و اجرا کنند‪ ،‬نتایج و خروجیها را از آنها دریافت کنند و‬
‫هزینههای محاسبه شده را پرداخت کنند‪.‬‬

‫‪ -8-11‬مدیریت منابع و زمانبندی در گرید‬

‫محیط گرید‪ ،‬به لحاظ منابع تحت پوشش‪ ،‬محیطی بسیار پیچیده است‪ .‬فاصلههای جغرافیایی زیاد منابع توزیع شده‪،‬‬
‫معماریها و سیستم عاملهای متفاوت ماشینهای مختلف‪ ،‬تفاوتها در روشهای دستیابی به هر یک از منابع‪،‬‬
‫متغیر بودن محیط به لحاظ منابع در دسترس و در نهایت وجود سیاستهای مختلف در دسترسی به منابع‪ ،‬همه و‬
‫همه مسائل پیچیده ای هستند که گرید باید با آنها دست و پنجه نرم کند‪ .‬کامالً واضح است مدیریت مؤثر منابع‪،‬‬

‫‪1‬‬
‫‪Grid-Enabled Programming Languages‬‬
‫‪| 591‬‬ ‫مقدمهای بر محاسبات گرید‬

‫امری حیاتی در سیستمهای گرید محسوب میشود و به عالوه‪ ،‬زمانبندی باید به نحو احسن در این سیستمها انجام‬
‫شود تا از یک طرف کاربران و برنامههای کاربردی به بهترین نحو سرویس دریافت کنند و از طرف دیگر از کلیه‬
‫منابع گرید‪ ،‬بهرهبرداری بهینه و حداکثر صورت گیرد‪ .‬در واقع میتوان گفت‪ ،‬کارآمدی هر سیستم گرید‪ ،‬به میزان‬
‫زیادی در گرو کارایی و مؤثر بودن روشهای مدیریت منابع و نیز سیاستها و مکانیزمهای زمانبندی مورد استفاده‬
‫در اجرای وظایف در این محیط میباشد‪.‬‬

‫در ابتدا‪ ،‬به معرفی سه مدل زمانبندی مورد استفاده در محیط گرید ‪ ،‬یعنی مدلهای زمانبندی متمرکز‪ , 1‬سلسه‬
‫مراتبی‪ 2‬و توزیع شده‪ 3‬پرداخته میشود‪ .‬سپس‪ ،‬مراحل مختلف پروسه زمانبندی شرح داده میشود‪.‬‬

‫طبق تعریف‪ ،‬زمانبندی در گرید به معنای عمل واگذاری برنامههای کاربردی به منابع محاسباتی در چندین حوزه‬
‫مدیریتی است به نحوی که‪:‬‬

‫نیازمندیهای برنامه کاربردی تأمین گردد (مانند معماری‪ ،‬سیستم عامل‪ ،‬مؤلفههای نرم افزاری و ‪)...‬‬ ‫‪-1‬‬
‫نیازمندیهای مالک برنامه کاربردی تأمین گردد (مانند کیفیت سرویس مورد نظر کاربر‪ ،‬مهلت زمانی مورد‬ ‫‪-2‬‬
‫نظر کاربر‪ ،‬ارجحیتهای کاربر در مورد کارایی مد نظر یا هزینههایی که باید بپردازد و ‪)...‬‬
‫احترام به سیاستهای تعیین شده از سمت مالکان منابع تضمین گردد (مانند سیاستهای مختلف دستیابی‬ ‫‪-3‬‬
‫به منابع و محاسبه دقیق هزینهها و ‪)...‬‬
‫نیازمندیهای خود سیستم گرید تضمین گردد (مانند تقسیم بار و ‪) ...‬‬ ‫‪-4‬‬
‫‪ -1-8-11‬مدلهای مختلف زمانبندی‬

‫سه مدل عمده زمانبندی در محیط گرید وجود دارند که عبارتند از مدل متمرکز‪ ،‬مدل توزیعشده و مدل سلسله‬
‫مراتبی‪ .‬در این بخش مروری بر هر یک از این مدلها و مزایا و معایب آنها خواهیم داشت‪.‬‬

‫‪ -1-1-8-11‬مدل زمانبندی متمرکز‬

‫در یک محیط که از مدل زمانبندی متمرکز استفاده میشود‪ ،‬یک ماشین مرکزی (گره) به عنوان مدیر منابع جهت‬
‫زمانبندی کارها عمل مینماید و تمامی ماشینهای پردازشگر در محیط‪ ،‬تحت پوشش و مدیریت این ماشین مرکزی‬
‫هستند‪ .‬این مدل زمانبندی‪ ،‬معموالً در شرایطی استفاده میشود که کلیه منابع (ماشینهای پردازشگر) ویژگیها و‬
‫سیاست های دستیابی یکسان داشته باشند‪ .‬به طور مثال اگر یک سایت شامل چندین ماشین است که کلیه آنها‬

‫‪1‬‬
‫‪Centralized Scheduling‬‬
‫‪2‬‬
‫‪Hierarchical Scheduling‬‬
‫‪3‬‬
‫‪Distributed Scheduling‬‬
‫کانون نشر علوم‬ ‫‪| 592‬‬

‫تحت تملک یک مالک واحد هستند و مالک سیاست یکسانی برای دستیابی به تمامی آنها تعیین کرده است‪ ،‬میتوان‬
‫از یک زمانبند مرکزی استفاده کرد که کلیه ماشینهای آن سایت را تحت پوشش قرار دهد‪ .‬شکل ‪ ، 2-11‬معماری‬
‫یک زمانبندی مرکزی را نمایش میدهد‪.‬‬

‫‪Jobs‬‬

‫زمانبند مرکزی‬

‫‪Job1‬‬ ‫‪Job2‬‬ ‫‪Job N‬‬


‫‪Job3‬‬

‫ماشین‪1‬‬ ‫ماشین‪2‬‬ ‫ماشین‪3‬‬ ‫ماشین‪N‬‬


‫شکل ‪ :2-11‬معماری مدل زمانبندی متمرکز‬
‫در این سناریو‪ ،‬کارها ابتدا به زمانبند مرکزی واگذار میشوند و زمانبند مرکزی‪ ،‬آنها را به سایر ماشینهای پردازشگر‬
‫مناسب‪ ،‬واگذار میکند‪ .‬کار هایی که فعالً نمیتوان پردازش آنها را شروع کرد‪ ،‬در یک صف کار مرکزی قرار داده‬
‫میشوند تا پردازش آنها بعداً شروع شود‪ .‬مزیت سیستم زمانبندی متمرکز این است که زمانبند‪ ،‬میتواند تصمیمات‬
‫بهتر و بهینهتری جهت زمانبندی اتخاذ کند و این صرفاً به این دلیل است که در این روش‪ ،‬زمانبند میتواند کلیه‬
‫اطالعات ضروری در مورد منابع در دسترس (مانند میزان بار روی ماشینها و ‪ )...‬را به صورتی کامالً بروز در اختیار‬
‫داشته باشد‪ .‬اما همانطور که مشاهده میشود‪ ،‬این مدل زمانبندی با توسعه پذیری سیستم مشکل دارد‪ ،‬زیرا زمانی‬
‫که تعداد ماشینهای سیستم افزایش یا بد‪ ،‬زمانبند دچار مشکل خواهد شد‪ ،‬زیرا خودش باید تمامی ماشینها را‬
‫مدیریت کند‪ .‬به عالوه‪ ،‬این مدل تحمل پذیری کمی در مقابل خطاها دارد و خیلی مدل قابل اعتمادی نیست‪ ،‬زیرا‬
‫اگر به دالیل سختافزاری یا نرمافزاری ماشین سرویسدهنده زمانبند مرکزی‪ ،‬دچار خرابی و از کار افتادگی شود‪،‬‬
‫کل سیستم دچار مشکل خواهد شد‪.‬‬

‫‪ -2-1-8-11‬مدل زمانبندی توزیع شده‬

‫در این مدل زمانبندی‪ ،‬هیچ زمانبند مرکزی که مسئول مدیریت کلیه کارها باشد وجود ندارد‪ .‬در عوض‪ ،‬زمانبندی‬
‫توزیع شده از چند زمانبند محلی استفاده میکند که با یکدیگر جهت واگذاری کارها به کلیه ماشینهای پردازشگر‬
‫‪| 593‬‬ ‫مقدمهای بر محاسبات گرید‬

‫تحت پوشش‪ ،‬تعامل انجام می دهند‪ .‬دو مکانیزم جهت ارتباط یک زمانبند با زمانبندهای دیگر وجود دارد‪ :‬ارتباط‬
‫مستقیم و ارتباط غیر مستقیم‪.‬‬

‫زمانبندی توزیع شده بر مشکل توسعه پذیری به راحتی میتواند غلبه کند‪ ،‬پس این مدل مشکل مدل زمانبندی‬
‫متمر کز را ندارد‪ .‬به عالوه تحمل پذیری باالتری در مقابل خطاها دارد و قابل اعتمادتر است‪ .‬اما نداشتن یک زمانبند‬
‫مرکزی که اطالعات کاملی در مورد تمامی منابع در دسترس داشته باشد‪ ،‬معموالً منجر به تصمیمات نیمه‪-‬بهینه‬
‫در زمانبندی خواهد شد‪.‬‬

‫✓ ارتباطات مستقیم‪ :‬در این سناریو‪ ،‬هر زمانبند محلی میتواند مستقیماً با سایر زمانبندها در مورد واگذاری‬
‫کارها ارتباط داشته باشد‪ .‬هر زمانبند‪ ،‬لیستی از تمامی زمانبندهای دیگر دارد و یا ممکن است یک دایرکتوری‬
‫مرکزی که کلیه اطالعات را در مورد هر زمانبند نگهداری میکند بر روی ماشینی در محیط وجود داشته باشد‬
‫( روش دوم بهتر است‪ ،‬زیرا اگر زمانبندی در محیط اضافه یا کم شود‪ ،‬دیگر نیازی نخواهد بود این تغییر در‬
‫لیست تک تک تمامی زمانبندها اعمال شود)‪ .‬به شکل ‪ 3-11‬دقت کنید‪.‬‬
‫زمانبند ‪1‬‬ ‫زمانبند ‪3‬‬
‫‪jobs‬‬
‫منابع محلی زمانبند ‪1‬‬ ‫منابع محلی زمانبند ‪3‬‬

‫‪jobs‬‬
‫‪jobs‬‬ ‫‪jobs‬‬
‫‪jobs‬‬

‫منابع محلی زمانبند ‪2‬‬ ‫منابع محلی زمانبند ‪4‬‬


‫‪jobs‬‬
‫زمانبند ‪2‬‬ ‫زمانبند ‪4‬‬

‫شکل ‪ :3-11‬معماری ارتباط مستقیم در مدل زمانبندی توزیع شده‬

‫در این روش اگر زمانبند محلی نتواند کاری را به منابع محلیاش واگذار کند‪ ،‬با سایر زمانبندهای راه دور‪ ،‬جهت‬
‫یافتن مناسبترین ماشین برای اجرای کار ‪ ،‬ارتباط برقرار خواهد کرد‪ .‬هر زمانبند ممکن است صف (یا صفهای) کار‬
‫محلی برای مدیریت منابع تحت پوشش خود داشته باشد‪.‬‬
‫✓ ارتباطات غیر مستقیم (ارتباط از طریق یک ‪ Job Pool‬مرکزی)‪:‬‬
‫‪1‬‬

‫✓ در این سناریو‪ ،‬کارهایی که نمیتوانند بالفاصله پردازش شوند‪ ،‬به یک ‪ Job Pool‬مرکزی فرستاده میشوند‪.‬‬
‫در مقایسه با روش ارتباط مستقیم‪ ،‬در این روش زمانبندهای محلی میتوانند کارهایی را که برای اجرا بر روی‬

‫‪1‬‬
‫را استخر‪ ،‬حوضچه و مانند آن ترجمه میکنند که کامالا نارساست‪ .‬منظور ‪ Pool‬گاهی اوقات برخی مراجع‪ ،‬اصطالح تخصصی‬
‫است‪ Repository.‬در واقع یک ‪Pool‬از‬
‫کانون نشر علوم‬ ‫‪| 594‬‬

‫منابعشان مناسبترند را انتخاب کنند و آنها را برای اجرا روی ماشینهایشان به صورت محلی زمانبندی کنند‪.‬‬
‫در این سناریو حتماً باید سیاستهایی باشند که توسط آنها تضمین شود اوالً یک کار برای مدت بسیار طوالنی‬
‫در ‪ Job Pool‬منتظر اجرا نماند و باالخره اجرا شود‪ ،‬ثانیاً یک کار توسط دو (یا بیشتر) زمانبند جهت اجرا‬
‫برداشته نشود‪ .‬به شکل ‪ 4-11‬دقت کنید‪.‬‬

‫‪jobs‬‬ ‫‪jobs‬‬

‫منابع محلی زمانبند ‪1‬‬ ‫منابع محلی زمانبند ‪3‬‬


‫زمانبند ‪1‬‬ ‫زمانبند ‪3‬‬

‫‪Job Pool‬‬
‫زمانبند ‪2‬‬ ‫زمانبند ‪4‬‬

‫منابع محلی زمانبند ‪2‬‬ ‫منابع محلی زمانبند ‪4‬‬

‫‪jobs‬‬ ‫‪jobs‬‬

‫شکل ‪ ،4-11‬معماری ارتباط غیر مستقیم در مدل زمانبندی توزیع شده‬


‫‪ -3-1-8-11‬مدل زمانبندی سلسله مراتبی‬

‫در مدل زمانبندی سلسله مراتبی‪ ،‬یک زمانبند مرکزی و تعدادی زمانبند محلی وجود دارد و زمانبند مرکزی با‬
‫زمانبندهای محلی جهت واگذاری کارها تعامل انجام میدهد (تعامل به صورت یک طرفه از سمت زمانبند مرکزی‬
‫به زمانبندهای محلی است)‪ .‬زمانبند مرکزی در واقع نوعی ‪ Meta-Scheduler‬است که کارهای واگذار شده را‬
‫به زمانبندهای محلی ارسال میکند‪ .‬به شکل ‪ 5-11‬دقت کنید‪.‬‬
‫‪jobs‬‬

‫زمانبند مرکزی‬

‫منابع محلی زمانبند ‪1‬‬ ‫منابع محلی زمانبند ‪2‬‬


‫زمانبند ‪1‬‬ ‫زمانبند ‪2‬‬
‫شکل ‪ ،5-11‬معماری مدل زمانبندی سلسله مراتبی‬
‫‪| 595‬‬ ‫مقدمهای بر محاسبات گرید‬

‫همانند مدل زمانبندی متمرکز‪ ،‬زمانبندی سلسله مراتبی نیز‪ ،‬مشکالت توسعه پذیری و تحمل پذیری کم در مقابل‬
‫خطاها را دارد‪ .‬اما‪ ،‬در مقایسه با زمانبندی متمرکز‪ ،‬یک مزیت مدل زمانبندی سلسله مراتبی این است که زمانبند‬
‫مرکزی و زمانبندهای محلی میتوانند سیاستهای متفاوتی در زمانبندی کارها داشته باشند‪.‬‬

‫‪ -2-8-11‬مراحل مختلف فرآیند زمانبندی‬


‫در بخش قبل‪ ،‬انواع مدلهای متصور برای زمانبندی در محیط گرید را بررسی کردیم‪ .‬در این بخش‪ ،‬بر روی خود‬
‫مفهوم زمانبندی‪ ،‬و در واقع کارهایی که باید در واگذاری یک کار به یک ماشین صورت گیرند‪ ،‬تمرکز میکنیم‪.‬‬
‫زمانبندی در گرید‪ ،‬شامل مراحل زیر است‪:‬‬

‫‪ )1‬اکتشاف منابع‪ :‬هدف اکتشاف منابع‪ ،‬شناسایی لیستی از منابع در دسترس جهت واگذاری کارها میباشد‪.‬‬
‫به منظور اینکه بتوان در محیط پویای گرید (که منابع در دسترس آن ممکن است در طول زمان با نرخهای‬
‫کم یا زیاد تغییراتی داشته باشند) زمانبندی را انجام داد‪ ،‬زمانبند احتیاج به روشی برای لحاظ کردن اطالعات‬
‫وضعیت منابع در دسترس در تصمیمات زمانبندیاش دارد و در واقع باید روشی وجود داشته داشته باشد تا‬
‫این اطالعات به دست زمانبند برسد‪ .‬جهت انجام اکتشاف منابع در یک محیط گرید‪ ،‬از سه مدل متفاوت‬
‫ممکن است استفاده شود ‪ :‬مدل ‪ ،Pull‬مدل ‪ ،Push‬مدل ترکیبی ‪.Push-Pull‬‬
‫‪ )2‬انتخاب منابع‪ :‬بعد از اینکه لیست کلیه ماشینهای پردازشگر در دسترس شناخته شد‪ ،‬فاز دوم فرآیند‬
‫زمانبندی‪ ،‬انتخاب ماشینهایی است که به لحاظ قیود ذکر شده و نیازمندیهای اعالم شده از سوی مالک‬
‫کار‪ ،‬حائز شرایط باشند و بتوانند بهتر از سایر ماشینها این نیازمندیها را پوشش دهند‪ .‬به طور مثال کاربر‬
‫ممکن است در مورد ‪ ،CPU-Usage‬حافظه اصلی در دسترس‪ ،‬ظرفیت دیسک سخت مورد نیاز و ‪...‬‬
‫نیازمندی هایی را اعالم کرده باشد‪ .‬خروجی فاز انتخاب منابع‪ ،‬شناسایی لیست تمامی ماشینهایی است که‬
‫میتوانند حداقل نیازمندیهای مورد درخواست کاربر جهت اجرای کار (یا برنامه کاربردی) واگذار شدهرا تأمین‬
‫کنند که آنرا با نماد ‪ Rselected‬نمایش میدهیم و در واقع رابطه زیر برقرار است‪𝑹𝑆𝑒𝑙𝑒𝑐𝑡𝑒𝑑 ⊆ :‬‬
‫𝑒𝑙𝑏𝑎𝑙𝑖𝑎𝑣𝑎𝑹‬
‫‪ )3‬تولید زمانبندی‪ :‬تولید زمانبندی شامل دو مرحله است‪ :‬انتخاب مناسبترین ماشین جهت واگذاری یک کار‬
‫و ارائه استراتژیهای انتخاب کارها‪.‬‬
‫‪ )4‬پردازش کار ‪ :‬هنگامی که یک کار و ماشین پردازشگر مناسب اجرای آن یافت شد‪ ،‬مرحله بعدی واگذاری‬
‫کار به ماشین پردازشگر جهت اجرا است‪ .‬واگذاری یک کار به ماشین پردازشگر و اجرای آن ممکن است به‬
‫سادگی اجرای یک دستور به صورت راه دور در ماشین پردازشگر توسط زمانبند باشد و یا کامالً پیچیده و‬
‫نیازمند اجرای مجموعهای از اسکریپتها باشد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 596‬‬

‫‪ -9-11‬معرفی برخی پروژهها و سیستمهای مهم گرید‬


‫در این بخش‪ ،‬مروری بر روی برخی پروژههای مطرح و تالشهای صورت گرفته در زمینه محاسبات گرید در دنیا‬
‫خواهیم داشت‪ .‬همانطوری که گفتیم‪ ،‬مدل معماری گرید به چهار الیه منطقی تقسیم می شود‪ :‬الیه ‪ ،Fabric‬الیه‬
‫‪ ،Core Middleware‬الیه ‪ User-Level Middleware‬و الیه ‪ .Applications and Portals‬از‬
‫همین تقسیمبندی برای معرفی پروژههای مطرح گرید استفاده خواهد شد‪.‬‬

‫در بخش اول‪ ،‬در جدول ‪ ،2-11‬لیستی از تمامی پروژهها و سیستمهای گرید در سراسر دنیا ارائه میشود‪ .‬جدول‬
‫‪ ،11-3‬دید دقیقتری نسبت به برخی از پروژههای ارائه شده در جدول ‪ 2-11‬که در استرالیا انجام شدهاند (یا در‬
‫دست تکامل هستند)‪ ،‬خواهد داد‪ .‬جدول ‪ 4-11‬همین کار را در مورد پروژههای مطرح گرید در اروپا ارائه میدهد و‬
‫در جدول ‪ ،5-11‬مروری سریع بر برخی پروژهها و سیستمهای گرید که در ایاالت متحده آمریکا در دست انجام‬
‫هستند خواهیم داشت و در نهایت در جدول ‪ 6-11‬پروژههای گرید در ژاپن معرفی میشوند‪ .‬در بخش دوم‪ ،‬از میان‬
‫تمامی سیستمها و پروژههای معرفی شده در بخش اول‪ ،‬برخی که حائز اهمیت بیشتری هستند‪ ،‬به صورت دقیقتر‬
‫ولی خالصه شده بررسی خواهند شد‪.‬‬

‫‪ -1-9-11‬معرفی پروژهها و سیستمهای مطرح گرید در دنیا‬


‫جدول ‪ : 2-11‬پروژه ها و سیستمهای مطرح گرید در دنیا‬

‫عنوان پروژه‪/‬‬
‫توضیحات‬ ‫سازمان انجام دهنده‬ ‫ردیف‬ ‫نوع سیستم‬
‫سیستم‬
‫یک محیط برنامه نویسی و‬
‫سیستم زمان‪-‬اجرا‪ ،‬جهت‬ ‫‪University of‬‬
‫‪NetSolve‬‬ ‫‪1‬‬
‫دستیابی به منابع محاسباتی با‬ ‫‪Tennessee‬‬
‫کارایی باال به صورت شفاف‬
‫مشابه با پروژه ‪NetSolve‬‬ ‫‪Tokyo Institute‬‬
‫‪Ninf‬‬ ‫‪2‬‬
‫‪of Technology‬‬
‫یک زمانبند برای برنامههای‬
‫‪UPC, Barcelona‬‬ ‫‪ST-ORM‬‬ ‫‪3‬‬
‫دستهای توزیعشده‬ ‫سیستمهای‬
‫یک زمانبند برای برنامههای‬ ‫‪PPNL and‬‬ ‫مجتمع گرید‬
‫‪SILVER‬‬ ‫‪4‬‬
‫دستهای توزیعشده‬ ‫‪University of Utah‬‬
‫یک سیستم برنامه نویسی شیء‬
‫‪Vrije University‬‬ ‫‪Albatross‬‬ ‫‪5‬‬
‫گرا‬
‫یک محیط پرتال جهت سرویس‪-‬‬
‫‪Purdue University‬‬ ‫‪PUNCH‬‬ ‫‪6‬‬
‫دهی و اجرای برنامههای گرید‬
‫یک محیط برنامه نویسی و‬
‫سیستم زمان‪-‬اجرا‪ ،‬مبتنی بر زبان‬ ‫‪UCSB‬‬ ‫‪Javelin‬‬ ‫‪7‬‬
‫جاوا و ‪J2EE‬‬
‫‪| 597‬‬ ‫مقدمهای بر محاسبات گرید‬

‫محیطی جهت پردازش اطالعات‬ ‫‪University of‬‬


‫‪DISCWorld‬‬ ‫‪8‬‬
‫به صورت توزیعشده‬ ‫‪Adelaide‬‬
‫یک محیط برای اجرای کارهای‬
‫تولید شده به زبان جاوا جهت‬
‫‪Germany‬‬ ‫‪Unicore‬‬ ‫‪9‬‬
‫دستیابی به ابررایانههای راه دور‬

‫مجوعه ابزار جهت تولید برنامه‪-‬‬


‫‪Mithral‬‬ ‫‪Cosm‬‬ ‫‪1‬‬
‫های نظیربه نظیر‬
‫مجوعه ابزاری که محیطی امن‬
‫برای دستیابی یکسان به منابع‬
‫‪ANL and ISI‬‬ ‫‪Globus‬‬ ‫‪2‬‬
‫محاسباتی و ذخیره سازی راه دور‬
‫فراهم می سازد‬
‫فنآوریهایی در اختیار قرار میدهد‬
‫که با استفاده از آنها امکان به‬
‫اشتراک گذاری اقتصادی منابع‪،‬‬ ‫‪University of‬‬
‫‪Gridbus‬‬ ‫‪3‬‬
‫‪Melbourne‬‬
‫مدیریت و زمانبندی آنها فراهم‬
‫میشود‬ ‫‪Core‬‬
‫مجوعه ابزار جهت شبیهسازی‬ ‫‪Monash‬‬ ‫‪Middleware‬‬
‫‪GridSim‬‬ ‫‪4‬‬
‫گرید‬ ‫‪University‬‬
‫یک چهارچوب و زیرساخت مبتنی‬
‫بر جاوا برای محاسبات نظیر به‬ ‫‪Sun Microsystems‬‬ ‫‪JXTA‬‬ ‫‪5‬‬
‫نظیر‬
‫یک سیستم عامل گرید که‬
‫دسترسی شفاف به منابع توزیع‪-‬‬ ‫‪University of‬‬
‫‪Legion‬‬ ‫‪6‬‬
‫‪Virginia‬‬
‫شده را فراهم می سازد‬
‫یک زیرساخت سطح پایین جهت‬
‫تولید برنامههای نظیر به نظیر بر‬ ‫‪P2P‬‬
‫‪Intel‬‬ ‫‪7‬‬
‫‪Accelerator‬‬
‫روی ‪.Net Platform‬‬

‫یک سیستم زمانبندی برنامههای‬


‫‪UCSD‬‬ ‫‪AppLeS‬‬ ‫‪1‬‬
‫کاربردی‬
‫یک سیستم پردازش کارها در‬ ‫‪University of‬‬ ‫‪User-Level‬‬
‫‪Condor-G‬‬ ‫‪2‬‬
‫محیطهای گسترده‬ ‫‪Wisconsin‬‬ ‫‪Middleware:‬‬
‫یک زمانبند اقتصادی برای‬ ‫زمانبندها‬
‫برنامههای کاربردی تعویض‬ ‫‪Monash‬‬
‫‪Nimrod-G‬‬ ‫‪3‬‬
‫‪University‬‬
‫پارامتر‬
‫کانون نشر علوم‬ | 598

‫ بر روی‬MPI ‫پیادهسازی‬ Northern Illinois


MPICH-G 1
Globus University
Nimrod
‫یک زبان اعالنی که امکان برنامه‬ Monash
University parameter
2
‫نویسی پارامتریک را میدهد‬ programming
tools
‫یک محیط برنامه نویسی و اجرا بر‬
HLRS, Stuttgart MetaMPI 3 User-Level
MPI ‫اساس‬
Middleware:
‫یک چهارچوب جهت تولید برنامه‬ Max Planck ‫محیطهای برنامه‬
‫های موازی که با استفاده از‬ Institute for
‫نویسی‬
Gravitational Cactus 4
‫ تولید‬Globus ‫ و‬MPICH-G Physics
‫شده است‬
-‫مجموعه ابزار جهت تولید برنامه‬
Rice University GrADS 5
‫های کاربردی گرید‬
-‫مجموعه ابزار برای تولید پرتال‬
SDSC GridPort 6
‫های گرید‬

European
High-energy physics1 CERN 1
DataGrid
High-energy physics UCF and ANL GriPhyN 2
High-energy physics Caltech and ANL PPDG 3
‫مدل سازی مولکولی جهت‬ Monash
‫طراحی داروی جدید‬ Virtul 4
University and
Laboratory
WEHI
Melbourne 5
High-energy physics HEPGrid
University
‫برخی گریدهای ایجاد‬
‫مهندسی زلزله‬ NCSA NEESGrid 6
‫شده برای کاربردهای‬
‫علوم فضایی‬ NASA IPG 7 ‫مختلف‬
‫پردازش صفحات گسترده‬ Monash, QUT, 8
ActiveSheets
and DSTC
‫مدل سازی آب و هوا‬ LLNL, ANL, and Earth System 9
NCAR Grid
Virtual
Neuroscience2 UCSD 10
Instruments
‫دسترسی به بانکهای اطالعاتی‬ Johns Hopkins National
‫توزیع شده در مورد علم نجوم و‬ University and Virtual 11
‫پردازش راه دور اطالعات‬ Caltech Observatort

1
‫یک شاخه از علم فیزیک نوین‬
2
‫کلیه رشتههای علمی مرتبط با سیستم عصبی و مغز انسان‬
‫‪| 599‬‬ ‫مقدمهای بر محاسبات گرید‬

‫‪Osaka University‬‬
‫تحلیل نحوه عملکرد مغز انسان‬ ‫‪Brain Activity‬‬ ‫‪12‬‬
‫‪and the University‬‬
‫‪analysis‬‬
‫‪of Melbourne‬‬
‫بهینه سازی طراحی ماهوارهها و‬ ‫‪Southampton‬‬
‫‪Geodise‬‬ ‫‪13‬‬
‫موشکهای فضائی‬ ‫‪University‬‬
‫‪Magnetic fusion‬‬ ‫‪Princeton/ANL‬‬ ‫‪Fusion Grid‬‬ ‫‪14‬‬

‫جدول ‪ : 3-11‬برخی تالشها در زمینه گرید در استرالیا‬

‫توضیحات‬ ‫نوع سیستم‬ ‫عنوان پروژه‬


‫‪ ActiveSheets Application‬امکان پردازش شفاف برنامههای صفحه گسترده را که‬ ‫‪ActiveSheets‬‬
‫‪ Portal‬در نرم افزار ‪ Microsoft Excel‬مدل شدهاند‪ ،‬بر روی کامپیوترهای‬
‫توزیع شده میدهد‪ ActiveSheets .‬از سیستم پردازش و زمانبندی‬
‫کارهای ‪ ،Nimrod/G‬استفاده میکند‪.‬‬
‫‪www.dstc.edu.au/Research/activesheets-ov.html‬‬
‫‪ Middleware‬هدف این پروژه‪ ،‬تولید فنآوریهای مدیریت و زمانبندی منابع برای‬ ‫‪Compute‬‬
‫محاسبات نظیر به نظیر است‪www.computepower.com .‬‬ ‫‪Power‬‬
‫‪Market‬‬
‫‪ DISCWorld‬یک زیرساخت جهت انجام محاسبات توزیع شده بر روی‬ ‫‪Integrated‬‬ ‫‪DISCWorld‬‬
‫شبکههای محلی و گسترده است‪ .‬این زیرساخت به کاربران راه دور امکان‬ ‫‪application‬‬
‫‪and‬‬
‫متصل شدن از طریق وب و سپس درخواست دسترسی به دادهها‪ ،‬استفاده‬
‫‪Middleware‬‬
‫از سرویسها و انجام عملیات بر روی دادههای به اشتراک گذارده شده را‬ ‫‪System‬‬
‫میدهد‪.‬‬
‫‪http://dhpc.adelaide.edu.au/Projects/DISCWorld/‬‬
‫مجموعه ابزاری که امکان محاسبات گرید و نیز محاسبات سرویسگرا‪1‬‬ ‫‪Middleware‬‬ ‫‪Gridbus‬‬
‫میدهد‪ .‬هدف اصلی پروژه ‪ ،Gridbus‬تولید فنآوریهای پایهای نسل‬
‫آینده خوشهها و گریدها است که از طریق آنها محاسبات سرویسگرا‪ ،‬با‬
‫تمام امکانات مورد نیاز عملی گردد‪.‬‬
‫‪ GridSim‬یک مجموعه ابزار مبتنی بر زبان جاوا جهت مدل سازی و شبیه‬ ‫‪Grid‬‬ ‫‪GridSim‬‬
‫سازی منابع محاسباتی است و از آن جهت طراحی و ارزیابی زمانبندها و‬ ‫‪Simulation‬‬
‫‪toolkit‬‬
‫الگوریتمهای زمانبندی در سیستم های گرید و سیستمهای خوشه تحت‬
‫شبکه‪ ،‬استفاده میشود‪.‬‬
‫‪www.buyya.com/gridsim/‬‬
‫‪ Nimrod/G‬و ‪ ،GRACE‬واسطهگرهایی برای مدیریت منابع و زمانبندی‬ ‫‪Grid‬‬ ‫‪Nimrod/G‬‬
‫برنامههای کاربردی تعویض پارامتر می باشند‪.‬‬ ‫‪scheduler‬‬ ‫‪and GRACE‬‬

‫‪1‬‬
‫‪Service-Oriented Computing‬‬
‫کانون نشر علوم‬ ‫‪| 600‬‬

‫این سیستمها قادرند قیود کیفیت سرویس مد نظر کاربر را لحاظ کنند و‬ ‫‪and resource‬‬
‫زمانبندی را به صورت اقتصادی انجام دهند‪.‬‬ ‫‪trader‬‬
‫از طریق این سیستمها‪ ،‬میتوان منابع و سرویسهای گرید را در زمان اجرا‪،‬‬
‫بر حسب ظرفیت‪ ،‬هزینه و دسترسی پذیری آنها‪ ،‬جهت تامین نیازمندیهای‬
‫کاربران‪ ،‬به آنها اجاره داد‪.‬‬
‫‪www.buyya.com/ecogrid‬‬
‫یک محیط جهت تولید و اجرای برنامههای مقیاس بزرگ که با حجم‬ ‫‪Application‬‬ ‫‪Virtual‬‬
‫‪modeling‬‬
‫بزرگی از داده ها کار میکنند‪ ،‬در اختیار قرار میدهد (همانند برنامههای‬ ‫‪Laboratory‬‬
‫مدلسازی مولکولی جهت طراحی دارو)‪.‬‬‫‪and‬‬
‫‪execution‬‬
‫‪www.buyya.com/vlab‬‬ ‫‪environment‬‬
‫‪ Grid‬یک گرید در مقیاس بزرگ است‪ .‬منابع محاسباتی نامتجانسی دارد که در‬ ‫‪World Wide‬‬
‫گرفتهاند‪.‬‬ ‫قرار‬ ‫مختلفی‬ ‫‪ Testbes‬سازمانهای‬ ‫‪Grid‬‬
‫‪Www.buyya.com/ecogrid/wwg‬‬ ‫)‪(WWG‬‬
‫جدول ‪ :4-11‬برخی تالشها در زمینه گرید در اروپا‬

‫توضیحات‬ ‫نوع سیستم‬ ‫عنوان پروژه‬


‫‪ UNICORE‬که مخفف ابتدای کلمات ‪Uniform Interface to‬‬ ‫‪A portal and‬‬ ‫‪UNICOR‬‬
‫‪ Computer Resrources‬است‪ ،‬نرم افزاری ارائه میدهد که به کاربران‬ ‫‪Middleware‬‬ ‫‪E‬‬
‫امکان واگذاری کارها به منابع محاسباتی با کارایی باال را میدهد‪.‬‬
‫‪www.unicore.org‬‬
‫‪ MOL‬که مخفف ابتدای کلمات ‪ Metacomputer OnLine‬است یک‬ ‫‪User-Level‬‬ ‫‪MOL‬‬
‫مجموعه ابزار است که امکان استفاده هماهنگ از سیستمهای متصل شده در‬ ‫‪Middleware‬‬
‫شبکههای محلی و گسترده را میدهد‪ .‬هدف این پروژه این است که بتوان از‬
‫چندین سیستم کامپیوتری با کارایی باال که از طریق شبکه گسترده به یکدیگر‬
‫متصل شده باشند‪ ،‬بهرهبرداری کرد‪ ،‬تا از این طریق بتوان مسائل بزرگ مقیاس‬
‫را که حل آنها توسط یک ابررایانه تکی امکان پذیر نیست‪ ،‬بتوان حل کرد‪.‬‬
‫‪www.uni-paderborn.de/pc2/projects/mol‬‬
‫‪ Cactus‬یک مجموعه ابزار است که یک زیرساخت محاسباتی برای طیف‬ ‫‪Application‬‬ ‫‪Cactus‬‬
‫گوناگونی از کاربردها فراهم میکند‪.‬‬ ‫‪development‬‬
‫‪toolkit‬‬
‫‪www.cactuscode.org‬‬
‫‪ Globe‬بک پروژه تحقیقاتی است و هدف آن مطالعه و پیادهسازی ابزارهایی‬ ‫‪Object-‬‬ ‫‪Globe‬‬
‫جهت ساخت سیستمهای مجازی محاسباتی قدرتمند‪ ،‬بزرگ مقیاس و توزیع‬ ‫‪based‬‬
‫‪operating‬‬
‫شده است‪.‬‬
‫‪environment‬‬
‫‪http://www.cs.vu.nl/∼steen/globe‬‬ ‫‪/‬‬
‫‪Middleware‬‬
‫‪system‬‬
‫‪| 601‬‬ ‫مقدمهای بر محاسبات گرید‬

‫هدف این پروژه‪ ،‬تولید میانافزار و ابزارهایی برای برنامههای کاربردی است‬ ‫‪DataGrid‬‬ ‫‪DataGrid‬‬
‫که با حجم زیادی از داده کار میکنند‪ .‬کاربرد این میانافزار در زمینه ‪High-‬‬ ‫‪Middleware‬‬
‫‪and‬‬
‫‪ Energy physics‬است‪.‬‬
‫‪application‬‬
‫‪www.eu-dataGrid.org‬‬

‫‪ MetaMPI programmin‬به ما امکان استفاده همزمان از چند سیستم ‪ MPI‬نامتجانس‬ ‫‪MetaMPI‬‬


‫‪ g‬مختلف در کنار یکدیگر را میدهد و در نتیجه با استفاده از آن میتوان برنامه‪-‬‬
‫‪environment‬‬
‫های کاربردی موازی که با استفاده از انواع مختلف ‪ MPI‬نوشته شدهاند را در‬
‫کنار یکدیگر بر روی گریدها بدون نیاز به انجام تغییرات اضافی‪ ،‬اجرا نمود‪.‬‬
‫‪http://www.hlrs.de/organization/pds/projects/metod‬‬
‫‪is/‬‬
‫جدول ‪ :5-11‬برخی تالشها در زمینه گرید در آمریکا‬

‫توضیحات‬ ‫نوع سیستم‬ ‫عنوان‬


‫پروژه‬
‫پروژه ‪ ،Globus‬یک زیر ساخت پایهای نرمافزاری برای انجام محاسبات ارائه‬ ‫‪Core‬‬ ‫‪Globus‬‬
‫میدهد که از طریق آن می توان منابع محاسباتی و اطالعاتی که به لحاظ‬ ‫‪Middleware‬‬
‫‪and Toolkit‬‬
‫جغرافیایی توزیعشده هستند را بتوان با یکدیگر مجتمع کرد‪.‬‬
‫‪www.globus.org‬‬
‫‪ Legion‬یک فرا‪-‬سیستم مبتنی بر اشیاء است که امکان زمانبندی به صورت‬
‫‪1‬‬ ‫‪Core‬‬ ‫‪Legion‬‬
‫شفاف‪ ،‬امکان مدیریت دادهها‪ ،‬امکان تحمل پذیری در مقابل خطا و طیف‬ ‫‪Middleware‬‬
‫‪and Toolkit‬‬
‫گستردهای از مکانیزمها و امکانات امنیتی را فراهم میکند‪.‬‬
‫‪http://legion.virginia.edu‬‬
‫‪ Javelin‬پردازش موازی روی اینترنت را با استفاده از فنآوریهای ‪،J2EE‬‬ ‫‪Middleware‬‬ ‫‪Javelin‬‬
‫امکان پذیر میسازد‪.‬‬ ‫‪System‬‬
‫‪www.cs.ucsb.edu/research/javelin/‬‬
‫‪ AppLeS‬سیستم زمانبندی برنامههای موازی بر روی منابع نامتجانس است‬ ‫‪Grid‬‬ ‫‪AppLeS‬‬
‫که برای کاربردهای خاص طراحی و تولید شده است‪.‬‬ ‫‪Scheduler‬‬
‫‪http://apples.ucsd.edu‬‬
‫‪ IPG‬که مخفف ابتدای کلمات ‪ Information Power Grid‬است‪ ،‬یک‬ ‫‪Application‬‬ ‫‪NASA‬‬
‫‪ testbed‬است که دسترسی به یک گرید را فراهم میکند‪ .‬این گرید‪ ،‬یک‬ ‫‪testbed‬‬ ‫‪IPG‬‬
‫شبکه گسترده از ماشینهای با کارایی باال‪ ،‬داده های ذخیره شده‪ ،‬تجهیزات و‬
‫دستگاههای خاص توزیع شده را شامل میشود و محیطی برای انجام کارتیمی‬
‫به صورت راه دور فراهم میکند‪)www.ipg.nasa.gov(.‬‬

‫‪1‬‬
‫‪Object-Based Metasystem‬‬
‫کانون نشر علوم‬ ‫‪| 602‬‬

‫پروژه ‪ ،Condor‬تولید‪ ،‬پیادهسازی و ارزیابی مکانیزمهایی جهت دستیافتن به‬ ‫‪Middleware‬‬ ‫‪Condor‬‬
‫محاسبات با گذردهی باال‪ 1‬بر روی مجموعه عظیمی از منابع توزیعشده را دنبال‬ ‫‪and‬‬
‫‪Scheduling‬‬
‫میکند‪.‬‬
‫‪system‬‬
‫‪www.cs.wisc.edu/condor/‬‬
‫پروژه ای است که بر روی ‪ Plug-ins‬های موازی‪ ،‬اعمال کنترل به صورت‬ ‫‪Programmin‬‬ ‫‪Harness‬‬
‫نظیر به نظیر و بهرهبرداری از چندین ماشین به صورت مجازی تمرکز دارد‪.‬‬ ‫‪g‬‬
‫‪environment‬‬
‫‪www.epm.ornl.gov/harness/‬‬
‫‪and runtime‬‬
‫‪system‬‬
‫‪ NetSovle‬یک سیستم ‪ Client/Agent/Server‬است که بر پایه‬ ‫‪Programmin‬‬ ‫‪NetSolve‬‬
‫فراخوانی راه دور پروسیجر (‪ )RPC‬کار میکند و امکان دسترسی راه دور به‬ ‫‪g‬‬
‫‪environment‬‬
‫مولفههای نرم افزاری و سخت افزاری را میدهد‪.‬‬
‫‪and runtime‬‬
‫‪www.cs.utk.edu/netsolve/‬‬ ‫‪system‬‬
‫یک پرتال وب‬ ‫‪Web Portal‬‬ ‫‪Gateway‬‬
‫‪www.npac.syr.edu/users/haupt/WebFlow/demo.htm‬‬
‫‪l‬‬
‫‪ Application‬یک ‪ extention‬بر مدل وب است که میتواند به عنوان یک چهارچوب برای‬ ‫‪WebFlo‬‬
‫‪ runtime‬انجام محاسبات به صورت توزیع شده در سطح گسترده عمل کند‪.‬‬ ‫‪w‬‬
‫‪system‬‬
‫‪ Portal‬مجوعه ای از ابزارها و فنآوریها جهت ایجاد پرتالهای گرید‪.‬‬ ‫‪GridPort‬‬
‫‪http://gridport.npaci.edu/ development‬‬
‫‪environment‬‬
‫‪ GrADS‬مخفف ابتدای کلمات ‪Grid Application Development‬‬ ‫‪User-level‬‬ ‫‪GrADS‬‬
‫‪ Software‬است و یک محیط برنامه نویسی و سیستم زمان‪-‬اجرا است‪.‬‬ ‫‪Middleware‬‬
‫‪http://hipersoft.cs.rice.edu/grads/‬‬
‫‪ JXTA‬محصول شرکت ‪ ،SUN‬یک زیرساخت پایهای جهت تولید برنامهها و‬ ‫‪Core‬‬ ‫‪JXTA‬‬
‫سرویسهای محاسبات نظیر به نظیر فراهم میکند‪.‬‬ ‫‪Middleware‬‬
‫‪www.jxta.org‬‬
‫جدول ‪ :6-11‬برخی تالشها در زمینه گرید در ژاپن‬

‫توضیحات‬ ‫نوع سیستم‬ ‫عنوان پروژه‬


‫‪ Ninf Development‬به کاربران امکان دسترسی به منابع محاسباتی شامل سخت افزارها‪،‬‬ ‫‪Ninf‬‬
‫‪ and execution‬نرم افزارها و دادههای علمی که در یک شبکه گسترده توزیع شده اند را از‬
‫‪environment‬‬
‫طریق یک واسط ارتباطی میدهد که استفاده از این واسط برای برنامه‪-‬‬
‫نویسان آسان است‪.‬‬
‫‪http://ninf.apgrid.org/‬‬

‫‪1‬‬
‫‪High-Throughput Computing‬‬
‫‪| 603‬‬ ‫مقدمهای بر محاسبات گرید‬

‫‪ Bricks‬یک سیستم ارزیابی کارایی است که امکان آنالیز و مقایسه‬ ‫‪Simulation/‬‬ ‫‪Bricks‬‬
‫روشهای مختلف زمانبندی در گریدهایی عادی که شامل چندین منابع‬ ‫‪Performance‬‬
‫‪evaluation‬‬
‫محاسباتی با کارایی باال هستند‪ ،‬را فراهم میکند‪.‬‬
‫‪system‬‬
‫‪http://ninf.is.titech.ac.jp/bricks/‬‬
‫بر روی تولید فنآوریهای مدیریت انبارههای داده بسیار عظیم و پردازش‬ ‫‪Middleware‬‬ ‫‪Grid‬‬
‫دادهها تمرکز دارد و هدف آن حل مسائل و اجرای برنامههایی است که با‬ ‫‪Datafarm‬‬
‫حجم عظیمی از داده کار میکنند‪ .‬برنامهها و مسائلی که دادههای آنها در‬
‫حد ‪ Peta-Byte‬است‪.‬‬
‫‪ -2-9-11‬بررسی خالصه برخی پروژههای مهم گرید‬

‫‪Globus -1-2-9-11‬‬

‫‪ ،Globus‬زیرساختی نرم افزاری ارائه میدهد که برنامههای کاربردی را قادر میسازد بتوانند از چندین منبع‬
‫محاسباتیِ ناهمگن به صورت یک ماشین مجازیِ تکی استفاده کنند‪ .‬پروژه ‪ ،Globus‬یک پروژه تحقیقاتی چند‬
‫ارگانی در آمریکا است که ساخت گریدهای محاسباتی را دنبال میکند‪ Globus .‬به صورت یک مجموعه ابزار‬
‫کامل ارائه شده است (که به آن ‪ Globus Toolkit‬گفته میشود) و سرویسها و امکانات پایهای را که جهت‬
‫ساخت و ایجاد یک گرید محاسباتی الزم است‪ ،‬ارائه میکند که توسط آنها میتوان بر روی چندین کامپیوتر ناهمگن‬
‫دلخواه‪ ،‬یک گرید محاسباتی ایجاد کرد به طوری که کل سخت افزار زیرین به صورت یک ماشین مجازی تکی به‬
‫نظ ر برسد و بنابراین‪ ،‬گرید ایجاد شده‪ ،‬حداکثر درجه شفافیت را (حداقل در تئوری) خواهد داشت‪ .‬این مجموعه ابزار‪،‬‬
‫شامل مجموعهای از مؤلفههای نرم افزاری است که سرویسهای پایهای مانند امنیت‪ ،‬اکتشاف منابع‪ ،‬مدیریت منابع‬
‫و تسهیالت ارتباطی را روی گرید پیاده سازی میکنند‪ .‬همانطوری که گفته شد‪ ،‬الزمه هر گرید محاسباتی این است‬
‫که بتواند از طیف گستردهای از امکانات و تسهیالت برنامهنویسی مختلف پشتیبانی کند‪ .‬در نتیجه‪ Globus ،‬به‬
‫جای اینکه صرفاً یک مدل برنامه نویسی واحد (مثالً مدل شیءگرا) را ارائه کند‪ ،‬مجموعهای از سرویسها در اختیار‬
‫تولیدکنندگان ابزارها و برنامههای کاربردی روی گرید قرار میدهد که آنها را قادر میسازد از این سرویسها جهت‬
‫مرتفع کردن نیازمندیهای خاص خودشان‪ ،‬بر حسب نیاز استفاده کنند تا انواع برنامههای کاربردی تحت گرید و‬
‫انواع ابزارها و سرویسهای دلخواه (سطح باالی) گرید را تولید نمایند‪ .‬این رهیافت زمانی عملی میشود که‬
‫سرویسهای پایهای ‪ Globus‬که در اختیار برنامهنویسان جهت تولید برنامههای کاربردی و ابزارها قرار میگیرند‪،‬‬
‫واسطهای ارتباطی مستقل و مناسبی داشته باشند که بتوان به راحتی از آنها در تولید برنامههای کاربردی یا ابزارها‬
‫استفاده کرد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 604‬‬

‫معماری ‪ ،Globus‬یک معماری چند الیهای است که در آن سرویسهای سطح باال با استفاده از سرویسهای‬
‫سطح پایینِ محلی (اصطالحاً سرویسهای ‪ )Core Level‬پیادهسازی شدهاند‪ Globus .‬حالت پیمانهای‪ 1‬دارد‪،‬‬
‫به این معنا که میتوان از مؤلفههای نرم افزاری مختلف‪ ،‬به صورت مجزا استفاده کرد؛ به طور مثال یک برنامه‪-‬‬
‫کاربردی روی ‪ Globus‬میتواند از امکاناتی مانند مدیریت منابع یا زیر ساختهای اطالعاتی بدون استفاده از توابع‬
‫کتابخانهای ارتباطی ‪ ،Globus‬استفاده کند‪.‬‬

‫‪ Globus Toolkit‬از موارد زیر پشتیبانی میکند‪:‬‬

‫‪:1‬زیرساخت امنیتی گرید ‪:2‬سرویس انتقال فایل در گرید ‪:3‬مدیر تخصیص منابع ‪:4 Globus2‬سرویس دایرکتوری‬
‫برای سیستم مجازی تکی ‪:5‬دسترسی ‪ Global‬به منابع ذخیره سازی ‪:6‬امکان تهیه و مدیریت کاتالوگ دادهها و‬
‫سیستم مدیریت و المثنی سازی دادهها ‪:7‬سیستم پیشرفته رزرو و تخصیص منابع‬

‫در واقع میتوان ‪ Globus‬را به صورت یک چهارچوب برای محاسبات گرید در نظر گرفت که برپایه مجموعهای‬
‫از ‪ API‬ها برای دسترسی به سرویسهای زیرین بنا نهاده شده است‪ Globus .‬به تولید کنندگان برنامههای‬
‫کاربردی‪ ،‬ابزارهایی عملی جهت پیاده سازی طیف وسیعی از سرویسها برای ساخت یک محیط اجرایی گسترده‪،‬‬
‫ارائه میدهد‪.‬‬

‫‪Legion: 2-2-9-11‬‬

‫‪ Legion‬یک فرا‪-‬سیستم مبتنی بر اشیاء است که در دانشگاه ویرجینیا تولید شده است‪ Legion .‬یک زیرساخت‬
‫نرم افزاری ارائه میدهد که مجموعهای از ماشینهای نامتجانس و با کارایی باال که از لحاظ جغرافیایی توزیع شده‬
‫هستند بتوانند با یکدیگر به سهولت تعامل داشته باشند‪ .‬هدف اصلی ‪ Legion‬این است که به کاربران که در پشت‬
‫کامپیوترهای شخصی خود نشستهاند‪ ،‬یک ماشین مجازی یکپارچه و تکی ارائه دهد‪ ،Legion .‬ویژگیهای زیر را‬
‫دارد‪:‬‬

‫هر موجودیت در ‪ Legion‬به صورت یک شیء دیده میشود‪ :‬در ‪ Legion‬کلیه منابع (سخت‬ ‫‪-‬‬
‫افزاری‪ ،‬نرم افزاری ‪ )...‬درقالب اشیاء دیده میشوند‪ .‬در واقع اشیاء ‪ ،Legion‬بیانگر کلیه مؤلفههای سخت‪-‬‬
‫افزاری و نرمافزاری تحت پوشش این فرا‪-‬سیستم هستند‪ .‬هر شیء یک پردازش فعال است که به فراخوانی‪-‬‬

‫‪1‬‬
‫‪Modular‬‬
‫‪2‬‬
‫)‪Globus Resource Allocation Manager (GRAM‬‬
‫‪| 605‬‬ ‫مقدمهای بر محاسبات گرید‬

‫های راه دور سایر اشیای درون سیستم پاسخ میدهد‪ Legion .‬یک ‪( API‬و نه یک زبان برنامه نویسی یا‬
‫یک پروتکل ارتباطی) برای تعامل با‪/‬میان اشیاء در اختیار قرار میدهد‪.‬‬
‫هر کالس‪ ،‬اشیاء خود را مدیریت میکند‪ :‬هر شیء ‪ ،Legion‬توسط ‪ Class Object‬خودش‬ ‫‪-‬‬
‫تعریف و مدیریت میشود‪ .‬به ‪ Class Object‬ها‪ ،‬امکاناتی در سطح سیستم داده شده است‪ :‬آنها میتوانند‬
‫وهلههای‪ 1‬جدید از کالس را ایجاد کنند‪ ،‬آنها را جهت اجرا زمانبندی کنند‪ ،‬آنها را فعال و غیرفعال کنند و‬
‫وضعیت اشیاء را (منظور مقادیر صفات اشیاء) را در اختیار سرویسگیرندگان اشیاء قراردهند‪ .‬در واقع سیاست‪-‬‬
‫های دستیابی به اشیاء مختلف‪ ،‬در ‪ Class Object‬آنها پیاده سازی میگردد‪.‬‬
‫کاربران میتوانند خودشان را تعریف کنند‪ :‬همانند دیگر سیستمهای شیء گرا‪ ،‬در ‪،Legion‬‬ ‫‪-‬‬
‫کاربران میتوانند نحوه عملکرد یک کالس را جهت رفع نیازمندیهایشان‪ ،‬تغییر دهند‪.‬‬

‫گفته شد در ‪ Legion‬همه چیز در قالب اشیاء دیده میشود‪ .‬در این فرا‪-‬سیستم‪ ،‬یک سری اشیاء درونی وجود دارند‬
‫که سرویسهای پایهای را ارائه میدهند‪ .‬این اشیاء اصطالحا اشیاء هستهای و بنیادین‪ 2‬نام دارند‪ .‬در سیستم‬
‫‪ Legion‬انواع مختلفی از اشیاء بنیادین وجود دارند که عبارتند از‪:‬‬

‫‪ Class Object : Object Classes and MetaClasses‬ها‪ ،‬همانطور که گفته شد‪ ،‬اشیائی‬ ‫•‬
‫هستند که در واقع مدیران و پیاده سازی کننده سیاستهای دستیابی به سایر اشیاء هستند‪MetaClass .‬‬
‫ها‪ ،‬کالسهایی از ‪ Class Object‬هستند‪.‬‬
‫‪ :Host Objects‬در واقع انتزاعی از منابع پردازشگر هستند‪ .‬آنها ممکن است بیانگر یک ماشین تک‪-‬‬ ‫•‬
‫پردازند ه یا یک ماشین چند پردازنده در سیستم باشند و در واقع دیدی از ماشینهای پردازشگر‪ ،‬در سطح‬
‫انتزاعی باال به کاربر نمایش میدهند که از طریق آنها‪ ،‬میتوان به ماشینهای مختلف دستیابی داشت‪.‬‬
‫‪ :Vault Objects‬این اشیاء بیانگر محلهای ذخیره سازی داده به صورت ماندگار هستند‪ ،‬اما فقط به‬ ‫•‬
‫منظور نگهداری وضعیت (مقادیر صفاتِ) اشیاء مانای ‪ Legion‬که اصطالحا ‪ OPR3‬نام دارند‪ ،‬استفاده‬
‫میشوند‪ .‬در واقع ‪ OPR‬ها‪ ،‬اشیاء مانا در ‪ Legion‬هستند‪ :‬اشیائی اگر به آنها به طور موقت احتیاج نیست‪،‬‬
‫مقادیر صفات آنها در حافظه ثانویه مانند دیسک سخت ذخیره میشود و هر هنگام که به آنها نیاز شد (به‬
‫طور مثال یک سرویس گیرنده‪ ،‬فراخوانی راه دور متدی از آنها را انجام داد)‪ Class Object ،‬مربوطه که‬
‫دستیابی به شیء را مدیریت میکند‪ ،‬شیء را از دیسک به حافظه اصلی منتقل میکند‪ ،‬فراخوانی راه دور متد‬

‫‪1‬‬
‫‪Instance‬‬
‫‪2‬‬
‫‪Core Object‬‬
‫‪3‬‬
‫‪OPR: Object Persistent Representation‬‬
‫کانون نشر علوم‬ ‫‪| 606‬‬

‫را انجام می دهد و اگر دیگر ارجاعی به شیء وجود نداشت‪ ،‬دوباره وضعیت تغییر یافته شیء را در دیسک‬
‫نوشته و حافظه را آزاد میکند‪ .‬کلیه این کارها به صورت شفاف و پنهان از دید کاربر انجام میشود‪.‬‬
‫‪ Implementation Object :Implementation Objects and Caches‬ها‪ ،‬جزئیات‬ ‫•‬
‫ذخیره سازی پیادهسازی اشیاء را پنهان میکنند و میتوان آنها را مثالّ مانند فایلهای اجرایی در سیستم عامل‬
‫در نظر گرفت‪ Implementation Cache .‬ها‪ ،‬اشیائی با یک ‪ Cache‬هستند که دادههایی را که اکثر‬
‫مورد استفاده قرار گرفته است را شامل میشوند‪.‬‬
‫‪ :Binding Agents‬همانطوری که در فصل اصول کلیدی سیستمهای توزیع شده شرح داده شد‪ ،‬یکی‬ ‫•‬
‫از ملزومات اساسی سیستمهای توزیع شده‪ ،‬شفافیت مکانی است که مکانیزمهای نامگذاری نقشی کلیدی در‬
‫پیادهسازی آن بازی میکنند‪ .‬در ‪ ،Legion‬اشیاء با نامهایشان شناخته میشوند و نه با آدرس فیزیکیشان و‬
‫‪ Legion‬در مورد اشیاء‪ ،‬از شفافیت مکانی پشتیبانی مینماید؛ پس در مورد کلیه اشیاء موجود در سیستم‪،‬‬
‫ابتدا الزم است یک نام منحصر به فرد به شناسه شیء‪ ،‬نگاشت شود و سپس شناسه شیء‪ ،‬به آدرس فیزیکی‬
‫آن نگاشت شود‪ .‬پس الزم است مکانیزمهایی برای نگاشت این شناسهها به آدرسهای فیزیکی در سیستم‬
‫وجود داشته باشند‪ .‬یک ‪ Binding Agent‬در ‪ ،Legion‬شناسههای اشیاء را به آدرسهای فیزیکی آنها‬
‫نگاشت میکند‪ .‬این اشیاء قادرند تا ‪ Binding‬های اخیر صورت گرفته را ‪ Cache‬کنند و یا خودشان را به‬
‫صورت سلسله مراتبی در ساختمان داده درخت ‪ ،‬سازماندهی کنند‪.‬‬
‫‪ Context Object :Context Objects and Context Spaces‬ها‪ ،‬اشیائی هستند که نامها‬ ‫•‬
‫را به شناسههای اشیاء در ‪ ،Legion‬نگاشت میکنند و به کاربران اجازه میدهند با اشیاء‪ ،‬با نامهایشان‬
‫کارکنند‪ Context Space .‬ها‪ ،‬اشیائی هستند که شامل گرافهای جهت داری از ‪Context Object‬‬
‫ها هستند که اطالعات را نامگذاری و سازماندهی میکنند‪.‬‬

‫اشیاء در ‪ ، Legion‬مستقل و فعال هستند و مسئول مدیریت ارتباطات با یکدیگر از طریق فراخوانیهای ‪Non-‬‬
‫‪ Blocking‬هستند‪ .‬همانند سایر سیستمهای شیءگرا‪ ،‬مجوعه متدهایی که یک شیء دارد و در اختیار سایرین‬
‫میگذارد‪ ،‬واسط ارتباطی آن شیء را تشکیل میدهد‪ .‬واسطهای ارتباطی در ‪ ،Legion‬با یک زبان تعریف واسط‬
‫(‪ )IDL1‬تعریف و بیان میشوند‪ .‬سیستم ‪ ،Legion‬از یک رهیافت شیءگرا استفاده میکند و همین امر آن باعث‬
‫میشود تا برای طراحی و پیادهسازی محیطهای پردازشهای توزیع شده پیچیده‪ ،‬کامالً ایدهآل باشد‪ .‬اما استفاده از‬
‫یک متدولوژی شیءگرا مشکالت خاص خودش را دارد که بسیاری از آنها مربوط به نیاز ‪ Legion‬به تعامل با‬

‫‪1‬‬
‫‪IDL: Interface Definition Language‬‬
‫‪| 607‬‬ ‫مقدمهای بر محاسبات گرید‬

‫برنامههای کاربردی و سرویسهای قدیمی‪ 1‬هستند‪ .‬یعنی ‪ Legion‬باید بتواند با برنامههای کاربردی و سیستمهای‬
‫قدیمی غیر شیء گرا تعامل داشته باشد که این موضوع‪ ،‬مشکالت و نیازمندیهای خاص خود را دارد‪.‬‬

‫امروزه بسیاری از نرم افزارهایی که تحت پروژه ‪ Legion‬تولید شدهاند‪ ،‬به صورت تجاری توسط شرکتی که‬
‫‪ Avaki-Corporation‬نامیده میشود در دسترس هستند‪ .‬در واقع‪ Legion ،Avaki ،‬را برای استفاده از‬
‫مزایای فنآوریهای نوپدیدار محاسبات گرید و نظیر به نظیر‪ ،‬تولید کرده است‪.‬‬

‫‪GridSim : 3-2-9-11‬‬

‫‪ ،GridSim‬یک مجموعه ابزار جهت مدلسازی و شبیهسازیِ زمانبندی منابع و برنامههای کاربردی در گرید است‪.‬‬
‫تسهیالت جامعی برای شبیهسازی انواع گوناگون منابع نامتجانس‪ ،‬کاربران‪ ،‬واسطهگران منابع و زمانبندها در اختیار‬
‫قرار میدهد‪ .‬شامل تسهیالتی برای مدلسازی و شبیهسازی منابع و ارتباطات شبکهای با تواناییها و تنظیمات‬
‫مختلف است و امکاناتی دارد که از طریق آنها میتوان اجرای برنامههای کاربردی بر روی گرید و اکتشاف منابع را‬
‫شبیهسازی نمود‪ .‬به عالوه واسطهای ارتباطی برای شبیهسازی واگذار کردن برنامه های کاربردی (و یا‪ Task‬ها)‬
‫به منابع محاسباتی و مدیریت اجرا آنها‪ ،‬ارائه میکند‪ .‬از کلیه این امکانات و ویژگیها‪ ،‬میتوان جهت شبیهسازی‬
‫واسطهگران منابع یا زمانبندهای گرید جهت ارزیابی کارایی الگوریتمهای زمانبندی مورد استفاده در آنها‪ ،‬استفاده‬
‫کرد‪ .‬تاریخچه ایجاد این مجموعه ابزار به این شرح است که در هنگام طراحی و ایجاد سیستم زمانبندی‬
‫‪( Nimrod/G‬که قادر است زمانبندی در گرید را با بهینه سازی زمان و هزینه انجام دهد) نیاز بود به روشی بتوان‬
‫میزان کارایی الگوریتمهای زمانبندی مورد استفاده در آن را ارزیابی نمود‪ .‬همانطوری که میدانیم‪ ،‬در اختیار داشتن‬
‫یک گرید اختصاصی بزرگ برای این منظور خیلی ایده آل به نظر میآید و برای تولید کنندگان سیستم‬
‫‪ Nimrod/G‬چنین امکانی وجود نداشت که عمالً بتوانند سیستم خود را در حین طراحی و پیاده سازی بر روی‬
‫یک گرید واقعی بارها و بارها تست نمایند تا با اندازه گیری کارایی آن‪ ،‬الگوریتمها را بهتر و بهتر کنند‪ .‬در نتیجه‬
‫آنها‪ ،‬خود‪ ،‬یک شبیهساز گرید تولید کردند که بتوانند توسط آن‪ ،‬نحوه عملکرد سیستم زمانبندی خود را بر روی یک‬
‫گرید گسترده فرضی تست و م شاهده نمایند و کارایی این سیستم زمانبندی را اندازه گیری کنند تا آن را بهینه تر‬
‫کنند و ‪ GridSim‬به این صورت‪ ،‬تولید شد‪.‬‬

‫امروزه از تسهیالت مدل سازی منابع ‪ ،GridSim‬جهت شبیه سازی منابع گرید که در سراسر دنیا پراکنده باشند و‬
‫با استفاده از سیاستهای ‪ Time-Shared‬یا ‪ Space-Shared‬مدیریت شوند‪ ،‬استفاده میشود‪.‬‬

‫‪1‬‬
‫‪Legacy Application and Services‬‬
‫کانون نشر علوم‬ ‫‪| 608‬‬

‫‪ ،GridSim‬یک مجموعه ابزار بر پایه زبان جاوا است و موجودیتهای مختلف درون یک سیستم گرید (مانند‬
‫منابع‪ ،‬کاربران‪ ،‬و غیره) به صورت کالسهایی (در زبان جاوا) در آن موجودند که هر کدام از این کالسها‪ ،‬یک‬
‫سری صفات کلیدی دارند که انتزاعی از واقعیت ارائه میدهند و در نهایت‪ ،‬آن موجودیت را مدل میکنند (همانند‬
‫اشیاء ‪ .)Legion‬در شبیه سازی یک گرید‪ ،‬میتوان در کلیه کالسهای موجود‪ ،‬تغییرات الزم را ایجاد کرد تا‬
‫بتوان‪ ،‬منابع را به صورت دلخواه‪ ،‬مدل نمود‪ .‬در ‪ ،GridSim‬برنامههای کاربردی (‪ Task‬یا ‪ )Job‬به صورت اشیائی‬
‫بنام ‪ Gridlet‬مدل میشوند که شامل تمامی اطالعات مربوط به ‪ Job‬و مدیریت اجرای ‪ Job‬با جزئیات کافی‬
‫است؛ به طور مثال‪ :‬طول ‪ Job‬بر حسب میلیون دستورالعمل‪ ،‬عملیات ورودی‪/‬خروجی دیسک‪ ،‬اندازه و بزرگی‬
‫فایلهای ورودی‪/‬خروجی پردازش بر حسب بایت و غیره‪ .‬واسطهگرها و زمانبندها‪ ،‬از پروتکلها و سرویسهای‬
‫مدیریتی ‪ GridSim‬برای شبیه سازی واگذاری یک ‪ Gridlet‬به یک منبع محاسباتی و مدیریت آن در چرخه‬
‫حیاتش استفاده میکنند‪.‬‬

‫‪Gridbus : 4-2-9-11‬‬

‫پروژه ‪ Gridbus‬که مخفف اول کلمات ‪ GRID computing and BUSiness‬است‪ ،‬در واقع یک ‪Core‬‬
‫‪ Middleware‬به صورت یک مجموعه ابزار است‪ .‬این پروژه‪ ،‬هدف ساخت فنآوریهای محاسبات خوشه و‬
‫نیز میانافزارهای گرید برای محقق ساختن محاسبات سرویس‪-‬گرا را دنبال میکند‪ ،Gridbus .‬سرویسهایی‬
‫جهت تجمیع و استفاده از سرویس های منابع محاسباتی برحسب دسترسی پذیری‪ ،‬ظرفیت و توان محاسباتی و‬
‫هزینه آنها از یک سو و نیازمندیهای کیفیت سرویس کاربران از سوی دیگر در اختیار قرار میدهد‪ .‬هدف کلیدی‬
‫پروژه ‪ ،Gridbus‬تولید فنآوریهای بنیادی محاسبات خوشه و گرید نسل آینده است تا امکان ‪Utility-‬‬
‫‪ Computing‬فراهم گردد‪.‬‬

‫‪UNICORE : 5-2-9-11‬‬

‫‪ UNICORE‬که مخفف ابتدای کلمات ‪ Uniform Interface ro Computer Resources‬است‬


‫پروژهای است که تحت نظر ‪ German Ministry of Education and Research‬اداره میشود‪.‬‬
‫‪ ،UNICORE‬یک واسط ارتباطی یکسان برای آماده سازی برنامهها جهت اجرا روی گرید و نیز دستیابی آسان به‬
‫منابع از نوع ابررایانه را فراهم میسازد‪ .‬تفاوتهای میان سایتها و یا سیستمهای محاسباتی مختلف را از دید کاربر‬
‫پنهان میکند تا تولید برنامههای کاربردی توزیع شده را تسهیل سازد‪ .‬برنامههای موازی که روی بستر ‪UNICORE‬‬
‫اجرا میشوند‪ ،‬برنامههایی چندبخشی هستند که هر بخش ممکن است بر روی ماشینهای مختلفی اجرا شود‪ .‬اجرای‬
‫‪| 609‬‬ ‫مقدمهای بر محاسبات گرید‬

‫بخشهای مختلف یک برنامه‪ ،‬میتواند هم به صورت آسنکرون و هم به صورت ‪Sequentially‬‬


‫‪ Synchronized‬باشد‪.‬‬

‫یک ‪ Job‬در ‪ ، UNICORE‬شامل یک برنامه چندبخشی است که اطالعات الزم در مورد سیستمهای مقصد (که‬
‫بخشهای مختلف باید بر روی آنها اجرا شوند)‪ ،‬نیازمندیهای منبعی (برنامه به چه منابعی جهت اجرا نیاز دارد) و‬
‫وابستگیهای میان بخشهای مختلف برنامه (زیربرنامهها) به آن افزوده شده است‪.‬‬

‫از دیدگاه ساختاری‪ ،‬یک ‪ Job‬در ‪ ،UNICORE‬یک شیء بازگشتی شامل‪ Job-Group‬ها و ‪ Task‬ها است‪.‬‬
‫خود ‪ Job-Group‬ها‪ ،‬متشکل از سایر ‪ Job-Group‬ها و ‪ Task‬ها هستند (یک ساختار درختی که در ریشه‬
‫آن‪ Job ،‬اصلی یا همان برنامه چند بخشی قراردارد‪ .‬زیرِ ریشه‪ ،‬ممکن است تعدادی ‪ Job-Group‬و‪/‬یا ‪Task‬‬
‫قرار گرفته باشند‪ .‬هر ‪ Job-Group‬میتواند خود‪ ،‬مشتکل از چند ‪ Job-Group‬دیگر و‪/‬یا ‪ Task‬باشد و خاتمه‬
‫پردازش یک ‪ Job-Group‬نیازمند خاتمه پردازش تمامی ‪ Job-Group‬و ‪ Task‬هایش است‪ .‬برگهای این‬
‫درخت‪ Task ،‬ها هستند که به عنوان یک تکه برنامه دستهای بر روی یک سیستم مقصد اجرا خواهند شد)‪Job .‬‬
‫ها و ‪ Job-Group‬ها در ‪ ،UNICORE‬اطالعاتی در مورد سیستم مقصد برای اجرای ‪ Task‬هایی که شامل‬
‫میشوند در خود دارند‪ .‬در نهایت‪ ،‬یک ‪ Task‬یک واحد (یک تکه برنامه) است که به عنوان یک پردازش دستهای‬
‫به یک ماشین پردازشگر مقصد جهت اجرا‪ ،‬ارسال میشود‪.‬‬

‫اهدافی که در طراحی ‪ UNICORE‬مد نظر گرفته شدهاند‪ ،‬شامل موارد زیر است‪:‬‬

‫✓ یک واسط گرافیکی کاربر (‪ )GUI‬که استفاده از آن آسان و یکسان باشد‪.‬‬


‫✓ یک معماری باز مبتنی بر مفهوم انتزاعی ‪.Job‬‬
‫✓ یک معماری سازگار برای تامین امنیت کل سیستم‪.‬‬
‫✓ داشتن حداقل واسط ارتباطی با پروسیجرهای مدیریتی محلی‬
‫✓ استفاده بهینه از کلیه فنآوریهای مدرن موجود‪.‬‬
‫✓ اینکه کاری کنند که مدیریت چنین سیستمی به حداقل تالش نیاز داشته باشند (از طریق ساخت واسط‪-‬‬
‫های ارتباطی وبی با استفاده از ‪ applet‬های جاوا)‪.‬‬
‫✓ و اینکه ساخت و تولید یک پروتوتایپ از محصول‪ ،‬ظرف مدت دو سال به اتمام برسد‪.‬‬

‫نکته مهمی که باید به آن توجه شود این است که ‪ UNICORE‬اصوال برای برنامههای دستهای طراحی و ساخته‬
‫شده است و در نتیجه امکان داشتن پردازشهایی که نیاز به تعامل چندباره با یکدیگر یا تعامل با کاربر دارند را‬
‫نمیدهد‪ .‬در سطح برنامهکاربردی‪ ،‬از ‪ metacomputing‬به صورت آسنکرون پشتیبانی میشود که به بخش‪-‬‬
‫کانون نشر علوم‬ ‫‪| 610‬‬

‫های مستقل و غیر مستقل یک ‪ Job‬امکان اجرا شدن بر روی مجموعهای از ماشینهای محاسباتی توزیع شده را‬
‫می دهد‪ .‬به هر کاربر یک شناسه کاربری منحصر به فرد جهت دستیابی به کلیه سایتها و منابع تحت پوشش‬
‫سیستم ‪ UNICORE‬داده میشود‪.‬‬

‫‪NetSolve :6-2-9-11‬‬

‫‪ NetSolve‬تسهیالتی با معماری سرویسدهنده‪/‬سرویسگیرنده است که جهت حل مسائل محاسباتی علمی در‬


‫محیطهای توزیع شده طراحی شده است‪ .‬سیستم ‪ NetSolve‬بر اساس سیستمهای ‪Loosely Coupled‬‬
‫(ماشینهایی مستقل که در یک محلی یا گسترده به یکدیگر متصل شدهاند) کار میکند‪ .‬سرویسگیرندگان‬
‫‪ ،NetSolve‬میتوانند در زبانهایی مانند ‪ C‬و ‪ Fortan‬نوشته شوند و با استفاده از ‪ Matlab‬یا از طریق وب‪،‬‬
‫با سرویسدهنده تعامل انجام دهند‪ .‬یک سرویسدهنده ‪ ،NetSolve‬میتواند از هر بسته نرم افزاری که برای‬
‫کاربردهای مختلف علمی تولید شده است‪ ،‬برای دادن سرویسهای نرم افزاری به سرویسگیرندگان استفاده کند‪.‬‬
‫ارتباطات در ‪ NetSolve‬از طریق ‪ Socket‬ها صورت میپذیرد و کارایی باال‪ ،‬توسط سیاستهای تقسیم بار‬
‫تضمین میشود که به ‪ NetSolve‬امکان استفاده بهینه و کارامد از منابع محاسباتیِ در دسترس را میدهند‪.‬‬
‫‪ NetSolve‬امکان جستجو به دنبال منابع محاسباتی در روی شبکه و سپس شناسایی بهترین منبع جهت حل‬
‫یک مساله (اجرای یک پردازش) را میدهد و نتایج اجرای راه دورِ برنامه روی ماشینها را به کاربر برمیگرداند‪.‬‬

‫‪Ninf : 7-2-9-11‬‬

‫‪ Ninf‬یک سیستم با معماری سرویسدهنده‪/‬سرویسگیرنده جهت محاسبات در سطح گسترده است‪ .‬امکان‬
‫دسترسی به چندین منبع محاسباتی و سرویسدهندگان بانکهای اطالعاتی را فراهم میکند‪ .‬سرویسگیرندگان‬
‫‪ ،Ninf‬می توانند به صورت نیمه شفاف (با درجه نه چندان باالیی از شفافیت توزیع) به منابع محاسباتی راه دور از‬
‫طریق زبانهایی مانند ‪ C‬یا ‪ Fortran‬متصل شوند‪ .‬تولید برنامههای کاربردی با استفاده از توابع کتابخانهای‬
‫ارتباطات راه دور که ‪ Ninf‬در اختیار قرار میدهد‪ ،‬آسان است چون این توابع کتابخانهای‪ ،‬پیچیدگیهای سیستمهای‬
‫زیرین را از دید کاربر برنامه نویس‪ ،‬پنهان میکنند‪.‬‬

‫‪GridPort : 8-2-9-11‬‬

‫پرتالهای گرید‪ ،‬نقش کلیدی در استفاده آسان همگان از امکانات گرید دارند و به افراد غیر متخصص در زمینه‬
‫مهندسی کامپیوتر این امکان را میدهند تا به راحتی بتوانند از منابع گرید بهرهبرداری نمایند‪ :‬لیست اطالعات‬
‫ماشینهای پردازشگر را مشاهده نمایند‪ ،‬بتوانند نیازمندیهای فنی و غیر فنی مد نظر خود در اجرای برنامههای‬
‫‪| 611‬‬ ‫مقدمهای بر محاسبات گرید‬

‫کاربردی را مطرح نمایند‪ ،‬برنامههای چندبخشی و موازی خود را به زمانبند یا سرویسدهنده گرید واگذار کنند‪،‬‬
‫اجرای راه دور برنامههایشان در ماشینهای پردازشگر دنبال و مانیتور کنند‪ ،‬بتوانند برنامههایشان را به صورت راه‬
‫دور اشکال زدایی کنند و در نهایت نتایج و خروجیهای برنامههایشان را مشاهده و ذخیره کنند‪ .‬اینکه ایجاد و ساخت‬
‫پرتالهای گرید کامالً مطلوب است‪ ،‬به هیچ وجه به این معنا نیست که چنین کاری‪ ،‬کار راحتی است و در عمل‬
‫مشکالت بسیاری در سر راه ایجاد یک پرتال گرید بر روی یک الیه ‪ User Lervel Middleware‬یا حتی‬
‫به طور مستقیم بر روی یک الیه میان افزار ‪ Code Middleware‬وجود دارد‪ .‬برای اینکه تولید کنندگان میان‬
‫افزارهای گرید‪ ،‬ناچار نباشد خود‪ ،‬از ابتدا پرتالهای گرید سیستمهایشان را تولید کنند و با مشکالت بسیار زیاد بر‬
‫سر راه این کار در گیر نشوند‪ ،‬شرکت ‪ ،IBM‬مجموعه ابزار ‪ GridPort‬را تولید و ارائه نموده است‪GridPort .‬‬
‫یا ‪ ،Grid Portal Toolkit‬مجموعهای از فنآوریهاست که جهت کمک به تولید پرتالهای علمی بر روی‬
‫گریدهای محاسباتی طراحی شده است‪ .‬دو مؤلفه کلیدی و اصلی در ‪ GridPort‬عبارتند از سرویسهای پرتال‬
‫وب‪ 1‬و توابع ‪API‬کاربردی‪ .‬نرم افزار پرتال وب که بخشی از ‪ GridPort‬است‪ ،‬بر روی یک سرویسدهنده وب‬
‫اجرا می شود و امکان اتصال امن کاربران احراز هویت شده را بر اساس مجوزهای آنان‪ ،‬به منابع گرید را فراهم‬
‫میسازد‪ .‬توابع ‪API‬کاربردی‪ ،‬یک واسط ارتباطی بر پایه وب در اختیار کاربران نهایی میگذارد که جهت تولید‬
‫پرتالهای علمی با امکانات دلخواه به آنها کمک میکند‪ .‬سیستم ‪ ،GridPort‬طوری طراحی شده است که امکان‬
‫اجرای سرویسهای پرتال و برنامههای کاربردی سرویسگیرنده از آنها را بر روی ماشینهای سرویسدهنده وب‬
‫مجزا‪ ،‬امکان پذیر مینماید‪ .‬امروزه از ‪ GridPort‬در تولید پرتالهای علمی در زمینههای متفاوتی چون مدلسازی‬
‫مولکولی‪ ،‬پرتونگاری مقطعی و بسیاری از گرایشهای مختلف علم فیزیک استفاده شده است‪.‬‬

‫مؤلفههای نرم افزاری ‪ GridPort‬بر پایه فنآوریهای موجود اینترنت و وب و نیز سرویسهای پایهای مطرح در‬
‫محاسبات گرید بنا نهاده شدهاند‪ .‬برخی از این فنآوریهای مورد استفاده آن عبارتند از‪،JavaScript ،HTML :‬‬
‫‪ GSI ،FTP ،SSL ،SSH ،CGI،Perl‬و برخی امکانات و سرویسهای ارائه شده در ‪ .Globus‬از آنجایی که‬
‫استفاده از فنآوریهای تولید شده برای وب‪ ،‬آسان است و استفاده از آنها فراگیر و گسترده است‪ ،‬برنامههای‬
‫سرویسگیرنده از پرتال که بر اساس ‪ GridPort‬تولید شدهاند‪ ،‬میتوانند به راحتی در هر مرورگر وب استفاده‬
‫شوند‪ .‬در خاتمه باید گفت‪ GridPort ،‬مجموعه کاملی از ابزار در اختیار برنامه نویسان قرار میدهد که آنها به‬
‫راحتی بتوانند پرتال های گرید (چه سرویسهای پرتال روی ماشین سرویس دهنده وب و چه برنامههای سرویس‪-‬‬
‫گیرنده از آنها) را بدون اینکه نیاز به داشتن دانش فراوان از فنآوریهای مختلف وب داشته باشند‪ ،‬تولید کنند‪.‬‬

‫‪1‬‬
‫‪Web Portal services‬‬
‫کانون نشر علوم‬ ‫‪| 612‬‬

‫‪WebFlow :9-2-9-11‬‬

‫‪ WebFlow‬در واقع یک توسعه محاسباتی بر مدل وب است که میتواند به عنوان یک چهارچوب نرم افزاری‬
‫برای انجام محاسبات توزیع شده در سطح گسترده از آن استفاده کرد‪ .‬هدف اصلی در طراحی ‪ ،WebFlow‬ساخت‬
‫و ایجاد یک چهارچوب یکپارچه نرم افزاری برای قراردادن ماژولهای محاسباتی و نرم افزاری بر روی سرویس‪-‬‬
‫دهندگان وب مختلف و استفاده مجدد از این ماژولها به گونهای است که کاربران نهایی با استفاده از یک مرورگر‬
‫وب (و بدون نیاز به ابزارهای خاص و پیچیده) بتوانند این ماژولهای نرم افزاری را در تولید برنامههای کاربردی‬
‫توزیع شده بکار گیرند‪ .‬به عبارت بهتر‪ ،‬ابتدا ماژولها برنامه نویسی شده و بر روی سرویسدهندگان وب و ماشینهای‬
‫مختلف قرار میگیرند‪ ،‬سپس برنامه نویسان‪ ،‬میتوانند با استفاده از امکانات ‪ ،WebFlow‬در مرورگرهای وب به‬
‫صورت ویژوال‪ ،‬برنامههای کاربردی توزیع شده را که متشکل از ماژولهای نرم افزاری توزیع شده بر روی ماشین‪-‬‬
‫های مختلف هستند را‪ ،‬تولید و ویرایش کنند‪ .‬اصطالحا گفته میشود ‪ WebFlow‬امکان ‪ Authoring‬را به‬
‫کاربران میدهد‪.‬‬

‫‪ WebFlow‬یک معماری سه الیه مبتنی بر فنآوریهای جاوا و ‪ J2EE‬دارد که میتوان آن را به صورت یک‬
‫سیستم جریان داده ویژوال‪ 1‬در نظر گرفت‪ .‬باالییترین الیه (‪ ،)front-end‬جهت ‪( Authoring‬پیوند ماژول‪-‬‬
‫های قرارگرفته بر روی ماشینهای مختلف و ایجاد یک برنامه کاربردی توزیع شده با استفاده از ابزارهای گرافیکی‬
‫در مرورگر وب) و نیز کنترل (منابع) محیط بکار میرود‪ .‬الیه میانی‪ ،‬یک میان افزار بر پایه فنآوری ‪ Servlet‬در‬
‫‪ J2EE‬است که از آن جهت مدیریت و ارتباط با ماژولهای الیه زیرین (‪ )back-end‬همانند رابطهای ارتباطی‬
‫با بانکهای اطالعاتی و یا شبیه سازهای با کارایی باال استفاده میشود‪.‬‬

‫‪ WebFlow‬به مدل وب شباهت دارد و قابل قیاس با آن است‪ .‬صفحات وب در مدل وب را میتوان مشابه با‬
‫ماژولهای ‪ WebFlow‬در نظر گرفت و ‪ Hyperlink‬هایی که صفحات وب به یکدیگر را پیوند میدهند را‬
‫میتوان مشابه با کانالهای جریان دادهای میان ماژولی‪ 2‬در ‪ WebFlow‬در نظر گرفت‪ .‬در ابتدا‪ ،‬برنامه نویسانِ‬
‫ماژولهای ‪ ،WebFlow‬ماژولها را تولید کرده و آنها را بر روی سرویسدهندگان وب قرار میدهند‪ .‬سپس‪،‬‬
‫مجتمع سازان برنامههای کاربردی با استفاده از ابزارهای ویژوال ‪ ،WebFlow‬خروجی ماژولهای مبدا را به‬
‫ورودی ماژولهای مقصد پیوند میدهند و بدین صورت‪ ،‬گرافهای محاسباتی توزیع شده را شکل میدهند‪ .‬این‬
‫گرافها را میتوان مشابه با درخت ‪ Job‬ها در ‪ UNICORE‬در نظر گرفت‪ .‬هر نود در این گراف معادل با یک‬
‫ماژول محاسباتی بر روی یک ماشین سرویسدهنده وب است‪ .‬نحوه ارتباط میان ماژولهای مختلف (مثالً اینکه‬

‫‪1‬‬
‫‪Visual dataflow system‬‬
‫‪2‬‬
‫‪Inter-modular dataflow channel‬‬
‫‪| 613‬‬ ‫مقدمهای بر محاسبات گرید‬

‫خروجی یک ماژول باید ورودی یک ماژول دیگر باشد) نیز با لبهها در این گراف نمایش داده میشود‪ .‬به این گراف‬
‫در ‪ ،WebFlow‬اصطالحاً یک ‪ Compute-Web‬گفته میشود‪ .‬در واقع هر کدام از این ‪Compute-Web‬‬
‫ها مشتمل بر چند ماژول محاسباتی و بیان نحوه ارتباط آنها است‪ WebFlow .‬برای تولید برنامه های کاربردی‬
‫جدید این امکان را میدهد که بتوان در مرورگر وب‪ ،‬به راحتی بر روی آیکون ماژولها ‪ Click‬کرد و آنها را انتخاب‬
‫نموده و در محیط ویرایش گرافیکی ‪ WebFlow‬قرار داد و سپس‪ ،‬با کشیدن خطوط اتصالی‪ ،‬میان ماژولهای‬
‫مختلف پیوند برقرار نمود‪ .‬پس از طراحی برنامه کاربردی توزیع شده و ارائه کلیه پارامترهای ورودی مورد نیاز‪،‬‬
‫‪ WebFlow‬برنامه کاربردی توزیع شده را با رعایت وابستگیهای میان ماژولها‪ ،‬بر اساس ورودیها و پارامترهای‬
‫ارائه شده از سوی کاربر‪ ،‬اجرا خواهد کرد‪.‬‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪-‬‬
‫خ فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬
‫فصل دوازدهم ‪-‬حل تست های کنکورهای سالهای اخیر‬

‫حل سواالت کنکور دکتری سال ‪1392‬‬

‫‪-1‬در یک شبکه توری مدور (‪ ،10×10×10 )torus‬تعداد پیوندهای دو طرفه بین گرهها‪ ،‬بیشترین‬
‫فاصله بین دو گره در شبکه (قطر)‪ ،‬و پهنای میانبرشی (‪ )Bisection Width‬چقدر است؟‬
‫‪600 ، 15 ، 2000 )2‬‬ ‫‪400 ، 27 ، 2000)1‬‬
‫‪300 ، 27 ، 3000 )4‬‬ ‫‪200 ، 15 ، 3000 )3‬‬
‫پاسخ‪ :‬با توجه به جدول ‪ 2-2‬داریم‪:‬‬
‫درجه شبکه= ‪ ،2n‬چون در این مثال شبکه سه بعدی هست درجه شبکه=‪6‬‬
‫‪N=10*10*10=1000‬‬
‫)گره درجه × گرهها تعداد( ‪1000×6‬‬
‫=‪3000‬‬ ‫‪2‬‬
‫=‬ ‫‪2‬‬
‫با توجه به یکنواخت بودن شبکه تعداد پیوندها=‬
‫‪10+10+10‬‬ ‫‪k‬‬
‫=‪15‬‬ ‫‪2‬‬
‫قطر=⌋‪=∑ni=1 ⌊ 2i‬‬
‫‪2000 2N‬‬
‫=‪200‬‬ ‫=‬
‫‪10 kmax‬‬
‫میانبرشی=‬ ‫و پهنای‬

‫بنابراین گزینه ‪ 3‬صحیح میباشد‪.‬‬


‫‪ -2‬فرض کنید در یک پردازنده صد هستهای‪ ،‬امکان تلفیق مدارهای ‪ m‬هسته (‪ )2≤m≤100‬برای‬
‫ساخت یک هسته بزرگتر با قدرت پردازشی ‪ √m‬برابر یک هسته معمولی وجود دارد‪ .‬در این‬
‫صورت حداکثر تسریع قابل احتصال برای یک برنامه که ‪ 10‬درصد کد برنامه سریال است‪ .‬برابر‬
‫خواهد بود با (طبق قانون امدال‪ ،‬نسبت به یک هسته معمولی)‪:‬‬
‫‪)2‬بیش از ‪ 10‬اما کمتر از ‪20‬‬ ‫‪)1‬بیش از ‪ 5‬اما کمتر از ‪10‬‬
‫‪ )4‬بیش از ‪50‬‬ ‫‪)3‬بیش از ‪ 20‬اما کمتر ‪50‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪fractionenhanced‬‬ ‫=‬ ‫‪0.9‬‬ ‫پاسخ‪ :‬طبق قانون امدال تسریع برابر است با‪:‬‬
‫‪fractionserial +‬‬ ‫‪0.1+‬‬
‫‪speedup enhanced‬‬ ‫‪√m‬‬

‫‪1‬‬ ‫‪1‬‬
‫بنابراین گزینه ‪ 1‬صحیح میباشد‪.‬‬ ‫‪0.9‬‬ ‫حداکثر برای ‪ m=100‬میباشد بنابراین داریم‪= 0.19 = 5.2 :‬‬
‫‪0.1+‬‬
‫‪√100‬‬

‫‪-3‬گزینه نادرست کدام است؟‬


‫کانون نشر علوم‬ ‫‪| 616‬‬

‫‪)1‬استفاده از زنجیر کردن واحدهای پردازش لولهای (‪ )pipeline chaining‬در یک کامپیوتر برداری پهنای باند‬
‫دسترسی به حافظه را افزایش میدهد‪.‬‬
‫‪1‬‬
‫‪ )2‬طبق قانون امدال گر درصد کد سریال برنامه ‪ f‬باشد‪ ،‬حداکثر تسریع قابل احتصال با پردازش موازی برابر ‪ f‬است‪.‬‬
‫‪ )3‬پهنای میانبرشی در یک شبکه فوق مکعب ‪ 9‬بعدی برابر است با ‪256‬‬
‫‪)4‬شبکه پندسطحی ‪ Clos‬از نوع ‪ non-blocking‬است‪.‬‬
‫پاسخ‪ :‬گزینه ‪ 2‬صحیح میباشد زیرا در قانون امدال حداکثر تسریع زمانی بدست میآید که تسریع بخش قابل‬
‫‪1‬‬ ‫‪1‬‬
‫‪.‬‬ ‫‪fractionenhanced‬‬ ‫=‬ ‫موازات حدکثر شود و بخش دوم مخرج صفر شود‪.‬‬
‫‪fractionserial +‬‬ ‫‪fractionserial‬‬
‫‪speedup enhanced‬‬

‫طبق جدول ‪ 2-2‬پهنای میانبرشی ‪. 29-1=256‬‬


‫طبق مطالب ارائه شده در فصل ‪ 2‬شبکه ‪ CLOS‬شبکه ‪ non-blocking‬است‪ .‬بنابراین پاسخ گزینه ‪ 1‬هست‪.‬‬
‫‪-4‬گزینه صحیح در یک واحد پردازش لولهای کدام است؟‬
‫‪)1‬اگر بیت ‪i‬ام بردار تصادم ‪ 1‬باشد‪ ،‬راهاندازی یک عملیات جدید ‪ i‬پالس پس از شروع عملیات قبلی ممکن است‪.‬‬
‫‪ )2‬بردار تصادم (‪ )collision vector‬در یک خط لوله ‪ n‬سطحی دارای ‪ n‬بیت است‪ ،‬که در آن بیت ‪i‬ام نشان‬
‫دهنده امکان بروز تصادم در صورت راهاندازی (‪ )initiation‬یک عملیات پس از ‪ i‬پالس ساعت است‪.‬‬
‫‪ )3‬سیکل حریصانه (‪ ،)greedy cycle‬دنبالهای از تاخیرهای راهاندازی مجاز در خط لوله است‪.‬‬
‫‪ )4‬امکان افزایش کارایی‪ ،‬با اضافه کردن سطوح تاخیری بین سطوح پردازشی وجود دارد‪.‬‬
‫پاسخ‪ :‬طبق مطالب بخش ‪ 2-6‬فقط گزینه ‪ 4‬صحیح میباشد‪ .‬گزینه ‪ 3‬غلط است زیرا هر دنبالهی از تاخیرات‬
‫مجاز طماع نیست‪ .‬گزینه ‪ :2‬طول بردار تصادم به تعداد ستونهای جدول رزرواسیون وابسته است نه سطوح خط‬
‫لوله‪ .‬گزینه ‪ 1‬اگر بیت ‪i‬ام بردار تصادم ‪ 1‬باشد‪ ،‬راهاندازی یک عملیات جدید ‪ i‬پالس پس از شروع عملیات قبلی‬
‫ممکن نیست‪.‬‬
‫‪ -5‬در یک ابرکامپیوتر برداری میخواهیم برای هر عنصر ‪ x‬در یک بردار ‪ 55‬عنصری عبارت‬
‫) 𝑥√‪ ln(sin‬را محاسبه کنیم‪ .‬به فرض وجود این که خط لوله محاسبه 𝑥√ (‪6‬سطحی)‪sin x ،‬‬
‫(‪8‬سطحی)‪ ،‬و ‪ 4( ln x‬سطحی) در معماری این کامپیوتر موجود باشند‪ ،‬حداکثر تسریع قابل‬
‫احتصال توسط زنجیر کردن (نسبت به حالت بدون زنجیرکردن) برابر کدام است؟‬
‫‪6)4‬‬ ‫‪4.5 )3‬‬ ‫‪3)2‬‬ ‫‪2.5 )1‬‬

‫خط لوله محاسباتی جذر‬ ‫خط لوله محاسباتی سینوس‬


‫پاسخ‪:‬‬

‫‪ln‬خط لوله محاسباتی‬


‫‪| 617‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫وقتی خط لولهها زنجیر نباشند ابتدا ‪ 55‬دستور وارد خط لوله جذر شده و حاصل یک بردار ‪ 55‬عنصری میشود سپس‬
‫‪ 55‬بردار جذر گرفته شده وارد خط لوله سینوس میشوند و حاصل برداری ‪ 55‬عنصره میشود‪ .‬در انتها این ‪55‬‬
‫عنصر وارد خط لوله ‪ ln‬میشوند و حاصل نهایی بدست میآید بنابراین زمان اجرای عبارت برابر با حاصل جمع‬
‫زمانهای اجرای ‪ 55‬دستور در سه خط لوله میباشد‪ .‬اگر زنجیر شوند شکل بصورت زیر میشود‪:‬‬

‫خط لوله محاسباتی جذر‬ ‫خط لوله محاسباتی سینوس‬

‫‪ln‬خط لوله محاسباتی‬

‫بنابراین میتوان به عنوان یک خط لوله با ‪ 18=4+8+6‬مرحله در نظر گرفت‪ .‬بنابراین داریم‪:‬‬


‫‪TSQRT=(6+55-1)t=60t,‬‬
‫‪Tsin=(8+55-1)t=62t,‬‬
‫‪Tln=(4+55-1)t=58t, Ttotal=60t+62t+58t=180t‬‬
‫‪Tchain=(18+55-1)t=72t , Ttotal/Tchain=180t/72t=2.5‬‬
‫بنابراین گزینه ‪ 1‬صحیح میباشد‪.‬‬
‫‪ -6‬در یک خط لوله چهار سطحی‪ ،‬جدول رزواسیون بصورت زیر است‪ .‬حداقل و حداکثر تاخیر‬
‫الزم برای راهاندازی یک عملیات جدید پس از عملیات قبلی برابر کدام است؟‬
‫‪2)4‬و‪6‬‬ ‫‪2)3‬و‪5‬‬ ‫‪1)2‬و‪6‬‬ ‫‪ 1)1‬و ‪5‬‬
‫‪t1‬‬ ‫‪t2‬‬ ‫‪t3‬‬ ‫‪t4‬‬ ‫‪t5‬‬
‫‪S1‬‬ ‫‪X‬‬ ‫‪X‬‬
‫‪S2‬‬ ‫‪X‬‬ ‫‪X‬‬
‫‪S3‬‬ ‫‪X‬‬
‫‪S4‬‬ ‫‪X‬‬

‫پاسخ‪ :‬این سوال نیاز به حل ندارد از تجزیه تحلیل بردار تصادم و محدودیت های روی ‪ MAL‬فصل شش متوجه‬
‫میشویم حداکثر تاخیر ‪ 5‬میباشد زیرا حداکثر تسریع منع شده ‪ 5-1=4‬میباشد‪ .‬بنابراین گزینههای ‪ 2‬و ‪ 4‬حذف‬
‫میشود‪ .‬اما کران پایین ‪ MAL‬به حداکثر تعداد عالیم چک ‪ x‬درهر سطر جدول رزرواسیون وابسته است که در‬
‫اینجا ‪ 2‬میباشد‪ .‬بنابراین گزینه ‪ 3‬درست است‪.‬‬
‫‪ -7‬در دستورات زیر‪:‬‬
‫‪I1: Add r0,r1,r2‬‬
‫‪I2: Sub r0,r3,r6‬‬
‫کانون نشر علوم‬ ‫‪| 618‬‬

‫‪I3: Add r6,r0,r7‬‬


‫کدام وابستگی قابل رفع توسط ‪ Register renaming‬نمیباشد؟‬
‫‪ I3 )2‬به ‪( I1‬دسترسی به ‪)r0‬‬ ‫‪ I2)1‬به ‪( I1‬دسترسی به ‪)r6‬‬
‫‪ I3 )4‬به ‪( I2‬دسترسی به ‪)r0‬‬ ‫‪ I3 )3‬به ‪( I2‬دسترسی به ‪)r6‬‬
‫پاسخ‪ :‬طبق مطلب ارائه شده در فصل شش بخش الگوریتم توماسولو وابستگیهای ‪ WAW, WAR‬قابل رفع‬
‫شدن توسط تغییر نام ثبات میباشند‪ .‬اما گزینه ‪ 1‬وابستگی به ‪ r6‬وجود ندارد‪ .‬احتماال اشتباه تایپی است‪ .‬در گزینه‬
‫‪ 2‬وابستگی ‪ I3‬به ‪ I1‬در دسترسی به ثبات ‪ r0‬از نوع ‪ RAW‬میباشد که قابل رفع نیست‪ .‬در گزینه ‪ 3‬وابستگی ‪I3‬‬
‫به ‪ I2‬در دسترسی به ‪ r6‬از نوع ‪ WAR‬میباشد که قابل رفع میباشد‪ .‬در گزینه ‪ 4‬وابستگی ‪ I3‬به ‪ I2‬در دسترسی‬
‫به ‪ r0‬از نوع ‪ RAW‬میباشد که قابل رفع نمیباشد‪ .‬بنابراین گزینه ‪ 2‬و ‪ 4‬درست میباشد البته اگر صورت مساله‬
‫میباشد میبود گزینه ‪ 3‬درست بود‪.‬‬
‫‪ -8‬در یک مرکز داده‪ ،‬هر سرور خرابی )‪ 1000FIT(Failure in Time‬میباشد‪ ،‬با فرض اینکه‬
‫زمان تعمیر هر سرور ‪ 10‬ساعت طول بکشد‪ ،‬میزان دسترسپذیری هر سرور کدام است؟‬
‫‪0.9999)4‬‬ ‫‪0.9999999)3‬‬ ‫‪0.99999)2‬‬ ‫‪0.999999)1‬‬

‫پاسخ‪ :‬با توجه به مطلب ارائه شده در بخش ‪ 1000FIT=1000000MTTF ، 4-5-1‬و ‪ ،MTTR=10‬و با‬
‫توجه به فرمول دسترس پذیری‪:‬‬
‫𝐹𝑇𝑇𝑀‬ ‫‪1000000‬‬
‫‪(Module availability=(𝑀𝑇𝑇𝐹+𝑀𝑇𝑇𝑅) = 1000010 = 0.99999‬معادله ‪) 19-1‬‬
‫بنابراین گزینه ‪ 2‬صحیح میباشد‪.‬‬
‫‪ -9‬طراحان یک پردازنده قصد بهبود طراحی قبلی خود را دارند‪ .‬یک راه تسریع اجرای برنامهها‬
‫بر روی این پردازنده‪ ،‬بهبود دستورات واحد ‪ Floating Point-FP‬میباشد‪ .‬طراحی جدید‬
‫ریزمعماری این واحد سبب تسریع ‪ 3‬برابری این دستورات شده ولی فضای سطح تراشهی‬
‫بیشتری به این واحد اختصاص داده میشود‪ .‬از این رو‪ ،‬برای ثابت نگه داشتن مساحت سطح‬
‫تراشه‪ ،‬اندازه و ریز معماری حافظه نهان داده طوری تغییر یافته است‪ ،‬که دسترسی به این‬
‫حافظه ‪ 2‬برابر کندتر شده است‪ .‬با این فرض که دستورات ‪ FP‬و دستورات دسترسی به حافظه‬
‫نهان داده به ترتیب ‪ %20‬و ‪ %15‬زمان اجرای کل برنامه در معماری قبلی باشد‪ ،‬تسریع بدست‬
‫آمده چه مقدار خواهد بود؟‬
‫‪0.98 )4‬‬ ‫‪1.02)3‬‬ ‫‪0.88)2‬‬ ‫‪1.12)1‬‬

‫پاسخ‪ :‬اگر زمان اجرای پردازنده قبل از بهبود را ‪ Told‬و زمان اجرای پردازنده جدید را ‪ Tnew‬در نظر بگیریم با توجه‬
‫به اینکه ‪ 0.65‬برنامه بالتغییر است و ‪ 0.2‬تقسیم به ‪ 3‬شده و ‪ 0.15‬دوبرابر کندتر شده است داریم‪:‬‬
‫‪| 619‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫‪0.2‬‬
‫‪Tnew=Told×[0.65+‬‬ ‫‪3‬‬
‫‪+‬‬ ‫‪0.15 × 2]=1.0167Told‬‬
‫𝑑𝑙𝑜𝑇‬ ‫‪1‬‬
‫= 𝑝𝑢𝑑𝑒𝑒𝑝𝑠‬ ‫=‬ ‫‪= 0.98‬‬
‫‪𝑇𝑛𝑒𝑤 1.0167‬‬
‫بنابراین گزینه ‪ 4‬صحیح است‪ .‬یعنی پردازنده جدید در مجموع کندتر میشود‪ .‬برای دیدن مسایل بیشتر به فصل ‪1‬‬
‫سنجش کارایی مراجعه کنید‪.‬‬
‫‪ -10‬طراحی میخواهد ریزمعماری یک پردازنده تک سیکلی )‪ (single cycle‬را به خطلولهای‬
‫)‪ (pipelined‬تبدیل کند‪ ،‬سیکل ساعت طراحی اولیه ‪ 7‬نانوثانیه میباشد‪ .‬پس از تقسیم بندی‬
‫ریزمعماری به چند قسمت‪ ،‬تاخیر هر بخش بدین ترتیب محاسبه میشود‪IF=1ns, ID=1.5ns, :‬‬
‫‪ .EX=2ns, WB=1.5ns‬تاخیر ثباتهای میانی خط لوله برابر ‪ 0.1‬نانوثانیه میباشد‪ .‬با فرض‬
‫اینکه به ازای هر ‪ 4‬دستور‪ ،‬یک ‪ stall‬در خط لوله رخ دهد‪ ،‬تسریع ریزمعماری خطلولهای‪ ،‬نسبت‬
‫به ریزمعماری تک سیکلی‪ ،‬چند است؟‬
‫‪2.67)4‬‬ ‫‪3.44)3‬‬ ‫‪2.22)2‬‬ ‫‪1.79)1‬‬
‫پاسخ‪Tsingle-cycle=7Nns :‬‬
‫بعد از خط لوله کردن زمان خط لوله= حدکثر زمان‪ +‬تاخیر لچ =‪ 2.1=0.1+2‬نانوثانیه ‪ ،‬چون به ازای هر ‪ 4‬دستور‬
‫‪ stall‬داریم تعداد ‪stall‬ها ‪ N/4‬میباشد بنابراین داریم‪:‬‬
‫‪Tpipeline=(4+(N-1))*2.1+N/4*2.1=2.1N+0.525N+6.3‬‬
‫𝑁‪7‬‬ ‫‪7‬‬
‫= 𝑝𝑢𝑑𝑒𝑒𝑝𝑠‬ ‫=‬ ‫‪= 2.67‬‬
‫‪2.625𝑁 + 6.3 2.625‬‬
‫حداکثر افزایش سرعت وقتی ∞→‪ N‬رخ میدهد‪ .‬بنابراین گزینه ‪ 4‬صحیح میباشد‪ .‬مراجعه شود به فصل شش‬
‫‪ -11‬حداکثر تسریع قابل حصول نسبت به اجرای غیرلولهای برای اجرای تعداد نامتناهی‬
‫محاسبات با خط لوله محاسباتی غیر خطی زیر چیست؟‬
‫‪6)4‬‬ ‫‪5)3‬‬ ‫‪2.1)2‬‬ ‫‪1.7)1‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫طبقه ‪1‬‬ ‫‪X‬‬ ‫‪X‬‬
‫طبقه ‪2‬‬ ‫‪X‬‬ ‫‪X‬‬ ‫‪X‬‬
‫طبقه ‪3‬‬ ‫‪X‬‬ ‫‪X‬‬
‫طبقه ‪4‬‬ ‫‪X‬‬ ‫‪X‬‬
‫طبقه ‪5‬‬ ‫‪X‬‬

‫پاسخ‪ :‬با توجه به نکات فصل شش بخش آنالیز تاخیر و نکات راجع به ‪ MAL‬میتوانیم بدون حل پاسخ سوال را‬
‫بدهیم‪ .‬اوال تعداد طبقات خط لوله ‪ k=5‬میباشد و برای خط لوله خطی حداکثر تسریع ‪ 5‬میباشد و برای خط لوله‬
‫غیرخطی کمتر از ‪ 5‬میباشد بنابران گزینههای ‪ 4-3‬رد میشود‪ .‬اما حداقل ‪ MAL‬وابسته به حداکثر تعداد عالیم‬
‫‪5‬‬
‫‪ x‬در سطرهای جدول رزرواسیون میباشد یعنی ‪ MAL=3‬حداقل خواهد بود‪ .‬بنابراین تسریع ‪ 3 = 1.7‬بدست‬
‫کانون نشر علوم‬ ‫‪| 620‬‬

‫میآید‪ .‬حتی اگر دیاگرام حالت را رسم کنید هم به همین نتیجه میرسیم‪ .‬به همین منظور جدول رزرواسیون را‬
‫میکشیم‪ .‬چون تعداد ستونهای جدول رزرواسیون شش میباشد حداکثر تاخیر منع شده ‪ 5‬خواهد بود و تاخیرات ‪،2‬‬
‫‪ 3‬و ‪ 5‬طبق جدول (فاصله بین ‪ x‬ها در جدول) منع شده اند بنابراین بردار تصادم اولیه ‪ 10110‬میباشد و دیاگرام‬
‫حالت بصورت زیر است‪ .‬سیکل طماع )‪ (1,5‬با ‪ MAL=(1+5)/2=3‬میباشد‪.‬‬

‫‪5+‬‬
‫‪10110‬‬

‫‪1‬‬ ‫‪5+‬‬
‫‪5+‬‬
‫‪4‬‬

‫‪4‬‬
‫‪11111‬‬ ‫‪10111‬‬

‫‪ -12‬در یک پردازنده ‪ RISC‬خط لوله دستورالعمل شامل ‪ 6‬طبقهی زیر است‪:‬‬


‫‪Register Write, Memory Access, Execute, Register Read, Decode, Fetch‬‬
‫دستور ‪ Stw Ra,Rs‬مقدار ثبات ‪ Rs‬را در حافظهای که آدرس آن در ‪ Ra‬است‪ ،‬ثبت میکند‪ ،‬و در‬
‫نتیجه از طبقه ‪ Register Write‬استفاده نمیکند‪ .‬دستورهای محاسباتی روی ثباتها (مثل ‪add‬‬
‫‪ )Rd,Rs1,Rs2‬مقدار دو ثبات ‪ Rs1‬و ‪ Rs2‬را خوانده و نتیجه را در ثبات ‪ Rd‬ثبت میکنند‪ .‬و در‬
‫نتیجه از طبقه ‪ Memory access‬استفادهای نمیکنند‪ .‬تنها دستوری که از همه طبقات استفاده‬
‫میکند‪ ،‬دستور ‪ Ldw Rd,Ra‬است‪ ،‬که آدرس حافظه را از ثبات ‪ Ra‬خوانده و مقدار کلمه ثبت‬
‫شده در آن خانه حافظه را به ثبات ‪ Rd‬منتقل میکند‪ .‬اجرای دستورات زیر در این پردازنده چند‬
‫کالک طول میکشد‪.‬‬
‫‪36)4‬‬ ‫‪11)3‬‬ ‫‪6)2‬‬ ‫‪10)1‬‬

‫دستور ‪ Add r3,r4,r5‬مرحله ‪ Memory‬را ندارد ولی یک ‪ stall‬خواهد داشت زیرا هنوز دستور ‪ Ldw r1,r2‬در‬
‫حال ‪ write register‬میباشد و وابستگی ساختاری بوجود میآید‪ .‬و برای دو دستور بعد نیز تکرار میشود‪ .‬اما در‬
‫‪ Stw‬متوقف میشود‪ .‬بنابراین ‪ 10‬قطعه زمانی برای اجرای این دستورات نیاز است‪ .‬البته اگر معماری اجازه ‪out‬‬
‫‪| 621‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫‪ of orde completion‬را ندهد تعداد مراحل ‪ 13‬خواهد شد‪ .‬خوشبختانه بین دستورات متوالی وابستگی داده وجود‬
‫ندارد‪.‬‬
‫‪ -13‬در یک پردازنده ‪ RISC‬خط لوله دستورالعمل شامل ‪ 6‬طبقهی زیر است‪:‬‬
‫‪Register Write, Memory Access, Execute, Register Read, Decode, Fetch‬‬
‫دستور ‪ Stw Ra,Rs‬مقدار ثبات ‪ Rs‬را در حافظهای که آدرس آن در ‪ Ra‬است‪ ،‬ثبت میکند‪.‬‬
‫دستورهای محاسباتی روی ثباتها (مثل ‪ )add Rd,Rs1,Rs2‬مقدار دو ثبات ‪ Rs1‬و ‪ Rs2‬را‬
‫خوانده و نتیجه را در ثبات ‪ Rd‬ثبت میکنند‪ .‬دستور ‪ Ldw Rd,Ra‬است‪ ،‬آدرس حافظه را از‬
‫ثبات ‪ Ra‬خوانده و مقدار کلمه ثبت شده در آن خانه حافظه را به ثبات ‪ Rd‬منتقل میکند‪ .‬خواندن‬
‫و نوشتن ثباتها‪ ،‬هر دو در لبه مثبت پالس ساعت انجام میشود‪ .‬مقدار نهایی محاسبه در این‬
‫پردازنده در دو حالت با و بدون استفاده از ‪ ،Forwarding‬به ترتیب در انتهای کدام کالک در‬
‫حافظه ثبت میشود؟‬
‫‪10)4‬و‪23‬‬ ‫‪12)3‬و‪18‬‬ ‫‪12)2‬و‪17‬‬ ‫‪ 9)1‬و ‪17‬‬
‫پاسخ‪ :‬بدون جلورانی داده داخلی دستورات وابسته باید منتظر دستورات قبلی باشند‪ .‬اما با جلورانی داده از مرحله‬
‫‪ Execute‬به دستور بعدی فوروارد میشود‪ .‬نمودار زمانی دو روش را رسم میکنیم اول بدون جلورانی‪:‬‬

‫با توجه به شکل بدون فورواردینگ ‪ 15‬پالس و با فورواردینگ ‪ 12‬پالس مورد نیاز میباشد که نزدیکترین گزینه‬
‫گزینه ‪ 2‬میباشد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 622‬‬

‫حل سواالت کنکور دکتری سال ‪1393‬‬

‫‪-1‬حجم حافظه اصلی در یک کامپیوتر ‪ 230‬کلمه است و حجم حافظه نهان آن ‪ 216‬کلمه است که‬
‫شامل بلوکهای ‪ 64‬کلمهای است‪ .‬طول فیلد تگ حافظه نهان حداقل ‪ m‬و حداکثر ‪ M‬است‪.‬‬
‫کدام گزینه مقدار صحیح ‪ m‬و ‪ M‬را نشان میدهد؟‬
‫‪m=8 )2‬و ‪m=14)3 M=24‬و ‪m=14)4 M=22‬و ‪M=24‬‬ ‫‪ m=8)1‬و ‪M=22‬‬

‫پاسخ‪ :‬حجم حافظه اصلی ‪ 224‬بلوک و حجم حافظه نهان ‪ 2r=210‬بلوک میباشد‪ .‬بنابراین ‪ s=24,w=6‬است‪.‬‬
‫‪s-‬‬ ‫بیشترین تگ در حافظه انجمنی کامل به اندازه ‪ s=24‬میباشد و کمترین تگ در حافظه نگاشت مستقیم‬
‫‪ r =24-10 =14‬میباشد‪ .‬بنابراین گزینه ‪ 4‬صحیح است‪ .‬رجوع شود به فصل ‪ -5‬حافظه های نهان‬
‫‪ -2‬تعداد مسیرهای متفاوت بین دو گره )‪ (5,7‬و )‪ (2,3‬در یک شبکه توری (‪ 10×10 )Mesh‬و‬
‫تعداد مسیرهای متفاوت بین دو گره ‪ 1011101‬و ‪ 1100100‬در یک شبکه فوق مکعب ‪7‬‬
‫بعدی به ترتیب از راست به چپ چیست؟‬
‫‪ 38)4‬و ‪120‬‬ ‫‪38)3‬و ‪24‬‬ ‫‪35)2‬و‪120‬‬ ‫‪35)1‬و‪24‬‬
‫پاسخ‪ :‬فاصله همینگ دو گره فوق مکعب برابر تعداد یک ها در = ‪1100100⨁1011101‬‬
‫‪0111001‬یعنی ‪ 4‬میباشد بنابراین تعداد مسیرهای متفاوت ‪ 4!=24‬میباشد و تعداد مسیرها در مش ‪ 35‬میباشد‪.‬‬
‫بنابراین گزینه ‪ 1‬درست است‪ .‬مراجعه شود به فصل ‪ 2‬مسیریابی ‪E-cube‬‬

‫‪-3‬در یک پردازنده خطلولهای تعداد سطوح واکشی و اجرای دستور جمعا ‪ 6‬سطح است‪ .‬اگر‬
‫بطور متوسط از هر ‪ 10‬دستور مورد اجرای برنامه ‪ 1‬دستور پرش شرطی باشد‪ ،‬حداقل تسریع‬
‫‪ S‬قابل احتصال در اجرای برنامه (نسبت به پردازنده معادل غیرلولهای) برابر است با‪:‬‬
‫‪S=4 )4‬و ‪S=6‬‬ ‫‪S=4 )3‬و ‪S<6‬‬ ‫‪ S<4 )2‬و ‪S=4‬‬ ‫‪ S<4)1‬و ‪S<6‬‬

‫پاسخ‪ :‬در یک پردازنده خط لوله که درصد دستورات پرش ‪ p‬و احتمال اتفاق افتادن آن ‪ q‬و هزینه پرش ‪b‬‬
‫(‪)1≤b≤k-1‬میباشد زمان اجرا برابر است با‪:‬‬
‫‪T=[k+n-1+pqnb]t‬‬
‫حداکثر تسریع زمانی است که ‪ q=0‬باشد یعنی پرش واقع نشود بنابراین زمان اجرا برابر خواهد با‪:‬‬
‫‪T=[k+n-1]t=[n+5]t‬‬
‫حداقل تسریع زمانی است که ‪ q=1‬و ‪ b=k-1=5‬بنابراین زمان اجرا برابر است با‪:‬‬
‫‪T=[5+n+0.5n]t=[1.5n+5]t‬‬
‫‪| 623‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫زمان اجرا بدون خط لوله =‪ knt=6nt‬و حد افزایش سرعت وقتی ∞→‪ n‬برابر است با‪:‬‬
‫𝑡𝑛‪6‬‬
‫‪lim‬‬ ‫‪=6‬‬
‫𝑛[ ∞→𝑛‬ ‫𝑡]‪+ 5‬‬
‫𝑡𝑛‪6‬‬
‫‪lim‬‬ ‫‪=4‬‬
‫𝑡]‪𝑛→∞ [1.5𝑛 + 5‬‬

‫بنابراین گزینه ‪ 4‬صحیح است‪ .‬فصل شش پیش بینی پرش‬


‫‪-4‬در یک پیشبینی کننده دوبیتی از نوع )‪ ،GAG(3‬حجم حافظه )‪PHT(pattern History Table‬‬
‫و محتوای )‪ BHR(Branch History Table‬پس از اجرای یک حلقه ساده (داخل حلقه دستور‬
‫انتقال کنترل نداریم) با تعداد تکرار ‪ 100‬برابر است با‪:‬‬
‫‪ 128)4‬بیت‪11111110 ،‬‬ ‫‪ 32)3‬بیت ‪11111110‬‬ ‫‪ 16)2‬بیت ‪110 ،‬‬ ‫‪ 64)1‬بیت‪110 ،‬‬
‫پاسخ‪ :‬با توجه به بخش پیش بینی کننده پرش پویا در فصل شش )‪ GAG(3‬یعنی یک عدد ‪ BHR‬سراسری و‬
‫یک ‪ PHT‬سراسری داریم‪ .‬که طول ‪ ،BHR‬سه بیت است و اندازه ‪ 8=2BHR ،PHT‬میباشد و چون پیش بینی‬
‫کننده دو بیتی است هر خانه دو بیت دارد و حجم ‪ 16 ،PHT‬بیت میشود‪ .‬اما چون در حلقه ساده با ‪ 100‬بار تکرار‬
‫سه پرش آخر از چپ به راست ‪ taken,taken,not taken‬میباشد مقدار ‪ BHR=110‬خواهد بود‪ .‬بنابراین گزینه‬
‫‪ 2‬صحیح است‪.‬‬
‫‪ -5‬کدام گزینه در مورد روشهای سوییچینگ در چندکامپیوترهای ‪ message passing‬صحیح‬
‫است؟‬
‫‪)1‬روش ‪ store &Forward‬برای شبکههای با قطر بزرگ مناسب است‪.‬‬
‫‪)2‬کارایی روش ‪ VCT‬و روش ‪ Wormhole‬در ترافیک سنگین تقریبا یکسان است‪.‬‬
‫‪ )3‬کارایی روش ‪ VCT‬و روش ‪ wormhole‬در ترافیک سبک تقریباً یکسان است‪.‬‬
‫‪ )4‬امکان استفاده از کانالهای مجازی در روش ‪ VCT‬و ‪ wormhole‬وجود دارد اما در دروش‬
‫‪ Store&Forward‬وجود ندارد‪.‬‬
‫پاسخ‪ :‬پاسخ گزینه ‪ -3‬مراجعه شود به فصل ‪ 7‬بخش مسیریابی‬

‫‪ -6‬خط لوله ‪ A‬برای محاسبه تابع ‪ f‬با تعداد سطوح ‪ 20‬و فرکانس ‪ 1 GHz‬و خط لوله ‪ B‬برای‬
‫محاسبه تابع ‪ g‬با تعداد سطوح ‪ 30‬و فرکانس ساعت ‪ 1 GHz‬مفروضند‪ .‬قرار است پردازش‬
‫برداری ))‪ Df(g(s‬که در آن ‪ S,D‬دوبردار ‪ 1000‬عنصری هستند را انجام دهیم‪ .‬با فرض زنجیر‬
‫کردن دو خط لوله زمان اجرای این پردازش برداری چند نانو ثانیه است؟‬
‫‪2049)4‬‬ ‫‪2048)3‬‬ ‫‪1049)2‬‬ ‫‪1048)1‬‬
‫کانون نشر علوم‬ ‫‪| 624‬‬

‫پاسخ‪ :‬با توجه به نمونه سوالی که در ابتدای فصل حل کردیم زنجیر این دو واحد مشابه با یک خط لوله برداری‬
‫به طول ‪ 30+20=50‬میباشد که زمان اجرای ‪ 100‬دستور برابر است با‪:‬‬
‫‪ .[k+N-1]t=[50+1000-1]1ns=1049ns‬بنابراین گزینه ‪ 2‬صحیح است‪.‬‬
‫‪-7‬کدام گزینه در مورد قانون امدال (‪ )Amdhal‬صحیح است؟‬
‫‪)1‬مقدار تسریع قابل احتصال در اجرای یک برنامه بصورت موازی محدودیت ندارد‪.‬‬
‫‪)2‬این قانون اثبات میکند که بکارگیری پردازش موازی تسریع مورد انتظار را حاصل نمیکند‪.‬‬
‫‪)3‬این قانون عالوه بر مدل بارکاری تک برنامه برای مدلهای کاری مبتنی بر تعداد نامحدود برنامه نیز صادق است‪.‬‬
‫‪ ) 4‬طبق این قانون سقف تسریع قابل احتصال با توجه به درصدی از کدبرنامه که بایستی بصورت سریال اجرا شود‬
‫مشخص میشود‪.‬‬
‫پاسخ‪ :‬گزینه ‪ 4‬صحیح است‪ .‬در سایر تست های حل شده توضیح داده شد‪ .‬همچنین برای مشخص شدن عدم‬
‫درستی سایر گزینه ها به فصل ‪ 3‬مراجعه شود‪.‬‬
‫‪ -8‬در یک چندکامپیوتر با توپولوژی شبکه فوق مکعب ‪ 10‬بعدی‪ ،‬تعداد گرههای شبکه‪ ،‬قطر‬
‫شبکه‪ ،‬و تعداد همسایهها هر گره به ترتیب برابرند با‪:‬‬
‫‪ 2048)4‬و ‪ 10‬و ‪10‬‬ ‫‪ 2048)3‬و ‪ 10‬و ‪9‬‬ ‫‪1024 )2‬و ‪ 10‬و ‪10‬‬ ‫‪ 1024)1‬و ‪ 9‬و ‪10‬‬
‫پاسخ‪ :‬با توجه به جدول ‪ 2-2‬تعداد گرهها ‪ 210=1024‬درجه گره ‪ 10‬و قطر شبکه ‪ 10‬است‪ .‬بنابراین گزینه ‪2‬‬
‫صحیح است‬
‫‪-9‬سیستم خط لولهای ‪A‬با ‪ 4‬سطح (زمان عملکرد سطوح به ترتیب ‪ ،30 ،25 ،20‬و‪ 25‬نانوثانیه)‬
‫را بصورت ‪ 4-way superscalar‬به سیستم ‪ B‬تبدیل میکنیم که در آن سطوح اول‪ ،‬دوم‪ ،‬سوم و‬
‫چهارم به ترتیب شامل ‪ 6 ،5 ،4‬و ‪ 5‬زیر سطح هر یک با تاخیر عملکرد ‪ 5‬نانوثانیه هستند‪.‬‬
‫حداکثر تسریع قابل احتصال برای پردازش ‪ 100‬ورودی توسط سیستم ‪ B‬نسبت به سیستم ‪A‬‬
‫تقریباً برابر است با‪:‬‬
‫‪4)4‬‬ ‫‪6)3‬‬ ‫‪13)2‬‬ ‫‪14)1‬‬
‫پاسخ‪ :‬چون زمان سیستم ‪ A‬در سطوح مختلف مشابه نیست حداکثر زمان برای پالس خط لوله در نظر گرفته‬
‫میشود یعنی ‪ 30‬نانو ثانیه‪ .‬زمان اجرا در سیستم ‪A‬برابر است با‪TA=[k+N-1]*t=[4+100-1]*30=3090 :‬‬

‫زمان اجرای ‪ N‬دستور در سوپراسکالر ‪4‬راهه عبارت است از‪:‬‬


‫𝑚‪𝑁−‬‬
‫‪Tmway=(𝑘 +‬‬ ‫𝑚‬
‫𝑡)‬
‫‪| 625‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫در سیستم ‪ B‬زمان پالس ساعت به ‪ t=5ns‬و ‪ k=20‬تبدیل میشود‪ .‬با جایگذاری در فرمول فوق داریم‪:‬‬
‫‪100 − 4‬‬
‫‪𝑇𝐵 = (20 +‬‬ ‫‪) × 5 = 220‬‬
‫‪4‬‬
‫‪3090‬‬
‫بنابراین تسریع برابر است با = ‪ .14 220‬مراجعه شود به فصل شش بخش سوپراسکالر‪.‬‬
‫‪-10‬کدام گزینه در مورد وابستگی دادهای بین دستورات داخل خط لوله صحیح است؟‬
‫‪)1‬وابستگی ‪ read-after-write‬وابستگی واقعی (‪ )true dependency‬و وابستگی ‪ write-after-read‬و‬
‫‪ write-after-read‬وابستگی غیر واقعی (‪ )false dependency‬هستند‪.‬‬
‫‪)2‬تاخیرهای ایجاد شده بواسطه وابستگی دادهای بین دستورات را میتوان به کمک ‪internal data forwarding‬‬
‫بطور کامل رفع کرد‪.‬‬
‫‪)3‬وابستگی واقعی را میتوان با ‪ register renaming‬از بین برد‪.‬‬
‫‪ )4‬همه موارد‬
‫پاسخ‪ :‬گزینه ‪ 1‬است توضیح در متن کتاب فصل شش الگوریتم توماسولو آورده شده است‪.‬‬

‫‪ -11‬سیستم چند کامپیوتری ‪ A‬با توپولوژی شبکه ‪ torus‬سه بعدی با ابعاد ‪ 16×8×8‬و سیستم‬
‫چندکامپیوتری ‪ B‬با توپولوژی فوق مکعب ‪ 10‬بعدی را در نظر بگیرید‪ .‬قطر شبکه ‪ A‬را ‪ dA‬و قطر‬
‫شبکه ‪ B‬را ‪ ، dB‬تعداد گرههای شبکه ‪ A‬را ‪ NA‬و تعداد گرههای شبکه ‪ B‬را ‪ ،NB‬تعداد کانالهای‬
‫شبکه ‪ A‬را ‪ EA‬و تعداد کانالهای شبکه ‪ B‬را ‪ EB‬فرض کنید‪ .‬کدام گزینه در مورد این دوشبکه‬
‫صحیح است‪:‬‬
‫‪dA=13 ،EB=3000 ، NA>NB )2‬‬ ‫‪dB=10 ،EB=10NB ، NA<NB)1‬‬

‫‪dB=11 ،EB=10NA ،EB=6000 )4‬‬ ‫‪dA=16 ،EB=5NA ،EA=3000)3‬‬

‫پاسخ‪ :‬با توجه به جدول ‪ 2-2‬داریم‪.‬‬


‫‪ NA=16*8*8=1024‬و ‪ NB=210=1024‬بنابراین ‪ NA=NB‬وگزینه های ‪ 1‬و‪ 2‬غلط میباشند‪.‬‬
‫‪ DA=(16+8+8)/2=16‬و ‪ dB=10‬بنابراین گزینه ‪ 4‬نیز غلط است و گزینه ‪ 3‬درست است‪.‬‬
‫درجه ‪ 6=A‬و درجه ‪ .10=B‬اما ‪ EA=(6*1024)/2=3000‬و ‪EB=(10*1024)/2=5120=5NA‬‬

‫‪ -12‬اگر مجموعه متغیرهای ورودی پردازههای ‪ p1‬و ‪ p2‬و ‪ p3‬به ترتیب ‪I1‬و ‪ I2‬و ‪ I3‬و مجموعه‬
‫متغیرهای آنها به ترتیب ‪ O1‬و ‪ O2‬و ‪ O3‬باشند و داشته باشیم‪:‬‬
‫}{=‪I1∩O2‬‬ ‫}{=‪I1∩O3‬‬ ‫}{=‪O1∩O2‬‬ ‫}{=‪I2∩O3‬‬ ‫}{=‪I2∩I3‬‬
‫}{=‪O1∩O3‬‬ ‫}{=‪O1∩I2‬‬ ‫}{=‪I1∩I3‬‬ ‫}{=‪I1∩I2‬‬ ‫}{=‪O2∩O3‬‬
‫کانون نشر علوم‬ ‫‪| 626‬‬

‫آنگاه کدام پردازهها میتوانند بدون هیچگونه نگرانی بطور موازی اجرا شوند؟‬
‫‪)4‬هرسه گزینه صحیح است‪.‬‬ ‫‪ P2)3‬با ‪P3‬‬ ‫‪ P1)2‬با ‪P3‬‬ ‫‪ P1)1‬با ‪P2‬‬

‫پاسخ‪ :‬طبق مطالب ارائه شده در فصل ‪ 2‬دو پردازه ‪ 1‬و‪ 2‬میتوانند موازی شوند اگر شرایط برنشتاین را داشته باشند‬
‫یعنی‪:‬‬
‫∅ = ‪I1 ∩ O2‬‬
‫∅ = ‪{ I2 ∩ O1‬‬
‫∅ = ‪O1 ∩ O2‬‬
‫بنابراین اشتراک مجموعه ورودیها مثل }{=‪ I1∩I2‬و }{=‪ I1∩I3‬و }{=‪ I2∩I3‬هیچ اطالعاتی به ما نمی‪-‬‬
‫دهند‪.‬‬
‫بررسی موازات ‪ P1‬و ‪ :P2‬طبق جدول داریم‪ I1∩O2={} :‬و }{=‪ O1∩O2‬و }{=‪ O1∩I2‬که سه شرط را‬
‫دارند‪.‬‬
‫بررسی موازات ‪ P1‬و ‪ :P3‬طبق جدول داریم‪ I1∩O3={}:‬و }{=‪ O1∩O3‬که کمبود یکی از شرایط برنشتاین‬
‫را دارد و قابل موازی سازی نیستند‪.‬‬
‫بررسی موازات ‪ P2‬با ‪ :P3‬طبق جدول داریم‪ I2∩O3={} :‬و}{=‪ O2∩O3‬که کمبود یکی از شرایط برنشتاین‬
‫را دارد و قابل موازی سازی نیستند‪ .‬بنابراین گزینه ‪ 1‬درست است‪.‬‬

‫پاسخ‪ :‬گزینه ‪ 3‬مراجعه شود به فصل ‪ 3‬سنجش کارایی چند پردازندهها‬


‫‪| 627‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫پاسخ‪ :‬گزینه ‪ 1‬به بخش فصل نه مدلهای سازگاری‬


‫کانون نشر علوم‬ ‫‪| 628‬‬

‫پاسخ‪ :‬گزینه ‪ -3‬نمودار تسریع در کامپیوتر برداری بصورت زیر است‪:‬‬

‫در این نمودار‪ ،‬بخش دندان ارهای مربوط به معماری ثبات به ثبات و بخش باالیی مربوط به حافظه به حافظه است‪.‬‬
‫‪| 629‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫حل سواالت کنکور دکتری سال ‪1394‬‬

‫‪-1‬کدام گزینه در مورد روشهای سوییچینگ در چند کامپیوترها صحیح است؟‬


‫‪)1‬امکان به کارگیری کانال مجازی فقط در روشهای سوییچینگ ‪ VCT‬و ذخیره‪-‬و‪-‬ارسال وجود دارد‪.‬‬
‫‪)2‬روش سوییچینگ ذخیره‪-‬و‪-‬ارسال (‪ )store and forward‬برای شبکههای با قطر کوچک مناسبتر است‪.‬‬
‫‪)3‬کارایی روش سوییچینگ خزشی (‪ )wormhole‬و روش سوییچینگ مدار (‪ )circuit switching‬در ترافیک‬
‫شبکه سنگین تقریباً یکسان است‪.‬‬
‫‪ )4‬کارایی روش سوییچینگ )‪ VCT (virtual cut-through switching‬و روش سوییچینگ مدار ‪(circuit‬‬
‫)‪ switching‬در ترافیک شبکه سبک تقریباً یکسان است‪.‬‬
‫پاسخ‪ :‬گزینه ‪ .2‬باتوجه به وابستگی زمان ارسال ‪ S&F‬به ‪ D‬قطر شبکه هر چه این میزان کوچکتر باشد مناسبتر‬
‫است‪ .‬مراجعه شود به فصل ‪ 7‬بخش مسیریابی‬
‫‪-2‬میخواهیم ‪ n‬برنامه هر یک با زمان اجرای ‪ T‬و زمان اجرای بخش سریال ‪ t‬و ‪ n‬برنامه دیگر‬
‫با زمان اجرای ‪ 2T‬و زمان اجرای بخش سریال ‪ t‬را اجرا کنیم‪ .‬حداکثر تسریع قابل احتصال‬
‫برای اجرای این ‪ 2n‬برنامه روی یک سیستم چندپردازنده متشکل از ‪ n‬پردازنده (نسبت به‬
‫اجرای روی یک پردازنده) چیست؟‬
‫‪3nT/(t+3(T-T)/n) )4‬‬ ‫‪2n/3)3‬‬ ‫‪2nt/T)2‬‬ ‫‪n)1‬‬

‫پاسخ‪:‬‬
‫‪3nt)+3nt , Tsingle/Tparalell=3nT/(3T+3nt=3T+Tsingle=2nT+nT=3nT , Tparallel=3nT/n‬‬

‫بیشترین تسریع قابل احتصال زمانی میباشد که بخش سریال یعنی ‪ t‬صفر باشد در اینصورت حداکثر افزایش سرعت‬
‫‪ 3nT/3T=n‬خواهد بود و گزینه ‪ 1‬صحیح است‪.‬‬
‫‪ -3‬اگر فاصله همینگ آدرس دو گره در یک شبکه فوق مکعب )‪ n (hypercube‬بعدی برابر ‪m‬‬
‫باشد‪ ،‬فاصله این دو گره و تعداد مسیرهای متفاوت بین آنها به ترتیب کدام است؟‬
‫‪ m )2‬گام و !‪ m‬مسیر‬ ‫‪ m)1‬گام و ‪ m‬مسیر‬
‫‪ m-1)4‬گام و ‪m‬مسیر‬ ‫‪ m-1)3‬گام و !‪ m‬مسیر‬
‫پاسخ‪ :‬گزینه ‪ -2‬مراجعه شود به فصل ‪ 2‬مسیر یابی‪Ecube‬‬
‫کانون نشر علوم‬ ‫‪| 630‬‬

‫‪-4‬جدول رزرواسیون یک سیستم خطلولهای ‪ 3‬سطحی به شکل زیر است‪ .‬کدام تاخیر راه‪-‬‬
‫اندازی )‪ (initiation latency‬منجر به بروندهی )‪ (throughput‬بیشتر بر حسب سیکل خواهد‬
‫شد؟‬
‫‪5)4‬‬ ‫‪4)3‬‬ ‫‪3)2‬‬ ‫‪2)1‬‬
‫‪t1‬‬ ‫‪t2‬‬ ‫‪t3‬‬ ‫‪t4‬‬ ‫‪t5‬‬ ‫‪t6‬‬ ‫پاسخ‪ :‬طبق جدول بردار تصادم اولیه‪ 10111:‬میباشد‬
‫‪S1‬‬ ‫‪x‬‬ ‫‪X‬‬
‫‪S2‬‬ ‫‪x‬‬ ‫‪x‬‬ ‫‪x‬‬ ‫تنها تاخیر مجاز ‪ 4‬میباشد‪ .‬و دیاگرام حالت آن به شکل‬
‫‪S3‬‬ ‫‪x‬‬ ‫زیر است‪ :‬بنابراین گزینه ‪ 3‬صحیح است‪.‬‬
‫‪+‬‬ ‫‪+‬‬
‫‪4 ,5‬‬
‫‪10111‬‬ ‫مراجعه شود به فصل ششم زمانبندی بدون تصادم‬
‫‪-5‬جدول رزرواسیون زیر نشاندهند چگونگی فعالیتهای سطوح مختلف یک خطلوله برای‬
‫محاسبه دو تابع ‪ A,B‬است‪ .‬ماتریس تصادم اولیه )‪ (initial collision matrix‬کدام است؟‬
‫‪0001‬‬ ‫‪0010‬‬ ‫‪0001‬‬ ‫‪0110‬‬
‫[ = 𝐴𝑀‬ ‫[ = 𝐵𝑀 ‪] ,‬‬ ‫‪] )2‬‬ ‫[ = 𝐴𝑀‬ ‫[ = 𝐵𝑀 ‪] ,‬‬ ‫‪])1‬‬
‫‪1010‬‬ ‫‪0110‬‬ ‫‪1010‬‬ ‫‪0010‬‬
‫‪0110‬‬ ‫‪0001‬‬ ‫‪0001‬‬ ‫‪1010‬‬
‫[ = 𝐴𝑀‬ ‫[ = 𝐵𝑀 ‪] ,‬‬ ‫‪] )4‬‬ ‫[ = 𝐴𝑀‬ ‫[ = 𝐵𝑀 ‪] ,‬‬ ‫‪])3‬‬
‫‪1010‬‬ ‫‪0010‬‬ ‫‪0110‬‬ ‫‪0010‬‬

‫‪t1‬‬ ‫‪t2‬‬ ‫‪t3‬‬ ‫‪t4‬‬ ‫‪t5‬‬


‫‪S1‬‬ ‫‪A‬‬ ‫‪B‬‬
‫‪S2‬‬ ‫‪B‬‬ ‫‪B‬‬ ‫‪A‬‬
‫‪S3‬‬ ‫‪A‬‬ ‫‪A‬‬ ‫‪B‬‬
‫‪S4‬‬ ‫‪B‬‬ ‫‪A‬‬

‫پاسخ‪ :‬با توجه به مطالب ارائه شده در فصل ششم بخش ماتریس تصادم اولیه گزینه ‪ 1‬صحیح میباشد‪ .‬ماتریس‬
‫تصادم بصورت زیر محاسبه میشود‪.‬‬
‫𝐴𝐴 ‪0001,‬‬
‫[=‪MA‬‬ ‫]‬
‫𝐴𝐵 ‪1010,‬‬

‫𝐵𝐴 ‪0110,‬‬
‫[=‪MB‬‬ ‫]‬
‫𝐵𝐵 ‪0010,‬‬
‫‪-6‬در یک پردازنده خط لولهای دستورات نوع ‪ A‬و نوع ‪ B‬سطوح زیر را برای واکشی و اجرا‬
‫بایستی طی کنند برای اجرای دو دستور متوالی (دستور ‪ i‬از نوع ‪ A‬و دستور ‪ i+1‬از نوع ‪ )B‬در‬
‫یک برنامه احتمال وقوقع کدام ‪ hazard‬وجود دارد؟‬
‫‪write-after-write)2‬‬ ‫‪read-after-write)1‬‬

‫‪)4‬هر یک از موارد ‪1‬و‪2‬و‪ 3‬میتوانند رخ دهند‪.‬‬ ‫‪write-after-read)3‬‬


‫‪| 631‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫پاسخ‪ :‬اگر در پردازنده امکان ‪ in order issue- in order completion‬باشد در اینصورت مخاطره ‪read-‬‬
‫‪ after-write‬وجود خواهد داشت چرا که باید اول دستور ‪ i‬تکمیل شود و در عملوندی بنویسد که دستور ‪ i+1‬آن‬
‫را بخواند‪ .‬اگر در پردازنده امکان ‪ in order issue-out of order completion‬وجود داشته باشد امکان‬
‫مخاطره ‪ write-after read‬وجود دارد چرا که ممکن است دستور ‪ i+1‬در عملوندی بنویسد که دستور ‪ i‬در‬
‫پالسهای بعدی از آن استفاده کند‪ .‬امکان مخاطره ‪ write-after write‬در هر حالتی وجود دارد و هر دو در یک‬
‫ثبات مقصد بنویسند‪.‬بنابراین گزینه ‪ 4‬صحیح است‪ .‬به فصل شش مراجعه شود‪.‬‬
‫‪-7‬کدام گزینه در مورد انواع فقدان (‪ )miss‬در حافظه نهان صحیح است؟‬
‫‪)1‬فقدان تضاد (‪ )conflict miss‬فقط در حافظه نهان با نگاشت مستقیم رخ میدهد‪.‬‬
‫‪)2‬فقدان اجباری (‪ )compulsory miss‬فقط در حافظه نهان با نگاشت مستقیم رخ میدهد‪.‬‬
‫‪)3‬فقدان ظرفیت (‪ )capacity miss‬فقط در حافظه نهان با نگاشت کامالً انجام (‪ )fully-associative‬رخ‬
‫میدهد‪.‬‬
‫‪ )4‬هر سه نوع فقدان اجباری‪ ،‬تضاد و ظرفیت میتوانند در حافظه نهان با نگاشت مجموعه‪-‬انجمنی (‪set-‬‬
‫‪ )associative‬رخ میدهند‪.‬‬
‫پاسخ‪:‬گزینه ‪ 4‬صحیح است‪ .‬هر سه نوع فقدان میتوانند در هر نوع حافظه نهانی رخ دهند‪ .‬به فصل ‪ 5‬انواع‬
‫فقدانها در حافظه نهان مراجعه شود‪.‬‬
‫‪-8‬در یک کامپیوتر برداری خط لوله الف (دارای ‪ n‬سطح) برای محاسبه تابع ‪ f1‬روی عناصر‬
‫بردار ورودی و خط لوله ب (دارای ‪ m‬سطح) برای تابع ‪ f2‬روی عناصر بردار ورودی موجودند‪.‬‬
‫اگر تسریع محاسبه متوالی دو تابع ‪ f1‬و ‪ f2‬روی عناصر بردار ورودی ‪( V‬یعنی محاسبه‬
‫))‪ )f1(f2(v‬در سیستم با امکان زنجیر کردن خط لوله (‪ )pipeline chaining‬نسبت به سیستم‬
‫‪3‬‬
‫خط لوله معمولی (بدون امکان زنجیر کردن) برابر ‪ 2‬باشد تعداد عناصر بردار ورودی (طول بردار)‬
‫چقدر است؟‬
‫‪)4‬با این فرضیات قابل تعیین نیست‪.‬‬ ‫‪2m+2n )3‬‬ ‫‪m-n-1)2‬‬ ‫‪m+n+1)1‬‬
‫کانون نشر علوم‬ ‫‪| 632‬‬

‫پاسخ‪ :‬قبال در تستهای سال های قبل توضیح داده شد در حالت بدون زنجیر زمان دو خط لوله با هم جمع‬
‫میشوند و در زنجیر معادل یک خط لوله به طول ‪ m+n‬داریم که حاصل تقسیم این دو تسریع را بدست میآورد با‬
‫فرض اینکه طول بردار ‪ N‬باشد داریم‪:‬‬
‫‪Tnotchain=[n+(N-1)+m+(N-1)]t=[n+m+2N-2]t‬‬
‫‪Tchain=[m+n+(N-1)]t‬‬
‫‪𝑇𝑛𝑜𝑡𝑐ℎ𝑎𝑖𝑛 𝑛 + 𝑚 + 2𝑁 − 2 3‬‬
‫=‬ ‫‪= ⟹ 3𝑛 + 3𝑚 + 3𝑁 − 3 = 2𝑛 + 2𝑚 + 4𝑁 − 4‬‬
‫𝑛𝑖𝑎‪𝑇𝑐ℎ‬‬ ‫‪𝑛+𝑚+𝑁−1‬‬ ‫‪2‬‬
‫‪⇒𝑁 =𝑛+𝑚+1‬‬
‫بنابراین گزینه ‪ 1‬صحیح است‪.‬‬
‫‪-9‬در یک پیشبینی کننده پرش دوبیتی از نوع )‪ GAS(2,4‬آدرس پرش جاری ‪ a‬و تابع نگاشت‬
‫آدرس به مجموعه ‪ f‬است‪ .‬اگر برای دستور پرش جاری داشته باشیم ‪ f(a)=2‬و سه دستور پرش‬
‫قبلی به ترتیب ‪ taken ،taken ،not taken‬بوده باشند و جدول )‪PHT(pattern history table‬‬
‫بصورت زیر باشد‪ ،‬خروجی پیشبینی کننده و مقدار جدید درایه مربوط به جدول ‪ PHT‬به ترتیب‬
‫چه خواهد بود؟‬

‫پاسخ‪ :‬با توجه به مطالب ارائه شده در فصل شش بخش پیشبینی کننده پرش پویا )‪ GAS(2,4‬یعنی یک‬
‫‪ BHR‬سراسری به طول ‪ 2‬و ‪ 4‬جدول ‪ PHT‬بصورت مجموعهای داریم‪ .‬با توجه به اینکه ‪ BHR‬یکی میباشد و‬
‫براساس پرشهای قبلی مقدار میگیرد مقدار آن بعد از سه دستور اخیر ‪ 11‬خواهد بود‪ .‬بصورت شکل زیر‪:‬‬

‫اما ‪ f(a)=2‬یعنی به )‪ PHT(2‬رجوع میشود و خانه ‪ 11‬که در آن مقدار ‪ 01‬وجود دارد‪ .‬چون پیشبینی براساس‬
‫بیت با ارزش انجام میشود که چون صفر است‪ ،‬پرش بعدی ‪ not taken‬پیشبینی میشود و بنابراین از مقدار خانه‬
‫‪ 11‬جدول )‪ PHT(2‬یک واحد کم میشود و ‪ 00‬میشود‪ .‬بنابراین گزینه ‪ 1‬صحیح است‪.‬‬
‫‪| 633‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫‪-10‬کدام گزاره صحیح است؟‬


‫‪)1‬درمعماری کامپیوترهای برداری کاربرد خط لوله منحصرا در واحد محاسبه (‪ )ALU‬است‪.‬‬
‫‪)2‬وابستگی دادهای ‪ read-after-write‬را میتوان با روش ‪ register renaming‬از بین برد‪.‬‬
‫‪)3‬روش پرش معوق (‪ ) delayed branch‬روشی برای به تاخیر انداختن دستور پرش است تا نتیجه انجام یا عدم‬
‫انجام پرش مشخص شود‪.‬‬
‫‪)4‬روشهای جایگزینی )‪ NRU (not recently used‬و )‪ (least recently used‬در یک حافظه نهان ‪2-‬‬
‫‪ way set associative‬معادلند‪.‬‬
‫پاسخ‪ :‬گزینه ‪ .4‬در گزینه ‪ 1‬خط لوله مختص ‪ ALU‬نیست‪ .‬در گزینه ‪ 2‬روش ‪ register renaming‬برای حذف‬
‫وابستگیهای ‪ WAR,WAR‬استفاده میشود نه ‪ .RAW‬در گزینه ‪ delayed branch ، 3‬برای بهبود استفاده‬
‫از خط لوله میباشد‪.‬‬
‫‪ )11‬در یک خط لوله‪ ،‬بردار تصادم اولیه (‪ ،)Collision vector‬برابر )‪ V0=(1101011‬است‪ .‬کدام‬
‫گزینه درست است؟ منظور از ‪ )minimum average latency(MAL‬مقدار کمینه متوسط تاخیر‬
‫راهاندازی است‪.‬‬
‫‪ MAL=4)1‬و )‪ (3,5‬سیکل حریصانه (‪ )greedy cycle‬است‪.‬‬
‫‪MAL=4)2‬و (‪ )3,8‬سیکل حریصانه (‪ )greedy cycle‬است‪.‬‬
‫‪ MAL=4.5)3‬و >‪ <3,9,5,3‬یک دنباله تاخیرهای راهاندازی مجاز است‪.‬‬
‫‪ MAL=4.5)4‬و >‪ <3,9,3,6‬یک دنباله تاخیرهای راهاندازی مجاز است‪.‬‬
‫پاسخ‪ :‬دیاگرام حالت بصورت زیر میباشد‪:‬‬

‫‪1101011‬‬ ‫و‪5 7 +‬‬

‫‪3‬‬
‫و‪5 7 +‬‬

‫‪1101111‬‬
‫با توجه به دیاگرام حالت ‪ MAL=(3+5)/2=4‬و سیکل طماع )‪ (3,5‬میباشد‪ .‬بنابراین گزینه ‪ 1‬صحیح است‪.‬‬
‫‪ )12‬قطر (‪ ،)dimension‬و پهنای میانبرش (‪ )bisection width‬یک شبکه توری مدور ‪ n‬بُعدی‬
‫(‪ )n-dimensional-torus‬با اندازه ابعاد ‪ 2k‬گره برابر است با‪:‬‬
‫‪ nk)2‬و ‪2nkn-1‬‬ ‫‪kn-1 ،nk-n)1‬‬
‫کانون نشر علوم‬ ‫‪| 634‬‬

‫‪ nk-n)4‬و ‪2n-1kn-1‬‬ ‫‪ nk)3‬و ‪2kn-1‬‬

‫پاسخ‪ :‬طبق جدول ‪ 2-2‬فصل ‪ 2‬برای یک توری مدور داریم‪:‬‬


‫𝑛‬ ‫𝑛‬
‫𝑖𝑘‬ ‫𝑘‪2‬‬
‫∑ = ⌋ ⌊ ∑ = 𝑟𝑒𝑡𝑒𝑚𝑎𝑖𝑑‬ ‫𝑘𝑛 =‬
‫‪2‬‬ ‫‪2‬‬
‫‪𝑖=1‬‬ ‫‪𝑖=1‬‬

‫𝑛)𝑘‪𝑁 = (2‬‬
‫𝑁‪2‬‬ ‫𝑛)𝑘‪2(2‬‬
‫= ‪𝑏𝑖𝑠𝑒𝑐𝑡𝑖𝑜𝑛 𝑤𝑖𝑑𝑡ℎ‬‬ ‫=‬ ‫‪= 2(2𝑘)𝑛−1 = 2𝑛 𝑘 𝑛−1‬‬
‫𝑥𝑎𝑚𝑘‬ ‫𝑘‪2‬‬
‫بنابراین گزینه ‪ 2‬صحیح است‪.‬‬
‫‪ -13‬با فرض اینکه ‪ %20‬دستورات یک برنامه‪ ،‬پرش شرطی هستند حداکثر تسریع در اجرای‬
‫این برنامه روی یک پردازنده ابراسکالر ‪ 4‬راهه (‪ )4-way superscalar‬با خط لوله ‪8‬سطحی‬
‫نسبت به پردازنده با معماری معمولی (بدون خط لوله) چیست؟ فرض کنید در پردازنده‬
‫ابراسکالر مذکور از یک پیشبینی کننده پرش با نرخ پیشبینی صحیح ‪ %90‬استفاده میشود‪.‬‬
‫‪)4‬حدود ‪12‬‬ ‫‪)3‬حدود ‪20‬‬ ‫‪)2‬حدود ‪26‬‬ ‫‪)1‬حدود ‪32‬‬
‫‪Tnonpipeline=Nkt=8Nt‬‬ ‫پاسخ‪:‬‬
‫احتمال دستورات پرش ‪ p=0.2‬با توجه به پیشبینی صحیح ‪ 0.9‬احتمال وقوع پرش ‪ q=0.1‬میباشد‪ .‬و با وقوع‬
‫پرش ‪ 7‬دستور دیگر از خط لوله باید خارج شوند یعنی ‪ .b=7‬بنابراین داریم‪:‬‬
‫𝑘‪𝑁−‬‬ ‫‪𝑁−8‬‬
‫‪T4waysuperscalar=[𝑘 +‬‬ ‫‪+ 𝑝𝑞𝑁𝑏] 𝑡 = [8 +‬‬ ‫= 𝑡 ]‪+ 0.2 ∗ 0.1𝑁 ∗ 7‬‬
‫‪4‬‬ ‫‪4‬‬
‫𝑁‪32+𝑁−8+0.56‬‬ ‫‪1.56𝑁𝑡+24‬‬
‫[‬ ‫‪4‬‬
‫= 𝑡]‬ ‫‪4‬‬
‫𝑒𝑛𝑖𝑙𝑒𝑝𝑖𝑝𝑛𝑜𝑛𝑇‬ ‫𝑡𝑁‪8‬‬ ‫𝑁‪32‬‬ ‫‪32‬‬
‫=‬ ‫=‬ ‫=‬ ‫‪= 20.5‬‬
‫𝑟𝑎𝑙𝑎𝑐𝑠𝑟𝑒𝑝𝑢𝑠𝑦𝑎𝑤‪𝑇4‬‬ ‫‪[1.56𝑁 + 24]𝑡 1.56𝑁 + 24 1.56‬‬
‫‪4‬‬
‫حداکثر تسریع در حد ∞→‪ N‬اتفاق میافتد حاصل حدی عبارت فوق حدودا ‪ 20‬میباشد‪ .‬بنابراین گزینه ‪ 3‬صحیح‬
‫است‪.‬‬
‫‪-14‬کدام گزینه توابع مناسب ‪ LOCK‬و ‪ UNLOCK‬را برای پیادهسازی ناحیه بحرانی نشان‬
‫میدهد‪ .‬دستورات ‪ TEST_AND_SET‬و ‪ XCHANGE‬اتمیک هستند‪ .‬دستور ‪ jcxz‬در‬
‫صورتیکه محتویات ثبات ‪ CX‬صفر باشد به آدرس داده شده پرش میکند‪.‬‬
‫‪| 635‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫پاسخ‪ :‬برای ناحیه بحرانی باید سه شرط بررسی شود‪:‬‬


‫‪ -1‬انحصار متقابل بطوریکه همزمان دو پردازه وارد ناحیه بحرانی نشوند‪.‬‬
‫‪ -2‬شرط پیشرفت برقرار باشد بطوریکه بتواند پردازهای که وارد ناحیه بحرانی شده به کار خود ادامه دهد‪.‬‬
‫‪ -3‬شرط قحطی زدگی بطوریکه شرایط طوری نباشد که هیچ پردازهای نتواند وارد ناحیه بحرانی شود یا بطور‬
‫بینهایت منتظر ورود به ناحیه بحرانی بماند‪.‬‬
‫با توجه به این شرایط و بررسی گزینه ها فقط گزینه ‪ 1‬همه شرایط را برآورده میکند‪.‬‬

‫حل سواالت کنکور دکتری سال ‪1396‬‬

‫‪-1‬پردازندهای از ساختار پیشبینی کننده انشعاب دوبیتی برای بهبود کارایی اجرای برنامهها‬
‫استفاده میکند‪ .‬توالی انشعابهای انجام شده را در یک برنامه از سمت چپ به راست در نظر‬
‫بگیرید‪ .‬در هر مورد ‪ T‬نشان دهنده انجام شدن انشعابات و ‪ N‬نشان دهنده انجام نشدن‬
‫انشعاب است‪ .‬اگر پیشبینی کننده قبل از اولین انشعاب در وضعیت "انجام نمیشود (با احتمال‬
‫کم)" باشد‪ ،‬چند انشعاب از ‪ 10‬انشعاب پایانی برنامه‪ ،‬توسط این سیستم به درستی پیشبینی‬
‫میشود؟‬
‫کانون نشر علوم‬ ‫‪| 636‬‬

‫‪2)4‬‬ ‫‪3)3‬‬ ‫‪4)2‬‬ ‫‪5)1‬‬

‫‪TTTTTTTTNNTTNNTNNT‬‬
‫انجام شده‬
‫انجام شده‬ ‫انجام شده‬ ‫انجام شده‬
‫انجام نشده‬
‫انجام نمیشود‬ ‫انجام نمیشود‬ ‫انجام میشود‬ ‫انجام میشود‬
‫(با احتمال زیاد)‪00‬‬ ‫(با احتمال کم)‪01‬‬ ‫(با احتمال کم)‪10‬‬ ‫(با احتمال زیاد)‪11‬‬

‫انجام نشده‬ ‫انجام نشده‬ ‫انجام نشده‬

‫پاسخ‪ :‬حالت اولیه ‪( 01‬انجام نمیشود با احتمال کم)‪ ،‬میباشد‪ .‬بعد از هشت ‪ T‬حالت به ‪ 11‬یعنی انجام میشود‬
‫به احتمال زیاد وارد میشود‪ .‬ده حالت آخر ‪ NNTTNNTNNT‬میباشد‪ .‬رشته را به ترتیب بررسی میکنیم‪:‬‬
‫‪ :N‬چون در حالت ‪ 11‬هستیم و بیت باارزش یک میباشد‪ ،‬بنابراین پیشبینی انجام میشود‪ ،‬میباشد و وارد حالت‬
‫‪ 10‬میشویم‪ .‬پیشبینی غلط‪.‬‬
‫‪ :N‬چون در حالت ‪ 10‬هستیم و بیت باارزش یک میباشد‪ ،‬بنابراین‪ ،‬پیشبینی انجام میشود میباشد و وارد حالت‬
‫‪ 01‬میشویم‪ .‬پیشبینی غلط‪.‬‬
‫‪ :T‬چون در حالت ‪ 01‬هستیم و بیت باارزش صفر میباشد‪ ،‬بنابراین پیشبینی انجام نمیشود‪ ،‬میباشد و وارد حالت‬
‫‪ 10‬میشویم‪ .‬پیشبینی غلط‪.‬‬
‫‪ :T‬چون در حالت ‪ 10‬هستیم پیشبینی انجام میشود میباشد و وارد حالت ‪ 11‬میشود‪ .‬پیشبینی درست‪.‬‬
‫‪ :N‬چون در حالت ‪ 11‬هستیم پیشبینی انجام میشود میباشد و وارد حالت ‪ 10‬میشویم‪ .‬پیشبینی غلط‪.‬‬
‫‪ :N‬چون در حالت ‪ 10‬هستیم پیش بینی انجام میشود میباشد و وارد حالت ‪ 01‬میشویم‪ .‬پیشبینی غلط‪.‬‬
‫‪ :T‬چون در حالت ‪ 01‬هستیم پیشبینی انجام نمیشود میباشد و وارد حالت ‪ 10‬میشویم‪ .‬پیشبینی غلط‪.‬‬
‫‪ :N‬چون در حالت ‪ 10‬هستیم پیشبینی انجام میشود میباشد و وارد حالت ‪ 01‬میشویم‪ :‬پیشبینی غلط‪.‬‬
‫‪ :N‬چون در حالت ‪ 01‬هستیم پیشبینی انجام نمیشود میباشد و وارد حالت ‪ 00‬میشویم‪ :‬پیشبینی درست‪.‬‬
‫‪ :T‬چون در حالت ‪ 00‬هستیم پیشبینی انجام نمیشود میباشد و وارد حالت ‪ 01‬میشویم‪ :‬پیشبینی غلط‪.‬‬
‫بنابراین ‪ 2‬پیشبینی صحیح میباشد‪ .‬و گزینه ‪ 4‬صحیح است‪.‬‬
‫‪-2‬کدام مورد‪ ،‬تأثیر استفاده از حافظه نهان با حجم زیاد است؟‬
‫‪hit time)1‬زیاد و ‪ miss rate‬کم میشود‪.‬‬
‫‪ hit time)2‬و ‪ miss rate‬هر دو کم میشوند‪.‬‬
‫‪ miss penalty)3‬زیاد و ‪ miss rate‬کم میشوند‬
‫‪| 637‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫‪ miss penalty)4‬و ‪ hit time‬هر دو زیاد میشود‪.‬‬


‫پاسخ‪ :‬گزینه ‪ 1‬درست است‪ .‬مراجعه شود به بخش ‪2-5-2-5‬‬

‫‪-3‬استفاده از حافظه در سیستمهای چندپردازنده (‪ )multiprocessor‬به دو صورت حافظه‬


‫مشترک متمرکز (‪ )centralized shared memory‬و توزیع شده (‪ )distributed memory‬وجود‬
‫دارد‪ .‬کدام مورد درست است؟‬
‫‪) 1‬ساختار متمرکز برای هر پردازنده زمان دستیابی یکسان دارد ولی سریع است‪ .‬ساختار توزیع شده زمان دسترسی‬
‫متغیر دارد و کند است‪.‬‬
‫‪)2‬ساختار متمرکز برای هر پردازنده زمان دسترسی متغیر دارد ولی سریع است‪ .‬ساختار توزیع شده زمان دسترسی‬
‫ثابت دارد ولی کند است‪.‬‬
‫‪)3‬ساختار متمرکز برای همه پردازندهها زمان دستیابی یکسان دارد و سریع است‪ .‬ساختار توزیع نشده زمان دسترسی‬
‫متغیر دارد و کند است‪.‬‬
‫‪)4‬ساختار متمرکز برای همه پردازندهها زمان دسترسی یکسان دارد ولی کند است‪ .‬ساختار توزیع شده زمان دسترسی‬
‫متغیر دارد ولی سریع است‪.‬‬
‫پاسخ‪ :‬گزینه ‪ 4‬به فصل یک بخش ‪ 2-1‬مراجعه شود‪.‬‬

‫‪ -4‬کدام مورد‪ ،‬در خصوص الگوریتم مسیریابی در یک چندکامپیوتر (‪ )multicomputer‬درست‬


‫است؟‬
‫‪)1‬الگوریتم مسریابی قطعی (‪ )deterministic‬نمیتواند از کانال مجازی استفاده کند‪.‬‬
‫‪)2‬استفاده از الگوریتم مسیریابی تطبیقی (‪ )adaptive‬منجر به کمترین زمان ارسال بسته در سیستم میشود‪.‬‬
‫‪)3‬کارایی الگوریتم مسیریابی قطعی (‪ )Deterministic‬میتواند از الگوریتم مسیریابی تطبیقی (‪ )adaptive‬بیشتر‬
‫باشد‪.‬‬
‫‪)4‬الگوریتم مسیریابی بیتوجه (‪ )Oblivious‬همیشه از یک مسیر ثابت برای دو گره مشخص ارسال و دریافت‬
‫کننده بسته استفاده میکند‪.‬‬
‫پاسخ‪ :‬گزینه ‪ 3‬به فصل ‪ 4‬بخش ‪ 2-4-2-4‬مراجعه شود‪ .‬در مسیریابی قطعی مسیر از قبل مشخص است و همه‬
‫بسته ها از یک مسیر حرکت میکنند و میتواند کانال مجازی داشته باشد‪ .‬در صورتیکه در مسیریابی وفقی یا‬
‫تطبیقی مسیر برای بسته های مختلف ممکن است متفاوت باشد‪ .‬در صورت برقراری مسیر بدون خطا کارایی قطعی‬
‫میتواند از تطبیقی بیشتر باشد چرا که نیازمند مسیریابی برای بسته ها نخواهد بود و فقط سربار اولیه برقراری مسیر‬
‫دارد‪ .‬اما تحمل خطا ی تطبیقی بیشتر است چرا که در صورت خرابی یک مسیر بسته ها از مسیرهای دیگر حرکت‬
‫خواهند کرد‪.‬‬
‫کانون نشر علوم‬ ‫‪| 638‬‬

‫‪-5‬شبکه ‪( X‬فوق مکعب ‪ 6‬بعدی با ‪ )6-dimensional hypercube‬با قطر ‪ ،dx‬درجه ‪ nx‬و پهنای‬
‫میانبرشی )‪ Wx (bisection width‬و شبکه ‪( Y‬توری مدور ‪ 8×8‬یا ‪ )8*8torus‬با قطر ‪ ،dY‬درجه‬
‫‪ nY‬و پهنای میانبرشی ‪ WY‬را در نظر بگیرید‪ .‬کدام مورد در خصوص این دوشبکه درست است؟‬
‫‪ WX=2WY ،dX<dY )2‬و ‪nX=nY+2‬‬ ‫‪ dX=3dY/2)1‬و ‪ WX=3WY/2‬و ‪nX=3nY/2‬‬

‫‪ dX=8 )4‬و ‪ WY=24‬و ‪nX=2nY/2‬‬ ‫‪ WX=32 ،nX<nY)3‬و ‪nY=3nX/2‬‬

‫پاسخ‪ :‬طبق جدول ‪ 2-2‬داریم‬


‫فوق مکعب ‪6‬بعدی ‪NX=64 WX=25=32 dX=6 nX=6‬‬
‫‪NY=64‬‬ ‫‪WY=16 dY=8 nY=4‬‬ ‫توری مدور ‪8*8‬‬
‫بنابراین گزینه ‪ 2‬درست میباشد‪.‬‬
‫‪-6‬در یک فوق مکعب ‪ 8‬بعدی‪ ،‬تعداد کوتاهترین مسیرهای متفاوت از گره ‪ 10110001‬به گره‬
‫‪ 01101100‬با گذر از گره ‪ 10111101‬کدام است؟‬
‫‪24)4‬‬ ‫‪48)3‬‬ ‫‪120)2‬‬ ‫‪720)1‬‬
‫پاسخ‪ :‬در فصل ‪ 2‬بخش مسیریابی ‪ E-Cube‬ذکر شد تعداد مسیرهای متفاوت از گره ‪ 1‬به گره ‪ 2‬با فاصله همینگ‬
‫‪ m‬برابر با !‪ m‬میباشد‪ .‬بنابراین تعداد کوتاهترین مسیرها بین دو گره ذکر شده ‪ 720‬میباشد اما در سوال قید شده‬
‫که از گره میانی خاصی بگذرند‪ .‬بنابراین تعداد مسیرها از گره ‪ 10110001‬به گره میانی ‪ 10111101‬را بدست‬
‫آورده و ضرب در تعداد مسیرهای از گره میانی ‪ 10111101‬به گره ‪ 01101100‬مینماییم‪.‬‬
‫فاصله همینگ گره ‪ 10110001‬تا گره میانی ‪ 2 ،10111101‬میباشد و تعداد مسیرهایی بین این دو گره ‪2!=2‬‬
‫میباشد‪ .‬فاصله همینگ بین گره میانی ‪ 10111101‬به گره مقصد ‪ 4 ،01101100‬میباشد و تعداد مسیرهای بین‬
‫این دو ‪ 4!=24‬میباشد‪ .24*2=48 .‬بنابراین گزینه ‪ 3‬صحیح است‪.‬‬
‫‪ -7‬دستور ‪ SWAP var‬در یک کامپیوتر یک آدرسه محتویات انباره (‪ )accumulator‬را با کلمه‬
‫به آدرس ‪ var‬در حافظه بصورت اتمیک تعویض میکند‪ .‬کدام مورد یک پیادهسازی صحیح ناحیه‬
‫بحرانی است (توجه‪ :‬دستور ‪ JNZ addr‬در صورتی که محتویات انباره صفر نباشد به آدرس‬
‫‪ addr‬پرش میکند‪ .‬دستور ‪ JZ addr‬در صورتیکه محتویات انباره صفر باشد به آدرس ‪addr‬‬
‫پرش میکند‪ .‬دستور ‪ MOV #data‬داده بالفاصله (‪ data )immediate‬را در انباره کپی میکند)‪.‬‬
‫‪| 639‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫پاسخ‪ :‬برای ناحیه بحرانی باید سه شرط بررسی شود‪:‬‬


‫‪ -4‬انحصار متقابل بطوریکه همزمان دو پردازه وارد ناحیه بحرانی نشوند‪.‬‬
‫‪ -5‬شرط پیشرفت برقرار باشد بطوریکه بتواند پردازهای که وارد ناحیه بحرانی شده به کار خود ادامه دهد‪.‬‬
‫‪ -6‬شرط قحطی زدگی بطوریکه شرایط طوری نباشد که هیچ پردازهای نتواند وارد ناحیه بحرانی شود یا بطور‬
‫بینهایت منتظر ورود به ناحیه بحرانی بماند‪.‬‬
‫با توجه به این شرایط و بررسی گزینه ها فقط گزینه ‪ 1‬همه شرایط را برآورده میکند‪ .‬برای بررسی بیشتر میتوانید‬
‫به مبحث مرتبط سیستم عامل مراجعه کنید‪.‬‬
‫‪ -8‬در یک سیستم حافظه نهان با نگاشت مستقیم‪ ،‬اندازه بلوک ‪16‬کلمه و حجم ‪ 16‬بلوک‪ ،‬از‬
‫یک حافظه نهان قربانی (‪ )victim cache‬دو بلوکی کامالً انجمنی (‪ )fully associative‬با سیاست‬
‫جایگزینی ‪ LRU‬استفاده شده است‪ .‬دنباله آدرسهای زیر توسط پردازنده (با فرض خالی بودن‬
‫حافظه نهان اصلی و قربانی در ابتدا) تولید میشود‪ .‬کدام مجموعه مقادیر ‪ tag‬در حافظه قربانی‬
‫را پس از انجام دسترسیها به حافظه نهان نشان میدهد؟‬
‫کانون نشر علوم‬ ‫‪| 640‬‬

‫پاسخ‪ :‬با توجه به اینکه اندازه بلوک ‪ 16‬کلمه است ‪ 4‬بیت سمت راست آدرسها ‪(W‬رقم سمت راست در مبنای‬
‫شانزده) یعنی آدرس کلمه در داخل بلوک میباشند و با توجه به اینکه حافظه دارای حجم ‪ 16‬بلوک است ‪ 4‬بیت‬
‫دوم از سمت راست یعنی رقم دوم مبنای ‪ r ،16‬و مشخص کننده مکان ذخیره در حافظه نهان میباشد و دو رقم‬
‫سمت چپ در مبنای ‪ 16‬تگ خواهد بود‪ .‬اما همانطور که در فصل ‪ 5‬گفته شد کش قربانی وظیفه نگهداری موقت‬
‫بلوکهای جایگزین شده را دارد تا در صورت دسترسی مجدد به آن از حافظه قربانی خوانده شود‪.‬این حافظه انجمنی‬
‫کامل است و با الگوریتم ‪ LRU‬جایگزینی آن انجام میشود‪ .‬حال آدرسها را بررسی میکنیم‪:‬‬
‫‪ 1067h-1‬در بلوک ‪ 6‬حافظه نهان قرار خواهد گرفت با تگ ‪(10h‬آدرسهای ‪ 1060h‬تا ‪ 106Fh‬از بلوک‬
‫‪)106h‬‬
‫‪ D16Eh-2‬در بلوک ‪ 6‬حافظه نهان قرار خواهد گرفت با تگ ‪ D1h‬قرار خواهد گرفت (آدرسهای ‪ D160h‬تا‬
‫‪ D16Fh‬از بلوک ‪ ) D16h‬و بلوک قبلی جایگزین شده و وارد حافظه نهان قربانی خواهد شد‪ .‬یعنی محتوای تگ‬
‫حافظه نهان قربانی ‪ 106h‬خواهد بود‪.‬‬
‫‪ 3260h-3‬نیز در بلوک ‪ 6‬حافظه نهان قرار خواهد گرفت با تگ ‪( .32h‬آدرسهای ‪ 3260h‬تا ‪ 326Fh‬از بلوک‬
‫‪ )326h‬و بلوک ‪ D16h‬جایگزین شده و وارد حافظه نهان قربانی میشود‪ .‬بنابراین محتوای حافظه نهان قربانی‬
‫تاکنون ‪ 106h‬و ‪ D16h‬خواهد بود‪.‬‬
‫‪ 3266h-4‬از قبل در حافظه موجود هست و اصابت( ‪ )hit‬داریم‪.‬‬
‫‪ 3170h-5‬وارد بلوک ‪ 7‬حافظه نهان میشود ( آدرسهای ‪ 3170h‬تا ‪ 317Fh‬از بلوک ‪ )317h‬با تگ ‪.31h‬‬
‫‪ 1275h -6‬وارد بلوک ‪ 7‬حافظه نهان میشود (آدرسهای ‪ 1270h‬تا ‪127Fh‬از بلوک ‪ )127h‬با تگ ‪ 12h‬و‬
‫جایگزین بلوک ‪ 317h‬میشود‪ .‬بنابراین این بلوک وارد حافظه نهان قربانی میشود و جایگزین بلوک ‪106h‬‬
‫میشود‪ .‬یعنی محتوای حافظه نهان قربانی تاکنون ‪ 317h‬و ‪ D16h‬خواهد بود‪.‬‬
‫‪ 1066h-7‬در بلوک ‪ 6‬حافظه نهان قرار خواهد گرفت (آدرسهای ‪ 1060h‬تا ‪ 106Fh‬از بلوک ‪ )106h‬و جایگزین‬
‫بلوک ‪ 326h‬خواهد شد و این بلوک در حافظه نهان قربانی قرار گرفته و جایگزین بلوک ‪ D16h‬خواهد شد‪ .‬بنابراین‬
‫هماکنون در حافظه نهان قربانی تگهای ‪ 317h‬و ‪ 326h‬موجود است‪ .‬بنابراین گزینه درست گزینه ‪ 4‬میباشد‪.‬‬
‫‪ -9‬در یک کامپیوتر برداری (‪ )vector computer‬از یک خط لوله ‪ 10‬سطحی برای محاسبه‬
‫تابع )‪ V3=f(V1,V2‬روی دو بردار ‪ V1‬و ‪ V2‬و ذخیره نتیجه در بردار ‪ V3‬و یک خط لوله ‪ 15‬سطحی‬
‫برای محاسبه تابع )‪ g(V1‬روی بردار ‪ V1‬و ذخیره نتایج در ‪ V2‬استفاده میشود‪ .‬تسریع محاسبه‬
‫تابع ترکیبی ))‪ V3=g(f(V1,V2‬روی بردارهای ‪ 500‬عنصری‪ ،‬به کمک روش زنجیر کردن خط‬
‫لوله (‪ )pipeline chaining‬نسبت به معماری بدون امکان زنجیر کردن خطلوله‪ ،‬کدام است؟‬
‫‪1.85)4‬‬ ‫‪1.90 )3‬‬ ‫‪1.95 )2‬‬ ‫‪2.00)1‬‬
‫‪| 641‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫پاسخ‪ :‬قبالً توضیح داده شد بدون زنجیر باید زمان محاسبه دو خطلوله را بدست آورد و در حالت زنجیر خط لوله‬
‫ترکیبی به طول مجموع دو خطلوله است‪.‬‬
‫زمان بدون زنجیر کردن=زمان خط لوله ‪ +1‬زمان خط لوله ‪2‬‬
‫‪Tnotchain=[10+500-1]t+[15+500-1]t=1023t‬‬
‫زمان با زنجیر= زمان یک خط لوله به طول ‪25=15+10‬‬
‫‪Tchain=[25+500-1]t=524t‬‬
‫‪𝑇𝑛𝑜𝑡𝑐ℎ𝑎𝑖𝑛 1023‬‬
‫=‬ ‫‪= 1.95‬‬
‫𝑛𝑖𝑎‪𝑇𝑐ℎ‬‬ ‫‪524‬‬
‫بنابراین گزینه ‪ 2‬صحیح است‪.‬‬
‫‪-10‬کدام مورد‪ ،‬در خصوص کامپیوترهای برداری درست است؟‬
‫‪)1‬به هیچ وجه نمیتوان از تکنیک ‪ super-pipelining‬برای افزایش کارایی معماری کامپیوترهای برداری بهره‬
‫برد‪.‬‬
‫‪)2‬در کامپیوتر برداری با معماری ثبات‪-‬ثبات‪ ،‬عملوندهای دستورات پردازش بردار در ثباتهای داخل پردازنده ذخیره‬
‫میشوند‪.‬‬
‫‪)3‬با تکنیک زنجیر کردن خط لوله (‪ )pipeline chaining‬در کامپیوترهای برداری میتوان فرکانس کاری پردازنده‬
‫را افزایش داد‪.‬‬
‫‪)4‬در کامپیوتر برداری با معماری حافظه‪-‬حافظه‪ ،‬بردارهای عملوند از حافظه دریافت شده و بردار نتیجه در یکی از‬
‫ثباتهای بردار ذخیره میشود‪.‬‬
‫پاسخ‪ :‬گزینه ‪ .2‬در سوال قبل دیدیم که زنجیر کردن باعث بهبود کارایی میشود نه افزایش پالس پردازنده‪ .‬سایر‬
‫گزینه ها نیز در فصل ‪ 1‬بخش کامپیوترهای برداری صریحا توضیح داده شده است‪.‬‬
‫‪ -11‬کدام مورد با توجه به جدول رزرواسیون سیستم خط لوله درست است؟‬
‫سیکلهای (‪ )4‬و (‪ )1 ،3،3‬حریصانه (‪ )greedy‬هستند‪.‬‬ ‫‪)1‬‬
‫سیکل (‪ )1 ،3 ،4 ،3‬یک سیکل ممنوعه (‪ )forbidden‬است‪.‬‬ ‫‪)2‬‬
‫سیکل (‪ )3 ،4‬منجر به بروندهی (‪ )throughput‬بیشینه میشود‪.‬‬ ‫‪)3‬‬
‫تاخیر راهاندازی (‪ ،3 )initiation latency‬مجاز (‪ )permissible‬است‪.‬‬ ‫‪)4‬‬
‫کانون نشر علوم‬ ‫‪| 642‬‬

‫پاسخ‪ :‬با توجه به جدول رزرواسیون تاخیرهای ‪5‬و ‪ 2‬ممنوعه بوده و بردار تصادم اولیه ‪ V0=10010‬میباشد‪.‬‬
‫همچنین دیاگرام حالت آن بصورت زیر است‪:‬‬
‫‪3,5+‬‬

‫‪10010‬‬
‫‪1‬‬ ‫‪3,5+‬‬
‫‪5+‬‬ ‫‪4‬‬ ‫‪4‬‬
‫‪11011‬‬ ‫‪10011‬‬
‫‪3‬‬

‫با توجه به دیاگرام حالت سیکل (‪ )3،3 ،1‬با میانگین ‪ (1+3+3)/3=7/3= 2.3‬بهترین بروندهی را دارد و ‪MAL‬‬
‫میباشد‪ .‬بنابراین گزینه ‪ 3‬غلط است‪ .‬با توجه به دیاگرام سیکل (‪ )3 ،4 ،3 ،1‬مجاز هست و گزینه ‪ 2‬غلط است‪.‬‬
‫سیکل (‪ )4‬حریصانه نیست و گزینه ‪ 1‬غلط است اما سیکل (‪ )3‬مجاز هست و گزینه ‪ 4‬درست است‪.‬‬
‫‪ -12‬جدول رزواسیون زیر نشان دهنده چگونگی فعالیتهای سطوح مختلف یک خط لوله برای‬
‫محاسبه دو تابع ‪ A,B‬است‪ .‬ماتریس تصادم اولیه (‪ ،)initial collision matrix‬کدام است؟‬
‫‪0101‬‬ ‫‪1010‬‬
‫[ = 𝐴𝑀‬ ‫𝐵𝑀 ‪] ,‬‬ ‫[=‬ ‫]‬ ‫‪)1‬‬
‫‪1011‬‬ ‫‪0110‬‬
‫‪0101‬‬ ‫‪1011‬‬
‫[ = 𝐴𝑀‬ ‫𝐵𝑀 ‪] ,‬‬ ‫[=‬ ‫]‬ ‫‪)2‬‬
‫‪1010‬‬ ‫‪0110‬‬
‫‪1011‬‬ ‫‪0110‬‬
‫[ = 𝐴𝑀‬ ‫𝐵𝑀 ‪] ,‬‬ ‫[=‬ ‫]‬ ‫‪)3‬‬
‫‪0101‬‬ ‫‪1010‬‬
‫‪1010‬‬ ‫‪0110‬‬
‫[ = 𝐴𝑀‬ ‫𝐵𝑀 ‪] ,‬‬ ‫[=‬ ‫]‬ ‫‪)4‬‬
‫‪0101‬‬ ‫‪1011‬‬
‫پاسخ‪ :‬طبق مطالب ارائه شده در فصل ششم بخش ماتریس تصادم داریم‪:‬‬
‫‪VAA=0101, VAB=1011, VBB=0110, VBA=1010,‬‬
‫𝐴𝐴𝑉‬ ‫‪0101‬‬ ‫𝑉‬ ‫‪1011‬‬
‫[ = 𝐴𝑀‬ ‫[=]‬ ‫[ = ] 𝐵𝐴 [ = 𝐵𝑀 ‪] ,‬‬ ‫]‬
‫𝐴𝐵𝑉‬ ‫‪1010‬‬ ‫𝐵𝐵𝑉‬ ‫‪0110‬‬
‫بنابراین گزینه ‪ 2‬صحیح است‪.‬‬
‫‪ -13‬کدام مورد برای مقابله با ‪( Control Hazard‬مشکالت مربوط به دستورات پرش شرطی)‬
‫مناسب است؟‬
‫الف‪ -‬استفاده از تکنیک ‪delayed branch‬‬

‫ب‪ -‬استفاده از تکنیک ‪branch prediction‬‬


‫‪| 643‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫ج‪ -‬استفاده از تکنیک ‪internal forwarding‬‬

‫‪ )4‬الف‪-‬ب و ج‬ ‫‪ )3‬الف و ج‬ ‫‪ )2‬الف و ب‬ ‫‪ )1‬ب و ج‬


‫پاسخ‪ :‬گزینه ‪ 2‬صحیح است‪ .‬تکنیک جلورانی داخلی برای بهبود کارایی خط لوله هست نه مخاطره کنترلی‪ .‬مراجعه‬
‫شود به فصل شش انواع مخاطرات و وابستگیها‬
‫‪-14‬در یک چندکامپیوتر برداری (‪ )multi-vector Computer‬متقارن با ‪ 10‬کامپیوتر برداری‬
‫مشابه (هر یک با تسریع ‪ 100‬در اجرای کد برداری)‪ ،‬میخواهیم یک برنامه بزرگ را اجرا کنیم‪.‬‬
‫کد این برنامه دارای ‪ 10‬درصد بخش سریال است (یعنی ‪ 10‬درصد کد برنامه را باید روی یک‬
‫کامپیوتر برداری اجرا کرد)‪ .‬از این ‪ 10‬درصد‪ 2 ،‬درصد کد اسکالر است و مابقی ‪ 8‬درصد کد‬
‫برداری است‪ .‬از ‪ 90‬درصد کد برنامه اصلی که قابلیت اجرای موازی روی تمامی کامپیوترهای‬
‫برداری را دارد‪ 10 ،‬درصد اسکالر است و مابقی ‪80‬درصد کد برداری است‪ .‬تسریع تقریبی‬
‫اجرای برنامه روی این چند کامپیوتر برداری‪ ،‬نسبت به اجرا روی یک کامپیوتر برداری کدام‬
‫است؟‬
‫‪6)4‬‬ ‫‪5)3‬‬ ‫‪4)2‬‬ ‫‪3)1‬‬
‫پاسخ‪:‬‬
‫‪Tone-vector=[0.02+0.08/100+0.1+0.8/100]t=0.1288t‬‬
‫‪Tten-vector=[0.02+0.08/100+0.1/10+0.8/1000]t=0.0316t‬‬
‫‪Tone-vector/Tten-vector=0.1288t/0.0316t=4.075‬‬
‫بنابراین گزینه ‪ 2‬صحیح است‪.‬‬
‫‪-15‬کدام وابستگی داده توسط ‪ register renaming‬قابل رفع است؟‬
‫الف‪read after write -‬‬

‫ب‪write after read -‬‬

‫ج‪write after write-‬‬

‫‪)4‬هر سه نوع الف‪-‬ب و ج‬ ‫‪)3‬ب و ج‬ ‫‪)2‬الف و ب‬ ‫‪)1‬الف و ج‬


‫پاسخ‪ :‬گزینه ‪ 3‬صحیح است‪ .‬فصل شش الگوریتم توماسولو‪.‬‬
‫کانون نشر علوم‬ ‫‪| 644‬‬

‫حل سواالت کنکور دکتری سال ‪1391‬‬

‫‪-1‬مشخص کنید اگر ‪ %90‬یک برنامه قابل موازی سازی باشد حداکثر تسریع (‪ )Speedup‬و‬
‫بازدهی (‪ )Efficiency‬قابل حصول با یک کامپیوتر موازی دارای ‪ 10‬پردازنده برای اجرای این‬
‫برنامه به ترتیب چقدر است؟‬
‫‪ 10)4‬و ‪%90‬‬ ‫‪ 9)3‬و ‪%91‬‬ ‫‪ 5.2)2‬و ‪%94.8‬‬ ‫‪ 5.2)1‬و ‪%52‬‬
‫پاسخ‪ :‬این سوال نیاز به حل کردن ندارد بازدهی حاصل تقسیم تسریع به تعداد پردازنده است یعنی وقتی تسریع‬
‫‪ X‬باشد بازدهی ‪ X/10‬خواهد شد که گزینه ‪ 1‬فقط این خصوصیت را دارد‪.‬‬
‫البته حل آن نیز با قانون امدال بدست میآید‪:‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫= 𝑝𝑢𝑑𝑒𝑒𝑝𝑆‬ ‫=‬ ‫=‬ ‫‪= 5.2‬‬
‫𝑙𝑒𝑙𝑙𝑎𝑟𝑎𝑝 𝑛𝑜𝑖𝑡𝑐𝑎𝑟𝑓‬ ‫‪0.9 0.19‬‬
‫‪𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛 𝑠𝑒𝑟𝑖𝑎𝑙 +‬‬ ‫‪0.1 +‬‬
‫𝑙𝑒𝑙𝑙𝑎𝑟𝑎𝑝 𝑝𝑢𝑑𝑒𝑒𝑝𝑠‬ ‫‪10‬‬
‫‪𝑠𝑝𝑒𝑒𝑑𝑢𝑝 5.2‬‬
‫= 𝑦𝑐𝑛𝑒𝑖𝑐𝑖𝑓𝑓𝐸‬ ‫=‬ ‫‪= 0.52 = 52%‬‬
‫𝑛‬ ‫‪10‬‬
‫‪-2‬مشخص کنید در یک شبکه چندکامپیوتری فوق مکعب (‪ 10 )hypercube‬بعدی تعداد‬
‫پیوندهای دوطرفه (‪ )bidirectional link‬بین گرهها و پهنای میانبرشی (‪ )Bisection width‬به‬
‫ترتیب چه مقادیری است‪:‬‬
‫‪10240)2‬و ‪512‬‬ ‫‪10240)1‬و ‪1024‬‬
‫‪5120)4‬و ‪1024‬‬ ‫‪5120)3‬و ‪512‬‬
‫پاسخ‪ :‬طبق جدول ‪ 2-2‬داریم ‪ N=210‬و درجه هر گره=‪ 10‬و تعداد کانالهای دوطرفه حاصلضرب این دو تقسیم‬
‫بر ‪ 2‬میباشد یعنی=‪1024*10/2=5120‬و پهنای میانبرشی ‪ 29=512‬میباشد بنابراین گزینه ‪ 3‬صحیح است‪.‬‬
‫‪-3‬در یک کامپیوتر موازی دو پردازنده‪ ،‬جمع زدن دو عدد روی یک پردازنده ‪ 1ns‬و ارسال نتیجه‬
‫به یک پردازنده دیگر ‪ 200ns‬طول میکشد‪ .‬اگر قرار باشد جمع ‪ n‬عدد یک بردار را محاسبه‬
‫کنیم‪ n ،‬باید بزرگتر از چند باشد که زمان اجرای موازی (یعنی استفاده از بیش از یک پردازنده)‬
‫بهتر از اجرای سریال روی یک پردازنده باشد؟‬
‫‪402)4‬‬ ‫‪302)3‬‬ ‫‪202)2‬‬ ‫‪102)1‬‬
‫پاسخ‪ :‬در اجرای یک پردازنده گزینههای ‪ 1‬و ‪ 2‬و ‪ 3‬به ترتیب در ‪ 102‬و ‪ 202‬و ‪ 302‬نانوثانیه اجرا میشوند که اگر‬
‫نصف این محاسبات را روی یک پردازنده و نصف دیگر را روی پردازنده دوم اجرا کنیم حاصل جمع زمان اجرا‬
‫‪| 645‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫‪+‬زمان ارسال نتیجه بیشتر از این اعداد روی تک پردازنده میشود‪ .‬تنها در گزینه ‪ 4‬کارایی دو پردازنده بهتر‬
‫است‪ .201+200<402‬مراجعه شود به فصل ‪ 2‬بخش‪ :‬چه موقع استفاده از چند پردازنده مناسب است؟‬
‫‪ -4‬با فرض داشتن جدول رزرواسیون زیر برای یک پایپالین ‪ 4‬طبقهای مشخص کنید بردار‬
‫تالقی (‪ ) Collision vector‬و کمینه تاخیر متوسط راهاندازی (‪ )MAL‬در پایپالین به ترتیب‬
‫چقدر است‪:‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪3 clocks ،)101100( )1‬‬
‫‪1‬‬ ‫‪x‬‬ ‫‪x‬‬ ‫‪3 clocks ،)001100( )2‬‬
‫‪2‬‬ ‫‪x‬‬ ‫‪x‬‬
‫‪3‬‬ ‫‪x‬‬ ‫‪x‬‬ ‫‪2.33 clocks ،)001100( )3‬‬
‫‪4‬‬ ‫‪x‬‬ ‫‪x‬‬
‫‪2.33 clocks ،)101100( )4‬‬

‫پاسخ‪ :‬با توجه به جدول رزرواسیون تاخیرات ‪ 3‬و ‪ 4‬منع شدهاند بنابراین ‪ V0=C6C5C4C3C2C1=001100‬و‬
‫گزینههای ‪ 1‬و ‪ 4‬غلط است‪ .‬برای بدست آوردن ‪ MAL‬دیاگرام حالت را رسم میکنیم که بصورت زیر است‪:‬‬

‫‪5‬و‪6‬‬
‫‪5‬و‪6‬‬ ‫‪001100‬‬
‫‪1‬‬
‫‪5‬و‪6‬‬
‫‪2‬‬
‫‪001110‬‬ ‫‪001111‬‬
‫‪1‬‬
‫با توجه به دیاگرام حالت سیکل (‪1‬و‪1‬و‪ )5‬با میانگین ‪ 7/3=2.33‬ایجاد کننده ‪ MAL‬میباشد‪ .‬بنابراین گزینه ‪3‬‬
‫صحیح میباشد‪.‬‬
‫‪-5‬الگوریتمی طراحی کردهایم که برای فشردهسازی تصاویر مورد استفاده قرار میگیرد و می‪-‬‬
‫تواند حجم هر تصویر را تا نصف مقدار اولیهاش کاهش دهد‪ %20 .‬از عملیات این الگوریتم‬
‫صرف بلوکبندی تصویر می شود و قابل موازی سازی نیست اما بقیه پردازشها را میتوان‬
‫موازی اجرا کرد‪ .‬اگر این برنامه را روی یک تک پردازنده اجرا کنیم‪ ،‬برای پردازش یک تصویر‬
‫یک مگا بایتی مدت ‪ 850‬میکروثانیه زمان نیاز دارد‪ .‬همچنین برای خواندن همان فایل تصویر‬
‫ورودی از یک درگاه ورودی سریال‪ ،‬زمان ‪ 100‬میکروثانیه و برای نوشتن فایل نتیجه که پانصد‬
‫کیلوبایت است‪ ،‬روی یک درگاه خروجی سریال مدت ‪ 50‬میکروثانیه زمان الزم است‪ .‬حد باالی‬
‫تسریع قابل حصول در این سیستم (خواندن فایل ورودی‪ ،‬پردازش آن‪ ،‬و نوشتن فایل خروجی)‬
‫با استفاده از پردازش موازی چقدر خواهد بود؟‬
‫‪)4‬حدود ‪ 7‬برابر‬ ‫‪)3‬حدود ‪ 5‬برابر‬ ‫‪)2‬حدود ‪ 4‬برابر‬ ‫‪)1‬حدود ‪ 3‬برابر‬
‫کانون نشر علوم‬ ‫‪| 646‬‬

‫پاسخ‪ :‬با توجه به قانون امدال حداکثر تسریع وابسته به بخش سریال برنامه ‪ 1/f‬میباشد‪ .‬زمان کل مورد نیاز‬
‫‪ 1000=50+100+850‬میکروثانیه است‪ .‬در این مساله بخش ورودی‪ -‬خروجی و ‪ 20‬درصد عملیات پردازش سریال‬
‫میباشند یعنی ‪ 320=100+50+850*0.2‬میکروثانیه از ‪ 1000‬میکروثانیه سریال است بنابراین ‪ f=0.32‬میباشد‬
‫و حداکثر تسریع ‪ 1/0.32=3‬میباشد و گزینه ‪ 1‬صحیح است‪.‬‬
‫‪-6‬گزارههای ‪A‬و ‪B‬و ‪ C‬را در نظر بگیرید‪:‬‬
‫‪:A‬استفاده از تکنیک ‪ delayed branch‬اثر منفی دستورات پرش در کارایی پردازندههای پایپالین را کاهش‬
‫میدهد‪.‬‬
‫‪ :B‬آدرس مقصد پرش در پیشبینی کننده پرش در ‪ BTB‬ذخیره میشود‪.‬‬
‫‪ :C‬در پردازندههای ‪ VLIW‬وابستگی بین دستورات داخل پایپالین توسط مدارات خاص کنترل پایپالین‬
‫مشخص میشود‪.‬‬
‫‪)1‬گزاره ‪ A‬درست‪ B -‬نادرست‪ C -‬درست است‪.‬‬
‫‪)2‬گزاره ‪ A‬درست‪ B -‬درست‪ C -‬نادرست است‪.‬‬
‫‪)3‬گزاره ‪ A‬نادرست‪ B -‬درست‪ C -‬نادرست است‪.‬‬
‫‪)4‬گزاره ‪ A‬نادرست‪ B -‬نادرست‪ C -‬درست است‪.‬‬
‫پاسخ‪ :‬طبق مطالب ارئه شده در بخش پرش فصل شش و‪ VLIW‬فصل ‪ 4‬گزاره ‪ A,B‬درست و ‪ C‬نادرست‬
‫است‪ .‬در ‪ VLIW‬کامپایلر وابستگی را مشخص میکند‪.‬‬
‫‪-7‬در یک ابرکامپیوتر برداری از پایپالین ‪ 5‬سطحی ‪ A‬با پریود ساعت ‪ 10‬نانو ثانیه برای‬
‫محاسبه تابع 𝑥√‪ ،‬پایپالین ‪ 11‬سطحی ‪ B‬با پریود ‪ 11‬نانو ثانیه برای محاسبه تابع )‪ ،sin(x‬و‬
‫پایپالین ‪ 6‬سطحی ‪ C‬با پریود ‪ 10‬نانو ثانیه برای محاسبه تابع ‪ ex‬استفاده شدهاند‪ .‬به فرض‬
‫استفاده از تکنیک زنجیر کردن پایپالینها (‪ )pipeline chaining‬تسریع قابل احتصال (نسبت‬
‫به معماری بدون زنجیر کردن پایپالینها) برای محاسبه تابع ) 𝑥√ 𝑒(𝑛𝑖𝑠 روی عناصر بردار‬
‫‪ 100‬عنصری چیست؟‬
‫‪)2‬بیش از ‪ 2‬اما کمتر از ‪3‬‬ ‫‪)1‬بیش از ‪ 1‬اما کمتر از ‪2‬‬
‫‪)4‬بیش از ‪ 4‬اما کمتر از ‪5‬‬ ‫‪)3‬بیش از ‪ 3‬اما کمتر از ‪4‬‬
‫پاسخ‪ :‬همانطور که قبال توضیح داده شد زمان بدون زنجیر مساوی با مجموع زمان سه پایپالین میباشد بنابراین‪:‬‬
‫‪Tnotchain=[5+100-1]*10+[11+100-1]*11+[6+100-1]*10=1040+1210+1050=3300ns‬‬
‫اما با زنجیر کردن یک خط لوله با تعداد مراحل‪ 22=6+11+5:‬داریم که پریود ساعت آن ‪11‬نانوثانیه میباشد بنابراین‪:‬‬
‫‪| 647‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫‪Tchain=[22+100-1]*11ns=1331ns‬‬
‫𝑠𝑛‪𝑇𝑛𝑜𝑡𝑐ℎ𝑎𝑖𝑛 3300‬‬
‫= 𝑝𝑢𝑑𝑒𝑒𝑝𝑠‬ ‫=‬ ‫‪= 2.48‬‬
‫𝑛𝑖𝑎‪𝑇𝑐ℎ‬‬ ‫𝑠𝑛‪1331‬‬
‫بنابراین گزینه ‪ 2‬درست است‪.‬‬
‫‪-8‬گزارههای زیر را در نظر بگیرید‪:‬‬
‫‪ H-layout:A‬روشی برای توزیع ساعت در سطح مدار است تا ‪ skew‬ساعت در بخشهای مختلف مدار حداقل‬
‫شود‪.‬‬
‫‪:B‬شبکه ‪ CLOS‬یک شبکه چندسطحی ‪ non-blocking‬است‪.‬‬
‫‪ :C‬معماری چندپردازنده با حافظه توزیع شده مقیاسپذیرتر از معماری چندپردازنده با حافظه مشترک است‪.‬‬
‫کدامیک از موارد زیر صحیح است‪:‬‬
‫‪)1‬گزاره ‪ A‬درست است‪ -‬گزاره ‪ B‬درست است‪ -‬گزاره ‪ C‬درست است‪.‬‬
‫‪)2‬گزاره ‪ A‬درست است‪ -‬گزاره ‪ B‬نادرست است‪ -‬گزاره ‪ C‬درست است‪.‬‬
‫‪)3‬گزاره ‪ A‬نادرست است‪ -‬گزاره ‪ B‬درست است‪ -‬گزاره ‪ C‬نادرست است‪.‬‬
‫‪ )4‬گزاره ‪ A‬نادرست است‪ -‬گزاره ‪ B‬نادرست است‪ -‬گزاره ‪ C‬نادرست است‪.‬‬
‫پاسخ‪ :‬گزینه ‪ 1‬درست است‪ .‬گزینه ‪ A‬در فصل ‪ -6‬گزینه ‪ B‬در فصل ‪ 2‬و گزینه ‪ C‬در فصل ‪ 1‬بیان شده است‪.‬‬

‫‪ -9‬در یک پایپالین ‪ 4‬سطحی‪ ،‬امکان شکستن سطح اول به ‪ 2‬زیرسطح‪ ،‬سطح سوم به ‪3‬‬
‫زیر سطح و سطح چهارم به ‪ 2‬زیرسطح با تاخیر مشخص شده در شکل زیر ممکن است‪.‬‬

‫حداکثر تسریع قابل احتصال برنامهها در یک معماری ‪3-issue superscalar superpipeline‬‬


‫نسبت به معماری پایپالین اولیه برابر است با‪:‬‬
‫‪8.5)4‬‬ ‫‪7.5)3‬‬ ‫‪4.5)2‬‬ ‫‪3.5)1‬‬

‫پاسخ‪ :‬در پایپ الین اولیه سطوح تاخیر ‪ 300 ،80 ،200‬و ‪ 200‬نانوثانیه دارند که سیکل ساعت ‪ 300ns‬خواهد‬
‫شد‪ .‬بنابراین زمان اجرای ‪ N‬دستور در آن بصورت زیر است‪:‬‬
‫‪Tpipeline=[4+N-1]*300ns=[N+3]*300ns‬‬
‫کانون نشر علوم‬ ‫‪| 648‬‬

‫وقتی پایپ الین به قطعات مشخص شده تقسیم شود تعداد مراحل آن به ‪8‬مرحله تغییر یافته و سیکل ساعت آن‬
‫‪ 120ns‬خواهد شد‪ :‬در این ساختار بصورت سوپر اسکالر ‪-3‬انتشاره زمان برابر است با‪:‬‬
‫‪𝑁−3‬‬
‫‪𝑇3−𝑖𝑠𝑠𝑢𝑒 = (8 +‬‬ ‫𝑠𝑛‪) × 120𝑛𝑠 = (21 + 𝑁) × 40‬‬
‫‪3‬‬
‫‪𝑇𝑝𝑖𝑝𝑒𝑙𝑖𝑛𝑒 300‬‬
‫‪𝑠𝑝𝑒𝑒𝑑𝑢𝑝 = lim‬‬ ‫=‬ ‫‪= 7.5‬‬
‫𝑒𝑢𝑠𝑠𝑖‪𝑁→∞ 𝑇3−‬‬ ‫‪40‬‬
‫بنابراین گزینه ‪ 3‬صحیح است‪.‬‬
‫‪-10‬در یک چندپردازنده متقارن‪ ،‬میخواهیم ‪ 5‬برنامه با مشخصات زیر را اجرا کنیم‪:‬‬
‫برنامه‪ :1‬با زمان اجرای ‪ 10‬ثانیه روی یک پردازنده و درصد کد ترکیبی ‪%10‬‬
‫برنامه‪ :2‬با زمان اجرای ‪ 10‬ثانیه روی یک پردازنده و درصد کد ترکیبی ‪%12‬‬
‫برنامه‪ :3‬با زمان اجرای ‪ 15‬ثانیه روی یک پردازنده و درصد کد ترکیبی ‪%20‬‬
‫برنامه‪ :4‬با زمان اجرای ‪ 10‬ثانیه روی یک پردازنده و درصد کد ترکیبی ‪%20‬‬
‫برنامه‪ :5‬با زمان اجرای ‪ 9‬ثانیه روی یک پردازنده و درصد کد ترکیبی ‪%20‬‬
‫حداکثر تسریع قابل احتصال برای اجرای این ‪ 5‬برنامه روی این چندپردازنده (نسبت به اجرای آنها روی یک پردازنده)‬
‫چیست؟‬
‫‪10)4‬‬ ‫‪6)3‬‬ ‫‪8)2‬‬ ‫‪5)1‬‬
‫پاسخ‪:‬‬
‫زمان اجرای ‪ 5‬برنامه روی یک پردازنده=‪54=9+10+15+10+10‬ثانیه‬
‫حداکثر تسریع برای این ‪ 5‬برنامه با ‪ N‬پردازنده برابر است با‪:‬‬
‫‪9‬‬ ‫‪8.8‬‬ ‫‪12‬‬ ‫‪8‬‬ ‫‪7.2‬‬ ‫‪45‬‬
‫‪𝑇5 = (1 + ) + (1.2 +‬‬ ‫‪) + (3 + ) + (2 + ) + (1.8 +‬‬ ‫‪) = 9𝑠 +‬‬
‫𝑁‬ ‫𝑁‬ ‫𝑁‬ ‫𝑁‬ ‫𝑁‬ ‫𝑁‬
‫با در نظر گرفتن ∞→‪ N‬حداکثر تسریع بدست میآید که حاصل جمع بخشهای سریال میباشد‪.‬‬
‫‪𝑇1 54‬‬
‫= 𝑝𝑢𝑑𝑒𝑒𝑝𝑠‬ ‫=‬ ‫‪=6‬‬
‫‪𝑇5‬‬ ‫‪9‬‬
‫بنابراین گزینه ‪ 3‬صحیح است‪.‬‬
‫‪4-‬‬ ‫‪-11‬برای بهبود کارایی یک پردازنده پایپالین ‪ 5‬سطحی با پریود ساعت ‪ 10‬نانو ثانیه‬
‫‪ issue superscalar 4-substage super pipeline‬با پریود ساعت ‪ 3‬نانو ثانیه استفاده می‪-‬‬
‫‪| 649‬‬ ‫فصل دوازدهم‪ :‬حل تستهای کنکورهای سالهای اخیر‬

‫کنیم‪ .‬اگر احتمال دستورات پرش شرطی در برنامهها ‪ 0.2‬و احتمال انجام پرش ‪ 0.25‬باشد‪،‬‬
‫حداکثر تسریع بدست آمده توسط معماری بهبود یافته نسبت به معماری اولیه چیست؟‬
‫‪6.84)4‬‬ ‫‪5.22)3‬‬ ‫‪4.8)2‬‬ ‫‪3.36)1‬‬
‫‪Tpipeline=[k+N-1]×t+pqNbt=[5+N-1]×10+0.2×0.25×N×4×10=(12N+40)ns‬‬
‫در پردازنده بهبود یافته ‪ 4‬سوپر اسکالر داریم با ‪ 20‬سطح خط لوله با زمان ‪ 3‬نانو ثانیه (چون هر سطح به ‪ 4‬زیر‬
‫سطح تقسیم شده است ‪:)4*5=20‬‬
‫𝑚‪𝑁−‬‬ ‫‪𝑁−4‬‬
‫‪𝑇(4,4) = (𝑘 +‬‬ ‫‪+ 𝑝𝑞𝑁𝑏) 𝑡 = (20 +‬‬ ‫𝑠𝑛‪+ 0.2 × 0.25 × 𝑁 × 19) × 3‬‬
‫𝑚‬ ‫‪4‬‬
‫‪= (80 + 𝑁 − 4 + 3.8𝑁) × 0.75𝑛𝑠 = 3.6𝑁 + 57‬‬
‫حداکثر سرعت زمانی بدست میآید که ∞→‪ N‬بنابراین داریم‪:‬‬
‫𝑁‪12‬‬
‫= 𝑝𝑢𝑑𝑒𝑒𝑝𝑠‬ ‫‪= 3.33‬‬
‫𝑁‪3.6‬‬
‫بنابراین گزینه ‪ 1‬صحیح است‪.‬‬
)‫فهرست راهنما (ایندکس‬
‫عبارت ترجمه شده به‬
‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
385 Fetch & ADD fetch & ADD
223,222, 364, 395 Futurebus+ Futurebus+
519, 548 oversubscription Oversubscription
311, 317,325 Score boarding Score boarding
389 Test &set Test & Set
455, 511, 531 Cloud ‫ابری‬
267 Atomicity ‫اتمیک بودن‬
327 speculative execution ‫اجرای متفکرانه‬
194, 204 least recently used (LRU) ‫اخیرا کمترین استفاده شده‬
215 master ‫ارباب‬
48, message passing ‫ارسال پیام‬
430, 465 stride ‫استراید‬
191, 195,225,234, ‫اصابت‬
hit
237, 240, 394
206 stack algorithm ‫الگوریتم پشته‬
310 Tomasoulo's algorithm ‫الگوریتم توماسولو‬
circular FIFO replacement FIFO ‫الگوریتم جایگزینی‬
203
Algorithm ‫چرخشی‬
357 in-order issue ‫انتشار به ترتیب‬
357 out-of-order issue ‫انتشار خارج از ترتیب‬
230 set associative ‫انجمنی مجموعه ای‬
84,284 clock skew ‫انحراف ساعت‬
235 block size ‫اندازه بلوک‬
66 grain size ‫اندازه دانه‬
235 set size ‫اندازه مجموعه‬
45 Energy ‫انرژی‬
296, 305,308 reservation station (RS) ‫ایستگاه رزرواسیون‬
198, 225 physical address ‫آدرس فیزیکی‬
194, 225 virtual address ‫آدرس مجازی‬
87 LINEAR ARRAY ‫آرایه خطی‬
| 651 ‫فهرست راهنما‬

‫عبارت ترجمه شده به‬


‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
90 systolic array ‫آرایه سیستولیک‬
218, 390,282 Asynchronous ‫ غیر همزمان‬-‫آسنکرون‬
204 least frequently used(LFU) ‫با کمترین تناوب استفاده شده‬
131,482, 484, ‫بارکاری‬
workload
488,489, 516
169, 306, 310 LOOP UNROLING ‫باز کردن حلقه‬
189, 376 write-back ‫بازپس نویسی‬
130, 156, 286 Efficiency ‫بازدهی‬
250 prefetching buffer ‫بافر پیش برداشت‬
295,301 sequential buffer ‫بافر ترتیبی‬
transaction lookaside buffer ‫بافر جستجوی تراکنش‬
197, 375, 465
(TLB)
327 reorder buffer (ROB) ‫بافر مرتب سازی مجدد‬
295 target buffer ‫بافر مقصد‬
331 Branch target buffer (BTB) ‫بافر مقصد پرش‬
290 collision vector ‫بردار تصادم‬
296 cross-collision vector ‫بردار تصادم تقاطعی‬
173, 417 vectorization ‫برداری سازی‬
49, 169, 417 Vector ‫برداری‬
215 Slave ‫برده‬
255 memory interleaving ‫برگی کردن حافظه‬
258 high-order interleaving ‫برگی کردن سطح باال‬
258 low-order interleaving ‫برگی کردن سطح پایین‬
257 Interleaving ‫برگی کردن‬
19 Benchmark ‫برنامه محک‬
247 Blocking ‫بلوک بندی‬
438 thread block ‫بلوک نخ‬
228 Block ‫بلوک‬
105, 242 nonBlocking ‫بلوکه نشدنی‬
130, 131, 526 utilization ‫بهره وری‬
76, 247, 300 compiler optimization ‫بهینه سازی کامپایلر‬
107, 118, 463 transaction processing ‫پردازش تراکنش‬
‫عبارت ترجمه شده به‬
‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
massively parallel ‫پردازش موازی انبوه‬
5,65, 134
processing (MPP)
164 CISC processor CISC ‫پردازنده‬
176 VLIW processor VLIW ‫پردازنده‬
169,339, 355 scalar processor ‫پردازنده اسکالر‬
169 Base scalar processor ‫پردازنده اسکالر پایه‬
32 Attached processor ‫پردازنده الحاقی‬
74, 169 superscalar processor ‫پردازنده سوپراسکالر‬
344 superpipeline processor ‫پردازنده سوپرپایپ الین‬
Multithreaded SIMD ‫ی چند‬SIMD ‫پردازنده ی‬
438
Processor ‫نخی‬
324 Branch ‫پرش‬
334 Delayed Branch ‫پرش تاخیر داده شده‬
380 Bridge ‫پل‬
82,83 Bisection bandwidth ‫پهنای دو بخشی‬
92 channel bisection width ‫پهنای دوبخشی کانال‬
331 Branch prediction ‫پیش بینی پرش‬
239 way-prediction ‫پیش بینی راه‬
23 Precompiler ‫پیش کامپایلر‬
25,26 Prediction ‫پیش بینی‬
285 forbidden latency ‫تاخیر منع شده‬
257, 259 Fault tolerant ‫تحمل پذیری خطا‬
184,479 Chip ‫تراشه‬
transection per second ‫تراکنش در ثانیه‬
133
(TPS)
217 Bus transaction ‫تراکنش گذرگاه‬
342 program order ‫ترتیب برنامه‬
36, 90 Torus ‫تروس‬
trillion floating point ‫تریلیون دستور ممیز شناور در‬
17, 53, 135 instruction per second
‫ثانیه‬
(Tflop)
27, 126, 281 Speedup ‫ افزایش سرعت‬،‫تسریع‬
260 page swapping ‫تعویض صفحه‬
| 653 ‫فهرست راهنما‬

‫عبارت ترجمه شده به‬


‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
260 context switching ‫تعویض متن‬
335 convergence division ‫تقسیم همگرا‬
32 uniprocessor ‫تک پردازنده‬
SINGLE INSTRUCTION, ‫ چند نخ‬-‫تک دستور‬
420
MULTIPLE THREAD (SIMT)
72 node duplication ‫تکرار گره‬
357 in-order completion ‫تکمیل به ترتیب‬
357 out-of-order completion ‫تکمیل خارج از ترتیب‬
25,94 throughput ‫توان عملیاتی‬
221, 491 distributed ‫توزیع شده‬
355 pipeline stall ‫توقفخط لوله‬
418, 425 vector register ‫ثبات برداری‬
210 window register ‫ثبات پنجره‬
418, 427 vector mask register (VML) ‫ثبات پوشش بردار‬
336 branch history register -BHR ‫ثبات تاریخچه پرش‬
173, 418, 426 vector length register (VLR) ‫ثبات طول بردار‬
173 Global register ‫ثبات عمومی‬
379 block replacement ‫جایگزینی بلوک‬
83 Permutation ‫جایگشت‬
379 Replacing ‫جایگزینی‬
336 pattern history table-PHT ‫جدول تاریخچه الگو‬
197 page table ‫جدول صفحه‬
15 data stream (DS) ‫جریان داده‬
15 instruction stream (IS) ‫جریان دستور‬
86 control flow ‫جریان کنترل‬
303 load-load forwarding load-load ‫جلورانی‬
303 store-load forwarding store-load ‫جلورانی‬
297 store-store-forwarding store-store ‫جلورانی‬
302 internal data forwarding ‫جلورانی داخلی داده‬
carry propagate adder ‫جمع کننده با انتشار نقلی‬
345
(CPA)
345 carry-save adder (CSA) ‫جمع کننده با ذخیره نقلی‬
‫عبارت ترجمه شده به‬
‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
422 Chime ‫چایم‬
multiple program over multiple ‫چند برنامه روی چند جریان‬
78, 140, 396 data stream-MPMD) ‫داده‬
shared memory ‫چند پردازنده حافظه مشترک‬
43
multiprocessor
multiple instruction streams ‫ جند‬-‫چند جریان دستور‬
15,29,65, 396 multiple data streams
‫جریان داده‬
(MIMD)
multiple instruction streams ‫یک جریان‬-‫چند جریان دستور‬
15,29
single data stream (MISD) ‫داده‬
25, 176, 191, ‫چند هسته‬
Multicore
473,477, 504,506
69, 217 Multicast ‫چندپخشی‬
12,32, 183, 361 multiprocessor ‫چندپردازنده‬
43, 361 multicomputer ‫چندکامپیوتر‬
438, 236 multithreading ‫چندنخ‬
185, 255, 364 main memory ‫حافظه اصلی‬
230, 227 Associative memory ‫حافظه انجمنی‬
260 memory fault tolerance ‫حافظه تحمل پذیر خطا‬
48, 476, 491 distributed shared memory ‫حافظه توزیع شده مشترک‬
257 S-access memory ‫حافظه دسترسی ترتیبی‬
257 c-access memory ‫حافظه دسترسی همزمان‬
362, 458 shared memory ‫حافظه مشترک‬
47 cluster shared memory ‫حافظه مشترک خوشه ای‬
47 global shared memory ‫حافظه مشترک سراسری‬
479 central shared memory ‫حافظه مشترک متمرکز‬
4, 186, 190, 224,
227, 237, 239, cache memory ‫حافظه نهان‬
255, 362
230 k-way associative cache ‫راهه‬-k ‫حافظه نهان انجمنی‬
226 data (D-Cache) ‫حافظه نهان داده‬
339, 226 instruction (I-cache) ‫حافظه نهان دستورالعمل‬
237 trace cache ‫حافظه نهان ردیابی‬
237 victim cache ‫حافظه نهان قربانی‬
| 655 ‫فهرست راهنما‬

‫عبارت ترجمه شده به‬


‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
minimum AVERAGE latency ‫حداقل میانگین تاخیر‬
290, 353
(MAL)
95 chordal ring ‫حلقه کردال‬
92 cube-connected cycles (CCC) ‫حلقه متصل شده مکعبی‬
2, 279 pipeline ‫خط لوله‬
279,287 linear pipeline ‫خط لوله خطی‬
283,287 nonlinear pipeline ‫خط لوله غیرخطی‬
192 page fault ‫خطای صفحه‬
421, 424 Lane ‫خطسیر‬
525, 539 cooling ‫خنک سازی‬
13, 364, 515 cluster ‫خوشه ای‬
69 grain packing ‫دانه بندی‬
218 Arbiter ‫داور‬
220 distributed arbitration ‫داوری توزیع شده‬
106 Bus arbitration ‫داوری گذرگاه‬
219 central arbitration ‫داوری مرکزی‬
105, 218 arbitration ‫داوری‬
479 central directory ‫دایرکتوری مرکزی‬
Degree of superscalar ‫درجه پردازنده سوپراسکالر‬
339
processor
169,339 superscalar degree ‫درجه سوپراسکالر‬
359 superpipeline degree ‫درجه سوپرپایپ الین‬
83 node degree ‫درجه گره‬
125, 145 Degree of parallelism (DOP) ‫درجه موازات‬
89 Fat tree ‫درخت چاق‬
shared-Bus- Request-Grant ‫پاسخ گذرگاه‬-‫درخواست‬
220
SBRG ‫مشترک‬
68 coarse grain ‫درشت دانه‬
cache only memory access ‫دسترسی فقط حافظه نهان‬
32, 361
(COMA)
non uniform memory access ‫دسترسی حافظه غیریکنواخت‬
32, 65
(NUMA)
‫عبارت ترجمه شده به‬
‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
uniform memory access ‫دسترسی حافظه یکنواخت‬
31,65
(UMA)
Direct memory Access ‫دسترسی مستقیم به حافظه‬
83
(DMA)
173 vector instruction ‫دستور برداری‬
291 state diagram ‫دیاگرام حالت‬
small computer system ‫رابط سیستم کامپیوتر کوچک‬
362
interface (SCSI)
89 control-driven ‫ کنترل‬-‫راه اندازی‬
89,320 Data-Driven ‫داده‬-‫راه اندازی‬
90 Demand-Driven ‫راه اندازی براساس تقاضا‬
202 page trace ‫ردیابی صفحه‬
284, 287, 354 reservation ‫رزرواسیون‬
218 Arbitration competition ‫رقابت داوری‬
23 Addressing mode ‫روش آدرس دهی‬
67 fine grain ‫ریز دانه‬
238 hit time ‫زمان اصابت‬
66,299 scheduling ‫زمانبندی‬
218 daisy-chained ‫زنجیروار‬
284 h-tree structure H-tree ‫ساختار‬
21 data structure ‫ساختمان داده‬
266 weak consistency ‫سازگاری ضعیف‬
264, 373, ‫سازگاری‬
consistency
498,499, 501, 505
89 Star ‫ستاره‬
200 paged segment ‫سگمنت صفحه بندی شده‬
20, 188, 190, 197, ‫سلسله مراتب‬
hierarchy
362, 482
7, 184, 186, 521 memory hierarchy ‫سلسله مراتب حافظه‬
218, 282 synchronous ‫سنکرون‬
169, 338, 352,359 superscalar ‫سوپر اسکالر‬
50 vector supercomputer ‫سوپر کامپیوتر برداری‬
338,344,352,359 superpipeline ‫سوپرپایپ الین‬
| 657 ‫فهرست راهنما‬

‫عبارت ترجمه شده به‬


‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
13,41 supercomputer ‫سوپرکامپیوتر‬
110 Butterfly switch ‫سویچ باتر فالی‬
103,106, 381 crosspoint switch ‫سویچ نقطه تقاطع‬
362 packet switching ‫سویچینگ بسته ای‬
422 circuit switching ‫سویچینگ مداری‬
83,100, 366 crossbar switch ‫سوییچ کراسبار‬
105, 362 Bus system ‫سیستم گذرگاه‬
105 Bus-connected system ‫سیستم متصل شده با گذرگاه‬
32 tightly coupled system ‫سیستم متصل محکم‬
292 greedy cycle ‫سیکل طماع‬
216 Bus cycle ‫سیکل گذرگاه‬
83 Shuffle ‫شافل‬
85 Perfect shuffle ‫شافل کامل‬
93 k-ary n-cube network ‫مکعبی‬-n ‫ارایه‬-k ‫شبکه‬
48 message passing network ‫شبکه ارسال پیام‬
101 Omega network ‫شبکه امگا‬
87 static network ‫شبکه ایستا‬
110 Butterfly network ‫شبکه باتر فالی‬
114 Blocking network ‫شبکه بلوکه شدنی‬
113 Banyan network ‫شبکه بنیان‬
113, 117,128 Benes network ‫شبکه بنیس‬
102 Baseline network ‫شبکه بیس الین‬
127 Delta network ‫شبکه دلتا‬
103 crossbar switch network ‫شبکه سویچ تقاطعی‬
120 Flip Network ‫شبکه فلیپ‬
104 clos network ‫شبکه کلوز‬
49 local area network (LAN) ‫شبکه محلی‬
processor I/O network ‫خروجی پردازنده‬/‫شبکه ورودی‬
361
(PION)
Dynamic communication ‫شبکه های اتصالی پویا‬
105
network
strictly non-blocking ‫شبکه های اکیدا بلوکه نشدنی‬
111
networks
‫عبارت ترجمه شده به‬
‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
rearrangeably nonblocking ‫شبکه های بلوکه نشدنی قابل‬
106
networks ‫آرایش مجدد‬
multistage interconnection ‫شبکه های چند سطحه‬
83,101
network (MIN)
112 k-way shuffle network ‫راهه‬-k ‫شبکه های شافل‬
206 Pseudo LRU LRU ‫شبه‬
60 Bernstein's condition ‫شرایط برنشتاین‬
474 program counter ‫شمارنده برنامه‬
235 set number ‫شماره مجموعه‬
188 Inclusion ‫شمول‬
89 Barrel shifter ‫شیفت دهنده بارل‬
58, 352 antidependency ‫ضدوابستگی‬
267 Atomic operation ‫عمل اتمیک‬
267 Atomic memory operation ‫عمل حافظه اتمیک‬
28 processing element (PE) ‫عنصر پردازشی‬
217 Broadcall ‫فراخوانی پخشی‬
203, 261 page frame ‫فریم صفحه‬
228, 233 block frame ‫فریم بلوک‬
194 virtual address space ‫فضای آدرس مجازی‬
236 Compulsory miss ‫فقدان اجباری‬
236 conflict miss ‫ فقدان برخورد‬-‫فقدان تصادم‬
236 capacity miss ‫فقدان ظرفیت‬
85,91 Hypercube ‫فوق مکعب‬
69 Granularity ‫قابل دانه بندی‬
50 Reliability ‫قابلیت اطمینان‬
27, 129, 146, 467 Amdahl's law ‫قانون امدال‬
143, 149, 156 Gustafson's law ‫قانون گوستافسون‬
415 directory-based protocol ‫قرارداد براساس دایرکتوری‬
390 write-invalidate protocol ‫قرارداد نوشتن نامعتبر‬
392 write-once protocol ‫قرارداد نوشتن یکبار‬
375 coherence protocol ‫قرارداد همبستگی‬
| 659 ‫فهرست راهنما‬

‫عبارت ترجمه شده به‬


‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
chained-directory coherence ‫قرارداد همبستگی براساس‬
420
protocol ‫دایرکتوری زنجیره ای‬
snoopy cache-coherent ‫قرارداد همبستگی حافظه نهان‬
390
protocol ‫جاسوسی‬
write-update coherence ‫قرارداد همبستگی نوشتن‬
375
protocol ‫بروزرسانی‬
92 Dimension ‫قطر‬
83 Network diameter ‫قطر شبکه‬
497 Lock ‫قفل‬
477 spin lock ‫قفل چرخشی‬
Harmonic mean ‫کارایی میانگین هارمونیک‬
127
performance
80 graph reduction ‫کاهش گراف‬
15 Flynn's classification ‫کالس بندی فالین‬
22,64, 356, 503 clock per instruction(CPI) ‫کالک به ازای هر دستور‬
161, 171, 209, very long instruction word ‫کلمه دستور خیلی طوالنی‬
322 (VLIW)
quality of parallel ‫کیفیت محاسبات موازی‬
136
computation
18, 21 performance ‫کارایی‬
421 Convoy ‫کاروان‬
539, 541 Container ‫کانتینر‬
105 time sharing bus ‫گذرگاه اشتراک زمانی‬
214, 393 data transfer bus (DTB) ‫گذرگاه انتقال داده‬
214, 363 Backplane bus ‫گذرگاه صفحه پشتی‬
79 Dataflow graph ‫گراف جریان داده‬
397 Graphic ‫گرافیک‬
413, 437 gather-scatter ‫پخش‬-‫گردآوری‬
551, 559,
560,563, 565, Grid ‫گرید‬
570, 577
296 initial collision matrix ‫ماتریس تصادم اولیه‬
190 sequential locality ‫محلیت ترتیبی‬
‫عبارت ترجمه شده به‬
‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
190 temporal locality ‫محلیت زمانی‬
190 spatial locality ‫محلیت مکانی‬
188 Locality ‫محلیت‬
298, 283 Hazard ‫مخاطره‬
read-after-write (RAW) ‫ بعد از نوشتن‬-‫مخاطره خواندن‬
298, 307, 310
hazard
write-after read (WAR) ‫ از‬-‫ بعد‬-‫مخاطره نوشتن‬
298, 307,310
hazard ‫خواندن‬
Write-after write (WAR) ‫بعد از نوشتن‬-‫مخاطره نوشتن‬
298, 307, 310
hazard
41 VLSI complexity model VLSI ‫مدل پیچیدگی‬
nonuniform memory access ‫مدل دسترس حافظه غیر‬
65, 361
(NUMA) model ‫یکنواخت‬
no-remote-memory-access ‫مدل دسترسی حافظه غیر دور‬
35
(NORMA) model
96 E-Cube routing E-Cube ‫مسیریابی‬
97 X-Y routing X-Y ‫مسیریابی‬
424 wormhole routing ‫مسیریابی خزشی‬
423 store-and-forward routing ‫ ارسال‬- ‫ و‬-‫مسیریابی ذخیره‬
180 Adaptive Routing ‫مسیریابی وفقی‬
104,180 Routing ‫مسیریابی‬
36, 90 Mesh ‫مش‬
227, 239 cache aliasing problem ‫مشکل نام مستعار حافظه نهان‬
scalable processor ‫معماری پردازنده مقیاس پذیر‬
173
architecture (SPARC)
register-to register ‫ثبات‬-‫معماری ثبات‬
24
architecture
77 Dataflow architecture ‫معماری جریان داده‬
438 multithreaded architecture ‫معماری چند نخی‬
memory-to-memory ‫به حافظه‬-‫معماری حافظه‬
24
architecture
24 Von Neumann architecture ‫معماری ون نیومن‬
26,57,135,153 Scalability ‫مقیاس پذیری‬
215 board interface logic ‫منطق رابط بورد‬
| 661 ‫فهرست راهنما‬

‫عبارت ترجمه شده به‬


‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
57 Parallelism ‫موازات‬
request level parallelism ‫موازات سطح تقاضا‬
27, 493
(RLP)
14,511 data level parallelism (DLP) ‫موازات سطح داده‬
instruction level parallelism ‫موازات سطح دستور‬
13,473, 504
(ILP)
14 Task level parallelism ‫موازات سطح کار‬
27, 574 thread level parallelism ‫موازات سطح نخ‬
6,20 Moore ‫مور‬
127 Arithmetic mean ‫میانگین ریاضی‬
127 Geometric mean ‫میانگین هندسی‬
billion floating point
133 instructions per ‫میلیارد دستور در ثانیه‬
second(Gflop)
million instructions per ‫میلیون دستور در ثانیه‬
23,64, 272
second (MIPS)
million floating point ‫میلیون دستور ممیز شناور در‬
133 instruction per second
‫ثانیه‬
(Mflops)
14,397,438,464 Thread ‫نخ‬
191,234 hit ratio ‫نرخ اصابت‬
191, 195, 236 miss rate ‫نرخ فقدان‬
229 fully associative mapping ‫نگاشت انجمنی کامل‬
230 set-associative mapping ‫مجموعه ای‬-‫نگاشت انجمنی‬
230, 233 sector mapping ‫نگاشت سکتوری‬
227, 501 direct mapping ‫نگاشت مستقیم‬
189, 390 write-through ‫نوشتن سراسری‬
57 flow dependency ‫وابستگی جریان‬
439, 459 loop carried dependence ‫وابستگی حمل شده حلقه‬
58, 342 output dependency ‫وابستگی خروجی‬
57, 340 data dependency ‫وابستگی داده‬
59 control dependency ‫وابستگی کنترل‬
59 resource dependency ‫وابستگی منبع‬
58 name dependency ‫وابستگی نام‬
‫عبارت ترجمه شده به‬
‫صفحه‬ ‫معادل عبارت به انگلیسی‬
‫فارسی‬
graphic processing unit ‫واحد پردازش گرافیکی‬
415, 433, 440
(GPU)
central processing unit ‫واحد پردازش مرکزی‬
3
(CPU) )‫(پردازنده‬
28 control unit (CU) ‫واحد کنترل‬
memory management unit ‫واحد مدیریت حافظه‬
189, 209,224
(MMU)
13, 511, 516, 523, ‫ورهاوس‬
Warehouse
538
kilo logic inference per ‫هزار استنتاج منطقی در ثانیه‬
133
second (KLIPS)
191, 237, 319, ‫هزینه فقدان‬
Miss penalty
483
90,114, 179 Topology ‫همبندی‬
69 Broadcast ‫همه پخشی‬
139 Artificial intelligence (AI) ‫هوش مصنوعی‬
single program over multiple ‫یک برنامه روی چند جریان‬
78, 140, 414
data stream (SPMD) ‫دستور‬
single instruction stream ‫یک جریان دستور چند جریان‬
15,65, 415, 432
multiple data stream (SIMD) ‫داده‬
single instruction stream ‫یک جریان دستور یک جریان‬
15
single data stream (SISD) ‫داده‬
‫خریدار گرامی‪ ،‬نوشتن این کتاب بیش از دو سال زمان برده است‪.‬‬

‫این نسخه الکترونیک مخصوص شما می باشد‪ .‬لذا نشر و گسترش آن‬

‫مورد رضایت نویسندگان کتاب نیست‪.‬‬

‫فروش نسخه الکترونیکی کتاب فقط از طریق سایت آیدرس‪ -‬بخش‬


‫دانشگاهی‪ -‬فنی مهندسی‪ -‬مهندسی کامپیوتر درس معماری‬
‫کامپیوتر پیشرفته انجام می شود‪ .‬و انتشار آن از طریق سایر سایت ها‬
‫غیر مجاز می باشد‪.‬‬

‫کانال مستقیم نویسنده در سایت آیدرس‪:‬‬


‫‪https://www.idars.ir/fathy‬‬

‫لینک مستقیم کتاب برای دانلود‪:‬‬

‫‪https://idars.ir/index.php?id=product/show/1258‬‬

‫برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران ‪ -‬خ انقالب ‪ -‬خ‬
‫فخر رازی ‪ -‬خ شهید وحید نظری شرقی ‪-‬پالک ‪ - 65‬واحد ‪ 1‬مراجعه‬
‫فرمایید‪.‬‬

You might also like