background image

1

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Organizacja i Architektura 

Komputerów

Przetwarzanie potokowe.    

Architektury superskalarne

background image

2

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Pipelining – wprowadzenie

z

Pipelining: technika wykonywania ciągu 

instrukcji, w której kilka kolejnych 

instrukcji jest wykonywanych 

równolegle

z

Przykład: pralnia

z

Ania, Basia, Celina i Dorota

mają po kompletnym ładunku odzieży, 

do prania, wysuszenia i wyprasowania

z

Pranie trwa 30 minut

z

Suszenie zajmuje 40 minut

z

Prasowanie trwa 20 minut

A

B

C D

background image

3

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Wersja 1 – pralnia sekwencyjna

A

B

C

D

30 40 20 30 40 20 30 40 20 30 40 20

6

7

8

9

10

11

północ

czas

Kolejno

ść

zada

ń

z

Sekwencyjne pranie 4 ładunków zajmuje 6 godzin

background image

4

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Wersja 2 – pralnia potokowa

A

B

C

D

6

7

8

9

10

11

północ

czas

30 40 40 40 40 20

• Metoda „start ASAP”

• Pranie 4 ładunków 

zajmuje 3,5 godziny

• Speedup 6/3,5 = 1,7

K

ol

ej

no

ść

za

da

ń

background image

5

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Pipelining – wnioski

z

Pipelining nie zmienia czasu wykonania pojedynczej instrukcji 

(

latency

), wpływa natomiast na czas wykonania ciągu instrukcji 

(

throughput

)

z

Częstość z jaką pracuje potok jest ograniczona przez czas pracy 

najwolniejszego stopnia w potoku (

slowest pipeline stage

)

z

Wiele instrukcji jest wykonywanych równolegle (

instruction level

parallelism

)

z

Potencjalne zwiększenie wydajności jest tym większe, im większa jest 

liczba stopni w potoku

z

Duże zróżnicowanie czasu trwania operacji w poszczególnych 

stopniach ogranicza wzrost wydajności

z

Czas potrzebny na napełnienie potoku i opróżnienie go ogranicza 

wzrost wydajności

background image

6

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Wnioski 

cd.

z

Architektura RISC zapewnia lepsze wykorzystanie 
możliwości przetwarzania potokowego niż architektura 
CISC. W architekturze RISC:

instrukcje mają taką samą długość

większość operacji dotyczy rejestrów

odwołania do pamięci, które mogą ewentualnie powodować
kolizje są rzadsze i występują tylko w przypadku specjalnie do 
tego celu używanych instrukcji load store

z

W architekturze CISC instrukcje mają różną długość, 
występuje bogactwo sposobów adresowania danych w 
pamięci

background image

7

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Cykl 

prefetch

z

Najprostsza wersja przetwarzania potokowego

z

Pobranie kolejnej instrukcji (cykl 

fetch

) wymaga 

dostępu do pamięci

z

Wykonanie instrukcji zazwyczaj nie wymaga 

dostępu do pamięci

z

Wniosek: można pobrać następną instrukcję z 

pamięci podczas wykonywania poprzedniej 

instrukcji

z

Metoda nazywana „pobraniem wstępnym” -

instruction prefetch

background image

8

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Prefetch

cd.

z

Wprowadzenie cyklu prefetch poprawia wydajność (ale 
nie podwaja):

pobranie kodu operacji trwa zwykle krócej niż faza wykonania

z

może pobierać więcej niż jeden rozkaz w fazie prefetch?

każdy rozkaz skoku powoduje utratę korzyści z fazy prefetch

z

Wnioski są niejednoznaczne:

z jednej strony korzystnie byłoby zwiększyć liczbę stopni w 
potoku

z drugiej jednak długi potok w przypadku skoku musi być
opróżniony i napełniony od nowa

background image

9

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Punkt wyjścia – brak potoku

Układ

kombinacyjny

R

E

G

300ps

30ps

Clock

latency = 330ps
throughput = 3.12 GOPS

System
bez potoku
(przykład)

Op1

Op2

Op3

??

Czas

