Professional Documents
Culture Documents
Szgarch
Szgarch
Szgarch
Szmtgp Architektrk
Tartalomjegyzk
I.
1. Informcifeldolgozsi modellek
1.1. Vezrlsramlsos modell . . . . . . . . . . .
1.2. Adatramlsos modell . . . . . . . . . . . . .
1.3. Ignyvezrelt modell . . . . . . . . . . . . .
1.4. Esettanulmny . . . . . . . . . . . . . . . . .
1.4.1. Megolds vezrlsramlsos modellel
1.4.2. Megolds adatramlsos modellel . .
1.4.3. Megolds ignyvezrelt modellel . .
1.5. Irodalomjegyzk . . . . . . . . . . . . . . . .
1.6. Szmonkrs . . . . . . . . . . . . . . . . . .
1.6.1. Kiskrdsek . . . . . . . . . . . . . .
1.6.2. Nagykrdsek . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
12
13
15
15
18
19
20
20
20
20
2. Vezrlsramlsos architektrk
2.1. A Neumann architektra . . . . . . . . . . . . . . . . . . . .
2.1.1. A Neumann architektra alapelemei . . . . . . . . .
2.1.2. A von Neumann architektrk szk keresztmetszete
2.1.3. nmdost programok . . . . . . . . . . . . . . . .
2.2. A Harvard architektra . . . . . . . . . . . . . . . . . . . . .
2.2.1. A Harvard architektra felptse s tulajdonsgai .
2.2.2. Mdostott Harvard architektra . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21
21
21
22
22
23
23
24
3. Utastskszlet architektrk
3.1. Utastskszletek . . . . . . . . . . . . .
3.2. Az utastsok jellemzi . . . . . . . . . .
3.2.1. Utastsok felptse . . . . . . .
3.2.2. Utaststpusok . . . . . . . . . .
3.2.3. Cmzsi mdok . . . . . . . . . .
3.2.4. Elgazsok kezelse . . . . . . .
3.2.5. Utastsok kdolsa . . . . . . .
3.3. Az utastskszlet architektrk jellemzi
3.3.1. Bjtsorrend . . . . . . . . . . . .
3.3.2. Perifriakezel utastsok . . . .
3.3.3. Ortogonalits . . . . . . . . . . .
3.3.4. RISC vs. CISC . . . . . . . . . . .
3.3.5. Nhny rdekes utastskszlet .
3.4. Pldk utastskszlet architektrkra . .
3.5. Esettanulmny . . . . . . . . . . . . . . .
3.5.1. Megvalsts x86 architektrn .
3.5.2. Megvalsts ARM architektrn
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25
25
25
25
26
27
27
28
30
30
31
31
31
33
33
36
37
38
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
TARTALOMJEGYZK
3.5.3. Megvalsts PowerPC architektrn
3.5.4. Megvalsts Alpha architektrn . .
3.6. Irodalomjegyzk . . . . . . . . . . . . . . . .
3.7. Szmonkrs . . . . . . . . . . . . . . . . . .
3.7.1. Kiskrdsek . . . . . . . . . . . . . .
3.7.2. Nagykrdsek . . . . . . . . . . . . .
II.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A perifrik
39
39
40
40
40
41
43
4. Perifriakezels
4.1. A perifrik sokflesge . . . . . . . . . . . . . . . . . . . .
4.2. Program ltal kezdemnyezett kommunikci . . . . . . .
4.2.1. Kln I/O cmtartomnyt hasznl perifriakezels
4.2.2. Memrira lekpzett perifriakezels . . . . . . . .
4.3. Perifria ltal kezdemnyezett kommunikci . . . . . . .
4.3.1. A megszaktsok mkdse . . . . . . . . . . . . .
4.3.2. Vektoros megszaktskezels . . . . . . . . . . . .
4.3.3. Megszaktskezels tbbprocesszoros rendszerben
4.3.4. A megszaktskezels elnyei s htrnyai . . . . .
4.4. Adattvitel . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1. Forgalomszablyozs . . . . . . . . . . . . . . . . .
4.4.2. Adattvitel a processzoron keresztl . . . . . . . .
4.4.3. Adattvitel a processzor megkerlsvel . . . . . .
4.5. Busz alap sszekttetsek . . . . . . . . . . . . . . . . . .
4.5.1. Busz alap sszekttetsek jellemzi . . . . . . . .
4.5.2. Arbitrci a buszon . . . . . . . . . . . . . . . . . .
4.5.3. Pldk buszokra . . . . . . . . . . . . . . . . . . . .
4.5.4. Egy-, tbb-buszos, ill. hd alap rendszerek . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
45
46
46
47
48
48
48
49
50
50
51
52
54
55
56
57
59
59
5. Perifria csatolfelletek
5.1. Kihvsok . . . . . . . . . . . . . . . . . .
5.2. A PCI csatolfellet . . . . . . . . . . . .
5.2.1. PCI alap rendszerek . . . . . . .
5.2.2. Egyszer adattviteli tranzakci .
5.2.3. Parancsok . . . . . . . . . . . . .
5.2.4. Arbitrci . . . . . . . . . . . . .
5.2.5. Megszaktskezels . . . . . . . .
5.2.6. Kongurls . . . . . . . . . . . .
5.2.7. A PCI csatol jelzsei . . . . . . .
5.3. A PCI Express csatolfellet . . . . . . .
5.3.1. PCI Express alap rendszerek . .
5.3.2. PCI Express tranzakcik tvitele
5.3.3. Megszaktskezels . . . . . . . .
5.3.4. Kongurci . . . . . . . . . . .
5.4. Az USB csatolfellet . . . . . . . . . . .
5.4.1. Az USB trtnete, kpessgei . .
5.4.2. Az USB felptse . . . . . . . . .
5.4.3. Az USB 1.1 . . . . . . . . . . . . .
5.4.4. Az USB 2.0 . . . . . . . . . . . . .
5.4.5. Az USB 3.0 . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
63
64
64
65
67
68
68
69
70
71
71
72
74
74
75
75
75
76
80
82
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
TARTALOMJEGYZK
6. Httrtrak
6.1. Adattrols merevlemezen (HDD) . . . . . . . .
6.1.1. A forglemezes adattrols elve . . . . .
6.1.2. Mgneses adattrols . . . . . . . . . . .
6.1.3. A merevlemezek felptse . . . . . . . .
6.1.4. Az adatok szervezse a merevlemezen .
6.1.5. A merevlemezek teljestmnyjellemzi .
6.2. Flvezet alap httrtrak (SSD) . . . . . . . .
6.2.1. Az adattrols elve a ash memriban .
6.2.2. SLC s MLC adattrols . . . . . . . . .
6.2.3. NOR s NAND ash architektra . . . .
6.2.4. Az adatok szervezse . . . . . . . . . . .
6.2.5. Szektorszint mveletek az SSD-n . . .
6.2.6. Az SSD vezrlk jellemzi s feladatai .
6.3. Illesztfelletek . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
87
87
87
88
89
91
96
99
99
102
102
105
105
108
109
III.
A memria
8. Memria technolgik
8.1. Adattrols SRAM s DRAM cellkkal . . .
8.1.1. Az SRAM trolcella . . . . . . . .
8.1.2. Az DRAM trolcella . . . . . . . .
8.1.3. sszevets . . . . . . . . . . . . . .
8.2. DRAM alap rendszermemrik . . . . . .
8.2.1. ttekint kp . . . . . . . . . . . .
8.2.2. Egy DRAM bank felptse . . . .
8.2.3. DRAM memriamodulok . . . . .
8.2.4. Tbb DRAM rank hasznlata . . .
8.2.5. Tbb memriacsatorna hasznlata
8.2.6. A memriavezrl feladatai . . . .
8.2.7. A DRAM technolgik evolcija .
121
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
123
123
123
124
124
125
125
125
128
130
130
131
133
9. A virtulis memria
9.1. Alapelvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2. Virtulis s zikai cmek, a cmfordts folyamata . . . . . . . . . . . . .
9.3. A TLB (Translation Lookaside Buer) . . . . . . . . . . . . . . . . . . . .
9.4. Laptbla implementcik . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4.1. Egyszint laptbla . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4.2. Hierarchikus laptbla . . . . . . . . . . . . . . . . . . . . . . . . .
9.4.3. Virtualizlt laptbla . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4.4. Inverz laptbla . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4.5. Szoftver menedzselt TLB . . . . . . . . . . . . . . . . . . . . . . .
9.4.6. Mretezsi krdsek . . . . . . . . . . . . . . . . . . . . . . . . .
9.5. Cmtr-elklnts a multi-tasking opercis rendszerek tmogatshoz
9.5.1. Cmtr-elklnts kizrlag a laptblra alapozva . . . . . . . .
9.5.2. Szegmentlsra alapozott cmtr-elklnts . . . . . . . . . . . .
9.6. Fizikai cmkiterjeszts (PAE) . . . . . . . . . . . . . . . . . . . . . . . . .
9.7. Virtulis trkezels a gyakorlatban . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
137
137
138
139
140
141
141
143
144
145
146
146
146
147
149
149
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
TARTALOMJEGYZK
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
151
151
151
152
153
153
156
157
158
158
158
159
161
161
162
162
163
163
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
165
165
165
167
168
168
168
169
170
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
175
175
176
183
187
IV.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A processzor
191
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
193
193
194
194
195
196
196
197
199
200
203
204
207
TARTALOMJEGYZK
14. Pipeline utastsfeldolgozs dinamikus temezssel
14.1. Motivci: utastssorrend-optimalizls . . . . . .
14.2. A soron kvli vgrehajts alapelemei . . . . . . . .
14.2.1. Az utaststrol . . . . . . . . . . . . . . .
14.2.2. A dinamikus temez . . . . . . . . . . . .
14.2.3. Regisztertnevezs . . . . . . . . . . . . . .
14.2.4. A sorrend-visszallt buer . . . . . . . . .
14.2.5. Spekulatv vgrehajts . . . . . . . . . . . .
14.2.6. Memriamveletek adat-egymsrahatsa .
14.3. Soron kvli vgrehajts a gyakorlatban . . . . . . .
14.3.1. A Scoreboard algoritmjus . . . . . . . . . .
14.3.2. A Tomasulo algoritmus . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
209
209
210
210
211
212
215
217
217
219
219
222
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
229
229
230
231
232
237
239
241
241
241
247
248
.
.
.
.
.
.
.
.
.
.
.
.
.
251
251
252
253
255
255
258
259
260
260
261
261
263
263
.
.
.
.
.
.
.
.
.
.
267
267
268
268
269
270
270
270
272
272
272
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
16. Elgazsbecsls
16.1. Az elgazsbecsls szerepe . . . . . . . . . . . . . . . .
16.2. Ugrsi felttel kimenetelnek becslse . . . . . . . . . .
16.2.1. Egyszer llapotgp alap megoldsok . . . . .
16.2.2. Korrelc gyelembe vtele . . . . . . . . . . .
16.2.3. Ktszint prediktorok . . . . . . . . . . . . . .
16.2.4. Kombinlt megoldsok . . . . . . . . . . . . . .
16.3. Ugrsi cm becslse . . . . . . . . . . . . . . . . . . . .
16.3.1. Az ugrsi cm buer . . . . . . . . . . . . . . .
16.3.2. Szubrutinhvsok visszatrsi cmnek becslse
16.4. Elgazsbecsls-tudatos programozs . . . . . . . . . .
16.4.1. Az elgazsok szmnak cskkentse . . . . . .
16.4.2. Az elgazsok kiszmthatbb ttele . . . . . .
16.4.3. Az ugrsi cm becslhetsgnek javtsa . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17. Vdelem
17.1. A privilgiumi szintek fogalma . . . . . . . . . . . . . . . . . . . . . .
17.2. Memriavdelem . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17.2.1. Memriavdelem szegmensszervezs memriakezels esetn
17.2.2. Memriavdelem tisztn a laptblra alapozva . . . . . . . . .
17.3. A vezrlstadsok ellenrzse . . . . . . . . . . . . . . . . . . . . . .
17.3.1. Kapukra alapozott tvoli vezrlstads az x86-ban . . . . . .
17.3.2. Szoftver megszaktsra alapozott rendszerhvsok . . . . . . .
17.4. Perifrik vdelme, ill. vdelem a perifriktl . . . . . . . . . . . . .
17.4.1. A perifrikhoz val hozzfrs szablyozsa . . . . . . . . .
17.4.2. A perifrik memriamveleteinek korltozsa . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
TARTALOMJEGYZK
V.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Prhuzamos feldolgozs
273
273
279
283
286
293
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
295
295
295
296
296
300
303
305
305
307
308
316
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
319
319
320
320
321
322
323
323
324
325
327
327
328
330
332
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
I. rsz
A vezrlsramlsos
informcifeldolgozsi modell
1. fejezet
Informcifeldolgozsi modellek
A szmtgpek mkdst az tvenes vektl kezdve, mint 30 ven t szinte kizrlag a Neumann architektra
hatrozta meg, amely a memriban trolt utastsok a programoz ltal megadott sorrendben trtn vgrehajtsn alapul. A 70-es, 80-as vekben tbb, ettl a mkdsi modelltl lnyegesen eltr modellt deniltak. Ezek
a szmtsi-, ms nven informcifeldolgozsi modellek hatrozzk meg, hogy egy szmtgp milyen mdon,
milyen elven oldja meg a szmtsi/informcifeldolgozsi feladatokat.
12
v1 b * b
v6 2 * a
v2 a * c
v7 -b
v3 4 * v2
v8 v7 + v5
v4 v1 - v3
v9 v7 - v5
v5 sqrt (v4)
x1 v8 / v6
x2 v9 / v6
v1 b * b
v2 a * c
v6 2 * a
v7 -b
Fork
Join
v3 4 * v2
v4 v1 - v3
v8 v7 + v5
v9 v7 - v5
x1 v8 / v6
x2 v9 / v6
v5 sqrt (v4)
Join
13
a vgrehajts utn az eredmny rtkt az arra vr utastsoknak t kell adni. Teht a vezrlsramlsos
modellhez kpest a legfbb klnbsgek:
Nincs vezrl token: egy utastst akkor hajtunk vgre, ha minden operandusa megvan.
Nincs osztott memria: a program futsa sorn a rszeredmnyeket az utastsok kzvetlenl adjk t
egymsnak.
Az adatramlsos modellben a program az utastsok kztti fggsgeket ler precedenciagrf. A grf
cscspontjai az utastsok, az i. s j. cscs kztti irnytott l pedig azt jelenti, hogy a j. utasts egyik operandusa
az i. utasts eredmnye.
Az 1.4. brn lthatjuk a msodfok egyenletet megold programot, adatramlsos modellel megvalstva.
Az utastsokat tglalappal jelltk, az utastsok operandusait pedig a tglalapba helyezett krkkel. Az res kr
jelenti az operandus hinyt, a korongot tartalmaz kr pedig az operandus megltt (a korong tulajdonkppen
az operandus rtke). A vgrehajtst az adatok (operandusok) ramlsa vezrli. Az els lpsben a v1, v7, v2 s v6
utastsok rendelkeznek az sszes szksges operandussal, ezek gy mind vgrehajthatk, akr prhuzamosan is, ha
van megfelel szm feldolgozegysg. A v1 vgrehajtsa utn v4-nek adja t az eredmnyt, v7 a v8-nak s a v9-nek,
v2 a v3-nak, v6 pedig az x1-nek s az x2-nek. A tovbbiakban felttelezzk, hogy minden mvelet vgrehajtsa
ugyanannyi ideig tart. A kvetkez krben csak a v4 lesz vgrehajthat, majd a v5, aztn prhuzamosan a v8 s
v9, majd szintn prhuzamosan az x1 s x2.
Ahogy a pldn is lthat, a prhuzamossg lersa a modell termszetbl fakad, nem a programoz dolga.
A 70-es vek vgn, 80-as vek elejn az adatramlsos modellt a jv gretes informcifeldolgozsi modelljnek tekintettk. Tbb neves egyetem is fejlesztett olyan szmtgpet, melyet az imnt ltott mdon, adatramlsos elven, precedenciagrf megadsval lehetett programozni, s amely kpes volt a lert eljrsban rejl
prhuzamostsi lehetsgek kiaknzsra. Ilyen prblkozsok voltak pl. az MIT Data-Flow Computer s a
Manchester Data-Flow Machine is (de pl. a Texas Instruments is fejlesztett ilyen szmtgpet). Vgl az adatramlsos programozsi modell s a szntisztn adatramlsos elven mkd szmtgpek ugyan nem terjedtek
el, de az adatramlsos informcifeldolgozsi elv az albbi kt terleten (tbbek kztt) fontos szerepet jtszik:
A tblzatkezel szoftverek adatramlsos elven mkdnek. Ha megvltoztatunk egy adatot, akkor minden
arra hivatkoz cella is frissl, majd a rjuk hivatkoz cellk, s gy tovbb.
A sorrenden kvli vgrehajtst (out-of-order) tmogat processzorok mind-mind adatramlsos elven,
egy precedenciagrf karbantartsval dertik fel a program (egybknt vezrlsramlsos modellnek sznt)
utastsai kztt a prhuzamostsi lehetsgeket. Ezek a processzorok tbb utastst hvnak le, s a kzttk
lv fggsgek elemzsvel meg tudjk hatrozni, hogy mely utastsok vgrehajtsa mikor kezddhet
el. Mivel tbb feldolgozegysggel is rendelkeznek, egyidejleg tbb utasts vgrehajtsa is lehetsges.
(Vigyzat! ennek semmi kze a tbbmagos processzorokhoz!)
14
v1
v8
v9
v3
4*
2*
v2
v3
4*
v4
sqrt
v5
v9
x1
v8
x2
4*
v6
x2
2*
-1 *
v7
v3
x1
v1
v9
2*
v2
sqrt
v6
-1 *
-1 *
v7
v4
x2
v8
2*
v4
v9
x2
v7
v5
4*
x1
v1
v3
v6
v9
v6
sqrt
sqrt
v2
v2
x1
v8
x2
-1 *
v7
-1 *
v7
v5
v1
v8
v4
v1
4*
2*
v5
v8
v3
v6
sqrt
v5
v4
x1
v1
v2
v4
v5
-1 *
v7
v2
v3
4*
v6
2*
sqrt
v9
x1
x2
1.4. bra. Msodfok egyenlet megold program mkdse adatramlsos modellben (balrl-jobbra, fellrl lefel)
1.4. ESETTANULMNY
15
x1
v6
x2
2*a
v9
v8
v7
-1 * b
v5
sqrt
v3
4*
v2
a*c
v4
v1
b*b
1.4. Esettanulmny
Ebben a fejezetben egy egyszer algoritmust, a Fibonacci sorozat 100-dik elemnek kiszmtst valstjuk meg
vezrlsramlsos, adatramlsos s ignyvezrelt modellben.
16
x2
v6
x1
2*a
x2
v6
x1
2*a
v6
x2
2*a
v9
v8
v9
v8
v9
v8
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v3
4*
v2
a*c
x2
v4
v1
x1
b*b
v6
v4
v3
4*
v2
a*c
x2
v1
x1
b*b
2*a
v6
v4
v3
4*
v2
a*c
x2
v1
x1
b*b
2*a
v6
2*a
v9
v8
v9
v8
v9
v8
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v3
4*
v2
a*c
x2
v4
v1
x1
b*b
v6
v4
v3
4*
v2
a*c
x2
v1
x1
b*b
2*a
v6
v4
v3
4*
v2
a*c
x2
v1
x1
b*b
2*a
v6
2*a
v9
v8
v9
v8
v9
v8
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v3
4*
v2
a*c
v4
v1
b*b
v4
v3
4*
v2
a*c
v1
b*b
v4
v3
4*
v2
a*c
v1
b*b
1.6. bra. Msodfok egyenlet megold program mkdse ignyvezrelt modellben (balrl-jobbra, fellrl lefel),
1/2. rsz
1.4. ESETTANULMNY
x1
x2
v6
17
/
x1
2*a
x2
v6
x1
2*a
v6
x2
2*a
v9
v8
v9
v8
v9
v8
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v3
4*
v2
a*c
x2
v4
v1
x1
b*b
v6
v4
v3
4*
v2
a*c
x2
v1
x1
b*b
2*a
v6
v4
v3
4*
v2
a*c
x2
v1
x1
b*b
2*a
v6
2*a
v9
v8
v9
v8
v9
v8
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v3
4*
v2
a*c
v4
v1
x1
b*b
v6
v4
v3
4*
v2
a*c
x2
v1
x1
b*b
2*a
v6
v4
v3
4*
v2
a*c
x2
v8
v9
v8
v7
-1 * b
v5
sqrt
v7
-1 * b
v5
sqrt
v3
4*
v2
a*c
v1
b*b
v4
v3
4*
v2
a*c
v1
b*b
b*b
2*a
v9
v4
v1
1.5. bra. Msodfok egyenlet megold program mkdse ignyvezrelt modellben (balrl-jobbra, fellrl lefel),
2/2. rsz
Mint a modell lersnl rszletesebben kifejtettk, a problmt az jelenti, hogy a folyamatbra, termszetnl
fogva, az utastsok szekvencilis lersra szolgl formalizmus. Ha szeretnnk az eljrsban rejl prhuzamostsi
lehetsgeket kiaknzni, akkor azt csak a vezrl token explicit tbbszrzsre s sszefogsra bevezetett Fork
s Join primitvekkel tehetjk meg. Ebben az eljrsban els pillanatra nem is ltszik prhuzamostsi lehetsg,
de jobban megnzve, a ciklusvltoz nvelse s az (f1,f2) pr rtkadsa prhuzamosan vgrehajthat. Az gy
kapott folyamatbrt az 1.7. brn lthatjuk. Megjegyezzk, hogy a kereskedelmi forgalomban kaphat, elterjedt
18
i > 100
eredm f2
N
(f1,f2) (f2,f1+f2)
ii+1
Fork
(f1,f2) (1,1)
i3
Join
i > 100
eredm f2
N
Fork
(f1,f2) (f2,f1+f2)
ii+1
Join
1.4. ESETTANULMNY
19
i
f2
f1
> 100
Switch
true
Switch
false
true
Switch
false
true
1+
false
eredm
Sync
20
if
i > 100
then f2 else
f1 + f2
i+1
1.5. Irodalomjegyzk
[1.1] Nmeth Gbor, BMEVIHIA210 Szmtgp Architektrk eladsflik, 2010.
[1.2] Philip C. Treleaven, David R. Brownbridge, Richard P. Hopkins. Data-Driven and Demand-Driven Computer
Architecture. Computing Surveys, Vol. 14, No 1, March 1982.
1.6. Szmonkrs
1.6.1. Kiskrdsek
1. Hogyan rhat le egy program a vezrlsramlsos, az adatramlsos, s az ignyvezrelt modellben?
2. Hogyan tmogatja a feladatban rejl prhuzamostsi lehetsgek automatikus feldertst s kiaknzst a
vezrlsramlsos, az adatramlsos, s az ignyvezrelt modell?
3. Mikor hajthat vgre egy utasts a vezrlsramlsos, az adatramlsos, s az ignyvezrelt modellben?
1.6.2. Nagykrdsek
1. Mutassa be s hasonltsa ssze a 3 tanult informcifeldolgozsi modellt!
2. fejezet
Vezrlsramlsos architektrk
2.1. A Neumann architektra
Neumann Jnos 1945-ben, First Draft of a Report on the EDVAC cmmel rt tanulmnyban fogalmazta meg
elszr azokat az elveket, melyek alapjn ma a Von-Neumann trolt programvezrls szmtgp-ek mkdnek. (Megjegyzend, hogy az elv kidolgozsban Neumann kollgi, Presper Eckert s John Mauchly is fontos
szerepet jtszottak). Az els megptett, mkd Neumann architektrj szmtgpet a Princeton egyetemen
fejlesztettk ki, IAS nven, Neumann szemlyes rszvtelvel, emiatt sok helyen nem Neumann, hanem Princeton
architektrnak ismerik.
Akkumultor
Vezrl
egysg
Aritmetikai
logikai
egysg
Memria
22
s, vagy mveleteket vgez. A vezrl egysg rtelmezi a memribl lehvott utastsokat, meghatrozza az
utastsok vgrehajtsi sorrendjt, ellltja az ALU rszre a vezrljeleket.
A bemeneti/kimeneti perifrik biztostjk a kapcsolatot a szmtgp s a klvilg kztt. Az ALU-ban lv
akkumultor (operandus ill. eredmnytrol) tartalma egy kimeneti perifrira kirhat, vagy egy bemeneti
perifribl beolvashat.
A memria adott bitszlessg adategysgek trolja, melyben minden adategysg egy egyedi cmmel rendelkezik. Mr emltettk, hogy a memriban troljuk az utastsokat s az adatokat is. Azonban ezek a memriban
semmilyen mdon nincsenek megklnbztetve, az, hogy egy memriabeli objektum utasts-e, vagy adat, attl
fgg, hogy a processzor utastst hv-e le onnan, vagy adatot. Ugyanez igaz az adatokra is: a memriban nincs
letrolva az adatok tpusa. Egy memriatartalom interpretlhat egszknt, karakterknt, vagy lebegpontos
szmknt egyarnt, attl fggen, hogy azon egsz, karakter, vagy lebegpontos utastsok dolgoznak-e.
Teljestmny
10000
1000
Processzor
100
10
1
1980
Memria
1985
1990
1995
2000
2005
2010
23
main: R4 N
R9 opcode of (R2 R2 + 0)
R8 1
R2 1
loop: JUMP halt IF R8 == R4
R8 R8 + 1
R10 R9 + R2
key: R2 R2 + 0
MEM[key] R10
JUMP loop
halt:
A pldban az R8 a ciklusvltoz, ami 1-tl N-ig prgeti a loop cmke s a JUMP loop kztti ciklusmagot.
A ciklusmag els utastsa a ciklusvltoz nvelse. Az ezt kvet 3 sor tartalmazza legfontosabb rszt. Az
eredmnyt az R2 regiszterben gyjtjk. Az R8-adik kr elejn az R2 trolja a b(R8+1) rtkt. Az nmdost
kd a key cmkvel elltott sorban lv utasts cserlgetsvel valsul meg. Feltesszk, hogy az sszead
utasts belefr egy regiszterbe, s hogy az utastsok gy vannak kdolva, hogy az opcode(R1 R2 + R3) =
opcode(R1 R2 + 0) + R3 (itt most az opcode(utasts) azt adja meg, hogy az utasts a memriban milyen
szmknt jelenik meg hiszen a memriban minden objektum egy szm). A key cmkvel elltott utasts j, a
ciklusmag vgn belltand rtke az R10 regiszter tartalma lesz. Mg egyszer: az R8-adik kr elejn az R2 fogja
trolja a b(R8+1) rtkt. Az R8-adik krben az R10 tartalma az R2 R2 + b(R8+1) utasts opcode-ja lesz.
Mivel az utasts mdostsa (R10 memriba rsa) csak a ciklusmag vgn trtnik, a key cmke alatt mg az
elz krben odart utasts szerepel, teht az R2 b(R8+1) + b(R8), vagyis a ciklus vgre R2 pont a b(R8+2)
rtke lesz. A ciklus jabb s jabb itercii gy a Fibonacci sorozat jabb s jabb elemeit szmoljk ki.
Utasts
memria
CPU
Adat
memria
24
3. fejezet
Utastskszlet architektrk
3.1. Utastskszletek
A gyrtk minden egyes processzorhoz megadnak egy programozsi felletet (utastskszlet architektrt,
Instruction Set Architecture, ISA). Ez a kvetkezket foglalja magban:
Az utastsokat (instructions), vagyis hogy az adott programozsi felletet tmogat processzorok milyen
utastsokat ismernek.
A beptett adattpusokat (native data types), azaz hogy az utastsok milyen adattpusokon kpesek mveleteket vgezni (pl. 8/16/32 bites eljeles/eljel nlkli egsz, stb.)
A programoz szmra lthat regisztereket (registers). A processzorban a regiszterek troljk az utastsok
operandusait s eredmnyeit (tbbek kztt vannak vezrlregiszterek, sttuszregiszterek, stb. is).
A cmzsi mdokat (addressing modes). A cmzsi mdok hatrozzk meg, hogy az utastsok milyen mdon
tudnak egy hasznlni kvnt objektumra (pl. egy mvelet operandusaira) hivatkozni.
A jelzbiteket (ags). A jelzbitek az utasts vgrehajtsa sorn trtnt specilis esemnyek bekvetkeztt
jelzik (pl. a zero ag jelezheti, hogy egy aritmetikai vagy logikai mvelet eredmnye 0 lett-e).
A perifriakezels mdjt (I/O handling), azaz hogy a processzor milyen lehetsget ad a programoznak a
perifrikkal val kommunikcira.
A megszakts- s kivtelkezelst (interrupt and exception handling), vagyis hogy a processzor milyen
lehetsget biztost a programoznak a megszaktskrsek s a program vgrehajtsa sorn fellp kivteles
esemnyek kezelsre.
Ahogy egy specikciban rgztett lbkioszts s funkcionalits ramkr bels megvalstsa is tbbfle
lehet, egy adott programozsi fellet mgtt is eltr bels mikroarchitektrlis megvalstsok llhatnak. A
programozsi fellet llandsga biztostja egy processzorcsald tagjainak kompatibilitst. Pldnak okrt az x86
utastskszlet architektra 1978-ban jelent meg, s az arra fejlesztett szoftverek mind a mai napig, tbb, mint 30 v
utn is futnak a processzorcsald legjabb tagjain, annak ellenre, hogy azok bels felptse, mikroarchitektrja
teljesen klnbzik az 1978-ban megjelent Intel 8086 processzortl.
A tovbbiakban tbbfle szempont szerint megvizsgljuk, csoportostjuk a processzorok utastskszlett.
Nem clunk valamely processzor utastskszletnek teljes bemutatsa (ezt a terjedelmi s idkorltok nem tennk
lehetv), de pldaknt betekintnk nhny, valamilyen szempontbl rdekesnek tlt processzor utastskszletbe is.
26
(a gpi kd programok minl kisebbek legyenek), msrszt az utastsokat gy kell kdolni, hogy azt a processzor
az utasts letltse utn minl gyorsabban dekdolni tudja.
ltalnos esetben az utastsok az albbi rszekbl llnak:
Az utasts els rsze az utasts kdja (operation code, rviden: opcode), amelybl a processzor dekdols
utn megtudja, hogy mit kell tennie. Az utasts kdjbl (esetleg tovbbi paramterekbl) kiderl, hogy az
utastsnak mg milyen paramterei, operandusai vannak,
az operandusok cmei (vagy rtkei), egyik a msik utn felsorolva,
a cm, ahov az eredmnyt tenni kell,
a kvetkez vgrehajtand utasts cme.
A helytakarkossgot szem eltt tartva ezeket tbbfle mdon szoktk cskkenteni. Kevs kivteltl eltekintve
a kvetkez utasts cmt nem szoktk utastsonknt elrni, hanem a kvetkez utastst ltalban az adott
utasts utn helyezik el a memriban. Ehhez utastsszmllt (Program Counter vagy ms nven Instruction
Pointer) hasznlnak, aminek az rtkt egy utasts vgrehajtsakor annak hosszval nvelik. (Termszetesen
elfordulhat, hogy nem a memriban soron kvetkez utastst szeretnnk vgrehajtani, ezrt szksg van
vezrlstad utastsokra, amire bvebben az utastsfajtknl trnk ki).
Az operandusok szmnak cskkentsvel is lehet helyet (s komplexitst) megtakartani:
Szmos processzor tmogatja a 3 operandus cmet hasznl mveleteket, pl: R1 R2 + R3.
Ha az eredmnyt mindig az els operandus helyre tesszk, mr kt cm is elg, pl: R1 R1 + R2.
Mg a kt cm is tovbb cskkenthet: bizonyos processzorokban az els operandus s az eredmny
trolsra ktelezen egy kitntetett regisztert hasznlnak, amit akkumultornak (accumulator) neveznek,
pl. az ADD R1 utasts az akkumultor rtkt R1-el nveli.
(Az operandusok azonostsra hasznlatos operandus cmek jelenthetnek memriabeli cmeket (ez a direkt
memriacmzs), de jelenthetik valamelyik regiszter kijellst is (regisztercmzs), a cmzsi mdokkal kln,
rszletesen foglalkozunk.)
3.2.2. Utaststpusok
Attl fggen, hogy az egyes utastsoknak mi a feladata, klnbz utaststpusok (ms szval utastsfajtk)
lteznek, pldul:
adatmozgats - Cmzsi mdtl fggen sokfle lehet: a cl lehet memria vagy regiszter, a forrs lehet
memria, regiszter, vagy konstans (literl).
Pldk: R1 R2, R1 MEM[100], R1 42, MEM[100] R1, MEM[200] MEM[100], MEM[100]
42.
aritmetikai s logikai mveletek - A ngy alapmveleten s az alapvet bool algebrai mveleteken kvl ide
szoktk sorolni a klnbz eltolsokat (shift), forgatsokat (rotate) is.
Pldk: R1 R2 + R3, R1 MEM[100] * 42, MEM[100] R1 & R2, MEM[200] MEM[100]
<< 2.
vezrlstad utastsok - Felttel nlkli s feltteles ugrsok (az ugrsi cm lehet abszolt illetve a PC
rtkhez kpest relatv is) szubrutinhvs s szubrutinbl val visszatrs. (Processzortl fggen az
utbbiak is lehetnek felttelesek.)
Pldk: JUMP -42, JUMP +28 IF R1==R2, CALL proc, RETURN.
veremkezel utastsok - PUSH: rtk elhelyezse a verembe, POP: rtk kivtele a verembl, esetleg a
veremmutatt llt egyb utastsok.
Pldk: PUSH R1, PUSH 42, R2 POP.
I/O mveletek - IN: rtk olvassa valamelyik (cmmel kijellt) perifrirl, OUT rtk kivitele valamelyik
(cmmel kijellt) perifrira.
Pldk: IO[42] R1 (a 42-es perifriacmre kiadjuk az R1 rtkt), R1 IO[42] (a 42-es perifriacmrl
beolvasunk egy adatot).
transzcendens fggvnyek szmtsa
Pldk: R2 SIN R1, R2 SQRT 42,
egyebek - Opercis rendszer szubrutinjainak a hvsa, virtulis memria kezel utastsok, stb.
27
jelentse (plda):
lersa:
Regiszter
R1 R2 + R3
Kzvetlen konstans
R1 R2 + 42
Direkt
R1 R2 + MEM[42]
Regiszter indirekt
R1 R2 + MEM[R3]
Eltolt indirekt
R1 R2 + MEM[R3+42]
Memria indirekt
R1 R2 + MEM[MEM[R3]]
Indexelt
R1 R2 + MEM[R3+R4]
Termszetesen nem minden processzor tmogat ilyen sok cmzsi mdot. Minl tbbfle cmzsi mdot
tmogat a processzor, annl egyszerbb assembly-ben programozni, viszont annl bonyolultabb a processzorban
az sszetettebb cmzsi mdokat feldolgoz logika.
Bizonyos processzorokban egyes utastsfajtk csak bizonyos cmzsi mdokkal hasznlhatk. Pldul az Intel
8085 processzornl perifriamveletek esetn a kivitt vagy a beolvasott rtket mindig az akkumultor hordozza
(regiszter cmzsi md), a perifriacmet pedig (8 biten) mindig direkt mdon kell megadni; nem lehet pldul a
B regiszter rtkt a C regiszterben megadott sorszm portra kivinni.
//
//
//
//
28
Opcode
Operanduscm1
Operanduscm2
Vltoz:
Opcode
Operanduscm1
Operanduscm2
Operanduscm3
Operanduscmn
29
Assembly kd
1 = 32 bites sszeads
MOD
000000 = ADD
REG
0
R/M
0
EAX kdja
ECX kdja
30
regiszter tartalma az egyik operandus. A msik operandus cmzst a MOD mez hatrozza meg. A 3.3. brn a
MOD mez rtke 11, ami azt jelenti, hogy az oda rt 3 bites rtk is egy regiszter sorszmnak tekintend, s
a regiszter tartalma maga az operandus. Ezzel szemben a 3.4. brn a MOD rtke 00, ami a regiszter indirekt
cmzs kdja: az annyiadik regisztert cmnek (mutatnak) tekinti, az operandus a memriban van, ott, ahova az
a regiszter mutat.
00 =
R/M egy cm, eltols nincs
1 = 32 bites sszeads
MOD
REG
1
000000 = ADD
R/M
1
EDI kdja
EBX kdja
1 = 32 bites sszeads
MOD
REG
0
R/M
0
32 bites konstans
0 = A skalr 32 bites
31
3.3.3. Ortogonalits
Amennyiben egy utastskszlet architektrban minden (vagy legtbb) cmzst hasznl utastsban minden
(vagy legtbb) cmzsi md hasznlhat, a processzor utastskszlett ortogonlisnak (vagy kzel ortogonlisnak)
nevezzk. (Az analgia nyilvnval: egy derkszg koordinta-rendszerben egy pont koordintiknt brmely
X rtkhez brmely Y rtk tartozhat.) Az ortogonalits a gpi kdban (vagy inkbb assembly nyelven) dolgoz
programoz szmra knyelmes tulajdonsg lehet, a magas szint programozsi nyelvek fordti azonban nem
mindig hasznljk ki.
32
Az 1980-as vekben szletett, s a 90-es vekben igen sikeres lett egy alternatv stratgia: a cskkentett
utastskszlet szmtgp, azaz RISC (Reduced Instruction Set Computer). rdekes mdon a RISC processzorok
legfbb jellemzje nem is a kis szm utasts (ahogy a neve sugallja), hanem az utastsok egyszer mivolta.
Minden utasts egyetlen, elemi mveletet hajt vgre, aminek kvetkeztben a processzorok bels felptse sokkal
egyszerbb, tlthatbb, ami lehetv teszi a hatkonyabb mikrarchitektra kialaktst. A RISC szmtgpek
jellemzi:
Egyszer, elemi utastsok, redundancit kerlve.
Load/Store s regiszter-regiszter tpus mveletek. Azaz, amg a CISC esetn ltezett R1 R2 + MEM[42]
utasts, addig RISC esetn ehhez kt utasts is kell R3 MEM[42]; R1 R2 + R3.
Kevs cmzsi md.
Fix utastshossz.
Minden (vagy legalbbis a legtbb) utasts vgrehajtsa ugyanannyi ideig tart.
Mindkt tervezsi stratginak vannak elnys s htrnyos tulajdonsgai egyarnt:
A CISC elnye a tmrsg, vagyis a program kevs utastsbl ll. RISC esetn a programot elemi mveletekre kell bontani, ami nagyobb kdot eredmnyez. Ennek ellenslyozsra pldul a PowerPC architektrban hardveres programkd tmrtst alkalmaznak. A memria (s a httrtrak) rnak cskkense,
sebessgnek nvekedse s a processzor lapkjn megvalstott tbb szint cache mra kikszblte a
program hossznak nvekedsvel jr problmkat.
A RISC elnye az egyszersg. Mivel minden utasts elemi mvelet, a processzor felptse sokkal
egyszerbb. Az egyszerbb processzorban kevesebb a tervezsi hiba. Az egyszerbb processzort huzalozott
vezrlssel is meg lehet valstani (nem kell mikroprogramozott vezrls), aminek ksznheten magasabb
rajel-frekvencia rhet el (pldul 1995-ben a RISC szervezs DEC Alpha 21164 EV5 mr 333MHz-en
mkdtt, mg a CISC szervezs Intel Pentium MMX P54CS mg csak 133 MHz-re volt kpes). Az
egyszersgnek ksznheten kisebb lesz a processzor az IC-n, aminek tovbbi, szertegaz kvetkezmnyei
vannak:
Alacsony fogyaszts
Jobb gyrtsi kihozatal (tbb CPU helyezhet egy ostyra, s kisebb a selejtarny is)
Mivel kevs helyet foglal a CPU az IC-n, az IC-re szmos jrulkos eszkz integrlhat (tbb cache,
memriavezrl, grakus vezrl, I/O vezrlk, stb.)
A CISC processzorokhoz kevesebb regiszterre van szksg. A RISC processzorokban, mivel (a Load/Store
kivtelvel) minden mvelet operandusai regiszterek, nyilvn tbb regiszter szksges.
Az tny, hogy az utbbi 30 vben megjelent utastskszlet architektrk mind RISC szervezsek. A ma
kaphat legelterjedtebb CISC architektra, az x86 is bell mr RISC kialakts: maga az x86 utastskszlet
architektra ktsgtelenl CISC, de a processzor els dolga, hogy a betlttt komplex utastsokat egyszer,
elemi mveletek sorozatra (mikroutastsokra) bontja, olyan elemi mveletekre, melyek a RISC processzorokra
jellemzek.
A kzismert processzorok kzl a CISC kategriba soroljuk a kvetkezket:
8 bitesek: Intel 8080, 8085; Zilog Z80; MOS Technology 6502, 6510; Motorola 6800, 6809.
16 bitesek: DEC PDP-11; Intel 8086, 80286; a 8086-tal kompatibilis, de 8 bites kls adatbusszal rendelkez
Intel 8088; a 32 bites regisztereket tartalmaz, de kvl 16 bites Motorola 68000 s 68010.
32 bitesek: DEC VAX; IBM System/360; Motorola 68020, 6830, 6840, 6860; az sszes IA-32 ISA szerinti CPU,
gy: Intel 80386, 80486, Pentium, Pentium Pro, Pentium II, Pentium III, Pentium 4; AMD K5, K6, K7 (Athlon,
Duron s a korbbi Sempron processzorok).
64 bitesek: IBM z/Architecture; Intel IA-64 (Itanium, Itanium 2, Itanium 9300); az sszes x86-64-et implementl CPU, gy: AMD K8 (korbbi Opteron, Athlon 64, Athlon 64 FX, Athlon 64 X2, Athlon II, Athlon X2
s a ksbbi Sempron processzorok), K8L (a Turion klnbz fajti kis fogyaszts clra), K10 (ksbbi
Opteron, Phenom, Phenom II) ; Intel CPU-k rdemben a Core mikroarchitektrtl kezdve.
33
A RISC kategriba sorolt ismertebb ltalnos cl processzorok 32-bitestl kezddnek s gyakran a nevkben
is hordozzk a RISC szt:
32 bitesek: IBM POWER1, POWER2 (Performance Optimization With Enhanced RISC); IBM-Intel-Motorola
PowerPC 615-ig (Performance Optimization With Enhanced RISC Performance Computing); SUN SPARC
(Scalable Processor Architecture) 32 bites verzii ; ARM Holdings ARM (Advanced RISCMachine); MIPS
Technologies MIPS32 (Microprocessor without Interlocked Pipeline Stages) implementcii; HP PA-RISC
(Precision Architecture RISC) eredeti 32 bites vltozata
64 bitesek: DEC Alpha; IBM POWER3-tl; IBM-Intel-Motorola PowerPC 620-tl; SUN SPARC 64 bites
verzii; MIPS Technologies MIPS64 implementcii; HP PA-RISC 2.0.
34
Az ARM architektra. Taln meglep, de nem az x86 a legelterjedtebb utastskszlet architektra, hanem
az ARM (Advanced RISC Machines). 2010-ben 6.1 millird ARM processzort adtak el, ami egyes, nem hivatalos
becslsek szerint a 10-szerese az x86 eladsoknak (egyes forrsok szerint 2005-ben a mobiltelefonok 98%-a, a 32
bites begyazott rendszerek 90%-a alapult ARM processzoron). Az ARM utastskszlet architektrt az ARM
vllalat fejlesztette ki, az els megvalsts 1987-ben jelent meg. Az architektra a kezdetektl fogva 32 bites (a
2011-ben bejelentett legjabb vltozata mr 64 bites), s a kifejlesztse sorn f szempont volt az egyszersg s
az alacsony fogyaszts. Maga az ARM tervez ugyan processzort, de azok gyrtsval nem foglalkozik. Mind az
ARM utastskszlet, mind az ARM ltal tervezett processzorok tetemes sszeg fejben licenszelhetk. Az ARM
ltal tervezett processzorok sajtos, elegns megoldsokat alkalmaznak, melyekkel a szmtsi teljestmny s
az alacsony fogyaszts kztti arany kzpt fel igyekeznek, teht sz sincs arrl, hogy minden elkpzelhet
erfesztssel a minl nagyobb szmtsi teljestmnyre trekednnek, inkbb az egyszersg a f szempont. Az
ARM2 processzor pldul a maga 30.000 tranzisztorval a vilg legkisebb 32 bites processzora, a jelenleg elterjedt
2 magos ARM Cortex A9 teljestmnyfelvtele pldul teljes terhels mellett 1-1.5 W, rajelfrekvencitl (1-1.5
GHz) fggen. ARM processzor-licenesszel rendelkeznek tbbek kztt a Texas Instruments, Samsung, NVIDIA,
ARM utastskszlet-licenszet birtokol (processzorlicensz nlkl) pldul a Qualcomm. Az ARM elterjedsnek
nagy lkst adhat, hogy a Microsoft bejelentette az architektra tmogatst a 2012-ben megjelent Windows 8
opercis rendszerben.
A PowerPC architektra. A PowerPC utastskszlet architektra az IBM, a Motorola, s az Apple sszefogsban szletett meg 1991-ben. Egy minden elemben modern, kifejezetten nagy szmtsi teljestmnyre
kpes architektra szletett, melyet eredetileg szemlyi szmtgpekbe szntak. A kilencvenes vek kzepre
kifejezetten potens megvalstsok kerltek forgalomba, melyek fellmltk az akkor kaphat x86 processzorok
teljestmnyt. Az Apple Macintosh a Motorola 68000 sorozat processzorok levltsra PowerPC platformra
vltott, mely annyira ers volt, hogy vals idben emullta a Motorola 68000 processzort, teht a rgebben rt
szoftverek futtathatk maradtak. A PowerPC a szemlyi szmtgpekben vgl nem tudott versenyezni az x86-al,
leginkbb az arra megrt rengeteg alkalmazs (melyek PowerPC-n nem futnak), valamint az x86 nagy sorozatban
val gyrtsnak gazdasgossga miatt. A PowerPC alap processzorok fejlesztse azonban nem llt le, 2007-re
az rajel frekvencia elrte az 5 GHz-et (!), 2010-re pedig 4.25 GHz-en zemel, 8 magos, magonknt 4 szlat
futtat vltozat is kereskedelmi forgalomba kerlt. Ezek a processzorok a fejlett lebegpontos kpessgeknek
ksznheten azonos rajelfrekvencin is fellmltk az x86 szmtsi teljestmnyt, aminek ksznheten nagy
teljestmny szerverekben, szuperszmtgpekben alkalmazzk ket. Van egy meglep alkalmazsi terlet is,
ahol fontos a teljestmny, de nem annyira fontos a 30 ves programokkal val kompatibilits: a jtkkonzolok. A
jtkkonzolok 2011-2012-ben mind PowerPC-t, vagy azon alapul processzort hasznltak (Xbox 360, Nintendo
Wii, Playstation 3).
A SPARC architektra. A SPARC (Scalable Processor Architecture) egy szerverekbe s nagy teljestmny
munkallomsokba sznt 64 bites processzorcsald, melyet a SUN fejlesztett ki 1987-ben, az m68k processzorok
kivltsra. A SUN, felismerve, hogy az elterjeds szempontjbl kulcsfontossg a megfelel szm s erej
ipari partner bevonsa, a SPARC fejlesztsre, promtlsra, terjesztsre egy kln szervezetet hozott ltre.
E szervezet tevkenysgnek ksznheten a SPARC egy teljesen nyitott platform lett, szmos gyrt fejleszt,
gyrt s forgalmaz SPARC-ra alapul processzorokat (tbbek kztt a Texas Instruments, a Fujitsu, a Cypress is).
Ez a nyitottsg 2006-ban teljesedett ki, amikor is a SUN nyltt tette az UltraSPARC T1 processzor terveit, majd
2007-ben az UltraSPARC T2 terveit is. A tervek nyitott ttelvel egyidben hatalmas mennyisg dokumentci
vlt elrhetv a processzor felptstl, mkdstl kezdve a gyrtsra vonatkoz rszletekig. Az UltraSPARC
elrhet tervei sok-sok mrnk szmra tettk lehetv egy vals komplexits (nem csak tantermi) processzor
mkdsnek a megrtst. A processzor kpessgeirl annyit, hogy a vilg 500 legersebb szmtgnek listjn
a 2011. jnius 20.-i lls szerint az els helyet foglalta el, akkora flnnyel, hogy szmtsi ereje az t kvet 5
msik szuperszmtgp sszegzett teljestmnyt is fellmlta. Az els helyezst napjainkban ugyan elvesztette,
de a SPARC tovbbra is ers szerepl a jl sklzd szerverek vilgban.
Nhny tovbbi utastskszlet architektra, melyek ugyan mr nincsenek forgalomban, de a maguk idejben
fontos szerepet jtszottak:
Az m68k architektra. Az m86k utastskszlet architektra els kpviselje, a Motorola 68000, 1979-ben
jelent meg. Egy kezdetektl fogva 32 bites architektrrl van sz, mely a 80-as vekben s a 90-es vek elejn
az x86 legfbb versenytrsa volt. Erre a npszer processzorcsaldra plt a Apple Macintosh, a Commodore
35
Amiga, az Atari ST, s a SEGA Megadrive is, de a korai HP s Sun szerverek s munkallomsok, valamint szmos
lzernyomtat is. A Motorola belpsvel a PowerPC szvetsgbe az m68k utastskszlet architektrra pl
processzorok fejlesztse is lellt. Az utols modell a Motorola 68060 volt, mely 1994-ben jelent meg, felptsben
s teljestmnyben is az Intel Pentium processzoraira hasonltott.
Az Alpha architektra. A 64 bites Alpha architektrt a DEC fejlesztette sajt szerverei s munkallomsai
szmra. Az els modell az 1992-ben megjelent DEC Alpha 21064 volt. Az Alpha processzorok a maguk idejben a leginnovatvabb processzorok kz tartoztak: a 21164 volt az els processzor nagymret, a CPU-val egy
szilciumszeleten elhelyezett els szint cache-sel, a 21264 volt az els processzor, mely a sorrenden kvl utastsvgrehajtst magas rajellel tudta kombinlni, a 21364 volt az els processzor integrlt memriavezrlvel, a 21464
volt az els, tbb vgrehajtsi szlat tmogat processzor. Sajnos a 21464 sohasem kerlt sorozatgyrtsba, mert a
DEC-et ebben az idben vsrolta fel a Compaq, amely lelltotta az Alpha processzorok fejlesztst. Ezek fnyben taln mondani sem kell, hogy az Alpha processzorok, klnsen a lebegpontos szmtsokban, igen ersek
voltak (a 833MHz-es 21264-es lebegpontos szmtsi sebessge tbb, mint hromszoros az 1GHz-es Pentium
III-hoz kpest). rdekessg, hogy ezt a teljestmnyt s ezeket az innovatv megoldsokat az akkor igen szokatlan
kzi tervezssel rtk el (nem hasznltak a tervezst s a megvalstst automatizl szoftvereket). Pontosan az
Alpha processzorok sikere volt az, ami a flvezetipart (konkrtan a processzor tervezket) rbresztette arra,
hogy ne tmaszkodjanak kizrlag automatizlt tervez eszkzkre, az azokkal kapott implementcikat legalbb
rszben igyekezzenek kzi testreszabssal optimalizlni.
A PA-RISC architektra. A kezdetben 32 bites, majd ksbb 64 bitesre kiterjesztett PA-RISC (Precision Architecture) utastskszlet architektra a Hewlett-Packard fejlesztse, els implementcija 1986-ban jelent meg. A
HP motivcija is ugyanaz volt, mint a SUN-: a korosod m68k architektrra pl szervereinek s munkallomsainak frisstse sajt, nagyobb teljestmny processzorral. A PA-RISC processzorok sajtossga, hogy
nem hasznlnak msodszint cache-t, de els szint cache-bl olyan sokat tartalmaznak, amennyit mind a mai
napig egyetlen ms vetlytrs sem. Szmtsi teljestmnyrl egy adat: az 552 MHz-es PA-8600 lebegpontos
teljestmnye kb. ktszerese az 1GHz-es Intel Pentium III-nak.
Felmerl a krds, hogy a 90-es vek gretes architektri, az Alpha s a PA-RISC, hov tntek olyan hirtelen.
Az ok az IA-64 architektra sznre lpse volt.
Az IA-64 (Intel Itanium) architektra. Az IA-64 architektra kifejlesztst a HP kezdemnyezte. A 90-es
vekben a HP megllaptotta, hogy a szmtgpgyrtknak (mint sajt magnak) nem kltsghatkony a
sajt processzor fejlesztse, ezrt 1994-ben az Intel-lel szvetkezve megkezdtk a munklatokat a jv vllalati
rendszereit megalapoz utastskszlet architektrn, s processzoron. A fejlesztst folyamatos, intenzv sajt
jelenlt kvette nyomon. Az Intel risi mennyisg pnzt ldozott a fejlesztsre. Mindezek eredmnyekpp az
elemzk meg voltak gyzdve rla, hogy az IA-64 rvid id mlva uralni fogja a vllalati rendszerek teljes piact.
Mivel akkor ez annyira egyrtelmnek tnt, lelltottk az Alpha, a PA-RISC s a MIPS (itt nem rszletezett)
processzorok fejlesztst. Az els IA-64 processzor 2001-ben kerlt piacra, kibrndt teljestmnnyel, kpessgeit
szinte minden olyan processzorcsald fellmlta, amelynek kivltsra hivatott (Alpha, PA-RISC, MIPS), mindssze
pr ezer darabot adtak el belle. Az Intel elkpzelse az volt, hogy a processzort hardveres emulci segtsgvel
x86 kompatibiliss teszik (ahogy korbban a PowerPC szoftveresen emullta a Motorola 68000-et), de hamar
kiderlt, hogy ez nagyon lassra sikerlt: az emulcival a programok futtatsi sebessge egy 100MHz-es
Pentiumnak feleltek meg, mikzben akkortjt a Pentium 1 GHz felett jrt. A gondot tbbek kztt az okozta, hogy
az IA-64 egy EPIC architektra, melyben a fordtprogram (compiler) feladata a prhuzamosan vgrehajthat
utastsok sszevlogatsa. Az ilyen fordtprogram kifejlesztse olyan nehzsgekkel jrt (s jr ma is), amire
sem az Intel, sem a HP nem szmtott, emiatt a processzor kpessgei mind a mai napig kiaknzatlanok. Az IA-64
processzorok fejlesztse mindezek ellenre nem llt le, hatalmas sszegeket fordtanak mind a processzor, mind a
fordtprogramok tovbbfejlesztsre, mikzben az Itanium alap rendszerek piaci rszesedse minimlis (2001 s
2007 kztt sszesen 55.000 Itanium alap szervert adtak el). A nem x86 alap szerverek s munkallomsok
piacn 2008-ban a PowerPC rszesedse 42%, a SPARC 32%, az Itanium pedig 26%. Mindekzben ahelyett, hogy az
IA-64 elfogadottsga nvekedne, egyre tbb cg jelenti be, hogy felhagy a platform tmogatsval (2008-ban a
Microsoft, legutbb 2011 mrciusban az Oracle).
A bemutatott utastskszlet architektrk legfbb tulajdonsgait foglalja ssze a kvetkez tblzat:
36
ARM
PowerPC
SPARC
Hny bites:
64
32/64
64
64
Megjelens ve:
1978
1983
1991
1985
Operandusok szma:
Mveletek tpusa:
reg-mem
reg-reg
reg-reg
reg-reg
Tervezsi stratgia:
CISC
RISC
RISC
RISC
Regiszterek szma:
8/16
16/32
32
32
Utastskdols:
Fix (4 byte)
Fix (4 byte)
Felttel kd
Felttel kd
Felttel kd
Felttel kd
Bjtsorrend:
Little
Big
Big/Bi
Bi
Cmzsi mdok:
Perifriakezels:
I/O utastsok
Mem.-ra lek.
Mem.-ra lek.
Mem.-ra lek.
Prediktumok:
Nincs
Van
Nincs
Nincs
m68k
Alpha
PA-RISC
IA-64
Hny bites:
32
64
64
64
Megjelens ve:
1979
1992
1986
2001
Operandusok szma:
Mveletek tpusa:
reg-mem
reg-reg
reg-reg
reg-reg
Tervezsi stratgia:
CISC
RISC
RISC
EPIC
Regiszterek szma:
16
32
32
128
Utastskdols:
Fix (4 byte)
Fix (4 byte)
Felttel kd
Felttel reg.
sszehas.& ugrik
Bjtsorrend:
Big
Bi
Big
Bi
Cmzsi mdok:
Perifriakezels:
Mem.-ra lek.
Mem.-ra lek.
Mem.-ra lek.
Mem.-ra lek.
Prediktumok:
Nincs
Nincs
Nincs
Van
3.5. Esettanulmny
Ebben a fejezetben megnzzk, hogy egy egyszer C programbl milyen gpi kd (ill. azzal egyenrtk
assembly) utastssorozat keletkezik. Ezzel az egyszer esettanulmnnyal az a clunk, hogy egy kicsit kzelebbrl
megismerkedjnk azokkal az utastsokkal, melyeket a processzor tnylegesen vgrehajt. Ltni fogjuk, hogy
mennyiben klnbzik egy CISC, ill. RISC utastskszlet, valamint hogy az utastskszletekrl tanultak a
gyakorlatban hogyan rvnyeslnek. A ksbbi fejezetekben, a processzor bels felptsnek trgyalsakor ezekre
az ismeretekre elkerlhetetlenl szksg lesz. (Nem clunk azonban a klnfle utastskszlet architektrk
rszletekbe men ismertetse.)
A vizsglatokhoz hasznlt C program a Fibonacci sorozat egy elemt szmolja ki, az albbi algoritmus szerint:
#include <stdio.h>
int main () {
int i, n, a, b, f;
scanf("%d", &n);
a = 0;
b = 1;
3.5. ESETTANULMNY
37
+ 36], 0
[ESP +
[ESP +
+ 20],
[ESP +
+ 28],
[ESP +
+ 24],
+ 36]
28]
24]
EAX
24]
EAX
20]
EAX
[ESP + 36]
[ESP + 32]
A kdbl rvid gondolkods utn leszrhet, hogy a fggvny loklis vltozi hol vannak a memriban. C
nyelvrl s loklis vltozkrl lvn sz, nyilvn a stack-be kerlnek, mely tetejt az x86 architektrban az ESP
regiszter mutatja. A stack tetejhez kpesti pozcik:
Vltoz:
Memriacm:
ESP+36
ESP+32
ESP+28
ESP+24
ESP+20
Most vegyk szemgyre a keletkezett assembly kdot. Lthat, hogy az add utasts kt operandus, ami
a CISC architektrkra jellemz. Egy msik CISC jellemz, hogy vannak memriareferens utastsok: az add
(lsd msodik operandus), az inc, s a cmp is ilyen. Ksbb ltni fogjuk, hogy egy RISC processzorban ez
nem megengedett. Mr ezen a rvidke pldn is felfedezhetjk, hogy az utastskszlet redundns, hiszen az
inkrementls (inc) megvalsthat lenne az sszeadssal (add) is, de knyelmi okokbl ez a mvelet is kapott
egy sajt utastst. rdemes mg egy pillantst vetni a feltteles ugrsra, ami kt lpsben trtnik. Elszr a cmp
elvgzi az sszehasonltst, s bellt egy (bels) felttel kdot az eredmnynek megfelelen. Magt az ugrst a
jl utasts vgzi el, ha a (bels) felttel kd rtke kisebb (azaz az elz sszehasonltsbl az jtt ki, hogy az
els operandus kisebb a msiknl). Azaz az x86 architektra felttel kdra alapozott feltteles ugrst tmogat.
Vegyk szre, hogy a fenti assembly kd nem ppen optimlis, hiszen a ciklus belsejben szinte minden
egyes mvelet a memrihoz fordul. A -O3 kapcsol megadsval engedlyezve az optimalizlst olyan kdot
kapunk, melyben a fggvnynk ltal hasznlt pr vltozt a CPU regiszterei troljk, gy a ciklusban egyetlen
memriamvelet sem marad.
1
2
parancssor: clang -c fib.c -emit-llvm (az optimalizls engedlyezshez szksges a -O3 opci is)
parancssor: llc fib.o -march=arm (arm mellett x86/alpha/ppc32 opcikat is hasznlunk)
38
xor EDX, EDX
.LBB0_2:
mov ESI, EDI
add ESI, ECX
mov EDI, ECX
mov ECX, ESI
inc EDX
cmp EDX, EAX
jl .LBB0_2
A vltozk regiszterekhez rendelse a kd rtelmezse utn knnyen kitallhat, azt az albbi tblzat
tartalmazza.
Vltoz:
Regiszter:
EDX
EAX
EDI
ECX
ESI
; Kinullzzuk az r4-et,
; ... majd a ciklusvltozba rjuk
; felttel nlkl ugrunk a ciklusfelttel kirtkelsre
;
;
;
;
;
;
;
;
;
;
;
;
;
;
betltjk n srtkt
betltjk a ciklusvltoz rtkt
...sszehasonltjuk
...ha kisebb volt, ugrs a ciklusmag elejre
A stack tetejt az ARM az sp regiszterben trolja. A vltozk a stack tetejhez kpest az albbi tblzatnak
megfelelen helyezkednek el a memriban (az eltolst az ARM # karakterrel jelzi).
Vltoz:
Memriacm:
[sp #16]
[sp #12]
[sp #8]
[sp #4]
[sp]
Szemmel lthat, hogy a RISC szervezs ARM kd hosszabb, mint amit x86-ra kaptunk. Mivel utastsok
csak elemi mveletekhez tartoznak, mr a ciklusvltoz nullzsa is kt utastst ignyel (egy regiszterbe nullt
runk, majd a regiszter rtkt eltroljuk a memriba). Ugyangy a ciklusfelttel kirtkelshez is eggyel
tbb lpsre van szksg, hiszen a cmp csak regiszter operandusokat fogad el. Cserbe viszont az aritmetikai
mveletek hrom operandusak, aminek a hozadkt az optimalizlt kdon fogjuk ltni. A redundanciamentessg
jegyben inkrementl utasts nincs, az inkrementlshoz a ciklusvltozt az add nveli meg eggyel. Az ARM is
felttelkdokra alapozott elgazsbecslst hasznl.
Az optimalizls engedlyezsvel lnyegesen rvidebb kdot kapunk.
3.5. ESETTANULMNY
mov r3, #0
.LBB0_2:
add r1, r0, r2
mov r0, r2
mov r2, r1
add r3, r3, #1
cmp r3, r12
blt .LBB0_2
39
; a ciklusvltoz nullzsa (i=0)
;
;
;
;
;
;
f = a+b
a = b
b = f
i = i + 1
i s n sszehasonltsa
...ha kisebb volt, ugrs a ciklusmag elejre
Regiszter:
r3
r12
r0
r2
r1
5, 0
; i = 0
4,
7,
6,
5,
0,
0,
;
;
;
;
;
;
7, 6
6
4
5, 1
5, 3
.LBB0_2
f = a + b
a = b
b = f
i = i + 1
i s n sszehasonltsa, az eredmnyt 0-ban troljuk
az eredmnytl fggen ugrik a ciklusmag elejre
Regiszter:
Kicsit szokatlannak tnhet, hogy a PPC-ben a regisztereket csupn egy szmmal jellik, ami nem ppen a
knny olvashatsgot szolglja. Ismt visszaksznnek a RISC jellemvonsok: a hrom operandus mveletek
s az inkrementl utasts hinya. Az optimalizlt kdbl nem ltszik, de termszetesen a PPC-ben is csak
regiszterek lehetnek az utastsok operandusai (a load/store utastsoktl eltekintve). Emltst rdemel a kiss
rendhagy elgazs-kezels. Az sszehasonlt mveletek eredmnyt ugyanis a programoz egy felttel regiszterbe elmentheti (ebbl 8 ll rendelkezsre), s a feltteles elgazskor (blt) meg kell adni, hogy melyik felttel
regisztert vegye gyelembe (ebben az esetben a 0-s felttel regisztert hasznltuk). Ez a megolds mind az x86,
mind az ARM megoldsnl rugalmasabb, hiszen ott csak egyetlen (az utols) sszehasonlts rtkt trolja a
CPU. Annak ellenre, hogy tbb sszehasonlts eredmnye is trolhat, mgsem hvjuk felttel regiszterre
alapozott elgazs-kezelsnek. Ezt a titulust csak akkor rdemeln ki, ha a specilis felttel regiszterek helyett
ltalnos cl regisztereket is hasznlhatnnk erre a clra.
$31,$2
; ciklusvltoz nullzsa
$3,$1,$4
$1,$3
$4,$1
; f = a + b
; a = b
; b = f
40
$2,1,$2
$2,$0,$5
$5,$BB0_2
; i = i + 1
; i<n? eredmny: $5-be kerl
; $5 rtktl fggen megy mg egy krt a ciklus
$2
$0
$3
$1
$4
A kdbl az Alpha processzorok kt rdekes tulajdonsgt szrhetjk le. Egyrszt furcsnak tnhet a nullzs,
amihez kihasznljuk, hogy az $31-es regiszter konstans 0-t tartalmaz. Erre egy 64 bites processzornak azrt van
szksge, mert a nullzs egy gyakori mvelet, s egy 64 bites 0 rtk utastsba kdolsnl s vgrehajtsnl
hatkonyabb, ha a 32 regiszter kzl az utolsra hivatkozunk.
Az elgazs kezelst illeten itt vgre tallkozhatunk a felttel regiszter hasznlatval. A cmplt elvgzi az
sszehasonltst, s ha teljesl a < relci, akkor az $5-s ltalnos cl regiszterbe egy 1-est r, ha nem, akkor
pedig 0-t. A bne utasts vgzi el az ugrst, amennyiben $5 0.
3.6. Irodalomjegyzk
[3.1] Rudolf Eigenmann, David J. Lilja. Von Neumann Computers. Wiley Encyclopedia of Electrical and Electronics
Engineering, 1999.
[3.2] David A. Patterson, John L. Hennessy. Computer Architecture: A Quantitative Approach, Morgan Kaufmann
Publishers, 4th Edition, 2006.
[3.3] Yuan Wei Bin Huang Amit K. Naidu, CISC vs. RISC, http://www.cs.virginia.edu/%7Eskadron/
cs654/cs654_01/slides/amit.ppt.
[3.4] Hannibal, RISC vs. CISC: The Post-RISC Era (A historical approach to the debate), http://staffweb.worc.
ac.uk/DrC/Courses%202004-5/Comp3070/Resources/hannibal.pdf.
[3.5] Reduced instruction set computing, http://en.wikipedia.org/wiki/Reduced_instruction_set_
computing.
[3.6] Intel 64 and IA-32 Architectures Software Developers Manuals, http://www.intel.com/products/
processor/manuals.
[3.7] Intel 80386 Reference Programmers Manual, http://pdos.csail.mit.edu/6.858/2010/readings/
i386/toc.htm.
3.7. Szmonkrs
3.7.1. Kiskrdsek
1. Mi a Neumann architektra szk keresztmetszete?
2. Mi a Neumann s a Harvard architektrk kztti alapvet klnbsg?
3. Mi az elnye a x s a vltoz hosszsg utastskdolsnak?
4. Soroljon fel 5 utastsfajtt/tpust!
5. Soroljon fel 4 cmzsi mdot!
6. Mi a klnbsg a felttel kdra s a felttel regiszterre alapozott feltteles ugr utastsok kztt?
7. Hogyan lehet az utastskszleteket bjtsorrend alapjn csoportostani?
8. Mit jelent az utastskszletek ortogonalitsa?
3.7. SZMONKRS
41
3.7.2. Nagykrdsek
1. Ismertesse s hasonltsa ssze a Neumann, a Harvard, s a mdostott Harvard architektrt!
2. Mutassa be az utastsok felptst, kdolst! Hogy lehet az utastsok operandusainak a szmt cskkenteni? Milyen utastsfajtkat/tpusokat ismer? Mindegyikre adjon pldt is!
3. Ismertesse a CISC s a RISC processzor tervezsi stratgikat, sorolja fel ezek jellemzit, elnyeit, htrnyait!
42
II. rsz
A perifrik
43
4. fejezet
Perifriakezels
4.1. A perifrik sokflesge
A szmtgpek perifriit tbbfle szempont szerint csoportosthatjuk. Attl fggen, hogy az adatok a perifribl ramlanak a szmtgp fel (pl. egr, billentyzet, lapolvas, mikrofon, stb.), vagy fordtva (pl. megjelent,
hangszr, stb.) megklnbztetnk bemeneti illetve kimeneti perifrikat. Egyes perifrik esetn ez nem egyrtelm (mint pl. a printer tartalmaz nyomgombokat is, ami bemeneti, s festk szrsra alkalmas eszkzt is, ami
kimeneti), ilyenkor az eszkzt annak dominns irnyultsga szerint jellemezzk. Vannak perifrik, melyek nem
rendelkeznek dominns irnyultsggal, ezek egyszerre be- s kimeneti eszkzk (pl. diszk, hlzati krtya, stb.)
Az is lnyeges szempont, hogy az adatok bevitelt ill. a kimen adatok befogadst ember vagy gp vgzi-e.
Az ember, mint partner lnyegesen lassabb adatbevitelre, ill. befogadsra kpes, mint a gp.
Vannak perifrik, melyek rzkenyek a ksleltetsre. Ezek nem kpesek tetszleges vrakozsra, a nekik
sznt adatokat az elrt hatridt betartva el kell kldeni, ill. a tlk szrmaz adatokat az elrt hatrid eltt.
A hatrid leksse utn az adat aktualitsa elvsz. Ebbe a krbe tartoznak az olyan interaktv eszkzk, mint
pl. a hangkrtya: a hangmintknak meg kell rkeznie a kijtszs pillanatig, klnben zavar minsgromls
(kattans) lp fel.
Egyes perifrik svszlessg ignyesek, vagyis rvid id alatt kifejezetten nagy mennyisg adatot cserlnek,
melyek feldogozsa, vagy elksztse kihvst jelenthet.
Az albbi tblzat nhny elterjedten hasznlt perifrit vesz sorra.
Partner
Bemeneti/kimeneti
Adatforgalom
Billentyzet:
Humn
Bemeneti
100 byte/sec
Egr:
Humn
Bemeneti
200 byte/sec
Hangkrtya:
Humn
Kimeneti
kb. 96 KByte/sec
Printer:
Humn
Kimeneti
Grakus megjelent:
Humn
Kimeneti
Gp
Ki/Be
Diszk (HDD:
Gp
Ki/Be
kb. 50 MByte/sec
GPS:
Gp
Bemeneti
Taln ebbl a hozzvetleges tblzatbl is lthat, hogy nem lesz knny olyan egyszer, univerzlisan
hasznlhat receptrt tallni, ami minden ltez perifria kiszolglsra egyformn alkalmas.
A kvetkez fejezetekben megtrgyaljuk,
hogy hogyan tud a processzoron fut program adattvitelt kezdemnyezni;
hogy hogyan tud a szmtgp egy perifrija adattvitelt kezdemnyezni;
hogy hogyan kell hatkonyan leveznyelni az adattvitelt, hibamentesen s a lehet legkisebb processzor
terhelssel;
45
46
4. FEJEZET. PERIFRIAKEZELS
vgl, hogy hogyan clszer a perifrikat a processzorral, illetve a szmtgp tbbi rszegysgvel
sszektni.
Memria busz
Perifria
Perifria
CPU
Memria
Perifria
47
2. A memria s a perifriamveletekre kzs, multiplexlt busz is kialakthat. Ilyenkor az a memria r/olvas s a perifria r/olvas mveletek ugyanazt a buszt. Azt, hogy az r/olvas mvelet a memrinak,
vagy a perifriknak szl-e, a buszon egy kln erre a clra fenntartott vezrljel hatrozza meg (4.2. bra).
gy mkdik az x86 architektra is.
Memria
Perifria
CS
CPU
Perifria
CS
Perifria
CS
CS
MEM/IO
Memria
Perifria
Perifria
Perifria
CPU
48
4. FEJEZET. PERIFRIAKEZELS
REQ
Perifria
AckIN
CPU
OUT
REQ
Perifria
AckIN
OUT
REQ
Perifria
AckIN
OUT
Perifria
AckIN
INTA
INTR
Adatsn
OUT
49
INTA
CPU
INTR
Perifria
Perifria
Perifria
REQ
REQ
REQ
PIC
Adatsn
50
4. FEJEZET. PERIFRIAKEZELS
Interrupt forrs
Tipikus interrupt/s
Maximlis interrupt/s
10 Mbps Ethernet
100 Mbps Ethernet
Gigabit Ethernet
812
8127
81274
14880
148809
1488095
4.4. Adattvitel
A programoz szempontjbl a perifriakezels clja vgs soron az, hogy a perifrikbl szrmaz adatok a
memriba kerljenek (pl. egy C program egy loklis vltozjba), vagy fordtva.
Ebben a fejezetben kt alapvet tmakrt forgunk megvizsglni:
a szereplk eltr sebessgbl add adattviteli hibk kikszblsnek mdjait,
valamint magnak az adattvitelnek a mdjt, vagyis hogy az adategysgek milyen ton jutnak a perifribl
a memriba (vagy fordtva).
4.4. ADATTVITEL
51
4.4.1. Forgalomszablyozs
A legritkbb esetben fordul el az a szerencss helyzet, hogy a perifria pont akkor lesz ksz az adat fogadsra,
amikor a processzor azt klden, illetve hogy a perifria pont akkor kldi az adatot, amikor a processzor pont el
tudja azt venni. ltalban a processzor s a perifrik kztt lnyeges sebessgklnbsg van. Hogy az adattvitel
sorn ne fordulhasson el adatok elvesztse, illetve egymsra vrakozs, valamilyen (adat-) forgalom szablyz
technikt kell alkalmazni [31].
Felttel nlkli adattvitel
A felttel nlkli adattvitel tulajdonkppen a forgalomszablyozs hinya. A perifria ill. a processzor semmilyen
mdon nem tudja kzlni a msik fllel, hogy van-e j adat, illetve hogy a rgi adatot mr el tudta-e venni (fel
tudta-e dolgozni).
A felttel nlkli adattvitel sorn ktfle problma lphet fel:
Adat egymsrafuts akkor trtnhet, ha az adatot elllt szerepl (a processzor vagy a perifria, irnyultsgtl fggen) gyorsabban dolgozik, mint az adatot fogad. Az adat fogadja olyan lass, hogy nem
sikerlt elvennie a neki sznt adatot, mire az elllt egy jabb adattal fellrta azt. Mivel nincsenek az
adatcsert tmogat, forgalomszablyoz jelzsek, errl egyik fl sem rtesl.
Adathiny akkor lphet fel, ha az adatok fogadja gyorsabb, mint az adatok ellltja. Az adat fogadja
kiolvasn az j adatokat, de azok mg nem llnak rendelkezsre, de mivel errl a megfelel jelzsek
hinyban nem tud, az ltala kiolvasott adat rvnytelen (nem az, aminek szntk).
Felttel nlkli adattvitelre plda lehet pl. egy egyszer kapcsol, mely a perifriasnen keresztl kiolvashat.
A processzor perifriamvelettel lekrdezheti a kapcsol llst, azt azonban nem tudja megllaptani, hogy az
elz lekrdezs ta hnyszor nyomtk meg. Ha ez nem is cl, akkor nincs szksg fejlett forgalomszablyozsra,
a felttel nlkli tvitel tkletesen megfelel. Sok egyszer perifrinl nincs rtelme a forgalomszablyozsnak,
pl. egyszer kijelzk (LED-ek) mkdtetse, stb.
Feltteles adattvitel
A feltteles adattvitel sorn kiemelt szerepe van az adatcsere llapott trol regiszternek. Ez az 1 bites llapotregiszter 1-et tartalmaz, ha rendelkezsre ll az rvnyes adat, s 0-t tartalmaz, ha nincs adat. Az adatot
kld oldal (legyen az a perifria vagy a processzor, a kommunikci irnynak fggvnyben) az llapotregiszter
ellenrzsvel meggyzdhet rla, hogy az elz adatot elvittk-e mr, gy elkerlhet az adat egymsrafuts.
Hasonlan, az adatot vr oldal az llapotregiszter segtsgvel megllapthatja, hogy a kldnek van-e rvnyes
adata, gy elkerlhet az adathiny.
Termszetesen nem minden perifria sebessgt lehet befolysolni, ezrt lehetsges, hogy a llapotregiszter
rtkt csak az egyik szerepl tudja gyelembe venni. Pl. a 4.6. brn egy olyan esetet lthatunk, amikor a
perifria nem, de a processzor tudja gyelni az llapotregisztert. Ezt az esetet egyoldali feltteles adattvitelnek
nevezzk.
Perifria ksz
llapot
regiszter
Adat beolvasva
CPU
Adatsn
tmeneti
trol
Adatsn
Perifria
52
4. FEJEZET. PERIFRIAKEZELS
gyelembe venni, gy, ha a CPU nem elg gyors, elfordulhat, hogy a perifria egy jabb adatot r az tmeneti
trolba, mieltt a CPU a rgit kiolvasta volna.
Egyoldali feltteles adattvitelre plda lehet egy hang bemeneti eszkz (mikrofonra kttt ADC), vagy egy
hlzati krtya. Egyik esetben sem lehet befolysolni a perifria sebessgt, hiszen a hang, illetve a hlzati
csomagok gy is, gy is jnnek, akr rr a CPU elvenni az adatot, akr nem.
Ha sebessge befolysolhat, a perifria is hozzfrhet az llapot regiszterhez, s mieltt az tmeneti trolba
bern az j adatot, ellenrizni tudja, hogy a CPU elvette-e a rgit (4.7. bra). Ha az llapotregisztert 1-be lltva
tallja, akkor vrnia kell, mg ki nem olvassk. Ezt az esetet ktoldali feltteles adattvitelnek nevezzk.
llapot
regiszter
Perifria ksz
Adat beolvasva
CPU
Adatsn
Adat elvve
Adatsn
tmeneti
trol
Perifria
Nem res
CPU
Adatsn
Adatsn
Perifria
4.4. ADATTVITEL
53
54
4. FEJEZET. PERIFRIAKEZELS
DMA
A DMA (Direct Memory Access) egy olyan mechanizmus, mely lehetv teszi, hogy a perifrik kzvetlenl, a
processzor megkerlsvel tudjanak adatokat a memriba berni, ill. onnan adatokat kiolvasni. A DMA alap
adattvitelt a perifrihoz tartoz DMA vezrl koordinlja. Minden perifrinak lehet sajt DMA vezrlje, de
egy DMA vezrl akr tbb perifrit is kiszolglhat egyszerre.
Az adattvitelt a processzor kezdemnyezi azzal, hogy a DMA vezrl szmra eljuttatja az adattvitel
paramtereit (a DMA vezrl is egy perifria, teht vagy perifriakezel utastsokkal, vagy memrira lekpzett
perifriakezelssel lehet vele kommuniklni):
azt, hogy az tvitt adatokat a memriba mely cmtl kezdden kell berni (illetve, kimeneti perifria
esetn, az adatokat mely memriacmtl kezdve kell kiolvasni),
azt, hogy hny adategysget kell a perifria s a memria kztt tvinni.
A DMA vezrl ezutn a perifrival kommuniklva sorra lekri a krt szm adatot. A DMA alap adattvitel
sorn a forgalomszablyozsrt a DMA vezrl felels, teht a perifria szempontjbl a DMA vezrl ilyenkor a
processzor szerept jtssza. Az adattvitel menett a 4.11. brn lthatjuk.
Sn tads
Sn krs
CPU
Ksz
DMA
vezrl
Sn szabad
Perifria ksz
Perifria
Memria
Adatsn
Cmsn
55
Fontos, hogy a processzornak csak a DMA tvitel kezdemnyezsekor, ill. annak vgeztvel van az adattvitellel
kapcsolatos dolga. A processzor szmra a DMA teht annyiban jelent knnyebbsget, hogy az adattvitellel
nem adategysgenknt, hanem adattviteli blokkonknt kell foglalkoznia (pl. diszkek esetn egy teljes szektor
beolvashat DMA-val, s csak a teljes szektor beolvassa utn kell interrupt krssel terhelni a processzort).
Megjegyezzk, hogy vannak sajt, beptett DMA vezrlvel rendelkez perifrik is, melyek nem a most
megismert rendszerszint DMA vezrlt hasznljk. A sajt DMA vezrl is versenybe tud szllni a busz hasznlati
jogrt, s kpes az adatokat a processzor megkerlsvel kzvetlenl a memriba juttatni. Az ilyen, beptett
DMA vezrlt rst-party DMA vezrlnek, mg a fentebb megismert rendszerszint DMA vezrlt third-party
DMA vezrlnek nevezik.
I/O processzor
Az I/O processzor a DMA koncepci tovbbfejlesztse. Az I/O processzor, amellett, hogy a DMA vezrl funkcionalitst birtokolja (teht kpes a perifria s a memria kztti adatmozgats leveznylsre a CPU kzremkdse
nlkl), sajt utastskszlettel rendelkezik. Ezekbl az utastsokbl I/O programokat lehet sszelltani. Az
I/O programokkal a perifrik s a memria kztti adattviteli mveletek sorozatt, illetve az tvitt adatokon
elvgzend egyszer adatfeldolgozsi mveleteket lehet megadni.
Processzorsn
Vezrls
CPU
I/O
Memria
processzor
llapot
I/O sn
Perifria
vezrl
Perifria
Perifria
illeszt
Perifria
Perifria
56
4. FEJEZET. PERIFRIAKEZELS
57
egy master eszkznek. A processzor elszr a cmsnre helyezi a cmet, az els rajelciklus vgn a Cm rvnyes
vezrljel segtsgvel jelzi, hogy az rvnyes, majd az adatsnre helyezi az adatot, s a msodik rajelciklus
vgn egy rs vezrljel belltsval jelzi annak rvnyessgt. A megclzott eszkz a busz specikcijban
elrt protokoll ismeretben szmolja az rajeleket, gyeli az rajel megfelel lei mentn az adat-, cm- s
vezrlinformcikat, s a kell pillanatban (amikor az rajel felfut lnl a Write magas), leolvassa a buszrl a
neki sznt adatot.
rajel
Cm
rvnyes cm
Cm rvnyes
Adat
rvnyes adat
rs
rvnyes cm
rvnyes adat
rs
Ksz
58
4. FEJEZET. PERIFRIAKEZELS
a buszra egyidejleg ignyt tart master-ek kzl melyik kapja meg a busz hasznlatnak jogt, az arbitrci
folyamata dnti el. Az arbitrci trtnhet centralizltan, vagy elosztottan.
Centralizlt arbitrci esetn egy erre a clra bevezetett specilis egysg, az arbiter (buszhozzfrs-vezrl)
gondoskodik arrl, hogy a buszt egy idben csak egy master hasznlhassa. Centralizlt arbitrci megvalsthat
pldul a mr megismert daisy chaining segtsgvel (4.15. bra). Ebben az esetben a busz irnti ignyt mindenki
egyetlen, osztott jelvezetken, a BUSREQ vezetken jelenti be. Az arbiter, miutn ezt a jelzst megkapja, s
felszabadul a busz, kiadja a BUSGRANT jelet. Ezt a jelet minden olyan master, amely nem szeretn hasznlni
a buszt, tovbbad a szomszdjnak. Ha ez a jel odar a buszt ignyl master-hez, az szmra azt jelenti, hogy
megnyerte a busz hasznlatnak jogt (a jelet ekkor rtelemszeren nem adja tovbb a szomszdjnak). A daisy
chain alap megolds hibja, hogy a master-ek sorrendje a lncban egyben a prioritsukat is meghatrozza. Minl
htrbb van a lncban egy master, annl valsznbb, hogy valaki lecsap a buszra, mire hozz rne a BUSGRANT
jel. A daisy chain viszont nagyon knnyen bvthet jabb master csatlakoztatsval.
BUSREQ
Arbiter
BUSREQ
BUSREQ
BUSREQ
Master
Master
Master
Master
GrantIN OUT
GrantIN OUT
GrantIN OUT
GrantIN OUT
BUSGRANT
BUSREQ
Busz
Master
BUSReq
BUSGrant
Master
BUSReq
BUSGrant
Master
BUSReq
BUSGrant
Master
BUSReq
BUSGrant
Arbiter
59
Az elosztott arbitrci elnye, hogy kevsb rzkeny meghibsodsra, hiszen nincs egy, a mkds szempontjbl kulcsfontossg szerepl (az arbiter), melynek meghibsodsa teljes bnulst okoz.
SCSI
USB
32-64 bit
8-32 bit
1 bit
Igen
Igen
Igen
rajel:
5 (10) MHz
Aszinkron
Adatsebessg:
10 (20) MB/s
Prhuzamos
nkivlaszt
1024
7-31
0.5m
2.5m
2 5m
Adategysg:
Multiplexlt?
Arbitrci:
(Az USB busszal kapcsolatban furcsnak tnhet, hogy csak 1 master lehet a buszon. Az 5.4 fejezetben
ltni fogjuk, hogy az USB buszra kthet maximum 127 eszkzbl csakis egyetlen egy, mgpedig a vezrl
kezdemnyezhet adattvitelt.)
60
4. FEJEZET. PERIFRIAKEZELS
CPU
Memria
Processzorsn
Hd
Perifria
Perifria
Perifria
I/O sn
AGP Bus
MemoryBus
System Controller
(Northbridge)
SDRAM or DDR
PCI Bus
Peripheral Bus
Controller
(Southbridge)
LAN
SCSI
Modem/ Audio
LPC Bus
USB
Dual EIDE
BIOS
61
10 .6 GB/ s
DDR2 or DDR3
6 .4 GB/ s or 8 .5 GB/ s
PCIe*
x16
500
MB/ s
each x1
ICH 1 0 D
6 Serial ATA Port s; eSATA;
AHCI; Port Disable
Int elTrust ed Plat f orm
Module 1 .2
LCI
PCI Express* 2 .0
Graphics
Int elHigh
De nit ion Audio
each
DDR2 or DDR3
6 .4 GB/ s or 8 .5 GB/ s
Q4 3
GM CH
BIOS Support
62
4. FEJEZET. PERIFRIAKEZELS
5. fejezet
Perifria csatolfelletek
Ebben a fejezetben megismerkednk a legelterjedtebb perifriailleszt csatolfelletekkel, a PCI-jal, a PCI
Express-szel, valamint az USB-vel. Nem clunk minden rszletre kiterjed referencit adni, de a lertak elg rszletesek ahhoz, hogy a mkds alapelveit megrtsk, s azonostsuk a korbbi fejezetben tanult perifriakezelsi
alapelveket, pl. hogy hogyan trtnik a megszaktsok kezelse, a forgalomszablyozs, az arbitrci, stb.
5.1. Kihvsok
A PC-k elterjedsben tbbek kztt az is fontos szerepet jtszott, hogy bvtkrtyk segtsgvel nagyon
egyszer volt a rendszert j perifrival bvteni (kls perifria esetben is, hiszen a bvtkrtyn volt a kls
perifria kbele szmra a zikai csatlakoz). Sajnlatos mdon a bvtkrtykat fogad csatolfelletet nem
ppen az idtllsg gyelembevtelvel alaktottk ki. A PC-k jabb s jabb generciinak megjelense sokszor
jrt a csatolfellet vltozsval (ISA, MCA, EISA, VESA, stb.), s az jabb csatolfelletek inkompatibilitsa miatt
a rgi bvtkrtyk sokszor hasznlhatatlann vltak.
Amellett, hogy maga a csatolfellet is vltozkony volt, a PC-k perifrikkal val bvtse a PCI s az USB
eltti idkben nhny ms problmval is kzdtt.
A PC-be illeszthet krtyk szma ersen korltos.
A perifria illesztshez ki kell kapcsolni a szmtgpet.
A krtykkal a processzornak kommuniklnia kell, teht kell legyen sajt cmtartomnyuk az I/O cmtrbl,
sok krtya megszaktst is szokott generlni, s esetleg DMA tvitelben is rszt vesz. Ezek az erforrsok
azonban meglehetsen szksek voltak.
Szks I/O cmtr. A PC 16 bites cmteret hasznl a perifrik fel, ami bven elg is lenne, ha a 90-es
vek kzepre ki nem alakul az a szerencstlen gyakorlat, hogy a gyrtk ennek csak az als 10 bitjt
dekdoljk. Emiatt gyakorlatilag csak 1024 I/O cm vlt hasznlhatv, aminek radsul egy j rszt
a PC sajt hasznlatra lefoglalta.
A megszaktsok korltozott szma. A PC architektra eredetileg 15 hardver megszaktst (IRQ) tudott
megklnbztetni, melyek tlnyom rsze mr foglalt, hasznlatban volt (0: timer, 1: billentyzet, 3-4:
soros portok, 5: hang+prhuzamos port, 6: oppy, stb.). A PCI eltti idkben kln gondot jelentett,
hogy az j bvtkrtya szmra a megszaktskrshez szabad vonalat talljunk.
A DMA csatornk korltozott szma. Ugyanaz a helyzet, mint a megszaktsokkal. sszesen 8 llt
rendelkezsre az egsz rendszer szmra, melyek kzl voltak foglaltak. A PC DMA vezrlje radsul
kifejezetten lass volt.
Az akkoriban elterjedt perifria buszokat gy specikltk, hogy az alaplapok gyrtsa a lehet legegyszerbb s legolcsbb legyen. Ennek rdekben tbb elterjedt busz gyakorlatilag kis klnbsggel
megegyezett a hozz val processzor rendszersnjvel. Pl. az ISA busz a 8086, a VESA busz a 80486-os
rendszersnjhez idomult.
A problmk a PC-k s a hozzjuk val perifrik robbansszer elterjedsvel a 90-es vekben cscsosodtak
ki, elkerlhetetlenn vlt, hogy a perifriabvts krdst alaposan tgondoljk, s a fenti problmktl mentes,
szabvnyos (nem csak a PC-re korltozott) csatolfelleteket dolgozzanak ki.
63
64
65
CPU
FSB
GFX
SDRAM
szaki hd
0. PCI busz
Ethernet
PCI/PCI hd
SCSI
Dli hd
1. PCI busz
USB IDE AUDIO
Ethernet
CPU
FSB
GFX
SDRAM
szaki hd
PCI
csatlakozk
Dli hd
0. PCI busz
Ethernet
SCSI
PCI/PCI hd
Ethernet
66
ablakra van szksge. Egy ablak nem ms, mint a memria vagy az I/O cmtartomny egy folytonos darabja.
Pl. ha egy eszkz 64 kB mret memria ablakot kr, a BIOS, illetleg az opercis rendszer az induls sorn
kioszt neki egy 64 kB-os darabot a teljes cmtartomnybl. Ezutn minden egyes memriamvelet mgtt, amit
a processzor az ablak terletre intz, valjban PCI tranzakcikon keresztl az eszkz fog llni: az innen val
olvass a perifrirl val olvasst, az ide val rs a perifrira val rst fog jelenteni.
Az az szaki hd feladata, hogy rjjjn, hogy a processzor ltal kiadott cm mgtt a zikai memria, vagy
egy perifria ll-e. Az szaki hd nem trolja az sszes PCI perifria sszes ablakt mretekkel egytt, s nem
kezdi el minden egyes memriamvelet sorn egyenknt ellenrizni, hogy vajon nem ll-e a cm mgtt perifria,
erre egyszeren nincs id. A PC-ben egy egszen egyszer megoldst vlasztottak: a 32 bites cmtartomny fels
1 GB-os darabjt lefoglaltk a memrira lekpzett perifriamveletek szmra. Itt helyezhetk el a PCI perifrik
ablakai is. Az szaki hd teht csak rnz a cmre, ha <3 GB, akkor a zikai memrihoz, ha 3 GB, akkor a
perifrikhoz fordul. (Ez az oka, hogy alapesetben egy PC-s 32 bites opercis rendszer csak 3 GB memrit tud
kezelni akkor is, ha zikailag tbb van a gpben).
A rendszer bekapcsolsakor teht minden eszkz megkapja a krt szm s mret ablakt a memribl,
vagy az I/O cmtartomnybl, igny szerint. Ha a processzor I/O cmre hivatkozik, vagy egy olyan memriacmre,
amely mgtt PCI perifria lehet (PC-n 3 GB), a hd sszellt egy adattviteli tranzakcit. A Hoszt/PCI hd
nem tudja, melyik perifrinak az ablakt hivatkoztk meg, de ez nem baj, mert a perifrik a sajt ablakaik
elhelyezkedst pontosan tudjk. A hd teht elkri a busz hasznlatnak jogt, s kiteszi a meghivatkozott cmet
a buszra. A buszon l perifrik ezt mind megnzik, s amelyik szreveszi, hogy az ablakba esik a cm, szl,
hogy v a tranzakci.
Egy plda tranzakci tovbbi lebonyoltsa az 5.3. bra szerint trtnik ([36]).
1
rajel
FRAME
Address/Data
Cm
1. adat
2.adat
3. adat
C/BE
IRDY
TRDY
DEVSEL
GNTi
67
kezdemnyez (most a Host/PCI hd) elolvassa, s vrja a tovbbi adatokat (esetleg megvltoztatja a Byte Enable-t,
ha akarja). Ha a megcmzett perifria nem brja az iramot, a TRDY=1-el jelezheti, hogy mg nem ll kszen (5.
rajel). Amikor ismt kszen ll, kiteszi a 2. adategysget is, melyet a kezdemnyez leolvas (6. rajel). Ezutn
jnne a 3. adategysg tvitele, de az is elfordulhat, hogy a kezdemnyez az, aki nem brja az iramot, amit az
IRDY=1-el jelez (7. rajel). A 8. rajelre ismt mindegyik ksz az adattvitelre, gy a 3. adategysg is a buszra
kerl. Kzben a kezdemnyez jelzi, hogy vge a tranzakcinak (a 8. rajel felfut lre FRAME=1), amire a
megcmzett perifria elengedi a buszt (DEVSEL=1). gy olvasott ki a Host/PCI hd 3 darab 32 bites adategysget a
megcmzett perifribl, melyet a processzor szmra, mint a memriamvelet eredmnyt, tovbbt.
A pldbl tbbek kztt megismertk a PCI forgalomszablyoz mechanizmust is:
az IRDY jelzssel jelzi a kezdemnyez, hogy ksz a kvetkez adat tvitelre,
a TRDY jelzssel jelzi a megcmzett perifria, hogy ksz a kvetkez adat tvitelre.
Ebben a pldban az adattvitelt a processzor kezdemnyezte azzal, hogy a perifria fennhatsga al tartoz I/O vagy memriamveletet vgzett (ezt programozott I/O-nak is nevezik). A PCI szabvny az eszkzk
szmra ennl nagyobb nllsgot is megenged: egy PCI perifria is kezdemnyezhet adattvitelt, akr a rendszermemriba (lnyegben DMA), akr kzvetlenl egy msik perifria fel, a processzor teljes megkerlsvel
(tehermentestsvel). A PCI teht az albbi tranzakcis modelleket tmogatja:
Programozott I/O. Kezdemnyez: CPU, irnyultsg: perifria.
DMA. Kezdemnyez: perifria, irnyultsg: memria.
Peer-to-peer adattvitel. Kezdemnyez: perifria, irnyultsg: perifria.
5.2.3. Parancsok
A legfontosabb PCI parancsokat a kvetkez tblzat foglalja ssze (nem teljes a felsorols!):
C/BE
Parancs
0000
0010
0011
0110
0111
1010
1011
68
5.2.4. Arbitrci
A busz, mint osztott erforrs hasznlatrt val versenyre a PCI prhuzamos arbitrcit hasznl. A busz osztott
hasznlatt egy kzponti elem, az arbiter felgyeli (mely az 1. bra szerinti elrendezsben az szaki, a 2. bra
szerintiben a dli hd rsze lehet). Minden egyes perifria egy kizrlag szmra dediklt vezetkprral kapcsoldik
az arbiterhez. Az egyik vezetken (REQ) jelentheti be a perifria, hogy szksge lenne a buszra, a msik vezetken
(GNT) jelez vissza az arbiter, ha a busz hasznlati jogt megkapta.
A PCI .n. rejtett arbitrcit tmogat, vagyis a busz irnti ignyek bejelentse s a nyertes kivlasztsa
az aktulisan zajl tranzakci alatt trtnik. Amikor az arbiter kivlasztotta a nyertest, az aktulis tranzakci
kezdemnyezjtl elveszi, a nyertesnek pedig megadja a GNT jelet. A nyertes azonnal elkezdheti hasznlni a
buszt, amint az aktulis tranzakci vget rt. A rejtett arbitrcinak ksznheten teht nem megy krba rtkes
rajelciklus arbitrcis cllal, a tranzakcik szorosan kvethetik egymst.
A PCI szabvny nem hatrozza meg, hogy az arbiter milyen algoritmussal vlassza ki a nyertest, ha tbb eszkz
is versenybe szll a buszrt, csak annyit r, hogy a dntsnek fair-nek kell lennie. A dnts sorn gyelembe
veheti az eszkzk jellegzetessgeit is, pl. a kongurcis regiszterekbl kiolvasott idztsi adatok alapjn az
eszkzket ksleltetsre rzkeny s ksleltetsre nem rzkeny csoportokba sorolhatja.
Egy lehetsges megolds pl. a kvetkez ktszint krbenforg eljrs lehet. Legyen A s B ksleltetsre
rzkeny, X, Y, Z pedig ksleltetsre nem rzkeny eszkz. Az arbiter krbenforg elven sorra a ksleltetsre
rzkeny eszkzknek adja a buszt, de minden egyes krben egy ksleltetsre nem rzkeny eszkznek is odaadja
a busz hasznlati jogt. Teht, ha minden eszkz folyamatosan jelenti be az ignyt, az arbiter az albbiak szerinti
sorrendben biztost hozzfrst a buszhoz: A, B, X, A, B, Y, A, B, Z, A, B, X, A, B, Y, A, B, Z, stb.
5.2.5. Megszaktskezels
A PCI perifrik ktfle mdon krhetnek megszaktst a processzortl:
A 4 megszakts jelzsre szolgl vezetk egyiknek alacsonyra hzsval
zenettel jelzett megszakts (Message Signaled Interrupt, MSI) segtsgvel
A PCI csatol 4 interrupt vezetkkel rendelkezik. Ezeket a perifrik nem tetszlegesen hasznlhatjk, a
szabvny megkti, hogy pl. az egy function-t tartalmaz eszkzk csak az A vonalat hasznlhatjk, a B, C, D-t
nem. Azt azonban nem kti meg a szabvny, hogy ez a minden eszkz rendelkezsre ll 4 interrupt vezetk
milyen viszonyban van a szmtgp megszaktskezelsvel. Olyan PCI implementci is megengedett, melyben
minden eszkz mind a 4 vezetke egy helyre fut, gy brmelyik eszkz is jelezne brmelyik vonaln, a processzor
azt ugyanannak a megszaktsnak rzkeln (ilyen esetben a megszaktskezel szubrutin feladata az sszes
eszkz egyenknti vgigkrdezse, hogy ki is vltotta ki a megszaktst). A msik szlssg, hogy minden eszkz
mind a 4 megszakts vezetke mind klnbz, egymstl elklnthet megszaktsknt jelentkezik a processzor
fel. Ez termszetesen hatkony, mert gy mindig azonnal az a megszaktskezel szubrutin hvdik meg, amelyik
a megszaktst kr eszkzhz tartozik, de sajnos ehhez a megoldshoz nagy szm elklnthet hardver
interruptot kellene tmogatnia a szmtgpnek, ami nem jellemz. A PC 15 hardver megszakts elklntst
teszi lehetv, aminek egy rsze klnfle clokra fenntartott. A szabad hardver megszaktsokat a BIOS (vagy
megfelel tmogats esetn az opercis rendszer) rendeli hozz a PCI buszhoz. gy az esetlegesen nagy szm
PCI eszkz interruptjai nhny hardver megszaktsra kpezdnek le, vagyis a megszaktskezelnek a PC esetn
is feladata, hogy a kivltott megszaktshoz rendelt eszkzket vgigkrdezze, hogy melyik is krt megszaktst.
A megszakts krsnek msik mdja az zenettel jelzett megszakts. A perifria egy kongurcis regiszterbeli bejegyzsben jelezheti, hogy tmogatja az MSI-t. Ha a Host/PCI hd is tmogatja, akkor lehetv
vlik ennek a mdnak a hasznlata is. Ebben az esetben a perifrinak kiosztanak (legalbb) kt szmot: kap
egy specilis memriacmet, s annyi specilis azonost szmot, ahnyfle megszaktst ki szeretne vltani. A
perifria gy tudja kivltani a megszaktst, hogy erre a szmra kiosztott specilis memriacmre vgrehajt
egy egyszer memria rs tranzakcit, melynek sorn a megszaktsnak megfelel azonost szmot rja erre a
cmre. Ezt a cmet a Host/PCI hd ismeri fel sajtjnak, gy lesz a partner azokban a memriatranzakcikban,
melyek ezt a kiosztott specilis cmet clozzk meg. Ha erre a cmre akar rni valamelyik perifria, elveszi tle az
ide rt azonost szmot, s a belltsainak megfelelen kivlt egy megszaktst a processzor fel. Azt, hogy a
perifrik klnbz megszaktsait hogyan kpezi le a processzor ltal elklnthet hardver megszaktsokra,
azt a szabvny nem rgzti, ez megvalstsfgg.
69
5.2.6. Konfigurls
Minden PCI perifria rendelkezik 64 darab 32 bites kongurcis regiszterrel, melyben a hozz ktd kongurcis belltsokat trolja. A kongurcis regiszterek tartalmnak kiolvassra, illetve megvltoztatsra
minden PCI rendszer rendelkezik 2 specilis memria vagy I/O cmmel. A kongurlst vgz szoftver (BIOS ill.
opercis rendszer) az egyik specilis cmre berja az elrni kvnt PCI perifria azonostjt, s az elrni kvnt
kongurcis regiszter sorszmt, majd ezutn a msik specilis cmrl ki lehet olvasni a kijellt kongurcis
regiszter tartalmt, illetve az ide rt tartalom a kongurcis regiszterbe rdik.
A PC esetn a perifria ill. a kongurcis regiszter kijellse a CF8h I/O cmre rt 32 bites adattal lehetsges.
Az 5.4. brn lthat a 32 bit felosztsa: egy rsze kijelli, hogy hnyas busz, egy msik rsze, hogy ezen a buszon
hnyadik eszkz, egy tovbbi rsze, hogy ezen az eszkzn hnyadik function, vgl, hogy ennek hnyadik
kongurcis regiszterre vagyunk kvncsiak. Teht ezzel a specilis cmzsi mddal lehet kijellni az elrni
kvnt kongurcis regisztert, melynek tartalmt a CFCh cmre rt 32 bites adattal lehet megvltoztatni, illetve
errl a cmrl val 32 bites olvasssal kiolvasni.
31 30...24
1 Fenntartott
23...16
Busz szm
15...11
10...8
7...2
1...0
70
A PCI perifrik kongurlst a BIOS s/vagy az opercis rendszer vgzi el a rendszer indulsakor. A
kongurl szoftver tipikusan lekrdezi az sszes lehetsges PCI perifrit (a 4. brn lthat cmzssel), kiolvassa
a VendorID s DeviceID mezket, ami alapjn be tudja azonostani az eszkzt, kiosztja az ablakokat, s az eszkz
meghajtprogramjra (device driver) bzza a tovbbi eszkzspecikus kongurci vgrehajtst.
71
72
CPU
FSB
GFX
Root
Complex
SDRAM
PCI Express
csatlakozk
PCI
csatlakozk
Dli hd
PCI busz
Ethernet
SCSI
PCIe x1
PCIe x16
PCIe x32
PCIe 1.0
250 MB/s
4 GB/s
8 GB/s
PCIe 2.0
500 MB/s
8 GB/s
16 GB/s
PCIe 3.0
1000 MB/s
16 GB/s
32 GB/s
PCIe 4.0
2000 MB/s
32 GB/s
64 GB/s
CPU
FSB
SDRAM
Kapcsol
GFX
Root
Complex
Kapcsol
PCI
csatlakozk
Dli hd
PCI busz
Ethernet
SCSI
73
kapcsold feladatokat (vagy, ha egy kapcsolrl van sz, tovbbtja egy msik csompont fel).
Amikor a perifria, vagy a Root Complex egy tranzakcit kezdemnyez, az hrom rtegen megy keresztl,
mire zikailag a soros rprra kerl. Ezek a rtegek ms s ms clbl klnfle jrulkos informcikat fznek a
tranzakci lershoz. A hrom rteg a kvetkez:
1. Tranzakcis rteg
2. Adatkapcsolati rteg
3. Fizikai rteg
A tranzakci tjt a rtegek s az eszkzk kztt az 5.8. brn lthatjuk.
Kezdemnyez eszkz
Megcmzett eszkz
Tranzakci
Tranzakci
Tranzakcis rteg
Tranzakcis rteg
Adatkapcsolati rteg
Adatkapcsolati rteg
Fizikai rteg
Fizikai rteg
Csomag
74
2 byte
3-4 x4 byte
0...1024 x4 byte
4 byte
4 byte 1 byte
Kezd
Sorszm
Fejlc
Rakomny
CRC
CRC
Zr
Tranzakcis rteg
Adatkapcsolati rteg
Fizikai rteg
5.3.3. Megszaktskezels
A PCI Express megszaktskezelse a processzor s a programoz szemszgbl teljesen kompatibilis a PCI-jal.
Mint lttuk, a PCI-ban ktflekppen lehetett megszaktst krni:
A 4 megszakts jelzsre szolgl vezetk egyiknek alacsonyra hzsval
zenettel jelzett megszakts (Message Signaled Interrupt, MSI) segtsgvel
A PCI Expressben az zenettel jelzett megszakts (MSI) teljesen ugyangy mkdik, mint a PCI-ban. A
PCI Expressben azonban nincs meg a megszakts jelzsre szolgl 4 vezetk. A problmt jabb zenetek
bevezetsvel oldottk meg: a perifria olyan zenetet kldhet a Root Complexben mkd megszaktsvezrlnek,
hogy az most tekintse 0-ba hzottnak az egyik (amgy nem ltez) interrupt lbt, majd kisvrtatva egy jabb
zenettel jelzi, hogy most vegye gy, hogy ismt 1-be emelte a jelet. Az zenetek alapjn a Root Complex lejtssza
a PCI-nl mr ltott eljrst a megszakts kezelsre.
5.3.4. Konfigurci
A PCIe eszkzk nem 64, hanem 1024 kongurcis regiszterrel rendelkeznek, melybl az els 64 kompatibilitsi
okokbl megegyezik a PCI-ban rgztettekkel. Ugyancsak kompatibilitsi okokbl, a PCI-nl ltott cmzs s
regiszter kiolvassi/rsi mechanizmus a PCIe esetben is mkdik. A 64-en felli kongurcis regiszterek
elrshez azonban kicsit msfle, 64 bites cmzst kell alkalmazni (nem rszletezzk).
75
76
CPU
FSB
GFX
szaki hd
SDRAM
AUDIO
IDE
Dli hd
PCI
USB Host
Controller
Root Hub
USB Eszkz
USB Eszkz
USB Hub
USB Eszkz
USB Eszkz
77
kamera, stb. Szmukra vezettk be az izokron adattviteli mdot, melynek jellemzi a kvetkezk:
A perifria minden keretben garantltan kap lehetsget adattvitelre (tranzakcira), teht soha nem
fordulhat el, hogy a tbbi perifria tranzakcii kiszortjk egy keretbl.
Az izokron adattviteli mdot folytat perifrik tranzakciira a rendszer nem garantlja a hibamentessget.
rthet mdon felesleges pl. egy USB hangszr esetn a hibsan tvitt adat jrakldsvel bbeldni,
hiszen a sikeres jrakldsre az adat mr aktualitst vesztheti (a hangszrnak mr korbban ki kellett
volna jtszania), mikzben a meghibsodott adat a hangminsgben csak alig szrevehet romlst okoz.
Az izokron tranzakcik maximlisan 1023 bjt hasznos adatot szllthatnak, a hozz kapcsold jrulkos
adatok (pl. fejlc) mrete 9 bjt. Izokron tranzakcit csak az FS perifrik vgezhetnek.
A bulk adattviteli md. Szmos perifria szmra nem lnyeges a kis adattviteli ksleltets, annl inkbb
fontos a hibamentes tvitel. Ide tartozik pl. az USB printer, szkenner, pendrive, stb. Ezek a perifrik kpesek
tolerlni, hogy idnknt kimaradnak 1-1 keretbl, a felhasznl trelmetlensgn kvl ez semmilyen gondot nem
okoz. Erre a clra vezettk be a bulk adattviteli mdot. Jellemzi:
A bulk tranzakcik ksleltetsre nincs garancia.
A bulk tranzakcik hibamentes tvitele rdekben az USB minden hibadetektl s -javt eszkzt beveti.
A bulk tranzakcikban az tvitt adat mrete 8, 16, 32 vagy 64 bjt lehet, a hozz kapcsold jrulkos adatok
ehhez mg 13 bjtot tesznek hozz. Bulk tranzakcit csak az FS perifrik vgezhetnek.
A control adattviteli md. A perifrik kongurlst, mkdst befolysol parancsokat a control tranzakcik segtsgvel lehet hozzjuk eljuttatni. A control tranzakcik szabvnyos, vagy egyedi (gyrtspecikus)
parancsokat is szllthatnak. Tulajdonsgai:
Ha vannak tvitelre vr control tranzakcik, akkor a rendszer a soron kvetkez keret mretnek 10%-a
erejig helyet szort nekik.
Garantlt a hibamentes tvitel.
A control tranzakcikat az LS s az FS eszkzk is tmogatjk. Az adatmret LS esetben legfeljebb 8, FS
esetben legfeljebb 64 bjt lehet, a hozz kapcsold jrulkos adatok mrete LS esetben 63, FS esetben pedig
45 bjt.
Az interrupt adattviteli md. Mivel az USB-ben a root hub az egyetlen master, a perifria nem kezdemnyezhet adattvitelt, meglep mdon mg megszaktskrst sem. Az USB-ben azt, hogy a perifrinak van-e
kzlendje, periodikus lekrdezsekkel lehet megllaptani. Erre szolgl az interrupt tranzakci. Amikor a perifrit csatlakoztatjk, annak kiolvashat eszkzleribl (device descriptor) meg lehet llaptani, hogy milyen srn
(hny keretenknt, vagyis hny ms-onknt) ignyel lekrdezst. Interrupt tviteli mdot hasznlnak pl. az USB
billentyzetek s egerek. Fbb jellemzi:
Az interrupt tranzakcik mindig beviteli irnyultsgak (a perifra kld adatot a root hub fel).
A lekrdezsi peridus 1 s 255 keretid kztt llthat.
Garantlt a hibamentes tvitel. Ha egy tranzakci hibsnak bizonyul (az ellenrzsszeg alapjn), a
kvetkez keretben megtrtnik az jraklds.
Az interrupt tranzakcikat az LS s az FS eszkzk egyarnt tmogatjk. Az adatmret LS esetben legfeljebb
8, FS esetben legfeljebb 64 bjt lehet, a hozz kapcsold jrulkos adatok mrete LS esetben 19, FS esetben
pedig 13 bjt.
Amikor a keretek tranzakcikkal val feltltse zajlik (5.11. bra), a periodikus tranzakciknak, vagyis az
izokron s az interrupt tviteli mdhoz tartoz tranzakciknak van elsbbsge. Hogy a tbbi perifria is letben
maradjon, a periodikus tranzakcik nem foglalhatnak tbbet a keret 90%-nl. Ha egy jabb perifria csatlakozik
a buszra, s periodikus tvteli mdot kr olyan svszlessggel, ami mr nem elgthet ki, akkor nem lphet
be a rendszerbe. A keret fennmarad 10%-n osztoznak a control s a bulk tranzakcik, de ahogy mr fentebb
emltettk, a control tranzakcik a keret 10%-t garantltan megkapjk. gy legrosszabb esetben, amikor sok a
periodikus s a control tranzakci, az is elfordul, hogy a keret egyetlen bulk tranzakcit sem tud elvinni.
78
SOF
Keyboard
Mouse
Hangszr
Bulk tranzakci
SOF: Start Of Frame
Keret (1ms)
79
Mikrofon driver
Printer driver
USB Driver
Tranzakci A/1
Tranzakci A/2
Tranzakci A/3
Tranzakci B/1
Tranzakci B/2
Tranzakci B/3
2. Keret
Tranzakci B/1
Tranzakci A/2
Tranzakci B/2
USB Perifrik
80
3 2
4 3
Type A
Type B
Szerep
Tp (+5V)
Adat
Adat+
Fld
81
Az izokron tranzakcik. Az izokron tranzakcikban tvihet maximlis adatmennyisget 1023-rl 1024 bjtra
emeltk. Ennl nagyobb vltozs is van: mg az USB 1.1-ben az izokron tranzakci azt jelentette, hogy minden
keretben trtnik adattvitel, az USB 2.0 mikrkeretenknt egy helyett maximum hrom izokron tranzakcit
enged meg egy perifria egy izokron adatkapcsolatra vonatkozan.
A bulk tranzakcik. A bulk tvitel tranzakcinknti adatmennyisge 512 bjt lett (xen). E mellett a perifria
fel irnyul tranzakcikhoz egy j forgalomszablyozsi lehetsget is bevezettek. Az USB 1.1 egyik problmja
az volt, hogy a host nem tudott megbizonyosodni afell, hogy a perifria kszen ll-e az adat fogadsra. Lekldte
az adatot, s csak a negatv nyugtbl tudta levonni a kvetkeztetst, hogy nem kellett volna megtennie. Ez
termszetesen nagyon gazdasgtalan megolds, hiszen a feleslegesen lekldtt adat feleslegesen foglalta a keret
egy rszt, amit esetleg hasznosabb tranzakcikkal lehetett volna kitlteni. Az USB 2.0-ban bevezettk a PING
tranzakcit, amivel a host megkrdezheti a perifrit, hogy mehet-e az adat. Szintn jdonsg, hogy a tnyleges
adatok fogadsa utn a perifria nem csak pozitv/negatv nyugtt adhat (sikeres/sikertelen vtel), hanem azt is
jelezheti, hogy sikeres volt a vtel, de most egy kis idt kr a kvetkez adag kldsig.
A control tranzakcik. A control tranzakcik adatmennyisgt 64 bjtban rgztettk (se tbb, se kevesebb
nem lehet), s lehetv tettk az elbb megismert PING megolds alkalmazst is.
Az interrupt tranzakcik. Az interrupt tranzakcikban szllthat adatmennyisg LS esetben legfeljebb
8, FS esetben legfeljebb 64 volt, ezt a HS zemmdban drasztikusan, legfeljebb 1024-re emeltk. Ahogy az
izokron tranzakciknl is lttuk, az interrupt adattviteli mdban is 3-ra ntt az egy mikrkeretben elhelyezhet
tranzakcik szma (perifrinknt s adatkapcsolatonknt).
Kis- s teljes sebessg tranzakcik
Mivel megvltozott a keretid s a bitsebessg, az LS s FS eszkzk nem tudnak kzvetlenl rszt venni az USB
2.0 adatforgalmban. A hubok feladata, hogy a portra csatlakoz LS s FS eszkzk rszre a kompatibilitst
biztostsk, vagyis hogy azt a ltszatot keltsk, hogy azok egy USB 1.1 rendszer rszt kpezik.
Nagy vonalakban ez a kvetkezkppen zajlik: a root hub nagy sebessggel villmgyorsan lekldi az adatokat
a hubnak, amire a lass eszkz csatlakozik. Ezutn a hub szp lassan LS vagy FS sebessggel lejtssza az adatcsert
a perifrival, mikzben a busz tbbi rszn nagyban zajlik tovbb a gyors kommunikci. Mikor a root hub gy
gondolja, hogy a lass adattvitel mr befejezdhetett, rkrdez a hubnl a vgeredmnyre. Ezt hvjk osztott
tranzakcinak (SPLIT tranzaction). Azrt osztott, mert a tranzakci nem idben folytonosan zajlik elejtl a
vgig, mint ahogy eddig megszokhattuk: cmzs adatforgalom nyugta mdjra, hanem kt darabban: a lass
tranzakcit meg kell indtani (ezt egy SSPLIT zenet vgzi), majd ksbb, miutn sok egyb HS tranzakci is
lezajlott a buszon, vissza kell trni r, s le kell zrni (CSPLIT zenet). Ha az adatforgalom a perifria fel irnyul,
akkor az SSPLIT vgzi a cmzst, s tartalmazza a lekldend adatot is, mg a CSPLIT csak a nyugtt kri le
(sikeres/sikertelen volt-e a klds izokron tranzakcinl, mint tudjuk, nincs nyugta). Ha az adatot a root hub
kri a perifritl, akkor az SSPLIT csak a cmzst s a krst tartalmazza, a perifria ltal kldtt adat a CSPLIT
zenetben kerl vissza a root hubhoz (5.14. bra). Fontos, hogy mint minden tranzakcit, az SSPLIT s CSPLIT
tranzakcit is csak a root hub kezdemnyezheti. Amg a root hub a perifria hubjtl el nem kri a CSPLIT-tel a
lass tranzakci eredmnyt, addig azt a hubnak a sajt memrijban trolnia kell. Az USB 2.0-ban a hubok
feladata teht jval sszetettebb, mint az USB 1.1-ben volt.
Az izokron tranzakcik esetn ennl mg egy kicsit rnyaltabb a kp. Az izokron adattviteli md, mint lttuk,
egyenletes, lland rtj adattvitelt valst meg. Ennek a loznak a jegyben az FS izokron tranzakcikat
feldarabolva, tbb rszletben viszi t az USB a nagy sebessg szakaszon (lsd 5.15. bra). Ezzel a busz terhelse
is egyenletesebb vlik, a HS tranzakcik ell gy minden mikrkeretben a lehet legkevesebb helyet viszi el. Az
brn az is lthat, hogy a perifria fel kldtt adatot nem kell nyugtzni, ennek megfelelen CSPLIT tranzakci
sem szksges.
j csatlakoz tpusok
A norml mret csatlakozk mellett, a vkony mobil eszkzk ignyeinek eleget tve, az USB 2.0-ban megjelentek a kisebb mret, mini s micro csatlakozk is. A korbban olyan logikusnak tn A s B tpus
szerinti megklnbztets ezek esetben azonban nem ilyen egyszer. Ugyanis pl. egy mobil eszkz egyszer USB
82
HS
S: SSPLIT
C: CSPLIT
S: SSPLIT
C: CSPLIT
FS
FS
1.1-es keret (1 ms)
a) Perifria fel
b) Perifria fell
5.14. bra. Osztott bulk tranzakcik
S: SSPLIT
C: CSPLIT
S: SSPLIT
a) Perifria fel
b) Perifria fell
5.15. bra. Osztott izokron tranzakcik
perifriaknt viselkedik (pl. amikor a PC-hez ktjk), msszor pedig USB hostknt (pl. amikor billentyzetet, pen
drive-ot, vagy USB-s GPS-t ktnk r). Pusztn emiatt kt USB aljzat felszerelse a mobil eszkzre helypazarls
lenne, ezt van olyan aljzat, amibe a Micro A s a Micro B csatlakoz is belefr. Ebbe az aljzatba egy A tpus
csatlakozt dugva a kszlk hostknt, B tpus csatlakozt dugva pedig perifriaknt viselkedik. A szerepek
tisztzsa miatt ehhez szksg van mg egy tskre a csatlakozban. Az j csatlakozkat s a tskk kiosztst
az 5.16. brn lthatjuk.
5 43 2 1
5 4321
Mini-A
Mini-B
12345
12345
Micro-A
Micro-B
Tske
Szerep
Tp (+5V)
Adat-
Adat+
Fld
83
84
5 4 3 2 1
85
Lb
Szerep
Tp (+5V)
Szerep
Adat-
Tp (+5V)
Adat+
Adat-
Fld
Adat+
SSRX-
Fld
SSRX+
SSRX-
Fld
SSRX+
SSTX-
Fld
SSTX+
SSTX-
10
DPWR
SSTX+
11
DGND
Lb
a) A tpus csatlakozk
b) B tpus csatlakozk
86
6. fejezet
Httrtrak
Vannak perifrik, melyek ma mr minden szmtgp rszt kpezik. Kzlk a httrtr a legfontosabb,
rszben, mert teljestmnye az egsz rendszer teljestmnyre kihat, rszben pedig azrt, mert fontos szerepet
jtszik a virtulis trkezelsben, mellyel hamarosan kzelebbrl is megismerkednk (lsd ksbb). Ebben a
fejezetben a kt legelterjedtebb httrtr technolgit, a mgneses adattrolson s forg lemezen alapul
merevlemezeket (Hard Disk Drive, HDD), valamint a flvezet-alap SSD-ket (Solid State Drive) mutatjuk be.
Elbbiek nagy kapacitsuk s olcs ellltsi kltsgk, utbbiak pedig kis mretk s nagy sebessgk miatt
nyertek teret a szmtstechnika klnbz szegmenseiben.
Az azta eltelt vtizedekben a merevlemezek kapacitsa, sebessge s megbzhatsga ntt, ellltsi kltsge
pedig cskkent. A miniatrizls 1999-re elrte azt a szintet, hogy 1 col mret, 170 MB kapacits, Compact
Flash adapterrel rendelkez mini-merevlemezek gyrtsa is lehetv vlt, szintn az IBM-nek ksznheten (6.2.
bra, ezt a formtumot 8 GB kapacitssal 2006-ig forgalmazzk, amikor is a flvezet alap trolk kiszortottk a
piacrl).
88
6. FEJEZET. HTTRTRAK
annyi, hogy elbbi esetben a fellet fnyvisszaver tulajdonsga, utbbi esetben pedig egy ferromgneses anyag
mgneses mezjnek irnya trolja az adatot.
A forglemezes adattrolk rszei:
a kr alak lemez, ami az adatokat trolja (vagy csak az egyik, vagy mindkt oldaln),
valamint a fej, ami a hordozrl leolvasott mechanikai, optikai vagy mgneses jelet elektromos jell alaktja.
A lemezen egy adat helyt kt paramter rja le: a kzpponttl mrt (radilis) tvolsga, ami a lemezen
egy krt hatroz meg, valamit egy x referenciaponthoz kpesti szge, ami az adat krn belli pozcijt
adja meg. Ahhoz, hogy egy lemezen trolt adaton mveleteket vgezznk, a fejnek a lemez adott pontja felett
kell lennie. Ezt ktflekppen lehet elrni: a fej mozgatsval, illetve a lemez mozgatsval. A forglemezes
adattrolk mindkettt mozgatjk, a fejet a megfelel radilis pozciba toljk (ezt hvjk seek-nek), majd a lemezt
megforgatjk, hogy a keresett adat a fej al kerljn. A fej csak akkor mozog, amikor szksges, viszont a lemezt
a gyakorlatban folyamatosan forgatni szoktk, hiszen a lemezek slya viszonylagosan nagy, sok idt s energit
emsztene fel a rendszeres felprgets.
A kapacits nvelse rdekben tbb lemezt is egyms fl lehet tenni, illetve a lemezek mindkt oldalt lehet
adathordozknt hasznlni. Ez az adatok helynek azonostsa szempontjbl a radilis (r) s a szg () mellett
egy harmadik dimenzit (z) jelent (6.3. bra). Cserlhet adathordozknl (mint pl. a CD, vagy a megboldogult
oppy lemez) a tbblemezes megolds nem terjedt el.
89
Ezt a viselkedst gy tudjuk adattrols cljra kihasznlni, hogy a fej segtsgvel a lemez egy kis rsze felett
loklisan mgneses teret hozunk ltre, ami a fej alatt a lemezt tmgnesezi. Ezt a folyamatot a 6.5. bra szemllteti.
A fej elszr az els adattrol szakasz fl mozog (pontosabban a lemez forog be al), s azt tmgnesezi. A
kvetkez lpsben a fej a kvetkez szakasz fl kerl, ahol ellenttes mgneses tr induklsval ellenttes
irnyba mgnesezi a lemezt. A fej szakaszrl szakaszra haladva kialaktja a kvnt mgneses mintzatot a lemezen.
Ez a mintzat az r fej eltvoltsa utn is megmarad. (A valsgban persze nincsenek ilyen szakaszok, a lemez
egy folytonos ferromgneses anyaggal van bevonva.) Megjegyezzk, hogy a nagyobb adatsrsg rdekben kezd
elterjedni a vzszintes mgneses irnyok hasznlata helyett a fggleges adattrols (perpendicular recording),
de mi az egyszersg kedvrt a tovbbiakban is a vzszintes megoldson keresztl mutatjuk be a merevlemez
mkdst.
90
6. FEJEZET. HTTRTRAK
91
rnykols
Induktv rfej
GMR olvasfej
B
B
6.9. bra. GMR olvas fej induktv r fejjel (rajz: Michael Xu, Hitachi)
92
6. FEJEZET. HTTRTRAK
szabvny szektormrete, de az SCSI merevlemezek is legtbbszr ezt a mretet hasznljk. Mint ltni fogjuk, a x
mret szektorokkal a merevlemeznek knnyebb bnni, de semmi kze nincs a trolt adatok mrethez, a fjlok
szektorokba rendezst az opercis rendszernek kell megoldania.
b) Spirlis elrendezs
93
Az egyms feletti adathordoz rtegek svjai alkotjk a cilindereket (cylinder). Az egy cilinderen fekv
szektorok radilis tvolsga (r) azonos, s z koordintkban klnbzhetnek. A cilindereket a bevett
gyakorlat szerint kvlrl befele szmozzuk, a 0. cilinder az els, felhasznli adatoknak sznt cilinder. A
0. cilinder eltt (a perem fel) vannak az gynevezett negatv cilinderek, melyeken a merevlemez a sajt
adatait, adminisztrcijt trolja.
Azt, hogy egy szektor melyik adathordoz rtegen helyezkedik el, a hozz tartoz fej (head) sorszmval
adjk meg.
A merevlemezek teht a szektorok helyt CHS (cylinder-head-sector) koordintkkal azonostjk. A C s H
koordinta megadja, hogy az adott szektor melyik cilinderen van, s a cilinderen bell melyik fejhez tartozik gy
a C s a H egytt egy svot azonost. Vgl az S koordinta hatrozza meg, hogy a svon bell hnyadik
szektorrl van sz.
A szektorokra jellemzen msknt hivatkozik a merevlemez, s a merevlemez kls felhasznlja (az opercis
rendszer). A merevlemez a szektorokat a zikai elhelyezkedsknek megfelel CHS cmzssel azonostja. Rgebbi
rendszerekben az opercis rendszer is ugyanezzel a CHS cmzssel azonostotta a kirni ill. beolvasni kvnt
szektorokat a merevlemezekhez intzett krseiben. Ez azonban tbb problmt is felvetett:
A merevlemez nem tudja a klvilg fel eltakarni a szektorok meghibsodsait. Ha egy szektor meghibsodik,
arrl az opercis rendszernek is tudnia kell, hogy azt a CHS cmet a jvben mr ne hasznlja tbbet.
Egy praktikus problma: az ATA szabvnyban a CHS cmzsre rendelkezsre ll bitek szma tl kicsi.
A cilinderek azonostsra 15 bit ll rendelkezsre (max. rtke 16383), a fejek szma maximum 16 lehet
(ma mr nem is nagyon hasznlnak ilyen sok fejet), s maximum 63 szektor lehet egy svon. Ilyen mdon
legfeljebb 8.4 GB-os merevlemezeket lehet megcmezni.
Ez a kt tnyez vezetett oda, hogy a merevlemezek bevezettk a logikai cmzst (LBA, Logical Block Address).
Az LBA nem jelent mst, mint hogy a szektorokat egyetlen szmmal, a sorszmukkal azonostjk. Magyarn
az opercis rendszer csak annyit mond a merevlemeznek, hogy hnyadik szektort szeretn rni/olvasni, azzal
nem kell foglalkoznia, hogy az a merevlemezen hol helyezkedik el. A merevlemez persze ezt a szektorsorszmot
lekpzi valahogy CHS koordintkra, de hogy hogyan teszi, az az dolga. Ezltal a merevlemez egy fekete doboz
lett, az opercis rendszernek nem kell tbb ismernie a pontos felptst. Ha hibs szektor keletkezik, azt a
merevlemez kifel el tudja rejteni, tudni fogja, hogy oda tbb nem tehet adatot, de ebbl kifel semmi sem ltszik.
A logikai cmek lekpzse zikai cmekre tbbflekppen is trtnhet. Kt lehetsges megoldst mutat be
a 6.12. bra. A cilinder stratgia szerint az egyms utni LBA cmek egyazon cilinder svjaira kerlnek, majd ha
a cilinder megtelt, akkor a merevlemez tvlt a kvetkez cilinderre. A szerpentin stratgia ezzel szemben az
egyms utni LBA cmeket egy adathordoz rtegen igyekszik elhelyezni.
a) Cilinder stratgia
b) Szerpentin stratgia
94
6. FEJEZET. HTTRTRAK
a) ZBR nlkl
b) ZBR-rel
6.13. bra. Szektorok a lemezen
kerleti sebessg a lemez peremn sokkal nagyobb, mint a forgstengely kzelben. gy az adatsrsg a lemez belsejben sokkal nagyobb lesz, mint a peremn. A nagyobb trolsi kapacits rdekben j lenne a lemez
peremn is ugyanolyan srn trolni az adatokat, mint a belsejben.
Ha az adatsrsget rgztjk (hogy egyforma hosszak legyenek a szektorok az adathordozn), akkor a
perem fel haladva minden svban egyre tbb szektor lesz. Ahogy a perem fel haladunk, egyre gyorsabban kell a
fejnek leolvasnia az adatokat, hiszen a sv krsebessge egyre n, a lemez egyre gyorsabban forog ki a szektorral
a htn a fej all. Ez nmagban mg nem lenne gond, de az mr annl inkbb, hogy az elektroniknak minden
egyes svvltsnl a tbb szzezer sv adataibl kell kikeresnie, hogy az adott svban pp milyen gyorsan kell
leolvasni az adatokat. Az arany kzpt a zna rendszer adattrols (ZBR, Zoned-Bit Recording, a 6.13. bra b)
rsze). A lemezen a svokat znkhoz rendelik (egy modern merevlemez kb. 50 znt hasznl). Egy znn bell
minden sv azonos szm szektort tartalmaz, teht lland a szektorok olvassi/rsi ideje, gy csak znavltskor
kell adatsebessget vltani. Persze van nmi pazarls a trolsi kapacitst illeten, hiszen a znk bels felben
nagyobb az adatsrsg, mint a peremn, de megfelelen sok znval ez a krba veszett kapacits elfogadhat
mrtkre szorthat le.
1200
Szektorok szma
1100
1000
900
800
700
600
500
95
a teljes lemez terletn llandra rgztik, s a lemez forgsi sebessgvel jtszanak. Ezt a technikt CLV-nek
(Constant Linear Velocity) hvjk. Az lland krsebessg elrshez a kls peremen 2.5 lassabban forog a
lemez, mint a belsejben. Az optikai meghajtk eredeti cljnak ismeretben ez rthet vlaszts, hiszen az
lland bitrtval kdolt zene s a mozgkp lejtszsa lland adatsebessg adathordozt ignyel. A fejlettebb,
rsra is kpes optikai meghajtk a ZBR-hez hasonl zns megoldst alkalmaznak, a Z-CLV-t. A znn bell
CLV-vel biztostjk az lland adatsebessget, de ez az adatsebessg znrl znra vltozik. Pldul egy 40-es
CD r a legbels znjban 24-os, a msodik znban 32-es, s csak a kls znban ri el a 40-es sebessget.
Szerv vezrls
A merevlemez egy mozg alkatrszeket tartalmaz berendezs, a lemez is, a fej is mozog. A nagy adatsrsg miatt
radsul a fejet nagyon pontosan kell pozicionlni. Egyrszt ennek a preczis fejmozgatsnak is megvannak a
maga hatrai (tetszleges pozicionlsi pontossgot nem lehet elrni), msrszt kls hatsok miatt is fellphetnek
apr elmozdulsok, vibrcik, stb. ami mind bizonytalansg forrst kpezi. Mindezek kvetkeztben mkds
kzben nem is nagyon ritkn fordul el, hogy a fej leszalad a svrl, vagy seek kzben flrepozicionl, esetleg
teljesen elveszti a fonalat s vaktban repl.
Azt a szablyozsi mechanizmust, ami a fej pontos pozicionlsrt felels, szerv vezrlsnek hvjuk. Feladatai:
Sv vltskor (seek) biztostja, hogy a fej pontosan a kvnt svot tallja meg.
Segt a sv kvetsben: folyamatos apr korrigl mozdulatokkal biztostja, hogy a fej mindvgig a svon
haladjon, ne fusson le rla.
Rgebben a szerv vezrlst szolgl adatokat s specilis mgneses mintkat egy sajt, dediklt adathordoz
felleten helyeztk el, ami felhasznli adatokat nem is tartalmazott. Ma mr olyan kevs lemez van egy
merevlemezben (1, 2, esetleg 3), hogy ez nagy pazarls lenne. Ezrt ezeket a kritikus fontossg szerv adatokat
a felhasznli adatokkal egytt troljk. Erre a clra minden adathordoz felleten egyenletes tvolsgonknt
krcikkeket jellnek ki (servo wedge, 6.15. bra), melyeken ktfle informcit helyeznek el (6.16):
svazonostt, melyet elolvasva a fej rgtn tisztba kerl a pontos pozcijval;
svtartst segt sakktbla szer mintzatot.
Ezeket az informcikat a gyrts sorn rjk a merevlemezre, s ksbb nem is mdosulnak, integritsuk
(srlsmentessgk) kritikus fontossg a merevlemez szmra.
96
6. FEJEZET. HTTRTRAK
akkor a fej a sv egyik felhez kzelebb kerlt, ezrt pozcija korrekcira szorul. Annak ismeretben, hogy a
fej pros vagy pratlan svon halad-e, a szksges korrekci irnya meghatrozhat abbl, melyik mintzatot
rzkelte ersebben.
A szerv terleten tallhat informcik kpt a 6.16. bra szemllteti. Ismt szksg van rsre, hogy egy tl
ksn kikapcsolt rfej ne tudja a szerv informcit krostani. Az eltag s a szerv kezddik mezk szerepe
megegyezik a szektorok felptsnl ltott eltag s adat kezddik mezkvel.
97
2
1
98
6. FEJEZET. HTTRTRAK
Parancsfeldolgozsi ksleltets:
1 ms
11 ms
13 ms
Forgsi sebessg:
Szektorok mrete:
Maximlis adattviteli sebessg:
Seek id
Forgsi ksleltets
Adattvitel a hordozrl
Adattvitel az illesztfelleten
= 11.111 ms/fordulat.
Ha az adattviteli krsnk egy vletlen idpontban rkezik, a lemez brhol lehet, a forgsi ksleltets 0 s
11.11111 ms kztt egyenletes eloszls, vrhat rtke 5.55555 ms.
Adat leolvassa a hordozrl: Miutn a fej a megfelel szektorra pozicionlt, a leolvass 11.11111/1104 =
0.01006 ms ideig tart, hiszen ennyi id alatt forog a lemez egy szektornyit.
Adat tvitele az illesztfelleten: Ki kell szmolnunk, hogy a 100 MB/s sebessg interfszen mennyi ideig
tart 512 bjt tvitele. Ebbl 512/(100 1024 1024) = 0.00488 ms addik.
A krs teljes kiszolglsi ideje: 1 + 11 + 5.55555 + 0.01006 + 0.00488 = 17.57 ms, melyben ltvnyosan dominl a
kt mechanikai jelleg ksleltets, a seek s a forgsi id. Ez a fejezet egyik slyponti mondanivalja.
Most nzzk meg, hogy alakul a kiszolglsi id, ha nem csak 1, hanem 100 egyms utni szektort szeretnnk
leolvasni. A parancsfeldolgozsi id, a seek s a forgsi ksleltets nyilvn ugyanannyi marad, hiszen ezekre a
mveletekre parancsonknt csak egyszer van szksg.
Adat leolvassa a hordozrl: most 100 szektort kell leolvasni 1 helyett, teht a leolvassi id az elbbi
100-szorosa, 1.006 ms.
Adat tvitele az illesztfelleten: az adattvitel mr az adatok leolvassa kzben megkezddhet, s akkor
fejezdik be, amikor az utols szektor leolvassa utn az is tovbbtsra kerl az illesztfelleten (lsd az
tlapolst a 6.18. brn). gy az tviteli id nem tlapolhat rsze tovbbra is egyenl az 1 szektorra szmolt
tviteli idvel, vagyis 0.00488 ms.
1
Azrt egy ilyen elavult tpust vettnk pldaknt, mert a gyri adatlapja mintaszer: minden fontos, s kevsb fontos, de rdekes
rszletet tartalmaz, ami nem mondhat el a modernebb merevlemezek adatlapjairl.
99
A 100 szektorra vonatkoz krs teljes kiszolglsi ideje: 1 + 11 + 5.55555 + 1.006 + 0.00488 = 18.57 ms, azaz
100-szoros adatmennyisg leolvasshoz mindssze 5.7%-kal tbb idre volt szksg! Ez a fejezet msik slyponti
mondanivalja.
Most mr nyilvnval, hogy sebessg szempontjbl a lehet legrosszabb, amit egy merevlemezzel meg lehet
tenni, az a kis mret fjlok vletlen elrse. Ahogy egyre nagyobb szekvencilis szektorsorozatra vonatkozik a
mvelet, gy amortizldik le a seek s forgsi id a teljes kiszolglsi idhz kpest.
tviteli sebessg
Ha az tviteli sebessget a diszken vletlenszeren elhelyezked, kis mennyisg adatok segtsgvel mrik,
akkor vletlen tviteli sebessgrl (random throughput), ha nagy, folytonosan elhelyezked adatmennyisggel
mrik, akkor folytonos tviteli sebessgrl (sequential throughput) beszlnk. Mindkt teljestmnyjellemz fontos,
hiszen mg a vletlen tviteli sebessgben jelen van, st, nagyon is dominl a seek id s a forgsi ksleltets,
addig a folytonos tviteli sebessgben ezek az sszetevk minimlis szerepet jtszanak.
Most szmtsuk ki a fenti pldn a 4 kB-os blokkmretre vonatkoz adattviteli sebessget! A 4 kB kis
blokkmretnek szmt, gy ez vletlen tviteli sebessg lesz. Egy 4 kB-os blokk 4096/512 = 8 szektorbl ll, melynek
kiszolglsi ideje a fenti rszeredmnyek felhasznlsval 1+11+5.55555+80.01006+0.00488 = 17.641ms. Nzzk
meg, hny 4 kB-os tvitel fr egy msodpercbe: 1000/17.641 = 56.67, teht a merevlemez vletlen adattviteli
sebessge 56.67 IOPS, adatmennyisggel egytt kifejezve pedig 56.67 4096 = 232120, azaz 0.22 MB/s. Akrmilyen
alacsonynak tnik, ez bizony nem egy kirvan lass merevlemez.
Ha a folytonos adattviteli sebessgre vagyunk kvncsiak, nagy mennyisg, pl 16 MB mret, folytonosan
elhelyezked adat tviteli idejbl kell kiindulnunk. A 16 MB sszesen 32768 szektorbl ll, gy a kiszolglsi
id 1 + 11 + 5.55555 + 32768 0.01006 + 0.00488 = 347.2ms. Ilyen kiszolglsi idkbl 1000/347.2 = 2.88 fr
egy msodpercbe, teht a folytonos tviteli sebessg 2.88 IOPS, az adatmennyisget is gyelembe vve pedig
2.88 16 = 46 MB/s.
100
6. FEJEZET. HTTRTRAK
Vannak elektronok
Nincsenek elektronok
Zr
Zr
Nyit
Zr
Gate fesz. = 0V
Nyit
Nyit
Vezrl gate
Drain
Elektronok
Vezrl
gate
Lebeg gate
Source
Lebeg
gate
Szigetel
oxid
Source
Drain
Flvezet szubsztrt
101
Vezrl gate
Vezrl
gate
0V
12V
Source
0V
6V
Lebeg gate
Source
Drain
Flvezet szubsztrt
Vlts 0-bl 1-be. Ezt a mveletet trlsnek hvjk. A vezrl gate-et le kell fldelni, a drain-t szabadon
lebegve hagyni, s a source elektrdra nagy feszltsget kell adni. Ekkor az alagteektusnak ksznheten az
elektronok a szigetelrtegen tlpve elhagyjk a lebeg gate-et (6.22. bra).
0V
Drain
Vezrl gate
Vezrl
gate
12V
0V
Source
12V
Lebeg gate
Source
Drain
Flvezet szubsztrt
102
6. FEJEZET. HTTRTRAK
BL1
BL2
WL0
WL1
WL2
SL
103
Ha az i. sor j. oszlopban trolt bitre vagyunk kvncsiak, akkor a WLk , k i vezetkekre 0V , mg a WLi
vezetkre kis feszltsget adunk. Ennek hatsra az i. sorban lv tranzisztorok kzl a logikai 1-et trolk zrni,
a logikai 0-t trolk pedig nyitni fognak (a tbbi sor tranzisztorai mind nyitva vannak). Teht a trolt bit rtkt
gy tudjuk megllaptani, hogy megnzzk, folyik-e ram a BLj s az SL kztt. Az i. sor j. oszlopban trolt bit
1-es, ha folyik ram, s 0-s, ha nem.
Annak semmi akadlya, hogy a NOR ash bitjeit egyesvel programozzuk (vagyis 1-bl 0-ba vltsuk), de
trlni csak az egsz trolmezt egyben lehet (egyb zikai okok mellett azrt is, mert az SL kzs).
A NAND flash memria
A NAND ash architektrt a Toshiba vezette be 1989-ben. A NAND ash-ben gy rendezik el a tranzisztorokat,
hogy egy oszlopban az egyms alatti tranzisztorok source s drain elektrdi egymsba rnek, ssze vannak
ktve (6.24). gy jval kevesebb a tranzisztorok kztti sszekttets, tbb hely marad a tnyleges adattrolst
vgz tranzisztoroknak, ezrt sokkal nagyobb adatsrsget lehet gy elrni.
BL0
BL1
BL2
WL0
WL1
WL2
SL
"Nagyobb"
feszltsg
BL0
0
BL1
1
BL2
0
"Kisebb"
feszltsg
X
"Nagyobb"
feszltsg
SL
104
6. FEJEZET. HTTRTRAK
integrlja a teljes trolkapacitst egyetlen trolmezbe, hanem kisebb, egymstl szeparlt trlsi egysgeket
blokkokat alakt ki.
sszehasonlts
Mint lttuk, a NAND s a NOR ash architektrk nemcsak abban klnbznek, hogy mshogy vannak sszektve
a tranzisztorok, hanem a megclzott felhasznlsi terlet is eltr, ezrt az sszehasonlts nem lesz teljesen
igazsgos (6.26. bra, [5]).
Kltsg/bit
Alacsony
Kszenlti
teljestmnyfelvtel Alacsony
Teljestmnyfelvtel
mkds kzben
Magas
Alacsony
Nehz
Knny
Kicsi
Nagy
Olvassi sebessg
Nagy
Trolsi kapacits
Nagy
rsi sebessg
NOR
NAND
105
50 nm
34 nm
25 nm
SLC
100.000
100.000
100.000
MLC
10.000
5.000
3.000
TLC
2.500
1.250
750
6.3. tblzat. Az SSD meghajtk ltal elviselt trlsi/programozsi ciklusok szma a gyrtstechnolgia s az egy
tranzisztor ltal trolt bitek fggvnyben
Hierarchia szint
Tipikus mret
1 lap:
512 byte 8 kB
1 blokk:
1 trolsk:
1024 blokk
1 szilciumlapka:
1 4 trolsk
1 tok:
1 4 szilciumlapka
6.4. tblzat. Tipikus mretek a NAND ash trol hierarchijnak egyes szintjein (2012-es adatok)
A fejlds irnya: 3D-NAND tltsfog flash tranzisztorokkal
A sklzhatsgot megnehezt kt problma mindegyikre van megolds, melyek ppen napjainkban vannak a
bolti megjelens kszbn.
A tranzisztorsrsg nvelsre a 3D-NAND technolgia, ill. a Samsung elnevezsben a V-NAND jtsa,
hogy a tranzisztorokat nem csak egy ktdimenzis rcsba rendezik, hanem egyms tetejre is rtegezik.
Az lettartam nvelsnek rdekben pedig a lebeg gate-es tranzisztorokat tltsfog tranzisztorokkal (CTF,
charge trap ash) vltjk le. A lebeg gate-es tranzisztorokban a tltst a vezet tulajdonsg lebeg gate
trolja. Ezt gy is felfoghatjuk, mintha az elektronokkal teli lebeg gate-ben egy vdr vz lenne, mely a sok
trlsi/programozsi ciklus miatt reged szigetel rteg egyre szaporod lyukain el tud szivrogni, gy a trolt
informci elvsz. A tltsfog tranzisztorban azonban az elektronokat egy szigetel rtegben kialaktott lyukak
troljk (gondojunk egy vizet trol szivacsra), ami a tltseket sokkal jobban a helykn tartja.
Az els j genercis SSD meghajtt a Samsung dobta piacra 2014-ben (Samsung SSD 850 Pro), mely 32 rteget
tartalmaz, s mr CTF tranzisztorokra pl. A Samsung lltsa szerint lettartama 10-szerese a hagyomnyos
MLC-s trsaiknl.
106
6. FEJEZET. HTTRTRAK
6.27. bra. Az Intel 8GB-os NAND ash lapkja (2 bites MLC, 8kB-os lapok, 256 lap/blokk, 1024 blokk/trolsk, 4
trolsk/lapka, www.intel.com/pressroom)
(mgneses jeleket) fellrja az j tartalommal. Erre az egyszer mveletre az SSD azonban nem kpes.
A technolgiai bevezetben mr lttuk, hogy az SSD csak trlt lapokra tud rni. Az SSD teht nem ismeri
a fellrs fogalmt. Ha megvltozik egy lap tartalma, akkor az SSD keres egy mg rintetlen (trlt) lapot, s
odarja a megvltozott tartalmat, mikzben a rgi lapot rvnytelennek jelli. A rgi lapra pedig, hiba kerlt
hasznlaton kvl, nem lehet rni egszen addig, amg a lapot tartalmaz teljes blokk (ami akr 2 MB is lehet!)
trlsre nem kerl.
Az SSD vezrl teht minden laphoz egy llapotot rendel, mely lehet
Hasznlt: a lap rvnyes adatokat tartalmaz;
rvnytelen: lap tartalma megvltozott, mshov kerlt, de attl mg ilyen lapra rni nem lehet, mivel
nincs trlve;
Trlt: a lapra a blokkjnak trlse ta nem rtak, azaz ez egy rsra ksz lap.
Laprs menedzsment
A gyrtk ugyan nem publikljk, hogy az SSD vezrljk pontosan hogyan is kezelik az rsi mveleteket, de
a tudomnyos szakirodalomban megjelent cikkek s az SSD szimultorok mind-mind ugyanazt a (vlheten a
gyakorlatban is alkalmazott) eljrst kvetik, gy ezzel rdemes megismerkedni.
Ebben az eljrsban a vezrl az SSD szabad blokkjai kzl mindig kivlaszt egyet specilis clra, ez az rsi
front (write frontier, [17]), mely a kivlaszts pillanatban csupa trlt, azaz rhat lapot tartalmaz. Az rsi
mveletek a kvetkezkppen zajlanak:
Minden rsi mvelet az rsi frontra vonatkozik. Ha rsi krs rkezik, az SSD mindig az rsi front soron
kvetkez lapjra helyezi az adatot. Ha fellrsrl van sz, akkor ezzel egy idben rvnytelenti a rgi
tartalmat trol lapot (mely valsznleg egy msik blokkon tallhat).
Ha az rsi front minden lapja megtelik, az SSD vezrl a trlt blokkok listjrl kivlaszt egyet, s az lesz
az j rsi front.
A 6.28. brn lthat pldn az SSD 8 blokkbl ll, melybl pillanatnyilag 3 trlt (a 2-es, 4-es s 5-s), s
az aktulis rsi front a 3-mas blokk. Minden blokk 4 lapbl ll, a zld a hasznlt, a narancs az rvnytelen, a
fehr a trlt lapokat jelli. Az adatokat tartalmaz lapokon a trolt LBA cmek szerepelnek (most nagyvonalan
tekintsnk el attl a nehzsgtl, hogy a szektormret s a lapmret nem egyenl). Vannak LBA cmek, melyek
tbbszr szerepelnek, ami mdostsra utal. Pl. a 8-as LBA cm eredetileg az 1-es blokkon volt eltrolva, de a
tartalmnak mdostsa utn ezt az SSD rvnytelentette, s az j tartalmat a 8-as blokkra helyezte. Egy jabb
mdosts utn a 8-as LBA cm tartalma a 7-es blokkra kerlt, s a zld sznbl lthat, hogy ez az aktulis vltozat.
Az brt kiindulsi pontnak tekintve tegyk fel, hogy az SSD-hez rsi krs rkezik a 8-as, a 12-es s az 1-es
LBA cmekre. A 8-as esetben rvnytelenteni kell a rgi vltozatot (7-es blokk 3-mas lapja), az j vltozat pedig
az rsi front soron kvetkez, vagyis a 3. lapjra kerl. A 12-es LBA cm eddig nem szerepelt az SSD-n, ezrt ezt
107
108
6. FEJEZET. HTTRTRAK
6.3. ILLESZTFELLETEK
109
szempontbl is hasznos lehet, hogy viszonylag nagy mennyisg trlt blokk mindig rendelkezsre ll:
gyorstja a szemtgyjtst, kivltja az elregedett blokkokat, stb. Msfell viszont mindez a hasznos
(felhasznl ltal lthat) trkapacits rovsra megy. Tipikus mrtke 6.25%, ami azt jelenti, hogy egy
128 GB-os meghajtbl 120 ltszik, egy 512-esbl 480, stb. Egyes gyrtk (pl. Samsung) lehetv teszik a
tlmretezs szoftveres belltst, vagy akr teljes kikapcsolst.
Vgl megemltnk nhny eljrst, melynek clja a teljestmny tovbbi nvelse. Ezek mr nem ltfontossg
funkcik, nlklk is mkdkpes az SSD, de egy modern vezrl ezeket mind alkalmazza.
Kops-kiegyenlts (Wear Leveling) Egy httrtr ritkn s gyakran vltoz tartalmat egyarnt trol. Gondoljunk csak arra, hogy az opercis rendszer rszei vagy a futtathat llomnyok az SSD-re rs utn
sokig nem fognak vltozni, mg pldul a bngsz cache egy nagyon vltozkony terlet, bngszs
kzben folyamatosan j tartalom kerl bele, rgi tartalom trldik ki. Ennek az a kvetkezmnye, hogy
az SSD-n a ritkn vltoz tartalmat trol blokkok nagyon lassan, a vltozkony tartalmat trol blokkok
pedig nagyon gyorsan regszenek, kopnak. Sokkal szerencssebb lenne, ha a kops a teljes trolsi kapacitsra egyenletes lenne, ekkor ugyanis a teljes kapacits a lehet legtovbb maradna hasznlhat, majd
egyszerre menne tnkre. Az SSD vezrl feladata, hogy a kopst egyenletess tegye. Ennek rdekben egy
tblzatot tart nyilvn, amiben trolja, hogy melyik blokk hny trlsen esett mr t. A kiegyenltett kops
elrse rdekben az rsi frontot clszer gy kivlasztani, hogy az minl kevsb kopott legyen (a nagyon
kopottakat kmlend). A szemtgyjt algoritmusnak is clszer nha a kevsb vltozkony blokkok
trlse, mg akkor is, ha csupa hasznlt lapot tartalmaznak, hogy a kops minl egyenletesebb legyen.
Adattmrts. Az SSD-re kerl adatok tmrtsvel (compression), kevesebb lap rsra lehet szksg.
Ha egy fjl kevesebb lapot foglal, az mind sebessg, mind lettartam szempontjbl kedvez. Van olyan
vezrl (pl. a SandForce), ami nemcsak hogy tmrt, de a duplikcit is elkerli. Egy rendkvl hatkony
(s persze titkos) algoritmussal meg tudja llaptani, hogy egy bizonyos tartalom szerepel-e mr az SSD-n,
vagy sem. Ha szerepel, akkor nem is kell mg egyszer eltrolni, ami megint csak gyorsabb vlaszidt
s hosszabb lettartamot eredmnyez. Az SSD vezrl ltal vgzett tmrts ugyanakkor a felhasznl
szmra lthatatlan, a meghirdetett trolsi kapacitsnl a hatkony tmrts ellenre sem lehet tbb
adatot trolni a meghajtn!
Tbb rsi krs bevrsa. (Write coalescence) Az rsi krseket sok SSD nem hajtja vgre azonnal, hanem
kicsit vr (egy bels memriban trolva az adatokat), htha rkezik mg 1-2 rsi krs, ami ugyanarra a
lapra vonatkozik. Szerencss esetben a tbb, azonos lapra vonatkoz rsi krst egyetlen ash programozsi
lpssel tudja trolni, ami az regeds szempontjbl kedvez.
Bels RAID szervezs. Mivel minden SSD-nek szembe kell nznie a blokkok elregedsvel, a hibadetektls
s a hibk megfelel kezelse megkerlhetetlen funkci. Az adatokat gyakran tbbszrzve troljk (ha
az egyik blokk elregedett, legyen biztonsgi tartalk). Az SSD-k a klvilg fel eltakarva ugyan, de bell
sokszor a HDD-k RAID szervezshez hasonl redundns szervezst hasznlnak a biztonsgos adattrols
rdekben.
6.3. Illesztfelletek
Az illesztfellet az a kommunikcis csatorna, melyen keresztl adattviteli krseket lehet intzni a meghajt
(pl. merevlemez, SSD) fel, s melyen keresztl a meghajt vlaszol azokra. Mint minden illesztfellet, az
adattrolk illesztfelletei is kt szinten specikljk a kommunikci mikntjt:
A zikai specikci adja meg a jeltvitel rszleteit: milyen legyen a kbel, milyenek legyenek a csatlakozk,
hogyan kell egy bitet tvinni, felfut vagy lefut lre trtnjenek-e az esemnyek, stb.
A protokoll specikci pedig lerja, hogy milyen prbeszd szksges az adattvitel lebonyoltshoz:
milyen parancsok vannak, milyen informcikat tartalmazzon egy adattviteli krs, milyen sorrendben
kell ezeket az informcikat eljuttatni a merevlemezhez, hogyan kell elvenni a merevlemeztl a krsre
adott vlaszt, stb.
A kommunikci rsztvevi a host vezrl (host controller), valamint a meghajtk (6.32. bra). A processzor a
host vezrlvel ll kapcsolatban, neki kldi el az adattviteli krst, amit a host vezrl az illesztfellet nyelvre
lefordtva tovbbt az rintett meghajt fel. A host vezrl pldul lehet a dli hd integrlt rsze, vagy egy
PCI/PCI Express perifria is.
110
6. FEJEZET. HTTRTRAK
Processzor
Host vezrl
Illesztfellet
1. Meghajt
N. Meghajt
6.3. ILLESZTFELLETEK
111
SATA illesztfellet
Ahogy lttuk, az ATA szabvnyban 80 eres, extra fldkbelekkel teletzdelt szalagkbel kellett a nagy sebessg
UDMA md hasznlathoz. Nyilvnvalv vlt, hogy a tl szles, rnykolatlan kbelen zajl prhuzamos
adattvitel a mg nagyobb sebessg elrsnek f gtja. Erre a kihvsra adott vlasz a soros ATA (Serial ATA,
SATA) megjelense (ezzel egyidejleg a rgi ATA-t tkereszteltk PATA-ra, prhuzamos ATA-ra).
A SATA illesztfellet ugyanazt az ATA protokollt hasznlja, mint a rgi PATA: a parancsok, azok paramterei,
az adattviteli mdok mind ugyanazok. Csak a jeltvitel zikai mikntje vltozott meg: a SATA sodort, rnykolt
rpron soros tvitellel dolgozik. Az eszkzk pont-pont sszekttetsben llnak a SATA vezrlvel.
A nagyobb sebessg adattvitelhez a mr meglv adattviteli mdokat jakkal egsztettk ki. A SATA els
vltozata 150 MB/s, a SATA-2 mr 300 MB/s, a SATA-3 pedig 600 MB/s maximlis adattviteli sebessget biztost.
A SATA-2 a nagyobb sebessg mellett egy msik fontos jdonsgot is hozott: a meghajtk a parancsokat
vrakozsi sorokban tudjk vrakoztatni (NCQ, Native Command Queueing). Ennek ksznheten nem kell mr
megvrni a kvetkez kiviteli/beviteli krssel az elz befejezst. A meghajt rgtn fogadni tudja a kvetkez
parancsot, akkor is, ha pp el van foglalva, ilyenkor beteszi a vrakozsi sorba. Radsul, ha a meghajtnak tbb
kiviteli/beviteli krs van a sorban, azokat szabadon, tetszleges sorrendben kiszolglhatja, pldul gy, hogy a
fejnek ppen tba es krseket veszi elre.
SCSI illesztfellet
Az SCSI az ATA-nl sokkal fejlettebb, sszetettebb szabvny. Egyrszt nagyobb funkcionalitst nyjt (kb. 60
parancsot ismer), msrszt nagyobb hangslyt fektet a megbzhatsgra, s a hibkbl val felplsre, mint az
ATA. Ennek ksznheten SCSI interfsszel drgbb rendszerekben, szerverekben tallkozhatunk (pl. Amiga,
rgebbi Apple Macintosh s SUN szmtgpekben).
A SCSI valjban egy busz, melyre tbb meghajt, valamint a SCSI vezrl csatlakozik. Akr a PATA, a SCSI
is prhuzamos adattvitelt hasznl, 8 bites vagy 16 bites adategysgekkel. Elbbi esetben 50 eres, utbbi esetben
68 eres kbelre van szksg. A busz minden szerepljhez tartozik egy priorits (a vezrl a legnagyobb), s
nkivlaszt arbitrcival dl el, hogy ppen melyik kapja a busz vezrlsnek a jogt. A kiviteli/beviteli krsek
parancslerk (Command Descriptor Block, CDB) formjban utaznak a buszon. A CDB tartalmazza a parancsot,
s annak minden paramtert is.
Az SCSI adattviteli sebessge a kezdeti 5 MB/s-rl egszen 320 MB/s-ig ntt, ennl tbbet a prhuzamos
adattvitelbl nem hoztak ki. A SCSI interfszben a SATA-2-nl jval korbban jelent meg a parancsok sorba
lltsnak lehetsge (Command Queueing).
Soros SCSI illesztfellet
Az SCSI-ben is eljtt az a pont, amikor a prhuzamos interfsz megakadlyozta az adattviteli sebessg tovbbi
nvelst. Ekkor a SCSI is soros tvitelre vltott. Ez azonban a SATA bevezetse utn trtnt meg, ami szmos
elnnyel jrt. Ltva a SATA sikert, a soros SCSI (Serial Attached SCSI, SAS) gyakorlatilag tvette a SATA soros
jeltviteli interfszt, kbelekkel, csatlakozkkal egytt. A SAS teht SCSI parancsokat visz t SATA zikai
interfszen. A zikai kompatibilits lehetv tette, hogy a SAS trol rendszerekhez SATA meghajtkat is
lehessen csatlakoztatni. Ennek zikai akadlya nincs, hiszen ugyanazok a csatlakozk, viszont a SAS-t egy olyan
megoldssal is kiegsztettk, amivel ATA parancsokat lehet a SAS protokoll segtsgvel tovbbtani (SATA
Tunneling Protocol, STP).
Ezzel megvalsult az ATA s a SCSI parancsok mindkt irny tjrhatsga:
Az ATAPI szabvny lehetv teszi, hogy SATA illesztfelleten SCSI parancsokat kldjnk egy meghajtnak,
az STP szabvny pedig lehetv teszi, hogy ATA parancsokat kldjnk egy SAS trolrendszerbe kttt
SATA meghajtnak.
A SAS meghajtkat onnan ismerhetjk fel, hogy nem egy, hanem kt csatlakozval rendelkeznek, aminek
ksznheten kt kln vezrlre, esetleg kt kln szmtgpre lehet ket csatlakoztatni egyszerre. A ketts
bekts a hibatrst javtja, hiszen valamelyik fl kiesse esetn a msik fl tovbbra is elri a meghajt adatait.
Adattviteli sebessgben a SAS a 600 MB/s-mal jelenleg ugyanott tart, mint a SATA.
112
6. FEJEZET. HTTRTRAK
FC illesztfellet
Az FC (Fibre Channel) egy optikai jeltvitelen alapul, nagy sebessg adattviteli technolgia, gazdag funkcionalitssal. Az elbbiekkel ellenttben az FC csak egy httrtrak rszre kifejlesztett jeltviteli szabvny, magas
szint logikai protokollt, vagyis kiviteli/beviteli parancskszletet nem specikl. A gyakorlatban szinte kizrlag
az SCSI parancskszlett hasznljk az FC-n illesztett meghajtk.
Az optikai kbelnek ksznheten risi adattviteli sebessget lehet elrni (2011-ben 3200 MB/s), s nagy
tvolsgot lehet thidalni (akr 50 km-t is). A kltsgek lefaragsa rdekben ksbb rz vezetkek hasznlata is
lehetv vlt, persze kisebb adattviteli sebessg s tvolsg mellett.
Az FC trolrendszer tulajdonkppen nem ms, mint egy csomagkapcsolt hlzat, melynek csompontjai a
vezrl (Controller), a meghajtk (Drive), s a kztes kapcsolk (FC Switch, feladata a SCSI krsek tovbbtsa a
megfelel irnyba). Az SCSI krst egy csomag formjban adogatjk egymsnak a csompontok, mg clba nem
r.
7. fejezet
Szmpldk, feladatok a
perifriakezels tmakrben
7.1. Feladatok az ltalnos perifriakezels tmakrben
1. Feladat
Processzorunk rajel frekvencija 100MHz. A szmtgphez egy billentyzetet ktnk, melyen tlagosan 10
karaktert tnek le msodpercenknt, de kt lets akr 50 ms-onknt is kvetheti egymst. A billentyzet llapotnak lekrdezse (mely tartalmazza a lenyomott gomb kdjt is) 500 rajelet ignyel. A megszakts-feldolgozsi
id ezen fell mg 100 rajel.
(a) Hnyszor kell msodpercenknt lekrdezni a billentyzetet, hogy ne maradjunk le semmirl?
(b) Mekkora terhelst jelent a processzor szmra, ha a billentyzet kezelsre polling-ot hasznlunk?
(c) Mekkora terhelst jelent a processzor szmra, ha a billentyzet kezelsre megszaktskezelst hasznlunk?
Megolds
(a) Ha nem akarunk lemaradni egyetlen gombnyomsrl sem, 50 ms-onknt kell lekrdeznnk a billentyzetet.
Vagyis a krdsre a vlasz:
1 lekrdezs 1000ms
= 20 lekrdezs/s
50ms
1s
(b) Elszr szmoljuk ki, hny rajel megy el msodpercenknt a billentyzet krdezgetsre:
20 lekrdezs/s 500 rajel/lekrdezs = 104 rajel/s
Mivel a processzor rajel frekvencija 100MHz (108 rajel/s), a terhels:
104 rajel/s
108 rajel/s
= 0.0001 = 0.01%.
(c) Interrupt hasznlatval csak akkor kell a billentyzethez fordulni, ha tnyleges lets trtnt (10-szer msodpercenknt). Ekkor azonban mind az megszakts-feldolgozsi id, mind a gomb kdjnak kiolvassa terheli a
processzort. A terhels teht:
10 lets/s (100 rajel/lets + 500 rajel/lets)
108 rajel/s
113
= 6 105 = 0.006%.
114
2. Feladat
Processzorunk rajel frekvencija 1GHz. A szmtgphez egy 100 Mbit/s sebessg hlzati interfszt ktnk,
melyen 1500 bjtos (=12000 bit) csomagok kzlekednek. A perifria llapotnak lekrdezse (mely nem tartalmazza
a hlzati csomag tartalmt) 600 rajelet ignyel. Az interrupt feldolgozsi id 400 rajel. Ha jtt csomag, annak
tvitele 5000 rajelet vesz ignybe. Jelenleg pp egy 24 Mbit/s sebessg letlts van folyamatban a hlzaton.
(a) Hmy ms-onknt rkeznek a csomagok 100 Mbit/s sebessg mellett? s 24 Mbit/s sebessg mellett?
(b) Hny ms-onknt kell lekrdezni a perifrit, hogy biztosan ne maradjunk le egy csomag rkezsrl?
(c) Mekkora terhelst jelent a perifria kezelse a processzor szmra, ha a csomagok rkezst polling-al
gyeljk?
(d) Mekkora terhelst jelent a processzor szmra, ha interrupt-ot hasznlunk a csomag rkezsek jelzsre?
Megolds
(a) Azt kell kiszmolnunk, hogy a 100 Mbit/s sebessg hlzati interfszen mennyi id szksges egy csomag
(12000 bit) tvitelhez:
12000 bit/csomag
100 106 bit/s
(b) Pont annyi idnknt kell lekrdezni, amennyi idnknt elmletileg jhet csomag, azaz 0.12ms-onknt.
(c) A processzor terhelse ebben a pldban kt rszbl ll: az lland krdezgetsbl, hogy volt-e csomag,
valamint ha volt, akkor a csomag tartalmnak tvtelbl. A lekrdezsre fordtott id kiszmolhat az albbi
mdon.
1
lekrdezs/s 600 rajel/lekrdezs = 5 106 rajel/s.
0.12 103
Ha rkezett csomag, az t is kell venni. Mivel 0.5ms-onknt rkezik tnylegesen csomag, az tvtelkre
fordtott rajelek szma msodpercenknt
5000 rajel/csomag
0.5 103 s/csomag
= 10 106 rajel/s.
A processzor rajel frekvencija 1GHz, msodpercenknt 109 rajellel tud gazdlkodni, teht a terhels:
5 106 rajel/s + 10 106 rajel/s
109 rajel/s
= 0.015 = 1.5%.
(d) A 24 Mbit/s letltsi sebessg mellett 1/0.5 103 s/csomag = 2000 csomag/s sebessggel jnnek a csomagok.
Minden csomag rkezsekor interrupt keletkezik, mely az interrupt feldolgozsi idvel s a csomag tviteli
idvel terheli a processzort. A processzor terhelse teht
2000 csomag/s (400 rajel/csomag + 5000 rajel/csomag)
109 rajel/s
= 0.0108 = 1.08%.
115
3. Feladat
Egy specilis szmtgp egy 100MHz rajel frekvencival hajtott processzort, egy melegedsre hajlamos, de
ideiglenesen kikapcsolhat perifrit, valamint egy hmrsklet rzkelt tartalmaz. A hmrsklet rzkel
brmikor leolvashat (egy leolvass 500 rajelet vesz ignybe), de be lehet lltani gy is, hogy egy hmrskleti
kszb tllpsekor krjen megszaktst (a megszakts kiszolglsa 120 rajelet vesz ignybe). Tlmelegeds
tlagosan percenknt egyszer kvetkezik be, amikor is a processzor kikapcsolja a tlhevlt perifrit, majd nem
sokkal ezutn jra bekapcsolja azt.
(a) Ha nem hasznlunk megszaktst, hnyszor kell msodpercenknt lekrdezni a hmrt, ha a rendszernk
mindssze 1ms ideig tolerlja a tlhevlst?
(b) Mekkora tlagos ksssel rteslnk a tlhevlsrl, ha nem hasznlunk megszaktst? (ms-ban kifejezve)
(c) Ha nem hasznlunk megszaktst, mekkora terhelst jelent a processzornak a hmr folyamatos lekrdezse?
(%-ban kifejezve)
(d) Mekkora terhelst jelent a processzornak (%-ban), ha a tlhevls gyelst megszaktskezelssel oldjuk
meg?
Megolds
(a) Ha 1ms-ig tolerlja a rendszer a tlhevlst, akkor 1ms-onknt kell lekrdezni a hmrt, vagyis msodpercenknt 1000-szer.
(b) Lehet, hogy a lekrdezssel pp elkaptuk a tlhevls pillanatt, ekkor 0ms a ksleltets, de az is lehet, hogy
pp a lekrdezs utn kvetkezett be, ekkor 1ms lesz a ksleltets. A krdsre a vlasz a kett tlaga, vagyis
0.5ms.
(c) Msodpercenknt 1000 lekrdezssel s 500 rajeles lekrdezsi idvel szmolva a terhels
1000 lekrdezs/s 500 rajel/lekrdezs
100 106 rajel/s
= 0.005 = 0.5%,
= 2 108 = 2 106 %.
116
(d) Mennyivel lassabb egy 100 egymsutni szektorra vonatkoz olvassi krs teljes kiszolglsi ideje, mint egy
1 szektorra vonatkoz krs?
(e) Mekkora seek idvel rhetjk el, hogy egy szektor teljes kiszolglsi ideje ugyanakkora maradjon, ha a lemezt
fele olyan gyorsan forgatjuk? (ms-ban kifejezve)
Megolds
(a) A cilinderek szma megegyezik a svok szmval, vagyis C = 50000. Mivel hrom lemeznk van, mindegyiken
kt adathordoz rteggel, a fejek szma H = 6. A svonknti szektorok szma pedig S = 1000.
(b) A merevlemez kapacitsa:
3 lemez/merevlemez 2 hordozrteg/lemez 50000 sv/hordozrteg
= 0
= 8ms
117
5. Feladat
Egy merevlemez 3 db ktoldalas lemezt tartalmaz, melyek mindegyikn 20000 sv tallhat, minden svban 1000
szektorral. A szektorok mrete 500 bjt. ZBR nincs. Az tlagos seek id 4 ms. Mrsekkel megllaptottuk, hogy
az egy vletlen szektorra vonatkoz olvassi krsek tlagos kiszolglsi ideje 10 ms.
(a) Ha a parancsfeldolgozsi ksleltetstl s az interfszen val tviteli idtl eltekintnk, milyen gyorsan forog
a lemez? (fordulat/perc-ben megadva)
(b) Meddig tart egy szektor leolvassa az adathordozrl, ha mr ott van a fej?
(c) Ha a parancsfeldolgozsi id 0.1 ms, az adattviteli interfsz sebessge pedig 50 106 bjt/s, akkor mennyi
a 2000 bjtos blokkokra vonatkoz (vletlen) adattviteli sebessg? Mennyi az 50 106 bjtos blokkokra
vonatkoz (folytonos) adattviteli sebessg?
Megolds
(a) A feladat megoldshoz tudni kell, hogy a forgsi ksleltets a lemez krlfordulsi idejnek (x) a fele (x/2),
a szektorok leolvassi idejt pedig gy kaphatjuk meg, hogy a krlfordulsi idt elosztjuk az egy svban
tallhat szektorok szmval (x/1000). gy x-re az albbi egyenletet kapjuk:
4 + x/2 + x/1000 = 10,
amibl x =
6000
501
ms/fordulat
= 5010 fordulat/perc.
(b) Ha mr ott van a fej, a leolvassi idt gy kapjuk meg, hogy a krlfordulsi idt elosztjuk az egy svon lv
szektorok szmval:
6000
ms
6
501
=
ms = 0.011976 ms
1000
501
(c) A szektorok tviteli idejt eddig mg nem szmoltuk ki. Az 50 106 bjt/s-os interfszen egy 500 bjtos szektor
tviteli ideje:
500 bjt/szektor
= 105 s = 0.01 ms.
50 106 bjt/s
Mivel ez az rtk kisebb, mint a szektor leolvassi id, az tlapols kihasznlsval a kiszolglsi id:
0.1 + 4 +
6000 1
501 2
hiszen 2000 bjt 4 szektor tvitelt jelenti. Msodpercenknt gy 1000/10.146 = 98.561 krst tud a merevlemez
feldolgozni (IOPS), teht a vletlen adattviteli sebessg 98.561 2000 = 197122 bjt/s.
A folytonos adattviteli id kiszmolshoz 50 106 /500 = 100000 szektor tviteli idejt kell kiszmolnunk,
ami
6000 1
0.1 + 4 +
+ 100000 0.011976 + 0.01 = 1207.7ms.
501 2
Ebbl msodpercenknt 1000/1207.7 = 0.828 szolglhat ki (IOPS), a folytonos adattviteli id pedig 0.828
50 106 = 41.4 106 bjt/s.
118
6. Feladat
Egy merevlemez 3 db ktoldalas lemezt tartalmaz, melyek mindegyikn 100000 sv tallhat. A svok kt znra
oszlanak (ZBR), 1-tl 50000-ig svonknt 2000, 50001-tl 100000-ig svonknt 1000 szektorral. A szektorok mrete
500 bjt. Az adattviteli interfsz sebessge pedig 250 106 bjt/s. A parancsfeldolgozsi ksleltets 1 ms. Az
tlagos seek id 5 ms, a lemez forgsi sebessge 6000 fordulat/perc.
(a) Mekkora a merevlemez kapacitsa bjtokban mrve?
(b) Mennyi a lemezek teljes krlfordulsi ideje?
(c) Mennyi egy egyetlen szektorra vonatkoz olvassi krs tlagos kiszolglsi ideje, ha a szektor a 25000-es
svba esik?
(d) s ha a szektor a 75000-es svba esik?
Megolds
(a) A merevlemez kapacitsa:
3 lemez/merevlemez 2 hordozrteg/lemez
= 0.005ms/szektor.
A teljes kiszolglsi idhz ssze kell adni a parancsfeldolgozsi idt (1 ms), az tlagos seek idt (5 ms), az
tlagos forgsi ksleltetst (10 ms /2 = 5 ms), a szektor leolvassi idejt (0.005 ms), valamint az tviteli idejt
(0.002 ms):
1 + 5 + 5 + 0.005 + 0.002 = 11.007ms.
(d) A msik znban csak annyi a klnbsg, hogy a szektorok leolvassa ktszer annyi ideig tart (hiszen fele
annyi van bellk svonknt), gy a vlasz
1 + 5 + 5 + 0.01 + 0.002 = 11.012ms.
119
A blokkok bal fels sarkban a blokk sorszma, a jobb felsben pedig az eddigi trlsek szma lthat. Minden
blokk 4 lapot trol, melyekhez nyilvntartjuk az llapotukat (H=hasznlatban, =rvnytelen, T=trlt),
valamint, ha volt mr rjuk rs, akkor az, hogy melyik LBA cm vonatkozik rjuk (most tekintsnk el attl, hogy
a szektormret s a lapmret nem egyenl).
A kiindul llapotban az 1-es, 3-mas s 7-es blokkok trlt llapotban vannak, az rsi front pedig a 6-os blokk.
(a) Hogyan vltozik az SSD llapota, ha sorban egyms utn az 5-s, a 13-mas s a 2-es LBA cmekre rkezik rsi
krs? Ha j rsi frontra van szksg, az SSD vlassza azt, amelyik a lehet legegyenletesebb kopshoz vezet!
(b) Hogyan vltozik az SSD llapota, ha a kiindulsi llapotban bekapcsol a szemtgyjt algoritmus, s meg sem
ll, amg a trlt blokkok listja eggyel nem n (vagyis ngy trlt blokk nem lesz)? (A szemtgyjt vlassza
mindig a legtbb rvnytelen lapot tartalmaz blokkot, ha tbb ilyen is van, akkor azon kzl a legkevsb
kopottat.)
Megolds
(a) Az 5-s LBA cm j tartalmt az rsi front vgre kell rni (6-os blokk, 4-es lap), s a rgi vltozatt rvnytelenteni kell (8-as blokk, 2-es lap). Ezutn az rsi front betelik, jat kell keresni. Annak rdekben, hogy
az SSD kopsa a lehet legegyenletesebb legyen, a szabad blokkok kzl (1-es, 3-mas, 7-es) azt vlasztjuk,
amelyik a legkevsb kopott, vagyis a legkisebb a trlsszmllja. gy a 7-es blokk lesz az j rsi front. A
13-mas LBA cm tartalma mr ide kerl (rgi helyn, a 4-es blokk 1-es lapjn rvnytelentjk), s vgl ide
kerl a 2-es LBA cmre sznt adat is. A vgllapot teht:
(b) A szemtgyjt algoritmus ngy olyan blokkot is tall, melyen kt rvnytelen lap van, ezek kzl a 2-es
a legkevsb kopott, ezrt ezt teszi rendbe. A 2-es blokk 1-es lapjt az rsi frontra msolja, j rsi frontra
vlt (ez lesz a 7-es blokk), s oda msolja a 4-es lapot. Ezzel a 2-es blokk csupa haszontalan adatot tartalmaz,
trlhet. (Ne felejtsk nvelni a trlsek szmt a jobb fels sarokban!) Sajnos mg mindig csak 3 trlt lap
van, nem lett tbb, mint volt, teht a szemtgyjts folytatdik. A kvetkez rendraksra kijellt blokk az 5-s.
Kt hasznlatban lv blokkjt az rsi frontra, vagyis a 7-es blokkra msoljuk, aztn ezt a blokkot is trljk.
Most mr eggyel tbb trlt blokkunk van, a szemtgyjts befejezdik, az SSD llapota pedig a kvetkez:
120
III. rsz
A memria
121
8. fejezet
Memria technolgik
A 2.1.2. fejezetben megllaptottuk, hogy a memria a Neumann architektra szk keresztmetszete, mivel a
sebessge jval kisebb temben n, mint a processzor. A memrin teht a szmtgp teljestmnyt tekintve
nagyon sok mlik. Ebben a fejezetben ttekintjk, hogy egy modern szmtgp rendszermemrija hogyan pl
fel; hogy milyen megoldsokat s trkkket alkalmaznak annak rdekben, hogy a memriakrsek kiszolglsa
minl gyorsabb, az tviteli sebessge pedig minl nagyobb legyen.
WL
WL
BL
BL
BL
Inverterekkel
Tranzisztorokra lebontva
8.1. bra. SRAM trolcella
123
BL
124
BL
8.1.3. sszevets
Mint lttuk, az SRAM cellk 6T, a DRAM cellk 1T1C felptsek, radsul az SRAM-nl bitenknt kt bitvezetk
van, ezrt a kevesebb alkatrsz miatt a DRAM technolgival adott mret lapkn tbb (6-8x annyi) bit trolhat,
kvetkezskppen olcsbb.
Mkdsi sebessget tekintve azonban az SRAM elnysebb, ennek oka szintn a bels felptsben keresend.
Egy SRAM cellban a bi-stabil multivibrtor bitvezetkt aktv eszkz (inverter) hajtja meg, gy gyorsabban bell
a bit rtknek megfelel jelszint (nhny ns), ezzel szemben a DRAM kondenztornak cseklyke tltse csak
lassabban kpes a bit rtknek megfelel jelszint-vltozst okozni a bitvezetken (nhnyszor 10ns). A DRAM-ot
radsul idnknt frissteni is kell.
125
Az SRAM tovbbi elnye, hogy gyrtstechnolgiai szempontbl pont ugyanolyan tranzisztorokbl ll, mint a
processzor, gy knnyedn ugyanazon flvezet lapkra lehet integrlni ket.
Mindkt technolgia megtallta a maga helyt a szmtgpekben. Mg a nagy adatsrsg s az alacsony r
miatt a szmtgpek rendszermemrija DRAM-ra alapul, a nagy sebessg adattrolst ignyl cache memrik
SRAM-ot hasznlnak, s a processzor regisztereit is SRAM trolja.
Az utbbi vekben a DRAM egy vltozata, az eDRAM (embedded dynamic random access memory) is
terjedni ltszik. Az eDRAM cellk felptsben s viselkedsben is hasonltanak a DRAM cellkra, azonban a
processzorral egy lapkra helyezhetk. Mivel ellltsuk olyan gyrtstechnolgiai lpseket is ignyel, melyekre
egy processzor gyrtsa esetn (eDRAM nlkl) nem lenne szksg, az eDRAM hasznlata nveli a gyrtsi
kltsgeket. A nagyobb kltsgeket azonban sok esetben ellenslyozza a processzorhoz kzel fekv, azzal
szles, nagy sebessg bels buszon kommunikl, az SRAM-nl lnyegesen nagyobb trolsi kapacitssal br
memria jelentette teljestmnytbblet. Az eDRAM-ot hasznl processzorok krbe tartozik az IBM POWER7
(2009, 32MB eDRAM alap harmadszint cache), az Intel Haswell processzorok GT3e grakus vezrlt tartalmaz
vltozata (2013, 128MB eDRAM alap negyedszint cache), s szmos jtkkonzol processzora (a Sony Playstation
2 processzora 4MB eDRAM, a Playstation Portable MIPS alap processzora 32MB eDRAM-mal rendelkezik, a
Nintendo Wii U grakus processzora 32MB eDRAM-ot tartalmaz).
8.2.1. ttekint kp
Egy modern DRAM alap rendszermemria ttekint kpt mutatja be a 8.3. bra. Mint lthat, egy megleheten
sszetett hierarchikus felptsrl van sz. A mai szmtgpekben a processzor memria rsi s olvassi krseit
nem kzvetlenl a memriamodulokhoz, hanem a memriavezrlhz intzi (ez sokszor a processzorral egy lapkn
tallhat, de ettl mg egy klnll funkcionlis egysgnek tekintjk). Az bra pldjban egy ktcsatorns
memriavezrlt ltunk, mindegyik csatornn 2-2 DIMM modullal (megjegyezzk, hogy a DDR4 szabvny ezt
mr nem engedi meg, ott minden DIMM egy kln csatornn csatlakozik a memriavezrlhz). A DIMM (dual
in-line memory module) kt oldala kt fggetlen eszkznek minsl, melyek osztoznak a cm-, s adatbuszokon.
Ezeket a fggetlen memria eszkzket rank-nek hvja a szakirodalom. Minden rank tbb, ltalban azonos
tpus DRAM chip-et tartalmaz. A DRAM chip-ek bels felptse sem egyszer. Egy DRAM chip tbb fggetlen
trolmezbl, gynevezett bank-bl ll. A DRAM bank nem ms, mint a 8.1.2. fejezetben megismert DRAM
trolcellk mtrixba rendezett halmaza.
126
3. rank
2. rank
1. csatorna
CPU
Memria
vezrl
1. rank
0. rank
DIMM memriamodulok
3. rank
2. rank
2. csatorna
1. rank
0. rank
4. bank
3. bank
2. bank
1. bank
DRAM chip
DRAM bank
0. sor
1. sor
N. sor
rzkel erstk
0. oszlop
1. oszlop
2. oszlop
3. oszlop
WL
BL0
BL1
BL2
BL3
DRAM sor
8. oszlop),
14. oszlop),
3. oszlop),
4. oszlop),
akkor a kvetkez parancsokra van szksgnk, feltve, hogy a bank elfesztett (precharged) llapotban van:
N bit
127
Sordekder
DRAM cellk
2N sor x 2M oszlop
Cm
rzkel erstk
M bit
Oszlop-multiplexer
1 bit
128
Ezeket az idztsi rtkeket aszinkron memrik esetn idben (ns), szinkron DRAM esetn pedig rajelben
kell rteni, s a szmrtkeket egymstl ktjellel elvlasztva TCAS TRCD TRP TRAS sorrendben szoktk
megadni. A 4 rtk helyett sokszor egyszerstve, a TCAS feltntetsvel adjk meg a DRAM ksleltetst (pl. egy
CL7-es memriamodul esetn TCAS = 7).
Burst adattviteli md s tlapolt parancsfeldolgozs
Az imnt trgyalt idztsek ismeretben megllapthatjuk, hogy ha nagyobb mennyisg (sor-folytonos) adatot
szeretnnk kiolvasni a memribl, akkor ezt nem ppen gazdasgos oszloponknt megtenni, hiszen minden
egyes oszlop tvitelt egy TCAS ksleltets elzi meg. A hatkonysg nvelse rdekben kt technikt vezettek
be:
A TCAS ksleltets amortizlsa rdekben szmos DRAM technolgia csoportos, n. burst tvitelt hasznl,
ami azt jelenti, hogy egy READ/WRITE parancsra nemcsak egy, hanem tbb egyms utni oszlop tvitele
is megtrtnik. Az egyszerre tvitt oszlopok szmt, azaz a burst hosszt egy kongurcis parancs
segtsgvel lehet belltani. Minimlis rtkt az adott technolgia elrja, tipikus rtke pedig megegyezik
a CPU cache blokkok mretvel. A minimlist burst hossz pl. DDR memrik esetn 2, DDR2 esetn 4,
DDR3 s DDR4 esetn pedig 8 oszlop.
A parancskiads s az adattvitel tlapolhat, vagyis j parancsot ki lehet adni mg mieltt a korbbira
megrkezne a vlasz.
tRAS
RD
3
ACT
1
tRCD
tRP
RD
9
tCAS
PRE
CH
ACT
2
tCAS
DAT DAT DAT DAT DAT DAT DAT DAT
1/3 1/4 1/5 1/6 1/9 1/10 1/11 1/12
1. burst
2. burst
129
Cm1
Cm2
Cm3
vrakozs
vrakozs
vrakozs
Adatsn
Adat1
Adat2
Adat3
Cm1
Cm2
Cm3
Bank 0-ra vr
Bank 1-re vr
Bank 2-re vr
Adatsn
130
Parancs, bankkivlaszts s cm
Adat
(8x8=64 bit szles)
Rank 0 Rank 1
Rank 2 Rank 3
Adat
Memria
vezrl
Engedlyezs
131
1. csatorna
64 bit
CPU
Memria
vezrl
128 bit
2. csatorna
64 bit
3. rank
2. rank
1. rank
0. rank
3. rank
2. rank
1. rank
0. rank
Memria
vezrl
1. csatorna
64 bit
3. rank
2. rank
1. rank
0. rank
CPU
Memria
vezrl
2. csatorna
64 bit
3. rank
2. rank
1. rank
0. rank
132
Rank Bank
(1 bit) (3 bit)
Oszlop
(11 bit)
Csatorna Bjt
(1 bit) (3 bit)
Parancsok:
(3.sor, 8. oszlop)
(1.sor, 3. oszlop)
(3.sor, 14. oszlop)
ACTIVATE 3
READ 8
PRECHARGE
ACTIVATE 1
READ 3
PRECHARGE
ACTIVATE 3
READ 14
FR-FCFS temezs
Krsek:
Parancsok:
(3.sor, 8. oszlop)
(3.sor, 14. oszlop)
(1.sor, 3. oszlop)
ACTIVATE 3
READ 8
READ 14
PRECHARGE
ACTIVATE 1
READ 3
Mint lthat, a msodik s harmadik krs felcserlsvel a memriavezrl meg tudott sprolni egy sorlezrs
s sormegnyits mveletet.
Gazdlkods a nyitott sorokkal
A sormegnyits mveletek mellett a sorlezrsnak (PRECHARGE) is szmottev ksleltetse van (TRP ). A
memriavezrl a sormegnyits s lezrs mveleteket a kssek trendezsvel tudja minimalizlni, de mit
tegyen, ha pp elfogynak a memriakrsek (mert mindet kiszolglta). Ktflekppen cselekedhet:
Nyitva hagyja az aktulis sort. Ez a taktika akkor elnys, ha a kvetkez befut memriakrs ugyanarra
a sorra vonatkozik. Mivel a vezrl nyitva hagyta, ACTIVATE nlkl, kis ksleltetssel ki lehet szolglni az
133
j ignyt. Ha azonban a kvetkez krs egy msik sorra vonatkozik, akkor annak megnyitsa eltt mg a
nyitva tartott sor lezrsra (PRECHARGE) is idt kell vesztegetni, ami nveli a ksleltetst.
Lezrja az aktulis sort. Ha a kvetkez krs ugyanerre a sorra vonatkozik, akkor idt veszt, mert a
feleslegesen lezrt sort jra meg kell nyitni (ACTIVATE). Amennyiben a kvetkez krs msik sorra
hivatkozik, akkor a taktika bevlt, hiszen csak egy sormegnyits parancsot kell kivrni, sorlezrst nem.
Adaptv taktikt vlaszt (APM, Active Page Management). A memriavezrl a memriaelrsek mltbeli
mintzata alapjn megprblja megtippelni, hogy a kvetkez krs ugyanarra a sorra fog-e vonatkozni, s
az aktv sor lezrsa fell spekulatv mdon dnt. Az jabb genercis Intel Core i7 processzorok beptett
memriavezrlje ezt az eljrst hasznlja, engedlyezst, nomhangolst bizonyos alaplapok BIOS-a
lehetv is teszi (Adaptive Page Closing opci).
Frisstsek temezse
A DRAM chip-ek frisstsrl is a memriavezrlnek kell gondoskodnia. A frisstshez rendszeres idkznknt
ki kell adnia a REFRESH parancsot, melynek hatsra a kivlasztott rank DRAM chip-jeiben a soron kvetkez
sorok celli kiolvassra, majd visszarsra kerlnek. A frissts megknnytsre a DRAM chip-ek tartalmaznak
egy szmllt, ami a kvetkez frisstsre kijellt sorra mutat, s amely minden REFRESH parancsra automatikusan
egyel n. A frissts idejre a DRAM chip termszetesen nem tud hasznos adat olvassi/rsi mveletet vgezni,
teht ez kies id. Annak rdekben, hogy ez a kies id ne legyen tl hossz, a memriavezrl nem egyszerre,
REFRESH parancsok znvel frissti az sszes sort, hanem idben elosztva, egyenletesen: vgrehajt pr parancsot,
frisst egy sort, megint vgrehajt pr parancsot, frissti a kvetkez sort, s gy tovbb.
134
Sajnos a szabvnyos jells rtelmezse nem egyszer. Egy DDR2-800 nvvel elltott SDRAM-nak a bels
rajele 200 MHz, a kls 400 MHz, a 800 gy jn ki, hogy a kls rajel fel- s lefut lnl is van adattvitel, gy
pont olyan gyors, mint egy 800 MHz-es SDR SDRAM. A 64 bites adatszlessg miatt pedig PC2-6400 modulknt
adjk el, s maximum 6400 MB/s tviteli sebessgre kpes (hiszen a 64 bit=8 bjt, s a 800 MHz-es adattvitel
miatt 800 milli adategysget tud msodpercenknt tvinni).
DDR3 SDRAM
A DDR3 SDRAM kls rajele mr ngyszer akkora, mint a bels, s mivel DDR, minden kls rajelciklusban
kt adatot visz t (fel- s lefut lre), teht a bels rajel minden peridusa alatt 8-at. A DDR3 memrik 8 bankot
hasznlnak, s az tviteli burst hosszt 8 adategysgben rgztettk.
Egy DDR3-1600 nvvel jellemzett DDR3 SDRAM-nak a bels rajele 200MHz, a kls 800MHz, az 1600 gy
jn ki, hogy a kls rajel fel- s lefut lnl is van adattvitel. A 64 bites szlessg miatt pedig PC3-12800
modulknt adjk el, mivel legfeljebb 12800 MB/s tviteli sebessgre kpes.
DDR4 SDRAM
A DDR3 utdja a sorozat legatalabb tagja, a DDR4 SDRAM. A DDR4 esetben felhagytak a kls rajel nvelsvel,
a DDR3-hoz hasonlan 8 adategysget kpes tvinni a bels rajel egyetlen ciklusa alatt. Ennek megfelelen a
burst hossz is maradt a rgztett 8 adategysg. A teljestmnyt gy fokoztk, hogy a bankok szma 16-ra ntt, s
az rajel frekvencija is nagyobb, mint a DDR3 esetben volt. A nagyobb rajel miatt paritsbittel vdik a parancss cmvezetkeket, s ellenrz sszeggel (CRC) az adatvezetkeket.
A DDR4-nek van egy fontos jtsa: elmozdultak a pont-pont topolgia fel, mivel minden egyes DIMM modul
dediklt snekkel kapcsoldik a memriavezrlhz, kln csatornn (cserbe DIMM-enknt 8 rank hasznlatt is
megengedi). Ennek a lpsnek itt is volt az ideje, az SDRAM interfsz az utols prhuzamos buszok egyike egy
modern PC-ben.
SDR
DDR
DDR2
DDR3
DDR4
66-133 MHz
133-200 MHz
100-200 MHz
100-200 MHz
266-533 MHz
528-1064
2128-3200
3200-6400
6400-12800
17024-34112
Burst hossz
1-8
2-8
4-8
Bankok szma
2-4
2-4
4-8
16
Feszltsg
3.3V
2.5V
1.8V
1.5V
1.05-0.2V
Bels rajel
Adatok/bels rajel
Adattviteli seb. (MB/s)
GDDR5 SDRAM
A GDDR5 SDRAM technolgit kifejezetten nagy svszlessg ignyt tmaszt clokra fejlesztettk ki, jellemzen
magasabb rfekvs grakus krtykban hasznljk. Egy GDDR5 alap rendszer a megismert szervezsnl sokkal
egyszerbb: nincsenek benne rank-ek, s modulok sem. Minden egyes DRAM chip kzvetlenl a vezrlhz van
ktve, grakus krtya esetn a grakus processzorhoz. Az x4, x8, ill. x16 adatszlessget hasznl DDR3 memria
chip-ekkel ellenttben a GDDR5 chip-ek 32 bitesek, gy 8 chip segtsgvel mris 256 bites adatszlessget kapunk.
A bankok felptse is nmileg eltr az eddig megszokottl: 16 bank van, mindegyikben egyszerre kt sor lehet
nyitva, s egy rs valamint egy olvass mvelet egyidej kiszolglsra is kpes.
Mg a DDR2-tl kezdve kln kls s bels rajelrl beszltnk, a GDDR5 esetn mr hromfle rajelet kell
megklnbztetni. Az els a DRAM cellk rajele, legyen pldul 375 MHz (nagyjbl a bels rajel megfelelje). A
GDDR5 chip-eknek azonban ezen rajel ngyszeresvel lehet parancsokat adni, teht a parancs rajel a pldnkban
1500 MHz. Az adatok tvitele (a kls rajel) mg ennek is a ngyszerese, vagyis 6 GHz (!), ami 256 bites
adatszlessg mellett 192 GB/s adattviteli sebessget jelent.
135
(Bels) rajel
Parancssn
Cmsn
ACTIVATE
READ
Sorcm
Oszlopcm
TRCD ksleltets
TCAS ksleltets
SDR SDRAM
Adatsn
Adat
DDR SDRAM
Adatsn
Adat
Adat
DDR2 SDRAM
Kls rajel
Adatsn
DDR3 SDRAM
Kls rajel
Adatsn
A A A A A A A A
136
9. fejezet
A virtulis memria
A programoz szmra a memria elrse egyszer feladat. A processzor utastskszlete memriakezel
utastsokat knl szmra, melyek segtsgvel a memria adott cmre tud hivatkozni, onnan adatokat tud
beolvasni, illetve oda adatokat tud rni. Alapesetben, ha nincs virtulis memria, a programoz ltal kiadott cm
egyenesen a rendszermemria fel tovbbtdik, az R0 MEM[42] utasts a rendszermemria 42-es cmn lv
adatot fogja visszaadni.
Ha virtulis memrit hasznl a processzor, akkor nem ez a helyzet. A programoz egy kpzeletbeli, virtulis
memrin vgez mveletet, nem pedig a vals, zikai memrin. Ez a nyilvnval bonyolts, mely, mint ltni
fogjuk, mg lasstja is a memriaelrseket, szmos elnnyel jr. A virtulis memria nem ltszksglet, mgis
olyan alapvet fontossg, hogy minden mai, modern, multi-tasking kpessgekkel rendelkez opercis rendszer
megkveteli a processzortl ezt a kpessget.
9.1. Alapelvek
Multi-tasking krnyezetben egy processzor tbb programot is futtathat egyidejleg, melyek memriaignye
dinamikusan vltozik, a programok ltal hasznlatban lv sszes memria mrete hosszabb-rvidebb idre akr
tl is lpheti a zikailag rendelkezsre llt. A szoftverfejleszts sorn nagy knnyebbsg lenne, ha a programoknak
nem kellene tudomst vennie a zikai memria vgessgrl, illetve arrl, hogy a rendelkezsre ll szabad
memria dinamikusan vltozik a tbbi, prhuzamosan fut program memriaignyeinek fggvnyben. Elnys
lenne, ha minden program szmra virtulisan a processzor teljes cmtartomnya rendelkezsre llna, az pedig
legyen a processzor s az opercis rendszer gye, hogy a fut programok virtulis memrijt hogy kell a
szks zikai memriba bezsfolni, s hogy mit kell csinlni ha az ppen nem fr be. Ezt a memriakezelsi
elvet nevezik virtulis trkezelsnek, mely 1962-ben bukkant fel elszr, s a 70-es vekre rte el azt a formjt,
melyet a mai virtulis memria-kezelsre kpes processzorok is birtokolnak.
A processzoron fut programok teht virtulis cmeket hasznlnak (nem is hasznlhatnak mst), amivel a
processzor teljes cmzsi kpessgt kihasznlhatjk. Pldul egy 32 bites rendszerben a programok 232 bjt,
azaz 4 GB memrit hasznlhatnak akkor is, ha ennl kevesebb van zikailag a szmtgpben, vagy a tbbi
fut program mellett ennl kevesebb jut. A processzor lbain s a buszon azonban mr zikai cm jelenik meg.
Teht a processzornak a program futsa kzben kiadott minden egyes (virtulis) memriacmet t kell alaktania
zikai cmm, hiszen a zikai memrit csak az alapjn szlthatja meg. Ezt a folyamatot cmfordtsnak (address
translation) nevezzk, amit a processzorban tallhat hardver, az MMU (memory management unit) vgez.
Az nem lenne gazdasgos, ha az MMU minden egyes virtulis cmre, vagyis bjtonknt nyilvntartan, hogy
az a zikai memriban ppen hol van. Ezrt a virtulis s a zikai memrit nagyobb darabokra, adategysgekre
osztjuk, s a kzttk lv kapcsolatot ezekre a nagyobb adategysgekre tartjuk nyilvn. Ezeket az adategysgeket
lapoknak hvjuk, ha mretk x, ebben a fejezetben pedig kizrlag a lapszervezs virtulis memriakezelssel
foglalkozunk, mivel az utbbi vtizedekben hasznlatos processzorok szinte kizrlag ezt alkalmazzk.
A nagysgrendek rzkeltetse kedvrt nzzk meg egy x86-64 architektrj, 64 bites processzor logikai s
zikai cmtartomnyt. Az x86-64 jelenlegi implementcii 48 bites virtulis cmeket hasznlnak, ami 248 bjt
= 256 terabyte memria cmzst engedi meg, de az architektra ksbbi bvtst is lehetv tesz egszen 264 bjt
= 16 milli terabyte-ig. Ha a fut programoknak ezt a teljes tartomnyt a rendelkezsre bocstjuk, felmerl a
krds, hogy hol troljuk ennek a hatalmas cmtartomnynak a zikai memribl kilg rszt? A vlasz: ez az
opercis rendszer dolga, ami jellemzen a zikai memrinl lnyegesen nagyobb (s sokkal lassabb) httrtron
137
138
Httrtr
139
Accessed bit: ha =1, akkor volt mostanban hivatkozs erre a lapra. Ezt is a CPU tartja karban.
Ez a bit segt az opercis rendszernek, amikor el kell dntenie, hogy melyik lapot dobja ki a zikai
memribl, ha egy j lapnak nincs helye. Az accessed=0 lapokbl fog vlogatni.
A laptbla megvalststl fggen vagy a lapok, vagy a keretek szmval arnyos, de mindenesetre elg
nagy ahhoz, hogy magt a laptblt is a rendszermemriban kelljen trolni.
A cmfordts menete a kvetkez. Memria hozzfrs esetn a processzor a hivatkozott cmet virtulis
cmnek tekinti. Levlasztja a cmrl a lapszmot, majd megkeresi a laphoz tartoz laptbla bejegyzst. Ha a
bejegyzs szerint a lap a zikai memriban van (valid=1), akkor a keret szmt a bejegyzsbl kiolvasva, azt a cm
eltols mezjvel kibvtve megkapja a zikai cmet. Valid=0 esetn meghvja az opercis rendszer erre a clra
beregisztrlt szubrutinjt, ami a laptbla bejegyzsbl kiolvassa, hogy a krdses lap hol tallhat a httrtron,
azt beolvassa, elhelyezi a zikai memriban, majd aktualizlja a laptbla bejegyzst. Elfordulhat, hogy az
opercis rendszernek nincs hova betlteni a lapot, mert nincs szabad keret. Ilyenkor kivlaszt egyet (lehetleg
accessed=0 s dirty=0 bitekkel), kirja a httrtrra (kzben frisstve a vonatkoz laptbla bejegyzst), majd az gy
felszabadul keretbe kerl a hivatkozott lap (9.2. bra).
A laphiba lekezelse utn a processzor a laphibt okoz, flbeszakadt utasts vgrehajtst folytatja, gy a
fut program semmit nem vesz szre a cmfordtsbl, a felhasznl pedig legfeljebb a diszkmveletet s a rvid
fennakadst szleli, amivel a lapok diszkrl memriba mozgatsa jr.
Virtulis cm
NV - L
Lapszm
Fizikai memria
Eltols
Laptbla
Fizikai cm
NF - L
Keretszm
Eltols
L
Lapszm
Keretszm
140
A TLB teht a gyakran hasznlt lapok lapszm keretszm sszerendelseit trolja, A TLB-vel segtett
cmfordtsi folyamat esetn a processzor elszr a TLB-ben keresi a hivatkozott laphoz tartoz keretet, s ha
nincs tallat (ezt a helyzetet TLB hibnak hvjuk), akkor knytelen azt a memribl kiolvasni (9.3. bra). A
TLB hatkony mkdse, azaz az alacsony TLB hibaarny kulcsfontossg a virtulis trkezels teljestmnye
szempontjbl. Minl nagyobb a TLB-ben trolt (cache-elt) laptbla bejegyzsek ltal lefedett cmtartomny - a
TLB lefedettsg - annl ritkbban kell a memriban lv laptblhoz fordulni.
Virtulis cm
NV - L
Lapszm
Eltols
Fizikai memria
TLB
Lapszm
Keretszm
=
=
=
=
Fizikai cm
Laptbla
Lapszm
Keretszm
Keretszm
Eltols
NF - L
16-512 bejegyzs
Tallat ideje:
0.5 - 1 rajel
10 - 100 rajel
TLB hibaarny:
0.01% 1%
141
142
Lapszm
Fizikai memria
Eltols
Laptbla
Laptbla kezdcm
Valid
Cm
Diszk szektorszm
Keretszm
Fizikai cm
NF - L
Keretszm
Eltols
L
Keretszm
Diszk szektorszm
Diszk szektorszm
Keretszm
Eltols
Fizikai memria
Fizikai cm
Keretszm
2. szint laptbla
1. szint laptbla
Valid
Cm
Valid
Cm
Eltols
3. szint laptbla
Valid
Cm
2. szint laptblacm
Diszk szektorszm
Diszk szektorszm
2. szint laptblacm
3. szint laptblacm
Keretszm
Diszk szektorszm
Diszk szektorszm
Keretszm
Diszk szektorszm
3. szint laptblacm
Diszk szektorszm
2. szint laptblacm
Diszk szektorszm
Diszk szektorszm
Diszk szektorszm
3. szint laptblacm
Keretszm
143
eseteben a 00-val s az 11-gyel kezdd lapokhoz tartoz msodszint laptblk a httrtron vannak (a
hozzjuk tartoz els szint laptblabeli bejegyzsben Valid=0). A 00 kezdet lapok esetn ez rthet, hiszen a
msodszint laptbla alapjn csupa nem hasznlt, httrtron lv lapokrl van sz, de az 11 kezdet lapok
tbbsgvel is ugyanez a helyzet.
Virtulis cm:
10 11
Eltols
Fizikai cm:
0101
Eltols
1. szint laptbla
Laptbla
kezdcm
Valid
Cm
0
1
1
0
2. szint laptbla
Valid
Cm
2. szint laptbla
Valid
Cm
2. szint laptbla
Valid
Cm
2. szint laptbla
Valid
Cm
0101
144
Ez az egyszersg annak ksznhet, hogy a zikai memriban folytonosan (egy tmbben) helyezkednek el a
bejegyzsek. Az vilgos, hogy pl. 64 bites cmek esetn ez nem jrhat t, hiszen a laptbla nem fr be folytonosan
a zikai memriba. De a virtulis cmtartomnyba igen!
A trkk lnyege, hogy a tnyleges cmfordtsi informcit tartalmaz laptbla bejegyzseket a virtulis
cmtartomnyban folytonosan helyezzk el, egy tmbben, ahogy azt az egyszint laptbla tette. Ennek ellenre
tovbbra is hierarchikus laptblnk van, melynek gykere s a kztes mutatkat tartalmaz laptbli tetszlegesen
elhelyezhetk a memriban, de a hierarchia legals szintjhez (a 9.7. brn a 3. szinthez) tartoz lapok legyenek
virtulisan egy folytonos cmtartomnyban (9.7. bra). Virtualizlt laptblkat hasznl processzorokban az 1.
szint laptbla zikai kezdcmt s a tnyleges cmfordtsi informcikat tartalmaz, legals szint (az brn a
3. szint) laptbla virtulis kezdcmt egy specilis regiszter trolja.
1. szint laptbla
2. szint laptbla
3. szint laptbla
145
akkor kevs a keret, a laptbla is kicsi. Ha nagy a zikai memria, akkor nagyobb a laptbla. Ez a tulajdonsg a
manapsg tipikusan hasznlt memriamretek s a 64 bites cmeknek ksznhet risi virtulis cmtartomny
mellett egy nagyon lnyeges elny.
Az adatszerkezet azrt inverz, mert a laptblt nem a lapsorszmmal, hanem a keret sorszmmal indexeljk.
rvendetes, hogy kicsi a laptbla, de van egy problma: a laptblt a processzor gy szeretn hasznlni, hogy a
lapsorszm alapjn keresi a keretet. Teht az inverz laptblban tartalom szerint kellene keresni, s a megtallt
bejegyzs laptblabeli indexe lesz a keresett keret. Brmennyire is tnik rossz tletnek ez a megolds, vannak
nagyon hatkony implementcik (PA-RISC s POWER), melyek 64 bites virtulis cmeket hasznlnak, s az
inverz laptblnak ksznhetik, hogy TLB hiba esetn kevs memriamveletre van szksgk a cmfordtshoz.
Virtulis cm
Lapszm
Eltols
Hash fv.
Inverz laptbla
146
helyezi. Van olyan architektra, melyben mg arra is van md, hogy az opercis rendszer hatrozza meg, hogy
az jonnan TLB-be kerl bejegyzs melyik rgit rja fell.
A megolds nagy elnye, hogy semmi nincs hardverhez ktve, vagyis az opercis rendszer frisstsvel
knnyszerrel t lehet llni egy jabb, jobb, tovbbfejlesztett laptbla adatszerkezetre. Ugyancsak elny, hogy
jval bonyolultabb eljrsok is alkalmazhatk, hiszen a hardver megoldssal ellenttben nem kell a fogyasztsi s
a tranzisztorok szmra vonatkoz korltokkal szmolni.
A szoftver menedzselt TLB htrnya, hogy a cmfordts lnyegesen lassabb lehet, hiszen maga a cmfordtst
vgz opercis rendszer szubrutin utastsai is a lass memriban vannak, melyeket be kell tlteni, s vgre
kell hajtani.
Hardver menedzselt laptblt hasznl az x86, az ARM, a PowerPC, szoftver menedzseltet a MIPS, az Alpha s
a SPARC. A PA-RISC architektrban elmosdnak a hatrok. A hardver inverz laptblt implementl, de nem
kveti az azonos hash fggvnnyel rendelkez lapok lncolt listjt. Ha elsre nem tallja meg a lapot, szl az
opercis rendszernek, hogy jrja be a lncolt listt .
147
opercis rendszer lecserli a processzor specilis, a laptbla kezdetre mutat regiszternek tartalmt. Ezzel
tulajdonkppen tvlt az egyik taszk virtulis memrijrl a msik taszkra.
Az opercis rendszer menet kzben igyekszik a zikai memriban rendelkezsre ll keretekkel gazdlkodni,
azokat gy megosztani a fut taszkok kztt, hogy az egyrszt igazsgos legyen, msrszt, amennyire lehetsges,
mindegyiknek elg legyen. Minden taszkhoz rendel bizonyos szm keretet, melyeken a taszk a gyakran hasznlt
lapjait trolhatja (9.9. bra), a tbbit pedig a korbban megismertek szerint a httrtrra helyezi. Mindezt minden
taszk sajt laptbljn, kln-kln knyveli.
148
149
150
tagozdsa: 12 bit eltols, 9 bit negyedszint laptbla index, 9 bit harmadszint laptbla index, 9 bit msodszint
laptbla index, 9 bit els szint laptbla index, vagyis minden egyes cmfordtshoz ngy laptblt kell elolvasni,
ami lassv teheti a memriamveleteket.
Az x86 nem csak 4 kB, hanem nagyobb lapok hasznlatt is lehetv teszi, ekkor a laptbla hierarchia eggyel
kevesebb szintbl fog llni. Ekkor az alapesetben 12 bites eltols kiegszl a legalsbb szint laptbla indexszel.
Teht a 32 bites, PAE nlkli zemmdban 12+10 bites lesz az eltols (ami 222 = 4 MB lapokat jelent); a 32 bites,
PAE-val kiegsztett, illetve a 64 bites zemmdban pedig 12+9 bit lesz az eltols (ekkor a lapok mrete 221 = 2
MB).
ARM
Az ARM architektra is hierarchikus laptblt alkalmaz. Tbbfle lapmretet tmogat, melyeket az x86-tal
ellenttben vegyesen is lehet hasznlni (a lap mrete a vonatkoz laptbla bejegyzsben szerepel). A rendelkezsre
ll latmretek:
4 kB (lap),
64 kB (nagy lap),
1 MB (section),
16 MB (super section),
melyek kzl a nagy lapok s a super section-k kezelse elg krlmnyes.
Akrcsak az x86-nl, az ARM architektrban is meg lehet sprolni egy hierarchiaszintet a cmfordts sorn
a nagyobb lapozsi egysgek (section, super section) hasznlatval: a lapok s a nagy lapok 2, a section-k s
super section-k 1 szint cmfordtst ignyelnek.
PowerPC
A POWER architektra inverz laptblt alkalmaz, de nem a klasszikus mdon: az azonos hash-hez tartoz lapok
lncolt listjt nem valstottk meg. A POWER virtulis trkezelse kt tmbt hasznl:
Az egyik az inverz laptbla, melynek bejegyzseiben mind a lap, mind a keret szma szerepel
A msik egy hash tbla. A hash fggvny minden lapszmhoz 2 hash tbla bejegyzst rendel. Minden
hash tbla bejegyzs 8 db lapszm laptbla index sszerendelst trol. Teht a lapszmhoz hash-elt 16
sszerendelst a processzor mind vgig nzi, hogy megllaptsa, hogy a laptbla hnyadik bejegyzse tartozik
a keresett lapszmhoz. Ha a 16 sszerendels egyike sem tartozik a keresett lapszmhoz, a processzor
laphibt jelez az opercis rendszernek.
A megolds elnye, hogy a processzornak nem kell lncolt listt kezelnie. A megolds htrnya, hogy nagyon
kicsi valsznsggel ugyan, de elfordulhat, hogy tbb mint 16 olyan lapot hasznl a programunk, melyekhez
mind ugyanaz a hash rtk tartozik. Ilyenkor abban az esetben is laphibt kapunk, ha a lap a zikai memriban
van ezt az esetet az opercis rendszernek kell lekezelnie (pl. ilyen esetekre maga is karbantarthat egy laptblt,
s abbl prblja a keresett keretet megtallni).
10. fejezet
Cache memria
10.1. Lokalitsi elvek
A modern processzorok bels mkdsi sebessge (rajele) jval, akr tbb nagysgrenddel is meghaladja a
busz s az operatv memria sebessgt. A helyzet tovbb romlik, ha virtulis trkezelst alkalmazunk, hiszen
ilyenkor egy memriatartalom kiolvasshoz tbb lpsre is szksg lehet (laptbla kiolvass s a tnyleges
adat kiolvassa), ha pedig a keresett tartalom nincs a memriban, akkor az elrsi idhz hozzjn mg a lap
httrtrrl val behozsnak ideje is.
A memria elrs teht teljestmny szempontjbl egy szk keresztmetszet: ha a vgrehajtand utastshoz
nincsenek kznl a kvnt adatok, a processzor vrakozsra knyszerl, nem tud teljes kapacitsval dolgozni,
teht rossz lesz a kihasznltsga.
Nagy szerencse, hogy a szmtgpen fut programok nem vletlenszeren nylklnak a memriba. A
memriaelrsek a legtbb esetben bizonyos specilis mintzatot kvetnek idben s (cm)trben egyarnt, s ezt
ki lehet hasznlni a teljestmny nvelse rdekben. Ez a specilis mintzat persze az alkalmazstl fgg, de az
ltalnos cl programok tlnyom rszben a memriamveletek lokalitsi elveket kvetnek. Tbbfle lokalitsi
elv is ltezik:
Idbeli lokatits (Temporal locality): Ha egy memriban trolt adaton mveletet (rs/olvass) vgznk,
akkor valsznleg hamarosan jra mveletet vgznk rajta.
Trbeli lokatits (Spatial locality): Ha egy memriban trolt adaton mveletet (rs/olvass) vgznk, akkor
valsznleg a kzelben lv adatokon is mveletet fogunk vgezni.
Algoritmikus lokalits (Algorithmic locality): Sok program nagy dinamikus adatszerkezetekkel dolgozik
(lncolt listkkal, fkkal), melyeket jra s jra bejr, klnbz mveleteket vgezve rajtuk. Ez a fajta
elrsi mintzat sem nem idbeli, sem nem trbeli lokalits (hiszen az adatszerkezet nem felttlenl folytonos
a memriban), viszont a szablyos viselkedst esetleg ki lehet hasznlni a gyorsabb vgrehajts rdekben.
Az adott alkalmazstl fgg, hogy a lokalitsi elvek milyen mrtkben rvnyeslnek. A trbeli lokalits
kitnen rvnyesl mdiatartalmak lejtszsnl (hiszen a lejtszs szekvencilisan trtnik), akrcsak szvegszerkesztskor (egy oldal megjelentse utn nagy esllyel a kvetkez, vagy elz oldal tartalmt kell elrni).
Ugyanakkor az idbeli lokalits elvnek ppen a mdialejtszs nem felel meg: a mr lejtszott tartalomra a
kzeljvben valsznleg nem lesz szksg. Az idbeli lokalits gyakran rvnyesl az iteratv algoritmusokban,
pl. egy ciklusban, ahol a ciklus utastsait sokszor ismtelve kell vgrehajtani.
10.2. A trhierarchia
A lokalitsi elvek teht tlcn knljk a lehetsget: a gyakran hasznlt adatokat, s azok krnyezett vigyk
a processzorhoz a lehet legkzelebb, egy olyan memriba, ami olyan gyors, hogy sebessge a processzort a
lehet legkevsb korltozza. Ez a cache memria. A cache memria kialaktsra ltalban SRAM-ot hasznlnak,
szemben az operatv memra cljra hasznlt DRAM-mal (lsd 8.1.1. s 8.1.2. fejezetek). Az SRAM jval
rvidebb elrsi idej a DRAM-nl, de sajnos van pr htrnya: kialaktsa sok tranzisztort ignyel, sokat
fogyaszt s melegszik, gy a cache mrete lnyegesen kisebb az operatv memrinl. Az eddigiek alapjn teht
151
152
r/GB
SRAM
0.5-2.5 ns
2000-5000$
DRAM
50-70 ns
20-50$
5 20 10 ns
0.2$
HDD
CPU Cache
L1 Cache
be
Se
g
lts
L3 Cache
Fizikai memria
ss
g
L2 Cache
DRAM
CPU Cache
Virtulis memria
Httrtr
153
Implicit: Implicit mdon kezelt cache esetn a cache tartalmt maga a cache (ill. a cache vezrl) menedzseli,
az opercis rendszertl s az alkalmazstl fggetlenl dnt a cache s a memria kztti adatmozgatsrl,
vagyis arrl, hogy a memria mely rszei kerljenek be a gyors elrs SRAM-ba ill. ha a cache tele van
mely rszek kerljenek ki belle.
Explicit: Az explicit menedzsment azt jelenti, hogy a fut alkalmazs vagy az opercis rendszer felgyeli a
cache tartalmt, explicit load s store mveletekkel.
A ktfle szempont szerinti csoportosts alapjn az albbi 4 esetet klnbztetjk meg ([26]):
Cmzsi md
Menedzsment
Transzparens cache
Transzparens
Implicit
Szoftver-menedzselt cache
Transzparens
Explicit
nszervez scratch-pad
Nem transzparens
Implicit
Scratch-pad memria
Nem transzparens
Explicit
Transzparens cache esetn az alkalmazs nincs tudatban a cache ltezsnek. A cache a httrben tevkenykedik, prbl a fut alkalmazs s a processzor keze al dolgozni, megbecsli, hogy mely adatok kellhetnek az
alkalmazsnak gyakran a kzeljvben, s azokat a cache memriba mozgatja. Szinte az sszes ltalnos cl
processzorban ilyen cache tallhat.
Scratch-pad memria esetn mindent az alkalmazs vezrel. Tudja, hogy a memrinak mely cmtartomnya
van gyors SRAM-mal megvalstva, s ezt mint egy jegyzetfzetet hasznlja, a gyakran hasznlt adatait odarja,
ha megtelt, dnti el, hogy mit rjon fell. Az alkalmazs tudtn kvl a cache-be semmi nem kerl be. Specilis
clokra rt alkalmazsok szmra elnys lehet, mert teljesen kiszmthat a viselkedse, hiszen nem a hardver
- esetleg szerencstlen - spekulatv dntsei hatrozzk meg a cache tartalmt s ezzel a memriamveletek
sebessgt. DSP-k s mikrokontrollerek elszeretettel hasznlnak scratch-pad memrit.
A szoftver-menedzselt cache-ek nagyon hasonltanak a transzparens cache-ekre abbl a szempontbl, hogy a
cmzs transzparens, teht cmtartomnyban nem klnl el az operatv memritl. A cache a httrben gyeli
az alkalmazs ltal hivatkozott cmeket, s ha van tallat, akkor azt gyorsan fel is oldja, elkerlend az operatv
memria lass elrst. A transzparens cache-hez kpest a klnbsg abbl addik, hogy ha nincs tallat (cache
hiba trtnik, vagyis a hivatkozott adatok nincsenek a cache-ben), akkor nem a cache vezrl gondoskodik a
cache frisstsrl, hanem az elhelyezsi dntseket, a spekulcit az alkalmazsra bzza: meghvja az alkalmazs
erre a clra beregisztrlt szubrutinjt.
Az nszervez scratch-pad ritka megolds. A hardver tmogatja a tartalom menedzselst (mikor, mi kerljn
be a cache-be), de a gyors elrs SRAM memria az operatv memria cmtartomnynak a rsze.
A kvetkez fejezetek az albbiak szerint plnek fel:
A 10.4. fejezet a cache szervezssel foglalkozik, vagyis azzal, hogy hogyan kell a cache-be kerlt adatokat
elhelyezni s abban hatkonyan keresni transzparens s nem transzparens cmzs esetn.
A 10.5. fejezet foglalkozik a tartalom menedzsmenttel, vagyis hogy mikor hozzunk be a cache-be egy j
adatot, s ha nincs hely, kit vegynk ki a cache-bl, implicit vagy explicit menedzsment esetn.
154
A cache szervezs fogalma arrl szl, hogy az operatv memribl behozott blokkokat hova helyezzk el a
cache-en bell, milyen s mennyi jrulkos informcit trolunk, ill. egy memriamvelet esetn hogy talljuk
meg a vonatkoz adatokat a cache-ben. Az albbiakban sorra vesznk nhny elterjedt megoldst, melyekre mind
megvizsgljuk, hogy a kvetkez, fontos szempontok szerint hogyan teljestenek:
Keress sebessge: egy cmrl gyorsan el kell tudni dnteni, hogy benne van-e a cache-ben, s ha benne
van, gyorsan ki kell tudni olvasni a belle a cm ltal hivatkozott adatot.
Egyszersg s alacsony fogyaszts: mivel a cache ltalban a processzorral egy flvezet lapkn van
kialaktva, fontos szempont, hogy kevs helyet foglaljon (hogy tbb hely maradjon a processzor szmra),
valamint hogy a fogyasztsi keretbl minl kisebbet vegyen el.
Teljesen asszociatv szervezs
A teljesen asszociatv cache szervezs (fully associative cache organization) azt jelenti, hogy az operatv memria
brmely blokkjt a cache brmely blokkjba tehetjk. A cache tag ebben az esetben maga a blokk operatv
memriabeli sorszma. A keress gy trtnik, hogy a hivatkozott cmrl levlasztjuk a blokkszmot, s ezt
az sszes cache bejegyzs tag mezjvel sszehasonltjuk. Ezt termszetesen nem gy kell elkpzelni, hogy a
blokkokat sorban, elejtl a vgig bejrjuk s a tag mezket sszehasonltjuk. A cache memriban a tag-eket
tartalom szerint cmezhet memria trolja, amit (kiss egyszerstve) gy lehet elkpzelni, mintha egy-egy
kompartor tartozna hozzjuk (melynek bitszlessge a blokkszm bitszlessge), s gy a keresett blokkszmot az
sszes tag-gel egyszerre, egy lpsben komparljuk. Amelyik cache blokk tag-je tallatot jelez, ott van eltrolva
a hivatkozott adat (10.3. bra).
Ennek a mkdsnek az a htrnya, hogy minden memria hivatkozsnl az sszes tag-et ssze kell hasonltani
a keresett blokkszmmal. Igaz, hogy ez egy lpsben trtnik, de kzben a teljes tartalom szerint cmezhet tag
memria (az sszes kompartor) mkdik, ami fogyaszts szempontjbl nagyon kedveztlen.
Direkt lekpzs
Direkt lekpzs (direct-mapped organization) esetn egy memriabeli blokk szma alapjn egyrtelmen (direkt
mdon) eldl, hogy az a cache melyik blokkjban trolhat. Ennek egy lehetsges (s a knny megvalsthatsg
miatt elterjedt) megoldsa: ha a cache n blokk trolsra alkalmas, akkor a memria m. blokkja a cache-ben
155
az m modulo n-dik blokkba helyezhet el. Termszetesen, mivel a cache kisebb, mit az operatv memria,
tbb memriabeli blokk is ugyanarra a helyre kpezdik le a cache-ben, ekkor versenyhelyzetrl, koniktusrl
beszlnk.
A 10.4. brn lthat pldban 4 blokknyi hely van a cache-ben, az els csak a srga, a msodik csak a piros,
a harmadik csak a kk, a negyedik pedig csak a zlddel jellt memriabeli blokkokat tudja trolni. Ha n kett
hatvnya, akkor a blokkszm als bitjei kzvetlenl megadjk a cache-beli elhelyezkedst (sznt). A pldban
n=4, vagyis a blokkszm als 2 bitje hatrozza meg, hogy a blokk hol lehet a cache-ben. Teht az operatv memria
piros blokkjai csak a cache piros szn blokkjba helyezhet, egy piros blokk vagy ott van, vagy nincs bent a
cache-ben. Ahhoz, hogy megllaptsuk, hogy az a bizonyos piros blokk van a cache-ben, amit keresnk, ssze
kell hasonltani a tag-eket. A cache tag ebben a szervezsben a blokkszmnak az a rsze, ami nem a cache-beli
elhelyezkeds lersra hasznlatos (lsd a 10.4. bra), vagyis elegend azt megnzni, hogy hnyadik piros blokkot
keressk, s hogy a piros trolban ugyanaz a piros blokk van-e. Ennek eldntsben csak a piros blokkokhoz
tartoz cache tag-et kell sszehasonltani a cm megfelel rszvel, teht csak egyetlen sszehasonltsra van
szksg, ami lnyeges fogyasztsi s kltsg szempont. Tovbb az sszehasonltand adatok (azaz a tag-ek)
bitszlessge is kisebb a teljesen asszociatv esethez kpest, ugyanis a tag ebben az esetben rvidebb, mint a
blokkszm.
Teht a keress kt rszbl ll: 1. a blokkszm als bitjei indexelik (kivlasztjk) a megfelel cache blokkot, 2.
az ahhoz tartoz tag-et a blokkszm tag rszvel sszehasonltva llaptjuk meg, hogy megtallhat-e a blokk a
cache-ben.
Operatv memria
Cm
Eltols
Blokk szm
Tag
Index
Tag
Blokk tartalom
Keresett tartalom
=
=
=
156
Operatv memria
Cm
Eltols
Blokk szm
Tag
Index
Tag
Blokk tartalom
Tag
Blokk tartalom
=
=
Keresett tartalom
TLB
Fizikai cm
cache index
Cache
Cache tag
157
kivlasztott cache blokk(ok) tag-einek sszehasonltsa pedig a zikai cmek alapjn trtnhet, remlve, hogy
mire erre sor kerl, a TLB mr vgez a cmfordtssal.
Virtulis cm
cache index
TLB
Cache
Fizikai cm
=
Cache tag
Cache
Cache tag
158
159
Alpha ([15]): az ECB (Evict Data Cache Block) utastssal lehet utalst tenni a processzornak hogy a
megadott cache blokk a kzeljvben nem lesz jra hivatkozva.
Idben nem loklis viselkeds kiszrse
Ha a szoftver (explicit mdon) nem hasznlja ki az utastskszlet ltal biztostott lehetsgeket a cache szemetels
elkerlsre, ms, automatikus (implicit) mdot kell keresni. A szakirodalomban a 90-es vek msodik felben
szp szmban publikltak lersokat klnfle heurisztikkrl, melyek a cache szemetels problmjt kezelik.
Ezek kzl most egy olyan megoldst trgyalunk, amely nem ignyel mdostst a cache szervezsben (teht nem
kvnja meg jabb vezrl bitek karbantartst magban a cache-ben, illetve a keress s trols mechanizmusa is
vltozatlan marad).
Ez az eljrs (Rivers non-temporal streaming cache) megprblja nyomon kvetni a fut program memriar/olvas utastsai nyomn fellp cache tallatok s cache hibk alakulst. Ha egy utasts (pl. egy ciklusban)
nagy szm cache hibt generl, llandan blokkokat kell behozni a kedvrt, de cache tallatot egyltaln nem
produkl, akkor az egy cache szemetel utastsnak minsl, s az ltala hivatkozott blokkokat nem hozzuk be
a cache-be.
Utastsszmll
00
Cache tallat
01
Cache tallat
Cache hiba
Cache hiba
10
Cache tallat
Cache hiba
11
Cache tallat
Cache hasznlat
felfggesztve
160
Explicit menedzsment alatt azt rtjk, hogy rendelkezsre llnak olyan utastsok, melyekkel az alkalmazs
krheti/javasolhatja egy blokk id eltti cache-be tltst.
Implicit menedzsment alatt azt rtjk, amikor a processzor cache prefetch egysge spekulatv mdon prblja
kitallni, hogy az alkalmazsnak milyen adatokra lesz a jvben szksge. Egyszer heurisztikk arra, hogy
mikor s hogyan tltsnk be j elre blokkokat a cache-be:
Ha hivatkozs trtnik az i. blokkra (akr bent van a cache-ben, akr nincs), akkor betltjk a cache-be az
i+1. blokkot is (feltve, ha mg nincs bent), mert felttelezzk, hogy az alkalmazs a trbeli lokalitsnak
megfelelen elbb utbb ahhoz is hozz akar majd frni.
Ha hivatkozs trtnik az i. blokkra s az nincs bent a cache-ben, akkor az i. mellett betltjk a cache-be az
i+1. blokkot is (feltve, ha mg nincs bent), ismt a trbeli lokalitssal indokolva a dntst
Ezek az egyszer heurisztikk nem tl hatkonyak, rezheten tl nagy adatforgalmat bonyoltanak, s a
blokkok tl agresszv id eltti betltse kiszort a cache-bl olyan blokkokat, melyeket tnyleg clszer lenne bent
tartani. J lenne teht ezeknl kinomultabb mdszereket kitallni, melyek tnyleg csak a szksges blokkokat
tltik be id eltt.
Specilis hardver utastsok
Pldaknt felsoroljuk, hogy nhny architektra milyen utastsokat knl adatok id eltti betltsre, vagyis
explicit prefetch menedzsmentre:
x86: PREFETCHT0, PREFETCHT1, PREFETCHT2, PREFETCHNTA: behoznak egy blokkot a cache-be. Az
els hrom utasts kztt a P4 ta nincs klnbsg, a PREFETCHNTA pedig gy hozza be a kvnt blokkot
a cache-be, hogy azt mindig a tbb utas asszociatv cache a blokk ltal kijellt halmaznak els blokkjba
helyezi el. Ezzel elkerlhet a cache szemetels is, hiszen ez az utasts a halmazok tbbi blokkjbl nem
kpes hasznos adatot kiszortani.
PowerPC ([24]): dcbt (Data Cache Block Touch), dcbtst (Data Cache Block Touch for Store): egy blokk
cache-be tltse olvassra/rsra
PA-RISC ([27]): LDD, LDW: egy blokk cache-be tltse rsra/olvassra
Itanium ([3]): lfetch: utasts egy blokk cache-be tltsre
Alpha ([15]): Ha egy norml adatmozgat utastsnl clknt az R31 regiszter van megjellve, akkor azt a
processzor egy id eltti betlts krsnek rtelmezi
A GNU C fordt (gcc) fordt tartalmaz egy beptett fggvnyt: __builtin_prefetch, amely a fordt
ltal tmogatott platformokon platformfggetlen lehetsget knl adatok id eltti cache-be tltsre.
Explicit menedzsmenttel (a felsorolt utastsokkal) akkor rdemes lni, ha az alkalmazs az adatelrseit olyan
minta szerint vgzi, amit a processzor nem tud kiszmtani (ehhez teht elkerlhetetlen megismerni a processzor
implicit menedzsment megoldst is).
Hivatkozsbecsl tbla hasznlata
A szmos implicit prefetch eljrs kzl bemutatunk egyet, amihez hasonl taln a jelenleg elrhet processzorokban a legelterjedtebben hasznlatos. Ez az eljrs ekvidisztns (egymstl azonos tvolsgra lv) adatok
ciklikus feldolgozst kpes id eltti betltssel gyorstani. Arrl van teht sz, hogy egy utasts a memria X.
bjtjnak hivatkozsa utn az X + tv, majd az X + 2 tv, X + 3 tv, stb. bjtjait hivatkozza sorban egyms utn
(pl. egy struktrbl ll tmbn haladva vgig minden elem bizonyos mezjn mveletet vgez). A bemutatott
eljrs kpes az adattvolsgot (tv) megtanulni, s ezt felhasznlva elre dolgozni a cache tltsvel. A cache
szemetels elkerlsnl bemutatott eljrshoz hasonlan most is egy tblzatot tartunk karban (hivatkozsbecsl
tbla), melyben nyomon kvetjk az egyms utni memriahivatkozsok tvolsgt. Ha a tvolsg legalbb egy
rvid idre lland, alkalmazzuk az id eltti betltst.
A mkdst a 10.10. brn lthatjuk ([14]). A hivatkozsbecsl tblban az utastsszmll egy adott
rtkhez egy hash fggvny segtsgvel rendelnk hozz egy bejegyzst. Ebben a bejegyzsben troljuk az
adott utasts ltal legutbb hivatkozott cmet, az eddigi viselkeds alapjn tapasztalt adattvolsgot, valamint
llapotinformcis biteket (jelen esetben kettt). Az llapotinformcis bitek egy vges automata szerint vltoznak.
Ez a vges automata kveti nyomon, hogy az utasts egyms utni hivatkozsai kztt azonos-e a tvolsg.
161
Utastsszmll
Hivatkozs becsl tbla
Elz cm
Tv helyes
Kezd
Tv rossz
Hash fv.
Tv rossz
tv frissts
tmeneti
Tv helyes
OK
es
ely
vh
T
Tv rossz
tv frissts
Tv helyes
Pref. ki
Tv rossz
tv frissts
10.5.4. Cserestratgia
A cache zemi llapota az, hogy tele van. Ebbl kvetkezik, hogy egy j blokk betltse egyben egy bent lv
blokk kiraksval jr (csere trtnik). Krds, hogy a bent lv blokkok kzl melyiket clszer felldozni, hogy a
dnts a rendszer teljestmnye szempontjbl a lehet legkedvezbb legyen.
A lehetsges ldozatok szma (amely blokkok kzl vlasztani lehet) a cache asszociativitsval egyezik.
Direkt lekpzses szervezs esetn nincs dntsi helyzet, a behozott blokk sorszma meghatrozza, hogy hova kell
kerlnie a cache-ben, a mr ott lv blokk pedig kiraksra kerl. Teljesen asszociatv szervezs esetn a behozott
blokk brhova kerlhet, vagyis a teljes cache-bl lehet ldozatot vlasztani. Egy 4 utas asszociatv cache-ben
pedig a behozott blokk sorszma ltal meghatrozott (indexelt) 4 lehetsg van az elhelyezsre.
A potencilis ldozatok kzl tbbfle szempont szerint lehet kivlasztani azt a blokkot, aminek a helyre
vgl a behozott blokk kerl. Az optimlis vlasztshoz sajnos a jvbe kellene ltni, hiszen azt a blokkot lenne a
legjobb kirakni, amelyre a jvben a legksbb (vagy sohasem) lesz hivatkozs. Ez nyilvn nem implementlhat
stratgia. Tipikus, a gyakorlatban is hasznlt cserealgoritmusok:
Random: vletlenszer vlaszts,
Round robin: krben forg elv: elszr az 1-es potencilis ldozatot vlasztjuk, a kvetkez alkalommal a
2-est, majd a 3-ast, s gy tovbb,
Legrgebben hasznlt (Least recently used, LRU): azt a potencilis ldozatot rakjuk ki, amelyre a legrgebben trtnt hivatkozs (az idbeli lokalitsi elv teljeslst felttelezve erre a blokkra lesz a legkisebb
valsznsggel szksg a jvben),
Nem a legutbb hasznlt (Not most recently used, NMRU): a legutbb hivatkozott kivtelvel vletlenszeren
vlasztunk ldozatot,
Legritkbban hivatkozott (Least frequently used, LFU): a behozsa ta legkevesebbszer hivatkozott blokkot
vlasztjuk ldozatnak.
A legnpszerbb cserestratgia az LRU, de mivel azt elg nehz pontosan implementlni (szmolni kell a hivatkozsokat, a csere alkalmval pedig meg kell keresni a legkisebbet) ezrt ennek klnfle kzeltseit szoktk
hasznlni (az NMRU is ilyen: knnyen megvalsthat, s a rgebben hivatkozott blokkok kzl vlaszt).
162
write-no-allocate stratginak hvjk. A legtbb cache megolds nem alkalmaz ilyen megklnbztetst, rs
esetn is behozzk a blokkot a cache-be, vagyis write-allocate stratgit kvetnek.
Transzparens cache esetn, amikor a cache nem nll objektumokat, hanem az operatv memria blokkjainak
msolatait tartalmazza, a memrira vonatkoz rs mveletekkel vatosan kell bnni. A szmtgpben nem
felttlenl a processzor az egyetlen szerepl, melynek hozzfrse van a memrihoz. Ugyanazt a memrit
osztottan hasznlhatja tbb processzor is, valamint a perifrik is (gondoljunk a DMA-ra). Fontos, hogy a memria
s a cache koherens maradjon, vagyis mindig a legfrissebb, napraksz llapotot tartalmazzk.
Memriba rs esetn az operatv memria egy blokkja s annak cache-beli msolata eltr lesz. Egyfell
clszer minden, a cache-be trtn mdostst (rsi mveletet) minl hamarabb tvezetni az operatv memriba,
msfell j lenne az ehhez szksges lass memriamveletek szmt minimalizlni. Ktfle cache rsi stratgit
klnbztethetnk meg:
Write-through stratgia: ha egy cache-ben lv blokkra rsi mvelet trtnik, azt rgtn tvezetjk az
operatv memriba
Write-back stratgia: az rsi mveletek hatsra nem kerl azonnal frisstsre az operatv memria, csak
akkor, amikor a blokk kikerl a cache-bl
A write-through stratgia igyekszik a cache s az operatv memria tartalmt minl gyorsabban sszhangba hozni,
mg a write-back arra jtszik, hogy az rsi mveletek idben s trben loklisak, teht rdemes lehet bevrni
tbb rsi mveletet is mieltt a mdostsokat tvezetnnk az operatv memriba. Egyes architektrk az egyik,
msik a msik stratgit kvetik, mindkettre van plda.
Mivel a cache jval gyorsabb, mint az operatv memria, ezrt az rsi mveletek tvezetse nem gy trtnik,
hogy a processzor megll, s kivrja, mg a lass operatv memria vgez a cache blokk bersval. E helyett egy
gynevezett rsi buert (write buer) alkalmaznak, s a frisstend blokkokat ebbe a buerbe (mely lnyegben
egy FIFO sor) helyezik. Az rsi buer az operatv memria komtos tempjban, a httrben vgzi a mdostott
blokkok frisstst, a processzor feltartsa nlkl. A write-through stratgia teht minden rsi mveletkor, a
write-back pedig a cache-bl val tvozskor helyezi a write-buerbe a mdosult blokkot (ha mg nem volt ott).
A write buer mindig az operatv memria legfrissebb, de mg nem aktualizlt tartalmt trolja, ezrt memria
olvassi mveletek sorn elszr a write buer-ben kell krlnzni, htha a keresett adat pp ott vr kirsra.
163
Cache hibaarny
A valgrind1 programcsomag cachegrind nev eszkze lehetv teszi les (erre a clra elzetesen nem elksztett) programok cache viselkedsnek szimulcijt. Ezzel az eszkzzel egy egyszer alkalmazs cache
viselkedst fogjuk megvizsglni klnfle cache mretek s szervezsek mellett.
Ez az alkalmazs a GNU C fordt lesz2 , mellyel egy hello world! programot fordtunk le. Az eredmnyeket3
a 10.11. bra mutatja be. A cache mret nvelsvel a hiba arny gyors temben cskken. Szintn vrhat volt,
hogy a direkt lekpzs mellett kapjuk a legrosszabb, s teljesen asszociatv szervezs mellett pedig a legjobb
eredmnyeket. Ami nmikpp meglep, hogy mr a 2-utas eset is jelents javulst hoz, a 8-utas pedig alig rosszabb
a teljesen asszociatvnl. A 10% alatti cache hibaarnyhoz a teljesen asszociatv s a 8-utas asszociatv szervezs
mellett 2 kB mret is elegend, mg a kevsb asszociatv szervezsek ehhez 4 kB cache memrit ignyelnek.
22
20
18
16
14
12
10
8
6
4
2
0
Direkt lekpzs
2-utas asszociatv
4-utas asszociatv
8-utas asszociatv
Teljesen asszociatv
10000
20000
30000
40000
50000
60000
Cache mret
http://valgrind.org/
gcc.gnu.org
3
Parancssor: valgrind --tool=cachegrind --D1=<mret>,<asszociativits>,64 gcc -o hellow hellow.c
2
164
L1 cache
L2 cache
L3 cache
Raspberry Pi
(16kB; 4; 32)
(128kB; 4; 32)
RK3188
(32kB; 4; 32)
(512kB; ?; 32)
Pentium 4 Northwood
(8kB; 4; 64)
(512kB; 8; 128)
Core i7-2600
(32kB; 8; 64)
(256kB; 8; 64)
Cmek
rs
Blokkcsere
VF
WB/WT
Random/Round robin
WB/WT
Random/Round robin
Pentium 4 Northwood
VF
WB/WT
pszeudo-LRU
Core i7-2600
VF
WB
pszeudo-LRU
Raspberry Pi
RK3188
11. fejezet
Lokalitstudatos programozs
Az elz fejezetekben lttuk, hogy a memriatartalom gyors elrsben kulcsfontossg szerepet jtszik a
memriahivatkozsok loklis viselkedse. A lokalitst a trhierarchia minden szintje kihasznlja:
A DRAM alap rendszermemriban a szomszdos cmekhez tartoz nyitott sorok elrse gyors. Ha
egy program ssze-vissza cmez a memriban, akkor a sorlezrs s megnyits mveletek miatt n a
memriamveletek ksleltetse.
A virtulis memria-kezels sorn a TLB-ben szerepl lapok cmfordtsa gyors. Ha egy program sszevissza cmez a memriban, akkor sok lesz a TLB hiba, amikor is a processzor lass laptblabejrsra
knyszerl.
A cache memriban szerepl blokkok elrse gyors. Ha egy program ssze-vissza cmez a memriban,
akkor sok lesz a cache hiba, amikor is a processzor a lass rendszermemrihoz knytelen fordulni.
A processzor kihasznlsa rdekben teht a programoznak a trhierarchia keze al kell dolgoznia, s a
programot, amennyire ez lehetsges, gy kell megrni, hogy a memriahivatkozsokra minl inkbb teljesljenek
a lokalitsi elvek.
166
Memriaelrsi id [ns]
1000
i7-2700
P4 Northwood
Raspberry Pi
100 Rockchip RK3188
10
1
1kB
32kB
256kB
8MB
128MB
167
Vletlen lnc
Szablyos lnc, elemenknt
Szablyos lnc, blokkmretenknt
Memriaelrsi id [ns]
Memriaelrsi id [ns]
1000
100
10
Vletlen lnc
Szablyos lnc, elemenknt
Szablyos lnc, blokkmretenknt
100
10
1
1kB
32kB
256kB
8MB
128MB
1kB
256kB
8MB
128MB
a) Intel i7-2600
1000
Memriaelrsi id [ns]
32kB
100
10
Vletlen lnc
Szablyos lnc, elemenknt
Szablyos lnc, blokkmretenknt
1
1kB
32kB
256kB
c) Rockchip RK3188
8MB
100
10
Vletlen lnc
Szablyos lnc, elemenknt
Szablyos lnc, blokkmretenknt
1
128MB
1kB
32kB
256kB
8MB
128MB
d) Raspberry Pi
168
11.2.1. Ciklusegyests
A 11.5. bra kt C nyelv programrszletet mutat be. Mindkettnek ugyanaz az eredmnye, de a b) esetben az
sszes mveletet egyetlen ciklus vgzi el (loop fusion). Szmoljuk ki mindkt megoldsra a cache hiba-arnyt, ha
N (a tmb mrete) nagy, feltve, hogy a cache blokk mret 64 bjt, s a tmbelemek double tpusak (melynek
mrete 8 bjt). Tegyk fel tovbb, hogy i, c, x, s sum elrse nem jr memria-hozzfrssel, azokat a processzor
regiszterei troljk.
Az a) algoritmus els ciklusa vgigstl az a s b tmbkn. Ha cache hiba trtnik, 8 tmbelem kerl a
cache-be, hiszen ennyi double fr el egy blokkba. Ez a ciklus teht 8 lpsenknt fog cache hibt okozni, mind az
a, mind a b tmbk elrse sorn. A ciklusban sszesen 2N memriahivatkozs trtnt, 2N /8 cache hibval. A
kvetkez ciklus ismt vgigmegy a b tmbn. Ha N nagy, akkor a tmb els elemei mr nem lesznek a cache-ben,
hiszen azokat az elz ciklus sorn a tmb hts elemei kiszortottk onnan. Ismt N memriahivatkozst, s N /8
cache-hibt kapunk. Hasonlan szmolhatunk a harmadik ciklusban is, 3N memriahivatkozst s 3N /8 cache
hibt kapunk. sszessgben az a) algoritmus 6N memriahivatkozst vgez, amibl 6N /8 jr cache hibval,
vagyis a cache hiba-arny 1/8, ami 12.5%.
for (i=0; i<N; i++)
b[i] = c * a[i] + x;
sum = 0;
for (i=0; i<N; i++)
sum += b[i];
for (i=0; i<N; i++)
d[i] = a[i] + b[i];
a) Eredeti kd
sum = 0;
for (i=0; i<N; i++) {
b[i] = c * a[i] + x;
sum += b[i];
d[i] = a[i] + b[i];
}
b) Ciklusegyestssel
11.5. bra. Plda a ciklusegyestsre
Most vizsgljuk meg a b) algoritmust. A ciklusmag els sora tovbbra is 2 memriahivatkozst tartalmaz,
s tovbbra is minden 8. lpsben vlt ki cache hibt. A msodik sorban is van egy memriahivatkozs, ez
azonban soha nem okoz cache hibt, hiszen a b[i] rtke az els sor rvn ekkorra mr a cache-ben lesz. A
harmadik sorban 3 memriahivatkozs van, melybl a[i] s b[i] soha nem jr cache hibval, d[i] pedig 8
lpsenknt vlt ki cache hibt. A ciklus 1 krben teht a 6 memriahivatkozsbl 3 1/8 cache hiba lesz.
sszessgben, az egsz ciklus 6N memriahivatkozsbl 3N /8 okoz cache-hibt, a cache hiba arny 6.25%, ami
fele az a) algoritmusnak.
A 11.1. tblzatban lthat, hogy ez az elmleti okfejts hogy jelenik meg a gyakorlatban. Vannak olyan
architektrk, melyekben tnyleg kzel ktszeres a javuls, mg ms architektrkban sokkal kisebb a klnbsg.
Ne felejtsk el, hogy a futsi id nem csak memriahivatkozsokbl ll, a lebegpontos mveletek, s a ciklussal
jr feltteles ugrsok is szmottev vgrehajtsi idt ignyelnek. Az tny, hogy a ciklusegyests mindenhol
gyorsabb futsi idt eredmnyezett.
Az els klszably teht, hogy kerljk a tmbk ismtelt bejrst. Amit lehet, egyetlen ciklusban, egyetlen
rdemes megvalstani.
169
i7-2600
P4 Northwood
Raspberry Pi
RK3188
a) algoritmus
16.533 ms
109.974 ms
698.450 ms
115.354 ms
b) algoritmus
8.469 ms
84.917 ms
203.755 ms
97.126 ms
a) Bejrs sor-folytonosan
b) Bejrs oszlop-folytonosan
11.6. bra. Plda ktdimenzis tmb bejrsra
A kt megolds teht ugyanazt a tevkenysget vgzi, de megfelelen nagy tmbmret (N ) esetn futsi idejk
lnyegesen klnbz. A cache hiba-analzishez tudni kell, hogy a C programozsi nyelvben a ktdimenzis
tmbk a memriban sor-folytonosan helyezkednek el. gy az a) algoritmus lnyegben memria-folytonosan
vgigstl a tmb sszes (N N ) elemn, az elejtl a vgig. A 11.1.2 fejezet megllaptsai alapjn ez a lehet
legszerencssebb bejrs, 64 bjtos blokkmret s 8 bjtos elemmret mellett ez 1/8-os cache-hibaarnyhoz (12.5%)
vezet. Ha a cache prefetch algoritmust hasznl, akkor mg ennl is kevesebb lesz a cache hiba.
A b) algoritmus viszont a memriban N 8 hossz lpseket tesz, hiszen a[i][j] s a[i+1][j] ilyen tvol
vannak egymstl. Ha N > 8, akkor a bels ciklus minden lpse cache hibt eredmnyez. Ha N 8 nagyobb,
mint a cache mrete, akkor a helyzet mg rosszabb, mert amikor a kls ciklus lp egyet a j+1-es oszlopra, az
a[0][j+1] elem mr nem lesz a cache-ben (addigra kiszorul onnan). Ebben az esetben teht a kt egymsba
gyazott ciklus minden egyes memriahivatkozst cache hiba ksri. A b) algoritmus cache hiba-arnya 100%.
i7-2600
P4 Northwood
Raspberry Pi
RK3188
a) algoritmus
6.312 ms
8.973 ms
605.757 ms
14.879 ms
b) algoritmus
6.926 ms
160.78 ms
4363.129 ms
60.96 ms
170
b) Blokkos ciklusszervezssel
11.7. bra. Plda a blokkos ciklusszervezsre
(loop tiling). Ha a blokkok mrett megfelelen sikerl megvlasztani, akkor mind az a[i][j]-vel, mind pedig
az b[j][i]-vel elrt memriatartalmak teljes egszben a cache memriba frnek, s a blokk feldolgozsnak
vgig nem is szorulnak ki onnan (a blokkos s a blokkmentes megoldsok memriaelrsi mintzatt a 11.8 bra
hasonltja ssze). Ezzel a megoldssal a 2 N 2 memriahivatkozsbl csupn N 2 /8 + N 2 /8 cache hiba keletkezik,
teht a cache hiba-arny most csak 12.5%.
a) Egyszer ciklusszervezssel
b) Blokkos ciklusszervezssel
A kpletet alapjn szinte minden programoz a 11.10. brn lthat kddal valstja meg az algoritmust.
A ciklussorrend optimalizlsa
Vizsgljuk meg a naiv implementci cache-beli viselkedst! A hrom egymsba gyazott ciklus sszesen N 3 -szr
hajtja vgre a ciklusmag egyetlen sort. A ciklusmag 4 memriamveletet tartalmaz: a c[i][j], az a[i][j] s a
b[i][j] kiolvasst, valamint a c[i][j] rst. A c[i][j]-t a kt kls ciklus sor-folytonosan jrja be, teht
a 11.2.2. fejezet eredmnyei alapjn N 2 /8 cache hiba keletkezik (64 bjtos cache blokkok s 8 bjtos elemmret
esetn). Vegyk szre, hogy a legbels ciklus c mindig ugyanazon elemt hivatkozza, az ismtelt hivatkozsok
pedig csupa cache tallatot jelentenek. Az a[i][k] kiolvassa N 3 /8 cache hibval jr, hiszen ennek a mtrixnak
a sorait is sor-folytonosan jrjuk be (k szerint). A b[k][j] elrsei azonban nem tl szerencssek: k egymst
kvet rtkei a b egymst kvet soraira vonatkoznak, melyek, ha a sorok elg hosszak, mindig cache hibt
171
300
2500
2000
200
Futsi id [ms]
Futsi id [ms]
250
150
100
50
32
128
512
1000
500
Blokkok nlkl
Blokkokkal
1500
2kB
Blokkok nlkl
Blokkokkal
2
Blokkmret (BLK)
128
512
2kB
1600
8000
1400
7000
1200
6000
Futsi id [ms]
Futsi id [ms]
a) Intel i7-2600
1800
1000
800
600
400
5000
4000
3000
2000
Blokkok nlkl
Blokkokkal
200
0
32
Blokkmret (BLK)
32
128
512
Blokkok nlkl
Blokkokkal
1000
2kB
Blokkmret (BLK)
c) Rockchip RK3188
32
128
512
2kB
Blokkmret (BLK)
d) Raspberry Pi
11.9. bra. A blokkos ciklusszervezs jtkony hatsa klnbz architektrk esetn, N=4096
for (i=0; i<N; i++)
for (j=0; j<N; j++)
for (k=0; k<N; k++)
c[i][j] = c[i][j] + a[i][k]*b[k][j];
11.10. bra. A mtrixszorzs naiv megvalstsa
fognak jelenteni. A b[k][j] elrsei sszesen N 3 cache hibt vltanak ki. Az eredmny c[i][j]-be rsa viszont
sosem okoz cache hibt, hiszen ez az elem a korbbi kiolvass miatt mindig a cache-ben lesz. sszessgben
teht a 4N 3 memriamveletbl N 2 /8 + N 3 /8 + N 3 jr cache hibval, a cache hibaarny (N 2 /8 + N 3 /8 + N 3 )/(4N 3 ),
mely N esetn 9/32 = 28.125%.
A memriamveletek lokalitsnak javtsa rdekben a 11.2.2. fejezet tancsait megfogadva rdemes lehet
optimalizlni a ciklusok sorrendjt. Mivel ez az algoritmus 3 egymsba gyazott ciklusbl ll, sszesen 6-fle
ciklussorrend ltezik. A naiv implementcinak megfelel (ijk) mellett megnzzk a tbbi sorrend viselkedst is.
Elsnek lssuk az (ikj) ciklussorrendet. A c[i][j] elemek kiolvassa N 3 /8 cache hibt okoz, hiszen sorfolytonos elrsrl van sz, s az elbbi (ijk) sorrenddel ellenttben a legbels ciklus sajnos nem ugyanazt az
elemet hivatkozza. Az a[i][k] kiolvassa most is sor-folytonos, de mivel a legbels ciklus mindig ugyanazt
az elemet hivatkozza, csak N 2 /8 hibval kell szmolni. A b[k][j] elrsei gyszintn sor-folytonosak, N 3 /8
cache hibval jrnak. A 4N 3 memriahivatkozsbl N 3 /8 + N 2 /8 + N 3 /8 cache hibt kapunk, amibl az N
hatrtmenettel 1/16 = 6.25% addik. Ez az rtk kevesebb, mint negyede a kiindulsi, naiv algoritmus cache
hiba-arnynak!
A tbbi ciklussorrendre is az eddigiekkel hasonl gondolatmenettel szmthatjuk ki a cache hiba-arnyt, az
eredmnyeket a 11.3. tblzat tartalmazza. Lthat, hogy a naiv implementci a lokalits szempontjbl nem a
legjobb, de nem is legrosszabb. Mind aszimptotikusan, mind vges N rtkekre az (ikj) sorrend a legjobb vlaszts.
Az elmleti eredmnyeket gyakorlati mrsekkel is altmasztjuk, a mr megismert ngy architektrn
keresztl. A 11.11. bra grakonjai a futsi idket brzoljk a mtrixmret fggvnyben. A grakonokon
lthat, hogy vannak architektrk, melyekben kisebb a lokalits szerepe, pldul a kevsb hatkony cache
172
c[i][j] olv.
a[i][k]
b[k][j]
c[i][j] r.
Cache hiba-arny
(ijk)
N 2 /8
N 3 /8
N3
28.125%
(ikj)
N /8
N /8
N /8
(jki)
(kij)
N 3 /8
(jik)
(kji)
N /8
3
6.25%
28.125%
50%
N2
N 3 /8
6.25%
N /8
50%
600
500
(ijk)
(ikj)
(jik)
(jki)
(kij)
(kji)
8000
Futsi id [ms]
700
Futsi id [ms]
10000
(ijk)
(ikj)
(jik)
(jki)
(kij)
(kji)
800
400
300
200
6000
4000
2000
100
0
50
100
150
200
250
300
350
400
450
500
550
50
100
150
4000
400
450
500
550
10000
5000
2000
0
350
(ijk)
(ikj)
(jik)
(jki)
(kij)
(kji)
15000
Futsi id [ms]
Futsi id [ms]
6000
300
(ijk)
(ikj)
(jik)
(jki)
(kij)
(kji)
8000
250
a) Intel i7-2600
10000
200
50
100
150
200
250
300
350
c) Rockchip RK3188
400
450
500
550
50
100
150
200
250
300
350
400
450
d) Raspberry Pi
Blokkos ciklusszervezs
A hrom egymsba gyazott ciklus blokkos szervezsre tbbfle lehetsg is addik. A blokkos szervezs
alkalmazhat mind a hrom ciklusra egyarnt, valamint csupn kt-kt ciklusra korltozva is. Az sszes lehetsg
kiprblsa s sszehasonltsa arra vezetett, hogy a legjobb eredmnyt mindhrom ciklus blokkoss ttele adja.
Pldul az (ijk) ciklussorrend blokkos vltozata a 11.12. brn lthat.
A kt legjobb ciklussorrend esetn (ezek az (ikj), illetve a (kij)) a ciklusok blokkoss ttele egyltaln nem
hozott javulst, a tbbi sorrend esetn azonban a blokkmret fggvnyben kisebb-nagyobb mrtkben gyorsabb
vlt a program. Az eredmnyeket a 11.13. bra mutatja be. Lthat, hogy a korbban legjobbnak tallt kt
173
600
500
(bi,bj,bk,i,j,k)
(i,k,j)
(bj,bi,bk,j,i,k)
(bj,bk,bi,j,k,i)
(k,i,j)
(bk,bj,bi,k,j,i)
20000
Futsi id [ms]
700
Futsi id [ms]
25000
(bi,bj,bk,i,j,k)
(i,k,j)
(bj,bi,bk,j,i,k)
(bj,bk,bi,j,k,i)
(k,i,j)
(bk,bj,bi,k,j,i)
800
400
300
200
15000
10000
5000
100
0
10
100
10
Blokkmret [bjt]
a) Intel i7-2600
25000
15000
10000
5000
0
(bi,bj,bk,i,j,k)
(i,k,j)
(bj,bi,bk,j,i,k)
(bj,bk,bi,j,k,i)
(k,i,j)
(bk,bj,bi,k,j,i)
60000
Futsi id [ms]
Futsi id [ms]
(bi,bj,bk,i,j,k)
(i,k,j)
(bj,bi,bk,j,i,k)
(bj,bk,bi,j,k,i)
(k,i,j)
(bk,bj,bi,k,j,i)
20000
100
Blokkmret [bjt]
50000
40000
30000
20000
10000
10
Blokkmret [bjt]
c) Rockchip RK3188
100
10
100
Blokkmret [bjt]
d) Raspberry Pi
174
12. fejezet
Szmpldk, feladatok a
memriakezels tmakrben
12.1. Feladatok a memriatechnolgik tmakrben
1. feladat
Egy szmtgp rendszermemrija egycsatorns, 64 bites adategysgekkel rendelkez DDR1-DRAM-ra pl,
melyben a burst mret 8 adategysgnyire van belltva.
A tbb bank-os s tbb rank-os felptstl most tekintsnk el.
A memria ksleltetsek legyenek az albbiak (rajelek szmban megadva):
TRP = 4 (a PRECHARGE parancs vgrehajtshoz szksges id)
TRCD = 5 (ennyi ideig tart egy sor megnyitsa)
TCAS = 9 (egy nyitott sor egy oszlopnak a kiolvasshoz szksges id. Az olvass parancs utn ennyi id
mlva jelenik meg az els adat a modul adatbuszn)
A memriavezrlhz berkez 64 bjtos (teht 1 burst-nyi) olvassi krsek az albbi sor, oszlop koordintkra
vonatkoznak:
(3. sor, 8. oszlop), (3. sor, 2. oszlop), (7. sor, 9. oszlop)
Kezdetben a 7. sor van nyitott llapotban. Az utols parancs utn a memriavezrl nem zrja le a nyitott
sort.
(a) Adja meg a fenti krsekhez tartoz, memriavezrl ltal kiadott DRAM parancsokat (sorrendhelyesen),
FCFS, valamint FR-FCFS temezs mellett! (Feltesszk, hogy a 64 bjtos krsek nem lgnak tl az adott
soron.)
(b) Az FCFS temezst alapul vve hnyadik rajelben jelenik meg a (3. sor, 8. oszlop) krsre rkez els adat a
memriamodul adatbuszn? s a (3. sor, 2. oszlop) krsre rkez utols adat?
Megolds
(a) FCFS temezs esetn a 3. sor megnyitsa eltt le kell zrni az pp nyitott 7. sort. FR-FCFS esetn azonban
pp kapra jn, hogy a 7. sor nyitva van, hiszen gy a harmadik krs elrehozhat, s ezzel egy nyits-zrs
parancspr megsprolhat. A parancsok sorrendje az albbi:
175
176
PRECHARGE
ACTIVATE 3
READ 8
READ 2
PRECHARGE
ACTIVATE 7
READ 9
READ 9
PRECHARGE
ACTIVATE 3
READ 8
READ 2
(b) Mieltt a (3. sor, 8. oszlop) krsre megrkezne az els adat, ki kell vrni egy PRECHARGE ksleltetst
(TRP = 4), egy ACTIVATE ksleltetst (TRCD = 5), valamint a READ parancs ksleltetst (TCAS = 9). sszesen
teht 4 + 5 + 9 = 18 rajel mlva rkezik meg az els adat az adatbuszon. Ezutn 4 rajel szksges a burst
tvitelhez (hiszen a DDR1 az rajel fel- s lefut ln is kpes adatot tvinni, a burst hossza pedig 8), s
tovbbi 4 rajel a kvetkez, (3. sor, 2. oszlop)-ra vonatkoz krs utols adategysgnek tvitelhez. A
(3. sor, 2. oszlop)-ra vonatkoz krs utols adategysge teht 4 + 5 + 9 + 4 + 4 = 26 rajel mlva jelenik
meg az adatbuszon. Vegyk szre, hogy az tlapolt feldolgozs miatt nem kellett mg egy READ ksleltetst
gyelembe venni (lsd: 8.6. bra).
177
(b) Mivel 4 bit azonostja a lapokat, 24 = 16 lap van, mindegyikhez 8 bites (=1 bjtos) bejegyzs tartozik, vagyis a
laptbla mrete 16 bjt.
(c) A lapok 12 bitesek, a zikai memria 15 bites, teht a keretek azonostsra 3 bit marad, vagyis 23 = 8 lap fr
a zikai memriba.
(d) Az egyszintes laptblt nagyon knny kiolvasni. A 3. lap helyt a 3. bejegyzs adja meg, mely szerint ez a
lap a zikai memriban van (hiszen valid=1), mgpedig a 2-es kereten. Hasonlkppen a 6. bejegyzsbl
kiolvashatjuk, hogy a 6. lap az 1. kereten tallhat. A 11-es laphoz tartoz bejegyzsben a valid=0 jelzi, hogy
ez a lap a httrtrra kerlt.
(e) A feladatban krt vltoztatsokat ugyanebben a szellemben kell elvgezni: a 6-os laphoz valid=0-t runk, a
11-eshez valid=1-et, s 1-es keretet, stb. Vgl az albbi llapotot kapjuk:
(f) TLB tallat esetn egy memriamvelet sem kell (hiszen a TLB a processzorban van), TLB hiba esetn egyetlen
memriamvelettel kiolvashat a memribl a cmfordtshoz szksges bejegyzs.
178
3. Feladat
Legyenek a virtulis cmek 16 bitesek, a zikai cmek 15 bitesek, a lapmret legyen 212 = 4 kB mret. Hasznljunk
2 szint hierarchikus laptblt, minden szintre egyforma szles indexekkel, 16 bites bejegyzsekkel.
(a) A virtulis cmekben hny bit tartozik a lapon belli eltolshoz s hny a klnbz szint laptblk indexelshez? Rajzolja fel a virtulis cmek tagozdst!
(b) Mekkora az sszes laptbla sszegzett mrete?
(c) Optimlis krlmnyek kztt mennyi a laptblk ltal elfoglalt memria minimlis mrete? Mennyivel
kisebb ez, mintha egyszint laptblt hasznlnnk?
(d) Hny lap fr a zikai memriba?
(e) Legyen a laptbla aktulis llapota a kvetkez:
(b) Mivel 2 bites laptbla indexeink vannak, egy laptbla mrete = 22 bejegyzs mrete = 8 bjt. Els szint
laptblbl 1 db van, msodszintbl 4 db, egyenknt 8 byte-osak, sszesen teht 5 8 = 40 bjtot foglal az
sszes laptbla egyttvve.
(c) A minimumot gy kapjuk meg, ha minden hierarchia szintbl csak egyetlen egy van a zikai memriban:
2 8 = 16 bjt. Egyszint esetben az egyetlen laptblnak mindig a memriban kell lennie. Ha egyszint
lenne a laptbla, 24 = 16 bejegyzs kellene, teht a laptbla mrete mindig 16 2 = 32 bjt lenne. Ez ugyan
kisebb, mint a ktszint maximlis mrete (ami 40 bjt), de jval nagyobb, mint a ktszint minimlis mrete.
179
(d) Az eltols mez 12 bites, a zikai memria 15 bites, teht a keretek azonostsra 3 bit marad, vagyis 23 = 8
lap fr a memriba.
(e) A ktszint laptbla kiolvassa egy ktszint fa bejrshoz hasonlt. A 3-mas lap elhelyezkedsnek kidertshez elszr le kell vlasztani az els- s a msodszint laptbla indexeket. Mivel a 3 binrisan 0011, az
elsszint laptblaindex 00, vagyis 0, a msodszint pedig 11, vagyis 3. A keresett laptbla bejegyzs gy a 0.
elsszint laptbla bejegyzs ltal mutatott msodszint laptbla 3. bejegyzse. Itt valid=1 tallhat, gy a lap
a memriban van, mgpedig a 2-es kereten. Ugyangy jrunk el a 10-es bejegyzssel is. Mivel a 10 binrisan
1010, mind az els, mind a msodszint index 10, azaz 2. Az els szint laptbla 2-es bejegyzse ltal mutatott
msodszint laptbla 2-es bejegyzsben valid=1-et, s 1-es keretet tallunk. Vgl, a 11-es laphoz a 10-es lap
utni bejegyzs tartozik, ahol a valid=0 jelzi, hogy ez a lap ppen a httrtron van.
(f) A feladatban krt vltoztatsok elvgzse utn az albbi llapotot kapjuk:
(g) TLB tallat esetn egy memriamvelet sem kell (hiszen a TLB a processzorban van), TLB hiba esetn viszont
kt memriamveletre van szksg, mire elrjk a msodszint laptblt, amiben a cmfordtshoz szksges
keret szma megtallhat.
4. Feladat
Legyenek a virtulis cmek 16 bitesek, a zikai cmek 13 bitesek, a lapmret legyen 210 = 1 kB mret. Hasznljunk
inverz laptblt, melyben a hash fggvny rtke a virtulis cm 10.-13. bitje ltal meghatrozott szm. A
laptblabejegyzsek mrete 16 bit.
(a) A virtulis cmekben hny bit tartozik a lapon belli eltolshoz s hny a lapok azonostshoz? Rajzolja fel a
virtulis cmek tagozdst!
(b) Hny lap fr a zikai memriba?
(c) Mekkora a teljes laptbla mrete? Mennyivel kisebb ez, mintha egyszint laptblt hasznlnnk? Mekkora a
hash mutat tbla mrete?
(d) Legyen a laptbla aktulis llapota a kvetkez:
180
10 bit
Lapszm
Eltols
(b) Az eltols mez 10 bites, a zikai memria 13 bites, teht a keretek azonostsra 3 bit marad, vagyis 23 = 8
lap fr a memriba.
(c) Az inverz laptbla jellegzetessge, hogy mrete a keretek szmval azonos. Jelen esetben 8 keret van, teht a
laptbla mindssze 8 bejegyzsbl ll, s mivel minden bejegyzs 2 bjtos, a laptbla mrete: 8 2 = 16 bjt.
Ha egyszint lenne a laptbla, 26 = 64 bejegyzs kellene, teht a laptbla mrete mindig 64 2 = 128 bjt
lenne. A hash fggvny a cm megadott 4 bitjhez rendel hozz egy laptbla indexet. Mivel 4 bitet hasznl,
rtkkszlete 24 = 16, vagyis 16 bejegyzs szksges. Minden bejegyzs egy laptbla index, s mivel csak 8
elem a laptbla, a laptbla indexet 3 bittel le lehet rni. Tovbbi 1 bitre van szksg, amivel jelezzk, hogy
rvnyes-e a mutat (nem NULL-e). Teht a hash mutat tbla mrete: 16 4 = 64 bit, = 8 bjt.
(d) A bejegyzsek megkeresshez elszr ki kell szmtani a lapszmra a hash fggvny rtkt, amely jelen
esetben a virtulis cm 10-13. bitje, vagyis a lapszm utols 4 bitje. A 000011-es lapra ez 0011 (decimlisan 3).
A hash mutat tbla ezen bejegyzse rvnyes elemet tartalmaz, mgpedig az 1-es laptbla bejegyzst. Nzzk
teht a laptbla 1-es bejegyzst, melynek a lapszm mezjben pont megtalltuk a keresett lapunkat, vagyis
a 000011-et. A laphoz tartoz keret az 1-es, mivel a laptbla 1-es keretben talltuk meg ezt a bejegyzst.
181
Most lssuk a kvetkez lapot, az 101011-t. Ennek hash rtke 1011 (decimlisan 11), melyre nincs rvnyes
hash tbla bejegyzs, vagyis ez a lap a httrtron tallhat.
A kvetkez lap, a 010100-s hash rtke 0100. A hash tbla a 7-es rtket tartalmazza, vagyis a laptbla
7-es bejegyzsben kell folytatnunk a keresst. A 7-es bejegyzsbl ltjuk, hogy az ott lv lap nem az, amit
keresnk (br ugyanaz a hash rtke). Viszont a valid=1 mezbl megtudjuk, hogy a kvetkez mez
rvnyes elemet tartalmaz, aminek mentn folytathatjuk a keresst. Jelen esetben az 5-s bejegyzssel. Az
5-s bejegyzs lapszm mezje pedig megegyezik az ltalunk keresettel, teht a 010100-s lap az 5-s kereten
tallhat.
Vgl, a 001010-s lap hash rtke 1010, mely a hash tblban rvnyes, a 4-es bejegyzsre mutat. A laptbla
4-es bejegyzse nem a keresett lap, s a valid=0 miatt a keresst nem folytathatjuk a kvetkez mez mentn,
arra a konklzira jutunk, hogy ez a lap a httrtron tallhat.
ltalnossgban, a processzor cmfordtskor ugyanezt az utat jrja be: kiszmolja a hash rtkt, s bejrja a
lncolt listt, mg meg nem tallja azt a keretet, amiben pont a keresett lap van.
(e) Az 101000 lappal knny a dolgunk, mert a hash tbla megfelel eleme (1000) mg nem tartalmaz rvnyes
bejegyzst. Mivel a lap a 6-os keretre kerl, a laptbla 6-os bejegyzsbe berjuk a lap szmt, s a hash tbla
1000-s bejegyzsbe pedig 6 kerl.
Most az 100100 diszkre kerlst kell a laptblban leadminisztrlnunk. A processzor a 0100 hash rtkbl
kiindulva rgtn megtallja a 7-es kereten, s ebbl a bejegyzsbl trli. Ebben a bejegyzsben azonban a
valid=1 jelzi, hogy van mg gyszintn 0100 hash rtkkel rendelkez lap, az 5-s kereten. gy a hash tblt is
frissteni kell, hiszen ezentl a 0100 hash rtkkel kezdd lapokat nem a 7-es, hanem az 5-s bejegyzstl
kezdve kell keresni.
Vgl be kell jegyeznnk, hogy a 110110 lap a 2-es kereten tallhat. A laptbla 2-es keretbe berjuk ezt a
lapszmot. Ezutn a processzor szleli, hogy a hash tbla 0110 bejegyzse rvnyes, s vgigjrja a lncot,
kezdve a 0-s bejegyzssel, s folytatva a 3-mas bejegyzssel. Ezt a lncot kellene kiegszteni az j lapunkkal,
azaz a 3-mas bejegyzsben, ahol a lnc vgzdik, a valid bitet 1-be lltjuk, s a kvetkez mezt a 2-es
keretre irnytjuk. gy a processzor, amikor 0110 vg lapot keres, a mi 110110-s lapunkhoz is eljut (igaz,
hogy mr hrom lpsben).
A hrom mdosts elvgzse utn a laptbla tartalma:
(f) TLB tallat esetn egy memriamvelet sem kell (hiszen a TLB a processzorban van). TLB hiba esetn a
legjobb esetben 2 memriamvelet kell: 1 a hash mutat tbla kiolvasshoz, 1 az ltala kijellt laptbla
bejegyzs kiolvasshoz (ahol a legjobb esetben pont a keresett lapszmot ltjuk viszont). A legrosszabb
helyzet abban a valszntlen esetben ll fenn, ha sok, a zikai memriban trolt lap hash-e azonos. Mivel a
lapszmnak csak 2 bitje nem vesz rszt a hash kpzsben, sszesen 4 laphoz tartozhat azonos hash. Ekkor a
182
5. Feladat
Egy processzor hasznljon 4 bejegyzses TLB-t a cmfordts gyorstsra. A TLB egy adott pillanatban a kvetkez
kt rvnyes sszerendelst tartalmazza:
Valid
Lapszm
Keretszm
88
90
1399
843
A laptbla legyen virtualizlt, az als szint a 86. lapon kezddik, egy szelete az albbi brn lthat (krkbe
rt szmok jelzik, hogy a laptblk melyik keretben vannak):
32
1. szint laptbla
49
228
2. szint laptbla
3. szint laptbla
52
138
90
513
19
Legyenek a virtulis cmek 42 bitesek, az eltols mez legyen 12 bites, a laptblk minden szinten 1024
bejegyzst tartalmaznak, minden bejegyzs mrete 4 byte. A lapok mrete 4 kB. A zikai cmek 32 bitesek.
Hnyszor kell a zikai memrihoz nylni, amikor az albbi lapok cmfordtst vgzi a processzor? Melyik
keret hnyadik byte-jt s milyen sorrendben kell kiolvasni a zikai memribl a cmfordts kedvrt? Ttelezzk
fel, hogy minden rintett lap a zikai memriban van!
(a) 1399
(b) 2064
(c) 4101
Megolds
(a) Az ehhez a laphoz tartoz sszerendels megtallhat a TLB-ben, teht egyszer sem kell a zikai memrihoz
nylni. Az 1399-es lap a 843-as kereten tallhat.
(b) Elszr is kiszmoljuk a laphoz tartoz laptbla bejegyzs virtulis cmt. A laptbla hierarchia legals
szintje, ami a lap keret sszerendelseket tartalmazza, a 86. lapon kezddik. Mivel egy laptbla 1024
bejegyzst tartalmaz, a 2064 sszerendelst tartalmaz bejegyzs a 88. lapon tallhat (annak 2064-2048
= 16. bejegyzse). Most megnzzk a TLB-t, s rmmel ltjuk, hogy a szksges bejegyzs zikai cmt a
TLB alapjn ki tudjuk tallni: a bejegyzs cme a 90-es keret 16*4-edik bjtja, vagyis 368704. Teht a zikai
183
memribl kiolvassuk a 368704-rl a szksges laptbla bejegyzst, amibl ki tudjuk olvasni a 2064-es laphoz
tartoz keretet. Csak egyetlen egyszer kellett a zikai memrihoz fordulni!
(c) Akr az elbb, kiszmoljuk a 4101-as laphoz tartoz laptbla bejegyzs virtulis cmt: a 90-es lap (86+4101/1024
egsz rsze) 5. bejegyzse, vagyis a 90-es lap 20. bjtja. Sajnos a 90-es laphoz tartoz keretet a TLB nem
tartalmazza. Nincs ms vlasztsunk: a hierarchikus laptblknl megszokott mdon vgig kell stlni az
sszes szinten, hogy megtalljuk a bejegyzst: 3 szintnk van, 3 memriaolvassra lesz szksg. A 90-es
lapot keressk: elszr az els szint laptbla 0. elemt kell kiolvasni a memribl (32-es keret legeleje:
32*4096 = 131072), majd ez tartalmaz egy mutatt az els msodik szint laptblra (228-as keret), ahol a
4-edik bejegyzs tartalmazza a mutatt arra a laptblra, amely a 4096 s a 5120 kztti lapok sszerendelseit
tartalmazza. Ez a 4. bejegyzs a 16. bjtnl kezddik (228*4096+16 = 933904). Innen kiolvastuk a vonatkoz
legals szint laptblhoz tatoz keret cmt (19) s ennek az 5. bejegyzse lesz a cmfordtshoz szksges
sszerendels (19*4096+5*4 = 77844). Ezt kiolvasva mr el tudjuk vgezni a cmfordtst.
Teht a zikai memribl az albbi cmekrl kellett olvasni, ebben a sorrendben:
(a) Els szint laptbla bejegyzs: 131072
(b) Msodik szint laptbla bejegyzs: 933904
(c) Harmadszint laptbla bejegyzs: 77844
(a) Adja meg a laptbla s a TLB tartalmt a fenti laphivatkozsok utn! Ha az opercis rendszer egy jabb lapot
akar a zikai memriban elhelyezni, akkor egy bent lv lapot ki kell vennie onnan. A soron kvetkez
kiszemelt ldozatok legyenek az 1-es, majd az 5-s lapok. Lapcsere esetn, ha a memribl kikerlt laphoz
tartozik TLB bejegyzs, akkor az opercis rendszer azt az egy TLB bejegyzst rvnytelenti.
184
(b) Kt TLB tallat volt, a msodik hivatkozs (a 12-es lapra), s az tdik hivatkozs (a 13-mas lapra).
(c) Egy laphiba volt, a harmadik hivatkozs (a 7-es lapra).
7. Feladat
Egy virtulis trkezelsre kpes processzor 14 bites virtulis s 13 bites zikai cmeket tmogat. A lapmret
1024 bjt (=210 ). A cmfordtshoz ktszint laptblt hasznl, valamint egy 4 bejegyzses, LRU algoritmussal
menedzselt teljesen asszociatv TLB-t.
A fut program sorban egyms utn az albbi lapokra hivatkozik:
185
(a) Adja meg a laptbla s a TLB tartalmt a fenti laphivatkozsok utn! Ha az opercis rendszer egy jabb lapot
akar a zikai memriban elhelyezni, akkor egy bent lv lapot ki kell vennie onnan. A soron kvetkez
kiszemelt ldozatok legyenek az 1-es, majd az 5-s lapok. Lapcsere esetn az opercis rendszer a TLB teljes
tartalmt rvnytelenti.
(b) A megadott hivatkozsokbl hny esetn volt TLB tallat?
(c) A megadott hivatkozsokbl hny esetn volt laphiba?
Megolds
(a) A megolds hasonl az elz feladat megoldshoz, hiszen a lap keret sszerendelsek, valamint a TLB
kezdeti tartalma ugyanaz. Az egyik eltrs a laptbla adatszerkezet, melynek hasznlatt a korbbiakban
mr megismertk, bejrsa a lapszmok binris alakjnak ismeretben egyszer (13=1101, 12=1100, 7=0111,
2=0010). A msik eltrs, hogy laphiba esetn most a teljes TLB-t rvnytelenteni kell.
A laptbla vgs llapota s a TLB bejegyzsek az egyes hivatkozsok utn a kvetkezkppen alakulnak:
186
8. Feladat
Egy virtulis trkezelsre kpes processzor 16 bites virtulis s 13 bites zikai cmeket tmogat. A lapmret 1024
bjt (=210 ). A cmfordtshoz inverz laptblt hasznl, melyben a hash fggvny rtke a virtulis cm 10.-13. bitje
ltal meghatrozott szm. A TLB 4 bejegyzses, teljesen asszociatv, LRU algoritmussal menedzselt.
A fut program sorban egyms utn az albbi lapokra hivatkozik:
010100, 000110, 110100, 000011, 010100.
A laptbla s a TLB tartalma kezdetben a kvetkez:
(a) Adja meg a hash mutat tbla, a laptbla s a TLB tartalmt a fenti laphivatkozsok utn! Ha az opercis
rendszer egy jabb lapot akar a zikai memriban elhelyezni, akkor egy bent lv lapot ki kell vennie onnan.
A soron kvetkez kiszemelt ldozatok legyenek az 100110-s, majd az 100100-s lapok. Lapcsere esetn, ha a
memribl kikerlt laphoz tartozik TLB bejegyzs, akkor az opercis rendszer azt az egy TLB bejegyzst
rvnytelenti.
(b) A megadott hivatkozsokbl hny esetn volt TLB tallat?
(c) A megadott hivatkozsokbl hny esetn volt laphiba?
Megolds
(a) Az els lap, a 010100 nincs a TLB-ben, teht meg kell keresni a laptblban. A hash rtk 0100, melyre a hash
mutat tbla 7-et tartalmaz. A laptbla 7-es bejegyzstl kezdve a lncolt listn haladva az 5. bejegyzsben
talljuk meg a lapot. A TLB-be teht, a harmadik (rvnytelen) sorba berjuk a 010100 5 sszerendelst, s
frisstjk a kor mezket.
A msodik lap, a 000110 benne van a TLB-ben, teht csak a kor mezket kell frissteni, hiszen a 000110 lesz
a legutbb hivatkozott, a tbbi pedig hozz kpest regszik.
Az 110100 lap megkeresshez a hash tbla ltal mutatott 7-es bejegyzstl indulunk, de a lncolt lista bejrsa
utn arra jutunk, hogy nincs bent a zikai memriban, laphiba trtnt. Mivel nincs szabad keret, ldozatot
kell vlasztani, s annak a helyre kell betenni. Az ldozat a feladat szerint az 100110 lap, melyet elszr el
kell tvoltani. Ez a lap szerepel a 0110 hash rtkkel rendelkez lapok lncban, ahonnan most ki kell fzni
(a 0. laptbla bejegyzsbe valid=0 s kvetkez=? kerl). A helyre berhat az 110100, amit viszont be kell
187
fzni a 0100 hash rtkkel rendelkezk listjba (az 5. bejegyzsbe valid=1 s kvetkez=3 kerl). A TLB-t is
frissteni kell, a legrgebbi elem helyre eltroljuk az 110100 3 sszerendelst, s frisstjk a kor mezket.
A 000011 nincs a TLB-ben, de a 0011 hash rtk mentn elindulva azonnal megtalljuk a laptbla 1-es
bejegyzsben. A TLB legrgebbi elemnek helyre berjuk, hogy 000011 1, s frisstjk a kor mezket.
Vgl az 010100 lap benne van a TLB-ben, csak a kor mezk frisstse szksges.
A laptbla s a hash mutat tbla vgs llapota:
188
Megolds
(a) Direkt lekpzs esetn az LRU-nak nincs szerepe. Azt, hogy egy blokk hova kerl a cache-be, a blokk szmnak
4-el val osztsi maradka hatrozza meg. Az egysges jells kedvrt az azonos index cache blokkokat
egyms al rjuk, gy most a cache pillanatnyi llapota 4 egyms al rajzolt blokkbl ll. A cache tartalma az
albbiak szerint alakul.
Valid
Blokk
Valid
Blokk
Valid
Blokk
Valid
0
1
0
0
?
1
?
?
0
1
0
1
?
1
?
3
1
1
0
1
8
1
?
3
1
1
0
1
Blokk
84
1
?
3
Valid
1
1
0
1
Blokk
84
1
?
3
Valid
1
1
1
1
Blokk
84
1
6
3
Valid
Blokk
1 8 48
1
1
1
6
1
3
Valid
Blokk
1 8 48
1
1
1
6
1
3
10. Feladat
Vegynk egy 32 kB mret cache-t 64 byte-os blokkmrettel. A CPU rendelkezzen 32 bites zikai, 48 bites virtulis
cmekkel.
4-utas asszociatv szervezs mellett hny darab s hny bites sszehasonltst kell vgezni egy keress sorn,
ha
189
11. Feladat
Vegynk egy 512 byte mret cache-t 64 byte-os blokkmrettel. A cache zikai cmeket hasznl mind az indexelshez, mind a tag-ekhez. A zikai cmek 16 bit szlesek.
Egy program az albbi memriacmekrl olvas (ebben a sorrendben):
13, 136, 490, 541, 670, 74, 581, 980
(a) Adja meg a fenti cmekhez tartoz tag, index s eltols mezket
teljesen asszociatv szervezs
direkt lekpzs
kt utas asszociatv szervezs
esetn.
(b) Adja meg a cache vgs tartalmt mind a 3 esetben, LRU algoritmus mellett! (A cache kezdetben csupa
rvnytelen blokkot tartalmaz)
Megolds
(a) Elszr is, az 512 byte-os mret 8 blokk trolst teszi lehetv. Mivel a blokkok mrete 64 byte, mindhrom
esetben 6 bites lesz az eltols mez. A tovbbi mezk mrete a cache szervezstl fgg:
Teljesen asszociatv szervezs esetn nincs indexels, minden blokk brhova kerlhet. Index: 0 bit, tag:
16 6 = 10 bit.
Direkt lekpzs esetn a cache-nek mind a 8 blokkja direktben az index mezvel kerl kivlasztsra,
teht az index mez 3 bites. A maradk 16 3 6 = 7 bit lesz a cache tag-ek mrete.
Kt utas asszociatv szervezs esetn minden blokk kt helyre kerlhet a cache-ben. Teht a cm indexe
alapjn a 4 darab 2 utas trol egyikt kell kijellni. A 4 fle indexhez 2 bit szksges, a tag-ek teht
16 6 2 = 8 bit szlesek lesznek.
A memriacmek felbontsa ennek megfelelen trtnik. A blokk szm s az eltols sztvlasztshoz a cmet
el kell osztani 64-el, az eredmny egsz rsze a blokk szma, a maradk a blokkon belli eltols. A blokk
szmbl direkt lekpzs esetn 8-al, a 2 utas asszociatv esetben pedig 4-el val oszts maradkaknt kapjuk
az indexet, egsz rszeknt pedig a cache tag-et. Ennek megfelelen:
190
136
490
541
670
74
581
980
Eltols:
13
42
29
30
10
20
10
15
(b) Vegyk szre, hogy 8 blokknyi hely van a cache-ben, s mi pont 8 adatot akarunk elhelyezni, a teljesen
asszociatv szervezs pedig semmilyen megktst nem r el a blokkok elhelyezsre. Vagyis a helyes
megolds: teljesen asszociatv szervezs mellett a cache a vgs llapotban az sszes blokkot tartalmazza,
tetszleges sorrendben.
Direkt lekpzs esetn a blokkok elhelyezse egyrtelm, az index meghatrozza. sszesen 4-szer fordul el,
hogy korbban mr szerepl blokkot fell kell rni, teht csak 4 blokk lesz a vgn a cache-ben.
2-utas asszociatv esetben 2 azonos index blokkot is trolni tudunk. Ezzel egytt ebben a konkrt pldban
egyszer sem fordul el, hogy fell kell rni egy korbbi blokkot, teht a vgn 8 blokk lesz a cache-ben.
A megoldshoz tartoz bra:
Direkt lekpzs:
Valid
Tag
1
1
1
0
0
0
0
1
1
1
1
?
?
?
?
1
Valid
Tag
1
1
1
1
2
2
2
3
Blokk tartalom
Valid
Tag
1
1
1
1
0
0
0
1
Blokk tartalom
IV. rsz
A processzor
191
13. fejezet
194
IF
t+1
ID
IF
t+2
EX
ID
IF
t+3
t+4
t+5
t+6
t+7
t+8
MEM
WB
EX
MEM
WB
ID
EX
MEM
WB
EX
MEM
WB
ID
EX
MEM
WB
ID
EX
MEM
IF
ID
IF
IF
t+9
WB
195
ideig tart. Pipeline feldolgozs esetn minden utastst minden fzison t kell tolni (legfeljebb az aritmetikai
utastsokkal a MEM, a Store-okkal a WB fzis nem csinl semmit), s a pipeline ciklusideje a legidignyesebb
fzis idejvel egyezik meg, vagyis minden utasts feldolgozsa T = 5 max{TIF , TID , TEX , TMEM , TWB } ideig tart,
ami nyilvnvalan hosszabb a pipeline nlkli vgrehajtsi idnl. Paradox mdon a pipeline feldolgozs mgis
hatkonyabb, ugyanis az tlapolt utasts-vgrehajts rvn - idelis esetben - minden ciklusidben befejezdik
egy utasts (lsd 13.2. bra).
Pipeline-al:
R1MEM[R0+42]
IF
ID
R2MEM[R0+46]
IF
R3R4+R5
EX
MEM
WB
ID
EX
MEM
WB
ID
EX
MEM
WB
ID
EX
MEM
IF
MEM[R0+50]R6
IF
WB
Pipeline nlkl:
R1MEM[R0+42]
IF
ID
EX
MEM
WB
R2MEM[R0+46]
IF
ID
EX
MEM
WB
R3R4+R5
IF
ID
EX
WB
MEM[R0+50]R6
IF
ID
EX
MEM
id
IF
ID/EX
ID
EX/MEM
EX
MEM/WB
MEM
WB
196
A pipeline mkdse - az utasts-vgrehajts 1. fejezetben lert mdja ismeretben - teht az albbi mdon
trtnik:
1. Az IF fzis lehvja az utastsszmll ltal mutatott utastst, s megnveli az utastsszmllt gy, hogy
az a kvetkez utastsra mutasson. Mind magt az utastst, mind az utastsszmll megnvelt rtkt
elhelyezi az IF/ID regiszterben.
2. Az ID fzis az utastst dekdolja, s ellltja a tovbbi fzisok szmra a vezrl jeleket (pl. hogy az
ALU-nak, ha majd odar az utasts, sszeadst, kivonst, szorzst, osztst, sszehasonltst kell-e majd
vgeznie, stb), s ezeket elhelyezi az ID/EX regiszterben. Ezutn (ezzel prhuzamosan) az utasts ltal
kijellt mvelet operandusait is az ID/EX regiszterbe helyezi: ha az operandus egy regiszter, akkor kiolvassa
annak rtkt s azt, ha skalr konstans, akkor azt rja be.
3. Az EX fzis az ID/EX-ben elrt mveletet elvgzi a szintn az ID/EX-ben tallhat operandusokkal, az
eredmnyt pedig az EX/MEM pipeline regiszterbe rja.
4. A MEM fzis belenz az EX/MEM regiszterbe. Ha az ID fzis egy Store bitet belltott, akkor az EX/MEMben lv adatot az gyszintn ott lv cmre rja. Ha az ID fzis a Load bitet lltotta be, akkor EX/MEMben lv cmrl beolvas egy adatot, s azt a MEM/WB regiszterbe teszi. Egyb esetekben a MEM fzisnak
nincs dolga, tovbbtja az EX/MEM tartalmt MEM/WB-be.
5. A WB fzis a MEM/WB-ben lv adatot berja az ott megjellt regiszterbe (ezzel vglegesti az eredmnyt).
IF
MEM
t+1
ID
IF
REG
MEM
t+2
EX
ID
IF
ALU
REG
MEM
t+3
t+4
t+5
t+6
MEM
WB
EX
MEM
WB
EX
MEM
WB
EX
MEM
MEM
ID
IF
ALU
REG
MEM
REG
MEM
ID
t+7
ALU
REG
REG
MEM
ALU
REG
MEM
WB
REG
Feldolgozsi egysmahatsok
197
ID fzis egy aktulisabb kpet lt a regiszterekrl. A 13.5. brn lthatjuk a fzisok erforrs hasznlatt a lert
megoldsok alkalmazsval. A feldolgozsi egymsrahatsokat sikerlt kikszblni.
t
1. utasts
IF
IMEM
2. utasts
t+1
ID
IF
REG
IMEM
3. utasts
4. utasts
t+2
EX
ID
IF
ALU
REG
IMEM
t+3
MEM
DMEM
EX
ID
IF
ALU
REG
IMEM
t+4
t+5
t+6
t+7
WB
REG
MEM
DMEM
EX
ID
ALU
REG
WB
REG
MEM
DMEM
EX
ALU
WB
REG
MEM
DMEM
WB
REG
13.3.2. Adat-egymsrahats
Egy tipikus programban tipikus szituci, hogy egy utasts egyik vagy mindegyik operandusa az eltte lv
utastsok eredmnye. (Ez teljesen termszetes dolog, hiszen egy kicsit is sszetettebb szmtst mr rszmveletekre kell bontani, s a rszmveletek eredmnyeibl egy ksbbi mvelet lltja el a szmts eredmnyt.)
Ilyenkor azt mondjuk, hogy ezen utastsok kztt adat-fggsg van.
Egy plda a j. s az i. utasts kztti adatfggsgre, ha az i. utasts eredmnye a j. utasts bemen
operandusa. Ezt a tpus fggsget read-after-write, rviden RAW fggsgnek hvjuk. Tekintsk az albbi
pldt:
i1:
i2:
i3:
i4:
i5:
R3
R1
R4
R5
R1
MEM [R0]
R2 * R3
R1 + R5
R6 + R7
R8 + R9
R7 R1 + R5
R8 R7 - R2
R5 R8 + R7
198
i1 utasts:
t+1
t+2
t+3
t+4
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
i2 utasts:
i3 utasts:
R7 rtkt
itt rjuk a regiszterbe
R7 rtkt
itt kellene kiolvasni
WB
i1 utasts:
t+1
t+2
t+3
t+4
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
i2 utasts:
i3 utasts:
R7 rtkt
itt rjuk a regiszterbe
R7 rtkre
itt van szksg
WB
R6 MEM[R2]
R7 R6 + R4
199
Ebben az esetben a korbban ltott forwarding technika nem hoz teljes megoldst, hiszen az R6 majdani
tartalma az i1 MEM fzisnak vgn jelenik meg (a MEM/WB pipeline regiszterben) a t+3. ciklus vgre, viszont
az R6 rtkre az i2-nek mr az EX fzisban, a t+3. ciklus elejn szksge van. Ilyenkor nincs ms megolds, meg
kell lltani a pipeline-t. Az i2 s az utna a pipeline-ban lv utastsok feldolgozsa 1 ciklusidre sznetel, s j
utasts sem hozhat be. Az 1 ciklusid sznet utn az i2 utasts az EX fzisba lphet, s az ALU az R6 rtkt
forwarding segtsgvel a MEM/WB regiszterbl kiveheti (13.8. bra). A sznet szksgessgt az ID fzisban
detektlni kell, s a ksbbi fzisok megfelel vezrl jeleit ennek megfelelen kell ellltani, valamint a sznet
idejre az j utastsok lehvst (teht az IF fzist) is le kell tiltani.
R6 rtke
itt keletkezik
i1 utasts:
t+1
t+2
t+3
t+4
IF
ID
EX
MEM
WB
ID
EX
R6 rtkt
itt rjuk a regiszterbe
Sznet
i2 utasts:
IF
MEM
WB
13.8. bra. Sznet beiktatsa Load utasts okozta RAW fggsg esetn
200
Az elbbi statikus megoldsok helyett dinamikus becslssel sokkal jobb becslsi pontossgot lehet elrni. A
dinamikus elgazsbecsls lnyege, hogy az elgazsbecsl logika folyamatosan kveti, monitorozza a program
feltteles ugr utastsait (termszetesen ez mindenfle adatok folyamatos knyvelsvel jr) s a mltbli
viselkeds valamint a krnyez ms feltteles ugr utastsok egyttes viselkedse alapjn becsli meg az
ugrs kimenetelt s cmt. Egyes processzorokban neurlis hlzatokkal, vagy a mestersges intelligencia
egyb eszkzeivel is megtmogatjk a dntst. A dinamikus elgazsbecslsrl egy ksbbi fejezetben sokkal
rszletesebben lesz sz.
IF
ID
MUX
LoadedData
B
EX
Instr
Instr
Instr
IMEM
DMEM
Instr
Regiszter
trol
ALU
MUX
PC
Vezrl
ALUOut
ALUOut
MUX
NPC
A
NPC
MUX
=0?
MEM/WB
Cond
ID/EX
ALUOp
IF/ID
MEM
WB
201
202
MEM/WB
EX
ALUOut
Instr
Instr
MUX
DMEM
LoadedData
MUX
ALUOut
Cond
fwdA2
ALU
Instr
NPC
ALUOp
fwdA1
=0?
MUX
ID/EX
fwdB1
MEM
fwdB2
WB
203
hogy az ugrs meg nem trtnst felttelezve folytatjuk az utastsok lehvst. Ha az ugrsi felttel mgis
teljesl, az idkzben tvesen lehvott, IF s ID fzisokban tartzkod utastsokat hatstalantani kell valahogy.
Ezt pldul gy is megtehetjk, hogy bebillentnk egy bitet az IF/ID s ID/EX regiszterekben (amit az utastsok
ksbb magukkal cipelnek az EX/MEM s MEM/WB regiszterekbe is), s ez a bit megtiltja a MEM s a WB fzisban
a memria ill. a regiszter trol rst.
Szinkr./Aszinkr.
Maszkolhat
Kezelend
Folytathat
Perifria krs
Aszinkron
Igen
Utastsok kztt
Igen
Szinkron
Igen
Utastsok kzben
Igen
Laphiba
Szinkron
Nem
Utastsok kzben
Igen
Vdelmi hiba
Szinkron
Nem
Utastsok kzben
Igen
rvnytelen utasts
Szinkron
Nem
Utastsok kzben
Igen/Nem
Hardver meghibsods
Aszinkron
Nem
Utastsok kzben
Nem
Pipeline vgrehajts sorn a kivtelek kezelst j nhny krlmny megnehezti. A kivtelkezels szempontjbl az lenne a kvnatos viselkeds, ha a kivtel kezelst megelzen minden, a kivtelt okoz (i.) utasts
eltti (i.) utasts vgrehajtsa befejezdne, az ezt kvet (i.) utastsok pedig a kivtelkezels utn gond
nlkl jraindthatk lennnek. Azaz a kivtelt kezel szoftver vagy hardver olyan llapotot lsson, hogy a
kivtel eltti utastsok teljesen lefutottak, az azutn kvetkezk pedig egyltaln nem. Ezt a viselkedst pontos
kivtelkezelsnek nevezik.
A pontos kivtelkezelst azonban nem knny implementlni. Mivel tbb utasts vgrehajtsa zajlik egyidejleg, a kivtel bekvetkeztekor j lenne megakadlyozni, hogy a kivtelt okoz utasts utn a pipeline-ban lv
tovbbi, elkezdett utastsok akr a memriba, akr a regiszter trolba rjanak. A memriba s a regiszter
204
trolba rs letiltsa radsul gyakran nem elegend: lehet, hogy a kivtel keletkezse pillanatban mr meg is
trtnt a baj, vagyis egy ksbbi utasts mr vgzett is az rssal. Ilyenkor a kivtelkezel hvsakor mr nem
lehet visszalltani a kivtel keletkezsekor fennll llapotot. A helyzet megoldsra meglehetsen bonyolult
logika szksges, amit az egyszerbb processzorok nem is tartalmaznak, ilyenkor a gyrt deklarlja, hogy a
processzor nem kpes pontos kivtelkezelsre.
A pontos kivtelkezelshez az is hozztartozik, hogy a kivtelek bekvetkezse s kezelse az utastsok
sorrendjben trtnjen. Pipeline vgrehajts esetn ez nem megy magtl. Elszr is nzzk meg, hogy az egyes
pipeline fzisokban milyen kivtelek trtnhetnek:
IF fzis: Laphiba, vdelmi hiba
ID fzis: rvnytelen utasts
EX fzis: Aritmetikai hiba (pl. integer tlcsorduls)
MEM fzis: Laphiba, vdelmi hiba
WB fzis: Itt nem trtnhet kivtel
Vegynk egy egyszer pldt, amiben egy aritmetikai s egy Load utasts kveti egymst:
Rk rm + Rn
IF
Ri MEM[Rj ]
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Ha az aritmetikai utasts az EX fzisban vlt ki kivtelt (pl. tlcsordulst), a Load pedig az IF fzisban (pl.
laphibt), s a kivteleket a kivltsuk pillanatban kezelnk, akkor felborulna a sorrend (s srlne a pontos
kivtelkezels elve), hiszen a ksbbi utasts kivtelt hamarabb kezelnnk, mint a korbbit. Ezt a problmt
pldul gy lehet feloldani, hogy a kivteleket nem azonnal, a keletkezsk pillanatban kezeljk. Minden utasts
egy specilis regiszterben, a kivtel sttusz vektorban gyjti a vele kapcsolatban felmerlt kivteleket. Amint
keletkezett kivtel, a memria s regiszter trol rst azonnal letiltjuk, de a kivtel tnyleges kezelst csak a
WB fzisban (vagy az utn) kezdjk el, ahol r kell nzni a kivtel sttusz vektorra, s az idben legkorbban
bekvetkezett kivtelt kell lekezelni. Mivel a kivtelek kezelse minden utasts esetn a feldolgozs ugyanazon
fzisban (az utolsban) trtnik, a sorrend garantltan helyes marad.
Ksleltets
Itercis id
Integer ALU
FP sszead.
FP szorz
FP oszt
25
25
205
A pipeline szerkezett a 13.11. bra szemllteti. Tbb aritmetikai egysgnk van, de vigyzzunk: az ID
egysget minden ciklusban legfeljebb egy utasts hagyja el, amely a 4 egysg valamelyikbe lp be. Sz sincs
teht (egyelre) arrl, hogy a tbb egysg rendelkezsre llst gy hasznljuk ki, hogy ugyanabban a ciklusban
tbb egysg fel is tovbbtunk utastst.
Egsz egysg
EX
FP szorz
M0
IF
M1
M3
M2
ID
M5
M4
M6
MEM
FP sszead
A0
A1
A2
WB
A3
FP oszt
DIV
IF
D2 D1 + D3
ID
M0
M1
M2
M3
M4
M5
M6
IF
ID
A0
A1
A2
A3
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
D0 MEM[R0 + 4]
MEM[R0 + 8] D5
MEM
WB
WB
Lthat, hogy elszr a 3., majd a 4., a 2., s vgl az 1. utasts fejezdik be. Ez nem felttlenl jelent problmt,
ebben a pldban sem volt belle gond, hiszen az utastsok egymstl fggetlenek, semmilyen egymsrahats nem
trtnt. Termszetesen ltalnos esetben gondoskodnunk kell rla, hogy a program szemantikja az utastsok
soron kvli befejezdse miatt ne vltozzon. Ezt a feladatot az ID egysg fogja elltni. Nzzk, milyen eddig nem
ltott, extra feladatai lesznek az ID fzisnak az eltr ksleltets aritmetikai egysgek miatt:
1. Feldolgozsi egymsrahatsok kezelse
A korbbi 5 fokozat pipeline-unkban a feldolgozsi egymsrahatsokat sikerlt tervezsi ton kikszblni.
Most ez sajnos nem lehetsges. Az albbi pldban pdul a 11. ciklusban egyszerre 3 utasts is a WB
fzisba r, s mindhrman szeretnk elrni a regiszter trolt (st, a 10. ciklusban a MEM fzist is egyszerre
rik el):
Utasts
10
11
D4 D1 D5
IF
ID
M0
M1
M2
M3
M4
M5
M6
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
A0
A1
A2
A3
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
D2 D1 + D3
D0 MEM[R0 + 4]
WB
206
i1: D4 MEM[R0 + 4]
IF
ID
EX
MEM
WB
IF
ID
szn
M0
M1
M2
M3
IF
szn
ID
szn
szn
szn
IF
szn
szn
szn
14
15
16
17
i2: D0 D4 D6
i3: D2 D0 + D8
i4: MEM[R0 + 4] D2
10
11
12
13
i2:
M4
M5
M6
MEM
WB
i3:
szn
szn
szn
A0
A1
A2
A3
MEM
WB
i4:
szn
szn
szn
ID
EX
szn
szn
szn
MEM
i1:
A pldban a szorzs csak akkor kezdhet el, ha a Load eredmnye mr megvan (a MEM fzisban kerl
beolvassra). Az sszeadsnak meg kell vrnai a szorzs eredmnyt (12. fzisban kezdhet el a vgrehajtsa).
A Store utasts cmszmtsa idben megtrtnhet (13. fzis), de maga a memriamvelet csak akkor
mehet vgbe, amikor az sszeads elkszl, vagyis a 16. ciklusban. Ekkor azonban pp az sszead utasts
van a MEM fzisban, teht a Store-nak feldolgozsi egymsrahats miatt mg egy ciklust vrakoznia kell.
3. A WAW fggsgek detektlsa s kezelse
Mivel az 5 fokozat pipeline-ban az utastsok a megfelel sorrendben fejezdtek be, a WAW fggsgek
nem jelentettek gondot. Most nem ez a helyzet. Knnyen elfordulhat, hogy egy ksbbi utasts hamarabb
fejezdik be egy korbbinl, s ha mindkt utasts ugyanabba a regiszterbe rja az eredmnyt (teht WAW
fggsg ll fent), akkor a vgn nem a ksbbi, hanem a korbbi utasts eredmnye lesz a regiszterben. Az
albbi pldban is ez trtnik, a program szemantikja szerint azt vrnnk, hogy vgl a Load eredmnye
lesz a D2-ben, de nem ezt fogjuk tapasztalni, mert a korbbi sszeads ksbb fejezdik be, s fellrja a D2
regiszter tartalmt.
Utasts
D2 D1 + D3
IF
ID
A0
A1
A2
A3
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
D2 MEM[R0 + 4]
WB
207
A WAW fggsgek detektlsa ismt az ID fzis feladata, s mint az sszes tbbi egymsrahats esetn, itt
is a futszalag meglltsa s a tovbbi utastsok lehvsnak szneteltetse a legegyszerbb megolds.
Ebben a pldban 2 ciklusidnyi sznetet kell beiktatni, hogy a WB fzisok sorrendje megfelel legyen.
Nmi meggondols utn belthatjuk, hogy a WAR fggsgek nem okoznak gondot, mert az utastsok
vgrehajtsa sorban kezddik el, gy azok a regisztereket is a helyes sorrendben olvassk ki.
208
14. fejezet
D2 MEM[R1]
D3 D2 * D0
MEM[R2] D3
R1 R1 + 8
R2 R2 + 8
Tegyk fel, hogy ezt az utastssorozatot egy olyan utasts pipeline segtsgvel hajtjuk vgre, melyben az
egsz- s a memriamveletek 5 fzist ignyelnek (IF, ID, EX, MEM, WB), a lebegpontos szorzs esetn azonban
9 fzis szksges (IF, ID, M0, , M4, MEM, WB). Az utastsok temezse a 14.1. brn lthat. Felttelezzk,
hogy az A vltozt a D0 regiszter, az X[i]-re, valamint a Z[i]-re pedig az R1, illetve R2 regiszter mutat.
i1:
i2:
i3:
i4:
IF
ID
EX
MEM
WB
IF
ID
IF
A
F
10
11
M0
M1
M2
M3
M4
MEM
WB
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
i5:
12
13
14
WB
210
fggsg (4 egysgnyi sznet). Mindkt esetben az jelenti a problmt, hogy az utastsoknak vrakozniuk kell,
amg az operandusaik rendelkezsre nem llnak. Addik teht a lehetsg, hogy az adatfggsben lv sorok
kz tlk fggetlen sorokat mozgassunk, hogy addig is hasznos munkval teljen az id, amg az operandusra
vrakoz utastsra nem kerl a sor. Pldnkban a legtbb, amit tehetnk, hogy harmadik s a negyedik sort
felcserljk, amivel az albbi utastssorozatot kapjuk:
i1':
i2':
i3':
i4':
i5':
D2 MEM[R1]
D3 D2 * D0
R1 R1 + 8
MEM[R2] D3
R2 R2 + 8
Az trendezett utastssorozat vgrehajtsa 14 helyett csak 13 ciklus vesz ignybe (14.2. bra). Hosszabb
utastssorozatok esetn termszetesen ennl nagyobb mrtk gyorsuls vrhat, hiszen tbb a lehetsg az
adatfggsben lv utastsok eltvoltsra.
i1':
i2':
i3':
IF
ID
EX
MEM
WB
IF
ID
IF
i4':
i5':
10
11
M4
MEM
WB
12
M0
M1
M2
M3
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
A
F
13
14
WB
14.2.1. Az utaststrol
Ahhoz, hogy a processzor az utastsokat a program szerintitl eltr sorrendben hajtsa vgre, egyszerre tbb
utastsnak is a ltterben kell lennie. Ezeket az utastsokat az utaststrol (reservation station, instruction
pool, instruction window) trolja. Az utaststrol nem lehet mshol, mint az ID fzisban, hiszen az utastsok
lehvsa s dekdolsa mg program szerinti sorrendben trtnik, mg a vgrehajts (EX) mr soron kvl. Az
211
FP szorz
F0
IF
Utasts trol
ID1
F1
F3
F2
ID2
F5
F4
F6
WB
FP sszead
A0
A1
A3
A2
Load/Store egysg
M0
Front-end
M1
M2
M3
M4
Back-end
Utaststrol tpusa
Utaststrol mrete
IBM Power4
Elosztott
31
Centralizlt
20
Intel Pentium 4
Intel Haswell
Centralizlt
56
AMD K6
Centralizlt
72
Elosztott
60
AMD Opteron
212
D2 MEM[R1]
D3 D2 * D0
MEM[R2] D3
R1 R1 + 8
R2 R2 + 8
D2 MEM[R1]
D3 D2 * D0
MEM[R2] D3
R1 R1 + 8
R2 R2 + 8
A precedenciagrf alakulsa a 14.5. brn lthat. Az egyszersg kedvrt most minden utasts csak 3
llapotban lehet: betltve az utaststrolban (kk), fut llapotban (piros), s ksz llapotban (zld). Az egsz s a
memriamveletek vgrehajtsa tartson 1, a lebegpontos szorzs pedig 5 rajelig. A pipeline front-endje minden
ciklusban egy j utastst hv le s helyez el az utaststrolban, teht minden krben egy j kk csompont
jelenik meg a precedenciagrfban, a fggsgek ltal meghatrozott lekkel egytt. Ha van olyan csompont,
aminek minden fggsge felolddott, akkor az vgrehajthat. A msodik lpsben pldul i1 vgrehajtsa zajlik,
ami a harmadik lpsre be is fejezdik, ezzel lehetv vlik i2 elkezdse. Az i2 sokig tart, s tbb utasts is fgg
tle, ezrt az utaststrolban elkezdenek felgylni a vrakoz utastsok. Amikor az i4 megjelenik, kiderl,
hogy rgtn vgrehajthat, gy az megelzi az i3 vgrehajtst. Itt teht mris tetten rhet az out-of-order
vgrehajts. Akrcsak a nyolcadik lpsben, ahol i4 mr befejezdtt, de i5 mg el sem kezddtt.
Fontos megjegyezni, hogy a dinamikus temezs alapveten tr el a 13.6. fejezetben ltott pipeline-tl, ahol
program szerinti sorrendben kezddtt az utastsok vgrehajtsa, de soron kvl fejezdtt be. A dinamikus
vgrehajts mellett az utastsok elkezdsi sorrendje is out-of-order lehet.
14.2.3. Regisztertnevezs
Az out-of-order utasts-vgrehajts hatkonysgt nagyban befolysolja, hogy az utastsok precedenciagrfja
mennyire sr. Ha sok a fggsg, akkor az utastsok egymsra vrakoznak, ha azonban kevs az l, akkor
gyakran tall az temez vgrehajthat utastst.
A fggsgi grf megritktshoz a program bizonyos fggsgeit meg kell szntetni. Tekintsk t ismt a
fggsgek tpusait, s azonostsuk, hogy mirt is alakulnak ki.
RAW fggsg esetn egy utasts felhasznlja egy korbbi utasts eredmnyt:
D3 D2 * D0
...
MEM[R2] D3
213
214
Kezdeti
R0
T21
R1
T3
R2
T46
R3
T8
D0
U9
D1
U24
D2
U17
D3
U4
T47
9
T49
T48
U25
10
T50
U27
U26
U27
D2 MEM[R1]
D3 D2 * D0
MEM[R2] D3
R1 R1 + 8
R2 R2 + 8
D2 MEM[R1]
D3 D2 * D0
MEM[R2] D3
R1 R1 + 8
R2 R2 + 8
215
Regisztertnevezs utn:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
i8:
i9:
i10:
U25 MEM[T3]
U26 U25 * U9
MEM[T46] U26
T47 T3 + 8
T48 T46 + 8
U27 MEM[T47]
U28 U27 * U9
MEM[T48] U28
T49 T47 + 8
T50 T48 + 8
a) Regisztertnevezs eltt
b) Regisztertnevezs utn
216
217
R2 R1 + 4
D0 D1 / D2
MEM[R1+8] D0
D3 MEM[R2+4]
218
219
220
Foglalt bit
Mvelet kdja (sszeads, kivons, stb.)
R: a mvelet eredmnyt mely regiszterbe kell rni
RA, RB: a kt forrs operandus rtke (res(ek), ha mg nem ll(nak) rendelkezsre)
EA, EB: ha valamelyik forrsoperandus nem ll rendelkezsre (vagy pp egyik sem), ezekben a
bejegyzsben szerepel, hogy azok mely mveleti egysg eredmnyeknt fognak elllni
A 14.11., 14.12. s a 14.13. brkon lthat plda egy 7 utastsbl ll program vgrehajtst demonstrlja a
scoreboard eljrs segtsgvel. Ebben a pldban 5 mveleti egysg van: egy egsz szmokat kezel aritmetikai
egysg, egy Load egysg, egy Store egysg, s kt lebegpontos egysg. A lebegpontos egysgek bell pipeline
szervezsek (br ennek ebben a pldban nincs szerepe), ksleltetsk 3 ciklusid.
A pldban vgigkvethet az algoritmus mkdse. Mieltt az utasts a DS fzisba lpne, kt felttelt kell
ellenrizni:
Van-e szabad mveleti egysg az utasts szmra. Ez a mveleti egysg llapot tblbl megllapthat.
Ha nincs, akkor feldolgozsi egymsrahats trtnt, az utastst nem engedjk a DS fzisba lpni.
Van-e vgrehajts alatt olyan utasts, amelyik pp ugyanabba a regiszterbe r, mint a vizsglt utasts. Ez a
regiszter llapot tblbl kiderl: ha az eredmnyregiszternek megfelel sor nem res, akkor az egyik fut
utasts oda fog rni. Ez WAW egymsrahatst jelent, az utastst nem engedjk a DS fzisba lpni.
Ha sem feldolgozsi, sem WAW egymsrahats nincs, akkor a lehvott utasts a DS fzisba lphet. A DS
fzisba lpskor a kvetkez adminisztratv feladatokat kell elvgezni:
Bejegyezzk a regiszter llapot tblba, az utasts eredmnyregiszternek megfelel sorba annak a mveleti
egysgnek az azonostjt, amelyik az utastst vgre fogja hajtani. Vegyk szre, hogy a regiszter llapot
tblban ez a sor mindenkpp szabad, ha nem lenne szabad, az utasts nem lphetett volna be a DS fzisba.
Ezzel egyidejleg az utastst hozzrendeljk egy mveleti egysghez, a mveleti egysg llapot tbla
egy sornak kitltsvel. Az utasts vgrehajtshoz szksges mveleti egysgnek megfelel sorba a
foglalt bitet 1-be billentjk, s az utastsnak megfelel mveletet bejegyezzk. A forrsoperandusokra
vonatkoz bejegyzsek (RA, RB) kitltsnl kt lehetsg van: ha a regiszter szabad, teht nincs olyan
vgrehajts alatt ll utasts, ami rni akarn, akkor berjuk a regiszter azonostjt. Azt, hogy egy regiszter
szabad, onnan vesszk szre, hogy a regiszter llapot tbla vonatkoz bejegyzse res. Ha a regiszter
nem szabad, akkor annak rtke egyelre nem ll rendelkezsre, ilyenkor az EA vagy EB bejegyzsbe (attl
fggen, hogy az egyik, vagy a msik forrsoperandusrl van-e sz) berjuk annak a mveleti egysgnek az
azonostjt, amelyikre vrunk, amelyik az operandust el fogja lltani. Ennek a krdses, megvrand
mveleti egysgnek az azonostjt szintn a regiszter llapot tblbl lehet kiolvasni. Ebben az esetben
(teht ha legalbb az egyik forrs operandus regiszter nem szabad), RAW fggsg alakult ki: az utasts
bennragad a DS fzisban, meg kell vrnia, mg a forrsoperandusai elllnak.
Egy utasts csak akkor tud az IS fzisba lpni, ha a vgrehajtshoz szksges minden operandus rendelkezsre
ll. Ebben a fzisba trtnik a forrsoperandus-regiszterek kiolvassa, majd ezutn az EX fzisban a vgrehajtsa.
Ha egy mveleti egysg vgez a feladatval (ezzel befejezve a hozz tartoz utasts EX fzist), akkor errl
rtestst kld a scoreboard-nak. Az eredmnyek bersa a regisztertrolba (teht a WB fzisba lps) csak akkor
trtnhet meg, ha nincs WAR egymsrahats. Ezt a scoreboard ellenrizni tudja: krlnz a mveleti egysg
s az utasts llapot tblban, hogy van-e olyan korbban rkezett utasts a DS vagy IS fzisban, amelynek
a forrsoperandusa pont az a regiszter, amit rni szeretnnk. Ezek a korbbi utastsok mg nem olvastk ki a
forrsoperandus-regisztereiket, amg ezt meg nem teszik, a ksbbi utastsok nem rhatjk fell ezeket, vagyis
addig nem lphetnek a WB fzisba. A WB fzis egyben az utasts vgrehajtsnak befejezst jelenti. Ekkor, az
eredmny regisztertrolba rsn kvl a tblzatokat is frissteni kell:
A regiszter llapot tblban az eredmnyregiszterhez tartoz bejegyzst trlni kell
Azok az utastsok, akik RAW egymsrahats miatt erre az eredmnyre vrtak (teht a mveleti egysg
tblban az EA vagy EB mezben a most vgzett mveleti egysg azonostja szerepelt), most folytathatk
lesznek (EA vagy EB mezjket trlni kell, az RA s RB mezjket pedig kitlteni)
A mveleti egysg tblban a hasznlt mveleti egysg foglalt bitjt 0-ba lltjuk
i1:
i2:
i3:
i4:
i5:
i6:
i7:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Egysg
Egsz ALU
Load
Store
FP ALU 1
FP ALU 2
Ciklus:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Nem
Igen
Nem
D4
D2
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
EA
FP1
EB
Load
EX
c3
WB
D4
R1
D4
D2
EA
FP1
EB
FP1
Load
i3:
i4:
i5:
i6:
i7:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Store
FP ALU 1
FP ALU 2
WB
c3
i1:
i2:
Egysg
Egsz ALU
Load
i3:
i4:
i5:
i6:
i7:
Ciklus:
EX
Store
FP ALU 1
FP ALU 2
EB
D4
R1
i1:
i2:
Egysg
Egsz ALU
Load
EA
i3:
i4:
i5:
i6:
i7:
Ciklus:
WB
Nem
Nem
Nem
i1:
i2:
Store
FP ALU 1
FP ALU 2
EX
D4
R1
Egysg
Egsz ALU
Load
221
EX
c3
D4
R1
c3
c4
WB
c4
D4
D0
D2
EA
i1 vge
FP1
Egsz ALU
EB
Mveleti egysg foglals
Bejegyzs trlse
FP1
Load
D0 betltve
A pldban minden elkpzelhet egymsrahats szerepel: feldolgozsi, RAW, WAW, WAR egyarnt. Az utols
ciklushoz prgetve lthat, hogy sorrenden kvli vgrehajts is trtnt, az i4 utasts megelzte az i3-t, nem
csak a befejezdst, hanem a vgrehajts elkezdst tekintve is. Kevsb llatorvosi l jelleg pldban tbb
sorrenden kvl vgrehajtott utastst lthatnnk.
222
i1:
i2:
i3:
i4:
i5:
i6:
i7:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Egysg
Egsz ALU
Load
Store
FP ALU 1
FP ALU 2
Ciklus:
c3
c4
D4
D0
i3:
i4:
i5:
i6:
i7:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Ciklus:
c3
c4
c5
Igen
Nem
D4
D0
c3
c4
c5
WB
c4
D4
R1
c6
EA
FP1
Egsz ALU
EB
ALU
FP1
D2
EX
c3
c5+
D4
R1
c6
FP1
Egsz ALU
WB
c4
c5
D4
D0
EA
EB
ALU
FP1
D2
i1:
i2:
i3:
i4:
i5:
i6:
i7:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Store
FP ALU 1
FP ALU 2
EX
c3
c5+
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Egysg
Egsz ALU
Load
D2
i3:
i4:
i5:
i6:
i7:
Ciklus:
EB
Store
FP ALU 1
FP ALU 2
EA
ALU
c5
i1:
i2:
Egysg
Egsz ALU
Load
FP1
Egsz ALU
i1:
i2:
Store
FP ALU 1
FP ALU 2
D4
R1
c5
WB
c4
c5
Egysg
Egsz ALU
Load
EX
c3
c5
c3
c4
c8
c5
EX
c3
c5+
D4
R1
c6
c5
c8
FP1 FP2
Egsz ALU
i2 vge
WB
c4
c8
EA
EB
D4 ksz
ALU
FP1
Bejegyzs trlse
*
D4
D2
Load
i1:
i2:
i3:
i4:
i5:
i6:
i7:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Egysg
Egsz ALU
Load
Store
FP ALU 1
FP ALU 2
Ciklus:
c3
c4
c8
c5
c5
c8
c9
WB
c4
c8
c9
c6
c9
D4
R1
D4
D2
FP2
Egsz ALU
i4 vge
EA
EB
Bejegyzs trlse
ALU
R1 ksz
Load
10
i1:
i2:
i3:
i4:
i5:
i6:
i7:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Store
FP ALU 1
FP ALU 2
EX
c3
c5
c5+
Egysg
Egsz ALU
Load
223
EX
c3
c5+
c5
WB
c4
c8
c10
c9
D4
R1
c3
c4
c8
c5
c9
c6
c5
c8
c9
c10
WB s a tle fgg DS egyszerre mehet
c10
FP2
D4
D2
EA
EB
FP2
Load
224
3. Regiszter llapot tbla: Minden logikai regiszterhez tartozik egy bejegyzs. Ha pp nincs olyan utasts,
ami rni akarn, akkor itt szerepel a regiszter rtke, ellenkez esetben annak a ROB bejegyzsnek a szma,
melyben a regiszter rtke megtallhat, vagy a jvben megtallhat lesz.
4. CDB: Common Data Bus, egy zenetszrsos csatorna. Ha egy utasts befejezdtt, ezen a csatornn
krtli vilgg a hrt, a ROB bejegyzsnek a szmval (T) s az utasts eredmnyvel (V) egytt. Mivel ezt
minden vrakoz utasts hallja, amelyik pp erre az eredmnyre vrt, el tudja trolni a kihirdetett rtket.
A 14.14., 14.15. s a 14.16. brn lthat plda egy 7 utastsbl ll program vgrehajtst demonstrlja a
Tomasulo algoritmus P6-os vltozata szerint. Ebben a pldban 5 mveleti egysg van: egy egsz szmokat kezel
aritmetikai egysg, egy Load egysg, egy Store egysg, s kt lebegpontos egysg. A lebegpontos egysgek bell
pipeline szervezsek (br ennek ebben a pldban nincs szerepe), ksleltetsk 3 ciklusid. Az utaststrol
centralizlt, 3 bejegyzses. Az egyszersg kedvrt az brn szerepl ROB-ban nem tntetjk fel a Ready bitet,
azt, hogy az utasts vgrehajtsa ksz, onnan fogjuk ltni, hogy az utasts a CM fzisban van.
Kvessk vgig egy utasts tjt a vgrehajts sorn. Az utasts lehvsa utn (IF fzis) a dispatch (DS)
fzis feladata, hogy az utasts szmra bejegyzst foglaljon a ROB-ba s az RS-be. A ROB-ba szigoran az utols
rvnyes sor utn (az brn piros nyllal jellve) kell bejegyzst alloklni az j utastsnak, mg az utaststrolban
egy tetszleges szabad bejegyzst el lehet foglalni. Ha vagy a ROB-ban, vagy az RS-ben nincs tbb hely, akkor az
utasts vrakozni knyszerl (ez feldolgozsi egymsrahatst jelent). A feldolgozsi egymsrahats feloldsig a
tovbbi utastsok lehvsa is sznetel. A ROB bejegyzs kitltend mezi:
A V mezt, amely az utasts eredmnyt trolja, ilyenkor mg nem kell kitlteni.
Ha aritmetikai vagy Load utastsrl van sz, az eredmny regiszter logikai nevt kell az R mezbe rni.
Vgl ide fog majd a V-ben trolt eredmny rtke kerlni. Ha Store utastsrl van sz, s a vonatkoz
memriacm ezen a ponton mr ismert, akkor az az Addr mezbe kerl. Ha cmszmtsra van szksg,
akkor az Addr a Store mvelet vgrehajtsa sorn, a cm kiszmtsa utn kerl a kitltsre.
Az IS/EX/CM egyike sincs megjellve, hiszen az utasts egyelre a DS fzisban tart.
Az utaststrol (RS) bejegyzsnek kitltse:
A Foglalt bit 1-be lltdik, jelezve, hogy ez a bejegyzs mr hasznlatban van.
Az Egysg mezbe kerl az utasts ltal ignyelt mveleti egysg neve (Load/Store/Egsz ALU/FP ALU).
A Mvelet mez az utasts alapjn kitlthet.
A T mezbe kell rni az utastshoz tartoz ROB bejegyzs szmt. Ide kerl az eredmny, ha majd az
utasts vgrehajtsa befejezdik.
Az utasts megprblja sszeszedni a forrs operandusait. Rnz a regiszter llapot tblra. Ha a forrs
regiszternek megfelel helyen a regiszter rtkt tallja, bemsolja magnak az RA ill. RB mez(k)be. Ha a
regiszter llapot tblban egy ROB bejegyzs szmot tall, az azt jelenti, hogy a regiszter nem szabad,
mert van olyan utasts, melynek ez lesz az eredmny regisztere. Ez gyakorlatilag egy RAW egymsrahatst
jelent. Ilyenkor az utaststrol EA ill. EB mezjbe azt a ROB bejegyzs szmot kell berni, ahol majd a
regiszter rtkt szolgltat utasts eredmnye meg fog jelenni.
Egy utasts akkor mehet tovbb az issue (IS) fzisba, ha a vgrehajtshoz szksges forrsoperandusok
rtke rendelkezsre ll, teht ha az utaststrolban az EA s EB mezje is res, s ha van a vgrehajtshoz
szksges szabad mveleti egysg. Az IS fzis utn megkezddhet az utasts vgrehajtsa (EX), amely az utaststl
fggen tbb ciklusig is eltarthat. Az IS sorn az utasts a feldolgoz egysgbe kerl, gy az EX kezdetre a hozz
tartoz RS bejegyzs felszabadul. A vgrehajts befejezdse utn az eredmny a complete (CM) fzisban kerl
meghirdetsre a CDB nev zenetszrsos csatornn keresztl. A meghirdetett zenet tartalmazza a befejezdtt
utasts ROB szmt, s az eredmny rtkt. Az zenetszrsnak ksznheten ez az eredmny az RS-ben
vrakoz minden utastshoz eljut. Amelyik utasts pont erre vr (teht akinek a forrs operandusa pont a
befejezdtt utasts eredmny regisztere), az a buszbl kiolvassa az rtket, s ezltal a RAW egymsrahats
megsznik.
Ciklus:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4
Foglalt
Igen (i1)
Nem
225
Egysg
Load
IS
CM
EX
CDB
rtk (V) ROB bej.
D4
R1
A ksbbi utastsok
D0-t ROB#1-ben keressk
Mv.
load
Utaststrol (RS)
T
RA
RB
ROB#1
[R1]
EA
EB
Nem
Ciklus:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
Foglalt
Igen (i1)
Igen (i2)
Egysg
Load
FP
Nem
Mv.
load
*
IS
c2
CM
EX
CDB
rtk (V) ROB bej.
R1
A ksbbi utastsok
D4-et ROB#2-ben keressk
Utaststrol (RS)
T
RA
RB
ROB#1
[R1]
ROB#2
[D2]
EA
EB
ROB#1
Els forrsoperandust a ROB#1 fogja adni
Ciklus:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
IS
c2
CM
EX
c3
CDB
rtk (V) ROB bej.
R1
Egysg
Mv.
FP
Store
*
store
Utaststrol (RS)
T
RA
RB
ROB#2
ROB#3
[D2]
EA
EB
ROB s RS bejegyzsek ltrehozsa
ROB#1
[R1]
ROB#2
Ciklus: 4
i1:
i2:
i3:
i4:
i5:
i6:
i7:
Foglalt
Igen (i4)
Igen (i2)
Igen (i3)
Egysg
Egsz ALU
Mv.
+
FP
Store
*
store
IS
c2
c4
Utaststrol (RS)
T
RA
RB
ROB#4
[R1]
ROB#2 CDB.V
[D2]
ROB#3
[R1]
CM
c4
EX
c3
CDB
rtk (V) ROB bej.
[D0]
ROB#1
i1 ksz, eredmnyt
kihirdeti
EA
EB
ROB#1
ROB#2
Az utasts vgrehajts retire (RT) fzisban trtnik meg az utasts ROB bejegyzsnek rvnyre juttatsa,
vagyis a trolt eredmny regiszter trolba vagy a memriba rsa. Egy utasts csak akkor lphet RT fzisba, ha
van a ROB tetejn, vagyis r mutat az els rvnyes ROB bejegyzsre mutat mutat. Ezt a mutatt az RT
fzis utn lptetjk.
Ebben a pldban is ltunk RAW s feldolgozsi egymsrahatst, de a WAR s a WAW az algoritmus termszetbl addan nem okozott gondot. Lttuk, hogy a WAR s a WAW egymsrahatst regiszter tnevezssel
226
Foglalt
Igen (i4)
Igen (i5)
Egysg
Egsz ALU
Load
Mv.
+
Igen (i3)
Store
store
load
IS
c2
c4
CM
c4
EX
c3
c5
c5
CDB
rtk (V) ROB bej.
Utaststrol (RS)
T
RA
RB
ROB#4
[R1]
ROB#5
ROB#3
[R1]
EA
EB
ROB#4
ROB#2
Ciklus: 6
i1:
i2:
i3:
i4:
i5:
i6:
i7:
Foglalt
Igen (i6)
Igen (i5)
Egysg
FP
Load
Mv.
Igen (i3)
Store
store
*
load
IS
c2
c4
EX
c3
c5+
c5
c6
Utaststrol (RS)
T
RA
RB
ROB#6
[D2]
ROB#5
ROB#3
[R1]
CM
c4
EA
ROB#5
ROB#4
CDB
rtk (V) ROB bej.
EB
ROB#2
Ciklus: 7
i1:
i2:
i3:
i4:
i5:
i6:
i7:
Foglalt
Igen (i6)
Igen (i5)
Egysg
FP
Load
Mv.
Igen (i3)
Store
store
*
load
IS
c2
c4
EX
c3
c5+
CM
c4
c5
c7
c6
c7
CDB
rtk (V) ROB bej.
[R1]
ROB#4
i4 ksz, eredmnyt
kihirdeti
Utaststrol (RS)
T
RA
RB
ROB#6
[D2]
ROB#5 CDB.V
ROB#3
[R1]
Feldolgozsi egymsrahats:
nincs hely az RS-ben, nem hozhat be
EA
ROB#5
ROB#4
EB
ROB#2
Ciklus: 8
i1:
i2:
i3:
i4:
i5:
i6:
i7:
Foglalt
Igen (i6)
Igen (i7)
Egysg
FP
Store
Igen (i3)
Store
Mv.
*
store
store
IS
c2
c4
c8
c5
c7
Utaststrol (RS)
T
RA
RB
ROB#6
[D2]
ROB#7 ROB#4.V
ROB#3
[R1]
CDB.V
EX
c3
c5+
CM
c4
c8
c6
c8
c7
EA
ROB#5
EB
CDB
rtk (V) ROB bej.
[D4]
ROB#2
ROB#6
ROB#2
R1 rtke ksz, de a ROB#4-bl kell venni,
mert mg nincs a reg. trolba rva
14.15. bra. Plda a P6-ban megvalstott Tomasulo algoritmus mkdsre, 2/3. rsz
lehet elkerlni. Hol trtnt a pldban a regiszter tnevezs? A Tomasulo algoritmusban a regiszter tnevezs
bjtatott formban van jelen: a zikai regiszterek tulajdonkppen a ROB bejegyzsnek felelnek meg (melynek V
mezje hordozza a regiszter rtkt). Minden pont gy trtnt, ahogy a regiszter tnevezs bevezetsnl lttuk:
az jonnan rkez utastsok eredmnye szmra j zikai regisztert foglalunk (ez lesz az ROB bejegyzse), a
regiszter lekpz tbla szerept pedig a regiszter llapot tbla jtssza.
227
Ciklus: 9
i1:
i2:
i3:
i4:
i5:
i6:
i7:
Foglalt
Igen (i6)
Igen (i7)
Egysg
FP
Store
Mv.
*
store
IS
c2
c4
c8
c5
c7
c9
Utaststrol (RS)
T
RA
RB
ROB#6 CDB.V
[D2]
ROB#7 ROB#4.V
EX
c3
c5+
c9
c6
c8
CM
c4
c8
c7
c9
CDB
rtk (V) ROB bej.
[D0]
ROB#5
EA
ROB#5
EB
ROB#6
Nem
Ciklus: 10
i1:
i2:
i3:
i4:
i5:
i6:
i7:
Foglalt
Nem
Igen (i7)
Egysg
Mv.
Store
store
IS
c2
c4
c8
c5
c7
c9
Utaststrol (RS)
T
RA
RB
EX
c3
c5+
c9
c6
c8
c10
CM
c4
c8
c10
c7
c9
CDB
rtk (V) ROB bej.
EA
EB
ROB#7 ROB#4.V
ROB#6
Nem
Ciklus: 11
i1:
i2:
i3:
i4:
i5:
i6:
i7:
Foglalt
Nem
Igen (i7)
Egysg
Mv.
Store
store
IS
c2
c4
c8
c5
c7
c9
Utaststrol (RS)
T
RA
RB
ROB#7 ROB#4.V
EX
c3
c5+
c9
c6
c8
c10+
EA
CM
c4
c8
c10
c7
c9
CDB
rtk (V) ROB bej.
EB
ROB#6
Nem
14.16. bra. Plda a P6-ban megvalstott Tomasulo algoritmus mkdsre, 3/3. rsz
228
15. fejezet
IF
2. utasts
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
3. utasts
4. utasts
5. utasts
1. utasts
2. utasts
3. utasts
4. utasts
5. utasts
IF1 IF IF2
ID1
ID2
IF1 IF IF2
ID1
ID2
IF1 IF IF2
ID1
ID2
IF1 IF IF2
ID1
ID2
IF1 IF IF2
ID1
ID2
WB
feltltdsi id
nyeresg
230
IF
2. utasts
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
3. utasts
4. utasts
5. utasts
6. utasts
1. utasts
IF
ID
EX
MEM
WB
2. utasts
IF
ID
EX
MEM
WB
3. utasts
IF
ID
EX
MEM
WB
4. utasts
IF
ID
EX
MEM
WB
5. utasts
IF
ID
EX
MEM
WB
6. utasts
IF
ID
EX
MEM
WB
feltltdsi id
WB
nyeresg
231
Prhuzamosan vgrehajthat
csoportok kivlasztsa
Vgrehajtsi id
meghatrozsa
Szuperskalr
Hardver
Hardver
Hardver
EPIC
Fordt
Hardver
Hardver
Dinamikus VLIW
Fordt
Fordt
Hardver
VLIW
Fordt
Fordt
Fordt
15.3. bra. A hardver s a fordtprogram szerepe a szles pipeline-t alkalmaz architektrkban ([39])
utastsokat tudja rendezgetni, de a fordt jtktere sokkal nagyobb, mivel egyszerre sokkal tbb utastsra van
rltsa.
Termszetesen a tisztn statikus s tisztn dinamikus temezs mellett vannak kzputak, tbbfle esetet
klnbztethetnk meg annak megfelelen, hogy az utastsok temezsbl mekkora rszt vllal a processzor,
illetve a fordt. A 15.3. bra ngy, a tovbbi fejezetekben rszletesen trgyalt, szles pipeline-t hasznl
architektrt sorol fel. A leginkbb dinamikus architektrt a szuperskalr processzorok kpviselik. Szuperskalr
esetben sem a fordt, sem a programoz nincs tudatban annak, hogy a processzor tbb utasts prhuzamos
elkezdsre kpes. A hardver knytelen felderteni a prhuzamosan vgrehajthat utastsokat, azt, hogy melyiket
melyik mveleti egysg hajtsa vgre, s azt is, hogy melyik utasts vgrehajtsa mikor kezdhet meg (teht az
egymsrahatsok kvetse s kezelse is a hardver feladata). A msik vglet a VLIW (Very Long Instruction Word)
architektra. A VLIW architektrban mindent a fordt vgez, belertve az utastsok mveleti egysgekhez
rendelst s az egymsrahatsok feloldst is. A kzputat az EPIC (Explicitly Parallel Instruction Computing)
architektra jelenti, mely szerint a fordt feladata az utastsok prhuzamosan vgrehajthat csoportokba
rendezse, minden ms a hardveren mlik.
R1
R4
R7
R0
R2
R1
R8
R2
+
+
R3
R5
R9
R3
Kt-utas szuperskalr pipeline-t feltteleznk. In-order esetben az utastsok sorrendje nem vltozhat, teht az
i1 s i2 kztti RAW fggsg miatt az els kt utasts nem hajthat vgre prhuzamosan. Elszr az i1 hajtdik
vgre, majd j nhny ciklussal ksbb, amint az R1 rtke elll, a vgrehajtsi fzisba lphet mind az i2, mind
az i3 egyszerre (mivel ezek fggetlenek), vgl a kvetkez ciklusban az i4 is.
232
Utastsok
i1
i2, i3
i4
Out-of order esetben a processzor trendezheti az utastsok sorrendjt. Mivel az i2 nem hajthat vgre, amg
az i1 meg nem adja az R1 rtkt, ezrt a processzor az i1 mell az i3-mat prosthatja prhuzamos vgrehajtsra
(ezek kztt ugyanis nincs adatfggsg). A kvetkez ciklusban a vgrehajtsi fzisba lphet az i4 is, vgl, ha
az R1 rtke elllt, az i2 is.
rajelciklus
Utastsok
i1, i3
i2, i4
Lthat, hogy az out-of-order feldolgozs sokkal nagyobb jtkteret enged a mveletei egysgek jobb kihasznlshoz, cserbe jval bonyolultabb a megvalstsa.
Megjegyezzk, hogy a szakirodalomban az in-order szuperskalr pipeline-t is statikusan temezettnek tekintik,
hiszen a fordt ltal generlt utastssorrend sok mindent elre meghatroz.
Vezrl
ALU
PC
Regiszter
trol
DMEM
IMEM
Vezrl
ALU
PC
Regiszter
trol
DMEM
ALU
IMEM
Vezrl
233
IF - Utastslehvs
Ha az m lehvand utasts egymst szekvencilisan kveti (nem tartalmaz ugrst), akkor a dolgunk nem nehezebb,
mint az 1-utas esetben: a PC ltal hivatkozott cmrl le kell hvni mind az m utastst. A memria szszlessg
nvelsvel ez egyetlen memriatranzakcival megoldhat. Ha az m utasts tartalmaz ugrst is, akkor nehzsgekbe tkznk, mert nincs id arra, hogy cache memribl egynl tbb cmrl is adatokat hvjunk le (nem fr
bele egy ciklusidbe). A legegyszerbb megolds, hogy ilyenkor az adott ciklusban csak az elgazsig hvjuk le az
utastsokat. gy ugyan nem hvunk le annyi utastst, amennyit lehetne, de nhnyat igen, teht emiatt nem
marad feldolgozand utasts hjn egyetlen fzis sem.
ID - Dekdols
m utasts prhuzamos dekdolsa sorn bizonyos feladatok elvgzst lehet zavartalanul prhuzamosan vgezni
(pl. ALU mveleti kd kinyerse az utastsbl, esetlegesen tartalmazott skalr konstans kinyerse, stb.), de ms
feladatok sszetettebb vlnak.
Nehzsgek:
Tovbbra is csak egy regisztertrolnk van, s ebbl az egy trolbl kell kiolvasni mind az m utasts
legrosszabb esetben 2 m operandusnak rtkt, egyetlen ciklusid alatt. A 2 m kiolvass szekvencilis
elvgzsre nincs id, clszer teht tbbportos regisztertrolt alkalmazni, amely a 2 m kiolvasst a
2 m porton keresztl egyidejleg el tudja vgezni. Ez termszetesen lnyegesen nveli a regisztertrol
bonyolultsgt.
Az adatfggsgek detektlsa s a forwarding utak kivlasztsa a pipeline szlessgvel ngyzetesen
tbb ellenrzst (sszehasonltst) ignyel, hiszen minden fzisban m utasts van, s az adatfggsgek
feldertshez mindegyik utasts forrsoperandusait mindegyik ksbbi utasts eredmnyregisztervel
ssze kell hasonltani.
A fel nem oldhat adatfggsg esetn, mint korbban lttuk, sznetet kellett beiktatni, teht nem engedtk
tovbblpni az utastst a kvetkez fzisba. Egy utas feldolgozs esetn ez egyrtelm, de mit tegynk, ha
m utasts van egyidejleg az ID fzisban, s ezek egy rsze megllni knyszerl, msik rsze pedig tovbb
mehetne? Az in-order viselkedsbl addan, ha az m utasts kzl a program szerinti korbbi utasts
knyszerl vrakozsra, akkor minden nla ksbbi utasts is vrakozni fog, hiszen ksbbi utasts nem
elzhet be egy korbbit. Erre az esetre vonatkozik a kvetkez plda (srga szn jelli az adatfggsg miatt
vrakozni knyszerl utastst):
Utasts
i1:
i2: R1 MEM[R0 + 4]
IF1
IF2
ID1
ID2
EX1
EX2
MEM1
MEM2
WB1
WB2
IF1
IF2
ID1
ID2
szn
szn
EX1
EX2
i3: R2 R1 + 32
i4: R3 R0 R4
MEM1
MEM2
WB1
WB2
Ha az m utasts kzl egy ksbbi knyszerl vrakozsra, a program szerint t megelzket termszetesen
tovbbengedjk a back-end fel. A krds most mr csak az, hogy az gy felszabadul helyekre beengedjnk-e
utastsokat az IF fzisbl, vagy ne. Termszetesen hatkonyabb megolds, ha a felszabadul helyekre jakat
hozunk, melyek dekdolsa elkezddhet, s az IF fzisban, ahonnan jttek, helykre j utastsok hvhatk
le. Ez trtnik az albbi pldban, melyben az i5 (ha nincs a vgrehajtst akadlyoz egymsrahats)
belphet az ID fzisba, az ott vrakoz i4 mell (az in-order elv ezzel nem srl):
Utasts
i1:
i2: R1 MEM[R0 + 4]
i3: R3 R0 R4
i4: R2 R1 + 32
i5:
i6:
IF1
IF2
ID1
ID2
EX1
EX2
MEM1
MEM2
WB1
WB2
IF1
IF2
ID1
ID2
EX1
szn
MEM1
EX2
WB1
MEM2
WB2
IF1
IF2
ID1
szn
EX1
ID2
MEM1
EX2
WB1
MEM2
WB2
234
IF1
IF2
ID1
ID2
EX1
EX2
MEM1
MEM2
WB1
WB2
IF1
IF2
ID1
ID2
EX1
szn
IF1
IF2
szn
szn
i3: R3 R0 R4
i4: R2 R1 + 32
i5:
i6:
MEM1
EX2
WB1
MEM2
WB2
ID1
ID2
EX1
EX2
MEM1
MEM2
WB1
WB2
EX - Vgrehajts
A mveleti egysgek tbbszrzse nem jelent problmt. A forwarding utak nagy szma azonban igen! Mivel
minden egyes fzisban potencilisan m utasts tartzkodik, s brmelyik utasts operandusa megegyezhet
brmelyik korbbi utasts eredmny regisztervel, a forwarding utak szma m-mel ngyzetesen arnyos. A
forwarding utakon 32 vagy 64 bites adatokat kell tovbbtani, teht a nagy szm forwarding busz elvezetse,
fogyasztsa, ksleltetse gyorsan hatrt szab a pipeline szlessgnek. A sok forwarding ttal egytt az ALU
operanduskivlaszt multiplexerei is szlesek lesznek. Azt, hogy milyen sok forwarding trl van sz, a 15.6.
bra szemllteti: s ez csak a legegyszerbb eset, s az bra csak az egyik ALU egyik operandusnak forwarding
tjait tartalmazza.
ALU
DMEM
ALU
15.6. bra. Forwarding utak 2-utas in-order pipeline egyik ALU-jnak egyik operandusra
A problmt a mveleti egysgek csoportostsval lehet enyhteni. A mveleti egysgeket clusterekbe
csoportostjuk, s a forwarding utakat csak a clustereken bell ptjk ki. Ha egy utasts RAW fggsgben
ll egy msik clusterbe tartoz utastssal, akkor a szksges operandust nem tudja forwarding segtsgvel
megkapni, tbb ciklusnyi sznetet kell tartania, mire a vrva vrt operandus egy regiszterbe bersra kerl,
ahonnan aztn a kvetkez lpsben ki tudja olvasni s gy a vgrehajtsa elkezdhetv vlik.
MEM - Memriamveletek
A MEM fzisban tartzkod Load s Store utastsoknak a memrit (illetleg az adat cache-t) egyidejleg kellene
elrnie, egy lpsben akr m klnbz cmrl/cmre kell adatokat olvasni/rni. Ezt vagy tbbportos memrival
lehet megvalstani (de ekkor kezelni kell az egyez vagy tfed cmre hivatkozsbl ered koniktusokat is),
vagy pedig tovbbra is csak egy memriamveletet engednk vgrehajtani ciklusonknt. Ez utbbi lehetsg nem
rontja a pipeline hatsfokt olyan drasztikusan, mint amennyire els pillantsra ltszik: a memriamveletek a
statisztikk szerint program utastsainak csak a harmadt teszik ki. Teht pl. egy ktutas in-order szuperskalr
pipeline-ban j esllyel a MEM fzisban lv kt utasts kzl legfeljebb az egyik fog a memrihoz fordulni.
Ha vletlenl mgis mindkett memriamvelet lenne, akkor feldolgozsi egymsrahats alakul ki, s a ksbbi
utastsnak meg kell vrnia, mg a korbbi vgez a memriamveletekkel.
WB - Regiszter-rs
Ahhoz, hogy tbb utasts is tudja egyidejleg rni a regisztereket, tbb-portos regiszter trolt kell alkalmazni.
235
Azrt esett a vlaszts erre a viszonylag rgi processzorra, mert nagyon jl ismert a struktrja, nem utolssorban [42]-nak ksznheten.
A processzortervezk ltalban ennl jval kevesebb informcit tesznek publikusan elrhetv.
236
A pending/replay sor valjban kt vrakoz sort jelent. A pending sorban vannak a flig dekdolt
utastsok, vrjk, hogy D3-ba lphessenek. Elfordul, hogy az temez csak 1 utastst enged tovbb innen,
ekkor az ott ragadt utasts ebben a sorban vrja meg az j prjt, amivel majd egytt haladhat vgig a 2-utas
pipeline htralv rszn.
A replay sorban a vgrehajts alatt ll, de mg be nem fejezett utastsok llnak, ennek a szerepe sokkal
rdekesebb. Ez a processzor ugyanis klnleges mdon kezeli az egymsrahatsokat. Ha az temez egymsrahatst szlel, nem vrja ki, amg elmlik, hanem megbecsli, hogy kb. mikor fog megolddni, s gy indtja el a
kvetkez utastst, hogy mire a kritikus rszhez r, mr becslse szerint rendezdjn a problma. Pldul ha egy
olyan utasts vrja a D3-ban az indtst, amelyik egy korbbi, cache-hibt okoz load mvelet eredmnyre vr,
akkor a klasszikus esetben meg kellene vrni, mg a cache-blokk megrkezik, s befejezdik a load. A Cortex-A8
processzor temezje azonban megbecsli, hogy ez meddig fog tartani, s gy indtja r a vrakoz utastst,
hogy a neki kell adat pont akkora jelenjen meg, mire szksge lesz r. Ez persze idnkt nem sikerl, mert
hamarabb r oda az utasts, mint az adat. Mivel a D3 utni fzisokban vrakozni ebben a pipeline-ban nem lehet,
ezrt a peches utastst trlni kell, majd a replay sorbl jra kell indtani a vgrehajtst.
Vgrehajts Ez a processzor (az opcionlis kiegsztsek nlkl) hromfle mveleti egysggel rendelkezik:
Egsz ALU: sszeads, kivons, bitmveletek. Kett van belle, gy egyszerre kt ALU-t hasznl utasts is
vgrehajthat prhuzamosan.
Egsz szorz: csak egyetlenegy van belle, s annak is kttt a hasznlata, ugyanis a pipeline-ban utaz
utastsprok kzl csak az regebbik hasznlhatja. Ha a atalabbnak is szksge van szorzsra, akkor az
temez csak a kvetkez ciklusban engedi ki a D3-bl, gy abban a krben mr az lesz az regebbik.
Load/store egysg: ebbl is csak egy van, de azt az egyet az utastspr brmelyik tagja ignybe veheti.
Az elgazsok kirtkelst az Egsz ALU mveleti egysgek vgzik, de az egytt utaz utastsprok kzl
mindig legfeljebb csak egy lehet ugr utasts. Ha nem ez a helyzet, akkor az temez az regebbet engedi tovbb
a D3-bl, egyedl.
A vgrehajts minden esetben 6 fzisbl ll. Az els fzisban (E0) trtnik a regiszterek rtknek kiolvassa
a regisztertrolbl. A tovbbi 4 lps (E1-E4) magnak a mveletnek a vgrehajtsa, az utols lps (E5) pedig a
write-back, az eredmny visszarsa a regisztertrolba.
Egsz ALU mveletek esetn: E1: opcionlis shiftels (az ARM utastskszletben minden aritmetikai
mvelet kiegszthet egy bitenknti eltolssal), E2: ALU mvelet, E3: az eredmny potencilis teltdsnek
kezelse, E4: elgazsbecsl tblzatainak frisstse.
Egsz szorz: E1-E3: szoroz, E4: a szorzs eredmnyt hozz tudja adni az eredmnyregiszterhez.
Load/store egysg: E1: cmszmts, E2-E4: adat cache kiolvassa, ill. rsa.
Ha sszeadjuk a fzisok szmt, megkapjuk, hogy a pipeline mlysge 14.
Az ARM Cortex-A53 processzor pipeline-ja
Az ARM Cortex-A53 az imnt trgyalt Cortex-A8 modernebb vltozata, 2012-ben jelentettk be, az els implementcik 2014 vgn kerltek a piacra. Ez a processzor is 2-utas in-order szuperskalr kpessgekkel rendelkezik,
mind a pipeline szerkezete, mind az alapmegoldsok tern nagyban hasonlt a Cortex-A8-ra (15.8), de a tervezk
ezttal mindent bevetettek, hogy ebbl a felptsbl kihozzk a maximumot. Az utastslehvs tovbbra is 3
fzisbl ll, melyek szerepe megegyezik a Cortex-A8-nl ltottal. A dekdols azonban mr egyetlen rajel alatt
megtrtnik. A mveleti egysgek ksleltetse is cskkent, a lebegpontos mveletek 4, minden ms pedig 2
lps alatt befejezdik. sszessgben a pipeline mlysge 8.
237
238
239
Egsz mv. 1
Egsz mv. 2
Mem. mv. 1
Mem mv. 2
FP mv. 1
FP mv. 2
A klasszikus VLIW processzorok nem ellenriznek semmilyen egymsrahatst, gy nem tudjk az utastsokat
vrakoztatni sem. Ha adat-egymsrahats miatt egy utastscsoportnak vrakoznia kellene (megvrnia, hogy az
elz utastscsoport befejezze az egyik utastsnak a forrsoperandusnak a kiszmolst), akkor a fordt
csupa NOP utastsbl ll csoportot szr be, pont annyit, amennyi ahhoz kell, hogy az egymsrahats ne okozzon
gondot.
Nzznk egy konkrt pldt az utastsok csoportostsra s temezsre, melyben az egsz mveletek 1, a
memriamveletek 3, a lebegpontos mveletek pedig 4 ciklusideig tartanak, az utastscsoport sszettele pedig
a 15.11. bra szerinti:
240
Egsz 2
Mem 1
Mem 2
FP 1
FP 2
1:
NOP
NOP
i1
i2
NOP
NOP
2:
NOP
NOP
i3
NOP
NOP
NOP
3:
NOP
NOP
NOP
NOP
NOP
NOP
4:
i4
i5
NOP
NOP
NOP
NOP
5:
NOP
NOP
i7
i8
i6
NOP
6:
NOP
NOP
NOP
NOP
NOP
NOP
7:
NOP
NOP
NOP
NOP
NOP
NOP
8:
NOP
NOP
NOP
NOP
NOP
NOP
9:
NOP
NOP
i9
NOP
NOP
NOP
A program:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
i8:
i9:
R3 MEM[R1+0]
R4 MEM[R1+4]
D1 MEM[R1+8]
R5 R3 + R4
R6 R3 - R4
D2 D1 * D1
MEM[R2+0] R5
MEM[R2+4] R6
MEM[R2+8] D2
A sok-sok NOP rgtn azt sugallja, hogy nem sikerlt elg sok prhuzamosan vgrehajthat utastst tallni
ahhoz, hogy az utastscsoportok jobban kitltttek legyenek. Radsul 4 csupa NOP csoportot is be kellett iktatni,
hogy az adat egymsrahatsok ne okozzanak gondot.
Az elbbiek alapjn teht a fordtprogramnak az albbi feladatai vannak:
az utastsok utastscsoportokba rendezse gy, hogy az utastscsoportok a lehet legjobb kitltttsgek
legyenek (azaz a mveleti egysgek jl ki legyenek hasznlva),
az egy csoportba kerl utastsok prhuzamos vgrehajthatsgnak biztostsa,
az utastscsoportok temezse a megfelel szm csupa NOP csoporttal gy, hogy az egymsrahatsok ne
okozzanak gondot.
A kereskedelmi forgalomban lv implementcik tipikusan 3-4, extrm esetben akr 28 utastsbl ll
csoportokat hasznlnak. Mivel az utastsfeldolgozs legnagyobb komplexitst ignyl feladatait (mint pl. az
egymsrahatsok kezelst) nem kell a processzornak elvgeznie, a processzor nagyon egyszer lesz: a VLIW
architektrt tbbnyire olcs, kis fogyaszts begyazott rendszerekben alkalmazzk. Az egyszersg akkor is
szempont, ha VLIW feldolgozegysgekbl sokat kell egy lapkra elhelyezni (pl. az AMD grakus processzorai az
R300 ta mind VLIW architektrra plnek - 3 vagy 4 utasts/csoport), vagy ha a processzorral szemben elvrs
a kiszmthat, spekulcitl s predikcitl mentes mkds (mint a DSP-k, pl. TMS320C6x - 8 utasts/csoport).
A klasszikus VLIW processzorok htrnyai:
A lefordtott program kizrlag azon a hardveren fut, amire lefordtottk, hiszen az egy csoportba tehet
utastsok szma, a mveleti egysgek darabszma s ksleltetse az utastscsoportok kialaktsnl ki lett
hasznlva. Nem lehet teht a jvben a processzorcsald j tagjaknt 1-2 extra mveleti egysget hozzadni
a processzorhoz, hiszen akkor nvelni kellene a csoportba tehet utastsok szmt, ami a rgi szoftverek
jrafordtst teszi szksgess. Szintn jrafordts szksges, ha az j modellben a mveleti egysgek
ksleltetse cskken, hiszen akkor kevesebb NOP-ot kell beszrni adategymsrahats esetn.
Az egyik legnagyobb gond, hogy VLIW architektrban a transzparens cache bevezetse gondot okoz! A
transzparens cache alkalmazsa esetn ugyanis a memriamveletek sebessge nem lesz tbb lland
(hiszen cache tallat s cache hiba esetn ms-ms lesz a ksleltets), st, nem lesz elre, fordtsi idben
kiszmthat. A fordt nem fogja tudni eldnteni, hogy adat-egymsrahats esetn mennyi idt kell
vrni (hny csupa NOP csoportot kell beiktatni) a kvetkez utasts elkezdsig. Ezrt a klasszikus VLIW
processzorok nem hasznlnak cache-t.
A programok mrete nagyon nagy is lehet a sok NOP miatt.
A klasszikus VLIW processzoroknl nmileg rugalmasabbak a dinamikus VLIW processzorok. Ahogy a fenti
tblzatbl kitnik, ennl a megoldsnl az utastscsoportok vgrehajtsi idejt a hardver (a processzor) hatrozza
meg, teht a dinamikus VLIW processzorok kpesek az egymsrahatsok kezelsre, gy az utastscsoportok
szksg szerinti ksleltetsre is. Ennek ksznheten lehetv vlik pl. a cache kezelse is, hiszen cache hiba
esetn a hosszabbra nylt memriamvelet idejre a processzor kpes a pipeline-t meglltani. Dinamikus VLIW
processzorok esetn a fordtprogram ltal generlt kd is valamivel szlesebb krben hasznlhat: nem kell
jrafordtani a programot, ha kijn egy jabb processzor a korbbiaktl eltr (kisebb) ksleltets mveleti
egysgekkel, a rgi kd futni fog, j, a megvltozott ksleltetseknek megfelel temezssel (gyorsabban).
241
2. utasts
3. utasts
Template tpus
242
loop: D1 MEM[R1+0]
R1 R1 + 8
D2 D0 + D1
MEM[R2+0] D2
R2 R2 + 8
JUMP loop IF R1 != R3
A kdban R1 mutat az A tmb aktulis elemre, R2 a B tmb aktulis elemre, R3-ban az A tmb vgt
troljuk (R3 = R1 + N 8, ha R1 elri R3-mat, a ciklus megll), D0-ban pedig C-t. Feltesszk tovbb, hogy a
lebegpontos szmok 8 bjtot foglalnak.
Egy klasszikus VLIW processzor szmra ezeket az utastsokat a kvetkezkppen lehet csoportostani (2
egsz s 2 lebegpontos aritmetikai egysget, valamint 2 memria mveleti egysget felttelezve, lsd 1. bra, az
egsz mveletek 1, a memriamveletek 3, a lebegpontos mveletek pedig 4 ciklusideig tartanak):
Egsz 1
1:
Egsz 2
i2
Mem 1
Mem 2
FP 1
FP 2
i1
2:
3:
4:
i3
5:
6:
7:
8:
i5
i6
i4
A pldban a ciklusmag utastsai kztt (a Load s az sszeads, ill. az sszeads s a Store kztt) RAW
egymsrahats van, ezrt nem tehetk egy utastscsoportba. Elszr is, az adatfggsgek miatt i3-nak meg kell
vrnia, mg i1 lefut (3 rajelciklus), i4-nek pedig meg kell vrnia, mg i3 lefut (4 rajelciklus). Az adatfggsgek
kezelsre a VLIW processzorok csupa NOP csoportok beszrst teszik szksgess (az resen hagyott cellk
NOP-okat jelentenek). Ha dinamikus VLIW vagy EPIC architektrt alkalmazunk, akkor a csupa NOP csoportokat
nem kell ugyan a fordtprogramnak beszrnia, mert beszrja a hardver automatikusan (ezek a sznetek az
adatfggsg feloldshoz mindenkpp szksgesek), de a futsi idn ez nem segt. Ezzel a megoldssal teht egy
iterci (a ciklusmag egyszeri lefutsa) 8 rajelciklust vesz ignybe, teht 0.125 iterci/rajelciklus sebessget
kapunk.
Cikluskifejts
A processzor kihasznltsga szempontjbl j lenne a fggsgek miatti csupa NOP csoportok (vagy a hardveresen
beszrt sznetek) helyett valami hasznos mveletet vgezni. Mivel tlthetnnk ki a sok resjratot, ha egyszer a
ciklus mveletei (load - sszeads - store) fggenek egymstl? A kvetkez itercik mveleteivel! Az tlet a
kvetkez: mivel a for ciklus egyms utni itercii egymstl fggetlenek, rjuk t a ciklust gy, hogy 4-esvel
lpjen, s a ciklus minden krben egyszerre ngy mveletet vgezzen:
(Feltteleztk, hogy N oszthat 4-gyel. Ellenkez esetben a maradk mveleteket a cikluson kvlre kell
mozgatni.) Lssuk a generlt kdot:
Ez a ngyesvel lptetett for ciklus akkor nyer rtelmet, ha az egymssal adat-egymsrahatsban ll utastsokat a lehet legjobban eltvoltjuk egymstl. Ha az egymstl fgg utastsok olyan tvol vannak egymstl,
hogy mire a ksbbinek szksge van a korbbi eredmnyre, az mr rendelkezsre fog llni, nem kell meglltani
a pipeline-t s megvrni a korbbi utasts befejezdst. Az trendezett kd:
244
Egsz 2
Mem 1
1:
i1
2:
i2
3:
i3
4:
i5
Mem 2
i4
FP 1
i6
5:
i7
6:
i8
7:
i9
8:
i10
9:
i11
10:
i12
11:
i14
i15
FP 2
i13
Ezzel a csoportostssal elrtk, hogy ne kelljen csupa NOP csoportot beszrni (vagy, dinamikus VLIW vagy
EPIC processzorokban a pipeline-t az egymsrahats miatt meglltani). A ciklus 4 itercija (a ciklusmag 4
lefutsa) 11 rajelciklust vett ignybe, teht a vgrehajtsi sebessg 0.36 iterci/rajelciklus. Ezt a technikt
ciklus kifejtsnek (loop unrolling) nevezzk. Vegyk szre, hogy ebben a pldban lenne rtelme a ciklust
akr 8-asval is lptetni, mert a VLIW processzorunkban 2 memria s 2 lebegpontos egysg is van. Ha ezt
kihasznljuk, akkor 0.72 mvelet/ciklus-ra nvelhetjk a sebessget.
Ez a technika nem VLIW/EPIC specikus, a cikluskifejts egy ltalnosan hasznlt ciklus optimalizlsi
technika.
Szoftver pipeline
Nem a ciklus kifejts az egyetlen ciklus tszervezsi technika, melynek segtsgvel teljestmnynvekedst lehet
elrni. Most egy kicsit ms oldalrl kzeltjk meg a problmt. me az elbbi plda:
for (i=0; i<N; i++)
B[i] = A[i] + C;
A ciklus belsejben lv 3 mvelet nyilvn sszefgg, nem lehet ket egyszerre vgrehajtani. Alaktsuk t a
ciklust a kvetkezkppen:
...
for (i=2; i<N-2; i++) {
Load A[i]
B[i-1] = A[i-1] + C;
Store B[i-2]
}
...
Az talaktott ciklus ugyanazt csinlja, mint az eredeti, de ahhoz kpest egy fontos elnye van: a ciklus
belsejben lv 3 mvelet egymstl fggetlen, gy azokat egy utastscsoportba helyezve egy VLIW vagy
EPIC processzor egy lpsben kpes vgrehajtani. Teht amg az A i. elemt betltjk, azzal egyidben
kiszmolhatjuk a B i-1-edik elemt s a memriba rhatjuk a B i-2-ik elemt. Ezt a tpus ciklusszervezst
szoftver pipeline-nak nevezik. Az analgia kedvrt: egy 3 fzis hardver (utasts-) pipeline estn egy adott
ciklusban pillanatfelvtelt ksztve azt ltjuk, hogy amg az i. utasts a 3. fzisban van, azzal egyidben az
i+1. utasts a 2., az i+2. utasts pedig az 1. fzisban van. A szoftver pipeline-ban a pipeline ciklus-nak a
programban lv ciklus egy itercija felel meg, az utastsoknak a ciklusmag (eredeti, trendezs eltti formja),
a fzisoknak pedig a ciklusmag utastsai. A szoftver pipeline-n talaktott ciklus eltt s utn intzkedni kell a
pipeline feltltsrl s kirtsrl, vagyis a ciklus el ki kell venni a 0. s 1. elem betltst, valamint a 0. elem
kiszmtst, illetve a ciklus utn az N-1. elem kiszmtst s az N-2. s N-1. elem memriba rst.
Egsz 1
Egsz 2
Mem 1
1:
i1
2:
i2
3:
i3
4:
i5
Mem 2
FP 1
i4
5:
i1
i6
6:
i2
i7
7:
i3
i8
i4
i9
8:
i5
9:
i1
i10
i6
10:
i2
i11
i7
i3
i12
i8
i4
i14
i9
13:
i10
i6
14:
i11
i7
15:
i12
i8
16:
i14
i9
17:
i10
18:
i11
19:
i12
20:
i14
11:
i13
12:
i5
FP 2
i15
Feltn a hasonlsg a cikluskifejtssel kapott kddal, van azonban egy lnyeges klnbsg, ami itt nem
is ltszik: a cikluskifejts pldjhoz kpest itt R2 2 4 8 = 64-gyel htrbb jr. Nzzk, mi is trtnik egy
kiszemelt iterciban, egy utastscsoport, mondjuk az i1-i6-i10 csoport vgrehajtsakor. Amikor egy tmbelemet
betltjk a D1 regiszterbe (i1), azzal egyidben az elz rajelciklusban betlttt tmbelemhez (szintn D1-ben
246
van) hozzadhatjuk D0-t (i6), s mindezekkel egyidben az elz kr sszeadsnak eredmnyt (D5-ben van, az
elz krben szmoltuk ki, a kt krrel korbban betlttt tmbelembl) kirhatjuk a memriba (i10).
A tblzat az N=12 esetet brzolja (vagyis a cikluskifejts utn kapott for ciklus csak egy krt megy). Az 1.-8.
sorok a szoftver pipeline feltltst, a 13.-17. sorok a kirtst vgzik. ltalnos esetben a srgval jellt 9.-12.
sorok annyiszor hajtdnak vgre, ahny lpst a cikluskifejts utn kapott for ciklus megtesz. Lthat, hogy
a srga rszben minden egyes cilkusban trtnik egy lebegpontos mvelet, vagyis a kt technika tvzsvel
elrhetjk az idelis 1 iterci/rajelciklus sebessget, feltve persze hogy a ciklus elg sok lpst megtesz ahhoz,
hogy a feltltshez s kirlshez szksges id amortizldjon.
(Furcsnak tnhet a programkdban az i13. s i14. utastsok sorrendje: ezeket megcserlve kapnnk logikus
programot. Azonban ezeket megcserlve a csoportostst brzol tblzat 12. sorban 3, az egsz egysget ignyl
utastst is el kellene vgezni egyszerre - az R1 nvelst, az R2 nvelst valamint a feltteles ugrst - amihez
nincs elg erforrs, hiszen a pldban 2 egsz egysget feltteleztnk. Ezrt az R2 nvelst egy rajelciklussal
hamarabb vgezzk el, s a fennmarad Store mvelethez tartoz cmet ennek megfelelen szmtjuk ki.)
sszegzs
A 15.13. bra hatsosan szemllteti, hogy milyen komoly teljestmnyjavuls rhet el a cikluskifejts s a szoftver
pipeline alkalmazsval.
Optimalizls nkl:
Int 2
Mem1 Mem2
FP1
Ciklus kifejtssel:
FP2
Int 1
Int 2
Mem1 Mem2
FP1
Int 1
Int 2
Mem1 Mem2
FP1
FP2
rajelciklusok
Int 1
Prediktumok nlkl:
JUMP label IF R1>R2
R3 R1
JUMP end
label: R3 R2
end:
Prediktumokkal:
P1,P2 R1 R2
R3 R1 IF P1
R3 R2 IF P2
Prediktumokkal lthatan nem volt szksg a JUMP utastsra. A pldban, akrcsak a legtbb VLIW/EPIC
processzorban, a prediktumokkal operl kdban az sszehasonlts kt prediktumot fog belltani: ha az
sszehasonlts igazat ad, az elst 1-be, a msodikat 0-ba lltja, ellenkez esetben pedig fordtva. Teht P1 a
relci teljeslst, P2 a nem teljeslst fogja jelenteni (P2 a P1 komplemense).
A prediktumokra alapozott megolds nemcsak a feltteles ugrs kikszblse miatt szerencss. Vegyk
szre, hogy a msodik s harmadik sor egymstl fggetlenek, teht egy utastscsoportba tehetk. Ez ltalban
is igaz: egy if-then-else C nyelvi szerkezet blokkjai fggetlen utastsokat tartalmaznak, teht a prediktumok
segtsgvel a teljesl s a nem teljesl g utastsait egy csoportba lehet fogni. Ilyenkor a processzor lehvja az
utastscsoportot, amely mindkt g utastsait tartalmazza, de a csoportbl csak azokat hajtja vgre, amelyek a
ciklusfelttel teljeslsnek megfelel prediktummal vannak elltva.
Blokkegyests
Egy VLIW/EPIC fordtprogram a processzor erforrsainak minl jobb kihasznlsa rdekben megvltoztathatja
az utastsok sorrendjt. A fggetlen utastsok csoportokba rendezse sorn azonban a fordt mozgstert
nagy mrtkben korltozzk a feltteles ugr utastsok, hiszen fordtsi idben a vgrehajtsi trtnet, gy az
248
elgazsi felttel is ismeretlen. Olyan utastsokat nem lehet felcserlni, illetve nem kerlhetnek egy csoportba,
melyek kztt az eredeti programban feltteles ugr utasts van, hiszen az elgazs kimenetele futs kzben
derl ki. A fordtprogram tulajdonkppen az ugr utastsok ltal hatrolt utastssorozatokon bell (egyszer
blokkokban, basic block) vlogathat fggetlen utastsokat keresve. Az egyazon egyszer blokkba tartoz utastsok
feldolgozst nem zavarja procedurlis egymsrahats sem. Az elz fejezetben ltott prediktumokra alapozott
technikt felhasznlhatjuk arra, hogy a programot a feltteles ugr utastsok szmt cskkentve kevesebb, de
nagyobb mret egyszer blokkra bontsuk, ami a pipeline feldolgozs szmra elnysebb.
Eredeti
Vgduplikcival
Blokkegyestssel
spekulatv betltssel:
...
R1 MEM [R0] / spekulatv
...
JUMP label IF R8==0
spekulatv Load vglegests
R2 R1 * R1
JUMP end
label: ...
end:
250
16. fejezet
Elgazsbecsls
16.1. Az elgazsbecsls szerepe
Ha nem lennnek ugr utastsok, az utastslehv egysg lenne a processzor egyik legegyszerbb alkoteleme,
hiszen mindig csak az utastsszmll nvelse s a soron kvetkez utasts beolvassa lenne a feladata.
Azonban minden utastskszlet architektrban vannak ugr utastsok, melyek az utastsfolyam szekvencilis viselkedst megtrik, s ezek feldolgozsa az utastslehv egysg szmra problmt jelent. Az utastslehvnak ugyanis azonnal el kell dntenie, hogy a program merre folytatdik, msklnben nem tudja vgrehajtand
utastsokkal elltni a pipeline tovbbi fzisait. Sokszor ezt a dntst az idkorltok miatt olyan gyorsan kell meghoznia, hogy csak egy becslsre tud hagyatkozni. Ha rosszul tippel, az idkzben tvedsbl behozott utastsok
vgrehajtsa feleslegesnek bizonyult, a processzor szksgtelen utastsokra pazarolta erforrsait.
Mieltt rtrnnk, hogy hogyan lehet nagy tallati pontossggal megbecslni a program folytatsnak irnyt,
ttekintjk azokat az utastsokat, melyek az utastsok egymsutnisgt megszakthatjk.
A felttel nlkli ugr utastsok a magas szint nyelvek goto utastsnak felelnek meg. Egyetlen
bemenoperandusuk az ugrsi cm, azaz hogy merre folytatdik tovbb a program, mi lesz a kvetkez
utasts. A felttel nlkli ugrs lehet direkt, ha az ugrsi cm egy konstans, pl. JUMP -28, illetve lehet
indirekt, ha az ugrsi cm egy regiszter rtke, pl. JUMP R1.
Bizonyos architektrkban az ugrsi cmet az utastsszmllhoz kpest rtik (relatv), msokban ez egy
abszolt memriacm.
A feltteles ugr utastsok az ugrsi cm mellett egy ugrsi felttellel is rendelkeznek. Az ugrs csak akkor
kvetkezik be, ha az ugrsi felttel teljesl. A felttel megadsa architektrafgg, lehet felttel kddal vagy
felttel regiszterrel megadott, illetve lehet az utasts rsze is (sszehasonlt s ugrik, lsd 3.2.4. fejezet).
Ebben a fejezetben az utbbi formt hasznljuk. Ebben az esetben is beszlhetnk direkt, pl. JUMP -28 IF
R2>0, illetve indirekt esetekrl, pl. JUMP R1 IF R2>0.
A programban feltteles ugrssal jrnak az if-then-else szerkezetek, illetve a ciklusokban a ciklusfelttel
kirtkelse is.
A szubrutin hvsok, illetve a szubrutinbl val visszatrs is a szekvencilis utasts-vgrehajts megszakadsval jr. A szubrutin hvs is lehet direkt, pl. CALL -28 vagy indirekt, pl. CALL R1.
A szubrutinhvs formja szemmel lthatan nagyban hasonlt a felttel nlkli ugrsokhoz, a klnbsg
csak annyi, hogy szubrutinhvskor a visszatrsi cm a verembe kerl. Vannak utastskszlet architektrk,
melyekben nincs is kln szubrutin hvs, vagy ppen nem stack-el oldjk meg a visszatrsi cm tadst.
Ebben a fejezetben stack alap fggvnyhvsokat vesznk alapul.
A szubrutinbl val visszatrs alakja: RET, amely szintn felttel nlkli ugrs, de az ugrsi cm ez esetben
a verembl szrmazik.
A program folytatsnak kidertse rdekben ezekkel az utastsokkal a lehvs utn a kvetkez mveleteket
kell elvgezni:
Az ugrsi cm kiszmolsa. Direkt ugrs esetn ez csak annyit jelent, hogy az ugrsi cmet, ami egy konstans,
hozz kell adni az utastsszmllhoz. Indirekt ugrs esetn rosszabb a helyzet, hiszen az ugrsi cmet
251
252
Annak rdekben, hogy a processzor futszalagja lehetleg egyetlen ciklusnyi ideig se lljon meg, az ugrsi cmet
s az ugrsi felttelt nem szmoljk, hanem becslik. Termszetesen a pipeline feldolgozs egy ksbbi fzisban
sor kerl ezek pontos kiszmolsra is. Ekkor az utastslehv ellenrzi, hogy jl tippelt-e, s ha kiderl, hogy
nem, akkor az idkzben elkezdett, rossz grl szrmaz utastsokat rvnytelenti.
Ennek a becslsnek a pontossga egy mly s szles pipeline esetn mg kritikusabb, hiszen egy ilyen
processzorban rossz dnts esetn sokkal tbb szksgtelen utasts vgrehajtsa kezddhet el, mire a tveds
kiderl. A nagysgrendek szemlltetse kedvrt szmoljuk ki, hogy alakul egy tlagos program futsa egy ma
tlagosnak mondhat processzoron tkletes s kevsb tkletes elgazsbecslst felttelezve:
Vegynk egy 4-utas szuperskalr processzort, melyben az elgazsbecsls sikeressge a feltteles ugr
utasts pipeline-ba lpstl szmtva 17 ciklus mlva derl ki, azaz rossz dnts esetn 17 ciklus munkja
vsz krba (ezek az Intel Core i7 Nehalem vals paramterei).
Tegyk fel, hogy a programban minden negyedik utasts feltteles ugrs (ez ltalnos programok esetn
relis szm).
Tegyk fel, hogy az elgazsbecsl 67%-os tallati arnnyal dolgozik.
Tegyk fel, hogy az utastsok vgrehajtsa sorn az elgazsok miatti procedurlis egymsrahatson tl
ms egymsrahats nem lp fel.
Szmoljuk ki, tlagosan hny ciklus szksges egy utasts vgrehajtshoz! Mivel 4-utas szuperskalr a
processzor, ciklusonknt 4 utasts fejezdik be, vagyis tlagosan 0.25 ciklusonknt tvozik egy utasts. Az
utastsok negyede ugrs, melyek 0.33 valsznsggel vonnak maguk utn egy 17 ciklusidnyi extra ksleltetst,
azaz: 0.25 + 0.25 0.33 17 = 1.65 ciklus/utasts. Tkletes elgazsbecsls esetn az utastsok tvozsi ideje:
0.25 ciklus/utasts, vagyis nem kevesebb, mint 1.65/0.25 = 6.6-szor jobb futsi idket kapnnk, ha tkletes lenne
a processzor elgazsbecslje! Az elgazsbecslsen teht nagyon is sok mlik.
A rossz dnts okozta kiesett ciklusok szmt foglalja ssze az albbi tblzat nhny, a maga idejben ill. ma
elterjedt processzor esetben:
Kiesett ciklusok szma:
Intel Pentium I MMX::
Intel Pentium 4:
4-5
tlagosan 45!
Intel Core2:
15
17
15
Intel Atom:
13
AMD K8 s K10:
12
Via Nano:
16
13
253
szablyosan, kiszmthatan viselkedik. Nzzk az albbi kimenetel-sorozatokat (minden sor egy feltteles ugr
utasts egyms utni kimeneteleit reprezentlja, az 1 jelli a megvalsult, a 0 a nem megvalsult ugrsokat):
1111111?
11111101101111011111?
11001100110011?
11111111111000000000000?
Az emberi szem knnyen kitallja a legvalsznbbnek tn folytatst, de a dntst algoritmizlni, radsul
az egyszersgre s gyorsasgra vonatkoz rendkvl szoros kvetelmnyek szem eltt tartsval, kzel sem
egyszer.
nem ugrott
01
00
tnyleg ugrott
nem ugrott
10
tnyleg ugrott
11
tnyleg ugrott
Tipp: lesz ugrs
254
teljesl, vgl 1-szer, a vgn, amikor elhagyjuk a ciklust, nem teljesl. A pldban a kls ciklus m-szer hajtja
vgre a belst. Nzzk meg, hogy a bels ciklus ciklusfelttelhez tartoz feltteles ugr utasts predikcija
mennyire hatkony. A bels ciklus teljes lefuttatsa az 1 bites szmllval 2 tves predikcit jelent: egyet a
ciklus vgn, amikor az ugrsok sorozatos teljeslse utn a vgn egyszer nem trtnik ugrs (mert a ciklusbl
val kilps miatt a futs a kvetkez, ciklus utni utastssal folytatdik). A msik tves predikci pedig akkor
trtnik meg, amikor a bels ciklust a kls jra lefuttatja: a ciklusfelttel els kirtkelsekor az 1 bites sma az
elz kimenetelt adja, az pedig pont a ciklus elhagysa volt. Nagysgrendileg teht az sszes n m feltteles
ugrsbl 2m predikcija tves. Ha 2 bites szmllt alkalmazunk, jobb eredmnyt kapunk. Ha n elg nagy, a
krdses feltteles ugr utastshoz tartoz szmll hamar 11-be teltdik, a prediktor megtanulja, hogy ez az
ugrs meg szokott valsulni. A ciklus vgn ugyangy tved, mint az 1 bites, de ez az egy tveds nem vltoztatja
meg homlokegyenest a jvbeli predikcikat: a prediktor ugyan egy kicsit elbizonytalanodik, a szmll rtke
lecskken 11-rl 10-ra, de mg mindig az ugrs bekvetkezsre fog tippelni, amikor a kls ciklus a kvetkez
krben a belst jra lefuttatja. Nagysgrendileg teht az sszes n m feltteles ugrsbl most csak m
predikcija tves.
Ennek az elgazsbecslsi mdszernek nagy elnye, hogy kicsi az adminisztrcis ignye: csak 2 bitet kell
ugr utastsonknt nyilvntartani, amit vagy nvelni, vagy cskkenteni kell az ugrsi felttel kirtkelse utn, s
melynek legfels bitje egyben az ugrs becslt kimenetele is. Az azonban krds, hogy ezt a 2 bitet hol troljuk, s
hogy honnan tudjuk, hogy a pipeline-ba belp feltteles ugr utastshoz melyik 2 bit tartozik. Erre vonatkozlag
tbb lehetsg is van:
Alkalmazhatjuk a cache-nl megismert trkkket. Az ugr utastsok cme a cache tag, a szmll 2 bitje
pedig az adat. A belp ugr utasts cme alapjn tartalom szerinti cmzssel keressk meg a cache-ben
a hozz rendelt szmllt. Ezt a cache-t a szoksos cache-nl megismert eszkzkkel lehet szervezni s
menedzselni: tbb utas szervezs, LRU cserestratgia, stb. Egy gond van ezzel a megoldssal: nem ri meg!
2 hasznos bit kedvrt 32 bites tag-eket trolni s 32 bites tartalom szerinti cmzst implementlni nem
sszer.
Az utastscache-ben a cache blokkok-ban fent lehet tartani egy kis terletet az adott blokkban lv ugr
utastsok szmllinak. Ezt a megoldst elszeretettel alkalmazza az AMD.
Trolhatjuk a 2 bites szmllkat egy kln tblzatban. Ezt a tblzatot minta elzmny tblnak hvjuk
(PHT, pattern history table). Mivel ilyen kicsi hely kell egy szmllnak, a PHT-nak nagyon sok eleme lehet.
Nem ritka a tbb ezres mret sem: ennyi ugr utasts adatait tudja egyszerre nyomon kvetni a processzor.
Azt, hogy a pipeline-ba belp ugr utastshoz melyik szmll tartozik, az utasts cmnek als bitjei,
vagy a cm egy hash fggvnye dnti el. Termszetesen lehet tkzs (tbb utastshoz is ugyanazt a
szmllt rendeljk), de ennek valsznsge a PHT nagy mrete miatt kicsi, s ha mgis bekvetkezik,
akkor sem trtnik hiba, legfeljebb pr rosszul sikerlt predikci (lsd 16.2. bra, nem vletlen a hasonlsg
a cache memrinl megismert Rivers algoritmussal, 10.9. bra!).
Utastsszmll
PHT
Hash fv.
nem ugrott
00
nem ugrott
nem ugrott
01
tnyleg ugrott
nem ugrott
10
tnyleg ugrott
tnyleg ugrott
11
tnyleg ugrott
255
nem ugrott
01
tnyleg ugrott
nem ugrott
10
tnyleg ugrott
tnyleg ugrott
11
tnyleg ugrott
256
Az esetleg nem egyrtelm megfogalmazs (klnsen a globlis/loklis PHT-vel kapcsolatban) rtelmet nyer,
ha vgigvesszk az sszes lehetsges kombincit:
1. Globlis ugrsi elzmny regiszter globlis PHT-vel: ez az eset felel meg a 16.2.2 fejezetnek, ill. a 16.3.
brnak. Egy darab ugrsi elzmny regiszter van, mely megindexeli az egy darab globlis PHT-t, hogy
kiderljn, hogy az adott mltbeli ugrsi kimenetelek mellett vrhat-e ugrs, vagy sem.
2. Loklis ugrsi elzmny regiszter loklis PHT-vel: minden ugr utastshoz kln tartjuk nyilvn a
mltbeli kimeneteleit egy shift regiszter segtsgvel. Minden ugr utastsnak sajt PHT-je van, melyben
troljuk, hogy az adott elzmnyek utn vrhat-e ugrs.
Plda: legyen egy ugr utasts loklis elzmny regisztere 0101. (Ez azt jelenti, hogy az elz s
a hrommal elz ugrs megvalsult, a kettvel s nggyel elz nem.) Tegyk fel, hogy ez az ugr
utasts megjelenik a pipeline-ban, s el kell vgeznnk az elgazsbecslst. Rnznk a loklis elzmny
regiszterre (melyet a BHT trol - hogy hogyan, azt ksbb trgyaljuk), ami megadja, hogy az utasts
sajt kln bejrat PHT-jnek a 0101-edik, vagyis decimlisan az 5-dik bejegyzst kell nzni. Az 5-dik
bejegyzsben szerepel, hogy ez az ugr utasts 0101 elzmnyekkel szokott-e ugrani, vagy sem. Ha a
PHT 2 bites teltd szmllkat tartalmaz, s itt az szerepel, hogy 00 vagy 01, akkor arra tippelnk,
hogy nem lesz ugrs, 10 vagy 11 esetn pedig fordtva. Ksbb pedig, amikor megtrtnik az ugrsi
felttel tnyleges kirtkelse, a PHT megfelel elemt frissteni kell. (Lsd 16.4. bra. Minden ugr
utastsnak termszetesen nincs PHT-je s BHT bejegyzse, az ugr utastst azonost utastsszmllt
hash fggvnyek rendelik hozz a korltozott szm PHT-hez ill. BHT bejegyzshez.)
Utastsszmll
PHT hash
BHT hash
PHT m
nem ugrott
00
nem ugrott
nem ugrott
01
tnyleg ugrott
nem ugrott
10
tnyleg ugrott
tnyleg ugrott
11
tnyleg ugrott
257
3. Loklis ugrsi elzmny regiszter globlis PHT-vel: minden ugr utastshoz kln tartjuk nyilvn a
mltbeli kimeneteleit, de csak egy, mindenkire nzve kzs PHT ll rendelkezsre (16.5. bra).
Plda: Mint az elbb, tegyk fel, hogy egy ugr utasts loklis elzmny regisztere 0101. Ekkor a kzs
PHT-ben kell megnzni, hogy gy ltalban, a 0101 mintt kvet elzmnyek utn teljeslni szoktak-e
az ugr utastsok.
Utastsszmll
Ugrsi elzmny tbla
PHT m
BHT hash
nem ugrott
00
nem ugrott
nem ugrott
01
tnyleg ugrott
nem ugrott
tnyleg ugrott
10
tnyleg ugrott
11
tnyleg ugrott
PHT hash
PHT m
nem ugrott
00
nem ugrott
nem ugrott
01
tnyleg ugrott
nem ugrott
10
tnyleg ugrott
tnyleg ugrott
11
tnyleg ugrott
258
Utastsszmll
nem ugrott
Hash fv.
XOR
00
nem ugrott
nem ugrott
01
tnyleg ugrott
tnyleg ugrott
nem ugrott
10
tnyleg ugrott
11
tnyleg ugrott
Globlis becsl:
Becsls vgeredmnye:
Vagyis ha a globlis becsl a tipikus viselkedst jsolja (agree), akkor a becsls eredmnye a loklis eljrs
kimenete lesz, ha a globlis azt jsolja, hogy most a szoksostl eltr viselkeds vrhat (disagree), akkor a
becsls eredmnye a loklis eljrs kimenetvel ellenttes lesz. Amit kaptunk, az nem ms, mint egy neglt XOR
fggvny. Az agree prediktor blokksmja a 16.8. brn lthat.
Az Intel Pentium 4 bizonyos vltozatai az agree prediktor egy vltozatt hasznltk (a klnbsg csak annyi,
hogy a teljesen globlis eljrs szerept egy gshare prediktor jtssza, 16 bites globlis elzmny regiszterrel).
Tournament prediktorok
A tournament prediktorok mg az agree prediktornl is egyszerbbek. Ismt kt prediktor mkdik egyszerre,
egy loklis s egy globlis informcikra alapozott. Egy konkrt ugr utasts elgazsbecslst ezek kzl mindig
csak az egyik vgzi, mgpedig az, amelyik mostanban pontosabban becslt. Azt, hogy mostanban melyik becslt
259
PHT 1
szoksos/eltr
Becsls
PHT 2
Utastsszmll
Hash fv.
Ugrani szokott/
nem szokott
pontosabban, egy egyszer llapotgppel kvethetjk nyomon. Pldul a 16.9. brn 4 llapotot hasznlunk, ha
az llapotgp az els kt llapot valamelyikben van, akkor az 1., ellenkez esetben a 2. prediktor fogja becslni
az ugrs kimenetelt. Ha az egyik eljrs jl, a msik rosszul tippelt, akkor a j irnyba lpnk egyet. Mivel 4
llapotunk van, 1 hiba mg belefr, 1 rossz becsls esetn mg nem vesszk el az aktulisan dntsi helyzetben
lv prediktortl a dntsi jogot. (Az brban az lek feliratban az els rtk azt jelzi, hogy az 1., a msodik azt,
hogy a 2. eljrs eltallta-e a becslst).
0/0, 1/1
0/0, 1/1
1/0
1/0
1/0
0/1
0/1
0/1
1. prediktor dnt
2. prediktor dnt
260
Becslt ugrsi cm
Loklis elzmny
=
=
=
=
=
=
=
Becslt ugrsi cm
261
BTB bejegyzsek
BTB szervezs
Intel Pentium 4:
4096
nincs
Intel Core2:
ciklusokhoz: 128
indirekt ugr.: 8192
egyb ugr.: 2048
2-utas asszoc.
4 utas asszoc.
4 utas asszoc.
16
Intel Haswell:
ismeretlen
ismeretlen
16
Intel Atom:
128
4 utas asszoc.
AMD Steamroller:
L1: 512
L2: 10240
4-utas asszoc.
5-utas asszoc.
24
Via Nano:
4096
4 utas asszoc.
Igen mly
512
2 utas asszoc.
(alg. 1a.)
Ebben a pldban kt ponton is elgazsbecslsre van szksg, egyszer a ciklusfelttel kirtkelsekor, majd
az if utasts felttelnek kirtkelsekor. Elbbitl most tekintsnk el, mr lttuk, hogy az elgazsbecslk a
ciklusokat nagyon pontosan kezelik, ktbites llapotgppel legfeljebb 1 hibs becslssel szmolhatunk a ciklus
teljes futsa sorn. Ha a data tmb elemei vletlenszerek, pl. 0 s 1000 kztt egyenletes eloszlssal, akkor az
if kimenetele kiszmthatatlan, tlagosan az esetek felben rossz becslst kapunk, s ez teljestmnycskkenssel
jr.
262
Ez a felttel azonban kivlthat egy logikai kifejezssel. Azt kell szrevenni, hogy neknk azokat az elemeket
kell sszeadnunk, melyekre (data[i]-501) 0. Shift-eljk el (data[i]-501)-et 31-el jobbra! A C nyelv
aritmetikai shift-et alkalmaz, teht a jobb-shift opertora gy mkdik, hogy negatv szmokra 1-es bitet hoz be
balrl, egybknt pedig 0-t. Teht, ha (data[i]-501) 0 teljeslt, akkor a shift-els csupa 0, ha nem teljeslt,
csupa 1-es bitet eredmnyez. Ennek ismeretben az elgazsmentes vltozat a kvetkez:
for (int i=0; i<N; i++) {
int t = (data[i]-501) >> 31;
sum += ~t & data[i];
}
(alg. 1b.)
(alg. 2a.)
Az if itt most kt felttelt is tartalmaz. Elszr a kt felttelt egyre cskkentjk. A f szrevtel ez esetben
az, hogy min<=data[i] && data[i]>=max logikai kifejezs s a (unsigned)(data[i]-min)<=max-min logikai kifejezs ugyanaz. Azt knny ltni, hogy data[i]>max esetn mindkt kifejezs hamis. Ha azonban
data[i]<min, akkor data[i]-min negatv, ami eljel nlkli tpusra alaktva egy igen nagy szm lesz (lsd:
kettes komplemens szmbrzols), nagyobb, mint a legnagyobb pozitv eljeles egsz, s amiatt az j, egyszerbb kifejezsnk gyszintn hamis lesz, pont, ahogy szeretnnk. A hatkonyabb algoritmus teht:
for (int i=0; i<N; i++)
if ((unsigned)(data[i]-min) <= max-min)
sum += data[i];
(alg. 2b.)
Most mr csak egy sszehasonlts van az if felttelben, gyhogy alkalmazhatjuk az els plda trkkjt, gy
egyetlen feltteles elgazs sem marad:
for (int i=0; i<N; i++) {
int t = (max-min-(unsigned)(data[i]-min)) >> 31;
sum += ~t & data[i];
}
(alg. 2c.)
Sokszor az if-then-else szerkezetek kivlthatk tmb, n. lookup table hasznlatval. A kvetkez plda egy
N hossz karaktertmb minden elemt ellenrzi, s a betk kivtelvel mindent szkzre cserl. Az egyszer,
nem elgazstudatos megolds:
for (int i=0; i<N; i++)
if (!((data[i]>='a' && data[i]<='z') || (data[i]>='A' && data[i]<='Z')))
data[i] = ' ';
(alg. 3a.)
(alg. 3b.)
A konkrt szmtgpeken kapott mrsi eredmnyeket a 16.2. tblzat veti ssze. Az elgazsok eliminlsa
263
lnyegesen javtja a futsi idket. A legnagyobb mrtk gyorsuls a fejlett elgazsbecslvel rendelkez i7 s P4
architektrk esetben mutatkozott, az egyszerbb felpts processzoroknl kisebb a nyeresg.
i7-2600
P4 Northwood
Raspberry Pi
RK3188
1. plda, eredeti
7.583 ms
14.122 ms
59.202 ms
11.296 ms
1. plda, elgazsmentes
1.297 ms
4.251 ms
58.410 ms
8.628 ms
2. plda, eredeti
8.211 ms
19.6 ms
73.267 ms
21.496 ms
2. plda, 1 elgazssal
7.942 ms
14.295 ms
61.578 ms
13.347 ms
2. plda, elgazsmentes
1.203 ms
4.252 ms
58.328 ms
8.268 ms
3. plda, eredeti
6.533 ms
10.377 ms
48.532 ms
21.397 ms
3. plda, segdtmbbel
1.151 ms
3.641 ms
37.896 ms
18.240 ms
Relatv futsi id
264
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
i7-2600
P4 Northwood
7F
7T
6F
6T
5F
5T
4F
4T
3F
3T
2F
2T
1F
1T
g
m
ha
az
ig
ze
is
ze
ns
di
in
M
di
e
nd
in
M
Re
tle
le
V
class A {
public:
virtual int value ()=0;
virtual int type () const =0;
virtual ~A() {}
};
class B1 : public A {
int v;
public:
B1 () : v(rand()) {}
int value () { return ++v; }
int type () const { return 1; }
~B1 () {}
};
A B1B16 osztlyokbl vegyesen feltltnk egy nagy mret tmbt, majd az gy kapott heterogn kollekcira
vgrehajtjuk az albbi algoritmust:
sum = 0;
for (i=0; i<siz; i++)
sum += data[i]->value();
Ez a for ciklus a heterogn kollekci minden elemre vgrehajt egy virtulis tagfggvny-hvst, amely egy
sszetett mvelet. Az objektum memriaterletn (mely a data[i] cmen kezddik) tallhat egy adatszerkezet,
melyet virtulis fggvny-tblnak hvnak, s amely mutatkat tartalmaz az aktulis objektum pldny virtulis
fggvnyeire. Ha data[0] tpusa B1, data[1] tpusa pedig B2, akkor a value() fggvnyre vonatkoz bejegyzsben a data[0] virtulis fggvny-tblja a B1::value()-ra, a data[1]- pedig a B2::value()-ra mutat
fggvnypointert tartalmaz.
A virtulis fggvnyhvs teht indirekt fggvnyhvs, ahol az objektum tpusnak megfelel value()
fggvnyre kerl a vezrls. Ha a heterogn kollekciban keverten, vletlen sorrendben vannak a klnfle
tpus elemek, akkor a processzorok ugrsi cm becsl eljrsa nagyon rossz hatsfokkal mkdik. Clszer teht
a heterogn kollekcit az objektumok tpusa szerint rendezni, hiszen ekkor a tmbben egyforma tpus elemek
kerlnek egyms mell, azonos ugrsi cmmel, melyre a processzor hamar rtanul.
A rendezettsg, illetve szablyossg hatst az albbi esetekre vizsgltuk:
A heterogn kollekci elemei vletlenszeren tartoznak a 16 leszrmazotthoz,
a heterogn kollekcit a trolt objektumok tpusa szerint rendezzk (a type() fggvny segtsgvel),
a heterogn kollekci minden eleme egyazon osztly pldnya,
vgl, az elemek tpusra szablyos mintzatot runk el. Egy peridus paramter hatrozza meg, hogy
hny azonos tpus objektum van egyms mellett a tmbben.
265
Futsi id [ms]
A mrsi eredmnyeket a 16.12. bra foglalja ssze. Csak az i7-2600 processzor szmait kzljk, mivel a tbbi
architektra olyan fejletlen ugrsi cm becslssel rendelkezik, hogy minden oszlop egyforma magasnak addott.
Az igazsghoz hozztartozik, hogy a virtulis fggvnyhvs mgtt indirekt ugrs ll, ami a legnehezebben
becslhet ugrstpus, szmos processzor meg sem prblkozik a becslsvel.
Az i7-2600 processzor esetn azonban a heterogn kollekci rendezse szmottev gyorsulshoz vezetett (a
klnbsg 50% krli). A processzor mg az egyszerbb, 1 peridus szablyossgot is ki tudja hasznlni (B1, B2,
, B16, B1, B2, , B16, ), de a kett peridust mr nem. Hosszabb peridusok esetn azrt javul az eredmny,
mert a kzenfekv, elz ugrsi cmre tippel becsls egyre kevesebb hibval jr.
48
46
44
42
40
38
36
34
32
30
28
i7-2600
Pe
Pe
Pe
Pe
Pe
Pe
Pe
Pe
s=
du
ri
s=
du
ri
s=
du
ri
s=
du
ri
s=
du
ri
s=
du
ri
s=
du
s=
le
yf
eg
ze
us
tp
ze
ns
du
ri
ri
a
Cs
e
nd
Re
tle
le
V
266
17. fejezet
Vdelem
A vdelem (protection) clja a szmtgp bizonyos szoftver s hardver komponenseinek korltozsa, a
rendszer integritsnak s mkdkpessgnek fenntartsa rdekben. Hatkre nemcsak a processzorra
korltozdik, hanem a memrira s a perifrikra is, de mivel a vdelmi szablyok rvnyestse a processzor
dolga, itt, a processzorokkal foglalkoz rszben trgyaljuk.
A vdelem feladata, hogy a rosszindulat vagy hibs taszkokat megakadlyozza abban, hogy msokban krt
tegyenek, azaz
ms taszk vagy az opercis rendszer privt adatait, kdjt elrjk, megvltoztassk;
ms taszk vagy az opercis rendszer privt felhasznlsra sznt fggvnyeit meghvjk;
az opercis rendszer megkerlsvel s tudta nlkl kommunikljanak perifrikkal.
Teht a vdelem a tbbi taszkot s az opercis rendszert vdi, hogy a hibs taszkok mellett is maradktalanul el
tudjk ltni feladatukat.
A rendszer integritsra, mkdkpessgre nem csak a hibsan megrt szoftver jelent veszlyt, hanem a
perifrik is. Ezrt egy jl tgondolt vdelmi szablyrendszer a perifrikra is korltozst vezet be, hogy azok
egy rosszul irnyzott DMA mvelet segtsgvel, vagy brmi ms mdon ne tudjanak krt okozni a taszkoknak,
illetve az opercis rendszernek.
268
17.2. Memriavdelem
A memriavdelem alapeszkze a cmtr-elklnts (9.5), hiszen ha a taszkok kln cmtrben dolgoznak, akkor
nem kpesek egyms adataihoz hozzfrni.
17.2. MEMRIAVDELEM
269
270
271
Erre a clra a legtbb architektrn a legtbb opercis rendszer szoftver megszaktsokat (vagy annak valamely
vltozatt) hasznlja, x86-on is, ahol egybknt lenne md a kapuk alkalmazsra.
A 4.3. fejezetben megismerkedtnk a perifrik ltal kivltott megszaktsokkal, annak kezelsi mdjval.
Bevezettk az interrupt vektor tblt, amely a klnbz interruptok kiszolglst vgz szubrutinok kezdcmt
tartalmazza. Arrl azonban ott mg nem volt sz, hogy megszaktst nem csak perifria, hanem maga a fut
program is kivlthat, az erre szolgl utasts ltal, ezeket a megszaktsokat hvjk szoftver megszaktsnak. Az
x86 architektra 256 elem, az ARM 8 elem vektortblval rendelkezik, ennyi megszaktskezel szubrutint
tudnak kezelni. Clszer ezeket diszjunkt mdon felosztani, egy rszre hardvert ktni, a fennmarad vektorokat
pedig szoftveres megszaktsknt hasznlni. Az x86-ban az INT utastssal lehet ilyen megszaktst kivltani, pl.
az INT 0x80 a vektortbla 128-as bejegyzsben tallhat fggvnypointert hvja meg. Az ARM architektra
csak egyetlen szoftveresen meghvhat megszaktst tmogat, ezt az SWI utastssal lehet kivltani, s ekkor a
vektor tbla (xen) 2-es bejegyzsben tallhat fggvnyre ugrik.
A szoftveres megszakts teht olyan, mint egy fggvnyhvs. A vdelem szempontjbl van azonban egy
fontos jellegzetessge:
x86 esetn a vektortbla nem csak a kiszolgl fggvnyre mutat pointert tartalmazza, hanem azt is, hogy
milyen privilgiumi szinten trtnik a lekezelse,
az ARM (s szinte minden ms RISC) architektrban pedig megszakts esetn (legyen az szoftveres vagy
hardveres), a legnagyobb privilgiumi szintre kapcsol a processzor.
A szoftver interruptok teht alkalmasak arra, hogy alacsony privilgiumi szint kdbl magasat hvjunk meg. (A
vektortblt termszetesen csak az magasan privilegizlt mdban lehet megvltoztatni, pl. az opercis rendszer
indtskor feltlti).
Knnyen belthat, hogy elegend, ha az opercis rendszer egyetlen belpsi pontot, egyetlen szoftver
megszaktst knl fel a taszkok szmra. Azt, hogy a taszk a sok kzl pontosan melyik rendszerhvst szeretn
meghvni, t lehet adni regiszterben. A 17.5. brn egy pldt lthatunk, melyben a felhasznli taszk a hello
world! zenetet kvnja kirni a kpernyre Linux opercis rendszer alatt. A szabvnyos c knyvtr (libc) printf
fggvnye ennek rdekben egy ponton az opercis rendszerhez fordul, hogy karaktereket rjon a standard
kimenetre. Ehhez a sys_write rendszerhvs szksges: az EAX regiszterbe 4-et r (ez az sys_write sorszma),
s az INT 0x80 kiadsval a Linux rendszerhvsokra fenntartott szoftver megszaktst meghvja. Ezen a ponton
a processzor privilgiumi szintet emel, s a linux system_call() fggvnye kerl meghvsra, mely az EAX=4
alapjn a sys_write() fggvnyre adja a vezrlst.
272
18. fejezet
R0
R2
R3
R4
R0
MEM [R1+8]
R0 * 3
MEM [R1+12]
R3 * 5
R2 + R4
Az utastssorozatot a 12.4. fejezetben megismert egyszer 5 fokozat pipeline-t hasznl processzor hajtja
vgre.
(a) Azonostsa az sszes elfordul adat-egymsrahatst!
(b) Adja meg az utastssorozat temezst (melyik utasts mikor melyik fzisban van)! Ha sznetet kell beiktatni,
jelezze, hogy mi az oka! Hasznlja az albbi jellseket:
A : a sznet oka adategymsrahats
F : a sznet oka feldolgozsi egymsrahats
P : a sznet oka procedurlis egymsrahats
(c) Minden egyes utastsnl jellje, hogy amikor az EX fzisba r, szksg van-e forwarding-ra! Ha igen, adja
meg, hogy melyik pipeline regiszterbl kell a szksges rtket visszacsatolni!
(d) Ha egysgnyi ideig tart minden fzis, mennyivel gyorsabb a pipeline-al val vgrehajts, mint anlkl?
(e) Rendezze t az utastssorozatot gy, hogy az a lehet leggyorsabban fusson le, gyorsabban, mint eredetileg!
Megolds
(a) Az albbi adat-egymsrahatsok fordulnak el a kdban:
RAW egymsrahatsok: i1 i2, i3 i4, i2 i5, i4 i5
WAW egymsrahats: i1 i5
WAR egymsrahats: i2 i5
(b) Az temezs a kvetkezk szerint alakul:
273
274
1.
2.
3.
4.
5.
i1
IF
ID
EX
MEM
WB
i2
IF
i3
ID
IF
7.
EX
MEM
WB
ID
EX
MEM
A
F
6.
i4
IF
i5
8.
9.
10.
11.
WB
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Az i2-nek szksge lenne az i1 eredmnyre, de az sajnos csak a MEM fzis vgn, az 5. fzisban fog
rendelkezsre llni. Ezrt az i2 vgrehajtst 1 ciklussal ksleltetni kell. A ksleltets utn, amikor az i2
vgrehajtsa az EX fzisba lp, az i1 eredmnye mg nem lesz az R0 regiszterbe visszarva, ezrt azt forwardig
segtsgvel a MEM/WB pipeline regiszterbl kell az EX fzisnak kiolvasnia. Az i3-mat is ksleltetni kell,
hiszen a 4. temben az ID egysg foglalt (az i2 foglalja), gy az i3 az IF fzisban 1 ciklust vrakozni knyszerl.
Mivel a 4. temben foglalt az IF, az i4 vgrhajtsnak elkezdse is kslekedst szenved, csak az 5. temben
kerlhet az IF fzisba. Sajnos az i4-nek szksge van az i3 eredmnyre, ami csak a 8. temre lesz ksz, ezrt
ismt sznetet kell beiktatni.
(c) Forwarding hasznlata:
i2: az EX sorn a MEM/WB regiszterbl veszi az R0 leend rtkt
i4: az EX sorn a MEM/WB regiszterbl veszi az R3 leend rtkt
i5: az EX sorn az EX/MEM regiszterbl veszi az R4 leend rtkt
(d) Az temezsbl lthat, hogy pipeline-al 11 ciklus kellett a vgrehajtshoz (feltltssel s kirlssel egytt).
Pipeline nlkl:
i1:
i2:
i3:
i4:
i5:
IF+ID+EX+MEM+WB = 5 ciklus
IF+ID+EX+WB = 4 ciklus
IF+ID+EX+MEM+WB = 5 ciklus
IF+ID+EX+WB = 4 ciklus
IF+ID+EX+WB = 4 ciklus
sszesen: 22 ciklus.
(e) A pipeline-t gy lehet felgyorstani, hogy az utastsokat trendezve elrjk, hogy ne kelljen szneteket
beiktatni. Pl. gy:
i1:
i2:
i3:
i4:
i5:
R0
R3
R2
R4
R0
MEM [R1+8]
MEM [R1+12]
R0 * 3
R3 * 5
R2 + R4
Ezzel a cservel eltvoltottuk egymstl a feloldhatatlan RAW fggsben lv utastsokat. A feladat nem
krte, de a cserkkel egytt az temezs a kvetkez:
Utasts
1.
2.
3.
4.
5.
i1
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
i2
i3
i4
i5
6.
7.
8.
9.
WB
275
18.1.2. Feladat
Legyen adott az albbi utasts sorozat:
i1:
i2:
i3:
i4:
i5:
i6:
R5
R6
R7
R8
R5
R4
MEM [R3+24]
MEM [R4+16]
R6 + R5
R6 - R5
R7 * R8
R4 + 4
Az utastssorozatot egy 6 fokozat utasts pipeline-t hasznl processzor hajtja vgre. A pipeline minden
utasts vgrehajtst 5 rszmveletre bontja: betlti (IF), dekdolja (ID), vgrehajtja a vonatkoz aritmetikai
mveletet (EX), majd a vonatkoz memriamveletet (MEM), vgl a regisztertrolba rja az eredmnyregiszter
rtkt (WB). Az ID, EX, MEM s WB fzisok ksleltetse 1 rajel, az IF fzis ksleltetse 2 rajel, de itercis
ideje 1 rajel (vagyis 2 pipeline fokozatknt jelenik meg: IF0 s IF1). Minden utasts vgrehajtsa mind az 5
rszmveleten tesik, fggetlenl attl, hogy szksge van-e r. Minden forwarding t hasznlata megengedett.
Ha brmilyen egymsrahats az utasts meglltst ignyli, az utasts mindig a legutols olyan fzisban ll
meg, ameddig egymsrahats nlkl eljut.
(a) Azonostsa az sszes elfordul adat-egymsrahatst!
(b) Adja meg az utastssorozat temezst (melyik utasts mikor melyik fzisban van)! Ha sznetet kell beiktatni,
jelezze, hogy mi az oka! Hasznlja az albbi jellseket:
A : a sznet oka adategymsrahats
F : a sznet oka feldolgozsi egymsrahats
P : a sznet oka procedurlis egymsrahats
(c) Minden egyes utastsnl jellje, hogy amikor az EX fzisba r, szksg van-e forwarding-ra! Ha igen, adja
meg, hogy melyik pipeline regiszterbl kell a szksges rtket visszacsatolni!
(d) Ha egysgnyi ideig tart minden fzis, mennyivel gyorsabb a pipeline-al val vgrehajts, mint anlkl?
(e) Rendezze t az utastssorozatot gy, hogy az a lehet leggyorsabban fusson le, gyorsabban, mint eredetileg!
Megolds
(a) Az albbi adat-egymsrahatsok fordulnak el a kdban:
RAW egymsrahatsok: i1 i3, i2 i3, i1 i4, i2 i4, i3 i5, i4 i5
WAW egymsrahats: i1 i5
WAR egymsrahats: i3 i5, i4 i5, i2 i6
(b) Az temezs az albbiak szerint alakul:
Utasts
1.
2.
3.
4.
5.
6.
i1
IF0
IF1
ID
EX
MEM
WB
IF0
IF1
ID
EX
MEM
WB
IF0
IF1
ID
IF1
i2
i3
i4
i5
i6
IF0
IF0
7.
8.
9.
10.
11.
EX
MEM
WB
ID
EX
MEM
WB
IF1
ID
EX
MEM
WB
IF0
IF1
ID
EX
MEM
12.
WB
276
i1:
i2:
i3:
i4:
i5:
i6:
IF0+IF1+ID+EX+MEM+WB = 6 ciklus
IF0+IF1+ID+EX+MEM+WB = 6 ciklus
IF0+IF1+ID+EX+WB = 5 ciklus
IF0+IF1+ID+EX+WB = 5 ciklus
IF0+IF1+ID+EX+WB = 5 ciklus
IF0+IF1+ID+EX+WB = 5 ciklus
sszesen: 32 ciklus.
(e) A pipeline-t gy lehet felgyorstani, hogy az utastsokat trendezve elrjk, hogy ne kelljen szneteket
beiktatni. Pl. az i6-ot, ami i2 utn mindegy, hogy mikor hajtdik vgre, beszrhatjuk az i2 mg, gy az i3-nak
egy ciklussal ksbb lesz szksge az i2 eredmnyre, s addigra az pont meg is lesz:
i1:
i2:
i3:
i4:
i5:
i6:
R5
R6
R4
R7
R8
R5
MEM [R3+24]
MEM [R4+16]
R4 + 4
R6 + R5
R6 - R5
R7 * R8
Ezzel a cservel eltvoltottuk egymstl a feloldhatatlan RAW fggsben lv utastsokat. A feladat nem
krte, de a cserkkel egytt az temezs a kvetkez:
Utasts
1.
2.
3.
4.
5.
6.
i1
IF0
IF1
ID
EX
MEM
WB
IF0
IF1
ID
EX
MEM
WB
IF0
IF1
ID
EX
MEM
WB
IF0
IF1
ID
EX
MEM
WB
IF0
IF1
ID
EX
MEM
WB
IF0
IF1
ID
EX
MEM
i2
i3
i4
i5
i6
7.
8.
9.
10.
11.
WB
277
18.1.3. Feladat
Legyen adott az albbi utasts sorozat:
i1:
i2:
i3:
i4:
D0 D1 * D2
D3 D0 + D5
MEM [R0+4] D3
MEM [R0+12] D0
i1: D0 D1 D2
IF
ID
M0
M1
M2
M3
M4
M5
ID
16
17
i2: D3 D0 + D5
IF
i3: MEM[R0 + 4] D3
IF
12
13
14
15
MEM
WB
A
F
10
11
i1:
M6
MEM
WB
i2:
A0
A1
A2
A3
EX
i3:
i4:
A
F
ID
IF
ID
A
F
A
F
MEM
WB
EX
MEM
WB
278
(c) Az utols kt sor megcserlsvel gyorsabb futst vrunk, hiszen gy tvolabb kerlnek egymstl az adatfggsgben lv utastsok
(d) Az trendezs utn az temezs az albbiak szerint alakul:
Utasts
i1: D0 D1 D2
IF
ID
M0
M1
M2
M3
M4
M5
IF
ID
IF
12
13
14
15
16
17
MEM
WB
MEM
i2: D3 D0 + D5
i3: MEM[R0 + 12] D0
i4: MEM[R0 + 4] D3
9
10
11
i1:
M6
MEM
WB
i2:
A0
A1
A2
A3
i3:
ID
EX
MEM
WB
IF
ID
EX
i4:
WB
18.1.4. Feladat
Legyen adott az albbi utasts sorozat:
i1:
i2:
i3:
i4:
D2 D0 *
MEM [R0+0]
D2 D0 +
MEM [R0+8]
D1
D2
D1
D2
279
WAW egymsrahats: i1 i3
WAR egymsrahats: i2 i3
(b) Az egyetlen nehzsg, hogy a WAW elkerlse rdekben az i3 ID fzisban annyi sznetet kell beiktatni,
hogy vgl az i3 WB-je ne elzze meg az i1 WB-jt, msklnben rossz rtk kerlne a D2 regiszterbe. Az
temezs teht az albbiak szerint alakul:
Utasts
i1: D2 D0 D1
IF
ID
M0
M1
M2
M3
M4
M5
ID
EX
IF
ID
A0
A1
A2
A3
IF
ID
12
13
14
16
17
i2: MEM[R0 + 0] D2
IF
i3: D2 D0 + D1
i4: MEM[R0 + 8] D2
9
10
11
i1:
M6
MEM
WB
i2:
i3:
A /F
i4:
A /F
F
MEM
WB
A /F
MEM
EX
A
F
15
A
F
WB
MEM
WB
D1 MEM [R0+0]
D1 D0 * D1
D4 D2 / D1
D2 MEM [R1+0]
D3 D0 + D2
D4 D4 - D3
MEM [R1+16] D4
Fizikai regiszter
R0:
R1:
D0:
D1:
D2:
D3:
D4:
U7
U3
T6
T2
T8
T1
T11
280
(c) Rajzolja fel az utastsok percedenciagrfjt a regiszter tnevezs utn! Hny ciklus szksges az utastssorozat vgrehajtshoz az idelis out-of-order szuperskalr processzoron?
Megolds
(a) Az albbi WAW s WAR adat-egymsrahatsok fordulnak el a kdban:
WAR:
i4: i3-mal
WAW:
i2: i1-mal
i6: i3-mal
Az egymsrahatsok alapjn felrajzolhatjuk a precedenciagrfot:
A sok fggsg miatt ezt az utastssorozatot egy idelis szuperskalr processzor sem kpes 7 ciklusnl
gyorsabban vgrehajtani. Az els lpsben csak az i1 hajthat vgre, a msodikban csak az i2, stb.
(b) A regiszter tnevezst a 14.2.3. fejezetben megismert eljrs szerint, sorrl sorra haladva vgezzk el. Elszr
az els sort vesszk (i1), s a nyl jobb oldaln szerepl forrs operandusokat (esetnkben R0-t) a regiszter
lekpz tbla alapjn tnevezzk. Ezutn az utasts eredmnyt egy eddig mg nem hasznlt, tiszta regiszterbe
tesszk (T12), majd frisstjk a regiszter lekpz tblt, hogy azok az utastsok, melyek az eredmnnyel (D1
regiszterrel) dolgoznak tovbb, tudjk, hogy a T12-t kell hasznlniuk. Ennek megfelelen a D1-hez tartoz
bejegyzsbe T12 kerl. Ezutn vesszk a kvetkez sort (i2), a forrsoperandusokat (D0,D1) tnevezzk a
tblzat segtsgvel, az eredmnyt vadonat j regiszterbe tesszk (T13), s a tblzatban rgztjk, hogy az
eredeti eredmny regiszter (D1) rtkt mr a T13 tartalmazza. Ugyangy jrunk el a tbbi sorral is. Egyedl az
utols sornl jhetnk zavarba, hiszen az i7 eredmnye nem regiszterbe, hanem a memriba kerl. Ilyenkor
termszetesen nem alloklunk j eredmny regisztert i7 szmra, s ennek megfelelen a regiszter lekpz
tbla sem vltozik az i7 utasts tnevezse utn.
Az utasts sorozat az tnevezs utn teht a kvetkezkppen nz ki:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
T12
T13
T14
T15
T16
T17
MEM
MEM [U7+0]
T6 * T12
T8 / T13
MEM [U3+0]
T6 + T15
T14 - T16
[U3+16] T17
A regiszter lekpz tbla alakulst az egyes utastsok regisztertnevezse utn az albbi tblzatban kvethetjk nyomon:
Kezd:
i1:
Fizikai regiszter:
i2:
i3:
i4:
R0:
R1:
D0:
D1:
D2:
D3:
D4:
U7
U3
T6
T2
T8
T1
T11
T12
T13
i5:
i6:
281
i7:
T15
T16
T14
T17
(c) A regisztertnevezs eredmnyekpp a WAW s WAR egymsrahatsok lthatan megszntek. A precedenciagrf ennek megfelelen ritkbb lesz:
Az idelis szuperskalr processzor az els ciklusban i1-et s i4-et egyszerre kpes vgrehajtani, majd a
msodik ciklusban i2-t s i5-t egyszerre, ezutn pedig i3-mat, i6-ot, i7-et sorban egyms utn. Ez 5 lps, 2
lpssel gyorsabb, mint regisztertnevezs eltt.
18.2.2. Feladat
Legyen adott az albbi utasts sorozat:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
D1
D4
D5
D0
D1
D4
D5
D2 - D3
D1 + D2
D4 + D1
D2 / D5
MEM [R0+0]
D1 + D2
D4 + D1
Fizikai regiszter
R0:
D0:
D1:
D2:
D3:
D4:
D5:
U4
T6
T2
T8
T1
T9
T10
282
(c) Rajzolja fel az utastsok percedenciagrfjt a regiszter tnevezs utn! Hny ciklus szksges az utastssorozat vgrehajtshoz az idelis out-of-order szuperskalr processzoron?
Megolds
(a) Az albbi WAW s WAR adat-egymsrahatsok fordulnak el a kdban:
WAR:
i5: i2-vel s i3-mal
i6: i3-mal
i7: i4-gyel
WAW:
i5: i1-gyel
i6: i2-vel
i7: i3-mal
Az egymsrahatsok alapjn felrajzolt precedenciagrf:
A fggsgek miatt ezt az utastssorozatot egy idelis szuperskalr processzor 6 ciklus alatt hajtja vgre:
elszr az i1-et, majd i2-t, majd az i3-at, ezutn i4-et s i5-t egyszerre, vgl i6-ot s i7-et egyms utn.
(b) Az elz pldnl kvetett megoldsi menet az albbi utastssorozatot eredmnyezi:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
T11
T12
T13
T14
T15
T16
T17
T8 - T1
T11 + T8
T12 + T11
T8 / T13
MEM [U4+0]
T15 + T8
T16 + T15
A regiszter lekpz tbla tartalma az egyes utastsok regisztertnevezse sorn az albbi tblzat szerint
alakul:
Logikai
regiszter:
Kezd:
R0:
D0:
D1:
D2:
D3:
D4:
D5:
U4
T6
T2
T8
T1
T9
T10
i1:
Fizikai regiszter:
i2:
i3:
i4:
i5:
i6:
i7:
T14
T11
T15
T12
T16
T13
T17
283
(c) A regisztertnevezsnek hla a WAW s WAR egymsrahatsok mind megszntek, a precedenciagrf pedig a
kvetkez:
Az idelis szuperskalr processzor az els ciklusban i1-et s i5-t egyszerre kpes vgrehajtani, majd a
msodik ciklusban i2-t s i6-ot egyszerre, ezutn i3-mat s i7-et egyszerre, vgl i7-et egyedl. Ez 4 lps, 2
lpssel gyorsabb, mint regisztertnevezs eltt.
0) {
1;
2;
3;
4;
(a) rja t a fenti C kdot a trgyban hasznlt pszeudo-assembly nyelvre! Hny utastsra van szksg?
(b) rja t a fenti C kdot a trgyban hasznlt pszeudo-assembly nyelvre, prediktumok alkalmazsval! Hny
utastsra van szksg?
(c) Hny utastst kell vgrehajtani a prediktumokkal s az anlkl megvalstott kdban, ha
az a < 0 az esetek 20%-ban teljesl?
az a < 0 az esetek 80%-ban teljesl?
(d) Idelis esetben hny lpsben hajthat vgre a fenti kd 4 vgrehajt egysggel rendelkez VLIW processzorral
prediktumokkal s anlkl?
Megolds
(a) A C kd az albbi 6 utastssal rhat le (a, b, c, d s e vltozk rendre az R0, R1, R2, R3, R4 regiszterekben
vannak):
JUMP label IF R00
R1 1
R2 2
JUMP end
label: R3 3
R4 4
end:
(b) Prediktumok hasznlatval 5 utasts is elg (de nem ez a prediktumok f elnye!):
284
R0 < 0
1 IF P1
2 IF P1
3 IF P2
4 IF P2
(c) Prediktumokkal a fenti pszeudo-assembly kd a felttel teljeslsi gyakorisgtl fggetlenl mindig 5 lps
alatt fut le. Prediktumok nlkl: ha a < 0 teljesl, 4 (az els ngy), ha nem teljesl, 3 lps (ez els s a label
cmke utni kett) szksges. Teht:
ha az a < 0 az esetek 20%-ban teljesl: tlagosan 0.2 4 + 0.8 3 = 3.2 ciklus
ha az a < 0 az esetek 80%-ban teljesl: tlagosan 0.8 4 + 0.2 3 = 3.8 ciklus
Teht ebbl a szempontbl a prediktumok kifejezetten rossz vlasztsnak tnhetnnek, de vegyk szre,
hogy prediktumokkal nincs szksg elgazsbecslsre! A teljes kphez az is kell, hogy ha a prediktumok
nlkli kdban rosszul dnt az elgazsbecsl, hozz kell venni a jrulkos kiesett ciklusokat is.
(d) VLIW architektra esetn a prediktumos kd idelis esetben 2 rajelciklus alatt lefut, hiszen a prediktumok
kirtkelse 1 rajelciklus (idelis esetben), az azt kvet 4 egymstl fggetlen utasts pedig 1 jabb
rajelciklus alatt egyszerre vgrehajthat. Prediktumok nlkl, ha az eredeti C kd felttele teljesl, 2
rajelciklus kell (els csoport: els JUMP, utna a kt rtkads, valamint a msodik JUMP mehet egyszerre
a msodik csoportban), ha nem teljesl, akkor is 2 rajelciklus kell (els JUMP, a label utni kt rtkads
egyszerre). Teht a prediktumok ugyanakkora futsi id mellett, elgazsbecsls nlkl alkalmasak ennek az
egyszer feltteles szerkezetnek a lersra. Megjegyezzk, hogy ms pldkban lehet, hogy a prediktumos,
megint msokban lehet, hogy a prediktumok nlkli eredmnyez hatkonyabb kdot, az, hogy melyiket
rdemes hasznlni, mindig mrlegels krdse.
18.3.2. Feladat
Legyen adott az albbi utastssorozat:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
R2 MEM [R0+0]
R3 R0 * R2
R8 R4 / R3
R5 MEM [R1+8]
R6 R2 + R5
R9 R5 / R6
R10 R6 * R9
Az utastssorozatot lefordtjuk egy olyan VLIW processzorra, melyben az albbi utastsok helyezhetk el
egy utastscsoportban:
2 db memriamvelet (vgrehajtsi id: 3 rajel, itercis id: 1)
2 db egsz aritmetikai mvelet, vagy ugr utasts (vgrehajtsi id: 1 rajel)
(a) temezze a megadott utastssorozatot a megadott VLIW processzoron! Hatrozza meg az utastscsoportok
tartalmt, s a csoportok vgrehajtsnak idejt!
(b) Mennyivel gyorsabb az gy kapott program, mintha hagyomnyos 1-utas processzoron futtatnnk (pipeline
nlkl)?
(c) Hny utastscsoportot llt el a fordt klasszikus, s hnyat dinamikus VLIW architektra esetn?
285
Megolds
(a) A prhuzamosan vgrehajthat utastsok sszevlogatshoz rdemes elszr a fggsgi viszonyokat
felderteni. Az albbi brn lthat fggsgi grfban a csompontok az utastsok, a csompontbl indul irnytott lek pedig azt jelzik, hogy az utasts melyik msik utasts eredmnytl fgg:
A fggsgi grfbl knnyen kiolvashat, hogy az els rajelben a kt memriautasts (i1 s i4) hajthat
vgre egyszerre, hiszen azok nem fggenek senkitl. Ezek eredmnye csak 3 rajelciklus mlva ll majd
rendelkezsre, amikor is a csak az i1-re s i4-re vr i2 s i5 vgrehajthatv vlik, egyszerre. A kvetkez
krben a csak a mr elkszltektl fgg utastsok, i3 s i6 hajthat vgre prhuzamosan, majd az i7. Az
eredmny teht (a ki nem tlttt helyeken NOP rtend):
Egsz 1
Egsz 2
4:
i2
i5
5:
i3
i6
6:
i7
1:
Mem 1
Mem 2
i1
i4
2:
3:
(b) Ha egyszeren sszeadjuk minden utasts vgrehajtsi idejt, 11 jn ki, szemben az elz pontban, a VLIW
megoldsra kiszmolt 6 rajellel.
(c) A klasszikus VLIW architektra nem kpes az egymsrahatsok kezelsre (sem a detektlsra, sem a
megfelel szm sznet beiktatsra), ilyenkor a fordtprogramnak kell a kell szm sznetet a programba
elhelyeznie. A fordt az elbbi tblzat minden sort a programba fordtja (a csupa NOP sorokat is), teht a
program 6 utastscsoportbl fog llni. Dinamikus VLIW esetben az egymsrahatsokat a processzor kezeli,
ilyenkor a 2 csupa NOP sort nem kell a programnak tartalmaznia, mert a processzor szre fogja venni, hogy a
memriamveletek miatt 2 sznetre lesz szksge. Ekkor teht 4 utastscsoportbl ll a program.
18.3.3. Feladat
Legyen adott az albbi utastssorozat:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
R1
R4
R6
R0
R7
R8
R7
R2 - R3
MEM [R1]
R4 + R1
R2 / R6
MEM [R9]
R7 + R2
R7 + R6
Az utastssorozatot lefordtjuk egy olyan VLIW processzorra, melyben az albbi utastsok helyezhetk el
egy utastscsoportban:
2 db memriamvelet (vgrehajtsi id: 3 rajel, itercis id: 1 rajel)
2 db egsz aritmetikai mvelet, vagy ugr utasts (vgrehajtsi id: 1 rajel)
286
(a) temezze a megadott utastssorozatot a megadott VLIW processzoron! Hatrozza meg az utastscsoportok
tartalmt, s a csoportok vgrehajtsnak idejt!
(b) Mennyivel gyorsabb az gy kapott program, mintha hagyomnyos 1-utas processzoron futtatnnk (pipeline
nlkl)?
(c) Hny utastscsoportot llt el a fordt klasszikus, s hnyat dinamikus VLIW architektra esetn?
Megolds
(a) A prhuzamosan vgrehajthat utastsok sszevlogatshoz rdemes elszr a fggsgi viszonyokat
felderteni. Az albbi brn lthat fggsgi grfban a csompontok az utastsok, a csompontbl
indul irnytott lek pedig azt jelzik, hogy az utasts melyik msik utastssal ll adat-egymsrahatsban:
Ebben a pldban mr tallunk WAW s WAR egymsrahatsokat is, termszetesen azokat is gyelembe kell
venni az temezs sorn.
A fggsgi grfbl knnyen kiolvashat, hogy az els rajelben az i1 s az i5 hajthat vgre egyszerre, hiszen
azok nem fggenek senkitl. i5 eredmnye csak 3 rajelciklus mlva ll majd rendelkezsre, gy a csak tle
fgg i6 csak a 4. temben vlik vgrehajthatv. Az i1 ltal kiszmolt cmrl a memriamvelet a 2. temben
indul, a tle fgg i3 gy csak az 5. temben hajthat vgre, az i3-tl fgg i4 s i7 pedig csak a 6.-ban (de
akkor egyszerre). Az eredmny teht (a ki nem tlttt helyeken NOP rtend):
Mem 1
1:
2:
Mem 2
i5
Egsz 1
Egsz 2
i1
i2
3:
4:
i6
5:
i3
6:
i4
i7
(b) Ha egyszeren sszeadjuk minden utasts vgrehajtsi idejt, 11 jn ki, szemben az elz pontban, a VLIW
megoldsra kiszmolt 6 rajellel.
(c) A klasszikus VLIW architektra nem kpes az egymsrahatsok kezelsre (sem a detektlsra, sem a
megfelel szm sznet beiktatsra), ilyenkor a fordtprogramnak kell a kell szm sznetet a programba
elhelyeznie. A fordt az elbbi tblzat minden sort a programba fordtja (a csupa NOP sort is), teht a
program 6 utastscsoportbl fog llni. Dinamikus VLIW esetben az egymsrahatsokat a processzor kezeli,
ilyenkor a csupa NOP sort nem kell a programnak tartalmaznia, mert a processzor szre fogja venni, hogy a
memriamveletek miatt sznetre lesz szksge. Ekkor teht 5 utastscsoportbl ll a program.
287
464 (T), 543 (N), 777 (N), 543 (N), 777 (N), 464 (T), 777 (N), 464 (T), 543 (T)
A processzor egyszer, 2 bites llapotgpre alapozott dinamikus elgazsbecslst hasznl, s 4 ugr utastst
tud kvetni.
A feladat a kvetkezk:
(a) Hny bitet foglal a PHT?
(b) rja fel a PHT tartalmt minden egyes feltteles ugrs vgrehajtsa utn! Jelezze, hogy a becsl eltallta-e az
ugrs kimenetelt! Kezdetben minden llapotgp rtke 1.
Megolds
(a) Mivel 4 ugr utastst tud a processzor kvetni, 4 bejegyzses lesz a PHT. Minden egyes bejegyzshez egy 2
bites llapotgp tartozik (rtke: 0: nagy esllyel nem fog ugrani - 3: nagy esllyel ugrani fog), vagyis a PHT
mrete 8 bit.
(b) Azt, hogy az adott cmeken lv ugr utastsokhoz melyik PHT bejegyzs tartozik, az utastsok cmeinek
4-el val osztsi maradka hatrozza meg, azaz:
0, 3, 1, 3, 1, 0, 1, 0, 3
Ezutn egyszer a dolgunk: az llapotgp elszr becsl (ha 0 vagy 1 az rtke, az ugrsi felttel meghisulst
(N), ha 2 vagy 3 az rtke, a felttel teljeslst (T) becsli), majd a tnyleges bekvetkezs fggvnyben frissti
az llapotgpet (a szmllt cskkenti, ha nem volt ugrs, s nveli, ha volt persze egy 2 bites szmllt
nem lehet 0 al s 3 fl vinni). Ezek ismeretben az esemnyek hatsra a PHT a kvetkezkppen alakul (S
a sikeres, H a helytelen becslst jelli):
Bejegyzs
Kezdetben
1.
2.
3.
4.
5.
6.
7.
8.
9.
2H
3S
3S
0S
0S
0S
0S
0S
1H
18.4.2. Feladat
A processzor a program vgrehajtsa kzben az albbi sorrendben, az albbi cmeken lv feltteles ugr utastsokat rtkeli ki (a zrjelben T jelzi, ha az ugrs tnylegesen bekvetkezett, s N, ha nem):
464 (T), 543 (N), 777 (N), 543 (N), 777 (N), 464 (T), 777 (N), 464 (T), 543 (T)
A processzor korrellt elgazsbecslst alkalmaz globlis, 2 bites llapotgpeket tartalmaz PHT-vel, gy,
hogy az utols 2 feltteles ugrs kimenetelt tudja nyomon kvetni.
A feladat a kvetkezk:
(a) Hny bitet foglal a PHT?
(b) rja fel a PHT tartalmt minden egyes feltteles ugrs vgrehajtsa utn! Jelezze, hogy a becsl eltallta-e
az ugrs kimenetelt! Kezdetben minden llapotgp rtke 1, a globlis ugrsi elzmny regiszter rtke
binrisan 11.
Megolds
(a) A globlis ugrsi elzmny regiszter 2 bites, hiszen az az utols kt feltteles ugrs kimenetelt trolja. A
globlis ugrsi elzmny regiszter minden rtkhez tartozik egy 2 bites llapotgp, mely annak a becslsre
hasznlatos, hogy a globlis ugrsi elzmny regiszter adott tartalma (vagyis az elz kt ugrs eredmnye)
mellett mennyire valszn a kvetkez feltteles ugrs ugrsi felttelnek teljeslse. Azaz a PHT mrete 8
bit.
288
(b) Azt, hogy az adott cmeken lv ugr utastsokhoz a PHT melyik bejegyzst hasznljuk a becslshez, a
globlis ugrsi elzmny regiszter hatrozza meg. A becsls utn a globlis ugrsi elzmny regisztert balra
kell shiftelni (a legszls bit elvsz), s az ugrs tnyleges kimenetelt kell a msik oldalon behozni. Teht, ha
a globlis ugrsi elzmny regiszter 11-bl indul, a felsorolt ugrsok sorn a becslshez az albbi rtkeket
fogja tartalmazni (zrjelben decimlisan):
11 (3), 11 (3), 10 (2), 00 (0), 00 (0), 00 (0), 01 (1), 10 (2), 01 (1)
Ezutn egyszer a dolgunk: az globlis ugrsi elzmny regiszter meghatrozza, hogy a PHT hnyadik
bejegyzsvel kell dolgoznunk. A PHT megfelel bejegyzsben lv llapotgp elszr becsl (ha 0 vagy 1
az rtke, az ugrsi felttel meghisulst (N), ha 2 vagy 3 az rtke, a felttel teljeslst (T) becsli), majd a
tnyleges bekvetkezs fggvnyben frissti az rtkt (a szmllt cskkenti, ha nem volt ugrs, s nveli,
ha volt persze egy 2 bites szmllt nem lehet 0 al s 3 fl vinni). Ezek ismeretben az esemnyek hatsra
a PHT a kvetkezkppen alakul (S a sikeres, H a helytelen becslst jelli):
Bejegyzs
Kezdetben
1.
2.
3.
4.
5.
6.
7.
8.
9.
0S
0S
1H
0S
1H
0S
1H
2H
1H
18.4.3. Feladat
Egy processzorban az ugrsi cmek becslsre BTB-t hasznlnak. A BTB tallati arny (vagyis hogy egy ugrsi
utastsra egyltaln tartalmaz becslst) 90%. BTB tallat esetn a becsls pontossga 90%. Ha az ugr utasts
nincs a BTB-ben, 4 ciklus, ha benne van, de rossz a becsls, 3 ciklusnyi ksleltetst szenved a fut program
vgrehajtsa. A programban a feltteles elgazsok arnya 15%. Most feltesszk, hogy semmi ms (semmilyen
ms egymsrahats) nem lasstja a program futst, s ha nincs ugrs, a pipeline minden ciklusban vgezni tud
egy utasts vgrehajtsval.
(a) tlagosan hny ciklusonknt vgez a pipeline egy utasts vgrehajtsval?
(b) Hogy viszonyul az eredmny a BTB nlkli esethez, amikor minden ugr utasts egysgesen 2 sznet
beiktatst vonja maga utn?
Megolds
(a) Az utastsok 85%-a nem ugrs, ezekbl minden ciklusban vgez 1. Az utastsok 15%-a ugrs, ezen bell
10% nincs a BTB-ben (1+4 ksleltets a vgrehajtsi id), 90% benne van, de 10% esllyel rosszul becsl (1+3
ksleltets a vgrehajtsi id). A BTB-ben lv, jl becslt ugrsi cm ugr utastsok vgrehajtsi ideje 1.
sszegezve:
0.85 1 + 0.15 (0.1 5 + 0.9 0.1 4 + 0.9 0.9 1) = 1.1005 ciklus/utasts
(b) Ebben az esetben az eredmny:
0.85 1 + 0.15 3 = 1.3 ciklus/utasts,
vagyis lassabb, mint BTB-vel.
18.4.4. Feladat
Az albbi C kd kiszmolja egy lebegpontos szmokat tartalmaz tmb elemeinek tlagt:
289
avg = 0;
for (int i = 0; i < N; i++)
avg += x[i];
avg /= N;
(a) rja t a fenti C kd ciklust a knyvben hasznlt pszeudo-assembly nyelvre!
(b) A nav implementcihoz hny utastscsoport szksges a ciklus vgrehajtshoz egy olyan VLIW processzoron, melyben az albbi utastsok helyezhetk el egy utastscsoportban:
2 db memriamvelet,
2 db lebegpontos mvelet,
2 db egsz aritmetikai mvelet, vagy ugr utasts?
(Most felttelezzk, hogy minden mvelet 1 rajel alatt vgrehajthat)
Adja meg az utastsok temezst is!
(c) Alaktsa t a ciklust gy, hogy a mveletek szoftver pipeline szerint vgrehajthatk legyenek! Adja meg az
utastsok temezst a szoftver pipeline kihasznlsval! Hny utastscsoportra van szksg?
Megolds
(a) A C kd ciklusa az albbi utastssorozattal rhat le (R0 kezdetben az x tmb elejre, R1 a tmb vgre mutat,
D0-ba olvassuk be a memribl a kvetkez elemet, D1 trolja az avg vltoz rtkt):
i1: label: D0 MEM [R0]
i2:
D1 D1 + D0
i3:
R0 R0 + 8
i4:
JUMP label IF R0R1
(b) Az elbbi nav implementci temezse az albbiak szerint alakul:
Egsz 1
1:
i3
2:
i4
Egsz 2
Mem 1
Mem 2
FP 1
FP 2
i1
i2
Teht 2 utastscsoportra van szksg, mely annyiszor hajtdik vgre, ahny krt megy a ciklus, gy jelen
esetben a teljes ciklus 2 N tem alatt fut le.
(c) Szoftver pipeline-hoz azt az tletet kell alkalmaznunk, hogy amg az i. elem betltst vgezzk, azzal egytt
vgezhetjk az i-1. iterci mvelett (avg nvelse), hiszen addigra az i-1. elem mr be lesz tltve. Teht az
eredeti ciklus az albbi elemi mveletekbl pthet fel:
tmp0 Load x[0];
for (int i = 1; i < N; i++) {
tmpi Load x[i];
avg += tmpi1 ;
}
avg += tmpN 1 ;
Figyeljk meg, hogy tmpi helyett elegend egyetlen vltozt hasznlni (tmp), hiszen a ciklusmag mindkt
utastsa egyszerre, egymssal prhuzamosan hajtdik vgre, gy a tmp rgi rtkt hasznlja az sszeads, s
a tmp j rtke a tmbbl beolvasott j elem lesz. Most D0 legyen a memribl beolvasott elem (teht a
tmp), s D1 az eredmny rtke.
290
Egsz 2
1:
2:
Mem 1
Mem 2
FP 1
FP 2
i1
i4
i5
i2
i3
3:
i6
Teht csak 3 csoportra volt szksg. Ebbl a 3 csoportbl csak a 2. a ciklus magja, a felttel kirtkelse s
maga az ugrs csupn egyetlen utastscsoportot ignyel, teht a ciklus egy kre egy rajel id alatt lefut, a
teljes ciklus pedig (N 1 kr, +1 utastscsoport eltte, +1 utna) N + 1 rajel alatt fut le.
18.4.5. Feladat
Az albbi C kd kiszmolja egy diszkrt valsznsgi vltoz vrhat rtkt:
ex = 0;
for (int k = 0; k < N; k++)
ex += k * p[k];
A mveletek vgrehajtsi ideje a kvetkez:
Egsz aritmetikai mveletek: 1 rajel
Load/Store: 3 rajel
Lebegpontos szorzs: 4 rajel
Lebegpontos sszeads: 2 rajel
A pipeline felptst az albbi bra mutatja:
EX WB
FP Add WB
IF
ID
FP Mul
MEM
WB
WB
Az utastsok sorrenden kvli befejezse megengedett, amennyiben a program rtelmn nem vltoztat. Tbb
WB is vgbemehet egyszerre, feltve, hogy nem ugyanazt a regisztert rjk.
(a) rja t a ciklus magjt a trgyban hasznlt pszeudo-assembly nyelvre!
(b) Hny rajel szksges a ciklusmag egyszeri vgrehajtshoz?
(c) Optimalizlja a ciklust ciklus-kifejtssel! Hnyszoros ciklus-kifejtsre van szksg? Adja meg a kifejtett ciklus
magjt pszeudo-assembly nyelven! Hny rajel szksges az eredeti ciklusmag egyszeri vgrehajtshoz?
291
Megolds
(a) Feltve, hogy R0 tartalmazza a mutatt a p tmb aktulis elemre, D0 trolja ex-et, s D1 a ciklusvltoz
rtkt lebegpontosan, a ciklusmag a kvetkezkppen alakul:
i1:
i2:
i3:
i4:
i5:
D2
D3
D0
D1
R0
MEM [R0]
D2 * D1
D0 + D3
D1 + 1.0
R0 + 8
1.
2.
3.
4.
5.
6.
i1
IF
ID
MEM0
MEM1
MEM2
WB
i2
IF
i3
ID
IF
i4
i5
A
F
A
F
7.
8.
9.
10.
M0
M1
M2
M3
WB
ID
A0
IF
ID
A0
A1
WB
IF
ID
EX
WB
11.
12.
A1
WB
Teht 12 rajelre van szksg. Mivel a 8. rajelben mr a ciklus kvetkez krnek az utastsa el is kezdhet,
ezrt most inkbb vegyk gy, hogy 7 rajelre van szksg a ciklus egy krnek vgrehajtshoz.
(c) Hromszoros cikluskifejtssel a ciklus hrom krt szmoljuk ki egyszerre. Mivel tbb utastsunk van,
nagyobb a mozgstr a csere-berre, nagyobb esllyel tudjuk a RAW fgg utastsokat eltvoltani egymstl
a sznetek elkerlse rdekben:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
i8:
i9:
i10:
i11:
i12:
i13:
i14:
i15:
D2
D4
D6
D3
D1
R0
D5
D1
R1
D7
D1
R2
D0
D0
D0
MEM [R0]
MEM [R1]
MEM [R2]
D2 * D1
D1 + 1.0
R0 + 8
D4 * D1
D1 + 1.0
R1 + 8
D6 * D1
D1 + 1.0
R2 + 8
D0 + D3
D0 + D5
D0 + D7
292
D2
R0
D4
D3
D1
R0
D5
D1
D0
D0
MEM [R0]
R0 + 8
MEM [R0]
D2 * D1
D1 + 1.0
R0 + 8
D4 * D1
D1 + 1.0
D0 + D3
D0 + D5
V. rsz
Prhuzamos feldolgozs
293
19. fejezet
SIMD feldolgozs
19.1. Flynn taxonmia s az SIMD feldolgozs
A ma elterjedt mkdsi elv szerint zemel, a jelenlegi technolgival gyrtott processzorok utastsfeldolgoz
sebessgt nem lehet tetszlegesen nvelni (lsd: A szuperskalr pipeline rsz 1. fejezete):
Nagyon mly s/vagy szles pipeline-ok esetn a sok tlapoltan/prhuzamosan fut utasts kztt az
egymsrahatsok elfordulsnak gyakorisga az tlapoltan fut utastsok szmval meredeken n (elg
valszntlen, hogy az utastssorozat csupa egymstl fggetlen mveletbl ll).
Nagyon szles pipeline-hoz sok mveleti egysgre van szksg, melyek kztt a RAW egymsrahatsok
kezelsre szolgl forwarding utak szma a pipeline mlysgvel ngyzetesen n.
Hiba mly a pipeline, a ciklusid nem lehet tetszlegesen rvid, rszben fogyasztsi okokbl, rszben
pedig azrt, mert a pipeline regiszterek rsa/kiolvass bele kell, hogy frjen egy ciklusidbe.
A mly pipeline-nak megvan az a htrnya, hogy a spekulatv dntsek (pl. elgazsbecsls) kimenetele
sok fzissal ksbb derl ki, ekzben sok, potencilisan felesleges utasts vgrehajtsa kezddhet el.
A szmtsi teljestmny tovbbi nvelsnek teht nem az utasts-pipeline nvelse/mlytse a legknyelmesebb mdja. Egy lehetsges alternatva, ha az utastsok nem egy, hanem tbb adaton vgeznek mveleteket
egyszerre. Ezt a feldolgozsi elvet Single Instruction Multiple Data, rviden SIMD feldolgozsnak nevezzk. Az
SIMD jellst Flynn 1966-ban vezette be, amikor a szmtgp architektrkat klassziklta a szerint, hogy az
utastsok s adatok viszonya hogyan alakul. Flynn 4 kategrit denilt:
SISD (Single Instruction Single Data): ebben az architektrban egyetlen utastssorozat vgrehajtsa zajlik,
az utastsok pedig skalrokon vgeznek mveleteket. Ide sorolhatk pl. az egy processzoros PC-k.
SIMD (Single Instruction Multiple Data): tovbbra is egyetlen utastssorozat vgrehajtsa zajlik, de az
egyes utastsok nem egy, hanem sok adaton vgzik el a hozzjuk tartoz mveleteket. Ide tartoznak a
vektorprocesszorok s a tmbprocesszorok is, s bizonyos szempontbl a grakus krtykon tallhat
GPU-k is.
MIMD (Multiple Instruction Multiple Data): tbb utastssorozat vgrehajtsa zajlik egyidejleg, melyben
a klnbz utastsok klnbz adatokon vgeznek mveleteket (teht egyidejleg tbb utasts operl
egyidejleg tbb adaton). Ide tartoznak a multiprocesszoros rendszerek.
MISD (Multiple Instruction Single Data): tbb utastssorozat vgrehajtsa zajlik egyidejleg, de a klnbz utastsok ugyanazokon az adatokon vgeznek mveleteket. Leginkbb hibatr rendszerekben
hasznlatosak (pl. az rhajzsban). Az adatokat tbb, klnbz rendszer is feldolgozza, majd ezek eredmnyeit sszevetik, s ha nem ugyanazt kapjk, akkor hiba trtnt.
19.2. Vektorprocesszorok
A vektorprocesszorok az SIMD feldolgozs klasszikus megtestesti. A vektorprocesszorok a skalr adattpus
mellett bevezetik a tbb skalrt egybefog vektor adattpust, s az ezek feldolgozsra szolgl vektorkezel
utastsokat. Manapsg szinte minden szuperszmtgp vektorprocesszorokbl pl fel.
295
296
R4 64
D1 MEM[R1]
D2 MEM[R2]
D3 D1 + D2
MEM[R3] D3
R1 R1 + 8
R2 R2 + 8
R3 R3 + 8
R4 R4 - 1
JUMP loop IF R4!=0
Vektorprocesszorral:
VLR 64
V1 MEM[R1]
V2 MEM[R2]
V3 V1 + V2
MEM[R3] V3
(A pldban a VLR a vektor hossz regisztert jelli, ami meghatrozza, hogy az utna kvetkez vektor utastsok
hny elem vektorokon dolgozzanak. A vektorregisztereket V-vel jelljk.)
A plda segt azonostani a vektorprocesszorok elnyeit:
A program kdja sokkal tmrebb.
Nincs szksg a ciklusra. Elsre taln nem is ltszik, hogy ez mekkora nyeresg:
Skalr megkzelts esetn, ahogy prg a vgrehajts a ciklusban (a loop cmke s a JUMP kztt),
minden egyes krben jra s jra le kell hvni s dekdolni a ciklus magjban lv utastsokat
(sszesen 64-szer!). Vektorprocesszor esetn nincs ciklus, a vektorokon operl utastsokat csak
egyszer kell lehvni s dekdolni.
Skalr megkzelts esetn a ciklus minden egyes krben fellp a procedurlis egymsrahats, teht
a processzornak elgazsbecslssel kell megtippelnie az ugrs kimenetelt s cmt, sszesen 64-szer.
A vektorprocesszoros vltozatban nincs is elgazs.
A vektormveletek implicit felttelezik, hogy a vektor elemei fggetlenek, teht a vektor elemei kztt
nincs adat-egymsrahats, gy
a hardvernek csak a vektormveletek kztti egymsrahatst kell ellenriznie, az elemek kzttit
nem,
a mveleti egysgek tbbszrzsvel vagy igen mly pipeline alkalmazsval nagy teljestmny
rhet el (lsd ksbb).
19.2. VEKTORPROCESSZOROK
297
Szorz
Memria
sszead
Vektor regiszterek
Oszt
memriasn
Vektor
Load/Store
Logikai
FP ALU
Cache
Skalr regiszterek
Int ALU
Memriakezels
A vektorok memribl regiszterbe tltse sorn a memriamveletek olyan specilis mintzatot kvetnek, amit
ki lehet hasznlni a teljestmny rdekben.
Tipikusnak mondhat, hogy a memriamveletek tbb rajelet vesznek ignybe, a cm megrkezse s a
kapcsold adat buszon val megjelense kztt tbb rajel telik el. A vektorok betltse azonban sok memriamveletet, a vektor sszes elemnek a betltst jelenti. Ha a rendszermemrit (a teljes cmtartomnyt) tbb
zikai memriamodul (.n. memriabank) segtsgvel valstjuk meg, akkor a processzor sok idt nyerhet
azzal, hogy amg egy vektorelem betltse kapcsn az azt trol memriabank vlaszra vr, addig egy msik
vektorelem betltst is elkezdheti, rtelemszeren egy olyan elemt, amely egy msik memriabankban tallhat.
A legclszerbb a memriabankokat fssen hozzrendelni a cmtrhez (interleaving). Ez azt jelenti, hogy n
memriabank esetn az els a 0, n-1, 2n-1, szavakat, a msodik az 1, n, 2n, szavakat, a harmadik a 2, n+1,
2n+1, szavakat trolja, stb.
Nzzk a kvetkez pldt. Tartson minden memriamvelet 5 rajelig, s a cmtartomny legyen lefedve 6
memriabankkal, fss cmzst alkalmazva. A CPU 1 rajel alatt 1 cmet tud kiadni, s 1 adatot tud fogadni. A
betltend vektor 64 elem, az elemek a memriban a 15636. bjttl kezdve sor-folytonosan helyezkednek el,
egy elem 4 bjtot foglal.
298
15636
fogl.
15640
fogl.
fogl.
15644
fogl.
fogl.
fogl.
15648
Adat[0]
fogl.
fogl.
fogl.
15652
Adat[1]
fogl.
fogl.
fogl.
Adat[2]
fogl.
fogl.
Adat[3]
fogl.
15656
fogl.
15660
fogl.
fogl.
15664
fogl.
fogl.
fogl.
15668
Adat[5]
fogl.
fogl.
fogl.
15672
Adat[6]
fogl.
fogl.
fogl.
15676
Adat[7]
fogl.
fogl.
fogl.
Adat[8]
fogl.
fogl.
Adat[9]
fogl.
10
11
15680
12
fogl.
15684
13
fogl.
fogl.
15688
Adat[4]
A fss cmzsnek ksznheten a 4. rajeltl kezdve rajelenknt rkeznek az adatok a processzorba, teht
egy kezdeti rvid szakasztl eltekintve sikerlt kikszblni a memria ksleltetst (minl nagyobbak a vektorok,
annl jobban leamortizldik a kezdeti ksleltetsi id a vektor teljes beolvassi idejhez kpest).
Mveleti egysgek
A vektormveletek vgrehajtsa ktflekppen gyorsthat:
1. A mveleti egysgek tbbszrzsvel: Mivel a vektor elemei fggetlenek, a vektormveletek a vektorok
minden elemre egymstl fggetlenl elvgezhetk. Ha lenne elegend szm mveleti egysgnk, akr a
vektor minden elemt kln mveleti egysg szmolhatn, gy a vektormvelet nem tartana tovbb egy
skalr mveletnl. Ilyen nagy szm mveleti egysg (64-4096 db) processzorba ptse sajnos ltalban
nem kivitelezhet. Minl tbb mveleti egysg van (tipikusan 4-16), annl gyorsabban hajthatk vgre a
vektormveletek.
2. Mly adat-pipeline alkalmazsval: Ha nincs is annyi mveleti egysg, mint amekkork a vektorok,
akkor is lehet a vgrehajtst hatkonyan vgezni. Mivel a vektor elemei fggetlenek, nincs kzttk
adat-egymsrahats, gy akr nagyon mly pipeline alkalmazsval a vektor egyms utni elemein tlapoltan
vgezhetjk el a kvnt mveletet.
Ahhoz, hogy az adat-pipeline-t rszleteiben megismerjk, nem rt megismerni a lebegpontos szmok
formtumt s az aritmetikai mveletek vgrehajtsnak mdjt. A lebegpontos szmok reprezentcijn az
IEEE 754 szabvny rgzti, az albbi mdon:
Szm = (1)s c b q , ahol: s: eljel, c: mantissza, b: bzis, q: karakterisztika. A bzis tbbnyire megegyezik a
trolshoz hasznlt szmrendszerrel, vagyis 2-vel. Most nzzk meg, hogy a lebegpontos sszeads hogyan
trtnik (nagyon nagy vonalakban):
Elszr ellenrizzk, hogy valamelyik operandus nulla-e,
a kt operandus illesztjk, vagyis azonos karakterisztikra hozzuk,
az sszeadst elvgezzk,
az eredmnyt a szabvny szerinti normlalakra hozzuk s a trolsi pontossg ismeretben csonkoljuk.
Hasonlan, a lebegpontos szorzs is tbb fzisra oszthat, pldul:
19.2. VEKTORPROCESSZOROK
299
A0
A1
A2
A3
A0
A1
A2
A3
A0
A1
A2
A3
A0
A1
A2
A3
A0
A1
A2
A3
A0
A1
A2
A3
A0
A1
A2
A3
A0
A1
A2
10
11
A3
Ha tbb mveleti egysgnk van, s bell mindegyik pipeline szervezs, akkor a feldolgozs a kvetkez
temezs szerint trtnik (8 elem vektorokat, 2 mveleti egysget s 4 fzis sszead pipeline-t feltteleztnk):
A0
A0
A1
A1
A2
A2
A3
A3
A0
A0
A1
A1
A2
A2
A3
A3
A0
A0
A1
A1
A2
A2
A3
A3
A0
A0
A1
A1
A2
A2
A3
A3
A kt mveleti egysggel teht 11 helyett csak 7 ciklusra volt szksg, a klnbsg a vektor mret nvelsvel
tart a ktszereshez.
Nem lehet elgg hangslyozni, hogy ennl a fajta adatpipeline-nl nincs egymsrahatsokat vizsgl s
kezel logika, mivel a vektorok elemei fggetlenek egymstl. Emiatt a pipeline szinte tetszleges mly lehet, a
mlysg nvelse minden esetben nveli a szmtsi teljestmnyt. Az egyetlen korltoz tnyez az, hogy hny
elemi fzisra vagyunk kpesek felbontani egy aritmetikai mveletet.
Pldaknt a 19.2. bra a Berkely egyetem T0 (Torrent-0, 1995) mikroprocesszornak szilciumszelett mutatja
be, melyen jl elklnthet 8 fggleges sv, melyek mindegyike a 32 hossz vektor regiszterekbl 4 elem
kezelsrt felels. Minden svban 2 ALU tallhat, melyek kzl csak az egyik tartalmaz szorz egysget. gy, ha
nem szorzsrl van sz, ktszeres szmtsi teljestmny rhet el. A processzorban kln regisztertrol s ALU
tallhat a skalr mveletek szmra.
Egy msik plda a NEC SX-9 szuperszmtgp vektorprocesszora (19.3. bra). A NEC SX-9 2008-ban a
kaphat leggyorsabb szuperszmtgp volt, pl. a nmet nemzeti meteorolgiai kzpontnak van belle 2 darab az
idjrsi modellek szmtsainak tmogatsra (2011-ben mindkett 224 processzort s 7 TB memrit tartalmaz).
A NEC SX-9 vektorprocesszora 256 hossz vektorokkal dolgozik, s 8 pipeline szervezs feldolgozegysge van.
A vektoraritmetikai egysgek 3.2 GHz-en, a skalr egysg (4 utas out-of-order) 1.6 GHz-en zemel.
Skalr ALU+reg.
Vezrls
ICache
300
Load/Store egysgek
ALU egysgek (szorz nlkl)
Vektor regiszterek
19.2. VEKTORPROCESSZOROK
loop:
301
V1 MEM[R1]
V2 MEM[R2]
V3 V1 + V2
MEM[R3] V3
R4 VLR * 8
R1 R1 + R4
R2 R2 + R4
R3 R3 + R4
R0 R0 - VLR
VLR MVL
JUMP loop IF R0!=0
Az N hossz vektort a ciklus tbb krben adja ssze. Az els utni krk MVL mret darabokat, az els
pedig a maradkot (N %MVL) dolgozza fel (19.4. bra). Az els lpsben a VLR a maradk mretvel lesz egyenl,
a tbbi krben pedig MVL-lel. Minden lps utn VLR*8 bjttal lptetjk a 3 tmb pointert (feltesszk, hogy a
vektorelemek 8 bjt hosszak), valamint cskkentjk az N rtkt reprezentl R0 regisztert a feldolgozott elemek
szmval, ami ppen VLR. A ciklus akkor lp ki, ha minden elemet feldolgoztunk.
N
N%MVL
MVL
MVL
MVL
A
B
302
Mvelet lncols
A vektorutastsok sorozatt a vektorprocesszorok ugyanolyan utasts pipeline segtsgvel hajtjk vgre, mint a
skalr processzorok. A skalr processzorok trgyalsnl lttuk, hogy a pipeline feldolgozs hatkonysgt a
RAW egymsrahatsok rontjk a legjobban. RAW egymsrahatsok termszetesen a vektorprocesszorokban is
vannak:
V1 MEM[R1]
V3 V1 + V2
V5 V3 * V4
Hasonl, de skalr mveleteket tartalmaz utastssorozat esetn az sszeads addig nem kezdhet el, amg a
Load be nem fejezdtt, s a addig nem kezdhet el, amg az sszeads be nem fejezdtt. Skalr processzorok
esetn a vrakozssal elvesztegetett id cskkentsre alkalmas volt a forwarding technika. Forwarding segtsgvel pl. a szorzsnak nem kellett megvrnia, amg az sszeads eredmnye bekerl a V3 regiszterbe, a V3 rtkt
kzvetlenl az ALU kimenetrl leszedve a szorzs tbb ciklussal hamarabb volt elkezdhet.
A forwarding vektorprocesszoros megfelelje a mvelet lncols (vector chaining). A vector chaining lnyege,
hogy a kvetkez (fgg) utastsnak nem kell megvrnia az elz szmols vgt, ahogy szpen sorban kszlnek
el az eredmny vektor elemei, azokat mris fel lehet hasznlni a kvetkez mvelet elkezdsre. Vagyis amint a
Load vgzett a V1 els elemnek betltsvel, mris indulhat az sszeads els elemnek kiszmtsa. Hasonlan,
amint van ksz eredmny a V3-ban, azokkal rgtn elkezdhet a szorzs, nem kell megvrni, hogy minden elem
ssze legyen adva V3-ban.
Pldul 2 Load/Store s 2 aritmetikai mveleti egysg esetn, 2 ciklusideig tart memriaelrst, 3 ciklusideig
tart pipeline szervezs lebegpontos sszeadst s 4 ciklusideig tart lebegpontos szorzst felttelezve, mvelet
lncols alkalmazsval a fenti 3 utasts vgrehajtsa a kvetkezkppen temezhet:
V1[0] MEM[R1+0]
V1[1] MEM[R1+8]
T0
T0
T1
T1
V1[2] MEM[R1+16]
V1[3] MEM[R1+24]
V1[4] MEM[R1+32]
V1[5] MEM[R1+40]
V3[0] V1[0] + V2[0]
V3[1] V1[1] + V2[1]
V1[6] MEM[R1+48]
V1[7] MEM[R1+56]
V3[2] V1[2] + V2[2]
V3[3] V1[3] + V2[3]
V1[8] MEM[R1+64]
V1[9] MEM[R1+72]
V3[4] V1[4] + V2[4]
V3[5] V1[5] + V2[5]
T0
T0
303
3
T1
T1
A1
A1
A2
A2
T0
T0
A0
A0
T1
T1
A1
A1
A2
A2
T0
T0
A0
A0
T1
T1
A1
A1
A2
A2
T0
T0
A0
A0
M0
M0
T1
T1
A1
A1
M1
M1
A2
A2
M2
M2
M3
M3
T0
T0
A0
A0
M0
M0
T1
T1
A1
A1
M1
M1
A2
A2
M2
M2
10
T1
T1
T0
T0
A0
A0
V1[10] MEM[R1+80]
V1[11] MEM[R1+88]
V3[6] V1[6] + V2[6]
V3[7] V1[7] + V2[7]
V5[0] V3[0] * V4[0]
V5[1] V3[1] * V4[1]
V1[12] MEM[R1+96]
V1[13] MEM[R1+104]
V3[8] V1[8] + V2[8]
V3[9] V1[9] + V2[9]
V5[2] V3[2] * V4[2]
V5[3] V3[3] * V4[3]
M3
M3
304
Utastskszlet
#Vektorreg.
Vektorhossz
Elemek tpusa
MMX
x86
64 bit
3DNow
x86
64 bit
SSE
x86/x64
128 bit
SSE2-4
x86/x64
128 bit
AVX
x86/x64
16
256 bit
AltiVec
Power
32
128 bit
NEON
ARM
32/16
64/128 bit
A vektor adattpusok s a vektormveletek taln meglep mdon magas szinten, C/C++ nyelven is
elrhetk, kihasznlhatk, gynevezett intrinsic utastsok segtsgvel. Kis szpsghiba, hogy ez a magas
szint tmogats platformfgg, teht minden SIMD utastskszletre ms s ms. A megfelel (utastskszlet
fgg) fejllomny betltse utn rendelkezsre llnak a vektor adattpusok (pl. SSE esetn __m128, NEON esetn
float32x4_t, stb.), s minden egyes tmogatott vektormvelethez egy-egy C fggvny.
Ezek hasznlatra adunk egy pldt az albbiakban. Az eredeti fggvny egy HD felbonts kp sznteltettsgt
nveli meg 50%-al. Az egyszersg kedvrt a kp piros, zld s kk komponenseit kln-kln float tpus tmb
trolja (melyek kezdett a srcR, srcG s srcB mutatja), a keletkez, teltettebb kp pedig j helyre kerl (dstR,
dstG s dstB). Arra is gyelmet kell fordtani, hogy az egyes intenzitsrtkek a 0 s 255 kztti tartomnyban
maradjanak. Az eredeti, SIMD utastsokat nem hasznl kd:
void saturate () {
float r, g, b, p, val;
for (int i=0; i<height*width; i++) {
r = *srcR;
19.4. TMBPROCESSZOROK
305
g = *srcG;
b = *srcB;
p = sqrt (r*r + g*g
val = p + (r - p) *
*dstR = val>255.0 ?
val = p + (g - p) *
*dstG = val>255.0 ?
val = p + (b - p) *
*dstB = val>255.0 ?
+ b*b);
1.5f;
255.0 : val<0 ? 0 : val;
change;
255.0 : val<0 ? 0 : val;
change;
255.0 : val<0 ? 0 : val;
Az SSE2 s NEON intrinsic-ek hasznlatval trt algoritmus a 19.5. brn lthat. Mindkt utastskszlet
kiegszts tmogatja a 4 float tpusbl ll vektorokon vgzett mveleteket. A for ciklus ngyesvel lpked a
bemenetet szolgltat s a kimenetet reprezentl tmbkn. A kvetkez 4 elem vektor vltozba olvasst az
SSE2 esetn a _mm_load_p, a NEON esetn a vld1q_f32 vgzi. Ezen klnfle sszeads, kivons s szorzs
mveletet vgznk, valamint egy gykvonst. Az SSE2-ben van valdi gykvons, mg a NEON a ngyzetgykt
csak kzelteni tudja, annak is csak a reciprokt. A kapott eredmnyeket vektormveletekkel a 0-255 tartomnyban
knyszertjk (_mm_min_ps, _mm_max_ps, valamint vminq_f32, vmaxq_f32), s a vgn a memriba rjuk
(_mm_store_ps, valamint vst1q_f32).
A konkrt architektrkon vgzett mrsi eredmnyeket a 19.1. tblzat foglalja ssze. A 4 elem vektorokkal
dolgoz vltozatok (SSE2, ill. NEON) hozzvetleg negyedannyi id alatt vgeztek a szmtssal. A Core-i7 esetn
szletett egy AVX vltozat is, mely 8 elem vektorral dolgozik, de ez csak minimlis mrtkben volt kpes javtani
az SSE2-vel kapott futsi idn. Ennek oka, hogy az algoritmus memriakorltos lett, a cache nem tudja akkora
sebessggel szolgltatni az adatokat, amekkora sebessggel az AVX kpes lenne feldolgozni azokat.
SIMD nlkl
SSE2
AVX
15.166 ms
3.829 ms
3.698 ms
Intel Pentium-4
SIMD nlkl
SSE2
139.758 ms
36.355 ms
RK3188
SIMD nlkl
NEON
155.012 ms
44.026 ms
19.4. Tmbprocesszorok
19.4.1. Klasszikus tmbprocesszorok
A klasszikus tmbprocesszorok (array processor) egy vezrlegysgbl (control unit), s szmos feldolgozegysgbl (processing element) llnak. A feldolgozegysgek teljesen egyformk, s a mveleti egysgek mellett
loklis memrival is rendelkeznek (melyek tartalma termszetesen nem egyforma). A feldolgozegysgek adatot
tudnak cserlni a velk sszekttetsben ll ms feldolgozegysgekkel (19.6. bra).
A programok vgrehajtst a vezrlegysg koordinlja. A vezrlegysg minden ciklusban kiad egy utastst,
melyet zenetszrssal minden feldolgozegysg megkap. Ezt az utastst minden feldolgozegysg vgrehajtja
a sajt - loklis memrijban trolt - adatain. A tmbprocesszor teht tnyleg egy SIMD architektra, hiszen
egyazon utastssorozat vgrehajtsa zajlik sok, a klnbz feldolgozegysgekben trolt adaton. Ha egy
mveletet csak bizonyos adatokon kell vgrehajtani, termszetesen lehet alkalmazni a vektorprocesszoroknl
306
#include <xmmintrin.h>
void saturateSSE2 () {
#include <arm_neon.h>
void saturateNEON () {
float p, val;
__m128 r0, r1, r2, r3, r4;
const __m128 r5 = 1.5f, 1.5f, 1.5f, 1.5f;
const __m128 r6 = 0.0f, 0.0f, 0.0f, 0.0f;
const __m128 r7 = 255f, 255f, 255f, 255f;
float p, val;
float32x4_t r0, r1, r2, r3, r4;
const float32x4_t r5 = vdupq_n_f32 (1.5f);
const float32x4_t r6 = vdupq_n_f32 (0.0f);
const float32x4_t r7 = vdupq_n_f32 (255.0f);
for (int
r1 =
r0 =
r0 =
r2
r4
r4
r0
=
=
=
=
_mm_load_ps (srcG);
r2;
_mm_mul_ps (r4, r2);
_mm_add_ps (r0, r4);
r3
r4
r4
r0
=
=
=
=
_mm_load_ps (srcB);
r3;
_mm_mul_ps (r4, r3);
_mm_add_ps (r0, r4);
r2 = vld1q_f32 (srcG);
r4 = vmulq_f32 (r2, r2);
r0 = vaddq_f32 (r0, r4);
r3 = vld1q_f32 (srcB);
r4 = vmulq_f32 (r3, r3);
r0 = vaddq_f32 (r0, r4);
r0 = vrecpeq_f32 (vrsqrteq_f32 (r0));
r1
r1
r1
r1
r1
r0 = _mm_sqrt_ps (r0);
r1
r1
r1
r1
r1
=
=
=
=
=
_mm_sub_ps
_mm_mul_ps
_mm_add_ps
_mm_min_ps
_mm_max_ps
(r1,
(r1,
(r1,
(r1,
(r1,
r0);
r5);
r0);
r7);
r6);
=
=
=
=
=
_mm_sub_ps
_mm_mul_ps
_mm_add_ps
_mm_min_ps
_mm_max_ps
(r2,
(r2,
(r2,
(r2,
(r2,
r2
r2
r2
r2
r2
r0);
r5);
r0);
r7);
r6);
=
=
=
=
=
_mm_sub_ps
_mm_mul_ps
_mm_add_ps
_mm_min_ps
_mm_max_ps
(r3,
(r3,
(r3,
(r3,
(r3,
r3
r3
r3
r3
r3
r0);
r5);
r0);
r7);
r6);
r0);
r5);
r0);
r7);
r6);
=
=
=
=
=
vsubq_f32
vmulq_f32
vaddq_f32
vminq_f32
vmaxq_f32
(r2,
(r2,
(r2,
(r2,
(r2,
r0);
r5);
r0);
r7);
r6);
=
=
=
=
=
vsubq_f32
vmulq_f32
vaddq_f32
vminq_f32
vmaxq_f32
(r3,
(r3,
(r3,
(r3,
(r3,
r0);
r5);
r0);
r7);
r6);
(r1,
(r1,
(r1,
(r1,
(r1,
vsubq_f32
vmulq_f32
vaddq_f32
vminq_f32
vmaxq_f32
=
=
=
=
=
307
Utasts
memria
Vezrl
egysg
Feldolgoz
egysg
Loklis
memria
Feldolgoz
egysg
Loklis
memria
Feldolgoz
egysg
Loklis
memria
Feldolgoz
egysg
Loklis
memria
sszekttetsek hlzata
19.4. TMBPROCESSZOROK
308
Nhny tipikus (gyakorlatban hasznos algoritmusokhoz szksges) sszektttsgi struktrt mutat be a 19.7.
bra.
Hullmfront tmbprocesszorok
A szisztolikus tmbprocesszorok egyetlen htrnya a globlis rajelhlzat. Minl nagyobb a feldolgozegysgek
szma, annl hosszabb vezetken kell az rajelet thajtani, hogy az minden feldogozegysghez odarjen. Nagy
szm feldolgozegysg vagy nagy rajel frekvencia esetn az sem elhanyagolhat tnyez, hogy egyes feldolgozegysgekhez hamarabb r el az rajel, mint msokhoz, ami kavarodshoz, helytelen mkdshez vezethet
(clock skew).
A globlis rajelhlzat elhagysval megkapjuk a teljesen aszinkron mkds hullmfront tmbprocesszorokat. A hullmfront tmbprocesszorok mkdse tulajdonkppen adatfolyam alap: egy feldolgozegysg
akkor vgzi el a hozz rendelt mveletet, ha minden bemenete megrkezett, s a kimenetrl mr elvettk az
elz mvelet eredmnyt. A szomszdos feldolgozegysgek kztti adatcsere teht egy sszetettebb protokollt
ignyel (tads/tvtel visszaigazolssal), ami ugyan nmi hardveres komplexits-nvekedst jelent, cserbe a
globlis rajelhlzat hinynak ksznheten mg olcsbb az elllts, mg kisebb a fogyaszts s mg nagyobb
rajel frekvencia rhet el.
Mivel a feldolgozegysget egyformk, sebessgk is egyforma, a kialakts termszetbl addan az adatok
hullmszeren terjednek vgig a tmbn, innen kapta a nevt is.
19.4. TMBPROCESSZOROK
309
C1
C2
B2
D0,3
A0,2
D1,3
A1,2
D2,3
A2,2
B1
D0,2
A0,1
D1,2
A1,1
D2,2
A2,1
B0
D0,1
A0,0
D1,1
A1,0
D2,1
A2,0
310
B0,2
C1
B1,2
D0,3
A0,2
B1
D1,3
A0,1
B0
D2,2
(0,2)
(1,2)
(2,2)
B1
(0,1)
(1,1)
(2,1)
B0
(0,0)
(1,0)
(2,0)
B2,0
D1,1
A1,0
B2
A2,1
B1,0
A0,0
D2,3
D1,2
D0,1
C2
B2,1
A1,1
B0,0
C1
A2,2
B1,1
D0,2
C0
B2,2
A1,2
B0,1
C2
D2,1
A2,0
B2
(0,2)
C1
(1,2)
C2
out2
(2,2)
in1
B1
(0,1)
(1,1)
(2,1)
(i, j)
out1
in2
out1 = in1
out2 = in2 + in1 * Ai,j
B0
(0,0)
(1,0)
(2,0)
19.4. TMBPROCESSZOROK
311
Bemenet
Aktivits
Kimenet
B[0]
(0,0)
B[1]
(0,1) (1,0)
B[2]
C[0]
(1,2) (2,1)
C[1]
(2,2)
C[2]
Nmi meggondolssal belthat, hogy ez a szisztolikus tmb N + M 1 lpsben vgez azzal a mtrix-vektor
szorzssal, ami egy klasszikus, szekvencilis szmtgpnek N M lpsig tartott.
Vegyk szre, hogy a feldolgozegysgek aktivitsa a vgrehajts sorn gy alakul, mint egy hullmfront: a
(0,0)-bl indulva, tlsan, szak-keleti irnyba mutat normlvektorral a (2,2) fel.
Projekci
Lthat, hogy a kzvetlen lekpzssel kapott szisztolikus tmbprocesszor feldolgozegysgeinek nagyon rossz
a kihasznltsga. Az elbbi tblzat alapjn minden feldolgozegysg csupn egyetlen temben dolgozott az 5
temig tart mvelet sorn. A kihasznltsgot lehet javtani, ha kevesebb feldolgozegysget vesznk, melyek
mindegyike a lokalizlt fggsgi grf tbb csompontjnak szerept is el tudja jtszani. Pl. a pldban a
(0,0), a (0,1) s a (0,2) a fggsgi viszonyok miatt nem hajthat vgre soha egyszerre, ezrt ezeket ugyanarra a
feldolgozegysgre kpezhetjk, mely elszr a (0,0), majd a (0,1), utna pedig a (0,2) szerinti mveleteket fogja
elvgezni.
Projekci a vzszintes tengelyre
A vzszintes tengelyre val projekci azt jelenti, hogy a kt dimenzis fggsgi grfot gy tesszk egy dimenziss, hogy azt levettjk a vzszintes tengelyre. Azaz, a (0,0), (0,1), (0,2) mveletet kpezzk ugyanazon
feldolgozegysgre, az (1,0), (1,1), (1,2)-t egy msikra, s a (2,0), (2,1), (2,2)-t pedig egy harmadikra, a 19.11. bra
szerint.
C0
B2 B1 B0
C1
C2
{0}
{1}
{2}
A0,0
A0,1
A0,2
A1,0
A1,1
A1,2
A2,0
A2,1
A2,2
in1
out2
in3
{k}
out1
in2
out1 = in1
out2 = in3 + in1 * in2
312
Bemenet
Aktivits
Kimenet
B[0] A[0][0]
{0}
{0} {1}
C[0]
A[1][2] A[2][1]
{1} {2}
C[1]
A[2][2]
{2}
C[2]
A tblzatbl lthat, hogy minden egyes feldolgozegysg 3 temben is dolgozott, teht tnyleg javult a
kihasznltsg. Pldul a {0} feldolgozegysg az 1. temben a (0,0), a 2. temben a (0,1), a harmadik temben
pedig a (0,2) szerept tlti be. Mivel a feldolgozegysget egyformk, ez semmi extra komplikcit nem jelent.
Lnyegben minden feldolgozegysg az eredmnyvektor egy elemt lltja el. A feldolgozegysgek out2
kimenetnek visszacsatolsa egyfajta memrit kpvisel, ami az eredmny C[1] = A[1][0] * B[0] + A[1][1] * B[1]
+ A[1][2] * B[2] sszeg tagjait akkumullja (a msodik feldolgozegysg esetn).
Projekci a fggleges tengelyre
A vzszintes helyett elvgezhetjk a projekcit a fggleges tengelyre is, azaz a (0,0), (1,0), (2,0) mveletet kpezzk
ugyanazon feldolgozegysgre, az (0,1), (1,1), (2,1)-t egy msikra, s a (0,2), (1,2), (2,2)-t pedig egy harmadikra,
a 19.12. brnak megfelelen.
0
{0}
B0
{1}
B1
{2}
B2
A0,0
A1,0
A2,0
A0,1
A1,1
A2,1
A0,2
A1,2
A2,2
C2 C1 C0
in1
{k}
out1
in2
out1 = in1+in2 * Bk
Bemenet
Aktivits
Kimenet
A[0][0]
{0}
A[0][1] A[1][0]
{0} {1}
C[0]
A[1][2] A[2][1]
{1} {2}
C[1]
A[2][2]
{2}
C[2]
A tblzatbl lthat, hogy minden egyes feldolgozegysg 3 temben is dolgozott, teht tnyleg javult a
kihasznltsg. Pldul a {0} feldolgozegysg az 1. temben a (0,0), a 2. temben a (1,0), a harmadik temben
pedig a (2,0) szerept tlti be.
Az gy kapott tmbprocesszorban az egyes feldolgozegysgek az eredmny C[1] = A[1][0] * B[0] + A[1][1] *
B[1] + A[1][2] * B[2] sszeg tagjait szmoljk, teht az els feldolgozegysg mindig az eredmnyvektor minden
elemre az sszeg els tagot szmolja ki, a msodik ehhez hozzadja a msodikat, a harmadik pedig a harmadik
tagot is hozzvve ellltja az eredmnyt.
Projekci diagonl irnyban
Nemcsak horizontlis s vertiklis irnyokban, hanem diagonlisan, a hullmfrontok mentn is vgezhetnk
projekcit. Taln ez a legtermszetesebb megolds, hiszen a hullmfrontok mentn egymstl fggetlen, teht
prhuzamosan vgrehajthat mveletek vannak, gy az azonos hullmfronthoz tartoz mveletekhez clszer
kln-kln feldolgozegysgeket rendelni (19.13. bra).
19.4. TMBPROCESSZOROK
313
{0
}
{1
}
C2
(2,2)
B1
(0,1)
(1,1)
(2,1)
B0
(0,0)
(1,0)
(2,0)
{4
(1,2)
(0,2)
{3
B2
C1
{2
C0
Hullmfrontok
A hromfle projekci kzl ez lesz a legszerencssebb megolds, mivel a feldolgozegysgekben sem visszacsatolssal kialaktott memrira, sem a B vektor elemeinek az eltrolsra nincs szksg. Az esetek tlnyom
tbbsgben a hullmfront mentn vgzett projekcit rdemes alkalmazni.
A hullmfront alap projekci eredmnyeknt kapott tmbprocesszort a 19.14. bra, a megfelel temezst
a 19.14. bra mutatja be.
{0}
{1}
{2}
{3}
{4}
ain
bout
{k}
bin
cin
bout=bin
cout=cin+ain*bin
cout
314
a12
a20
a02
a11
a10
a01
a00
{0}
{1}
{2}
{3}
b0
{4}
c0=0
a22
a21
a12
a20
a02
a11
a10
a01
a00
{0}
{1}
{2}
b0
{3}
{4}
c0=0
a22
a21
a12
a20
a02
a11
a10
a01
a00
{0}
{1}
b0
{2}
{2}
{3}
b1
{4}
(0,0)
c1=0
c0=0
a22
a21
a12
a20
a02
a11
a01
a10
{0}
{1}
{1}
b0
{2}
{3}
{3}
(1,0)
b1
{4}
(0,1)
c1=0
c 0=
a00 b0
a22
a21
a12
a20
{0}
{0}
b0
{1}
{2}
{2}
(2,0)
c2=0
a02
a11
(1,1)
c 1=
a10 b0
b1
{3}
{4}
{4}
b2
(0,2)
c 0=
a00 b0+
a01 b1
19.4. TMBPROCESSZOROK
315
a22
a21
b0
{0}
a12
b1
{1}
{1}
{2}
b2
{3}
{3}
(2,1)
{4}
(1,2)
c 2=
a20 b0
c 1=
a10 b0+
a11 b1
c 0=
a00 b0+
a01 b1+
a02 b2
a22
b1
{0}
{1}
b2
{2}
{2}
{3}
{4}
(2,2)
c 2=
a20 b0+
a21 b1
b1
{0}
b2
{1}
c 1=
a10 b0+
a11 b1+
a12 b2
{2}
{3}
{4}
c 2=
a20 b0+
a21 b1
a22 b2+
b2
{0}
{1}
{2}
c 1=
a10 b0+
a11 b1+
a12 b2
{3}
{4}
c 2=
a20 b0+
a21 b1+
a22 b2
b2
{0}
{1}
{2}
{3}
{4}
c 2=
a20 b0+
a21 b1+
a22 b2
19.14. bra. temezs hullmfrontok mentn vgzett projekci esetn, 2/2. rsz
tem
Bemenet
Aktivits
Kimenet
B[0]
(0,0)
B[0]
B[1]
(0,0)
(0,1)
(1,0)
B[0]
B[1]
B[2]
B[0]
B[1]
B[2]
B[0]
B[1]
B[2]
(0,0)
(0,1)
(1,0)
(0,2)
(1,1)
(2,0)
(1,2)
(2,1)
(2,2)
C[0]
C[1]
C[2]
B[0]
B[1]
B[2]
(0,0)
(0,1)
(1,0)
(0,2)
(1,1)
(2,0)
(1,2)
(2,1)
(2,2)
C[0]
C[1]
C[2]
B[0]
B[1]
B[2]
(0,0)
(0,1)
(1,0)
(0,2)
(1,1)
(2,0)
(1,2)
(2,1)
(2,2)
C[0]
C[1]
C[2]
(0,0)
(0,0)
(0,1)
(1,0)
(0,2)
(1,1)
(2,0)
(0,1)
(1,0)
(0,2)
(1,1)
(2,0)
(1,2)
C[0]
(2,1)
C[0]
C[1]
316
Ha teht ugyanazt a mtrixot kell ms-ms vektorokkal szorozgatni, akkor a pipeline viselkedsnek ksznheten aszimptotikusan 1 mtrix-vektor szorzs egyetlenegy temet vesz ignybe!
1,1
zemi
2,1
zemi
3,1
1,2
zemi
2,2
zemi
3,2
1,3
zemi
tartalk
2,3
zemi
tartalk
3,3
zemi
zemi
zemi
tartalk
tartalk
tartalk
tartalk
tartalk
19.4. TMBPROCESSZOROK
317
1,1
1,2
1,3
1,1
2,1
2,2
2,3
2,1
3,1
3,2
3,3
1,2
1,3
2,3
2,2
3,1
3,2
3,3
318
20. fejezet
Multiprocesszoros rendszerek
20.1. Explicit prhuzamossg
A prhuzamossg formi:
1. Bit szint prhuzamossg: A processzorokban, az aritmetikai mveletek sorn hasznlatos szavak, adategysgek hossza fokozatosan emelkedett, 4 bitrl indulva a nyolcvanas vek kzepig elrte a 32 bitet, majd a
90-es vek elejn a 64 bitet. Ezen a ponton a trend egy kicsit lassult, a 64 bites szhossz mr a legtbb clra
megfelel lebegpontos szmbrzolsi pontossgot tesz lehetv, s a 64 bit a jelenlegi temben nvekv
kapacits memrik cmzsre is mg sokig elegend lesz.
2. Implicit prhuzamossg: Az implicit prhuzamossg azt jelenti, hogy a programban rejl prhuzamostsi
lehetsgek feldertse s kiaknzsa a programoz tudta s kifejezett tmogatsa nlkl trtnik. Fontos,
hogy a programoz szekvencilis programot r, nem is kell foglalkoznia azzal, hogy a program bizonyos
rszei egymssal prhuzamosan fognak futni, ezrt nem kell a programot a hardverhez igaztani: ha
bvl a feldolgoz egysgek szma, azt a rendszer automatikusan ki tudja majd hasznlni. Az implicit
prhuzamossg leggyakoribb megjelensi formi:
(a) Utasts pipeline alap prhuzamossg: Az utasts pipeline az utastsok vgrehajtsnak tlapolsn
alapul. Az utasts pipeline-ban az utastsok vgrehajtsa lnyegben prhuzamosan trtnik, mg
ha azok a vgrehajts klnbz fzisaiban vannak is. A pipeline fzisainak szma meghatrozza a
prhuzamossg fokt. A prhuzamossg foka nvelhet ugyan a fzisok szmnak nvelsvel, de
ennek gtat szabnak az utastsok kztti egymsra hatsok. Minl tbb utasts vgrehajtsa zajlik
egyszerre, annl nagyobb az eslye, hogy ezek az utastsok valamilyen fggsgi viszonyban vannak
egymssal (pl. az egyik eredmnye a msik bemenete), gy mgsem lehet tetszlegesen tlapolni a
vgrehajtsukat.
(b) Mveleti egysgek tbbszrzsn alapul prhuzamossg: A szuperskalr s a VLIW/EPIC architektrk alaptlete, hogy tbbszrzzk meg a processzorban a mveleti egysgeket, dertsk fel a
fggetlen utastsokat, s a tbb mveleti egysggel hajtsuk vgre ket prhuzamosan. A szuperskalr processzorokban a hardver, a VLIW processzorokban a szoftver (a fordtprogram) feladata a
prhuzamosan vgrehajthat utastsok sszevlogatsa. A prhuzamosan vgrehajthat utastsok
szmnak ismt gtat szabnak az utastsok kztti adatfggsgek: ha egy utasts vgrehajtshoz
szksg van egy korbbi eredmnyre, akkor nyilvn nem lehet ket prhuzamosan vgrehajtani,
akrhny mveleti egysg is van a processzorban. A gyakorlatban, vals programok futtatsa alapjn
az a tapasztalat, hogy a 2-utas rendszerek (melyek egyszerre kt mveletet kpesek elvgezni prhuzamosan) jelentsen gyorsabbak, mint az 1-utasok, a 4-utasok mg szigniknsan gyorsabbak a
2-utasoknl, de a 6-utas rendszerek teljestmnybeli hozadka alig mrhet.
3. Explicit prhuzamossg: Mint lttuk, az implicit prhuzamossgnak gtat szabnak az eredetileg szekvencilisnak sznt program utastsai kztti egymsrahatsok (leginkbb az adatfggsgek). Ezen gy lehet
segteni, hogy a programoz explicit mdon megadja a program prhuzamosan vgrehajthat rszeit,
vagyis a programot eleve a prhuzamos vgrehajts szndkval rja. Amint azt az informcifeldolgozsi
319
320
321
Nem ritka, hogy a taszkok (programok) vgrehajtsa is tbb, prhuzamos vgrehajtsi szlra bomlik (a programoz az explicit prhuzamossg jegyben megmondta, hogy a program mely rszei hajthatk vgre prhuzamosan). Az egy taszkhoz tartoz vgrehajtsi szlak kzsen hasznljk a taszk rendelkezsre ll memrit (pl.
ltjk egyms loklis vltozit is, stb.), teht az egy taszkhoz tartoz szlak kztti kapcsolskor nem indokolt sem
a laptblamutat lltsa, sem a TLB kirtse, sem az utasts cache kirtse. A taszkokkal ellenttben teht az
egy taszkhoz tartoz szlak kztti vlts nagyon gyors: csak a regisztereket s az utastsszmllt kell tlltani.
A tovbbiakhoz a kvetkez tanulsgokat kell levonni:
Tbb program (taszk) prhuzamos futsnak ltszatt egy processzor esetn idosztssal lehet kelteni.
A taszkok kztti vlts nagyon lass
Egy taszkon bell a szlak kztti vlts nagyon gyors
Most, hogy tudjuk a taszkok s a szlak kztti klnbsget, fontos leszgezni: ez az opercis rendszerek s a
programozs elnevezsi rendszere, s sajnlatos mdon nem egyezik meg a szmtgp-architektrk tmakrben
hasznlatos elnevezsi rendszerrel. A tbb vgrehajtsi szlat tmogat (multi-threading) processzorok ugyanis
valjban tbb taszkot tmogatnak, teht ezeket helyesen tbb taszkot tmogat (multi-tasking) processzoroknak
kellene nevezni.
A tovbbiakban az elterjedt (ellentmondsos) elnevezshez tartjuk magunkat, teht tbbszl processzorokrl
s szlakrl beszlnk, de kzben nem fejeltjk el, hogy nem szlakrl, hanem taszkokrl van sz. Sajnos ez az
elnevezsi inkonzisztencia gyakran okoz zavart ezen a szakterleten, nemcsak magyar, hanem angol nyelven is.
322
(A hardver tmogatssal nem segtett tbbszl vgrehajts a durva esethez hasonlt, de akkor a szlak
kztti vlts nem 1-2, hanem sokkal tbb rajelet vesz ignybe a regiszterek mentse s visszatltse miatt.)
A. szl
B. szl
C. szl
D. szl
Id
Mv. egys.
Durva felbonts
tbbszl vgrehajts
Finom felbonts
tbbszl vgrehajts
Szimultn
tbbszl vgrehajts
Id
Mv. egys.
323
Megjelens ve
Tbbszlsg formja
Intel Pentium 4
2002
Szimultn
Intel Itanium 2
2006
Durva felbonts
IBM POWER5
2004
Szimultn
IBM POWER7
2010
Szimultn
UltraSPARC T1
2005
Finom felbonts
UltraSPARC T2
2007
Finom felbonts
Fogyaszts W
85
80
75
i5 661
70
i5 655-K
i3-540
65
60
55
4
4.1
4.2
4.3
4.4
4.5
4.6
Frekvencia GHz
324
Ennyi elny szmbavtele utn felmerl a krds, mik az explicit prhuzamos rendszerek korltai. A nehzsgek a szoftver szmljra rhatk. Ahogy korbban mr lttuk, a vezrlsramlsos rendszerben a prhuzamossg
feldertst szoftveresen kell megoldani. Ezt kt mdon tehetjk meg:
Egyrszt fejleszthetnk olyan fordtprogramot, amely a magas szint nyelvben lert programban automatikusan felderti a prhuzamosthat rszeket, s ennek megfelel kdot generl (teht a FORK s JOIN
mveleteket a fordt helyezi el a programban). A programoznak knny a dolga, a szoksos szekvencilis
gondolkodssal rja a programot, a munka oroszlnrsze a fordtprogramra hrul. Sajnos ilyen intelligens
fordt, legalbbis szmottev hatkonysggal mkd, nem ll rendelkezsre. (A prhuzamost fordt a
compiler fejlesztk Szent Grl-ja).
Msrszt a prhuzamostst a programozra is lehet bzni: helyezze el a FORK s JOIN primitveket,
ahol azt jnak ltja. Jobb hjn ez ma a jellemz szemllet. Sajnos a prhuzamossg kzi feldertse s
megvalstsa nem egyszer feladat, rengeteg nehezen felderthet potencilis hibalehetsggel.
1
(1 P) + P/N
Mi ezen a megdbbent? Lssunk egy numerikus pldt: van 100 processzorunk, s ezen szeretnnk a programunkat legalbb 80-szor gyorsabban lefuttatni, mint egy egyprocesszoros rendszeren. Ekkor N = 100, SP (N ) = 80,
a fenti sszefggsbl kijn, hogy
SP (N ) 1
N
P=
0.9975,
SP (N )
N 1
vagyis ekkor a programnak mindssze 0.25%-a lehet szekvencilis! Ha a programunk 5%-a szekvencilis (P = 0.95),
akkor az N = 100 processzorral elrhet teljestmnynvekmny:
SP (100) =
1
0.05 + 0.0095
16.8,
325
Prhuzamos rsz
50%
75%
90%
95%
16.00
Gyorsuls
14.00
12.00
10.00
8.00
6.00
4.00
65536
32768
16384
8192
4096
2048
1024
512
256
64
128
32
16
0.00
2.00
Processzorok szma
20.3.3. Rendszerezs
A multiprocesszoros rendszereket kt szempont szerint rendszerezzk.
Az els szempont, hogy a klnbz processzorokon fut taszkok hogyan tudnak egymssal kommuniklni:
Ha van olyan, minden processzor szmra lthat kzs memria, melyen keresztl a taszkok egymssal
kommuniklni tudnak, akkor osztott memrival rendelkez multiprocesszoros rendszerrl beszlnk.
Ha ilyen kzs memria nincs, a taszkok zenetek segtsgvel tudnak egymssal kommuniklni. Ezeket a
rendszereket zenetkldsen alapul multiprocesszoros rendszereknek nevezzk.
A msik szempont, hogy a multiprocesszoros rendszerben a memriamveletek ideje azonos-e:
Ha igen, akkor UMA (Uniform Memory Access) multiprocesszoros rendszernk van. UMA rendszerekben
nincs jelentsge annak, hogy egy adatot hova runk a memriba: akrhova is rjuk, ugyanannyi ideig fog
tartani mind az rs, mind a visszaolvass minden egyes taszk szmra egyformn.
Ha nem, akkor NUMA (Non-Uniform Memory Access) multiprocesszoros rendszernk van. NUMA rendszerekben nagyon is fontos, hogy egy adat hova kerl. Fontos, hogy a memriba rt adat mind az rhoz,
mind az azt elolvas msik processzorhoz kzel legyen.
Multiprocesszoros rendszerek osztott memrival
Az osztott memrival rendelkez multiprocesszoros rendszerekben (shared-memory multiprocessors) teht
van osztott memria, melyhez az sszes processzor hozzfr. Ezt a kzs memrit az sszes processzor tudja
cmezni, rni/olvasni. A osztott memrival rendelkez multiprocesszoros rendszerben fut taszkok rendkvl
egyszeren tudnak egymssal kommuniklni: ha az egyik taszk adatot kvn kldeni egy msiknak, berja az
osztott memriba, a msik pedig egyszeren kiolvassa onnan.
A 20.4. bra a. pontjban egy UMA rendszer lthat: a processzorok egy sszekttets-hlzaton keresztl
rik el a memria modulokat. A b. pontban ehhez kpest annyi a klnbsg, hogy a processzorok sajt cache-el
326
rendelkeznek. Az igaz, hogy a memria-hozzfrsek ideje ekkor mr nem lesz egyforma, hiszen a cache
gyorsabban elrhet, mint a kzs memria, mgis ezt a megoldst is UMA-nak vehetjk (a cache-tl eltekintve
ez is uniform memria-elrsi idej). Ez a b. pont felel meg a napjainkban elterjedt tbb-magos processzoroknak
is (a tbb-magos processzorokban a processzorok, a cache-ek s az sszekttets-hlzat a tokban tallhat).
CPU
CPU
CPU
CPU
sszekttetsek hlzata
MEM
MEM
Cache
CPU
Cache
sszekttetsek hlzata
MEM
MEM
MEM
MEM
CPU
Cache
MEM
CPU
Cache
MEM
CPU
Cache
MEM
sszekttetsek hlzata
20.4. SSZEKTTETSEK
327
zenet-azonostt (tag) is. Az zenet elkldse (send) utn az sszekttets-hlzat a cmzett azonostja alapjn
tudja az zenetet kzbesteni. A cmzett a receive mvelettel jelzi, hogy zenetet vr, valamint, hogy pontosan
milyen zenetet is vr (megadhat a cmzettek s zenet-azonostk egy tartomnya).
A kommunikci lefolysa lehet szinkron, vagy aszinkron. Az zenet kldse mindkt esetben ugyangy
kezddik: a kld taszk a memriban sszekszti az elkldeni kvnt zenetet minden szksges jrulkos
informcival egytt, majd kiadja a send parancsot. Ezutn az zenetek tovbbtsrt felels hardver egysg
DMA mvelettel kzvetlenl kiolvassa a memribl az zenetet, s tovbbtja a cmzett fel. A kld taszk futsa
szinkron esetben mindaddig fel van fggesztve, mg a cmzett az zenetet el nem vette. Aszinkron esetben a kld
taszk az zenet elkldse utn azonnal folytatdik, attl fggetlenl, hogy az zenet a msik flhez mg nem
rkezett meg. A cmzett taszk a receive parancs segtsgvel megjelli, hogy kitl vr zenetet (kld s zenet
azonost alapjn), s megad egy memriacmet, ahova az rkez zenet elhelyezst kri. Ezutn a cmzett taszk
futsa felfggesztsre kerl mindaddig, mg a vrt zenet meg nem rkezik. Az zenet megrkezse utn a cmzett
taszk futsa folytatdik, mikzben a megrkezett zenet az ltala megjellt memriacmen rendelkezsre ll.
20.4. sszekttetsek
Akr osztott memrira alapozott (legyen az NUMA vagy UMA), akr zenetkldsre alapozott multiprocesszoros
rendszernk is van, a csompontokat mindenkppen ssze kell ktni egymssal:
osztott memris, UMA rendszerek esetn minden processzort minden memriamodullal ssze kell ktni
(de a processzorokat egyms kztt s a memriamodulokat egyms kztt nem!),
egyb esetekben a processzorbl, s memribl ll csompontokat kell sszektni egymssal.
Az sszekttetsek segtsgvel
osztott memris multiprocesszoros rendszerekben memriakrsek,
zenetalap multiprocesszoros rendszerekben zenetek
tovbbtsa zajlik.
20.4.1. Tulajdonsgok
Az sszekttets-hlzatot egy G = (V , E) gral rjuk le, ahol a V az sszektend elemek (cscsok) halmaza,
az E pedig a cscsok kztti lek halmaza. Ha u V s v V csompontok egymssal kzvetlenl ssze
vannak ktve, akkor (u, v) E. A multiprocesszoros rendszerek termszetbl fakadan az sszekttetsek
ktirnyak, vagyis minden sszekttets mentn egyidejleg mindkt irnyban trtnhet kommunikci, vagyis
G egy irnytatlan grf.
Az sszekttets-hlzatok tulajdonsgai:
tmr (diameter): (G) a csompontok kztti leghosszabb tvolsg. Kt csompont kztti tvolsg alatt
a kt csompont kztti legrvidebb t hosszt rtjk. Legfeljebb ekkora utat tesznek meg a memriakrsek
ill. zenetek, mg eljutnak a rendeltetsi helykre. Minl kisebb az tmr, annl gyorsabban jutnak el az
zenetek a kldtl a cmzettig.
Felezsi keresztmetszet (bisection width): B(G) azon lek minimlis szma, melyek elhagysval a grf kt
egyenl (egymssal ssze nem kttt) rszre bomlik. (Ha a cscsok szma pratlan, az kt rsz cscsszmnak
klnbsge legfeljebb 1 lehet.) Ha N csompont hasznlja az sszekttets-hlzatot, a felez vgatot
tlagosan az zenetek fele keresztezi, a sikeres kommunikcihoz B(G) N /2 szksges.
Ksleltets (latency): az az id, ami az zenetek / memriakrsek tvitelhez szksges a kld s a cl
csompont kztt. Minl kisebb, annl jobb.
tvitel (throughput): az a sebessg, amivel az sszekttets hlzaton j zeneteket / memriakrseket
lehet indtani. Minl nagyobb, annl jobb.
lsszefggsg (arc connectivity): a grf sszefggsgnek megszntetshez eltvoltand lek minimlis szma. Minl nagyobb az lsszefggsg, annl tbb t ktheti ssze a csompontokat, gy annl
ritkbban fordul el, hogy egy lre versenyhelyzet alakul ki.
328
Az sszekttets hlzatok topolgija hatrozza meg, hogy a hlzat elemei geometriailag milyen mdon
vannak elrendezve.
Az sszekttets hlzatokat ktfle csoportra oszthatjuk: direkt s indirekt hlzatokra.
Direkt (vagy statikus) hlzatok esetn a multiprocesszoros rendszer csompontjai (processzorok ill. memria modulok) kzvetlenl, pont-pont sszekttetsekkel kapcsoldnak egymshoz. Az egymssal szomszdsgban nem ll csompontok zenetei ms processzorokon, ill. memria modulokon kell, hogy
thaladjanak. A multiprocesszoros rendszer csompontjai teht aktv szerepet jtszanak nem csak a sajt,
de msok zeneteinek tovbbtsban is. Ez a megolds az zenetalap multiprocesszoros rendszerekre
jellemz.
Indirekt (vagy dinamikus) hlzatok esetn a csompontok nincsenek egymssal kzvetlen kapcsolatban.
A csompontok nem vesznek rszt az zenetek tovbbtsban: az zenetet bedobjk az sszekttets
hlzat hatrn, s a hlzat felelssge, hogy az zenet a cmzetthez jusson. Egy indirekt hlzatban
egy csompont nem tallkozik olyan zenettel, ami t nem rinti. Indirekt hlzat pldul egy busz alap
hlzat, vagy egy specilis, kizrlag az zenetek tovbbtsra szolgl eszkzkbl ll hlzat. Ez az
osztott memris multiprocesszoros rendszerek dominns felptse.
CPU
CPU
Busz
MEM
MEM
MEM
20.4. SSZEKTTETSEK
329
Crossbar hlzatok
P processzor s M memria modul sszektsnek egy msik egyszer mdja a crossbar hasznlata. A crossbar
P M db ktlls kapcsolt tartalmaz (20.7. bra). Ha az i. sor j. kapcsoljt bekapcsoljuk, az i. processzor
sszekttetsbe kerl a j. memriamodullal. A crossbar egy blokkolsmentes hlzat, ami azt jelenti, hogy amikor
egy processzor egy memriamodulhoz kapcsoldik, azzal egyidejleg brmely ms processzor brmely ms
memriamodulhoz kapcsoldhat.
MEM
MEM
MEM
MEM
CPU
CPU
CPU
CPU
CPU
330
Omega hlzat
CPU 0
MEM 0
CPU 0
MEM 0
CPU 1
MEM 1
CPU 1
MEM 1
CPU 2
MEM 2
CPU 2
MEM 2
CPU 3
MEM 3
CPU 3
MEM 3
CPU 4
MEM 4
CPU 4
MEM 4
CPU 5
MEM 5
CPU 5
MEM 5
CPU 6
MEM 6
CPU 6
MEM 6
CPU 7
MEM 7
CPU 7
MEM 7
"Kereszt" lls:
"Egyenes" lls:
000
001
001
010
010
011
011
100
100
101
101
110
110
111
111
001
kereszt
100
001
= egyenes
100
001
kereszt
100
20.4. SSZEKTTETSEK
331
000
000
001
001
010
010
011
011
100
100
101
101
110
110
111
111
332
4.
A ktdimenzis trusz egy gyakorlatban elg gyakran hasznlt topolgia, az Alpha 21364 processzora kr
pl szerverekben pldul ezt alkalmaztk. Mind a hl, mind a trusz elve kiterjeszthet tbb dimenzira is, pl.
3D hl topolgia a meteorolgia modellezsre klnsen hatkony, ilyet hasznlt a Cray T3E szuperszmtgp
is.
Hiperkocka
Egy rdekes s szmos hasznos tulajdonsgot mutat topolgia a hiperkocka. Ha N csompontunk van, a
hiperkocka log2 N dimenzis, s minden dimenzi mentn 2 csompontot tartalmaz. A 20.14. brn egy 2, 3 s 4
dimenzis hiperkocka lthat 4, 8 s 16 csomponttal.
2D hiperkocka
3D hiperkocka
4D hiperkocka
20.4.4. tvonalvlaszts
Az tvonalvlaszts hatrozza meg, hogy egy multiprocesszoros rendszerben az zenetek, ill. memriakrsek
hogyan jutnak el a kldtl a cmzettig. Hacsak nem szomszdos a kld s a cmzett, ezek a krsek tbb csompontot is rintenek. Direkt sszekttets-hlzat esetn ezek a csompontok processzorok, ill. memria modulok,
indirekt esetben pedig az sszekttets-hlzat zenetek tovbbtsra szolgl eszkzei. Brmelyik esetrl is
legyen sz, az zenetek tovbbtst csompontrl csompontra kapcsolsnak nevezzk, az abban rsztvev
szereplket pedig kapcsolknak. Teht a kapcsol feladata, hogy a hozz befut zenetet tovbbadja a megfelel
szomszdos kapcsolnak, hogy az minl hamarabb eljusson a cmzetthez (direkt sszekttets-hlzatokban teht
20.4. SSZEKTTETSEK
333
334
A 20.15. brn egy olyan szitucit ltunk, ahol 4 kld-cmzett pros kztt zajlik kommunikci egyidejleg.
A statikus eljrs szerint ez kzs sszekttetseket tartalmaz tvonalakon valsul meg. Kzs rszeket tartalmaz tvonalak hasznlata egy nagy hlzatban szinte elkerlhetetlen ha ezeket az tvonalakat vletlenl ppen
egyszerre kell hasznlni, akkor az tviteli ksleltets megn, hiszen a kzs sszekttetseken az zeneteket
csak egyms utn lehet elkldeni. A dinamikus tvonalvlasztssal ez a problma kikszblhet, a pldban a
dinamikus tvonalvlaszt pldul ngy fggetlen tat tallt.
Statikus tvonalvlasztssal
Dinamikus tvonalvlasztssal
Irodalomjegyzk
[1] AMD Athlon XP Processor Model 10 Data Sheet. http://support.amd.com/us/Processor_TechDocs/
26237.PDF. 2012.09.30.
[2] Hitachi Travelstar 5K160 Hard Disk Drive Specication . http://www.hgst.com/tech/techlib.nsf/
techdocs/8037f4603fe5b763862571840068043c/$file/5k160_sata_spv1.2.pdf. 2014.08.29.
[3] Intel itanium architecture software developers manual vol. 3 rev. 2.2: Instruction set reference. Intel. 2006.
[4] Intel Q45 and Q43 Express Chipsets Product Brief. http://www.intel.com/Assets/PDF/prodbrief/
320665.pdf. 2012.09.30.
[5] NAND vs NOR ash memory technology overview. Toshiba. 2006.
[6] USB Specication. http://http://www.usb.org/developers/docs/. 2014.08.29.
[7] Don Anderson. Universal Serial Bus System Architecture. Addison-Wesley, 2001.
[8] Don Anderson, Tom Shanley, and Ravi Budruk. PCI express system architecture. Addison-Wesley, 2004.
[9] Krste Asanovic. Lecture Notes for CS 252 Graduate Computer Architecture. http://inst.eecs.berkeley.
edu/~cs252/fa07/lectures/L06-VLIW.pdf. 2007.
[10] Krste Asanovic. Lecture Notes for CS 252 Graduate Computer Architecture. http://inst.eecs.berkeley.
edu/~cs152/sp11/lectures/L15-Vector.pdf. 2011.
[11] Jan Axelson. USB complete: the developers guide. Lakeview Research, 2009.
[12] Jean-Loup Baer. Microprocessor architecture: from simple pipelines to chip multiprocessors. Cambridge
University Press, 2009.
[13] Randal Bryant and OHallaron David Richard. Computer systems: a programmers perspective. Prentice Hall,
2003.
[14] Tien-Fu Chen and Jean-Loup Baer. Eective hardware-based data prefetching for high-performance processors. Computers, IEEE Transactions on, 44(5):609623, 1995.
[15] Compaq Computer Corporation. Alpha Architecture Handbook. Compaq, 1998.
[16] David E Culler, Jaswinder Pal Singh, and Anoop Gupta. Parallel computer architecture: a hardware/software
approach. Gulf Professional Publishing, 1999.
[17] Peter Desnoyers. Analytic modeling of SSD write performance. In Proceedings of the 5th Annual International
Systems and Storage Conference, page 12. ACM, 2012.
[18] Michel Dubois, Murali Annavaram, and Per Stenstrm. Parallel computer organization and design. Cambridge
University Press, 2012.
[19] Agner Fog. The microarchitecture of intel, amd and via cpus. http://www.agner.org/optimize/
microarchitecture.pdf, 2014.
335
336
IRODALOMJEGYZK
[20] Andrei Frumusanu and Ryan Smith. ARM A53/A57/T760 investigated. http://www.anandtech.com/
show/8718/the-samsung-galaxy-note-4-exynos-review/3. 2015.02.10.
[21] John L Hennessy and David A Patterson. Computer architecture: a quantitative approach. Elsevier, 2012.
[22] Xiao-Yu Hu, Evangelos Eleftheriou, Robert Haas, Ilias Iliadis, and Roman Pletka. Write amplication analysis
in ash-based solid state drives. In Proceedings of SYSTOR 2009: The Israeli Experimental Systems Conference,
SYSTOR 09, pages 10:110:9, New York, NY, USA, 2009. ACM.
[23] Lee
Hutchinson.
Solid-state
revolution:
in-depth
on
how
SSDs
really
work.
http://arstechnica.com/information-technology/2012/06/
inside-the-ssd-revolution-how-solid-state-disks-really-work. 2012.06.04.
[24] IBM. PowerPC Microprocessor Family: The Programming Environments Manual for 64-bit Microprocessors. IBM,
2005.
[25] Bruce Jacob and Trevor Mudge. Virtual memory in contemporary microprocessors. Micro, IEEE, 18(4):6075,
1998.
[26] Bruce Jacob, Spencer Ng, and David Wang. Memory systems: cache, DRAM, disk. Morgan Kaufmann, 2010.
[27] Gerry Kane. PA-RiSC 2.0 Architecture. Prentice Hall PTR, 1996.
[28] David Kanter. Intels Haswell CPU Microarchitecture. http://www.realworldtech.com/haswell-cpu/.
2012.11.13.
[29] Sun Yuan Kung. Vlsi array processors. Englewood Clis, NJ, Prentice Hall, 1988, 685 p. Research supported by
the Semiconductor Research Corp., SDIO, NSF, and US Navy., 1, 1988.
[30] Alvin Lebeck. Lecture Notes for Compsci 220 / ECE 252 Advanced Computer Architecture I. http:
//www.cs.duke.edu/courses/fall06/cps220/. 2006.
[31] Gbor Nmeth and Lszl Horvth. Szmtgp Architektrk. Akadmiai kiad, 1993.
[32] David A Patterson and John L Hennessy. Computer organization and design: the hardware/software interface.
Newnes, 2013.
[33] Thomas Rauber and Gudula Rnger. Parallel programming: For multicore and cluster systems. Springer
Science & Business Media, 2013.
[34] Nakazato Satoshi, Tagaya Satoru, Nakagomi Norihito, Watai Takayuki, and Sawamura Akihiro. Hardware
technology of the sx-9 (1) main system. NEC Technical Journal, 3(4):1518, 2008.
[35] Freescale semiconductor. AltiVec Technology Programming Interface Manual. Freescale, 1999.
[36] Tom Shanley and Don Anderson. PCI system architecture. Addison-Wesley, 1995.
[37] Anand Lal Shimpi. Apples Cyclone Microarchitecture Detailed. http://www.anandtech.com/show/7910.
2014.03.31.
[38] Anand Lal Shimpi. The SSD Anthology: Understanding SSDs and New Drives from OCZ. http://www.
anandtech.com/show/2738. 2009.03.18.
[39] Mark Smotherman. Understanding epic architectures and implementations. In 40th Annual ACM Southeast
Conference, pages 7178, April 2002.
[40] William Stallings. Computer organization and architecture: designing for performance. Pearson, 2013.
[41] Kristian Vtt.
Understanding TLC NAND.
understanding-tlc-nand. 2012.02.23.
http://www.anandtech.com/show/5067/
[42] David Williamson. Arm cortex-a8: A high-performance processor for low-power applications. Unique Chips
and Systems, pages 79106, 2007.