'این پروسسورها هم‌زمان بیش از یک دستورالعمل را اجرا می‌کنند؛ به عبارت دیگر پایپ لاین دستوری در این پروسسور به بهترین شکل ممکن استفاده می‌شود. که نمونه ایی از سوپر اسکالر درجه ۳ را در شکل زیر میبینیم  


|  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- |
| دستور اول | OF۱ | D۱ | OPRF۱ | EXE۱ | ST۱ |
| دستور دوم | OF۱ | D۲ | OPRF۲ | EXE۲ | ST۲ |
| دستور سوم | OF۱ | D۳ | OPRF۳ | EXE۳ | ST۳ |
| دستور چهارم |  | OF۱ | D۱ | OPRF۱ | EXE۱ | ST۱ |
| دستور پنجم |  | OF۱ | D۲ | OPRF۲ | EXE۲ | ST۲ |
| دستور ششم |  | OF۱ | D۳ | OPRF۳ | EXE۳ | ST۳ |
| دستور هفتم |  |  | OF۱ | D۱ | OPRF۱ | EXE۱ | ST۱ |
| دستور هشتم |  |  | OF۱ | D۲ | OPRF۲ | EXE۲ | ST۲ |
| دستور نهم |  |  | OF۱ | D۳ | OPRF۳ | EXE۳ | ST۳ |

- معماری سوپراسکالر یک فرم از موازی‌سازی را به نام "موازی‌سازی در سطح دستور" با یک تک پردازنده پیاده‌سازی می‌کند.
موازی‌سازی در سطح دستور با استفاده از چندین پایپ لاین مستقل تأمین می‌شود، در واقع هر بار چند دستور(در شکل فوق ۳ دستور) به صورت موازی پردازش می‌شوند. از این رو اجازه می‌دهند توان عملیاتی سریع تر از دیگر حالات ممکن در یک کلاک باشد.  

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

-در طبقه‌بندی فلین(Flynn) یک پردازشگر سوپر اسکالر به عنوان یک پردازشگر MIMD طبقه‌بندی شده‌است.(دستورالعمل چندگانه، داده چندگانه)  

-در حالی که CPU سوپراسکالر به‌طور معمول پایپ لاین هم است ولی معماری پایپ لاین و سوپر اسکالر تکنیک‌های متفاوتی برای افزایش کارایی دارند. که تکنیک‌های سوپر اسکالر معمولاً شامل مشخصه‌های زیر است.

* دستورالعمل‌ها از یک جریان ترتیبی دستوری ناشی می‌شوند.
* وابستگی بین دستورالعمل‌ها به صورت سخت افزاری در زمان اجرا(run time)دائماً چک می‌شود.
* CPU چندین دستورالعمل را در یک سیکل کلاک می پذیرد

تاریخچه سوپراسکالر
------------------

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) برای اجرای واقعی بر یک micro architecture سوپر اسکالر، رمز گشایی(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) مجزا باشد، داراست .

محدودیت‌ها
----------

بالا بردن کارایی که از طریق تکنیک‌های سوپر اسکالر به‌دست می‌آید به ۳ چیز محدود می‌شود:

1. درجه ذاتی موازی‌سازی در جریان دستورالعمل ها. به سطح موازی‌سازی دستورالعمل‌ها محدود می‌شود.
2. پیچیدگی و زمان صرف شده ایی که توزیع‌کننده برای چک کردن وابستگی‌ها دارد.
3. انشعاب‌های دستورالعمل در حال پردازش

برنامه‌های باینری قابل اجرایی وجود دارند که درجه ذاتی موازی‌سازی آن‌ها با هم متفاوت است. در بعضی موارد دستورالعمل‌ها به یک دیگر وابسته نمی‌باشند و می‌توانند به‌طور هم‌زمان اجرا شوند. در موارد دیگر آن‌ها وابستگی داخلی دارند: اثرات یک دستورالعمل در منابع یا نتیجه آن در دیگر منابع. دستورالعمل‌های ;a = b + c;، d = e + f می‌توانند موازی با هم اجرا شوند و هیچ‌کدام از نتایج وابسته به محاسبهٔ دیگری نیست. اما دستورالعمل‌های ;a = b + c;، b = e + f ممکن است به‌طور موازی قابل اجرا نباشند.  