Każda operacja musi być zakończona zanim zacznie się

wykonywanie następnej operacji

W podanym przykładzie czas wykonania operacji wynosi 330ps 

background image

10

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Potok 3-stopniowy

Wykonanie kolejnych instrukcji 

zaczyna się co120ps

3 instrukcje są wykonywane 

równolegle

Czas oczekiwania na 

wykonanie instrukcji wzrósł z 

330ps do 360ps, ale 

przepustowość wzrosła z 3.12  

do 8.33 GOPS

R

E

G

Clock

układ
komb.

R

E

G

układ
komb.

R

E

G

układ
komb.

100ps

20ps

100ps

20ps

100ps

20ps

latency = 360ps
throughput = 8.33 GOPS

Czas

Op1

Op2

Op3

??

Op4

background image

11

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Diagramy czasowe

z

Bez potoku

Kolejna operacja nie może się zacząć przed zakończeniem 

poprzedniej

z

3-stopniowy potok

Do 3 instrukcji wykonuje się równolegle

Time

OP1
OP2
OP3

Time

A

B

C

A

B

C

A

B

C

OP1
OP2
OP3

A, B, C – fazy wykonania
instrukcji

background image

12

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Ograniczenie – różnice opóźnień

R

e
g

Clock

R

e
g

Comb.

logic

B

R

e
g

Comb.

logic

C

50 ps

20 ps

150 ps

20 ps

100 ps

20 ps

latency = 510 ps
throughput = 5.88 GOPS

Comb.

logic

A

Time

OP1
OP2
OP3

A

B

C

A

B

C

A

B

C

Przepustowość ograniczona przez najwolniejszy stopień

Pozostałe (szybsze) stopnie są przez znaczny czas bezczynne

Należy dążyć do budowy potoku o zbliżonych czasach operacji 

w poszczególnych stopniach

background image

13

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Głęboki potok – problemy

latency = 420 ps, throughput = 14.29 GOPS

Clock

R

e
g

Comb.

logic

50 ps 20 ps

R

e
g

Comb.

logic

50 ps 20 ps

R

e
g

Comb.

logic

50 ps 20 ps

R

e
g

Comb.

logic

50 ps 20 ps

R

e
g

Comb.

logic

50 ps 20 ps

R

e
g

Comb.

logic

50 ps 20 ps

W miarę wydłużania (zwiększania głębokości) potoku opóźnienia 

rejestrów stają się coraz bardziej znaczące

Procentowy udział czasu opóźnienia rejestrów w potoku:

z

1-stopień: 6.25% 

z

3-stopnie: 16.67% 

z

6-stopni: 28.57%

Problem ma duże znaczenie, ponieważ współczesne procesory 

o dużej wydajności mają coraz głębsze potoki

background image

14

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Cykl wykonania instrukcji

background image

15

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Typowe 6 stopni potoku

z

Pobranie instrukcji (fetch instruction - FI)

z

Dekodowanie instrukcji (decode instruction - DI)

z

Obliczenie adresu argumentu (calculate operand – CO)

z

Pobranie argumentu (fetch operand – FO)

z

Wykonanie instrukcji (execute instruction - EI)

z

Zapis wyniku (write - WO)

background image

16

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Potok 6-stopniowy

background image

17

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Instrukcja skoku

Rozkaz 3 – rozgałęzienie warunkowe
do rozkazu 15

Zawartość potoku, która musi
być usunięta

background image

18

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Skoki a potok

z

Warianty przetwarzania potokowego w 
przypadku instrukcji skoków (branch):

Multiple Streams

– dwa potoki; w przypadku rozgałęzienia 

każdy z potoków jest ładowany kodem odpowiadającym 
wykonaniu bądź niewykonaniu skoku; metoda zawodna w 
przypadku skoków wielokrotnych

Prefetch Branch Target

– kod z obu dróg rozgałęzienia jest 

ładowany do potoku i przechowywany aż do chwili wykonania 
skoku; metoda zastosowana w IBM 360/91

Loop buffer

– instrukcje są pobierane do małej szybkiej pamięci 

