Architektura komputerów Tydzień 13
Procesory superskalarne
● 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.
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ść
add r1,r2
mov r3,r1
Drugi rozkaz może być pobrany i zdekodowany, ale nie może być wykonany zanim nie zostanie wykonany pierwszy rozkaz, ponieważ potrzebne są dane tworzone
przez pierwszy.
● 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.
● 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ę.
● 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.
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.
Pobieranie Dekodo-
Wykony-
Zapis
r1
rozkazu
wanie
wanie
opóźniony
Brak zależności
Pobieranie Dekodo-
Wykony-
Zapis
r2
rozkazu
wanie
wanie
opóźniony
Zależność danych
Pobieranie Dekodo-
Wykony-
Zapis
r1
rozkazu
wanie
wanie
opóźniony
(r2 wykorzystuje dane
Pobieranie Dekodo-
Wykony-
Zapis
r2
rozkazu
wanie
wanie
opóźniony
obliczone przez r1)
Pobieranie Dekodo-
Wykony-
Zapis
r1
rozkazu
wanie
wanie
opóźniony
Zależność proceduralna
Pobieranie Dekodo-
Wykony-
Zapis
r2
rozgałęzienie
rozkazu
wanie
wanie
opóźniony
Pobieranie Dekodo-
Wykony-
Zapis
r3
rozkazu
wanie
wanie
opóźniony
Pobieranie Dekodo-
Wykony-
Zapis
r4
rozkazu
wanie
wanie
opóźniony
Pobieranie Dekodo-
Wykony-
Zapis
r5
rozkazu
wanie
wanie
opóźniony
Pobieranie Dekodo-
Wykony-
Zapis
r6
rozkazu
wanie
wanie
opóźniony
Pobieranie Dekodo-
Wykony-
Zapis
r1
rozkazu
wanie
wanie
opóźniony
Konflikt dotyczący
Pobieranie Dekodo-
Wykony-
Zapis
r2
rozkazu
wanie
wanie
opóźniony
zasobów
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ń.
Przemianowanie rejestrów Metoda eliminowania konfliktów
antyzależności i zależności wyjściowej przez powielenie zasobów.
R3 :=R3 op R5
b
a
a
R4 :=R3 + 1
b
b
R3 :=R5 + 1
c
a
R7 :=R3 op R4
b
c
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.
● 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.
● 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%.