اجرای خارج از ترتیب
اجرای خارج از ترتیب به یک پردازنده امکان میدهد تا دستورالعملها را به محض آماده شدن عملوندهایشان، به جای رعایت دقیق ترتیب برنامه، اجرا کند. این کار با استفاده از تغییر نام ثبات و بافرینگ برای آشکارسازی موازیسازی انجام میشود، در حالی که همچنان نتایج را به ترتیب تولید میکند.
Definition
اجرای خارج از ترتیب یک تکنیک ریزمعماری است که در آن یک پردازنده به صورت پویا اجرای دستورالعملها را برای اجرای دستورالعملهای مستقل در هر زمان که عملوندهایشان در دسترس باشند، مرتبسازی مجدد میکند، در حالی که از بافرینگ و تغییر نام برای حفظ ظاهر تکمیل ترتیبی و منظم استفاده میکند.
Scope
این موضوع زمانبندی پویا را پوشش میدهد: ایستگاههای رزرو، تغییر نام ثبات برای حذف وابستگیهای کاذب، بافر مرتبسازی مجدد که تعهد به ترتیب را اعمال میکند، و بازیابی اجرای حدسی. این مبحث مستقیماً بر الگوریتم توماسولو بنا شده است. این موضوع شامل پیشبینی جهت شاخه (پیشبینی شاخه) و مفهوم گستردهتر میزان موازیسازی موجود (موازیسازی در سطح دستورالعمل) نمیشود و بر خود مکانیزم مرتبسازی مجدد تمرکز دارد.
Core questions
- چگونه یک پردازنده میتواند دستورالعملها را خارج از ترتیب برنامه اجرا کند و در عین حال نتایج صحیح و به ترتیب تولید کند؟
- چگونه تغییر نام ثبات وابستگیهای نوشتن پس از خواندن و نوشتن پس از نوشتن را حذف میکند؟
- ایستگاههای رزرو و بافر مرتبسازی مجدد چه کمکی میکنند؟
- چگونه استثنائات و پیشبینیهای نادرست در یک هسته خارج از ترتیب به طور دقیق بازیابی میشوند؟
Key concepts
- زمانبندی پویا
- ایستگاههای رزرو
- تغییر نام ثبات
- گذرگاه داده مشترک
- بافر مرتبسازی مجدد
- تعهد به ترتیب
- استثنائات دقیق
- بازیابی اجرای حدسی
Key theories
- الگوریتم توماسولو
- طرح توماسولو از ایستگاههای رزرو و یک گذرگاه داده مشترک برای تغییر نام ثباتها و ارسال دستورالعملها به واحدهای عملیاتی به محض در دسترس قرار گرفتن عملوندهایشان استفاده میکند، که امکان اجرای خارج از ترتیب را فراهم میآورد که تنها به وابستگیهای دادهای واقعی احترام میگذارد.
- استثنائات دقیق از طریق تعهد به ترتیب
- یک بافر مرتبسازی مجدد نتایج دستورالعملهای خارج از ترتیب را نگه میدارد و آنها را به ترتیب برنامه تعهد میدهد، به طوری که استثنائات و پیشبینیهای نادرست میتوانند به طور دقیق مدیریت شوند، گویی که اجرا کاملاً متوالی بوده است.
Mechanisms
دستورالعملهای رمزگشایی شده به ثباتهای فیزیکی تغییر نام داده میشوند و در ایستگاههای رزرو یا صف صدور قرار میگیرند، جایی که منتظر عملوندهای پخش شده در گذرگاه نتایج میمانند. هنگامی که آماده شدند، آنها بر روی واحدهای عملیاتی موجود به هر ترتیبی اجرا میشوند. یک بافر مرتبسازی مجدد، ترتیب برنامه اصلی را ردیابی میکند و نتایج را به صورت متوالی تعهد میدهد، نتایج حدسی را در صورت پیشبینی نادرست یا استثنا دور میاندازد تا وضعیت معماری همیشه دقیق باشد.
Clinical relevance
اجرای خارج از ترتیب موتور اصلی CPUهای با کارایی بالا است که با یافتن کارهای مستقل برای انجام، تأخیرهای حافظه و اجرا را پنهان میکند. همچنین پیامدهای امنیتی دارد: از آنجایی که کار حدسی و خارج از ترتیب میتواند به طور موقت به دادهها دسترسی پیدا کند قبل از اینکه لغو شود، این امر امکان حملات کانال جانبی ریزمعماری از نوع Spectre و Meltdown را فراهم کرده است.
History
توماسولو زمانبندی پویا را در IBM System/360 Model 91 در سال 1967 معرفی کرد. ترکیب آن با بافر مرتبسازی مجدد برای استثنائات دقیق، که در دهه 1980 توسعه یافت، اجرای خارج از ترتیب را برای پردازندههای عمومی عملی کرد و از اواسط دهه 1990 به بعد در طراحیهای با کارایی بالا استاندارد شد.
Debates
- عملکرد در مقابل پیچیدگی، توان و امنیت
- اجرای خارج از ترتیب عملکرد تک رشتهای قوی را ارائه میدهد اما با هزینه قابل توجهی در پیچیدگی سختافزاری و توان، و حدس و گمان آن قابل بهرهبرداری بودن خود را ثابت کرده است؛ این امر بحث را در مورد اینکه چقدر باید به صورت تهاجمی حدس و گمان زد در مقابل ترجیح طراحیهای سادهتر، کارآمدتر یا امنتر، دامن میزند.
Key figures
- Robert Tomasulo
- Yale Patt
- James E. Smith
- John L. Hennessy
Related topics
Seminal works
- tomasulo1967
- hennessy2019
Frequently asked questions
- اگر دستورالعملها خارج از ترتیب اجرا شوند، چگونه برنامه همچنان صحیح است؟
- پردازنده تنها اجرای دستورالعملها را مرتبسازی مجدد میکند، نه نتایج را. تغییر نام ثبات تضمین میکند که به وابستگیهای دادهای واقعی احترام میگذارد، و یک بافر مرتبسازی مجدد نتایج را به ترتیب برنامه اصلی تعهد میدهد، بنابراین وضعیت معماری قابل مشاهده دقیقاً همان چیزی است که اجرای متوالی تولید میکند.
- تغییر نام ثبات چیست؟
- تغییر نام ثبات، ثباتهای معماری نامگذاری شده در دستورالعملها را به یک مجموعه بزرگتر از ثباتهای فیزیکی نگاشت میکند. این کار وابستگیهای کاذب (نامی) را که از استفاده مجدد از نامهای ثبات ناشی میشوند، حذف میکند و به دستورالعملهای مستقل بیشتری اجازه میدهد تا به صورت موازی بدون تداخل بر روی ذخیرهسازی ثبات اجرا شوند.