وقتی که تعداد دستورالعمل‌های موازی افزایش پیدا می‌کند. هزینه چک کردن وابستگی به سرعت افزایش می یابد، و این موضوع با نیاز به چک کردن وابستگی در زمان اجرا و در کلاک CPU، تشدید می‌شود. این هزینه‌ها شامل گیت‌های منطقی اضافی مورد نیاز برای چک کردن و زمان تاخیری که به خاطر این گیت‌ها به وجو می‌آید می‌باشد. تحقیقات نشان می‌دهد که تعداد گیت‌ها در بعضی موارد به {\displaystyle n^{k}} گیت و تأخیر نیز به {\displaystyle k^{2}\log n} رسیده‌است که n تعداد دستورالعمل‌هایی است که جزو دستور العمل‌های پردازشی می‌باشند و k تعداد دستورالعمل‌هایی که به صورت هم‌زمان توزیع شده‌اند.  

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

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

مباحث مرتبط
-----------

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

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

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

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

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

منابع
-----

مشارکت‌کنندگان ویکی‌پدیا. «Superscalar». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۲۰۱۱.

| * ن
* ب
* و
فناوری‌های واحد پردازش مرکزی |
| --- |
| مدل‌های محاسبه | 
* ماشین تورینگ
	+ ماشین محاسبه تورینگ
	+ ماشین پست-تورینگ
	+ ماشین تورینگ کوانتومی
* Belt machine
* ماشین پشته‌ای
* ماشین حالات متناهی
	+ with datapath
	+ ماشین حالت یو.ام.ال
	+ ماشین صف
* Register machines
	+ Counter
	+ Pointer
	+ Random-access
	+ ماشین برنامه ذخیره‌شده با دسترسی تصادفی

 |
| معماری رایانه | 
* ریزمعماری
* معماری فون نویمان
* معماری هاروارد
	+ modified
* معماری جریان داده
* Transport-triggered
* Cellular
* اندیان
* ذخیره‌سازی داده رایانه
	+ حافظه دسترسی غیریکپارچه
	+ HUMA
	+ Load/store
	+ معماری حافظه ثبات
* Cache hierarchy
* سلسله‌مراتب حافظه
	+ حافظه مجازی
	+ ذخیره‌سازی داده رایانه
* Heterogeneous
* Fabric
* چندپردازشی
* رایانش شناختی
* نورومورفیک

 |
| مجموعه دستورالعملs | 

|  |  |
| --- | --- |
| Types | 
* رایانه با دستورهای پیچیده
* رایانه کم‌دستور
* Application-specific
* EDGE
	+ TRIPS
* کلمه دستورالعمل بسیار طولانی
	+ رایانش موازی صریح دستورالعمل‌ها
* MISC
* OISC
* NISC
* ZISC
* comparison
	+ حالت آدرس‌دهیs

 |

* اکس۸۶
* معماری آرم
* معماری میپس
* Power ISA
* اسپارک
* Itanium
* Unicore
* MicroBlaze
* RISC-V
* others
 |
| Execution | 

|  |  |
| --- | --- |
| خط لوله (رایانه) | 
* حباب (رایانه)
* Operand forwarding
* Classic RISC pipeline

 |
| مخاطره (معماری رایانه)s | 
* وابستگی داده
* مخاطره (معماری رایانه)
* مخاطره (معماری رایانه)
* False sharing

 |
| خروج از دستور در حال اجرا | 
* Tomasulo algorithm
	+ Reservation station
	+ Re-order buffer
* تغییر نام ثبات

 |
| Speculative | 
* پیش‌بینی‌کننده پرش
* Memory dependence prediction

 |

 |
| رایانش موازی | 