działającej podobnie jak cache, ale sterowanej przez układ 
sterowania potokiem; metoda efektywna w przypadku pętli 
obejmujących niewiele instrukcji; zastosowana w Cray-1

background image

19

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Skoki a potok 

cd.

z

Warianty przetwarzania potokowego w 
przypadku instrukcji skoków (branch):

Delayed Branching

– opóźnianie skoku; metoda szeregowania 

instrukcji poprzedzających i następujących po skoku 
wykonywana w trakcie kompilacji; kompilator stara się
przenieść instrukcje poprzedzające skok i umieścić je za 
skokiem; dzięki temu w przypadku skoku potok nie musi być
opróżniany i instrukcje mogą być wykonywane nadal; w takim 
przypadku wykonanie skoku jest wstrzymywane aż do 
zakończenia wykonania przestawionych instrukcji

Branch Prediction

– przewidywanie skoków; najbardziej 

popularna i najbardziej efektywna metoda stosowana we 
współczesnych procesorach

background image

20

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Adres

Normal

Delayed

100

LOAD A,X

LOAD A,X

101

ADD A,1

ADD A,1

102

JUMP 105

JUMP 

106

103

ADD B,A

NOP

104

SUB B,C

ADD B,A

105

STORE Z,A SUB B,C

106

STORE Z,A

• W tym przykładzie kompilator wstawia po rozkazie skoku JUMP 

jedną instrukcję pustą (one delay slot). Jest nią instrukcja NOP 
(no operation – nic nie rób)

• Wykorzystano język asemblera hipotetycznego procesora, dla 

uproszczenia założono, że każda instrukcja zajmuje 1 słowo

Opóźnianie skoków - przykład

one delay slot

background image

21

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Opóźnianie skoków 

cd.

Można ulepszyć program z poprzedniego slajdu dokonując przestawienia 
instrukcji. Należy zauważyć, że ADD A,1 zawsze dodaje 1 do akumulatora 
A, zatem instrukcja ta może być przesunięta przez kompilator i użyta w 
miejsce NOP

Adres

Normal

Delayed

Optimized

100

LOAD A,X

LOAD A,X

LOAD A,X

101

ADD A,1

ADD A,1

JUMP 

105

102

JUMP 105

JUMP 

106

ADD A,1

103

ADD B,A

NOP

ADD B,A

104

SUB B,C

ADD B,A

SUB B,C

105

STORE Z,A SUB B,C

STORE Z,A

106

STORE Z,A

background image

22

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Efektywność opóźniania skoków

z

W porównaniu z normalnym szeregowaniem rozkazów nic nie 

tracimy, a możemy zyskać

z

Dobry kompilator zapewnia następującą efektywność przy opóźnianiu 

skoków:

około 60% slotów zostaje wypełnionych

około 80% instrukcji umieszczonych w slotach jest przydatnych w 

dalszym wykonywaniu programu

łącznie 48% (60% x 80%) wszystkich slotów jest wykorzystanych 

z korzyścią dla wydajności systemu

z

Zalety i wady metody opóźniania skoków

Zaleta: optymalizacja kompilatora ma wpływ na pracę pipeliningu

Wada: w nowoczesnych procesorach z głębokim potokiem (deep

pipeline) metoda opóźniania skoków jest mało skuteczna

background image

23

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Przewidywanie skoków

z

Metody statyczne

Zakładamy, że skok nie będzie nigdy wykonany

z

Metoda – branch never will be taken

z

Do potoku pobiera się zawsze instrukcję następującą po skoku

z

Metoda stosowana w procesorach Motorola 68020 i VAX 11/780

Zakładamy, że skok będzie zawsze wykonany

z

Metoda – branch always will be taken

z

Do potoku pobiera się instrukcję wskazywaną przez adres skoku 

(branch target)

O tym czy skok będzie, czy też nie będzie wykonany 

wnioskujemy na podstawie rodzaju skoku (kodu operacji)

z

Przesłanką metody jest spostrzeżenie, że pewne rodzaje skoków 

są wykonywane z dużym, a inne z małym prawdopodobieństwem

