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