|  |  |
| --- | --- |
| Level | 
* موازی‌سازی بیتی
	+ Bit-serial
	+ کلمه (معماری رایانه)
* دستورالعمل
* خط لوله (رایانه)
	+ Scalar
	+ سوپراسکالر
* Task
	+ ریسه (رایانه)
	+ فرایند (رایانه)
* Data
	+ پردازنده برداری
* Memory
* رایانش توزیع‌شده

 |
| چندریسمانی | 
* چندرشته زمانی
* چندرشتگی همزمان
	+ فراریسمانی
* Speculative
* قبضه‌کردن (رایانش)
* چند وظیفه‌ای بدون قبضه‌ای

 |
| طبقه‌بندی فلین | 
* یک دستور یک داده
* یک دستور چند داده
	+ SWAR
* SIMT
* چند دستور یک داده
* چند دستور چند داده
	+ یک برنامه چند داده

 |

 |
| Processorperformance | 
* Transistor count
* Instructions per cycle (IPC)
	+ Cycles per instruction (CPI)
* Instructions per second (IPS)
* فلاپس (FLOPS)
* تراکنش بر ثانیه (TPS)
* Synaptic updates per second (SUPS)
* Performance per watt (PPW)
* Cache performance metrics
* Computer performance by orders of magnitude

 |
| Types | 
* واحد پردازش مرکزی (CPU)
* واحد پردازش گرافیکی (GPU)
	+ محاسبات همه‌منظوره بر روی واحد پردازش گرافیکی
* پردازنده برداری
* Barrel
* پردازش جریان
* Coprocessor
* مدارهای مجتمع با کاربرد خاص
* مدار مجتمع دیجیتال برنامه‌پذیر
* CPLD
* Multi-chip module (MCM)
* System in package (SiP)

|  |  |
| --- | --- |
| By application | 
* ریزپردازنده
* ریزکنترل‌گر
* Mobile
* Notebook
* Ultra-low-voltage
* ASIP

 |
| Systemson chip | 
* سامانه روی یک تراشه (SoC)
* Multiprocessor (MPSoC)
* Programmable (PSoC)
* شبکه درون یک تراشه (NoC)

 |
| شتاب‌دهنده سخت‌افزاری | 
* AI accelerator
* Vision processing unit (VPU)
* Physics processing unit (PPU)
* پردازشگر سیگنال دیجیتال (DSP)
* واحد پردازشی تنسور (TPU)
* Secure cryptoprocessor
* پردازنده‌های شبکه‌ای
* Baseband processor

 |

 |
| کلمه (معماری رایانه) | 
* معماری ۱-بیتی
* بیت برش
* ۴-بیت
* ۸ بیتی
* ۱۶ بیتی
* ۳۲-بیت
* 48-bit
* 64-bit
* ۱۲۸-بیت
* 256-bit
* 512-bit
* کلمه (معماری رایانه)
	+ کلمه (معماری رایانه)

 |
| Core count | 
* Single-core
* پردازنده چندهسته‌ای
* Manycore
* Heterogeneous architecture

 |
| اجزاء | 
* واحد پردازش مرکزی
* حافظه نهان (رایانش)
	+ حافظه نهان سی‌پی‌یو
	+ الگوریتم حافظه پنهان
	+ انسجام حافظه نهان
* گذرگاه (رایانه)
* سرعت ریزپردازنده
* سیگنال ساعت
* خروج به ترتیب ورود (رایانه و الکترونیک)

|  |  |
| --- | --- |
| Functional units | 
* واحد محاسبه و منطق (ALU)
* Address generation unit (AGU)
* واحد ممیز شناور (FPU)
* واحد مدیریت حافظه (MMU)
	+ Load–store unit
	+ تی‌ال‌بی (TLB)
* کنترلگر حافظه (IMC)

 |
| دروازه منطقی | 
* مدار ترکیبی
* مدارهای ترتیبی
* Glue
* دروازه منطقی
	+ دروازه‌های منطقی کوانتومی
	+ دروازه آرایه

 |