z

Badania pokazują, że można uzyskać nawet 75% sukcesów

background image

24

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Przewidywanie skoków

z

Metody dynamiczne

Prognoza skoku jest ustalana dynamicznie, w trakcie 
wykonania programu

Przewidywanie jest wykonywane na podstawie 
historii każdego skoku zapisanej w tablicy historii 
skoków BTB (branch target buffer)

BTB składa się zwykle z 128 – 1024 rekordów o 
postaci:

Adres instrukcji

Adres skoku (target)

Stan

background image

25

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Predykcja skoków – diagram BTB

Stan: 11

Stan: 01

Stan: 00

Stan: 10

Przykładowe 
kodowanie 
stanów:

00 – mocna hipoteza

o braku skoku

01 – słaba hipoteza

o braku skoku

10 – słaba hipoteza

o skoku

11 – mocna hipoteza

o skoku

background image

26

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Rozmiar BTB

Im większy jest rozmiar BTB (czyli im więcej rekordów 
mieści tablica), tym bardziej trafne jest przewidywanie 
skoków

Średnia liczba

Rozmiar BTB

trafnych prognoz [%]

16 40 

 

32 50
64 65
128 72
256

78

512

80

1024 85
2048

87

background image

27

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Głębokość potoku

z

Wyniki badań pokazują, że istnieje teoretyczna 
optymalna wartość głębokości potoku równa około 8 
stopni

z jednej strony im głębszy potok, tym lepiej działa równoległe 
przetwarzanie instrukcji

z drugiej strony głęboki potok w przypadku źle przewidzianego 
skoku powoduje dużą stratę czasu (branch penalty)

z

W nowych procesorach stosuje się ulepszone warianty 
przetwarzania potokowego (hyperpipeline) dostosowane 
do pracy z bardzo szybkim zegarem

w takich procesorach optymalna głębokość potoku jest większa 
i dochodzi nawet do 20 (przykład – Pentium 4)

background image

28

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Głębokość potoku 

cd.

Liczba stopni przetwarzania danych typu integer w potokach 
popularnych procesorów

CPU

liczba stopni w potoku

P

5

MMX

6

P-Pro

12

P-II

12

P-III

10

P-4

20

M1-2

7

K5

7

K6

6

K7

11

P – Pentium
M – Cyrix
K – AMD

background image

29

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Zjawisko hazardu

z

Równoległe przetwarzanie instrukcji w potoku prowadzi często do 
niekorzystnych zjawisk nazywanych hazardem. Hazard polega na 
braku możliwości wykonania instrukcji w przewidzianym dla niej 
cyklu. Wyróżnia się trzy rodzaje hazardu:

1.

Hazard zasobów

(structural hazard) – kiedy dwie instrukcje odwołują

się do tych samych zasobów

2.

Hazard danych

(data hazard) – kiedy wykonanie instrukcji zależy od 

wyniku wcześniejszej, nie zakończonej jeszcze instrukcji znajdującej 
się w potoku

3.

Hazard sterowania

(control hazard) – przy przetwarzaniu instrukcji 

skoków i innych instrukcji zmieniających stan licznika rozkazów (np. 
wywołania podprogramów)

z

Hazard sterowania został omówiony już wcześniej – teraz 
zajmiemy się hazardem zasobów i danych

background image

30

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Zjawisko hazardu 

cd.

z

Podstawowym sposobem rozwiązywania problemów 
wynikających z hazardu jest chwilowe zatrzymanie 
potoku na jeden lub więcej cykli zegara. W tym celu do 
potoku wprowadza się tzw. przegrody (stalls), które są
faktycznie operacjami pustymi („bubbles”)

z

Przegrody wpływają oczywiście na zmniejszenie 
wydajności CPU

z

Ze względu na występowanie zjawisk hazardu 
rzeczywista wydajność CPU jest zawsze mniejsza od 
wydajności teoretycznej, obliczonej przy założeniu że 
hazardy nie występują

background image

31

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Hazard zasobów

z

Nazywany też hazardem strukturalnym lub konfliktem 

