Advanced Computer Architecture
Advanced Computer Architecture
گردآوری و تألیف:
ناشر:
این نسخه الکترونیک مخصوص شما می باشد .لذا نشر و گسترش آن
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
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
پردازنده بین برنامهها تقسیم شده و امکان اجرای چند برنامه در سیستم داده میشود.
با وجود استفاده از تکنیکهای فوق در سیستم تکپردازنده ،این تکنیکها برای برنامههای بزرگ و با بار عملیاتی
باال مناسب نیست و استفاده از پردازندهها و کامپیوترها بطور همزمان ضروری میباشد .این ضرورت باعث ایجاد
سیستمهای چندپردازنده و چندکامپیوتر شده است که در این کتاب مورد بررسی قرار میگیرند.
فرموله کردن مسائل و توسعه الگوریتمهای موازی اغلب نیازمند ارتباط بین تئوریسینها ،برنامهنویسان کامپیوتر و
کاربران عملیاتی میباشد .کتابهای زیادی در مورد طراحی و نگاشت الگوریتمها یا استفاده از آنها روی
کامپیوترهای موازی نوشته شدهاند .استفاده از برنامهنویسی موازی و توزیعی که بتواند از ویژگیهای سختافزار و
کامپیوترهای موازی و توزیعی استفاده مؤثر نماید و زمان اجرای برنامهها را کاهش دهد نیاز به مطالبی دارد که در
1
AI=Artificial Intelligent
کانون نشر علوم | 18
این کتاب تا حدود کمی به آن پرداخته شده است .این نکته اساسی که کاهش زمان اجرای برنامهها با توجه به
توسعه سختافزارها نقش مؤثری در استفاده مؤثر از سختافزار دارد باید مورد توجه اساسی قرار گیرد.
منابع سختافزاری :معماری یک سیستم کامپیوتر توسط سه دایره تودرتو در قسمت راست شکل 2-1نشان
داده شده است .در یک سیستم کامپیوتری مدرن توان عملیاتی آن توسط مختصات منابع سختافزاری ،سیستم
عامل و نرمافزار کاربردی مشخص میشود .پردازندهها ،حافظه و وسایل جانبی هسته سختافزار یک سیستم
کامپیوتر را شکل میدهند .مجموعه دستورالعمل پردازندهها ،سازمان حافظه ،چندپردازندهها ،سوپرکامپیوترها،
چندکامپیوترها و کامپیوترهای موازی انبوه در این کتاب بحث میشوند.
رابطهای سختافزاری خاص اغلب در وسایل ورودی/خروجی ساخته میشوند .مثل ترمینالها ،ایستگاههای کاری،
اسکنرهای صفحه نوری ،تشخیص دهنده کاراکتر مغناطیسی ،مودمها ،فایل سرورها ،دستگاههای ورودی دادههای
صوتی ،چاپگرها و رسامها .این وسایل جانبی به طور مستقیم یا توسط یک شبکه گسترده به کامپیوترها متصل
میشوند.
در مجموع ،برنامههای رابط نرمافزاری مورد نیاز است .این رابطهای نرمافزاری شامل سیستمهای انتقال فایل،
ویرایشگرها ،پردازشگرهای کلمه ،راهاندازهای دستگاهها ،راهاندازهای وقفه ،برنامههای ارتباطی شبکه ،و غیره می-
باشند .این برنامهها قابلیت حمل برنامههای کاربر روی معماریهای ماشین متفاوت را ساده میکنند.
سیستم عامل :یک سیستم عامل مناسب تخصیص و عدم تخصیص منابع در خالل اجرای برنامهها را مدیریت
میکند.
نگاشت ،یک پردازه دوطرفه است که ساختار الگوریتم را با معماری سختافزار و برعکس انطباق میدهد .یک
نگاشت خوب ،کدهای منبع مؤثری تولید میکند و در نهایت زمان اجرای برنامه را کاهش میدهد .نگاشت الگوریتمی
و ساختاری دادهها روی معماری ماشین شامل زمانبندی پردازنده ،نگاشت حافظه ،ارتباطات بین پردازندهای و غیره
میباشد .این فعالیتها اغلب وابسته به معماری کامپیوتر میباشد.
نگاشت بهینه برای معماری کامپیوترهای گوناگون سخت میباشد .پیادهسازی این نگاشت روی پشتیبانی مفید
سیستم عامل و کامپایلر تکیه دارد .موازات میتواند در زمان طراحی الگوریتم ،در زمان برنامه ،در زمان کامپایل ،و
زمان اجرا بهرهبرداری شود .تکنیکهای بهرهبرداری موازات در این مراحل هسته تکنولوژی پردازش موازی را شکل
میدهد.
پشتیبانی نرمافزار سیستم :پشتیبانی نرمافزاری برای توسعه برنامههای مفید در زبانهای سطح باال مورد نیاز
است .کد منبع نوشته شده در زبان سطح باال 1ابتدا باید به کد شئ 2توسط کامپایلر بهینه ،ترجمه شود .کامپایلر
متغیرها را به ثباتها و به کلمات حافظه انتساب میدهد و واحدهای عملیاتی را برای عملگرها رزرو میکند .یک
اسمبلر برای ترجمه کد شئ کامپایل شده ،به کد ماشین که توسط سختافزار ماشین قابل سازمان دهی است
استفاده میشود .یک بارکننده برای مقدار دهی اولیه اجرای برنامه در هسته سیستم عامل استفاده میشود.
1
High Level language
2
Object code
پیوند منابع نیازمند استفاده از کامپایلر ،اسمبلر ،بارکننده ،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حافظه
کنترل و مسیر داده
طراحی دیجیتال
طراحی مدار
لیاوت
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
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دهه است که در تحقیقات و پیشرفتهای صنعتی در
میکروالکترونیک ،مدارات چاپی ،بستهبندی با چگالی باال ،پردازندههای پیشرفته ،سیستمهای حافظه ،وسایل جانبی،
کانالهای ارتباطی ،ارزیابی زبان ،بهبود کامپایلرها ،سیستمهای عامل ،محیطهای برنامه نویسی و چالشهای
کاربردی در حال پیشرفت است.
پیشرفت سریع در تکنولوژی سختافزار بطور قابل توجهی ایجاد یک نسل جدید از کامپیوترها که با پردازش موازی
مطابقت دارد را اقتصادی ساخته است .به هر حال مانع عمده در پردازش موازی برای ورود به پردازه ساخت در طرف
نرمافزار و برنامههای کاربردی است.
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
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
معماری مجموعه
× ×
دستورالعمل
نرخ کارایی :مفهوم مهم دیگر تعداد برنامههایی است که یک سیستم میتواند در یک واحد زمان اجرا کند که به
آن کارایی (توان عملیاتی) سیستم (برنامه بر ثانیه) 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
طبقهبندی آنها توضیح داده میشود .این مقایسهای ساده بین دو نوع کامپیوتر روی اجرای یک برنامه میباشد.
وقتیکه برنامههای متفاوت اجرا شوند نتیجه گیری ممکن است متفاوت باشد.
ما نمیتوانیم توان عملیاتی ، 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
بنابراین این تغییر باعث کندتر شدن سیستم میشود .یعنی با وجود اینکه مجموعه دستورالعمل پردازنده پیچیدهتر
میشود ولی زمان اجرای آن بهبود نخواهد یافت بلکه کمتر میشود .در این مثال تغییر در مجموعه دستورالعملها
بررسی شد و مشاهده کردیم که در این مثال خاص با تغییر در مجموعه دستورالعملها سرعت سیستم بهبود نمییابد.
حال میخواهیم بررسی کنیم که اگر بخش خاصی از سختافزار سریعتر شود چه اتفاقی در افزایش سرعت سیستم
خواهد افتاد؟
اگر بخشی از سیستم بهبود داده شود و در آن بخش افزایش سرعت اتفاق بیافتد آنگاه افزایش سرعت سیستم جدید
نسبت به سیستم قبلی بصورت زیر محاسبه میشود:
کارایی کل کار در سیستم بهبود یافته زمان اجرای کل کار بدون بهبود
زمان اجرای کل کار در سیستم بهبود یافته = کارایی کل کار بدون استفاده از بهبود = افزایش سرعت (معادله )8-1
زمان اجرا در سیستم جدید به دو بخش بستگی دارد :اوالً بخشی از کار اصلی که زمان اجرای آن در سیستم جدید
قابل تغییر است .ثانیاً بخشی از کار اصلی که زمان اجرای آن در سیستم جدید قابل تغییر نیست .این مطلب تحت
عنوان قانون ( Amdahlامدال) شناخته میشود .بنابراین:
𝑑𝑒𝑐𝑛𝑎𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝐸𝑛ℎ
𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑛𝑒𝑤 = 𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑜𝑙𝑑 × [(1 − 𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑒𝑛ℎ𝑎𝑛𝑐𝑒𝑑 ) + ]
𝑑𝑒𝑐𝑛𝑎𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝐸𝑛ℎ
(معادله )9-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
فرترن ،لیسپ یا پاسکال نوشته میشود. فرترن ،لیسپ یا پاسکال نوشته میشود.
ابزارهای نرم افزاری خاصی مورد نیاز است تا یک محیط را برای گروه کاربران آسانتر کند .بعضی ابزارها ،توسعه
یافته موازی زبانهای سطح قدیمی است .بقیه ،محیطهای مجتمع شدهاند که شامل ابزارهای تهیه شده برای
کانون نشر علوم | 40
سطوح مختلف انتزاعها ،اعتبار سنجی ،تست ،دیباگ ،اجرا و پیشبینی کارایی و مانیتور کردن و پشتیبانی تصویری
تا به توسعه برنامه کمک کند ،اندازه گیری کارایی و نمایش گرافیکها و انیمیشن نتایج محاسبات ،میباشند.
در ادامه سه مدل چندپردازنده حافظه مشترک توصیف میشوند :مدل دسترسی حافظه متحدالشکل (،)UMA1
مدل دسترسی حافظه غیر متحدالشکل ( ،)NUMA2و مدل معماری حافظه فقط با استفاده از حافظه نهان
( .)COMA3این مدلها در چگونگی اشتراک یا توزیع منابع جانبی با حافظه با هم متفاوتند.
مدل :UMAدر یک مدل چند پردازنده ( UMAشکل ،)8-1حافظهها بطور فیزیکی متحدالشکل توسط همه
پردازندهها به اشتراک گذاشته شدهاند .همه پردازندهها زمان دسترسی یکسان به همه کلمات حافظه دارند به همین
خاطر ،دسترسی به حافظه متحدالشکل نامیده میشود .هر پردازنده ممکن است از یک حافظه نهان اختصاصی
استفاده کند .منابع جانبی بطور مشابهی به اشتراک گذاشته میشوند.
پردازندهها
P1 P2 Pn
حافظه مشترک
I/O SM1 SMn
به چندپردازندهها سیستمهای متصل محکم 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میباشد.
مدل :COMAیک چندپردازنده که فقط از حافظه نهان استفاده میکند مدل COMAفرض میشود .نمونه-
هایی از ماشینهای ،COMAماشین نفوذ داده کامپیوتر علمی از مجتمع سوئد ( )DDm,1990و ماشین
تحقیقات مربع کندال ( )KSR-1میباشد .مدل COMAدر شکل 10-1نشان داده شده است.
مدل COMAحالت خاصی از ماشین NUMAاست که حافظههای اصلی توزیع شده به حافظه نهان تبدیل
شده اند .در هر گره پردازنده سلسله مراتب حافظه وجود ندارد همه حافظههای نهان یک فضای آدرس سراسری
ایجاد میکنند .دسترسی به حافظه نهان دور با دایرکتوریهای حافظه نهان توزیع شده انجام میشود ( Dدر شکل
کانون نشر علوم | 44
.)1-10براساس نوع شبکه ارتباطی استفاده شده ،گاهی اوقات دایرکتوریهای سلسله مراتبی ممکن است استفاده
شود تا به مکانیابی کپیهای بلوکهای حافظه نهان کمک کند .مکانیابی اولیه داده بحرانی نیست ،زیرا دادهها
عاقبت به جایی که استفاده خواهند شد مهاجرت خواهند کرد.
در کنار مدلهای COMA,UMA,NUMAتوضیح داده شده در باال سایر مدلها برای چندپردازندهها نیز
وجود دارند .به عنوان مثال ،دسترسی به حافظه غیر متحدالشکل با همبستگی حافظه نهان ()CC-NUMA
میتواند با حافظه اشتراکی توزیع شده و دایرکتوریهای حافظه نهان تعیین شود .مثالهایی از مدل CC-NUMA
شامل )1990(Standford Dashو )1990(MIT Alewifeمیباشد .نوع دیگر میتواند ماشین cache-
coherent COMAباشد که همه کپیهای حافظه نهان باید ثابت نگه داشته شوند.
ساخت مدارات و ایجاد بستهبندی ،محدودیتهای اضافی روی مقیاس پذیری ایجاد میکنند .مقیاس پذیری و
برنامه پذیری در فصلهای بعد توضیح داده میشوند .در ساخت سیستمهای با موازات انبوه چندکامپیوترهای با
حافظه توزیع شده مقیاسپذیرتر ولی بخاطر پروتکلهای ارتباطی اضافه شده با قابلیت برنامه پذیری کمتر است.
شبکه ارسال پیام اتصاالت ایستای نقطه به نقطه را برای هر گره تهیه میکند .همه حافظههای محلی خصوصی
هستند و فقط توسط پردازندههای محلی قابل دسترس هستند .به این دلیل ،چندکامپیوترهای قدیمی را ماشینهای
بدون دسترسی به حافظه راه دور ( )NORMA1میگفتند .به هر حال ،این محدودیت در چندکامپیوترهای آینده
با حافظه اشتراکی توزیع شده حذف شد .ارتباط بین گرهی توسط ارسال پیام از یک شبکه اتصالی ایستا حمل
میشود.
1
NO-Remote Memory Access
M M M
P P P
در بخش 4-2انواع همبندیهای شبکه ایستا ،برای ساخت چندکامپیوترها را مطالعه خواهیم کرد .همبندیهای
مشهور شامل حلقه ،درخت ،مش ،Torus ،فوق مکعب ،سیکل ارتباطی مکعب و غیره میباشند .انواع الگوهای
ارتباطی مثل یک به یک ،پخشی ،جایگشت ،و الگوهای چندپخشی در گرهها مورد تقاضا واقع میشود .مسائل مهم
برای چندکامپیوترها شامل ،شماتیکهای مسیریابی پیام ،استراتژیهای کنترل جریان شبکه ،اجتناب از بنبست،
کانالهای مجازی ،روشهای ارسال پیام و تکنیکهای تصنیف برنامه میباشد.
کامپیوترهای موازی بصورت پیکربندی MIMDیا SIMDظاهر میشوندSIMD .ها بیشتر برای کابردهای
خاص منظوره پیاده میشوند .واضح است که SIMDها از لحاظ اندازه چندان مقیاس پذیر نیستند .این حقیقت
که CM-5معماری MIMDدارد و CM-2معماری SIMDدارد ممکن است هدف معماری را روشن کند.
بنابراین مرز بین چندپردازندهها و چندکامپیوترها در سالهای اخیر شفاف نیست .در نتیجه تمایز این دو ممکن است
مبهم باشد.
یکی از ویژگیهای معماری برای کامپیوترهای همه منظوره براساس پیکربندی MIMDبا حافظههای توسعه
یافته است که فضای آدرس مجازی مشترک سراسری دارند )1992( Gordon Bell .یک طبقه بندی برای
ماشینهای MIMDتهیه کرده است که در شکل 12-1آورده شده است .او فرض کرد چندپردازندههای حافظه
مشترک یک فضای آدرس تک دارند .چندپردازندهها یا چندکامپیوترهای مقیاس پذیر باید حافظه مشترک توزیع
شده استفاده کنند .چندپردازندههای مقیاس ناپذیر حافظه مشترک متمرکز استفاده میکنند.
کانون نشر علوم | 46
چندکامپیوترها حافظههای توزیع شده با چندین فضای آدرس استفاده میکنند .آنها با حافظه توزیع شده مقیاس
پذیرترند .البته چندکامپیوترهای متمرکز هم وجود دارند .ارائه ایستگاههای کاری متصل LANسریع باعث ایجاد
سوپرکامپیوترهای مقرون به صرفه خواهد شد .مقیاس پذیری کامپیوترهای MIMDدر بخش 4-3مطالعه خواهد
شد.
MIMD
-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بطور مفصل
توضیح میدهیم.
واحد کنترل
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
کامپیوترهای موازی روی استفاده از تراشههای 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نشان میدهد .مساحت
دو-قطعه𝑻𝑨√ پهنای باند ارتباطی یک محاسبه را محدود میکند .تئوریسینهای VLSIمربع این اندازه AT2
را به عنوان کران پایین استفاده میکنند.
این مثال چگونگی تخمین مساحت تراشه 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نشان میدهیم.
ابتداً عناصر ماتریس ورودی ) 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اهداف توان مصرفی و انرژی در مدارات مجتمع :توان مهمترین چالش پیش روی طراحان کامپیوتر
در هر نوع کامپیوتر میباشد .ا والً :توان باید به داخل تراشه آورده شود و در آن توزیع شود .ریزپردازندههای مدرن
صدها پین و چندین الیه اتصالی فقط برای پاور و زمین استفاده میکنند .ثانیاً :توان بصورت گرما تلف میشود و
باید حذف شود.
چگونه یک معمار سیستم یا یک کاربر راجع به کارایی ،توان و انرژی باید فکر کند؟ از دید طراح سیستم سه مفهوم
اولیه وجود دارد:
این انرژی مصرفی یک ترانزیستور برای تغییر دو سطح یعنی 0→1→0یا 1→0→1میباشد .میزان این انرژی
برای انتقال از 0→1یا 1→0نصف است یعنی:
1
Energydynamic∝ 2Capacitive Load×Vlotage2 ()1-13
برای یک کار ثابت ،کاهش نرخ ساعت باعث کاهش توان مصرفی میشود نه انرژی.
بوضوح مشخص است که کاهش ولتاژ باعث افت توان و انرژی مصرفی میشود .بنابراین در 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هزینه :هزینه برای اکثر سیستمها بجز سیستمهای سوپرکامپیوتر فاکتور مهمی است و نقش تعیین کننده
در بازار رقابت دارد .طراح هوشمند کامپیوتر باید هزینه را در نظر بگیرد و فاکتور کارایی/هزینه را بهینه کند:
در این قسمت روی هزینه 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چقدر است؟ چون غبار بصورت پراکنده روی سطح ویفر توزیع شده است بنابراین بازدهی
کارخانه به میزان غبار روی ویفر وابسته است .بنابراین داریم:
مثال :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 ،میتواند براساس تصمیم اینکه چه موقع سیستم در حال کار یا خطادار است استفاده شود.
قابلیت اطمینان ماژول واحدِ امتداد پیشرفت سرویس (یا زمان تا خطا) از نمونه اولیه مرجع است .بنابراین، •
متوسط زمان تا خطا 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
نکته اینکه قابلیت اطمینان و قابل دسترس بودن اکنون واحدهای قابل سنجش میباشند .از این تعاریف میتوانیم
قابلیت اطمینان یک سیستم را بطور کمّی تخمین بزنیم اگر از قابلیت اطمینان اجزاء مطلع باشیم و خطاها مستقل
از هم باشند.
اولین راه مقابله با خطا ،افزونگی چه در زمان (تکرار عمل تا ببینیم که آیا هنوز سیستم خطادار است) یا منابع (داشتن
اجزاء یدکی تا درصورت خطادار شدن یکی ،آنرا جایگزین کنیم) میباشد .وقتی که جزء جایگزین شد و سیستم
کامالً تعمیر شد ،قابلیت اطمینان سیستم بخوبی یک سیستم جدید فرض میشود .اجازه دهید مزایای افزونگی را با
یک مثال بسنجیم.
مثال :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برای اجرای یک برنامه محک با ترکیب دستورات و تعداد پالسهای
ساعت زیر استفاده میشود.
مسأله -2-1توضیح دهید چگونه مجموعه دستورالعمل ،تکنولوژی کامپایلر ،پیادهسازی پردازنده و کنترل ،و
سلسله مراتب حافظه و حافظه نهان بر کارایی تأثیر میگذارند و تأثیرات را بر اساس طول برنامه ،نرخ ساعت و
CPIمؤثر توضیح دهید.
مسأله -3-1یک ایستگاه کاری یک پردازنده 15MHzبا نرخ ادعا شده 10MIPSرا برای اجرای یک
برنامه ترکیبی استفاده میکند .فرض کنید هر دسترسی حافظه یک پالس ساعت تأخیر دارد.
(الف) CPIمؤثر این کامپیوتر چیست؟
(ب) فرض کنید که پردازنده به ساعت 30MHzارتقا یابد .اما سرعت زیر سیستم حافظه بدون تغییر بماند و در
نتیجه دو پالس ساعت برای هر دسترسی حافظه مورد نیاز است .اگر ٪30دستورات نیازمند 1دسترسی حافظه و
5٪دیگر نیازمند دو دسترسی حافظه برای هر دستور داشته باشند ،کارایی پردازنده ارتقا یافته با یک مجموعه
دستورالعمل سازگار و تعداد دستور برابر در یک برنامه داده شده چیست؟
(الف) محاسبات پردازنده و عملیات ورودی/خروجی در یک کامپیوتر چندبرنامه نویسی شده نمیتوانند همپوش شوند.
(ب) همزمانی همه PEها در یک کامپیوتر SIMDتوسط سخت افزار نسبت به نرم افزار انجام میشود همانطور
که در اغلب کامپیوترهای MIMDاتفاق میافتد.
(ج) تا آنجا که مربوط به برنامه پذیری میشود ،چندپردازندههای حافظه-مشترک ارتباطات بین پردازندهای سادهتری
را نسبت به چندکامپیوترهای ارسال پیام پشتیبانی میکنند.
(د) در یک کامپیوتر ،MIMDهمه پردازندهها باید دستور مشابهی را در یک زمان بطور همزمان اجرا کنند.
(ه) تا آنجا که مقیاسپذیری مدنظر باشد ،چندکامپیوترها با حافظه توزیع شده از چندپردازندههای حافظه-مشترک
مقیاسپذیرترند.
مسأله -6-1زمانهای اجرای 4برنامه برحسب ثانیه روی سه کامپیوتر در جدول زیر نشان داده شده است.
مسأله -7-1عملیات معماری کامپیوترهای SIMDو MIMDرا طبقه بندی کنید .چندپردازندهها و چند
کامپیوترها را براساس دستوراتشان ،اشتراک منابع ،و ارتباطات بین پردازنده مقایسه کنید .همچنین تفاوتهای بین
کامپیوترهای UMA, NUMA, COMA, NORMAرا توضیح دهید.
مسأله -8-1قطعه کد زیر شامل 6دستورالعمل باید 64بار برای ارزیابی عبارت برداری
D(I)=A(I)+B(I)*C(I) for 0≤I≤63اجرا میشود:
که 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://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روش رفع آنها بیان شده است.
در ادامه قطعه کدی را که شامل عملیات ورودی/خروجی است در نظر میگیریم:
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
حلقه زیر در تکرارها وابستگی کنترل دارد.
وابستگی منبع :این نوع وابستگی متفاوت از وابستگی داده یا کنترل است و باید استقالل وجود داشته باشد تا
کار اجرا شود .وابستگی منبع با تداخلها در استفاده مشترک از منابع مشترک مثل ،واحدهای صحیح ،واحدهای
ممیز شناور ،ثباتها و نواحی حافظه در خالل رخدادهای موازات ایجاد میشوند .وقتیکه منبع متداخل یک 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
P3
÷ 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استفاده میشوند .برنامهنویسان عالقهمندند کامپایلرهایی ساخته
شوند که بطور خودکار موازات را تشخیص دهند.
1
Segment
| 73 فصل دوم :خواص برنامه و شبکه
جزئیات توابع سختافزاری خاص و پشتیبانی نرمافزاری برای موازات در فصلهای باقیمانده بحث میشوند .ایده
کلیدی این است که موازات به سادگی نمیتواند بدست آید .در کنار شرایط تئوری ،بین طراحان سختافزار و برنامه
نویسان نرمافزار ،پیوندی مورد نیاز است تا موازات را در بهبود کارایی کامپیوتر برآورده کنند.
موازات سختافزاری :این به نوع موازات تعریف شده توسط معماری ماشین و چندگانگی سختافزار مربوط
است .موازات سختافزاری اغلب تابعی از حد میانه هزینه و کارایی میباشد و نشان دهنده الگوهای کارایی منابع از
عملیات قابل اجرای همزمان میباشد .همچنین حداکثر کارایی منابع پردازنده را مشخص میکند.
یک روش ،طبقه بندی موازات در یک پردازنده توسط تعداد دستورات انتشار یافته در یک پالس ساعت ماشین
میباشد .اگر یک پردازنده ،در یک پالس ساعت ماشین kدستور را منتشر کند ،به آن -kانتشاره میگویند.
یک پردازنده معمولی یک یا چند پالس ساعت ماشین را برای انتشار یک دستور صرف میکند .این نوع پردازندهها
با یک خطلوله دستورالعمل در پردازنده ،ماشینهای تک-انتشاره نامیده میشوند .در یک پردازنده مدرن ،دو یا چند
دستور میتوانند در یک پالس ساعت ماشین منتشر شوند.
به عنوان مثال Intel i960CA ،یک پردازنده سه-انتشاره است که یک دستور محاسباتی ،یک دسترسی حافظه،
و یک دستور پرش در یک پالس ساعت منتشر میشود .سیستم IBM 6000 ،RISCیک پردازنده -4انتشاره
است که قادر است یک عمل محاسباتی ،یک دسترسی حافظه ،یک عمل ممیز شناور ،و یک عمل پرش را در یک
پالس ساعت منتشر کند.
یک چندپردازنده که از nپردازنده -kانتشاره ساخته شده است قادر خواهد بود که حداکثر تعداد n×kرشته دستور
را بطور همزمان راه اندازی کند.
موازات نرمافزاری :این نوع موازات با وابستگی داده و کنترل برنامه تعریف میشود .درجه موازات در مشخصات
برنامه یا در گراف جریان برنامه مشخص میشود .موازات نرمافزاری تابعی از الگوریتم ،شکل برنامهنویسی و بهینه
سازی کامپایلر میباشد .گراف جریان برنامه الگوهای عملیات قابل اجرای همزمان را نشان میدهد .موازات در یک
برنامه در طول دوره اجرا تغییر میکند و اغلب کارایی پردازنده را محدود میکند.
گراف برنامه نمونه شکل(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 فصل دوم :خواص برنامه و شبکه
Cycle 4
s1 S2
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واحد زمانی سربار ارتباطی اتفاق افتاده بین زیر سیستمهای ماشین میباشد .به عنوان مثال ،تأخیر
حافظه ،زمان مورد نیاز یک پردازنده برای دسترسی به حافظه میباشد .زمان مورد نیاز دو پردازنده تا با هم همزمان
شوند تأخیر همزمانی نامیده میشود .دانهبندی محاسباتی و تأخیر محاسباتی به هم وابستهاند .ارتباط آنها در زیر
بیان میشوند.
همانطور که در شکل 5-2نشان داده شده است ،موازات در سطوح پردازشی مختلف بهرهبرداری میشود 5 .سطح
اجرای برنامه نشان دهنده اندازههای دانههای محاسباتی متفاوت میباشند و نیازهای ارتباطی و کنترل متغیر است.
درکل ،اجرای یک برنامه ممکن است شامل ترکیبی از این سطوح باشد .ترکیب واقعی به کاربرد ،فرمول ،الگوریتم،
زبان ،برنامه ،پشتیبانی کامپایلر و محدودیتهای سخت افزار وابسته است .ما در زیر سطوح موازات را طبقه بندی
میکنیم و روشهای پیادهسازی آنها را از دید یک برنامه نویس و نویسنده کامپایلر مرور میکنیم.
1
Latency
| 77 فصل دوم :خواص برنامه و شبکه
مزایای محاسبات ریزدانه ،در امکان وجود میزان زیاد موازات میباشد .بهرهبرداری از موازات ریزدانه میتواند توسط
یک کامپایلر بهینه که قادر است بطور پویا موازات را تشخیص دهد انجام شود .برای یک برنامه نویس ابتدایی
دشوار است تا بتواند موازات سطح دستور را در کد منبع تشخیص دهد.
سطح حلقه :این سطح مرتبط با عملیات تکرار حلقه میباشد .یک حلقه نوعی شامل کمتر از 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چند به چند میشوند .نیاز به ارتباطات ممکن
است موازات یا دانهبندی را محدود کند .اکثر مواقع حدمیانهای بین این دو وجود دارد.
روشهای ارتباطی شامل کاهش تأخیر یا پیچیدگی ،اجتناب از بن بست ،حداقل کردن بلوکه شدن الگوهای ارتباطی،
و حد میانهای بین سربار موازات و ارتباط میباشد .در این کتاب تکنیکهایی که تأخیر ارتباطی را حداقل میکنند،
از بن بست اجتناب میکنند و اندازه دانه را بهینه میکنند ،مطالعه خواهیم کرد.
( )1چگونه میتوانیم یک برنامه را به شاخههای موازی ،ماژولهای برنامه ،ریزکارها یا ریزدانهها تقسیم کنیم تا
کوتاهترین زمان اجرای ممکن را بدست آوریم؟
مسئله اندازه دانه ،شامل تعیین تعداد و اندازه دانهها (یا ریزکارها) در یک برنامه موازی میشود .در حقیقت ،راهحل
هم وابسته به ماشین و وابسته به مسئله است .هدف ،ایجاد یک زمانبندی کوتاه برای ایجاد سریع ماژولهای تقسیم
شده برنامه میباشد.
حدمیانهای بین سربار موازات و زمانبندی/همزمانی وجود دارد .پیچیدگی زمانی دربرگیرنده هر دوی سربار محاسباتی
و ارتباطی میباشد .تقسیم بندی برنامه دربرگیرنده طراح الگوریتم ،برنامه نویسی ،کامپایلر ،پشتیبانی سیستم عامل
و غیره میشود .در زیر روش دانهبندی معرفی شده توسط Kruatrachueو )1988( Lewisبرای کاربردهای
برنامه موازی را معرفی میکنیم.
1
Permutation
2
Broadcast
3
Multicast
کانون نشر علوم | 80
مفهوم پایه تقسیم بندی برنامه در زیر معرفی میشود .در شکل 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 فصل دوم :خواص برنامه و شبکه
ایده بستهبندی دانه ابتدا اِعمال دانهبندی ریز به منظور رسیدن به درجه موازات باالتر است .آنگاه چندین گره ریزدانه
را با هم ترکیب می کنیم تا گره درشت دانه بدست آید تا تأخیرات ارتباطی غیرالزم را حذف کنیم یا سربار کلی
زمانبندی را کاهش دهیم.
معموالً ،همه عملیات ریزدانهی داخل یک گره درشت دانه ،به یک پردازنده برای اجرا انتساب داده میشود .تقسیم
بندی یک برنامه به دانههای ریز نیازمند ارتباطات بین پردازندهای بیشتری نسبت به دانههای درشت است .بنابراین
بستهبندی دانه حد میانهای بین موازات و سربار ارتباطی/زمانبندی پیشنهاد میکند .تأخیرات داخلی در عملیات
ریزدانه در داخل یک گره درش ت دانه قابل صرفنظر کردن است زیرا تأخیر ارتباطی عمدتاً توسط تأخیرهای بین
پردازندهای تعیین می شود نه تأخیرهای بین یک پردازنده مشابه .انتخاب اندازه دانه بهینه به معنی رسیدن به
کوتاهترین زمانبندی گرهها روی یک سیستم کامپیوتر موازی است.
متناسب با گرافهای برنامه ریزدانه و گرافهای برنامه درشت دانه ،در شکل ،6-2دو زمانبندی چندپردازنده در
شکل 7-2نشان داده شده است .زمانبندی ریزدانه طوالنیتر است ( 42واحد زمانی) زیرا تأخیرات ارتباطی بیشتری
دارد که در شکل بصورت سایهدار نشان داده شده است .زمانبندی درشت دانه کوتاهتر است ( 38واحد زمانی) زیرا
تأخیرهای ارتباطی بین گرههای 12و13و 14در داخل گره ( Dو همچنین تأخیرات 15و16و 17در داخل )Eبعد از
بستهبندی دانه نادیده گرفته شده است.
کانون نشر علوم | 82
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 .مرحله
عمده در تعیین دانه و پردازه بهینهسازی زمانبندی وجود دارد:
مثال :5-2تصنیف برنامه برای زمانبندی ایستای چندپردازنده شکل 9-2مثالی از چگونگی محاسبه
اندازه دانه و تأخیر محاسباتی را نشان میدهد .در این مثال ،دو ماتریس A ،2×2و Bرا در هم ضرب میکنیم و
جمع 4عنصر ماتریس منتج C=A×Bرا محاسبه میکنیم .در این برنامه 8ضرب و 7جمع وجود دارد که باید
انجام شود .این عملیات در زیر نشان داده شدهاند.
در شکل ( 9-2الف) شبه کد نوشته در سمت چپ ،برای انجام یک عمل ضرب شامل خواندن عملوندها از حافظه،
ضرب و نوشتن نتیجه ضرب به حافظه میباشد .شبه کد نوشته شده در سمت راست شکل (9-2الف) برای انجام
یک عمل جمع شامل خواندن عملوندها از حافظه ،جمع آنها و ذخیره نتیجه در حافظه میباشد .همانگونه که در
کانون نشر علوم | 84
شکل (9-2ب) نشان داده شده است برای ارتباط بین دو پردازنده از DMAاستفاده شده است و زمان ارتباط با T3
نشان داده شده است .تأخیر ارتباطی بین پردازنده در همه یالها در گراف برنامه حذف شده است و d=212پالس
ساعت است .در شکل (9-2ب)) این تأخیرها مربوط به ارتباط بین دو پردازنده است.
Aik Bkj Ai1×B1j Ai2× B2j
یک گراف دانهبندی ریز در شکل (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پردازنده میباشد.
در مثالهای ارائه شده مشاهده شد که گاهی اوقات استفاده از موازات باعث تسریع زیادی نمیشود .علت اصلی این
موضوع وجود تأخیر ارتباطی بین پردازندهها میباشد .اگر زمان ارتباط زیاد باشد استفاده از موازات مطلوب نیست .در
مثال قبل دیدیم که استفاده از 8پردازنده تسریع 1.16برابر دارد که مطلوب نیست .حال میخواهیم فرمولی برای
سنجش اینکه چه موقع موازی سازی بهتر است یا نه ارائه دهیم.
یک آنالیز ساده این است که Mپردازه داشته باشیم که هر کدام زمان اجرای Rدارند و زمان ارتباط بین هر دو
پردازه Cباشد و یک سیستم دوپردازنده داشته باشیم .فرض کنیم M-Kپردازه به پردازنده P1دادهایم بنابراین
پردازنده K ،P2پردازه خواهد داشت.
در یک تکپردازنده زمان کل اجرای 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خیلی مهم است.
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
-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
شکل دادن
× 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
(د) اجرای موازی روی یک سیستم اشتراک حافظه 4پردازنده در 14پالس ساعت
شکل :13-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تعیین شود و یک کپی به
دستور متقاضی اصلی برگشت داده شود ادامه مییابد.
معماریهای کامپیوتر جریان-کنترل ،جریان داده و کاهشی در جدول 1-2مقایسه شدهاند .میزان کنترل صریح
راهاندازی-کنترل از راهاندازی-تقاضا بیشتر است و کمترین کنترل در راهاندازی-داده میباشد .تفاوت عمده بین
کامپیوترهای راهاندازی-داده و راهاندازی-تقاضا ،ارزیابی سریع و ارزیابی تنبل میباشد.
توکنهای کنترل در کامپیوترهای جریان-کنترل و ماشینهای کاهشی استفاده میشوند .مزایا و معایب لیست شده
مدلهای ماشین کاهشی و جریان داده براساس نتایج تحقیقات است نه آزمایشات عملیاتی گسترده.
کانون نشر علوم | 92
با وجود معایب زیاد مدل ماشین ون-نیومن سنتی ،صنعت هنوز هم درحال ساخت کامپیوترهای جریان-کنترل
میباشد .انتخاب براساس ،هزینه مفید ،بازاریابی ،و رقابت ویندوزهای استفاده شده در صنعت میباشد .مکانیزمهای
جریان برنامه انتخابهای معماری را دیکته میکنند .هر دو مدل کاهشی و جریان داده ،برخالف پتانسیل باالی
موازاتشان ،هنوز در مرحله تحقیقاتی هستند .ماشینهای جریان-کنترل هنوز هم بر بازار احاطه دارند.
در این کتاب ما بیشتر کامپیوترهای موازی جریان-کنترل را مطالعه میکنیم .اما معماریهای جریان-داده و
چندنخی 1در فصل 9مطالعه خواهند شد .ماشینهای جریان داده یا ترکیب وننیومن و جریان داده از مزایای هر دو
استفاده میکنند.
جریان داده جریان کنترل مدل
کاهشی (راهاندازی-تقاضا)
(راهاندازی-داده) (راهاندازی-کنترل) ماشین
ارزیابی تنبل ،عبارات فقط وقتی اجرا ارزیابی سریع ،عبارات وقتی اجرا محاسبات سنتی ،توکن کنترل
تعریف
میشوند که نتیجه آنها توسط سایر میشوند که همه عملوندهای تعیین میکند که چه موقع یک
اصلی
محاسبات مورد نیاز شود. آنها آماده شوند. عبارت باید اجرا شود.
فقط دستورات مورد نیاز اجرا میشوند پتانسیل بسیار باال برای موازات کنترل کامل
درجه باالی موازات توان عملیاتی باال ساختارهای کنترل و داده پیچیده مزایا
دستکاری ساده ساختمان دادهها از اثرات جانبی آزاد به سادگی پیادهسازی میشوند
زمان هدر رفته برای انتظار
اشتراک اشیاء محلی را پشتیبانی
آرگومانهایی که به آنها نیاز کارایی کم معایب
نمیکند
نیست.
سربار کنترل باال برنامه نویسی مشکل
زمان مورد نیاز برای انتشار توکنهای
دستکاری ساختمان دادهها اجتناب از خطاهای زمان اجرا
مورد تقاضا
مشکل است مشکل
جدول :1-2کامپیوترهای جریان-کنترل ،جریان داده و کاهشی
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ب)).
توابع مسیریابی فوق مکعب: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 ،
پخش شخصی ،پیامهای شخصی را فقط به دریافت کنندههای انتخابی میفرستد .همهپخشی معموالً به عنوان یک
عمل سراسری در یک چندکامپیوتر رفتار میکند .پخش شخصی ممکن است با تطابق آدرسهای مقصد در شبکه
پیادهسازی شود.
کارایی شبکه :به طور خالصه ،کارایی یک شبکه ارتباطی توسط فاکتورهای زیر تعیین میشود:
( )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
10 6
9 7
8
(ب):حلقه
0 1 0 1
15 15
2 2
14 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گره ساخته شد .معماری ستاره در یک سیستم
با یک گره مدیر متمرکز استفاده میشود.
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 ،میباشد.
(الف) مش
(ب) مش ایلیاک
با اتصاالت داخلی ثابت و عمل همزمانی ،یک آرایه سیستولیک با ساختار ارتباطی الگوریتم تطابق مییابد .برای
کاربردهای خاص مثل پردازش سیگنال/تصویر ،آرایههای سیستولیک ممکن است نرخ کارایی/هزینه بهتری ارائه
دهند .به هر حال ساختار از لحاظ کاربردی محدود شده است و برنامه نویسی آن میتواند خیلی مشکل باشد .چون
این کتاب روی محاسبات همه منظوره تأکید دارد ،آرایههای سیستولیک بیشتر مطالعه نخواهند شد.
فوق مکعبها :این یک معماری -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با معماری فوق مکعب ساخته شدند .معماری اتصاالت چگال
دارد .معماریهای بسیار دیگری ،مثل درختهای باینری ،مشها و ....میتوانند در فوق مکعب جا داده شوند.
به خاطر مقیاس پذیری ضعیف و سختی بستهبندی 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آرایه را ذکر کرده است .هزینه چنین
شبکهای بیشتر با مقدار سیمهای آن تعیین میشود نه تعداد سوئیچهای مورد نیاز آن .با فرض ثابت بودن پهنای
سیم دوبخشی ،شبکههای با ابعاد کم با کانالهای پهن تأخیر کمتر ،تداخل کمتر ،و توان عملیاتی نقطه داغ بیشتری
از شبکههای با ابعاد بیشتر با کانالهای باریک دارند.
یک نقطه داغ یک زوج گره است که بخاطر عدم تناسب مقدار زیادی از ترافیک کلی شبکه را حمل میکند .نقطه
داغ میتواند کارایی کل شبکه را بخاطر تصادم پایین بیاورد .توان عملیاتی نقطه-داغ حداکثر نرخی است که پیامها
میتوانند از یک گره خاص 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آینده ،هرکدام مقداری خواص مطلوب دارند.
1
wormhole
کانون نشر علوم | 106
یکنواخت تقارن پهنای تعداد لینکها L قطر شبکه D درجه اندازه شبکه نوع شبکه
دوبخشی گره d (تعداد گره)
B
نیست ندارد 1 N-1 N-1 2 N آرایه خطی
مسیریابی 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نشان میدهیم .مسیر بصورت زیر بطور منحصر بفرد مشخص میشود:
در شکل 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
نکته :در شبکه فوق مکعب 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
bus
وسایل فعال یا اربابها (پردازندهها یا زیرسیستم ورودی/خروجی) درخواستهایی برای آدرس دهی حافظه تولید
میکنند .وسایل غیرفعال 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زیاد شود در درخواست گذرگاه تداخل بوجود خواهد
آمد و نرخ استفاده از گذرگاه محدود میشود .یکی از راههای باال بردن کارایی استفاده از چند گذرگاه میباشد .که
ساختار آن بصورت زیر هست:
b<n
فرض کنید نرخ یا احتمال درخواست حافظه در هر پردازنده rباشد ،در اینصورت احتمال حداقل یک درخواست به
یک ماژول برابر است با:
𝑛 𝑟
)𝑚 𝑞 = 1 − (1 −
تفاوت با حالت قبل این هست که نرخ بین mماژول تقسیم میشود .احتمال اینکه دقیقاً به iماژول یک درخواست
وجود داشته باشد عبارت است از:
𝑛
𝑖𝑓𝑖 = ( ) 𝑞 𝑖 (1 − 𝑞)𝑛−
𝑖
B.W=∑𝑏−1 𝑛
𝑖𝑓𝑏 𝑏=𝑖∑ 𝑖=1 𝑖𝑓𝑖 +
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ماژولهای سوئیچ .حاالت قانونی
کالسهای مختلف 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
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
PE 219
P16
PE 001
(الف) شبکه کراسبار حافظه-بین پردازنده ساخته شده در 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 .اثبات کرد که کالس شبکههای سوئیچینگ او در مقابل بلوکه شدن
که محدودیت کارایی سیستمهای سوئیچینگ است ،ایمن است .این اولین کالس شبکهها با پیچیدگی درجه دو بود
که کارایی بدون بلوکه شدن را ارائه میکرد.
ساخت یک شبکه کلوز :شبکه کلوز -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نشان داده شده است که زوجهای (ورودی ،خروجی) در باالی
سوئیچ برای ساخت گراف نشان داده شده در سمت چپ استفاده میشوند .با این گراف داده شده مرحله بعدی
اختصاص رنگها به یالها میباشد بطوریکه هیچ دو یال واقع در سوئیچ سطح اول مشابه ،رنگ مشابهی نگیرد .در
شکل رنگهای سطح میانی با R,G,Bنشان داده شدهاند با توجه به تئوری گراف برای برقراری این محدودیت
یک گراف با درجه nنمیتواند بیشتر از nرنگ بگیرد و بنابراین تعداد سوئیچهای سطح میانی حداکثر nمیباشد.
تعداد نقاط تقاطع) =(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
میباشد.
شبکه های بلوکه شدنی و بلوکه نشدنی :به یک شبکه چند سطحه بلوکه شدنی میگویند اگر اتصاالت
همزمان چند زوج ورودی-خروجی امکان تداخل در استفاده از سوئیچها یا لینکهای ارتباطی داشته باشد.
مثالهایی از شبکههای بلوکشدنی شامل اُمگا (الوری ،)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, .
.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
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
همانطور که در شکل (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×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
برای ایجاد مسیریابی در شبکه 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دست
مییابیم .همانطور که در شکل مشاهده میشود در اینجا شکلهای بسته بصورت خط میباشند.
خالصه :در جدول 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 فصل دوم :خواص برنامه و شبکه
تمرینات فصل دوم
(د)وابستگی جریان (ب)تأخیر ارتباطی (ج) شرایط برنشتاین (الف) دانهبندی محاسباتی
(ح)وابستگی کنترل (ز)وابستگی 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وابستگیهای داده را در بین دستورات برنامه داده شده ،تجزیه تحلیل کنید.
مسأله :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: ZX+Y
P4: AE×F
P5: YE-Z
P6: B(X-F)×A
(الف) با استفاده از دستورات Divide, multiply, subtract, addکد HLLبرنامه را به حداقل کد زبان
اسمبلی دوباره نویسی کنید و از حداقل ثباتهای کاری استفاده کنید .فرض کنید دستورات دارای شکل ثابت با سه
فیلد ثبات میباشند :دو عدد برای منبع یکی برای مقصد.
(ب) آنالیز جریان کد اسمبلی قسمت (الف) را انجام دهید و همه وابستگیهای داده را با استفاده از یک گراف
وابستگی بدست آورید.
(ج) فرض کنید پردازنده دو واحد جمع ،یک واحد ضرب و یک واحد تقسیم دارد .یک زمانبندی بهینه برای اجرای
کد اسمبلی در حداقل زمان را با فرض اینکه واحد جمع 1پالس ساعت ،واحد ضرب 3پالس ساعت و واحد تقسیم
18پالس ساعت برای اجرای کامل یک دستور نیاز دارند را بدست آورید .همه سربارهای ایجاد شده توسط برداشت،
دیکد و بازپس نویسی 1دستور را نادیده بگیرید .واحد خط لوله هم نداریم.
مسأله :9-2کد زبان اسمبلی زیر داده شده است .حداکثر درجه موازات بین 16دستور را بدست آورید .فرض
کنید هیچ تداخل منبعی نداریم و از هر واحد عملیاتی چندین عدد بطور همزمان داریم .برای سادگی خط لوله در
نظر نگیرید .همه دستورات یک پالس ساعت برای اجرا نیاز دارند .همه سربارهای دیگر را نادیده بگیرید.
1
Writeback
کانون نشر علوم | 128
(الف)برنامه داده شده را به دو نیمه متعادل تقسیم کنید .شما ممکن است چند دستور 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
(الف) ثابت کنید که شبکه امگا (شکل )27-2از لحاظ همبندی معادل شبکه بیسالین (شکل(28-2ب)) میباشد.
(ب) شبکه فلیپ (شکل )38-2با استفاده از شافل کامل معکوس (شکل (14-2ب)) برای اتصاالت بین سطحه
ساخته میشود .ثابت کنید که شبکه فلیپ از لحاظ همبندی معادل شبکه بیسالین است.
(ج) براساس نتایج بدست آمده در (الف) و (ب) تساوی همبندی بین شبکه فلیپ و امگا را ثابت کنید.
(الف) مزایای درخت چاق باینری نسبت به درختهای چاق روی یک شبکه اتصالی چندپرداززنده را توضیح دهید.
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معرفی شد ،عمومیت دهید.
(د) قسمت (ب) را برای یک شبکه امگای -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 فصل دوم :خواص برنامه و شبکه
ب :روند بسته بندی سوپر کامپیوتر sunwayکه در این تاریخ سریعترین سوپرکامپیوتر جهان با سرعت
93PFLopsمیباشد.
-5هر سوپرگره از 32کارت یعنی 256گره تشکیل شده است. 4 -4کارت در یک بورد قرار میگیرند .دو تا در باال و دو تا در پایین .
بنابراین هر بورد 2080=260*2*4هسته دارد.
این نسخه الکترونیک مخصوص شما می باشد .لذا نشر و گسترش آن
https://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -
خ فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.
| 135 اصول کارایی مقیاسپذیر
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 اصول کارایی مقیاسپذیر
1.0 32
0.4 4
0.2 2
)R(n
0.0 )Q(n 1
بازدهی افزایش سرعت زمان چندپردازنده زمان تک تعداد مدل کامپیوتر
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کاربردهای پردازش موازی :پردازش موازی انبوه یکی از ابتداییترین چالشهای کاربردهای
سوپرکامپیوتر است .در اینجا چالشهای بزرگ در محاسبات و ارتباطات کارایی-باال را معرفی میکنیم و سپس
نیازهای سرعت ،حافظه و ورودی/خروجی برای رسیدن به این چالشها را بررسی میکنیم .خواص الگوریتمهای
موازی نیز در این متن بحث میشوند.
تعریف موازات انبوه به تناسب زمان تغییر میکند .براساس استانداردهای امروزی ،هر ماشینی که صدها یا هزاران
یا میلیونها پردازنده داشته باشد یک سیستم پردازش موازی انبوه ( )MPP1میباشد .چون تکنولوژی کامپیوتر به
سرعت تغییر میکند ،نیاز برای درجه باالتر موازات بیشتر میشود.
کارایی اکثر کامپیوترهای تجاری توسط حداکثر نرخ TIPSیا Tflopsآنها نشانگذاری میشود .در واقعیت ،فقط
کسری از کارایی حداکثر در برنامههای محک واقعی یا اجراهای ارزیابی قابل دستیابی است.
چالشهای بزرگ :براساس چالشهای بزرگ در محاسبات علمی ،نیاز به تهیه یک کامپیوتر با قدرت محاسباتی
1Tera byte ،1Tera flopsاز حافظه اصلی و پهنای باند ورودی/خروجی 1Terabyte ،داریم.
بعضی از برنامههایی که نیازمند پردازش موازی انبوه هستند عبارتند از:
( )1صنعت ضبط مغناطیسی به منظور مطالعه محاورههای مغناطیسی و تغییرات آن برای کاهش نویز در
دیسکهای با ظرفیت باال.
( )2طراحی داروهای زیستی :برای طراحی داروهای سرطان یا ایدز یا بلوک و کنترل کردن عمل HIVاز
طراحی به کمک کامپیوتر استفاده میشود.
( )3حمل و نقل عمرانی سرعت باال :محاسبه جریان سیاالت در سوپرکامپیوترها
( )4کاتالیزورها :برای فعل و انفعاالت شیمیایی که توسط سیستم مدل میشوند.
( )5مدل سازی اقیانوس :شبیه سازی فعالیتهای در مقیاس بزرگ اقیانوسها.
( )6سایر نواحی مهم ،مثل مدل و طراحی ساختار پروتئین ،پردازش تصویر و غیره.
بهرهبرداری از موازت انبوه :موازات جایگذاری شده در سطح دستور یا سطح زیرروال نسبتاً محدود است .تعداد
خیلی کمی از کامپیوترها میتوانند بیشتر از دو دستور یک برنامه را در یک سیکل ماشین اجرا کنند.
1
Massively parallel processing
اما میزان موازات داده از موازات دستور بسیار باالتر است .موازات داده به معنی حالتی است که عمل خاصی (دستور
یا برنامه) روی آرایه بزرگی از دادهها (عملوندها) اجرا میشود .موازات داده در پردازندههای برداری خط لوله شده،
پردازندههای آرایه ،SIMDو SPMDیا MPMDپیاده میشود.
بطور کلی ،اگر بارکاری یا اندازه برنامه ،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الگوی پیشرفت بارکاری
محدوده
مدل بار ثابت
ارتباطی
اندازه ماشین ()n
مدل زمان-ثابت بدون توجه به چگونگی مقیاسپذیر شدن بارکاری با اندازه ماشین ،متقاضی زمان اجرای ثابتی
برای برنامه می باشد .رشد بارکاری خطی (منحنی ϒدر شکل (6-3الف)) مرتبط با این مدل است .مدل حافظه-
ثابت با محدوده حافظه محدود شده است که مرتبط با منحنی بار کاری بین ϒو θدر شکل (6-3الف) میباشد.
1
Communication Bound
از نقطه دید کاربردی ،نواحی سایه زده شده منع شدهاند .محدوده ارتباطی به سربار افزایش IPCو افزایش تقاضاهای
ورودی/خروجی محدود شده است .محدوده حافظه با حافظه اصلی و ظرفیت دیسک تعیین میشود.
در عمل ،یک طراح الگوریتم یا برنامه نویس کامپیوتر موازی ممکن است یک مدل کاربردی بین محدودیتهای
منبع باال را انتخاب کند ،همانطور که در ناحیه کاربردی بدون سایه در شکل (6-3ج) نشان داده شده است.
حدمیانههای تجزیه تحلیل مقیاسپذیری :هزینه کامپیوتر Cو سربار برنامه نویسی Pبه منظور افزایش
سرعت (کارایی) بطور برابر در تجزیه تحلیل مقیاسپذیری مهم هستند .محدودیت بودجه ممکن است محدودیت-
های نهایی روی محاسبات تحمیل کند .بهره برداری از موازات برای کارایی باالتر متقاضی معماریهای مقیاس
پذیر و الگوریتمهای مقیاس پذیر میباشد .مقیاس پذیری معماری میتواند توسط تأخیر ارتباطی طوالنی ،ظرفیت
محدود حافظه ،پهنای باند محدود ورودی/خروجی ،و سرعت محدود پردازنده ،محدود شود .چگونگی رسیدن به یک
طرح متوازن با این محدودیتها هدف طراحان MPPمیباشد .همچنین الگوریتمهای موازی و ساختمان دادههای
کارا باید مقیاس پذیر باشند.
خواص الگوریتمی :الگوریتمهای محاسباتی در تک پردازندهها بصورت ترتیبی اجرا میشوند .الگوریتمهای موازی
آنهایی هستند که بطور خاص برای کامپیوترهای موازی طراحی شدهاند .الگوریتمهای موازی ایدهآل آنهایی هستند
که برای مدل 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ثابت است .بنابراین میتوانیم تابع بازدهی ثابت را بصورت زیر تعریف
کنیم:
اگر بارکاری ) w(sبا سرعت ) fE(nدر معادله 23-3رشد کند ،آنگاه بازدهی برای یک ترکیب معماری-الگوریتم
داده شده ثابت میماند .برای توضیح توابع بازدهی ثابت برای تجزیه تحلیل مقیاسپذیری مثالی در زیر آوردهایم.
چهار الگوریتم ضرب ماتریس در زیر مقایسه میشوند .اندازه مسأله sبا درجه ماتریس نشان داده میشود .به عبارت
دیگر ،ضرب دو ماتریس s×sیعنی A,Bرا در نظر میگیریم .C=A×Bبارکاری کلی ) w=O(s3میباشد .تعداد
پردازندههای درگیر 1≤n≤s3است .بعضی الگوریتمها ممکن است کمتر از s3پردازنده استفاده کنند.
توابع بازدهی ثابتِ چهار الگوریتم بر اساس معادل سازی بارکاری با سربار ارتباطی در هر الگوریتم (معادله )23-3
در زیر بدست میآید .توضیحات کامل الگوریتمها در مقاالت مرتبط با نویسندگان جدول 2-3آمده است.
از آنجا که این الگوریتم برای معماری تروس نوشته شده است ،میتوان به سادگی تروس را روی معماری فوق
مکعب جایگذاری کرد .بنابراین میتوانیم مقایسه چهار الگوریتم را در معماری فوق مکعب انجام دهیم.
الگوریتم Berntsenبه استفاده از n≤s3/2پردازنده محدود شده است .سربار کلی )O(n4/3+nlogn+s2n1/3
میباشد .برای تطابق این با ) O(s3باید تساوی ) O(s3)=O(n4/3و ) O(s3)=O(nرا داشته باشیم .بنابراین تابع
بازدهی ثابت ) O(n2بدست میآید.
توابع بازدهی ثابت فوق ،مقیاسپذیری مجانبی چهار الگوریتم را نشان میدهند .در عمل ،هیچکدام از الگوریتمها
برای همه اندازه مسألهها و اندازه ماشینها بر دیگری ارجحیت زیادی ندارند .به عنوان مثال وقتیکه این الگوریتمها
روی یک چندکامپیوتر با تأخیر ارتباطی زیاد (مثل )Intel iPSECپیاده میشوند الگوریتم Berntsenاز بقیه
بهتر است.
سه مدل افزایش سرعت کارایی در زیر ارائه شده است .قانون امدال ( )1967براساس بارکاری ثابت یا اندازه ماشین
ثابت .قانون گوستافسون ( )1987برای مقیاس پذیر کردن مسائل اعمال شد که اندازه مسئله با افزایش اندازه ماشین
افزایش مییابد .مدل افزایش سرعت توسط سان و نای ( )1993برای مسائل مقیاس پذیر شده که با ظرفیت حافظه
محدود شده است میباشد.
در بسیاری از کاربردهای عملی که متقاضی پاسخ-قطعی هستند ،بارکاری محاسباتی اغلب با اندازه مسأله ثابت،
ثابت است .وقتیکه تعداد پردازندهها در یک کامپیوتر موازی افزایش مییابد ،بار ثابت روی پردازندههای بیشتر برای
اجرای موازی توزیع میشود .بنابراین ،هدف اصلی تولید نتایج در حد امکان سریع میباشد .به عبارت دیگر ،حداقل
زمان گردش هدف اولیه است .افزایش سرعت بدست آمده برای کاربردهای زمان-بحرانی افزایش سرعت با
بارکاری-ثابت نامیده میشود.
افزایش سرعت بارکاری-ثابت فرمول افزایش سرعت ایدهآل داده شده در معادله 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
1024x
1024
= 𝑆1024
∝ 1 + 1023
91x
48x
31x
24x
1x
α
0% 1% 2% 3% 4% 100%
(ج) افزایش سرعت با بار ثابت درصد ترتیبی برنامه
شکل :8-3مدل افزایش سرعت بار-ثابت و قانون امدال
قانون امدال در شکل 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از کد قرار می گیرد .این خصوصیت یک نگاه خیلی بدبینانه روی پردازش موازی در دو دهه اخیر
ایجاد کرده است.
در حقیقت ،دو مشکل عمده در صنعت کامپیوتر موازی مشاهده میشود .اوالً ،سازندگان از ساخت کامپیوترهای
موازی در مقیاس بزرگ سست میشوند .دوماً ،توجه تحقیقاتی بیشتری به سمت توسعه کامپایلرهای موازی ساز که
مقدار αرا کاهش میدهند و کارایی را ترقی میدهد منتقل میشود.
یکی از معایب قانون امدال این است که مسأله (بارکاری) نمیتواند برای تطابق با توان محاسباتی قابل دسترس
وقتیکه اندازه ماشین افزایش مییابد مقیاسپذیر شود .به عبارت دیگر ،بار ثابت مانع مقیاس پذیری در کارایی
میشود .هرچندکه گلوگاه کارایی یک مسأله حاد است ،مسأله میتواند با حذف محدودیت بار ثابت (یا اندازه مسأله
ثابت) آرام شود .گوستافسون ( )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
تعداد پردازندهها تعداد پردازندهها
(الف) بار کاری مقیاس پذیر شده (ب) زمان جرای ثابت
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
بارکاری برای اجرای ترتیبی روی یک تک پردازنده وابسته به اندازه مسأله یا اندازه سیستم است .بنابراین ،در هر
سه مدل افزایش سرعت ،میتوانیم بنویسیم * .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( :مجموعه همه حافظه یک فضای آدرس سراسری را شکل
میدهد (به عبارت دیگر ،فرض میکنیم فضای حافظه توزیع شده مشترک باشد) )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داریم:
تحت مدل محاسباتی عمومی نمایش داده شده در شکل (11-3الف) ،که همه حافظههای توزیع شده به عنوان
حافظه مشترک توسط همه گرههای پردازنده استفاده میشوند.
همانطور که در شکل (11-3ب) نشان داده شده است ،حافظههای گره بطور محلی بدون اشتراک استفاده میشوند.
در چنین مدل محاسباتی محلی ،G(n)=n ،و افزایش سرعت زیر را بدست میآوریم:
𝑛𝑊𝑛𝑊1 +
= ∗𝑛𝑆 )(3-37
𝑛𝑊𝑊1 +
تکرار داده عمداً اضافه شده است تا نیاز ارتباطی کاهش یابد فاکتورهای افزایش سرعت برای این کاربردها وابسته
به نسبت بین محاسبات سراسری و محلی است .این عقیده که ) G(nبطور خطی در کاربردهای سراسری افزایش
مییابد را تقویت میکند .هرچه مقدار ) G(nبیشتر باشد ،کارایی بهتر است.
کارایی یک سیستم کامپیوتر به عوامل زیادی وابسته است که همه بر مقیاس پذیری معماری کامپیوتر و برنامه
کاربردی تأثیر میگذارند .ساده ترین تعریف مقیاس پذیری این است که کارایی یک سیستم
کامپیوتر در مقایسه با تعداد پردازندههای استفاده شده برای یک کاربرد داده شده بطور خطی
افزایش یابد.
تجزیه تحلیل مقیاس پذیری یک کامپیوتر داده شده باید برای یک الگوریتم/برنامه کاربردی داده شده انجام شود.
تجزیه تحلیل میتواند تحت محدودیتهای مختلف روی رشد اندازه مسأله (بارکاری) و اندازه ماشین (اندازه
پردازندهها) انجام شود .فهم خوب از مقیاسپذیری به ارزیابی کارایی معماری کامپیوتر موازی برای کاربردهای
مقیاس-بزرگ کمک خواهد کرد.
همانطور که در شکل 12-3نشان داده شده است ،مطالعه مقیاس پذیری درجه تطابق بین معماری کامپیوتر و
الگوریتم کاربردی را تعیین میکند .برای زوجهای مختلف (معماری ،الگوریتم) ،تجزیه تحلیلها ممکن است نتایج
مختلفی داشته باشند .یک ماشین ممکن است برای یک الگوریتم خیلی مفید باشد و برای دیگری بد باشد و برعکس.
بنابراین ،یک معماری کامپیوتر خوب ،باید در پیادهسازی یک کالس بزرگ از الگوریتمهای کاربردی کارا باشد .در
حالت ایدهآل ،کارایی کامپیوتر باید بطور خطی با افزایش تعداد پردازندههای بکار برده شده در پیاده سازی الگوریتمها
مقیاس پذیر باشد.
واحدهای مقیاس پذیری در زیر واحدهای پایه (شکل (12-3الف)) مؤثر در مقیاس پذیری یک سیستم کامپیوتر
برای یک کاربرد داده شده مشخص شده است.
| 161 اصول کارایی مقیاسپذیر
اندازه ماشین ( -)nتعداد پردازندههای بکارگرفته شده در یک سیستم کامپیوتر موازی .اندازه ماشین •
بزرگ به معنی منابع بیشتر و توان محاسباتی بیشتر میباشد.
نرخ ساعت ( -)fنرخ ساعت تعیین کننده پالس ساعت ماشین پایه است .ما امیدواریم تا ماشینی •
بسازیم با قطعاتی (پردازنده ها ،حافظه ،گذرگاه یا شبکه ،وغیره) که توسط یک ساعتی راه اندازی شوند
که بتواند با تکنولوژی بهتر مقیاس پذیر شود.
اندازه مسأله ( -)sمقدار بارکاری محاسباتی یا تعداد دادههای استفاده شده برای حل یک مسأله داده •
شده .اندازه مسأله مستقیماً متناسب با زمان اجرای ترتیبی ) T(s,1برای یک سیستم تک پردازنده
میباشد زیرا هر مقدار داده ممکن است متقاضی یک یا چند عمل باشد.
زمان -CPUزمان واقعی پردازنده (بر حسب ثانیه) که در اجرای یک برنامه داده شده روی یک ماشین •
موازی با nمجموعه پردازنده صرف میشود .این زمان اجرای موازی است که با ) T(s, nنشان داده
میشود و تابعی از هر دوی sو nمیباشد.
تقاضای -)d( I/Oتقاضای ورودی/خروجی در انتقال برنامه ،داده ،و نتایج مربوط با یک اجرای •
کاربردی میباشد .عملیات ورودی/خروجی ممکن است با عملیات پردازنده در یک محیط چندبرنامه شده
همپوشانی کنند.
ظرفیت حافظه ( -)mمیزان حافظه اصلی (بر حسب بایت یا کلمه) استفاده شده در یک اجرای برنامه. •
نکته اینکه تقاضای حافظه توسط اندازه مسأله ،اندازه برنامه ،الگوریتمها ،و ساختمان داده استفاده شده
تحت تأثیر قرار میگیرد.
زمان CPU اندازه ماشین هزینه کامپیوتر
چندکامپیوتر ارسال-
پیام با حافظه توزیع
شده 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میباشد .بنابراین
مقیاس پذیری بصورت زیر تعریف میشود:
درنتیجه هرچه مقیاسپذیری بیشتر باشد ،کارایی که معماری داده شده میتواند با اجرای الگوریتم داده شده بدست
آورد بهتر خواهد بود .در حالت ایدهآل ،SI(s,n)=n ،که تعریف مقیاس پذیری در معادله 40.3مشابه تعریف داده
شده در معادله 39-3میشود.
معماری ماشین
واحدها
شبکه اُمگا فوق مکعب مش سه بعدی مش دوبعدی آرایه خطی
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دارد و همه پردازندهها قابلیتهای مساوی دارند.
مسأله -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برنامه فرترن زیر در یک سیستم تک پردازنده و نگارش موازی چندپردازنده حافظه مشترک اجرا
میشود.
مسأله -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 میلیون عمل ممیز شناور برنامه محک
این نسخه الکترونیک مخصوص شما می باشد .لذا نشر و گسترش آن
https://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -
خ فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.
| 161 فصل چهارم :پردازندهها و سلسله مراتب حافظه
بخش دوم
فصل 4
فصل 5
فصل 6
`
کانون نشر علوم | 162
این فصل تکنولوژی پردازندهها و سلسله مراتب حافظه را ارائه میدهد .ابتدا معماری مجموعه دستورالعمل شامل
RISCو CISCارائه میشود و سپس پردازندههای سوپراسکالر ،VLIW1 ،سوپرپایپ الین و برداری رایج بررسی
میشوند در ادامه راجع به پردازندههای چند هستهای مطالبی ارائه خواهند شد .در بخش سوم سلسله مراتب حافظه
و طرح ظرفیت را پوشش میدهیم و در بخش آخر حافظه مجازی ،مکانیزم ترجمه آدرس و متدهای جایگزینی
صفحه را معرفی میکنیم.
معماری های پردازنده مجموعه دستورالعمل و مفاهیم آدرس مجازی سلسله مراتب حافظه در سطح عملیاتی تأکید
میشود .این رفتار توسط برنامه نویس مدیریت میشود .خطلولههای دستورالعمل و ریاضی و پردازندههای
سوپراسکالر و سوپرپایپ الین در فصل 6مطالعه میشوند.
خانوادههای پردازنده مختلف براساس نرخ پالس ساعت همچنین تعداد پالسهای ساعت مورد نیاز هر دستور یعنی
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از حافظههای نهان مجزا و کنترل
سخت افزاری استفاده میکنند.
مسیر داده و دستورالعمل واحد کنترل سخت افزاری مسیر داده
واحد کنترل
در جدول 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دلیل ما منطقی است.
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
پردازنده ریسک بعضی دستورات جالبِ موجود در پردازنده سیسک را ندارد .افزایش طول برنامه ریسک به مفهوم
ترافیک دستور بیشتر و تقاضای حافظه بیشتر است .مشکل دیگر ریسک استفاده از فایل ثبات بزرگ است .هرچند
که مجموعه ثبات بزرگتر نتایج بالفصل بیشتری را نگه میدارد و ترافیک داده بین حافظه و پردازنده را کم میکند،
ولی سیستم دیکد ثبات خیلی پیچیدهتر خواهد بود .زمان دسترسی -ثبات بیشتر تقاضای بیشتری به کامپایلر برای
مدیریت عملیات پنجره ثبات را ایجاد میکند .نکته منفی دیگر ریسک روی کنترل سختافزاری آن قرار دارد که
انعطافپذیری کمتر و مساعد خطای بیشتر است.
نواقص ریسک مستقیماً وابسته به بعضی از مزایای ادعا شده آن است .آزمایشات کاربردی و برنامههای محک
بیشتری نیاز است تا طول بهینه مجموعه ثبات I-cache ،و D-cacheرا تعیین کند .بهبود بیشتر پردازنده ممکن
است شامل ALUصحیح 64بیتی ،پشتیبانی ریزپردازنده از منطق جستجو برای کنترل همبستگی حافظه نهان،
`
کانون نشر علوم | 170
همزمانی سریعتر بین پردازنده یا پشتیبانی سختافزار برای ارسال پیام ،و واحدهای عملیاتی خاص یا رابطهای
ورودی/خروجی و پشتیبانی گرافیکی شود.
خطلوله در پردازندههای سوپر اسکالر :ساختار پایه یک خطلوله سوپر اسکالر در شکل 4-4نشان داده شده
است .این طرح استفاده از سه خطلوله دستورالعمل بطور موازی برای یک پردازنده سه-انتشاره را نشان میدهد.
پردازندههای سوپراسکالر ابتداً به عنوان بهبودی به پردازندههای برداری توسعه داده شدند.
1
Loop unrolling 1 2 3 4 5 6 7 8 9
زمان براساس سیکل پایه
یک پردازنده سوپراسکالر درجه mمیتواند mدستور را در هر سیکل منتشر کند .در این حالت پردازنده اسکالر پایه
پیادهسازی شده در ریسک یا سیسک درجه m=1دارد .به منظور اینکه یک پردازنده سوپراسکالر با درجه mبطور
کامل بهرهبرداری شود باید mدستور قابل اجرا بطور موازی باشند .این شرایط نمیتواند در همه پالسهای ساعت
درست باشد .در این حالت بعضی از خطلولهها ممکن است در حالت انتظار 1قرار گیرند.
در یک پردازنده سوپراسکالر ،تأخیر دستور ساده ،مثل پردازنده اسکالر پایه باید فقط به یک سیکل نیاز داشته باشد.
زیرا انتظار موازت سطح دستور بیشتری در برنامهها از پردازنده سوپر اسکالر داریم ،پردازنده سوپراسکالر به کامپایلر
بهینهتر برای بهرهبرداری از موازات نیاز دارد.
در تئوری ،یک پردازنده سوپراسکالر میتواند کارایی مشابهی با سختافزار برداری بدست آورد .یک ماشین
سوپراسکالر ،که میتواند یک دستور ممیز ثابت ،ممیز شناور load ،و branchرا منتشر کند و همه در یک سیکل
اجرا شوند به درجه موازات مشابه با یک ماشین برداری که loadبرداری را اجرا میکند که با جمع برداری زنجیره
شده است و هر loadو addدر یک سیکل اجرا میشوند میرسد .یک پردازنده ریسک با معماری سوپراسکالر
در شکل 5-4نشان داده شده است.
حافظه دستورالعمل
فایل ثبات بافر مرتبسازی مجدد
واحد اعشاری
دیکدر فایل ثبات بافر مرتب سازی مجدد
تقسیم اعشاری ضرب اعشاری تبدیل اعشاری جمع اعشاری Float load Float store
`
کانون نشر علوم | 172
چند خطلوله دستورالعمل در این معماری استفاده میشوند .حافظه نهان دستورالعمل چند دستور را برای برداشت
تهیه می کند .به هرحال ،تعداد دقیق دستورات منتشر شده در واحدهای عملیات مختلف ممکن است در هر پالس
متغیر باشد .تعداد به خاطر وابستگی داده و تداخل منابع در بین دستوراتی که همزمان دیکد میشوند محدود شده
است .چندین واحد عملیاتی در واحد صحیح و ممیز شناور ساخته شده است.
چند گذرگاه داده بین واحدهای عملیاتی وجود دارد .در تئوری ،همه واحدهای عملیاتی میتوانند باهم استفاده شوند
اگر تداخل و وابستگی بین آنها در یک سیکل داده شده وجود نداشته باشد.
-2-2-4معماری : VLIWمعماری VLIWبه خاطر دو مفهوم عمومی شد :میکروکد افقی و پردازش سوپر
اسکالر .یک ماشین VLIWمعمولی کلمات دستور با طول چندصد بیت دارد .همانطور که در شکل (6-4الف) نشان
داده شده است چندین واحد عملیاتی بطور همروند در یک پردازنده VLIWاستفاده میشوند .همه واحدهای عملیاتی
از یک فایل ثبات بزرگ مشترک استفاده میکنند .عملیاتی که بطور همزمان توسط واحدهای عملیاتی اجرا شوند
در یک دستور VLIWقرار میگیرند و طول دستور 256یا 1024بیت است.
مفهوم VLIWاز میکرو کد افقی بدست آمد .فیلدهای مختلف کلمه دستور طوالنیopcode ،هایی که باید به
دادههای عملیاتی مختلف اِعمال شوند را حمل میکنند .برنامههای نوشته شده در کلمات دستور کوتاه رایج (32
بیتی) باید با هم مقایسه شوند تا دستورات VLIWرا شکل دهند .این فشرده سازی کد باید توسط کامپایلری که
میتواند خروجیهای پرش را بطور هوشمندانه پیشبینی کند ،انجام شود.
سوماً ،یک ماشین سوپراسکالر با خانواده زیادی از ماشینهای غیرموازی سازگاری کد و شیء دارد .درحالیکه یک
ماشین VLIWکه مقدار متفاوتی از موازات را بهرهبرداری میکند نیازمند مجموعه دستور متفاوتی است.
موازات دستور و انتقال داده در یک معماری VLIWبطور کامل در زمان کامپایل تعیین میشود .بنابراین زمانبندی
و همزمانی منبع در زمان اجرا کامالً حذف شده است .یک ماشین VLIWرا میتوان یک سوپراسکالر فوقالعاده
دید که همه دستورات مستقل و غیروابسته بطور پیشرفتهای بطور همزمان باهم فشرده شدهاندCPI .ی یک پردازنده
VLIWمیتواند کمتر از یک پردازنده سوپراسکالر باشد .به عنوان مثال ،کامپیوتر ردیابی چندجریانه اجازه میدهد
تا 7عملیات بطور همروند با 256بیت در یک دستور VLIWاجرا شوند.
| 173 فصل چهارم :پردازندهها و سلسله مراتب حافظه
حافظه
فایلهای ثبات
اصلی
Execute
3 operand
بنابراین ،موازات دستورالعمل قرار داده شده در کد فشرده ممکن است تأخیر متفاوتی برای اجرا توسط واحدهای
عملیاتی مختلف نیاز داشته باشد حتی اگر دستورات در زمان مشابهی منتشر شوند .بنابراین ،پیادهسازیهای مختلفِ
معماری VLIWمشابه ممکن است از لحاظ باینری سازگار نباشند.
با رمزگذاری موازات بطور صریح در دستورات بزرگ ،یک پردازنده VLIWمیتواند سخت افزار و نرم افزار مورد
نیاز برای تشخیص موازات را حذف کند .عمدهترین فایده معماری VLIWسادگی در ساختار سخت افزار و مجموعه
دستورالعمل میباشد .پردازنده VLIWمیتواند در کاربردهای عملی که رفتار برنامه (پیش بینی پرش) قابل پیش-
بینیتر است انجام وظیفه کند.
ممکن است در کاربردهای همه منظوره معماری بخوبی قادر به انجام وظیفه نباشد .به خاطر کمبود سازگاری با
نرمافزارها و سختافزارهای رایج ،معماری VLIWبطور رسمی به رشته کامپیوتر وارد نشده است.
`
کانون نشر علوم | 174
یک پردازنده برداری ،را میتوان یک معماری ثبات به ثبات یا معماری حافظه به حافظه فرض کرد .اولی دستورات
کوچکتر و فایل ثبات برداری استفاده میکند .دومی دستورات پایه-حافظه شامل آدرسهای حافظه را انجام میدهد
که از لحاظ طول بزرگترند.
دستورات برداری :دستورات برداری بر اساس ثبات در اکثر پردازندههای برداری ثبات به ثبات مثل
سوپرکامپیوترهای Crayظاهر میشوند .یک ثبات برداری با طول iرا با Viیک ثبات اسکالر را با Siو یک آرایه
حافظه به طول nرا با ) M(1:nنشان میدهیم .عملیات برداری پایه-ثبات در زیر لیست شدهاند ،که یک عملگر
برداری با دایره کوچک oنشان داده میشود.
در همه حاالت این عملیات برداری توسط واحدهای خطلوله خاص مثل خطلولههای عملیاتی و خطلولههای
دسترسی-حافظه انجام میشوند .بردارهای بزرگ که از طول ثبات 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ب) نشان داده شده است .هر دستور برداری رشتهای از
عملیات را (یکی برای هر عنصر در بردار) اجرا میکند.
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سمبلیک
با پیشرفت تکنولوژی میکروالکترونیک مفاهیم پیادهسازی سیستمهای الکترونیکی دچار تغییرات عمدهای شد .تا
قبل از این تغییرات ،سیستمهای پیچیده با اتصال مدارات مجتمع عمومی یا مدارات مجتمع با کاربرد خاص 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
• الیه فیزیکی
• الیه پیوند دادهها
• الیه شبکه و انتقال
• الیه نرم افزار
ستتیمهای ستتراستتری در الیه فیزیکی قرار دارند .با پیشتترفت بیشتتتر تکنولوژی و جهت حرکت آن به مقیاسهای
کوچکتر و توان کمتر ،احتمال خطا افزایش مییابد.
الیه پیوند داده به عنوان یک دربرگیرنده الیه فیزیکی که آن را مستتعد خطا میداند عمل میکند .این الیه وظیفه
مهیا ستازی دادههای بدون خطا و یا با میزان خطای کم ،ولی قابل قبول را دارا میباشتد .یکی ازروش های مبارزه
با خطاها تبدیل دادهها به بسته میباشد.
در الیه شتتبکه مشتتخص نمودن مستتیر و انتقال دادهها از این مستتیرها انجام میپذیرد .روشها و الگوریتمهای
سوئیچینگ و مسیریابی در این الیه تعریف میگردند.
`
کانون نشر علوم | 180
نحوه اتصال پردازندهها به یکدیگر در یک سیستم چندپردازندهای ،همبندی آن سیستم را مشخص میکند و در واقع
شبکه میان ارتباطی موجود بین پردازندههای هر سیستم چندپردازندهای را میتوان بوسیله یک گراف مشخص کرد
که هر گره این گراف نمایانگر یک عنصر پردازشی و هر یال آن نمایانگر کانال فیزیکی بین دو گره می باشد.
پیمایش از یک گره به گره همسایه را یک گام میگویند و حداقل تعداد گامهای بین هر دو گره فاصله بین آن دو
گره را مشخص میکند .شبکههای میان ارتباطی مورد استفاده در یک سیستم چندپردازندهای بر تراشه بر اساس
نوع کاربرد و معماری سیستم دارای همبندیهای مختلف و متعددی میباشند .شکل ،11-4تعدادی از ساختارهای
پیشنهاد شده توسط گروههای تحقیقاتی مختلف برای همبندی سوئیچها در یک سیستم چندپردازندهای را نشان
میدهد.
یک همبندی رایج دیگر در سیستمهای چندپردازندهای ،همبندی فوق مکعب است .سیستمهای چندپردازندهای بر
مبنای همبندی فوق مکعب برای عملیات FFTمناسب هستند .اولین سیستمی که بر مبنای این همبندی ساخته
شده است ،سیستم بر تراشه Cosmicاست که از 64پروسسور 8086تشکیل شده و توسط Caltechپردهبرداری
شده است.
نوع دیگر همبندی شبکه Baselineمیباشد .این شبکه امکان اتصال هر گره ورودی به هر گره خروجی را نمیدهد
و تنها میتواند 10%از کل ترافیک را مورد حمایت قرار دهد (شبکه بلوکه شدنی) .روش رفع بنبست در این شبکه
میانارتباطی در فصل 2ارائه شد.
| 181 فصل چهارم :پردازندهها و سلسله مراتب حافظه
یک الگوریتم مسیریابی ،مسیری را که بسته یا پیغام باید طی کند تا به مقصد برسد مشخص می کند .در این بخش،
آن دسته از الگوریتم های مسیریابی را بررسی خواهیم کرد که در شبکه اتصاالت داخلی سیستمهای چند پردازندهای
مورد استفاده قرار میگیرند.
هدف اصلی از این بخش بدست آوردن آگاهی و دانش کلی در مورد مفاهیم مطرح شده در بحث مسیریابی و آشنایی
با اصول پایهای مربوط به آن در سیستمهای چندپردازندهای میباشد.
طبقهبندی الگوریتمهای مسیریابی :شکل 12-4یک طبقه بندی کلی از الگوریتمهای مسیریابی را نمایش
میدهد .الگوریتمهای مسیریابی را میتوان بر اساس معیارهای مختلفی دسته بندی کرد .این معیارها در ستون
سمت چپ نشان داده شدهاند .هر سطر نیز نشاندهنده روشهای پیشنهاد شده برای هر معیار میباشد.
درابتدا میتوان الگوریتمهای مسیریابی را با توجه به تعداد مقصدهایشان دسته بندی کرد .بستهها ممکن است فقط
دارای یک مقصد باشند یا اینکه دارای چندین مقصد باشند .همچنین الگوریتمهای مسیریابی را میتوان با توجه به
مکان تصمیمگیریهای مربوط به مسیریابیهایشان دستهبندی کرد .اساساً مسیر میتواند یا بوسیله یک کنترلر
مرکزی ،پیش از تزریق بسته به شبکه و در گره مبدأ ،ایجاد گردد و یا اینکه در زمان حرکت بسته ،بصورت توزیع
1
Connectivity
2
Adaptivity
`
کانون نشر علوم | 182
شده ایجاد گردد .در این راستا ابداع طرحهای ترکیبی نیز امکانپذیر است .این طرحهای ترکیبی ،طرحهای چند
فازه نیز نامیده میشوند .درالگوریتمهای مسیریابی چند فازه گره مبدأ برخی از گرههای مقصد را مشخص میکند.
مسیر بین این گره های مقصد ،به صورت توزیع شده مشخص خواهد بود .بسته ممکن است به تمامی گرههای
مقصد مشخص شده تحویل داده شود یا اینکه فقط به آخرین گره مقصد تحویل داده شود .در این حالت گرههای
میانی برای اجتناب و جلوگیری از ایجاد ازدحام و خطاها در شبکه مورد استفاده قرار میگیرند.
الگوریتمهای مسیریابی
تصمیمهای مسیریابی مسیریابی متمرکز مسیریابی منبع مسیریابی توزیع شده مسیریابی چند فازه
الگوریتمهای مسیریابی میتوانند به صورتهای گوناگونی پیادهسازی شوند .از مهمترین وجالبترین راههای ارائه
شده تاکنون میتوان به استفاده از جداول جستجو و اجرای یک الگوریتم مسیریابی به صورت نرم افزاری یا سخت
افزاری براساس یک ماشین حالت متناهی اشاره کرد .در هر دو حالت الگوریتم مسیریابی میتواند قطعی یا وفقی
باشد .الگوریتمهای مسیریابی قطعی ،همیشه یک مسیر یکسان بین هر زوج گره مبدا و مقصد ایجاد میکنند.
الگوریتم های مسیریابی وفقی از اطالعات مربوط به ترافیک شبکه و یا حالت کانال جهت اجتناب از مناطق پر
ازدحام و خطادار شبکه استفاده میکنند.
الگوریتمهای مسیریابی وفقی را می توان بر اساس نحوه پیشروی آنها به دو دسته پیشرونده و بازگشت به عقب
تقسیم نمود .الگوریتمهای پیشرونده ،سرآیند بسته را بطرف جلو هدایت میکنند و برای هر عملیات مسیریابی یک
کانال جدید را رزرو میکنند .الگوریتمهای عقبگرد اجازه میدهند تا سرآیند به عقب حرکت کرده و کانالهای
| 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هدایت میشوند تا زمانی
که به مختصات 𝑇𝑌 برسند و سپس درجهت 𝑌 هدایت می شوند .اگر بعضی از هاپهای شبکه در حال استفاده
توسط یک بسته دیگری باشند ،فلیت به صورت مسدود شده در همان سوئیچ میماند ،تا زمانی که مسیر آزاد گردد.
در یک پیکربندی کامپیوتر رایج ،هزینه حافظه ،دیسکها ،چاپگرها و سایر وسایل جانبی از پردازنده مرکزی تجاوز
میکند .ما در زیر سلسله مراتب حافظه و تکنولوژی جانبی را معرفی میکنیم.
وسایل ذخیره سازی مثل ثباتها ،حافظههای نهان ،حافظه اصلی ،وسایل دیسک و نوارهای مغناطیسی اغلب
بصورت سلسله مراتبی همانطور که در شکل 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
افزایش ظرفیت و زمان دسترسی
ظرفیت
شکل :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و یک سرور
نشان داده شده است.
`
کانون نشر علوم | 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
انتقال اطالعات بین پردازنده و حافظه نهان براساس کلمات ( 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
خصوصیت همبستگی :خصوصیت همبستگی نیازمند این است که کپیهای یک عنصر اطالعاتی در سطوح
حافظه متوالی باید ثابت باشند .اگر یک کلمه در حافظه نهان اصالح شود ،کپیهای آن کلمه باید فوراً یا سرانجام
در همه سطوح باالتر بروز شوند سلسله مراتب باید اینطور حفظ شود .اطالعاتی که متناوباً استفاده میشوند به منظور
حداقل کردن زمان دسترسی مؤثر سلسله مراتب حافظه اغلب در سطوح پایینتر پیدا میشوند .در کل ،دو راهبرد
برای نگهداری همبستگی در یک سلسله مراتب حافظه وجود دارد.
روش اول ،نوشتن سرتاسری 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تعیین میشود و بر اندازه مجموعه کاری تأثیر میگذارد و در تعیین اندازه مطلوب حافظه نهان نیز مؤثر است.
کارایی یک سلسله مراتب حافظه توسط زمان دسترسی مؤثر 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همیشه یک اصابت است.
براساس خصوصیت محلیت ،فرکانسهای دسترسی بسرعت از سطوح پایین به باال کاهش می-
یابد .f1>>f2>>f3>>…>>fn .یعنی سطوح داخلیتر حافظه بیشتر از سطوح خارجیتر دسترسی میشوند.
زمان دسترسی مؤثر :در عمل ،دوست داریم که تا حد ممکن به نرخ اصابت باالیی در M1برسیم .هرگاه یک
فقدان اتفاق بیافتد باید هزینه بدهیم تا به سطح باالتر حافظه دسترسی داشته باشیم .فقدانها در حافظه نهان فقدان
بالک و در حافظه اصلی خطای صفحه 1نامیده میشود زیرا واحدهای انتقال بین این سطوح بلوک و صفحه میباشند.
هزینه ی زمانی برای یک فقدان صفحه خیلی بیشتر از فقدان بلوک است براساس این حقیقت که .t1<t2<t3
)1990( Stoneبیان کرده است که یک فقدان حافظه نهان 2تا 3برابر از لحاظ زمانی گرانتر از اصابت حافظه
نهان است اما یک خطای صفحه 1000تا 10000برابر گرانتر از اصابت صفحه است.
با استفاده از فرکانسهای دسترسی fiبرای i=1,2,…,nمیتوانیم زمان دسترسی مؤثر به یک سلسله مراتب
حافظه را بصورت زیر معادله ( )3-4تعریف کنیم:
زمان دسترسی مؤثر وابسته به رفتار برنامه و انتخابهای طراحی حافظه میباشد .فقط بعد از مطالعه ردیابیهای
برنامههای زیادی میتوان نرخ اصابت و 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
در سیاست بازپسنویسی هرگاه که داده در حافظه اصلی همان داده در حافظه نهان باشد نیازی به بروزرسانی نیست
و زمانی بروز رسانی در حافظه اصلی اتفاق میافتد که حافظه نهان تغییر کرده باشد .اگر درصد تغییر یک بلوک wb
باشد در اینصورت زمان میانگین دسترسی برابر است با:
Ta= tc+(1-h)tb+ wb(1-h)tb
بهینهسازی سلسله مراتب :هزینه کلی یک سلسله مراتب حافظه بصورت زیر تخمین زده میشود:
به این معنی که هزینه روی nسطح توزیع شده است .چون C1>C2>C3>…>Cnمجبوریم
S1<S2<S3<….<Snانتخاب کنیم .طراحی بهینه سلسله مراتب حافظه منتج به این میشود که Teffبسته به t1
از M1و هزینه کل بسته به Cnاز Mnباشد .در حقیقت رسیدن به یک حد بهینه بین nسطح مشکل است.
پردازه بهینه سازی می تواند با یک مسأله برنامه نویسی خطی فرموله شود .با داشتن یک حد C0روی هزینه کل،
مسأله ،حداقل کردن ) 𝑇𝑒𝑓𝑓 = ∑𝑛𝑖=1 𝑓𝑖 . 𝑡𝑖 (5 − 4میباشد .که خود محدود به موارد زیر است:
هزینه واحد Ciو ظرفیت Siدر هر سطح Miوابسته به سرعت tiمورد نیاز است .بنابراین بهینه سازی فوق شامل
حدمیانهای بین Si, Ci, tiو fiیا hiدر همه سطوح i=1,2,…,nمیباشد .مثال زیر یک طرح حدمیانه را نشان
میدهد.
| 195 فصل چهارم :پردازندهها و سلسله مراتب حافظه
مثال :1-4طراحی یک سلسله مراتب سه سطح با خواص زیر برای حافظه را در نظر بگیرید:
سطح حافظه زمان دسترسی ظرفیت هزینهKB/
هدف طراحی رسیدن به زمان دسترسی مؤثر 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دوبرابر کنیم .این چالش بر نرخ اصابت حافظه نهان تأثیر نمیگذارد اما ممکن است نرخ اصابت حافظه
اصلی را اگر الگوریتم جایگزینی صفحه مناسبی استفاده شود زیاد کند .همچنین ،زمان دسترسی مؤثر حافظه ارتقاء
پیدا خواهد کرد.
فقط برنامههای فعال یا قسمتی از آنها در یک لحظه در حافظه فیزیکی مقیم میشوند .سایر برنامهها یا برنامههای
غیرفعال در دیسک ذخیره میشوند .همه برنامهها میتوانند بطور پویا تحت مدیریت سیستم عامل به/از حافظه
فیزیکی بار شوند .برای برنامهنویسان ،حافظه مجازی آنها را با فضای تقریباً نامحدود روبرو میکند تا با آن کار کنند.
`
کانون نشر علوم | 196
بدون حافظه مجازی توسعه سیستمهای کامپیوتر اشتراک زمانی یا چندبرنامگی که امروزه استفاده میشوند غیر
ممکن است.
فضاهای آدرس :هر کلمه در حافظه با یک آدرس فیزیکی منحصر بفرد مشخص میشود .همه کلمات حافظه
در حافظه اصلی یک فضای آدرس فیزیکی را شکل میدهند .آدرسهای مجازی توسط پردازنده هنگام کامپایل
تولید میشوند.
آدرسهای مجازی باید به آدرسهای فیزیکی در زمان اجرا ترجمه شوند .سیستمی از جداول ترجمه و توابع نگاشت
در این پردازه استفاده میشوند .ترجمه آدرس و سیاستهای مدیریت حافظه توسط مدل حافظه مجازی استفاده
شده و سازمان آرایههای دیسک و حافظه اصلی تحت تأثیر واقع میشوند.
استفاده از قابلیت های حافظه مجازی باعث اشتراک حافظه اصلی توسط تعداد زیادی کاربر بصورت پویا میشود.
همچنین قابلیت حمل نرمافزار را ساده میکند و به کاربران اجازه اجرای برنامههایی که حافظه بیشتری از حافظه
فیزیکی نیاز دارند میدهد.
فقط برنامههای در حال اجرا به حافظه اصلی آورده میشوند .این اجازه تخصیص مجدد کد و داده را میدهد و
پیادهسازی محافظت دار کرنل OSرا ممکن میکند و اجازه بهینه سازی سطح-باالی تخصیص و مدیریت حافظه
را میدهد.
نگاشت آدرس :فرض کنید Vمجموعه آدرسهای مجازی تولید شده توسط یک برنامه (یا یک پردازه نرمافزاری)
که روی یک پردازنده اجرا میشود باشد و Mمجموعه آدرسهای فیزیکی تخصیص داده شده برای اجرای این
برنامه باشد .یک سیستم حافظه مجازی نیازمند یک مکانیزم خودکار برای انجام نگاشت زیر است:
)ft: V→M∪ {∅} (4-9
این نگاشت یک تابع زمانی است که لحظه به لحظه متغیر است زیرا حافظه فیزیکی بطور پویا تخصیص داده یا
بازپس گرفته میشود .هر آدرس مجازی 𝑉 ∈ 𝑣 را در نظر بگیرید .نگاشت ftبصورت زیر تعریف میشود:
به عبارت دیگر ،نگاشت ) ft(vآدرس مجازی vرا بطور منحصر بفرد به آدرس فیزیکی mنگاشت میدهد اگر
یک اصابت حافظه در Mوجود داشته باشد .اگر یک فقدان حافظه داشته باشیم مقدار بازگشتی ft(v)=øخواهد
بود که این به این مفهوم است که عنصر مراجعه شده (دستورالعمل یا داده) هنوز به حافظه اصلی آورده نشده است.
| 197 فصل چهارم :پردازندهها و سلسله مراتب حافظه
مؤثر بودن پروسه ترجمه آدرس بر کارایی حافظه مجازی تأثیر میگذارد .پشتیبانی پردازنده برای وقفههای دقیق و
بروزرسانی مترجم نیاز میشود .پیادهسازی حافظه مجازی در یک چندپردازنده مشکلتر است ،زیرا که مسائل اضافی
مثل همبستگی ،محافظت و سازگاری ،بیشتر وجود دارد .دو مدل حافظه مجازی در زیر مطالعه میشود.
حافظه مجازی خصوصی :اولین مدل از فضای آدرس مجازی اختصاصیِ هر پردازنده استفاده میکند همانطور
که در VAX/IIو اکثر سیستمهای UNIXدیده میشود( .شکل (19-4الف)) .هر فضای مجازی خصوصی به
صفحات تقسیم می شود .صفحات مجازی از فضاهای مجازی مختلف به حافظه فیزیکی مشابه مشترک توسط همه
پردازندهها نگاشت میشود.
مزایای استفاده از حافظه مشترک خصوصی شامل استفاده از یک فضای آدرس پردازنده کوچک ( 32بیت) ،محافظت
هر صفحه یا بر پایه هر پردازش ،و استفاده از نگاشت حافظه خصوصی که قفل نیاز ندارند ،میباشد.
نقطه ضعف روی مسأله مترادف واقع میشود که آدرسهای مجازی متفاوت در فضاهای آدرس مشابه/متفاوت به
صفحه فیزیکی مشابهی اشاره میکنند .مشکل دیگر این است که آدرسهای مجازی مشابه در فضاهای مجازی
متفاوت ممکن است به صفحات متفاوت در حافظه اصلی اشاره کنند.
صفحات فضای
مشترک
صفحات
حافظه فیزیکی
فضای
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
Page fault
miss
TLB PTs
update
hit Page frame
or
.
.
. 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سنتی با اندازه فضای مجازی تعیین میشود .به خاطر اینکه فضای آدرس فیزیکی کوچک
است نیازی به استفاده از سطوح چندگانه برای جدول صفحه معکوس نیست.
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 فصل چهارم :پردازندهها و سلسله مراتب حافظه
. .
. .
+
. .
. .
سیاستهای مدیریت حافظه شامل تخصیص و عدم تخصیص صفحات به پروسههای فعال و جایگزینی صفحات
حافظه میباشد .مشکالت تخصیص و بازپس گیری در بخش 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تا اولین مراجعه تکراری صفحه در آینده
است:
بطور مشابه فاصله عقبگرد ) bt(xتعداد قطعات زمانی از زمان tاست که آخرین مراجعه به صفحه xدر گذشته
اتفاق افتاده است:
1
Page frame number
2
forward
3
Slots
| 205 فصل چهارم :پردازندهها و سلسله مراتب حافظه
فرض کنید ) 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
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
;{ b00 Line3
;If line0 is accessed b11 b2 b1 b0 Line0
;Else b00 Line1 Set
}else //line 2 or line3 is accessed Line2
Line3
;{ b00
;If line2 is accessed b21
;Else b20
}
برای اندازه مجموعه بزرگتر تعداد مالتیپلکسرها را افزایش میدهیم .در واقع ساختار این مدل مبتنی بر درخت
دودویی 1میباشد.
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بدست خواهد آمد.
`
کانون نشر علوم | 210
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 فصل چهارم :پردازندهها و سلسله مراتب حافظه
مسأله -6-4مجموعه دستورالعمل intel i486و معماری پردازنده گزارش شده توسط J.H cawford in
IEEE micro, feb1990را مطالعه کنید و به سؤاالت زیر پاسخ دهید.
`
کانون نشر علوم | 212
(ج) فرض کنید انتشار موازی به اجرای خط لوله اضافه شده است .بهبود بیشتر ،توان عملیاتی ،در مقایسه با انتشار
موازی در یک خط لوله سوپراسکالر با درجه برابر چه خواهد بود؟
مسأله -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://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -
خ فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.
کانون نشر علوم | 216
گذرگاه سیستمِ یک سیستم کامپیوتر براساس رقابت کار میکند .چندین دستگاه فعال ،مثل پردازندهها ممکن است
برای استفاده از گذرگاه همزمان اعالم نیاز کنند .به هر حال ،فقط یکی از آنها میتواند در یک لحظه به سیستم
دسترسی پیدا کند .پهنای باند مؤثر قابل دسترس برای هر پردازنده بطور معکوس وابسته به تعداد پردازندههایی
است که برای گذرگاه رقابت میکنند.
به همین دلیل ،اکثر چندپردازنده های تجاری براساس گذرگاه ،اندازه کوچکی دارند .سادگی و هزینه پایینِ سیستم
گذرگاه آنرا برای ساخت چندپردازندههای کوچک از 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 بورد حافظه کنترل کننده گذرگاه
گذرگاه utility
شکل :1-5گذرگاههای صفحه پشتی .رابطهای سیستم و اتصاالت اسالت برای بوردهای عملیاتی گوناگون در یک سیستم
چندپردازنده
1
Data Transfer Bus
2
Master
3
Slave
`
کانون نشر علوم | 218
خطوط وقفه برای راهاندازی وقفهها استفاده میشوند که اغلب اولویت بندی شدهاند .ممکن است خطوط اختصاصی
برای همزمانی فعالیتهای موازی بین ماژولهای پردازنده استفاده شوند .خطوط کاربردی ،شامل سیگنالهایی که
زمانبندی دورهای را تهیه میکنند و روشن و خاموش شدن سیستم را مدیریت میکنند میباشد.
صفحه پشتی از خطوط سیگنال و اتصالدهنده ساخته شده است .یک بورد کنترلی گذرگاه خاص برای تعیین منطق
کنترل صفحه پشتی مثل راهانداز پالس ساعت سیستم ،داوری ،تایمر گذرگاه و راهانداز منبع تغذیه استفاده میشود.
ماژولهای عملیاتی :یک ماژول عملیاتی مجموعهای از مدارات الکترونیکی است که روی یک بورد عملیاتی
(شکل )1-5قرار گرفته است و برای رسیدن به توابع کنترل گذرگاه کار میکند .ماژولهای عملیاتی خاص در زیر
معرفی میشوند:
یک داور یک ماژول عملیاتی است که درخواستهای گذرگاه را از ماژول درخواست کننده میپذیرد و کنترل DTB
را به یک درخواست کننده در یک لحظه واگذار میکند.
یک تایمر گذرگاه مدت زمانی که هر انتقال داده روی DTBطول میکشد ،را اندازه میگیرد و سیکل DTBرا در
صورتی که انتقال خیلی طوالنی شود خاتمه میدهد.
یک ماژول وقفه یک درخواست وقفه را تولید میکند و اطالعات وضعیت ورودی/خروجی را وقتیکه یک ماژول
راهانداز وقفه آنرا درخواست میدهد تهیه میکند.
یک مانیتور مکان ،یک تابع عملیاتی است که انتقالهای داده روی DTBرا مانیتور میکند .یک مانیتور توان
وضعیت منبع تغذیه را مشاهده میکند و وقتیکه منبع تغذیه ناپایدار میشود سیگنال میدهد.
یک راه انداز پالس ساعت سیستم ،ماژولی است که سیگنال زمانی ساعت را در گذرگاه utilityتهیه میکند .در
مجموع ،منطق رابط بورد برای تطابق امپدانس خط سیگنال ،زمان انتشار و مقادیر خروجی بین صفحه پشتی و
بوردهای قرار داده شده استفاده میشود.
محدودیتهای فیزیکی :به خاطر محدودیتهای الکتریکی ،مکانیکی و بستهبندی فقط تعداد محدودی بورد
میتوانند روی یک صفحه پشتی قرار گیرند .گذرگاههای چندگانه میتوانند روی یک کالبد صفحه پشتی قرار گیرند.
به عنوان مثال کالبد VMEمیتواند یک تا 3عدد گذرگاه صفحه پشتی را در خود جای دهد .دو عدد گذرگاه
میتوانند به عنوان گذرگاه مشترک بین همه پردازندهها و بوردهای حافظه استفاده شوند و گذرگاه سوم میتواند به
عنوان بورد محلی که یک پردازنده میزبان را به حافظه اضافی و بوردهای ورودی/خروجی وصل میکند استفاده
شود .مقیاسپذیری سیستم گذرگاه مشکل است که بیشتر به خاطر محدودیتهای بسته بندی 1میباشد.
بوردهای مدار چاپی که به یک گذرگاه متصل میشوند دو نوع میباشند :فعال و غیرفعال .2بوردهای فعال مثل
پردازندهها میتوانند به عنوان ارباب گذرگاه یا برده در زمانهای مختلف عمل کنند .بوردهای غیرفعال مثل بوردهای
حافظه فقط میتوانند به عنوان برده کار کنند.
1
Packaging
2
Active and Passive
| 219 فصل پنجم :گذرگاه ،حافظه نهان ،و حافظه مشترک
ارباب میتواند یک سیکل گذرگاه را مقدار دهی کند و بردهها به درخواستهای ارباب پاسخ میدهند .فقط یک
ارباب در یک لحظه میتواند گذرگاه را کنترل کند .به هر حال ،یک یا چند برده میتوانند در آن واحد به درخواست
ارباب پاسخ دهند.
آدرسدهی گذرگاه :یک گذرگاه صفحه پشتی با یک پالس ساعت دیجیتال با زمان سیکل ثابت که به آن سیکل
گذرگاه میگوییم راهاندازی می شود .سیکل گذرگاه توسط خواص بسته بندی ،مکانیکی ،الکتریکی صفحه پشتی
تعیین میشود .برای افزایش سرعت عملیات ،سیکلهای روی خطوط موازی در گذرگاههای مختلف ممکن است از
لحاظ زمانی همپوش شوند .فاکتورهایی که بر تأخیر گذرگاه تأثیر میگذارند شامل راهاندازهای خط منبع ،دریافت
کنندههای مقصد ،ظرفیت اسالت ،طول خط ،و تأثیرات بار کردن گذرگاه (تعداد بوردهای الحاقی) میباشد.
همه سیکلهای گذرگاه برای انتقال دادهها استفاده نمیشوند .به منظور بهبود کارایی ،گذرگاه باید برای حداقل
کردن زمان مورد نیاز راهاندازی درخواست ،داوری ،آدرسدهی ،و وقفهها طراحی شود بطوریکه اکثر سیکلهای
گذرگاه برای عملیات انتقال داده مفید استفاده شوند.
هر بورد با یک شماره اسالت مشخص میشود .وقتیکه شماره اسالت با محتویات خطوط باالی آدرس تطابق
داشته باشد ،بورد به عنوان برده انتخاب میشود .این آدرسدهی اسالت اجازه تخصیص آدرس بورد منطقی تحت
کنترل نرمافزار را میدهد که انعطافپذیری کاربردی را زیاد میکند.
همهپخشی و فراخوانی پخشی :1اکثر تراکنشهای گذرگاه شامل فقط یک برده و یک ارباب میباشد .به هر
حال ،یک فراخوانی پخشی یک عمل خواندن است که چند برده دادههایشان را روی خطوط گذرگاه قرار میدهند.
عملیات andیا orخاص روی دادههای گذرگاه از بردههای انتخاب شده انجام میشوند.
عملیات فراخوانی پخشی برای تشخیص منابع وقفه چندگانه استفاده میشود .یک چند پخشی یک عمل نوشتن
است که شامل چند برده میشود .این عملیات در پیادهسازی همبستگی حافظه نهان روی گذرگاه ضروری است.
ارباب گذرگاه برده
شکل :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
(ب) زمانبندی گذرگاه آسنکرون بااستفاده از دست تکاندهی چهار لبه (درهم قفلی) با سیگنالهای با طول متغیر برای وسایل متفاوت
شکل :3-5قراردادهای گذرگاه سنکرون در مقایسه با آسنکرون
| 221 فصل پنجم :گذرگاه ،حافظه نهان ،و حافظه مشترک
مزیت استفاده از گذرگاههای آسنکرون باعث آزادی عمل در استفاده از سیگنالهای ساعت با طول متغیر برای
دستگاههای با سرعت متفاوت میشود و محدودیت زمان-پاسخ در منبع و مقصد را اجباری نمیکند و اجازه اتصال
دستگاههای کُند و سریع به گذرگاه مشابهی را میدهد و کمتر مساعد نویز است .در کل ،گذرگاه آسنکرون انعطاف
پذیری کاربردی بهتری دارد ولی پیچیدگی و هزینه بیشتری دارد.
پردازه انتخاب ارباب بعدی گذرگاه را داوری میگویند .دوره کنترل یک ارباب روی گذرگاه را زمان اشغال گذرگاه
میگویند .پردازی داوری برای محدود کردن زمان اشغال گذرگاه به یک ارباب در یک زمان طراحی شده است.
رقابت درخواستها باید براساس عدالت یا اولویت داوری شود .داوری رقابت و تراکنشهای گذرگاه ممکن است
بطور همزمان روی یک گذرگاه موازی با خطوط مجزا برای هر دو هدف اتفاق بیافتد.
داوری مرکزی :همانطور که در شکل (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 grant
Bus busy
`
کانون نشر علوم | 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
انتقالهای داده و راهاندازی وقفههای اولویت دار دو نوع از عملیات هستند که بطور رایج روی یک گذرگاه انجام
می شوند .یک تراکنش گذرگاه شامل درخواستی است که با یک پاسخ دنبال میشود .یک تراکنش متصل برای
حمل درخواست ارباب و پاسخ برده در یک تراکنش گذرگاه استفاده میشود .یک تراکنش منفصل ،درخواست و
پاسخ را در تراکنشهای مجزای گذرگاه قرار میدهد .سه مُد انتقال داده در زیر توصیف میشوند.
تراکنشهای منفصل به دستگاه های با تأخیر داده یا زمان دسترسی طوالنی اجازه استفاده از منابع گذرگاه را به
روشی مفید میدهد .یک تراکنش منفصل کامل ممکن است نیازمند یک یا دو تراکنش گذرگاه متصل باشد.
تراکنشهای منفصل در طول رشتههای چندگذرگاهه انجام می شوند تا به همبستگی حافظه نهان در یک سیستم
چندپردازنده بزرگ برسند.
مکانیزمهای وقفه :یک وقفه درخواستی از ورودی/خروجی یا سایر وسایل به پردازنده برای سرویس دهی یا
توجه میباشد .یک گذرگاه وقفه اولویت دار برای انتقال سیگنالهای وقفه استفاده میشود .وقفه دهنده باید اطالعات
وضعیت و شاخص را فراهم کند .یک ماژول عملیاتی میتواند برای راهاندازی وقفه استفاده شود.
وقفههای اولویت دار در سطوح زیادی راهاندازی میشوند ،به عنوان مثال ،گذرگاه VMEاز هفت خط درخواست-
وقفه استفاده میکند .تا هفت راهانداز وقفه برای راهاندازی وقفههای چندگانه میتواند استفاده شوند.
1
Packet
`
کانون نشر علوم | 224
همچنین وقفهها میتوانند با ارسال پیام راهاندازی شوند که از خطوط گذرگاه داده روی یک سیستم اشتراک زمانی
استفاده میکنند .صرفه جویی در خطوط وقفه نیازمند چندین سیکل وقفه برای راهاندازی وقفهها براساس پیام
میباشد .به استفاده از خطوط گذرگاه داده اشتراک-زمانی برای پیادهسازی وقفهها ،وقفه مجازی میگویند.
تعداد زیادی استاندارد گذرگاه صفحه پشتی توسط کارخانههای کامپیوتر گوناگون با مشارکت کمیته استاندارد 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خط کنترل انتقال داده 3خط دست تکان دهی آدرس •
3خط دست تکان دهی داده •
•
خط توازن داور • 8خط داوری گذرگاه
3خط همزمانی داوری •
4خط داوری • 2خط شرایط داوری •
`
کانون نشر علوم | 226
سیگنالهای همزمانی برای متمرکز کردن تغییرات آدرس ،دستور ،وضعیت قابلیتها ،و داده در طول یک تراکنش
گذرگاه استفاده می شوند .خطوط دست تکان دهی آدرس و خطوط دست تکان دهی داده توسط اربابها و بردهها
استفاده میشوند .خط اشغال گذرگاه برای متمرکز کردن انتقال گذرگاه استفاده میشود.
خطوط داوری گذرگاه یک عدد را حمل میکنند که اولویت رقابت کنندهها در طول پردازه داوری گذرگاه را تعیین
میکند .خطوط همزمانی و شرایط برای متمرکز کردن شرایط خاص و دست تکان دهی استفاده میشوند.
خطوط داوری مرکزی توسط یک داور مرکزی در حالت کنترل گذرگاه متمرکز استفاده میشوند .خطوط متفرقه
برای تعیین آدرسها ژئوگرافیک (آدرسهای اسالت) و مقداردهی اولیه گذرگاه در طول ریست شدن سیستم یا بعد
از اضافه کردن زنده یک کارت مورد نیاز هستند .تعداد کل خطوط گذرگاه برای Futurebus+با پهنای ،64 ،32
128و 256بیتی بترتیب در محدوده 343 ،199 ،127 ،91قرار دارند .خطوط اضافی برای تهیه اتصاالت منبع
تغذیه ،پالس ساعت ،و کاربردی ممکن است مورد نیاز شوند.
استقالل از تکنولوژی/معماری :استاندارد Futurebus+به استقالل از تکنولوژی میرسد زیرا برای نوع
خاصی پردازنده طراحی نشده است .استقالل از معماری راهحلی همه منظوره منعطف برای حافظه نهان ثابت
میباشد.
در این بخش آدرس فیزیکی حافظه نهان ،آدرس منطقی حافظه نهان ،پیادهسازی حافظه نهان با استفاده از نگاشت
کامالً انجمنی ،انجمنی مجموعهای و سکتور مستقیم بررسی میشوند .در انتها کارایی حافظه نهان براساس چندین
نتیجه ردیابی تجزیه تحلیل میشود .قراردادهای همبستگی چندحافظه نهان در فصل 7مطالعه خواهند شد.
همانطور که در شکل 7-5نشان داده شده است ،اکثر سیستمهای چندپردازنده از حافظههای نهان خصوصی برای
پردازندههای مختلف استفاده میکنند .حافظههای نهان میتوانند با استفاده از آدرس فیزیکی یا آدرس مجازی
آدرس دهی شوند .این منجر به طراحی دو نوع مختلف حافظه نهان میشود که در زیر ارائه میشوند.
حافظههای نهان با آدرس فیزیکی :وقتی به یک حافظه نهان با آدرسهای حافظه فیزیکی دسترسی میشود
به آن حافظه نهان با آدرس فیزیکی میگویند .مدلهای حافظه نهان با آدرس فیزیکی در شکل 8-5نشان داده
شدهاند .در شکل (8-5الف) ،مدل براساس تجربه استفاده از حافظه نهان متحدالشکل است مثل سیستمهای Intel
.i486, VAX 8600در این حالت حافظه نهان با آدرس فیزیکی اندیس گذاری و تگ گذاری میشود .جستجوی
حافظه نهان بعد از ترجمه آدرس در TLBیا MMUباید اتفاق بیافتد .هیچ نام عاریتی مجاز نیست بطوریکه آدرس
بطور منحصر بدون ابهام ترجمه میشود.
| 227 فصل پنجم :گذرگاه ،حافظه نهان ،و حافظه مشترک
اگر داده/دستور آدرس دهی شده در حافظه نهان پیدا شود ،یک اصابت 1حافظه نهان اتفاق میافتد .در غیراینصورت
یک فقدان حافظه نهان اتفاق میافتد .بعد از فقدان ،دادههایی به حافظه نهان از حافظه اصلی بار میشوند .چون
یک بلوک کامل حافظه نهان در هر لحظه بار میشود ،دادههای ناخواسته نیز ممکن است بار شوند .محلیت مراجعات
باعث میشود که اکثر دادههای بار شده در سیکلهای بعدی مفید واقع شوند.
در یک حافظه نهان نوشتن-سراسری ( ،)WTدادهها فوراً به حافظه اصلی نوشته میشوند و یا در یک حافظه نهان
بازپس نویسی ( )WBتا جایگزینی بلوک تأخیر داده میشود .یک حافظه نهان WTبه سیکلهای شبکه یا گذرگاه
بیشتری برای دسترسی به حافظه اصلی نیاز دارد در حالیکه یک حافظه نهان WBبه پردازنده اجازه ادامه کار
میدهد بدون اینکه منتظر چرخه حافظه شود.
Pپردازندهها P P
کانالهای I/O
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مدلهای آدرس فیزیکی برای حافظههای نهان مجزا و یکنواخت
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و داده کاربر یک مشکل حاد است .همه این مشکالت سربار سیستم اضافی ایجاد میکند.
انتقال اطالعات از حافظه اصلی به حافظه نهان براساس بلوکهای حافظه نهان یا خطوط حافظه نهان انجام میشود.
چهار شماتیک جایگزینی در زیر ارائه می شوند که هر شماتیک جایگزینی مزایا و معایب خودش را دارد .کارایی
نهایی وابسته به الگوریتم دسترسی-حافظه نهان ،سازمان حافظه نهان ،و سیاست مدیریتی استفاده شده میباشد.
به بلوکهای داخل حافظه نهان فریمهای بلوک میگوییم .به خاطر اینکه بین آنها و بلوکهای واقع در حافظه
𝐵 و 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 . .
×
.
فریمهای بلوکها
اصابت در
بلوک
حافظه نهان
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
فریمهای بلوک
حافظههای نهان انجمنی-مجموعه ای رایجترین طراحی حافظه نهان هستند که در کامپیوترهای تجاری ساخته
شدهاند .حافظههای نهان با نگاشت سکتوری یک روش طراحی به حافظههای نهان انجمنی-مجموعهای میباشد.
این دو نوع طرح حافظه نهان در زیر توصیف شدهاند.
| 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
حافظه نهان نگاشت سکتوری :شماتیک جایگزینی بلوک در شماتیکهای فوق عمومی شده است .ایده،
بخش بندی هر دوی حافظه نهان و حافظه اصلی به سکتورهای با طول ثابت است .آنگاه یک جستجوی کامالً
انجمنی اِعمال میشود که هر سکتوری میتواند در هر فریم سکتور قابل دسترس قرار گیرد.
درخواستهای حافظه برای بلوکها انجام میشود نه برای سکتورها .این میتواند با مقایسه تگ سکتور در آدرس
حافظه با تگ سکتور با جستجوی کامالً انجمنی فیلتر شود .اگر یک فریم سکتور تطابق یافته پیدا شود (اصابت
حافظه نهان) ،فیلد بلوک برای پیدا کردن بلوک مطلوب در فریم سکتور استفاده میشود.
اگر یک فقدان حافظه نهان اتفاق بیافتد ،فقط بلوک مفقود از حافظه اصلی برداشت میشود و به داخل یک فریم
بلوک متجانس در یک سکتور قابل دسترس آورده میشود .بلوک iام در یک سکتور باید جایگزین فریم بلوک iام
در فریم سکتور مقصد شود .یک بیت اعتبار به هر فریم بلوک الحاق میشود تا تعیین کند چه موقع بلوک معتبر یا
غیر معتبر است.
وقتیکه محتویات یک فریم بلوک جایگزین میشود ،بقیه فریمهای بلوک در سکتور مشابه به نامعتبر عالمت زده
میشوند .فقط فریم بلوکی که اخیراً جایگزین شده است برای مراجعه معتبر عالمت زده میشود .به هر حال ،چندین
بیت اعتبار برای ضبط وضعیت سایر بلوکها میتواند استفاده شود .نگاشت سکتوری که توصیف شد ،میتواند برای
سایر طرحها اصالح شود ،وابسته به سیاست جایگزینی بلوکی که پیاده سازی میشود.
در مقایسه با حافظههای نهان کامالً انجمنی یا انجمنی-مجموعهای حافظه نهان نگاشت سکتور مزایایی ارائه
میکند شامل انعطاف پذیری در پیاده سازی الگوریتمهای جایگزینی بلوک مختلف و اقتصادی بودن انجام جستجوی
کامالً انجمنی به خاطر محدود بودن تعداد تگهای سکتور.
B8
3
2 B9
B10 4
B11
B12 5
B13
3 B14 6
B15
B28
فریمهای سکتور B29 7
B30
B31
`
کانون نشر علوم | 236
کارایی یک طرح حافظه نهان مرتبط به دو مفهوم است :تعداد سیکل و نرخ اصابت .تعداد سیکل اشاره به تعداد
سیکلهای ماشین پایه مورد نیاز برای دسترسی حافظه نهان ،بروز رسانی و کنترل همبستگی حافظه نهان دارد .نرخ
اصابت یعنی با چه بازدهی حافظه نهان میتواند زمان دسترسی-حافظه کلی را کاهش دهد .بین این دو مفهوم
مصالحهای وجود دارد .فاکتورهای کلیدی که بر سرعت حافظه نهان و نرخ اصابت تأثیر میگذارند در زیر بحث
میشوند.
شبیه سازی ردیابی برنامه و مدل سازی آنالیزی دو روش مکمل هم برای مطالعه کارایی حافظه نهان میباشند .هر
دو باید با هم اِعمال شوند تا یک ارزیابی کارایی موثق بدست آید .مطالعات شبیه سازی نقاط داغ ،رفتار برنامه و
پاسخهای حافظه نهان به آنها را نشان میدهد.
تعداد سیکل :سرعت حافظه نهان با تکنولوژی 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
`
کانون نشر علوم | 238
سلسله مراتبهای حافظه نهان چندسطحی انتخابهایی برای توسعه اثرات حافظه نهان پیشنهاد میکنند .اغلب در
سطح اول سیاست WTو در سطح دوم سیاست WBاستفاده میشود .مثل سلسله مراتب حافظه یک طرح سلسله
مراتب حافظه نهان بهینه باید با رفتار برنامه خاص در دامنه کاربردهای مقصد تطابق داشته باشد.
توزیع مراجعات حافظه نهان برای دستور بارکردن ،و نوشتن داده بر طراحی سلسله مراتب اثر میگذارد .براساس
ردیابیهای برنامههای قبلی ٪63 ،برداشت دستور ٪25 ،بارکردن و ٪12نوشتن گزارش شده است .این بر تصمیم
جدا کردن حافظه نهان دستورالعمل از حافظه نهان داده اثر میگذارد.
در حقیقت ،طراحی سلسله مراتب بهینه باید براساس زمان دسترسی و تکنولوژی حافظه استفاده شده باشد .دسترسی
خط لوله به حافظه نهان برای بهبود کارایی حافظه نهان خیلی مطلوب است.
-5-2-5انواع فقدان ها در حافظه نهان و روش های بهینه سازی حافظه نهان
بطور کلی میتوان انواع فقدانها در حافظه نهان را به سه گروه زیر طبقهبندی کرد:
.1اجباری :1اولین دسترسی به یک بالک نمیتواند در حافظه نهان باشد بنابراین بلوک باید به حافظه
نهان آورده شود .این نوع فقدان حتی اگر حافظه نهان دارای اندازه بینهایت باشد اتفاق میافتد.
.2ظرفیت :2وقتی حافظه نهان جا نداشته باشد این نوع فقدان اتفاق میافتد .این نوع فقدان نیز مثل نوع
اجباری اتفاق خواهد افتاد زیرا بلوکها از حافظه حذف شده و دوباره بازیابی میشوند.
.3تصادم :3اگر استراتژی حافظه نهان انجمنی کامل نباشد فقدان تصادم اتفاق میافتد .باالخص هنگامی
که چندین بلوک به یک مجموعه نگاشت شوند.
تعداد فقدانها به ازای هر دستور بصورت زیر بیان میشود:
1
Compulsory miss
2
Capacity miss
3
Conflict miss
4
Multithreading
| 239 فصل پنجم :گذرگاه ،حافظه نهان ،و حافظه مشترک
همانطور که گفتیم یکی از انواع فقدان حافظه نهان ،فقدان تصادم میباشد یکی از روشهای کاهش این نوع فقدان
استفاده از حافظه نهان قربانی میباشد .که یک حافظه نهان انجمنی کامل و کوچک میباشد .در این مدل بلوکی
که میخواهد از حافظه نهان خارج شود را دور نمیاندازند و آن را در داخل حافظه نهان قربانی قرار میدهند .در
صورتی که این بلوک مجدداً مورد دسترسی قرار گیرد از حافظه نهان قربانی مورد دسترسی قرار گیرد .وقتی فقدانی
در حافظه نهان اصلی رخ دهد و در حافظه نهان قربانی موجود باشد ،آنرا از حافظه نهان قربانی برداشته و به
حافظه نهان اصلی منتقل میشود .جایگزینی در حافظه نهان قربانی طبق الگوریتم LRUانجام میشود.
این روش در ساختارهای حافظههای نهان نگاشت مستقیم و انجمنی با درجه کم استفاده نمیشود .برای I-cache
حتی اگر یک بلوک هم گرفته شود بهبود خوبی ایجاد خواهد شد .البته بیشتر مناسب حافظههای نهان کوچک
میباشد.
Main cache
Address
Victim cache
:Trace cacheدر پردازندههای موجود ساختار به این صورت است که دستورات پس از برداشت داخل یک صف
(بافر) قرار میگیرند .هرچه این صف پرتر باشد ،خطلوله بهتر پر میماند و کارایی بهتر میشود .حال اگر محلیت در
حافظه نهان خوب نباشد ،مثال در هر بلوک از یک کلمه آن استفاده شود ،کارایی خوب نخواهد بود .یک روش غلبه
بر این مساله استفاده از trace cacheمیباشد.
ساختار به این صورت می باشد که مجموعه دستورات بر اساس ردیابی آنها در حافظه نهان traceقرار میگیرند.
این موجب میشود %100از بلوکها استفاده کنیم .در واقع در این مدل خطوط حافظه نهان براساس دستورات پر
می شوند .این حافظه نهان برای بهبود سرعت سیستم نیست بلکه برای بهبود استفاده از حافظه نهان میباشد.
1
Victim cache, Trace cache
`
کانون نشر علوم | 240
اندازه بلوک بزرگتر بطوریکه نرخ فقدان کاهش یابد :سادهترین راه کاهش نرخ فقدان و استفاده از محلیت .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روش این امکان را دارند که به جای کاهش متوسط زمان دسترسی منجر به افزایش متوسط زمان
دسترسی حافظه شوند .فرمول فوق برای زمان دسترسی مؤثر به ما سه پارامتر برای سنجش بهینهسازی حافظه
نهان داد :زمان اصابت ،نرخ فقدان و هزینه فقدان .با اهداف جدید ،پهنای باند و مصرف توان را نیز به لیست اضافه
میکنیم.
برای بهینه سازی حافظه نهان ده روش ارائه میکنیم .این ده روش بهینهسازی پیشرفته حافظه نهان در پنج طبقه
ردهبندی میشوند:
کاهش زمان اصابت :حافظههای نهان سطح اول و کوچک ،و پیشبینی راه :1این دو روش عموماً توان .1
مصرفی را نیز کاهش میدهند .پیشبینی راه یعنی پیشبینی بلوک بعدی که باید برای دسترسی بعدی
در حافظه نهان قرار گیرد.
افزایش پهنای باند حافظه نهان :حافظههای نهان خطلوله شده ،حافظههای نهان چند بانکه ،و حافظه- .2
های نهان بلوکه نشدنی .این تکنیکها تأثیرهای متفاوتی روی توان مصرفی دارند.
کاهش هزینه فقدان :ابتدا کلمه بحرانی دسترسی شود و از بافرهای نوشتن استفاده شود .این روشهای .3
بهینه سازی تأثیر کمی روی توان دارند.
کاهش نرخ فقدان :بهینه سازی کامپایلری .هر بهبود در زمان کامپایل مصرف توان را بهبود میبخشد. .4
کاهش هزینه فقدان یا نرخ فقدان با موازات :پیشبرداشت سختافزاری و پیشبرداشت کامپایلر .این .5
روشهای بهینه سازی توان مصرفی را افزایش میدهند زیرا ممکن است دادههایی پیشبرداشت شوند
که استفاده نشوند.
حافظه های نهان نگاشت مستقیم زمان اصابت و همچنین توان مصرفی کمتری دارند زیرا مدارات تشخیص داده
در حافظه کوچکتر هستند .دقت پیشبینی I-cacheباالتر از D-cacheاست.
سط
اولین روش بهینه سازی :استفاده از حافظهاهی نهان ساده و کوچک رد ح-اول هب منظور کاهش زمان اصابت و توان مصرفی
1
Way-prediction
`
کانون نشر علوم | 242
فشار همزمان پالس ساعت سریعتر و محدودیتهای توان ،باعث محدود شدن اندازه حافظههای نهان سطح اول
میشوند .بطور مشابه ،استفاده از انجمنپذیری کمتر میتواند زمان اصابت و توان مصرفی را کاهش دهد هرچندکه
حدبهینهای بین این دو پیچیدهتر از اندازه است.
مسیر زمانی بحرانی در یک اصابت حافظه نهان ،شامل پروسه سه مرحلهای آدرس دادن تگ حافظه با استفاده از
قسمت اندیس آدرس ،مقایسه مقدار تگ خوانده شده با آدرس ،و تنظیم مالتیپلکسر برای انتخاب عنصر داده درست
اگر حافظه نهان از نوع انجمنی مجموعهای باشد ،میباشد .حافظههای نهان نگاشت-مستقیم میتوانند چک تگ با
انتقال داده را بصورت همپوش استفاده کنند که این بطور مؤثری زمان اصابت را کاهش میدهد .بنابراین ،سطوح
پایینتر انجمنپذیری باعث کاهش توان مصرفی میشود به خاطر اینکه خطوط حافظه نهان کمتری باید دسترسی
شوند.
هرچندکه مقدار کل حافظه نهان روی-تراشه در نسل جدید ریزپردازندهها بطور چشمگیری افزایش یافته است ،به
خاطر تأثیر نرخ پالس ساعت نشأت گرفته از اندازه حافظه نهان ،L1اندازه حافظه نهان L1یا به کُندی افزایش
یافته است یا اصالً زیاد نشده است .در پردازندههای اخیر ،طراحان انجمنپذیری بیشتر را نسبت به اندازه بیشتر
انتخاب کردهاند .توجه بیشتر روی انجمنپذیری به خاطر امکان حذف نام مستعار آدرس میباشد.
یک روش پیشرفتهی تشخیص تأثیر زمان اصابت و مصرف توان استفاده از ابزارهای CADمیباشد .مثالً CACTI
برنامهای برای تخمین زمان دسترسی و مصرف انرژی حافظههای نهان میباشد .شکل 15-5تأثیر تخمینی روی
زمان اصابت با تغییر اندازه حافظه نهان و انجمنپذیری را نشان میدهد.
زمان دسترسی در میکروثانیه
مثال :7-5بافرض حافظه نهان با اندازه 32KBی انجمنپذیری -2راهه و -4راهه و زمان اصابت 1برای حافظه
نهان -2راهه و 1.4برابر برای حافظه نهان -4راهه و نرخ فقدان 0.038برای حافظه نهان -2راهه و 0.037
| 243 فصل پنجم :گذرگاه ،حافظه نهان ،و حافظه مشترک
برای حافظه نهان -4راهه و هزینه فقدان 15و 10برای این دو حافظه نهان به ترتیب ،زمان دسترسی مؤثر برای
این دو حافظه نهان چقدر است؟
مصرف توان نیز در انتخاب اندازه حافظه نهان و انجمنپذیری مورد توجه است .این تأثیر در شکل 16-5نشان داده
شده است .برای حافظههای نهان 128KBو 256KBی وقتی که از نگاشت مستقیم به انجمنپذیری -2راهه
حرکت میکنیم مصرف توان بطور ناچیز تغییر میکند ولی در سایر انجمنپذیریها تقریباً دو برابر است.
انرژی هر خواندن برحسب نانو ژول
در طرحهای اخیر ،سه فاکتور دیگر وجود دارد که منجر به استفاده از انجمنپذیری بیشتر در حافظه نهان سطح اول
میشود .اوالً ،پردازندههای زیادی برای دسترسی به حافظه نهان از دو پالس ساعت استفاده میکنند و بنابراین زمان
اصابت طوالنیتر زیاد بحرانی نیست .ثانیاً ،برای نگه داشتن 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میباشد .یک عیب عمده برای انتخاب راه این
است که خطلوله کردن دسترسی حافظه نهان را مشکل میکند.
بهینهسازی سوم :دسترسی حافظه نهان خطلوله شده ربای افزایش پهنای باند حافظه نهان
این بهینهسازی خطلوله کردن دسترسی حافظه نهان میباشد بطوریکه تأخیر مؤثرِ اصابت یک حافظه نهان سطح-
اول بتواند چند پالس ساعت باشد ،که باعث زمان پالس ساعت سریع ،ایجاد پهنای باند باال اما اصابت کُند میشود.
به عنوان مثال ،خط لوله برای دسترسی حافظه نهان دستورالعمل برای پردازنده پنتیوم اینتل در اواسط 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 فصل پنجم :گذرگاه ،حافظه نهان ،و حافظه مشترک
شکل :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فرض کنید زمان دسترسی حافظه اصلی 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همسایه باشند ،آنگاه دو کد زیر چگونگی بهینهسازی دسترسیها را نشان میدهد.
`
کانون نشر علوم | 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
شکل :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 + کامپایلر برای
کاهش فقدانها
اکثرا پیشبرداشت دستورات را
پیشبرداشت
فراهم میکنند و پردازندههای
2دستور3 ،داده - + + سختافزاری
پیشرفته سختافزاری انجام می-
دستورات و دادهها
دهند.
نیازمند حافظههای نهان بلوک پیشبرداشت
نشدنی است؛ امکان سربار دستور 3 + + کنترل-شده
؛ در اکثر پردازندهها کامپایلری
جدول :2-5خالصه 10بهینهسازی پیشرفته حافظه نهان و اثرات آنها روی فاکتورهای کارایی
`
کانون نشر علوم | 260
حافظه باشند .ظرفیت کلی حافظه 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
گذرگاه داده
(ب) برگی کردن سطح باال 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بیت)
(الف) برگی کردن سطح پایین 8راهه (آدرس قطعی در هر کلمه حافظه نشان داده شده است).
W7 سیکل اصلی=θ
W6
W5 سیکل کوچک Ƭ=θ/m
W4 درجه برگی کردن m
W3
W2
W1
W0
θ Ƭ زمان
2θ
(ب) دسترسی خطلوله شده هشت کلمه متوالی در یک حافظه c-access
شکل :24-5سازمان حافظه برگی شده چند راهه و نمودار زمانی c-access
)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
اگر تحمل پذیری خطا یک فاکتور باشد که نمیتواند نادیده گرفته شود ،آنگاه حد میانهای بین درجه برگی کردن و
تعداد بانکهای حافظه استفاده می شود .هر بانک حافظه بطور داخلی بسته است و مستقل از شرایط سایر بانکها
است و بنابراین جداسازی خطای بهتری را در حالت خطا ارائه میکند.
آدرس ماژول
ایده حافظه مجازی اجازه دادن به تعداد زیادی پردازه نرمافزاری است که بصورت اشتراک زمانی از حافظه اصلی
که یک منبع با ظرفیت محدود است استفاده کنند .قسمتی از کرنل 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اندازه پنجره مجموعه کاری است.
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سیستمهای حافظه ترکیبی را پیاده-
سازی کردهاند که از مزایای تعویض و صفحه بندی براساس نیاز بهره میبرند .وقتی چندین پردازه بطور همزمان
در شرایط آماده-اجرا هستند ،اما تعویض شده هستند ،تعویض کننده ممکن است چندپردازه را کامالً از حافظه خارج
کند تا فضای مورد نیاز را آزاد کند.
(الف) سازگاری ترتیبی در یک سیستم 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
همانطور که در شکل (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به دالیل زیر پیچیده است.
(الف) ترتیبی که دستورات در رشتههای مختلف قرار میگیرند و اجرا میشوند در یک برنامه موازی ثابت نیست.
اگر همزمانی بین رشته دستورات وجود نداشته باشد ،آنگاه تعداد زیادی برگی کردن دستورات امکانپذیر است.
(ب) اگر بدالیل کارایی ،ترتیب اجرای دستورات واقع شده در یک رشته از ترتیب برنامه متفاوت باشد ،آنگاه حتی
تعداد بیشتری برگی کردن دستورات ممکن است.
(ج) اگر دسترسیها با کپیهای مختلف دادههای مشابه اتمیک نباشند مثل یک سیستم حافظه نهان ،آنگاه پردازنده-
های مختلف میتوانند برگی کردنهای مختلفی را در اجرای مشابه مشاهده کنند .در این حالت ،شرایط اجرای یک
برنامه ممکن است حتی بزرگتر هم شود.
برای نشان دادن روشهای ممکن برگی کردن اجراهای برنامه همروند بین پردازندههای مختلف که حافظه مشابهی
را بروز میکنند ،اجراهای همزمان و آسنکرون سه قطعه برنامه را در یک سه پردازنده نشان داده شده در شکل -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
سوئیچ
سیستم حافظه
مشترک حافظه تک-پورت
تعریف لمپورت :لمپورت سازگاری ترتیبی را به اینصورت تعریف کرده است :یک سیستم چندپردازنده سازگار
ترتیبی است اگر نتیجه هر اجرا مشابه با حالتی باشد که عملیات همه پردازندهها به ترتیب اجرا شوند و عملیات هر
پردازنده منفرد که در این رشته ظاهر میشوند به ترتیب تعریف شده توسط برنامهشان باشد.
)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توسعه داده شده است.
شکل 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 فصل پنجم :گذرگاه ،حافظه نهان ،و حافظه مشترک
مسأله -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پردازنده را
تعیین کنید .بحث کنید چرا کران باال با در نظر گرفتن فقط هزینه حافظه قابل دستیابی نیست.
مسأله -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دستور روی هر پردازنده از چندپردازنده را در نظر بگیرید.
(ج) فرض کنید 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دارد .ماشین قابل آدرس دهی بایت است.
`
کانون نشر علوم | 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
مسأله -17-5اجرای همروند دو برنامه توسط دو پردازنده با یک حافظه مشترک را مد نظر قرار دهید .فرض
کنید که مقدار اولیه D,C, B, Aصفر باشد و دستور printهر دو آرگومان را بطور منفرد در سیکل مشابه چاپ
کند .خروجی یک 4تایی را شکل میدهد ABCDیا .BCAD
(ب) براساس انعطاف پذیری در پیادهسازی الگوریتمهای جایگزینی بلوک ،سازمان 4حافظه نهان را بترتیب ارزش
گذاری کنید.
(ج) با هر سازمان حافظه نهان ،اثرات سیاستهای نگاشت بلوک روی مسأله نرخ اصابت را توضیح دهید.
(د) اثرات اندازه بلوک ،اندازه مجموعه ،انجمن پذیری و اندازه حافظه نهان را روی کارایی سازمان حافظه نهان
انجمنی مجموعهای توضیح دهید.
(الف) تفاوتها و شباهتهای بین شرایط سازگاری ترتیبی تحمیل شده توسط لمپرت ،دوبیوس و سیندو.
(ب) مسأله (الف) را برای مدل DSBو TSOبرای سیستمهای حافظه سازگاری ضعیف مقایسه کنید.
(ج) مدل )Partial store order( PSOبرای سازگاری ضعیف از اصالح مدل TSOایجاد شده است .مقاله
سیندو راجع به PSOرا مطالعه کنید و مدلهای حافظه TSOو PSOرا مقایسه کنید.
`
خریدار گرامی ،نوشتن این کتاب بیش از دو سال زمان برده است.
این نسخه الکترونیک مخصوص شما می باشد .لذا نشر و گسترش آن
https://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -
خ فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.
| 285 فصل ششم :خطلوله و تکنیکهای سوپراسکالر
تکنیکهای خاص برای ساخت خطلولههای دستورالعمل ،خطلولههای ریاضی و خطلولههای دسترسی-حافظه ارائه
میش وند .بحث شامل پیش برداشت دستورالعمل ،جلورانی (فوروارد) داده داخلی ،درهمقفلی نرمافزاری،
scoreboardسختافزاری ،اجتناب از مخاطره ، 1راهاندازی پرش و تکنیکهای انتشار دستورالعمل میباشد .هر
دوی خطلولههای ریاضی ایستا و چندعملکردی طراحی میشوند .تکنیکهای طراحی سوپراسکالر و سوپرپایپالین
همراه با آنالیز کارایی مطالعه میشوند.
براساس کنترل جریان در طول خطلوله ،خطلولههای خطی را به دو دسته مدل میکنیم :سنکرون و آسنکرون.
مدل آسنکرون :همانطور که در شکل ( 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
ورودی خروجی
clock
clock
Ƭm Ƭ
d
(ب) مدل خطلوله سنکرون
زمان(پالس ساعت) مرحله Si=i
این جدول لزوماً یک دیاگرام زمان-فضا است که روابط اولویت در استفاده از مراحل خطلوله را نشان میدهد .در
یک خطلوله خطی kمرحلهای k ،پالس ساعت مورد نیاز است تا در طول خطلوله جریان یابد.
کارهای متوالی یا عملیات در هر پالس وارد خطلوله میشوند .وقتیکه خطلوله پر شد ،در هر پالس یک نتیجه از
خطلوله پدیدار میشود .این توان عملیاتی درصورتی حفظ میشود که کارهای متوالی مستقل از یکدیگر باشند.
پالس ساعت و توان عملیاتی :حداکثر تأخیر مرحله را با Ƭ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برای ساعت بصورت زیر است.
1
Clock skewing
کانون نشر علوم | 288
با Tk=[k+(n-1)]Ƭ )4-6( :که Ƭپریود پالس ساعت میباشد .یک پردازنده غیرخطلوله با عملکرد برابر را در
نظر بگیرید که تأخیر جریان kƬدارد .زمان مورد نیاز برای اجرای nکار در پردازنده بدون خطلوله T1=nkƬاست.
فاکتور افزایش سرعت :فاکتور افزایش سرعت خطلوله kمرحلهای روی یک پردازنده بدون خطلوله بصورت
زیر تعریف میشود:
𝑇 𝜏𝑘𝑛 𝑘𝑛
𝑆𝑘 = 𝑇1 = 𝑘𝜏+(𝑛−1)𝜏 = 𝑘+𝑛−1 )(6-5
𝑘
حداکثر افزایش سرعت وقتی ∞→ 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
حداکثر
نسبت کارایی به هزینه
تعداد بهینه مراحل :ریزترین سطح خطلوله با تقسیم مراحل خطلوله به سطح گیت منطقی را میکرو پایپالین
میگویند .در عمل ،اکثر خطلولهها در سطح عملکردی با 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است .نکته اینکه = 𝑓 𝐻𝑘 = 𝐸𝑘 .
𝑘𝜏𝑘 = 𝜏.𝐸𝑘⁄
𝑆
یک خطلوله پویا اتصاالت رو به جلو و رو به عقب را اجازه میدهد .به این دلیل بعضی مؤلفین به چنین ساختاری
خطلوله غیرخطی میگویند.
یک خطلوله چندتابعی پویا در شکل (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
S2
مراحل
مرتبط با هر تابع ارزیابی ،یک جدول مقداردهی اولیه خطلوله وجود دارد .در یک خطلوله ایستا ،همه مقداردهیهای
اولیه ،جدول رزرواسیون مشابهی استفاده میکنند .به عبارت دیگر ،یک خطلوله پویا ممکن است مقداردهیهای
اولیه متفاوتی داشته باشد تا ترکیبی از جداول رزرواسیون را دنبال کند .عالمتهای چک در هر سطر جدول
رزرواسیون مرتبط با زمان (پالسهایی) است که یک مرحله خاص استفاده خواهد شد.
در هر سطر ممکن است چند عالمت چک وجود داشته باشد که به این معنی است که از آن مرحله در پالسهای
مختلف استفاده می شود .چند عالمت چک در یک ستون به این معنی است که چند مرحله بطور موازی در یک
پالس ساعت خاص استفاده میشوند.
آنالیز تأخیر :تعداد واحدهای زمان (پالسهای ساعت) بین دو مقداردهی اولیه خطلوله ،تأخیر بین آنها میباشد.
مقادیر تأخیر باید اعداد صحیح غیرمنفی باشند .تأخیر 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 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 فصل ششم :خطلوله و تکنیکهای سوپراسکالر
-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شیفت بدست میآید.
وقتیکه تعداد شیفتها 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
درج یک مرحله تأخیر 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برای رسیدن به بیشترین توان عملیاتی مشابه خطلوله
تک عملکرده میباشد.
بردارهای تصادم تقاطی:
شکل ( :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
مثال :3-6خطلوله دستورالعمل R4000: MIPS R4000یک پردازنده سوپرپایپ الین 64بیتی است
که از حافظههای نهان داده و دستورالعمل مجزا استفاده میکند و خطلوله سرعت باالتری برای اجرای دستورات
ثباتی دارد .همانطور که در شکل 11-6نشان داده شده است ،طرح خطلوله 8مرحلهای پردازنده برای رسیدن به
نرخ اجرای یک دستور در هر پالس ساعت ارائه شده است.
همانطور که در شکل (11-6الف) نشان داده شده است ،اجرای هر دستورالعمل R4000شامل 8سیکل اصلی
است .هر کدام از این مراحل نیازمند تقریباً یک پالس ساعت است .سوپرپایپالین مراجعات حافظه و دستور را در
دو مرحله مجزا کرده است .مرحله ALUتک سیکله زمان بیشتری از هر مرحله حافظه نهان میگیرد.
اجرای همپوش شده دستورات متوالی در شکل (11-6ب) نشان داده شده است .این خطلوله به طور مؤثری کار
میکند زیرا منابع مختلف پردازنده مثل دسترسی آدرس و گذرگاه ،عملیات ،ALUدسترسیهای ثبات و غیره به
طور همزمان براساس عدم دخالت بهرهبرداری میشوند.
نرخ ساعت داخلی ) (100MHzدر R4000دو برابر ورودی خارجی یا فرکانس ساعت اصلی است .شکل 11-6
(ب) انتقاالت خطلوله بهی نه برای تکمیل کردن یک دستورالعمل در هر سیکل داخلی را نشان میدهد .دستورات
loadو branchتأخیرات بیشتری ایجاد میکنند.
| 303 فصل ششم :خطلوله و تکنیکهای سوپراسکالر
Register
Register file Alu D-cache file
در این بخش بافرهای دستورالعمل را معرفی میکنیم و استفاده از حافظه نهان ،اجتناب از تصادم ،چند واحد عملیاتی،
تگ کردن ثبات ،و جلورانی داخلی برای مالیم کردن جریان خطلوله و حذف گلوگاهها و عملیات دسترسی به حافظه
غیرضروری را توصیف میکنیم.
بافرهای پیشبرداشت :سه نوع بافر برای تطابق نرخ برداشت دستورالعمل با نرخ استفاده خطلوله میتواند
استفاده شود .در یک زمان دسترسی حافظه ،بلوکی از دستورالعملهای متوالی به داخل یک بافر پیشبرداشت ،وارد
میشوند همانطور که در شکل 12-6نشان داده شده است .یک دسترسی بلوکی با استفاده از ماژولهای حافظه
برگی شده یا استفاده از حافظه نهان برای کاهش زمان مؤثر دسترسی-حافظه همانطور که در MIPS R4000
نشان داده شد ،قابل بدست آمدن است.
کانون نشر علوم | 304
دستورالعملهای متوالی به داخل یک زوج بافر ترتیبی برای خطلوله کردن به ترتیب بار میشوند .دستورات از یک
مقصد پرش به داخل یک زوج از بافرهای مقصد برای خطلوله خارج از ترتیب بار میشوند .هر دو بافرها به روش
FIFOکار میکنند .این بافرها به عنوان قسمتی از خطلوله به عنوان مراحل اضافی درمیآیند.
یک دستور پرش شرطی باعث میشود هر دو بافرهای ترتیبی و بافرهای مقصد با دستورات پر شوند .بعد از اینکه
شرط پرش چک شد ،دستورات مناسب از یکی از دو بافر گرفته میشوند و دستورات بافر دیگر استفاده نمیشوند.
یک بافر می تواند برای بارکردن دستورات از حافظه استفاده شود و بافر دیگر برای خوراندن دستورات به داخل
خطلوله استفاده شوند .دو بافر از تصادم بین دستورات ورودی به داخل و خارج خطلوله جلوگیری میکند.
به نوع سوم بافر پیشبرداشت ،بافر حلقه میگویند .این بافر ،دستورات ترتیبی داخل یک حلقه کوچک را نگه میدارد.
بافرهای حلقه با مرحله برداشت خطلوله نگهداری میشوند .دستورات پیشبرداشت شده در بدنه حلقه بطور تکراری
اجرا می شوند تا زمانیکه اجرای همه تکرارهای حلقه تمام شود .بافر حلقه در دو مرحله عمل میکند :اوالً ،شامل
دستوراتی هستند که بطور ترتیبی جلو دستور جاری هستند .این در زمان برداشت دستور از حافظه صرفهجویی
میکند .ثانیاً ،تشخیص میدهد که چه موقع مقصد یک پرش در داخل محدوده حلقه قرار میگیرد .در این حالت،
دسترسیهای حافظه غیرضروری اجتناب میشود اگر دستور مقصد هماکنون داخل بافر حلقه باشدCDC 6600, .
Cray1از بافرهای حلقه استفاده میکنند.
دستور از حافظه
فایل ثبات
واحد برداشت دستورالعمل
B T
ثباتهایload
FU: Functional Unit
RS RS RS RS RS: reservation Station
چندین واحد عملیاتی :گاهی اوقات یک مرحله خاص خطلوله ،گلوگاه میشود .این مرحله مرتبط با سطری که
بیشترین تعداد چکها را در جدول رزرواسیون دارد ،میباشد .در صورتی که از مرحله مذکور چند کپی داشته باشیم
مسأله گلوگاه می تواند رفع و رجوع شود .که خود منجر به استفاده از چندین واحد عملیاتی در یک پردازنده خطلوله
شده میشود( .شکل )13-6
)1990( Sohiیک مدل معماری را برای یک پردازنده اسکالر خطلوله شده شامل چندین واحد عملیاتی استفاده
کرد (شکل .)13-6به منظور حل وابستگیهای داده و منبع در بین دستورات متوالی که وارد خطلوله میشوند،
ایستگاههای رزرواسیون ( )RSبا هر واحد عملیاتی ( )FUاستفاده میشوند .عملوندها میتوانند تا زمانیکه وابستگی-
های داده حل شود در RSمنتظر بمانند .هر RSبطور منحصر بفرد با یک تگ مشخص میشود که توسط واحد
تگ مانیتور میشود.
واحد تگ ،چک کردن تگهای همه ثباتها یا RSهایی که در حال حاظر استفاده میشوند را انجام میدهد .این
روش تگ کردن ثبات به سختافزار اجازه حل تداخالت بین ثباتهای منبع و مقصد منتسب شده به چندین
دستورالعمل را میدهد .همچنین در کنار حل تداخلRS ،ها به عنوان یک بافر عمل میکنند تا رابطی بین واحدهای
عملیاتی خط لوله شده و واحدهای دیکد و انتشار باشند .این باعث رفع و رجوع گلوگاه در مراحل اجرایی خطلوله
دستورالعمل میشود.
جلورانی داخلی داده :1توان عملیاتی یک پردازنده خطلوله میتواند با استفاده از جلورانی داخلی داده بین چندین
واحد عملیاتی بیشتر بهبود یابد .اوالً ،بعضی عملیات دسترسی-حافظه با عملیات انتقال ثبات جایگزین میشود .این
ایده در شکل 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
واحد جمع
بدون جلورانی داخلی داده بین دو واحد عملیاتی ،سه دستورالعمل باید بصورت ترتیبی در یک ساختار حلقه (شکل
(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
دو دستور Iو Jرا در نظر بگیرید .فرض میکنیم Jبعد از Iباشد .اگر ترتیب اجرای واقعی این دو دستور از ترتیب
برنامه تبعیت نکند ،نتایج نادرستی خوانده یا نوشته میشوند بنابراین مخاطره ایجاد میشود.
قبل از اینکه این دستورات وارد خطلوله شوند باید از مخاطره جلوگیری کرد ،مثل نگهداشتن دستور Jتا زمانیکه
وابستگی به دستور Iحل شود .از ) D(Iو ) R(Iبرای دامنه و برد دستور Iاستفاده میکنیم.
دامنه شامل مجموعه ورودی (مثل عملوندها در ثباتها یا حافظه) که توسط دستور Iاستفاده میشود میباشد .برد
مرتبط با مجموعه خروجی دستور Iاست .لیست زیر شرایطی که ممکن است مخاطره اتفاق افتد را نشان میدهد.
این شرایط الزم اند ولی کافی نیستند .این به این معنی است که ممکن است مخاطره ظاهر نشود حتی اگر یکی یا
چند تا از شرایط موجود باشد .مخاطره RAWمرتبط با وابستگی جریان است WAR ،ضدوابستگی و WAW
وابستگی خروجی معرفی شده در بخش 1-2میباشد .ظهور یک مخاطره منطقی وابسته به ترتیبی است که دو
دستور اجرا میشوند .تا زمانیکه ترتیب درست باشد ،مخاطره اتفاق نخواهد افتاد.
کانون نشر علوم | 308
وقوع شرایط مخاطره میتواند توسط سختافزار خاص در حالیکه دستورات در حال بارشدن به بافر پیشبرداشت
هستند چک شود .با هر ثبات عملوند یک بیت تگ خاص میتواند استفاده شود تا حالت امن یا مخاطره را مشخص
کند .برای اجتناب از مخاطره عملیات خواندن یا نوشتن متوالی مجاز به یک کردن یا صفر کردن بیت تگ میباشند.
در این بخش ،سه روش برای زمانبندی دستورالعمل در یک خطلوله دستورالعمل را توصیف میکنیم .شماتیک
زمانبندی ایستا با یک کامپایلر بهینه پشتیبانی میشود .زمانبندی پویا با شماتیک register-tagging
Tomasuloکه در IBM 360/91ساخته شده است یا با استفاده از شماتیک scoreboardساخته شده در
پردازنده CDC6600قابل بدست آوردن است.
-1-3-3-6زمانبندی ایستا :وابستگیهای داده در یک رشته از دستورات ،روابط درهم قفلی بین آنها ایجاد
میکند .درهم قفلی میتواند با یک روش زمانبندی ایستای براساس کامپایلر رفع و رجوع شود .یک کامپایلر یا یک
پسپرداز 1میتواند برای افزایش جداسازی بین دستورات در هم قفل شده استفاده شود.
اجرای قطعه کد زیر را در نظر بگیرید .دستور ضرب نمیتواند قبل از کامل شدن loadقبلی شروع به کار کند .این
وابستگی داده باعث خواهد شد خطلوله سه پالس ساعت توقف داشته باشد زیرا دو loadدر یک پالس همپوشانی
دارند.
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
مثال :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 فصل ششم :خطلوله و تکنیکهای سوپراسکالر
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ب) دستورات خارج از ترتیب منتشر
و اجرا میشوند .دستور ) R1Mem(Bدر پالس 5منتشر میشود با وجود اینکه دستورات قبل از آن هنوز تکمیل
نشدهاند.
1 2 3 4 5 6 7 8 910 11 12 13 14 15 16 17 18 19
)R1Mem(Y F D I E E E W
)R2Mem(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
)R1Mem(B F D I E E E W
F D I E E E W
) R2Mem(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کامل شده باشد و نتیجهاش را نوشته باشد ،جدول
اطالعاتی به چه صورت است.
وضعیت دستور
نوشتن نتیجه اجرا انتشار دستور
√ √ √ 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 فصل ششم :خطلوله و تکنیکهای سوپراسکالر
اگر پیشبینی کنیم که پرش اتفاق افتاده است ،استفاده از ایستگاههای رزرواسیون اجازه اجرای چندین تکرار حلقه
را تا با هم به پیش بروند میدهد .این مزیت بدون تغییر کد بدست میآید ،حلقه بطور پویا توسط سختافزار با
استفاده از ایستگاههای رزرواسیون برای تغییر نام ثبات که مثل ثباتهای اضافی کار میکنند ،باز میشود.
اجازه دهید فرض کنیم همه دستورات در دو تکرار متوالی حلقه را منتشر کردهایم ،اما هیچکدام ازعملیات یا
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
ثبات وضعیت
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
شکل (23-6ب) زمانبندی خطلوله را بر اساس منطق انتشار Scoreboardنشان میدهد .زمانبندی مرتبط با
اجرای کد ماشین مشابه برای X=Y+Zو A=B×Cمیباشد .تأخیرهای خطلوله مشابه نتایج بدست آمده از الگوریتم
توماسولو میباشد .دستور addقبل از اینکه ثباتهایش آماده باشند به واحد عملیاتیش منتشر میشود .این دستور
تا زمانیکه عملوندهای ثبات ورودیش آماده نشوند صبر میکند.
Scoreboardمقادیر ثبات را وقتیکه آماده شدند به واحد جمع کننده مسیریابی میکند .در این اثناء مرحله
انتشار بلوکه نمیشود بنابراین سایر دستورات میتوانند از دستور addبلوک شده عبور کنند .مشابه روش در هم
قفلی نرم افزاری کارایی بهبود مییابد .انجام عملیات 13پالس ساعت طول میکشد .جزئیات CDC
Scoreboardingرا میتوان در کتاب )1970( Thorntonیافت.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
)R1Mem(Y F D I E E E W
)R2Mem(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
)R4Mem(B F D I E E E W
) R5Mem(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
زمانبندی دستورالعمل پویا فقط در مینفریمهای انتهایی یا سوپرکامپیوترها در گذشته پیاده سازی میشد .اکثر
ریزپردازندهها زمانبندی ایستا را استفاده میکنند .اما هدف به نرمی در حال تغییر است .تعداد زیادی از پردازندههای
ریسک و سیسک با پشتیبانی سخت افزاری زمانبندی پویا در زمان اجرا ساخته میشوند .به هر حال ،زمانبندی
دستورالعمل ایستا و پویا می توانند با هم ترکیب شوند تا دو مرحله بهینه سازی را ایجاد کنند .برای رسیدن به این
هدف طراحان کامپایلر و پردازنده ها باید با یکدیگر کار کنند تا به یک طرح بهینه برسند .خطلولههای دستورالعمل
چند انتشاره ،که نسبت به خطلولههای تک انتشاره پیچیدهتر هستند در بخش 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تعداد مراحل خطلوله میباشد.
وقتیکه یک پرش اتفاق میافتد ،همه دستورات بعد از پرش در خطلوله بالاستفاده میشوند و از خطلوله دور ریخته
می شوند .این به این معنی است که وقوع پرش خطلوله را تخلیه میکند و تعدادی از سیکلهای مفید از دست
میرود.
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شامل اطالعات ردیابی میباشد .اطالعات پیشبینی برای
تکمیل پرش جاری بروز میشود.
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
(ب) یک پرش تأخیر داده شده برای 3سیکل وقتیکه شرط پرش درمرحله اجرا مشخص میشود.
(ج) یک پرش تأخیر داده شده برای 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هیچ پالسی را در عمل پرش تأخیر داده شده صرفهجویی نمیکند .این نوع پرش تأخیر داده شده در
اکثر پردازندههای ریسک استفاده میشود.
براساس دیاگرام حالت پرش بعدی را پیش بینی میکنیم .براساس تعداد حاالت دیاگرام ،تعدادی بیت برای پیش
بینی در نظر میگیریم که برابر با لگاریتم تعداد حاالت میباشد .بنابراین برای دو حالت یک بیت برای پیشبینی
کافیست و برای 4حالت دو بیت مورد نیاز میباشد.
الف -پیش بینی کننده تک بیتی :در حالتی که حاالت دیاگرام دو حالت مثل شکل 30-6دارد یک بیت برای
پیشبینی مورد نیاز هست .وضعیت Not takenرا با صفر و takenرا با یک نشان میدهیم در این حالت اگر
کانون نشر علوم | 338
در Tباشیم پیشبینی میکنیم که پرش بعدی نیز Tمیباشد و اگر در Nباشیم پرش بعدی را Nپیش بینی
میکنیم.
ب -پیشبینی کننده دو بیتی :در حالتی که حاالت دیاگرام چهار حالت مثل بخش باالی شکل 31-6دارد دو
بیت برای پیشبینی مورد نیاز هست .در این حالت و در حالت های دیگر با تعداد بیتهای بیشتر برای پیشبینی از
MSBیعنی با ارزشترین بیت برای پیشبینی استفاده میشود .در این شکل حاالت 00و 01عدم پرش را پیش
بینی میکنند و حاالت 10و 11وقوع پرش را پیش بینی میکنند .نمای زیبا و واضح از پیشبینی پرش دوسطحی
دربخش پایین شکل 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
... ...
این بیت مخفی با عدد ذخیره نمیشود .اگر 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
اکثر خطلولههای ریاضی برای انجام توابع ثابت طراحی شدهاند .این 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همیشه صفر
است .روابط ورودی-خروجی بصورت زیر بیان میشوند:
(الف) یک جمع کننده 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
CSA CSA
13 13 15 15
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
ثبات ثبات
17
ضرب کننده
64 bit ×8bit
ثبات
67
mux
67 ثبات
مرحله 2 واحد جمع 67
بیتی
ثبات
مرحله 3 ثبات
67 افزایش دهنده 7
67 mux
17 16
واحد جمع
ثبات
ثبات
مثال :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
خطلوله
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تکرار در پردازه تقسیم همگرا.
مثال :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الف) همه اتصاالت بین
مرحلهای ممکن برای انجام توابع ریاضی ،منطقی ،شیفت و تبدیل داده را نشان میدهد.
هر دو توابع ریاضی ممیز ثابت و ممیز شناور میتوانند توسط این خطلوله انجام شوند 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ج) میباشد.
این ضرب نقطهای با مجموع رشته ضربهای زیر در خطلوله پیاده میشود.
)ZAi*Bi+Z (6-25
که عملوندهای متوالی ) (Ai,Biاز طریق بافرهای X,Yخورانده میشوند و جمع از طریق بافر Zبطور بازگشتی
انجام میشود.
کل خطلوله میتواند ضرب (×) و جمع ( )+در یک جریان واحد در خطلوله انجام دهد .دو سطح از ثباتهای بافر،
برداشت و بارکردن عملوندها به یا از PAUرا از هم جدا میکنند مثل مفهوم استفاده از زوج بافر در بافر پیشبرداشت
توصیف شده در شکل .12-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 .
برای بهرهبرداری کامل یک ماشین خطلوله مورد نیاز است.
نکته اینکه همه زمانها وابسته به سیکل پایه برای ماشین پایه اسکالر است.
ساختار خطلوله سوپراسکالر :در یک پردازنده سوپراسکالر -mانتشاره ،دیکد دستورالعمل و منابع اجرایی
افزوده میشوند تا خطلولهای ایجاد کنند که mعمل را بطور همروند اجرا کند .در بعضی مراحل خطلوله ،واحدهای
عملیاتی ممکن است توسط چند خطلوله به اشتراک گذاشته شوند.
1
Instruction level parallelism
کانون نشر علوم | 356
این ساختار خطلوله چندگانه منبع-مشترک در یک مثال طراحی در شکل (46-6الف) نشان داده شده است .دراین
طراحی ،پردازنده میتواند دو دستور را در هر سیکل منتشر کند اگر تداخل منبع و مشکل وابستگی داده وجود نداشته
باشد .ضرورتاً دو خطلوله در طراحی وجود دارد .هر دو خطلوله 4مرحله پردازشی برداشت ،دیکد ،اجرا و ذخیره
دارد.هر خط لوله ضرورتاً واحد برداشت ،دیکد ،اجرا و ذخیره خودش را دارد .دو رشته دستور که در خطلوله جریان
دارند از یک رشته منبع تک بازیابی میشوند (.)I-cache
به منظور سادگی ،فرض میکنیم هر مرحله خطلوله یک پالس نیاز دارد بجز مرحله اجرا که ممکن است تعداد
پالسهای متغیر نیاز داشته باشد 4 .واحد عملیاتی ،ضرب کننده ،جمع کننده ،واحد منطقی و واحد loadبرای
استفاده در مرحله اجرا قابل دسترس میباشند .این واحدهای عملیاتی توسط دو خطلوله بصورت پویا مشترک هستند.
ضرب کننده خودش سه مرحله خطلوله دارد ،جمع کننده دو مرحله و بقیه هرکدام یک مرحله دارند.
(الف) یک پردازنده سوپراسکالر دو خطلولهای با 4واحد عملیاتی در مرحله اجرا و پنجره پیشبینی تولید کننده انتشار خارج از ترتیب
I1. Load R1,A /R1Memory(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نشان داده شده است.
ماشینهای سوپرپایپالین شده برای مدت طوالنی در بورس بودند 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
𝑛𝑚
گذرگاه آدرس
EBOX IBOX FBOX ( 34بیتی)
ضرب کننده /ضرب کننده
جمع کننده پیش برداشت جمع کننده
تداخل منابع تقسیم کننده
شیفت دهنده
محاسبه PC گذرگاه داده
جعبه منطق
ITB
BIU ( 34بیتی)
کنترل خطلوله
FRF
IRF )(32x64
)(32x64
حافظههای نهان
بافر نوشتن تولید آدرس DTB Load Silo خارجی کنترل
Dcache
تگ داده
اولین پیادهسازی آلفا در هر سیکل دو دستور را منتشر میکرد .در پیادهسازی بعدیش تعداد دستورات منتشر شده
بیشتر بود .زمانبندی مخاطرههای خطلوله ،بارکردن اسالتهای تأخیری و اسالتهای تأخیر پرش همه با پشتیبانی
سختافزار حداقل شدهاند .آلفا برای پشتیبانی سریع درهم قفلی چندپردازنده و وقفهها طراحی شد .امکان پشتیبانی
چندین سیستم عامل را دارد .پردازنده طوری طراحی شده است که حداکثر 300MIPSو 150Mglopsدر
150MHzدارد.
-3-5-6فوق تقارن و حد میانه طراحی
شکل 51-6یک پردازنده سوپراسکالر با یک پردازنده سوپرپایپالین که هر دو درجه (m=n=3) 3دارند را
مقایسه کرده است که شش دستور مستقل را منتشر کردهاند .انتشار 3دستورالعمل در هر سیکل ساعت نرخ ماشین
سوپراسکالر است در حالیکه ماشین سوپرپایپالین فقط یک سوم سیکل پایه را برای انتشار هر دستور میگیرد .در
حالت ثابت ،هر دو ماشین تعداد مشابهی دستور را در بازه زمانی مشابه اجرا میکنند.
فوق تقارن :ماشین سوپرپایپالین تأخیر زمان شروع بیشتری دارد و از ماشین سوپراسکالر در شروع برنامه (شکل
(6-51الف)) جا میماند .بنابراین ،یک پرش خرابی بیشتری روی ماشین سوپرپایپالین نسبت به سوپراسکالر دارد.
این اثر با افزایش درجه سوپرپایپالین تقلیل مییابد و همه دستورات تفکیک پذیر نسبت به هم بستهتر منتشر
میشوند.
2.5
سوپراسکالر
2
کارایی نسبت به ماشین پایه
سوپرپایپ الین
1.5
1
0.5
شکل (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برای مدیریت فقدانهای
حافظه نهان بلوکه نشدنی استفاده میکند
مثال :اجرای حلقه زیر را مد نظ ر قرار دهید که عناصر یک آرایه را روی یک پردازنده دو انتشاره افزایش میدهد
یکبار بدون تعمق و بار دیگر با تعمق:
خاتمه در شماره نوشتن در 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
مسأله -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 فصل ششم :خطلوله و تکنیکهای سوپراسکالر
(الف) در رنج 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
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
مسأله -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که برابر با پریود ساعت
خطلوله است مد نظر قرار دهید.
مسأله -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://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -
خ فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.
| 375 فصل هفتم :چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان
داده و سطح-درخواست
در این فصل ،معماریهای سیستمهای چندپردازنده و چندکامپیوتر را مطالعه میکنیم .انواع گوناگون قراردادهای
همبستگی حافظه نهان ،روشهای همزمانی ،سوئیچهای کراسبار ،حافظه چندپورته ،و شبکههای چندسطحه برای
ساخت سیستمهای چندپردازنده توصیف میشوند و مکانیزمهای ارسال پیام که در چندکامپیوترها ساخته شدهاند
مرور میشوند.
پردازش موازی متقاضی استفاده از سیستم اتصاالت داخلی مفید (مؤثر ،کارا) برای ارتباطات بین چندین پردازنده و
حافظه مشترک ،ورودی/خروجی و وسایل جانبی است .گذرگاههای سلسله مراتبی ،سوئیچهای کراسبار و شبکههای
چندسطحه اغلب برای این هدف استفاده میشوند.
یک سیستم چندپردازنده عمومی در شکل 1-7نشان داده شده است .این معماری خواص مدلهای COMA,
NUMA, UMAکه در بخش 1-4-1معرفی شدند را ترکیب میکند .هر پردازنده Piبه حافظه محلی و حافظه
نهان خصوصی خودش متصل است .چندین پردازنده به ماژولهای حافظه-مشترک از طریق شبکه اتصال پردازنده-
حافظه متصل میشوند.
IPMN
IPCN
شکل :1-7ساختارهای ارتباطی در یک سیستم چندپردازنده عمومی با حافظه مشترک ،حافظه محلی ،حافظههای نهان خصوصی ،و وسایل جانبی مشترک
| 377 فصل هفتم :چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان
خواص شبکه :هر کدام از انواع فوق از شبکهها میتوانند با انتخابهای زیادی طراحی شوند .انتخابها براساس
همبندی ،قرارداد زمانی ،روش سوئیچینگ و راهبرد کنترل میباشند .شبکههای پویا در چندپردازندههایی که اتصاالت
داخلی تحت کنترل برنامه است استفاده میشوند .زمانبندی ،سوئیچینگ و کنترل سه خصوصیت عملیاتی یک شبکه
ارتباطی میباشند .کنترل زمانی میتواند سنکرون یا آسنکرون باشد .شبکههای سنکرون توسط یک ساعت سراسری
که همه فعالیتهای شبکه را همزمان میکند ،کنترل میشوند .شبکههای آسنکرون از مکانیزمهای درهمقفلی یا
دستتکاندهی استفاده میکنند تا دستگاههای کُند و سریع که متقاضی استفاده از شبکه مشابهی هستند را هماهنگ
کند.
یک شبکه می تواند داده را با سوئیچینگ مداری یا سوئیچینگ بسته منتقل کند .در سوئیچینگ مداری ،وقتیکه
یک دستگاه یک مسیر در شبکه را بدست میآورد ،مسیر را در کل زمان انتقال داده اشغال میکند .در سوئیچینگ
بسته ،اطالعات به بستههای کوچک شکسته میشوند و بطور منفرد برای یک مسیر در شبکه رقابت میکنند.
راهبرد کنترل شبکه به دو دسته متمرکز و توزیع شده تقسیم میشود .با کنترل متمرکز ،یک کنترل کننده سراسری
درخواستهای همه دستگاههای متصل به شبکه را میپذیرد و به یک یا چند درخواست دسترسی شبکه پاسخ
میدهد .در یک سیستم توزیع شده ،درخواستها توسط دستگاههای محلی بطور مستقل راهاندازی میشوند.
یک سیستم گذرگاه شامل سلسله مراتبی از گذرگاههایی که سیستم گوناگون و اجزاء زیرسیستم را در یک کامپیوتر
متصل میکنند ،می باشد .هر گذرگاه با تعدادی خطوط قدرت ،کنترل و سیگنال شکل داده میشود .گذرگاههای
مختلف برای انجام توابع اتصالی مختلف استفاده میشوند.
بطور کلی ،سلسله مراتب سیستمهای گذرگاه در سطوح مختلف شامل گذرگاههای محلی روی بوردها ،گذرگاههای
صفحه پشتی ،و گذرگاههای ورودی/خروجی همانطور که در شکل 2-7نشان داده شده است بسته بندی میشوند.
گذرگاههای محلی :گذرگاههای پیادهسازی شده روی بوردهای مدار-چاپی ،گذرگاههای محلی نامیده میشود.
روی یک بورد پردازنده یک گذرگاه محلی ،یک مسیر ارتباطی مشترک بین اجزاء عمده (تراشههای) قرار گرفته
روی بورد را تهیه میکند .یک بورد حافظه یک گذرگاه حافظه را برای اتصال حافظه با منطق رابط استفاده میکند.
یک بورد ورودی/خروجی یا بورد رابط شبکه از یک گذرگاه داده استفاده میکند .هر کدام از این گذرگاههای بورد
شامل خطوط سیگنال و مفید میباشند .با اشتراک این خطوط توسط دستگاههای ورودی/خروجی زیاد ،لیاوت این
خطوط ممکن است در الیههای مختلف بورد PCباشند.
کانون نشر علوم | 378
گذرگاه :backplaneیک گذرگاه پشتی یک مدار چاپی است که اتصال دهندههای زیادی در آن استفاده
شده اند تا به بوردهای عملیاتی وصل شوند .یک گذرگاه سیستم شامل مسیرهای سیگنال مشترک و خطوط کاربردی
روی بورد پشتی ساخته میشود .این گذرگاه سیستم مسیر ارتباطی مشترکی بین همه بوردهای ورودی ایجاد میکند.
خواص کامل یک سیستم گذرگاه شامل ،خواص منطقی ،الکتریکی و مکانیکی ،مشخصات کاربردی مختلف و
نیازهای رابط میباشد .مطالعه ما روی منظر کاربردی و منطقی گذرگاههای سیستم پیشرفته تمرکز میکند .تأکید
روی مقیاسپذیری و پشتیبانی گذرگاه برای همبستگی حافظه نهان و همزمانیِ سریع میباشد.
وسایل جانبی
محلی (گذرگاه بورد پردازنده بورد حافظه
)SCSI
LM CPU IOC LM IOC
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
گذرگاه خوشه
C10 C11 C12 C13 C14 C15 C16 C17 C18 حافظههای نهان سطح اول
شکل :3-7یک معماری حافظه نهان/گذرگاه سلسله مراتبی برای طراحی چندپردازندههای مقیاسپذیر
انکور
)1987 مثال :1-7معماری چندپردازنده آلترامکس
(ویلسون
آلترامکس یک معماری گذرگاه-سلسله مراتبی دوسطحه دارد که در شکل 4-7نشان داده شده است .معماری
آلترامکس بسیار شبیه معماری ویلسون است .بجز اینکه نانوباس سراسری فقط برای ارتباطات بین خوشهای استفاده
میشود.
حافظههای مشترک به همه خوشهها توزیع میشوند به جای اینکه به گذرگاه بین خوشهای متصل شوند .مثل
شماتیک ویلسون ،حافظههای نهان خوشه ،حافظههای نهان سطح-دوم را شکل میدهند و فیلترینگ و کنترل
همبستگی حافظه نهان مشابهی را برای دسترسیهای دور انجام میدهند .بعد از اینکه یک درخواست دسترسی به
باالی گذرگاه رسید ،به حافظه خوشه به سمت پایین مسیردهی میشود که آنرا با آدرس مرجع تطابق میدهد.
گذرگاه نانوباس سراسری
پلها برای رابط این خوشهها استفاده میشوند ،عملیات اصلی یک پل شامل تبدیل قرارداد ارتباطی ،راهاندازی وقفه
در تراکنشهای مجزا ،و سرویس دادن به عاملهای حافظه نهان و حافظه میباشد .توصیف پلها برای گذرگاه
| 381 فصل هفتم :چندپردازندهها و چندکامپیوترها و قراردادهای همبستگی حافظه نهان
(IEEE P1014.2) VMEو )IEEE P1296.2( Multibus IIمیباشد .این Futurebus+را با سایر
معماریهای گذرگاه سازگار میکند.
پردازنده پردازنده پردازنده پردازنده پردازنده پردازنده
حافظه نهان حافظه نهان حافظه نهان حافظه نهان حافظه نهان حافظه نهان
دو FUTURE
BUS+
FUTURE BUS+
CABLE
SEGMENT پردازنده خاص پردازنده خاص
پردازنده پردازنده پل پل منظوره منظوره
حافظه نهان حافظه نهان حافظه نهان رابط پیام رابط پیام رابط پیام
حافظه نهان حافظه نهان رابط پیام رابط پیام رابط پبام
حافظه
پردازنده I/O فریم بافر پردازنده I/O پردازنده I/O پردازنده I/O
شبکههای سوئیچ اتصاالت پویا بین ورودیها و خروجیها را فراهم میکنند .شبکههای ارتباطی در فصل 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پردازنده
درخواست
پاسخ
سیگنالهای پاسخ ( )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
I/O I/O
به عنوان مثال چندپردازنده Univac 1100/94شال 4عدد پردازنده 4 ،پردازنده ورودی/خروجی ،و دو پردازنده
برداری علمی است که به 4ماژول حافظه مشترک متصل میشوند هر کدام پورتهای 10راهه دارند .دسترسی
به این پورتها تحت کنترل سیستم عامل اولویت بندی شدهاند .در سایر چندپردازندهها ،قسمتی از ماژول حافظه
میتواند با پورتهایی که فقط توسط پردازندههای شخصی قابل دسترسند ،خصوصی شود.
مسأله نقطه داغ :1وقتی که ترافیک شبکه غیریکنواخت باشد ،ممکن است یک نقطه داغ مرتبط با یک ماژول
حافظه خاص که بصورت زیاد توسط پردازندههای زیادی در زمان یکسان دسترسی میشود بوجود آید .به عنوان
مثال ،یک متغیر سمافور که به عنوان یک مانع همزمانی استفاده میشود ممکن است یک نقطه داغ باشد زیرا توسط
تعداد زیادی پردازنده به اشتراک گذاشته میشود.
نقاط داغ ممکن است کارایی شبکه را بطور عمدهای تنزل دهند .در چندکامپیوتر NYU Ultraو چندپردازنده
، IBM RP3یک مکانیزم ترکیبی به شبکه امگا اضافه شد .هدف ترکیب چندین درخواست که مقصدشان یکی
بود در نقاط سوئیچ که تداخلها در آنجا اتفاق میافتد میباشد.
1
Hot-spot
کانون نشر علوم | 386
:Fetch& Addاین عمل حافظه اتمیک در پیادهسازی همزمانی N-wayبا پیچیدگی مستقل از Nمفید است.
در یک عمل ) x ،Fetch&Add(x,eیک متغیر صحیح و eیک افزایش صحیح است .وقتیکه یک پردازنده
تک این عمل را انجام میدهد ،شماتیک بصورت زیر است:
)Fetch&Add(x,e
;{tempx
;xtemp+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
(ب) سوئیچ جمع 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
کاربردها و معایب :روش Fetch&Addدر دسترسی ترتیبی ساختارهای صف تخصیص داده شده بصورت
موازی مفید است یا در چندشاخه کردن پردازههای موازی با کد مشابه که روی مجموعه داده مختلف عمل میکنند.
اجرای موازی Nتکرار مستقل حلقه زیر توسط Pپردازنده را در نظر بگیرید:
Do all N=1 to 100
}{code using N
End all
هر پردازنده یک Fetch&Addروی Nقبل از کارکردن روی تکرارهای خاص در حلقه اجرا میکند .در این
حالت ،مقدار منحصر بفردی از Nبه هر پردازنده برگشت داده میشود که در سگمنت کد استفاده میشود .کد برای
هر پردازنده با مقدار اولیه N=1بصورت زیر است:
)NFetch&Add(N,1
While(n<=100) do all
}{ Code using n
)nFetch&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
نهان نهان
گذرگاه گذرگاه
(الف) ناسازگاری در اشتراک داده قابل نوشتن (ب) ناسازگاری بعد از مهاجرت پردازهها
شکل :9-7مسائل همبستگی حافظه نهان در اشتراک داده و مهاجرت پردازه
مشکالت ناسازگاری ممکن است در طول اعمال ورودی/خروجی که از حافظههای نهان گذر میکنند اتفاق بیافتد.
وقتیکه یک پردازنده ورودی/خروجی داده جدید ’ Xرا به حافظه اصلی بار میکند ،با عبور از حافظههای نهان WT
(وسط شکل (10-7الف)) ناسازگاری بین حافظه نهان و حافظه مشترک اتفاق میافتد .وقتیکه یک داده مستقیماً
از حافظه مشترک (بایپس حافظه نهان) خارج میشود ،حافظههای نهان WBنیز ناسازگاری ایجاد میکنند.
یک روش حل مشکل ناسازگاری ورودی/خروجی الحاق پردازندههای ورودی/خروجی ( )IOP2, IOP1به حافظه-
های نهان خصوصی ( )C2, C1بترتیب همانطور که در شکل (10-7ب) نشان داده شده است میباشد .در این روش
کانون نشر علوم | 390
پردازندههای ورودی/خروجی با پردازنده ،حافظه نهان را مشترک استفاده میکنند .سازگاری حافظه نهان میتواند
حفظ شود اگر سازگاری حافظه نهان به حافظه نهان از طریق گذرگاه حفظ شود .عیب بدیهی این شماتیک امکان
افزایش انحراف حافظه نهان و محلیت دادهی ورودی/خروجی ضعیف میباشد که ممکن است باعث افزایش نرخ
فقدان شود.
دو روش قراردادی :بسیاری از چندپردازندههای قابل دسترس تجاری از سیستمهای حافظه براساس گذرگاه
استفاده می کنند .یک گذرگاه یک دستگاه مناسب برای اطمینان از همبستگی حافظه نهان است زیرا به همه
پردازندهها در سیستم اجازه میدهد که تراکنشهای جاری حافظه را مشاهده کنند .اگر یک تراکنش گذرگاه حالت
سازگاری یک شیء ذخیره شده در حافظه نهان محلی را تهدید کند ،کنترل کننده حافظه نهان میتواند عمل مناسب
را برای نامعتبر کردن کپی محلی انجام دهد .قراردادهایی که از این مکانیزم استفاده میکنند تا همبستگی حافظه
نهان را اطمینان دهند قراردادهای جاسوسی 1نامیده میشوند زیرا هر حافظه نهان روی تراکنشهای سایر حافظههای
نهان جاسوسی میکند.
سیستمهای چندپردازنده مقیاسپذیر ،پردازندهها را با استفاده از سیمهای نقطه به نقطه بطور مستقیم یا شبکههای
چندسطحه متصل میکنند .برخالف حالت گذرگاه ،وقتیکه پردازندههای بیشتری به این سیستمها اضافه شوند،
پهنای باند این شبکهها افزایش مییابد .به هر حال ،اینچنین شبکههایی مکانیزم جاسوسی مناسبی ندارند و قابلیت
پخش مؤثری را فراهم نمیکنند .در چنین سیستمهایی ،مشکل همبستگی حافظه نهان میتواند با استفاده از انواع
مختلف شماتیکهای دایرکتوری حل شود.
در حالت کلی ،یک قرارداد همبستگی حافظه نهان شامل مجموعهای از حالتهای ممکن در حافظههای نهان
محلی ،حالت حافظه مشترک ،و انتقال حالت انجام شده با پیامهای منتقل شده از طریق شبکه اتصالی به منظور
نگه داشتن همبستگی حافظه نهان میباشد .در زیر ابتدا قراردادهای جاسوسی و سپس قراردادهای براساس
دایرکتوری را توصیف میکنیم .این قراردادها روی نرمافزار ،سختافزار یا ترکیبی از هر دو برای پیادهسازی تکیه
دارند .همبستگی حافظه نهان میتواند در یک TLBیا به کمک کامپایلر اجرا شود.
در استفاده از حافظههای نهان خصوصی انجمنی با پردازندههایی که به یک گذرگاه مشترک متصل هستند دو روش
برای حفظ سازگاری حافظه نهان ارائه شده است :سیاست نوشتن-نامعتبر 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 I I حافظههای نهان
(الف) کپیهای سازگار از بلوک Xدر حافظه مشترک و سه حافظه نهان پردازنده (ب) بعد از یک عمل نوشتن-نامعتبر توسط P1
’X حافظه
مشترک
گذرگاه
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
)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
Read-Blk
کثیف رزرو
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+اصالح شدهِ قرار داد گودمن است.
قرارداد همبستگی جاسوسی برای تراکنشهای متصل شده کار میکند .برای تراکنشهای روی چندین سگمنت
گذرگاه ،ماژولهای رابط اضافی مورد نیاز میشود .شکل 14-7یک معماری چندپردازنده حافظه مشترک ،تراکنش
مجزا را نشان میدهد.
این سیستم توسعهای از معماری حافظه-مشترک با ماژولهای عامل حافظه نهان و عامل حافظه میباشد .یک
عامل حافظه نهان تراکنشهای مجزا را استفاده میکند تا همه حقوق و مسئولیتهای تعدادی ماژول حافظه نهان
دور را تعهد کند .عاملهای حافظه نهان باید تگهایی را برای تعیین حاالت بلوک حافظه نهان نگه دارند.
به طور مشابه ،یک عامل حافظه تراکنش مجزا را استفاده میکند تا همه حقوق و مسئولیتهای بعضی ماژولهای
حافظه دور را تعهد کند .یک عامل حافظه یک تراکنش را تقسیم میکند تا جوازهای خواندن و نوشتن را برای
مکانی که برای یک سگمنت گذرگاهی که روی آن قرار دارد انتساب دهد .همچنین باید نامعتبرسازیهای خارجی
یا تداخالت را به سگمنت گذرگاه عبور دهد .تراکنشهای مجزا برای تکمیل نامعتبرسازیهای تأخیری استفاده شده
است.
گذرگاه 2
گذرگاه 1 پردازنده
عامل حافظه نهان عامل حافظه نهان
حافظه نهان
Future bus+
گذرگاه3 گذرگاه4
همبستگی 1حافظه نهان چندسطحه :برای حفظ سازگاری 2بین کپیهای حافظه نهان در سطوح مختلف،
Wilsonتوسعهای از قرارداد نوشتن-نامعتبر استفاده شده روی یک گذرگاه تک را پیشنهاد داد .سازگاری بین
کپیهای حافظه نهان در یک سطح مشابه به آنچه توضیح دادیم حفظ میشود .سازگاری حافظههای نهان در سطوح
مختلف در شکل 3-7نشان داده شده است.
یک نامعتبرسازی به منظور نامعتبر کردن همه کپیهای حافظههای نهان مشترک در سطح 2باید بطور عمودی به
باال و پایین منتشر شود .فرض کنید پردازنده P1یک درخواست نوشتن را منتشر کند .درخواست نوشتن به طرف
باال تا باالترین سطح منتشر میشود و کپیهای c18, c16, c22, c20را نامعتبر میکند .این عمل در شکل با
پیکان از c11تا همه کپیهای سایهدار نشان داده شده است.
حافظههای نهان سطح باال مثل C20بلوکهای کثیف تحتانیشان را ردیابی میکنند .یک درخواست خواندن منتشر
شده توسط ،P7به باالی سلسله مراتب منتشر میشود زیرا هیچ کپی وجود ندارد .وقتیکه به سطح باال میرسد،
حافظه نهان C20یک درخواست تخلیه را به سمت پایین به حافظه نهان C11میفرستد و کپی کثیف برای حافظه
نهان خصوصی پردازنده P7تهیه میشود .نکته اینکه حافظههای نهان سطح باالتر مثل فیلترهایی برای کنترل
سازگاری استفاده میشوند .دستور نامعتبرسازی یا درخواست خواندن به سمت پایین در خوشههایی که شامل یک
کپی از بلوک مربوطه نیستند منتشر نمیشود .حافظه نهان C21نیز به روشی مشابه عمل میکند.
کارایی قرارداد :کارایی هر قرارداد جاسوسی بطور زیادی وابسته به الگوهای بارکاری و بازدهی پیادهسازی است.
فکر اصلی برای استفاده از مکانیزم جاسوسی به خاطر کاهش ترافیک گذرگاه است با هدف ثانویه کاهش زمان مؤثر
دسترسی-حافظه .اندازه بلوک برای کارایی حافظه نهان در قراردادهای نوشتن-نامعتبر خیلی حساس است اما برای
قراردادهای نوشتن-بروزرسانی خیر.
برای یک سیستم تک پردازنده ،ترافیک گذرگاه و زمان دسترسی حافظه ،بطور عمده با فقدانهای حافظه نهان
مشترک شده است .نرخ فقدان وقتیکه اندازه بلوک افزایش مییابد ،کاهش مییابد .به هر حال وقتیکه اندازه بلوک
به یک نقطه بحرانی میرسد ،نرخ فقدان شروع به افزایش میکند .برای حافظههای نهان بزرگتر ،این نقطه در اندازه
بلوک بزرگتر اتفاق میافتد.
برای یک سیستم که نیازمند مهاجرت پردازه یا همزمانی گستردهای است ،قرارداد نوشتن-نامعتبر بهتر کار میکند.
شبیه سازیهای گسترده نشان میدهند که ترافیک گذرگاه در یک چندپردازنده وقتیکه اندازه بلوک زیاد میشود
ممکن است افزایش یابد .نوشتن-نامعتبر همچنین پیادهسازی اولیه همزمانی را راحت میکند .بطور رایج ،میانگین
تعداد کپیهای حافظه نهان نامعتبر شده در یک چندپردازنده کوچک نسبتاً کوچک است.
1
Cache coherency
2
Consistency
کانون نشر علوم | 398
قرارداد نوشتن-بروزرسانی نیازمند قابلیت پخشی گذرگاه است .این قرارداد همچنین میتواند اثر پینگ-پنگ را روی
دادههای مشترک بین چندین حافظه نهان اجتناب کند .کاهش اشتراک داده ترافیک گذرگاه را در یک چندپردازنده
نوشتن-بروزرسانی کم میکند .فقط از طریق ردیابی برنامههای زیادی میتوان رفتار حافظه نهان ،نرخ اصابت،
ترافیک گذرگاه ،و زمان دسترسی مؤثر حافظه را آشکار کرد.
یک قرارداد نوشتن-نامعتبر ممکن است منجر به ترافیک گذرگاه به خاطر فقدانهای خواندن شود که از پردازندهای
که یک متغیر را بروز میکند و سایر پردازندهها میخواهند متغیر را بخوانند ناشی میشود .قرارداد نوشتن-بروزرسانی
ممکن است عناصری را در حافظههای نهان دور بروز کند که هیچگاه توسط سایر پردازندهها استفاده نشود .در
حقیقت این مشکالت محدودیتهای اضافی در استفاده از گذرگاهها برای ساخت چندپردازندههای بزرگ ایجاد
میکنند.
وقتی که یک شبکه چندسطحه برای ساخت یک چندپردازنده بزرگ با صدها پردازنده استفاده میشود ،قراردادهای
حافظه نهان جاسوسی باید برای استفاده از قابلیتهای شبکه اصالح شوند .چون همه پخشی در یک شبکه
چندسطحه گران تمام میشود ،دستورات سازگاری فقط به حافظههای نهانی که یک کپی از بلوک حافظه نهان را
نگه می دارند فرستاده خواهند شد .این منجر به قراردادهای براساس دایرکتوری برای چندپردازندههای متصل شده
به شبکه میشود.
ساختارهای دایرکتوری :در یک شبکه چندسطحه ،همبستگی حافظه نهان با استفاده از دایرکتوری حافظه نهان
به منظور ذخیره اطالعات در جایی که کپیهای بلوکهای حافظه نهان قرار دارند انجام میشود .انواع قراردادهای
براساس دایرکتوری در چگونگی اطالعات دایرکتوری و اینکه چه اطالعاتی در دایرکتوری ذخیره میشوند با یکدیگر
فرق میکنند.
،)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
حافظه مشترک
X
P1 P2 P3
(الف) سه حالت یک دایرکتوری نگاشت کامل
حافظه نهان حافظه نهان حافظه نهان حافظه نهان حافظه نهان حافظه نهان
X: data X: data X: data X: data
حافظه نهان حافظه نهان حافظه نهان حافظه نهان حافظه نهان حافظه نهان
اشارهگرهای دایرکتوری در یک قرارداد 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روش سوم تخلیه حافظه نهان است هرگاه که یک همزمانی اجرا شود .این ممکن است با
پردازش تراکنش سیستمهای چندپردازنده بهتر کار کند .تخلیه حافظه نهان کُند است مگر اینکه سخت افزار خاصی
استفاده شود .این روش مشکالت مهاجرت پردازه و ورودی/خروجی را حل نمیکند.
تخلیه میتواند بطور انتخابی توسط برنامه نویس یا کامپایلر به منظور افزایش بازدهی استفاده شود .تخلیه حافظه
نهان در همزمانی ،ورودی/خروجی و مهاجرت پردازه می تواند بدون شرط یا انتخابی اجرا شود .تخلیه حافظه نهان
اغلب بیشتر با حافظههای نهان آدرس مجازی استفاده میشود.
همزمانی شکل خاصی از ارتباطات است که اطالعات کنترلی بجای داده بین پردازههای ارتباطی واقع در پردازنده-
های مشابه یا متفاوت تعویض میشوند .همزمانی ترتیب درست پردازندهها را اجباری میکند و دسترسی انحصاری
به داده نوشتنی را اجباری میکند .همزمانی میتواند در نرمافزار ،میانافزار و سختافزار بین اشتراک داده و اطالعات
کنترلی حافظه پیادهسازی شود.
سیستمهای چندپردازنده مکانیزمهای سختافزاری را برای پیادهسازی عملیات همزمانی سطح پایین یا ابتدایی
استفاده میکنند .از مکانیزمهای سطح نرمافزار ( )OSمثل سمافورها یا مانیتورها میتوان نام برد.
عملیات اتمیک :اکثر چندپردازندهها به مکانیزمهای سختافزاری خاصی مجهز شدهاند تا عملیات اتمیک مثل
خواندن ،نوشتن یا عملیات خواندن-اصالح-نوشتن که میتوانند برای پیادهسازی بعضی شکلهای همزمانی استفاده
1
Uncacheable Data
2
Cache Flushing
کانون نشر علوم | 406
شوند ،را اجباری کنند .در کنار عملیات حافظه اتمیک ،بعضی وقفههای بین پردازنده میتواند برای اهداف همزمانی
استفاده شوند .به عنوان مثال ،شکلهای همزمانی Test&Set(lock) ،و ) Reset(lockدر زیر توصیف می-
شوند:
)Test & Set(lock
;Templock; lock1
;Return temp
)Reset(lock
;Lock0
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ب) نشان داده شده است پیادهسازی میکنند .بافرهای فلیت در مسیریابهای سخت
افزاری الحاقی به گرهها استفاده می شوند .انتقال از یک گره منبع به گره مقصد از طریق یک رشته از مسیریابها
انجام میشود.
همه فلیتها در بسته مشابه به ترتیب به طریقی خطلوله شده و مجزا منتقل میشوند .بسته را میتوان مثل یک
قطار روی ریل با یک ماشین موتور (هدر فلیت) که به رشتهای طوالنی از واگنها (فلیتهای داده) دید.
فقط فلیت هدر میداند که قطار (بسته) به کجا میرود .همه فلیتهای داده (واگنها) باید از فلیت هدر تبعیت کنند.
بستههای مجزا میتوانند در طول ارسال بههم متصل شوند به هر حال ،فلیتها از بستههای مختلف نمیتوانند با
هم ترکیب شوند در غیراینصورت به مقصد غلط میروند .در زیر اثبات میکنیم که مسیریابی خزشی تأخیری تقریباً
مستقل از فاصله بین منبع و مقصد دارد.
گره منبع گره مقصد
بافر فلیت
گرههای میانی
وقتیکه مسیریاب دریافت کننده ( )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
)
براساس تخمین داده شده ،مقدار نوعی TSFبین 2000تا 6000میکرو ثانیه است در حالیکه مقدار نوعی ،TWH
5میکروثانیه یا کمتر است .شماتیک ذخیره و جلورانی اغلب توسط نرمافزار کنترل میشود در حالیکه شماتیک خزشی
کامالً مسیریابی سختافزاری است و بصورت خطلوله است.
مسأله -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در شکل زیر برچسب خوردهاند.
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
پردازنده و شش ماژول حافظه در زیر نشان داده شده است .فرض کنید همه قطعات اندازه دانه مشابهی دارند و
زمان اجرای برابری دارند .وقتیکه دو یا بیشتر پردازنده سعی به دسترسی ماژول حافظه مشابهی در یک زمان دارند،
در خواست پردازنده با شماره کمتر برآورده میشود و سایر پردازندهها به مراحل زمانی بعدی موکول میشوند.
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://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شبیه
یک پردازنده برداری استاندارد است که شامل این واحدها است .ثباتهای برداری و اسکالر تعداد کافی پورت خواندن و نوشتن برای چندین
عمل برداری همزمان دارد .یک مجموعه از سوئیچهای کراسبار این پورتها را به ورودیها و خروجیهای واحدهای عملیاتی متصل
میکنند.
• واحد 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
با یک دستور برداری ،سیستم میتواند عملیات روی عناصر داده برداری را به روشهای زیادی انجام دهد ،شامل
عملیات روی اجزاء زیادی بطور همزمان .این انعطاف پذیری به طراحیهای برداری اجازه میدهد واحدهای اجرایی
| 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
زمان اجرای بردار :زمان اجرای یک رشته عملیات برداری عمدتاً وابسته به سه فاکتور است )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
منبع دیگر سربار که مهمتر از محدودیت انتشار است نیز موجود است .مهمترین منبع سربار که با مدل چایم نادیده
گرفته می شود زمان شروع بردار است .زمان شروع توسط تأخیر خطلوله واحد عملیاتی برداری مشخص میشود.
برای ،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 ،VMIPSاست ،بعید است که با طول بردار واقعی در یک برنامه تطابق داشته باشد .بعالوه ،در یک
برنامه واقعی طول یک عمل برداری خاص معموالً در زمان کامپایل ناشناخته است .در حقیقت ،یک قطعه کد ممکن
است طول بردار متفاوتی نیاز داشته باشد .به عنوان مثال کد زیر را مد نظر قرار دهید:
کانون نشر علوم | 430
اگر مقدار 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باعث وقوع وابستگی کنترل در داخل حلقه میشوند.
همچنین ،با استفاده از قابلیتهایی که تاکنون دیدهایم نمیتوانیم ماتریسهای خلوت را پیادهسازی کنیم .ابتدا
استراتژیهای مربوط به اجرای شرطی را بحث میکنیم و بحث ماتریسهای خلوت را به بعد موکول میکنیم.
توسعه رایج برای این قابلیت کنترل بردار-پوشش است .ثباتهای پوشش اجرای شرطی هر عملِ عنصر در یک
دستور برداری را تهیه میکنند .کنترل بردار-پوشش از یک بردار بولین برای کنترل اجرای یک دستور برداری
استفاده می کند ،شبیه دستورات اجرا شده شرطی که از یک شرط بولین برای تشخیص اینکه چه موقع یک دستور
اسکالر اجرا شود استفاده میکنند .وقتیکه ثبات پوشش-بردار فعال باشد ،هر دستور برداری اجرا شده فقط روی
عناصر برداری عمل میکند که بیت مرتبط در ثبات پوشش-بردار یک باشد .ورودیهای ثبات بردار مقصد که
متناظر با صفر در ثبات پوشش هستند توسط عمل برداری تحت تأثیر قرار نمیگیرند .پاک کردن ثبات پوشش-
بردار کل آن را به یک تنظیم میکند و باعث میشود دستورات برداری بعدی روی همه عناصر بردار عمل کنند.
کانون نشر علوم | 432
میتوان از کد زیر برای حلقه قبلی استفاده کرد ،با فرض اینکه آدرس شروع Xو Yبه ترتیب در Rxو Ryقرار
دارند:
همانطور که در بخش 4-8خواهیم دید ،یک تفاوت بین پردازندههای برداری و GPUها روش مدیریت دستورات
شرطی میباشد .پردازندههای برداری ثباتهای پوشش را به عنوان قسمتی از معماری دارند و روی کامپایلر برای
دستکاری صریح ثباتهای پوشش تکیه دارند .در مقایسهGPU ،ها از سخت افزار برای دستکاری ثباتهای پوشش
داخلی استفاده میکنند که برای نرم افزار GPUنامرئی است .در هر دو حالت ،سخت افزار برای اجرای یک عنصر
برداری چه پوشش صفر باشد یا یک زمان صرف میکند ،بنابراین وقتیکه از پوشش استفاده میشود نرخ GFLOPS
تنزل میکند.
معموالً ،هزینه راهاندازی واحدهای 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
فاصله ی عناصر مجزا از هم که باید در یک ثبات جمع شوند استراید نامیده میشود .در این مثال ،ماتریس ،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پالس ساعت به ازای هر عنصر
خواهد بود.
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باید ترتیب این آدرسها
را در طول اجرا تشخیص دهد تا گردآوری و پخش استراید واحد دسترسی حافظه کاراتر شود.
نگارش با تذکر باعث ایجاد حصول سطح برداری سازی قابل توجهی شده است که کامپایلر به تنهایی نمیتوانست
آنرا بدست آورد با این بهینهسازی همه برنامههای محک بیشتر از ٪50برداری شدهاند .میانه بهینه سازی از ٪70
به ٪90بهبود یافته است.
در مقایسه با معماری های برداری ،که مجموعه دستور زیبا و ظریفی دارند و کامپایلرهای برداری از آنها استفاده
میکنند ،توسعه یافته 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
برنامهنویسی 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
1
Loop Carried Dependence
کانون نشر علوم | 444
سخت افزار GPUاجرای موازی و مدیریت نخ را راهاندازی میکند؛ و این توسط برنامه کاربردی یا سیستم عامل
انجام نمیشود .برای سادهسازی زمانبندی توسط سختافزار CUDA ،نیازمند این است که بلوکهای نخ قادر باشند
مستقالً و به هر ترتیبی اجرا شوند .بلوکهای نخ مختلف نمیتوانند مستقیماً باهم ارتباط برقرار کنند ،هرچند که
میتوانند با استفاده از عملیات اتمیک در حافظه سراسری هماهنگ شوند.
بزودی خواهیم دید که بسیاری از مفاهیم سختافزار GPUدر CUDAواضح نیستند .این از دید سودمندی
برنامهنویس چیز خوبی است ،اما اکثر برنامهنویسان در حال استفاده از GPUبجای CPUبرای بدست آوردن
کارایی میباشند .برنامهنویسان حرفهای باید موقعیکه در CUDAکد مینویسند ،سختافزار GPUرا به خاطر
داشته باشند .به دالیلی که مختصراً توضیح داده شد ،آنها میدانند که نیازمند گروه بندی 32نخ در جریان کنترل
هستند تا بهترین کارایی را از پردازندههای SIMDی چندنخی بدست آورند همچنین تعداد نخ زیادی به ازای هر
پردازنده SIMDی چندنخی به منظور پنهان کردن تأخیر DRAMایجاد کنند .همچنین باید آدرسهای داده را
در یک یا چند بلوک حافظه به منظور بدست آوردن کارایی مورد انتظار از حافظه بطور محلی حفظ کنند.
شبیه بسیاری از سیستمهای موازی ،بین سودمندی و کارایی در CUDAمصالحهای وجود دارد تا به برنامهنویسان
کنترل صریحی از سختافزار بدهد .البته این مسأله در اکثر محاسبات موازی وجود دارد.
با توجه به مطالب گفته شده در باال میتوانیم توضیح دهیم که چرا 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که در طول یک خطسیر اجرا میشود. دستور PTX دستور برداری دستور SIMD
یک پردازنده SIMDی چندنخی که نخهایی از دستورات چندپردازنده رشتهای پردازنده برداری پردازندهی
SIMDرا مستقل از سایر پردازندههای SIMDاجرا میکند ()streaming (چندنخی) SIMDی
چندنخی
چندین بلوک نخ ( بدنههای حلقههای برداری شده) را به موتور نخ گیگا پردازنده اسکالر زمانبند بلوک
یک گرید 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ثبات را استفاده کنند.
درحالیکه تشابههایی بین ریزمعماری x86و PTXوجود دارد تفاوت این است که در x86این ترجمه در سخت
افزار در طول زمان اجرا اتفاق میافتد درحالیکه در GPUدر زمان بارکردن و در نرمافزار اتفاق میافتد.
شکل یک دستور PTXبصورت زیر است:
;Opcode.type d,a,b,c
که dعملوند مقصد است؛ a,b,cعملوندهای منبع هستند؛ و نوع عمل یکی از موارد زیر است:
عملوندهای منبع ثباتهای -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
در سطح اسمبلی ،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ی تولید میکند که به باالی حلقه پرش میکند.
شکل 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خارجی صرف میکنند.
چندنخی دارد و یک حافظه نهان 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ی چندنخی ،دستورات اتمیک را مدیریت میکنند.
یک پردازنده 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
تجرید برنامه
مفاهیم مشابه هستند البته GPUاصطالحات کمتری استفاده میکند. گرید برداری
شده
چون یک دستور برداری فقط دو سیکل در Fermiو چهار سیکل در
--- چایم
Teslaمیگیرد تا کامل شود ،یک چایم در GPUها کوتاه است.
یک دستور PTXاز یک نخ SIMDبه همه خط سیرهای SIMD دستور
دستور PTX
پخش میشود ،مشابه یک دستور برداری است. برداری
همه بارکردنها و ذخیره کردنهای GPUگردآوری و پخش هستند، load/storeسراسری گردآوری/
شیء ماشین
ولی هر خط سیر SIMDیک آدرس منحصر میفرستد. ()ld.global,st.global پخش
ثباتهای پوشش برداری صریحاً قسمتی از حالت برداری هستند ،در
حالیکه ثباتهای پوشش GPUدر داخل سخت افزار هستند.سخت ثباتهای پیشبینی و ثباتهای ثباتهای
افزار شرطی GPUیک خصوصیت جدید ماورای ثباتهای پیشبینی پوشش داخلی پوشش
به منظور مدیریت پویای پوششها اضافه میکند.
اینها مشابه هستند ،اما پردازندههای SIMDمتمایل به داشتن تعداد
زیادی خط سیر هستند ،چند پالس ساعت به ازای هر خط سیر تا کامل
شدن یک بردار میگیرند ،در حالیکه معماریهای برداری تعداد کمی پردازنده
پردازنده SIMDی چندنخی
خط سیر دارند و برای تکمیل شدن یک بردار تعداد زیادی پالس ساعت برداری
میگیرند .آنها همچنین چندنخی هستند در حالیکه بردارها معموالً
نیستند.
در پردازنده SIMDی چندنخ زمانبند بلوک نخ است که بلوکهای نخ
را به آن اختصاص میدهد ،در حالیکه GPUعملیات برداری وجود پردازنده
شکل :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پشتیبانی نخ سخت افزاری ،و اندازه حافظه
نهان ،تفاوتهای معماری بسیاری نیز وجود دارند .پردازنده اسکالر و دستورات 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
این دو وابستگی ها متفاوتند و اثرات متفاوتی دارند .برای مشاهده تفاوت آنها ،اجازه دهید فرض کنیم فقط یکی از
این وابستگیها در هر لحظه وجود دارد :چون وابستگی عبارت S1روی تکرار قبلی S1است ،این وابستگی حمل
شده حلقه است .این وابستگی مجبور میکند که تکرارهای متوالی این حلقه بصورت ترتیبی اجرا شوند.
وابستگی دوم ( S2وابسته به S1است) داخل یک تکرار است و حمل شده توسط حلقه نیست .بنابراین ،اگر این
تنها وابستگی باشد ،چندین تکرار حلقه می توانند بصورت موازی اجرا شوند ،و هر تکرار دستورات در یک حلقه به
ترتیب نگه داشته میشوند .این نوع وابستگی را در فصل 6دیدیم که بازکردن حلقه قابلیت استخراج موازات را
داشت .این وابستگیهای بین-حلقه 1رایج هستند مثل مرتب سازی آرایهها.
همچنین این امکان وجود دارد که وابستگی حمل شده-حلقه داشته باشیم ولی از موازات جلوگیری نکند ،به مثال
8-6دقت کنید.
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ممکن است هنوز هم بهرهبرداری از یک مقدار نسبتاً خوب
از موازات امکانپذیر باشد.
در کل چگونه کامپایلر وابستگیها را تشخیص میدهد؟ تقریباً همه الگوریتمهای آنالیز وابستگی روی این فرض
که اندیسهای آرایه نسبی هستند کار میکنند .به عبارت سادهتر ،یک اندیس آرایه یک-بعدی نسبی است اگر بتواند
به شکل 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
آنالیز وابستگی یک فنآوری بحرانی برای بهرهبرداری از موازات است .برای تشخیص موازات سطح حلقه ،آنالیز
وابستگی یک ابزار پایه است .کامپایل مفید برنامهها برای کامپیوترهای برداری ،کامپیوترهای ،SIMDیا
چندپردازندهها بطور بحرانی وابسته به این آنالیز است .عیب عمده آنالیز وابستگی آن است که تحت مجموعه
محدودی از شرایط ،مثل مراجعات داخل یک حلقه تودرتو و توابع اندیس نسبی اِعمال میشود .بنابراین ،شرایط
زیادی وجود دارد که آنالیز وابستگی آرایهگرا نمیتواند به ما بگوید ما چه میخواهیم بدانیم ،به عنوان مثال ،آنالیز
دسترسیها با اشارهگرها ،نسبت به اندیسهای آرایه سختتر است( .این دلیل ارجحیت فرترن بر C,C++برای
بسیاری از کاربردهای علمی طراحی شده برای کامپیوترهای موازی میباشد ).بطور مشابه ،آنالیز مراجعات بین
فراخوانیهای حلقه واقعاٌ سخت است .بنابراین ،در حالیکه آنالیز کد نوشته شده در زبانهای ترتیبی مهم است ،ما
نیازمند روشهایی مثل OpenMPو CUDAهستیم که میتوانیم صریحاً در آن حلقههای موازی بنویسیم.
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
NVIDIA Tegra 2برای وسایل موبایل هر دوی پردازنده سیستم و GPUرا در یک تراشه قرار میدهد که از
یک حافظه فیزیکی استفاده میکنند .پردازنده سیستم ARM Cortex-A9دو هستهای است ،که هر هسته
اجرای خارج از ترتیب را با دو دستور منتشر شده در هر پالس انجام میدهد .هر هسته شامل یک واحد ممیز شناور
اختیاری است.
GPUشتاب دهنده سخت افزاری برای سایه زنی پیکسل قابل برنامه نویسی ،نورپردازی قابل برنامه نویسی ،و
گرافیک 3بعدی دارد اما شامل خواص محاسباتی GPUمورد نیاز برای اجرای برنامههای CUDAو OpenCL
نیست.
اندازه )7.5×7.5 mm( 57mm dieدر یک پردازه 40nm TSMCمیباشد ،و شامل 242میلیون 2
همه ویژگیهای فیزیکی GTX 480 dieبطور مؤثری بزرگ است :شامل 3میلیارد ترانزیستور است ،اندازه دای
(22.8×22.8mm) 520mm2در یک پردازه 40nm TSMCمیباشد و توان رایج 167وات است .کل
ماژول 250وات است که شامل GPU, GDRAM, fans, power regulatorsو غیره میباشد.
نمودارهای 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://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -
خ فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.
فصل نهم موازات سطح –نخ
مح
ما تمام توسعه صوالتمان را هب طرحاهی چند هستهای رد آینده اختصاص دادهایم .ما معتقدیم که این نقطه عطفی رد صنعت است.
توصیف جهت آینده اینتل در گروه توسعه دهندگان اینتل در سال 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
یک یا چند سطح یک یا چند سطح یک یا چند سطح یک یا چند سطح حافظههای
حافظه نهان حافظه نهان حافظه نهان حافظه نهان نهان خصوصی
شکل :1-9ساختار پایه چندپردازنده حافظه-مشترک متمرکز براساس یک تراشه چندهستهای .چند زیرسیستم پردازنده-حافظه نهان،
حافظه فیزیکی مشابهی را به اشتراک می گذارند ،معموالً یک سطح از حافظه نهان مشترک ،و یک یا چند سطح از حافظه نهان به ازای
هر هسته خصوصی است .خصوصیت کلیدی این معماری ،زمان دسترسی برابر به همه حافظهها از همه پردازندهها است .در یک چندتراشه
حافظه نهان مشترک حذف میشود و گذرگاه یا شبکه میان ارتباطی که پردازندهها را به حافظه وصل میکند بین تراشهها کار میکند.
روش دوم شامل چندپردازندههایی با حافظه فیزیکی توزیع شده است که به آن حافظه مشترک توزیع شده )(DSM
میگویند .شکل 2-9این مدل را نشان میدهد .برای پشتیبانی از تعداد بیشتری پردازنده ،حافظه باید بین پردازندهها
توزیع شده باشد نه متمرکز ،در غیر اینصورت سیستم حافظه نمیتواند با سرعت به تقاضاهای تعداد زیادی پردازنده
پاسخ دهد .اگر کارایی پردازنده و انجمنپذیری در پهنای باند حافظه پردازنده بهبود نیابد ،نمیتوان تعداد
چندپردازندهها را در حافظه توزیع شده افزایش داد .معرفی پردازندههای چندهستهای به این معنی است که حتی
چندپردازندههای دو-تراشه حافظه توزیع شده استفاده میکنند و برای اتصال آنها از شبکههای ایستا و پویا استفاده
میشود( .فصل .)2
توزیع حافظه بین گرهها پهنای باند را افزایش داده و تأخیر به حافظه محلی را کاهش میدهد .به یک چندپردازنده
DSMیک NUMAنیز می گویند زیرا زمان دسترسی وابسته به مکان یک کلمه داده در حافظه است .عیب
کلیدی یک DSMاین است که ارتباط داده بین پردازندهها گاهی اوقات خیلی پیچیده میشود و DSMنیازمند
توجه بیشتر نرم افزار برای افزایش پهنای باند حافظه است .چون همه چندپردازندههای چندهستهای با بیشتر از یک
تراشه پردازنده ،از حافظه توزیع شده استفاده میکنند ،عملیات حافظه توزیع شده چند پردازنده را از این دید توضیح
میدهیم( .توضیحات بیشتر در این زمینه در فصل اول ارایه شده است).
در هر دو معماریهای DSMو ،SMPارتباطات بین نخها از طریق یک فضای آدرس مشترک اتفاق میافتد ،به
این معنی که یک مراجعه حافظه می تواند توسط هر پردازنده به هر مکان حافظه انجام شود ،با فرض اینکه حقوق
| 483 فصل نهم :موازات سطح نخ
دسترسی صحیح داشته باشند .اصطالح حافظه مشترک مجتمع با SMPو DSMاشاره به این حقیقت دارد که
فضای آدرس مشترک است.
در مقایسه ،خوشهها و کامپیوترهای مقیاس ورهاوس فصل بعد شبیه کامپیوترهای منفرد متصل شده توسط یک
شبکه میباشند و حافظه یک پردازنده نمیتواند توسط پردازنده دیگری بدون کمک قراردادهای نرمافزاری اجرا شده
روی هر دو پردازنده دسترسی شود .در چنین طرحهایی ،قراردادهای انتقال -پیام برای ارتباط داده بین پردازندهها
استفاده میشوند( .فصل )7
MPچند MPچند MPچند MPچند
هستهای هستهای هستهای هستهای
شکل :2-9معماری پایهی یک چندپردازنده حافظه-توزیع شده در سال 2011که معموالً دربرگیرنده یک تراشه چندپردازنده چندهستهای
با حافظه و I/Oالحاقی و یک رابط به یک شبکه میان ارتباطی است که همه گرهها را به هم متصل میکند .هر هسته پردازنده کل
حافظه را به اشتراک می گذارد ،هرچندکه زمان دسترسی به حافظه الحاقی به تراشه هسته سریعتر از زمان دسترسی به حافظه دور است.
کاربرد چندپردازندهها از اجرای کارهای مستقل بدون ارتباط ،تا اجرای برنامههای موازی که نخها باید برای اتمام
کار ارتباط برقرار کنند میباشد .دو مانع مهم ،که هر دو با قانون امدال قابل توضیح است ،پردازش موازی را چالش
برانگیز میکند .درجه مشکل بودن یا سادگی این موانع توسط کاربرد و معماری مشخص میشود.
اولین مانع طریقه عمل با موازات محدود قابل دسترس در برنامهها است ،و دومین مانع از هزینه نسبتاً باالی
ارتباطات نشأت میگیرد .محدودیت در موازات قابل دسترس ،رسیدن به افزایش سرعت در هر پردازنده موازی را
مشکل میکند که در مثال 1-9نشان داده شود.
مثال :1-9فرض کنید که میخواهید به افزایش سرعت 80با 100پردازنده برسید .چه درصدی از محاسبات
اصلی باید ترتیبی باشد؟
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 فصل نهم :موازات سطح نخ
این مشکالت یعنی موازات ناکافی و تأخیر طوالنی دسترسی دور ،دو تا از بزرگترین چالشها در استفاده از
چندپردازندهها هستند .مسأله موازات ناکافی میتواند بطور ابتدایی توسط نرمافزار با الگوریتمهای جدید که کارایی
موازات بهتری ارائه میدهند بهبود یابد .کاهش اثر تأخیر طوالنی راه دور میتواند با معماری و توسط برنامهنویس
کم شود .به عنوان مثال ،میتوانیم فرکانس دسترسیهای راه دور را یا با مکانیزمهای سخت افزاری ،مثل ذخیره
کردن دادههای مشترک در حافظه نهان ،یا مکانیزمهای نرمافزاری ،مثل ساختار بندی مجدد دادهها بطوریکه
دسترسیهای بیشتری محلی شوند ،کاهش دهیم .می توان تأخیر را با استفاده از چندنخی یا با استفاده از پیش
برداشت کم کرد .اکثر این فصل تمرکز ما روی تکنیکهای کاهش اثر تأخیر ارتباطی دور است.
ماشینهای حافظه-مشترک متقارن معموالً ذخیره کردن دادههای خصوصی و مشترک در حافظه نهان را پشتیبانی
میکنند .دادههای خصوصی توسط یک پردازنده استفاده میشوند ،در حالیکه داده مشترک توسط چندپردازنده استفاده
میشوند ،که لزوماً نیازمند ارتباط از طریق پردازندهها برای خواندن و نوشتن داده مشترک است .وقتیکه یک داده
خصوصی در حافظه نهان ذخیره میشود ،مکان آن به حافظه نهان مهاجرت میکند ،و باعث کاهش زمان متوسط
دسترسی و همچنین پهنای باند حافظه مورد نیاز میشود .چون هیچ پردازنده دیگری از داده استفاده نمیکند ،رفتار
برنامه مشابه یک تکپردازنده است .وقتیکه داده مشترک در حافظه نهان ذخیره میشود ،مقدار مشترک ممکن
است در چندین حافظه نهان تکرار شود .به منظور کاهش تأخیر دسترسی و پهنای باند حافظه مورد نیاز ،این تکرار
باعث کاهش تداخل برای خواندن همزمان چند پردازنده میشود .ذخیره کردن دادههای مشترک در حافظه نهان
کانون نشر علوم | 486
باعث ایجاد مسأله جدیدی بنام همبستگی حافظه نهان میشود .که این موضوع بطور مفصل در بخش 2-7بررسی
شد و جهت یادآوری از قراردادهای تجسس یا براساس دایرکتوری جهت غلبه بر این مسأله استفاده میشود:
براساس دایرکتوری -وضعیت اشتراک یک بلوک خاص از حافظه فیزیکی در یک مکان نگه داشته •
میشود که به آن دایرکتوری میگویند .دو نوع دایرکتوری داریم .در SMPدایرکتوری متمرکز و در
DSMدایرکتوری توزیع شده استفاده میشود.
جاسوسی -بجای نگه داشتن حالت اشتراک در یک دایرکتوری ،هر حافظه نهانی که یک کپی از یک •
بلوک داده از حافظه فیزیکی دارد می تواند وضعیت اشتراک یک بلوک را ردیابی کند .در یک ،SMP
حافظههای نهان معموالً همگی از طریق رسانه همهپخشی (مثالً یک گذرگاه) قابل دسترس هستند و
همه کنترلهای حافظه نهان رسانه را جاسوسی یا مانیتور میکنند تا مشخص کنند چه موقع آنها یک
کپی از بلوک درخواست داده شده روی گذرگاه یا سوئیچ دارند .از جاسوسی همچنین میتوان به عنوان
قرارداد همبستگی برای چندپردازندههای چندتراشهای استفاده کرد و بعضی طرحها از قرارداد جاسوسی
روی یک قرارداد دایرکتوری در داخل هر چندهسته پشتیبانی میکنند.
هرچه تعداد پردازندهها در یک چندپردازنده زیاد میشود ،یا تقاضاهای هر پردازنده پیشرفت میکند ،هر منبع
متمرکزی در سیستم می تواند یک گلوگاه باشد .با استفاده از اتصال پهنای باند بزرگتر قابل دسترس روی-تراشه و
یک حافظه نهان L3مشترک ،که از حافظه سریعتر است ،طراحان باید چهار تا هشت هسته کارایی-باال را به روشی
متقارن پشتیبانی کنند.
پهنای باند جاسوسی در حافظههای نهان نیز به یک مشکل تبدیل میشود ،زیرا هر حافظه نهان باید هر فقدان روی
حافظه نهان را تست کند .تکرار تگها یک راه حل برای این مشکل است .راه حل دیگر که در بعضی چندهستههای
اخیر قرار دارد ،قرار دادن یک دایرکتوری در بیرونیترین حافظه نهان میباشد .دایرکتوری بطور صریح مشخص
میکند کدام حافظه نهان پردازنده یک کپی از هر عنصر در بیرونیترین حافظه نهان دارد .این روش توسط اینتل
روی i7و سریهای Xeon 7000استفاده میشود .استفاده از این دایرکتوری گلوگاه گذرگاه را حذف نمیکند
ولی از دایرکتوری توزیع شده بهتر است.
چگونه یک طراح میتواند پهنای باند حافظه را برای پشتیبانی پردازندههای بیشتر یا سریعتر افزایش دهد؟ برای
افزایش پهنای باند ارتباطی بین پردازندهها و حافظه ،طراحان چندین گذرگاه را به عنوان شبکه میان ارتباطی استفاده
میکنند ،مثل کراسبار یا شبکههای نقطه-به-نقطه .در چنین طرحهایی سیستم حافظه (چه حافظه اصلی یا یک
حافظه نهان مشترک) می توانند در چندین بانک فیزیکی پیکربندی شوند تا پهنای باند مؤثر حافظه ارتقا یابد در
حالیکه زمان دسترسی یکنواخت به حافظه حفظ شود .شکل 3-9نشان میدهد که چگونه چنین سیستمی وقتیکه
روی یک چند-هسته تک -تراشه پیاده شود ،خواهد بود .هرچندکه چنین روشی برای مجاز بودن بیشتر از چهار
| 487 فصل نهم :موازات سطح نخ
هسته متصل به یک تراشه ممکن است استفاده شود ،اما به خوبی برای یک چند-پردازنده چندتراشه مقیاسپذیر
نیست ،زیرا حافظه به تراشههای چندهسته منفرد الحاق شده است و متمرکز نیست.
یک یا چند سطح یک یا چند سطح یک یا چند سطح یک یا چند سطح
از حافظه نهان از حافظه نهان از حافظه نهان از حافظه نهان
خصوصی خصوصی خصوصی خصوصی
شکل :3-9یک چندپردازنده تک -چندهستهای با دسترسی حافظه یکنواخت از طریق یک حافظه
نهان مشترک بانک شده و یک شبکه میان اتصالی نه یک گذرگاه.
AMD Opteronروش بینابین قرارداد جاسوسی و دایرکتوری ارائه داده است .حافظه مستقیماً به هر تراشه
چندهسته متصل شده است و تا چهار تراشه چند هسته میتوانند متصل شوند .سیستم NUMAاست زیرا حافظه
محلی گاهی اوقات سریعتر است .اپترون قراردارد همبستگیش را با استفاده از لینکهای نقطه-به-نقطه پیادهسازی
میکند تا با سه تراشه دیگر بطور همهپخشی ارتباط برقرار کند .چون لینکهای بین پردازنده مشترک نیستند ،تنها
راهی که یک پردانده می تواند بداند چه موقع یک عمل نامعتبر سازی کامل شده است توسط تصدیق ( )ackصریح
است .بنابراین ،قرارداد همبستگی از همه پخشی برای پیدا کردن کپیهای مشترک استفاده میکند ،شبیه یک
قرارداد جاسوسی ،اما برای تنظیم عملیات از ackشبیه یک قرارداد دایرکتوری استفاده میکند .بعضی نرمافزارها با
چندپردازنده اپترون شبیه UMAرفتار میکنند چون حافظه محلی در اپترون فقط گاهی اوقات سریعتر از حافظه
دور است.
یک قرارداد همبستگی جاسوسی میتواند بدون گذرگاههای متمرکز استفاده شود ،اما هنوز هم نیازمند همه پخشی
است تا حافظههای نهان منفرد را جاسوسی کند .این ترافیک همبستگی حافظه نهان محدودیت دیگری روی
مقیاسپذیری و سرعت پردازندهها ایجاد میکند.
کانون نشر علوم | 488
همانطور که قبالً گفتیم نرخ فقدان تکپردازنده به سه کالس ظرفیت ،اجباری و تداخل تقسیم میشوند .به طور
مشابه فقدانهای نشأت گرفته از ارتباطات بینپردازنده ،که به آنها فقدانهای همبستگی میگویند ،میتوانند به دو
منبع مجزا تقسیم شوند.
اولین منبع که فقدانهای اشتراک درست نامیده می شوند از ارتباط داده از طریق مکانیزم همبستگی حافظه نهان
نشأت می گیرند .در یک قرارداد براساس نامعتبرسازی اولین نوشتن توسط یک پردازنده به یک بلوک حافظه نهان
مشترک منجر به یک نامعتبرسازی میشود که مالکیت آن بلوک را مشخص میکند .به عالوه ،وقتیکه پردازنده
دیگر میخواهد کلمه اصالح شده در آن بلوک حافظه نهان را بخواند ،یک فقدان اتفاق میافتد و بلوک نتیجه منتقل
میشود .هر دوی این فقدانها به عنوان فقدانهای مشترک درست کالس بندی میشوند زیرا مستقیماً از اشتراک
داده بین پردازندهها نشأت میگیرند.
اثر دوم که اشتراک غلط نامیده میشود از یک الگوریتم همبستگی براساس نامعتبر سازی با یک بیت معتبر به ازای
هر بلوک نشأت میگیرد .اشتراک غلط وقتیکه یک بلوک نامعتبر میشود اتفاق میافتد (مراجعات بعدی منتج به
فقدان میشوند) ،زیرا بعضی کلمات در بلوک ،بجز کلمهای که خوانده میشود ،نوشته میشوند .اگر کلمه نوشته
شده واقعاً توسط یک پردازنده که سیگنال نامعتبرسازی را دریافت میکند استفاده شود ،آنگاه مراجعه یک مراجعه
درست است و منجر به یک فقدان مستقل از اندازه بلوک میشود .اگر کلمه نوشته شده و خوانده شده متفاوت باشند
یک نامعتبرسازی منجر به یک مقدار جدید که باید محاوره شود نخواهد شد ،اما فقط منجر به یک فقدان حافظه
نهان اضافی می شود ،بنابراین یک فقدان اشتراک غلط است .در یک فقدان اشتراک غلط ،بلوک به اشتراک گذاشته
میشود ،اما هیچ کلمهای در حافظه نهان واقعاً به اشتراک گذاشته نمیشود ،و فقدان اتفاق نخواهد افتاد اگر اندازه
بلوک یک کلمه باشد .مثال 3-9مسأله را واضحتر میکند.
مثال :3-9فرض کنید کلمات x1و x2در یک بلوک مشابه حافظه نهان باشند ،و در وضعیت مشترک هر دو
پردازنده P1و P2باشند .به رشته رخدادهای زیر دقت کنید ،کدامیک فقدان اشتراک درست ،یک فقدان اشتراک
غلط یا یک اصابت میباشند.
هر فقدانی که اتفاق بیافتد و اندازه بلوک یک کلمه باشد ،یک فقدان اشتراک درست میباشد.
| 489 فصل نهم :موازات سطح نخ
این رخداد یک فقدان اشتراک صحیح است ،زیرا 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 فصل نهم :موازات سطح نخ
مطالعه بعدی یک بارکاری چندبرنامه شده است که شامل هم فعالیتهای کاربر و هم فعالیت OSاست .بارکاری
استفاده شده دو کپی مستقل از فازهای کامپایلِ برنامه محک Andrewمیباشد ،برنامه محکی که یک محیط
نرمافزاری را تقلید میکند .فاز کامپایل شامل یک نگارش دستور makeیونیکس است که با استفاده از 8پردازنده
اجرا میشود .بارکاری برای 5.24ثانیه روی 8پردازنده اجرا میشود ،که 203پردازه را اجرا میکند و 787درخواست
دیسک روی سه سیستم فایل مختلف انجام میدهد .بارکاری با 128MBاز حافظه اجرا میشود و هیچ فعالیت
صفحه بندی اتفاق نمیافتد.
بارکاری سه فاز مجزا دارد ،کامپایل کردن برنامههای محک ،که شامل فعالیتهای محاسباتی قابل توجه ،نصب
فایلهای شیء در یک کتابخانه ،و حذف فایلهای شیء است .فاز آخر بطور کامل توسط 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پردازنده را با استفاده از پارامترهای زیر نشان میدهد:
این بارکاری چندبرنامه شده سقوط کارایی قابل توجهی برای حافظه نهان دستورالعمل برای 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از دانشگاه
استنفورد انجام شده است.
در این زیربخش ،کارایی حافظه نهان را برای بارکاری چندبرنامه شده وقتیکه اندازه حافظه نهان و اندازه بلوک
تغییر میکنند آنالیز میکنیم .به خاطر تفاوتهای بین رفتار پردازههای کرنل و کاربر ،این دو مفهوم را مجزا در نظر
میگیریم .نرخ فقدان کلی در پردازه کاربر توسط کد کاربر تعیین میشود که یک پنجم نرخ فقدان کرنل میباشد.
باوجود اینکه کد کاربر دستورات بیشتری اجرا میکند ،رفتار سیستم عامل میتواند باعث نرخهای فقدان حافظه
نهان بیشتری از پردازههای کاربر به دو دلیلِ اندازه کد بیشتر و کمبود محلیت شود .اوالً ،کرنل همه صفحات را قبل
از تخصیص آنها به کاربر مقدار دهی میکند که بطور قابل توجهی جزء اجباری نرخ فقدان را افزایش میدهد .ثانیاً،
کرنل واقعاً دادهها را به اشتراک میگذارد و بنابراین نرخ فقدان همبستگی زیاد دارد .در مقابل پردازه کاربر فقط
| 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تعداد بایتهای مورد نیاز برای مراجعه داده وقتیکه اندازه بلوک افزایش مییابد هم برای اجزاء کرنل و هم کاربر رشد میکند.
یک دایرکتوری حالت هر بلوک که ممکن است در حافظه نهان ذخیره شود را نگه میدارد .اطالعات داخل
دایرکتوری شامل این است که کدام حافظههای نهان (یا مجموعهای از حافظههای نهان) کپیهایی از بلوک دارند،
چه موقع بلوک کثیف یا غیره است .در داخل یک چندهسته با حافظه نهان خارجی مشترک ( )L3پیادهسازی
شماتیک دایرکتوری ساده است :یک بردار بیتی به اندازه تعداد هستهها برای هر بلوک L3نگه میداریم .بردار بیتی
تعیین میکند کدام حافظههای نهان خصوصی کپیهایی از بلوک موجود در L3را دارند و نامعتبرسازیها فقط به
آن حافظههای نهان فرستاده میشوند .این روش برای یک چندهسته بدرستی کار میکند اگر L3فراگیر باشد و
این شماتیک در Intel i7استفاده میشود.
کانون نشر علوم | 500
راهحل دایرکتوری در یک چندهسته مقیاسپذیر نیست ،حتی اگر از همهپخشی جلوگیری کند .دایرکتوری باید توزیع
شود ،اما توزیع باید به روشی انجام شود که قرارداد همبستگی بداند کجا اطالعات دایرکتوری را برای هر بلوک
حافظه که در حافظه نهان ذخیره شده بیابد .یک روش ،توزیع دایرکتوری در طول حافظه است ،بطوریکه درخواست-
های همبستگی مختلف بتوانند به دایرکتوریهای مختلف بروند همانطور که درخواستهای حافظه مختلف به
حافظه های مختلف میروند .یک دایرکتوری توزیع شده این خصوصیت که وضعیت اشتراک یک بلوک همیشه در
یک مکان مشخصِ شناخته شده است را نگه میدارد .این خصوصیت همراه با نگهداری اطالعاتی که میگویند
کدام گره های دیگر ممکن است بلوک را در حافظه نهان ذخیره کنند باعث اجتناب قرارداد از همه پخشی میشود.
شکل 12-9چندپردازنده حافظه-توزیع شده با دایرکتوریهای اضافه شده در هر گره را نشان میدهد.
پردازنده پردازنده پردازنده پردازنده
چندهسته + چندهسته + چندهسته + چندهسته +
کشها کشها کشها کشها
شکل :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پیادهسازی
میکند:
1
)load linked or load locked (LL
2
)store conditional (SC
کانون نشر علوم | 504
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 فصل نهم :موازات سطح نخ
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فرستاده میشود.
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هشت-هسته
شکل :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برای سه پردازنده چندهستهای وقتیکه تعداد تراشههای پردازنده افزایش مییابد.
نکته اینکه برای این برنامه محک موازی ،تقریباً افزایش سرعت خطی بدست میآید.
،PARSECگاهی اوقات از مزایای نرخ محاسبات و ارتباطات بهره ببرند که وابستگی به هزینه ارتباطات را کاهش
میدهد.
شکل :17-9این نمودار افزایش سرعت برای اجراهای دو و چهار-هسته ای بارهای کاری جاوای موازی و PARSECبدون SMT
را نشان میدهد .این دادهها توسط اسماعیلزاده ] [2011گردآوری شده اند .افزایش سرعت و بازدهی انرژی با میانگین هارمونیک
خالصه شدهاند.
این تفاوتها در افزایش سرعت به تفاوت در بازدهی انرژی منتقل میشود .به عنوان مثال ،برنامههای محک
PARSECبازدهی انرژی را به میزان کمی نسبت به نگارش تک-هسته بهبود میدهند؛ این نتیجه ممکن ازت
بطور قابل توجهی توسط این حقیقت که حافظه نهان L3در اجراهای چندهستهای بطور مفیدتری استفاده میشود
نسبت به حالت تک-هستهای تحت تأث یر واقع شود و هزینه انرژی در هر دو حالت مشابه است .بنابراین برای
برنامههای محک ،PARSECروشهای چندهستهای به آنچه که طراحان انتظار دارند وقتیکه از طرح تمرکز-
روی ILPبه طرح چندهستهای سوئیچ میکنند برسد مثالًّ آن کارایی را به سرعت یا با سرعت بیشتر از توان
مقیاسپذیر میکند که منتج به بازدهی انرژی ثابت یا بهبود یافته میشود .در حالت جاوا ،میبینیم که نه اجراهای
دو هستهای نه چهار هسته ای در بازدهی انرژی بدون ضرر و مزیت هستند به خاطر سطوح افزایش سرعت کمتر
بارکاری جاوا .بازدهی انرژی در حالت جاوای چهار-هستهای بطور معقوالنهای باال است ( .)0.94بنابراین روش
TLPاز روش ILPبرای بهبود کارایی این کاربردها بهتر است.
عنوان مثال ،در چهار-هسته بدون 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://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -
خ فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.
فصل دهم -کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات
سطح-درخواست و سطح-داده
ص شخ
یکصد سال پیش ،شرکتاه روش تولید ربقشان با استفاده از موتوراهی بخار و ژرناتوراهی صی را متوقف کردند و هب شبکه الکتریکی جدید و ل
تغ نج تغ ع
شدند .توان ارزان پمپ شده توسط خدمات الکتریکی فقط طریقه ملکرد مشاغل را ییر نداد .این خدمات یک واکنش ز یرهای و ییرات
اجتماعی را ایجاد کرد که دنیای مدرن را بوجود آورد .امروزه یک انقالب مشاهب رد حال اتفاق است .با استفاده از شبکه محاسباتی سراسری
جت
اینترنتی ،هیزات رپدازش اطالعاتی ،انبوه دادهاه و کد رنم افزاری را هب خاهناهی ما و مشاغل ما پمپ میکنند .رد این زمان محاسبات یک
ازبار شدهاند.
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به اندازه ،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شروع میکنیم.
عالوه بر سرویسهای اینترنتی که روزانه بطور عمومی با آنها مواجه میشویم مثل جستجو ،اشتراک ویدئو ،و شبکه
اجتماعیWSC ،ها همچنین کاربردهای دستهای را مثل تبدیل ویدئو به فرمتهای جدید یا ایجاد اندیسهای
جستجو از خزیدن در وب ،اجرا میکنند.
به عنوان مثال ،یک برنامه MapReduceتعداد وقوع هر کلمه انگلیسی را در مجموعه بزرگی از اسناد محاسبه
میکند .در زیر یک نگارش ساده شده از برنامه موجود است ،که فقط حلقه داخلی را نشان میدهد و فقط یک وقوع
همه کلمات انگلیسی پیدا شده در یک سند را پیدا میکند ]:[Dean and Ghemawat 2008
تابع 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بجای اینکه از همه نیازهای سیستمهای پایگاه داده سنتی (اتمیک بودن،
سازگاری ،جداسازی و دوام) استفاده کند اغلب از سازگاری ریلکس استفاده میکند.
یک رک 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 فصل دهم :کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح-درخواست و سطح-داده
حافظه جانبی
یک طرح طبیعی این است که رک را با سرورها پر کنیم البته مقداری از فضای رک برای سوییچها مورد نیاز است.
این طرح باعث ایجاد یک سؤال میشود حافظه جانبی کجا قرار میگیرد؟ از دید ساخت سختافزار ،سادهترین
راهحل قرار دادن دیسکها در داخل سرورها و تکیه روی اتصاالت اترنت برای دسترسی اطالعات دیسکها برای
سرورهای دور میباشد .راه دیگر حافظه جانبی ملحق شده به شبکه ( )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استفاده میکنند تا این خواص را برآورده
کنند ،اما این تراشهها ذاتاً گران هستند .درحالیکه چنین خواصی برای تنظیمات اینترنت نفیس هستند ،در داخل یک
دیتاسنتر معموالً استفاده نمیشوند.
جدول 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آرایه و دیسک آرایه را متالشی میکند.
شکل :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 فصل دهم :کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح-درخواست و سطح-داده
با داشتن معماری تجهیزات ،ITهم اکنون آماده هستیم تا چگونگی جایابی ،توان و سرد کردن آنرا ببینیم و هزینه
ساخت و کارکردن کل WSCرا در مقایسه با تجهیزات ITبحث کنیم.
برای ساخت یک ،WSCابتدا نیازمند ساخت یک ورهاوس هستید .یکی از اولین سؤاالت این است کجا؟ سازندگان
واقعی روی مکان تأکید دارند ،اما مکان برای یک WSCبه معنی مجاورت به فیبرهای نوری زیرساخت اینترنت،
هزینه کم الکتریسیته ،و ریسک کم در برابر حوادث محیطی مثل زلزله ،سیل ،و طوفان میباشد .برای یک شرکت
با تعداد زیادی WSCمسأله دیگر پیدا کردن مکانی میباشد که از لحاظ جغرافیایی نزدیک جمعیت جاری یا آینده
کاربران اینترنت باشد ،تا تأخیر روی اینترنت را کاهش دهد .سایر نگرانیها راجع به دنیای مادی مثل نرخهای
مالیات میباشد.
هزینههای زیرساخت برای توزیع توان و خنک سازی هزینههای ساخت یک WSCرا کوتاه جلوه میدهند بنابراین
ما روی اولی تمرکز میکنیم .شکل 5-10و 6-10زیرساختهای توزیع توان و خنک سازی داخل یک WSC
را نشان میدهند.
در آمریکای شمالی توان الکتریکی پنج مرحله را طی میکند و چهار تغییر ولتاژ تا رسیدن به سرور با شروع از خطوط
ولتاژ-باال در برج-های 115000ولتی اتفاق میافتد (البته در مکانهای دیگر این موارد ممکن است عیناً تکرار
نشود):
سایر خواص) ،حفظ بار الکتریکی تا وقتیکه ژنراتورها شروع به کار کنند و وارد خط شوند ،و حفظ بار
الکتریکی وقتیکه سوییچ از ژنراتورها به شبکه برق سراسری برمیگردد .بازدهی این UPSخیلی بزرگ
94%میباشد ،بنابراین تأسیسات 6%توان را با داشتن UPSاز دست میدهند WSC UPS .میتواند
7%تا 12%هزینه کل تجهیزات ITرا شامل شود.
.3سومین مسأله در سیستم واحد توزیع توان ) (PDU1میباشد که توان سه فازهی 480ولتی داخلی را به
ولتاژ پایین تبدیل میکند .بازدهی تبدیل 98%میباشد .یک PDUی معمولی بار 75تا 225کیلو وات
یا حدود 10رک را مدیریت میکند.
.4یک مرحله کم کردن برای توان دو فازه 208ولت وجود دارد که سرورها میتوانند استفاده کنند که
بازدهی آن 98%میباشد( .داخل سرور ،مراحل بیشتری وجود دارد تا ولتاژ را برای استفاده تراشهها
پایین بیاورد .بخش 7-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در یک دیتاسنتر نوعی عبارت است از:
Barrosoو Holzleتوان مصرفی تجهیزات آیتی WSCی گوگل در سال 2007را بصورت زیر برآورد کردهاند:
بنابراین 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
جدول :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%از 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 فصل دهم :کامپیوترهای در مقیاس ورهاوس برای بهرهبرداری از موازات سطح-درخواست و سطح-داده
براساس مطالعهای در سال 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
مثال :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ی گوگل هستیم.
کانتینرها
گوگل و میکروسافت 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گیگا بیت/ثانیه هستند ،که در هر رک قرار میگیرند.
شکل 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بود.
سرور شکل 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دیسک به ازای هر سرور داشت.
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برای آرایهها با
تقاضاهای ترافیک بیشتر استفاده میشوند.
برای یک اپراتور که مسئول بیشتر از 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-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تهیه
میکند چقدر است؟
این نسخه الکترونیک مخصوص شما می باشد .لذا نشر و گسترش آن
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 ،
های نرمافزاری ،دستگاههای ذخیره سازی ،دستگاههای خاص و )...طبق سیاستهای سازمان ،در جهت انجام
پروژههای سازمان به صورت مشترک بهرهبرداری کنند.
چنانچه بخواهیم درک درستی از سیستمهای گرید داشته باشیم ،به این دلیل که این سیستمها شکل خاصی از
سیستم های توزیع شده اما با خصوصیات و ملزومات و اهداف خاص خود هستند ،الزم است در ابتدا با مفاهیم پایه
ای و اصول کلیدی سیستمهای توزیع شده آشنایی کاملی پیدا کنیم.
«یک سیستم توزیع شده ،مجموعهای از کامپیوترهای مستقل است که برای کاربرانش به صورت یک سیستم
منسجم واحد 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 مقدمهای بر محاسبات گرید
را قبل از سعی مجدد آن از دید کاربر پنهان کنیم ،منجر به کُندی کل سیستم میشود (چون مثالً کاربر باید مدتها
منتظر بماند تا در نهایت بفهمد که برقراری ارتباط با وبسایت مورد نظر امکان پذیر نمی باشد!).
درنتیجه ،ایده بهتر این است که ناموفق بودن هر مرتبه سعی را به کاربر نشان دهیم (به جای اینکه آن را از او
پنهان کنیم) و به او اجازه دهیم که انتخاب کند آیا الزم است تالش مجدد صورت گیرد یا اینکه باید کل کار را لغو
کرد.
در این بخش ،مرروی مختصر و سریع بر روی تعاریف سیستم عاملهای توزیع شده ) ،(DOSسیستم عاملهای
شبکهای ) (NOSو سیستمتهای توزیع شده ) (DSو مزایا و معایب هر یک خواهیم داشت .در ادامه ،یک مقایسه
تحلیلی میان آنها خواهد آمد و در پایان ،یک تعریف استاندارد از میان افزار ( )Middlewareارائه خواهد شد.
سیستم عاملها برای کامپیوترهای توزیعشده به طور کلی به دو دسته تقسیم می شوند:
بنابراین ،اولین وظیفه هر 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تولید کند ،باید خودش تمامی پیچیدگیها را تا حدود زیادی
مدیریت کند .الزم است پروتکلهای ارتباطی و شبکهای استاندارد شده ،در این محیط وجود داشته باشند و تمامی
سیستم عاملهای روی کامپیوترهای موجود ،سرویسهای خود را طبق این پروتکلهای استاندارد ارائه دهند تا سایر
ماشینها بتوانند از آنها استفاده کنند.
کاربران معموالً دچار مشکالت زیادی در 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
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فکر میکردند باید یک کامپیوتر قدرتمند
بسازند تا به صورت منبع بیانتهای محاسباتی بتوان از آن استفاده کرد .زیرا اوالً مسائل امروزه آنقدر پیچیده و بزرگ
هستند که قویترین ابررایانه دنیا نیز قادر به اجرای مناسب بسیاری از آنها نمیباشد و ثانیاً دادههای ورودی مورد
نیاز این مسائل گاهاً بر روی سایتهای مختلف در نقاط جغرافیایی مختلف توزیع شدهاند و حتی تجمیع آنها بر روی
یک ماشین نیز به هیچ وجه امکان پذیر و عملی نیست؛ اما دستیابی به توان محاسباتی نامحدود جهت حل چنین
مسائلی ،امروزه با شبکههای گرید و فنآوری محاسبات گرید ،محقق و امکان پذیر شده است.
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از طریق به اشتراک گذاردن منابع به شیوهای هماهنگ و امن میان
کاربران ،دانشگاهها و سازمانهاست .محاسبات گرید رهیافتی از محاسبات توزیع شده است که پلی میان فاصلههای
جغرافیایی دور ،میان سازمانها ،معماریهای مختلف ماشینها و نرم افزارهای مختلف میزند و به هر کس که به
گرید متصل شده باشد ،توان محاسباتی نامحدود ،امکان همکاری با سایرین و دسترسی به انواع اطالعات را میدهد.
اصطالح گرید به زیرساختی گفته میشود که استفاده مجتمع با تشریک مساعی 4از کامپیوترها ،شبکههای
کامپیوتری ،بانکهای اطالعاتی و دستگاههای علمی را که تحت تملک و مدیریت سازمانهای مختلف هستند را
امکان پذیر میکند .برنامههای کاربردی گرید معموالً نیازمند حجم عظیمی از دادهها و/یا توان محاسباتی بسیار باال
هستند و اغلب احتیاج به ،به اشتراک گذاری امن منابع میان سازمانهای مختلف دارند و بنابراین با زیرساختهای
فعلی اینترنت و وب ،اجرای آنها به آسانی امکان پذیر نیست.
1
Large virtual computing system
2
Virtual Dynamic Organization
3
–اولین نمونه گرید در دنیا -است Globus.در واقع همان انجمن بوجود آوردنده گرید Globus Allicance
4
Collaborative
کانون نشر علوم | 578
یک گرید محاسباتی ،یک زیرساخت نرمافزاری/سختافزاری است که دسترسی به منابع محاسباتی پیشرفته را به
صورتی قابل اعتماد ،سازگار ،فراگیر و ارزان فراهم میکند .مسأله اصلی گرید ،به اشتراک گذاری هماهنگ منابع و
حل مسأله در سازمانهای مجازی پویای چند ارگانی 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و به عنوان عاملی در حفظ بقای سازمانها مطرح است .یک گرید دانش
باید کلیه تسهیالت مورد نیاز اجرای پروژههای مدیریت دانش سازمانی را در اختیار قراردهد .کشف دانش از
بانکهای اطالعاتی و داده کاوی صرفاً تنها یکی از صدها امکاناتی است که باید در گرید در سطح کل
سازمان فراهم باشد .انبارههای دانش باید برای ذخیره دانش سازمان فراهم باشند و تمامی افراد سازمان به
آن دسترسی داشته باشند .گرید باید تسهیالتی فراهم آورد تا اصطالحاً دانش در سازمان جریان پیدا کند:
دانش درست ،در زمان درست به دست افراد درست در کل سازمان برسد .افراد باید از طریق تسهیالتی که
گرید دانش در اختیار میگذارد ،دانششان را میان یکدیگر به اشتراک بگذارند و بتوانند یادگیری جمعی انجام
دهند و عمالً در کارهایشان از دانش به نحو موثر استفاده کنند.
.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
Desktop Grid
کانون نشر علوم | 582
ج :گریدهای فراسازمانی :این گریدها ،گریدهایی هستند که میان چند سازمان ،شرکت ،موسسه یا ارگان
مختلف ،جهت پروژهها یا نیازهای مشترک بنا میشود.
د :گریدهای گسترده در سطح دنیا :گریدهایی هستند که در محدوده اینترنت ایجاد میشوند و ممکن است
کاربرانی از سراسر دنیا داشته باشند .این گریدها ،ممکن است توسط سازمانها برای تسهیل کردن کارهایشان یا
جهت سرویسدادن به کاربران مختلف (اجاره منابع به کاربران در سراسر دنیا) بنا شوند .در واقع این گریدها ،قدرت
منابع توزیع شده را به کاربرانی در سراسر دنیا جهت انجام نیازهای محاسباتیشان ارائه میدهند
گاهی اوقات ،گریدها را برحسب سرویسهای مختلفی که ارائه میدهند تقسیم بندی میکنند .البته شاید این تقسیم
بندی کار چندان دقیقی نباشد ،چون هر گرید ممکن است در عمل ،ترکیبی از این سرویسها را در سطوح مختلفی
از قابلیتهای متفاوت ارائه دهد .در ادامه ،انواع گرید در این تقسیمبندی معرفی میکنیم:
-1گریدهای محاسباتی :گریدهایی هستند که سرویس محاسباتی ارائه میدهند .بعضاً مشاهده میشود
گریدهای محاسباتی را بر حسب نوع کامپیوترهایی که میتواند تحت پوشش قراردهد ،تقسیم بندی میکنند .در این
تقسیم بندی ،انواع گرید محاسباتی به شرح زیر است:
✓ گریدهای رومیزی :گریدهایی هسنتد که بر روی کامپیوترهای رومیزی کارمندان سازمان بنا میشوند .در واقع
کامپیوترهای کارمندان سازمان ،در اختیار گرید سازمان قرار میگیرند تا پروژههای سازمان که به توان
محاسباتی باال نیاز دارند ،بتوانند انجام شوند .هدف این گرید ،بهرهبرداری بهینه از منابع محاسباتی سازمان
است بدون اینکه کار کارمندان سازمان که از کامپیوترها استفاده میکنند ،مختل شود .این نوع گریدها در
این فصل به طور کامل بررسی خواهند شد.
✓ گرید با کامپیوترهای سرویسدهنده :1همانند گریدهای رومیزی با این تفاوت که بعضی از کامپیوترهای
قدرتمند به صورت اختصاصی به عنوان پردازشگرهای گرید در این ساختار وجود دارند ،یعنی این کامپیوترها
متعلق به کارمندان سازمان نیستند و از آنها منحصراً برای اجرای پردازشهای گرید سازمان استفاده میشود.
✓ گریدهای خوشهای/با کارایی باال :2این گریدها ،منابع محاسباتی پرقدرت همانند ابررایانهها یا خوشههای با
کارایی باال را تحت پوشش قرار میدهند .هدف این گریدها ،ارائه یک ماشین مجازی بسیار پرقدرت جهت
اجرای برنامههای کاربردی فوق العاده سنگین است.
1
Server Grids
2
High-Performance/Cluster Grids
| 583 مقدمهای بر محاسبات گرید
-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نمایش میدهیم) با فرمول زیر بدست میآید:
به طور مثال ،اگر ما یک برنامه کاربردی آماده سازی شده برای اجرا روی گرید داشته باشیم که در آن یک واحد
کاری به طور متوسط در 15دقیقه ( 900ثانیه) برروی یک پردازشگر فرضی گرید با توان محاسباتی میانگین اجرا
میشود و (2000KB) 2MBداده ورودی داشته باشد و (400KB) 0.4MBداده خروجی تولید کند ،خواهیم
داشت:
CI = (4 900) / (2000 + 400) = 1.5
در حالت عمومی ،برنامههای کاربردی آماده اجرا روی گرید که CIآنها بزرگتر 1شود ،برای اجرا روی گرید مناسب
هستند .اما به هر حال این تصمیم ،یک قاعده الزم االجرا نیست ،به طور اخص اگر میان سرویسدهنده مرکزی
| 587 مقدمهای بر محاسبات گرید
گرید و پردازشگرهای گرید سازمانتان خطوط اختصاصی بسیار پرسرعت وجود داشته باشد (به طور مثال Gigabit
.)Ethernet
تنظیم دقیق 1کردن یک برنامه کاربردی آماده سازی شده جهت اجرا روی گرید
یک عامل مهم که باید آن را در بررسی مناسب بودن یک برنامه کاربردی جهت اجرا روی گرید لحاظ کرد این
است که چگونه جهت بدست آوردن منفعت از یک گرید رومیزی در اجرای آن برنامه ،برنامه ریزی کرد .در حالت
کلی ،منفعت ،ترکیبی از دو فاکتور زیر خواهد بود:
✓ اینکه بتوان همان جوابها را سریعتر بدست آورد :با شکستن به تعداد ثابتی پردازش بر روی Nواحد کاری
که می توانند به صورت موازی اجرا شوند ،از قدرت گرید رومیزی جهت تولید نتایج به روش کامالً سریعتر
استفاده میشود.
✓ بدست آوردن یک نتیجه بهتر در همان زمان :در چنین حالتی زمان مورد انتظار برای رسیدن به نتایج ثابت
نگه داشته می شود ولی محاسبات قابل توجه بسیار بیشتری در همان مدت زمانی قبلی انجام میگیرد ( به
طور مثال در شبیهسازیها).
با بررسی دقیقتر یک فضای پارامتری ،با دانستن اینکه کدام یک از این منفعتها مهمتر است ( بسته به نوع برنامه
کاربردی) ،میتوان انتخاب دقیقتری برای workunit durationو سایر دادههای ورودی/خروجی و سایر
پارامترها و نحوه شکستن داشت ،که تمامی اینها می تواند بر روی نرخ ،CIمستقیماً تأثیر گذار باشد و باعث شود
که برنامه کمتر /بیشتر جهت اجرا شدن روی گرید مناسب باشد.
اینکه به مصالحههای مختلف ،وزن های مختلف داده شود ،عملی خواهد بود که باید چندین بار تکرار شود تا در
نهایت به نتایج دلخواه رسید .این عمل بیشتر شبیه یک هنر خواهد بود تا یک علم.
.1مؤلفههای مدیریتی
1
Fine-Tune
کانون نشر علوم | 588
پایینیترین الیه Fabric ،است که کلیه منابع در دسترس گرید را در بر میگیرد .الیه باالیی آنCore ،
Middlewareاست و همانطوری که در شکل نیز مشاهده میشود ،یک میان افزار است که کلیه سرویسهای
پایهای و اساسی گرید را ارائه میدهد .الیه بعدی نیز یک میان افزار تحت عنوان User-Level Middleware
است که سرویسهای سطح کاربری گرید را ارائه میدهد .در باالترین سطح ،برنامههای کاربردی توزیع شده قرار
میگیرند که بر روی گرید اجرا خواهند شد.
با توجه به شکل مشخص میشود که هسته هر سیستم گرید توسط دو الیه میانافزار که بر روی یکدیگر قرار
گرفتهاند ساخته میشود .میانافزار زیرین ( )Core Middlewareسرویسهای اصلی گرید را ارائه کرده و این
سرویسها در اختیار کامپوننتهای میانافزار باالتر ( )User-Level Middlewareقرار میگیرند .میانافزار
باالیی نیز به نوبه خود امکاناتی را ارائه میدهد که به توسط آنها بتوان برنامههای کاربردی گرید را تولید و بر روی
گرید اجرا کرد.
در الیه ،Fabricانواع منابع مختلف (از انواع مختلف) به همراه مدیران محلی آن منابع قرار دارند .به عالوه کلیه
واسطهای ارتباطی با مدیران منابع نیز در این الیه قرار میگیرند .به طور مثال ،توابع APIو یا توابع کتابخانهای
| 589 مقدمهای بر محاسبات گرید
که امکان ارتباط با سیستم عاملها ،وسایل ،سرویسدهندههای شبکهای ،سیستمهای مدیریت بانک اطالعاتی و ...
را میدهند ،همگی در این الیه قرار میگیرند .میانافزار باالیی ( )Core Middlewareاز همین امکانات برای
ساخت سیستم توزیع شده و دسترسی به منابع مختلف استفاده میکند.
الیه Core Middleware Layerدقیقاً یک سیستم توزیع شده است که به صورت یک میانافزار پیادهسازی
میشود .وظیفه اصلی این الیه ،ارائه درجه باالیی از شفافیت در دسترسی به منابع ناهمگون در الیه Fabricاست.
به عبارت دیگر این الیه ،تفاوتها در نحوه دستیابی به منابع مشابه اما ناهمگون را از دید سرویسگیرندههای
میانافزار فوقانی ( )User-Level Middlewareپنهان ساخته و روشهای یکسانی برای دسترسی به آنها
ارائه میدهد .سرویسهای پایهای و هستهای گرید همه در این الیه تعریف و پیادهسازی میشوند.
User Level Middleware Layerیک میانافزار است که بر روی میانافزار Core Middleware
قرارگرفته و از سرویسهای آن استفاده میکند .این الیه دو وظیفه عمده دارد:
.1مدیریت و واسطهگری منابع :مهمترین مسأله در هر گرید مدیریت منابع به صورتی کامالً بهینه ،امن
و طبق سیاست های از پیش تعیین شده مالکان منابع در دسترسی به آن منابع است .هنگامی که یک کاربر
یک برنامه کاربردی را جهت اجرا به سرویسدهنده گرید واگذار میکند ،در وهله اول باید لیست کاملی از
کلیه منابع محاسباتی در دسترس گرید داشته باشیم تا بدانیم از کدام یک از منابع محاسباتی و طبق چه
سیاستها و هزینههایی میتوان استفاده کرد.
.2زبانهای برنامهنویسی روی گرید ،1کتابخانهها ،کامپایلرها ،محیطها و سیستمهای زمان-
اجرا :برنامههای کاربردی روی گرید معموالً برنامههایی هستند که شدیداً Data-Intensiveو/یا CPU-
Intensiveهستند .آنها برنامههایی غول پیکر هستند که معموالً به حجم عظیمی از دادههای ورودی نیاز
دارند که این دادهها معموالً بر روی ماشینهای مختلف و در سایتهای مختلف توزیع شدهاند .این برنامهها
معموالً به توان محاسباتی بسیاری نیاز دارند و الزم است از چندپردازندههای قدرتمند و یا خوشهها و یا
ماشینهای متعدد در اجرای آنها استفاده شود .آنها اکثراً به صورت تعداد زیادی زیربرنامه توزیع شده و/یا
موازی پیاده سازی میشوند و این زیربرنامهها الزم دارند به کرات در طول زمان با یکدیگر تعامل کنند و
دادههایی را میان یکدیگر رد و بدل کنند .وظیفه این الیه مدیریت این مسأله میباشد.
Application/Portal Layerدر باالترین سطح در هر گرید ،برنامههای کاربردی گرید قرار میگیرند .در
این الیه عالوه بر برنامههای کاربردی ،پرتالها یا به عبارت دقیقتر پرتالهایِ گرید قرار میگیرند .کاربران باید
بتوانند از طریق پرتال های گرید ،منابع (باالخص منابع محاسباتی) را شناسایی کنند ،به طور راه دور به آنها متصل
شوند ،برنامههای خود را برای اجرا روی آنها بفرستند و اجرا کنند ،نتایج و خروجیها را از آنها دریافت کنند و
هزینههای محاسبه شده را پرداخت کنند.
محیط گرید ،به لحاظ منابع تحت پوشش ،محیطی بسیار پیچیده است .فاصلههای جغرافیایی زیاد منابع توزیع شده،
معماریها و سیستم عاملهای متفاوت ماشینهای مختلف ،تفاوتها در روشهای دستیابی به هر یک از منابع،
متغیر بودن محیط به لحاظ منابع در دسترس و در نهایت وجود سیاستهای مختلف در دسترسی به منابع ،همه و
همه مسائل پیچیده ای هستند که گرید باید با آنها دست و پنجه نرم کند .کامالً واضح است مدیریت مؤثر منابع،
1
Grid-Enabled Programming Languages
| 591 مقدمهای بر محاسبات گرید
امری حیاتی در سیستمهای گرید محسوب میشود و به عالوه ،زمانبندی باید به نحو احسن در این سیستمها انجام
شود تا از یک طرف کاربران و برنامههای کاربردی به بهترین نحو سرویس دریافت کنند و از طرف دیگر از کلیه
منابع گرید ،بهرهبرداری بهینه و حداکثر صورت گیرد .در واقع میتوان گفت ،کارآمدی هر سیستم گرید ،به میزان
زیادی در گرو کارایی و مؤثر بودن روشهای مدیریت منابع و نیز سیاستها و مکانیزمهای زمانبندی مورد استفاده
در اجرای وظایف در این محیط میباشد.
در ابتدا ،به معرفی سه مدل زمانبندی مورد استفاده در محیط گرید ،یعنی مدلهای زمانبندی متمرکز , 1سلسه
مراتبی 2و توزیع شده 3پرداخته میشود .سپس ،مراحل مختلف پروسه زمانبندی شرح داده میشود.
طبق تعریف ،زمانبندی در گرید به معنای عمل واگذاری برنامههای کاربردی به منابع محاسباتی در چندین حوزه
مدیریتی است به نحوی که:
نیازمندیهای برنامه کاربردی تأمین گردد (مانند معماری ،سیستم عامل ،مؤلفههای نرم افزاری و )... -1
نیازمندیهای مالک برنامه کاربردی تأمین گردد (مانند کیفیت سرویس مورد نظر کاربر ،مهلت زمانی مورد -2
نظر کاربر ،ارجحیتهای کاربر در مورد کارایی مد نظر یا هزینههایی که باید بپردازد و )...
احترام به سیاستهای تعیین شده از سمت مالکان منابع تضمین گردد (مانند سیاستهای مختلف دستیابی -3
به منابع و محاسبه دقیق هزینهها و )...
نیازمندیهای خود سیستم گرید تضمین گردد (مانند تقسیم بار و ) ... -4
-1-8-11مدلهای مختلف زمانبندی
سه مدل عمده زمانبندی در محیط گرید وجود دارند که عبارتند از مدل متمرکز ،مدل توزیعشده و مدل سلسله
مراتبی .در این بخش مروری بر هر یک از این مدلها و مزایا و معایب آنها خواهیم داشت.
در یک محیط که از مدل زمانبندی متمرکز استفاده میشود ،یک ماشین مرکزی (گره) به عنوان مدیر منابع جهت
زمانبندی کارها عمل مینماید و تمامی ماشینهای پردازشگر در محیط ،تحت پوشش و مدیریت این ماشین مرکزی
هستند .این مدل زمانبندی ،معموالً در شرایطی استفاده میشود که کلیه منابع (ماشینهای پردازشگر) ویژگیها و
سیاست های دستیابی یکسان داشته باشند .به طور مثال اگر یک سایت شامل چندین ماشین است که کلیه آنها
1
Centralized Scheduling
2
Hierarchical Scheduling
3
Distributed Scheduling
کانون نشر علوم | 592
تحت تملک یک مالک واحد هستند و مالک سیاست یکسانی برای دستیابی به تمامی آنها تعیین کرده است ،میتوان
از یک زمانبند مرکزی استفاده کرد که کلیه ماشینهای آن سایت را تحت پوشش قرار دهد .شکل ، 2-11معماری
یک زمانبندی مرکزی را نمایش میدهد.
Jobs
زمانبند مرکزی
در این مدل زمانبندی ،هیچ زمانبند مرکزی که مسئول مدیریت کلیه کارها باشد وجود ندارد .در عوض ،زمانبندی
توزیع شده از چند زمانبند محلی استفاده میکند که با یکدیگر جهت واگذاری کارها به کلیه ماشینهای پردازشگر
| 593 مقدمهای بر محاسبات گرید
تحت پوشش ،تعامل انجام می دهند .دو مکانیزم جهت ارتباط یک زمانبند با زمانبندهای دیگر وجود دارد :ارتباط
مستقیم و ارتباط غیر مستقیم.
زمانبندی توزیع شده بر مشکل توسعه پذیری به راحتی میتواند غلبه کند ،پس این مدل مشکل مدل زمانبندی
متمر کز را ندارد .به عالوه تحمل پذیری باالتری در مقابل خطاها دارد و قابل اعتمادتر است .اما نداشتن یک زمانبند
مرکزی که اطالعات کاملی در مورد تمامی منابع در دسترس داشته باشد ،معموالً منجر به تصمیمات نیمه-بهینه
در زمانبندی خواهد شد.
✓ ارتباطات مستقیم :در این سناریو ،هر زمانبند محلی میتواند مستقیماً با سایر زمانبندها در مورد واگذاری
کارها ارتباط داشته باشد .هر زمانبند ،لیستی از تمامی زمانبندهای دیگر دارد و یا ممکن است یک دایرکتوری
مرکزی که کلیه اطالعات را در مورد هر زمانبند نگهداری میکند بر روی ماشینی در محیط وجود داشته باشد
( روش دوم بهتر است ،زیرا اگر زمانبندی در محیط اضافه یا کم شود ،دیگر نیازی نخواهد بود این تغییر در
لیست تک تک تمامی زمانبندها اعمال شود) .به شکل 3-11دقت کنید.
زمانبند 1 زمانبند 3
jobs
منابع محلی زمانبند 1 منابع محلی زمانبند 3
jobs
jobs jobs
jobs
در این روش اگر زمانبند محلی نتواند کاری را به منابع محلیاش واگذار کند ،با سایر زمانبندهای راه دور ،جهت
یافتن مناسبترین ماشین برای اجرای کار ،ارتباط برقرار خواهد کرد .هر زمانبند ممکن است صف (یا صفهای) کار
محلی برای مدیریت منابع تحت پوشش خود داشته باشد.
✓ ارتباطات غیر مستقیم (ارتباط از طریق یک Job Poolمرکزی):
1
✓ در این سناریو ،کارهایی که نمیتوانند بالفاصله پردازش شوند ،به یک Job Poolمرکزی فرستاده میشوند.
در مقایسه با روش ارتباط مستقیم ،در این روش زمانبندهای محلی میتوانند کارهایی را که برای اجرا بر روی
1
را استخر ،حوضچه و مانند آن ترجمه میکنند که کامالا نارساست .منظور Poolگاهی اوقات برخی مراجع ،اصطالح تخصصی
است Repository.در واقع یک Poolاز
کانون نشر علوم | 594
منابعشان مناسبترند را انتخاب کنند و آنها را برای اجرا روی ماشینهایشان به صورت محلی زمانبندی کنند.
در این سناریو حتماً باید سیاستهایی باشند که توسط آنها تضمین شود اوالً یک کار برای مدت بسیار طوالنی
در Job Poolمنتظر اجرا نماند و باالخره اجرا شود ،ثانیاً یک کار توسط دو (یا بیشتر) زمانبند جهت اجرا
برداشته نشود .به شکل 4-11دقت کنید.
jobs jobs
Job Pool
زمانبند 2 زمانبند 4
jobs jobs
در مدل زمانبندی سلسله مراتبی ،یک زمانبند مرکزی و تعدادی زمانبند محلی وجود دارد و زمانبند مرکزی با
زمانبندهای محلی جهت واگذاری کارها تعامل انجام میدهد (تعامل به صورت یک طرفه از سمت زمانبند مرکزی
به زمانبندهای محلی است) .زمانبند مرکزی در واقع نوعی Meta-Schedulerاست که کارهای واگذار شده را
به زمانبندهای محلی ارسال میکند .به شکل 5-11دقت کنید.
jobs
زمانبند مرکزی
همانند مدل زمانبندی متمرکز ،زمانبندی سلسله مراتبی نیز ،مشکالت توسعه پذیری و تحمل پذیری کم در مقابل
خطاها را دارد .اما ،در مقایسه با زمانبندی متمرکز ،یک مزیت مدل زمانبندی سلسله مراتبی این است که زمانبند
مرکزی و زمانبندهای محلی میتوانند سیاستهای متفاوتی در زمانبندی کارها داشته باشند.
)1اکتشاف منابع :هدف اکتشاف منابع ،شناسایی لیستی از منابع در دسترس جهت واگذاری کارها میباشد.
به منظور اینکه بتوان در محیط پویای گرید (که منابع در دسترس آن ممکن است در طول زمان با نرخهای
کم یا زیاد تغییراتی داشته باشند) زمانبندی را انجام داد ،زمانبند احتیاج به روشی برای لحاظ کردن اطالعات
وضعیت منابع در دسترس در تصمیمات زمانبندیاش دارد و در واقع باید روشی وجود داشته داشته باشد تا
این اطالعات به دست زمانبند برسد .جهت انجام اکتشاف منابع در یک محیط گرید ،از سه مدل متفاوت
ممکن است استفاده شود :مدل ،Pullمدل ،Pushمدل ترکیبی .Push-Pull
)2انتخاب منابع :بعد از اینکه لیست کلیه ماشینهای پردازشگر در دسترس شناخته شد ،فاز دوم فرآیند
زمانبندی ،انتخاب ماشینهایی است که به لحاظ قیود ذکر شده و نیازمندیهای اعالم شده از سوی مالک
کار ،حائز شرایط باشند و بتوانند بهتر از سایر ماشینها این نیازمندیها را پوشش دهند .به طور مثال کاربر
ممکن است در مورد ،CPU-Usageحافظه اصلی در دسترس ،ظرفیت دیسک سخت مورد نیاز و ...
نیازمندی هایی را اعالم کرده باشد .خروجی فاز انتخاب منابع ،شناسایی لیست تمامی ماشینهایی است که
میتوانند حداقل نیازمندیهای مورد درخواست کاربر جهت اجرای کار (یا برنامه کاربردی) واگذار شدهرا تأمین
کنند که آنرا با نماد Rselectedنمایش میدهیم و در واقع رابطه زیر برقرار است𝑹𝑆𝑒𝑙𝑒𝑐𝑡𝑒𝑑 ⊆ :
𝑒𝑙𝑏𝑎𝑙𝑖𝑎𝑣𝑎𝑹
)3تولید زمانبندی :تولید زمانبندی شامل دو مرحله است :انتخاب مناسبترین ماشین جهت واگذاری یک کار
و ارائه استراتژیهای انتخاب کارها.
)4پردازش کار :هنگامی که یک کار و ماشین پردازشگر مناسب اجرای آن یافت شد ،مرحله بعدی واگذاری
کار به ماشین پردازشگر جهت اجرا است .واگذاری یک کار به ماشین پردازشگر و اجرای آن ممکن است به
سادگی اجرای یک دستور به صورت راه دور در ماشین پردازشگر توسط زمانبند باشد و یا کامالً پیچیده و
نیازمند اجرای مجموعهای از اسکریپتها باشد.
کانون نشر علوم | 596
در بخش اول ،در جدول ،2-11لیستی از تمامی پروژهها و سیستمهای گرید در سراسر دنیا ارائه میشود .جدول
،11-3دید دقیقتری نسبت به برخی از پروژههای ارائه شده در جدول 2-11که در استرالیا انجام شدهاند (یا در
دست تکامل هستند) ،خواهد داد .جدول 4-11همین کار را در مورد پروژههای مطرح گرید در اروپا ارائه میدهد و
در جدول ،5-11مروری سریع بر برخی پروژهها و سیستمهای گرید که در ایاالت متحده آمریکا در دست انجام
هستند خواهیم داشت و در نهایت در جدول 6-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 مقدمهای بر محاسبات گرید
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
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برخی تالشها در زمینه گرید در اروپا
هدف این پروژه ،تولید میانافزار و ابزارهایی برای برنامههای کاربردی است DataGrid DataGrid
که با حجم زیادی از داده کار میکنند .کاربرد این میانافزار در زمینه High- Middleware
and
Energy physicsاست.
application
www.eu-dataGrid.org
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برخی تالشها در زمینه گرید در ژاپن
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استفاده کند.
: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
یک 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مد نظر گرفته شدهاند ،شامل موارد زیر است:
نکته مهمی که باید به آن توجه شود این است که UNICOREاصوال برای برنامههای دستهای طراحی و ساخته
شده است و در نتیجه امکان داشتن پردازشهایی که نیاز به تعامل چندباره با یکدیگر یا تعامل با کاربر دارند را
نمیدهد .در سطح برنامهکاربردی ،از metacomputingبه صورت آسنکرون پشتیبانی میشود که به بخش-
کانون نشر علوم | 610
های مستقل و غیر مستقل یک Jobامکان اجرا شدن بر روی مجموعهای از ماشینهای محاسباتی توزیع شده را
می دهد .به هر کاربر یک شناسه کاربری منحصر به فرد جهت دستیابی به کلیه سایتها و منابع تحت پوشش
سیستم UNICOREداده میشود.
NetSolve :6-2-9-11
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://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -
خ فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.
فصل دوازدهم -حل تست های کنکورهای سالهای اخیر
-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
میانبرشی= و پهنای
1 1
بنابراین گزینه 1صحیح میباشد. 0.9 حداکثر برای m=100میباشد بنابراین داریم= 0.19 = 5.2 :
0.1+
√100
)1استفاده از زنجیر کردن واحدهای پردازش لولهای ( )pipeline chainingدر یک کامپیوتر برداری پهنای باند
دسترسی به حافظه را افزایش میدهد.
1
)2طبق قانون امدال گر درصد کد سریال برنامه fباشد ،حداکثر تسریع قابل احتصال با پردازش موازی برابر fاست.
)3پهنای میانبرشی در یک شبکه فوق مکعب 9بعدی برابر است با 256
)4شبکه پندسطحی Closاز نوع non-blockingاست.
پاسخ :گزینه 2صحیح میباشد زیرا در قانون امدال حداکثر تسریع زمانی بدست میآید که تسریع بخش قابل
1 1
. fractionenhanced = موازات حدکثر شود و بخش دوم مخرج صفر شود.
fractionserial + fractionserial
speedup enhanced
وقتی خط لولهها زنجیر نباشند ابتدا 55دستور وارد خط لوله جذر شده و حاصل یک بردار 55عنصری میشود سپس
55بردار جذر گرفته شده وارد خط لوله سینوس میشوند و حاصل برداری 55عنصره میشود .در انتها این 55
عنصر وارد خط لوله lnمیشوند و حاصل نهایی بدست میآید بنابراین زمان اجرای عبارت برابر با حاصل جمع
زمانهای اجرای 55دستور در سه خط لوله میباشد .اگر زنجیر شوند شکل بصورت زیر میشود:
پاسخ :این سوال نیاز به حل ندارد از تجزیه تحلیل بردار تصادم و محدودیت های روی MALفصل شش متوجه
میشویم حداکثر تاخیر 5میباشد زیرا حداکثر تسریع منع شده 5-1=4میباشد .بنابراین گزینههای 2و 4حذف
میشود .اما کران پایین MALبه حداکثر تعداد عالیم چک xدرهر سطر جدول رزرواسیون وابسته است که در
اینجا 2میباشد .بنابراین گزینه 3درست است.
-7در دستورات زیر:
I1: Add r0,r1,r2
I2: Sub r0,r3,r6
کانون نشر علوم | 618
پاسخ :با توجه به مطلب ارائه شده در بخش 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
دستور 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
-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
-6خط لوله Aبرای محاسبه تابع fبا تعداد سطوح 20و فرکانس 1 GHzو خط لوله Bبرای
محاسبه تابع gبا تعداد سطوح 30و فرکانس ساعت 1 GHzمفروضند .قرار است پردازش
برداری )) Df(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 :
در سیستم 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
-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درست است.
در این نمودار ،بخش دندان ارهای مربوط به معماری ثبات به ثبات و بخش باالیی مربوط به حافظه به حافظه است.
| 629 فصل دوازدهم :حل تستهای کنکورهای سالهای اخیر
پاسخ:
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
پاسخ :با توجه به مطالب ارائه شده در فصل ششم بخش ماتریس تصادم اولیه گزینه 1صحیح میباشد .ماتریس
تصادم بصورت زیر محاسبه میشود.
𝐴𝐴 0001,
[=MA ]
𝐴𝐵 1010,
𝐵𝐴 0110,
[=MB ]
𝐵𝐵 0010,
-6در یک پردازنده خط لولهای دستورات نوع Aو نوع Bسطوح زیر را برای واکشی و اجرا
بایستی طی کنند برای اجرای دو دستور متوالی (دستور iاز نوع Aو دستور i+1از نوع )Bدر
یک برنامه احتمال وقوقع کدام hazardوجود دارد؟
write-after-write)2 read-after-write)1
پاسخ :اگر در پردازنده امکان 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 فصل دوازدهم :حل تستهای کنکورهای سالهای اخیر
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
𝑛)𝑘𝑁 = (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پردازندهای از ساختار پیشبینی کننده انشعاب دوبیتی برای بهبود کارایی اجرای برنامهها
استفاده میکند .توالی انشعابهای انجام شده را در یک برنامه از سمت چپ به راست در نظر
بگیرید .در هر مورد Tنشان دهنده انجام شدن انشعابات و Nنشان دهنده انجام نشدن
انشعاب است .اگر پیشبینی کننده قبل از اولین انشعاب در وضعیت "انجام نمیشود (با احتمال
کم)" باشد ،چند انشعاب از 10انشعاب پایانی برنامه ،توسط این سیستم به درستی پیشبینی
میشود؟
کانون نشر علوم | 636
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 فصل دوازدهم :حل تستهای کنکورهای سالهای اخیر
-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
پاسخ :با توجه به اینکه اندازه بلوک 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
-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زیرسطح با تاخیر مشخص شده در شکل زیر ممکن است.
پاسخ :در پایپ الین اولیه سطوح تاخیر 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 فهرست راهنما
این نسخه الکترونیک مخصوص شما می باشد .لذا نشر و گسترش آن
https://idars.ir/index.php?id=product/show/1258
برای تهیه کتاب به انتشارات کانون نشر علوم به آدرس تهران -خ انقالب -خ
فخر رازی -خ شهید وحید نظری شرقی -پالک - 65واحد 1مراجعه
فرمایید.