| ثبت سخت‌افزاریs | 
* ثبات
* ثبات وضعیت
* ثبات پشته‌ای
* Register file
* Memory buffer
* شمارنده برنامه

 |
| Control unit | 
* Instruction unit
* حافظه میانگیر
* Write buffer
* ریزبرنامه‌سازی تصویر رام
* شمارنده

 |
| دیتاپد | 
* تسهیم‌کننده
* تسهیم‌کننده
* جمع‌کننده
* ضرب‌کننده دودویی
	+ پردازنده چندبرابر
* رمزگشا
	+ Address decoder
	+ Sum addressed decoder
* شیفت دهنده بشکه‌ای

 |
| مدار الکترونیکی | 
* مدار مجتمع
	+ 3D
	+ Mixed-signal
	+ Power management
* مدار بولی
* الکترونیک دیجیتال
* الکترونیک آنالوگ
* Quantum
* کلید (مدار)

 |

 |
| مدیریت نیرو | 
* PMU
* APM
* رابط قدرت و تنظیمات پیشرفته
* درجه‌بندی پویای بسامد
* Dynamic voltage scaling
* Clock gating
* Performance per watt (PPW)
* Race to sleep

 |
| مرتبط | 
* History of general-purpose CPUs
* Microprocessor chronology
* طراحی پردازنده
* الکترونیک دیجیتال
* ماژول امنیتی سخت‌افزاری
* Semiconductor device fabrication
* Tick–tock model

 |

| * ن
* ب
* و
رایانش موازی |
| --- |
| عمومی | 
* رایانش ابری
* ابررایانه
* خوشه کامپیوتری
* رایانش توزیع‌شده
* رایانش مشبک

 |  |
| سطوح | 
* بیت
* دستوری
* داده
* وظیفه

 |
| ریسه‌ها | 
* Superthreading
* فراریسمانی

 |
| نظریه | 
* قانون امدال
* قانون گوستافسون
* کارایی هزینه
* استاندارد کرپ-فلت
* کاهش‌سرعت
* افزایش‌سرعت

 |
| عناصر | 
* فرآیند
* ریسه
* فیبر
* PRAM
* Instruction window

 |
| هماهنگی | 
* چندپردازشی
* چندریسمانی
* Memory coherency
* انسجام حافظه نهان
* Cache invalidation
* Barrier
* همزمانی
* حالت‌برداری برنامه‌ای

 |
| برنامه‌نویسی | 
* مدل‌ها
	+ موازی‌سازی تلویحی
	+ موازی‌سازی آشکار
	+ هم‌روندی
* طبقه‌بندی فلین
	+ اس‌آی‌اس‌دی
	+ اس‌آی‌ام‌دی
	+ ام‌آی‌اس‌دی
	+ ام‌آی‌ام‌دی
		- اس‌پی‌ام‌دی
* الگوریتم‌های چندریسمانی
* الگوریتم‌های غیرمسدودکننده

 |
| سخت‌افزار | 
* چندپردازشگر
	+ متقارن
	+ نامتقارن
* حافظه
	+ نوما
	+ کوما
	+ توزیع‌شده
	+ مشترک
	+ مشترک توزیع‌شده
* چندریسمانی همزمان
* ام‌پی‌پی
* سوپراسکالر
* پردازنده برداری
* ابررایانه
* *بیوولف*

 |
| رابط‌های برنامه‌نویسی | 
* Ateji PX
* ریسه‌های پازیکس
* OpenMP
* OpenHMPP
* OpenACC
* PVM
* MPI
* UPC
* Intel Threading Building Blocks
* بوست (کتابخانه‌های سی++)
* Global Arrays
* Charm++
* Cilk
* Co-array Fortran
* اپن‌سی‌ال
* کودا
* Dryad

 |
| مشکلات | 
* Embarrassingly parallel
* Software lockout
* مقیاس‌پذیری
* وضعیت رقابتی
* بن‌بست (علوم رایانه)
* بن‌بست
* الگوریتم قطعی
* Parallel slowdown

 |
| 
* **رده**
* **داده**

 |