zasobów (resource conflict)

z

Powodem hazardu tego typu jest jednoczesne żądanie 

dostępu do tego samego zasobu (zwykle pamięci) przez 

dwa różne stopnie potoku

z

Typowy hazard zasobów występuje, gdy jedna z 

instrukcji wykonuje ładowanie danych z pamięci podczas 

gdy inna ma być w tym samym cyklu ładowana 

(instruction fetch)

z

Rozwiązanie polega na wprowadzeniu jednej (lub kilku 

przegród). W efekcie wzrasta CPI i spada wydajność

procesora

background image

32

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Hazard zasobów - przykład

czas (cykle zegara)

Mem

Load

Instr 1

Instr 2

Instr 3

Instr 4

ALU

Mem

Reg

Mem

Reg

ALU

Mem

Reg

Mem

Reg

ALU

Mem

Reg

Mem

Reg

ALU

Reg

Mem

Reg

ALU

Mem

Reg

Mem

Reg

Żądanie odczytu z pamięci

Cykl IF instr 3

Kolejne instrukcje

background image

33

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Hazard zasobów – przykład 

cd.

czas (cykle zegara)

Mem

Load

Instr 1

Instr 2

Instr 3

ALU

Mem

Reg

Mem

Reg

ALU

Mem

Reg

Mem

Reg

ALU

Mem

Reg

Mem

Reg

ALU

Reg

Mem

Reg

Kolejne instrukcje

stall

background image

34

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Hazard danych

z

Hazard danych występuje, ponieważ potok zmienia 
kolejność

operacji odczytu/zapisu argumentów w 

stosunku do kolejności, w jakiej te operacje występują w 
sekwencyjnym zapisie programu

z

Przykład:

add

ax

,bx

mov

cx,

ax

Instrukcja 

mov

cx,ax

ma pobrać zawartość akumulatora 

ax

, podczas gdy potok jeszcze nie określił tej zawartości 

w poprzedniej instrukcji dodawania

background image

35

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Hazard typu RAW

z

Wyróżnia się trzy typy (rodzaje) hazardu danych: RAW, 
WAR i WAW:

z

Hazard RAW (read after write) występuje gdy pojawi się
żądanie odczytu danych przed zakończeniem ich zapisu

z

Przykład (taki sam jak na poprzednim slajdzie)

add

ax

,bx

mov

cx,

ax

background image

36

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Hazard typu WAR

z

Hazard WAR (write after read) występuje gdy pojawi się

żądanie zapisu danych przed zakończeniem ich odczytu

z

Przykład:

mov

bx,

ax

add

ax

,cx

z

CPU chce zapisać do akumulatora ax nową wartość

równą sumie ax+cx, podczas gdy instrukcja przesłania 

mov jeszcze nie odczytała starej zawartości ax i nie 

przesłała jej do rejestru bx

background image

37

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Hazard typu WAW

z

Hazard WAW (write after write) występuje gdy pojawi się

żądanie zapisu danych przed zakończeniem wcześniejszej 

operacji zapisu

z

Przykład:

mov

ax

,[mem]

add

ax

,bx

z

CPU chce zapisać do akumulatora ax nową wartość równą

sumie ax+bx, podczas gdy poprzednia instrukcja nie 

zdążyła jeszcze pobrać do ax zawartości komórki pamięci 

[mem]

background image

38

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Problem

z

Czy może powstać hazard danych RAR (read after read) ?

z

Przykład:

add

bx,ax

mov

cx,ax

z

Odpowiedź: taka sytuacja nie powoduje hazardu danych, 

ponieważ zawartość rejestru ax nie zmienia się. Może 

natomiast wystąpić konflikt równoczesnego dostępu 

(hazard zasobów). Problem można rozwiązać stosując 

rejestry typu dual-port

background image

39

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Zapobieganie hazardom danych

z

Najprostszą metodą jest, jak poprzednio, zatrzymywanie 
potoku (stalls)

metoda ta obniża wydajność CPU i jest stosowana w 
ostateczności

z

Szeregowanie statyczne

