3 - Katedra Informatyki > Home

Transkrypt

3 - Katedra Informatyki > Home
Architektura systemów komputerowych
Architektura potokowa – konflikty
Cezary Bolek
Katedra Informatyki
Plan wykładu
Konflikt zasobów - Structural Hazard
Wstrzymywanie kolejki – Pipeline Stall
Konflikt danych - Data Hazard
Forwarding
Konflikt sterowania - Control Hazard
Wstrzymywanie kolejki – Pipeline Stall
Wczesne wykrywanie rozgałęzień
Opóźnione rozgałęzienie – Delayed Branch
Dynamiczna predykcja rozgałęzień – Dynamic Branch Prediction
Architektura systemów komputerowych
Cezary Bolek
2
Konflikty przy przetwarzaniu potokowym
Konflikt zasobów - Structural Hazard
Konflikt zasobów występuje gdy, dwie instrukcje wymagają dostępu do tych
samych zasobów procesora
Konflikt danych - Data Hazard
Jeśli dwie kolejne instrukcje wykonuję operacje na tych samych rejestrach,
moŜe zaistnieć sytuacja gdy jedna instrukcja potrzebuje wartości rejestru,
który jest wynikiem obliczeń poprzedniej instrukcji i nie jest jeszcze
dostępny.
Konflikt sterowania - Control Hazard
KaŜdy skok w programie powoduje zakłócenie kolejki instrukcji,
występujących kolejno w pamięci
Przy skokach warunkowych, poznanie następnej instrukcji do wykonania
jest moŜliwe dopiero po pewnej licznie cykli zegara – w tym czasie procesor
moŜe rozpocząć wykonywanie kolejnych instrukcji i uniewaŜnić je (lub nie)
w zaleŜności od tego czy skok rzeczywiście się wykona czy nie.
Konflikty powodują zmniejszenie wydajności i wzrost złoŜoności ukł. ster. !
Architektura systemów komputerowych
Cezary Bolek
3
Konflikty przy przetwarzaniu potokowym
Konflikt zasobów
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Konflikt danych
add $s3, $s2, $s1
IF
sub $s5, $s4, $s3
mul $s1, $s3, $s4
WB
Konflikt sterowania
j next
IF
instr_1
instr_2
ID
EX
IF
ID
IF
next: instr_next
Architektura systemów komputerowych
Cezary Bolek
4
Rozwiązywanie konfliktów
Konflikt zasobów – Structural Hazard
Powielenie sprzętu
Wstrzymywanie kolejki – Pipeline Stall
Konflikt danych – Data Hazard
Wstrzymywanie kolejki – Pipeline Stall
Optymalizacja kodu (metody programowe)
Forwarding (metoda sprzętowa)
Konflikt sterowania – Control Hazard
UniewaŜnienie instrukcji – Pipeline Flush
Opóźnienie skoku – Delayed Branching
Wczesne wykrywanie skoku – Early Branch Detection
Tablica historii skoków – Branch History Table
Architektura systemów komputerowych
Cezary Bolek
5
Konflikt zasobów – Structural Hazard
Wynika w sytuacji, gdy dwie róŜne instrukcje potrzebują
skorzystać z tego samego zasobu sprzętowego w trakcie
tego samego cyklu zegarowego
Przykład:
Zapis wyniku ALU w fazie 4
Instrukcje
Konflikt z danymi ładowanymi w fazie 5
lw $6, 8($5)
IF
ori $4, $3, 7
sub $5, $2, $3
sw $2, 10($3)
Konflikt zasobów
Dwie instrukcje próbują
wykonać operację zapisu
do rejestru w tym samym
cyklu zegarowym
ID
EX MEM WB
IF
ID
EX
WB
IF
ID
EX
WB
IF
ID
EX MEM
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 Czas
Architektura systemów komputerowych
Cezary Bolek
6
Konflikt zasobów - rozwiązanie
Sposób 1: Zwielokrotnienie zasobów lub rozwinięcie ich
funkcjonalności (koszt)
Dla danego przypadku: przeprojektowanie banku rejestrów tak aby
dysponował dwoma wejściami zapisującymi
Sposób 2: Opóźnienie dostępu do zasobu
NaleŜy opracować mechanizm opóźnienia operacji dostępu do zas.
Dla danego przypadku: opóźnienie fazy WB do 5-tego cyklu
Instrukcje
Instrukcja ALU przeczekuje 5-ty cykl, nic nie robiąc
lw $6, 8($5)
IF
ori $4, $3, 7
sub $5, $2, $3
sw $2, 10($3)
ID
EX MEM WB
IF
ID
EX
IF
ID
EX
IF
ID
WB
WB
EX MEM
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 Czas
Architektura systemów komputerowych
Cezary Bolek
7
Konflikt zasobów - rozwiązanie
Dla sposobu 2
nadal moŜe
wystąpić konflikt.
IF
ID
EX MEM WB
IF
ID
EX
IF
ID
EX
IF
ID
Rozwiązanie 1:
WB
WB
EX MEM
Podwojenie
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9
zasobów poprzez
rozdzielenie pamięci
programu (faza IF)
i danych (faza MEM)
Rozwiązanie 2:
Wstrzymywanie kolejki
(Pipeline Stall)
Rozwiązanie najprostsze,
lecz powoduje znaczący
spadek wydajności
Architektura systemów komputerowych
IF
ID
EX MEM WB
IF
ID
EX MEM WB
IF
ID
Czas
EX MEM WB
IF
ID
EX MEM WB
IF
ID
EX MEM WB
IF
ID
EX MEM WB
Czas
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 CC10 CC11 CC12 CC13
Cezary Bolek
8
Wstrzymywanie kolejki – Pipeline Stall
Zamiana sygnałów na nieaktywne (0) dla EX, MEM, WB
Brak taktowania rejestrów PC i IF/ID
Architektura systemów komputerowych
Cezary Bolek
9
Konflikt danych - Data Hazard
ZaleŜności między instrukcjami mogą powodować konflikt
danych
JeŜeli instrukcje, dla których występują zaleŜności operacji
na danych są blisko siebie:
Wykonanie potokowe moŜe spowodować zmianę kolejności dostępu
do operandów
Konflikt typu RAW – Read After Write Hazard
Dla dwóch instrukcji: A i następującej po niej B:
A: add $1, $2, $3
# r1 jest zapisywany
B: sub $4, $1, $3
# r1 jest odczytywany
Instrukcja B powinna odczytać operand zanim zostanie zapisany
przez A
Konflikt występuje gdy B odczytuje operand zanim zapisze go A
Architektura systemów komputerowych
Cezary Bolek
10
Konflikt typu RAW – przykład
Czas (cykle)
war. w rej. $2
ij sub $2, $1, $3
ck
ur
ts and $4, $2, $5
in
ć
ś or $6, $3, $2
on
je
lo
K add $7, $2, $2
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8
10
10
10
10
10/20
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
sw $8, 10($2)
20
20
20
Wynik sub wykorzystywany jest przez instrukcje and, or, add i sw
Instrukcje and oraz or odczytają starą wartość z rejestru $2
Podczas CC5, rejestr $2 jest zapisywany i kolejne instrukcje
korzystają z poprawnej wartości
Architektura systemów komputerowych
Cezary Bolek
11
RAW. Rozwiązanie 1: wstrzymanie potoku
cjk
rut
sn
i
ć
ś
on
ejl
o
K
Czas (cykle)
value of $2
sub $2, $1, $3
and $4, $2, $5
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8
10
10
IM
Reg
IM
10
10
10/20
ALU
DM
Reg
bubble
bubble
or $6, $3, $2
20
20
20
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Instrukcja and nie moŜe pobierać wartości rejestru aŜ do CC5
Instrukcja and pozostaje w rejestrze IF/ID aŜ do CC5
W kolejce muszą zostać umieszczone dwa puste cykle. Informacja w
ID/EX dla cykli CC3 i CC4
Bubbles are NOP instructions: do not modify registers or memory
Bubbles delay instruction execution and waste clock cycles
Architektura systemów komputerowych
Cezary Bolek
12
RAW. Rozwiązanie 2: Forwarding
Sprzętowa eliminacja prawie wszystkich konfliktów danych
(pomiędzy wybranymi fazami)
Transfery najbardziej aktualnych wartości rejestrów z faz
EX i MEM na wejście ALU
Plik rejestrów jest modyfikowany zgodnie z kolejnością
instrukcji w programie
Forwarding jest niewidoczny dla jednostki sterującej i nie
zwiększa jej komplikacji
Architektura systemów komputerowych
Cezary Bolek
13
Forwarding
Wynik wygenerowany przez ALU jest przesyłany
(forwarded) bezpośrednio na wejście ALU
Nie są wstrzykiwane puste cykle do kolejki – brak strat
Wynik ALU istnieje w rejestrach EX/MEM oraz MEM/WB
jic
ukr
ts
in
ć
ś
on
je
lo
K
Czas (cykle)
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8
sub $2, $1, $3
IM
and $4, $2, $5
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
or $6, $3, $2
add $7, $2, $2
sw $8, 10($2)
Architektura systemów komputerowych
Cezary Bolek
14
Forwarding - implementacja
Dwa multipleksery umieszczane są na wejściach rejestrów
AiB
Wyjście ALU z fazy EX jest przesyłany wstecz
Wynik ALU lub instrukcji Load z fazy MEM – analogicznie
Dwa sygnały: ForwardA and ForwardB sterują forwardingiem
ID/EX
MemtoReg
EX/MEM
ALU result
B
m
u
x
Address
m
u
x
Data_in
Rw
Rd
A
File
B
Register
Rt
Rw
Instruction
Rs
m
u
x
m
u
x
A
L
U
MEM/WB
ALU result
Data
Memory
m
u
x
WriteData
ALUSrc
Ext
Rw
ForwardA
Imm26
Imm26
IF/ID
RegDst
RegWrite
ForwardB
Architektura systemów komputerowych
Cezary Bolek
15
Wykrywanie konfliktu RAW
Konflikt RAW moŜe być łatwo wykryty przez kolejkę
BieŜąca instrukcja (numery rejestrów) jest dekodowana i
umieszczana w rejestrze IF/ID
Poprzednia instrukcja (numery rejestrów) jest w
rejestrze ID/EX
Jeszcze poprzednia w rejestrze EX/MEM
Warunki powstania konfliktu:
IF/ID.Rs
= ID/EX.Rw
IF/ID.Rt
= ID/EX.Rw
IF/ID.Rs
= EX/MEM.Rw
IF/ID.Rt
= EX/MEM.Rw
Konflikt RAW wykryty dla
poprzedniej instrukcji
Architektura systemów komputerowych
Konflikt RAW wykryty dla
jeszcze poprzedniej (drugiej
wstecz)
Cezary Bolek
16
Jednostka sterująca forwardingiem
Jednostka sterująca generuje sygnały ForwardA and ForwardB
UŜywane do sterowania multiplekserami forwardingu
UŜywane są pola Rs i Rt z rejestru IF/ID oraz Rw
z rejestrów ID/EX i EX/MEM
ID/EX
ALUSrc
MemtoReg
EX/MEM
ALU result
m
u
x
B
Rd
Address
m
u
x
Data_in
Rw
File
A
Register
Rt
B
Rs
m
u
x
ForwardB
m
u
x
A
L
U
MEM/WB
ALU result
Rw
Instruction
Ext
Data
Memory
m
u
x
WriteData
Imm26
Rw
Imm26
IF/ID
ForwardA
Forwarding Unit
Architektura systemów komputerowych
Cezary Bolek
17
Sygnały sterujące forwardingiem
Sygnał sterujący
Działanie
ForwardA = 00
Pierwszy operand ALU pochodzi z banku rejestrów
ForwardA = 01
1-szy operand ALU - transfer z poprzedniego wyniku ALU
ForwardA = 10
Transfer z pamięci danych lub jeszcze poprz. wyniku ALU
ForwardB = 00
Drugi operand ALU pochodzi z banku rejestrów
ForwardB = 01
2-gi operand ALU - transfer z poprzedniego wyniku ALU
ForwardB = 10
Transfer z pamięci danych lub jeszcze poprz. wyniku ALU
if
(IF/ID.Rs == ID/EX.Rw ≠ 0
else
ForwardA = 00
if
(IF/ID.Rt == ID/EX.Rw ≠ 0
else
ForwardB = 00
and ID/EX.RegWrite)
ForwardA = 01
and ID/EX.RegWrite)
ForwardB = 01
elseif (IF/ID.Rs == EX/MEM.Rw ≠ 0 and EX/MEM.RegWrite) ForwardA = 10
elseif (IF/ID.Rt == EX/MEM.Rw ≠ 0 and EX/MEM.RegWrite) ForwardB = 10
Architektura systemów komputerowych
Cezary Bolek
18
Forwarding – przykład
Ciąg instrukcji:
lw
Gdy lw osiągnie fazę MEM
$4, 100($9)
add będzie w fazie ALU (EX)
add $7, $5, $6
sub $8, $4, $7
sub będzie w fazie ID
ForwardB = 01
Transfer danych z fazy MEM
Transfer wyniku ALU z fazy ALU (EX)
m
u
x
Address
Data_in
Data
Memory
WriteData
m
u
x
ALU result
ALU result
A
L
U
m
u
x
Rw
Rd
m
u
x
lw $4,100($9)
B
File
A
Register
Rt
m
u
x
B
Rs
add $7,$5,$6
Ext
Rw
Instruction
ForwardA = 10
Rw
sub $8,$4,$7
Imm26
Imm26
ForwardA = 10
ForwardB = 01
Architektura systemów komputerowych
Cezary Bolek
19
„Trudne” konflikty danych
Forwarding nie rozwiązuje wszystkich konfliktów danych
Np. instrukcje ładowania danych z pamięci powodują opóźnienia,
których nie da się wyeliminować za pomocą forwardingu
Przykład
Instrukcja lw „nie ma” danych aŜ do końca cyklu CC4
Instrukcja and potrzebuje danych na początku cyklu CC4 - konflikt
Czas (cykle)
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8
jic
JednakŜe lw moŜe
lw
$2,
20($1)
ALU
Reg
IF
DM Reg
ukr
dokonać transferu
ts
do jeszcze
in and $4, $2, $5
ALU
Reg
IF
DM Reg
następnej
instrukcji
ć
ś
on
je or $6, $3, $2
ALU
Reg
Reg
IF
DM
lo
Rozwiązanie:
K
wstrzymanie
add $7, $2, $2
Reg
ALU
IF
DM Reg
kolejki !
Architektura systemów komputerowych
Cezary Bolek
20
Wykrywanie konfliktu RAW po instrukcji ładowania
Wykrywanie konfliktu RAW po instrukcji ładowania
danych z pamięci:
Gdy instrukcja Load znajduje się w rejestrze ID/EX
Instrukcja potrzebująca dane, które mają być załadowane
znajduje się w rejestrze IF/ID
Warunek wstrzymania kolejki (Stall):
if ((ID/EX.MemRead == 1) and (ID/EX.Rw ≠ 0) and
((ID/EX.Rw == IF/ID.Rs) or (ID/EX.Rw == IF/ID.Rt)))
Stall
Reakcja: opóźnienie kolejki o jeden cykl
Opóźnienie następnej instrukcji po ładowaniu o jeden cykl (po
zdekodowaniu)
Architektura systemów komputerowych
Cezary Bolek
21
Wstrzymanie kolejki
ZamroŜenie zawartości rejestrów PC oraz IF/ID na jeden
cykl (odcięcie sygnałów zegarowych)
śadna nowa instrukcja nie jest pobierana i kolejna instrukcja po
Load zostaje wstrzymana
Instrukcja Load z rejestru ID/EX wykonywana normalnie
Instrukcja ładowania Load moŜe dokonać forwardingu
po jednym cyklu opóźnienia
Time (cycles)
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8
re lw $2, 20($1) IM
rd
O
and $4, $2, $5
m
ar
go
rP or $6, $3, $2
Reg
IM
Architektura systemów komputerowych
ALU
DM
Reg
bubble
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
Cezary Bolek
22
Imm26
Układ wykrywania konfliktu i wstrzymania kolejki
Rw
m
u
x
Data_in
Data
Memory
m
u
x
WriteData
ALU result
B
m
u
x
Address
IF/IDWrite
Op
PCWrite
Rd
m
u
x
A
L
U
Rw
File
A
Register
Rt
Address
m
u
x
B
Instruction
PC
Instruction
Rs
ALU result
Ext
ForwardA
Instruction
Memory
Rw
Imm26
ForwardB
Forwarding,
Hazard Detection,
and Stall Unit
MemRead
Kolejka jest wstrzymywana
poprzez ustawienie PCWrite
= ‘0’ i IF/IDWrite = ‘0’ oraz
podaniu „zerowych” sygnałów
sterujących na ID/EX
WB
Main
Control
m
u
x
M
0
EX
Bubble
Dla pustego
cyklu zerowane
są sygnały
sterujące
Architektura systemów komputerowych
Cezary Bolek
23
Kompilatory optymalizujące
Kompilatory mogą optymalizować generowany kod tak aby
uniknąć sytuacji wstrzymania kolejki po instrukcji Load
Przykład
Dla instrukcji w języku wysokiego poziomu
Wolny kod:
lw
lw
add
sw
lw
lw
sub
sw
$10,
$11,
$12,
$12,
$13,
$14,
$15,
$15,
($1)
($2)
$10, $11
($3)
($4)
($5)
$13, $14
($6)
Architektura systemów komputerowych
#
#
#
#
#
#
#
#
$1 =
$2 =
stall
$3 =
$4 =
$5 =
stall
$6 =
addr b
addr c
addr a
addr e
addr f
addr d
Cezary Bolek
Szybki kod: bez Stall
lw
lw
lw
lw
add
sw
sub
sw
$10,
$11,
$13,
$14,
$12,
$12,
$15,
$14,
0($1)
0($2)
0($4)
0($5)
$10, $11
0($3)
$13, $14
0($6)
24
Konflikt Write After Read - WAR
Kolejna instrukcja B powinna zapisywać dane po tym jak
zostaną odczytane przez poprzednią instrukcją A
Określany mianem anty-zaleŜności przez twórców
kompilatorów
A: sub $4, $1, $3
B: add $1, $2, $3
# $1 jest czytane
# $1 jest zapisywane
Konflikt wystąpi, gdy B zapisze rejestr $1 zanim A go
odczyta
Nie występuje w 5-fazowym potoku, gdyŜ:
Odczyt zawsze jest w fazie 2, a
Zapis zawsze w fazie 5
Operacje na rejestrach wykonywane są w poprawnej kolejności
Architektura systemów komputerowych
Cezary Bolek
25
Konflikt Write After Write - WAW
kolejna instrukcja B powinna zapisywać wynik zawsze
po tym jak zapisze ją instrukcja poprzednia A
Określany mianem zaleŜności wyjściowej przez twórców
kompilatorów
I: sub $1, $4, $3 # $1 jest zapisywane
J: add $1, $2, $3 # $1 jest zapisywane
Konflikt zachodzi gdy operacje zapisu wykonywane są w
złej kolejności
Nie moŜe wystąpić w 5-fazowym potoku:
Wszystkie operacje zapisu – zawsze w fazie 6-tej
Konflikty WAR i WAW występują w złoŜonych potokach
Uwaga: Read After Read – RAR nie jest konfiltem
Architektura systemów komputerowych
Cezary Bolek
26
Konflikty sterowania – Control Hazards
KaŜdy skok powoduje zmianę kolejności wykonywania
instrukcji – zaburza kolejkę i zmniejsza wydajność (CPI > 1)
Skoki warunkowe (rozgałęzienia) wymagają dodatkowo
policzenia warunku skoku, co opóźnia decyzję o skoku
Wykonanie skoku wymaga (zwykle) uniewaŜnienia kilku
instrukcji, które juŜ znajdują się w procesorze
Skoki i rozgałęzienia mogą powodować bardzo duŜe
zmniejszenie wydajności
Architektura systemów komputerowych
Cezary Bolek
27
Konflikty sterowania - rozgałęzienia
Instrukcje rozgałęzień opierają się na dwóch elementach:
Warunku rozgałęzienia
spełniony lub niespełniony
Adresie docelowym
PC + 4
gdy warunek spełniony
PC + 4 + 4 × wart. natychm.
gdy warunek niespełniony
Instrukcje rozgałęzienia są dekodowane w fazie ID
Wtedy następna instrukcja jest juŜ pobrana
Dla 5-fazowego potoku: opóźnienie 2-cyklowe
Adres efektywny obliczany jest w fazie EX (ALU)
Warunek rozgałęzienia sprawdzany jest przez ALU (flaga zero)
Architektura systemów komputerowych
Cezary Bolek
28
Opóźnienie rozgałęzienia – 2 cykle
NPC
Rd
label:
lw $8, 0($7)
. . .
beq $5, $6, label
next1
next2
m
u
x
m
u
x
zero = 1
Ext
A
L
U
m
u
x
SUB
Forwarding
z fazy MEM
File
Imm16
beq = 1
ALU result
Register
Rt
Address
A
Rs
B
Instruction
m
u
x
Rw
m
u
x
Instruction
Memory
Instruction
00
PCSrc = 1
Next
PC
B
Imm26
Rw
Imm26
NPC
Inc
PC
Branch Target Address
beq $5,$6,label
next1
next2
Gdy instrukcja rozgałęzienia osiągnie fazę EX
(ALU), instrukcja next1 jesy juŜ w fazie
dekodowania (ID), instrukcja next2 jest w
fazie pobierania (IF)
Architektura systemów komputerowych
Cezary Bolek
29
2-cyklowe opóźnienie dla rozgałęzienia
Instrukcje next1 oraz next2 zostaną pobrane w kaŜdym
przypadku
Potok musi zostać opróŜniony z instrukcji next1 i next1 gdy
rozgałęzienie nie jest wykonywane
W przeciwnym przypadku instrukcje potok działa normalnie
beq $5,$6,label
cc1
cc2
cc3
IF
Reg
ALU
IF
Next1 # bubble
Next2 # bubble
cc5
cc6
Reg
Bubble
Bubble
Bubble
IF
Bubble
Bubble
Bubble
Bubble
IF
Reg
ALU
MEM
label: branch target instruction
Architektura systemów komputerowych
cc7
cc4
Cezary Bolek
30
Wczesne wykrywanie rozgałęzień
Opóźnienie przy rozgałęzieniu moŜe być zredukowane z 2
do tylko jednego cyklu
Decyzja o rozgałęzieniu moŜe być podjęta we
wcześniejszej fazie – ID
Poprzez przesunięcie bloku Next PC do fazy ID
Dodanie komparatora do logiki układu Next PC
Tylko jedna instrukcja (za rozgałęzieniem) zostanie pobrana
Jeśli rozgałęzienie zostanie wykonane tylko jedną instrukcję
trzeba usunąć z potoku
Potrzebny jest wtedy jeszcze sygnał zerujący rejestr IF/ID
Konwersja pobranej instrukcji na instrukcję NOP
Architektura systemów komputerowych
Cezary Bolek
31
Zmodyfikowana ścieŜka danych
Sygnał PCSrc zeruje rejestr
IF/ID w przypadku gdy
rozgałęzienie jest wykonywane
Data_in
A
L
U
m
u
x
Data
Memory
WriteData
m
u
x
Ext
m
u
x
Rw
Rd
m
u
x
ALU result
Address
B
File
Address
Rw
PC
Register
Rt
ALU result
m
u
x
A
Instruction
00
Instruction
m
u
x
Rs
B
Imm16
Rw
Imm26
reset
PCSrc
Instruction
Memory
Imm16
Next
PC
NPC
Inc
Blok Next PC przeniesiony do fazy dekodowania – ID
Zaleta: Opóźnienie dla skoku i rozgałęzienia – tylko 1 cykl
Wada: WydłuŜenie fazy dekodowania ⇒ dłuŜszy cykl
Architektura systemów komputerowych
Cezary Bolek
32
Blok Next PC
PCSrc
Adres docelowy skoku lub rozgałęzienia
30
NPC
30
A
D
D
30
0
m 30
u
x
Ext
Imm16
zero
msb 4
Imm26
beq
bne
1
26
j
=
Forwarded BusA
Architektura systemów komputerowych
Cezary Bolek
BusB
33
Konflikt rozgałęzień – dalsze usprawnienia
Opóźnione rozgałęzienie – Delayed Branch
Konstrukcja sterowania tak aby rozgałęzienie było realizowane PO
następnej instrukcji
Kompilator/asembler wypełnia instrukcją slot opóźnienia – Single
Delay Slot
Dynamiczna predykcja rozgałęzień – Dynamic Branch
Prediction
MoŜna próbować przewidzieć rozgałęzienia (skoki) wsteczne w
pętlach ⇒ większość przypadków
JednakŜe adres docelowy określany jest w fazie ID
Redukcja opóźnienia rozgałęzienia z 1 do 0 cykli
Architektura systemów komputerowych
Cezary Bolek
34
Opóźnione rozgałęzienie
Konstrukcja sterowania tak aby rozgałęzienie było realizowane PO
następnej instrukcji
Dla 1-cyklowego opóźnienia rozgałęzienia istnieje pojedynczy slot, który
moŜna wypełnić – Single Delay Slot
instrukcja „branch”
slot opoźnienie „branch”
instrukcja docelowa
label:
(następna instrukcja)
(jeśli rozgałęzienie)
. . .
add $t2,$t3,$t4
beq $s1,$s0,label
Kompilator wypełnia slot opóźnienia
Delay Slot
Przez niezaleŜną instrukcję
(nie mającą wpływu na warunek rozgał.)
Braną sprzed instrukcji rozgałęzienia
Gdy nie ma niezaleŜnej instrukcji
Wypełnienie slotu instrukcją NOP
Architektura systemów komputerowych
label:
. . .
beq $s1,$s0,label
add $t2,$t3,$t4
Cezary Bolek
35
Rozgałęzienie z zerowym opóźnieniem
Wady opóźnionego rozgałęzienia
Dla złoŜonych potoków (długich) opóźnienie moŜe wynosić kilka
cykli – kilka slotów
Sloty opóźnienia muszą być wypełniane konkretnymi instrukcjami
lub NOP
Jak osiągnąć zerowe opóźnienie dla wykonywanych
rozgałęzień ?
Adres docelowy rozgałęzienia określany jest w fazie ID
Rozwiązanie
Sprawdzenie czy PC wskazuje na instrukcje rozgałęzienia
Zapisanie adresu docelowego rozgałęzienia w tablicy rozgałęzień w
fazie IF
Jeśli rozgałęzienie jest estymowane jako wykonywane
Next PC = adres docelowy brany z tablicy rozgałęzień
W przeciwnym przypadku Next PC = PC + 4
Architektura systemów komputerowych
Cezary Bolek
36
Tablica historii rozgałęzień – BHT
Tablicę historii rozgałęzień moŜna traktować jako małą
pamięć cache
Przechowuje adresy docelowe ostatnio wykonanych rozgałęzień
Musi posiadać dodatkowe informacje – bity predykcji
By przewidzieć czy rozgałęzienie zostanie wykonane czy nie
Określane dynamicznie przez hardware
Tablica historii rozgałęzień
Adresy ostatnich
rozgałęzień
Inc
mux
PC
Adresy
docelowe
Bity pre
dykcji
młodsze bity
jako indeks
predict_taken
=
Architektura systemów komputerowych
Cezary Bolek
37
Dynamiczna predykcja rozgałęzień
Predykcja rozgałęzień podczas wykonywania w oparciu o
bity predykcji
Jeden lub kilka bitów powiązanych jest z instrukcją rozgałęzienia
Tablica historii rozgałęzień stanowi małą pamięć
Indeksowaną młodszymi bitami adresu instrukcji rozgałęzień
W najprostszym przypadku – 1 bit na kaŜde rozgałęzienie
Nie jest pewne czy bit predykcji jest poprawny czy nie
Jeśli poprawna predykcja…
Kontynuacja wykonywania programu – brak opóźnień
Jeśli niepoprawna predykcja …
OpróŜnienie potoku z instrukcji niepotrzebnie pobranych –
opóźnienia, zmarnowane cykle
Uaktualnienie bitów predykcji i adresu docelowego
Architektura systemów komputerowych
Cezary Bolek
38
2-bitowy schemat predykcji
Predykcja jest tylko podpowiedzią, ale zakłada się, Ŝe
poprawną
Jeśli jednak nie, pobrane instrukcje są usuwane z potoku
1-bitowa predykcja ma wadę
Rozgałęzienie w pętli prawie zawsze jest wykonywane – za
wyjątkiem ostatniej iteracji
1-bitowy schemat popełni pomyłkę dwa razy – podczas pierwszej i
ostatniej iteracji
Schemat 2-bitowy działa efektywniej
Muszą nastąpić dwie pomyłki aby
Taken
Predict
Taken
zmienić bity
Predict
Taken
Taken
Dlatego rozgałęzienie jest niepoprawnie
przewidywane tylko raz – podczas
ostatniej iteracji
Architektura systemów komputerowych
Not Taken
Cezary Bolek
Not Taken
Taken
Not Taken
Not
Taken
Not
Taken
Not
Taken
Taken
39
Konflikty w architekturze potokowej - podsumowanie
Trzy rodzaje konfliktów
Konflikty zasobów: próba wykorzystania tych samych zasobów w
danym cyklu
Konflikty danych: wynik zaleŜności operujących na danych
instrukcjach
Konflikty sterowania: wynik skoków i rozgałęzień
Konflikty zmniejszają wydajność i powodują komplikację
sprzętu
Konflikty danych moŜna wyeliminować za pomocą forwardingu
Wyjątkiem są instrukcje ładowania z pamięci – wstrzymanie potoku
Konflikty sterowania: eliminowane przez złoŜony sprzęt
Opóźnione rozgałęzienie jest rozwiązaniem gdy opóźnienie = 1 cykl
Predykcja rozgałęzień pozwala na redukcję opóźnienia do zera
Błędna predykcja musi skutkować opróŜnieniem kolejki z instrukcji
Architektura systemów komputerowych
Cezary Bolek
40
Koniec
Architektura systemów komputerowych
Cezary Bolek
4
1

Podobne dokumenty