سوپراسکالر

تاریخچه

CDC ۶۶۰۰های Seymour Cray از سال ۱۹۶۵ اغلب به عنوان اولین طرح سوپر اسکالر مورد توجه قرار گرفند.

ریز پردازنده‌های (Intel i۹۶۰ CA (۱۹۸۸و سری‌های AMD ۲۹۰۰۰، ۲۹۰۵۰ نخستین ریز پردازنده‌های سوپر اسکالر تک تراشه ایی(single chip) تجاری بودند. CPU‌های RISK مانند این‌ها نخستین ریز پردازنده‌هایی بودند که از ایده سوپر اسکالر استفاده کرد، برای اینکه طرح RISK منجر به یک هسته ساده (simple core) گردد. بنابراین اجازه در برگرفتن واحدهای چند عملکردی (مانند ALUها) بر یک CPU در طراحی محدود به قواعد زمانی را می‌دهد.(این پاسخ پرسشی بود که چرا طرح‌های RISK در دههٔ ۱۹۸۰ و ۱۹۹۰ از طرح‌های CISC سریع تر بودند.)

به استثنای CPU‌هایی که در کاربرد کم مصرف قرار می‌گرفتند و سیستم‌های جاسازی شده (embedded systems) و دستگاه‌های باتری (Battery-powered) اساساً تمامی CPU‌های همه منظوره که از حدود سال ۱۹۸۸ توسعه یافت همگی سوپر اسکالر بودند.

P۵ Pentium نخستین پردازشگر سوپر اسکالر X۸۶ بود. Nx۵۸۶، P۶ Pentium Pro و AMD K۵ جزو اولین طرح‌هایی بودند که دستورهای آسنکرون X۸۶ را به صورت dynamic microcode (مانند سری‌های قبلی micro-op) برای اجرای واقعی بر یک microarchitecture سوپر اسکالر، رمز گشایی(decode) می‌کردند. این امر راه را برای زمان بندی دینامیک بافر شدن بخشی از دستورها باز نمود. و موارد موازی‌سازی بیشتری را در مقایسه با متدهای صلبی که در P۵ Pentium مورد استفاده قرار می‌گرفت قادر ساخت تا استخراج (extract) شوند. ضمناً مسئله speculative execution را ساده ساخت و موجب بالاتر رفتن فرکانس کلاک در مقایسه با طرح‌هایی چون Cyrix ۶x۸۶ گردید.

از اسکالر به سوپراسکالر

ساده‌ترین پردازشگرها، اسکالر پردازشگرها (scalar processor) می‌باشند. هر دستورالعملی با یک پردازشگر اسکالر اجرا می‌شود نوعاً یک یا دو آیتم اطلاعات را در یک زمان اداره می‌کند. در مقابل هر دستورالعملی که به وسیله یک پردازشگر برداری (Vector processor) اجرا می‌شود در یک زمان بر روی تعداد زیادی آیتم اطلاعاتی کار می‌کند. یک پردازشکر سوپر اسکالر از یک ترکیب چندتایی، مرتب شده‌است.

هر دستورالعمل یک آیتم اطلاعاتی را پردازش می‌کند. اما واحدهای چند عملکردی اضافی با هر CPU وجود دارد. از این رو چندین دستورالعمل می‌توانند آیتم‌های اطلاعاتی جداگانه ایی را هم‌زمان پردازش کنند.

طرح CPU سوپر اسکالر بر افزایش دقت توزیع دستورالعمل‌ها تأکید دارد و همچنین اجازه می‌دهد تا واحدهای چند عملکردی در هر زمانی قابل استفاده باشند. این امر به‌طور فزاینده ایی از زمانی که تعداد واحد ها(Units) زیاد شده، مهم شده‌است. در هنگامی که CPUهای سوپر اسکالر 
اولیه تنها دو ALU و یک FPU داشتند، یک طرح مدرن مانند PowerPC ۹۷۰ شامل چهار ALU، دو FPU و دو واحد SIMD بود. هنگامیکه توزیع‌کننده واحدها را با دستورالعمل‌ها تغذیه می‌کند اگر با مشکل روبه رو شود، عملکرد سیستم صدمه خواهد دید.

یک پردازشگر سوپر اسکالر معمولاً اجرای یک دستورالعمل اضافی را متحمل می‌شود اما فقط پردازش چندین دستورالعمل به صورت همزمان، یک معماری سوپر اسکالر را نمی‌سازد تا زمانی که، معماری‌های پایپ لاین، چند پردازندگی یا چند هسته ایی، آن را بدست بیاورند اما با یک متد متفاوت.

در یک CPU سوپر اسکالر پخش‌کننده، دستور العمل‌ها را از روی حافظه می خواند و تصمیم می‌گیرد که کدامیک می‌توانند به صورت موازی انجام گیرند، سپس آن‌ها را به واحدهای عملیاتی اضافی که در کنار CPU‌های منفرد هستند می فرستند. علاوه براین، پردازشگرهای سوپر اسکالر می‌توانند داشتن چندین پایپ لاین موازی را پیش‌بینی نماید که هر یک از دستورالعمل‌های پردازشی آن، از یک نخ (Thread)مجزا باشد.

مباحث مرتبط

در مجموع این محدودیت‌ها تحقیق را به سمت تغییرات دیگر معماری‌ها مانند VLIW، EPIC، SMT و همچنین چند نخی و پردازش چند هسته ایی سوق می‌دهد.

با VLIW وظیفه سنگین چک کردن وابستگی، در زمان اجرا به وسیله سخت افزار برداشته شده و به کامپایلر محول می‌گردد.EPIC همانند VLIW است، با حافظهٔ نهان اضافی برای پیش واکشی دستورالعملها
چند نخی هم‌زمان با نام اختصاری SMT، تکنیکی است جهت ارتقای بازده کلی CPU‌های سوپر اسکالر. SMT به نخ‌های مستقل چندگانه اجرایی این امکان را می‌دهد تا بهتر مورد استفاده منابع تولید شده توسط معماری‌های مدرن پردازشگرها قرار گیرند.

سوپر اسکالر با پردازشگرهای چند هسته ایی که واحدهای عملیاتی اضافی در تمام پردازشگرهای نیستند متفاوت است. یک تک پردازنده محاسبات خود را به وسیله واحدهای عملیاتی مانند ALU و شیفت دهنده و ضرب‌کننده و ممیز شناور و غیره انجام می‌دهد. ممکن است نسخه‌های چندگانه ایی از هر واحد عملیاتی وجود داشته باشد که اجرای تعداد زیادی دستورالعمل را به‌طور موازی ممکن سازد. که این با پردازشگرهای چند هسته ایی که هم‌زمان دستورالعمل‌ها را از چند نخی (هر نخ برای یک هسته)گرفته و پردازش می‌کند متفاوت است و همچنین این با CPU‌های پایپ لاین، که دستورالعمل‌های چندگانه می‌توانند هم‌زمان در مراحل مختلف اجرا باشند نیز تفاوت دارد.

تکنیک‌های پیشنهادی متنوع صرفاً انحصاری نیستند. آن‌ها می‌توانند در یک تک پردازنده با هم ترکیب شوند. بنابراین یک CPU چند هسته ایی جایی که هر هسته، یک پردازشگر مستقل شامل موازی‌سازی پایپ لاین که هر پایپ لاین سوپر اسکالر باشد، محتمل وامری شدنی است و همچنین تعداد زیادی از پردازنده‌ها هم دارای قابلیت برداری (Vector) باشد.