Superskalarność


Superskalarność w encyklopedii

Z Wikipedii, wolnej encyklopedii Przejdź do nawigacji Przejdź do wyszukiwania

Superskalarność (ang. superscalar) – cecha mikroprocesorów oznaczająca możliwość jednoczesnego wykonywania kilku rozkazów maszynowych, realizowana poprzez zwielokrotnienie skalarnych jednostek wykonawczych[1].

Pierwszym procesorem Intela z rodziny x86 wykorzystującym fragmentaryczną superskalarność był procesor Pentium, który miał dwie jednostki wykonawcze, z czego jedną zubożoną, mogącą wykonywać tylko proste instrukcje; Pentium Pro posiadał już 3 jednostki wykonawcze. Większość procesorów superskalarnych nie ma w pełni zduplikowanych jednostek wykonawczych kodu, jednak mogą mieć one wiele ALU, jednostek zmiennopozycyjnych itp., wobec czego pewne instrukcje będą wykonywane znacznie szybciej, a inne znów wolniej.

Pełne wykorzystanie wszystkich jednostek wykonawczych zależy od tego, czy w programie nie występują zależności między kolejnymi instrukcjami – tj. czy kolejna instrukcja jako argumentu nie potrzebuje wyników poprzedniej. Np. instrukcje:

a = b + 5 c = a + 10 

nie będą mogły zostać wykonane równolegle, ponieważ wartość c zależy od wyliczanej wcześniej a. Jeśliby jednak usunąć zależność i napisać równoważnie:

a = b + 5 c = b + 15 

realizacja superskalarna tych instrukcji będzie możliwa.

Minimalizacja zależności jest kluczowa, aby możliwe było pełne użycie dostępnych zasobów mikroprocesora – o właściwe rozmieszczenie instrukcji dba programista lub kompilator. Ponadto współczesne procesory, np. Pentium Pro i nowsze, mogą zmieniać kolejność wykonywanych instrukcji zachowując jednak zależności między nimi – aby w pełni wykorzystać jednostki wykonawcze odpowiednie mechanizmy wyszukują instrukcje niezależne od siebie i wykonują je równolegle.

Zobacz też | edytuj kod

Przypisy | edytuj kod

  1. Procesory x86 - architektura współczesnych układów. [dostęp 2013-09-28].
Na podstawie artykułu: "Superskalarność" pochodzącego z Wikipedii
OryginałEdytujHistoria i autorzy