(static scheduling)

wykonywane programowo podczas kompilacji

polega na zmianie kolejności instrukcji, tak aby zlikwidować
hazardy

likwidacja hazardów nie zawsze jest możliwa

dobre kompilatory potrafią usunąć znaczną część potencjalnych 
hazardów danych

background image

40

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Szeregowanie statyczne

z

Przykład:

Kod oryginalny             

Kod po uszeregowaniu

add

ax

,15         

add

ax,15

mov

cx,

ax

mov

[mem],bx

mov

[mem],bx

mov

cx,ax

z

Zmiana kolejności instrukcji nie wpływa na działanie 
programu

z

Hazard RAW został zlikwidowany, ponieważ instrukcja 
dodawania zdąży być wykonana przed pobraniem 
argumentu przez instrukcję przesłania ax do cx

background image

41

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Szeregowanie dynamiczne

z

Dynamic scheduling – wspólna nazwa technik 

polegających na usuwaniu problemów z hazardem 

danych w trakcie wykonywania programu, a nie w fazie 

kompilacji

realizacja sprzętowa w CPU

najważniejsze techniki:

z

wyprzedzanie argumentów (operand forwarding)

z

wyprzedzanie wyników operacji (result forwarding)

w procesorach superskalarnych stosuje się ponadto

z

notowanie (scorebording)

z

przemianowywanie rejestrów (register renaming)

background image

42

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Procesory superskalarne

z

Procesory, które wykonują równolegle więcej niż jeden 
rozkaz (paralelizm na poziomie rozkazu)

z

Podstawowe bloki funkcjonalne CPU są zwielokrotnione:

dwa potoki (lub więcej)

kilka jednostek ALU (zwykle osobne ALU dla operacji integer i 
FP)

z

Termin „superskalarny” użyty po raz pierwszy w 1987 
roku oznacza, że CPU przetwarza w danej chwili kilka 
argumentów skalarnych (liczb), a nie tylko jedną
wielkość skalarną

background image

43

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Procesor superskalarny - koncepcja

background image

44

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Superskalar – koncepcja 

cd.

background image

45

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Superskalar

cd.

Porównanie koncepcji CPU:

1) z potokiem instrukcji
2) z superpotokiem
3) superskalarnej

Superpotok jest taktowany 
podwójną czestością zegara

Rozwiązanie superskalarne
zapewnia największą
wydajność

background image

46

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Superskalar

- problemy

Zagadnienie 
współzależności instrukcji 
w procesorach 
superskalarnych jest 
jeszcze trudniejsze niż
problem hazardów w 
pojedynczym potoku

background image

47

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Superskalar – problemy 

cd.

z

W celu odpowiedniego wykorzystania zalet architektury 
superskalarnej stosuje się rozmaite techniki:

z

Przemianowywanie rejestrów – metoda usuwania uzależnień
między instrukcjami przy użyciu zbioru pomocniczych rejestrów

z

Okna rejestrów – parametry są przekazywane w bloku rejestrów 
nazywanym oknem; zmiana bloku (i tym samym parametrów) 
wymaga zmiany samego wskaźnika okna

z

Statyczna optymalizacja kodu (w fazie kompilacji)

z

Zaawansowane dynamiczne metody szeregowania instrukcji 
(parowanie, technika zmiany kolejności wykonywania rozkazów –
out-of-order completion)

z

Ze względu na swoje cechy architektura RISC znacznie lepiej 
sprzyja technice superskalarnej niż architektura CISC

background image

48

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Superskalar

– przykład

Uproszczony schemat 
blokowy procesora 
superskalarnego
UltraSparc IIi (Sun)

background image

49

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Podsumowanie

z

Koncepcja przetwarzania potokowego

głębokość potoku

potok a skoki – przewidywanie skoków

zjawisko hazardu

z

sterowania

z

danych

z

zasobów

szeregowanie statyczne i dynamiczne

z

Architektura superskalarna

metody zwiększania wydajności

przemianowywanie rejestrów

okna rejestrów

statyczne i dynamiczne szeregowanie rozkazów


Document Outline