موضوع مقاله: اجرای خارج از ترتیب | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # اجرای خارج از ترتیب | مقدمه: در مهندسی کامپیوتر، اجرای خارج از ترتیب یک الگوی مورد استفاده در اکثر ریزپردازنده‌ها با عملکرد بالا است که منجر به استفاده از چرخه دستورالعمل می‌شود که در غیر این صورت توسط نوع خاصی از تأخیر پرهزینه، تلف خواهد شد. | ## بخش 1: اجرای خارج از ترتیب | در این الگو، یک پردازنده دستورالعمل موجود در دستورهای کنترل شده را به جای اجرای دستورهای اصلی توسط دسترسی به دادهٔ ورودی در برنامه اجرا می‌کند. در انجام این کار، پردازنده می‌تواند از بیکار ماندن جلوگیری کند؛ به این صورت که به جای اینکه منتظر بماند تا در دستورالعمل قبلی، داده‌ها دریافت شود، دستورالعمل بعدی را که فوراً آماده اجرا هست؛ اجرا کند. تاریخچه اجرای خارج از ترتیب، یک شکل محدود از محاسبه‌های جریان داده‌ها است، که یک بخش مهم پژوهشی در معماری کامپیوتر در سال ۱۹۷۰ و اوایل سال ۱۹۸۰ بود. Pleszkunدر سال ۱۹۸۵ منتشر شده، که طرح آن توسط توصیف اینکه چگونه رفتار دقیق استثنا وقتی که دستورات را به ترتیب اجرا نمی کنیم می‌تواند نگهداری شود. مسلماً اولین ماشینی که از اجرای خارج از ترتیب استفاده می‌کرد (CDC 6600 (1964 بود که از یک رتبه‌بندی برای حل برخورد استفاده می‌کرد. در استفاده‌های مدرن، همانند رتبه‌بندی به عنوان ورود دستور در حال اجرا در نظر گرفته می‌شود، از جمله ماشین‌هایی که بر روی اولین برخورد raw می‌مانند. حدود سه سال بعد، سیستم آی بی ام / ۳۶۰ مدل ۹1 (1966) الگوریتم توماسولو را معرفی کرد که باعث ساخت فرایند اجرای خارج از ترتیب شد. در سال ۱۹۹۰ آی بی ام اولین میکروپروسسور با اجرای خارج از ترتیب به نام power1 معرفی کرد، اگرچه اجرای خارج از ترتیب محدود به دستورهای ممیز شناور شد. پیچیدگی منطقی طرح‌های اجرای خارج از ترتیب به این دلیل است که این تکنیک به ماشین‌های اصلی تا اواسط دهه ۱۹۹۰ نرسید. بسیاری از پردازنده‌های low-end برای بازارهای حساس به هزینه هنوز از این الگو استفاده نمی‌کنند به این علت که نواحی بزرگ سیلیکون نیاز به ساخت این کلاس از ماشین‌ها دارند. مصرف انرژی پایین نیز یک هدف دیگر طراحی است که برای رسیدن به طراحی اجرای خارج از ترتیب سخت‌تر است. پیچیدگی ذاتی منطق کنترلی مورد نیاز برای اجرای خارج از ترتیب سبب شد به‌رغم معرفی این روش در ابررایانه‌ها، تا میانهٔ دههٔ ۱۹۹۰ راهی به بسیاری از رایانه‌های اصلی و تجاری پیدا نکند. حتی امروزه نیز شمار قابل توجهی از پردازنده‌های ارزان‌قیمت که برای بازارهای حساس به هزینه طراحی می‌شوند، همچنان از این روش بهره نمی‌برند؛ زیرا پیاده‌سازی چنین معماری‌ای مستلزم سطح سیلیکونی گسترده و مدارهای پیچیده‌تر است. همچنین دستیابی به مصرف انرژی پایین ــ که یکی از اهداف کلیدی در طراحی پردازنده‌های سبک و قابل‌حمل است ــ در حضور اجرای خارج از ترتیب سخت‌تر و پرهزینه‌تر محسوب می‌شود. مفهوم اساسی پردازنده‌های با اجرای به ترتیب در پردازنده‌های قبلی، پردازش دستورالعمل به‌طور معمول در مراحل زیر انجام می‌شود: واکشی دستورالعمل اگر عملوندهای ورودی در دسترس هستند (به عنوان مثال در رجیستر) دستورالعمل به واحد تابعی مناسب اعزام می‌شود. | ## بخش 2: اجرای خارج از ترتیب | اگر یک یا چند عملوند در طول سیکل ساعت فعلی در دسترس نباشند (به‌طور کلی به این دلیل که آن‌ها از حافظه واکشی می‌شوند)، پردازنده تا زمانی که آن‌ها در دسترس قرار بگیرند، منتظر می‌ماند. پردازنده با اجرای خارج از ترتیب این الگوی جدید پردازش دستورالعمل را به این مراحل می‌شکند: واکشی دستورالعمل اعزام دستورالعمل به صف دستورالعمل (همچنین بافر دستورالعمل یا ایستگاه ذخیره نیز نامیده می‌شود) دستورالعمل در صف منتظر می‌ماند تا عملوند ورودی آن در دسترس قرار گیرد. دستورالعمل پس از آن مجاز به ترک صف می‌شود دستورالعمل به واحد عملکردی مناسب صادر و در آن واحد اجرا می‌شود. تنها پس از اینکه تمام دستورهای قدیمی تر نتایجشان به رجیستر فایل پس‌نویسی شد، سپس این نتایج به رجیستر فایل پس‌نویسی می‌شود. مفهوم کلیدی پردازش خارج از ترتیب این است که اجازه می‌دهد پردازنده از یک کلاس از وقت کشی جلوگیری کند که هنگامی رخ می‌دهد که اطلاعات مورد نیاز برای انجام عملیات در دسترس نیست. در طرح فوق، پردازنده خارج از ترتیب مانع از وقت کشی که در مرحله (۲) از پردازنده‌های به ترتیب رخ می‌دهد، می‌شود وقتی که دستورالعمل با توجه به داده‌های از دست رفته، به‌طور کامل آماده پردازش نمی‌شود. پردازنده خارج از ترتیب این «شکاف» را هنگامی که دستورالعمل‌های دیگر که آماده هستند، پر می‌کنند، سپس نتایج را دوباره در پایان سفارش می‌دهد تا به نظر برسد که دستورالعمل به صورت عادی پردازش شده‌است. در این روش دستورهای در کد کامپیوتر اصلی مرتب می‌شوند که به عنوان برنامه مرتب‌کننده شناخته می‌شود، در پردازنده آن‌ها به ترتیب داده به کار گرفته می‌شوند، به ترتیب که در آن داده‌ها، عملوند، در ثبات پردازنده در دسترس است. مدار نسبتاً پیچیده مورد نیاز است برای تبدیل از یک سفارش به سفارش دیگر و حفظ ترتیب منطقی از خروجی؛ پردازنده خودش دستورالعمل به ظاهر تصادفی اجرا می‌کند. مزیت پردازش خارج از ترتیب به عنوان دستورالعمل خط لوله رشد می‌کند و تفاوت سرعت بین حافظه اصلی (یا حافظه کش) کند و پردازنده وسیعتر می‌شود. بنابراین یک پردازنده با اجرای به ترتیب بیشتر زمان خود را منتظر می‌ماند تا داده برسد، اما با اجرای خارج از ترتیب می توانیم تعداد زیادی از دستورالعمل های بعدی را پردازش کنیم. اعزام و جدا کردن موضوع به مسئله out-of-order اجازه می‌دهد یکی از تفاوت‌های ایجاد شده توسط این الگوی جدید ایجاد صف است که اجازه می‌دهد تا مرحله اعزام از مرحله مسئله جدا شود و مرحله فراغت از مرحله اجرا جدا شود. دستورالعمل برنامه که آن را اجرا می‌کرد، تا زمانی که نتیجه نهایی درست است ممکن بود که در جهت درست اجرا نمی‌شد. آن با استفاده از بافر در پردازنده پایپلاین مرحله واکشی و رمزگشایی را از مرحله اجرا جدا می‌کند. هدف بافر پارتیشن‌بندی دسترسی به حافظه و اجرای توابع در یک برنامه کامپیوتری است و دستیابی به کارایی بالا با بهره‌برداری از موازی سازی بین این دو است. | ## بخش 3: اجرای خارج از ترتیب | علاوه بر این، بافر بزرگتر ایجاد گرمای بیشتر می‌کند و فضای زیادی از die را اشغال می‌کند. معماری جداشونده به‌طور کلی اندیشه مفیدی برای اهداف محاسباتی نیست و همین‌طور آن‌ها کد فشرده کنترلی را به خوبی اداره نمی‌کنند. کد فشرده کنترلی شامل چیزهایی مانند پرش‌های تو در تو که اغلب در هسته سیستم عامل به صورت متناوب رخ دهد، می‌باشد. معماری جداشونده نقش مهمی در برنامه‌ریزی کلمه دستورالعمل بسیار طولانی (VLIW) معماری بازی می‌کند.M. برای جلوگیری از وابستگی عملوند نادرست، که می‌تواند فرکانس را کاهش دهد هنگامی که دستورالعمل می‌تواند در خارج از ترتیب صادر شده، یک تکنیک به نام تغییر نام رجیستر استفاده شده‌است. رجیسترهای فیزیکی علامت گذاری شده‌اند به طوری که نسخه‌های متعدد از رجیسترهای معماری یکسان می‌تواند هم‌زمان وجود داشته باشد. اجرا و انفصال بازنویسی اجازه می‌دهد تا برنامه مجدد راه اندازی شود صف برای نتایج لازم است تا مسائل مانند پرش اشتباه پیش‌بینی شده و استثنا / تله را حل کند. صف نتایج اجازه می‌دهد تا برنامه‌ها بعد از یک استثنا دوباره راه اندازی شوند، که نیاز به دستورالعمل برای تکمیل شدن در برنامه دارند. صف اجازه می‌دهد تا نتایج ناشی از پیش‌بینی اشتباه در دستورالعمل پرش قدیمی تر و استثناهای گرفته شده در دستورالعمل قدیمی تر دور انداخته شود. قابلیت صدور دستورالعمل پرش گذشته که تا کنون حل شده‌است به عنوان اجرای حدسی شناخته شده‌است. انتخاب میکرو-معماری آیا دستورالعمل به صف متمرکز یا به صف توزیع شده متعدد اعزام می‌شود؟ آیا صف نتایج واقعی وجود دارد یا نتایج به‌طور مستقیم به یک فایل رجیستر نوشته شده‌است؟ برای دومی، تابع صف با رجیسترمپ که اطلاعات باقی‌مانده رجیستر را نگه می‌دارد برای هر دستورالعمل در اعزام، به کار می‌رود. | ## جمع‌بندی | سال‌ها بعد Netburst به یک بن‌بست رسید به دلیل خط لوله طولانی آن که فرکانس عملیاتی را بسیار بالاتر برد.