موضوع مقاله: سوپراسکالر | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سوپراسکالر | مقدمه: موازی‌سازی در سطح دستور با استفاده از چندین پایپ لاین مستقل تأمین می‌شود، در واقع هر بار چند دستور(در شکل فوق ۳ دستور) به صورت موازی پردازش می‌شوند. | ## بخش 1: سوپراسکالر | از این رو اجازه می‌دهند توان عملیاتی سریع تر از دیگر حالات ممکن در یک کلاک باشد. -یک پردازشگر سوپراسکالر با توزیع هم‌زمان دستورالعمل‌های متفاوت به واحدهای عملیاتی اضافی (redundant)، پردازش بیش از یک دستورالعمل را انجام می‌دهد. هر واحد عملیاتی یک هسته جداگانه ندارد ولی یک منبع اجرایی جداگانه مانند ALU، شیفت دهنده بیتی یا یک ضرب‌کننده را دارد. -در طبقه‌بندی فلین(Flynn) یک پردازشگر سوپر اسکالر به عنوان یک پردازشگر MIMD طبقه‌بندی شده‌است.(دستورالعمل چندگانه، داده چندگانه) -در حالی که CPU سوپراسکالر به‌طور معمول پایپ لاین هم است ولی معماری پایپ لاین و سوپر اسکالر تکنیک‌های متفاوتی برای افزایش کارایی دارند. هر دستورالعملی با یک پردازشگر اسکالر اجرا می‌شود نوعاً یک یا دو آیتم اطلاعات را در یک زمان اداره می‌کند. از این رو چندین دستورالعمل می‌توانند آیتم‌های اطلاعاتی جداگانه ایی را هم‌زمان پردازش کنند. طرح CPU سوپر اسکالر بر افزایش دقت توزیع دستورالعمل‌ها تأکید دارد و همچنین اجازه می‌دهد تا واحدهای چند عملکردی در هر زمانی قابل استفاده باشند. این امر به‌طور فزاینده ایی از زمانی که تعداد واحد ها(Units) زیاد شده، مهم شده‌است. هنگامی‌که توزیع‌کننده واحدها را با دستورالعمل‌ها تغذیه می‌کند اگر با مشکل روبه رو شود، عملکرد سیستم صدمه خواهد دید. یک پردازشگر سوپر اسکالر معمولاً اجرای یک دستورالعمل اضافی را متحمل می‌شود اما فقط پردازش چندین دستورالعمل به صورت همزمان، یک معماری سوپر اسکالر را نمی‌سازد تا زمانی که، معماری‌های پایپ لاین، چند پردازندگی یا چند هسته ایی، آن را به‌دست بیاورند اما با یک متد متفاوت. | ## بخش 2: سوپراسکالر | در یک CPU سوپر اسکالر پخش‌کننده، دستور العمل‌ها را از روی حافظه می خواند و تصمیم می‌گیرد که کدامیک می‌توانند به صورت موازی انجام گیرند، سپس آن‌ها را به واحدهای عملیاتی اضافی که در کنار CPU‌های منفرد هستند می فرستند. علاوه براین، پردازشگرهای سوپر اسکالر توانایی پیش بینی چندین پایپ لاین موازی را که هر یک از دستورالعمل‌های پردازشی آن، از یک نخ (Thread) مجزا باشد، داراست . محدودیت‌ها بالا بردن کارایی که از طریق تکنیک‌های سوپر اسکالر به‌دست می‌آید به ۳ چیز محدود می‌شود: درجه ذاتی موازی‌سازی در جریان دستورالعمل ها. انشعاب‌های دستورالعمل در حال پردازش برنامه‌های باینری قابل اجرایی وجود دارند که درجه ذاتی موازی‌سازی آن‌ها با هم متفاوت است. در بعضی موارد دستورالعمل‌ها به یک دیگر وابسته نمی‌باشند و می‌توانند به‌طور هم‌زمان اجرا شوند. دستورالعمل‌های ;a = b + c;، d = e + f می‌توانند موازی با هم اجرا شوند و هیچ‌کدام از نتایج وابسته به محاسبهٔ دیگری نیست. هزینه چک کردن وابستگی به سرعت افزایش می یابد، و این موضوع با نیاز به چک کردن وابستگی در زمان اجرا و در کلاک CPU، تشدید می‌شود. این هزینه‌ها شامل گیت‌های منطقی اضافی مورد نیاز برای چک کردن و زمان تاخیری که به خاطر این گیت‌ها به وجو می‌آید می‌باشد. تحقیقات نشان می‌دهد که تعداد گیت‌ها در بعضی موارد به گیت و تأخیر نیز به رسیده‌است که تعداد دستورالعمل‌هایی است که جزو دستور العمل‌های پردازشی می‌باشند و تعداد دستورالعمل‌هایی که به صورت هم‌زمان توزیع شده‌اند. اگر چه جریان دستورالعمل‌ها ممکن است شامل هیچ وابستگی داخلی نباشد، با این حال یک CPU سوپر اسکالر باید این موضوع را چک کند زیرا هیچ تضمینی وجود ندارد. | ## بخش 3: سوپراسکالر | در این جا یک محدودیت عملی روی تعداد دستورالعمل‌هایی که به صورت موازی قابل توزیع هستند داریم. در حالی که روند پیشرفت اجازه خواهد داد واحدهای عملیاتی را بیشتر کنیم، باری که از چک کردن وابستگی دستورالعمل هاست به سرعت زیاد می‌شود، که سوپر اسکالر دست یافتنی را به ۵ با ۶ دستورالعمل‌هایی که به‌طور هم‌زمان توزیع شوند محدود می‌کند. مباحث مرتبط در مجموع این محدودیت‌ها تحقیق را به سمت تغییرات دیگر معماری‌ها مانند VLIW، EPIC، SMT و همچنین چند نخی و پردازش چند هسته ایی سوق می‌دهد. با VLIW وظیفه سنگین چک کردن وابستگی، در زمان اجرا به وسیله سخت افزار برداشته شده و به کامپایلر محول می‌گردد.EPIC همانند VLIW است، با حافظهٔ نهان اضافی برای پیش واکشی دستورالعملها چند نخی هم‌زمان با نام اختصاری SMT، تکنیکی است جهت ارتقای بازده کلی CPU‌های سوپر اسکالر. سوپر اسکالر با پردازشگرهای چند هسته ایی که واحدهای عملیاتی اضافی در تمام پردازشگرهای نیستند متفاوت است. یک تک پردازنده محاسبات خود را به وسیله واحدهای عملیاتی مانند ALU و شیفت دهنده و ضرب‌کننده و ممیز شناور و غیره انجام می‌دهد. ممکن است نسخه‌های چندگانه ایی از هر واحد عملیاتی وجود داشته باشد که اجرای تعداد زیادی دستورالعمل را به‌طور موازی ممکن سازد. که این با پردازشگرهای چند هسته ایی که هم‌زمان دستورالعمل‌ها را از چند نخی (هر نخ برای یک هسته)گرفته و پردازش می‌کند متفاوت است و همچنین این با CPU‌های پایپ لاین، که دستورالعمل‌های چندگانه می‌توانند هم‌زمان در مراحل مختلف اجرا باشند نیز تفاوت دارد. | ## جمع‌بندی | بنابراین یک CPU چند هسته ایی جایی که هر هسته، یک پردازشگر مستقل شامل موازی‌سازی پایپ لاین که هر پایپ لاین سوپر اسکالر باشد، محتمل وامری شدنی است و همچنین تعداد زیادی از پردازنده‌ها هم دارای قابلیت برداری (Vector) باشد.