تالار گفتمان مانشت
خط لوله - IT 83 - نسخه‌ی قابل چاپ

خط لوله - IT 83 - ldns0098 - 19 آذر ۱۳۹۳ ۰۱:۱۱ ب.ظ

برای حل مشکل برانچ در کامپیوترهایی که از روش خط لوله ای با چهار قطعه استفاده میکنند، روش جا به جا نمودن دستورالعملها توسط کامپایلر یکی از روشهاست. اگر کد زیر مفروض باشد کدام یک از دنباله دستورات زیر توسط چنین کامپایلری تولید میشود؟
کد:
add r1,r2
sub r3,r4
branch to p1
P3: mul r5, r6
branch to P2
P1: add r3, r2
branch to P3
P2: dec r6
در بین چهار گزینه داده شده گزینه مد نظر شامل کد زیر است و توضیح انتخاب این گزینه این است که باید بعد از دستور branch یک یا چند دستور وارد پایپ لاین شوند. و این گزینه ای است که بعد از branch دستور دیگری وارد پایپ کرده.
کد:
branch to P1
Nop
branch to P3
...
اشکال من اینجاست که اصلا اینکه بعد از برنچ دستور دیگه ای باید وارد پایپ شه چه توجیهی داره؟ در صورتی هم که برنچ دیگه ای بعد از برنچ بیاد باز هم دستورات مشخصی واکشی میشن و ...
دوستان ممنون میشم راهنمایی کنید.

پ.ن: سوال ۲۷- فصل ششم پوران

RE: خط لوله - IT 83 - salam5 - 19 آذر ۱۳۹۳ ۰۲:۲۳ ب.ظ

به نظرم منظورش اینه که باید بعد از برنچ یه دستور دیگه به جز برنچ(یعنی یه دستور ساده)وارد کنیم تا فرصت بدیم دستور انشعاب اجرا بشه و آدرس مقصدش تعیین بشه، بهترین حالت اینه که از دستورات خودش استفاده کنیم اگه نبود nop میذاریم
توی گزینه های دیگه برنچ ا پشت سر هم ند و فرصتی که گفتم بهشون داده نمیشه فقط این گزینه س که بعد از هر برنچ یه دستور دیگه آورده تا در فاصله ی اجرای آن دستور، تکلیف اون برنچ مشخص بشه
توی ص ۱۷۴ مثال آخرم به این قضیه اشاره شده

RE: خط لوله - IT 83 - sana70 - 21 آذر ۱۳۹۳ ۰۲:۱۰ ب.ظ

دوست عزیز من یه توضیح کوتاهی میدم امیدوارم مفید باشه
اینجا ما مخاطره کنترلی داریم,مخاطره کنترلی چه موقعی پیش میاد؟موقعی که دستورات انشعاب داشته باشیم ,خوب حالا باید راه حلی رو برای رفع این مخاطره پیدا کنیم
یکی از راه حل های رفع مخاطره کنترلی delayed branchهست,خوب delayed branch چی هست؟یعنی دستورات رو طوری به جابه جا کنیم که منطق برنامه به هم نریزه و در واقع دستورا مفیدی که حتما اجرا میشوند و ربطی به انشعاب ندارند(یعنی توی این مثال ما باید بعد branchدستوری رو بیاریم که حتما اجرا میشه,خوب دقت کن که فقط گزینه یک اینطور هست)
نکته:اگه دستوری دیگه نداشتیم no-opمیگذاریم بعد branch
امیدورام خوب توضیح داده باشمSmile

RE: خط لوله - IT 83 - sana70 - 21 آذر ۱۳۹۳ ۰۹:۱۸ ب.ظ

(۲۱ آذر ۱۳۹۳ ۰۷:۳۸ ب.ظ)ldns0098 نوشته شده توسط:  ممنونم دوستان. کامل متوجه شدم Smile
خواهش میکنم
برای تشکر میتونید اون بالا + رو بزنیدTongue