اسلايد۷

Download Report

Transcript اسلايد۷

‫پردازش موازی‬
‫و‬
‫پایپالین‬
‫پردازش موازی‪:‬‬
‫• پردازش موازی به معنی به کارگیری تکنیک‬
‫های متنوع در پردازش همزمان داده هاست که‬
‫به منظور افزایش سرعت محاسبات سیستم های‬
‫کامپیوتری مورد استفاده قرار می گیرد‪ .‬مثال‬
‫وجود چندپردازنده در یک سیستم یا وجود‬
‫چندین واحد اجرایی یا وجود چندین ‪ALU‬‬
‫نمونه هایی از پردازش موازی هستند‪.‬‬
‫• ‪(Single Instruction Stream Single Data Stream) SISD -1‬‬
‫• دارای یک ‪ CPU‬هستند که یک دستور روی یک‬
‫داده می توانند اجرا کنند‪ .‬یعنی یک واحد‬
‫کنترل و یک ‪ ALU‬دارند‪ .‬بعضی منابع این نوع‬
‫را معماری فن نیومن نیز میگویند‪.‬‬
‫• ‪(Single Instruction Stream Multiple Data Stream) SIMD -2‬‬
‫• یک واحد کنترل و چندین واحد پردازشگر‬
‫(‪ )PE:Processing element‬دارند‪ .‬واحد کنترل برای‬
‫همه ‪ PE‬ها یک دستور صادر می کند و ‪ PE‬ها‬
‫دستور را روی داده ها مختلف انجام می دهند‪.‬‬
‫• آرایه های پردازنده (‪ ) Array Processor‬در این‬
‫دسته هستند‪.‬‬
‫• مثال زیر از یک ماشین‬
‫‪ SIMD‬را نشان می دهد‬
‫که به آن ماشین برداری‬
‫(‪ )vector machine‬گویند‪.‬‬
‫این ماشین دارای ‪n‬‬
‫واحد محاسباتی (‪)ALU‬‬
‫است که ورودی ها به‬
‫صورت بردارهای ‪ n‬تایی‬
‫‪A‬‬
‫‪B‬‬
‫‪A+B‬‬
‫وارد می شوند و هر ‪ALU‬‬
‫روی یک ‪9‬مؤلفه ‪ 5‬از ‪4‬‬
‫این‬
‫‪6‬‬
‫‪3‬‬
‫‪9‬‬
‫مثل جمع ‪3‬را‬
‫عملی‬
‫بردار‬
‫‪1‬‬
‫‪4‬‬
‫‪2‬‬
‫انجام می‪ 5‬دهد‪3 .‬‬
‫‪11‬‬
‫‪9‬‬
‫‪11‬‬
‫‪16‬‬
‫‪4‬‬
‫‪1‬‬
‫‪8‬‬
‫‪8‬‬
‫‪7‬‬
‫‪8‬‬
‫‪3‬‬
‫‪8‬‬
‫‪Input vectors‬‬
‫‪A‬‬
‫‪B‬‬
‫‪Vector ALU‬‬
‫‪Output vector‬‬
‫‪(Multiple Instruction Stream Single Data Stream) MISD -3‬‬
‫فقط از نظر تئوری حائز اهمیت است چون عمال‬
‫هیچ سیستمی با چنین سازمانی ساخته نشده‬
‫است‪ .‬در برخی منابع گفته شده که سیستم های‬
‫تحمل پذیر خطا (‪ )Fault tolerant‬در این دسته‬
‫هستند‪.‬‬
‫همچنین پایپالین نیز در برخی منابع نوعی‬
‫‪ MISD‬معرفی شده است و شاید کامپیوترهای‬
‫آرایه ای تپنده ( ‪ )Systolic- array‬نیز ‪MISD‬‬
‫هستند‪.‬‬
‫‪(Multiple Instruction Stream Multiple Data MIMD -4‬‬
‫)‪Stream‬‬
‫می توانند چندین برنامه را در یک زمان روی‬
‫داده های متفاوت اجرا کنند‪ .‬سیستم های چند‬
‫شکل زیر یک چند پردازنده را نشان می دهد‬
‫اشتراکی استفاده می کند‪.‬‬
‫حافظه‬
‫‪Shared‬‬
‫که از یک ‪memory‬‬
‫‪cpoa‬‬
‫‪CPU‬‬
‫‪cpoa‬‬
‫‪CPU‬‬
‫‪cpoa‬‬
‫‪CPU‬‬
‫‪cpoa‬‬
‫‪CPU‬‬
‫‪Bus‬‬
‫به منظور کاهش تداخل دسترسی ها‪ ،‬هر‬
‫پردازنده می تواند حافظه محلی نیز داشته‬
‫‪ Local‬است‪.‬‬
‫‪memories‬شده‬
‫باشد که در شکل زیر نمایش داده‬
‫‪Shared memory‬‬
‫‪cpoa‬‬
‫‪CPU‬‬
‫‪cpoa‬‬
‫‪CPU‬‬
‫‪cpoa‬‬
‫‪CPU‬‬
‫‪Bus‬‬
‫توجه‪ :‬طبقه بندی های فوق همه معماری‬
‫ها را پوشش نمی دهد‪.‬‬
‫‪cpoa‬‬
‫‪CPU‬‬
‫• پایپالین (خط لوله)‪(pipeline) :‬‬
‫• پایپالین تکنیکی است که یک عمل سری را به‬
‫عملیات جزئی تفکیک می کند و هر عمل جزئی‬
‫همزمان با سایر عملیات جزئی قابل انجام است‪.‬‬
‫• در واقع پایپالین از تعدادی بند(‪)state, stage‬‬
‫تشکیل شده است که هر بند وظیفه خاصی به عهده‬
‫دارد و بندها می توانند همزمان عملیات خاص‬
‫خود را انجام دهند‪.‬‬
‫• مثال فرض کنید که خط لوله شامل ‪ 4‬بند است و‬
‫(کارها) ‪task‬ها به ترتیب وارد این بندها می‬
‫شوند‪.‬‬
‫• فرض کنید هر بند یک کالک به طول می انجامد‪،‬‬
‫بنابراین‬
‫• به ازای هر بند یک ثبات (لچ) الزم است و‬
‫به ثباتهای کالک زده می شود تا بندها با‬
‫هم سنکرون شوند‪ .‬پریود کالک باید طوری‬
‫تنظیم شود که بندها فرصت کنند عملیات‬
‫بند‬
‫خروج ‪1‬‬
‫‪.‬‬
‫خود را کامل کنند‬
‫خروج ‪2‬‬
‫خروج ‪3‬‬
‫زمان‬
‫‪2 3‬‬
‫‪3 4‬‬
‫‪4 5‬‬
‫‪5 6‬‬
‫‪4‬‬
‫‪3‬‬
‫‪1‬‬
‫‪1 2‬‬
‫‪2‬‬
‫‪1 2 3‬‬
‫‪1 1 2 3‬‬
‫‪4‬‬
‫‪B‬‬
‫• پایپالین محاسباتی‪:‬‬
‫• این مدل برای پیاده سازی‬
‫عملیات ممیز شناور‪ ،‬ضرب‬
‫اعداد ممیز ثابت و سایر بند‬
‫اعمال محاسباتی انجام می‬
‫شود‪.‬‬
‫• فرض کنید بخواهیم دو عدد‬
‫نرمال شده ممیز شناور 𝑋‬
‫𝑎‪ = 𝐴 × 2‬و 𝑏‪ 𝑌 = 𝐵 × 2‬را‬
‫با هم جمع و تفریق‬
‫بند‬
‫نماییم‪ A,B .‬مانتیس و ‪a,b‬‬
‫نما هستند‪.‬‬
‫‪R‬‬
‫‪1‬‬
‫بند ‪2‬‬
‫ثبات هایی که با ‪ R‬مشخص‬
‫شده اند برای ذخیره نتایجبند‬
‫‪4‬‬
‫میانی استفاده شده اند‪.‬‬
‫عملیاتی که در این ‪ 4‬بند‬
‫انجام می شوند شامل‪:‬‬
‫‪A‬‬
‫مانتیس‬
‫‪3‬‬
‫‪b‬‬
‫نما‬
‫‪a‬‬
‫‪R‬‬
‫حاصل مقایسه مقایسه‬
‫نماها با‬
‫تفریق‬
‫تنظیم‬
‫مانتیس‬
‫‪R‬‬
‫‪R‬‬
‫انتخاب نمای‬
‫مناسب‬
‫جمع یا‬
‫تفریق‬
‫مانتیس‬
‫ها‬
‫‪R‬‬
‫‪R‬‬
‫نرمال کردن‬
‫نتیجه‬
‫تنظیم‬
‫نما‬
‫‪R‬‬
‫‪R‬‬
‫• پایپالین دستور‪:‬‬
‫• سیکل دستور یک سیکل‬
‫ترکیبی است که با کمک‬
‫پایپالین می توان مراحل‬
‫را روی هم انداخت‪ .‬مثال‬
‫فرض کنید در یک ماشین‬
‫مراحل اجرای دستور‬
‫عبارتند از‪:‬‬
‫‪ -1‬واکشی دستور )‪(FI‬‬
‫‪ -2‬ترجمه دستور و محاسبه‬
‫آدرس موثر )‪(DA‬‬
‫‪ -3‬واکشی عملوند )‪(FO‬‬
‫‪ -4‬اجرا و ذخیره حاصل در‬
‫یک مکان مناسب‬
‫واکشی‬
‫دستور‬
‫‪Segment 1:‬‬
‫ترجمه دستور‬
‫و محاسبه‬
‫آدرس موثر‬
‫‪Segment 2:‬‬
‫‪yes‬‬
‫?‪Branch‬‬
‫واکشی‬
‫عملوند‬
‫از حافظه‬
‫‪Segment 3:‬‬
‫اجرای‬
‫دستور‬
‫‪Segment 4:‬‬
‫‪yes‬‬
‫?‪Interrupt‬‬
‫‪Interrupt‬‬
‫‪handling‬‬
‫‪No‬‬
‫‪Update PC‬‬
‫‪Empty pipe‬‬
‫• انواع مخاطرات در پایپالین‪:‬‬
‫• مخاطرات ساختاری‪:‬‬
‫ناشی از کمبود منابع مانند حافظه مثال‬
‫حافظه دستور و آدرس یکسان هستند پس عمل ‪FI‬‬
‫و ‪ FO‬همزمان نمی توانند اجرا شوند‪.‬‬
‫• مخاطرات داده ای‪:‬‬
‫ناشی از وابستگی بین دستورات مثال یک دستور‬
‫در مرحله ‪ FO‬نیاز به واکشی عملی دارد که‬
‫در همان لحظه توسط دستور قبلی در حال‬
‫تولید است‪.‬‬
‫• مخاطرات کنترلی‪:‬‬
‫ناشی از وجود دستورات انشعاب بخصوص انشعاب‬
‫شرطی مثال ممکن یک دستور انشعاب ترتیب‬