خط لوله - IT 83 - نسخهی قابل چاپ |
خط لوله - IT 83 - ldns0098 - 19 آذر ۱۳۹۳ ۰۱:۱۱ ب.ظ
برای حل مشکل برانچ در کامپیوترهایی که از روش خط لوله ای با چهار قطعه استفاده میکنند، روش جا به جا نمودن دستورالعملها توسط کامپایلر یکی از روشهاست. اگر کد زیر مفروض باشد کدام یک از دنباله دستورات زیر توسط چنین کامپایلری تولید میشود؟ کد: add r1,r2 کد: branch to P1 دوستان ممنون میشم راهنمایی کنید. پ.ن: سوال ۲۷- فصل ششم پوران |
RE: خط لوله - IT 83 - salam5 - 19 آذر ۱۳۹۳ ۰۲:۲۳ ب.ظ
به نظرم منظورش اینه که باید بعد از برنچ یه دستور دیگه به جز برنچ(یعنی یه دستور ساده)وارد کنیم تا فرصت بدیم دستور انشعاب اجرا بشه و آدرس مقصدش تعیین بشه، بهترین حالت اینه که از دستورات خودش استفاده کنیم اگه نبود nop میذاریم توی گزینه های دیگه برنچ ا پشت سر هم ند و فرصتی که گفتم بهشون داده نمیشه فقط این گزینه س که بعد از هر برنچ یه دستور دیگه آورده تا در فاصله ی اجرای آن دستور، تکلیف اون برنچ مشخص بشه توی ص ۱۷۴ مثال آخرم به این قضیه اشاره شده |
RE: خط لوله - IT 83 - sana70 - 21 آذر ۱۳۹۳ ۰۲:۱۰ ب.ظ
دوست عزیز من یه توضیح کوتاهی میدم امیدوارم مفید باشه اینجا ما مخاطره کنترلی داریم,مخاطره کنترلی چه موقعی پیش میاد؟موقعی که دستورات انشعاب داشته باشیم ,خوب حالا باید راه حلی رو برای رفع این مخاطره پیدا کنیم یکی از راه حل های رفع مخاطره کنترلی delayed branchهست,خوب delayed branch چی هست؟یعنی دستورات رو طوری به جابه جا کنیم که منطق برنامه به هم نریزه و در واقع دستورا مفیدی که حتما اجرا میشوند و ربطی به انشعاب ندارند(یعنی توی این مثال ما باید بعد branchدستوری رو بیاریم که حتما اجرا میشه,خوب دقت کن که فقط گزینه یک اینطور هست) نکته:اگه دستوری دیگه نداشتیم no-opمیگذاریم بعد branch امیدورام خوب توضیح داده باشم |
RE: خط لوله - IT 83 - sana70 - 21 آذر ۱۳۹۳ ۰۹:۱۸ ب.ظ
(۲۱ آذر ۱۳۹۳ ۰۷:۳۸ ب.ظ)ldns0098 نوشته شده توسط: ممنونم دوستان. کامل متوجه شدمخواهش میکنم برای تشکر میتونید اون بالا + رو بزنید |