Similar presentations:
Lekcija Konveijers
1.
Ievads datoru arhitektūrāDST203
5. Lekcija
Konveijers
Asoc.prof., Dr.sc.ing, Dmitrijs Bļizņuks
1
2.
OutlineTipiskā komandas izpilde
Konveijers
Konflikti
Paralelizācijas ierobežojums
2
3.
Skaitļošanas spēja1978
2020
Frekvences paaugstinājums
Skaitļošanas spējas
Vairaki kodoli?
Intel 8086
AMD Ryzen 9 3950X
0.3 MIPS
750 000 MIPS
x1 000
x2 500 000
pie 5.0 MHz
pie 4.6 GHz
MIPS - Millions of instructions per second
(vienkāršākais skaitļošanas mērs)
Sega (spēļu konsole)
16 MIPS
Cray (superdators)
160 MIPS
iPhone 5S
18 200 MIPS
…
‘Meaningless Indicator of Processor Speed’
3
3
4.
Komandas izpilde1. Fetch instruction
FI
2. Decode instruction
DI
3. Calculate operand(s)
CO
4. Fetch operand(s)
FO
5. Execute instruction
EI
6. Write operand
WO
4
4
5.
Secīgā komandas izpildeSecīgā izpildē jaunas komandas izpilde sākas pēc iepriekšēja
rezultata pieraksta (izpildes).
n komandu izpildes laiks t ir:
t=6*n
5
5
6.
KonveijerizācijaKonveijers ļauj pāātrināt programmas izpildi, apstradājot
vairākas darbības vienlaicīgi.
n komandu izpildes laiks t ir:
t = 6 + (n – 1)
6
6
7.
PamatiDatori izpilda miljoniem darbību sekundē tāpēc mums ir svarīga to caurlaides spēja nevis
darbības ātrums
Katrā laika momentā dažādas komandas būs dažādos izpildes posmos (IF DI CO FO EI
WR)
Ilgākais posma izpildes laiks noteiks takts frekvenci
Komandu skaits uz takts CPI=1 (ideālā gadījumā)
Uzlabojums = posmu skaits (ideālā gadījumā)
Diemžēl vairāki faktori neļauj sasniegt ideālus rezultātus:
– Nevar komandas izpildi sadalīt vienādi ilgos laika posmos
– Ir jāpatērē laiks lai aizpildītu un iztukšotu konveijeru
– Ir nepieciešami virstēriņi darbību sinhronizācijai, datu pārraidei….
– Konflikti (structural, data, control hazards)
7
7
8.
Konveijera īpašībasPēc zināma laika (n-1 taktīm) visi n posmi strādā un konveijers ir
“pilns”.
Tad, teorētiski, konveijers var nodrošināt maksimālu paralēlismu
(n komandas izpildās vienlaicīgi).
Problēmas:
– Lielie virstēriņi uz datu pārvietošanu un sinhronizāciju:
aiztures laiks,
takts nobīdes (skew),
takts trīces (jitter);
– Pieaug arī CPU sarežģītība;
– Nav iespējams turēt konveijeru pilnu dēļ konveijeru konfliktiem
(hazards).
8
8
9.
Konveijera konfliktiKonveijera riski (konflikti) ir situācijas kad kādas problēmas neļauj izpildīt komandu tai
atvēlētajā taktī.
Šādu komandu sauc par aizkavētu (‘stalled’)
Kad kāda komanda tiek aizkavēta tad visas pārējās komandas (kas atrodas
konveijerā aiz aizkavētās komandas) arī tiek aizkavētas.
Komandas kas atrodas pirms aizkavētās komandas var tikt izpildītas.
Aizkaves gadījumā jaunas komandas konveijerā netiek ielādētas.
Konfliktu veidi:
– Strukturālie (Structural hazards) - Aparatūra nespēj izpildīt komandu secību ja piemēram
divas komandas vēlas izmantot vienu aparatūras resursu.
– Datu (Data hazards) - Komanda ir atkarīga no iepriekš esošas komandas rezultāta.
– Vadības (Control hazards) – Vadības komandas kuras maina komandu skaitītāja (PC)
saturu.
9
9
10.
Resursu konfliktiStruktūras konflikti rodas tad kad divas vai vairāk komandas pieprasa vienu un to pašu
resursu
Lai izvairītos:
– Dublē resursus
– Konveijerizē resursus
– Pārkārto komandas
Ir gadījumi kad šos konfliktus nevar novērst (tad ir jāaizkavē konveijers)
10
10
11.
Resursu konfliktiStruktūras konflikti rodas tad kad divas vai vairāk komandas pieprasa vienu un to pašu
resursu
Lai izvairītos:
– Dublē resursus
– Konveijerizē resursus
– Pārkārto komandas
Ir gadījumi kad šos konfliktus nevar novērst (tad ir jāaizkavē konveijers)
11
11
12.
Resursu konfliktiFetch instruction
Decode instruction
Calculate operand(s)
Fetch operand(s)
Execute instruction
Write operand
FI
DI
CO
FO
EI
WO
(jebkāda atmiņa RAM)
(Moduļu ir daudz)
(Moduļu ir daudz)
(RAM, tie paši reģistri)
(ALU)
(RAM, tie paši reģistri)
12
12
13.
Resursu konfliktijebkāds RAM ar jebkādu RAM
jebkāds RAM ar jebkādu RAM
vai konkrētie vienādi reģistri Rx un Rx,
ja reģistri ir dažādi, tad viss kārtībā (Rx un Ry)
atmiņa ar reģistru viss kārībā
DI ar CO ar EI vienmēr būs labi
FI ar FI:
FI ar FO ar WO:
13
13
14.
Resursu konfliktiFI ar FI:
RAM un RAM
FI ar FO ar WO:
RAM un RAM, Rx un Rx, Rx un Ry, RAM ar Rx
DI ar CO ar EI vienmēr būs labi
add r1,#2,[100]
[100]=r1+2
sub r2,#2,[200]
[200]=r2+2
add [100],[200],r3
r3=[100]+[200]
add r3,[100],r4
r4=r3+[100]
add r3,[200],r5
r5=r3+[200]
sub r4,r5,r6
r6=r4+r5
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
14
14
15.
Resursu konfliktiFI ar FI:
RAM un RAM
FI ar FO ar WO:
RAM un RAM, Rx un Rx, Rx un Ry, RAM ar Rx
DI ar CO ar EI vienmēr būs labi
add r1,#2,[100]
[100]=r1+2
sub r2,#2,[200]
[200]=r2+2
add [100],[200],r3
r3=[100]+[200]
add r3,[100],r4
r4=r3+[100]
add r3,[200],r5
r5=r3+[200]
sub r4,r5,r6
r6=r4+r5
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FO – operands: R1 and #2 (register and constant)
FI – memory
15
15
16.
Resursu konfliktiFI ar FI:
RAM un RAM
FI ar FO ar WO:
RAM un RAM, Rx un Rx, Rx un Ry, RAM ar Rx
DI ar CO ar EI vienmēr būs labi
add r1,#2,[100]
[100]=r1+2
sub r2,#2,[200]
[200]=r2+2
add [100],[200],r3
r3=[100]+[200]
add r3,[100],r4
r4=r3+[100]
add r3,[200],r5
r5=r3+[200]
sub r4,r5,r6
r6=r4+r5
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FO – operands: R2 and #2 (register and constant)
FI – memory
16
16
17.
Resursu konfliktiFI ar FI:
RAM un RAM
FI ar FO ar WO:
RAM un RAM, Rx un Rx, Rx un Ry, RAM ar Rx
DI ar CO ar EI vienmēr būs labi
add r1,#2,[100]
[100]=r1+2
sub r2,#2,[200]
[200]=r2+2
add [100],[200],r3
r3=[100]+[200]
add r3,[100],r4
r4=r3+[100]
add r3,[200],r5
r5=r3+[200]
sub r4,r5,r6
r6=r4+r5
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
WO – result: M[100] (memory)
FO – operands: M[100]and M[200] (memory)
FI – memory
W
17
17
18.
Resursu konfliktiFI ar FI:
RAM un RAM
FI ar FO ar WO:
RAM un RAM, Rx un Rx, Rx un Ry, RAM ar Rx
DI ar CO ar EI vienmēr būs labi
add r1,#2,[100]
[100]=r1+2
sub r2,#2,[200]
[200]=r2+2
add [100],[200],r3
r3=[100]+[200]
add r3,[100],r4
r4=r3+[100]
add r3,[200],r5
r5=r3+[200]
sub r4,r5,r6
r6=r4+r5
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
WO – result: R3 (register)
FO – operands: R3 and M[200] (register and memory)
18
18
19.
Resursu konfliktiFI ar FI:
RAM un RAM
FI ar FO ar WO:
RAM un RAM, Rx un Rx, Rx un Ry, RAM ar Rx
DI ar CO ar EI vienmēr būs labi
add r1,#2,[100]
[100]=r1+2
sub r2,#2,[200]
[200]=r2+2
add [100],[200],r3
r3=[100]+[200]
add r3,[100],r4
r4=r3+[100]
add r3,[200],r5
r5=r3+[200]
sub r4,r5,r6
r6=r4+r5
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
WO – result: R4 (register)
FO – operands: R4 and R5 (registers)
W
19
19
20.
Resursu konfliktiFI ar FI:
RAM un RAM
FI ar FO ar WO:
RAM un RAM, Rx un Rx, Rx un Ry, RAM ar Rx
DI ar CO ar EI vienmēr būs labi
add r1,#2,[100]
[100]=r1+2
sub r2,#2,[200]
[200]=r2+2
add [100],[200],r3
r3=[100]+[200]
add r3,[100],r4
r4=r3+[100]
add r3,[200],r5
r5=r3+[200]
sub r4,r5,r6
r6=r4+r5
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
W
FI
DI
CO
FO
EI
WO – result: M[100] (memory)
FO – operands: R1 and R2 (registers)
FI – memory
W
20
20
21.
Resursu konfliktiFI ar FI:
RAM un RAM
FI ar FO ar WO:
RAM un RAM, Rx un Rx, Rx un Ry, RAM ar Rx
DI ar CO ar EI vienmēr būs labi
add r1,#2,[100]
[100]=r1+2
sub r2,#2,[200]
[200]=r2+2
add [100],[200],r3
r3=[101]+[200]
add r3,[100],r4
r4=r3+[100]
add r3,[200],r5
r5=r3+[200]
sub r4,r5,r6
r6=r4+r5
FI
DI
CO
FO
EI
WO
FI
DI
CO
FO
EI
FI
DI
CO
FO
FI
DI
X
FI
X
X
21
21
22.
Datu konfliktiRead After Write (RAW)
Komanda “J” cenšas nolasīt operandu pirms Komanda “I” to pieraksta
To izraisa atkarība (”dependance”) ko izveido programmētājs (vai kompilators) un kura
pieprasa šo datu nodošanu no vienas komandas otrai
22
22
23.
Datu konfliktiWrite After Read (WAR)
Komanda “J” pieraksta operandu pirms Komanda “I” to nolasa
Sauc arī par “anti-dependence” un to izraisa reģistra “r1” atkārtota izmantošana
Vienkāršā konveijerā neiespējams gadījums jo:
– Visas komandas izpildās vienādā taktu skaitā
– Nolasa vienmēr 3. taktī bet pieraksta vienmēr 6. taktī
WAR konflikti rodas ja komandas tiek izpildītas ārpus secības vai tās piekļūst datiem vēlāk
nekā parasti
23
23
24.
Datu konfliktiWrite After Write (WAW)
Komanda “J” pieraksta operandu pirms Komanda “I” pieraksta to pašu operandu
Tiek saukta arī par “output dependence” un to arī izraisa vārda “r1” atkārtota izmantošana
Vienkāršā konveijerā neiespējami jo:
– Visas komandas izpildās vienādā taktu skaitā
– Pieraksta vienmēr 6. taktī
WAR un WAW ir iespējami sarežģīti organizētos konveijeros.
24
24
25.
Datu konfliktu novēršanaPiemēram izveidojiet pēc iespējas ātrāku dotā koda izpildi:
– a=b+c
– d=e–f
Pieņemot to ka a, b, c, d ,e, un f atrodas atmiņā
25
25
26.
Read After Write (RAW) piemērs26
26
27.
Paralelizācijas ierobežojumsDažos pielietojumos aparatūras dublēšana rada proporcionālo skaitļošanas uzlabojumu
27
27
28.
Amdala likums (Amdahl’s Law)28
28
29.
Amdala likuma piemērsVideo spēle izmanto CPU un GPU, lai izrēķināt katru kadru
Pie kadru frekvences 10 fps, katrs kadrs aizņem 100 ms
Pieņemsim ka 60% laika aizņem GPU un 40% CPU
Jūs gribiet uzlabot sistēmu, bet iztērēt naudu visefektīvāk.
Ir sekojošie variant:
a)
b)
Jauns GPU ir četras reizes ātrāks un maksā 1500 EUR;
Jauns CPU ir trīs reizēs ātrāks un maksā 700 EUR.
Kurš variants ir izdevīgāks?
100 ms is 100%
60 ms is 60% - GPU
40 ms is 40% - CPU
29
29
30.
Amdala likuma piemērs100 ms is 100%
60 ms is 60% - GPU
40 ms is 40% - CPU
Opcija “a” ar GPU
60 ms samazinās līdz 15 ms
Kopējais laiks = 15 + 40 = 55 ms
Paātrinājums 100/55 = 1.8181 reizēs
Par 81,8% samaksāsiet 1500 EUR, kas rezultējas ~33 EUR/%
Opcija “b” ar CPU
40 ms samazinās līdz 13,3 ms
Kopējais laiks = 13,3 + 60 = 73,3 ms
Paātrinājums 100/73,3 = 1.364 reizēs
Par 36,4% samaksāsiet 700 EUR, kas rezultējas ~26 EUR/%
30
30
31.
Amdahl’s Law exampleOption “a”
1
1