background image

Architektura komputerów

Tydzień 13

Procesory superskalarne

background image

Procesor superskalarny

Termin superskalarny określa 
procesory, które mogą wykonywać dwie 
lub więcej instrukcje skalarne 
(arytmetyczne, logiczne) jednocześnie.

Rozwiązanie to stosuje się w 
nowoczesnych procesorach w celu 
zwiększenia wydajności.

background image

Ograniczenia

Następujące ograniczenia uniemożliwiają 

równoległe wykonywanie instrukcji:

zależność danych

zależność proceduralna

konflikt dotyczący zasobów

zależność wyjściowa

antyzależność

background image

Zależność danych

add r1,r2
mov r3,r1
Drugi rozkaz może być pobrany i zdekodo-

wany, ale nie może być wykonany zanim 
nie zostanie wykonany pierwszy rozkaz, 
ponieważ potrzebne są dane tworzone 
przez pierwszy.

background image

Zależności proceduralne

Obecność rozgałęzień w sekwencji 
rozkazów ma jeszcze większy wpływ na 
potok superskalarny, niż na 
pojedynczy.

Straty spowodowane przez 
rozgałęzienie mogą być jeszcze 
większe, ponieważ więcej jest 
wykonywane w jednostce czasu.

background image

Konflikt dotyczący zasobów

Konflikt dotyczący zasobów polega na 
jednoczesnym rywalizowaniu dwóch 
instrukcji o te same zasoby. 
Przykładami takich zasobów są:

pamięć

magistrale

kanały wejścia-wyjścia

Takie konflikty mogą być rozwiązywane 
przez zwielokratnianie zasobów lub 
odpowiednią organizację.

background image

Zależność wyjściowa

W przykładowym kodzie:

R3:=R3 op R5

(I1)

R4:=R3+1

(I2)

R3:=R5+1

(I3)

R7:=R3 op R4

(I4)

Rozkaz I3 nie jest zależny od I1, ale nie 
może być wykonany przed nim, gdyż 
wówczas I4 będzie miał niewłaściwą 
zawartość rejestru R3.

background image

Antyzależność

R3:=R3 op R5

(I1)

R4:=R3 + 1

(I2)

R3:=R5 + 1

(I3)

Wykonywanie rozkazu I3 nie może być 
zakończone, zanim nie zostanie rozpoczęte 
wykonywanie rozkazu I2 i nie zostaną 
pobrane jego argumenty.

I3 aktualizuje rejestr R3, który jest źródłem 
argumentu dla rozkazu I2.

Ograniczenie jest podobne do zależności 
danych, lecz na odwrót: drugi rozkaz 
niszczy wartość używaną przez pierwszy.

background image

Wpływ zależności

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

r1
r2

Brak zależności

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

r1
r2

Zależność danych
(r2 wykorzystuje dane 
obliczone przez r1)

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

r1
r2

Zależność proceduralna

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

r3
r4

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

r1
r2

Konflikt dotyczący 
zasobów

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

Pobieranie

rozkazu

Dekodo-

wanie

Wykony-

wanie

Zapis

opóźniony

r5
r6

rozgałęzienie

background image

Kolejność wykonania 

rozkazów

Kolejne wydawanie połączone z 
kończeniem w zmienionej kolejności.

Jeżeli rozkaz wykonuje się dłużej niż jeden cykl, 

jego wyniki mogą być osiągalne później, niż 

kolejnego rozkazu.

Zmieniona kolejność wydawania i 
kończenia.

Wykorzystujemy bufor zdekodowanych 

rozkazów zwany oknem rozkazu.

Jednostka wykonawcza pobiera dowolny rozkaz 

z okna pod warunkiem spełnienia ograniczeń.

background image

Przemianowanie rejestrów

Metoda eliminowania konfliktów 

antyzależności i zależności wyjściowej 
przez powielenie zasobów.

R3

b

:=R3

a

 op R5

a

R4

b

:=R3

b

 + 1

R3

c

:=R5

a

 + 1

R7

b

:=R3

c

 op R4

b

Użycie innego fizycznego rejestru R3c w rozkazie 

I3 zapobiega antyzależnośći w drugim rozkazie 

oraz zależności wyjściowej w pierwszym. Dzięki 

temu I3 może być wykonany natychmiast.

background image

Procesor PowerPC 620

Procesor PowerPC 620 zawiera sześć 
niezależnych jednostek wykonawczych:

jednostkę rozkazów

trzy jednostki całkowitoliczbowe

jednostkę ładowania/zapisu

jednostkę zmiennopozycyjną

Procesor może jednocześnie 
wykonywać do 4 rozkazów: 3 
całkowitoliczbowe i 1 
zmiennopozycyjny.

background image

PowerPC 620 cd

Procesor zawiera układy przewidywania 
rozgałęzień, bufory przemianowania 
rejestrów oraz stacje rezerwowe 
wewnątrz jednostek wykonawczych.

Procesor ten może wykonywać do 4 
nierozstrzygniętych rozkazów 
rozgałęzień.

Przewidywanie skoków oparte jest na 
tablicy historii zawierającej 2048 
zapisów. Skuteczność przewidywań: 90%.