Szgarch

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 336

Horvth Gbor

Szmtgp Architektrk

2015. februr 17.

Minden jog fenntartva!


Ez a knyv a Budapesti Mszaki s Gazdasgtudomnyi Egyetem Szmtgp Architektrk trgyhoz tartoz
jegyzet. A trgy hallgati sajt hasznlatra trolhatjk, ill. kinyomtathatjk. Mindenki ms szmra tilos a
knyvet vagy annak rszleteit a szerz engedlye nlkl brmilyen formtumban vagy eszkzzel reproduklni,
trolni s kzlni!
2011-2014, Horvth Gbor (ghorvath@hit.bme.hu).

Tartalomjegyzk
I.

A vezrlsramlsos informcifeldolgozsi modell

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

7. Szmpldk, feladatok a perifriakezels tmakrben


113
7.1. Feladatok az ltalnos perifriakezels tmakrben . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.2. Feladatok a merevlemezek tmakrben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.3. Feladatok az SSD tmakrben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

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

10. Cache memria


10.1. Lokalitsi elvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2. A trhierarchia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3. Cache megvalstsi lehetsgek, alapfogalmak . . . . . . . . . . . . . . . .
10.4. Cache szervezs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.4.1. Transzparens cmzs cache szervezs . . . . . . . . . . . . . . . . .
10.4.2. Transzparens cache szervezs s a virtulis memriakezels viszonya
10.4.3. Nem-transzparens cache szervezs . . . . . . . . . . . . . . . . . . .
10.5. Tartalom menedzsment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.5.1. Adatok betltse a cache-be . . . . . . . . . . . . . . . . . . . . . . .
10.5.2. Cache szemetels megelzse . . . . . . . . . . . . . . . . . . . . . .
10.5.3. Id eltti betlts . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.5.4. Cserestratgia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.5.5. rsi mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.5.6. Tbbszint cache memrik . . . . . . . . . . . . . . . . . . . . . . .
10.6. Cache memrik a gyakorlatban . . . . . . . . . . . . . . . . . . . . . . . . .
10.6.1. Cache szervezsek sszehasonltsa . . . . . . . . . . . . . . . . . . .
10.6.2. Cache szervezs s menedzsment nhny processzorcsaldban . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

151
151
151
152
153
153
156
157
158
158
158
159
161
161
162
162
163
163

11. Lokalitstudatos programozs


11.1. A trhierarchia teljestmnynek mrse . . . . . .
11.1.1. Az idbeli lokalits hatsa . . . . . . . . . .
11.1.2. A trbeli lokalits hatsa . . . . . . . . . . .
11.2. Lokalitsbart ciklusszervezs . . . . . . . . . . . .
11.2.1. Ciklusegyests . . . . . . . . . . . . . . . .
11.2.2. Ciklusok sorrendjnek optimalizlsa . . . .
11.2.3. Blokkos ciklusszervezs . . . . . . . . . . .
11.2.4. Esettanulmny: lokalitsbart mtrixszorzs

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

165
165
165
167
168
168
168
169
170

12. Szmpldk, feladatok a memriakezels tmakrben


12.1. Feladatok a memriatechnolgik tmakrben . . . . . . .
12.2. Feladatok a virtulis trkezels tmakrben . . . . . . . . .
12.3. Feladatok a TLB-vel segtett virtulis trkezels tmakrben
12.4. Feladatok a cache memria tmakrben . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

175
175
176
183
187

IV.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

A processzor

13. Pipeline utastsfeldolgozs statikus temezssel


13.1. Az utastsfeldolgozs fzisai . . . . . . . . . . . . .
13.2. Pipeline utastsfeldolgozs . . . . . . . . . . . . . .
13.2.1. A pipeline ksleltetse s tviteli sebessge
13.2.2. Pipeline regiszterek . . . . . . . . . . . . . .
13.3. Egymsrahatsok a pipeline-ban . . . . . . . . . . .
13.3.1. Feldolgozsi egymsrahats . . . . . . . . .
13.3.2. Adat-egymsrahats . . . . . . . . . . . . .
13.3.3. Procedurlis egymsrahats . . . . . . . . .
13.4. Pipeline implementci . . . . . . . . . . . . . . . .
13.5. Kivtelek, megszaktsok kezelse a pipeline-ban .
13.6. Eltr ksleltets aritmetikai mveletek kezelse .
13.7. Alternatv pipeline struktrk . . . . . . . . . . . .

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

15. Szles utasts pipeline-ok


15.1. A pipeline utastsfeldolgozs tviteli sebessgnek nvelse . . . . . . . . .
15.2. temezs tbbutas pipeline-ban . . . . . . . . . . . . . . . . . . . . . . . . .
15.3. Szuperskalr processzorok . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.3.1. In-order szuperskalr pipeline . . . . . . . . . . . . . . . . . . . . . .
15.3.2. Out-of-order szuperskalr pipeline . . . . . . . . . . . . . . . . . . .
15.4. A VLIW architektra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.5. Az EPIC architektra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.6. Hatkonysgot javt technikk statikusan temezett tbbutas pipeline-hoz
15.6.1. Ciklusok optimalizlsa . . . . . . . . . . . . . . . . . . . . . . . . .
15.6.2. Prediktumok hasznlata . . . . . . . . . . . . . . . . . . . . . . . .
15.6.3. Spekulatv betlts . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

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

18. Szmpldk, feladatok a processzorok tmakrben


18.1. Feladatok a pipeline utaststemezs tmakrben
18.2. Feladatok a regiszter tnevezs tmakrben . . . .
18.3. Feladatok a VLIW architektrk tmakrben . . .
18.4. Feladatok az elgazsbecsls tmakrben . . . . .

V.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

Prhuzamos feldolgozs

19. SIMD feldolgozs


19.1. Flynn taxonmia s az SIMD feldolgozs . . . . . . .
19.2. Vektorprocesszorok . . . . . . . . . . . . . . . . . . .
19.2.1. A vektor adattpus s hasznlatnak elnyei .
19.2.2. Vektorprocesszorok felptse . . . . . . . . .
19.2.3. Vektorprocesszorok jellegzetes megoldsai . .
19.3. SIMD utastskszlet kiegsztsek . . . . . . . . . . .
19.4. Tmbprocesszorok . . . . . . . . . . . . . . . . . . .
19.4.1. Klasszikus tmbprocesszorok . . . . . . . . .
19.4.2. Szisztolikus s hullmfront tmbprocesszorok
19.4.3. Szisztolikus tmbprocesszorok tervezse . . .
19.4.4. Tmbprocesszorok hibatrse . . . . . . . . .

273
273
279
283
286

293
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

295
295
295
296
296
300
303
305
305
307
308
316

20. Multiprocesszoros rendszerek


20.1. Explicit prhuzamossg . . . . . . . . . . . . . . . . . . . . . . . .
20.2. Tbb vgrehajtsi szlat tmogat egyprocesszoros rendszerek . .
20.2.1. Tbbszl vgrehajts hardver tmogats nlkl . . . . .
20.2.2. Az idosztsos tbbszl vgrehajts hardver tmogatsa
20.2.3. Szimultn tbbszl vgrehajts . . . . . . . . . . . . . . .
20.3. Multiprocesszoros rendszerek . . . . . . . . . . . . . . . . . . . .
20.3.1. Motivci s nehzsgek . . . . . . . . . . . . . . . . . . .
20.3.2. Amdahl trvnye . . . . . . . . . . . . . . . . . . . . . . .
20.3.3. Rendszerezs . . . . . . . . . . . . . . . . . . . . . . . . .
20.4. sszekttetsek . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.4.1. Tulajdonsgok . . . . . . . . . . . . . . . . . . . . . . . .
20.4.2. Indirekt sszekttets-hlzatok . . . . . . . . . . . . . .
20.4.3. Direkt sszekttets-hlzatok . . . . . . . . . . . . . . .
20.4.4. tvonalvlaszts . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

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.

1.1. Vezrlsramlsos modell


Az utastsok kztti adatcserre, az operandusok, ill. a mveletek eredmnyeinek trolsra kzs hasznlat
memria szolgl (kzs hasznlat abban az rtelemben, hogy tartalmt minden utasts kpes rni/olvasni). Az
utastsok egymsutnisgt a vezrlsi szl hatrozza meg. A vezrlsi szl mentn a vezrl token utastsrl
utastsra halad, s az rintett utastsokat sorban egyms utn vgrehajtja (1.1. bra). Egy utasts vgrehajtsakor
elszr ki kell olvasni az utasts operandusait a kzs memribl, majd elvgezhet az utasts ltal denilt
mvelet, vgl az eredmnyt vissza kell rni a kzs memriba. A vezrl token nem csak sorban egyms utn
tudja vgrehajtani az utastsokat, bizonyos utastsokkal a vezrl token explicit mdon is mozgathat (goto,
szubrutin hvs, stb.).

1.1. bra. A vezrl token


A vezrlsramlsos modellben a program lersra a folyamatbra hasznlatos (a magasabb szint vezrlsramlsos programozsi nyelvekben, mint a C, C++, Java, stb. is tulajdonkppen a program egy folyamatbrnak
feleltethet meg). Pldaknt nzzk egy egyszer, a msodfok egyenlet gykeinek kiszmtst vgz program
folyamatbrjt (a vals gykk ltezsnek vizsglata nlkl, 1.2. bra). Mint lthat, ez egy elg egyszer
folyamatbra, nincs benne elgazs sem (a tbbi informcifeldolgozsi modellel val sszehasonltshoz ez ppen
megfelel).
A pldban a program v1v9 vltozi kpviselik az utastsok kztti adatcserre hasznlatos kzs memrit.
A folyamatbra pontosan elrja a program utastsainak vgrehajtsi sorrendjt, egy klasszikus vezrlsramlsos
szmtgpnek nincs is lehetsge a sorrend megvltoztatsra. Ez a vezrlsramlsos informcifeldolgozsi
modell legnagyobb gyengje: nem kpes a prhuzamossg automatikus feldertsre s kiaknzsra! Hogy hol
van a pldban kiaknzhat prhuzamossg? Pldul ezeken a pontokon:
v1, v2, v6, v7 egymssal prhuzamosan szmolhat lenne,
11

12

1. FEJEZET. INFORMCIFELDOLGOZSI MODELLEK

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

1.2. bra. Folyamatbra msodfok egyenlet gykeinek meghatrozsra


v8 s v9 gyszintn,
x1 s x2 is prhuzamosan szmolhat.
Bizonyos kiterjesztsekkel, pl. a Fork/Join primitvek bevezetsvel lehetv tehet a prhuzamossg lersa.
A Fork mvelet lnyegben tbbszrzi a vezrl tokent, a klnbz vezrl tokenek ltal kijellt utastsok
pedig prhuzamosan hajthatk vgre. A Join mvelet sszevr tbb vezrl tokent, s a tbb vezrl tokenbl
ismt egyet csinl. A Fork/Join primitvekkel le lehet ugyan rni a prhuzamossgot, de ezt a programoznak, a
folyamatbra ellltjnak kell megtennie. Az 1.3. bra mutatja be a Fork/Join segtsgvel prhuzamoss tett
msodfok egyenlet megoldt.
Fork

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

1.3. bra. Folyamatbra msodfok egyenlet gykeinek meghatrozsra, Fork/Join primitvekkel


A vezrlsramlsos modell teht szekvencilis programok s egyprocesszoros rendszerek esetn kivl, ezt a
modellt valstja meg (tbbek kztt) a Neumann architektra is, amely a ma hasznlatos szmtgpek tlnyom
tbbsgben a programozi interfsz alapja. Ezekben a szmtgpekben az utastsszmll kpviseli a vezrl
tokent, az utastsok kztti adatcserre szolgl kzs memrit pedig a regiszterek, illetve a rendszermemria
kpviseli.

1.2. Adatramlsos modell


Az adatramlsos modellben a program utastsainak vgrehajtsi sorrendjt nem a programoz, hanem az
utastsok operandusainak rendelkezsre llsa hatrozza meg. Ha egy utasts minden operandusa rendelkezsre
ll, rgtn vgrehajthatv vlik. Mivel a vgrehajts eredmnye esetleg egy vagy tbb msik utasts operandusa,

1.3. IGNYVEZRELT MODELL

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!)

1.3. Ignyvezrelt modell


Az ignyvezrelt informcifeldolgozsi modellben egy utasts akkor hajtdik vgre, ha annak eredmnyre
szksg (igny) van. Emlkeztetl, az eddigi vett informcifeldolgozsi modellek kztt alapvet eltrs van az
utastsok vgrehajtsnak idejt illeten:
vezrlsramlsos modellben: amikor odar a vezrl token (a programoz szabja meg),
adatramlsos modellben: amikor minden operandusa rendelkezsre ll (szorgos kirtkels, eager evaluation),
ignyvezrelt modellben: amikor az utasts eredmnyre szksg van (lusta kirtkels, lasy evaluation).
Ha az adatramlsos modellben a program vgrehajtsa bottom-up szervezs (az inputtl halad az eredmnyig), akkor az ignyvezrelt modellben top-down programvgrehajts trtnik. Els lpsknt a kzvetlenl az
eredmnyhez vezet mveletet kell tekinteni. Ennek a mveletnek lehetnek operandusai, melyek ms mveletek
eredmnyei. Ezutn azt kell megnzni, hogy az eredmnyhez vezet utasts operandusait elllt mveletek
vgrehajtshoz mire van szksg, stb.
A msodfok egyenlet pldjt az 1.5. brn lthatjuk, ignyvezrelt megkzeltsben. A szmts menett
az 1.5. bra brzolja. A kzvetlenl az eredmnyhez vezet utasts az x1. Ennek operandusait a v9 s a v6
adja, teht kezdemnyezni (ignyelni) kell a v9 s a v6 kiszmolst. A v6 egy elemi mvelet, mely kzvetlenl

14

1. FEJEZET. INFORMCIFELDOLGOZSI MODELLEK

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)

kiszmthat, ezzel az x1 egyik operandusa mr rendelkezsre is ll. A v9 kiszmtshoz azonban a v7 s a v5


eredmnyre is szksg van, teht kezdemnyezni (ignyelni) kell ezek kirtkelst. A v7 egy elemi mvelet,
de a v5-hz a v4 eredmnyre van szksg, stb. Az brn szrke szn jelli a mg ki nem rtkelt utastsokat,

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.5. bra. Msodfok egyenlet megold program, ignyvezrelt modellel


piros jelzi, hogy az utasts vgrehajtsa folyamatban van (operandusra vr), a zld pedig a ksz utastsokat jelli.
Az operandusok megltt, akr az adatramlsos pldban, itt is fekete korong jelli.
A mkdsi elvbl kvetkezik, hogy az ignyvezrelt szmtsi modell is tmogatja a prhuzamostsi lehetsgek automatikus feldertst s kiaknzst, hiszen egy utasts vgrehajtshoz a szksges operandusok
ignylse az azokat elllt utastsoktl prhuzamosan trtnhet. A pldn ez tbbszr is megvalsul, pl.
rgtn az els lpsben a v6 kiszmtsa s a v9 vgrehajtsnak kezdemnyezse egyszerre trtnik.
A 80-as vekben tbb ksrleti, tisztn ignyvezrelt mkdsi elv szmtgpet is ptettek. Az ignyvezrelt
szmtgp egy lehetsges megvalstsa nagy szm feldolgoz egysgbl s az azokat sszekt kommunikcis
hlzatbl ll. A feladatot (programot) tetszleges feldolgozegysgnl be lehet adni. A feldolgozegysg a
programot kisebb rszfeladatokra bontja, azokat a szomszdoknak eljuttatja, s megvrja a tlk visszarkez
rszeredmnyeket, melybl vgl az eredmnyt el tudja lltani. A szomszdos csompontok a nekik eljuttatott
rszfeladattal ugyangy jrnak el: mg kisebb darabokra bontjk, amiket az szomszdaiknak tovbbtanak, s
gy tovbb.
Az ignyvezrelt szmtgp sem hozott ttrst, maradt a vezrlsramlsos szervezs egyeduralma. De az
ignyvezrelt szmtsi modell sem tnt el: ez lett a funkcionlis programozsi nyelvek alapja. sszessgben
teht ma a szmtstechnikban mindhrom informcifeldolgozsi modell fontos szerepet jtszik:
A funkcionlis programozsi nyelvek alapja az ignyvezrelt modell,
a processzorok interfsze, utastskszlete a vezrlsramlsos modellen alapul,
a modern processzorok bels felptse azonban adatramlsos modell alapjn kpes (a programoz szmra
lthatatlanul) az utastsok prhuzamos vgrehajtsra.

1.4. Esettanulmny
Ebben a fejezetben egy egyszer algoritmust, a Fibonacci sorozat 100-dik elemnek kiszmtst valstjuk meg
vezrlsramlsos, adatramlsos s ignyvezrelt modellben.

1.4.1. Megolds vezrlsramlsos modellel


Mivel a legjobban elterjedt programozsi nyelvek mind vezrlsramlsos elven mkdnek, valsznleg nem
okoz nehzsget a kvetkez, pszeud-nyelven megfogalmazott program:
(f1,f2) (1,1);
for i=3 to 100 do

16

1. FEJEZET. INFORMCIFELDOLGOZSI MODELLEK


x1

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

(f1,f2) (f2, f1+f2);


end
eredm f2;
Az 1.6. brn lthatjuk, hogy ez a program a vezrlsramlsos modellben milyen folyamatbrnak felel meg.

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

1. FEJEZET. INFORMCIFELDOLGOZSI MODELLEK


i3
(f1,f2) (1,1)

i > 100

eredm f2

N
(f1,f2) (f2,f1+f2)

ii+1

1.6. bra. Fibonacci sorozat szmolsnak algoritmusa, vezrlsramlsos modellben


szmtgpek (mind a szemlyi szmtgpek, mind a szerverek, mind a munkallomsok) kzl sok tartalmaz
hardveres tmogatst tbb vezrl token hasznlathoz, de a Fork s Join mveletek annyira kltsgesek, hogy
kt rtkads prhuzamos elvgzshet nem ri meg alkalmazni ket (mert a Fork s a Join nmagban tovbb
tart mint a kt rtkads egyttvve).

Fork
(f1,f2) (1,1)

i3

Join

i > 100

eredm f2

N
Fork
(f1,f2) (f2,f1+f2)

ii+1

Join

1.7. bra. Fibonacci sorozat szmolsnak algoritmusa, vezrlsramlsos modellben, prhuzamostva

1.4.2. Megolds adatramlsos modellel


Az adatramlsos modellben a program egy precedenciagrf, az utastsok kztti fggsgi viszonyok lersa. Mg
a vezrlsramlsos modell esetn a folyamatbra egy jl elterjedt, egysges jellsrendszer, addig az adatramlsos
elven trtn program lershoz sajnos nem ll rendelkezsre ilyen egysges formalizmus.
Az 1.8. brn a megoldst egy lehetsges adatfolyam alap jellsrendszerben adjuk meg (ez csak egy lehetsg
a sok kzl). Ebben a jellsrendszerben szrke tglalappal jelltk a tnyleges mveleteket vgz utastsokat
(mint a ciklusfelttel kirtkelse, vagy az sszeads), srgval pedig a ler formalizmus rszt kpez elemeket.
A switch elem az els operandusa fggvnyben vagy a true, vagy a false irnyba tovbbtja a msodik
operandust, a Sync pedig az sszes operandust vltozatlanul, egyidejleg tovbbtja, de csak akkor, ha mind
rendelkezsre ll.
A vgrehajts kezdetn az f1-el, s az f2-vel jellt token (zseton) rtkt 1-re lltva, az i token rtkt 3-ra
lltva dobjuk be a rendszerbe. Ezzel a switch elemek msodik operandusa megvan, de a switch-ek mg nem

1.4. ESETTANULMNY

19
i

f2

f1

> 100

Switch
true

Switch
false

true

Switch
false

true

1+

false

eredm

Sync

1.8. bra. Fibonacci sorozat szmolsnak algoritmusa, adatramlsos modellben


hajthatk vgre, hiszen hinyoznak az els operandusok. gy a vgrehajts kezdetekor csak a ciklusfelttelt
kirtkel mvelet hajthat vgre. Ez a mvelet veszi az i tokent, s egy igaz/hamis rtkkel elltott tokent
llt el, melyet eljuttat mindhrom switch-nek. Ezzel mindhrom switch mindkt operandusa rendelkezsre ll,
teht a switch-ek vgrehajtdnak (akr prhuzamosan). Mivel a ciklus elejn vagyunk, a felttel hamis lesz, s a
switch-ek a msodik operandusaikat (rendre f1-et, f2-t, i-t) tovbbtjk az sszeadst vgz mveletek fel. Ezek
egyike a ciklusvltozt nveli, msika pedig az f1+f2 sszeget szmolja ki (akr prhuzamosan). Ezutn a sync
elem bevrja a mveletek eredmnyt, majd a tokeneket visszateszi a bemenetre, de gy, hogy f1 helyre az f2
kerljn, f2 helyre az f1+f2, az i helyre pedig az i+1. Ekkor indulhat a ciklus msodik itercija, s gy tovbb,
egszen addig, mg az sszehasonlts igaz nem lesz.

1.4.3. Megolds ignyvezrelt modellel


Az ignyvezrelt modellben a programot egyetlen sszetett kifejezsknt kell megadni, amely vgrehajts kzben,
a redukcis elvet kvetve, fokozatosan rszkifejezsekre bomlik. A Fibonacci sorozat elemeit kiszmol program
sszetett kifejezsknt val megadsra a legegyszerbb, ha rekurzit alkalmazunk:
eredm = fib (1, 1, 3);
fib (f1, f2, i) = if i > 100 then f2 else fib (f2, f1+f2, i+1);
A program a b fggvny rekurzv dencijbl s annak meghvsbl ll. Az 1.9. bra szemllteti, hogy
vgrehajts kzben hogyan bomlik rszfeladatokra a problma.
A pldban az eredm kiszmolshoz a fib (1, 1, 3)-et kell meghvni, vagyis kezdemnyezni kell a fib
(f1, f2, i) fggvny kirtkelst az f1=1, f2=1, i=3 helyen. A fggvny egy if feltteles szerkezetbl ll,
teht ezen a ponton kell kirtkelni az elgazsi felttelt, majd az egyik gat (ebben a sorrendben, prhuzamostsi
lehetsg itt nincs). Ha az else g kerlt kivlasztsra, akkor a b fggvny rekurzv meghvshoz szksges
az argumentumok (az f1+f2 valamint az i+1) ellltsa. Mivel ezek rtkre ebben a pillanatban merl fel az
igny, ezrt ezeket most kell kirtkelni, de a sorrend mindegy - az f1+f2 s az i+1 kiszmolsa ezrt egymssal
prhuzamosan is trtnhet. Ha megvannak az argumentumok, akkor megtrtnhet a fggvny rekurzv hvsa,
mindaddig, amg a 100-dik lpshez nem rnk.

20

1. FEJEZET. INFORMCIFELDOLGOZSI MODELLEK


eredm
call fib (1, 1, 3)

fib (f1, f2, i)

if

i > 100

then f2 else

call fib (f2,

f1 + f2

i+1

1.9. bra. Fibonacci sorozat szmolsnak algoritmusa, ignyvezrelt modellben

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.

2.1.1. A Neumann architektra alapelemei


A Neumann architektra legnagyobb jtsa eldeihez kpest, hogy a programot nem mechanikus kapcsolsorok
segtsgvel kell belltani, hanem az az adatokkal egytt a memriban van eltrolva. Ezt a megoldst az
motivlta, hogy a mechanikus kapcsolkhoz kpest gy sokkal knnyebben s gyorsabban lehet a programot (az
utastssorozatot) bevinni, megvltoztatni, illetve egyms utn tbb klnbz programot lefuttatni. Emellett
annak, hogy a program s az adatok is egyazon memriban vannak elhelyezve, van mg egy fontos jrulkos
hozadka: lehetv vlik a programot generl programok ksztse, ekkor indult el teht a fordtprogramok
karrierje is.
Egy Neumann architektrj szmtgp 3 f komponensbl ll (2.1. bra):
CPU,
Memria,
Bemeneti/Kimeneti perifrik.
CPU
Perifrik

Akkumultor
Vezrl
egysg

Aritmetikai
logikai
egysg

Memria

2.1. bra. A Neumann architektra


A processzor (CPU) tartalmazza egyrszt a vezrl egysget (control unit), msrszt az aritmetikai-logikai
egysget (arithmetic-logic unit, ALU). Az ALU vgzi a tnyleges szmtsokat: sszead, kivon, szoroz, oszt, logikai
21

22

2. FEJEZET. VEZRLSRAMLSOS ARCHITEKTRK

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.

2.1.2. A von Neumann architektrk szk keresztmetszete


A memria s a CPU egymstl val eltvoltsnak az lett a kvetkezmnye, hogy a CPU s a memria kztti
sszekttets szk keresztmetszett vlt (von Neumann bottleneck). Ahogy a processzorok mind gyorsabb vltak,
az ltaluk generlt memriaforgalom (mely egyarnt ll utastsokbl s adatokbl) is egyre nagyobb vlt. A
CPU sebessgnek nvekedsi temvel sem a memrik sebessge, sem a buszok (sszekttetsek) sebessge
nem tud lpst tartani. A processzor s a memria sebessge kztti egyre nyl ollt elszr memriarsnek
(memory gap) neveztk, az utbbi vekben memriafalnak (memory wall) nevezik (lsd 2.2. bra). A memriafal
miatt, vagyis hogy a memria sebessge tbb nagysgrenddel is elmarad a processzor sebessgtl, a processzor
egyre tbbszr knyszerl megllni, s bevrni a lass memrit. A problma kezelsre ma mr ltalnoss vlt
a cache memria hasznlata.
100000

Teljestmny

10000

1000
Processzor
100

10

1
1980

Memria

1985

1990

1995

2000

2005

2010

2.2. bra. A processzor s a memria sebessgnek fejldse

2.1.3. nmdost programok


Mivel a programot alkot utastsok is ugyanabban a memriban vannak, mint az adatok, elvileg semmi akadlya
annak, hogy a program mdostsa nmagt, vagyis memriamveletek segtsgvel trja az utastsait. Azokat a
programokat, amelyek ezt a technikt alkalmazzk, nmdost programoknak nevezzk. nmdost programok
rvn bizonyos algoritmusokat valamivel rvidebben, kevesebb utastssal le lehet rni, ami egykor, a szks
memriakapacitsok korban lnyeges szempont volt. Mint a kvetkez pldbl is lthat, ez a pr bjtos sprols
a programot rendkvl nehezen olvashatv, karbantarthatatlann teszi. gy ez az egykor elegnsnak szmt
technika ma mr kifejezetten kerlend, nem kvnatos programozi stlus. St, a korszer processzorok lehetv
teszik az opercis rendszer szmra, hogy memriavdelmet alkalmazzon, pldul gy, hogy a futtathat kdot
tartalmaz memriadarabokat csak olvashat jogosultsggal ltja el. Ez egyben a fut programok kdjnak
rosszindulat manipulcijt (bizonyos vrusok tevkenysgt) is lehetetlenn teszi.
Kizrlag demonstrciknt (vletlenl sem kvetend pldaknt!) bemutatunk egy nmdost kdra pl
algoritmust a Fibonacci sorozat N. elemnek kiszmtsra:

2.2. A HARVARD ARCHITEKTRA

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.

2.2. A Harvard architektra


A Harvard architektra a Harvard Mark I szmtgp utn kapta a nevt. Ez a szmtgp lyukkrtyrl olvasta
az utastsokat, az adatokat pedig egy rel kapcsolkbl felpl trban trolta. A Harvard architektra annyiban
klnbzik a Neumann architektrtl, hogy a program (az utastsok) s az adatok trolsa zikailag elklnl
egymstl.

2.2.1. A Harvard architektra felptse s tulajdonsgai


A Harvard architektrj processzorok kt klnll interfsszel rendelkeznek az utastsmemria s az adatmemria fel (2.3. bra).

Utasts
memria

CPU

Adat
memria

2.3. bra. A Harvard architektra


A processzornak a kt memria fel akr teljesen klnbz interfsze is lehet: klnbzhet az adategysg
(szhossz), s az idztsek is. A kt memria akr klnbz technolgij is lehet: pl. az utastsmemria lehet
csak olvashat memria, pl. ROM, vagy EPROM, mg az adatmemria lehet DRAM.
A Neumann architektrban az utastsok s az adatok is ugyanabban a memriban vannak, ezrt adatot s
utastst egyidejleg nem lehet olvasni. Elbb az utastst kell lehvni a memribl, majd ezt kveten az utasts
operandusait. Ezzel szemben a Harvard architektrnak kt memria interfsze van, teht kt memriamveletet is
kpes egyidejleg vgezni, egyet az utastsmemria, egyet pedig az adatmemria fel. Pldul, amg a processzor
lehvja az adatmemribl az aktulis utasts operandusait, addig, ezzel idben tlapoltan, mr tltheti is le az
utastsmemribl a kvetkez utastst. Ezzel a kialaktssal teht nmi gyorsulst lehet elrni.
Harvard architektrt alkalmaz szmos mikrokontroller, valamint jelfeldolgoz processzor (DSP).

24

2. FEJEZET. VEZRLSRAMLSOS ARCHITEKTRK

2.2.2. Mdostott Harvard architektra


A mdostott Harvard architektra annyiban klnbzik a klasszikustl, hogy a program kpes rni s olvasni az
utasts memrit is. Termszetesen ettl ez mg nem lett a Neumann architektrhoz hasonlatos, mert utastst
mg a mdostott Harvard architektrban is csak az utastsmemribl lehet lehvni. Az utastsmemrihoz
val direkt hozzfrshez ltalban kln erre a clra bevezetett utastsok llnak rendelkezsre (pl. LPM (Load
Program Memory) s SPM (Store Program Memory) utastsok az Atmel AVR processzorokban). Ezltal a
mdostott Harvard architektra lehetv teszi, hogy a diszkrl tltsnk be programot, s nmdost programot
is lehet futtatni.
A mdostott Harvard architektra a mikrokontrollerek kzkedvelt architektrja (pl. PIC, Atmel AVR).

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.

3.2. Az utastsok jellemzi


3.2.1. Utastsok felptse
A processzorok mkdsk sorn gpi utastsokat (gpi kdot) hajtanak vgre. Az utastsok a memriban
binrisan kdolva vannak trolva. Egyltaln nem mindegy, hogy az utastsok hogyan vannak lekpezve erre a
binris reprezentcira: az utastsok kdolsakor egyrszt gyelembe kell venni a helytakarkossgi szempontot
25

26

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK

(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.

3.2. AZ UTASTSOK JELLEMZI

27

3.2.3. Cmzsi mdok


Az operandus cmzsi mdja hatrozza meg, hogy egy mvelet operandust hol tallja meg a processzor. Az
operandusok (a Neumann architektrban) alapveten hrom helyen tartzkodhatnak:
magban az utastskdban, a gpi kdba gyazva,
a processzor egy regiszterben,
vagy a memriban.
(Mdostott Harvard architektrban az utasts memria is szba jhet, mint az operandus tartzkodsi helye.)
Mindenesetre azt az informcit, hogy a processzor hol keresse az operandust, gyszintn az utasts gpi
kdjban kell trolni. Teht amikor a processzor beolvas egy gpi kd utastst a memribl, az opcode alapjn
(vagy az utastssz tovbbi bitjeibl) rgtn tudja, hogy pl. az els operandusra milyen cmzsi md vonatkozik.
Ha regiszter a cmzsi md, akkor az Operanduscm1 mezbl (lsd 3.1. bra) ki tudja olvasni, hogy hnyas
szm regiszterben van az operandus. Ha direkt a cmzsi md, akkor az Operanduscm1 mez egy mutatt
tartalmaz az operandus memriabeli elhelyezkedsre, stb.
Az albbi tblzatban felsoroljuk a leggyakrabban elfordul cmzsi mdokat:
Cmzsi md neve

jelentse (plda):

lersa:

Regiszter

R1 R2 + R3

Az operandus egy regiszter.

Kzvetlen konstans

R1 R2 + 42

Az operandus egy konkrt skalr konstans.

Direkt

R1 R2 + MEM[42]

Az operandus a memriban van, cme: 42.

Regiszter indirekt

R1 R2 + MEM[R3]

Az operandus a memriban van, R3 r mutat.

Eltolt indirekt

R1 R2 + MEM[R3+42]

Az operandus a memriban van, cme: R3+42.

Memria indirekt

R1 R2 + MEM[MEM[R3]]

Az operandus a memriban van, cme: MEM[R3].

Indexelt

R1 R2 + MEM[R3+R4]

Az operandus a memriban van, cme: 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.

3.2.4. Elgazsok kezelse


Az elgazsok / vezrlstadsok (branch) sorn az utastsok lineris, egyiket a msik utn trtn letltse megszakad, s a feldolgozs az ugrsi cmen lv utastssal folytatdik tovbb. A kd thelyezhetsgnek rdekben
clszer az utastsszmllhoz relatv cmzst alkalmazni (pl. a JUMP -28 28 bjtot visszaugrik a programban,
attl fggetlenl, hogy a program hol, melyik konkrt memriacmen helyezkedik el). A legtbb utastskszlet
architektra azonban megengedi az abszolt cmzst is (amikor is az ugrsi cm maga a memriacm).
A feltteles ugr utastsok esetn az ugrsi felttel megadsnak mdjban az egyes utastskszlet architektrk eltrek lehetnek. Az albbi hrom megolds terjedt el szlesebb krben:
felttel kdok hasznlata: Ebben az esetben az ugrs a felttelkdok llsnak fggvnyben valsul meg.
Bizonyos aritmetikai mveletek s sszehasonlt utastsok belltjk ezeket a felttelkdokat, az ugr
utastsok pedig a megfelel felttelkd llstl fggen hajtjk vgre az ugrst. Plda:
COMPARE R1, R2
JUMP label IF GREATER

//
//
//
//

a httrben bellnak az sszehasonlts


eredmnyt tkrz felttelkdok
az elbb bellt 'GREATER' felttelkdot
vizsglja

28

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK


felttel regiszterek hasznlata: Az sszehasonlts (teht az ugrsi felttel) eredmnye nem felttelkdokban,
hanem egy regiszterben kerl eltrolsra, egy 0/1 rtk formjban. Az ugr utastsnak ezt az eredmnyregisztert kell odaadni, s ha az nem 0 rtket tartalmaz, akkor megvalsul az ugrs. Plda:
R0 R1 > R2
JUMP label IF R0
sszehasonlt s ugrik mdszer: Az ugrsi felttel kirtkelse nem klnl el az ugr utaststl. Plda:
JUMP label IF R1 > R2

Bizonyos utastskszlet architektrk lehetv teszik gynevezett prediktumok hasznlatt. Ezekben az


architektrkban az utastsokat el lehet ltni egy extra operandussal, a prediktumregiszterrel. A prediktumregiszterek 1 bitesek. Ha az utastshoz kapcsold prediktumregiszter rtke 0, akkor az utastst a processzor
nem hajtja vgre. Plda:
R1 R2 + 32 IF P2
Ebben az esetben a P2 prediktumregiszter rtktl fgg, hogy az sszeads vgrehajtdik-e, vagy sem. A
prediktumregisztereket sszehasonlt mveletekkel lehet belltani:
P2 R3 R5
Ha R3 kisebb vagy egyenl, mint R5, P2 rtke 1 lesz, ellenkez esetben 0.
A prediktumok azrt hasznosak, mert ugrs nlkl teszik lehetv az utastsok feltteles vgrehajtst. A
ksbbiekben ltni fogjuk, mennyire fontos a hatkony vgrehajts szempontjbl, hogy ne szakadjon meg az
utastsok egymsutnisga.

3.2.5. Utastsok kdolsa


A klnbz utastskszlet architektrk kztt abban is klnbsg van, hogy az sszes utastst azonos hosszsg bitsorozatt kdoljk-e, vagy az utastsok hossza vltoz is lehet. Elbbi esetben x hossz, utbbi esetben
vltoz hossz utastskdolsrl beszlnk (3.1. bra).
Fix:

Opcode

Operanduscm1

Operanduscm2

Vltoz:

Opcode

Operanduscm1

Operanduscm2

Operanduscm3
Operanduscmn

3.1. bra. Fix s vltoz utastskdols


A vltoz hossz utastskdols helytakarkosabb, hiszen gy az utastsok tnyleg csak annyi helyet
foglalnak, amennyit szksges, pl. egy 1 operandus mvelet esetn nem kell res, nem rtelmezett mezket is az
utasts rszv tenni. Ugyanakkor az utastslehvs s dekdols szempontjbl a x utastskdols lnyeges
egyszerstst jelent.
A binrisan kdolt utastsokat gpi kdnak nevezzk. Az egyes processzorokat azonban gpi kdban, teht
az egyes utastsokat mveleti kdbl s cmekbl binrisan ellltva nem szoktk programozni. Ha szksg van
a lehet legalacsonyabb szint programot rni, az adott processzor assembly nyelvt alkalmazzk. Az assembly
nyelv sor orientlt. Egy sorban egy gpi utastsnak megfelel assembly nyelv utasts (vagy a fordtnak szl
direktva) ll. Egy assembly nyelv utastst egy nhny bets kulcsszval (mnemonik) adunk meg, amelyet az
utasts operandusai kvetnek (ha vannak). Az assembly nyelv programokat lefordt programot assemblernek
nevezik. Minden egyes utastskszlet architektrhoz ms s ms assembly nyelv s ennek megfelelen ms s
ms assembler tartozik. Egyszer mikrogpes krnyezetben (pl. Z80 vagy 6510 alap gpeknl) az assemblerek a
fordtst tipikusan kt menetben elvgezve egybl a mikrogp memrijba, a kvnt memriaterletre helyeztk
el a gpi kdra lefordtott programot. A PC-s vilgban jelenleg is hasznlatos megoldsok lehetv teszik, hogy a
szoftverfejleszts sorn az alacsony s a magas szint nyelveket keverjk, vagyis program bizonyos rszeit (a nagy
szmtsigny, gyors feldolgozst ignyl feladatokat) assembly-ben, ms rszeit egy magas szint programozsi
nyelven rjunk meg.

3.2. AZ UTASTSOK JELLEMZI

29

Assembly kd

Binrisan kdolt gpi


utastsok

3.2. bra. Fix s vltoz utastskdols


A 3.2. brn kt kpet ltunk a Termintor cm lmbl. A hts (jobb oldali) az assembly programot, az els
(bal oldal) pedig az ehhez tartoz binrisan kdolt gpi utastssorozatot mutatja, mely mr a processzor kzvetlen
bemenete lesz. A Termintor MOS 6502-es processzort hasznl, melyrl az bra alapjn tbb kvetkeztetst
is levonhatunk. A gpi kd trdelse kveti az assembly programot, ami segt neknk szrevenni, hogy ez a
processzor vltoz hosszsg utastskdolst alkalmaz: az els assembly sorhoz tartoz utasts 2 bjtos, a
msodik 3 bjtos, a negyedik egy bjtos, stb. Az assembly kdbl az is jl ltszik, hogy 1 operandusak a mveletek:
az EOR (kizr vagy) pldul az egyetlen operandusa s az A (akkumultor) regiszter kztt vgzi el a mveletet, s
az eredmny az A regiszterbe kerl vissza. A DEY utastsnak pedig egyetlen operandusa sincs, implicit mdon az
Y regisztert cskkenti eggyel. A feltteles elgazsok kezelsre a BPL utasts enged bepillantst: az ugrs akkor
kvetkezik be, ha pozitv volt az elz mvelet eredmnye. Ezt a viselkedst az imnt felttel kdokra alapozott
elgazsbecslsnek neveztk. (rdekessgkpp: ez a processzor a maga korbban teljestmnyben versenykpes
volt az Intel s a Motorola megoldsaival, mikzben az ra azok hatodrsze volt. Sok-sok olcs, npszer gp
plt r, ami nagyban hozzjrult a szmtstechnika elterjedshez. A Termintor egybknt a Nibble magazin
pldaprogramjt futtatja.)
A 3.3., 3.4., 3.5. brn tovbbi pldkat lthatunk az utastsok kdolsra. A hrom bra az x86 utastskszlet
sszead utastsnak (ADD) kdolst mutatja be hrom klnbz cmzsi md hasznlatval. A 3.3. brn egy
regisztercmzst hasznl sszeads, az ADD ECX, EAX, mg a 3.4. brn egy regiszter indirekt cmzst hasznl
alak, az ADD EDI, [EBX] kdolst lthatjuk.
11 =
R/M egy regiszter

1 = 32 bites sszeads

MOD

000000 = ADD

REG
0

R/M
0

EAX kdja

ECX kdja

0 = A REG mezt adjuk az R/M-hez

3.3. bra. Az ADD ECX,EAX utasts kdolsa


Az brkon jl ltszik, hogy mindkt utasts 3-3 bitet hasznl az operandusok forrsnak lersra (az egyik
operandust a REG, a msikat az R/M mez rja le). A 3 bit 8 regiszter kijellst teszi lehetv. Azt, hogy ezek
a regiszterek pontosan mit is jelentenek, a cmzsi md dnti el. Az x86 ADD utastsnak egyik operandusa
ktelezen regiszter cmzssel adand meg, vagyis a REG mezben lv szm azt jelenti, hogy az annyiadik

30

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK

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 = Az R/M mezt adjuk a REG-hez

3.4. bra. Az ADD EDI, [EBX] utasts kdolsa


Ebben a kt pldban teht mindkt utasts 2 bjtos volt, az egyik rtke 01C1h, a msik 033Bh.
A harmadik pldban (3.5. bra) az egyik operandus egy regiszter, a msik egy kzvetlen konstans, ami az
utasts kdjnak rsze. A 32 bites konstanssal egytt ebben az esetben egy 6 bjtos utastst kapunk (rtke
81C3156B6501h), amibl az is ltszik, hogy az x86 egy vltoz hossz utastskdolst alkalmaz architektra.
11 =
R/M egy regiszter

1 = 32 bites sszeads

100000 = ADD skalr

MOD

REG
0

R/M
0

32 bites konstans

ADD skalr EBX kdja


esetn 000

0 = A skalr 32 bites

3.5. bra. Az ADD EBX, 23423765 utasts kdolsa

3.3. Az utastskszlet architektrk jellemzi


3.3.1. Bjtsorrend
Ha egy egsz szm brzolsra n bjtot hasznlunk, akkor a szmhoz tartoz bjtokat a memriban elvileg n!
sorrendben lehetne elhelyezni, de ezek kzl leginkbb csak a kt vgletet szoktk hasznlni: ha a legnagyobb
helyirtk byte (MSB - Most Signicant Byte) van ell (vagyis az alacsonyabb memriacmen), s a tbbiek egyre
cskken helyirtk szerinti sorrendben kvetik, akkor azt felvg (big-endian) sorrendnek nevezzk; ha pedig a
legkisebb helyirtk byte (LSB - Least Signicant Byte) van ell s a tbbiek egyre nvekv helyirtk szerinti
sorrendben kvetik, akkor azt alvg (little-endian) sorrendnek nevezzk. (A byte-sorrend krdst pedig angolul
endianness-nek hvjk. Az angol nyelv elnevezs Jonathan Swift: Guliver utazsai cm knyvbl szrmazik,
melyben kt csoport azrt keveredik hborba, mert nem tudnak megllapodni abban, hogy a lgytojst a kisebbik
vgn (little endian), vagy a nagyobbik vgn (big endian) kell-e feltrni.) Pldul a 0x1A2B3C4D hexadecimlis
szmot big-endian bjtsorrend szerint a memriban gy kell eltrolni, hogy az egyms utni memriacmekre
sorban az 0x1A, 0x2B, 0x3C s 0x4D bjtok kerljnek. Little endian esetn ezek a bjtok pont fordtott sorrendben
kerlnek a memriba, vagyis a sorrend 0x4D, 0x3C, 0x2B s 0x1A.
Az egyes CPU architektrk az egyiket vagy msikat, esetleg tkapcsolhat mdon mindkettt tmogatjk
(bi-endian). Big-endian sorrendet hasznl utastskszlet architektrk a Motorola 6800 s 68000; IBM POWER,
System/360, z/Architecture; HP PA-RISC s eredetileg a SUN SPARC. Little-endian sorrendet hasznl az Intel x86
(belertve x86-64 is), a MOS Technology 6502 (teht a Termintor is), 6510; Zilog Z80; DEC PDP-11, VAX.
Pldk bi-endian sorrendet hasznl utastskszlet architektrra (nmelyik szoftverbl, akr mkds
kzben is tud vltani, bizonyos rendszerekben pedig alaplapi hardver bellts dnti el a byte-sorrendet): ARM
Holdings ARM, IBM-Intel-Motorola PowerPC; DEC Alpha; SUN/Oracle SPARC v9; MIPS Technologies MIPS; Intel
IA-64.

3.3. AZ UTASTSKSZLET ARCHITEKTRK JELLEMZI

31

3.3.2. Perifriakezel utastsok


Egy processzor szmra ktfle lehetsg van a perifrik cmzsre. A CPU vagy egyetlen cmteret hasznl a
memria s a perifrik elrsre, vagy kt kln cmteret. Az els esetben memrira lekpzett perifriakezelsrl
(memory mapped I/O), a msodik esetben kln I/O utastsok hasznlatrl (port I/O, port mapped I/O) beszlnk.
A kln I/O utastsok esetben a processzor utastskszletben kln I/O kezel utastsok llnak rendelkezsre, melyekkel egy adott cm perifrirl adatot lehet beolvasni, illetve oda adatot lehet kldeni (tipikusan: IN a
perifrirl val bevitelre s OUT a perifrira val kirsra). A perifria beviteli/kiviteli utastsokban a perifrik
megcmzsre tipikusan jval kevesebb cmzsi md hasznlhat, mint a memria olvas/r utastsokban a
memria megcmzsre.
Memrira lekpzett perifriakezelsnl a perifrik cmei a memria cmtartomnynak rszei. Ez azt jelenti,
hogy egyes memriacmek mgtt igazbl perifrik llnak, az ezekre a cmekre trtn rs/olvass mveletek
a perifrikra vonatkoznak. Memrira lekpzett perifriakezelst megvalst utastskszlet architektrkban
ennlfogva nincsenek is kln perifriakezel utastsok, a perifrikkal val kommunikcira a memria
rs/olvass mveleteket kell hasznlni.

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.

3.3.4. RISC vs. CISC


A processzorok tervezsnek s gyrtsnak peremfeltteleit, clfggvnyeit mindig dnten befolysolja az aktulis technolgiai s gazdasgi krnyezet. Az 1970-es vek elejn a flvezet technolgia lehetv tette az egyetlen
ramkri tokbl ll processzorok, a mikroprocesszorok gyrtst. A 70-es vekben az jabb mikroprocesszorok
egyre nagyobb szm, egyre sszetettebb funkcit megvalst utastssal rendelkeztek. Ez tbb szempontbl is
elnys volt:
A memrinak a CPU-hoz kpest alacsony mkdsi sebessge miatt. Ha a program sszetett utastsbl
ll, akkor a program kevesebb utastssal rhat le, teht kevesebbszer kell a lass memrihoz fordulni
a program futsa sorn. (Egyetlen lass memriamvelettel lehvott utastssal a gyors processzor tbb
munkhoz jut.)
A memria (st a httrtrak) magas ra miatt. Ha a program sszetett utastsbl ll, akkor a program
kevesebb utastssal rhat le, teht kevesebbet foglal a drga memribl s httrtrbl.
A fordtk akkori technolgija s futsi sebessge szempontjbl elnys volt a magas szint programozsi
nyelvek s az assembly nyelv kztti szemantikus rs cskkentse az egyre bonyolultabb gpi utastsok
bevezetsvel. (Teht knnyebb fordt programot kszteni, ha a processzor utastskszlete kzel van a
magas szint programnyelv utastskszlethez.)
Utlag ennek, az sszetett utastsokat alkalmaz stratginak az eredmnyeknt ltrejtt processzorokat
hasznl gpeket komplex utastskszlet szmtgpnek, azaz CISC-nek (Complex Instruction Set Computer)
neveztk el. A CISC szmtgpek jellemzi:
Knyelmes, sszetett mveletek, tipikusan regiszter-memria utastsok (a mveletek egyik operandusa
regiszter, a msik egy memriabeli objektum lehet). Plda: R1 R2 + MEM[42] (ebben az a knyelem,
hogy nem kell a MEM[42]-bl kln beolvasni az adatot, egyetlen utasts elvgzi az adat beolvasst s az
sszeadst is).
Sokfle utastssal is el lehet rni ugyanazt a hatst (redundancia).
Sokfle cmzsi md.
Vltozatos utastshossz.

32

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK


Az utastsok vgrehajtsi ideje vltozatos: vannak gyorsan s lassan vgrehajthat utastsok.

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.

3.4. PLDK UTASTSKSZLET ARCHITEKTRKRA

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.

3.3.5. Nhny rdekes utastskszlet


rdekessgknt megemltjk, hogy a CISC/RISC rvidtsek mintjra ltezik mg nhny utastskszletmegnevezs:
MISC: Minimal Istruction Set Computer - Itt tnylegesen nagyon alacsony szm utastsrl van sz. A
CPU a mveletek operandusait tipikusan a verembl veszi, s az eredmnyt is oda helyezi el. Ez a mkds
a Forth magas szint programozsi nyelvhez illeszkedik.
OISC: One Istruction Set Computer - Egyetlen megfelelen vlasztott sszetett utasts (pldul kivons
s ugrs, ha az eredmny negatv) segtsgvel fel lehet pteni a szoksos utastskszletekben szerepl
alapvet utastsfajtkat.
NISC: No Instruction Set Computer - Ennek az architektrnak nincsenek a klasszikus rtelemben vett
gpi szint utastsai, hanem a fordt n. nanokdot generl (a neve azt fejezi ki, hogy mikrokdnl is
alacsonyabb szint), ami kzvetlenl vezrli a processzor egyes erforrsait.
ZISC: Zero Instruction Set Computer - Ez az informcivezrelt informcifeldolgozsi modellnek felel
meg. Az alaptlete a mestersges neurlis hlzatokbl szrmazik. Nagy szm fggetlen cella egymssal
prhuzamosan mintaillesztst hajt vgre: egy bemen vektort hasonlt ssze a sajt trolt vektorval s
jelzi, hogy illeszkedett-e.

3.4. Pldk utastskszlet architektrkra


Az albbiakban bemutatjuk nhny fontosabb utastskszlet architektra rvid trtnett s fbb tulajdonsgait.
Ezek az architektrk a tovbbi fejezetekben rendszeresen vissza fognak trni, segtsgkkel demonstrljuk, hogy
a bemutatott elveket a gyakorlatban implementlt, kereskedelmi forgalomban kaphat (vagy rgebben kaphat
volt) processzorok hogyan alkalmazzk. Nhny ma is l utastskszlet architektra:
Az x86 architektra. Ezt vesszk elre, mert a legtbb ember a szmtgpeket az x86 architektrn keresztl
ismeri meg. Az x86 architektra karrierje 1978-ban indult, az Intel 8086-os processzorral. A sikert az 1981-ben
megjelent IBM PC hozta meg, mely az Intel 8088-as processzorra plt. Abban az idben nem ppen ez volt a
legfejlettebb, leggyorsabb, legnagyobb perspektvt knl vlaszts, de a dntsben nem csak mrnki szempontok
jtszottak szerepet. Az IBM PC risi sikert aratott, ami magnak az Intelnek is fejfjst okozott: a nem ppen
elegns megoldsokat felvonultat, a 8 bites mikroprocesszorok hagyatkra pt x86-ot tbbszr megprbltk
kivltani modernebb megoldsokkal, sikertelenl (iAPX432, Intel 960, Intel 860, Itanium - ez utbbi a szerverek
szegmensgen tbb-kevsb hossz tvon is letkpes lett). A hatalmas szmban eladott IBM PC-nek, s az arra
rt sok-sok szoftvernek ksznheten az Intel minden, kompatibilitst megszakt prblkozsa kudarcba fulladt.
Az architektra idkzben sokat fejldtt: megjelent a 32 bites, majd a 64 bites kiterjeszts, s idvel megjelentek
a modern, szuperskalr, sorrenden kvli vgrehajtst (lsd ksbbi fejezetek) alkalmaz megvalstsok is, nem
csak az Intel, hanem tbb ms gyrt rszrl. Az x86 lassan a nagy teljestmny munkallomsokban s
szerverekben is teret nyert, mostanban pedig az alacsony fogyasztsi ignyeket tmaszt mobil eszkzk piact
vette clba. Az 1978 ta tart kompatibilitsi knyszer ezt a fajta rugalmassgot megnehezti, de pont az ezid
alatt keletkezett rengeteg szoftver s fejleszti tapasztalat jrul hozz az x86 architektra terjedshez. Az Intel a
bevtelekbl hatalmas flvezet-ipari beruhzsokat hajtott vgre, aminek ksznheten tbb, mint 1 genercis
gyrtstechnolgiai elnye van minden versenytrsval szemben. A fejlett gyrtstechnolgia lehetv teszi,
hogy az esetleg kevsb innovatv termkeket is a konkurencinl jobb mszaki paramterekkel s kedvezbb
ron lltsa el.

34

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK

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

3.4. PLDK UTASTSKSZLET ARCHITEKTRKRA

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

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK


x86

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:

Vltoz (1-17 byte)

Fix (4 byte)

Fix/vltoz (4 byte - tm.)

Fix (4 byte)

Felt. ugrsok kezelse:

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:

Vltoz (2-22 byte)

Fix (4 byte)

Fix (4 byte)

Fix (16 byte)

Felt. ugrsok kezelse:

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

for (i=0; i<n; i++) {


f = a + b;
a = b;
b = f;
}
printf ("%d
n", f);
}
A programbl az LLVM fordtsi krnyezet eszkzeivel elszr egy platform- s nyelvfggetlen bjt-kdot1 ,
majd a bjt-kdbl msodik lpsben assembly programot lltunk el2 .

3.5.1. Megvalsts x86 architektrn


A fenti egyszer C programbl optimalizls nlkl az albbi assembly kdot kapjuk (csak a ciklusra vonatkoz
rszt vizsgljuk, a scanf s printf hvsokat valamint a fggvny kezdetekor s a vgn vgzett klnfle jrulkos
mveleteket a knnyebb ttekinthetsg rdekben eltvoltottuk):
mov DWORD PTR [ESP
jmp .LBB0_1
.LBB0_2:
mov EAX, DWORD PTR
add EAX, DWORD PTR
mov DWORD PTR [ESP
mov EAX, DWORD PTR
mov DWORD PTR [ESP
mov EAX, DWORD PTR
mov DWORD PTR [ESP
inc DWORD PTR [ESP
.LBB0_1:
mov EAX, DWORD PTR
cmp EAX, DWORD PTR
jl .LBB0_2

+ 36], 0
[ESP +
[ESP +
+ 20],
[ESP +
+ 28],
[ESP +
+ 24],
+ 36]

; a ciklusvltoz 0-ba lltsa


; rgtn ugrunk a ciklusfelttel kirtkelshez

28]
24]
EAX
24]
EAX
20]
EAX

; EAX-be olvassuk a-t


; hozzadjuk a b-t
; az eredmnyt f-be rjuk
; EAX-be olvassuk b-t,
; ... majd berjuk a-ba
; EAX-be olvassuk f-et,
; ... majd berjuk b-be
;
; a ciklusfelttel kirtkelse
; EAX-ba tesszk a ciklusvltozt
; sszehasonltjuk n-el
; ha kisebb, a ciklus megy mg egy krt, ugrunk

[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

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK


; A ciklusvltoz nullzsa -> gy gyorsabb
; f-be tesszk az a vltozt
; f-hez hozzadjuk a b vltozt
; a-be tesszk b rtkt
; b-be tesszk f rtkt
; nveljk a ciklusvltozt
; sszehasonltjuk n-el
; ha kisebb, ugrunk a ciklusmag elejre

A vltozk regiszterekhez rendelse a kd rtelmezse utn knnyen kitallhat, azt az albbi tblzat
tartalmazza.
Vltoz:
Regiszter:

EDX

EAX

EDI

ECX

ESI

Az optimalizlt kdon is ltszanak a ktoperandus mveletek s a felttelkdra alapozott elgazs, azonban


memriareferens utastsokra most nem volt szksg.

3.5.2. Megvalsts ARM architektrn


Ha ARM architektrra fordtunk, optimalizls nlkl az albbi assembly programot kapjuk.
mov r4, #0
str r4, [sp, #16]
b
.LBB0_2
.LBB0_1:
ldmib sp, {r0, r1}
add r0, r1, r0
str r0, [sp]
ldr r1, [sp, #4]
str r1, [sp, #8]
ldr r2, [sp]
str r2, [sp, #4]
ldr r1, [sp, #16]
add r0, r1, #1
str r0, [sp, #16]
.LBB0_2:
ldr r0, [sp, #12]
ldr r1, [sp, #16]
cmp r1, r0
blt .LBB0_1

; Kinullzzuk az r4-et,
; ... majd a ciklusvltozba rjuk
; felttel nlkl ugrunk a ciklusfelttel kirtkelsre
;
;
;
;
;
;
;
;
;
;

a s b vltoz betltse r0-ba s r1-be, egy lpsben!


...elvgezzk az sszeadst (a+b)
...az eredmnyt f-be rjuk
beolvassuk b-t
...berjuk a-ba
beolvassuk f-et
...berjuk b-be
kiolvassuk i rtkt
...hozzadunk 1-et
...visszarjuk a megnvelt rtket

;
;
;
;

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

Ez a kd rdekes mdon mg az x86 kdjnl is tmrebbre sikerlt, ami elssorban a hromoperandus


sszeadsnak ksznhet (az f=a+b C programsorhoz x86-ban 2, ARM-ban 1 utasts kell). A vltozk s
regiszterek sszerendelst az albbi tblzat adja meg.
Vltoz:

Regiszter:

r3

r12

r0

r2

r1

3.5.3. Megvalsts PowerPC architektrn


A 32-bites PowerPC utastskszlethez (PPC32) tartoz optimalizlt assembly kd lnyegt tekintve elg kzel ll
az ARM kdhoz.
li
.LBB0_2:
add
mr
mr
addi
cmpw
blt

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

A vltozkat a fordt az albbi regiszterekhez rendelte:


Vltoz:

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.

3.5.4. Megvalsts Alpha architektrn


Az optimalizlt Alpha kd is tipikus RISC tulajdonsgokkal br.
mov
$BB0_2:
addq
mov
mov

$31,$2

; ciklusvltoz nullzsa

$3,$1,$4
$1,$3
$4,$1

; f = a + b
; a = b
; b = f

40

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK


addl
cmplt
bne

$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

A regiszterek s a loklis vltozk kapcsolata:


Vltoz:
Regiszter:

$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

9. Mi motivlta a CISC tervezsi stratgit?


10. Sorolja fel a CISC szmtgpek jellemzit!
11. Sorolja fel a RISC szmtgpek jellemzit!
12. Mi az elnye a CISC s a RISC tervezsi stratginak?

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

3. FEJEZET. UTASTSKSZLET ARCHITEKTRK

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

kb. 200 KByte/sec

Grakus megjelent:

Humn

Kimeneti

kb. 500 MByte/sec

Ethernet hlzati interfsz:

Gp

Ki/Be

kb. 12.5 MByte/sec

Diszk (HDD:

Gp

Ki/Be

kb. 50 MByte/sec

GPS:

Gp

Bemeneti

kb. 100 byte/sec

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.

4.2. Program ltal kezdemnyezett kommunikci


A memria fel a processzor a memriabuszon keresztl kommunikl. Ha a processzor olvasni vagy rni szeretne
a memribl, kiteszi a buszra a cmet, s beolvassa a buszrl a memria ltal erre vlaszknt rtett adatot (olvass
esetn). rsi mvelet esetn a memriacmmel egytt az adatot is a buszra teszi, aminek hatsra a memria a
kvnt cmre berja az adatot.
A perifriakezels is ehhez hasonlan zajlik. Ha a fut programbl meg akarunk szltani egy perifrit,
akkor annak kell, hogy legyen cme, amivel hivatkozhatunk r. A processzor megcmzi azt a perifrit, amellyel
kommuniklni kvnunk, majd kiteszi, vagy elveszi az adatot attl fggen, hogy rsi vagy olvassi mveletrl
van-e sz.
Annak fggvnyben, hogy a memriatartalom cmzse s a perifrik cmzse mennyire klnl el egymstl,
kt esetet klnbztetnk meg, ezek pedig:
a kln I/O cmtartomnyt hasznl perifriakezels,
a memrira lekpzett perifriakezels.
A bvebb trgyals eltt fontos megjegyezni, hogy egy perifrinak tbb cme is lehet, kln cmet szoks
rendelni a sttusz lekrdezshez, a parancsok kldshez, az adatok kiolvasshoz illetve kldshez. A rgi,
hagyomnyos (PS/2 csatlakozval elltott) PC-s billentyzethez pldul 2 cm tartozik: a 0x64-es cmrl olvasva
megkapjuk a sttuszt (pl. volt-e lets), ugyanerre a cmre rva parancsot adhatunk (pl. Caps Lock belltsa); a
msik, 0x60-as cmrl pedig a lenyomott billenty kdjt lehet lekrdezni.

4.2.1. Kln I/O cmtartomnyt hasznl perifriakezels


Szmos utastskszlet architektra 2 fggetlen cmteret hasznl: egyiket a memria, a msikat pedig a perifrik
cmzsre. Mindkt cmtr 0-val kezddik, de nem felttlenl ugyanott r vget (az x86 processzorok 32 bites
tagjainl a memriacmek 32, a perifriacmek 16 bitesek). Ennek kvetkeztben pldul a 0x60-as cm memriacm
s perifriacm is egyszerre. Azt, hogy egy programbl kiadott cm a memrira, vagy a perifrikra vonatkozik-e,
az hatrozza meg, hogy milyen utastst hasznlunk az adattvitelre. A kln I/O cmtartomnyt hasznl
processzorok ugyanis kln utastskszlettel rendelkeznek a perifrikkal trtn adatcserre, s a memria
elrsre.
Ha a 0x60-as perifriacmrl szeretnnk az R0 regiszterbe olvasni (a lenyomott billenty kdjt), akkor azt
az R0 IO[0x60], utastssal tehetjk meg, mg a memria 0x60-as cmrl az R0 MEM[0x60] utastssal
olvashatjuk be az adatot. Ezek kln utastsok, kln gpi kd tartozik hozzjuk.
A processzor s a perifrik sszektsre kt lehetsg addik.
1. A memria s a perifriamveletekre szeparlt busz ll rendelkezsre. Ebben az esetben a processzor kt
zikailag is klnll busszal rendelkezik, az egyiken kizrlag a memrival, a msikon csak a perifrikkal
kommunikl (4.1. bra).
I/O busz

Memria busz

Perifria

Perifria

CPU

Memria

Perifria

4.1. bra. Szeparlt I/O s memriabusz

4.2. PROGRAM LTAL KEZDEMNYEZETT KOMMUNIKCI

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

4.2. bra. Kln I/O cmtartomny hasznlata multiplexlt busszal

4.2.2. Memrira lekpzett perifriakezels


Nhny digitlis alkatrsszel (kompartorokkal, kapukkal, stb.) egyszeren megoldhat, hogy egyes kitntetett
memriacmekre kezdemnyezett adattviteli krsekre ne a memria, hanem egy perifria vlaszoljon. pthetnk
pldul a processzor mell egy egyszer logikai hlzatot, amely a 0x60 cm megjelensekor letiltja a memrit,
s kijelli a billentyzetet adattvitelre. A program ilyen esetben a memriakezel utastsokkal tud a perifrival
kommuniklni. C nyelven a
char* p = 0x60;
int x = *p;
utastsok hatsra a 0x60-as memriacmrl az x vltozba olvasunk adatot. Ha ezt a cmet az imnt trgyalt
hardver elemekkel a billentyzethez rendeltk, akkor x-be a beolvasott bjt nem a memribl, hanem a billentyzettl fog rkezni.
ltalnossgban elmondhat, hogy memrira lekpzett perifriakezels esetn a memria cmtartomny
egy rsze a perifrikhoz van rendelve, az arra vonatkoz memriamveleteket a perifrik vlaszoljk meg.
Ennek a megoldsnak az a htultje, hogy a perifrik szmra fenntartott cmeken a memria tartalma nem
elrhet, vagyis a memria teljes adattrolsi kapacitsa valamivel kisebb. A megolds elnye, hogy a processzorok
jellemzen sokkal tbb s rugalmasabb memriakezel utastssal rendelkeznek, mint perifriakezel utastssal.
Memrira lekpzett perifriakezels szempontjbl a processzorokat kt csoportra oszthatjuk.
Vannak processzorok, melyek kizrlag gy kpesek a perifrikkal kommuniklni, mivel egyltaln nincsenek perifriakezel utastsaik, s ennlfogva perifria cmtartomnyuk sem (kln busz sincs, 4.3. bra).
Ebbe a csoportba tartozik az sszes RISC processor, ARM, SPARC, POWER, stb.
Vannak olyan processzorok is, melyek rendelkeznek kln perifriakezel utastsokkal, s perifria
cmtrrel is, ez azonban nem zrja ki, hogy egyes perifrikat memrira lekpezve kezeljenek. Ilyen az x86
architektra is.

Memria
Perifria

Perifria

Perifria

CPU

4.3. bra. Kzs busz a perifrik s a memria szmra

48

4. FEJEZET. PERIFRIAKEZELS

4.3. Perifria ltal kezdemnyezett kommunikci


Az elz fejezetben lttuk, hogy a fut program milyen egyszeren kpes egy perifrinak adatot kldeni, illetve
attl adatot beolvasni. Szmos helyzetben azonban clszer lehetsget biztostani a perifria szmra is, hogy
kzlendjt a lehet leghamarabb jelezhesse, ne kelljen megvrnia, amg a fut program az llapott lekrdezi. A
billentyzetes pldnl maradva, j lenne, ha nllan tudn jelezni a billentyzetlets bekvetkeztt, s nem
kellene folyamatos sttusz lekrdezsekkel lasstani a program futst.
Ilyen helyzetekre val a megszaktskezels (interrupt).

4.3.1. A megszaktsok mkdse


Szinte minden processzor rendelkezik interrupt lbbal, melyre (durvn leegyszerstve) rkthet a perifria
megfelel jelzse. Amikor a perifria jelez, a processzor rzkeli a megszaktskrst, befejezi az aktulis utasts
vgrehajtst, elmenti az llapott (regisztereket, utastsszmllt), majd egy ugrst hajt vgre a megszaktskezel szubrutinra. Ez a szubrutin elveszi a perifritl az adatot, majd a processzor llapotnak visszalltsa utn
a program ott folytatdik, ahol megszakadt. A processzornak csak annyi gyelmet kell a perifrira fordtania,
amennyit az adatok tvtele kvn, ha a perifria nem tevkeny, akkor semennyit.
A megszaktskezel szubrutint a processzor a memria egy elre denilt cmn keresi, s az opercis
rendszer feladata, hogy a rendszer indulsakor a szksges utastssorozatot erre a bizonyos cmre helyezze.

4.3.2. Vektoros megszaktskezels


A gondot az jelenti, hogy tipikusan sokkal tbb a perifria (s az ltaluk a processzornak sznt jelzs), mint ahny
interrupt lba van a processzornak. Nem ritka, hogy egy processzornak csak egy, vagy esetleg kett interrupt
bemenete van (x86 s ARM). Ilyenkor az sszes interrupt forrst a rendelkezsre ll nhny (a tovbbiakban
legyen egyetlenegy) interrupt lbra kell ktni.
Ez a megolds tbb krdst is felvet: ha minden jelzs egyetlen pontba fut be, akkor a processzor honnan
tudja, hogy melyik perifria jelzett? s vajon mi trtnik, ha tbb perifria is pont egyszerre kr megszaktst?
Hrom elterjedt mdszert mutatunk be a krdsek megvlaszolsra.
1. Polling: a processzoron fut program az megszaktskrs berkezsekor minden egyes perifrit krbekrdez, hogy onnan szrmazott-e az interrupt. Sok perifria esetn ez nyilvn eltarthat egy ideig. Vegyk
szre, hogy a krbekrdezs sorrendje egyben a megszaktsok prioritst is meghatrozza: ha tbben
krtek megszaktst egyszerre, akkor a program azt kezeli le hamarabb, amelyikrl hamarabb szerzett
tudomst.
2. Daisy chaining: a processzor az interrupt krs berkezsekor rnz az adatsnre, s az ott tallt azonostbl tudja, hogy melyik perifria jelzett. Ezt tbbek kztt a 4.4. brn lthat mdon lehet megvalstani.
A jelezni kvn perifria az ignyt a processzor INTR lbn jelenti be. A processzor ennek hatsra kiadja
az INTA jelet, amit a sorba kttt perifrik kzl az els megkap. Ha nem az generlta a megszaktst,
akkor ezt a jelet tovbbadja kvetkeznek, amely ugyangy jr el. Amikor az INTA az interruptot generl
perifrihoz r, az az adatbuszra helyezi az azonostjt, s az INTA jelet nem is adja mr tovbb (4.4. bra).
A processzor az adatsnen tallt azonostbl tudni fogja, hogy melyik interrupt kezel szubrutint kell
meghvnia. (Azt a tblzatot, melyben az egyes azonostkhoz rendelt meghvand fggvny mutatk
tallhatk, interrupt vektor tblnak nevezik.)
REQ

REQ

Perifria
AckIN

CPU

OUT

REQ

Perifria
AckIN

OUT

REQ

Perifria
AckIN

OUT

Perifria
AckIN

INTA
INTR

Adatsn

4.4. bra. Interrupt alap perifriakezels daisy chain-el

OUT

4.3. PERIFRIA LTAL KEZDEMNYEZETT KOMMUNIKCI

49

A daisy chain-ben a perifrik sorrendje a prioritst is meghatrozza. Ha egyidejleg tbben is jelezni


akartak a processzor fel, a sorban elbbre ll kapja meg elbb a jogot ahhoz, hogy az azonostjt a buszra
tegye, s gy kiszolglst kapjon. A daisy chain-t nagyon egyszer megvalstani s bvteni, de a priorits
kttt, s ha sok a perifria, a sor vgn llk ritkn jutnak kiszolglshoz.
3. Interrupt vezrl hasznlata (PIC: Programmable Interrupt Controller): az interrupt vezrlhz tbb
perifria interrupt krseit is hozz lehet ktni. Az interrupt vezrlben el vannak trolva az egyes
bemenetekre kttt perifrik azonosti. Amikor az egyik perifria jelez, az interrupt vezrl szl a
processzornak (INTR), majd az adatsnre helyezi a krst indtvnyoz perifria azonostjt (4.5. bra).

INTA

CPU

INTR

Perifria

Perifria

Perifria

REQ

REQ

REQ

PIC

Adatsn

4.5. bra. Interrupt alap perifriakezels interrupt vezrlvel


Egyidej interrupt krsek esetn az interrupt vezrl a daisy chain-nl kinomultabb priorits kezelst is
alkalmazhat (pl. krbenforg: mindig a legutbb kiszolgltnak a legkisebb a prioritsa). gy mkdik a
megszaktskezels az x86 architektrban is.
(Az ARM architektrban is hasonl megoldst alkalmaznak, de ott a PIC nem adja t rgtn az rintett
perifria azonostjt a processzornak, azt a megszaktskezel szubrutin perifriakezel utastsokkal
krdezheti le a PIC-tl. Az elv ugyanaz.)

4.3.3. Megszaktskezels tbbprocesszoros rendszerben


Tbbprocesszoros rendszerekben felmerl a krds, hogy az megszakts krseket melyik processzor dolgozza
fel. Az egyik lehetsges megolds, hogy minden egyes megszakts egyetlen processzorhoz fut be (jellemzen
ahhoz, amelyik a rendszerindtsrt is felels). Az ilyen rendszer azonban nem sklzhat, hiszen hiba van tbb
processzorunk, ha a feldolgozhat megszaktsok szmnak egyetlen processzor teherbrsa szab hatrt.
Ezrt a tbbprocesszoros rendszerekben a megszaktsok feldolgozsa kt lpsben trtnik:
A perifrik fell berkez megszaktsok elszr egy megszaktseloszthoz futnak be. A megszaktseloszt
feladata, hogy a megszaktsokat a processzorok kztt sztossza (interrupt routing). Azt, hogy melyik
megszakts melyik processzorhoz kerljn, az opercis rendszer hatrozza meg, amikor a rendszer
indtsakor felkongurlja a megszaktselosztt. Pl. be lehet gy lltani, hogy a diszkek megszaktskrst
az egyik, a beviteli eszkzkt egy msik processzor szolglja ki, de ltalban lehetsg van arra is, hogy
krben forg elven a berkez megszakts mindig a soron kvetkez processzorhoz kerljn.
Minden processzor rendelkezik egy sajt, loklis megszakts vezrlvel. Ide futnak be az interrupt eloszttl kapott megszakts krsek, de bizonyos perifrik az interrupt eloszt megkerlsvel kzvetlenl
ezen jelezhetnek megszaktst. A loklis megszakts vezrlnek mg egy fontos szerepe van: segtsgvel a rendszer processzorai megszaktst krhetnek egymstl, lehetsget teremtve a processzorokon
prhuzamosan fut programok kztt kommunikcira.
Ilyen ktlpses megoldst hasznl az Intel APIC (a PC-kben) s az ARM GIC interrupt vezrlje (a mobil
eszkzkben).

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.1. tblzat. Hlzati adapterek megszaktsterhelse teljes sebessg hlzati forgalommal

4.3.4. A megszaktskezels elnyei s htrnyai


Az eddig lertak alapjn a megszaktsok tmogatst s hasznlatt hasznos techniknak knyvelhetjk el, hiszen
cskkenti a processzor terhelst azltal, hogy az lland (s idtrabl) lekrdezgetsek helyett a perifria maga is
tudja jelezni a fontos esemnyeket.
Elfordulhat azonban, hogy a megszaktskrsek olyan gyors egymsutnjban rkeznek, hogy azzal a
processzor mr nem br. Ha a processzor az rajelciklusainak tl nagy hnyadt fordtja interrupt feldolgozsra, a
fut program tl sokszor szakad meg, s lassan fog futni. Vannak biztonsgkritikus alkalmazsok, melyekben ez
nem engedhet meg. Az els holdra szlls alkalmval, 1969-ben, a radar egysgbl rkez adatok radata miatt az
Apollo 11 holdraszll egysgnek manverezsrt felels processzora is interrupt tlterhelsnek esett ldozatul.
A norml feladatok vgrehajtsa (az egysg irnytsa) a processzorid 85%-t vitte el, a bekapcsolva felejtett radar
megszaktsai 13%-ot, az rhajsok ltal 5 perccel a leszlls eltt kiadott tvolsglekrdezs pedig 10%-ot ignyelt
volna, de ez mr meghaladta a 100%-ot. Szerencsre a szmtgp nagyon jl fel volt ksztve ilyen esetekre,
s az alapfunkci (irnyts) szmra biztostotta a prioritst, annak az rn is, hogy sok megszaktskrst
feldolgozatlanul eldobott.
Taln a legnagyobb mennyisg megszaktst a hlzati eszkzk generljk, minden berkezett csomagot
jeleznek. A 4.1. tblzatban a maximlis sebessg hlzati forgalom mellett msodpercenknt kivltott interruptok szmt lthatjuk. A kzps oszlop vonatkozik a norml esetre, amikor hagyomnyos internet csomagokat
(1500 bjt) szllt a hlzat. Egy meghibsodott, vagy rosszindulat hlzati szerepl azonban teljes intenzitssal
kldzgetheti az Ethernet ltal megengedett legkisebb csomagokat (64 bjt), ezzel sokkal tbb megszaktst kivltva. Gigabit Ethernet esetn ez kzel 1.5MHz interrupt frekvencit jelent. Ha csak 1000 rajelbe telik lekezelni
minden megszaktst, akkor is 1.5GHz rajelet vesz el a processzortl pusztn a hlzati forgalom feldolgozsa!
A megszaktsok ltal okozott terhelssel teht foglalkozni kell. A terhels cskkentsre alkalmas lehetsgek:
A megszaktskezel szubrutinnak olyan rvidnek kell lennie, amennyire csak lehetsges.
Az interrupt rtt egy biztonsgkritikus rendszerben clszer maximlni (a megengedett maximlison fell
rkez megszaktsok eldobsval).
A hlzati eszkzk gyakran interrupt modercit alkalmaznak, ami azt jelenti, hogy az eszkz nem minden
hlzati csomag rkezsekor generl megszaktst, hanem tbb esemnyt sszevr, s ezek feldolgozst
egyetlen interrupt jelzssel kri a processzortl.
A fut program kritikus szakaszaiban clszer lehet a megszaktsokat letiltani.

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

rvnyes adat van

tmeneti
trol

Adatsn

Perifria

4.6. bra. Egyoldali feltteles adattvitel


Az bra pldjban, ha a perifrinak ksz adata van, azt az tmeneti trolban helyezi el, mikzben az
llapotregisztert 1-be billenti (rvnyes adat van). Az llapotregisztert a CPU ellenrizni tudja (Perifria ksz),
ha 1-es llsban tallja, az tmeneti trolbl ki tudja olvasni a perifria ltal odatett adatot, ezzel egy idben
az llapot regisztert 0-ba lltja (Adat beolvasva). Ebben a pldban a perifria nem kpes az llapotregisztert

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

rvnyes adat van

Adatsn

tmeneti
trol

Perifria

4.7. bra. Ktoldali feltteles adattvitel


Gyakran elfordul, hogy a processzor hosszabb-rvidebb ideig nem kpes a perifria adatait elvenni, mert
kzben ms, fontosabb tevkenysget is vgez. J lenne ilyenkor, ha az tmeneti trol nem csak egy adat
trolsra lenne alkalmas, mert akkor a perifrinak nem kellene megllnia s a processzort bevrnia. Az tmeneti
trol tulajdonkppen az adat klds-fogads mindkt rsztvevjnek az ingadoz viselkedse esetn elnys, az
ingadoz rendelkezsre llst a megfelelen nagy tmeneti trol eltakarja. A 4.8. brn az tmeneti trolt egy
FIFO sor valstja meg. A processzor a FIFO Nem res jelzst gyeli, ha ez logikai igaz, akkor van a FIFO-ban
adat, gy van mit elvenni onnan. Az adat elvtele utn az Adat elvve jelzssel tudja a processzor a FIFO-val
tudatni, hogy a sor elejn ll adatot elvette, a FIFO ezt teht trlheti. A perifria a FIFO Nincs tele jelzst
ellenrzi, ha ppen kldend adata van. Ha ez a jelzs igaz, akkor tovbbtja a FIFO-nak az adatot (az Adat
bersa jelzs ksretben), ellenkez esetben meg kell llnia, s bevrnia, hogy hely szabaduljon fel a FIFO-ban,
azaz hogy a processzor a korbban betett adatokbl legalbb egyet kiolvasson.
Adat beolvasva

rvnyes adat van


Nincs tele

Nem res

CPU

Adatsn

tmeneti trol: FIFO

Adatsn

Perifria

4.8. bra. Feltteles tvitel FIFO trolval


Termszetesen ezek a forgalomszablyozsi elvek ugyangy rvnyesek akkor is, ha az adatok a processzor
fell ramlanak a perifria fel (teht kimeneti perifrirl van sz).
Az llapot regiszter s az tmeneti trol nem felttlenl kln ramkri elemek, jellemzen a perifrik
rszeit kpezik.

4.4.2. Adattvitel a processzoron keresztl


Az adatok perifribl a memriba juttatsnak legegyszerbb mdja, ha tba ejtjk a processzort. Az els
lpsben a program beolvassa az adatot a perifribl a processzor egyik regiszterbe, majd a msodik lpsben a
regiszter tartalmt a memriba rja (4.9. bra).
A perifria megszltsa eltt azonban meg kell bizonyosodni afell, hogy rendelkezik-e tvitelre ksz adattal.
Feltteles forgalomszablyozs mellett ez annyit jelent, hogy az adat beolvassa nem kezdhet meg, amg az
llapotregiszter rtkt a perifria 1-be nem lltja. Az llapotregiszter kezelse szerint ktfle stratgit klnbztetnk meg, a programozott adattvitelt, s a megszaktsra alapozott adattvitelt.

4.4. ADATTVITEL

53

4.9. bra. Adattvitel a processzoron keresztl


Programozott adattvitel
Programozott adattvitel esetn a perifria llapott periodikus lekrdezssel, un. polling-al gyelik. Az adattvitelrt felels programrsz lnyegben egy ciklusbl ll, mely addig krdezgeti az llapotvltoz rtkt, mg 1-et
nem tartalmaz, amikor is vgrehajtja az adat beolvasst, majd msodik lpsben annak memriba mentst.
Az albbi plda a billentyzettl olvas be egy adatot (0x64-es cm), amint az rendelkezsre ll (IO[0x60]-as
port polling), majd az adatot a memria 0x142-es cmre teszi.
ciklus: R0 IO[0x64]
JUMP ciklus IF R0==0
R0 IO[0x60]
MEM[0x142] R0
A polling htrnya, hogy ez a lekrdez ciklus meglltja a program futst, mely csak az adattvitel megtrtnte utn tud folytatdni. Ha sok jn az adat, akkor a processzor tl sok idt fecsrel el a polling-ra, mikzben
valami hasznosabbra is fordthatn az rajelciklusait. Termszetesen nem kell felttlenl folyamatosan monitorozni az llapotvltozt, elg bizonyos idnknt ellenrizni. A lekrdezsek kztt eltel idt polling peridusnak
hvjk, aminek a helyes megvlasztsa fontos krds, hiszen:
ha tl gyakoriak a lekrdezsek, s lass a perifria, akkor a processzor tl sok idt fecsrel el szksgtelenl,
ha tl ritkk a lekrdezsek, kt lekrdezs kztt esetleg tbb vltozs is bekvetkezhet, teht a processzor
adatokrl marad le.
Megszaktsra alapozott adattvitel
Az llapotregiszter bekthet a processzor interrupt rendszerbe is, gy minden alkalommal, amikor annak rtke
0-bl 1-be vltozik, egy megszakts keletkezik. A processzor a vezrlst tadja a megfelel megszaktskezel
szubrutinnak, melynek cmt az interrupt vektor-tbla megfelel bejegyzsbl olvassa ki.
A billentyzet pldjnl maradva tegyk fel, hogy a billentylenyoms, mint esemny 1-es megszaktst
generl. A megszakts hatsra a processzor a vektor-tbla 1-es index elemt kiolvassa, fggvnymutatknt
rtelmezi, s vgrehajt egy ugrst erre a cmre. Ezen a cmen helyezzk el a megszaktst lekezel programot:
billkezelo: R0 mentse
R0 IO[0x60]
MEM[0x142] R0
R0 visszalltsa
RETURN
Vegyk szre, hogy a megszaktskezel az R0 regisztert hasznlja az adat ideiglenes trolsra. Annak rdekben, hogy a processzoron fut program semmit ne vegyen szre abbl, hogy a billentyzet miatt megszaktottk,
s lefuttattk a fenti kdot, az R0 regiszter rtkt el kell menteni (pl. a verembe, vagy a memriba, stb.), majd a
vgn a visszatrs eltt visszalltani.
A processzoron fut programot a billentyzet kezelse csak annyira terheli, amennyire muszj. Ha nem
hasznljuk a billentyzetet, akkor semennyire.

54

4. FEJEZET. PERIFRIAKEZELS

4.4.3. Adattvitel a processzor megkerlsvel


Az elz fejezetben gy kerlnek a perifribl a memriba az adatok (vagy fordtva), hogy azok a processzoron
keresztlhaladnak. A program beolvasta az adatokat a perifribl egy regiszterbe, majd msodik lpsben a
regiszterbl elhelyezi azt a memriba, ahol az ppen fut program loklis vltozi vannak. Ezt a fajta kzvetett
adatmozgatst el lehet kerlni, gy a processzort tehermentesteni, ha megengedjk, hogy a perifribl az adatok
a processzor kikerlsvel egyenesen a memriba kerljenek (4.10. bra). Ez a technika klnsen a nagy
mennyisg adat mozgatsval jr perifriamveleteknl (pl. diszk mveletek) fontos.

4.10. bra. Adattvitel a processzor megkerlsvel

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

4.11. bra. DMA alap adattvitel


Amint a perifria elllt egy tvihet adatot, azt jelzi a DMA vezrl fel (Perifria ksz). A DMA vezrl
ekkor megszerzi a memriabusz hasznlati jogt a processzortl, majd ha ez megtrtnt, a cmsnre helyezi a
belltott memriacmet. Ezzel egyidben a perifrinak kiadja a Sn szabad jelzst, mire az az adatsnre helyezi
a tvinni kvnt adatot. Ekkor teht egyidejleg van a cmsnen a memriacm (a DMA vezrlnek hla) s az
adatsnen a berand adat (a perifrinak hla), a memriba rs teht megtrtnik. Ezutn a DMA vezrl
inkrementlja a memriacmet, dekrementlja az tviend adatok szmt reprezentl szmlljt, s az egsz
kezddik elrl, amg a szmll el nem ri a 0-t (teht a krt szm adategysg mindegyike cm-folytonosan a
memriba nem kerl). Ekkor az adattvitel vgt egy interrupt segtsgvel jelzi a processzor szmra.

4.5. BUSZ ALAP SSZEKTTETSEK

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

4.12. bra. I/O processzorra alapozott perifriakezels


A CPU-nak az I/O processzor mellett nem is kell kzvetlen, eszkz szint perifriamveleteket vgeznie. A kvnt mveleteket ler I/O utastssorozatot a rendszermemriba kell rni, majd az utastssorozat memriacmt
az I/O processzornak eljuttatni. Az I/O processzor az I/O utastsokat maga hvja le a memribl, s sorra vgrehajtja azokat. A teljes I/O program vgrehajtsnak vgt egy interrupt-tal jelzi a CPU fel. Az I/O processzor
alap perifriakezels tovbbi elnye, hogy a CPU minden perifrival kapcsolatos adattviteli mveletet az I/O
utastsokkal tud megadni, teht az egyes perifrik specilis viselkedst, a klnfle perifrik ltal ignyelt
vltozatos kommunikcis eljrsokat a CPU-nak nem kell ismernie, az I/O processzor ezeket eltakarja. St, a
perifriknak nem is kell kzvetlenl a processzorsnhez kapcsoldniuk, elg, ha valamilyen mdon sszekttetsben vannak az I/O processzorral (pl. egy kln erre a clra fenntartott I/O snnel, vagy pont-pont kapcsolatokkal).
A perifria vezrl s illeszt feladata, hogy az I/O sn ltal elrt, kzs kommunikcis protokollra fordtsk le a
klnfle perifrik nyelvt (a perifria vezrl s illeszt kztti klnbsg, hogy elbbi tbb, utbbi csak egy
perifria kezelsre kpes).

4.5. Busz alap sszekttetsek


Az eddigi fejezetek pldiban, brin a perifrik egy kzsen hasznlt, osztott buszon keresztl kommunikltak
a CPU-val, illetve az I/O processzorral. Termszetesen nem ez az egyetlen lehetsg a perifrik s a CPU (vagy

56

4. FEJEZET. PERIFRIAKEZELS

az I/O processzor) sszektsre.


Az sszekttetsek lehetnek pont-pont alap sszekttetsek, vagy osztott busz alap sszekttetsek.
A pont-pont sszekttetsek esetn a kommunikl felek (pl. a CPU s egy perifria) kztt egy dediklt
csatorna ll rendelkezsre. Ennek megvannak az elnyei s a htrnyai is:
A pont-pont sszekttetsekkel nagyobb adattviteli sebessget lehet elrni, mint osztott buszok hasznlatval, hiszen mivel az sszekttets a felek sajtja, azon nem kell mr perifrikkal osztozni, nem alakul ki
versenyhelyzet.
A pont-pont sszekttetse drgbbak, hiszen minden egyes perifria fel egy-egy kln kommunikcis
csatornt kell kialaktani kln-kln cm-, adat- s vezrl jelekkel.
Busz alap sszekttets esetn a felek kztti kommunikci egy osztott csatornn zajlik.
A busz alap sszekttetsek olcsbbak, hiszen csak egyetlen buszra van szksg, melyet aztn minden
perifria kzsen hasznl a kommunikcira.
A busz, mivel osztott erforrs, szk keresztmetszet lehet. Minl tbb eszkz hasznlja a buszt, annl
nagyobb a torlds kialakulsnak eslye (annl tbbszr akadlyozzk, tartjk fl egymst a kommunikciban).
Mivel mindkt megoldsnak megvan a maga vitathatatlan elnye s htrnya, mindkettt ms s ms clra
hasznljk. Pl. a PC esetn, ott, ahol fontos a nagy adattviteli sebessg, de nem annyira fontos a nagy szm
perifria tmogatsa, pont-pont sszekttetseket hasznlnak (PCI Express, AGP, HyperTransport), ahol viszont
fontos az alacsony kltsg, valamint a nagy szm, sebessgben s viselkedsben heterogn eszkz tmogatsa,
busz alap sszekttetseket alkalmaznak (PCI, USB).
A tovbbiakban a busz alap sszekttetseket trgyaljuk rszletesen, hiszen a busz, mint osztott kzeg
hasznlata specilis eljrsokat ignyel.

4.5.1. Busz alap sszekttetsek jellemzi


A buszok szlessge
A busz szlessge a buszt alkot jelvezetkek szma. Minl tbb jelvezetk ll rendelkezsre a tnyleges adattvitelre, annl nagyobb lesz a busz adattviteli sebessge, viszont annl drgbb lesz. A nagy sebessg, szles
buszokkal a magas kltsgen kvl ms gond is van: a sok-sok klnbz vezetket lehetetlen gy elvezetni,
hogy a vezetkeken a jel a busz minden pontjn pont egyms mellett fusson. A jelvezetkek ksleltetse
az elvezetsek klnbzsgei miatt nem lesz azonos, teht a busz egy adott pontjn a buszra azonos idben
helyezett jelek a busz ms pontjain egymshoz kpest el lehetnek csszva. Ez a hats korltozza a szles, nagy
sebessg buszok zikai hosszt.
ppen ezrt a trend manapsg ppen a keskenyebb buszok irnyba mutat (lsd: Parallel ATA - Serial ATA,
Parallel port - USB port, stb.).
A busz szlessgnek cskkentst ktflekppen rhetjk el:
1. vagy az adategysg mretnek cskkentsvel (pl. 16 bites adategysgek helyett 8 biteseket hasznlunk,
ami kevesebb vezetket ignyel),
2. vagy multiplexlt adat- s cmvezetkek hasznlatval. Ebben az esetben bizonyos jelvezetkeket adats cmtovbbtsra egyarnt hasznlunk, idben felvltva (ezek a vezetkek egyszer az adatsn, egyszer
a cmsn szerept jtsszk). A vezetkek szma ktsgtelenl cskken, de mivel az adatokat nem lehet
tetszleges idben tvinni (pl. amikor a multiplexlt vezetkek cmsn szerepet jtszanak), az adattviteli
sebessg cskken.
Idzts
A buszon az adatok idztse szempontjbl megklnbztetnk szinkron s aszinkron tvitelt.
Szinkron buszok esetn a busz rajelt a buszhoz csatlakoz minden eszkz megkapja. A buszon ez az rajel
hatrozza meg az esemnyek bekvetkezsnek idejt. Ez azt jelenti, hogy a buszon lv adat-, cm-, s vezrls
informcikat a specikci szerint meghatrozott protokollt kvetve, de mindig az rajel ltal meghatrozott
temben kell rni ill. olvasni. A 4.13. brn lthat pldban a CPU (vagy az I/O processzor) kld egy adategysget

4.5. BUSZ ALAP SSZEKTTETSEK

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

4.13. bra. Idztsek s forgalomszablyozs szinkron buszon


Aszinkron esetben nincs rajel. A buszon lv adat-, cm-, s vezrlinformcik rvnyessgt a vezrljelek
hatrozzk meg. Az adatcsere ilyenkor szorosabb egyttmkdst ignyel. A 4.14. brn pldul a processzor a
buszra helyezi a cmet s az adatot, majd az rs jel belltsval jelzi az eszkznek, hogy leolvashatja azokat. Az
eszkz a Ksz jellel jelzi, hogy vgzett az adatok leolvassval.
Cm
Adat

rvnyes cm
rvnyes adat

rs
Ksz

4.14. bra. Idztsek s forgalomszablyozs aszinkron buszon


Az aszinkron idzts ltalban lassabb adattvitelt tesz lehetv (hiszen a felek kztti szorosabb egyttmkds miatt tbb a jrulkos kommunikci: pl. adat ksz - tvettem), viszont a szinkron idzts zikailag
rvidebb buszok kialaktst teszi lehetv, hiszen az rajelnek a busz teljes hosszt be kell jrnia.
Aszinkron tvitelt meg lehet valstani az adat ksz - tvettem protokoll nlkl is. A kezdemnyez fl
ekkor egy specilis jelsorozattal indtja az adattvitelt, amelybl a megszltott fl meg tudja llaptani az egyes
adategysgek tartsidejt, s a hasznos adatok megjelensnek kezdett. Ezutn a kezdemnyez a jelzett tartsidt
betartva sorra egyms utn teszi a buszra az adategysgeket, melyeket a megszltott fl az idztsek ismeretben
ugyanilyen tempban olvas el. Ezt a megoldst hasznlta a PCI Express, a SATA s az USB is.

4.5.2. Arbitrci a buszon


Nem felttlenl minden perifria kpes kzvetlenl a buszon keresztl kommuniklni. Pldul a 4.12. brn egy
olyan megolds lthat, ahol az egyes perifrik a perifria illesztn, ill. perifria vezrln keresztl csatlakoznak
az I/O buszra. A busz hasznlata szempontjbl teht nem is a perifrik, hanem a buszra csatlakoz perifria
vezrlk s illesztk a fontos szereplk, melyeket szerepk szerint kt csoportra oszthatunk:
Busz master-nek (rviden master-nek) nevezzk azt a buszra csatlakoz eszkzt, mely kpes a buszt aktvan
hasznlni, tranzakcikat kezdemnyezni, adatot tvinni.
Slave-nek nevezzk azt az eszkzt, amely nem kpes a busz nll hasznlatra, kezdemnyezni nem tud,
adatot tvinni csak akkor kpes, ha megszltjk.
A buszt, mint osztott erforrst, egyszerre csak egy master eszkz hasznlhatja adattvitelre. A busz hasznlatrt teht a master-eknek versenyeznik kell egymssal. A master elszr bejelenti az ignyt a busz hasznlatra,
a tnyleges adattvitel pedig csak akkor kezddhet el, ha a buszrt folytatott versenyt megnyerte. Azt, hogy

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

4.15. bra. Arbitrci daisy chain alapon


Centralizlt arbitrcit valsthatunk meg gy is, hogy az arbiter minden egyes master busz ignylst
egyidejleg megkapja (4.16. bra). Az arbiter gy pontos kpet kap arrl, hogy valjban mely master-ek is
jelentettk be az ignyt a buszra, s a versenyhelyzet feloldsakor - a daisy chain-el ellenttben - tbb szempont
alapjn hozhatja meg dntst (elre bellthat, vagy dinamikus prioritsokkal, a ksleltetskritikus perifrik
elnyben rszestsvel, stb.). Ezt a megoldst prhuzamos arbitrcinak nevezzk. gy mkdik az arbitrci a
PCI busz esetn is.
Busz

Master
BUSReq
BUSGrant

Master
BUSReq
BUSGrant

Master
BUSReq
BUSGrant

Master
BUSReq
BUSGrant

Arbiter

4.16. bra. Arbitrci prhuzamos ignybejelentsre alapozva


Elosztott arbitrcit is tbbflekppen lehet megvalstani. Egy lehetsges megolds, hogy a buszon minden
eszkznek sajt vezetke van a busz irnti igny bejelentsre. Minden eszkz ltja a tbbiek ignybejelentseit is.
Amikor tbb eszkz szeretn egyidejleg megszerezni a busz hasznlati jogt, ltjk egyms ignybejelentseit,
s a sajt s a tbbiek prioritsnak ismeretben a legnagyobb priorits eszkzn kvl mindegyik visszavonja
az ignylst. Ezt a megoldst nkivlaszt arbitrcinak hvjuk. gy mkdik az arbitrci a SCSI buszon is.
Olyan megolds is lehetsges a busz elosztott hasznlatra, hogy az arbitrcit teljesen kihagyjuk. Ebben az
esetben az eszkzk a busz elzetes lefoglalsa nlkl hasznljk a buszt. Ha egy eszkz adatot kvn tvinni a
buszon, rgtn megteszi. Az adattvitel kzben azonban folyamatosan hallgatzik a buszon: ha a sajt adatait
ltja viszont, akkor sikeres volt, de ha nem, akkor valsznleg egyidejleg tbben is megprbltak adatot tvinni,
a buszon a tbb egyidej forgalmazsbl szrmaz rvnytelen zagyvasg jelenik meg, teht az adattvitel
sikertelen volt, azt ksbb jra meg kell ismtelni. Ezt a megoldst tkzsdetektlson alapul busz megosztsnak
hvjuk.

4.5. BUSZ ALAP SSZEKTTETSEK

59

Az elosztott arbitrci elnye, hogy kevsb rzkeny meghibsodsra, hiszen nincs egy, a mkds szempontjbl kulcsfontossg szerepl (az arbiter), melynek meghibsodsa teljes bnulst okoz.

4.5.3. Pldk buszokra


Nhny elterjedt I/O busz paramtereit foglalja ssze az albbi tblzat:
PCI

SCSI

USB

32-64 bit

8-32 bit

1 bit

Igen

Igen

Igen

rajel:

133 (266) MHz

5 (10) MHz

Aszinkron

Adatsebessg:

133 (266) MB/s

10 (20) MB/s

0.2, 1.5, 60, 625 MB/s

Prhuzamos

nkivlaszt

Nincs, 1 master van

Masterek max. szma:

1024

7-31

Max. zikai hossz:

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.)

4.5.4. Egy-, tbb-buszos, ill. hd alap rendszerek


A PC s az egyb olcs szmtgpek hskorban a processzor, a memria s a perifrik egyazon buszt hasznltk
az egymssal val kommunikcira (lsd 4.2. ill. 4.3. bra). Ez a kzs busz a processzor rajelvel megegyez
sebessg, szinkron busz. Ezt a kialaktst rendkvl egyszer megvalstani, s a bvts is knny: mind a
memriabvtst, mind az j perifrikat ehhez a snhez kell csatlakoztatni.
Ahogy a processzorok rajele ntt, egyre jobban megmutatkoztak az egybuszos architektra htrnyai. A
magasabb processzor rajel magasabb busz rajelet kvn (hogy a memriamveletek ne fogjk vissza a processzor
teljestmnyt). A magas busz rajel egyrszt drgbb teszi a perifrik illesztst (hiszen a perifrinak ezzel
a megnvekedett sebessggel kell feldolgoznia a processzor krseit), msrszt olyan zikai kvetelmnyeket
tmaszt, amit a perifrik illesztse nem tesz lehetv. Pldul amellett, hogy a magas rajel nagy adattviteli
sebessget tesz elrhetv, de a busz zikai hosszt rendkvli mdon korltozza. Egyes perifrik esetn nem
fontos az extrm nagy adattviteli sebessg, de az egyszer csatlakoztathatsg annl inkbb (pl. nem lenne
clszer olyan buszt bevezetni, ami a printer tvolsgt 50 cm-ben korltozn). Radsul, mg a processzor rajele
s ezzel a busz sebessge tpusrl tpusra vltozhat, addig a perifrik gyrti idtll, tbbfle processzor mellett
is mkd eszkzket szeretnnek gyrtani, szmukra ppen az llandsg, a kiszmthat mkdsi krnyezet a
fontos szempont.
A memria s az perifrik illesztsnek eltr szempontjai vezettek oda, hogy a memria s az I/O snt
kettvlasztottk (4.17. bra, ehhez hasonl koncepcit az I/O processzorok kapcsn is lttunk, a 4.12. brn). A
kt sn kztti tjrst (a krsek tolmcsolst) a hd vgzi.
A klnvlasztott processzor s I/O busz sok problmt orvosolt. Idvel azonban a memrik is soksznv
vltak. A klnbz memriagyrtk klnfle technolgij s vltozatos idztsekkel rendelkez memriamodulokat kezdtek gyrtani, a memria ebbl a szempontbl egy kicsit maga is a perifrikhoz kezdett hasonltani.
Manapsg ezrt a 4.18. brn lthat, hd alap architektrt alkalmazzk, melyben a processzor rendszersn, a
memriasn s a sokfle I/O sn mind elklnl egymstl. A snek kztti tjrst kt hd biztostja. Az szaki
hd (melyet mostanban Memory controller hub-nak, MCH-nak is neveznek) a memria kezelsrt felels. A
hozz rkez memriakrseket gy szolglja ki, hogy azt a hozz kapcsold memria aktulis tpusnak (DDR2,
DDR3, stb.) s idztseinek megfelel memriatranzakciv fordtja le. A memria gy viszonylag szabadon, a
paramterek szles tartomnyban illeszthetv vlik, a processzor tudta s tmogatsa nlkl. Az szaki hdhoz
ltalban kzvetlenl kapcsoldik a nagy memria-svszlessget ignyl grakus megjelent perifria, egy
specilis nagy sebessg busszal (az brn AGP). A 4.18. brn a f I/O busz a PCI busz. Erre kapcsoldik a dli
hd (jabb neve I/O controller hub, ICH), amely tovbbi I/O buszok fel biztostja az tjrst. Az AMD Athlon
mellett ilyen I/O szervezse volt az korai Intel Pentium rendszereknek is.

60

4. FEJEZET. PERIFRIAKEZELS

CPU

Memria

Processzorsn

Hd

Perifria

Perifria

Perifria

I/O sn

4.17. bra. Kln processzor s I/O busz


AMD AthlonXP
Processor Model 10

AMD Athlon SystemBus


AGP

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

4.18. bra. Az AMD Athlon XP rendszerek blokksmja [1]


A korszer PC-kben (4.19. bra) az szaki s dli hd kztti kommunikcira a PCI helyett ms, nagyobb
sebessg sszekttetst vezettek be, a PCI pedig a dli hd kezelsbe kerlt, s csupn egy lett a sok tmogatott
csatolfellet kztt. A grakus megjelent perifria AGP helyett PCI Express buszon kapcsoldik az szaki
hdhoz, valamint az szaki hd szinte minden j processzorban a processzorral egyazon tokba (vagy egyazon
lapkra) kerl. Ezektl a kisebb vltoztatsoktl eltekintve az elv ugyanaz, mint amit eddig lttunk: a klnbz
ignyeket tmaszt komponenseknek klnll, szabvnyos buszt ptenek ki, valamint a nagyobb adattviteli
sebessget ignyl perifrikat igyekszenek minl kzelebb helyezni a processzorhoz, illetve a memrihoz.

4.5. BUSZ ALAP SSZEKTTETSEK

61

Int elCore 2 Duo Processor


Int elCore 2 Quad Processor
Int elGraphics Media
Accelerat or 45 0 0

10 .6 GB/ s
DDR2 or DDR3
6 .4 GB/ s or 8 .5 GB/ s

Display support : DVI, VGA,


DisplayPort , HDCP, SDVO
Dual Independent Display

PCIe*
x16

DirectX* 10 and OpenGL 2.0


API support

12 Hi-Speed USB 2 .0 Por t s;


Dual EHCI; USB Por t Disable
6 PCI Express* x1

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

Int elGigabit LAN Connect

PCI Express* 2 .0
Graphics

Int elHigh
De nit ion Audio

each

Int el Int egrat ed


10 / 10 0 / 10 0 0 MAC
GLCI

DDR2 or DDR3
6 .4 GB/ s or 8 .5 GB/ s

Q4 3
GM CH

Hardware VIdeo Decode


Accelerat ion

BIOS Support

Int elSt andard


Manageabilit y

4.19. bra. Intel Core 2 rendszerek blokksmja Q43 chipset-tel [4]

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

5. FEJEZET. PERIFRIA CSATOLFELLETEK

5.2. A PCI csatolfellet


A PCI (Peripheral Component Interface) egy hardver eszkzk szmtgphez val illesztsre szolgl csatolfellet. Specikcijnak els vltozatt az Intel adta ki 1992-ben.
Fbb tulajdonsgai a kvetkezk:
Processzorfggetlen
Az eszkzk automatikus felismersnek s kongurlsnak tmogatsa
A rendszer sszes PCI perifrija minimlis esetben csupn egyetlen hardver megszaktst ignyel (sszesen)
Memrira lekpzett perifriakezels az I/O cmtr kisebb terhelse rdekben
Minden rsi/olvassi mvelet burst mdban is trtnhet: teht a PCI nem csak a bjtok egyenknti
tvitelt tmogatja, hanem egy hosszabb bjtsorozat is tvihet egyetlen PCI tranzakcival.
32 vagy 64 bites adategysgek tvitele
32 eszkz egy PCI buszon
256 PCI busz egy rendszerben
Alacsony fogyaszts tmogatsa
Szinkron busz 33 MHz-es rajellel (a szabvny 1995-ben megjelent 2.1-es vltozata mr 66 MHz-es rajelet
is megenged)
Paritsellenrzs a kiadott cmekre, parancsokra s az tvitt adatokra
Rejtett arbitrci: a buszrt val versengs s a nyertes kivlasztsa egy ppen zajl adattviteli tranzakci
kzben is trtnhet.
A PCI eleinte lassan terjedt, de 1995-tl kezdve egyre tbb gyrt tmogatta, nem csak a PC architektrj
szmtgpek krben. Tbbek kztt 1995-tl az Apple Power Macintosh, s a DEC AlphaStation, valamivel
ksbb a PA-RISC s a SUN SPARC alap munkallomsok is rendelkeznek PCI csatolfellettel.

5.2.1. PCI alap rendszerek


A PCI sn, a memria, a processzor s a tovbbi (nem PCI csatolval rendelkez) perifrik sszekapcsolsra
tbb megolds is szletett. Az 5.1. brn az Intel Pentium Pro alap rendszereiben alkalmazott elrendezs lthat.
Ebben az elrendezsben az szaki hd ltja el a memria tranzakcik kiszolglst, jjjn az a processzor, a grakus
krtya vagy a PCI sn fell. Mivel a processzor szmra a memria minl gyorsabb elrse rendkvl fontos, az
szaki hidat s a CPU-t sszekt FSB (Front-Side Bus, rendszerbusz) nagy sebessg kapcsolatot tesz lehetv. A
grakus krtya esetben is fontos a gyors memriaelrs, ezrt a lehet legkzelebb kell kerlnie a memrihoz,
gy az is kzvetlenl az szaki hdhoz kapcsoldik egy nagy sebessg kapcsolaton keresztl. A tbbi perifria
egy PCI buszon keresztl rhet el. A PCI buszra csatlakozik a dli hd is, amely tovbbi illesztsi felleteket ill.
buszokat tmogat a nem-PCI perifrik szmra (IDE diszkek, USB busz, hang ki/bemenet, stb.).
Ksbb a PCI svszlessge kevsnek bizonyult az szaki hd s a dli hd sszektsre, ezrt az Intel a Pentium
4-tl kezdve az 5.2. brn lthat mdon valstja meg a szmtgp elemeinek sszektst. Ebben a megoldsban
a PCI a dli hd kezelsbe kerl, az szaki s a dli hidat pedig egy nem szabvnyos, a PCI-nl nagyobb sebessg
kapcsolat kti ssze (DMI vagy QPI). Ennek az elrendezsnek az az elnye is megvan, hogy nem a PCI buszt
terheli a tbbi busz, illetve nem-PCI perifria forgalma. Mivel az szaki hd s a dli hd kompetencija teljesen
elklnl, az ilyen rendszerekben az szaki hidat memriavezrlnek (Memory Controller Hub, MCH), a dli
hdat pedig I/O vezrlnek (I/O Controller Hub, ICH) nevezik.
Termszetesen nem csak az 5.1. s az 5.2. bra szerint lehet egy PCI buszt tartalmaz szmtgpet megvalstani, ezek csak az Intel PC-ben alkalmazott megoldsai. A kt bemutatott brn azonosthatjuk a PCI busz
megvalstshoz szksges elemeket. Ezek a kvetkezk:
Host/PCI hd (Host/PCI bridge). A Host/PCI hd vgzi a fordtst a processzor I/O ill. memria krsek
s a PCI tranzakcik kztt. Az 5.1. bra megoldsban ez a funkcionalits az szaki hd feladata, az 5.2.
bra szerinti elrendezsben pedig a dli hd (amit ott ICH-nak hvnak).

5.2. A PCI CSATOLFELLET

65

CPU
FSB
GFX

SDRAM

szaki hd

0. PCI busz

Ethernet

PCI/PCI hd

SCSI

Dli hd
1. PCI busz
USB IDE AUDIO

Ethernet

5.1. bra. Kezdeti PCI alap rendszer

CPU
FSB
GFX

SDRAM

szaki hd

PCI
csatlakozk
Dli hd

0. PCI busz

Ethernet

SCSI

PCI/PCI hd

USB IDE AUDIO


1. PCI busz

Ethernet

5.2. bra. jabb, PCI buszt tmogat rendszer


PCI eszkzk (PCI device). Egy PCI snen a specikci szerint 32 eszkz illesztse lehetsges. A gyakorlati
tapasztalatok azonban azt mutattk, hogy klnfle (elektromos) okokbl 10-nl tbb eszkz illesztse egy
snre nem clszer. Egy PCI eszkzn (egy krtyn) azonban tbb, egsz pontosan legfeljebb 8 logikai
perifria, n. PCI function helyezhet el. Ezek a logikai perifrik a PCI rendszer szmra klnll
egysgek, melyek zikailag kzs interfszen csatlakoznak a PCI snre.
PCI-PCI hd (PCI-PCI bridge). A PCI snen specilis eszkzk, hidak is lehetnek, melyek a PCI snre
egy jabb PCI snt ktnek. A hidak segtsgvel a PCI snek hierarchikus struktrba szervezhetk, gy
az illeszthet perifrik szma nagy mrtkben nvelhet. A PCI specikci 256 sn hasznlatt teszi
lehetv, gy az elmletileg illeszthet perifrik szma nagyjbl: 8 function/eszkz * 32 eszkz/sn * 256
sn/rendszer = 65536.

5.2.2. Egyszer adattviteli tranzakci


Minden PCI eszkz rendelkezik legfeljebb 6 db ablakkal, amin keresztl adatokat lehet cserlni vele. Az eszkz
a megfelel kongurcis tranzakci sorn (lsd ksbb) meg tudja mondani, hogy hny s mekkora mret

66

5. FEJEZET. PERIFRIA CSATOLFELLETEK

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

Cmd Byte Enable Byte Enable Byte Enable

C/BE

IRDY

TRDY

DEVSEL

GNTi

5.3. bra. Plda PCI tranzakcira


A pldban a kezdemnyez a Host/PCI hd, ami egy olvassi mveletet szlelt a PCI cmtartomnyba es
memriaterletre. A Host/PCI hd ezutn versenybe kezd a buszrt (hiszen lehet, hogy pp egy msik tranzakci
zajlik rajta, s lehet, hogy pp tbben is szeretnk egyszerre hasznlni - az arbitrci lerst lsd ksbb), melyet
elbb-utbb megkap, amit a szmra dediklt GNT jel alacsonyba vltsbl tud meg (1. rajel felfut l). Ezutn
elindtja a tranzakcit: kiteszi a processzor ltal meghivatkozott memriacmet a buszra az A/D (Address/Data)
vezetkekre, a mvelet tpust (Memory read) pedig a C/BE vezetkekre (2. rajel). Ezt kveten jelzi, hogy
kszen ll az adatok fogadsra (IRDY-t (Initiator Ready) 0-ba hzza), s a C/BE vezetkekre rt Byte Enable
4 bites informcival jelzi a cmzettnek, hogy a megcmzett 32 bites adategysg 4 bjtjbl melyeket kri, s
milyen sorrendben (=0: legegyszerbb eset: az egszet, gy, ahogy van). Ekzben a buszon lv perifrik
ellenrzik a cmet. Az egyik perifria hosszabb-rvidebb id utn szleli, hogy a cm az egyik ablakba esik,
amit a DEVSEL vezetk alacsonyba hzsval jelez. Egyben kzli a cmzettel, hogy ksz az adatok kldsre
(TRDY-t (Target Ready) 0-ba hzza), s rteszi az els 32 bites adategysget az A/D vezetkekre (4. rajel). Ezt a

5.2. A PCI CSATOLFELLET

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

Megszakts nyugtzs (Interrupt Acknowledge)

0010

I/O olvass (I/O Read)

0011

I/O rs (I/O Write)

0110

Memria olvass (Memory Read)

0111

Memria rs (Memory Write)

1010

Kongurci olvass (Conguration Read)

1011

Kongurci rs (Conguration Write)

A parancsok jelentse a kvetkez:


Megszakts nyugtzs: A perifria ltal krt megszakts nyugtzsa a PCI buszon egy megszakts
nyugtzs tranzakci formjban rkezik meg a perifrihoz.
I/O olvass/rs: Egy olvassi/rsi mvelet a cmbuszon adott I/O cmre. Annak a perifrinak szl,
amelyiknek ez a cm az egyik I/O ablakba esik.
Memria olvass/rs: Egy olvassi/rsi mvelet a cmbuszon adott memriacmre. Annak a perifrinak
szl, amelyiknek ez a cm az egyik memria ablakba esik.
Kongurci olvass: Ennek segtsgvel lehet egy eszkzrl informcikat lekrdezni. Ilyen informci
az eszkz kdja, az eszkz gyrtjnak kdja, az eszkz besorolsa (adattrol, hlzati eszkz, grakus
megjelent, multimdia eszkz, stb.), az eszkz idztsbeli ignyei, valamint az, hogy hny s mekkora
ablakra van szksge az I/O s a memria cmtartomnyban. (A megclzott eszkz kijellsrl ksbb
lesz sz.)
Kongurci rs: A kijellt eszkz kongurcis regisztereinek rsa, pl. a krt ablakok kezdcmnek
belltsa.

68

5. FEJEZET. PERIFRIA CSATOLFELLETEK

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.

5.2. A PCI CSATOLFELLET

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

Eszkz Function Reg. szm 00

5.4. bra. PCI perifrik kongurcis regisztereinek cmzse


Lssuk, mi is trtnik ilyenkor a httrben (most tegyk fel, hogy csak 1 PCI busz van a rendszerben). A
Host/PCI hd a 2 specilis cmre trtn I/O mveletekre folyamatosan gyel. Ha gy ltja, hogy valaki az elbb
lert mdon kijellt egy kongurcis regisztert, majd azt rni vagy olvasni akarja, akkor egy kongurcis rs
ill. olvass tranzakcit indt a megcmzett eszkz fel. Ezt az albbi mdon teszi:
Az 5.4. brn lthat formtum cmbl ltja, hogy melyik eszkzrl van sz. A kijellt eszkznek belltja
az IDSEL jelzst (ez minden eszkzre egyedi, teht csak ennek az egy eszkznek lesz belltva az IDSEL
jelzs).
A C/BE vonalakon a Kongurci olvass vagy Kongurci rs tranzakci parancs kdjt rja. Innentl kezdve a tovbbiakban csak az IDSEL-el kijellt eszkz gyeli a buszon zajl esemnyeket, a tbbi
megllaptja, hogy r a tranzakci nem vonatkozik.
Az A/D vonalakra a kvetkez informcikat teszi a Host/PCI hd:
a kongurci tpust (nem rszletezzk, ltalban 0),
a function szmt (teht hogy a kongurls az adott eszkzn hnyadik logikai perifrira vonatkozik),
a krt kongurcis regiszter szmt.
Ezutn a kongurcis regiszter tartalma az egyszer adattviteli tranzakci-nl ltott mdon, a Byte
Enable jelekkel s forgalomszablyozssal fszerezve megy t a perifria s a Host/PCI bridge kztt (az
tvitel irnya attl fgg, hogy kongurci rsrl, vagy olvassrl van-e sz).
A minden egyes PCI perifria rszre rendelkezsre ll 64 regiszterbl az els 16 tartalmt a szabvny megkti,
a tbbit a perifria gyrtja szabadon hasznlhatja. Az els 16 regiszterbl szmos fontos informcihoz lehet
jutni, pl:
VendorID: a perifria gyrtjnak azonostja
DeviceID: a perifria azonostja
Revision: hnyadik verzi
Class Code: a perifria tpusa: adattrol, hlzati eszkz, grakus megjelent, multimdia eszkz, stb.
Interrupt Pin: a 4 lehetsges interrupt lb melyikt hasznlja a perifria
Interrupt Line: A perifria megszaktskrst a processzor hnyas szm megszaktsknt rzkeli
Base Address Register 05: a perifria ltal hasznlt, a memria vagy I/O ablakok kezdcme. Ha tartalmt
csupa 1-es bitekkel tltjl fel, majd ezt kveten ugyanezt a regisztert kiolvassuk, akkor a perifria megmondja, hogy mekkora ablakra van szksge, s azt is, hogy a memriban vagy az I/O cmtartomnyban
kri-e.

70

5. FEJEZET. PERIFRIA CSATOLFELLETEK

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.

5.2.7. A PCI csatol jelzsei


Az albbiakban felsoroljuk, hogy a PCI krtykon, kivezetsek formjban, milyen jelzsek tallhatk. A tbbsgket az eddigi lersbl mr ismerjk. Maga a csatolfellet az 5.5. brn lthat.
Ktelezen hasznland jelek:
rajel (osztott)
Reset (osztott)
A/D[031]: cmzsre s adattvitelre hasznlatos vonalak (osztott)
C/BE[03]: parancsok s byte enable tovbbtsra hasznlatos vonalak (osztott)
Parits (az A/D-ra s C/BE-ra szmolt paritsbit, osztott)
FRAME: jelzi a tranzakci idtartamt. A kezdemnyez alacsonyba hzza a tranzakci kezdetekor, s
magasba, ha ksz az utols adategysg vtelre (osztott)
TRDY: a megcmzett perifria ezzel jelzi, hogy ksz az adattvitelre (osztott)
IRDY: a kezdemnyez ezzel jelzi, hogy ksz az adattvitelre (osztott)
DEVSEL: a megcmzett perifria ezzel jelzi, hogy dekdolta a cmet, s az hozz tartozik (osztott)
IDSEL: a kongurls sorn ez jelzi a perifrinak, hogy a kongurl tranzakci r vonatkozik (minden
perifrinak kln)
STOP: a megcmzett perifria ezzel jelezheti, hogy szeretn a tranzakcit id eltt lelltani (osztott)
PERR: a perifria ezen keresztl jelentheti be, ha paritshibt szlelt (osztott)
SERR: egyb kritikus hibk jelzse (osztott)
REQ: a perifria ezzel jelentheti be ignyt a busz hasznlatra, ha tranzakcit szeretne kezdemnyezni
(minden perifrinak kln)
GNT: az arbiter ezzel jelzi a perifria szmra, hogy hasznlhatja a buszt (minden perifrinak kln)
Opcionlis jelek (melyeket nem minden perifrinak ktelez tmogatnia):
A/D[3263]: cmzsre s adattvitelre hasznlatos vonalak (osztott)
C/BE[47]: parancsok s byte enable tovbbtsra hasznlatos vonalak (osztott)
Parits64 (az A/D[3263]-ra s C/BE[47]-re szmolt paritsbit, osztott)
INTA: ha egy perifria megszaktst kr, azt ezen a 4 vonalon tudja bejelenteni (osztott, vagy mindenkinek
kln)
INTB: lsd elbb
INTC: lsd elbb
INTD: lsd elbb
CLKRUN: Ha a PCI busz pp hasznlaton kvl van, energiatakarkossg miatt mobil rendszerekben az
rajelt lekapcsoljk, vagy lelasstjk. A perifrik errl az esemnyrl ezen a jelen keresztl rteslnek,
illetve ezzel a jellel jelezhetik, hogy szeretnk ismt teljes sebessgre kapcsolni a buszt (pl. mert tranzakcit
szeretnnek kezdemnyezni) (osztott).
REQ64: ezzel jelezheti a kezdemnyez, hogy 64 bites adattvitelt szeretne (idztse a FRAME-mel azonos)
(osztott).
ACK64: ezzel jelezheti a megcmzett perifria, hogy a 64 bites adattvitelt kpes kiszolglni (idztse a
DEVSEL-el azonos) (osztott).
(Az energia menedzsmenthez s a JTAG tmogatshoz szksges jelzsektl eltekintnk).

5.3. A PCI EXPRESS CSATOLFELLET

71

5.5. bra. A 32 bites PCI csatolfellet1

5.3. A PCI Express csatolfellet


A PCI Express (PCIe) fellet a PCI-nl lnyegesen nagyobb adattviteli sebessget tesz lehetv. Ennek elrse
rdekben azonban a PCI-tl radiklisan eltr megoldsokra van szksg, gy a PCI s a PCI Express alapvet
dolgokban klnbzik egymstl.
Amiben mgis kzs a PCI s a PCI Express, az a tranzakcikon alapul adattviteli modell, a perifrik
kongurlsnak mechanizmusa, s a megszaktsok kezelse. Ennek ksznheten a programoz s az opercis
rendszer szempontjbl a kt megolds egymssal kompatibilis: a PCI Expressben a PCI-nl megszokott mdon
kell az eszkzket detektlni, kongurlni, adattvitelt kezdemnyezni, stb.
A legltvnyosabb vltozsok a PCI-hoz kpest:
Soros tvitel Els ltsra azt gondolnnk, hogy a PCI-ban is ltott prhuzamos tviteli md (ahol is 32
bites adategysgeket egyetlen rajel alatt t lehetett vinni) gyorsabb, mint a soros. Valjban a szinkron,
prhuzamos tviteli mdnak van egy komoly korltja: nem lehet magas rajelet elrni. A prhuzamosan
fut vezetkek hossza s elektromos tulajdonsgai ugyanis soha nem hajszl pontosan egyformk, gy a
kld oldalon egy idben rtett adatok egymshoz kpest elcsszva rnek a fogad oldalhoz. Ez a csszs
nem okoz gondot, amg a mrtke ssze nem mrhet az rajellel. Soros adattvitel esetn nincs ilyen
elcsszsi problma, az adattviteli sebessg akr tbb nagysgrenddel is magasabb lehet, mg azzal egytt
is, hogy az adatokat bitenknt kell tvinni.
Pont-pont sszekttetseken alapul topolgia Mg a PCI-ban a busz osztott volt (legalbbis a legtbb
vezetk), addig a PCI Express dediklt, pont-pont sszekttetseken alapul. Ennek ksznheten az tviteli
kzeg nem osztott, nem kell rte versengeni, vrni r, arbitrci sincs.

5.3.1. PCI Express alap rendszerek


Egy egyszer PCIe alap rendszert mutat be az 5.6. bra. Ebben a megvalstsban minden egyes PCIe eszkz a
Root Complexhez kapcsoldik, melynek funkcija Host/PCI hdnak felel meg ([8]).
A PCI Express csatolfellete sokkal egyszerbb, mint a PCI esetben volt. Az egyb jrulkos vezetkek
mellett a tnyleges kommunikci egyetlen rpron zajlik, soros adattvitellel, rajel nlkl (az rajelet a kt fl a
vonal jeleibl egy PLL segtsgvel el tudja lltani). Mr egyetlen ilyen rpr is a rgi PCI-nl jval nagyobb
adattviteli sebessgre kpes. Kt PCIe eszkz kztt (alapesetben) kt ilyen rpr tallhat, az egyik az oda-, a
msik a vissza irny adatforgalom szmra van fenntartva, azaz a PCIe sszekttetsei full duplexek, mindkt
irnyba lehet egyszerre adatot tvinni. Egy ilyen ktirny soros sszekttetst a PCIe-ben lane-nek (plynak)
neveznek. Kt eszkz kztt tbb lane is kihzhat, gy az adattvitel az egymssal prhuzamos (de nem szinkron!)
plyk kihasznlsval sokkal gyorsabb lehet. A PCIe szabvny x1, x4, x8, x16, x32 plyt tmogat, br a 32 plys
kialakts nagyon-nagyon ritka (PC-ben nem ltezik). A PCIe sebessgeket az 5.1 tblzatban foglaltuk ssze,
maga a csatolfellet az 5.5. brn lthat.
1

Magnus Manske fotja, Creative Commons licensz

72

5. FEJEZET. PERIFRIA CSATOLFELLETEK

CPU
FSB
GFX

Root
Complex

SDRAM

PCI Express
csatlakozk
PCI
csatlakozk

Dli hd

PCI busz

Ethernet

SCSI

USB IDE AUDIO

5.6. bra. Egy egyszer PCIe rendszer felptse


Szabvny

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

5.1. tblzat. PCI Express maximlis adattviteli sebessgek


Igaz ugyan, hogy a PCIe pont-pont sszekttetsekre pl, de ez nem jelenti azt, hogy minden eszkznek
kzvetlenl a Root Complexre kell kapcsoldnia. Egy sszetettebb PCIe alap rendszert lthatunk az 5.7. brn,
ahol egyes eszkzk .n. kapcsolkon (switcheken) keresztl vannak sszekttetsben a Root Complexszel. Ezek
a kapcsolk a tranzakcikat a megfelel irnyba tovbbtva azt a ltszatot keltik az eszkzk szmra, mintha
kzvetlenl a Root Complexszel kommuniklnnak.
Gigabit
Ethernet

CPU
FSB
SDRAM

Kapcsol

GFX

Root
Complex

Kapcsol
PCI
csatlakozk

Dli hd

PCI busz

Ethernet

SCSI

USB IDE AUDIO

5.7. bra. PCIe rendszer kapcsolkkal

5.3.2. PCI Express tranzakcik tvitele


A PCI Express mkdse egy csomagkapcsolt hlzatra hasonlt. A tranzakcik, a hozzjuk kapcsold jrulkos
informcikkal egytt egy egysgknt, csomagknt haladnak a kldtl a cl irnyba, esetleg tbb PCIe kapcsol
rintsvel, kzrl kzre adva. A tranzakcit tartalmaz csomagot a kld bitrl bitre elkldi a cl szmra,
az pedig sszelltja azt, majd ha az utols bit is megrkezett, belenz, s vgrehajtja az ott lert tranzakcihoz

5.3. A PCI EXPRESS CSATOLFELLET

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

5.8. bra. A tranzakci tja a rtegek s az eszkzk kztt


A tranzakci egy 3-4 db 32 bites adategysgbl ll fejlcbl, egy 0-1024 db 32 bites adategysgbl ll rakomnybl, s egy 32 bites CRC-bl (ellenrz sszeg) ll. A fejlc tartalmazza sok egyb jrulkos informci
mellett a tranzakci tpust (a PCI C (command) jelnek felel meg: memory read/write, I/O read/write, conguration read/write, stb.), a bjtsorrendet (PCI-ban BE hatrozta meg), a cmet (PCI-ban Address). A rakomnyban
tallhat az tvinni kvnt adat (ami a PCI-ban az rajel szerint sorban megjelent az A/D vezetkeken). A CRC
mez a teljes zenetre (fejlc + rakomny) szmolt ellenrz sszeg, amit a tranzakci clpontja ellenriz.
Az ily mdon sszecsomagolt tranzakci ezutn az adatkapcsolati rteg kezelsbe kerl. Az adatkapcsolati
rteg feladata, hogy ezt a tranzakcis csomagot a kzvetlen szomszdba hibamentesen eljuttassa. Ennek rdekben
egy jabb fejlccel egszti ki a csomagot, amibe egy automatikusan inkrementlt sorszmot r. A csomag vgre
egy jabb CRC kdot helyez el, melybe mr a sorszmot is belekalkullja.
Az adatkapcsolati rteg ltal kiegsztett csomagot ezutn a zikai rteg kapja meg. A zikai rteg feladata a
csomag tvitele a soros vonalon. A zikai rteg a csomag elejre s vgre egy-egy specilis szimblumot helyez,
hogy a vev oldal knnyen be tudja hatrolni, hogy hol kezddik s hol vgzdik a csomag. Ezt kveten a bjtok
(a teljes csomag minden bjtjra vonatkozik) bitjeit sszekeveri, s a 8 bitet 10-re egszti ki annak rdekben,
hogy elegend 0-1 vltst tartalmazzon ahhoz, hogy a msik oldal rajel nlkl is dekdolni tudja. A csomag
ekkor elhagyja az eszkzt.
A csomag hasznos tartalmt az tvitel sorn terhel sszes hozztett fejlc s egyb cl bjt az 5.9. brn lthat. Ez alapjn knnyen kiszmolhat, hogy egyetlen 32 bites adategysg (4 bjt) tvitelhez 1+2+3*4+1*4+4+4+1
= 28 bjtos forgalom terheli a soros kapcsolatot, amihez mg hozz kell szmtani a 8 bitet 10 biten tovbbt
kdols hatst is: 28*10/8 = 35 bjt, ami nem elhanyagolhat mrtk rezsi.
A tranzakcit megclz eszkz a csomagot rtegek szerint alulrl felfel, vagyis az elbbivel fordtott sorrendben bontja ki. Elszr a zikai rteg lltja vissza a soros bitfolyaml a csomagot (ehhez meg kell tallnia a
csomaghatrokat, vissza kell lltani a 8-bl 10 bitbe kdols s a bitsszekevers hatst is), majd tovbbtja az
adatkapcsolati rtegnek.
Az adatkapcsolati rteg ellenrzi a CRC-t, s rnz a sorszmra. Ha rossz a CRC, vagy a sorszm nem pontosan
1-gyel nagyobb az elznl (vagyis kimaradhatott, elveszhetett pr csomag), akkor egy negatv nyugtt, ellenkez
esetben pozitv nyugtt kld vissza a feladnak. A felad, ha rossz sorszm miatt kapta a negatv nyugtt, jra
tudja kldeni a korbbi, sikertelenl tovbbtott csomagot (ehhez persze minden, mg nem nyugtzott csomagot
meg kell rizni).

74

5. FEJEZET. PERIFRIA CSATOLFELLETEK


1 byte

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.9. bra. PCI Express tranzakcis csomag rszei


A tranzakcis rteg csak akkor kap szerepet, ha a csomag clba rt (teht a kztes kapcsolkban nem). Ellenrzi
a CRC-t, ha rossz, negatv nyugtt kld. Ha j volt a CRC, akkor kiolvassa a fejlcbl, hogy mit is kell csinlnia
a rakomnyban lv adatokkal (pl. a fejlcben a cl cmtartomnyba es memory write szerepel, akkor az
adatokat a rakomnybl a cmnek megfelel helyre rja).
Egyes tranzakcikra vlaszolni kell (non-posted transactions), msokra nem (posted transactions). Pldul
egy memria rsi mveletre nem kell vlaszolni: a kezdemnyez sszelltja a csomagot a cmmel s a berand
adattal, s tjra bocstja a tranzakcit. A memria olvassi mvelethez azonban szksg van vlaszra: a
kezdemnyez egy tranzakcis csomagban elkldi a cmet a memria olvass paranccsal, amire vlaszknt a
cmzettnek egy jabb (ellenttes irny) csomagban kell visszakldenie a cmrl kiolvasott adatot.
A tranzakcis csomagok tovbbtsra hatssal van az albbi kt tnyez is:
Quality of Service tmogats A PCI Express lehetsget biztost a klnbz elvrsokat tmaszt perifrik
ignyeinek gyelembe vtelre. A tranzakcis csomagok fejlce tartalmaz egy 3 bites forgalmi osztlynak (Trac
Class, TC) nevezett mezt, amivel a tranzakci jelezheti, hogy mennyire srgs a dolga. Ahogy a tranzakci a
csomagban halad a kapcsolk hlzatn t a perifria s a Root Complex kztt, ezt az informcit gyelembe
vve lesz, ahol megelz msokat a fontossga miatt, mshol esetleg pp t elzi meg egy mg fontosabb csomag.
Forgalomszablyozs A PCI Express eszkzk a berkez csomagokat egy tmeneti trolban, buerben
troljk, mg feldolgozsuk meg nem kezddik. Ennek a buernek a mrete azonban vges, s ha a kld
gyorsabban kldi a csomagokat, mint ahogy azt a fogad fel tudja dolgozni, akkor hamar megtelik, s szmos
csomag trolsi hely hinyban elvsz. Ennek megakadlyozsra a PCI Expressben egy hitelrtk (kredit) alap
forgalomszablyozst vezettek be. Ennek lnyege, hogy a fogad fl rendszeresen kzli a kldvel, hogy mekkora
trolsi kapacitssal rendelkezik (ez a kreditrtk). Ha a kld gy tli meg, hogy a kldeni szndkozott csomag
ennl nagyobb (nincs elg kredit), akkor a kldst egsz addig kslelteti, mg a fogadnl megfelel trolsi
kapacits nem keletkezik.

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).

5.4. AZ USB CSATOLFELLET

75

5.4. Az USB csatolfellet


Az USB (Universal Serial Bus) ma mr a kls perifrik illesztsnek de-facto szabvnya, felhasznli szemmel
valsznleg mindenki ismeri. Ebben a fejezetben bepillantunk az USB mkdsnek rszleteibe, megnzzk,
hogy a perifriakezels korbban megismert alapelveit hogyan valstottk meg a szabvny kifejleszti. Ahogy
a PCI/PCI Express esetben az 5.2. s az 5.3. fejezetekben, most is egy ttekint kpet kvnunk nyjtani, nem
clunk egy minden rszletre kiterjed referencit adni. Tbb, rszletesebb lers a [7], a [11] s [6] irodalmakban
tallhat.

5.4.1. Az USB trtnete, kpessgei


Az USB kifejlesztst a PC-s perifrik csatlakoztatsa krl kialakul egyre nagyobb kosz motivlta. Mint mr
emltettk, a PC-be illeszthet krtyk szma ersen korltos, sokfle csatlakoz volt hasznlatban, mindegyikhez
kln hosszabbtt, kbelt, talaktt, stb. kellett gyrtani.
1994-ben hat vllalat, a Compaq, a DEC, az Intel, a Microsoft, a NEC s a Nortel kezdte meg a munkt egy j
univerzlis illesztfelleten, ksbb a HP, a Lucent s a Philips is csatlakozott. Az elsdleges clpont teht a PC
volt, de a szabvny megszletse utn minden vezet architektra (ARM, SPARC, Alpha, Power) USB tmogatst
kapott.
Az USB fbb tulajdonsgai:
Szabvnyos zikai csatlakozk minden perifria szmra
Tbb perifria is rkthet ugyanazon csatlakozra (hub segtsgvel, lsd ksbb)
sszesen 127 USB eszkz is lehet egyetlen rendszerben
Perifrik csatlakoztatsa nem terheli az I/O cmteret s nem kell jabb IRQ vonal sem
A perifrikat menet kzben, a szmtgp kikapcsolsa nlkl lehet csatlakoztatni, ill. eltvoltani
A perifrik automatikus felismerse s kongurlsa
Olcs vezrlramkrk, csatlakozk s kbelek
Az USB eszkzk tpelltsa (bizonyos hatrokig) az USB kbelen keresztl megoldhat
Alacsony fogyaszts tmogatsa

5.4.2. Az USB felptse


Az USB rendszerekben a perifrik fa topolgiba vannak rendezve. A fa levelei maguk a perifrik, a fa
csompontjai (az elgazsok) pedig a hubok.
Minden USB rendszerben az USB vezrl (USB host controller) vgzi a busz vezrlsvel kapcsolatos minden
teendt. Egy rendszerben tbb host controller is lehet, ilyenkor a rjuk csatlakoz eszkzk fggetlen buszokat
alkotnak. Az USB host controller tartalmazza az USB fa gykert, a root hubot (egy host controller pontosan
egy root hubot tartalmaz). A root hubhoz, mint minden ms hubhoz is, jabb hubok, vagy perifrik (USB
device) csatlakozhatnak. Akr a PCI, az USB is megengedi, hogy egy zikailag csatlakoztatott perifria tbb
logikai eszkzkbl, funkcikbl (USB function) lljon. Ha egy perifria tbb funkcit tartalmaz, akkor azt az USB
szabvny sszetett perifrinak (compound device) nevezi.
Az USB helyt felptst az 5.10. bra szemllteti. Egy modern PC-ben a dli hd tartalmaz host controllert,
de a host controller lehet egy PCI/PCI Express perifria is.
Az brt ismt szemgyre vve felmerl a krds, hogy az USB mitl is busz. ltalnossgban egy buszrl
megszokhattuk, hogy az egy osztott kzeg, melyen minden szerepl mindent hall, vannak rajta masterek, amik
kezdemnyezhetnek adattvitelt, s slave-ek, amik csak vlaszolhatnak a master krseire. Els pillanatra
meglep lehet, de az USB ezeknek a szempontoknak mind megfelel. Az USB-ben egyetlen master van: a root
hub, minden ms szerepl slave. Minden, amit a master forgalmaz, a fa mentn az sszes slave-hez eljut (mr
amelyik adatsebessgben kompatibilis lsd ksbb). Amelyik eszkzre vonatkozik, az odagyel, a tbbi nem. Az
ellenttes irny adattvitel is hasonlan zajlik: a master szl, hogy melyik perifritl vr adatot, majd elhallgat,
s a megcmzett perifritl elvrja, hogy ez id alatt tegye r a kbelre a krt adatot, ami a fa mentn feljut a
masterhez. Mivel a root hub az egyetlen master, egyetlen perifria sem kezdemnyezhet adatmozgst, csak akkor
kldhet adatot, ha megszltjk. gy arbitrcira egyltaln nincs is szksg.
Mivel az USB tnylegesen egy busz, sjtja a buszok legnagyobb htrnya is: minl tbb perifria van hozz
csatlakoztatva, annl tbben knytelenek osztozni a busz svszlessgn.

76

5. FEJEZET. PERIFRIA CSATOLFELLETEK

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

5.10. bra. Az USB rendszer helye s felptse

5.4.3. Az USB 1.1


Az 1998-ban kiadott 1.1-es szabvny volt az USB els igazn szles krben elterjedt verzija. Mivel a szabvny
ksbbi verzii ugyanazokra az elvekre plnek, az USB-vel val ismerkedst a legegyszerbb, 1.1-es verzival
kezdjk.
Az USB 1.1 ktfle adattviteli sebessget tmogat: az 1.5 Mb/s-os kis sebessget (low speed, LS) s a 12
Mb/s-os teljes sebessget (full speed, FS). Bizonyos, tipikusan az egyszerbb s olcsbb eszkzk csak a kis
sebessg kommunikcit tmogatjk, mg ms eszkzk mindkt adatsebessgen kpesek mkdni. Elbbieket
LS, utbbiakat FS eszkzknek nevezzk.
Tranzakcik
Az USB rendszerekben a perifrikkal tranzakcik segtsgvel lehet kommuniklni. Megklnbztetnk kis s
teljes sebessg tranzakcikat, attl fggen, hogy 1.5 vagy 12 Mb/s sebessggel trtnnek-e. A hubok az FS
tranzakcikat az LS eszkzk fel nem tovbbtjk, gy minden eszkz csak olyan sebessg tranzakcikat lt,
amelyeket tmogat (a hub tudja, hogy egy adott portjn LS vagy FS eszkz van-e).
A tranzakcikat mindig az egyetlen master, a root hub indtja. A tranzakci tbbek kztt tartalmazza a
megcmzett perifria azonostjt, azt, hogy ki- vagy bemeneti tranzakcirl van sz, valamint az tvinni kvnt
adatokat. Kimeneti (a perifria fel irnyul) tranzakci esetn az tvinni kvnt adatokat a root hub, bemeneti
tranzakci esetn pedig a megcmzett perifria teszi a buszra.
A tranzakcikat keretekbe (frame) szervezik. Egy keret pontosan 1ms ideig tart, ami FS adatsebessg esetn
1500 bjtot jelent. Egy keret termszetesen tbb tranzakcit is szllthat. Mivel a tranzakcik mrete, ahogy a
perifrival cserlend adatmennyisg is, vltoz lehet, a keretek nem felttlenl vannak teljesen kitltve.
Mivel a perifrik nagyon sokflk lehetnek, eltr ignyeket tmasztanak a busz fel. Van perifria, ami
hibamentes adattvitelt ignyel, msnak ennl fontosabb a minl kisebb ksleltets, stb. A sokfle elvrs
kiszolglsra az USB ngy adattviteli mdot (transfer type) vezet be, ezek pedig: az izokron (isochronous), a
bulk, az interrupt s a control adattviteli md.
Az izokron adattviteli md. A ksleltetsrzkeny perifrik szmra mindennl fontosabb, hogy az adatfolyamban folyamatos, ingadozsmentes legyen. Ilyenek pl. az USB-re csatlakoztathat hangszr, mikrofon, web

5.4. AZ USB CSATOLFELLET

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

5. FEJEZET. PERIFRIA CSATOLFELLETEK


Interrupt tranzakci
Izokron tranzakci

SOF

Keyboard

Mouse

Hangszr

Bulk tranzakci
SOF: Start Of Frame

Nyomtat Pen drive

Keret (1ms)

5.11. bra. Plda a keret kitltsre


Adattvitel az USB-ben
Most pedig rszleteiben ttekintjk, hogy is jutnak el az adatok a szoftvertl a perifriig. Az adattvitelben a
kvetkez szereplk jtszanak szerepet:
A mr megismert hardver szereplk:
a host controller, a root hubbal,
hubok,
a perifria.
A kzremkd szoftver szereplk:
a perifria eszkzmeghajtja (drivere),
az USB driver,
az USB host controller driver.
A perifria eszkzmeghajtja kezdemnyezi az adattvitelt. Pl. egy printer driver kap egy kinyomtatni val
lapot egy applikcitl. Az dolga a nyomtats lebeszlse a nyomtatval, pl. hogy a kinyomtatand lap kppontjai mellett mit kell kzlni vele a felbonts, a paprmret, stb. belltshoz. A perifria eszkzmeghajtjnak
azonban nem kell foglalkoznia az USB-n val tovbbts rszleteivel (ezzel is megknnytik az eszkzmeghajtfejlesztk dolgt). Az USB tovbbts rdekben az egyetlen dolga, hogy sszellt egy adattviteli krst (I/O
request packet, IRP), s ezt tovbbtja az USB drivernek. Az IRP-k felptse egyszer: legfontosabb mezi a
perifria cme, az adattvitel irnya, s egy pointer az tvinni kvnt adatokra.
Az USB driver megkapja az adattviteli krseket, s akkora mret darabokra bontja, hogy azok egy tranzakciban tvihetk legyenek, majd a darabokat tovbbadja a host controller drivernek. (Ezen a rszletessgi szinten
az USB driver egyb feladataival nem foglalkozunk.)
A host controller driver feladata az adattvitel tnyleges lebonyoltsa. Az USB drivertl kapott tvinni szndkozott adatdarabokbl tranzakcikat kpez, a tranzakcikat (tbb adattviteli krsbl szrmazkat vegyesen)
pedig a mr megismert szablyok szerint sztosztja a keretek kztt. Egy lncolt listt (tulajdonkppen egy
vrakozsi sort) tart karban, melynek minden eleme egy-egy keret tranzakciit tartalmazza. Minden egyes keretidben, teht 1ms-onknt leemeli a lista els elemt, s kiteszi a buszra (5.12. bra).
Tpellts az USB kbelen keresztl
Az USB egyik kellemes tulajdonsga, hogy a perifrik tpelltst bizonyos hatrokig az USB kbelen keresztl
is meg lehet oldani, ugyanis a jelvezetkek mellett a kbel 5V tpfeszltsget is szllt.
A root hub minden egyes csatlakozjbl legfeljebb 500mA ramot lehet felvenni, ezzel kell a r csatlakoz,
belle tpllkoz eszkzknek (huboknak s perifriknak) gazdlkodnia. Azt is gyelembe kell venni, hogy az
USB szabvny megkveteli, hogy minden hub port legalbb 100mA ramot biztostson a r csatlakoz eszkznek.
gy pldul, ha a root hub egy portjra egy USB kbelbl tpllkoz hubot tesznk, akkor annak a hubnak
legfeljebb 4 portja lehet, mivel minden porton kteles legalbb 100mA-t adni, s a hub sajt fogyasztst sem
szabad gyelmen kvl hagyni. gy ki is merlt az 500mA-es keret. Egy USB hub azonban nem felttlenl az USB
kbelen oldja meg a tpelltst, vannak sajt tpelltssal rendelkez hubok is, melyek ngynl akr sokkal tbb
portot is tartalmazhatnak, akr mindegyiken a maximlis 500mA ramelltst biztostva.
Azt, hogy egy eszkz mennyi ramot ignyel a norml mkdshez, a csatlakoztatskor, a kongurci sorn
ki lehet olvasni az eszkzler tblibl. Ha a port, amire rktttk, ezt nem kpes biztostani, akkor az eszkz
nem lp be az USB rendszerbe. (A kongurcis fzis sorn, amikor mindez kiderl, minden eszkz meg kell,
hogy elgedjen a minimlisan mindig rendelkezsre ll 100mA rammal.)

5.4. AZ USB CSATOLFELLET

79

Mikrofon driver

Printer driver

"A" Adattviteli krs

"B" Adattviteli krs

USB Driver

Tranzakci A/1

Tranzakci A/2

Tranzakci A/3

Tranzakci B/1

Tranzakci B/2

Tranzakci B/3

USB Host Controller Driver


1. Keret
Tranzakci A/1

2. Keret

Tranzakci B/1

Tranzakci A/2

Tranzakci B/2

USB Perifrik

5.12. bra. Adattvitel USB-n


Kbelek s csatlakozk
Az USB kbel mindssze 4 vezetket tartalmaz. Ebbl kett a perifria tpelltsrt felels (fldels s +5V),
a msik kett pedig a jeltvitelhez szksges. A jeltvitel zikai mikntjrl itt csak annyit jegyeznnk meg,
hogy dierencilisan trtnik, vagyis a kt jelvezetk (D+ s D-) feszltsgnek klnbsge a mrvad. A teljes
sebessg (FS) s az alacsony sebessg (LS) eszkzk kbelei nem egyeznek meg. A magasabb adatsebessg
elrse rdekben az FS kbelek ktszeresen rnykoltak, s a jelvezetkek csavart rprt alkotnak. Az LS kbelek
esetn a kbel kls rnykolsa elhagyhat, s a jelvezetkeket sem kell megcsavarni, gy az LS kbelek sokkal
vkonyabbak, hajlkonyabbak, s nem utolssorban olcsbbak az FS kbeleknl.
Amikor a szabvnyosts sorn a csatlakozkat terveztk, az albbi szempontokat tartottk szem eltt:
A csatlakozk legyenek robusztusak hiszen sok USB eszkzt, rendeltetskbl addan, sokszor csatlakoztatunk a szmtgphez, ill. vlasztunk le onnan
Ne lehessen a csatlakozt az aljzatba fordtva bedugni
A kbel kt vgn lv eszkz sszektse rtelmes legyen ne lehessen pl. a root hub kt aljzatt egy
kbellel sszektni, vagy kt perifrit egymssal kzvetlenl sszektni.
A legutbbi szempont rdekben ktfle csatlakoztpust specikltak: A s B tpust. Az A tpus (Type
A) csatlakozval csatlakozik a perifria a hubhoz, azaz az USB fban a leknek (melyek a kbeleknek felelnek
meg) a gykr fel es oldaln van A tpus csatlakoz. A B tpus (Type B) csatlakoz a kbel msik vgn
van, a perifria fel (ha az USB ft nzzk, a gyerekek fel es oldalon), persze csak akkor, ha a kbelnek az a vge
nincs xen a perifrihoz rgztve. A csatlakozkat s a lbkiosztst az 5.13. bra mutatja be.
Konfigurls
Az USB eszkzk kongurlst az USB driver vgzi a rendszer indtsakor, illetve j eszkz csatlakoztatsakor.
Mindkt esetben ugyanaz trtnik, a rendszer indtsa az USB szempontjbl olyan, mintha az eszkzket sorban
egyms utn csatlakoztatnnk. A kongurls sorn az eszkz egyedi cmet kap, ami alapjn a ksbbiekben
azonostani lehet, lekrdezik tle a tpelltsi ignyeit, az izokron svszlessg szksglett, stb.

80

5. FEJEZET. PERIFRIA CSATOLFELLETEK


Tske
1 2

3 2

4 3

Type A

Type B

Szerep

Tp (+5V)

Adat

Adat+

Fld

5.13. bra. USB csatlakozk s a tskk kiosztsa


Ha csatlakoztatunk egy eszkzt, az albbi esemnyek zajlanak le, mieltt az adatforgalomban rszt venne:
1. A hub rzkeli, hogy j eszkz csatlakozott r. Ezt onnan tudja, hogy az j eszkz rgtn magasba hzza
FS esetben a D+, LS esetben a D- jelvezetket. Teht a hub nemcsak azt ltja, hogy megjelent egy perifria
az egyik portjn, hanem azt is rgtn rzkeli, hogy teljes sebessg tvitelre kpes-e.
2. Az USB Driver idnknt vgigkrdezi a hubokat, hogy van-e jonnan csatlakoztatott perifria. Ha van,
elkezdi annak belltst.
3. Elszr is az USB driver kiad egy parancsot a hubnak, hogy kldjn reset jelet a krdses portra. A reset
hatsra az j perifria a nulls cmre kldtt tranzakcikra vlaszolni fog.
4. A nulls cmre kldtt control tranzakcik segtsgvel az USB driver mr ki tudja olvasni a perifria
eszkzler tblzatainak tartalmt. Ezekben a tblzatokban szerepelnek a perifria klnbz jellemzi:
gyrt, tpus, az eszkz jellege, paramterei, stb. (hasonlan a PCI kongurcis regisztereihez).
5. Az USB driver egy nulls cmre kldtt control tranzakci segtsgvel egyedi cmet ad a perifrinak. Ezrt
is nagyon fontos, hogy rendszerindtskor az eszkzk kongurlsa egyesvel trtnjen: garantlni kell,
hogy mindig csak egyetlen perifria hallgasson a nulls cmre, pont az, aminek pp a belltsa zajlik.
6. Ezutn az USB driver ellenrzi az j perifria eszkzler tblzatainak tartalma alapjn, hogy az eszkz
belphet-e az USB rendszerbe. Ehhez pldul szksges, hogy tpelltsi ignyt a hub ki tudja elgteni,
vagy hogy svszlessg ignye kiszolglhat legyen (pl. nem engedhet meg olyan sok izokron eszkz
csatlakoztatsa, hogy a keretenknti adatfogalmi ignyk sszessgben meghaladja egy keret kapacitst).
Ha valamilyen felttel nem teljesl, az USB driver utastja a hubot a krdses port letiltsra. Ha minden
megfelel volt, akkor a kongurci vget r, az j eszkz rszt vehet az adatforgalomban.

5.4.4. Az USB 2.0


Az USB 2.0-s szabvnyt 2000-ben jelentettk be. Az egyik legfontosabb elrelps a 480 Mb/s-os nagy sebessg
(high speed, HS) adattvitel megjelense volt, ami az USB felhasznlsi krt nagyban kiszlestette.
Fbb vltozsok az USB 1.1-hez kpest
A korbbi LS s FS eszkzk az USB 2.0-s rendszerekben is vltozatlanul mkdnek. Az USB 2.0 a korbbi
csatlakozkkal s kbeltpusokkal kompatibilis maradt, st, j kbelekre sincs szksg, mert a HS eszkzk az FS
eszkzk kbeleit hasznljk. A mobil eszkzk ignyeinek kiszolglsra a szabvny utlagos kiegsztseknt
bevezettek nhny j, kisebb mret csatlakozt is.
Az adattvitel logikja ugyanaz maradt, az USB 2.0 ugyanazokat az adattviteli mdokat tmogatja, mint
eldje. Az eszkzk kongurlsban, a tpellts szablyaiban sincs szmottev vltozs.
Megvltozott viszont a keretid, a korbbi 1ms-os keretek helyett az USB 2.0 125s-os mikrkereteket hasznl.
A 480 Mb/s-os sebessggel szmolva ez keretenknt 7500 bjtot jelent, szemben a rgebbi verzi 1500 bjtjval.
Megnveltk a tranzakcikban szllthat adatok maximlis mennyisgt, s bevezettek egy j forgalomszablyozsi technikt a keretek minl hasznosabb kitltsre is.
Nagy sebessg tranzakcik
Lssuk, miben klnbznek a HS tranzakcik az LS s FS tranzakcikhoz kpest.

5.4. AZ USB CSATOLFELLET

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

5. FEJEZET. PERIFRIA CSATOLFELLETEK


2.0-s mikr-keretek (125 s)

HS

2.0-s mikr-keretek (125 s)


HS

Egyb HS tranzakcik vgezhetk

Egyb HS tranzakcik vgezhetk

S: SSPLIT
C: CSPLIT

S: SSPLIT
C: CSPLIT

FS

FS
1.1-es keret (1 ms)

1.1-es keret (1 ms)

a) Perifria fel

b) Perifria fell
5.14. bra. Osztott bulk tranzakcik

2.0-s mikr-keretek (125 s)


S

2.0-s mikr-keretek (125 s)

S: SSPLIT
C: CSPLIT

S: SSPLIT

1.1-es keret (1 ms)

1.1-es keret (1 ms)

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+

Szerep: lefldelve host, nyitva perifria

Fld

5.16. bra. A mini s a micro USB csatlakozk s a tskk kiosztsa

5.4.5. Az USB 3.0


Az USB 3.0 szabvny (2008-ban jelent meg) legnagyobb jdonsga az USB 2.0-hoz kpest a 3.8 Gb/s-os adattviteli
sebessg megjelense, ami olyan perifrik csatlakoztatst is lehetv tette, melyeknek az USB 2.0 svszlessge
kevs volt: nagy sebessg diszkek, SSD-k, Blu-ray rk, nagy felbonts videokamerk, monitorok.

5.4. AZ USB CSATOLFELLET

83

Fbb vltozsok az USB 2.0-hoz kpest


Az j, 3.8 Gb/s-os adattviteli sebessget szupergyorsnak (Super Speed, SS) hvjk. Ilyen nagy sebessg elrse
rdekben termszetesen nagyon sok ponton alapvet vltozsokat kellett eszkzlni az USB 2.0 megoldsaihoz
kpest (tbbek kztt annyira alapveteket, hogy a jeltvitel nem egy rpron, hanem kettn zajlik, s azon is
teljesen msknt). Ezek az alapvet vltozsok sajnos a rgebbi eszkzkkel val kompatibilits rovsra mentek
volna, ami senkinek nem lett volna j, hiszen a felhasznlk a birtokukban lv sok-sok USB 2.0-s perifrit
tovbbra is hasznlni szeretnk.
A megolds az lett, hogy az USB 3.0-s tulajdonkppen kt buszbl ll: egy USB 2.0-s buszbl, ami az LS,
FS s HS tranzakcikat szlltja, valamint az j buszbl, ami az SS eszkzket szolglja ki. A kt busz teljesen
elklnl egymstl. Mint ksbb ltni fogjuk, a kbelekben is egyms mellett futnak az USB 2.0 s 3.0 vezetkei,
s a csatlakozk is gy vannak kialaktva, hogy a rgi s a 3.0-s perifrik is egyarnt csatlakozni tudjanak.
Tekintsk t elszr azt, hogy mit tartott meg az USB 3.0 az USB 2.0 megoldsaibl:
A busz tovbbra is fa szerkezet, hubokbl s perifrikbl ll
Az USB 1.1 ta hasznlt tviteli mdok (bulk, izokron, interrupt, control) megmaradtak
Az eszkzk kongurlsnak menete ugyanaz
Az eszkzler tblzatok formtuma ugyanaz (de a tartalma kibvlt)
Tovbbra is kizrlag a root hub kezdemnyezhet adattvitelt
Az LS, FS, s HS perifrik kezelse ugyangy trtnik (nem meglep, hiszen az tovbbra is a rgi buszon
zajlik)
Tulajdonkppen felhasznli szempontbl nem sok minden vltozott. Az alkalmazsok, ill. eszkzmeghajtk
tovbbra is ugyanolyan adattviteli krseket kldenek az USB drivernek, s tovbbra is a tranzakcik kpezik az
adattvitel alapegysgeit. A vltozsok csupn az adattvitel mikntjt rintik, ahogy azt a PCI s a PCI Express
kztti tmenetnl lttuk.
A szupergyors (SS) adattvitel rdekben a kvetkez vltozsokat vezettk be:
Megszntettk az zenetszrst. Mg az USB 2.0-ban a busz minden szereplje ltta a tranzakcikat, az
USB 3.0-ban kzvetlen forgalomirnytssal rnek clba az adatok. A hubok csak abba az egyetlen irnyba
tovbbtjk az adatokat, amerre a cmzett perifria tallhat.
Bevezettk a store & forward adattovbbtst: a hub a sajt tmeneti troljba helyezi el az adatokat, mg
azok teljesen meg nem rkeznek hozz, majd csak ezutn tovbbtja a megfelel kimeneti port irnyba.
Egy helyett kt rpron zajlik a kommunikci: az egyik rpron a perifria fel, a msikon a root hub fel
tart adatok utaznak (dual simplex adattvitel). A korbbi egyszer dierencilis jeltvitel helyett a PCI
Expressnl ltotthoz nagyon hasonl megoldst vezettek be: a 8 bites adategysgek bitjeit sszekeverik, s
10 biten kdoljk az ennl a sebessgnl mr nem elhanyagolhat elektromgneses interferencik hatsnak
minimalizlsra.
Javtottak a forgalomszablyozson: ha egy perifria nem ll kszen az adatok vtelre, nem kell a root
hubnak folyamatosan lekrdezgetni, maga a perifria kpes szlni, ha mr jhetnek az adatok (asynchron
notication). (Ez nem jelenti azt, hogy a perifria krhet adattvitelt! Azt tovbbra is csak a root hub teheti
meg.)
Tovbbi javts a forgalomszablyozsban: nem kell minden tranzakcit egyenknt nyugtzni, burst
zemmdban a tranzakcik mehetnek szorosan egyms utn, s a vgn egy kzs nyugta jelzi a vtel
sikert.
Lnyegesen jobb energiamenedzsment. A busz nom felbontsban szablyozni tudja a ritkn hasznlt
perifrik brenltt. Korbban, az USB 2.0-ban az zenetszrs miatt minden perifrinak folyamatosan
nyomon kellett kvetnie a forgalmat, htha neki szl tranzakci rkezik. Az USB 3.0-ban csak a cmzett
perifria kapja meg az adatot, a tbbi addig alv llapotba lphet.
Az eddigi 100mA-rl 150mA-re nveltk a perifrik szmra rendelkezsre bocstott ramot, a maximum
pedig 500mA-rl 900mA-re ntt. A 900mA mr elegend egy nagyobb merevlemez, vagy egy kisebb
fogyaszts monitor nll tpelltsra is.

84

5. FEJEZET. PERIFRIA CSATOLFELLETEK

Adattovbbts kzvetlen tvonalvlasztssal


Ebben a fejezetben egy kicsit kzelebbrl is megismerkednk az USB 3.0 szupergyors adattovbbtsnak egy
rszletvel, az tvonalvlasztssal.
Az USB drivernek pontos kpe van az USB fa mindenkori helyzetrl, hiszen rendszerindtskor s az eszkzk
csatlakoztatsakor vgzi azok kongurcijt. Pontosan tudja, hogy egy adott cmmel rendelkez perifria
hol helyezkedik el, a neki sznt adatokat mely hubokon keresztl kell szmra elkldeni. Amikor az adat egy
csomagban a perifria fel tjra indul, hozz csatol egy listt, amiben le van rva, hogy melyik tba es hub
melyik portja fel tovbbtsa az adatot. A huboknak pedig nincs ms dolga, mint eleget tenni ezeknek a csomaghoz
csatolt tvonalirnytsi informciknak.
Kicsit rszletesebben ez a folyamat a kvetkezkppen zajlik. Amikor egy hub csatlakozik a buszra, az USB
driver elkldi neki, hogy mi a mlysge (mlysg alatt azt rtjk, hogy az USB fban hnyadik szinten helyezkedik
el). A hub ezt az informcit eltrolja. Az USB 3.0-ban az USB fa mlysgt 6-ban korltoztk, vagyis az adatok
legfeljebb 5 hubon haladnak t, mieltt clba rnnek. A hub mlysge teht 1 s 5 kz kell, hogy essen. Ennek
megfelelen minden csomag egy 5 elembl ll listt tartalmaz (route string), aminek az n. eleme azt jelenti,
hogy a tovbbts n. lpsben a hub melyik portjra kldje tovbb a csomagot. A route string minden eleme
egy 4 bites szm, ugyanis egy hubnak nem lehet 15-nl tbb portja. Pldul, ha egy hub mlysge n, s kap egy
csomagot, akkor a csomagban lv route string n. elembl fogja tudni a tovbbts irnyt. Ha az n. elem nulla,
akkor a csomag cmzettje maga a hub, ellenkez esetben az n. elem egy kimeneti portot azonost.
Kbelek s csatlakozk
Az USB 3.0-ban, ahogy lttuk, tulajdonkppen kt busz dolgozik, az egyik az LS, FS s HS, a msik az SS
tranzakcikat bonyoltja. Ennek megfelelen az A s B tpus csatlakozkat is kt rszre bontottk (lsd 5.17.
bra). Az A tpus csatlakozt gy alaktottk ki, hogy be lehessen dugni rgi, USB 2.0 aljzatba is, de tartalmaz
mg egy tskesort, ami, USB 3.0 aljzatba dugva, az j szupergyors adattvitelt szolglja ki. gy, ha egy USB 3.0-s
eszkzt 2.0-s aljzatba helyeznek, megmarad a lehetsg, hogy ha lassabban is, de az eszkz zemelni tudjon. A
B tpus csatlakoznak is kt rsze van, a fels rsze felels az SS tvitelrt. Az USB 3.0 perifrikon tallhat
aljzat fogadni tudja a 2.0-s kbeleket is, de nyilvn ilyenkor a szupergyors sebessgrl le kell mondani.

5.17. bra. A s B tpus csatlakozk USB 3.0-ban


A lbkiosztst az 5.2 tblzat tartalmazza. A tpfeszltsg (+5V s GND), valamint a 2.0-s jelvezetk (D- s
D+) mellett egy j rpr felels a perifria fel irnyul SS adatforgalom (SSRX- s SSRX+), valamint a root hub
fel irnyul SS adatforgalom (SSTX- s SSTX+) szlltsrt.
A B tpus csatlakozk kt extra lbbal rendelkeznek (DPWR s DGND), melyek specilis clokat szolglnak.
Ezeken a lbakon maga a perifria tud tpfeszltsget szolgltatni a r kapcsold eszkznek. Ennek ltszlag nincs
sok rtelme (hiszen pont a perifrit szeretnnk tpllni), de ez teszi lehetv a vezetknlkli USB megvalstst.
A vezetknlkli tvitelhez kell egy USB aljzatba dughat ad-vev pr. Az egyiket a megfelel hubra kell
csatlakoztatni, ez a hubbl vehet fel tpfeszltsget, a msikat pedig a perifria B aljzatba, ez pedig errl a
kt lbrl (DPWR s DGND) jut tpfeszltsghez. Ilyenkor a perifria tpelltst termszetesen kls mdon
(akkumultorrl, vagy hlzati tpegysgrl) kell megoldani.
Vgl, de nem utolssorban az USB 3.0 csatlakoznak is van mobil eszkzkhz val micro megfelelje (5.18.
bra).
10 9 8 7 6

5 4 3 2 1

5.18. bra. Micro USB 3.0 csatlakoz

5.4. AZ USB CSATOLFELLET

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

5.2. tblzat. USB 3.0 csatlakozk lbkiosztsa

86

5. FEJEZET. PERIFRIA CSATOLFELLETEK

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.

6.1. Adattrols merevlemezen (HDD)


Az els, szmtgpes httrtrknt szolgl forglemezes adattrolt az IBM fejlesztette ki. Hosszas kutatfejlesztmunka eredmnyeknt 1955-ben mutattk be, majd 1956-tl forgalmaztk RAMAC 305 nven (6.1. bra).
Ez a szekrny mret httrtr mgneses elven mkdtt, s tulajdonkppen a mai merevlemezek snek tekinthet. A mai merevlemezek azta is ugyanazon az elven mkdnek, ugyanazokbl a komponensekbl ptkeznek,
csupn a dimenzik vltoztak az vek mlsval. A RAMAC 305 slya 1 tonna volt, 50 darab 24 colos lemezbl llt
(minden lemez mindkt oldalon trolt adatot, vagyis 100 adathordoz fellete volt), melyek kztt kt r/olvas
fej liftezett fl-al. Minden lemez 100 svot tartalmazott, elrsi ideje 1 s volt, s az egsz rendszer sszesen 5
milli 6 bites karakter trolsra volt kpes.

6.1. bra. A vilg els merevlemeze

6.2. bra. Az 1 colos Hitachi Microdrive

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).

6.1.1. A forglemezes adattrols elve


A forglemezes adattrols a fonogral kezddtt, ahol a lemezek svjaiban a mlyedsek hordoztk a (mechanikai
jelleg) informcit. Az optikai meghajtk s a merevlemezek ugyanezen az elven mkdnek, a klnbsg csak
87

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.

6.3. bra. Az adatok helynek azonostsa

6.1.2. Mgneses adattrols


A mgneses adattrolk a ferromgneses anyagok tulajdonsgait hasznljk ki. A ferromgneses anyag jellemzje,
hogy kls mgneses tr hatsra mgnesess vlik, s tartsan az is marad a kls mgneses tr eltvoltsa
utn is. Ilyen anyag pldul a vas, a kobalt, a nikkel. A ferromgneses anyag kis cellkbl, mgneses domnekbl
ll, melyeken bell a spinek irnya azonos, vagyis az atomok mgneses momentuma azonos. A domnen bell
teht ers mgneses tr van. Ennek ellenre az anyag (pl. egy darab vas) nem felttlenl mgneses, hiszen a
domnek mgnesessgnek irnya vletlenszer lehet, sszessgben kioltva egyms hatst. Kls mgneses tr
hatsra azonban a domnek a tr irnyval prhuzamosan rendezdnek (6.4. bra). A domnek j, egyirny
elrendezdse a kls mgneses tr eltvoltsa utn is megmarad, ezzel az anyag mgnesess vlik. Ez az llapot
az anyag szmra ugyan nem minimlis energij, de nagyon stabil.

a) Kls mgneses tr hatsa eltt

b) Kls mgneses tr hatsra

6.4. bra. Ferromgneses anyagok domn szerkezete s viselkedse

6.1. ADATTROLS MEREVLEMEZEN (HDD)

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.

6.5. bra. Az rsi folyamat


A mgneses mintzat visszaolvasshoz a lemez ltal kibocstott mgneses mezt (6.6. bra) kell valamilyen
rzkelvel detektlni. Az ilyen gyenge mgneses mezk irnynak meghatrozsa azonban a gyakorlatban
kivitelezhetetlen. E helyett a merevlemez olvasfeje a mgneses mez megvltozst kpes rzkelni. Az bra
pldjn az els s a msodik, valamint a harmadik s negyedik szakasz kztt vltozik meg a mgneses mez
irnya. Az adatok trolsnak szoksos mdja, hogy a mgneses mez megvltozsa jelenti az 1-es, a meg nem
vltozsa pedig a 0-s bitet. Teht az brn lthat mgneses mintzathoz az 101 bitsorozat tartozik. Ennek
az adattrolsi mdnak van egy mlyrehat kvetkezmnye: a biteket nem lehet egyesvel mdostani, hiszen
ha egy bitet meg akarunk vltoztatni, akkor az utna kvetkez sszes szakaszon ellenttre kell vltoztatni a
mgneses mez irnyt, hogy a tbbi bit rtke ne vltozzon meg. Ez az oka annak, hogy a merevlemezeken
minden rsi/olvassi mvelet alapegysge egy nagyobb blokk. Csak teljes adatblokkot lehet rni a merevlemezre,
illetve leolvasni onnan.

6.6. bra. Az adathordoz ltal kibocstott mgneses tr

6.1.3. A merevlemezek felptse


A merevlemezek felptst a 6.7. brn lthatjuk. A legfontosabb alkatrszek s szerepk:
Jl zr alumnium hz. Mivel a merevlemezben a fej s a lemez kztt nagyon kicsi a tvolsg, a legkisebb
bejut szennyezds is katasztroflis hibt okozhat.
A lemez(ek) (disk) felsznn tallhat a mgneses adathordoz rteg.
A motor folyamatosan, meglls nlkl forgatja a lemezt.
Az r/olvas fej (head) felels a trolt adatoknak megfelel mgneses mintzat ltrehozsrt, illetve
leolvassrt.
A fejszerkezet (attractor) a fejszerkezet mozgat motor segtsgvel a lemez (radilisan) megfelel pontjra
mozgatja a fejet.
A tovbbiakban ttekintjk ezeknek az alkatrszeknek a mkdsi elvt, tulajdonsgait.

90

6. FEJEZET. HTTRTRAK

6.7. bra. A merevlemezek felptse


A lemezek. A merevlemezek mkdse a lemezek anyagval szemben sok kvetelmnyt tmaszt. A lemeznek
vkonynak kell lennie, hogy ne foglaljon el tl sok helyet; knnynek kell lennie, hogy knny legyen forgatni;
merevnek kell lennie, hogy ne torzuljon, s ne rezonljon, amikor nagy sebessggel forog. Ezen kvl simnak kell
lennie, hogy a fej a lemez felsznn tallhat mgneses adathordoz rteghez minl kzelebb kerlhessen annak
rintse nlkl. A lemez felsznre felvitt mgneses hordoznak nagy adatsrsg mellett is stabil mgneses
tulajdonsgai kell, hogy legyenek (jl azonosthat legyen a mgnesezettsg irnya).
A gyakorlatban a merevlemezek lemezei tbb rtegbl llnak. A lemezek alapja, a szubsztrt, ltalban alumnium, amire egy vkony nikkel-foszfor rteget visznek fl, mert azt nagyon simra lehet polrozni. Napirenden
van az alumnium lecserlse a hre s mechanikai srlsre kevsb rzkeny vegre, vagy kermira, melyek
ugyan trkenyek, de a mai kis lemez tmr mellett ez mr nem olyan nagy htrny (az veg szubsztrt lemezek gyrtst 2010-ben kezdtk el, mr tbb kereskedelmi termk is alkalmazza, fleg a 10.000 fordulat/perc
sebessggel forg nagy sebessg tpusok).
A szubsztrtra kerl a kb. 25 nm vastagsg ferromgneses adathordoz rteg, melynek anyaga kobalttal
kevert vas-oxidot, krm-dioxidot, brium-ferritet s egyb fmeket tartalmaz. E fl felvisznek egy 10 nm vastag
szn rteget, hogy az adathordoz rteg ne legyen kzvetlenl kitve a krnyezeti hatsoknak, majd a lemez
felsznt 1 nm vastagon kenanyaggal vonjk be.
A motor. A merevlemezben minden lemezt egy kzs motor hajt. A motornak nagy megbzhatsgnak kell
lennie, hiszen veken t tart mkdst s esetleg tbb tzezer ki/be kapcsolst is ki kell brnia. A fej pontos
pozicionlsa rdekben csak az egszen minimlis vibrcival rendelkez tpusok jhetnek szba. Fontos, hogy
kicsi legyen a fogyasztsa, ellenkez esetben a motor okozta melegeds cskkenten a merevlemez lettartamt.
Lnyeges szempontok az tsllsg s az alacsony mkdsi zaj is.
Az r/olvas fej. Napjaink merevlemezeinek rfeje ugyanazon az induktv elven mkdik, mint a legels
merevlemezek. Az induktv rfej egy gyr alak magbl (anyaga vas, vagy vas-nikkel tvzet), s a rtekert
tekercsbl ll. A gyr a lemez fel es feln meg van szaktva, egy egszen apr rs van rajta. Amikor a tekercsen
ram halad t, mgneses teret indukl a magban, melynek irnya a tekercsben foly ram irnytl fgg. A
gyrn lv rs kt oldala kt, ellenttes irny mgneses plust kpez. A rsnl a mgneses uxus kilp a
magbl, s ez a mgneses uxus mgnesezi a lemez adathordoz rtegt (6.8. bra). Az rfejek gyrtsra a 80-as
vektl kezdve egy nagyon hatkony, nagy pontossg s olcs technolgit sikerlt kifejleszteni.
Egszen a 90-es vekig az imnt megismert induktv rfejet hasznltk a merevlemez tartalmnak leolvassra
is. Olvass esetn a tekercsre nem adunk ramot. Ahogy a fej mozog az adathordoz rteg fltt, a hordoz
mgneses mezjnek vltozsa ramot indukl a tekercsben, amit az elektronika bitsorozatt alakt. Mint ahogy
korbban emltettk, a fej csak a vltozst rzkeli, teht akkor kapunk ramot, ha kt szomszdos szakasz
mgnesezettsgnek irnya nem azonos. Vltozs esetn 1-es, annak hinya esetn 0-s bitet regisztrlunk.
Sajnos a mgneses mez vltozsa ltal induklt ram nagyon kicsi. A 90-es vekben olyan olvas fejeket

6.1. ADATTROLS MEREVLEMEZEN (HDD)

91

6.8. bra. Induktv r fej


fejlesztettek ki, melyek a mgneses ellenlls (magnetoresistance) jelensgn alapulnak, azaz kihasznljk, hogy
bizonyos anyagok ellenllsa fgg a mgneses mez vltozstl. Az ezen az elven mkd olvasfejeket MR
fejeknek nevezik. Az MR fejre lland ramot adnak, s a mgneses mez vltozst a fejen es feszltsg mrsvel
lehet detektlni (lsd: Ohm trvnye). Az MR fejeket ksbb tovbbfejlesztettk, specilis, tbbrteg felptssel
mg hatkonyabb, rzkenyebb tettk. Ezeket a tovbbfejlesztett fejeket GMR nven 1997 ta alkalmazzk. Az
MR s a GMR fej csak olvassra alkalmas, ezrt ezek hasznlata esetn egy kln induktv rfejre is szksg van
(6.9. bra).

rnykols

Induktv rfej

GMR olvasfej

B
B

Lemez mozgsi irnya

6.9. bra. GMR olvas fej induktv r fejjel (rajz: Michael Xu, Hitachi)

6.1.4. Az adatok szervezse a merevlemezen


Adategysgek
Ahogy mr korbban belttuk, a mgneses adattrols tulajdonsgai miatt csak nagyobb adategysgeket, blokkokat
lehet a merevlemezre rni, illetve leolvasni onnan. Ez rgtn felvet egy krdst: vltoz blokkmretet hasznljunk,
ami a trolt adatok mrethez pontosan igazodik, vagy deniljunk x mret blokkokat, melyekkel knnyebb
bnni, de semmi kze a trolt adatok szerkezethez. Mindkettre van plda a gyakorlatban.
Az IBM nagygpes rendszerei, a mainframe-ek egszen a 90-es vekig az gynevezett Count-Key-Data formtumot (CKD) alkalmaztk az adatok trolsra. A CKD rendszerben vltoz mret adategysgeket hasznlnak
(pl. egy teljes fjl egyben kerl a merevlemezre), melyeket kt mezvel ltnak el: a Count mez a blokk mrett,
a Key pedig egy hozzrendelt azonostt adja meg (a Key mez alapjn lehet adatokat keresni). A merevlemezen teht ilyen mret-kulcs-adat hrmasok sorakoznak egyms utn, rvidebbek s hosszabbak vegyesen.
Ennek a megoldsnak az az elnye, hogy pontosan alkalmazkodik a trolt adatok mrethez, htultje, hogy
a merevlemez szabad terletei tredezettek lesznek. Ugyanis kisebb-nagyobb blokkok sorozatos ltrehozsa s
trlse nyomn a szabad terlet is kisebb-nagyobb lyukakbl fog llni. Megeshet, hogy egy j, nagy mret
blokk mr egyik lyukba sem fr bele, pedig sszessgben lenne elg szabad terlet a merevlemezen. Hogy ez ne
fordulhasson el, idnknt ssze kell tolni a trolt adatokat, hogy a szabad hely egy sszefgg terletet alkosson.
Ez a mvelet a defragmentls, a szabad terletek tredezettsg-mentestse, ami egy idignyes mvelet.
A vltoz adategysgek alkalmazsnak ma mr egyeduralkod alternatvja a x adategysgek hasznlata.
A x hossz blokkokat szektornak hvjk. A ma hasznlatos merevlemez illeszt felletek (ATA, SCSI, FC
lsd ksbb) mind x mret szektorokkal dolgoznak. A leggyakoribb szektormret 512 bjt, ez az ATA

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.

6.10. bra. A szektorok felptse


A 6.10. brn lthatjuk, hogy a merevlemez hogyan trol egy szektort. A szektorokat rs (gap) vlasztja el
egymstl. Erre azrt van szksg, hogy ha az r fej a kelletnl egy kicsit ksbb kapcsolna ki, ne rjon bele
a kvetkez szektorba. Hogy mirt is kapcsolna ki kicsit ksbb az r fej? Ne felejtsk el, hogy ez egy mozg
(mgpedig igen gyorsan mozg) alkatrszekbl ll nagy adatsrsggel dolgoz zikai rendszer, hajszlpontos
mkdst egyszeren kptelensg garantlni. Ezrt, ahogy a kvetkezkben megismerjk az adatok trolsnak
s elrsnek mdjt, j pr ponton ltunk majd ehhez a szektorkzi rshez hasonl megoldsokat, melyek
egy kis biztonsgi tartalkot jelentenek, hogy a mkdsbeli bizonytalansgok ne okozzanak krt. A rst egy
eltag (preamble) kveti. Ez egy specilis mgneses mintzat, mely alapjn a fej bekalibrlhatja a hordozn lv
mgneses jel amplitdjt s frekvencijt, azaz megllapthatja, hogy mennyit kell a jelen ersteni, s hogy
milyen srn kvetik egymst az adatok az adott szektorban. Az eltag utn egy adat kezddik (address mark)
jelzi a fejnek, hogy vge a kalibrlsnak, jnnek az adatok. Az adatokat hibadetektlsra szolgl ellenrz sszeg
(CRC, Cyclic Redundancy Check), s a nhny hiba kijavtst lehetv tev hibajavt kd (ECC, Error Correcting
Code) kveti. A szektor vgn van egy kis tltelk terlet (Flush Pad), ami alatt a szektorbl kiolvasott utols
bjtok is elhagyjk a fejet, a dekdert s a hibajavt (ECC) ramkrket.
Az adatok azonostsa
Ahhoz, hogy szektorokat rjunk a merevlemezre, illetve olvassunk vissza onnan, tudnunk kell azonostani ket. Mr
lttuk, hogy egy adat, ill. szektor helyt 3 dimenziban adhatjuk meg: radilis tvolsg (r), egy referenciaponthoz
kpesti szg (), illetve az adathordoz rteg (z).
A szektorok a forglemezes adattrolkban krkrsen helyezkednek el, vagy koncentrikus krkben, vagy
spirlisan (6.11. bra). A merevlemezekben a koncentrikus krk, az optikai meghajtkban pedig a spirlis
elhelyezs az egyeduralkod.

a) Svok koncentrikus krkben

b) Spirlis elrendezs

6.11. bra. Szektorok elhelyezkedse az adathordozn


Most bevezetjk a merevlemezek vilgban hasznlatos, szektorok azonostsra szolgl terminolgit:
Az azonos adathordoz rtegen fekv, azonos radilis tvolsggal rendelkez szektorok alkotjk a svokat
(track). Teht az ugyanazon a svon lv szektorok koordinti csak a szgben () trnek el.

6.1. ADATTROLS MEREVLEMEZEN (HDD)

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

6.12. bra. Logikai cmek lekpzse zikai cmekre

Zna rendszer adattrols


A merevlemezek lemezei lland szgsebessggel forognak. Rgebben, az egyszersg jegyben, minden sv
ugyanannyi szektort tartalmazott, hiszen ekkor svtl fggetlenl ugyanannyi ideig tart minden szektor rsa/olvassa. Ha a 6.13. bra a) rszt nzzk, lthatjuk is ennek a megoldsnak a htrnyt: ha minden szektorra
ugyanannyi idt sznunk, akkor a lemez kls feln lv szektorok sokkal nagyobb helyet foglalnak, mert a

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

10000 20000 30000 40000 50000 60000 70000 80000 90000


Sv

6.14. bra. A svonknti szektorszm a Hitachi Travelstar 5K160 HDD-ben


A Hitachi Travelstar 5K160 (160 GB-os) merevlemez pldul 24 znra osztja fel 90575 svjt gy, hogy a
svonknt szektorszm 576 s 1116 kztt alakul (a 6.14. bra, [2]).
Mivel a perem fel es znk rsi/olvassi sebessge nagyobb, a ZBR-rel a merevlemez tlagos adattviteli
sebessge is javul, annl is inkbb, mert a perem fel es gyors znkban tbb a szektor, mint a lemez belsejbe
es lass znkban.
Megjegyezzk, hogy a vltoz krsebessg problmjt az optikai meghajtk msknt oldottk meg. Az
olcsbb optikai meghajtk (ltalban azok, amik nem tudnak rni) a msik utat vlasztottk: az adatsebessget

6.1. ADATTROLS MEREVLEMEZEN (HDD)

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.

6.15. bra. A szerv informcik helye a lemezen


A svazonost kt rszbl ll: az els rsze a krcikk egszn vgighzdik szerv index, megadja, hogy
a lemezen ez ppen hnyas szm szerv terlet, a msodik rsz pedig a sv szmt tartalmazza. A fej az
elbbi segtsgvel a szg (), az utbbival a radilis (r) pozcijt tudja beazonostani, s szksg esetn ennek
megfelelen tud korriglni.
A svtartst ktfle mgneses mintzat (A s B) sakktblaszer elhelyezsvel segtik. A kt mintzat
kztti hatr pont a svok kzpvonalra esik. Optimlis esetben, ha a fej pp a sv kzpvonaln halad, akkor egy
szerv terlet keresztezsekor egyforma ersen rzkeli az A s B mintzatot. Ha az egyiket ersebben rzkeli,

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.

6.16. bra. A szerv informcik felptse

6.1.5. A merevlemezek teljestmnyjellemzi


A merevlemezek teljestmnyt az albbi mennyisgekkel szoks jellemezni:
Vlaszid (Response Time): a parancs merevlemezbe rkezstl az adattvitel befejezdsig eltelt id
Kiszolglsi id (Service Time): a parancs feldolgozsnak kezdettl az adattvitel befejezdsig eltelt id
tviteli sebessg (Throughput): tviteli sebessg alatt ktfle dolgot rthetnk. A kiszolglt adattviteli
krsek szmt msodpercenknt (I/O operations per second, IOPS), valamint az tvitt adatok mennyisgt msodpercenknt (pl. MB/s-ban mrve). A kt mennyisg nem fggetlen egymstl: tvitt adatok
mennyisge msodpercenknt = IOPS krsenknti adatmennyisg.
Egyes illesztfelletek, mint pldul az ATA s a SATA-1 (6.3. fejezet) elrjk, hogy a kvetkez krst csak
akkor lehet elkldeni a merevlemeznek, ha az mr befejezte az elz feldolgozst. Ebben az esetben vlaszid
megegyezik a kiszolglsi idvel.
Ms illesztfelletek, mint a SATA-2 vagy a SCSI megengedik, hogy a merevlemez egy vrakozsi sorban
raktrozza a hozz rkezett, de mg fel nem dolgozott adattviteli krseket (a SATA 32, a SCSI 256 igny
vrakoztatst engedi meg). Ebben az esetben a vlaszid a sorban lls vrakozsi idejnek s a kiszolglsi
idnek az sszege lesz.
A vrakozsi sor kezelse
Ha tbb adattviteli krs is vrakozik a sorban, a merevlemez maga dnt a kiszolgls sorrendje fell, lehetleg
gy, hogy sszessgben a lehet legkisebb fejmozgssal s forgssal vgre tudja hajtani mindet.
A vrakozsi sor alkalmazsa s a kiszolgls sorrendjnek optimalizlsa a merevlemez teljestmnyt nagy
mrtkben javtani tudja. A 6.17. brn lthat pldban az optimalizlt sorrend szerinti kiszolgls fele annyi
lemezfordulat alatt kiszolglta a 4 adattviteli krst az optimalizls nlkli esethez kpest.
Nhny gyakran hasznlt stratgia a vrakozsi sorbl a kvetkez parancs kivlasztsra (teht a parancstemezsre):
Kizrlag a seek idre optimalizl stratgik. Ebbe a krbe tartozik az SSTF (Shortest Seek Time First) s a
LOOK (Elevator Seek). Az SSTF mindig azt az ignyt vlasztja ki a sorbl, amelyik a fej aktulis pozcijhoz
legkzelebbi cilinderre vonatkozik. Sajnos az SSTF temez nem fair, mert a lemez kzepre vonatkoz
krseket favorizlja. Az SSTF-nl igazsgosabb a LOOK temezs, melynek lnyege, hogy a fej elindul a
lemez belseje fell a kls perem fel, s az tba es krseket sorban kiszolglja. Ha elrte a kls peremet,
visszafordul, s a lemez belseje fel haladva megint kiszolgl minden tjba es ignyt.

6.1. ADATTROLS MEREVLEMEZEN (HDD)

97

2
1

Kiszolgls rkezsi sorrendben

Kiszolglsi sorrend optimalizlsa

6.17. bra. Hozzfrsi idk a kiszolglsi sorrend optimalizlsval s anlkl


Teljes hozzfrsi idre optimalizl stratgik. Az elbb ltott temezk nem szmolnak a forgsi ksleltetssel. Elfordulhat, hogy idben jobban megri kicsit messzebb es cilinderre vltani, ha a lemez
hamarabb odaforog a keresett szektorral. Az SATF (Shortest Access Time First) temez azt az ignyt
vlasztja ki a sorbl, amelyik a leghamarabb rhet el a merevlemez szmra, mind a seek, mind a forgsi
ksleltets gyelembe vtelvel. Az SATF lnyegesen hatkonyabb, mint az SSTF vagy a LOOK, klnsen,
ha hosszak a vrakozsi sorok, bven van igny, amibl lehet vlogatni. Az SATF legnagyobb gondja,
hogy pontos seek prole-t ignyel, azaz pontos idadatokra van szksg, hogy az a cilinderbl milyen
sokig tart seek-elni a b cilinderre (amihez a cilinderek tbb tzezres szma mellett risi tblzat, vagy
valami j kzelts kell).
A 6.17. bra jl mutatja, mennyivel jobb a teljes hozzfrsi idre optimalizl stratgia (jobb oldal), mint a
pusztn seek idre optimalizl (bal oldal).
A kiszolglsi id sszetevi
Miutn a merevlemez parancstemezje kivlasztott egy parancsot a vrakozsi sorbl, vgre kell hajtania, ki
kell szolglnia azt. Egy adattviteli igny kiszolglsa tbb sszetevbl ll. Egy olvassi igny sszetevi a
kvetkezk (6.18. bra):
Parancsfeldolgozsi ksleltets (Command Overhead). A parancsfeldolgozsi ksleltets az az id, amit a
merevlemez mg/mr nem a parancs tnyleges vgrehajtsra fordt, hanem annak el-, ill. utfeldolgozsra. A merevlemezben a parancsok vgrehajtsnak koordinlst egy mikroprocesszor vgzi. Az igny
kiszolglsnak kezdetekor ez a mikroprocesszor rtelmezi a parancsot, valamint az igny kiszolglsnak
lezrsaknt a mikroprocesszor jelzi a vezrl fel a mvelet vgt, teht parancsfeldolgozsi ksleltets a
vgrehajts elejn s vgn is felmerl.
Seek id. A seek id az az id, amg a fej az aktulis tartzkodsi helyrl elindulva elri a parancs ltal
kijellt cilindert. Elssorban a lemez tmrjtl, s a fejszerkezet slytl fgg.
Forgsi ksleltets. Ha a fej elrte a kvnt cilindert, meg kell vrni, hogy a kijellt szektor beforogjon a fej
al. A forgsi ksleltets fordtottan arnyos a lemez forgsi sebessgvel.
Leolvass a hordozrl. Miutn a fej a lemez megfelel pozcijba kerl, indulhat az adatok leolvassa a
mgneses hordozrl. Ennek a sebessgt az hatrozza meg, hogy milyen gyorsan forog a lemez, s hogy
milyen srn helyezkednek el az adott svban a szektorok.
Adattviteli id. A leolvasott adatok tovbbtsa a meghajt illesztfelletn.

98

6. FEJEZET. HTTRTRAK
Parancsfeldolgozsi ksleltets:

1 ms

tlagos seekid olvasskor:

11 ms

tlagos seekid rskor:

13 ms

Forgsi sebessg:
Szektorok mrete:
Maximlis adattviteli sebessg:

5400 RPM (fordulat/perc)


512 bjt
100 MB/s

6.1. tblzat. A Hitachi Travelstar 5K160 160 GB-os merevlemez paramterei


Ha elg gyors az illesztfellet, akkor a leolvassi s az adattviteli idket t lehet lapolni: egy leolvasott szektor
mr tvihet az illesztfelleten, mikzben a fej a kvetkez szektort olvassa.
Parancsfeldolgozsi ksleltets

Seek id

Forgsi ksleltets
Adattvitel a hordozrl
Adattvitel az illesztfelleten

6.18. bra. Egy olvassi igny kiszolglsi idejnek sszetevi


A nagysgrendek rzkeltetse kedvrt vegyk egy gyakorlati pldt. A Hitachi Travelstar 5K160 (160 GB,
SATA) merevlemez gyri adatlapjn ([2]) a 6.1. tblzatban sszefoglalt adatokat talljuk1 .
Elszr szmoljuk ki egy egyetlen szektor olvassra vonatkoz adattviteli krs kiszolglsi idejt, feltve,
hogy a szektor a 8000-es svban van! Az adatlap szerint ebben a svban 1104 szektor tallhat.
Parancsfeldolgozsi ksleltets: ez adott, 1 ms.
Seek id: szintn adott, 11 ms.
Forgsi ksleltets. Elszr kiszmoljuk egy teljes krlforduls idejt a forgsi sebessg ismeretben:
Tfordulat =

60 sec/perc 1000 ms/sec


5400 fordulat/perc

= 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.

6.2. FLVEZET ALAP HTTRTRAK (SSD)

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.

6.2. Flvezet alap httrtrak (SSD)


Az SSD (Solid-State Drive) httrtrakban az adatokat flvezet alap memria trolja. Mivel a HDD-kkel szemben
az SSD-k nem tartalmaznak mozg alkatrszt, a mechanikai behatsokra, tsekre, vibrcira ellenllbak, s
mkdsk nem jr zajjal.
Klnfle memria technolgikon alapul SSD-ket mr az 1970-es vek ta hasznlnak adatok trolsra. Mi
a tovbbiakban SSD alatt a modern, ash memria alap SSD-ket rtjk. A ash memria jellegzetessge, hogy
az adatokat tpellts nlkl is megrzi. Az els ash alap SSD-t az M-Systems fejlesztette ki 1995-ben. Ezek a
kezdeti modellek nem voltak meggyzen gyorsabban a HDD-knl, az ellltsuk is nagyon kltsges volt, de a
j tsllsg s az extrm hmrskletek tolerlsa miatt hadszati clokra ideliss vltak.
Ahogy teltek az vek, rengeteg pnzt s energit fektettek a flvezet alap adattrols fejlesztsbe. Kezdetben
drga, prmium kategris termknek szmtottak, majd 2004-ben megjelent az els SATA illesztfellettel
elltott SSD. Ezt az SSD-t az Adtron gyrtotta, kapacitsa 16 GB, ra pedig 11.000$ volt. Ettl kezdve az r
zuhanreplsbe, a kapacits pedig meredek emelkedsbe kezdett. 2007-ben kvetkezett be a robbans, az
rak s a trolsi kapacits ekkor rte el szleskr elterjedshez szksges kritikus szintet. A 2011-es, nagy
merevlemezgyrtkat sjt thaifldi rvz pedig megadta a vgs lkst az SSD szektornak: ma mr a HDD-vel
sszemrhet ron (igaz, kisebb kapacits mellett) be lehet szerezni a HDD-knl idkzben lnyegesen gyorsabb
vlt SSD-ket.
A korbbiakban lttuk, hogy a HDD-nek vannak htrnyos jellemzi, most majd ltni fogjuk, hogy bizony az
SSD-nek is vannak. Nem lehet ltalnossgban kijelenteni, hogy az SSD jobb, mint a HDD, mg csak az sem
igaz, hogy mindig gyorsabb (van az adattviteli krseknek olyan sorozata, amit a HDD gyorsabban szolgl ki).
Ezrt is fontos megrteni mindkt technolgia elnyeit s htrnyait, hogy a konkrt felhasznls ismeretben, az
elnyk s htrnyok mrlegelsvel a lehet legjobb dntst tudjuk hozni.

6.2.1. Az adattrols elve a flash memriban


A ma kaphat SSD trolk tlnyom tbbsgben az elemi adategysgeket, a biteket gynevezett lebeg gate-es
tranzisztorok (oating gate transistor) troljk. Nem clunk a lebeg gate-es tranzisztorok minden rszletre

100

6. FEJEZET. HTTRTRAK
Vannak elektronok

Nincsenek elektronok

Norml gate fesz.

Zr

Zr

Kisebb gate fesz.

Nyit

Zr

Gate fesz. = 0V

Nyit

Nyit

6.2. tblzat. A lebeg gate-es tranzisztor mkdse


kiterjed ismertetse, s nem felttelezzk a hagyomnyos tranzisztorok ismerett sem, de egy ttekint kp
mindenkpp szksges az SSD-k sajtossgainak megrtshez.
Egy hagyomnyos MOSFET tranzisztornak (MetalOxideSemiconductor Field Eect Transistor) 3 elektrdja
van: a gate, a source, s a drain. A gate-re adott feszltsggel lehet szablyozni a source s a drain kztt foly
ram erssgt. Ha kapcsolknt mkdtetjk a tranzisztort, akkor ez a kvetkezt jelenti:
Ha nem adunk feszltsget a gate-re, akkor a source s a drain kztt nem folyik ram, a tranzisztor ltal
reprezentlt kapcsol nyitott llsban van.
Ha a Gate-re megfelelen nagy feszltsget adunk (voltage threshold, VT , ltalban 0.5V), akkor a Source s
a Drain kztt ram tud folyni, a tranzisztor ltal reprezentlt kapcsol zrt llsban van.
A lebeg gate-es tranzisztor ehhez kpest annyiban tr el, hogy kt gate-et tartalmaz (6.19. bra). A vezrl
gate szerepe ugyanaz, mint a FET-ben, vagyis ezzel lehet szablyozni a source-drain ramot. A lebeg gate (ami
nincs kivezetve) viszont olyan, mint egy ketrec, amibe elektronokat lehet zrni. A tranzisztor msknt viselkedik,
ha a lebeg gate-jben van elektron, mint ha nincs. Az elektronokat klnfle ton-mdon lehet a lebeg gate-be
knyszerteni, illetve onnan eltvoltani (lsd ksbb), a lnyeg, hogy ha a lebeg gate-be elektronokat zrtunk,
akkor azok mindenfle tpellts nlkl, hossz tvon (vtizedekig) ott is maradnak.

Vezrl gate

Drain
Elektronok

Vezrl
gate

Lebeg gate

Source
Lebeg
gate

Szigetel
oxid

Source

Drain
Flvezet szubsztrt

6.19. bra. Lebeg gate-es tranzisztorok ramkri jele s felptse


A lebeg gate-es tranzisztorban az elektronok jelenlte a zrshoz szksges VT feszltsget befolysolja a
kvetkez mdon (lsd mg 6.2. tblzat):
Ha vannak elektronok a lebeg gate-ben, akkor a lebeg gate-es tranzisztor egy hagyomnyos FET-knt
mkdik (ekkor VT jellemzen 0.5V krl van).
Ha nincsenek elektronok a lebeg gate-ben, akkor a tranzisztort sokkal kisebb gate feszltsggel is zrni
lehet (VT kisebb lesz).
Ezek ismeretben a lebeg gate-es tranzisztort a kvetkezkppen hasznlhatjuk adattrolsra:
Adatok reprezentlsa. Egy tranzisztor egy bitet trol (SLC esetben lsd ksbb). Ha a lebeg gate fel van
tltve elektronokkal, az 0-s bitet, ha nincs, az 1-es bitet jelent.
Adatok kiolvassa. A 6.2. tblzat alapjn gy olvashatjuk ki a trolt bit rtkt, hogy kis feszltsget adunk
a vezrl gate-re, s megnzzk, hogy folyik-e ram a source s a drain kztt. Ha igen, akkor 1-es bitet, ha nem
folyik ram, 0-s bitet trol a tranzisztor (6.20. bra).

6.2. FLVEZET ALAP HTTRTRAK (SSD)

101

6.20. bra. A trolt bit kiolvassa a lebeg gate-es tranzisztorbl


Vlts 1-bl 0-ba. Ennek a mveletnek programozs a neve. Ehhez a vltshoz a lebeg gate-et elektronokkal
kell feltltennk. Ezt gy rhetjk el, hogy a source-ot lefldeljk, a vezrl gate-re s a drain-re nagy feszltsget
adunk. Ilyenkor a nagy energij elektronok tjutnak a lebeg gate s a szubsztrt kztti szigetel rtegen, s a
lebeg gate-ben is maradnak (6.21. bra).
12V
Drain
6V

Vezrl gate

Vezrl
gate
0V

12V

Source
0V

6V

Lebeg gate

Source

Drain
Flvezet szubsztrt

6.21. bra. Programozs: vlts 1-bl 0-ba

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

6.22. bra. Trls: vlts 0-bl 1-be


A programozsnak s a trlsnek azonban van egy igen kellemetlen mellkhatsa: a lebeg gate-be knyszertett, illetve az azt elhagy elektronok nha beleragadnak a szigetelrtegbe, s ott is maradnak. Ettl a
szigetelrtegnek megvltoznak az elektromos tulajdonsgai, a tranzisztor zrshoz szksges VT feszltsg
pedig emiatt eltoldik. Minl tbbszr trljk a tranzisztort, annl tbb elektron szorul a szigetelbe, ami egyre
kevsb fog szigetelni. A lebeg gate-es tranzisztor teht regszik (kopik). Egyszer aztn eljn az a pont, amikor
mr nem kpes adatot trolni. Az, hogy ez hny trlsi ciklus utn kvetkezik be, a gyrtstechnolgitl fgg:
minl kisebb a tranzisztor, annl hamarabb. Ma, a 20-25 nm-es technolgia mellett kb. 100 ezer trlst brnak ki a
tranzisztorok (SLC adattrols mellett).

102

6. FEJEZET. HTTRTRAK

6.2.2. SLC s MLC adattrols


Ahogy lttuk, a lebeg gate-en lv tlts jelenlte hatrozza meg, hogy a tranzisztor 0-s, vagy 1-es bitet trol-e.
Ha vannak tltsek, akkor 0-s, ha nincsenek, 1-es bitet feleltetnk meg neki.
Egy egyszer tlettel azonban meg lehet oldani, hogy egy lebeg gate-es tranzisztor tbb bitet is trolni tudjon.
A mdszer lnyege, hogy nem csak a van tlts nincs tlts llapotokat klnbztetjk meg, hanem tbb
tltsi szintet is hasznlunk. gy a legegyszerbb esetben ngy tltsi szinttel 2 bitet is trolni lehet: 11 bitek
felelnek meg annak az esetnek, amikor nincs tlts a lebeg gate-en, 10 bitet trol a tranzisztor, ha kis, 01-t,
ha tbb, s 00-t, ha sok tlts van rajta. A tlts mennyisge hatrozza meg a tranzisztor zrshoz szksges
feszltsget, minl tbb a tlts, annl nagyobb feszltsg zrja a tranzisztort.
Ha ezt a mdszert hasznlva tbb bitet trolunk egy tranzisztorral, akkor MLC (Multi-Level Cell), ha egy
tranzisztor csak egy bitet trol, akkor SLC (Single-Level Cell) ash memrirl beszlnk. Egy n bites MLC ash
memria tranzisztorai 2n fle tltttsgi szint megklnbztetsvel troljk az adatokat.
Az MLC ash memrik ugyan sokkal olcsbbak, de cserbe gyorsabban regszenek, tbb, mint egy nagysgrenddel kevesebb programozsi/trlsi ciklust brnak ki, mint az SLC trsaik. Ennek megfelelen az MLC az
rrzkeny piacot, az SLC pedig a nagy megbzhatsgot s nagyobb terhelhetsget ignyl vllalati clokat
szolglja ki.
Az SSD gyrtk az utbbi vekben az MLC megjellst kiss eltr rtelemben kezdik hasznlni. Ha ma
MLC SSD-t vesznk, akkor az kt bitet trol tranzisztoronknt, mg az jonnan bevezetett TLC (Triple-Level Cell)
megnevezssel illetik azokat az jabb tpusokat, melyek hrom bit trolsra kpesek tranzisztoronknt.

6.2.3. NOR s NAND flash architektra


Most, hogy megismertk, hogyan lehet biteket trolni, rni s olvasni, megnzzk, hogy hogyan lehet nagy
mennyisg adat trolst a lehet leghatkonyabban megoldani. A szilciumostya kt dimenzis, teht ezt a
nagy mennyisg tranzisztort kt dimenziban, rcsszeren kell elrendeznnk.
A kt legelterjedtebb megolds a rcsba rendezett tranzisztorok sszektsre a NOR s a NAND struktra.
A NOR flash memria
A NOR ash memriban a tranzisztorok a 6.23. bra szerint vannak sszektve. Az ugyanazon sorhoz tartoz
tranzisztorok vezrl gate-jeit egy kzs vezetk,a szvezetk (word line, WL) kti ssze, a bitvezetk (bit line,
BL) pedig az egyazon oszlophoz tartoz tranzisztorok drain elektrdit kti ssze. A source elektrdk az egsz
trolmezre kzs source vezetkre (source line, SL) kapcsoldnak.
BL0

BL1

BL2

WL0

WL1

WL2

SL

6.23. bra. NOR ash architektra

6.2. FLVEZET ALAP HTTRTRAK (SSD)

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

6.24. bra. NAND ash architektra


Az i. sor j. oszlopban trolt bit kiolvasshoz minden WLk , k i vezetkre norml feszltsget kell adni,
a WLi -re pedig a 0 s az 1 elklntst lehetv tev kisebb feszltsget. Ennek kvetkeztben a i sorok
tranzisztorai mind zrnak, tengedik az ramot. gy az i. sor j. tranzisztornak tltse (vagyis a trolt bit rtke)
dnti el, hogy a BLj s az SL kztt folyik-e ram, vagy sem (6.25. bra).

"Nagyobb"
feszltsg

BL0
0

BL1
1

BL2
0

"Kisebb"
feszltsg
X

"Nagyobb"
feszltsg

SL

6.25. bra. NAND ash architektra


A NAND ash kifejlesztsekor egy httrtrknt funkcionl trolt kvntak ltrehozni, ennek megfelelen
a programozsi s olvassi mveletek adategysgei a HDD-hez hasonlan nem bitek vagy bjtok, hanem nagyobb
mret lapok (page). A lap nem ms, mint a trolmez egy sorba tartoz bitek sszessge. Annak ellenre,
hogy nincs zikai akadlya annak, hogy a biteket egyesvel programozzuk s olvassuk, a NAND ash minden
programozsi s olvassi mvelete lapokra vonatkozik. Sajnos a NOR ash-hez hasonlan a NAND ash-ben is
csak az egsz trolmezt egyszerre lehet trlni. Pontostunk: a trolmezt, amit egyszerre lehet trlni, a
ash terminolgia blokknak (block) hvja. A trls problmjt teht a NAND ash gy oldja meg, hogy nem

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

Hasznlata fjlok trolshoz


Knny

Teljestmnyfelvtel
mkds kzben

Magas

Alacsony

Nehz

Knny

Hasznlata program futtatsra

Kicsi

Nagy

Olvassi sebessg

Nagy

Trolsi kapacits
Nagy

rsi sebessg

NOR
NAND

6.26. bra. A NOR s a NAND ash sszehasonltsa


A NOR ash-t gyorsabban lehet olvasni, mert az elemi adattrol egysgek prhuzamosan vannak bektve,
mg a NAND-ban az olvass lassabb, mert a jelnek az oszlop sok-sok tranzisztorn mind t kell haladnia a
kiolvassig. A NAND ash-ben gyorsabb a programozs, tbbek kztt azrt, mert egy egsz lap egyszerre,
egyetlen mvelettel berhat, mg a NOR egyenknt, tranzisztorrl tranzisztorra vgzi a programozst. A NAND
a trlsben is gyorsabb, mivel ms zikai eektust hasznl (ennek rszleteibe nem mentnk bele).
Trolsi kapacitst tekintve a NAND ash architektrval kzel ktszer nagyobb tranzisztor srsget lehet
elrni.
sszessgben, mindkt megoldsnak megvan a ltjogosultsga. A NOR ash nagy elnye, hogy nem
laponknt, hanem bjtonknt kzvetlenl cmezhet, gy kitnen alkalmas pldul begyazott rendszerekben
(PDA, hordozhat zenelejtsz, telefon, fnymsol, PC BIOS, stb.) a ritkn vltoz programkd trolsra. A
NAND ash httrtrknt funkcionl, a lap alap szervezs az adatok szekvencilis elrsnek kedvez. NAND
ash trolra plnek a memriakrtyk, SSD-k, pendrive-ok. jabban a NAND ash kezd teret nyerni a NOR-ral
szemben a begyazott rendszerek httrtraiban is.
Sklzhatsgi problmk
A gyrtstechnolgia tretlen fejldse lehetv teszi, hogy egysgnyi terleten egyre tbb tranzisztort lehessen
elhelyezni, aminek ksznheten a ash memria alap adattrolk trolsi kapacitsa folyamatosan n. Ez a
nvekeds azonban nem tart rkk, st, a zikai korltokat mr napjainkban is feszegetik.
Az egyik nehzsg, amivel szembe kell nzni az adatsrsg nvelsekor, hogy a tl kzel helyezett tranzisztorok kztt thalls alakul ki. A kzelsg miatt a tranzisztorok nem tudnak teljesen fggetlenl mkdni, az
egyiken vgzett mveletek, ha kis mrtkben is, de hatssal lesznek a szomszdos tranzisztorokra is.
A msik, sokkal drasztikusabb korltoz tnyez, hogy a tranzisztorok mretnek cskkensvel azok lettartama is cskken. Kisebb mretben a trls/programozs sorn a szigetelrtegbe beszorul elektron hatsa is
kifejezettebb. Az SSD meghajtk hozzvetleges lettartama a 6.3. tblzatban lthat ([41]). Nem csak a mret
cskkense ront az lettartamon, hanem az is, hogy hny bitet trol egy tranzisztor. A tblzat alapjn lthatjuk,
hogy egy TLC meghajtn nagyon vltozkony adatot nem rdemes trolni. A kritikus, vllalati krnyezetben is
hasznlt SLC meghajtk lettartamt csak egyre erteljesebb s nagyobb hibajavt kdok hasznlatval tudjk
fenntartani (ami persze a hasznos adatok ell viszi el a helyet).

6.2. FLVEZET ALAP HTTRTRAK (SSD)

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 lebeg gate-es tranzisztor:

1-3 bitet trol

1 lap:

512 byte 8 kB

1 blokk:

128 256 lap

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.

6.2.4. Az adatok szervezse


A NAND ash-ben a tranzisztorok elhelyezsnek hierarchija nem ll meg a lapok s a blokkok szintjnl.
Kezdjk az elejtl: a biteket a lebeg gate-es tranzisztorok troljk (MLC esetben egy tranzisztor tbb bitet is).
Egy sornyi tranzisztor alkot egy lapot. A lap a programozs s az olvass alapegysge. Tbb lap alkot egy blokkot.
A blokk a trls alapegysge. Tbb blokk alkot egy trolskot (plane). Egy szilciumlapkn tbb trolskot is el
szoktak helyezni. Vgl, egy tokba gyakran tbb szilciumlapkt is tesznek. A tipikus mreteket a 6.4. tblzat
foglalja ssze.

6.2.5. Szektorszint mveletek az SSD-n


Az SSD-hez befut olvassi mveletek logikai cmekkel, LBA-val hivatkoznak a szektorokra, melyeket az SSD
vezrlje zikai cmekre kpez le. A lekpzs sorn kikeresi a nyilvntartsban, hogy az adott szektor melyik blokk
hnyas lapjn van, kiolvassa a megfelel lapot, s a megtallt szektor visszaadsval fejezi be a krs vgrehajtst.
Az rsi krsekkel korntsem ilyen egyszer a helyzet. Ha a felhasznl egy fjlon dolgozik, s menet
kzben tbbszr is elmenti a megvltozott tartalmat, azt a HDD nagyon egyszeren rvnyesti: a rgi tartalmat

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

6.2. FLVEZET ALAP HTTRTRAK (SSD)

107

6.28. bra. Plda az rsi mveletek vgrehajtsra


egyszeren csak az rsi front vgre lehet rni. Ekkor rkezne az 1-es cmre az rsi krs, csakhogy az rsi front
megtelt. Az SSD j rsi frontot vlaszthat, a 2-es, a 4-es s az 5-s blokkok jhetnek szba, hiszen ezek szabadok
(trltek). Most vlasszuk a 2-est rsi frontnak, erre kerl az 1-es LBA cm trolsra sznt tartalma, mikzben
a korbbi, fellrsra sznt tartalmat rvnytelenteni kell (1-es blokk 1-es lapja). A vgllapotot a 6.29. brn
lthatjuk.

6.29. bra. A a 6.28. bra pldja hrom j rsi mvelet utn


Ahogy jnnek az rsi krsek sorra egyms utn, gy fogynak a szabad, trlt blokkok az SSD-n. Vegyk szre,
hogy a trlt blokkok nem csak akkor fogyhatnak el, ha megtelik a meghajt. Az SSD tele lehet rvnytelentett
lapokkal, melyek nem hordoznak hasznos informcit, viszont rni sem lehet rjuk. Ha a trlt blokkok listja
fogyni kezd, mkdsbe lp a szemtgyjt algoritmus (garbage collection), amelynek az a feladata, hogy egy kis
trendezssel j trlt blokkokat hozzon ltre.
A szemtgyjt algoritmus mkdse:
Kinz egy blokkot a meghajtn (pl. azt, amelyiken a legtbb rvnytelen lap van),
ennek a blokknak a hasznlt llapot lapjait az rsi frontra rja,
majd trli az egsz blokkot, s hozzfzi a trlt blokkok listjhoz.
Ezeknek a lpseknek a kell szm ismtlsvel gyarapthat a trlt blokkok listja.
Ha a bekapcsol a szemtgyjt algoritmus a 6.29. brn lthat helyzetben, akkor valsznleg az 1-es blokkot
fogja rendbettelre kivlasztani. A rajta lv egyetlen hasznos lapot (10-es) az rsi frontra msolja, majd trli a
blokkot (trlheti, hiszen hasznos adat mr nincs rajta). Ezzel a a 6.30. brn lthat helyzet alakul ki, eggyel
tbb trlt blokkal.
Az rs s a szemtgyjts folyamatt a 6.31. brn foglaljuk ssze ([22]). A megismert mkdsnek van
egy fontos kvetkezmnye, az SSD egyre lassabb lesz, ahogy egyre tbbet hasznljuk. Egy j SSD tele van trlt

108

6. FEJEZET. HTTRTRAK

6.30. bra. A szemtgyjts eredmnye a 6.29. bra pldjbl kiindulva


blokkokkal, a szemtgyjt algoritmusra j ideig nincs szksg. Hasznlat kzben azonban egyre fogynak a trlt
blokkok, s elbb-utbb a szemtgyjts is lasstani fogja az rsi mveleteket. A korai SSD-kben ez a hats az id
elrehaladtval drasztikus lassulst okozott (hiszen megabyte nagysgrend adatmozgatst ignyelt a legkisebb
rsi krs is). Ma mr a korszer vezrlk rr idejkben is szemetet gyjtenek. Erre persze csak akkor
kpesek, ha van rr idejk. Ha olyan intenzitssal rkeznek az rsi/olvassi krsek (pl. szerver krnyezetben),
hogy nem jut id a lapok rendezgetsre, az SSD drasztikusan lelassul, akr mg a HDD-nl is lassabb lehet.

6.31. bra. Az rs s a szemtgyjts folyamata

6.2.6. Az SSD vezrlk jellemzi s feladatai


Az SSD-ben a vezrlnek (controller) nagyon fontos szerepe van, sokkal tbb a feladata, mind egy HDD esetn
(az SSD vezrlje nem keverend ssze az illesztfellet Host Controller-vel). Clja, hogy a NAND ash
jellegzetessgeibl add nehzsgeket, knyelmetlensgeket elrejtse, s egy egyenletes teljestmny, nagy
sebessg, megbzhat httrtrat mutasson a klvilg fel.
Ennek rdekben minden SSD vezrlnek ldozatokat kell hoznia. Ezek kzl a legfontosabbak az albbiak.
Tbbletrs. Az SSD tranzisztorait nem csak a felhasznl ltal rrt adatok koptatjk. Maga az SSD is
vgez rs mveleteket, melyeket nem a felhasznl kezdemnyez, pl. a szemtgyjts kzben is rsok
sorozata trtnik. Ez a jelensg a tbbletrs (Write amplication). Annl jobb egy SSD vezrl, minl
kisebb tbbletrssal kpes megoldani a mkdst, hiszen ekkor a leghosszabb a meghajt lettartama.
Tlmretezs. A tlmretezs (Over-provisioning) azt jelenti, hogy az SSD zikai trolkapacitsa nagyobb,
mint a felhasznlk szmra felknlt trolkapacits. A kett klnbsge tartalkknt mkdik. Tbb

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.32. bra. Az adattvitel rsztvevi


Manapsg a legelterjedtebb illesztfelletek az ATA, annak soros tvitelt alkalmaz vltozata, a SATA, a
SCSI, a soros SCSI s a Fibre Channel (FC). Ezek mindegyiknek van valami jellegzetes tulajdonsga, ami a
szmtstechnika egy-egy szegmensben egyeduralkodv teszi.
ATA illesztfellet
Az ATA illesztfellet egyrtelmen a PC architektrhoz ktdik. A felsorolt illesztfelletek kzl egyszersge
miatt az ATA illesztfellet tmogatsa a legolcsbb a merevlemez s a PC-k gyrtk szmra is.
Az ATA 16 bites adategysgeket denil, melyeket egy 40 eres szalagkbelen prhuzamosan visz t. Az
adattvitel nem szinkron, az adategysgek kirsa ill. beolvassa a Write Strobe s Read Strobe vezetkek
alacsony szintje mellett trtnik. A 40 eres kbelt a nagy sebessg UDMA md megjelensvel 80 eresre kellett
cserlni 40 extra fld kbel beiktatsval (ez a nagy adatsebessg mellett mr nem elhanyagolhat kbelek kztti
thalls cskkentsre szolglt). Egy szalagkbelre kt meghajtt lehetett csatlakoztatni, melyeket master-nek s
slave-nek hvnak, de ez valjban hibs elnevezs, mert semmi kze a buszok szereplinek master-slave szerephez
(a szabvny ksbbi vltozatai a Drive-0 s Drive-1 elnevezst hasznljk).
Az ATA az albbi adattviteli mdokat tmogatja:
PIO Mode: Ebben a mdban a teljes adattvitelt a processzor felgyeli, kiadja a meghajtnak a parancsot,
majd minden egyes bjt tvitelrl egyesvel intzkedik (pl. rs esetn a processzor bjtonknt olvassa ki a
memribl az adatokat s adogatja a meghajtnak). Mivel az adattvitel ideje alatt a processzor nem tud
mssal foglalkozni (pl. ms taszk vgrehajtsra kapcsolni, mg az adattvitel le nem zajlik), multi-taszking
krnyezetben nem a PIO md a legszerencssebb vlaszts.
DMA Mode: DMA zemmdban a merevlemez DMA vezrlje kpes az adatokat kzvetlenl a rendszermemribl kiolvasni, illetve kzvetlenl oda rni. A processzornak csak kiviteli/beviteli krst kell a
meghajthoz eljuttatnia, az adattvitel mr a kzremkdse nlkl trtnhet, pldul kihasznlhatja az
adattvitel lezrsig rendelkezsre ll idt arra, hogy kzben ms taszkok vgrehajtsval is haladjon.
Ultra DMA Mode: Az UDMA md ugyangy mkdik, mint a DMA md, de az rajel fel- s lefut ln is
trtnik adattvitel, teht az adattviteli sebessg megduplzdott. Ennl a sebessgnl mr szksg van a
80 eres szalagkbelre. Ez a md biztostja a leggyorsabb adattvitelt, 133 MB/s-ot.
A kiviteli/beviteli krsek indtshoz elszr a krs paramtereit kell a meghajthoz eljuttatni (tvinni kvnt
adat hossza, memriacm, stb.), majd a parancskd elkldse indtja el az adattvitelt. Az adattvitel aktulis
llst egy sttuszregiszter rendszeres olvasgatsval lehet nyomon kvetni. Az ATA szabvny egyik korltozsa,
hogy addig nem lehet j adattviteli krst indtani, amg az elz le nem zrdott. Ltni fogjuk, hogy ennek
komoly teljestmnybeli kvetkezmnyei lesznek, de az ATA ezt a kompromisszumot hozta az egyszersgrt s
az alacsony kltsgrt cserbe.
Amikor az optikai meghajtk megjelentek, az ATA szabvnybl szmos olyan parancs hinyzott, melyek az
optikai meghajtk kezelshez felttlenl kellenek (pl. tlca kinyitsa, mdium tpusnak lekrdezse, van-e
mdium a meghajtban, stb.). Ezek a parancsok az SCSI illesztfelletben megvoltak. rdekes mdon az ATA
szabvnyt nem az optikai meghajtk kezelshez szksges parancsok beemelsvel bvtettk ki, hanem lehetv
tettk, hogy az ATA kbelen s csatlakozkon SCSI parancsokat lehessen eljuttatni a meghajtkhoz. Ez az ATAPI
(ATA Packet Interface), mely lehetv tette, hogy a SCSI interfszt beszl optikai meghajtkat a PC-kben
elterjedt ATA felleten keresztl lehessen csatlakoztatni.

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

7. FEJEZET. SZMPLDK, FELADATOK A PERIFRIAKEZELS TMAKRBEN

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

= 0.12 103 s/csomag = 0.12ms/csomag.

Ugyanez 24 Mbit/s sebessggel:


12000 bit/csomag
24 106 bit/s

= 0.5 103 s/csomag = 0.5ms/csomag.

(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%.

7.2. FELADATOK A MEREVLEMEZEK TMAKRBEN

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%,

hiszen a processzor sebessge 100MHz= 100 106 rajel/s.


(d) Megszakts esetn csak a 120 rajeles interrupt feldolgozsi idvel kell szmolnunk, hiszen az interrupt-bl
mr eleve rteslnk az esemnyrl, nem kell a hmrt is leolvasnunk. Mivel tlagosan percenknt egyszer
kapunk interrupt-ot, a terhels
1
60

interrupt/s 120 rajel/interrupt


100 106 rajel/s

= 2 108 = 2 106 %.

7.2. Feladatok a merevlemezek tmakrben


4. Feladat
Egy merevlemez 3 db ktoldalas lemezt tartalmaz, melyek mindegyikn 50000 sv tallhat, minden svban 1000
szektorral. A szektorok mrete 500 bjt. ZBR nincs, az adattviteli interfsz sebessge pedig 500 106 bjt/s. A
parancsfeldolgozsi ksleltets olyan kicsi, hogy nullnak tekintjk. Az tlagos seek id 8 ms, a lemez forgsi
sebessge 10000 fordulat/perc.
(a) Adjuk meg CHS koordinta rendszerben a lemez kapacitst!
(b) Mekkora a merevlemez kapacitsa bjtokban mrve?
(c) Menyi a lemezek teljes krlfordulsi ideje?

116

7. FEJEZET. SZMPLDK, FELADATOK A PERIFRIAKEZELS TMAKRBEN

(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

1000 szektor/sv 500 bjt/szektor = 150 109 bjt/merevlemez

(c) A krlfordulsi id a forgsi sebessgbl szmthat,


1
10000

perc/fordulat 60000 ms/perc = 6ms,

hiszen 1 perc 60000 ms-bl ll.


(d) A feladat megvlaszolshoz clszer kiszmolni a kiszolglsi id komponenseit:
parancsfeldolgozsi id
tlagos seek id
tlagos forgsi ksleltets

= 0

= 8ms

= teljes fordulat ideje /2 = 3ms

egy szektor leolvassi ideje = 1/1000-ed fordulat ideje = 0.006ms


500 bjt/szektor
adattviteli id =
= 0.001ms
500 106 bjt/s
Ezek alapjn az egyetlen szektor olvassra vonatkoz krs teljes kiszolglsi ideje:
8ms + 3ms + 0.006ms + 0.001ms = 11.007ms.
Ha 100 egyms utni szektort kell beolvasni, akkor csak egyszer kell seek-elni s a forgsi ksleltetst
megvrni. Tovbb, a szektor leolvassi id s az adattviteli id tlapolhatk, vagyis az els szektor tvitele
kzben mr lehet a msodik szektort leolvasni a lemezrl. Az tlapols miatt a leolvass + tvitel egyttesen
100 0.006ms + 0.001ms ideig tart (a msodik tag az utols szektor tviteli ideje, azt nem lehet tlapolni). A
teljes kiszolglsi id teht
8ms + 3ms + 100 0.006ms + 0.001ms = 11.601ms.
(Vegyk szre, hogy alig tbb, mint az 1 szektorra vonatkoz esetben!)
(e) Ha a lemez fele olyan gyorsan forog, akkor a forgsi ksleltets 6ms-ra n, a szektor leolvassi id pedig
0.012ms-ra. A krdsre a vlaszt az albbi egyenlet megoldsbl kapjuk:
x + 6ms + 0.012ms + 0.001ms = 11.007ms,
amibl a kvnatos seek idre x = 4.994 addik.

7.2. FELADATOK A MEREVLEMEZEK TMAKRBEN

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 addik. Ezt tvltva fordulat/perc-re a krdsre a vlasz


60000 ms/perc
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

+ 4 0.011976 + 0.01 = 10.146ms,

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

7. FEJEZET. SZMPLDK, FELADATOK A PERIFRIAKEZELS TMAKRBEN

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

(50000 sv/hordozrteg 1000 szektor/sv + 50000 sv/hordozrteg 2000 szektor/sv)


500 bjt/szektor = 450 109 bjt/merevlemez
(b) A krlfordulsi id a forgsi sebessgbl szmthat,
1
6000

perc/fordulat 60000 ms/perc = 10ms,

mivel 1 perc 60000 ms-bl ll.


(c) Egy szektor adathordozrl val leolvassi ideje az els znban:
10ms/fordulat
2000szektor/fordulat

= 0.005ms/szektor.

A megadott sebessg interfszen egy 500 bjtos szektor tviteli ideje:


500 bjt/szektor
250 106 bjt/s

= 2 106 s = 0.002 ms.

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.

7.3. Feladatok az SSD tmakrben


7. Feladat
Egy 8 blokkbl ll SSD pillanatnyi llapota az albbi brn lthat.

7.3. FELADATOK AZ SSD TMAKRBEN

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

7. FEJEZET. SZMPLDK, FELADATOK A PERIFRIAKEZELS TMAKRBEN

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.

8.1. Adattrols SRAM s DRAM cellkkal


A memria egyes bitjeinek trolsra kt klasszikus megolds terjedt el: a statikus RAM (SRAM), valamint a
dinamikus RAM (DRAM). Ltni fogjuk, hogy ezek nem verseng technolgik, sokkal inkbb kiegsztik egymst,
gy mindkettvel rdemes megismerkedni.

8.1.1. Az SRAM trolcella


Az egyetlen bit trolsra kpes SRAM trolcella (8.1. bra) nagyon emlkeztet egy egyszer ip-op-ra:
a keresztbe kttt inverterek egy bi-stabil multivibrtort valstanak meg. Ez az ramkr mindaddig kpes
megrizni a bit rtkt, amg elltjuk tpfeszltsggel. Az brn az inverterek mellett kt tranzisztor is lthat,
melyek szerepe, hogy az inverterek kimenett a bitvezetkre (BL, bit line) vezessk, ha a szvezetkkel (WL,
word line) a trolcellt olvass vagy rs mveletre jelljk ki. Mivel egy invertert kt tranzisztorral meg lehet
valstani, az SRAM memriban egyetlen cella trolshoz 6 tranzisztor szksges (lsd 8.1. bra, jobb oldal),
amit a szakirodalomban 6T cellnak neveznek. (Lteznek 4T s 10T SRAM cella struktrk is, de ezekkel most
nem foglalkozunk, a 6T messze a legelterjedtebb).
Az olvass a kvetkezkppen zajlik. Elszr az elfeszt ramkrk a ponlt s a neglt bitvezetkeket
egyarnt logikai 1 szintre hzzk fel, majd a bitvezetkekrl lekapcsoldnak. A bitvezetkek kapacitsa miatt a bitvezetkek feszltsgszintje megmarad. (Ez az elkszt lps azrt hasznos, mert a cellknak knnyebb/gyorsabb
egy elre feltlttt bitvezetket 0-ra lehzni, mint 1-re felhzni.) A bit rtknek kiolvasshoz a WL szvezetkre
logikai 1 rtket adunk. A hozzfrsi tranzisztorokon t a bitek rtke megjelenik a bitvezetkeken: ha a bit

WL

WL

BL

BL

BL

Inverterekkel

Tranzisztorokra lebontva
8.1. bra. SRAM trolcella
123

BL

124

8. FEJEZET. MEMRIA TECHNOLGIK


WL
Hozzfrsi tranzisztor
Kondenztor

BL

8.2. bra. DRAM trolcella


rtke 1, akkor a BL 1 marad, BL-t pedig 0-ra hzza le a bit inverze; a 0 rtk bitnl pedig a helyzet ppen
fordtott. A BL s a BL klnbsgt az rzkel erstk rzkelik, s a kimenetkn rendelkezsnkre ll a bit
rtke. Minl rzkenyebbek az rzkel erstk, annl gyorsabb a kiolvass. A bitek felismerst az is segti (s
gyorstja), hogy nem abszolt jelszinteket, hanem csak a BL s BL klnbsgt kell felismerni.
Az olvass az SRAM llapott (a trolt bit rtkt) nem vltoztatja meg (hamarosan ltni fogjuk, hogy ez
egyltaln nem termszetes).
Az rs hasonlkppen zajlik. A ponlt s neglt bitvezetkekre radjuk a berand bitek logikai rtknek
megfelel feszltsget: ha a bit rtkt 1-be szeretnnk lltani, akkor BL = 1, BL = 0; ha 0-ba, akkor BL =
0, BL = 1. Ezt kveten a WL szvezetkre logikai 1 rtket adunk. A cella ltal trolt bit rtke a hozzfrsi
tranzisztorain keresztl felveszi a bitvezetkek ltal rknyszertett rtket, mivel a bitvezetkek meghajt
tranzisztorai ersebbek, mint a cellk tranzisztorai.

8.1.2. Az DRAM trolcella


Dinamikus RAM esetn a bitek trolsa teljesen mskpp trtnik: a ip-op helyett egy kondenztor tltttsge
hordozza az informcit (lsd a 8.2. bra). A kondenztor melletti hozzfrsi tranzisztor szerepe az, hogy a
kondenztort sszeksse a bitvezetkkel, rs vagy olvass cljbl. Mivel egyetlen bit trolshoz 1 tranzisztor s
1 kondenztor szksges, a DRAM cellk felptst 1T1C nvvel is illetik.
Ha ki szeretnnk olvasni a trolt bit tartalmt, elszr is el kell feszteni a bitvezetket, mgpedig logikai 0 s
1 szint kz fltra. Ezutn a szvezetkre logikai 1-et adunk, aminek a hatsra a hozzfrsi tranzisztor zr,
s a kondenztor sszekapcsoldik a bitvezetkkel, tltse (vagy a tlts hinya) pedig mdostja a bitvezetk
feszltsgszintjt. A bitvezetk vgn elhelyezked rzkel erstk rzkelik ezt a (kondenztor apr mrete
miatt egybknt igen kis) vltozst, s ellltjk a megfelel logikai 0 vagy 1 szintet. A DRAM trolcellk
nagyon fontos tulajdonsga, hogy a kiolvass destruktv, hiszen pldul egy 1-es bit kiolvasskor a kondenztor
tltse a bitvezetken t tvozik, ezrt a kiolvass utn egy kln lpsben rgtn vissza is kell lltani szmra
az elveszett tltst.
A trolcella rsa hasonlan trtnik. A szvezetk kijelli a cellt (a hozzfrsi tranzisztor a kondenztort
a bitvezetkre kapcsolja), majd a trolni kvnt logikai szintnek megfelel tltst a bitvezetken keresztl a
kondenztorba knyszertjk.
Sajnos a DRAM trolcellk a bitek kiolvassa nlkl is elvesztik tartalmukat, mert a kondenztor tltse kpes
magtl elszivrogni. Emiatt idnknt (nhnyszor 10 ms-onknt, jellemzen 64 ms-onknt) a trolt informci
frisstsre szorul, ami abbl ll, hogy ki kell olvasni s vissza kell rni a trolt bitet. Ezt a fajta megoldst pont
azrt hvjk dinamikus RAM-nak, mert periodikus frisstsre van szksge.

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.

8.2. DRAM ALAP RENDSZERMEMRIK

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. DRAM alap rendszermemrik


Most, hogy megismertk, hogy egy DRAM cella hogyan kpes trolni egy bitet, megnzzk, hogy ezekbl az 1
bites alapelemekbl hogyan pl fel a szmtgp rendszermemrija.

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.

8.2.2. Egy DRAM bank felptse


Egy DRAM bank felptst a 8.4 bra szemllteti. Egy bankon bell az azonos sorban elhelyezett DRAM cellk
szvezetkei (WL), illetve az azonos oszlopba elhelyezett cellk bitvezetkei (BL) ssze vannak ktve. A mtrixba
elrendezett elemi trolcellk szvezetkei egy dekder, a sordekder (row decoder) kimenetei. A bitvezetkek
pedig egy rzkel erstkbe, majd egy multiplexerbe, az gynevezett oszlop-multiplexerbe futnak be.
Kt-fzis hozzfrsi protokoll
Ahhoz, hogy egy kvnt adatot kiolvassunk egy DRAM bankbl, elszr a megfelel sor cmt kell a sordekderre
tenni. A sordekder ennek (s csak ennek) a sornak a szvezetkre logikai 1-es szintet ad, mire a sor sszes
cellja engedlyezett lesz, a sor sszes kondenztora sszekttetsbe kerl a bitvezetkekkel. Az rzkel erstk
a bitvezetkek alapjn megllaptjk a cellkban trolt bitek rtkeit, s ideiglenesen troljk is azt. Ezen
a ponton teht az rzkel erstkben rendelkezsre ll a teljes sor tartalma, melybl az oszlopcm alapjn
az oszlop-multiplexer vlasztja ki a megfelelt (az rzkel erstre szoktak sorbuerknt, row buer-knt is
hivatkozni). Teht a DRAM bank cmzse kt fzisban trtnt: elszr a sorcmet kellett rtenni a sordekderre,
majd (kisvrtatva) az oszlopcmet az oszlop-multiplexerbe. Ezt az eljrst ezrt kt-fzis hozzfrsi protokollnak
nevezik.

126

8. FEJEZET. MEMRIA TECHNOLGIK

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.3. bra. Modern DRAM alap memriarendszer


A lbak szmnak cskkentse vgett a sor- s oszlopcmek tvitelhez ugyanazokat a cmvezetkeket, lbakat
hasznljk. Az els fzisban ezekre a lbakra a sorcmet, majd ezutn a msodik fzisban az oszlopcmet kell
kitenni.
DRAM parancsok
Egy DRAM bankkal parancsok segtsgvel lehet kommuniklni. A legfontosabb DRAM parancsok a kvetkezk:
ACTIVATE: ezzel a paranccsal lehet megnyitni egy adott sort. A sor tartalma az rzkel erstkbe kerl
tmeneti trolsra, a DRAM olvass destruktv volta miatt pedig a cellk elvesztik tartalmukat. A cellk
tartalmnak regenerlsa a sor megnyitsa utn azonnal (kln parancs nlkl) megindul.
READ: ezzel a paranccsal lehet az ppen megnyitott sorbl kiolvasni egy oszlopot. Valjban az rzkel
erstkben tmenetileg trolt sor bitjei kzl olvassa ki a megfelelt.
WRITE: ez a parancs az pp nyitott sor egy oszlopt megvltoztatja. A vltozst elszr a sort tmenetileg
trol rzkel erstkben rvnyestik, majd a megvltozott DRAM cellk frisstse is megtrtnik.
PRECHARGE: az aktulis, nyitott sor bezrsra szolgl. Az rzkel erstk alaphelyzetbe llnak, egyttal
feltltik (precharge) az sszes bitvezetket is, hogy a kvetkez sormegnyits mvelet, ha majd szksg
lesz r, gyorsan megtrtnhessen.
REFRESH: megnyit egy sort, majd rgtn le is zrja azt. Ezzel a sor minden bitje kiolvassra, majd visszarsra
kerl. Erre hozzvetleg 64 ms-onknt szksg van, mert a cellk kondenztoraibl elszivrg tltsek
miatt e nlkl elveszne a trolt informci. A frissts felfrissti a kondenztorok tltst. A REFRESH
parancsnak nincs paramtere, auto-inkremens mdon mindig a soron kvetkez sort fogja frissteni.
Pldul, ha az adat olvassi krsek sorban egyms utn az albbi mdon kvetik egymst:
(3.sor,
(3.sor,
(1.sor,
(1.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

8.2. DRAM ALAP RENDSZERMEMRIK

DRAM cellk
2N sor x 2M oszlop

Cm

rzkel erstk
M bit

Oszlop-multiplexer
1 bit

8.4. bra. Egy DRAM bank felptse


ACTIVATE 3
READ 8
READ 14
PRECHARGE
ACTIVATE 1
READ 3
READ 4
Egy nyitott sor elrshet teht csak READ/WRITE parancsok szksgesek. Egy meg nem nyitott sor elrshez viszont szksg lehet a PRECHARGE-re, amennyiben az elzleg hasznlt sort mg nem zrtk be, majd
ACTIVATE-el meg kell nyitni az elrni kvnt sort, a READ/WRITE parancsok csak ezutn kvetkezhetnek.
Idztsi paramterek
A DRAM-nak a parancsok vgrehajtshoz id kell, melyet a memriavezrlnek gyelembe kell vennie, mikzben
memriamveleteket vgez. Egy DRAM memria modul a DRAM chip-eken fell tartalmaz mg egy IC-t
(Serial presence detect, SPD, 8.5. bra), mely ezeket az idztsi informcikat trolja, a rendszer indulsakor a
memriavezrl innen szerez tudomst a parancsok ksleltetsrl.

8.5. bra. Az idztsi informcikat trol SPD


A sok-sok klnfle idztsi rtk (timing) kzl rdemes kiragadni az albbi ngyet, mert egyrszt ezek a
legfontosabbak, msrszt ezekkel szoktk jellemezni a DRAM chip-ek ksleltetst:
TRCD (Row-to-Column command Delay): Ennyi ideig tart egy sor megnyitsa, vagyis ennyi id telik el a
megnyits parancstl szmtva addig, amg a sor tartalma megjelenik az rzkel erstkben.
CL, vagy TCAS (Column Access Strobe time): Egy nyitott sor egy oszlopnak a kiolvasshoz szksges id.
Az olvass parancs utn ennyi id mlva jelenik meg az (els) adat a modul adatbuszn.
TRP (Row Precharge): A PRECHARGE parancs vgrehajtshoz szksges id.

128

8. FEJEZET. MEMRIA TECHNOLGIK


TRAS (Row Active Time): Az a minimlis id, amg egy sor nyitva lehet (ennyi id kell a kondenztorok
tltsnek regenerlshoz). Ha gyelembe vesszk, hogy egy j sor megnyitsa eltt el-feltlts is
szksges, megkapjuk, hogy a sor megnyitsi parancsok nem kvethetik gyakrabban egymst, mint TRC =
TRAS + TRP .

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

8.6. bra. DRAM adattvitel, idztsekkel


A 8.6 brn lthat pldn elszr megnyitjuk az 1-es sort, majd ezutn TRCD = 2 ksleltetssel adhatjuk ki
az els olvassi krst a 3. oszlopra. Az adatok TCAS = 3 id mlva jelennek meg a DRAM adatbuszn. Ha a
burst hossz 4 oszlopnyira van belltva, akkor nem csak a 3. oszlop, hanem a 4., 5. s 6. oszlop is az adatbuszra
kerl. A kvetkez olvassi krs a 9. oszlopra vonatkozik. Figyeljk meg, hogy parancs mr akkor kiadhat,
amikor az elz olvassi krs mg be sem fejezdtt (ezt jelenti az tlapols). Megfelel idztssel el lehet rni,
hogy az elz burst-t rgtn kvesse a kvetkez, gy az adatbusz svszlessgnek kihasznltsga nvelhet. A
kt burst tvitele utn a plda lezrja a nyitott sort egy PRECHARGE parancs segtsgvel. Ennek kiadsakor
gyelembe kell venni, hogy a megnyits s a lezrs kztt legalbb TRAS idnek el kell telnie. (A sort rint
utols READ parancs s a PRECHARGE kzt eltel idre is van idztsi elrs, de azzal most nem foglalkozunk.)
A parancsok temezse, a sok-sok idztsi knyszer gyelembevtele a memriavezrl feladata.

8.2.3. DRAM memriamodulok


Egy DRAM memriamodul tbb DRAM chip-et, valamint egy SPD IC-t (8.5. bra) tartalmaz. Elszr megvizsgljuk
egy DRAM chip bels felptst, majd azt, hogy az azonos memria modulon tallhat DRAM chip-ek milyen
viszonyban vannak egymssal.

8.2. DRAM ALAP RENDSZERMEMRIK

129

A DRAM chipek felptse


Mr a 8.3. brn is utaltunk r, hogy egy DRAM chip tbb memria bankot tartalmaz. Ezek a bankok egymstl
fggetlen mkdsre kpes DRAM cella-mtrixok. Minden bank sajt sordekderrel, oszlopmultiplexerrel s
rzkel erstkkel rendelkezik. Mivel a bankok egymstl fggetlenek, mindegyik tartalmazhat 1-1 nyitott sort.
sszessgben a DRAM chip gy tbb sort is nyitva tarthat, ami kisebb memriaksleltetst tesz lehetv, hiszen
tbb adathoz lehet a sormegnyits/zrs tbbletksleltetse nlkl hozzfrni.
Cmsn

Cm1

Cm2

Cm3

vrakozs
vrakozs
vrakozs

Adatsn

Adat1

Adat2

Adat3

8.7. bra. Adattvitel klnbz sorokbl, tlapols nlkl


A 8.7. brn egy olyan esetet ltunk, melyben az egyms utn elrni kvnt memriacmek Cm1 , Cm2 ,
ms s ms sorokra vonatkoznak, ezrt minden esetben meg kell vrni a hosszadalmas sormegnyitsi s
sorlezrsi ksleltetseket. Ha azonban ezek a cmek klnbz bankokra vonatkoznak, akkor ezek a ksleltetsek
tlapolhatk, gy sszessgben a teljes adattvitel hamarabb befejezdik (8.8).
Cmsn

Cm1

Cm2

Cm3

Bank 0-ra vr
Bank 1-re vr
Bank 2-re vr

Adatsn

Adat1 Adat2 Adat3

8.8. bra. tlapolt adattvitel tbb bank esetn


A DRAM chip-ekben lv bankok szmt az adott szabvny rgzti. Az els genercis DDR-SDRAM memrik,
valamint a DDR2 memrik 4 bankkal rendelkeztek, melyet a DDR3 szabvny 8-ra, a DDR4 pedig 16-ra nvelt.
A DRAM chip-ek tbbnyire nem bit szervezsek. A memria rsi/olvassi mveletek tbb bitre vonatkoznak,
vagyis a bankok a nyitott sor egy oszlopnak kivlasztsakor nem 1, hanem tbb (4, 8, esetleg 16) bitet adnak
vissza. Az oszlopok bitszlessgnek megfelelen megklnbztetnk x4, x8 s x16 memriamodulokat.
Az ismereteinket sszegezve teht a DRAM chip-ek az albbi interfsszel rendelkeznek:
Parancs vezetkek: Ezen keresztl lehet jelezni a chip-nek a kvnt mvelet tpust (ACTIVATE, READ,
WRITE, REFRESH, stb.)
Bank kivlaszt vezetkek: Ezen keresztl jelezzk, hogy a mvelet melyik bankot rinti.
Cmvezetkek: Itt kell radni az adott parancshoz tartoz cmet. ACTIVATE esetn sorcmet, READ s
WRITE esetn oszlopcmet vr a DRAM chip.
Adatvezetkek: A READ/WRITE mveletek esetn ide kerl a kiolvasott adat, illetve innen veszi el a
berand adatot a DRAM chip. Szlessge 4, 8 vagy 16 bites, attl fggen, hogy x4, x8 vagy x16-os chip-nk
van-e.
A memriamodulok felptse
Mint lttuk, a DRAM chip-ek meglehetsen szk adatszlessggel rendelkeznek (x4, x8 vagy x16-osak). Az
adattviteli sebessg nvelse rdekben egy memriamodul tbb DRAM chip-et tartalmaz, melyek teljesen
szinkronizltan mkdnek. Osztoznak a parancs, a bank kivlaszt s a cm vezetkeken, az adatvezetkeik
sszefogsval azonban a memriamodul adategysge sokkal szlesebb tehet. A 8.9. brn pldul 8 darab
egyenknt x8-as chip-et tartalmaz, sszessgben teht 64 bites adategysgeket hasznl memriamodult kapunk.
Minden parancsot minden chip megkap, teht a modulon lv chip-ek megfelel bankjaiban ugyanazok a sorok
lesznek nyitva.

130

8. FEJEZET. MEMRIA TECHNOLGIK


x8 DRAM chip-ek

Parancs, bankkivlaszts s cm

Adat
(8x8=64 bit szles)

8.9. bra. Egy DRAM memriamodul felptse


Ezzel a megoldssal az adattviteli sebessg 8-szorosra ntt (hiszen minden kiadott memriamvelet 8 bit
helyett 64 bit adat bersval/kiolvassval jr), azt azonban nagyon fontos megjegyezni, hogy a ksleltets, vagyis
a cm radstl az adat megjelensig eltelt id nem vltozik.

8.2.4. Tbb DRAM rank hasznlata


A trolsi kapacits nvelse rdekben tbb memria rank-et is alkalmazhatunk. A memria rank-ek egymstl
fggetlen egysgek, melyek nemcsak a parancs, a bank kivlaszt s a cmvezetkeken, de az adatvezetkeken
is osztoznak. Ezt gy kell elkpzelni, mintha tbb memriamodult helyeznnk el egy snre (pl. az alaplapon
lv foglalatokon keresztl), de mieltt a rank s a memriamodul fogalma teljesen sszekeveredne, gyorsan
megjegyezzk, hogy a ktoldalas DIMM memriamodulok (Dual In-line memory module) kt klnll rank-knt
viselkednek. Teht ha a szmtgpnkben 2 db DIMM memriamodult helyeznk (egyazon csatornra lsd
ksbb), akkor 4 memria rank-rl beszlnk, melyek mindegyike 64 bites adategysgeket hasznl. Mivel egyazon
buszon helyezkednek el, s minden vezetken osztoznak, gondoskodni kell rla, hogy mindig csak az egyik legyen
bekapcsolva. Erre a clra a minden rank-hez kln, dedikltan kihzott engedlyez (chip select) vezetkek
szolglnak (8.10. bra). Teht ha a szmtgp memriavezrlje a 3. rank-bl szeretne adatot olvasni (ami lehet
pldul a msodik DIMM modul els oldala), akkor azt az egyet be-, a tbbit pedig ki kell kapcsolnia.
Parancs/cm

Rank 0 Rank 1

Rank 2 Rank 3

Adat

Memria
vezrl

Engedlyezs

8.10. bra. DRAM rank-ek egyazon csatornn


A memria rank-ek szmnak nvelse (vagyis DIMM modulok, vagy tbb modul hasznlata) nem nveli a
memria svszlessgt, hiszen a rank-ek ugyanazon a (tbbnyire 64 bites) adatbuszon osztoznak. Tbb rank
esetn azonban tbb sort tud a memriavezrl nyitva tartani, hiszen a rendszerben lv bank-ok szma annyi
szorosra n, ahny rank-nk van, gy vgs soron a tbb rank hasznlata a trolsi kapacits nvelse mellett
nmi ksleltetsbeli elnnyel is jr.

8.2.5. Tbb memriacsatorna hasznlata


Tbbcsatorns memriavezrlket tbb, mint 50 ve hasznlnak a memria svszlessgnek nvelsre (pl. a 60-as
vekben a CDC6600, illetve az IBM System/360 Model 91). A memriacsatornk egymstl fggetlen buszokat

8.2. DRAM ALAP RENDSZERMEMRIK

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

8.11. bra. Tbbcsatorns memriaelrs szinkronizlt csatornkkal

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

8.12. bra. Tbbcsatorns memriaelrs fggetlen csatornkkal


hasznlnak, gy a kln csatornkra helyezett memriamodulok, illetve rank-ek egymssal prhuzamosan kpesek
mkdni.
A csatornk kezelse szempontjbl kt esetet klnbztetnk meg:
Szinkronizlt csatornk hasznlata (8.11. bra). Ebben az esetben az egyes memriacsatornk tkletes
szinkronban mkdnek, ami csak akkor kivitelezhet, ha a memriamodulok teljesen egyforma mrettel
s idztsekkel rendelkeznek. A memriarendszer ekkor gy mkdik, mintha egyetlen csatornnk
lenne, de szlesebb adategysgekkel (pldul kt 64 bites csatorna egyenrtk egy egycsatorns, 128 bites
adategysgekkel dolgoz memrival).
Fggetlen csatornk hasznlata esetn (8.12. bra) minden csatornhoz kln memriavezrl tartozik,
melyek a hozzjuk rendelt rank-eket egymstl fggetlenl kezelik. Ilyen esetben a DIMM moduloknak
nem kell felttlenl egyformknak lennik.
A PC-k vilgban manapsg fggetlen csatornkat hasznl 2 csatorns (Core i3/i5), illetve 3 csatorns (Core
i7) megoldsok vannak jelen, de Alpha processzorokhoz a 1995-ben kszlt 8 csatorns memriaelrst tmogat
alaplap is.

8.2.6. A memriavezrl feladatai


A memriavezrl feladata, hogy a processzor s a perifrik ltal kiadott memriamveleteket vgrehajtsa, vagyis
lekpezze a tbb bank-bl s tbb rank-bl ll rendszermemrira, mely esetleg mg tbbcsatorns hozzfrst
is tmogat.
A processzor ltal kiadott cmek lekpzse a memriaeszkzkre
Ha egy memriarsi/olvassi krs rkezik a memriavezrlhz, annak els dolga, hogy a vonatkoz memriacm
alapjn megllaptsa, hogy a krs melyik memriacsatornra, azon bell melyik rank-re, melyik bank-ra, s
annak melyik sorra vonatkozik. Ezt az eljrst cmlekpzsnek hvjk.
A cmlekpzst gy rdemes megvalstani, hogy a szmtgp mkdse sorn a memriavezrlhz sorban
befut memriakrs-sorozat kiszolglsa sorn minl ritkbban kelljen sort vltani, hiszen a sorvlts kltsges
mvelet, egy ACTIVATE parancsot, s az ezzel jr TRCD ksleltetst ignyel. Figyelembe vve, hogy a fut
programok jellemzen egymshoz kzeli memriacmeket adnak ki (a lokalitsi elveket hamarosan, a 10.1.

132

8. FEJEZET. MEMRIA TECHNOLGIK


Sor
(13 bit)

Rank Bank
(1 bit) (3 bit)

Oszlop
(11 bit)

Csatorna Bjt
(1 bit) (3 bit)

Memriacm (32 bit)

8.13. bra. Cmlekpzs


fejezetben trgyaljuk), a lekpezs sorn minl nagyobb sszefgg, sorvltst nem ignyl cmtartomnyt
clszer kialaktani.
A cmlekpzs egy lehetsges mdjt a 8.13. brn, egy pldn keresztl mutatjuk be. Ebben a pldban
32 bites memriacmeket hasznlunk, s az egyszersg kedvrt legyen 2x2GB DIMM memriamodulunk 2
rank-kel, ktcsatorns elrssel. A DRAM chip-ek tartalmazzanak 8 bankot, s minden bank lljon 213 sorbl s
211 oszlopbl. Az adategysg legyen 64 bit (8 bjt). Az brn lthat lekpzs szerint a cm fels 13 bitje jellik ki
a sort, gy 219 bjt, vagyis fl megabjt sszefgg memriaterlet tartozik minden egyes sorhoz. A kvetkez bit
a rank-et hatrozza meg, ez esetben 1 bites, hisz minden csatornn egyetlen DIMM modul van, mely 2 rank-et
tartalmaz. Az utols 3 bit azt hatrozza meg, hogy a 64 bites (=8 bjtos) adategysgen bell a memriacm melyik
bjtra vonatkozik. Termszetesen ettl eltr cmlekpzs is elkpzelhet.
Krsek trendezse
A 8.2.2. fejezetben megismertk a DRAM bankok elrsi protokolljt. Lttuk, hogy ha az egyms utni memriakrsek egy sorra vonatkoznak, akkor gyorsan kiszolglhatk, mg ha klnbz sorokba esnek, akkor
hosszadalmas sorbezrs s sormegnyits parancsokat is be kell iktatni.
A legegyszerbb memriavezrlk valban rkezsi sorrendben (FCFS, First Come, First Served) hajtjk vgre
a memriakrseket, azonban a fejlettebbek kpesek a memriakrsek trendezsre gy, hogy sszessgben a
teljes memriakrs-sorozat teljes kiszolglsi ideje a lehet legrvidebb legyen. Ennek egy mdja az FR-FCS
(First Ready, First Come First Served), ami elreveszi azokat a krseket, melyeket az aktulisnl gyorsabban ki
lehet szolglni. Az albbi plda bemutatja az egybknt rendkvl egyszer tletet:
FCFS temezs
Krsek:

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

8.2. DRAM ALAP RENDSZERMEMRIK

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.

8.2.7. A DRAM technolgik evolcija


A DRAM chip-ek nagyjbl 15 vvel ezelttig aszinkron interfsszel rendelkeztek. Ez azt jelentette, hogy nem
volt rajel, a DRAM parancsok mindegyikhez tartozott egy lb, melyen egy felfut llel kellett a kvnt mveletet
kezdemnyezni. Ezutn ttrtek a szinkron, rajel alap mkdsre (SDRAM, Synchronous DRAM), amely idtllnak bizonyult, napjainkban is SDRAM-ot hasznlunk. Ezen a ponton, az rajel megjelensnl kapcsoldunk be
a DRAM technolgik evolcijnak ttekintsbe.
SDR SDRAM
A szinkron DRAM-ok els genercijnak kpviseljt SDR SDRAM (Single Data Rate SDRAM) nvvel illettk. Az
SDR SDRAM mr a kezdetekkor is tbb (2 vagy 4) bankot hasznlt. A burst adattvitelt is tmogatta, az egyszerre
tvinni kvnt adatok szmt (a burst hosszt) 1 s 8 kztt lehetett belltani (mivel 64 bites adategysgeket
hasznlt, ez legfeljebb 64 bjt egyms utni elkldst jelenti).
DDR SDRAM
A DDR (Double Data Rate) SDRAM azonos rajel esetn az SDR SDRAM-hoz kpest ktszer akkora tviteli
sebessgre kpes. Ezt gy rtk el, hogy az rajelnek mind a felfut, mind a lefut lnl vgez adattvitelt. Mg
az SDR SDRAM minimlis burst hossza 1, a DDR SDRAM- 2.
A szabvnyos elnevezs mr a rajel frekvencijnak a dupljt hasznlja, gy a DDR-200 SDRAM valjban
100 MHz-en mkdik. (A DDR-200 jells tulajdonkppen arra utal, hogy a memria olyan gyors, mintha 200
MHz-es SDR SDRAM lenne.) Pldul egy 200 MHz-en mkd 64 bit szles DDR-400-at PC-3200 nven lehet
megvsrolni, s maximum 3200 MB/s tviteli sebessgre kpes (hiszen a 64 bit=8 bjt, s a 400 MHz-es adattvitel
miatt 400 milli adategysget tud msodpercenknt tvinni).
DDR2 SDRAM
A DDR2 SDRAM-tl kezdve ktfle rajelet klnbztetnk meg: a DRAM chip a bels rajelet hasznlja a
parancsok tvtelre s a bels mkds vezrlsre, az adatok tvitelt azonban az ennl ktszer nagyobb
frekvencij kls rajelen vgzi. A DDR2 SDRAM gy kls rajelciklusonknt visz t 2 adategysget (1-et a
felfut, 1-et a lefut len vgtre is DDR megoldsrl van sz), teht a bels rajel minden peridusa alatt 4-et.
Ennek megfelelen mg a DDR-nl 2 volt a minimlis burst hossz, itt mr 4 lett. A bankok szma is megduplzdott,
egy DDR2 SDRAM chip 4 vagy 8 bankot tartalmazhat.

134

8. FEJEZET. MEMRIA TECHNOLGIK

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)

8.1. tblzat. SDRAM technolgik sszehasonltsa

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.

8.2. DRAM ALAP RENDSZERMEMRIK

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

Adat Adat Adat Adat

DDR3 SDRAM
Kls rajel
Adatsn

A A A A A A A A

8.14. bra. SDRAM technolgik


Az impresszv tviteli sebessgnek termszetesen ra van: az ellltsi kltsg 4-5-szrs, a fogyaszts
nagyobb, s a chip-ek zikai tvolsga a memriavezrltl igencsak korltos. Jelenleg a legnagyobb GDDR5
alap memrit hasznl szmtgp, a Sony Playstation 4, 8 GB memrit tartalmaz, ezt megelzen ennyit
ebbl a fajta memribl mg nem hasznltak.
sszegzs
A trgyalt memriatechnolgik legfbb tulajdonsgait a 8.1 tblzat foglalja ssze. Mint lthat, a bels rajel a
vizsglatunkban fellelt 5 generci alatt nem vltozott szmotteven. A bels rajellel van sszefggsben a
memriamveletek ksleltetse (a cm radstl a megfelel adat megjelensig eltelt id) is, mely vtizedek ta
nhnyszor 10 ns-os nagysgrendbe esik. A tbbcsatorns memriavezrlk alkalmazsa, a DDR technolgia
s a kls rajel nvelse azonban az adattviteli sebessg jelents nvekedst tette lehetv. Ugyanezek a
kvetkeztetsek vonhatk le a 8.14 brrl is, amely abbl a szempontbl mg idealizlt is, hogy helytakarkossgi
okokbl mind a TRCD , mind a TCAS rtke 1.
Napjainkban teht a rendszermemria lnyegesen tbb memriakrst tud kiszolglni, mint akr csak 10
vvel ezeltt, de a krsek kiszolglsnak a ksleltetse nagysgrendileg ugyanaz maradt. Ebben a krdsben
zikai okokbl vrhatan a DRAM cellkra pl jvbeli memriatechnolgik sem hoznak majd vltozst.

136

8. FEJEZET. MEMRIA TECHNOLGIK

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

9. FEJEZET. A VIRTULIS MEMRIA

fogja elhelyezni a zikai memriba be nem fr adatokat (9.1. bra).


Fizikai memria
Virtulis memria
Cmlekpzs

Httrtr

9.1. bra. Virtulis trkezels elve

9.2. Virtulis s fizikai cmek, a cmfordts folyamata


Lapszervezs virtulis memria-kezels esetn az NV bites virtulis cmtartomnyt x, egyforma mret lapokra
particionljuk, az NF bites zikai memrit pedig ugyanekkora mret keretekre (frame) osztjuk. Ha a lapok
mrete 2 hatvnya (L bites), akkor mind a virtulis, mind a zikai cmeket 2 rszre bonthatjuk: az als L bit lesz a
lapon belli bjtpozci, a fennmarad fels bitek (a virtulis cmek esetn NV L, zikai cmeknl NF L bit)
pedig a lapot, illetve a keretet azonostja.
Pldul egy 32 bites rendszerben, mely 1 GB (= 230 bjt) mret zikai memrit tartalmaz s melynek virtulis
memria-kezelse 4 kB-os (= 212 bjt) lapokat hasznl, ezek a paramterek a kvetkezk:
A program ltal hasznlt memriacmek NV = 32 bitesek, melynek als L = 12 bitje a lapon belli
bjtpozci, a maradk NV L = 20 bit pedig a lapok azonostsra szolgl. Ebbl meg is kapjuk, hogy a
virtulis memria 220 = 1048576 lapbl ll.
A zikai memria cmzshez NF = 30 bit szksges. Ennek als L = 12 bitje a lapon belli pozci, a
fennmarad NF L = 18 bit pedig a keretek sorszma. Ebben a pldban teht a zikai memria 218 = 262144
keretbl ll, ennyi lapot tud trolni.
Az sszerendelst, ami megadja, hogy melyik lap melyik keretre lett elhelyezve (illetve, hogy melyik keret
melyik lapot tartalmazza), a laptbla tartja nyilvn. A laptblbl lehet csupn egyetlen, globlis, de lehet minden
folyamatnak (fut programnak, processznek) kln-kln is laptblja, ez megvalsts fgg.
A laptbla laptblabejegyzsekbl ll, minden bejegyzs egy lap-keret sszerendelst r le, melybl tbbek
kztt a kvetkez informciknak kell kiderlnie:
A lap sorszma
A keret sorszma
A lapot birtokl folyamat azonostja
A lapon vgezhet megengedett mveletek (rhat/ olvashat/ vgrehajthat)
Vezrl bitek:
Valid bit: ha =1, akkor ez egy rvnyes sszerendels. Ha =0, akkor a lap nincs bent a zikai
memriban, ilyenkor a laptbla bejegyzsben benne kell lennie a lapot trol diszk szektor szmnak,
vagy egyb, a lap httrtron val helyre vonatkoz informcinak.
Dirty bit: ha =1, akkor erre a lapra trtnt rsi mvelet, mita a zikai memriba kerlt. Ezt a
bitet a CPU tartja karban (automatikusan), ezzel az opercis rendszer munkjt segtve. Dirty=0
lapokat nem kell a diszkre kirni, ha kiszorulnak a zikai memribl (hiszen a tartalmuk a zikai
memriba helyezs ta vltozatlan, a diszk-en trolt vltozat teht tovbbra is aktulis).

9.3. A TLB (TRANSLATION LOOKASIDE BUFFER)

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

9.2. bra. Cmfordts, ha a keresett lap a zikai memriban van

9.3. A TLB (Translation Lookaside Buer)


A cmfordts folyamatbl taln mr ki is olvashat a virtulis trkezels legnagyobb problmja. Nevezetesen, ha
egy program memriamveletet szeretne vgezni, a processzornak kt krben kell a rendszermemrihoz fordulnia:
1. elszr a hivatkozott laphoz tartoz laptbla bejegyzst kell kiolvasnia (hiszen a laptbla is ott van),
2. majd ez alapjn tudja a zikai cmet kiszmolni s annak ismeretben a kvnt memriamveletet elvgezni.
Sajnos bizonyos (ksbb rszletezett) okokbl akr tbb memrihoz forduls is szksges lehet a megfelel
laptbla bejegyzs megtallshoz, ami tovbb lasstja a folyamatot.
Szerencsre egy egyszer megoldssal ki lehet hasznlni, hogy a programok memriahozzfrsi mintzata
tbbnyire szablyos. Nem jellemz, hogy egy program vletlenszeren cmezget ssze-vissza a teljes cmtartomnyban. Sokkal inkbb jellemz a loklis viselkeds, vagyis pr lapon sokat dolgozik (pl. ahol pp az aktulisan
hasznlt adatszerkezetek vannak), majd ezutn pr msik lapot kezd el intenzven hasznlni, stb.
A gyakorlat is azt mutatja, hogy ha a gyakran hasznlt lapokhoz tartoz laptbla bejegyzseket a processzorban,
egy erre a clra kialaktott specilis, gyors elrs cache memriban troljuk, akkor a cmfordtsok nagy rszt
a processzor hzon bell meg tudja oldani, a lass rendszermemriban lv laptbla kiolvassa nlkl. Ezt a
specilis, gyors elrs trolt TLB-nek (translation lookaside buer) nevezzk.

140

9. FEJEZET. A VIRTULIS MEMRIA

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

9.3. bra. Cmfordts, ha a keresett lap a TLB-ben van


A TLB-t tartalom szerint cmezhet memrival valstjk meg, vagyis a keress a TLB bejegyzsei kztt
egyetlen lpsben megtrtnik. A tartalom szerint cmezhet memriknak azonban vannak htrnyos tulajdonsgai: nagy felletet ignyel a flvezetn, s nagy a fogyasztsa. Ez is az oka annak, hogy a TLB lefedettsg nem
tud lpst tartani a hasznlatos memrik mretnek nvekedsvel. 1990-ben a MIPS R2000-nek 64 bejegyzses TLB-je volt, a 2006-ban megjelent Intel Core processzorban pedig 256 bejegyzses, az arny jval kisebb az
operatv memrik mretnek nvekedsi rtjnl. Ebbl addan a relatve kis TLB-vel jl kell gazdlkodni,
tartalmnak hatkony menedzselsn sok mlik. Ezt a menedzsmentet (vagyis hogy mely bejegyzsek legyenek
a TLB-ben, mikor hozzunk be jat, s ezzel melyik rgi bejegyzst rjunk fell, stb.) vgezheti kizrlagosan a
hardver vagy a szoftver is (architektrafgg). A TLB tipikus paramtereit a 9.1. tblzat foglalja ssze ([32]).
TLB mret:

16-512 bejegyzs

Tallat ideje:

0.5 - 1 rajel

TLB hiba esetn a cmfordts ideje:

10 - 100 rajel

TLB hibaarny:

0.01% 1%

9.1. tblzat. Tipikus TLB paramterek 2011-ben

9.4. Laptbla implementcik


A virtulis memriakezels hatkony megvalstshoz olyan adatszerkezetekre s algoritmusokra van szksg,
melyek lehetv teszik a gyors cmfordtst. A cmfordts fentebb megismert mkdse alapjn a kvetkez 3

9.4. LAPTBLA IMPLEMENTCIK

141

kritriumot tmasztjuk a laptblval szemben:


Legyen gyors a virtulis cm (lapszm) szerinti keress
A laptblhoz a lehet legkevesebbszer kelljen fordulni egy cmfordts alkalmval (hiszen az minden
alkalommal egy memriamveletet jelent, ami rajelciklusokban mrve igen kltsges)
A laptbla legyen a lehet legkisebb (hiszen a nagy laptbla jelentsen cskkentheti a zikai memria
felhasznli programok szmra fennmarad rszt)
Ezen kvetelmnyek alapjn, a vals termkekben val megjelensk sorrendjben ttekintnk 4 megoldst.

9.4.1. Egyszint laptbla


Az egyszint laptbla egy zikai memriban folytonosan trolt tmb, melynek i. eleme az i. laphoz tartoz
laptbla bejegyzs. Lssuk, hogy az imnt megfogalmazott kvetelmnyek szempontjbl hogyan teljest ez a
megolds.
A keress (1. kritrium) gyors, hiszen a processzor a keresett laptbla bejegyzs memriabeli helyt knnyedn
kiszmolja:
i. laphoz tartoz bejegyzs cme = laptbla kezdcm + i egy bejegyzs mrete
Kvetkezskpp a bejegyzs kiolvassa csupn egyetlen memriamveletbe kerl, hiszen a CPU pontosan tudja,
hogy mely cmen van a bejegyzs, vagyis a memriamveletek szmban (2. kritrium) is j ez az adatszerkezet.
A laptbla mrete (3. kritrium) kt tnyezbl ll: mekkora egy laptbla bejegyzs, ill. hogy hny bejegyzsbl
ll a laptbla. Az egyszint laptbla esetn a laptbla bejegyzs nagyon kicsi is lehet, hiszen:
a lapszm keretszm sszerendels megadshoz nem kell trolni a lapszmot, hiszen az az index, gy az
i. bejegyzsbe elg berni az i. lapot trol keretet;
szintn nem kell kln trolni a lap httrtron val elhelyezkedsvel kapcsolatos informcikat. Ugyanis
a lap vagy a zikai memriban van, vagy a httrtron, teht a bejegyzsben egyetlen cminformcit
kell trolni: ha valid=1, akkor ezt keretszmnak, ha valid=0, akkor httrtr elhelyezsi informcinak
interpretljuk.
sszessgben egy laptbla bejegyzs csak a vezrl biteket s egyetlen cm jelleg informcit tartalmaz
(keretszm vagy httrtrra vonatkoz cm). Ez 32 bites rendszereken jellemzen 4 bjtba, 64 bites rendszerekben
8 bjtba belefr.
Az egyszint laptblk htultje, hogy a teljes laptblnak benne kell lennie a memriban. A nagysgrendek
rzkeltetse kedvrt szmoljuk ki a laptbla mrett 32 bites cmek, 4 bjtos bejegyzsek s 4 kB mret lapok
mellett! A 4 kB (= 212 bjt) mret lapokbl megkapjuk, hogy L = 12. Teht NV L = 20 bit marad a lapok
szmozsra, vagyis 220 = 1048576 lapunk van. Mindegyikhez 4 bjtos bejegyzs tartozik, vagyis a laptbla 4 MB
helyfoglalst jelent, ami bizonyos esetben akr tl nagy is lehet. 64 bites cmekkel, 8 bjtos bejegyzsekkel s
tovbbra is 4 kB-os lapokkal pedig a laptbla 8 252 bjt (32 petabjt) mret, ekkora memria 2011-ben nemhogy
kereskedelmi forgalomban, de a fldkereksgen sincs. Az egyszint laptbla ennlfogva inkbb elmleti, mint
gyakorlati lehetsg, modern, 64 bites rendszerekben nem jhet szba a hasznlata.
A cmfordtshoz szksges bejegyzs megtallsa s a zikai cm sszelltsa a 9.4. brn lthat mdon
trtnik. Az i. lap helyt a laptbla i. bejegyzs adja meg, melyhez az eltols hozzfzse utn megkapjuk a zikai
cmet. A laptbla kezdcmt sok processzor egy specilis regiszterben trolja, ahov az opercis rendszer a
rendszerindtskor berja, hogy hov kpzeli a laptbla elhelyezst.

9.4.2. Hierarchikus laptbla


Az egyszint laptbla problmja, hogy tl nagy, s radsul a teljes laptblnak a memriban kell lennie.
Ezen a nehzsgen gy lehet fellkerekedni, hogy magt a laptblt is a virtulis trkezels al vonjuk, a
ritkn hasznlt rszeit a diszkre lehet menteni, a soha nem hasznlt rszeit pedig el sem kell trolni.
Ennek rdekben a laptblt akkora mret darabokra kell bontani, hogy ezek a darabok elfrjenek egy lapon.
gy lehetv vlik, hogy a laptbla nem hasznlt, lapnyi mret darabjait ugyangy a httrtron tartsuk, mint
brmelyik ms felhasznli lapot. Mivel megsznik a laptbla folytonossga, tovbbi lapokra van szksg, melyek
mutatkat tartalmaznak a laptbla cmfordtst ler lapjaira. Ha ezek a mutatk is olyan sokan vannak, hogy

142

9. FEJEZET. A VIRTULIS MEMRIA


Virtulis cm
NV - L

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

9.4. bra. Cmfordts egyszint laptblval


nem frnek el egy lapon, jabb lap(ok)ra van szksg, melyek mutatkat tartalmaznak ezekre a mutatkat
tartalmaz lapokra, s gy tovbb. Egy fa adatszerkezetet kapunk, melyben minden csompont egy lapnyi
bejegyzs tartalmaz. A levl csompontokban a bejegyzsek cmfordtsi informcit, a kztes csompontok
pedig mutatkat tartalmaznak a gyerek csompontokra.
A cmfordtshoz szksges bejegyzst a fa top-down (gykrtl gyerekig) bejrsval kapjuk meg, a 9.5.
brnak megfelelen.
Virtulis cm
Laptbla
kezdcm

Eltols

1. szint index 2. szint index 3. szint index

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

9.5. bra. Cmfordts, hromszint laptblval


A hierarchikus laptbla lehetv teszi, hogy ne kelljen a teljes laptblt a memriban tartani, csak annak
gyakran hasznlt rszeit. Ezrt az elnyrt azonban nagy rat zetnk: a cmfordtshoz szksges bejegyzs
megtallshoz be kell jrni a ft, annyi lps s gy annyi lass memriamvelet szksges, amilyen mly a
laptbla hierarchia.
Ktszint laptbln alapul cmfordtsra mutat egy konkrt pldt a 9.6. bra. A virtulis cm lapszm s
eltols mezkre tagoldik, a pldban a lapszm ppen 1011. A 4 bites lapszm els kt bitje indexeli az els
szint laptblt. Az els szint laptbla kezdett egy specilis regiszter trolja. Az els kt bit 10, vagyis a
tblzat 2-es bejegyzst kell kiolvasni. A bejegyzs tartalmaz egy mutatt, ami megmutatja, hogy az 10-val
kezdd cmek fordtshoz melyik msodszint laptblt kell hasznlni. A bejegyzsben Valid=1 olvashat,
ami jelen esetben azt jelenti, hogy ez a msodszint laptbla a memriban van, s nem a httrtron. Ezutn
ebbl a msodszint laptblbl kiolvassuk a lapszm als 2 bitje (=11) ltal adott bejegyzst, jelen esetben
a harmadikat. Ebben a bejegyzsben Valid=1-et tallunk (a lap a zikai memriban van), valamint a laphoz
tartoz keret szmt (=0101). A keretszm s az eltols egyms utn illesztve megadja a virtulis cmhez tartoz
zikai cmet. A hierarchikus laptblk elnye, hogy nem kell a teljes laptblt a zikai memriban trolni. Jelen

9.4. LAPTBLA IMPLEMENTCIK

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

9.6. bra. Plda ktszint laptbln alapul cmfordtsra


Vegyk el ismt az egyszint laptblnl bevezetett pldt, teht 32 bites cmeink, 4 bjtos bejegyzsek s 4
kB mret lapjaink vannak. Ekkor a virtulis cm als 12 bitje lesz az eltols, a fennmarad 20 bit pedig a lap
sorszma. Egy 4 kB mret lapba 1024 (= 210 ) darab laptbla bejegyzs fr el, vagyis a 220 darab lap lerja 210
lapot foglal. Ezek elhelyezkedst (a laptbla lapok zikai memriabeli illetve a httrtrbeli cmt) pedig 210 ,
egy jabb lapon elhelyezett bejegyzs rja le, ami pont meg is tlti a 4 kB mret lapot. Ezt a felsbb szint lapot
teht mindig a zikai memriban tartjuk, az alacsonyabb szint lapokat pedig, melyek a tnyleges cmfordtsi
informcikat tartalmazzk, igny szerint trolhatjuk vagy a zikai memriban, vagy a httrtron.
Annak rdekben, hogy a hierarchikus laptblk problmjt megrtsk, szmoljuk ki a 64 bites rendszerekben
szksges laptbla hierarchia szintjeinek a szmt. A 64 bites cmbl legyen megint 12 bit az eltols, a fennmarad
52 bit pedig 252 lap hasznlatt teszi lehetv. 8 bjtos bejegyzsekbl 512 (=29 ) fr el egy lapon, teht 52/9 fels
egsz rsze, vagyis 6 lesz a hierarchia szintek szma. Vagyis minden egyes memriamvelet sorn a processzornak
6 tovbbi memriamveletet kell elvgeznie, hogy a virtulis cmbl a zikai cmet ki tudja szmolni (feltve, hogy
a vonatkoz laptbla bejegyzs nincs bent a TLB-ben), ami nagy mrtkben le tudja lasstani a program futst.
A hierarchikus laptbla messze a legnpszerbb megolds a 32 bites processzorok krben, ilyen megoldst
hasznl az x86 s az ARM is. Az x86 s az ARM architektrk 64 bites kiterjesztse is megtartotta ezt az
adatszerkezetet, annak ellenre, hogy a hierarchikus laptbla 64 bites cmzs mellett tl mlly vlik. TLB hiba
esetn 4-5-6 memria-hozzfrs szksges a cmfordtshoz, ami, tekintve, hogy a memriamveletek idignye
akr 2-3 nagysgrenddel is nagyobb lehet az rajelciklusnl, lnyegesen rontja a rendszer teljestmnyt.

9.4.3. Virtualizlt laptbla


Egy gyes trkkel, amit a MIPS s a 64 bites Alpha processzorok is alkalmaznak (OSF/1 s OpenVMS opercis
rendszerek alatt), szerencss esetben egyetlen memriamveletre lehet korltozni a cmfordtshoz szksges
laptbla bejegyzs betltst.
Emlkezznk vissza milyen egyszer volt a bejegyzs megtallsa az egyszint laptblk esetn:
i. laphoz tartoz bejegyzs cme = laptbla kezdcm + i egy bejegyzs mrete

144

9. FEJEZET. A VIRTULIS MEMRIA

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

9.7. bra. Virtualizlt laptbla elhelyezkedse


A cmfordts menete a kvetkez lesz:
1. A fut program ltal hivatkozott virtulis cmrl levlasztjuk a lapszmot
2. Tegyk fel, hogy a laphoz tartoz laptbla bejegyzs nincs a TLB-ben (ellenkez esetben abbl kzvetlenl,
szmottev idvesztesg nlkl vgre lehet hajtani a cmfordtst), vagyis TLB hiba van, a bejegyzst be
kell olvasni a zikai memribl
3. Kiszmtjuk a keresett laptbla bejegyzs virtulis cmt (=laptbla hierarchia als szintjnek (az brn a 3.
szintjnek) virtulis kezdcme + keresett lap sorszma szorozva egy laptblabejegyzs mretvel)
4. Megnzzk, hogy van-e olyan TLB bejegyzs, ami a laptbla bejegyzs virtulis cmt lekpzi zikai cmre
5. Ha van ilyen TLB bejegyzs, akkor nyert gynk van: a cmfordtst elvgezve kzvetlenl kiolvassuk a
zikai memribl a keresett laptbla bejegyzst, vgrehajtjuk a program ltal hivatkozott cm cmfordtst
s elvgezzk a program ltal kiadott memriamveletet (teht 2-szer kellett a memrihoz fordulni).
6. Ha nincs ilyen TLB bejegyzs, akkor a klasszikus mdon, a hierarchikus laptbla top-down bejrsval jutunk
el a keresett laptbla bejegyzsig, s csak ezutn vgezhetjk el a program ltal kiadott memriamveletet
(teht pl. 64 bites rendszerben 4/5/6 + 1-szer kellett a memrihoz fordulni).
A TLB hatkony megvalstsa a virtualizlt laptblk esetn mg fontosabb, hiszen az nemcsak a program
ltal kiadott cmekhez kell, hogy biztostson gyors cmfordtst, de a TLB hiba esetn magt a laptbla bejegyzst
is a TLB-re tmaszkodva keressk a zikai memriban. Ez a ketts nyoms mg nagyobb TLB-k hasznlatt
teszi szksgess, aminek fogyasztsi/melegedsi vonzatai vannak.

9.4.4. Inverz laptbla


A hagyomnyos laptblk minden laphoz egy bejegyzst tartalmaznak, melybl kiolvashat hogy az a lap melyik
keretben, vagy ha httrtron van, annak melyik szektorban tallhat.
Az inverz laptbla pont fordtva mkdik. Minden kerethez tartalmaz egy bejegyzst, melybl kiolvashat,
hogy abban a keretben melyik lap tallhat. Ennek megfelelen az inverz laptblk mrete nem a lapok szmval,
hanem a keretek szmval arnyos, vagyis kizrlag a zikai memria mrettl fgg. Ha kevs a zikai memria,

9.4. LAPTBLA IMPLEMENTCIK

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 mutat tbla


Fizikai memria

Hash fv.

Inverz laptbla

9.8. bra. Cmfordts inverz laptblval


A hatkony implementci fontos eleme a hash tbla (9.8. bra). A lapsorszmbl egy hash fggvny
segtsgvel kpeznk egy indexet, majd kiolvassuk egy .n. hash mutat tbla (hash anchor table) ennyiedik
bejegyzst. Ebben a bejegyzsben egy mutat tallhat az els olyan laptbla bejegyzsre, amely olyan lapot
tartalmaz, aminek ez a hash rtke. Megnzzk ezt a laptbla bejegyzst, hogy a benne lv lapsorszm egyezik-e
azzal, amit keresnk. Elfordulhat, hogy nem, hiszen a hash fggvnyek tulajdonsga, hogy tbb lapsorszmra
is adhatjk ugyanazt az rtket. Ebben az esetben a laptbla bejegyzsben tallhat egy jabb mutat, ami a
kvetkez olyan laptbla bejegyzsre mutat, aminek ugyanez a hash rtke. Tulajdonkppen az azonos hash
rtket ad lapokat tartalmaz bejegyzsek lncolt listba vannak fzve, melynek els elemt a hash mutat
tbla megfelel bejegyzse tartalmazza. Ezen a lncolt listn kell vgigmenni, amg az ltalunk keresett lapot
tartalmaz bejegyzst meg nem talljuk. Ekkor rnznk, hogy a laptbla hnyadik bejegyzsn llunk: ez lesz a
keret szma, ahol a keresett lap tallhat.
Ha a hash tbla rtkkszlete elg nagy, akkor ezek a lncok rvidek, jellemzen csak 1-2 elembl llnak, gy
a keresett keret 1-2 lpsben megtallhat. A nagy rtkkszlet hash fggvny alkalmazsnak htrnya is van:
a nagy mret hash mutat tbla, ami a laptbla mellett szintn a zikai memriban van trolva.

9.4.5. Szoftver menedzselt TLB


Az eddigiekben feltteleztk, hogy a TLB hiba feloldsakor a hardver, vagyis a processzor jrja be a laptblt a
keresett laphoz tartoz laptbla bejegyzs betltse rdekben. Ez azonban nem az egyetlen lehetsg. Szmos
architektra alkalmaz szoftver menedzselt TLB-t, ami annyit jelent, hogy a processzor nem foglalkozik a laptblval.
A TLB-t termszetesen ekkor is kezeli, de TLB hiba esetn rtesti az opercis rendszert, hogy keresse meg
az adott laphoz tartoz laptbla bejegyzst. Az opercis rendszer olyan adatszerkezetet hasznl a bejegyzsek
trolsra, amilyet csak akar (p. a SPARC esetn a SUN Solaris opercis rendszer inverz laptblt, a Linux pedig
hierarchikus laptblt alkalmaz). A megtallt bejegyzst ezutn odaadja a processzornak, az pedig a TLB-be

146

9. FEJEZET. A VIRTULIS MEMRIA

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 .

9.4.6. Mretezsi krdsek


Eddig mg nem foglalkoztunk azzal a krds, hogy a virtulis trkezels sorn a lapmretet milyen nagyra rdemes
megvlasztani.
rvek nagyobb lapok mellett:
kevesebb a TLB hiba, mivel nagyobb a TLB lefedettsg
ha a httrtr diszk alap, akkor a lapok memriba tltsi idejt a forgatsi s fejpozicionlsi id dominlja,
vagyis nagy lapok betltse szinte ugyanannyi ideig tart, mint kis lapok. Nagy lapok esetn a forgatsi s
fejpozicionlsi id amortizldik.
rvek kisebb lapok mellett:
Ha kisebb a lap, akkor kisebb az eslye, hogy a szksges adatokon kvl ugyanazon a lapon lv, de esetleg
soha nem hasznlt adatokat is a drga, gyors elrs memriban kelljen trolni.
Mindezen szempontok gyelembe vtelvel 4-8 kB mret lapok hasznlata a legelterjedtebb.

9.5. Cmtr-elklnts a multi-tasking opercis rendszerek tmogatshoz


A bevezetben is emltettk, milyen fontos a virtulis memria tmogatsa a multi-tasking opercis rendszerek
szmra. Ezek az opercis rendszerek tbb taszkot is tudnak futtatni egyidejleg, melyek a zikai memrit
kzsen hasznljk. Ha kevesebb a processzor, mint a fut taszk, akkor az opercis rendszer akkor is kpes az
egyidej futtats ltszatt kelteni, mgpedig idosztssal: egy ideig az egyik taszkot hagyja futni, majd elveszi
tle a processzort, elmenti az llapott, s a kvetkez taszkra vlt, stb.
Egy modern opercis rendszer minden taszk szmra egy sajt, sszefgg, 0-val kezdd cmtartomnyt
knl fel, attl fggetlenl, hogy ppen hny taszk fut, s mennyi memria ll rendelkezsre zikailag. Szmos
architektrn minden taszk (egyidejleg) megkaphatja elmletileg akr a 0. cmtl a virtulis cmtartomny fels
hatrig tart teljes memrit is. A taszkok gy egy lland futsi krnyezetet rzkelnek, ami a szoftverfejlesztst
nagy mrtkben megknnyti, hiszen fordts sorn tudhat, hogy a program belpsi pontja, az egyes fggvnyek,
globlis vltozk, stb. milyen cmre kerlnek. A cmtr-elklnts azonban nem csak knyelmi clokat szolgl.
Azltal, hogy egy taszk sajt virtulis cmtartomnnyal rendelkezik, lehetetlenn vlik, hogy ms taszkokhoz
tartoz memriaterleteket rjen el, esetleg hibs mkds vagy rosszindulat kvetkeztben mdostson. gy a
cmtr-elklnts a 16.4.3. fejezetben trgyalt memriavdelem egyik f eszkze lesz.
A taszkok cmternek elklntsre pr architektra hardver tmogatssal is rendelkezik, de ennek hinyban,
megfelel laptbla-menedzsmenttel, az opercis rendszer is megvalsthatja azt.

9.5.1. Cmtr-elklnts kizrlag a laptblra alapozva


Ha minden taszk kln, sajt laptblt kap, akkor knnyen megoldhat, hogy mindegyikk 0-val kezdd, sajt
cmtartomnnyal rendelkezzen. A taszkvltst ilyenkor laptbla vlts is ksri, ami kimerl annyiban, hogy az

9.5. CMTR-ELKLNTS A MULTI-TASKING OPERCIS RENDSZEREK TMOGATSHOZ

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.

9.9. bra. Tbb taszk laptblja egy multi-tasking opercis rendszerben


A virtulis trkezels segtsgvel az is megoldhat, hogy a taszkok virtulis memrijban legyenek olyan
cmtartomnyok, melyek minden taszkra kzsek, ezek mgtt a zikai memria ugyanazon keretei llnak.
Ezeknek az osztott cmtartomnyoknak fontos szerepk van, tbbek kztt ezeken keresztl lehet kommuniklni
az opercis rendszerrel.
Lthat teht, hogy a multi-taszking megvalstsa, a taszkok cmternek elklntse mr alapszint virtulis
memriakezelssel is megoldhat. A laptblk kztti vltogatsnak azonban van egy olyan vonzata, mely
ronthatja a rendszer teljestmnyt. Laptblavltskor ugyanis a TLB tartalma is kirtsre (rvnytelentsre,
ush) szorul, hiszen megvltoznak a lapkeret sszerendelsek, az egyik taszk egy lapja ms kereten tallhat,
mint a msik taszk ugyanazon lapja. A kirts utn, amg a TLB jra meg nem telik, minden laphivatkozs lass
laptbla bejrssal jr.
Ennek a problmnak a kikszblsre szmos architektra bevezette a cmtr azonostt (address space
identier, ASID), amely szerept tekintve nem ms, mint egy taszk azonost. A TLB bejegyzsek pedig, az eddigi
lapszm s keretszm mellett egy jabb mezt kapnak, a cmtr azonostt, amely meghatrozza, hogy az
adott TLB bejegyzs mely taszkhoz tartozik. A TLB gy most mr tbb taszk lapkeret sszerendelseit is trolni
tudja egyszerre. Az opercis rendszer taszkvltskor egy specilis regiszterbe rja az pp folytatni kvnt taszk
azonostjt, s onnantl kezdve az MMU minden memriahivatkozskor csak az ahhoz tartoz TLB bejegyzseket
fogja gyelembe venni. A TLB kirtse s az jbli feltltse okozta idvesztesg gy kikszblhet. ASID
tmogatssal rendelkezik tbbek kztt az ARM, a SPARC, az Alpha s a MIPS architektra.

9.5.2. Szegmentlsra alapozott cmtr-elklnts


A taszkok cmternek elklntsre hasznlhat a szmos architektra ltal tmogatott ktlpcss cmfordts
(two-stage translation), ms nven lapozott szegmentls (paged segmentation) is.
A szegmentls valjban ennl sokkal tbbre kpes. Brmilyen, logikailag egybetartoz objektumot (pl. a
taszk kdjt, adatait, stack-t, vagy egy nagyobb adatszerkezetet) kln szegmensbe lehet helyezni. A szegmensek
vltoz hosszsgak (st, futs kzben is nvelhetk, ill. cskkenthetk), a virtulis memriban brhonnt
kezdve, folytonosan helyezkednek el, s bell sajt cmtrrel rendelkeznek.
Szegmentlt lapozs esetn a memria tartalma a 9.10. brn lthat mdon szervezdik. A vltoz mret
memriabeli objektumokat a szegmensek kpviselik, melyeket a szegmensler tbla a virtulis memrira kpez
le, majd a virtulis memria x mret lapjait a laptbla alapjn vagy a zikai memria, vagy a merevlemez
trolja.

148

9. FEJEZET. A VIRTULIS MEMRIA

9.10. bra. Lapozott szegmentls


A programbl kiadott memriacmek gy egy sokkal hosszabb, sszetettebb folyamaton mennek keresztl,
mire zikai cm vlik bellk. A cmlekpzs kt lpse:
1. Els szint. A szegmensek lekpzse a virtulis memrira (pontosabban a program ltal kiadott, n. eektv
cm (az x86 terminolgia szerint logikai cm) lekpzse virtulis cmre)
Adategysg: a vltoz mret szegmensek, melyek a programok, ill. az opercis rendszer ignyeihez,
knyelmhez igazodnak
A lekpzshez hasznlt adatszerkezet: a szegmensler tbla, melynek minden sora egy-egy szegmens
elhelyezkedst adja meg. Mezi: a szegmens kezdete a virtulis memriban, hossza, vdelmi
informcik, valid bit (ugyanis komplett szegmenseket is lehet a httrtron trolni, de erre most nem
trnk ki).
2. Msodik szint: A virtulis memria lapjainak lekpzse a zikai memrira (azaz a virtulis cm lekpzse
zikai cmre)
Adategysg: a x mret lapok, melyek a hardver ltal knnyen kezelhetk
A lekpzshez hasznlt adatszerkezet: a laptbla, mely a lapkeret sszerendelseket trolja
Az x86 architektra 32 bites zemmdjban is van lehetsg szegmenskezels hasznlatra, st, ezt a funkcit
ki sem lehet kapcsolni. Ebben az architektrban minden egyes taszkhoz 3 szegmenst felttlenl hozz kell
rendelni:
A kdszegmenst, innen hvja le a processzor a gpi kd utastsokat. Az utastsszmll is a kdszegmensen bellre vonatkozik.
Az adatszegmenst, amire az adatelr/adatmozgat utastsok vonatkoznak. Az adatokra mutat pointerek
mind az adatszegmensre vonatkoznak, annak kezdethez relatvak.
A stackszegmenst, amiben a stack-kezel (push, pop) utastsok dolgoznak.
Minden fggvnyhvst s adatelrst, amely az adott taszk kd-, illetve adatszegmensre vonatkozik, kzeli
ugrsnak, illetve kzeli cmzsnek neveznek, mg a szegmenseken tnyl ugrst s adatelrst tvolinak.
A modern opercis rendszerek jellemzen nem lnek a szegmentls adta lehetsggel, mert a szegmensszervezs okozta tbbletadminisztrci nem trl meg. Mind a Linux, mind a Microsoft Windows jabb verzii
kizrlag a laptblra alapozott megoldst hasznljk (9.5.1. fejezet). Az x86 architektrban, 32 bites zemmdban az n. at memriamodellt kvetik, vagyis egyetlen szegmenst hoznak ltre (a 0-s kezdcmtl 4 GB-ig), s
mindent ezen keresztl valstanak meg. A 64 bites x86 architektrban a szegmentls mr nem is hasznlhat
(specilis esetektl eltekintve), ez a funkci fokozatosan eltnik a palettrl.
Az x86-on kvl a PowerPC is tmogat szegmentlst, de egy kiss ktttebben, rugalmatlanabbul: a szegmensek hossza x (256MB), s a szegmens azonostja a program ltal kiadott cmek fels bitjeibl szrmazik.

9.6. FIZIKAI CMKITERJESZTS (PAE)

149

9.6. Fizikai cmkiterjeszts (PAE)


Amikor a 32 bites processzorok megjelentek, elkpzelhetetlennek tnt, hogy egy szemlyes, hzi hasznlatra
sznt szmtgpben valaha is 4 GB memria legyen. Ez az id azonban mgiscsak eljtt, nemcsak az x86 alap
PC-k, hanem az ARM alap mobil eszkzk vilgban is. Termszetesen a memriakorlt tlpse rdekben be
lehet vezetni j, 64 bites utastskszlet architektrt, de ez sajnos a kompatibilits feladsval jr. Meg lehet
gy tervezni egy processzort, hogy a rgi, 32 bites utastskszletet is tmogassa a 64 bites mellett, de az risi
szmban piacon lv 32 bites programok akkor sem fognak tudni protlni a tbblet memribl, hiszen azok
tovbbra is csak 32 bites memriacmeket hasznlhatnak, amivel tovbbra is csak 4 GB memrit tudnak elrni.
Mgis van egy olyan technika, ami lehetv teszi, hogy 32 bites processzorok 4 GB-nl tbb memrit tudjanak
cmezni, s azt az opercis rendszer ki is tudja hasznlni. Ezt a technikt zikai cmkiterjesztsnek (physical
address extension, PAE) hvjk.
A PAE tlete nagyon egyszer. A 32 bites programok semmikpp sem tudnak tllpni a 4GB-os korlton.
De ha van egy multi-tasking opercis rendszernk, mely tbb taszkot (programot) futtat, akkor az egyenknt 4
GB-os memriafelhasznls sszessgben tllpheti a 4 GB-t!
A 9.9. brra ismt rnzve lthat, hogy semmi akadlya egy nagyobb zikai memria hasznlatnak. Az
egyetlen nehzsg, hogy a laptbla bejegyzsek keret mezje szlesebb lesz, ami magt a laptbla bejegyzst
is szlesebb teszi. Emiatt a PAE hasznlathoz szksg van az opercis rendszer tmogatsra is, hogy az j
formtum laptbla bejegyzseket is kezelni tudja.
sszefoglalva teht, a PAE segtsgvel a programok tovbbra sem tudnak 4 GB-nl tbb memrit hasznlni,
de tbb program egyttes memriaignye meghaladhatja a 4 GB-os korltot. A 32 bites x86 architektra a Pentium
Pro ta 36 bites zikai cmeket tmogat, gy a PAE segtsgvel 64 GB-ot tud kezelni. Az ARM sajt tervezs 32
bites processzorai kzl a Cortex-A15-tl kezdden lehet 40 bites zikai cmeket hasznlni, amely 1 TB memria
illesztst teszi lehetv.

9.7. Virtulis trkezels a gyakorlatban


Ebben a fejezetben rviden ttekintjk, hogy nhny elterjedtebb processzorcsald milyen mdon valstotta meg
a virtulis trkezelst.

Az x86 virtulis trkezelse


Az x86 32 bites zemmdban lapozott szegmentlsra, 64 bitesben pedig lapozsra alapozott virtulis trkezelst
alkalmaz.
Alapesetben az x86 4 kB-os lapokat hasznl, s hierarchikus laptblban trolja a laptblabejegyzseket. A
hierarchiaszintek szma, a virtulis cmek tagozdsa s a laptblabejegyzsek mrete azonban sok mindentl
fgg.
32 bites zemmd, PAE nlkl. Ez a 32 bites zemmd alapesete. A laptbla a klasszikus ktszint hierarchikus laptbla felptst kveti. A virtulis cm egy 12 bites eltolsbl, egy 10 bites msodszint s egy 10 bites els
szint laptbla indexbl ll. A bejegyzsek 4 bjtosak, gy mind az els, mind a msodszint laptblk pontosan
egy lapnyi memrit foglalnak (210 * 4 byte = 4 kB). A processzor ltal tmogatott cmtartomny 4 GB.
32 bites zemmd, PAE mellett. A PAE engedlyezse utn nagyobbak, 4 helyett 8 bjtosak lesznek a
laptbla bejegyzsek, hogy a nagyobb zikai memrinak megfelel tbb keretet tudjanak hivatkozni. A 8 bjtos
bejegyzsekbl azonban csak 512 fr egy lapra, ami = 29 , emiatt sajnos a korbbinl eggyel magasabb, hrom
szint laptblk hasznlata vlt szksgess. A virtulis cmek megvltozott tagozdsa teht: 12 bit eltols, 9
bites harmadszint laptbla index, 9 bites msodszint laptbla index, majd a fennmarad 2 bit egy mindssze 4
bejegyzsbl ll els szint laptblt indexel. A nagyobb laptblabejegyzsnek ksznheten a 32 bites virtulis
cmek hosszabb, 36 bites zikai cmekre kpezhetk le, ezzel 64 GB-ra n a tmogatott memria mrete.
64 bites zemmd. A 64 bites zemmdban a virtulis cmek jelenleg 48 bitesek, a zikai cmek pedig processzortl fggen 40-48 bitesek (a jvben mind a virtulis, mind a zikai cmek knnyszerrel bvthetk
lesznek, egszen 64 bitig). A laptblabejegyzsek 8 bjtosak, gy egy lapra 512 bejegyzs fr el. A virtulis cmek

150

9. FEJEZET. A VIRTULIS MEMRIA

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

10. FEJEZET. CACHE MEMRIA

mr hromszint a trhierarchink: hromfle technolgival ellltott, klnbz sebessg s r helyen


troljuk az adatainkat (a nagysgrendek rzkeltetse kedvrt a 10.1. bra szmszeren is sszefoglalja ezeket a
paramtereket [32]).
Elrsi id

r/GB

SRAM

0.5-2.5 ns

2000-5000$

DRAM

50-70 ns

20-50$

5 20 10 ns

0.2$

HDD

10.1. bra. Tr technolgik hozzfrsi ideje s ra 2008-ban


A leglassabb troln (a httrtron) tartjuk a legkevsb hasznlt adatokat (ezt a virtulis trkezels eleve
tmogatja), a gyakran hasznlt adatokat az operatv memriban troljuk, vgl az ppen fut algoritmus
aktulisan hasznlt adatait - pl. a program aktulis fggvnynek loklis vltozit - pedig mg kzelebb visszk a
processzorhoz, s egy nagy sebessg, de kis mret SRAM-ba, a cache-be tesszk. Ha a lokalitsi elveket gyesen
kihasznlva jl menedzseljk a hrom szint kztti adatmozgatst, akkor elrhetjk, hogy a processzor szmra
mindig kznl legyenek az ppen szksges adatok, gy a memria lasssga jelentette szk keresztmetszet
lnyegesen enyhthet.
A gyakorlatban nem csak 3, hanem akr 4-5-6 szint trhierarchikat is alkalmaznak gy, hogy a cache
funkcionalitst tbb szinten valstjk meg (10.2. bra).
CPU
Regiszterek

CPU Cache
L1 Cache

be
Se

g
lts

L3 Cache

Fizikai memria

ss
g

L2 Cache

DRAM

CPU Cache
Virtulis memria
Httrtr

10.2. bra. Trhierarchia

10.3. Cache megvalstsi lehetsgek, alapfogalmak


A cache megvalstsokat ktfle szempontbl csoportostjuk: cmzsi md szerint s menedzsment md szerint.
A cmzsi md szerint:
Transzparens: Transzparens cmzsi md esetn a cache tartalma az operatv memria klnbz rszeinek
msolata. A cache a zikai vagy virtulis memriabeli cmekkel cmezhet, vagyis a fut alkalmazsok
szmra teljesen transzparens, azok esetleg nincsenek is tudatban a cache jelenltnek. Az alkalmazsok
ltal kiadott cmet elszr a cache-ben kezdjk keresni, s csak ha ott nincs meg, akkor fordulunk a lass
operatv memrihoz.
Nem transzparens: A nem transzparens cmzsi md azt jelenti, hogy a cache s az operatv memria cmzs
szempontjbl is elklnl. A cmtartomny egy rsze nagy sebessg SRAM-mal, a fennmarad rsze
pedig a lass de olcs DRAM-mal van megvalstva. Az alkalmazsoknak tudnia kell a cache ltezsrl,
annak cmtartomnybeli pozcijrl, mretrl, hiszen a gyors elrs adatok ott helyezkednek el.
Menedzsment szerint:

10.4. CACHE SZERVEZS

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.

10.4. Cache szervezs


10.4.1. Transzparens cmzs cache szervezs
A cache memria az adatokat nem bjtonknt, hanem nagyobb darabokban kezeli, a trols alapegysge a blokk
(a szerepe a virtulis memriakezelsnl ltott lappal azonos). A blokkokat a blokkszmmal azonostjuk. Ha
a blokkok mrete 2 hatvnya, akkor a teljes cm fels bitjei a blokkszmnak, als bitjei pedig a blokkon belli
eltolsnak felelnek meg. Pl. ha 32 bites cmeink vannak, s a cache blokkok mrete 64 bjt, akkor a blokkon belli
eltols 6 bitet vesz ignybe (mert 26 = 64), teht 26 bit marad a blokkok azonostsra.
A cache-ben lv minden egyes trolt blokk mellett a blokk operatv memriabeli elhelyezkedsvel kapcsolatos
s egyb, tartalommenedzsmentet segt informcikat is el kell helyezni (a virtulis memrinl ltott laptbla
bejegyzshez hasonlan). Ezek a jrulkos informcik a kvetkezk:

154

10. FEJEZET. CACHE MEMRIA


Cache tag: informci arra nzve, hogy az adott cache blokk az operatv memria mely blokkjt tartalmazza
(ennek mrete s rtelmezse a klnfle cache szervezsi megoldsok esetn eltr, ezeket ksbb, mg
ebben a fejezetben trgyaljuk)
Valid bit: =1, ha az adott cache blokk rvnyes adatot tartalmaz
Dirty bit: =1, ha az adott cache blokk tartalma mdosult, mita a cache-be kerlt. Ilyen esetben ugyanis a
blokkot, ha mr nincs r szksg a cache-ben, nem lehet fellrni egy msikkal, hanem eltte a megvltozott
tartalmat vissza kell rni az operatv memriba

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.

10.3. bra. Teljesen asszociatv cache szervezs

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

10.4. CACHE SZERVEZS

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

=
=
=

10.4. bra. Direkt lekpzs


A megolds htrnya, hogy a cache bizonyos blokkjaira versenyhelyzet alakulhat ki. Ha pldul az ppen
fut algoritmus kt pirossal sznezett memria blokkra is gyakran hivatkozik, de mivel a szervezs sajtossga
miatt a cache-ben csak az egyik helyezhet el, gyakran kell a piros cache blokk tartalmt cserlni (akkor is, ha
egybknt mshol mg lenne hely a cache-ben), ami rontja a hatkonysgot.
n-utas asszociatv szervezs
A direkt lekpzsnek nagyon elnys tulajdonsga volt a gyors keress, az alacsony fogyaszts s a kis bitszlessg
tag-ek (kompartorok) hasznlata. A teljesen asszociatv lekpzs elnye volt, hogy egy blokk a cache-be
brhova elhelyezhet, gy a cache tnyleg a leggyakrabban hivatkozott blokkokat (s csak azokat) tartalmazza. Az
n-utas (vagy halmaz-) asszociatv lekpzs (n-way vagy set associative organization) a kett elnyeit prblja
egyesteni.
A direkt lekpzshez hasonlan az n-utas asszociatv lekpzsben is a blokkszm als bitjei hatroljk be, hogy
egy blokk hol lehet a cache-en bell. Azonban a direkt lekpzssel ellenttben a blokkok cache-beli elhelyezst a
blokkszm nem hatrozza meg egyrtelmen, hanem n lehetsget biztost. Vagyis a memriabeli blokkszm als
bitjei kijellnek egy n cache blokkbl ll halmazt, ahol a hivatkozott tartalom elfordulhat. Az, hogy az n blokk
kzl melyik tartalmazza a keresett adatot, a blokkokhoz tartoz tag-ek sszehasonltsval (komparlsval)
dnthet el.
A keress teht kt rszbl ll: 1. a blokkszm als bitjei indexelik (kivlasztjk) a megfelel cache blokk
halmazt (n blokkot), 2. az ezekhez a blokkokhoz tartoz tag-eket a blokkszm tag rszvel sszehasonltva llaptjuk
meg, hogy megtallhat-e a blokk a cache-ben (10.5.bra).

156

10. FEJEZET. CACHE MEMRIA

Operatv memria

Cm
Eltols

Blokk szm
Tag

Index

Tag

Blokk tartalom

Tag

Blokk tartalom

=
=

Keresett tartalom

10.5. bra. 2-utas asszociatv szervezs


Ez a kialakts teht gyors s hatkony is, hiszen az indexels lnyegesen leszkti a keressi teret s gy az
egyidejleg mkd kompartorok szmt, de a direkt lekpzsnl lnyegesen rugalmasabb, ritkbban fordul el
az azonos halmazba kpezett blokkok kztt a versenyhelyzet.

10.4.2. Transzparens cache szervezs s a virtulis memriakezels viszonya


Egsz eddig kerlgettk a forr kst: hol lass memrit, hol operatv memrit emltettnk a cache-els
trgyaknt. Ennek oka, hogy egy virtulis trkezelst tmogat processzor esetn egyltaln nem egyrtelm,
hogy a cache szervezs sorn a cache indexelsre s a tag-ek sszehasonltsra a zikai, vagy a virtulis cmet
hasznljuk-e. A trhierarchia trgyalsakor lttuk, hogy a cache alatt a zikai memria ll, annak elrst
gyorstja, ezrt kzenfekvnek ltszik, hogy a cache a keress s a trols sorn zikai cmeket hasznljon. Mint
ki fog derlni, a zikai helyett a virtulis cmek hasznlatnak is vannak elnyei. Az albbiakban vgigvesszk az
sszes lehetsges kombincit, s mrlegeljk, melyik milyen elnnyel, ill. htrnnyal jr.
A 10.6. bra azt az esetet mutatja, amikor a keress mindkt lpse, azaz a cache indexelse s a tag-ek
sszehasonltsa sorn is a zikai cmeket hasznljuk. Mivel a fut program virtulis cmeket hasznl, minden
cache keresst meg kell, hogy elzzn a cmfordts, teht a cache elrsi idhz hozzaddik a cmfordtsi id is.
A cmfordtst szerencss esetben (tulajdonkppen jl mretezett rendszerek esetn az esetek tbbsgben) a TLB
oldja fel (de az sem nulla id alatt), ha nincs TLB tallat, a zikai memriban lv laptblhoz kell fordulni, hogy
a virtulis cmhez tartoz zikai cmet megkeressk. Ltni fogjuk, hogy sebessg szempontjbl nem ez lesz a
legjobb vlaszts.
Virtulis cm

TLB

Fizikai cm
cache index

Cache

Cache tag

10.6. bra. Fizikailag indexelt cache zikai tag-gel


A teljestmny javthat, ha el tudjuk rni, hogy a TLB s a cache legalbb rszben prhuzamosan tudjon
mkdni. Ennek egy mdja, hogy a cache indexelst a virtulis cmmel vgezzk, gy ugyanis nem kell megvrni
a cmfordtst (10.7. bra). Az indexels s a cmfordts teht egymssal prhuzamosan zajlik. Az index ltal

10.4. CACHE SZERVEZS

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

10.7. bra. Virtulisan indexelt cache zikai tag-gel


Ezt a gondolatot tovbb is lehet vinni, s a teljes cache mkdst a virtulis cmekre is lehet alapozni. Ilyenkor
mind az index, mind a tag a virtulis cmbl kpzdik (10.8. bra). Vegyk szre, hogy cache tallat esetn a TLB-re
nincs is szksg! Viszont a virtulis cmek szlesebbek, mint a zikai cmek (hacsak nincs zikai cmkiterjeszts,
9.6. fejezet), gy a cache tag is szlesebb lesz, teht egyrszt a szlesebb tag-et kell trolni, msrszt a szlesebb
tag-et szlesebb kompartorral kell sszehasonltani a keresett cm megfelel rszvel.
Virtulis cm
cache index

Cache

Cache tag

10.8. bra. Virtulisan indexelt cache virtulis tag-gel


A negyedik kombincinak, vagyis a zikailag indexelt s virtulis tag-eket hasznl cache-nek nincs tl sok
rtelme, hiszen a cache keress sorn elszr kell indexelni s csak utna tag-et sszehasonltani. A virtulis tag
hiba van meg azonnal, ha az indexelshez mindenkpp meg kell vrni a cmfordtst.
Megjegyezzk, hogy a cache szervezsben a virtulis cmek felhasznlsnak nem csak elnyei vannak, mint
ahogy a fenti lers sugallja. A virtulis memria-kezels lehetv teszi, hogy a zikai memria egy bizonyos
kerett a virtulis memria tbb lapjn keresztl is elrhessk egyidejleg. Ezt az (ltalunk nem trgyalt) esetet
megengedve elfordulhat, hogy a virtulis cmekre alapozott cache-ek a zikai memria ugyanazon blokkjt
tbbszr is tartalmazzk, ami nem kvnatos, hiszen feleslegesen pazarolja a helyet az amgy is szks cache-ben.
Msrszt, multi-tasking krnyezetben a taszk vlts mindig laptbla vltssal is jr. Ha a cache szervezs a
virtulis cmekre alapul, akkor minden egyes taszk vltskor rvnytelenteni kell a cache tartalmt.

10.4.3. Nem-transzparens cache szervezs


Nem transzparens cache szervezs esetn a cmtr egy rsze SRAM-mal van megvalstva, az ide helyezett adatok
teht lnyegesen gyorsabban lesznek elrhetk. A transzparens cmzs cache-ekkel ellenttben ilyenkor a cache
nem a lassabb memria egy rsznek msolatt tartalmazza, hanem nll, sajt cmmel rendelkez objektumokat,
melyek tipikusan nincsenek is a lassabb memriban trolva. Ez a szervezs nem ignyel keress mveletet,
hiszen minden cache-ben trolt adatnak sajt cme van, a fut applikci egyszeren lekri a cache n. cmnek
tartalmt. gy teht nem kellenek tag-ek, vezrl bitek, s a fogyasztst nvel sszehasonlt logikra sincs
szksg.
Ezt a megoldst, egyszersge s kiszmthatsga miatt, szles krben alkalmazzk mikrokontrollerekben,
de az IBM Cell processzor (a Sony PlayStation 3 processzora) is tartalmaz scratch-pad memrit, amely, mint
lttuk, nem transzparens szervezs cache.

158

10. FEJEZET. CACHE MEMRIA

10.5. Tartalom menedzsment


Az elz fejezetben lertuk, hogy milyen megoldsok vannak az adatok szervezsre, trolsra a cache-ben.
Azzal, hogy mikor, mely adatokat helyezznk el a cache-ben, s ha tele van, mely adatokat tvoltsunk el belle, a
tartalom menedzsment foglalkozik. Implicit esetben ezeket a dntseket maga a cache (ill. a cache vezrl) vgzi,
explicit esetben pedig az alkalmazs, illetve az opercis rendszer.

10.5.1. Adatok betltse a cache-be


A tartalom menedzsment szempontjbl taln a legfontosabb dnts, hogy az operatv memria egy blokkjt
mikor tltsk a cache-be. Ezzel kapcsolatban az albbi hrom lehetsgnk van:
soha,
amikor a fut program hivatkozik r,
j elre betltjk, htha hamarosan szksg lesz r.
Ltszlag a soha nem tnik rtelmes megoldsnak (hiszen mirt is van cache, ha nem hasznljuk?), de
nagyon is az. Vannak ugyanis olyan alkalmazsok, programok, melyek memriahivatkozsaira nem teljesl az
idbeli lokalits elve. Ilyen alkalmazs pldul a mdiatartalmak lejtszsa: folyamatos lejtszskor tipikusan
egyszer jtszanak ki egy kpet vagy hangsort, utna azokra az adatokra soha nem is trtnik tovbbi hivatkozs.
Ebben az esetben nem j dnts minden hivatkozott blokkot betlteni a cache-be, hiszen tbbszr gysem lesz
rjuk szksg, viszont a cache-bl kiszortjk a tnyleg gyakran hivatkozott blokkokat. Ezt gy nevezik, hogy
az alkalmazs tele szemeteli a cache-t (cache pollution). J lenne teht az ilyen alkalmazsokat detektlni, s az
ltaluk generlt blokkokat a cache-be nem betlteni.
A legegyszerbb megolds az, hogy a blokkot akkor tltjk be a cache-be, amikor a fut programnak elszr
van r szksge. Ekkor azonban a program futsa nmi ksleltetst szenved, amg az adatmozgats meg nem
trtnik (igaz, hogy a tovbbi, jvbeli hivatkozsok mr a gyors cache-bl oldhatk fel). Ennek a ksleltetsnek
az elkerlsre szoks id eltti betltst (prefetch) alkalmazni. Ekkor a tartalom menedzsmentet vgz szoftver
vagy hardver elem megprblja felderteni az adatelrsek mintzatt, s megtippelni, hogy a kzeljvben mely
blokkokra fog a program hivatkozni. Ha a tipp j, az adatok mr a cache-ben lesznek akkor is, amikor az els
alkalommal van rjuk szksg.

10.5.2. Cache szemetels megelzse


Cache szemtnek minsl az a blokk, ami a cache-be kerlse s a cache-bl val kiraksa kztt egyszer sem
lett meghivatkozva (kivve esetleg azt a hivatkozst, ami a cache-be tltshez vezetett). Ilyen esetben a blokk
nyilvnvalan feleslegesen kerlt a gyors elrs cache-be, hiszen a gyors elrs nincs kihasznlva, a jelenlte
(helyfoglalsa) miatt pedig kiszorulhatnak hasznos blokkok a cache-bl.
Specilis hardver utastsok
Szinte minden modern processzor utastskszlet tartalmaz olyan utastsokat, amellyel befolysolni lehet az
egybknt hardveres implicit cache tartalom menedzsmentet. Plda a cache szemetels elkerlsre bevezetett
utastsokra:
x86: MOVNTI, MOVNTQ: adat mozgatsa SSE regiszterbl az operatv memriba, a cache kikerlsvel.
PowerPC ([35]): LVXL: olvass az operatv memribl egy vektor regiszterbe. Az rintett blokk ugyan a
cache-be kerl, de egy specilis jellst kap, aminek hatsra ez a blokk kerl ki elsnek a cache-bl, ha
helyszke addik. Az utasts prja az LVX, aminek ugyanaz az adatmozgats a feladata, de nem jelli
meg a cache blokkot. A programoz teht jelezheti, hogy a kvnt memriatartalom megfelel-e az idbeli
lokalitsnak, vagy sem.
PA-RISC ([27]): nhny memriamveletet vgz utasts rendelkezik olyan opcival, amivel lehet jelezni,
hogy a hivatkozott adat a cache-be bekerljn-e, vagy sem. Ennek az opcinak (Spatial Locality Cache
Control Hint) a betartsa azonban a specikci szerint nem ktelez a processzor szmra.
Itanium ([3]): az adatmozgat utastsoknl egy .NT opci megadsval lehet jelezni a processzornak, hogy
ez az adat idben nem loklis (non-temporal).

10.5. TARTALOM MENEDZSMENT

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

Szemetelsi hajlam tbla


Hash fv.
Cache hiba

00
Cache tallat

01
Cache tallat

Cache hiba

Cache hiba

10
Cache tallat

Cache hiba

11
Cache tallat

Cache hasznlat
felfggesztve

10.9. bra. Cache szemetels elkerlse Rivers algoritmusval


Az eljrs smja a 10.9. brn lthat. Ennek kzponti eleme egy tblzat, melyet az utastsszmll indexel,
s melynek egy eleme az adott cmen lv utasts szemetelsi hajlamt tartalmazza. Ebben a pldban erre
a clra 2 bitet tartunk fenn, amihez egy 4 llapot vges automata tartozik. Minden, az utasts ltal elidzett
cache tallat cskkenti a szemetelsi hajlamot, s minden cache hiba nveli azt. Ha a szemetels hajlam
elrte a maximumot, letiltjuk az ezzel az utastssal hivatkozott blokkok cache-be tltst. A tblzat persze nem
lehet olyan nagy, hogy az utastsszmll minden rtkhez kln bejegyzs tartozzon, ezrt a gyakorlatban a
tblzatot az utastsszmll egy hash fggvnyvel indexelik: ha a tblzat mrete kett hatvnya, akkor az
utastsszmll als bitjei erre a clra megfelelnek. Nem baj, ha hash tkzs miatt tbb utasts is a tblzat
ugyanahhoz az elemhez van rendelve, ez csak egy heurisztika, a rossz dnts nem okoz hibs mkdst,
legfeljebb kicsit roml teljestmnyt.

10.5.3. Id eltti betlts


Az id eltti betlts (prefetch) a modern cache menedzsment egy rendkvl fontos funkcija, amely, hatkony
megvalstst felttelezve, a processzor kihasznltsgt nvelni tudja azltal, hogy a lehvott memriaobjektumok
mr akkor a gyors elrs cache-ben lesznek, amikor elszr szksg van rjuk.
Eddig nem volt rla sz, de fontos krlmny, hogy a legtbb modern processzor kln cache-t tartalmaz az
utastsoknak s az adatoknak. Ezek tartalom menedzsmentje eltr, hiszen az utastsok s az adatok ms s
ms lokalitsi elveket kvethetnek. Id eltti betltsre mindkt esetben szksg van. Az utasts cache esetn
ez egyszerbb feladat, hiszen az utastsok sokszor linerisan egyms utn kvetkeznek, nehezen kiszmthat
viselkeds csak a feltteles ugr utastsokbl ered. Az ilyen feltteles ugr utastsok viselkedst, az elgazs
becslst mshol, a pipeline feldolgozssal foglalkoz fejezetben trgyaljuk.
Az adatok id eltti betltse nagyobb kihvst jelent, hiszen az adatokhoz val hozzfrs nem mindig kvet
szablyos, kiszmthat mintzatot. A legtbb processzor erre a clra tartalmaz implicit tmogatst, de szinte
mindegyik ad lehetsget explicit menedzsmentre is.

160

10. FEJEZET. CACHE MEMRIA

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.

10.5. TARTALOM MENEDZSMENT

161

Utastsszmll
Hivatkozs becsl tbla
Elz cm

Becslt adattv llapot

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.10. bra. Id eltti betlts hivatkozsbecsl tblval


Ha nem, akkor nem tudjuk megbecslni a kvetkez hivatkozott cmet, teht nem vgznk id eltti betltst
(nem generlunk feleslegesen memriaforgalmat, sem cache szemetet). Ha mr nhny hivatkozs ta azonos
adattvolsgot tapasztalunk, vesszk a btorsgot s a kvetkez elemet (elemeket) id eltt behozzuk.
Pontosan ilyen elven mkdik az Intel Core i7 processzor prefetch egysge is (hangzatos neve: Intel Smart
Memory Access IP Prefetcher).

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).

10.5.5. rsi mveletek


Egyes korai cache megoldsok ill. specilis rendszerek klnbsget tesznek az rsi s olvassi mveletek kztt
gy, hogy ha a cache-ben nem meglv blokkra rsi mvelet trtnik, nem hozzk be a cache-be. Ezt a viselkedst

162

10. FEJEZET. CACHE MEMRIA

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.

10.5.6. Tbbszint cache memrik


A memriamveletek sebessgnek nvelse rdekben gyakran alkalmaznak tbbszint cache memrit. Ha egy
adat nincs meg az elsszint cache-ben, akkor a msodszint, majd a harmadszint, stb. cache-ben kell tovbb
keresni. A memriamveletet csak akkor szksges az operatv memria fel tovbbtani, ha a hivatkozott cm
egyik cache-ben sem volt benne.
A klnbz szint cache memrik mretben, szervezsben, s blokkmretben is eltrek, hiszen ms clt
kell kiszolglniuk.
Az elsszint cache elsdleges clja a villmgyors adatelrs, azaz hogy a processzor a megcmzett adatot a
lehet legkisebb ksleltetssel megkapja, gy az utastsok vgrehajtsban ne legyen fennakads.
A msodszint cache clja a cache hiba arny minimalizlsa. Ha mr nem volt tallat az elsszint
cache-ben, elvrjuk, hogy a msodszint cache, ha kiss nagyobb ksleltetssel is, de az esetek tbbsgben
tallatot rjen el.
A tovbbi cache szintek ksleltetse egyre nagyobb, s ezzel egytt egyre nagyobb tallati arnyt vrunk el
tlk.
Ezen elvrsok kvetkeztben az els szint cache mrete a legkisebb, hiszen mr csak jelterjedsi idkre gondolva
is belthatjuk, hogy kisebb mret mellett kisebb ksleltetst lehet elrni. A cache hierarchiban egyre lejjebb
lpve n a cache-ek trolsi kapacitsa, s a tallati arny nvelse rdekben n az asszociativitsa.

10.6. Cache memrik a gyakorlatban

10.6. CACHE MEMRIK A GYAKORLATBAN

163

10.6.1. Cache szervezsek sszehasonltsa

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

10.11. bra. A GCC cache hiba-arnya a cache mret fggvnyben


A mrsi eredmnyek altmasztjk azt az elterjedt gyakorlatot, hogy az els szint cache memria mrett
32 kB krlire vlasztjk. A 64 kB-os mret a mi esetnkben is alig hozott javulst a 32 kB-oshoz kpest, mg a 16
kB mr szmotteven rosszabbul teljestett, mint a 32 kB.

10.6.2. Cache szervezs s menedzsment nhny processzorcsaldban


Ebben a fejezetben ttekintjk nhny konkrt processzor cache szervezst, illetve az elsszint cache-ben
alkalmazott menedzsment stratgikat. Az sszehasonltsban 2 x86 architektrj, PC-kben alkalmazott processzort, s 2 ARM architektrj, mobil eszkzkben hasznlatos SoC-t vetnk ssze. Az x86 processzorok kzl
a Pentium 4 2002-ben, a Core i7-2600 pedig 2011-ben jelent meg. Az egyik ARM Soc egy meglehetsen rgi, a
Raspberry Pi-ben is ketyeg ARM1176JZF-S processzor 2002-bl, mg a Rockchip RK3188-as rendszerchipben
dolgoz ARM Cortex-A9 magot 2009-ben jelentettk be.
A 10.1. tblzat a cache szervezseket mutatja be (most csak az adat cache-el foglalkozunk). Minden cache
szinten 3 rtk jellemzi a szervezst: az els a cache mrete, a msodik az asszociativitsa (vagyis hogy hny
utas asszociatv), a harmadik pedig a cache blokkok mrete. Jl lthat a korbban elrevettett tendencia, a
processzortl tvolodva n a mret s az asszociativits. Az sszehasonltsbl kiugrik a Pentium 4 kicsi elsszint
gyorsttra, de a kvetkez fejezet mrseibl ltni fogjuk, hogy mirt dntttek gy az Intel mrnkei: ennek a
processzornak a legkisebb az L1 cache ksleltetse. A Core i7-2600 rtkein pedig tkrzdik a gyrtstechnolgia
fejldse, ennek a legnagyobb az L1 asszociativitsa, s a CPU mell egyazon lapkra befrt egy harmadszint
gyorsttr is.
Az L1 (adat) cache menedzsment eljrsokat mutatja be a 10.2. tblzat. A cmek oszlop arra vonatkozik,
hogy a cache virtulis, vagy zikai cmekkel dolgozik-e. FF jelenti a zikai indexek s zikai tag-ek, VF pedig
a virtulis indexek s zikai tag-ek hasznlatt. Lthat, hogy a VF kombinci a legnpszerbb megolds. Az
rs oszlopban a write-back (WB) s a write-through (WT) stratgik szerepelhetnek. Az sszehasonltsban
szerepl legtbb processzor mindkettt tmogatja, szabadon vlaszthat, hogy melyik legyen hasznlatban. A
1

http://valgrind.org/
gcc.gnu.org
3
Parancssor: valgrind --tool=cachegrind --D1=<mret>,<asszociativits>,64 gcc -o hellow hellow.c
2

164

10. FEJEZET. CACHE MEMRIA


Processzor/SoC

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)

(8MB; 16; 64)

10.1. tblzat. Nhny architektra cache szervezsnek paramterei


lapcsere vonatkozsban feltn, hogy az egyszersget s kis fogyasztst eltrbe helyez ARM architektrj
processzorok a vletlen, illetve krben forg eljrsokat implementltk, mg az Intel processzorai az LRU-t
(illetve annak kzelt vltozatt) alkalmazzk.
Processzor/SoC

Cmek

rs

Blokkcsere

VF

WB/WT

Random/Round robin

Ut.: VF, Adat: FF

WB/WT

Random/Round robin

Pentium 4 Northwood

VF

WB/WT

pszeudo-LRU

Core i7-2600

VF

WB

pszeudo-LRU

Raspberry Pi
RK3188

10.2. tblzat. Nhny architektra elsszint cache menedzsment stratgii

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.

11.1. A trhierarchia teljestmnynek mrse


Elsknt megvizsgljuk, hogy megri-e egyltaln lokalits-tudatosan programozni. Megmrjk a trhierarchia
klnbz szintjeinek sebessgt, hogy megllaptsuk, mennyit nyerhetnk egy cache-bart programozsi stlus
elsajttsval.

11.1.1. Az idbeli lokalits hatsa


A memriamveletek ksleltetsnek mrshez vesznk egy N mret tmbt, mely a tmb klnbz elemeire
mutat mutatkat tartalmaz, lehetleg vletlenszer mdon. A mutatk ltal egy olyan lnchoz jutunk, amely a
tmb minden elemt ciklikusan bejrja, de a bejrsban semmi szablyossg nincsen (nehogy a cache prefetch
algoritmusa rtanuljon). A 11.1. bra egy ilyen lncot brzol, ami ugyan szablyosnak tnik, de kzelebbrl
megnzve nem az.

11.1. bra. A tmb vletlen bejrshoz hasznlt mutatlnc


A mrst vgz program nagyon egyszer: egy ciklusban ki kell olvasni a tmb aktulis elemt, majd az ott
tallt cmre kell lpni.
165

166

11. FEJEZET. LOKALITSTUDATOS PROGRAMOZS

for (int i=0; i<iterations; i++)


p = *p;
A ciklust elg hosszan futtatva, a futsi idt az itercik szmval elosztva megkapjuk a memriaelrsek
ksleltetsi idejt.
Annak rdekben, hogy a ciklusvltoz nvelse, a ciklusfelttel kirtkelse s az ugrs vgrehajtsa a
lehet legkisebb mrtkben befolysolja a mrs eredmnyt, a ciklust kifejtjk, s minden krben sok, pl. 100
memriamveletet vgznk.
for (int i=0; i<iterations/100; i++) {
p = *p;
p = *p;
...
p = *p;
}
Ha kis mret mutattmbt hasznlunk a mrshez, akkor egy olyan program viselkedst utnozzuk,
mely a memriban egy szk, jl behatrolhat helyen vgez mveleteket (pl. a loklis vltozival dolgozik). A
nagy tmbk rossz idbeli lokalitssal jellemezhet, viszonylag nagy memriatartomnnyal operl programok
viselkedst modellezik.
Arra szmtunk, hogy kis mret tmb esetn, amikor a teljes tmb befr a cache memriba, kedvezbb
ksleltetst kapunk, mint nagy tmbk esetn, amikor a kesze-kusza pointer-lnc miatt minden egyes memriahozzfrs cache hibt (s valsznleg TLB hibt is) okoz. Az eredmnyek a 11.2 brn lthatk1 (a grbk nem
teljesen simk, mivel a mrs teljes zavartalansga, az sszes zavar krlmny kiiktatsa nem valsthat meg
egyknnyen).

Memriaelrsi id [ns]

1000

i7-2700
P4 Northwood
Raspberry Pi
100 Rockchip RK3188

10

1
1kB

32kB

256kB

8MB

128MB

Tmb mrete [bjt]

11.2. bra. A memriaksleltetsek a tmb mretnek fggvnyben


A grbk jellege minden vizsglt architektrra hasonl, s nagyon sokat elmond a trhierarchitl. Amg
kis tmbkn mrnk, a memriaksleltets is alacsony, hiszen a teljes tmb befr a cache memriba. A tmb
mret nvelsvel egyszer csak tlpjk az elsszint gyorsttr mrett, s egyre tbb cache hibt kapunk,
amikor a msodszint cache ksleltetse lesz meghatroz. Mg nagyobb tmbk mr ezen is tllgnak, s a
harmadszint cache (ha van), a rendszermemria ksleltetse, illetve a szaporod TLB hibk hatrozzk meg a
memriamveletek ksleltetst.
A grbrl, a kzel vzszintes szakaszok behatrolsval, le lehet olvasni a trhierarchia egyes szintjeinek
mrett. Jl lthat, hogy az i7 processzor s az rk3188 rendszercsip 32 kB, a raspberry pi processzora 16 kB, a p4
pedig 8 kB L1 cache memrival rendelkezik. Az is tisztn lthat, hogy az Intel mirt dnttt ilyen szokatlanul
szks els szint gyorsttr mellett: a p4 L1 cache-nek ksleltetse a nla 10 vvel atalabb modellnl is
kisebb ksleltetssel rendelkezik. Az i7 processzor grbjn jl azonosthat a 256 kB-os msodszint, s a 8
MB-os harmadszint gyorsttr mrete is.
A mrsi eredmnyek fbb zenete azonban az, hogy az L1 cache ksleltetse tbb nagysgrenddel alacsonyabb,
mint a rendszermemri. A p4 esetn a klnbsg 200-szoros!
1

A mrshez az lmbench programot hasznltuk, a -t opcival

11.1. A TRHIERARCHIA TELJESTMNYNEK MRSE

167

11.1.2. A trbeli lokalits hatsa


Az imnti kesze-kusza tmb-bejrsrl nem mondhat el, hogy a trbeli lokalits teljeslne r. A trbeli lokalits
hatsnak kimutatshoz a tmb szablyos bejrsa szksges, a tmb mutatibl ezrt a 11.3. brn lthat
lncot alaktunk ki, azaz a mrs sorn a tmb elemein sorban, egyms utn lpkednk vgig.

11.3. bra. A prefetch hatkonysgnak mrshez hasznlt pointer tmb


Vrakozsaink szerint gy alacsonyabb ksleltetseket kapunk, tbb okbl is.
Alacsony lesz a cache hiba-arny, hiszen ha a bejrs sorn egy blokk a cache-be kerl, a tmb soron
kvetkez elemei, melyekre a szablyos bejrs miatt gyis szksg van, mr a cache-ben lesznek.
Alacsony lesz a TLB hiba-arny is. Amg a tmb egy lapmretnyi tartomnyn vgigstlunk, addig
ugyanazt a lap keret sszerendelst kell hasznlni.
Ha a cache alkalmaz prefetch algoritmust, akkor az rtanul a szablyos bejrsra, s a blokkok id eltti
betltsvel mg tovbb cskkenti a memriamveletek ksleltetst.
Azt az esetet is rdemes megvizsglni, melyben a tmbn nem elemenknt, hanem cache blokk mret
ugrsokkal haladunk vgig. gy a bejrs sorn minden egyes hivatkozs jabb s jabb blokk fog esni, azaz
a fenti 3 hatsbl az elst ki lehet iktatni, s csupn az alacsony TLB hiba-arny, valamint a prefetch jtkony
hatsnak meggyelsre is md nylik. A mrsi eredmnyeket a 11.4. brn lthatjuk.
1000

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

Tmb mrete [bjt]

256kB

8MB

128MB

Tmb mrete [bjt]

a) Intel i7-2600

b) Intel Pentium4 Northwood


1000
Memriaelrsi id [ns]

1000
Memriaelrsi id [ns]

32kB

100

10
Vletlen lnc
Szablyos lnc, elemenknt
Szablyos lnc, blokkmretenknt

1
1kB

32kB

256kB

Tmb mrete [bjt]

c) Rockchip RK3188

8MB

100

10
Vletlen lnc
Szablyos lnc, elemenknt
Szablyos lnc, blokkmretenknt

1
128MB

1kB

32kB

256kB

8MB

128MB

Tmb mrete [bjt]

d) Raspberry Pi

11.4. bra. Memriaksleltetsek vletlen s soros bejrs mellett


A grakonok alapjn megllapthatjuk, hogy minden architektrban rendkvl kizetd a tmb szablyos
bejrsa, mg akkor is, ha a tmb lnyegesen nagyobb a cache memria mretnl. Nagy tmbmret mellett
40-80-szoros a gyorsuls a vletlen bejrshoz kpest. A neheztett esetben, amikor blokkonknt lpnk, rthet
mdon kicsit rosszabbak az eredmnyek, de mg mindig jelents a javuls a tmb vletlen bejrshoz kpest,
klnsen az i7 processzor esetben (10-szeres), amely kinomult prefetch logikt tartalmaz.

168

11. FEJEZET. LOKALITSTUDATOS PROGRAMOZS

11.2. Lokalitsbart ciklusszervezs


A programozi gyakorlatban szmos alkalommal van szksg egy-, vagy tbbdimenzis tmbk bejrsra, azokon
klnfle mveletek vgzsre. A tmbk bejrshoz ciklusok szksgesek, melyek a tmb elemeit valamilyen
szisztma szerint sorra veszik. Az elz fejezet mrsi eredmnyeibl lthat, hogy tvolrl sem mindegy, hogy
ez a bejrs milyen szisztma szerint trtnik. Ebben a fejezetben megismerkednk nhny lokalits-bart ciklusszervezsi technikval, melyek segtsgvel a gyakorlatban is protlhatunk eddigi, trhierarchival kapcsolatos
ismereteinkbl.

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.

11.2.2. Ciklusok sorrendjnek optimalizlsa


A 11.6. brn kt algoritmus lthat, mindegyik egy ktdimenzis tmb (double tpus) elemeit adja ssze. A
klnbsg csupn a ciklusok sorrendje. Az a) megoldsban a kls ciklus sorrl sorra halad, s a msodik ciklus

11.2. LOKALITSBART CIKLUSSZERVEZS

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

11.1. tblzat. A ciklusegyests hatsa N = 222 esetn


adja ssze az adott sor oszlopait, mg a b) megolds pont fordtva mkdik, oszloprl oszlopra halad, s a bels
ciklusval adja ssze az aktulis oszlop elemeit.
for (i=0; i<N; i++)
for (j=0; j<N; j++)
sum += a[i][j];

for (j=0; j<N; j++)


for (i=0; i<N; i++)
sum += a[i][j];

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

11.2. tblzat. A ciklussorrend optimalizlsnak hatsa N = 2048 esetn


A vals mrsi adatokat a 11.2. tblzat foglalja ssze. Az i7-2600 processzor prefetch algoritmusa a b) esetben
is kpes volt megtanulni a bejrst (hiszen az is szablyos, csak nagyobbakat lp), ennek ksznheten a ciklusok
sorrendje nem volt olyan jelents hatssal a futsi idkre, mint a tbbi processzor esetn. A p4 esetn az eltrs
18-szoros!
A fejezet tanulsga az, hogy a ciklusok sorrendjt az adatszerkezet memriabeli elhelyezkedshez igazodva
clszer meghatrozni, ha erre van lehetsg.

11.2.3. Blokkos ciklusszervezs


A 11.7. a) brn lthat algoritmus az a[N][N] mtrix transzponltjt (tljra val tkrzst) lltja el a
b[N][N] mtrixban. A ketts ciklus magjban mind az a[i][j], mind az b[j][i] elemre hivatkozs trtnik.
Az a[i][j] elemekre trtn hivatkozsok a tmb elemeit sor-folytonosan ri el. Ha egy cache blokkba a tmb 8
eleme fr el (64 bjtos blokk mrettel s 8 bjtos double mrettel szmolva), akkor a sor-folytonos elrs minden
8. hivatkozskor okoz cache hibt (lsd 11.2.2. fejezet). A b[j][i] hivatkozsok azonban oszlop-folytonosan
haladnak vgig a tmbn, melyek, ha N elg nagy, mindig cache hibval jrnak. sszessgben a 2 N 2
memriahivatkozsbl N 2 /8 + N 2 cache hiba addik, teht a cache hiba-arny 56.25%.
A futsi idn ezttal gy javtunk, hogy a ciklusok ltal megvalstott mtrixmveletet blokkonknt vgezzk
el (a 11.7. b) bra), vagyis a teljes mtrixban blokkrl blokkra haladva hajtjuk vgre a transzponls mvelett

170

11. FEJEZET. LOKALITSTUDATOS PROGRAMOZS


for (bi=0; bi<=N-BLK; bi+=BLK)
for (bj=0; bj<=N-BLK; bj+=BLK)
for (i=bi; i<bi+BLK; i++)
for (j=bj; j<bj+BLK; j++)
b[j][i] = a[i][j];

for (i=0; i<N; i++)


for (j=0; j<N; j++)
b[j][i] = a[i][j];
a) Eredeti kd

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

11.8. bra. A mtrixtranszponls memriahivatkozsai egyszer s blokkos ciklusszervezs esetn


Sajnos a blokk mret megfelel megvlasztsa kornt sem egyszer feladat; akr tl kicsire, akr tl nagyra
vlasztva visszakapjuk a blokkok nlkli algoritmus teljestmnyt. Az optimlis blokkmret architektrafgg,
tbbek kztt fgg a cache s a cache blokkok mrettl is. A 11.9. brn lthat, hogy mekkora a blokkos
ciklussal elrhet nyeresg a vizsglt architektrkon. Az i7 esetn a 8-as blokkmret az idelis, ennl az rtknl
a futsi id csupn a nyolcada a blokk nlkli, nem lokalitstudatos megoldsnak. A Pentium 4 a legjobb futsi
idt 32-es blokkmretnl rte el, amikor is kevesebb, mint tde id alatt vgzett a transzponlssal, mint blokkok
nlkl.

11.2.4. Esettanulmny: lokalitsbart mtrixszorzs


A lokalitsbart szemllet tovbbi elmlytse rdekben megnzzk, hogy hogyan lehet egy, a mrnki letben
gyakran felbukkan mvelet, a mtrixszorzs algoritmust a lehet leghatkonyabban megvalstani.
Kt N N mret mtrix, A = {aij , i, j = 1, , N } s B = {bij , i, j = 1, , N } szorzata egy olyan C mtrix,
melynek elemei
N

cij = aik bkj , i, j = 1, , N .


k=1

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

11.2. LOKALITSBART CIKLUSSZERVEZS

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

b) Intel Pentium4 Northwood


9000

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

11. FEJEZET. LOKALITSTUDATOS PROGRAMOZS


Ciklussorrend

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%

11.3. tblzat. A mtrixszorz algoritmus cache hiba-analzise klnbz ciklussorrendek esetn


menedzsment miatt (a kt vizsglt ARM rendszerben nincs LRU blokkcsere, s prefetch sem!), vagy azrt, mert a
memriamveletek mellett a lebegpontos szmtsok, illetve a ciklusok jelenlte is szmottev terhelst okoz. Az
azonban egyrtelmen lthat, hogy minden architektrban az (ikj) ciklussorrend bizonyult a leggyorsabbnak.
(A nhny grbn tapasztalhat ugrs nem mrsi hiba, reproduklhat, de az okra nem sikerlt rjnni.)
900

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

Tmb mrete [bjt]

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

b) Intel Pentium4 Northwood


20000

(ijk)
(ikj)
(jik)
(jki)
(kij)
(kji)

8000

250

Tmb mrete [bjt]

a) Intel i7-2600
10000

200

50

100

150

200

250

300

350

Tmb mrete [bjt]

c) Rockchip RK3188

400

450

500

550

50

100

150

200

250

300

350

400

450

Tmb mrete [bjt]

d) Raspberry Pi

11.11. bra. A mtrixszorzs futsi ideje klnbz ciklussorrendek esetn

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

11.2. LOKALITSBART CIKLUSSZERVEZS

173

for (bi=0; bi<N; bi+=BLK)


for (bj=0; bj<N; bj+=BLK)
for (bk=0; bk<N; bk+=BLK)
for (i=bi; i<bi+BLK; i++)
for (j=0; j<bj+BLK; j++)
for (k=0; k<bk+BLK; k++)
c[i][j] = c[i][j] + a[i][k]*b[k][j];
11.12. bra. A mtrixszorzs megvalstsa blokkos ciklusszervezssel
ciklussorrend blokkszervezs nlkl is gyorsabb, mint az sszes tbbi blokkszervezssel.
900

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]

b) Intel Pentium4 Northwood


70000

(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

11.13. bra. A mtrixszorzs futsi ideje blokkos ciklusszervezs esetn


Konklziknt elmondhat, hogy bizonyos algoritmusoknl mind a ciklussorrend optimalizlsa, mind a
blokkos szervezs komoly mrtkben kpes cskkenteni a futsi idt. Az azonban sajnos architektrafgg, hogy
pp melyik technikt clszer alkalmazni, s mekkora a nyeresg.

174

11. FEJEZET. LOKALITSTUDATOS PROGRAMOZS

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

12. FEJEZET. SZMPLDK, FELADATOK A MEMRIAKEZELS TMAKRBEN


FCFS temezs szerint:

FR-FCFS temezs szerint:

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).

12.2. Feladatok a virtulis trkezels tmakrben


2. Feladat
Legyenek a virtulis cmek 16 bitesek, a zikai cmek 15 bitesek, a lapmret legyen 212 bjt = 4 kB mret, a
laptbla pedig legyen egyszer egyszintes laptbla 8 bites bejegyzsekkel.
(a) A virtulis cmekben hny bit tartozik a lapok azonostshoz s hny a lapon belli eltolshoz? Rajzolja fel a
virtulis cmek tagozdst!
(b) Mekkora a teljes laptbla mrete?
(c) Hny lap fr a zikai memriba?
(d) Legyen a laptbla aktulis llapota a kvetkez:

Hol tallhat a 3-mas, az 6-os s a 11-es lap?


(e) Mdostsa a laptbla tartalmt a kvetkezk szerint:

12.2. FELADATOK A VIRTULIS TRKEZELS TMAKRBEN

177

A 6-os lap a httrtron van


A 11-es lap a zikai memriban az 1-es keretben tallhat
A 8-as lap a httrtron van
A 2-es lap a zikai memriban a 6-os keretben tallhat
(f) Feltve, hogy nincs laphiba, hny memriamvelet kell a cmfordtshoz
TLB tallat esetn?
TLB hiba esetn?
Megolds
(a) Mivel a lapok mrete 212 , az eltolshoz 12 bit tartozik. A virtulis cmek fennmarad 16 12 = 4 bitje a lapot
azonostja. A krt rajz:

(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

12. FEJEZET. SZMPLDK, FELADATOK A MEMRIAKEZELS TMAKRBEN

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:

Hol tallhat a 3-mas (=0011), az 10-es (=1010) s a 11-es (=1011) lap?


(f) Mdostsa a laptbla tartalmt a kvetkezk szerint:
A 10-es (=1010) lap a httrtron van
A 11-es (=1011) lap a zikai memriban az 1-es keretben tallhat
A 8-as (=1000) lap a httrtron van
A 2-es (=0010) lap a zikai memriban a 6-os keretben tallhat
(g) Feltve, hogy nincs laphiba, hny memriamvelet kell a cmfordtshoz
TLB tallat esetn?
TLB hiba esetn?
Megolds
(a) Mivel a lapok mrete 212 , az eltolshoz 12 bit tartozik. Mivel a laptblk mrete minden szinten egyforma,
a virtulis cmek fennmarad 16 12 = 4 bitje ktfel oszlik, a ktszint laptbla mindkt szintjn 2 bitet
hasznlunk indexelsre.

(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.

12.2. FELADATOK A VIRTULIS TRKEZELS TMAKRBEN

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

12. FEJEZET. SZMPLDK, FELADATOK A MEMRIAKEZELS TMAKRBEN

Hol tallhat a 000011-es, az 101011-es, a 010100-s s a 001010-s lap?


(e) Mdostsa a laptbla tartalmt a kvetkezk szerint:
Az 101000 lap a zikai memriban az 6-os keretben tallhat
Az 100100 lap a httrtron van
Az 110110 lap a zikai memriban a 2-es keretben tallhat
(f) Feltve, hogy nincs laphiba, hny memriamvelet kell a legjobb s a legrosszabb esetben a cmfordtshoz
TLB tallat esetn?
TLB hiba esetn?
Mikor ll el a legrosszabb eset?
Megolds
(a) Mivel a lapok mrete 210 , az eltolshoz 10 bit tartozik. A virtulis cmek fennmarad 16 10 = 6 bitje szolgl
a lapok azonostsra.
6 bit

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.

12.2. FELADATOK A VIRTULIS TRKEZELS TMAKRBEN

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

12. FEJEZET. SZMPLDK, FELADATOK A MEMRIAKEZELS TMAKRBEN


hash mutat tbla az els elhelyezett laptbla bejegyzsre mutat, ahonnt kezdve a lncolt lista segtsgvel
be kell jrni mind a 4 bejegyzst, mire vgre a lnc vgn meg nem talljuk a keresett lapot. Ahogy megynk
a lncban, minden rintett bejegyzsnl ellenrizni kell, hogy abban a keretben pp a keresett lap van-e. A
hash mutat tbla kiolvassval egytt ez sszesen 5 memriamvelet.

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

86. lapon kezddik a virtulis cmtartomnyban

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

12.3. FELADATOK A TLB-VEL SEGTETT VIRTULIS TRKEZELS TMAKRBEN

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

12.3. Feladatok a TLB-vel segtett virtulis trkezels tmakrben


6. Feladat
Egy virtulis trkezelsre kpes processzor 16 bites virtulis, s 15 bites zikai cmeket tmogat. A lapmret
4096 (= 212 ) bjt. A cmfordtshoz egyszint laptblt hasznl, valamint egy 4 bejegyzses, LRU algoritmussal
menedzselt teljesen asszociatv TLB-t.
A fut program sorban egyms utn az albbi lapokra hivatkozik:
13, 12, 7, 2, 13.
A laptbla s a TLB tartalma kezdetben a kvetkez:

(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

12. FEJEZET. SZMPLDK, FELADATOK A MEMRIAKEZELS TMAKRBEN

(b) A megadott hivatkozsokbl hny esetn volt TLB tallat?


(c) A megadott hivatkozsokbl hny esetn volt laphiba?
Megolds
(a) Elszr a 13-as lapot hivatkozzuk meg. Nincs bent a TLB-ben (TLB hiba), ezrt a laptblbl kell kiolvasni
(13-as bejegyzs), a 3-mas keret tartozik hozz. Ezt a lap keret sszerendelst a TLB-be is fel kell jegyezni,
htha a kzeljvben ismt lesz r hivatkozs. A TLB-ben van egy rvnytelen bejegyzs (ahol valid=0), oda
fogjuk berni, mikzben a kor mezket is frisstjk: az j bejegyzs kora 1 lesz, hiszen pp most volt r
hivatkozs, a tbbi bejegyzst pedig regbtjk.
A kvetkez, 12-es laphivatkozs TLB-bl feloldhat, a TLB msodik sorbl kiolvassuk, hogy a 0-s keretben
van. A kor mezket frisstjk, az pp most hivatkozott sor lesz a legfrissebb (kor=1).
A 7-es lap nincs a TLB-ben, ezrt a processzor a laptblhoz fordul. A laptblban a valid=0 bejegyzs
jelzi, hogy a lap a httrtron van, teht meg kell hvni az opercis rendszert, hogy helyezze el a zikai
memriban, hiszen szksg van r. Az opercis rendszer a sajt nyilvntartsa alapjn gy dnt, hogy az
1-es lapot ldozza fel (a feladat megadta), azt kirja a merevlemezre (laptblba valid=0-t r, a TLB-ben pedig
rvnytelenti a hozz tartoz sort), az gy felszabadul 7-es keretet pedig megkapja a 7-es lap. A 7-es lap
bejegyzst is frissti az opercis rendszer (valid=1, keret=7), vgl visszaadja a vezrlst a processzornak,
amely ezt az sszerendelst a TLB-be is feljegyzi, a korbban az 1-eshez tartoz, rvnytelentett sorba.
A 2-es lap TLB hibt okoz, de a laptblbl kiolvassuk, hogy a 4-es keretben van, s ezt a TLB legregebb
bejegyzst fellrva troljuk.
A 13-mas lap hivatkozsa TLB tallat lesz, a laptbla vltozatlan, a TLB-ben csak a kor mezk vltoznak.
A laptbla vgs llapota s a TLB bejegyzsek az egyes hivatkozsok utn a kvetkezkppen alakulnak:

(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:

12.3. FELADATOK A TLB-VEL SEGTETT VIRTULIS TRKEZELS TMAKRBEN

185

13, 12, 7, 2, 13.


A laptbla s a TLB tartalma kezdetben a kvetkez:

(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:

(b) Egy TLB tallat volt, a msodik hivatkozs (a 12-es lapra).

186

12. FEJEZET. SZMPLDK, FELADATOK A MEMRIAKEZELS TMAKRBEN

(c) Egy laphiba volt, a harmadik hivatkozs (a 7-es lapra).

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

12.4. FELADATOK A CACHE MEMRIA TMAKRBEN

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:

A TLB bejegyzsek az egyes hivatkozsok utn a kvetkezkppen alakulnak:

(b) Kt TLB tallat volt, a msodik hivatkozs (a 000110), s az tdik (010100).


(c) Egy laphiba volt, a harmadik hivatkozs (az 110100-s lapra).

12.4. Feladatok a cache memria tmakrben


9. Feladat
Vegynk egy 256 byte mret cache-t 64 byte-os blokkmrettel. A cache kezdetben csupa rvnytelen blokkot
tartalmaz.
Egy program az albbi memriablokkokrl olvas (ebben a sorrendben):
1, 3, 8, 4, 3, 6, 8, 1
Adja meg a cache hibk szmt s a cache vgs tartalmt LRU algoritmus mellett
(a) direkt lekpzs esetn,
(b) teljesen asszociatv szervezs esetn,
(c) kt utas asszociatv szervezs esetn.

188

12. FEJEZET. SZMPLDK, FELADATOK A MEMRIAKEZELS TMAKRBEN

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

A 8 memriamveletbl 6 cache hiba, s 2 cache tallat volt.


(b) A teljesen asszociatv esetben mr az LRU algoritmusnak is van szerepe, azt is nyomon kell kvetni, hogy
melyik blokkot mikor hivatkoztuk utoljra. A tag, vagyis a trolt blokk szma mellett ezrt a blokkok kort
is trolni s folyamatosan frissteni kell. j blokk rkezsekor, ha nincs szabad hely, a legregebb helyre
tesszk. Mivel a teljesen asszociatv szervezs esetn minden blokknak ugyanaz az indexe (nincs indexels), a
cache pillanatnyi llapott egyetlen sorba, egyms mell rajzolt 4 blokkal jelljk. A memriahivatkozsok
hatsra a cache llapota a kvetkezkppen alakul.

Megint csak 2 cache tallat volt.


(c) A kt utas asszociatv esetben az els sor (0-s index) 2 blokkja pros, a msodik sor (1-es index) 2 blokkja
pratlan blokkokat tud trolni. Elszr ez alapjn kell kivlasztani a megfelel sort, az LRU algoritmust csak a
soron belli kt blokk kzl val vlasztskor kell alkalmazni.

Ismt csak 2 cache tallat trtnt.

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

12.4. FELADATOK A CACHE MEMRIA TMAKRBEN

189

(a) Fizikailag indexelt cache-t hasznlunk, zikai tag-ekkel


(b) Virtulisan indexelt cache-t hasznlunk, virtulis tag-ekkel
Megolds
Mindkt esetben a cm als 6 bitje az eltols (26 = 64). A cache-be 32 kB / 64 byte = 512 blokk fr el. Ha 4-utas a
szervezs, akkor az index egy adott rtkhez 4 blokk tartozik, vagyis 512/4 = 128 fle indexnk lehet, ami 7 bittel
rhat le.
(a) Ha a cache kizrlag zikai cmekre alapozott, akkor a tag-ek mrete 32-7-6 = 19 bit. Minden egyes keresskor
a 4-utas cache-ben az index ltal kijellt 4 blokk 19 bites tag-eit kell sszehasonltanunk a cm megfelel
bitjeivel. Vagyis egyidejleg 4 darab 19 bites sszehasonltst kell elvgezni.
(b) Ha virtulis tag-eket hasznlunk, akkor a tag-ek mrete 48-7-6 = 35 bit. Minden egyes keresskor 4 db 35
bites sszehasonltsra van szksg.

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

12. FEJEZET. SZMPLDK, FELADATOK A MEMRIAKEZELS TMAKRBEN


13

136

490

541

670

74

581

980

Eltols:

13

42

29

30

10

20

Tag teljesen asszoc. esetben:

10

15

Tag direkt lekpzskor:

Index direkt lekpzskor:

Tag 2-utas asszoc. esetben:

Index 2-utas asszoc. esetben:

(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

2-utas asszociatv szervezs:


Blokk tartalom
Index = 0
Index = 1
Index = 2
Index = 3

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

Pipeline utastsfeldolgozs statikus


temezssel
13.1. Az utastsfeldolgozs fzisai
A hatkony utasts-feldolgozs alapjainak bemutatshoz egy egyszer (hipotetikus) RISC utastskszletet
vezetnk be, melyet a kvetkez fejezetekben demonstrcis clokra hasznlunk. Az utastskszlet tulajdonsgai
a kvetkezk:
Minden utasts hossza egyforma, 4 bjt.
Az utastsok tpusai:
Load/Store mveletek: a memribl egy regiszterbe, ill. egy regiszterbl a memriba mozgatnak
adatot. A cmeket 2 paramterrel kell megadni (ezek a Load/Store utastsok operandusai), egy
bzisregiszterrel s egy eltolssal, ez utbbi egy skalr konstans. A kett sszege adja meg a cmet a
memria olvasshoz, illetve rshoz. Pl. Ri MEM[Rk + 42] vagy MEM[Rk + 42] Ri .
Aritmetikai s bitmveletek: els operandusuk ktelezen egy regiszter, a msodik operandus lehet
regiszter, vagy skalr konstans (immediate) is. Az eredmnyt regiszterben troljk. Utastskszletnk
3 operandus mveleteket tmogat, vagyis a forrsoperandusok mellett az eredmnyoperandust is
explicit mdon meg kell adni. Pl. Ri Rj Rk , vagy Ri Rk 42.
Vezrlstad mveletek:
* Felttel nlkli ugrs: az operandusknt megadott, az utastsszmllhoz kpest relatv cmre
ugrik. Az ugrsi cm regiszter, vagy skalr konstans is lehet. Pl. JUMP 24, vagy JUMP Ri .
* Feltteles ugrs: az ugrsi cm mellett megjelenik egy msodik operandus is, amely egy regiszter.
Az ugrs felttele, hogy ez a regiszter nulla legyen. Pl. JUMP 24 IF Rj == 0.
A Load s a Store kivtelvel nincsenek memriareferens utastsok.
Mindezek ismeretben megadunk egy lehetsges mdot az utastsok vgrehajtsnak rszfeladatokra, fzisokra bontsra. Ez nem felttlenl egy minden szempontbl optimlis megolds lesz, viszont a ksbbiekben ebbl
kiindulva knnyedn fel tudjuk majd pteni az utastst vgrehajt pipeline-t. Teht egy utasts vgrehajtsnak
fzisai:
1. Az els lps az utasts lehvsa (instruction fetch, IF ) a memribl. Ezutn az utastsszmllt
megnveljk az utasts mretvel, hogy az a kvetkez utastsra mutasson.
2. A msodik lps az utasts dekdolsa s a regiszterek kiolvassa (instruction decode/register fetch, ID).
Ennek sorn az utastsszbl levlasztjuk az utasts tpusra s operandusaira vonatkoz rszeket. Az
operandusknt hivatkozott regisztereket beolvassuk a regiszter trolbl. Elksztjk az ALU szmra a
vezrl jeleket egyrszt a mvelet tpusra vonatkozlag (sszeadst, kivonst, szorzst, osztst, sszehasonltst kell-e majd csinlni) msrszt az operandusok forrsra vonatkozlag (azaz hogy honnan vegye az
operandusokat: az imnt beolvasott regiszterek rtkt hasznlja-e, vagy az utastsba begyazott skalr
konstanst, vagy ugr utasts esetn az utastsszmllt, stb).
193

194

13. FEJEZET. PIPELINE UTASTSFELDOLGOZS STATIKUS TEMEZSSEL

3. A harmadik lpsben trtnik az ALU szmra belltott mveletek vgrehajtsa (execution, EX ). Ez az


utasts tpustl fggen mst s mst jelent:
Load/Store utastsnl az ALU sszeadjt hasznlva ki kell szmtani a betlts/rs memriacmt
(ssze kell adni a bzisregiszter tartalmt az eltolssal)
Aritmetikai utastsnl az ALU elvgzi a kvnt aritmetikai mveletet
Ugr utastsnl az ALU egyrszt kirtkeli az ugrsi felttelt (ha feltteles ugrsrl van sz), valamint
kiszmtja az utastsszmll j (ugrs utni) cmt
4. A negyedik fzisban vgrehajtjuk az utastshoz kapcsold memriamveleteket (memory access,
MEM). A Load/Store utastsok esetn itt trtnik az adatok tnyleges beolvassa/kirsa a memribl/memriba. Egyb utastsok esetn ez a fzis kihagyhat.
5. Az tdik lpsben a megvltozott regiszterek frisstst (write-back cycle, WB) vgezzk el. Ha az
utasts vgrehajtsa sorn van olyan regiszter, aminek az rtke megvltozott, akkor azt itt rjuk vissza
a regiszter trolba, msklnben ez a fzis kihagyhat. Ilyen utastsok az aritmetikai utastsok (az
ID fzisban olvassuk ki az operandusokat a regiszter trolbl, az EX-ben elvgezzk a mveletet, a WB
fzisban pedig berjuk az eredmnyt a megfelel regiszterbe), valamint ilyen a Load utasts is (a MEM
fzisban olvastuk be a megfelel adatot, amelyet a WB fzisban runk be a megfelel regiszterbe).
A lertakbl lthat, hogy egy utasts vgrehajtshoz nem kell azt mindig mind az 5 fzison keresztltolni:
egy aritmetikai utasts az IF, ID, EX, WB fzisokbl ll, a Store-hoz az IF, ID, EX, MEM fzisok szksgesek (az
aritmetikai utastsokhoz hasonlan 4 fzis), a Load mind az 5 fzist ignyli, az ugr utastsok pedig csak az els
3-mat.

13.2. Pipeline utastsfeldolgozs


Az elz fejezetben sorra vett fzisok egyms utn rendezsvel s futszalag-szer zemeltetsvel az idegysgenknt feldolgozott utastsok szma jelentsen nvelhet. Az tlet a 20. szzad eleji Chicago-i vghidak s
Henry Ford autgyra ta ugyanaz: amikor egy munkadarab (utasts) feldolgozsa a kvetkez fzisba lp, az
elz fzis erforrsaival a kvetkez munkadarabon (utastson) is el lehet kezdeni a munkt.
Vagyis ahelyett, hogy az utastsokat sorban egyms utn hajtannk vgre (a kvetkezt csak akkor elkezdve,
ha az elz vgrehajtsa teljesen befejezdtt), az egyms utni utastsok vgrehajtst tlapolhatjuk. Amikor
befejezdik az IF fzis s az utasts az ID fzisba lp, a kvetkez utasts vgrehajtsnak az IF fzisa ezzel (az
elz ID fzisval) tlapolva megkezddhet. A kvetkez ciklusban az els utasts az EX fzisba lp, a msodik
az ID-be, s egy jabb utasts pedig az IF-be (mr 3 utasts vgrehajtsa zajlik tlapolva), s gy tovbb. Ezzel
elrhetjk, hogy az utastsok vgrehajtshoz szksges erforrsok a lehet legjobban ki legyenek hasznlva.
Ahhoz, hogy a dolog mkdjn, a futszalagot lland sebessggel kell hajtani, vagyis minden fzis szmra
ugyanannyi id (egy ciklusid) ll majd rendelkezsre a hozz rendelt feladat elvgzsre akkor is, ha ezt az idt
nem hasznlja ki teljesen, mert hamarabb vgez (lsd 13.1. bra).
t
1. utasts
2. utasts
3. utasts
4. utasts
5. utasts
6. utasts

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

13.1. bra. Pipeline fzisok

13.2.1. A pipeline ksleltetse s tviteli sebessge


Lssuk, mennyit nyernk a pipeline feldolgozssal. Pipeline nlkl egy aritmetikai utasts vgrehajtsa TIF +
TID + TEX + TWB ideig, a Store TIF + TID + TEX + TMEM ideig, a Load pedig TIF + TID + TEX + TMEM + TWB

13.2. PIPELINE UTASTSFELDOLGOZS

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

13.2. bra. Utastsok feldolgozsi ideje pipeline-nal s anlkl


A pipeline-nal kapcsolatos mret-, id- s sebessg-jelleg mennyisgek:
A pipeline mlysge (deepness) a feldolgozsi fzisok szma (jelen pldban ez 5).
A pipeline ksleltetse (latency) az utastsok vgrehajtsnak elkezdse s befejezse kztt eltel id.
rtke: a pipeline mlysge max{Ti }.
A pipeline tviteli sebessge (throughput): az idegysgenknt befejezett utastsok szma. rtke (idelis
esetben): 1/ciklusid.
Feltltdsi id: Az els utasts betltstl a pipeline megtelsig eltel id. A pipeline akkor telik meg,
amikor a pipeline mlysgvel megegyez szm utasts vgrehajtsa van folyamatban. Az res pipeline
egy feltltdsi id mlva fejezi be az els utasts vgrehajtst (s ezutn ciklusidnknt befejez egyet).
A feltltsi id rtke megegyezik a pipeline ksleltetsvel.
Kirlsi id: Az utastsok lehvsnak meglltstl szmtva az az id, amg az utols, a pipeline-ban
feldolgozs alatt ll utasts el nem hagyja az utols fzist.

13.2.2. Pipeline regiszterek


Ahogy egy utasts belp a pipeline-ba, s vgighalad annak minden egyes fzisn balrl jobbra, magval visz a
vgrehajtshoz szksges szmos informcit is. Ezeket az informcikat az gynevezett pipeline regiszterek
troljk (az els kivtelvel minden fzis eltt tallhat egy ilyen). A fzisok a pipeline regiszterekbl nyerik a
tevkenysgkhz szksges informcikat, majd ezek egy rszt a ciklusid vgn a jobb oldali szomszdos
fzis fel tovbbtjk, annak pipeline regiszterbe rjk. A pipeline regisztereket a szomszdos fzisok neveivel
azonostjuk (13.3. bra).
IF/ID

IF

ID/EX

ID

EX/MEM

EX

MEM/WB

MEM

13.3. bra. Pipeline regiszterek

WB

196

13. FEJEZET. PIPELINE UTASTSFELDOLGOZS STATIKUS TEMEZSSEL

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).

13.3. Egymsrahatsok a pipeline-ban


Egy utastssorozat vgrehajtsa sorn szmos krlmny fellphet, ami miatt a pipeline-t, a futszalagot meg kell
lltani. Ezek a krlmnyek abbl addnak, hogy az utastsok ltalban nem egy fggetlen, lineris folyamot
alkotnak, s gyakran az egyes vgrehajtsi fzisok egymssal is versengenek bizonyos erforrsokrt. Az ilyen
helyzeteket egymsrahatsnak nevezzk, s mivel rontjk a teljestmnyt, lasstjk az utastssorozat vgrehajtst,
klnfle megoldsokat kell kitallni a kezelskre.

13.3.1. Feldolgozsi egymsrahats


Feldolgozsi egymsrahats akkor lp fel, ha a processzor bizonyos erforrsaira a pipeline tbb fzisnak is
egyidejleg szksge van. Ebben az esetben a pipeline megll, hiszen az erforrsrt verseng fzisok nem tudnak
egyszerre dolgozni, az egyik knytelen egy ciklusidnyi sznetet tartani, amg a szksges erforrs felszabadul.
A 13.4. brn lthatjuk az egyes fzisok ltal ignyelt erforrsokat.
t
1. utasts
2. utasts
3. utasts
4. utasts

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

13.4. bra. Pipeline fzisok erforrshasznlata


A 13.4. brn kt feldolgozsi egymsrahatst is lthatunk: a memria elrsre szksg van az IF s a
MEM fzisban is (t+3-ban), a regiszter trolt pedig az ID s a WB fzis egyarnt hasznlja (a t+4-ben). Mindkt
problmra van megolds. A memrirt folytatott versenyt gy tudjuk feloldani, hogy az utastsmemrit s az
adatmemrit sztvlasztjuk. Ezt vagy Harvard architektra alkalmazsval rhetjk el, vagy kln utasts s
adat cache hasznlatval (melyet egybknt Harvard cache-nek is neveznek). A regiszterekrt folytatott versenyt
pedig gy tudjuk megszntetni, hogy gyorsabb regiszter trolt vesznk, amit az ID ill. a WB fzisok kzl az
egyik a ciklusid els felben, a msik pedig a msodik felben hasznl. Clszer azt a sorrendet kvetni, hogy a
WB a ciklusid els felben rja, az ID pedig a ciklusid msodik felben olvassa a regiszter trolt, hiszen gy az

13.3. EGYMSRAHATSOK A PIPELINE-BAN

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.5. bra. Piplene fzisok erforrshasznlata, feldolgozsi egymsrahats nlkl

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

Ebben a pldban 2 RAW fggsg is van:


Az i2 utasts RAW fggsgben van az i1-gyel, mert egyik bemeneti operandusa, nevezetesen az R3
regiszter az i1 utasts eredmnye.
Az i3 utasts RAW fggsgben van az i2-vel (ugyanezen okokbl).
A teljessg kedvrt itt jegyeznnk meg, hogy van kt msfajta fggsg is: az egyik a write-after-write WAW - fggsg, ami akkor lp fel, ha kt utasts ugyanabba a regiszterbe rja az eredmnyt (pldnkban i2
s i5 ll WAW fggsgben egymssal, mert mindkett R1-be rja az eredmnyt), valamint a write-after-read,
WAR fggsg, amikor az egyik utasts olyan regiszterbe rja az eredmnyt, ami egy korbbi utasts bement
operandusa (pldnkban i4 ll ilyen viszonyban i3-mal).
A jelen fejezetben bemutatott egyszer, 5 fokozat pipeline-ban a WAW s a WAR fggsgek nem okoznak
problmt, hiszen az egyms utni utastsok feldolgozsa sorn mind a regiszterek kiolvassa az ID fzisban,
mind a regiszterek kirsa a WB fzisban az utastsok sorrendjnek megfelelen, sorrendhelyesen trtnik.
A RAW fggsgek okozta problma megrtshez vegyk az albbi, egyszerbb pldt:
i1:
i2:
i3:

R7 R1 + R5
R8 R7 - R2
R5 R8 + R7

Ebben a pldban 3 RAW fggsget is tallhatunk: i1 s i2 kztt, i2 s i3 kztt, valamint i1 s i3 kztt.


A 13.6. brn lthat a problma: az i2 utasts vgrehajtsakor az R7 regiszter rtkt az ID fzisban, a t+2.
lpsben kellene kiolvasni, de az R7 helyes rtke csak a t+4. lpsben kerl be a regiszter trolba, amikor az i1
utasts a WB fzisban van. Ugyanez a helyzet az i3 vgrehajtsa sorn is: annak az R7-re t+3-ban, az ID fzisban
lenne szksge, de az R7 csak t+4-ben kerl bersra a regiszter trolba.
A megoldst az gynevezett forwarding technika jelenti. Ez a kvetkezkppen mkdik. Vegyk szre,
hogy az R7 regiszter rtkre az i2 vgrehajtsa sorn valjban csak t+3-ban van szksg (hiszen ekkor lp
az EX fzisba), s azt is vegyk szre, hogy az R7 j, majdan bersra sznt rtke ekkorra mr kszen van,

198

13. FEJEZET. PIPELINE UTASTSFELDOLGOZS STATIKUS TEMEZSSEL

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

13.6. bra. RAW fggsgek a pipeline-ban


egszen pontosan az EX/MEM pipeline regiszterben. A RAW fggsget teht az i2 vgrehajtsakor az ID
fzisban detektlni kell, s olyan vezrl jelet kell az ALU rszre ellltani, hogy az az EX fzisban a problms
operandust ne az ID/EX pipeline regiszterbl vegye (ahova az ID fzis sorn normlis esetben kerlne), hanem az
EX/MEM pipeline regiszterbl, ahov az ALU az eredmnyt szokta rni. Hasonlan kell eljrni az i3 vgrehajtsa
sorn is. Az i3-nak R7 rtkre legksbb t+4-ben kellene az eredmny, de ekkor, a ciklus elejn az mg nincs
bent a regiszter trolban, viszont megtallhat a MEM/WB pipeline regszterben. Az ID fzisban ezt a helyzetet is
detektlni kell, s az ALU-nak olyan vezrl jelet kell adni, hogy az i3 vgrehajtsakor ezt az operandust az ID/EX
pipeline regiszter helyett a MEM/WB regiszterbl vegye. A forwarding segtsgvel feloldott RAW fggsgeket
a 13.7. bra szemllteti. Ebben az 5 fokozat pipeline-ban, amivel ebben a fejezetben foglalkozunk, a 2-nl nagyobb
tvolsgra lv utastsok kztti RAW fggsg nem jelent problmt, hiszen mire odar a vezrls, az rintett
regiszter mr a helyes rtket fogja tartalmazni, amikor az ID fzis ki akarja azt olvasni.
R7 rtke
itt keletkezik

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

13.7. bra. RAW fggsgek feloldsa forwarding-gal


Sajnos a RAW fggsgek nem mindig oldhatk fel ilyen egyszeren. Lssuk pldul a kvetkez esetet,
melyben egy Load s egy aritmetikai mvelet kztt ll fent a RAW fggsg:
i1:
i2:

R6 MEM[R2]
R7 R6 + R4

13.3. EGYMSRAHATSOK A PIPELINE-BAN

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

13.3.3. Procedurlis egymsrahats


A pipeline mkds szempontjbl nehzsget jelentenek a feltteles ugrsok, ugyanis az ugrsi felttel kirtkelse s az ugrs cmnek a kiszmtsa csak az EX fzisban trtnik. Krds, hogy az IF egysg honnan tltse le a
kvetkez utastsokat, amg ki nem derl az elgazs kimenetele s cme? A legegyszerbb megolds persze
az, hogy feltteles ugr utastsok esetn, amg azok tl nem esnek az EX fzison, a tovbbi utastsok lehvsa
sznetel (pl. az Intel 80386 gy mkdtt). A sok sznet azonban rontja a pipeline teljestmnyt (tviteli sebessgt), klnsen ha a pipeline nagyon hossz, s az utastsletlts valamint a feltteles ugrsok kirtkelse a
pipeline-ban tvol vannak egymstl. Ezrt szinte minden processzor alkalmaz valamilyen becslst az elgazs
kimenetelre nzve, ezt elgazsbecslsnek nevezzk.
Statikus elgazsbecsls
Statikus elgazsbecsls esetn a processzor a program korbbi elletnek gyelembe vtele nlkl, minden
trolt informci hjn prblja megtippelni az elgazs kimenetelt. A legegyszerbb heurisztikk:
Mindig az ugrs meg nem trtnte mellett tesszk le a voksot. Knnyen lthat, hogy ez a stratgia ingyen
van, hiszen amikor kiderl, hogy tvedtnk, a pipeline-ba (tvesen) lv, vgrehajts alatt lv utastsok
mg nem juthattak el sem a MEM, sem a WB fzisba, nem vltoztathattk meg a program llapott, vagyis
knnyen rvnytelenthetjk ket (pl. bebillentnk egy bitet a megfelel pipeline regiszterekbe, hogy a
MEM s a WB fzis hagyja ket gyelmen kvl). Pl. az Intel 80486 gy mkdtt. Sajnos a feltteles
ugrsok bekvetkezse gyakoribb, mint a be nem kvetkezse (lsd: ciklusok).
Vannak processzorok, melyek az ugrs bekvetkezst felttelezik (de ez a stratgia csak akkor hasznos, ha
a felttel kirtkelse ksbb trtnik, mint az ugrsi cm kiszmtsa).
Az is egy stratgia lehet, hogy a visszafel mutat ugrsi cm esetn az ugrst, elre mutat cm esetn a be
nem kvetkezst felttelezzk.
Dinamikus elgazsbecsls
A modern processzorok mly pipeline-nal rendelkeznek, ezrt nagyon fontos a j elgazsbecsls, hiszen a rossz
dnts sok szksgtelen utastsra elpazarolt ciklusidvel jr. Emiatt az elgazsbecsls szerepe egyre fontosabb.

200

13. FEJEZET. PIPELINE UTASTSFELDOLGOZS STATIKUS TEMEZSSEL

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.

13.4. Pipeline implementci


Ebben a fejezetben megadjuk a felvzolt 5 fokozat pipeline egy lehetsges implementcijt. A blokksmt
a 13.9. brn lthatjuk. Az egyszersg kedvrt (hogy kifrjen az brra) az els krben nem vesznk tudomst
az egymsrahatsokrl (ezt a hinyossgot ksbb ptoljuk).
EX/MEM

IF

ID

MUX

LoadedData

B
EX

Instr

Instr

Instr

IMEM

DMEM

Instr

Regiszter
trol

ALU

MUX

PC

Imm SrcB SrcA

Vezrl

ALUOut

ALUOut

MUX

NPC
A

NPC

MUX

=0?

MEM/WB

Cond

ID/EX

ALUOp

IF/ID

MEM

WB

13.9. bra. Az 5 fokozat pipeline egy lehetsges implementcija


Most ismt sorra vesszk az bra alapjn az egyes fzisokat, s egy pszeudo-nyelv segtsgvel egszen
pontosan megfogalmazzuk, hogy mi is trtnik:
1. IF fzis: A PC regiszter trolja az utastsszmllt (program counter). Az IF fzis a ciklus elejn kiolvassa
az utastsmemribl (IMEM) az utastsszmll ltal mutatott utastst, s beteszi az IF/ID pipeline
regiszter Instr mezjbe. Ezutn egy sszead egysg a PC rtkhez hozzad 4-et (most ilyen hosszak
az utastsaink). Az IF fzisban lthat multiplexer vagy ezt a megnvelt rtket, vagy ha ksbb, az EX
fzisban egy feltteles ugr utasts ugrsi felttele teljesl, az ugrsi cmet rja vissza a PC regiszterbe,
hogy a kvetkez ciklusban innen hvhassuk le a soron kvetkez utastst. Az utastsszmll j rtkt
mindekzben az IF/ID regiszter NPC mezjbe is berjuk.
Formlisan megfogalmazva:
IF/ID.Instr IMEM[PC]
PC SELECT (EX/MEM.Instr.Opcode == branch && EX/MEM.Cond; ...
... true: EX.MEM.ALUOut, false: PC+4)
IF/ID.NPC PC
2. ID fzis: A vezrl fogja az IF/ID Instr mezjben lv utastst, s dekdolja azt: Ha aritmetikai mveletet
lt, belltja az ALU szmra a megfelel vezrljelet az ID/EX pipeline regszter ALUOp mezjbe. Ha Load,
Store vagy ugrs mveletet lt, akkor sszeads mveletet kell belltania, hiszen ezekben az esetekben az
ALU-t cmszmtsra hasznljuk (a Load s a Store esetn a bzisregiszterhez kell majd hozzadni az eltolst,

13.4. PIPELINE IMPLEMENTCI

201

az ugrs esetn pedig az utastsszmllhoz). Az utasts regiszter operandusainak az rtkt kiolvassa a


regiszter trolbl, s az ID/EX A s B mezjbe rja. Ha a msodik operandus nem regiszter, hanem
skalr konstans, akkor azt levlasztja az utastsszrl, s az Imm mezbe rja (immediate operandus).
Belltja a ALU szmra a vezrl jeleket, hogy a mveletek operandusait honnan vegye (SrcA s SrcB):
ugrs esetn az els operandust az NPC, ms esetben az A mezbl kell venni, ha a msodik operandus
skalr konstans, akkor azt az Imm, ha nem, akkor pedig a B mezbl kell vennie. Az ID fzis az NPC
s az Instr mezket tovbbtja az EX fel. Teht:
ID/EX.NPC IF/ID.NPC
ID/EX.Instr IF/ID.Instr
ID/EX.Imm IF/ID.Instr [imm]
ID/EX.A Reg [IF/ID.Instr [ra]]
ID/EX.B Reg [IF/ID.Instr [rb]]
ID/EX.SrcA SELECT (IF/ID.Instr.Opcode == branch; ...
... true: pc, false: reg)
ID/EX.SrcB SELECT (IF/ID.Instr.HasImm; ...
... true: imm, false: reg)
ID/EX.ALUOp SELECT (IF/ID.Instr.Opcode == arithm; ...
... true: IF/ID.Instr.Func, false: "+")
3. EX fzis: Az EX muliplexerei az ID/EX SrcA s SrcB jelei alapjn kivlasztjk a megfelel adatforrst,
ezek lesznek az elvgzend mvelet operandusai. Az ALU elvgzi az ALUOp mezben jelzett mveletet,
s az eredmnyt az EX/MEM ALUOut mezjbe rja. Ha feltteles utastsrl van sz, elvgzi a ugrsi
felttel ellenrzst is (az els regiszter operandus 0-val egyezsgt vizsglja), s a kimenetelt a Cond
mezbe teszi. Az utasts mellett a msodik operandust (B) is tovbb kell adni a MEM fzisnak, hiszen
egy Store mvelet esetn ebben van a memriba rand sz.
EX/MEM.Instr ID/EX.Instr
ALU.A SELECT (ID/EX.SrcA; reg: ID/EX.A, pc: ID/EX.NPC)
ALU.B SELECT (ID/EX.SrcB; reg: ID/EX.B, imm: ID/EX.Imm)
ALU.Op ID/EX.ALUOp
EX/MEM.ALUOut ALU.Out
EX/MEM.Cond ID/EX.A == 0
EX/MEM.B ID/EX.B
4. MEM fzis: Load s Store utasts esetn itt kell elvgezni a memriamveletet. Load esetn az EX/MEM
pipeline regiszter ALUOut mezje tartalmazza a memriacmet, a beolvasott adat pedig a MEM/WB
LoadedData mezjbe kerl. Store utasts esetn szintn az ALUOut tartalmazza a cmet, a memriba
rand adatot pedig az EX/MEM regiszter B mezje.
MEM/WB.Instr EX/MEM.Instr
if (ID/EX.Instr.Opcode == Load): MEM/WB.LoadedData MEM [EX/MEM.ALUOut]
if (ID/EX.Instr.Opcode == Store): MEM [EX/MEM.ALUOut] EX/MEM.B
if (ID/EX.Instr.Opcode == arithm): MEM/WB.ALUOut EX/MEM.ALUOut
5. WB fzis: Aritmetikai s Load mveleteknl ebben a fzisban trtnik meg az eredmnyek visszarsa a
regiszter trolba. A multiplexer, attl fggen hogy aritmetikai vagy Load mvelet trtnt-e, vagy az
ALUOut, vagy a LoadedData mez tartalmt rja a regiszter trolba. Az Instr mezben lv utasts
alapjn az is eldnthet, hogy az utasts eredmnyt melyik regiszterben kell elhelyezni (rd).
Reg [MEM/WB.Instr [rd]] SELECT (MEM/WB.Instr.Opcode; ...
... arithm: MEM/WB.ALUOut, Load: MEM/WB.LoadedData

202

13. FEJEZET. PIPELINE UTASTSFELDOLGOZS STATIKUS TEMEZSSEL

Az egymsrahatsok gyelembe vtelhez nzzk elszr a legegyszerbb esetet, az aritmetikai utastsok


RAW fggsgeit. Mint lttuk, ez a fajta fggsg a forwarding technika alkalmazsval a pipeline meglltsa
nlkl teljes mrtkben kikszblhet. A 13.9. brhoz kpest az lesz a klnbsg, hogy az ALU operandusainak
kivlaszt multiplexerei nem csak az ID/EX pipeline regiszterbl vehetik az operandusokat, hanem a forwarding
utakon keresztl is, az EX/MEM s a MEM/WB ALUOut mezjbl (lsd 13.10. bra, szaggatott vonalak).
EX/MEM

MEM/WB

EX

ALUOut
Instr

Instr

MUX

DMEM

LoadedData

MUX

ALUOut

Cond

fwdA2

ALU

Instr

Imm SrcB SrcA

NPC

ALUOp

fwdA1
=0?

MUX

ID/EX

fwdB1
MEM

fwdB2
WB

13.10. bra. Forwarding utak az ALU operanduskivlaszt multiplexerben


Termszetesen ekkor az ID fzisban ezeknek a multiplexerek a vezrl jeleit is az egymsrahatsok tudatban
kell ellltani. Ha az ID fzis gy ltja, hogy a hozz rkezett utasts egyik operandusa megegyezik a pipelineban eggyel vagy kettvel elbbre jr utasts eredmny regisztervel, akkor a megfelel forwarding utat kell
kivlasztania az ALU multiplexernek, amikor az EX fzisba lp az utasts vgrehajtsa:
ID/EX.SrcA SELECT (IF/ID.Instr.Opcode == branch; true: pc, ...
... false: SELECT (IF/ID.Instr.Opcode == arithm &&
&& IF/ID.Instr[ra] == ID/EX.Instr[rd]; true: fwdA1, ...
... false: SELECT (IF/ID.Instr.Opcode == arithm &&
&& IF/ID.Instr[ra] == EX/MEM.Instr[rd]; true: fwdA2, ...
... false: reg))
ID/EX.SrcB SELECT (IF/ID.Instr.Opcode == branch; true: pc, ...
... false: SELECT (IF/ID.Instr.Opcode == arithm &&
&& IF/ID.Instr[rb] == ID/EX.Instr[rd]; true: fwdB1, ...
... false: SELECT (IF/ID.Instr.Opcode == arithm &&
&& IF/ID.Instr[rb] == EX/MEM.Instr[rd]; true: fwdB2, ...
... false: reg))
Amint korbban lttuk, a Load mveletek s az aritmetikai mveletek kztt elfordulhat olyan RAW fggsg,
ami szksgess teszi a pipeline meglltst. Ezt az esetet az ID fzis a fentiekhez nagyon hasonl mdon detektlni
tudja, s a meglltshoz szksges logika aktivlsval kezelni tudja (ez a logika nincs az brn). Vegyk
szre, hogy a sznet utn ismt szksg van forwarding-ra, ekkor a MEM/WB pipeline regiszter LoadedData
mezjt kell az ALU multiplexerre vezetni s operandusnak kivlasztani. Teht az ALU operanduskivlaszt
multiplexereken mr 5 bemenet lesz: a 9. brn ltott kett, s hrom forwarding t: az EX/MEM.ALUOut, a
MEM/WB.ALUOut valamint a MEM/WB.LoadedData.
A procedurlis egymsrahats kezelse attl fgg, milyen elgazsbecsl mdszert vlasztunk. A legegyszerbb
megolds, ha az IF egysg a feltteles ugr utasts detektlsa utn kt ciklusidnyi sznetet tart (sznetelteti az
utastslehvst), ennyi id kell ugyanis ahhoz, hogy az ugr utasts az EX fzisba rjen, s az ugrsi felttel
valamint az ugrsi cm rendelkezsre lljon. A szneteltetshez szksges logika az adat-egymsrahatsok
kezelshez amgy is szksges, teht ez az eljrs kis rfordtssal megvalsthat. Hasonlan egyszer megolds,

13.5. KIVTELEK, MEGSZAKTSOK KEZELSE A PIPELINE-BAN

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.

13.5. Kivtelek, megszaktsok kezelse a pipeline-ban


Az utastsok vgrehajtsa kzben szmos olyan vratlan esemny trtnhet, ami az utastsok feldolgozsnak
norml menett megszaktja. A vezrls ilyenkor az esemny lekezelst vgz hardvernek vagy szoftvernek
addik t. Az esemny lekezelse utn - az esetek tbbsgben - a megszaktott utastssorozat vgrehajtsa
folytatdhat. Ezeket az esemnyeket a klnbz gyrtk klnbzkppen nevezik: kivtelnek (exception,
Motorola), vagy megszaktsnak (interrupt, IBM, Intel).
Ezeket a kivteles esemnyeket tbbfle szempont szerint is csoportosthatjuk:
Szinkron vagy aszinkron: ha az esemny minden egyes alkalommal ugyanott s ugyanakkor keletkezik, ha
egy utastssorozatot ugyanazon formban a processzor s a memria ugyanazon llapotban tbbszr
lefuttatunk, akkor szinkron esemnyrl beszlnk. Nem szinkron, vagyis aszinkron esemnyek pldul a
processzortl s a memritl fggetlenl mkd perifrik krsei.
Maszkolhat vagy nem maszkolhat: A maszkolhat esemnyek kezelst a fut program a maszk megfelel
belltsval letilthatja. A nem maszkolhat esemnyek kezelse nem letilthat.
Utastsok kztt vagy kzben kezelend esemnyek: Vannak esemnyek, melyek kezelse nem trhet
halasztst, mg az aktulisan vgrehajts alatt ll utasts sem fejezhet be. Ezeket az esemnyeket
utastsok kzben feldolgozand esemnyeknek nevezzk. Ilyen pl. virtulis memriakezels esetn
a laphiba: egy memriamvelet sorn elfordulhat, hogy a hivatkozott lap a httrtron van. Ilyenkor
flbeszaktjuk az utasts vgrehajtst, majd az esemny lekezelse (a lap behozsa) utn onnan folytatjuk,
ahol abbahagytuk. Ms esemnyek kezelse rr addig, amg az aktulisan vgrehajts alatt ll utasts
vgrehajtsa befejezdik.
Folytathat vagy terminl: Ha egy esemny terminl, akkor a bekvetkezse esetn a fut program
vgrehajtsa vgleg megszakad. Folytathat esemnyek esetn az esemny kezelse utn a program
vgrehajtsa folytathat.
Az albbi tblzatban sszegyjtttnk nhny jellegzetes pldt az utastsfeldolgozs kzben fellp esemnyekre:
Esemny tpusa

Szinkr./Aszinkr.

Maszkolhat

Kezelend

Folytathat

Perifria krs

Aszinkron

Igen

Utastsok kztt

Igen

Integer aritm. tlcsord.

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

13. FEJEZET. PIPELINE UTASTSFELDOLGOZS STATIKUS TEMEZSSEL

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.

13.6. Eltr ksleltets aritmetikai mveletek kezelse


Az eddigiekben feltteleztk, hogy az ALU minden aritmetikai mveletet egyetlen ciklusid alatt el tud vgezni.
Amg kizrlag egsz (integer) mveleteket vgznk, ez relis felttelezs. A lebegpontos mveletek (oating
point, FP) elvgzse azonban tipikusan sokkal tbb idt vesz ignybe, mint az egsz mveletek. Kr lenne viszont
a pipeline-t gy lelasstani, hogy a ciklusidbe a leghosszabb FP mvelet is belefrjen.
Az egyik lehetsges megolds, hogy magt az EX fzist is pipeline-nal valstjuk meg: megfelel kialaktssal
el lehet rni, hogy ha a mveletek tbb ciklusidt vesznek is ignybe, de legalbb minden ciklusban j mveletet
indthatunk. Ebben a fejezetben ennl is tovbb megynk: olyan pipeline aritmetikai egysget vesznk alapul,
melyben az egyes FP aritmetikai mveletek klnbz mlysg pipeline-nal vannak megvalstva. Ehhez egy
olyan pldt fogunk sszelltani, melyben az ALU egy integer egysg mellett egy FP szorzt, egy FP sszeadt
valamint egy FP oszt egysget tartalmaz. Az FP szorz s sszead maga is pipeline felpts, teht minden
egyes ciklusidben egy j mveletet kpes elkezdeni (teht itercis ideje = 1), az oszt viszont erre nem kpes
(teht csak akkor kpes j mveletet indtani, ha az elzt befejezte: itercis ideje megegyezik a ksleltetsvel).
A 3 FP egysg ksleltetse klnbz, az albbi tblzat szerint alakul (az rtkek ciklusidben vannak megadva):
Aritmetikai egysg

Ksleltets

Itercis id

Integer ALU

FP sszead.

FP szorz

FP oszt

25

25

13.6. ELTR KSLELTETS ARITMETIKAI MVELETEK KEZELSE

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

13.11. bra. Pipeline eltr ksleltets aritmetikai egysgekkel


A kialakts egyik rdekessge, hogy az utastsok, br vgrehajtsuk sorban egyms utn kezddik, soron
kvl fejezdhetnek be, hiszen az egyik utasts kevesebb, a msik tbb ciklusidt tlt a pipeline-ban. Lssunk
erre egy pldt (a lebegpontos regisztereket D-vel jelljk):
D4 D1 D5

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

13. FEJEZET. PIPELINE UTASTSFELDOLGOZS STATIKUS TEMEZSSEL


Az ebbl add feldolgozsi egymsrahatsokat gy lehet kikszblni, hogy az ID fzis nyilvntartja, hogy
a jvben melyik erforrs mikor lesz foglalt, s a nla tartzkod utastst csak akkor engedi tovbblpni
a megfelel aritmetikai egysgbe, ha az az utasts feldolgozsnak vgig a tovbbi fzisok egyikben
sem fog olyan erforrst ignyelni, amit ms is hasznl. Ezt knnyedn elre ki tudja szmtani, hiszen
az ID fzis tudja, hogy az utastsnak melyik aritmetikai egysgre lesz szksge, gy pontosan lehet tudni,
hogy mikor r a MEM ill. a WB fzisba. Amg az utastst az ID fzis nem engedi tovbblpni, a tovbbi
utastsok lehvsa sznetel, teht a pipeline teljestmnye romlik.
Egy msfajta feldolgozsi egymsrahats, ha kt FP oszts kveti egymst. Mivel az FP oszt nem pipeline
szervezs, a msodik oszts utastsnak 24 extra ciklust kell az ID egysgben tltenie, mire az FP oszt
felszabadul. Erre az idre a tovbbi utastsok lehvsa szintn sznetel.

2. A RAW egymsrahatsok gyakrabban fordulnak el s gyakrabban lltjk meg a pipeline-t


Korbban, lebegpontos mveletek nlkl csak a Load s az aritmetikai utastsok RAW fggsge ignyelt
egy ciklusidnyi sznetet az utastsok lehvsban. Most, hogy az aritmetikai mveletek eredmnye a
pipeline sokkal ksbbi fzisban ll el, ezek a teljestmnyt ront sznetek sokkal gyakoribb s hosszabb
vlnak. Msrszt, az eddigieknl tvolabbi utastsok kztt is gondot jelent (detektlst s forwarding-ot,
vagy/s sznetet ignyelve) a RAW fggsg. Plda:
Utasts

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

13.7. ALTERNATV PIPELINE STRUKTRK

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.

13.7. Alternatv pipeline struktrk


A trgyalt 5 fokozat pipeline termszetesen csak egy a sok lehetsges struktra kzl. Minden processzor gyrt
meghozza a maga dntseit s kompromisszumait a megfelel pipeline tervezse sorn. A fokozatok szma nem
felttlenl 5, lehet kevesebb, vagy tbb is. A feldolgozsi fzisok sorrendje is dnts krdse, bizonyos keretek
kztt. Az albbiakban, gyakorlati pldaknt kt ARM processzor pipeline-jt mutatjuk be.

Az ARM926EJ-S processzor pipeline-ja


Az ARM926EJ-S processzor 5 fokozat pipeline-al rendelkezik, melynek felptse nagyban hasonlt a megismert
demonstrcis cl pipeline-hoz. A fzisok az albbiak (lsd 13.12. bra):
1. IF: Utastslehvs
2. ID: Dekdols, majd az rajelciklus msodik felben az operandusok kiolvassa a regisztertrolbl
3. EX: Az aritmetikai s bitmveletek, valamint egy opcionlis bitenknti shift-els trtnik ebben a fzisban,
amennyiben nem szorzs mveletrl van sz. A szorzs ugyanis kt rajelciklust ignyel, melybl az els
az EX fzisra esik.
4. MEM: Itt trtnnek a Load/Store utastsokhoz kapcsold memriamveletek. Ez a fzis azonban az
aritmetikai mveletek esetn (melyek nem ignylik a memrihoz fordulst) sem telik ttlenl. Egyrszt a
szorzs mveletek a MEM fzis alatt fejezdnek be. Msrszt az ARM kpes teltd aritmetikval, azaz
tlcsorduls nlkl is szmolni (pl. 231 cskkentse esetn nem prg t az eredmny 231 1-be, hanem
marad 231 ), s a teltds ellenrzse s kezelse szintn a MEM fzisban trtnik meg.
5. WB: Az eredmnyek visszarsa a regisztertrolba, mint a korbbi 5 fokozat minta pipeline-unknl.

13.12. bra. Az ARM926EJ-S processzor pipeline-ja

Az ARM1176JZF-S processzor pipeline-ja


Az ARM1176JZF-S processzor, dolgozik tbbek kztt a Raspberry Pi miniszmtgpben is, 8 mlysg pipeline-al
rendelkezik (13.13. bra), de a tanult 5 fzis ebben a pipeline-ban is ugyangy tetten rhet.
1. Fe1: Az utastslehvs els fzisa, a cm kiadsa a memrinak (ill. az utasts cache-nek), s a vlaszknt
rkez utastssz tvtele
2. Fe2: Az utastslehvs msodik fzisa, tbbek kztt az elgazsbecsls ekkor trtnik meg
3. De: Dekdols
4. Iss: Operandusok kiolvassa a regisztertrolbl, valamint az utasts tovbbirnytsa a megfelel feldolgozegysg fel
Az utastsok feldolgozsra hrom mveleti egysg ll rendelkezsre:

208

13. FEJEZET. PIPELINE UTASTSFELDOLGOZS STATIKUS TEMEZSSEL


Aritmetikai mveletek esetn az utasts vgrehajtsa ngy tovbbi fzist ignyel:
1. Sh: egy bitenknti shift mvelet vgrehajtst (amit az ARM utastskszlet minden aritmetikai
mvelethez csatolhatan megenged),
2. ALU: magnak az aritmetikai/logikai mvelet vgrehajtst,
3. Sat: az eredmny potencilis teltdsnek kezelst,
4. WBex: az eredmny visszarst a regiszter trolba.
Szorzs esetn szintn ngy fzisra van szksg:
1.-3. MUL1, MUL2, MUL3: a szorzs elvgzse,
4. WBex: az eredmny visszarsa a regiszter trolba.
A memriamveletek vgrehajtsa szintn ngy fzisban trtnik:
1. ADD: cmszmts,
2. DC1: adat cache kiolvassa vagy rsa, els fzis,
3. DC2: adat cache kiolvassa vagy rsa, msodik fzis,
4. WBls: az eredmny visszarsa a regiszter trolba (load mvelet esetn).

13.13. bra. Az ARM1176JZF-S processzor pipeline-ja


Az aritmetikai mveletek s a szorz pipeline nem kpes prhuzamos mkdsre, mg a load/store pipeline
igen.

14. fejezet

Pipeline utastsfeldolgozs dinamikus


temezssel
14.1. Motivci: utastssorrend-optimalizls
Egy program utastsainak megfelel trendezsvel sok esetben cskkenteni lehet a futsi idt, hiszen egy
szerencss utastssorrend vgrehajtsa kzben esetleg kevesebb pipeline sznet beiktatsra lehet szksg,
mint egy kedveztlenebb sorrend esetn. Az trendezssel termszetesen megfelel krltekintssel kell bnni,
hogy a program vgeredmnye ne vltozzon, tovbbra is a programoz szndknak megfelel tevkenysget
vgezze. Az utastssorrend-optimalizls demonstrlsra lssuk egy pldt. Albb egy C nyelven megrt ciklust
lthatunk:
for (i=0; i<N; i++)
Z[i]=A*X[i];
a ciklusmag alacsony szint nyelvre fordtott vltozata pedig a kvetkez:
i1:
i2:
i3:
i4:
i5:

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

14.1. bra. A ciklusmag utastsainak temezse


Az utastssorozat vgrehajtshoz 14 rajelciklusra volt szksg. A futsi idt kt tnyez nvelte: az els
kt utasts kztti RAW fggsg (1 ciklusnyi sznet), valamint a msodik s harmadik utasts kztti RAW
209

210

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL

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. bra. Az trendezett utastssorozat temezse


Az adatfggsgek feldertsvel s az adatfggsgben lv utastsok eltvoltsval teht optimalizlhat a
programok futsi ideje. Ezzel a megkzeltssel azonban van kt problma: egyrszt a lehetsgek kihasznlsa a
programozn (illetve, magas szint nyelvek esetn a fordtprogram kpessgein) mlik, msrszt pedig klnbz
pipeline struktrk esetn klnbz lesz az optimlis utastssorrend. Az lenne a legjobb megolds, ha az
utastsok trendezst maga a processzor vgezn, automatikusan, a program futsa kzben. Hiszen az ilyen
processzorra nagyon knyelmes lenne programot rni, nem kellene llandan szem eltt tartani az utastssorrend
fontossgt. Ha ezzel a kpessggel rendelkezik a processzor, akkor soron kvli utasts-vgrehajtsrl beszlnk.
Amilyen mgikusnak tnik is, a soron kvli utasts-vgrehajts nem egy nagyon bonyolult eljrs, s nem
is napjaink vvmnya. Az els erre kpes szmtgp 1964-ben megjelent, Seymour Cray ltal tervezett CDC
6600-as volt. Azonban az Intel legjabb Core i7 processzorai is az 1967-ben publiklt, egy ksbbi fejezetben
rszletesen trgyalt Tomasulo algoritmus szerint mkdnek.

14.2. A soron kvli vgrehajts alapelemei


A sorrenden kvli vgrehajts a sorrendi vgrehajtshoz kpest lnyegesen eltr megoldsokat ignyel. Az
utastsfeldolgoz futszalag nem futszalag tbb, hiszen a ksbbi utastsok - ha vgrehajtsuknak semmi
akadlya nincs - megelzhetik a korbbiakat. Az utastsok sorrenden kvli vgrehajtsa sorn gyelembe
kell venni azt is, hogy a program szemantikja nem vltozhat. Az ehhez szksges logika: nyilvntartsok az
utastsok vgrehajtsi llapotrl s a mveleti egysgek foglaltsgrl, valamint az utastsokat a mveleti
egysgekhez hozzrendel logika a processzort bonyolultt teszi.

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

14.2. A SORON KVLI VGREHAJTS ALAPELEMEI

211

utaststrol az ID fzist kt rszre bontja: az utasts dekdolsrt s az utaststrolba helyezsrt felels


rszt Dispatch-nek (DS), az operandusok sszeszedst s a megfelel vgrehajt egysg fel tovbbtst vgz
rszt pedig Issue-nak (IS) hvjk.
Az utaststrol nemcsak a dekdolsi fzist, hanem az egsz pipeline-t is kt rszre bontja. Az utastsok
letltsrt s elksztsrt felels pipeline fzisok (IF s DS) alkotjk a front-end-et, a tnyleges vgrehajtst
vgz fzisok pedig a back-end-et. A front-end sorrendi (in-order), a back-end soron kvli (out-of-order) feldolgozst kvet. Az ily mdon mdostott pipeline a 14.3. brn lthat, melyen egy tovbbi vltozs is meggyelhet:
out-of-order processzorokban gyakori megolds, hogy a Load/Store utastsok kln mveleti egysget kapnak
sajt cmszmolval, gy az aritmetikai mveleteknek nem kell feleslegesen thaladnia a MEM fzison.
Egsz egysg
EX

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

14.3. bra. Out-of-order pipeline


Az brn lthat utaststrol centralizlt, mivel egy darab van belle a processzorban, s ez az egy minden
utastst trol. Egyes processzorok elosztott utaststrolt alkalmaznak, melyben minden mveleti egysghez
tartozik egy sajt, csak az oda tart utastsok szmra fenntartott trol. A gyakorlatban hasznlt kialaktst,
illetve mreteket a 14.4. bra foglalja ssze.
Processzor

Utaststrol tpusa

Utaststrol mrete

IBM Power4

Elosztott

31

Intel Pentium III

Centralizlt

20

Intel Pentium 4

Hibrid (1 mem. mv., 1 tbbi)

126 (72, 54)

Intel Haswell

Centralizlt

56

AMD K6

Centralizlt

72

Elosztott

60

AMD Opteron

14.4. bra. Nhny processzor utaststroljnak paramterei

14.2.2. A dinamikus temez


A dinamikus temez feladata, hogy az utaststrolbl egy utastst vgrehajtsra kivlasszon. Azrt dinamikus,
mert nem a program szerinti sorrendet kveti, hanem a pillanatnyi helyzetnek legmegfelelbb dntst hozza. A
dinamikus temez adatramlsos elven mkdik. Azon utastsok kzl vlogat, melyek kszek a vgrehajtsra,
vagyis minden operandusuk rendelkezsre ll, s van fogadkpes szabad mveleti egysg.
A dinamikus temez (leegyszerstve) egy precedenciagrfot tart karban. A precedenciagrf csompontjai
az utaststrolban lv utastsok, a csompontbl indul irnytott lek pedig megmutatjk, hogy mely

212

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL

ms utastsokat kell bevrni, mieltt a vgrehajts elkezddik. Az lek tulajdonkppen az adatfggsgeket


reprezentljk. Egy utasts mg nem hajthat vgre, ha
egyik operandusa mg nem ll rendelkezsre (RAW fggsg),
vagy ugyanabba a regiszterbe rn az eredmnyt, mint egy korbbi, mg nem vgrehajtott utasts (WAW
fggsg),
vagy olyan regiszterbe rn az eredmnyt, ahonnan egy korbbi utasts mg nem olvasta ki a rgi rtket
(WAR fggsg).
A precedenciagrf minden egyes j belp utasts dekdolsakor bvl. A dinamikus temez olyan utastst
(precedenciagrf csompontot) vlaszt vgrehajtsra, amelyik minden kimen le mr befejezdtt utastsra
mutat. Egy adott ciklusban az is elfordulhat (st, ez a tipikus helyzet), hogy egy adott mveleti egysgre vr tbb
utasts is ksz a vgrehajtsra. Ilyenkor azt mondjuk, hogy versengs van a mveleti egysgrt, s az temez az
implementcik tbbsgben a legregebb utastst vlasztja, de vannak kinomultabb algoritmusok, melyek
azt az utastst vlasztjk, melynek szerepe kritikus az utastssorozat vgrehajtsa szempontjbl (pl. sokakat
feltart, jobb hamar tlesni rajta).
A dinamikus temezs szemlltetshez trjnk vissza a korbbi ciklushoz, s kvessk vgig kt iterci
futst:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
i8:
i9:
i10:

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

14.2. A SORON KVLI VGREHAJTS ALAPELEMEI

213

14.5. bra. A precedenciagrf karbantartsa s a dinamikus temezs


A RAW fggsgek a problma termszetbl fakadnak, azt megszntetni a program szemantikjnak megsrtse
nlkl nem lehet. Ezeket a fggsgeket nem lehet kiiktatni, ezrt valdi fggsgnek nevezik ket.
A WAR fggsg azt jelenti, hogy egy utasts olyan regiszterbe rja az eredmnyt, amelybl egy korbbi
utasts olvas:
D3 D2 * D0
...
D2 MEM[R1]
illetve, WAW fggsget akkor kapunk, ha kt utasts ugyanabba a regiszterbe kvnja rni az eredmnyt:
D3 D2 * D0
...
D3 MEM[R1]
A WAR s WAW fggsgek csakis azrt llnak fenn, mert a programoz jra felhasznl egy korbban mr hasznlt
regisztert. Ha mindig j regiszterbe tenn az utastsok eredmnyt, akkor sem WAR, sem WAW fggsg nem
lenne a programban. Termszetesen a regiszterek szma ersen korltozott (pl. x86 architektrban 8, ARM-ban
16 van bellk), ezrt jrafelhasznlsuk nem szhat meg. A WAR s WAW fggsgeket regisztertnevezs
segtsgvel meg lehet szntetni, gy ezeket lfggsgeknek (anti-dependency) hvjk.

214

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL

Az lfggsgek megoldsnak legkzenfekvbb mdja az lenne, ha a gyrtk a processzoraik jabb s jabb


generciiba egyre tbb regiszter hasznlatt tennk lehetv. Erre azonban nincs md, hiszen a regiszterek
szmt az utastskszlet architektra rgzti, s a kompatibilits fenntartsa vgett ettl eltrni nem lehet.
A regisztertnevezs lnyege, hogy a processzorban a programoz szmra lthatatlan mdon nagy szm
zikai regisztert alaktanak ki. A processzor az eredetileg architekturlis regisztereket hasznl utastsokat rgtn
a lehvs utn trja gy, hogy azok a zikai regisztereket hasznljk, s hogy a program tnylegesen protljon
azok nagy szmbl.
A regisztertnevezshez kt adatszerkezet szksges: egy regiszterlekpz tbla, amely az architekturlis
regiszter zikai regiszter lekpezseket tartalmazza, valamint a szabad zikai regiszterek listjra. Az algoritmus
formlisan megfogalmazva a kvetkezkppen mkdik:
Az Ri Rj mv. Rk utasts regiszter tnevezs utn
Ra Rb mv. Rc utastss vlik, ahol:
Rb = RegiszterLekpzTbla[Rj],
Rc = RegiszterLekpzTbla[Rk],
Ra = A kvetkez szabad fizikai regiszter,
majd frissts: RegiszterLekpzTbla[Ri]= Ra.
A 14.7. brn lthatjuk a pldaknt hasznlt utastssorozat eredeti s regisztertnevezs utni vltozatt. A
regiszterlekpz tbla alakulst a 14.6. bra kveti, melynek els oszlopa (Kezdeti) a kiindulsi llapotot tkrzi.
Most jellje az egsz tpus zikai regisztereket T kezdbet, a lebegpontos tpusakat pedig U kezdbet. A
regisztertnevezs minden egyes utastsra teljesen szisztematikus mdon trtnik. Az els utasts lehvsa utn
a processzor a tblzat alapjn tnevezi a forrsregisztert (R1T3), majd az eredmnyt egy hasznlaton kvli,
tiszta regiszterbe rja (U25). Ezutn frissteni kell a regiszterlekpz tblt, hogy a jvben a D2-t hasznl
utastsok az U25-bl olvassk ki a tnyleges rtket (a tblzat 1-es oszlopa). A msodik utastssal is ugyangy
jrunk el. Elszr az utasts jobb oldaln, a forrsregisztereket kell tnevezni a tblzat alapjn, majd az eredmny
ismt tiszta regiszterbe kerl, vgl a tblzatot is frissteni kell. A harmadik (store) utasts annyiban klnleges,
hogy ltala nem vltoznak a regiszterek, gy a harmadik lpsben a tblzat frisstsre nincs szksg.
Arch.

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

14.6. bra. A regiszterlekpz tbla alakulsa a regisztertnevezs sorn


A processzor termszetesen nem a 14.6. tblzatot trolja, hanem csak annak az ppen aktulis oszlopt.
A regisztertnevezsnek ksznheten eltntek a WAR s WAW fggsgek, hiszen soha nem runk olyan
regiszterben, amit korbban mr hasznltunk. (Termszetesen egy vals rendszerben nem ll rendelkezsre
vgtelen szm zikai regiszter, de a mr nem hasznlt regisztereket ismt fel lehet szabadtani.)
Csak a RAW fggsgek maradtak, aminek ksznheten a precedenciagrf lnyegesen ritkbb vlt (lsd
14.8. bra), s ez a futsi idre is jtkony hatssal van. Az utastsok llapotnak alakulst a 14.9. brn
kvethetjk vgig. Az els t lpsben nincs klnbsg, de a hatodikban mr van: a ciklus msodik itercija is
elkezdhetv vlt, hiszen az elstl klnbz regisztereket hasznl. A nyolcadik lpsre az tnevezett kd mr
5 utastst befejez, s 1 vrakozik, mg az eredeti esetben ugyanekkor csak 3 utasts van ksz, s 3 vrakozik.
Termszetesen egy les rendszerben, ahol tbb utasts is a processzor ltterben van, a regisztertnevezs
haszna mg szembetnbb.

14.2. A SORON KVLI VGREHAJTS ALAPELEMEI


Eredeti kd:
i1:
i2:
i3:
i4:
i5:
i6:
i7:
i8:
i9:
i10:

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

14.7. bra. A pldaprogram regisztertnevezs eltt s utn

a) Regisztertnevezs eltt

b) Regisztertnevezs utn

14.8. bra. Precedenciagrf a regisztertnevezs eltt s utn

14.2.4. A sorrend-visszallt buer


A soron kvli vgrehajtsnak van egy kellemetlen mellkhatsa: a program futsa sorn a memria-, illetve
regisztertartalom nem a program ltal elrt sorrendben vltozik. A vgn a vgeredmny persze j lesz, ha
a dinamikus temez tiszteletben tartja a precedenciagrfot, de a rszeredmnyek nem felttlenl a program
alapjn vrt sorrend szerint gylnek a memriban. Vannak esetek, amikor ez semmilyen kellemetlensget nem
okoz. Ha azonban a regiszterkszletre, illetve a memriatartalomra a szmtgp ms komponensnek is van
rltsa, akkor vatosabbnak kell lenni, hiszen nem biztos, hogy fel van ksztve erre a helyzetre. Mrpedig egy
modern szmtgpben a memria egy osztott erforrs:
Tbbmagos processzorok, illetve multiprocesszoros rendszerek esetn a memriatartalmat mindegyik mag,
illetve processzor nyomon tudja kvetni, s a sorrenden kvli vgrehajtst tetten tudja rni.
A memrihoz a perifrik is kzvetlenl hozzfrnek, DMA segtsgvel.
Ugyanezzel a problmval szembeslnk egy megszaktskrs esetn. A megszaktskezel szubrutin nem
felttlenl van felksztve arra az esetre, hogy a szmtgpen olyan llapotban tallja, hogy pr ksbbi utasts
mr lefutott, mg pr korbbi mg el sem kezddtt.
A legbiztosabb megolds, ha a processzor mindent megtesz annak rdekben, hogy a sorrenden kvli
mkdst a klvilg ell elrejtse, s sorrendi vgrehajts ltszatt keltse. Ennek eszkze a sorrend-visszallt
buer (reorder buer, ROB).
A ROB egy FIFO adatszerkezet. Amikor egy utasts a DS fzis sorn bekerl az utasts trolba, egyben egy
bejegyzst is kap a ROB-ban. Mivel a DS fzist az utastsok a program szerinti sorrendben hagyjk el, a ROB-ban
a hozzjuk tartoz bejegyzsek is program szerinti sorrendben jelennek majd meg. Egy utastshoz tartoz ROB
bejegyzs az albbi informcikat tartalmazza:

216

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL

14.9. bra. Dinamikus temezs a regisztertnevezs utn


Ready bit: az utasts vgrehajtsa ksz-e. A tovbbi 3 meznek csak akkor van rtelmes rtke, ha
Ready=1.
Az utasts eredmnye (maga az rtk)
Aritmetikai vagy Load utasts esetn: a regiszter (logikai) neve, ahov az eredmnyt kellene rni
Store utastsnl: a memriacm, ahov a megadott rtket be kell rni
Amikor a processzor vgrehajtott egy utastst, annak eredmnyt nem vezeti t rgtn az eredmnyregiszterbe,
vagy store utasts esetn a memriba, hanem ideiglenesen a sorrend-visszallt buerben trolja.
Mivel sorrenden kvli vgrehajtsrl van sz, az eredmnyek a sorrend-visszallt buerbe is sorrenden kvl
kerlnek, ssze-vissza jelennek meg a Ready=1 bittel rendelkez bejegyzsek. A sorrend-visszallt buerben
ideiglenesen trolt eredmnyeket csak akkor fogja a processzor a tnyleges rendeltetsi helyre tvezetni, ha
minden (program szerint) korbbi utastsra mr megtette azt. Teht mikzben zajlik az utastsok vgrehajtsa,
a ROB szpen sorban, a FIFO elvnek megfelelen rvnyesti az elkszlt utastsok ltal elrt regiszter vagy
memria rsokat. Ha olyan bejegyzshez r, amelyben Ready=0, akkor ott megll,s megvrja, amg elkszl.
Ezzel az egyszer megoldssal garantlhat, hogy minden egyes rszeredmny a program szerinti sorrendben fog
feltnni a memriban.
A gyakorlatban a sorrend-visszallt buer miatt a WB fzist ktfel szoktk bontani: a vgrehajts ksz
(complete, CM) fzisban trtnik az utasts eredmnynek bersa a ROB-ba, a kilpsi fzisban (retire, RT) pedig
az utasts ROB bejegyzsnek az rvnyestse.
A sorrend-visszallt buer mkdst a 14.10. bra mutatja be, az eddig kvetett pldn keresztl. Minden
ciklusban egy jabb utasts lp be a processzorba, s kap j helyet a ROB-ban. Az brn a ROB-ban lv els,
ill. utols rvnyes utastst a zld, ill. a piros nyl jelli. Az utasts belpsekor a ROB-ba kerl az eredmny
rendeltetsi helye is. A msodik lpsben elindul az els utasts vgrehajtsa, s bejegyzsre kerl a msodik. A
harmadik lpsben az els utasts befejezdik, az eredmnye a ROB-ba kerl, s mivel minden korbbi utasts
mr rvnyre jutott (mivel ez az els), ezrt ez az eredmny berdik a rendeltetsi helyre, majd az utasts
elhagyja a ROB-ot. A msodik utasts lass, vgrehajtsa 5 ciklust ignyel. A mr megismert sorrenden kvli
vgrehajts elve szerint kzben megelzi t a negyedik s az tdik utasts is, ezek eredmnye is a ROB-ba kerl.
Ezeket az eredmnyeket mg nem lehet a rendeltetsi helyre rni, hiszen akkor hamarabb jutnnak rvnyre, mint
a mg be nem fejezett msodik s harmadik utasts s pont ezt szeretnnk elkerlni. Ez a kt eredmny csak a
kilencedik lpsre jut rvnyre, amikor mr minden korbbi utasts eredmnye rvnyre jutott.

14.2. A SORON KVLI VGREHAJTS ALAPELEMEI

217

14.10. bra. Plda a sorrend-visszallt buer alakulsra


A pldn mg egy fontos szrevtelt lehet tenni. A hetedik lpsben indul a U27 MEM[T47] utasts
vgrehajtsa, de ekkor T47 aktulis rtke mg nem a regisztertrolban, hanem a ROB negyedik sorban
tallhat, teht onnan kell kiolvasni azt.

14.2.5. Spekulatv vgrehajts


Alapesetben az utastsok trendezsnek gtat szabnak a feltteles ugr utastsok. Amg az ugrsi felttel nem
kerl kirtkelsre, a processzor nem tudja, hogy merre folytatdik a program, gy nem tud jabb utastsokat
lehvni s bevonni a dinamikus temezsbe. Alapesetben teht az utastsok trendezse a feltteles ugr utastsok
ltal hatrolt programrszekre, az gynevezett basic block-okra korltozdik.
Sajnos a vals programokban jellemzen nagyon sok a feltteles ugrs, ami rontan a sorrenden kvli pipeline
hatkonysgt. A megoldst a spekulatv vgrehajts jelentheti. Ebben az esetben a processzor elgazsbecsls
segtsgvel megtippeli, hogy a feltteles ugrs merre viszi tovbb a programot, s ezt a becslst kszpnznek
is veszi: elkezdi lehvogatni a megtippelt grl az utastsokat, s bevonja azokat a dinamikus temezsbe.
Termszetesen idnknt elfordul, hogy a becsls rossz volt, amikor tnylegesen kirtkeldik az ugrsi felttel.
Ekkor mdot kell teremteni a tvedsbl lehvott s vgrehajtott utastsok hatsnak semmiss ttelre.
Ha van sorrend-visszallt buer, akkor a spekulatv vgrehajts viszonylag egyszeren megvalsthat. A
processzor btran vgrehajthatja a megtippelt irnybl szrmaz utastsokat, de a ROB-ba azt is be kell jegyeznie,
hogy azok melyik feltteles ugrs melyik irnybl szrmaznak. Az utastsok eredmnye, ahogy korbban
lttuk, elszr a ROB-ba kerl, s nem az utasts szerinti rendeltetsi helyre. Csak annyival kell kiegszteni a
mkdst, hogy a spekulatv utastsokat nem engedjk rvnyre jutni (az eredmnyket a ROB-bl a rendeltetsi
helyre rni), amg be nem bizonyosodik, hogy a tipp, aminek a rvn a processzorba jutottak, helyes volt.

14.2.6. Memriamveletek adat-egymsrahatsa


Az eddigiekben az egyszersg kedvrt nem vettk gyelembe, hogy adat-egymsrahats nemcsak a regisztereken dolgoz aritmetikai utastsok kztt, hanem a memriamveletek kztt is lehet. Nzzk a kvetkez
utastssorozatot:
i1:
i2:
i3:
i4:

R2 R1 + 4
D0 D1 / D2
MEM[R1+8] D0
D3 MEM[R2+4]

218

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL

Ebben a pldban az i3 s i4 memriamveletek kztt RAW egymsrahats van, hiszen az i4-ben az


olvass ugyanarrl a memriacmrl trtnik, ahova az i3 r. Sorrenden kvli vgrehajts esetn, hacsak ez
ellen nem tesznk intzkedseket, az i4 hamarabb futhat le, mint az i3 (mert az i3-at feltartja az i2, ami egy
lass lebegpontos oszts), ezzel a D3 regiszter rtke nem az lesz, mint amit a program sorrendi vgrehajtsval
kapnnk.
A regiszterek kztti egymsrahatsok a dekdolsi fzisban szrevehetk s vrakoztatssal kezelhetk voltak.
Memriamveletek esetn nem ilyen egyszer a helyzet. Ha a processzor Load utastssal tallkozik, tovbbi
megfontolsokat kell tennie, hogy vajon sorrenden kvl vgrehajthatja-e, esetleg egy memrira vonatkoz
adat-egymsrahatst kockztatva. A processzornak a kvetkezket kell ellenriznie:
1. Ha a ROB-ban nincs a krdses Load eltt egyetlen Store sem, akkor a Load vgrehajthat, legalbbis ez a
fajta memrira vonatkoz adat-egymsrahats nem fordulhat el.
2. Ha a ROB-ban a korbbi utastsok kztt egy olyan befejezett Store-t tall, amely ugyanarra a cmre
vonatkozik, mint a Load, akkor a Load-nak nem kell a memrihoz fordulnia, mg csak a cache-hez sem,
mert a keresett adat megvan a ROB-ban, onnan kiolvashat, a Load teht kslekeds nlkl befejezhet.
3. Ha a ROB-ban a korbbi utastsok kztt egy olyan befejezetlen Store-t tall, amely ugyan befejezetlen, de
a cm mr ki van szmtva s a ROB-ban rendelkezsre ll, s ez a cm pont megegyezik a Load cmvel,
akkor a Load vgrehajtsval vrni kell. Addig kell vrni, amg a Store ROB bejegyzsben meg nem jelenik
a troland adat, ezt kveten a Load ezt az rtket kzvetlenl onnan tveheti.
4. Ha a ROB-ban a korbbi utastsok kztt egy olyan befejezetlen Store-t tall, amelynek mg a cme sincs
kiszmolva, akkor van igazn gond. Mit csinljunk a Load-dal? Biztos ami biztos alapon vrjuk meg vele
a Store-t, htha pont ugyanarra a cmre akar rni? De akkor ezzel az sszes Load-tl fgg utastst is
feltartjuk, tbbnyire feleslegesen. Vagy legynk btrak, s hajtsuk vgre a Load-ot rgtn, a Store eltt,
mondvn hogy olyan nagy az a memria, kicsi az esly r, hogy kt memriamvelet pont ugyanarra a cmre
vonatkozik? De mit tegynk, ha mgis ugyanaz az rsi s az olvassi cm, teht valdi RAW egymsrahats
alakul ki? Sajnos ez a lokalitsi elvek miatt nem is olyan ritka esemny. Ezekkel a krdsekkel foglalkozik a
memria egyrtelmsts (memory disambiguation) folyamata.
Memria egyrtelmsts
A memria egyrtelmsts (memory disambiguation) teht annak az eldntse, hogy egy Load s egy korbbi,
mg be nem fejezett (s cmszmts eltt ll) Store kztt van-e RAW egymsrahats, vagy nincs. Ez a processzor
teljestmnye szempontjbl egy lnyeges krds, hiszen RAW egymsrahats esetn a Load-ot vrakoztatni kell,
ellenkez esetben vgrehajthat (ha nincs ms egymsrahats ami a vgrehajtst akadlyozn). Radsul ez a
dntsi helyzet a tipikus mkds sorn elg gyakran fennll: a statisztikk szerint a memriamveletek teszik ki
a programok utastsainak kzel harmadt.
Lehetsgek memria egyrtelmstsre:
Konzervatv stratgia: minden Load kteles megvrni, hogy a ROB-ban eltte lv Store-ok befejezdjenek,
htha pp ugyanazt a cmet fogjk rni, amit a Load olvasni akar. Ez biztos megolds, de teljestmny
szempontjbl nem ppen optimlis.
Optimista stratgia: ne vegynk tudomst a potencilis RAW egymsrahatsrl, a Load btran megelzheti
a Store-okat a sorrenden kvli vgrehajts jegyben. Ez persze gyorsabb feldolgozst eredmnyez, de
ha rossz volt a dnts, vagyis ha az rsi s olvassi cm mgis megegyezik, akkor vissza kell prgetni az
esemnyeket: a Load s az utna kvetkez utastsok eredmnyeit rvnytelenteni kell a ROB-ban, majd
ezeket jra vgre kell hajtani.
Spekulatv stratgia: optimistn kezd, de ha a programban ugyanarra a Load utastsra az optimista
spekulci egyszer (vagy - implementcitl fggen - tbbszr) nem vlt be, akkor azt a processzor egy
olyan Load-nak minsti, amely szeret a korbbi Store-ok cmrl olvasni, utastsszmlljt egy erre a
clra fenntartott buerben elhelyezi, s ha legkzelebb belefut, akkor vele a konzervatv stratgia szerint
jr el.

14.3. SORON KVLI VGREHAJTS A GYAKORLATBAN

219

14.3. Soron kvli vgrehajts a gyakorlatban


14.3.1. A Scoreboard algoritmjus
A CDC6600-as szmtgp volt az els, amely sorrenden kvli utasts-vgrehajtst valstott meg a ma mr
kezdetlegesnek szmt scoreboard (irnyttbla) eljrssal. A scoreboard eljrs az out-of-order vgrehajtst
centralizlt irnyts segtsgvel oldja meg, regisztertnevezst, sorrend-visszallt buert nem alkalmaz. Az
alapja egy irnyttbla, ami nyilvntartja, hogy mely utastsok vgrehajtsa kezddtt el, melyik utasts pp
melyik fzisban tart, s hogy alakul a mveleti egysgek foglaltsga s a regiszterek tartalma. Ezen informcik
alapjn pontosan tudhat, hogy mikor s milyen, kezelst ignyl egymsrahatsok lphetnek fel utastsok
kztt.
Az eredeti scoreboard eljrs 5 fzisra bontja az utastsok vgrehajtst:
1. Utastslehvs (instruction fetch, IF): Szerepe s mkdse megegyezik a korbban ltottakkal
2. Hozzrendels (dispatch, DS): Ebben a lpsben trtnik az utasts dekdolsa, s a megfelel mveleti
egysghez rendelse. Ha nincs az utasts tpusnak megfelel szabad mveleti egysg, vagy ms egyb
feldolgozsi egymsrahats trtnik, akkor az utasts vrakozni knyszerl (de az ezen a ponton blokkolt
utastst ms nem elzheti be, teht az j utastsok lehvsa is sznetelni fog). Tovbb, ha WAW fggsg
ll fent valamely vgrehajts alatt ll utastssal, akkor szintn knyszer vrakozs kvetkezik (hiszen
fl, hogy ha elindtjuk a vgrehajtst, az j utasts hamarabb vgez, mint a rgi, ezzel megsrtve az
eredmny regiszterek program ltal elrt rsi sorrendjt). Ha ezek egyike sem ll fent, akkor az utastst
felvisszk az irnyttblra, a tovbbi letnek nyomon kvetsre.
3. Vgrehajtsra kijells (issue, IS): Ebben a fzisban kell kiolvasni forrsoperandusokat a regisztertrolbl,
ezzel az utasts kszen ll a vgrehajtsra. Nem lphet az utasts ebbe a fzisba, ha RAW egymsrahats ll
fenn valamely, mr vgrehajts alatt ll utastssal, mivel ekkor a regisztereket mg nem szabad kiolvasni
(mert a forrsoperandust elllt utasts mg nem rta be a regiszter friss rtkt a regisztertrolba),
ilyenkor az utasts vrakozni knyszerl.
4. Vgrehajts (execute, EX): Az utasts ltal elrt mvelet vgrehajtsa ebben a fzisban trtnik. Attl
fggen, hogy milyen mveletet kell elvgezni, ez egy vagy tbb rajelciklust is ignybe vehet.
5. Regiszterrs (writeback, WB): Ebben a lpsben kerl be a mvelet eredmnye a regisztertrolba. Az
utasts a berssal vrakozni knyszerl, ha WAR egymsrahats ll fenn egy msik utastssal. Azaz,
ha az utasts a sorrenden kvli vgrehajts sorn megelztt egy korbbit, de a korbbi utasts egyik
forrs operandusa pont megegyezik a WB-re vr eredmny regisztervel. Ilyenkor nem rhatjuk fell az
eredmnyregiszter rtkt, mert mg vannak, akik a rgi rtkre kvncsiak, de mg nem olvastk el.
A tanult egyszer 5 fokozat pipeline-hoz kpest annyi a klnbsg, hogy az ID fzis kett bomlik (DS s
IS fzisokra), valamint nincs megklnbztetett MEM fzis, a memriamveletek vgrehajtsa az EX fzisban
trtnik.
A fentiek szerint scoreboard eljrsban teht az egymsrahatsok kezelse minden esetben sznetek beiktatsval, a problms utasts vrakoztatsval trtnik, az albbiak szerint:
Feldolgozsi egymsrahats esetn az utastst nem engedjk belpni a DS fzisba,
WAW egymsrahats esetn az utastst nem engedjk belpni a DS fzisba,
RAW egymsrahats esetn az utastst nem engedjk belpni a IS fzisba,
WAR egymsrahats esetn az utastst nem engedjk belpni a WB fzisba.
Az algoritmus legfontosabb szereplje, az irnyttbla, hrom rszbl ll:
1. Az utasts llapot tbla: ez a tblzat tartja nyilvn, hogy a lehvott, de mg be nem fejezett utastsok
vgrehajtsa mely fzisban tart.
2. Regiszter llapot tbla: minden regiszterhez nyilvntartja, hogy abba mely mveleti egysg eredmnye
fog kerlni. Ha res egy bejegyzs, akkor nincs olyan folyamatban lv utasts, melynek az lenne az
eredmnyregisztere.

220

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL

3. Mveleti egysg tbla: minden mveleti egysgre az albbi informcikat troljuk:

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

14.3. SORON KVLI VGREHAJTS A GYAKORLATBAN


Ciklus:

i1:
i2:

Utasts llapot tbla


Utasts
DS
IS
c1
D0 MEM [R1]
D4 D0 * D2

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:

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
Nem
Igen
load
D0
R1

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

Mveleti egysg foglals

Load

EX
c3

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
Nem
Igen
load
D0
R1
store
Igen
R1
Igen
Nem

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

WB

D4
R1

D4

D2

EA

FP1

EB

FP1

Mveleti egysg foglals


RAW miatt ll

Load

Utasts llapot tbla


Utasts
DS
IS
c1
c2
D0 MEM [R1]
c4
c2
D4 D0 * D2

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

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

WB

c3

i1:
i2:

Egysg
Egsz ALU
Load

Mveleti egysg foglals

i3:
i4:
i5:
i6:
i7:

Ciklus:

EX

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
Nem
Igen
load
D0
R1

Utasts llapot tbla


Utasts
DS
IS
c1
c2
D0 MEM [R1]
c2
D4 D0 * D2

Store
FP ALU 1
FP ALU 2

EB

D4
R1

i1:
i2:

Egysg
Egsz ALU
Load

EA

i3:
i4:
i5:
i6:
i7:

Ciklus:

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

WB

Nem
Nem
Nem

i1:
i2:

Store
FP ALU 1
FP ALU 2

EX

D4
R1

Utasts llapot tbla


Utasts
DS
IS
c1
c2
D0 MEM [R1]
c2
D4 D0 * D2

Egysg
Egsz ALU
Load

221

EX
c3

D4
R1

c3
c4

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
+
Igen
R1
R1
Nem
store
Igen
R1
Igen
Nem

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

WB
c4

D4

D0

D2

EA

i1 vge

FP1
Egsz ALU

EB
Mveleti egysg foglals
Bejegyzs trlse
FP1

Load
D0 betltve

14.11. bra. Plda a scoreboard eljrs mkdsre, 1/3. rsz

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

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL


Ciklus:

i1:
i2:

Utasts llapot tbla


Utasts
DS
IS
c1
c2
D0 MEM [R1]
c2
c4
D4 D0 * D2

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

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

WB
c4

D4
R1

c6

EA

FP1
Egsz ALU

EB

ALU
FP1

D2

EX
c3
c5+

D4
R1

c6

FP1
Egsz ALU

WAR egymsrahats i3-mal, WB sznet


WAW egymsrahats i2-vel, DS sznet

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
+
Igen
R1
R1
Igen
load
D0
store
Igen
R1
Igen
Nem

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

WB
c4

c5

D4

D0

EA

EB

ALU
FP1

D2

i1:
i2:

Utasts llapot tbla


Utasts
DS
IS
c1
c2
D0 MEM [R1]
c2
c4
D4 D0 * D2

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

Mveleti egysg foglals


FP1

D2

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
+
Igen
R1
R1
Igen
load
D0
store
Igen
R1

i3:
i4:
i5:
i6:
i7:

Ciklus:

EB

WAW egymsrahats i2-vel, DS sznet

Utasts llapot tbla


Utasts
DS
IS
c1
c2
D0 MEM [R1]
c4
c2
D4 D0 * D2

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

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
+
Igen
R1
R1
Igen
load
D0
store
Igen
R1
Igen
Nem

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

WB
c4

c5

Utasts llapot tbla


Utasts
DS
IS
D0 MEM [R1]
c1
c2
D4 D0 * D2
c2
c4

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

WAR egymsrahats i3-mal, WB sznet

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
+
Igen
R1
R1
Igen
load
D0
store
Igen
D4
R1
Nem
Igen

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

WB
c4
c8

EA

EB
D4 ksz

ALU
FP1

Bejegyzs trlse
*

D4

D2

Load

Mveleti egysg foglals

14.12. bra. Plda a scoreboard eljrs mkdsre, 2/3. rsz

14.3.2. A Tomasulo algoritmus


Az IBM 1967-ben, a CDC6600 utn 3 vvel, arra mintegy vlaszlpsknt jelentette be az IBM 360/91-es processzort.
A processzor a konkurencia scoreboard eljrshoz kpest egy egszen j, annl sokkal hatkonyabb algoritmust
hasznlt az utastsok sorrenden kvli vgrehajtsra. Ez az algoritmus Tomasulo algoritmus nven vlt ismert,
s idvel rendkvl sikeres lett: szinte minden modern out-of-order processzor a Tomasulo algoritmus tletn

14.3. SORON KVLI VGREHAJTS A GYAKORLATBAN


Ciklus:

i1:
i2:

Utasts llapot tbla


Utasts
DS
IS
c2
c1
D0 MEM [R1]
c2
c4
D4 D0 * D2

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

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

c9
c6

c9

D4
R1

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
Nem
Igen
load
D0
R1
store
Igen
R1
D4
Nem
Igen

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+

Feldolgozsi egymsrahats a Store


egysgre, DS sznet

Utasts llapot tbla


Utasts
DS
IS
c1
c2
D0 MEM [R1]
c4
c2
D4 D0 * D2

Egysg
Egsz ALU
Load

223

EX
c3
c5+
c5

WB
c4
c8

Regiszter llapot tbla


Regiszter Mveleti egys.
D0
Load
D2

c10
c9

D4
R1

c3
c4

c8
c5

c9
c6

c5
c8

c9

c10
WB s a tle fgg DS egyszerre mehet

c10

Mveleti egysg llapot tbla


Foglalt Mv.
R
RA
RB
Nem
Igen
load
D0
R1
store
Igen
R1
D4
Nem
Igen

FP2

D4

D2

EA

EB

FP2

Bejegyzs trlse, j foglals

Load

14.13. bra. Plda a scoreboard eljrs mkdsre, 3/3. rsz


alapul. A klnbz gyrtk persze itt-ott tovbbfejlesztettk, nhny ponton kicsit mdostottk, de a mkdsi
elv 1967 ta ugyanaz.
A Tomasulo algoritmus mr hasznlja a regisztertnevezst (ott jelent meg elszr a gyakorlatban), gy a WAR
s a WAW fggsgek nem lltjk meg az utastsfeldolgozst, ellenben a scoreboard algoritmussal. A Tomasulo
algoritmus eredeti, publiklt vltozatban nem volt sorrend-visszallt buer, de a ROB-bal val kiegsztsre
ksbb tbb megolds is szletett. Ebben a fejezetben az algoritmus Intel P6 architektrban (Pentium Pro - Intel
Core i7) alkalmazott vltozatt mutatjuk be, amely szintn tartalmaz ROB-ot.
Az alkalmazott adatszerkezetek:
1. Sorrend-visszallt buer (ROB): A ROB bejegyzseket egy tblzatban troljuk, melyben kt mutatt
tartunk karban, az egyik az els, a msik az utols bejegyzsre mutat. Amikor egy j bejegyzs kerl a
ROB-ba, az utolsra mutat mutatt megnveljk, s a mutatott helyre kerl az j utasts bejegyzse.
A ROB bejegyzsek feldolgozsa, rvnyre juttatsa a sor elejrl trtnik (amikor a kapcsold utasts
az RT, kilpsi fzisba kerlt), ekkor egyel megnveljk az elsre elemre mutat mutatt. Ezzel a technikval tulajdonkppen egy cirkulris buer segtsgvel valstjuk meg a ROB FIFO adatszerkezett. Egy
bejegyzshez tartoz mezk:
V: az utasts eredmnye (egy rtk)
R: az eredmnyregiszter neve, ebbe a regiszterbe kell rni az utasts rtkt (hacsak nem Store-rl
van sz)
Addr: erre a memriacmre kell rni az utasts rtkt (ha Store-rl van sz)
IS/EX/CM: jelli, hogy az utasts feldolgozsa melyik fzisban tart. Nincs szerepe az algoritmus
mkdsben, csak illusztrcis clokat szolgl
Ready bit: =1, ha a bejegyzshez tartoz utasts vgrehajtsa befejezdtt
2. Utaststrol (RS): Az utastsok a DS fzisban az utaststrolban vrnak. Centralizlt RS-t hasznlunk,
a kvetkez mezkkel:
Egysg: az utasts ltal ignyelt mveleti egysg neve
Mvelet kdja (sszeads, kivons, stb.)
T (Target): az utasts ROB bejegyzsnek a szma, oda kell majd vgrehajts utn rni az eredmnyt

224

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL


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
bejegyzsekben szerepel, hogy azok mely ROB bejegyzsben fognak megjelenni

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.

14.3. SORON KVLI VGREHAJTS A GYAKORLATBAN


1

Ciklus:
i1:
i2:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
D0
D4 D0 * D2

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

Regiszter llapot tbla


Regiszter rtk/ROB bej.
ROB#1
D0
D2

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

ROB s RS bejegyzsek ltrehozsa

EB

Nem

Ciklus:
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
D0
D4 D0 * D2
D4
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4

Foglalt
Igen (i1)
Igen (i2)

Egysg
Load
FP

Nem

Mv.
load
*

IS
c2

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#1
D2
ROB#2
D4

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 s RS bejegyzsek ltrehozsa

ROB#1
Els forrsoperandust a ROB#1 fogja adni

Ciklus:
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
D0
D4 D0 * D2
D4
MEM [R1+16] D4
R1 R1 + 8
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4

IS
c2

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#1
D2
ROB#2
D4

CM

EX
c3

CDB
rtk (V) ROB bej.

R1

i1 EX fzisba lp, RS-bl trlve


Foglalt
Nem
Igen (i2)
Igen (i3)

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:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
[D0] D0
D4 D0 * D2
D4
MEM [R1+16] D4
R1 R1 + 8
R1
D0 MEM [R1]
D4 D0 * D2
MEM [R1+16] D4

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]

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#1
D2
ROB#2
D4
ROB#4
R1

CM
c4

EX
c3

CDB
rtk (V) ROB bej.
[D0]
ROB#1

i1 ksz, eredmnyt
kihirdeti

i1 eredmnye a ROB-ba kerl

EA

EB

ROB#1

i2 ROB#1-re vrt, most megjtt.


Ezzel vgrehajthatv vlt, IS-be lp.

ROB#2

14.14. bra. Plda a P6-ban megvalstott Tomasulo algoritmus mkdsre, 1/3.rsz

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

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL


Ciklus: 5
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
[D0]
D0
D4 D0 * D2
D4
MEM [R1+16] D4
R1 R1 + 8
R1
D0 MEM [R1]
D0
D4 D0 * D2
MEM [R1+16] D4

Foglalt
Igen (i4)
Igen (i5)

Egysg
Egsz ALU
Load

Mv.
+

Igen (i3)

Store

store

load

IS
c2
c4

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#5
D2
ROB#2
D4
ROB#4
R1

CM
c4

EX
c3
c5

c5

CDB
rtk (V) ROB bej.

i1 kilpett, ROB bejegyzse rvnyre juttathat.


DE: D0-t azta ms hasznlja (ROB#5), ezrt az
eredmnyt nem kell berni a regiszter trolba

Utaststrol (RS)
T
RA
RB
ROB#4
[R1]
ROB#5
ROB#3
[R1]

EA

EB

i2 EX fzisba lp, RS-bl trlve,


helyre jn az i5 bejegyzse

ROB#4
ROB#2

Ciklus: 6
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
[D0]
D0
D4 D0 * D2
D4
MEM [R1+16] D4
R1 R1 + 8
R1
D0 MEM [R1]
D0
D4 D0 * D2
D4
MEM [R1+16] D4

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]

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#5
D2
ROB#6
D4
ROB#4
R1

CM
c4

EA
ROB#5
ROB#4

CDB
rtk (V) ROB bej.

i4 EX fzisba lp, RS-bl trlve,


helyre jn az i6 bejegyzse

EB

ROB#2

Ciklus: 7
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
[D0]
D0 MEM [R1]
D0
D4 D0 * D2
D4
MEM [R1+16] D4
R1 R1 + 8
[R1]
R1
D0 MEM [R1]
D0
D4 D0 * D2
D4
MEM [R1+16] D4

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

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#5
D2
ROB#6
D4
ROB#4
R1

CDB
rtk (V) ROB bej.
[R1]
ROB#4

i4 ksz, eredmnyt
kihirdeti

i4 eredmnye a ROB-ba kerl

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

i5 ROB#4-re vrt, most megjtt.


Ezzel vgrehajthatv vlt, IS-be lp.

Ciklus: 8
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
[D0]
D0 MEM [R1]
D0
D4 D0 * D2
[D4] D4
MEM [R1+16] D4
R1 R1 + 8
R1
[R1]
D0
D0 MEM [R1]
D4 D0 * D2
D4
MEM [R1+16] D4

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

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#5
D2
ROB#6
D4
ROB#4
R1

EB

CDB
rtk (V) ROB bej.
[D4]
ROB#2

i5 EX fzisba lp, RS-bl trlve,


helyre jn az i7 bejegyzse

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.

14.3. SORON KVLI VGREHAJTS A GYAKORLATBAN

227

Ciklus: 9
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
[D0]
D0
D4 D0 * D2
[D4]
D4
MEM [R1+16] D4
R1 R1 + 8
[R1]
R1
D0
D0 MEM [R1]
[D0]
D4 D0 * D2
D4
MEM [R1+16] D4

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

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#5
D2
ROB#6
D4
ROB#4
R1

CM
c4
c8
c7
c9

CDB
rtk (V) ROB bej.
[D0]
ROB#5

i2 kilpett, ROB bejegyzse rvnyre juttathat.


DE: D4-t azta ms hasznlja (ROB#6), ezrt az
eredmnyt nem kell berni a regiszter trolba

EA
ROB#5

EB
ROB#6

i6 ROB#5-re vrt, most megjtt.


Ezzel vgrehajthatv vlt, IS-be lp.
i3 EX fzisba lp, RS-bl trlve

Nem

Ciklus: 10
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
[D0]
D0
[D4]
D4 D0 * D2
D4
&MEM[R1+16]
[D4]
MEM [R1+16] D4
R1 R1 + 8
[R1]
R1
D0
D0 MEM [R1]
[D0]
D4 D0 * D2
D4
MEM [R1+16] D4

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

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#5
D2
ROB#6
D4
ROB#4
R1

CM
c4
c8
c10
c7
c9

CDB
rtk (V) ROB bej.

Rendelkezsre ll a Store ut. memriacme s


az rand adat. Ha sorra kerl, rvnyre jut

EA

EB

ROB#7 ROB#4.V

ROB#6

Nem

Ciklus: 11
i1:
i2:
i3:
i4:
i5:
i6:
i7:

Sorrendvisszallt buffer (ROB)


Utasts
Addr
V
R
D0 MEM [R1]
[D0]
D0
[D4]
D4 D0 * D2
D4
&MEM[R1+16]
[D4]
MEM [R1+16] D4
R1 R1 + 8
[R1]
R1
D0
D0 MEM [R1]
[D0]
D4 D0 * D2
D4
MEM [R1+16] D4

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

Regiszter llapot tbla


Regiszter rtk/ROB bej.
D0
ROB#5
D2
ROB#6
D4
ROB#4
R1

CM
c4
c8
c10
c7
c9

CDB
rtk (V) ROB bej.

i3 kilpett, ROB bejegyzse rvnyre juttathat.


(A tnyleges memriars itt trtnik)

EB
ROB#6

Nem

14.16. bra. Plda a P6-ban megvalstott Tomasulo algoritmus mkdsre, 3/3. rsz

228

14. FEJEZET. PIPELINE UTASTSFELDOLGOZS DINAMIKUS TEMEZSSEL

15. fejezet

Szles utasts pipeline-ok


15.1. A pipeline utastsfeldolgozs tviteli sebessgnek nvelse
Az utastsfeldolgozs tviteli sebessgt, vagyis az idegysgenknt vgrehajtott utastsok szmt ktflekppen
nvelhetjk: vagy a pipeline mlysgt, vagy a szlessgt nveljk.
A pipeline mlysge gy nvelhet, hogy az utastsfeldolgozs minden fzist tovbbi rszfzisokra bontjuk.
Mivel a rszfzisok ksleltetse kisebb lesz, mint az eredeti fzisok ksleltetse volt, a ciklusid (mely a leglassabb
fzis ksleltetse) kisebbre vehet (vagy, ami ugyanezt jelenti, az rajel frekvencia nvelhet), ami idegysgenknt
tbb utasts feldolgozst teszi lehetv.
Vegyk alapul a mr tanult 5 fokozat pipeline-t, s vgjunk szt minden fzist kt rszfzisra. Feltve, hogy ez
a sztvgs kiegyenslyozott volt, vagyis a keletkezett kt rszfzis ksleltetse kzel feleakkora, mint az eredeti
fzis volt, a ciklusidt felre cskkenthetjk, ezzel (idelis krlmnyek kztt) megduplzva az idegysgenknt
feldolgozhat utastsok szmt (lsd 15.1. bra).
1. utasts

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

EX1 EX2 ME1 ME2 WB1 WB2

IF1 IF IF2

ID1

ID2

EX1 EX2 ME1 ME2 WB1 WB2

IF1 IF IF2

ID1

ID2

EX1 EX2 ME1 ME2 WB1 WB2

IF1 IF IF2

ID1

ID2

EX1 EX2 ME1 ME2 WB1 WB2

IF1 IF IF2

ID1

ID2

WB

EX1 EX2 ME1 ME2 WB1 WB2

feltltdsi id

nyeresg

15.1. bra. tviteli sebessg nvelse mlyebb pipeline-nal


A pipeline teljestmnye a futszalag szlestsvel is nvelhet. Ez azt jelenti, hogy egyszerre tbb utasts
feldolgozsa is megkezddhet egyidejleg, melyek egytt haladnak vgig a feldolgozs fzisain, mintha tbb
pipeline lenne a processzorban. Ehhez az kell, hogy az IF fzis egyszerre tbb utastst is le tudjon hvni, az
ID egy ciklusid alatt tbb utastst is kpes legyen dekdolnia, stb., s ezzel egytt termszetesen a pipeline
regiszterek szmt is tbbszrzni kell. Ha minden ciklusban m j utasts vgrehajtsa kezddik meg, m szles
pipeline-rl s m-utas vgrehajtsrl beszlnk. Szlesebb pipeline-al a ciklusid rvidtse nlkl (teht azonos
rajel frekvencin) is nvelhet az tvitel (lsd 15.2. bra).
Intuitve gy lehet elkpzelni a kt lehetsget, hogy az egyik esetben dupla sebessgre kapcsoljuk a
futszalagot, a feldolgoz egysgek szmt pedig megktszerezzk s feladatuk mennyisgt felre vesszk. A
msik esetben pedig minden feldolgoz egysget dupliklunk s a szles futszalagra egyms mg egyszerre
229

230

15. FEJEZET. SZLES UTASTS PIPELINE-OK


1. utasts

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

15.2. bra. tviteli sebessg nvelse 2-utas szuperskalr pipeline-nal


kt munkadarabot helyeznk.
Elmletileg, ha k-szorosra nveljk a pipeline mlysgt s m-szeresre a szlessgt, akkor m k-szoros
teljestmnyjavulst kapunk. Ez egy elmleti rtk, amit szmos viselkedsbeli, tervezsi ill. technolgiai tnyez
korltoz:
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 m-mel ngyzetesen n,
hiba mly a pipeline, a ciklusid nem lehet tetszlegesen rvid, rszben fogyasztsi okokbl, rszben pedig
azrt, mert a pipeline regiszterek rsa/kiolvassa zikai okokbl nem lehet tetszlegesen kicsi, s az 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.

15.2. temezs tbbutas pipeline-ban


Ahhoz, hogy az utasts pipeline szlestse tnylegesen megtrljn, vagyis a lehet legtbb utasts vgrehajtsa
tudjon minden ciklusban elkezddni, fontos, hogy az utastsfolyamban mindig legyen megfelel szm fggetlen,
vgrehajtsra ksz utasts. A fggetlen utastsok sszevlogatsra tbb megolds is ltezik: vgezheti futsi
idben maga a processzor, vagy fordtsi idben a fordtprogram is, elbbi esetben dinamikus, utbbiban statikus
temezsrl beszlnk.
A dinamikus temezs vals idben, dinamikusan vltoz krnyezetben trtnik (hiszen nem lehet elre
tudni, hogy melyik utasts mennyi ideig fog futni, mert az fgg pl. attl, hogy trtnt-e cache-hiba, laphiba,
egymsrahats, stb.). A processzor komoly erfesztseket tesz annak rdekben, hogy a ltterben lv utastsok
kzl kivlogassa azokat, amelyek vgrehajtsa egymssal prhuzamosan elkezdhet, s ezzel a mveleti egysgek
kihasznltsgt a lehet legmagasabban tartsa.
Statikus temezs esetn a fordtprogram sok terhet levesz a processzor temezjnek vllrl. Hiszen azt,
hogy a program utastsai kzl melyek azok, amik prhuzamosan vgrehajthatk, a fordtprogram is eldntheti.
Radsul sokkal hatkonyabban, hiszen egyrszt a fordtsi id nem kritikus, teht fordts kzben bven van id
jobb heurisztikkat alkalmazni az utastsok tsorrendezsre s fggetlen utastsokbl ll csoportok kpzsre,
msrszt a fordt az utastsok sokkal nagyobb krnyezetvel tud dolgozni. A processzor csak a mr letlttt

15.3. SZUPERSKALR PROCESSZOROK

231

Prhuzamosan vgrehajthat
csoportok kivlasztsa

Hozzrendels a mveleti egysgekhez

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.

15.3. Szuperskalr processzorok


A szuperskalr processzorok olyan szles pipeline-al rendelkez processzorok, melyek kpesek egyidejleg tbb
utasts vgrehajtst elkezdeni, s sajt maguk, hardver szinten kpesen az egyidej vgrehajtsra alkalmas
utastsok kijellsre. Ha a processzor egyidejleg m utasts vgrehajtst kpes elkezdeni, akkor m-utas
szuperskalr architektrrl beszlnk.
Kt megolds ltezik:
Sorrendi (in-order) szuperskalr processzorokban az utastsok vgrehajtsa szigoran a programban
megadott sorrendben kezddhet meg (pl. SUN Alpha 21164, ARM Cortex A8).
Sorrenden kvli (out-of-order) superskalr processzorok viszont az utastsokat dinamikusan trendezve
(de a program szemantikjt megtartva) prbljk elrni a szles pipeline minl jobb kihasznlst (pl. Intel
Pentium III, ARM Cortex A9).
Az in-order s az out-of-order szuperskalr processzorok kztti klnbsg jobb megrtshez vegyk az
albbi utastssorozatot:
i1:
i2:
i3:
i4:

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

15. FEJEZET. SZLES UTASTS PIPELINE-OK


rajelciklus

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.

15.3.1. In-order szuperskalr pipeline


A 15.4. bra a 12.4. fejezetben megismert 5 fokozat pipeline egyszerstett implementcijt brzolja, szuperskalr viselkeds nlkl.

Vezrl

ALU

PC
Regiszter
trol

DMEM

IMEM

15.4. bra. Klasszikus 5 fokozat pipeline - egyszerstett felpts


Ha a pipeline szlessgt 2-re akarjuk nvelni, a 15.5. brn lthat felptshez jutunk.

Vezrl

ALU

PC
Regiszter
trol

DMEM
ALU

IMEM

Vezrl

15.5. bra. Klasszikus 5 fokozat pipeline 2-utas in-order szuperskalr feldolgozssal


Az albbiakban megnzzk, hogy a szuperskalr feldolgozs megvalstsa milyen vltoztatsokat kvn a
pipeline klnbz fzisaiban.

15.3. SZUPERSKALR PROCESSZOROK

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

15. FEJEZET. SZLES UTASTS PIPELINE-OK


Ennl lnyegesen egyszerbb az implementci, ha nem tltjk ki a felszabadul helyeket, s az IF fzisban
lv m utastst csak egyszerre (mindent vagy semmit alapon) engedjk az ID fzisba lpni:
Utasts
i1:
i2: R1 MEM[R0 + 4]

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.

15.3. SZUPERSKALR PROCESSZOROK

235

15.7. bra. Az ARM Cortex-A8 processzor 2-utas in-order szuperskalr futszalagja


sszessgben elmondhat, hogy az egyes fzisokban a fentebb felmerl problmkat megoldva az in-order
szuperskalr pipeline viszonylag egyszeren megvalsthat, a mkds lnyegben megegyezik azzal, amit
a klasszikus 5 fokozat pipeline kapcsn megismertnk. A trgyalt egyszer in-order szuperskalr pipeline-t
ppgy ki lehet terjeszteni klnbz ksleltets mveleti egysgek kezelsre, mint ahogy azt az egy utas
megfeleljvel tettk.
Az ARM Cortex-A8 processzor pipeline-ja
Ebben a fejezetben megismerkednk az ARM sajt tervezs, 2005-ben bejelentett s 2008 krl elterjedt processzornak, a Cortex-A8-nak a felptsvel1 .
Az ARM Cortex-A8 egy kt-utas in-order szuperskalr futszalaggal rendelkezik (15.7. bra), amely, mindamellett, hogy a trgyalt elveket szpen demonstrlja, tartogat nhny egyedi megoldst, klnlegessget is.
Utastslehvs Az utastslehv egysg ebben a processzorban kln letet l. Folyamatosan hvogatja le az
utastsokat, spekulatv mdon, rajelenknt akr 4-et is. A lehvott utastsok az utastssorba (instruction queue)
kerlnek, melynek funkcijt tekintve semmi kze nincs a sorrenden kvli vgrehajtsnl ltott utaststrolhoz.
Az utastslehvs hrom fzisbl ll:
F0: Ez a fzis generlja a utastsszmll kvetkez rtkt reprezentl virtulis cmet. Ha az elz utasts
ugrs volt, akkor ezt a cmet az elgazsbecsl szolgltatja, ellenkez esetben a korbbi utastsszmllt
inkrementlja.
F1: A lehv egysg ebben a fzisban adja ki a cmet az utasts cache-nek. Ugr utasts esetn az
utastsszmll rtke alapjn kivlasztja a dinamikus elgazsbecslshez hasznlt adatokat.
F2: Ebben a fzisban rkezik meg az utasts cache-tl az utastssz, melyet az utastssorba kell helyezni.
Ha ugrsrl van sz, akkor az ugrsi cm becslst az F2 fzisban kldik vissza F0-nak, hogy onnan
folytathassa az utastsok lehvst (ha az F1-ben lv utasts rossz grl rkezett, akkor azt eldobja).
Az utastssor 12 ARM utasts trolsra kpes, f clja, hogy kiegyenltse az utastslehvs s a vgrehajts
sebessgnek ingadozst. Ha az utasts vgrehajtsa sorn brmi fennakads van (stall, pldul egymsrahats
miatt), akkor a lehv egysg nem ll meg, az utastssor kapacitsnak erejig folytathatja a tevkenysgt. Ha
pedig a lehv egysg akad meg (pl. elgazskor, cache hiba esetn, stb.), akkor az utastssorban mg mindig van
pr utasts, ami a problma megoldsig rszben vagy teljesen el tudja ltni a vgrehajtegysgeket feladattal.
Dekdols Feladata az gpi kd utasts rtelmezse s futtatsra elksztse, 5 ciklust is ignybe vesz. A
dekdols sorn klnleges szerepe lesz mg egy vrakozsi sornak, a pending/replay sornak is.
D0 s D1: Meghatrozsra kerl az utasts tpusa, a forrs- s eredmnyoperandusok, s a vgrehajtshoz
szksges mveleti egysg tpusa.
1

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

15. FEJEZET. SZLES UTASTS PIPELINE-OK


D2: Az utastst a pending/replay sorba teszi, illetve korbbit kivesz onnan.
D3: A statikus temezs megvalstsa. Itt kezddik a szuperskalr viselkeds. Az temez rnz a program
szerint kvetkez kt utastsra (hiszen ez egy in-order szuperskalr processzor), s ellenrzi, hogy lesz-e
egymsrahats a vgrehajtsuk sorn, illetve hogy vgrehajthatk-e egytt egyltaln. A D3 fzist 0, 1 vagy
2 utasts hagyhatja el, s miutn elhagyta, ezek az utastsok mr nem llhatnak meg tbb a vgrehajtsuk
vgig.
D4: Ellltja az ALU s a load/store egysgek szmra a megfelel vezrljeleket.

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.

15.3. SZUPERSKALR PROCESSZOROK

237

15.8. bra. Az ARM Cortex-A53 processzor 2-utas in-order szuperskalr futszalagja


Mg a Cortex-A8 kt utastst csak korltozott esetekben tudott tnylegesen egyszerre vgrehajtani, a CortexA53 sokkal megengedbb. Megduplztk a load/store, a lebegpontos s a vektor feldolgoz egysgek szmt, gy
most mr gyakorlatilag tetszleges kt egymst kvet utasts vgrehajtsa elkezdhet egyszerre, ha azok fggetlenek egymstl. A forwarding utak szmt megnveltk, gy a pipeline ritkbban ll meg adat-egymsrahats
miatt. A memriakezels is javult, a TLB nagyobb, s asszociatvabb, az id eltti betltst vgz algoritmusok
(prefetch) fejlettebbek lettek, s az elgazsbecsls is lnyegesen hatkonyabb vlt [20].

15.3.2. Out-of-order szuperskalr pipeline


A 13.7. fejezetben trgyalt, out-of-order vgrehajtsra kpes processzorokat nagyon knny szuperskalrr tenni.
Egyszeren tbb utastst kell lehvni s dekdolni egyszerre, majd az utaststrolba s a sorrend-visszallt
buerbe helyezni.
A dinamikus temezt csak annyiban kell megvltoztatni, hogy ha a precedenciagrf alapjn tbb utasts
is vgrehajthat llapotban van egyszerre, akkor a mveleti egysgek kapacitsnak erejig egyazon ciklusban
tbbet is vgrehajtsra temezhet.
Az Intel Haswell processor pipeline-ja
Az Intel 2013-ban jelentette be a Haswell mikroarchitektrt, ami a Core i7-4xxx sorozat processzorok alapja.
Futszalagja kifejezetten szles, sorrenden kvli szuperskalr felpts, nagy szm feldolgoz egysggel.
A pipeline szerkezete a 15.9. brn lthat ([28]). Mivel az x86/x64 architektra CISC lozt kvet, a
front-end nem olyan egyszer, mint az eddig ltott RISC pldkban volt. Az els problma, hogy az x86/x64
vltoz hosszsg utastskdolst kvet, az utastsok mrete 1 s 15 bjt kz esik. Az utastslehv ennek
megfelelen nem is utastsokat, hanem bjtokat hv le az utasts cache-bl, minden ciklusban 16-ot, s az
eldekdolsi sorba helyezi azokat. Az utastshossz dekdol feladata az utastshatrok megllaptsa. Az
sszetartoz bjtokat utastsokk ragasztja ssze, s az utastssorba teszi, ciklusonknt legfeljebb 6-ot. Az
utastssor a dekdolsra vr utastsokat tartalmazza, szerepe nem keverend ssze az utaststrolval. A
dekdols sorn a Haswell az x86/x64 sszetett mveleteket ler CISC utastsaibl x mret, RISC-szer mikr
utastsok sorozatt lltja el. Minden ciklusban legfeljebb 4 utastst kpes feldolgozni, de csak akkor, ha a 4
utastsbl csak az egyik ignyel komplex dekdert. Komplex dekder kell minden olyan utasts dekdolshoz,
amelybl egynl tbb mikr utasts keletkezik. Az gy ellltott mikr utastsok egy jabb sorba, a dekdolt
utasts-sorba kerlnek tovbbi feldolgozsra vrva.
A dekdolt mikr utastsok ezutn kapnak egy bejegyzst a ROB-ban, melynek kapacitsa 192. A Haswell az
regisztertnevezs cljra kln zikai regisztertrolt hasznl, nem pedig a ROB-ot, ahogy azt a 14.3.2. fejezetben
lttuk. A zikai regiszterkszlet 168 egsz s 168 vektor, ill. lebegpontos regisztert tartalmaz, a load s store
utastsok beolvasott, illetve kirand adatait (melyet a 14.3.2.fejezetben szintn a ROB trolt) egy 72 bejegyzses
Load Buer s egy 42 bejegyzses Store buer trolja. Egy ciklusban legfeljebb 4 j mikr utasts lphet a ROB-ba,
illetve a ROB legfeljebb 4 elkszlt utastst tud rvnyre juttatni (RT - retire fzis), s trlni a ROB-bl.

238

15. FEJEZET. SZLES UTASTS PIPELINE-OK

15.9. bra. Az Intel Haswell processzor front-endje s back-endje


A ROB-ba lps s a regisztertnevezs utn a mikr utasts a 60 bejegyzses, centralizlt utaststrolban
foglal helyet, amg a dinamikus temez vgrehajtsra ki nem jelli. A dinamikus temez minden ciklusban
legfeljebb 8 utasts vgrehajtst kezdheti meg, mindegyiket klnbz port fel indtja tnak. Minden port
ms s ms feldolgozegysg kszlettel rendelkezik, ezrt hiba van 8 vgrehajtsra ksz utasts, nem felttlenl
lehet azokat egyszerre elindtani. Pl. az brn is lthat, hogy egsz ALU-val csak 4 port rendelkezik, ezrt 4-nl
tbb egsz mvelet nem indulhat el egyszerre.
Az Apple Cyclone processzor pipeline-ja
A Cyclone az Apple sajt fejleszts, 64 bites ARM utastskszlettel rendelkez, out-of-order szuperskalr
processzormagja, melyet 2013-ban jelentett be. Els implementcija az Apple A7-ben, az iPhone 5s processzorban
mutatkozott be, nomtott, tovbbfejlesztett vltozatt pedig az Apple A8 tartalmazza (erre pl az iPhone 6).
A pipeline felptsrl sokig semmilyen informci nem llt rendelkezsre, egszen addig, amg az Apple
ki nem egsztette az LLVM fordtprogram-csomagot egy pipeline modellel a Cyclone-specikus optimalizls
rdekben. Ebbl a 15.10. brn lthat futszalag krvonalazdott ([37]).
Az ARM utastsok dekdolst egymssal prhuzamosan 6 dekder vgzi, s ez a 6 dekdolt utasts egyszerre
lphet be a sorrend-visszallt buerbe, melynek kapacitsa 192 (akr a Haswell). A sorrend-visszallt
buer mellet az utastsokat az utaststrolban is el kell helyezni. A Haswell-el ellenttben a Cyclone nem
centralizlt, hanem rszben elosztott utaststrolt alkalmaz, egyet az egsz mveleteknek (kapacitsa 48), egyet
a memriamveleteknek (28 bejegyzses), valamint egyet a lebegpontos s vektormveleteknek (kapacitsa 48).
A dinamikus temez nem kevesebb, mint 9 porttal rendelkezik (ez tbb mint a amennyi a Haswell-nek van!),
teht szerencss esetben 9 utasts vgrehajtst indthatja el, ha ez a 9 olyan vgrehajt egysgeket ignyel,
melyek klnbz portokon rhetk el.
A Cyclone ezt a mobil eszkzkben szokatlanul erl felptst az energiatakarkossg javtsra fordtja. Az
ers processzor ugyanis pillanatok alatt elvgzi az aktulis feladatt, majd mehet vissza aludni egy alacsony
fogyaszts llapotba.

15.4. A VLIW ARCHITEKTRA

239

15.10. bra. Az Apple Cyclone processzor pipeline-ja

15.4. A VLIW architektra


A szuperskalr processzorokkal szemben a VLIW architektra statikus temezst hasznl, vagyis az egyidejleg
vgrehajthat utastsokat a fordtprogram vlogatja ssze fordtsi idben.
A VLIW processzorok 1 utas pipeline-nal rendelkeznek, de nem utastsokon, hanem fggetlen utastsokbl
ll utastscsoportokon (VLIW) dolgoznak. Ezek az utastscsoportok egy darabban, egy egysgknt haladnak a
pipeline-ban lpsrl lpsre. A fordtprogram garantlja, hogy az egy csoportba tartoz utastsok egymstl
fggetlenek, gy prhuzamosan vgrehajthatk. Ennek megfelelen a processzor nem is ellenrzi a csoporton
belli fggsgeket. Az utastscsoporton bell az egyes utastsoknak nincs kln cme, a csoport minden
utastsa ugyanahhoz a cmhez (utastsszmllhoz) tartozik.
Az utastscsoportok (15.11. bra) rgztett szm utastst tartalmaznak. A csoporton bell minden pozcihoz
egy mveleti egysg is tartozik, teht a csoportok szerepe nem csak a fggetlen utastsok kijellse, hanem a
mveleti egysgekhez val hozzrendelse is. A nem hasznlt pozcikat NOP (No Operation) utastsok tltik ki.
Az utastscsoport annyi id alatt halad t a pipeline-on, amennyi ideig a benne lv, leghosszabb feldolgozst
ignyl utasts vgrehajtsa tart.

Egsz mv. 1

Egsz mv. 2

Mem. mv. 1

Mem mv. 2

FP mv. 1

FP mv. 2

15.11. bra. Utastscsoport a VLIW architektrban

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

15. FEJEZET. SZLES UTASTS PIPELINE-OK


Csoportokba rendezve:
Egsz 1

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).

15.5. AZ EPIC ARCHITEKTRA

241

15.5. Az EPIC architektra


Az EPIC architektra a HP s az Intel kzs kutatsi programjnak eredmnyekppen jtt ltre 1994-ben, az els
kereskedelmi forgalomba kerlt megvalstsa a 2002-ben megjelent Intel Itanium processzor volt. Az volt a
cl, hogy az utastsszint prhuzamostsi lehetsgek feldertst a fordtprogramok vgezzk, de a VLIW
korltaitl minl inkbb sikerljn megszabadulni. Az teljesen racionlis, hogy a prhuzamossg feldertst a
fordtprogramra rdemes bzni, hiszen a fordt ltal egyszerre ttekinthet nagy szm utasts alapjn jobb
dntst lehet hozni, s az emiatt esetlegesen megnvekedett fordtsi id ltalban tolerlhat. A VLIW htrnyain
gy sikerlt tllpni, hogy az utastscsoportokat az EPIC architektrban kicsit mskpp kell rtelmezni. A
VLIW rendszerekben az utastscsoportok mrete megegyezett a processzor mveleti egysgeinek szmval, s a
csoporton belli pozci mg azt a bizonyos mveleti egysget is kijellte, aminek az oda helyezett utastst vgre
kell hajtania. Az EPIC rendszerben ezeket a ktttsgeket megszntettk: az utastscsoportok egyedli szerepe,
hogy az egymssal prhuzamosan vgrehajthat utastsokat egysgbe zrja.
1. utasts

2. utasts

3. utasts

Template tpus

15.12. bra. Utastscsoport a EPIC architektrban


Egy utastscsoport az EPIC architektrban a 15.12. brn lthat mdon nz ki. Az bra szerint 3 utasts
helyezhet egy csoportba. Azt, hogy a csoportban lv utastsoknak milyen az sszettele, a fordt a template
tpus mez kitltsvel jelzi. Pl. ha M-mel jelljk a memriamveleteket, I-vel az egsz, F-fel a lebegpontos
mveleteket, B-vel pedig az elgazsokat, akkor a 3 utastst tartalmaz csoport template tpusa az utastsok
tpusnak egyms utn rsa. Pl. az MFI tpus csoportban az els utasts egy memriamvelet, a msodik
lebegpontos, a harmadik pedig egsz tpus aritmetikai mvelet. Tovbbi template tpusok lehetnek: MFI, MMI,
MII, MIB, MMF, MFB, stb., de nem felttlenl minden lehetsges kombinci megengedett. Az EPIC processzorok
gyrti a tmogatott template tpusokat elre rgztik, s a processzorcsald tovbbi generciinak megjelensekor
ezt legfeljebb bvthetik (gy megmarad a kompatibilits).
Az EPIC processzorok jellemzen in-order pipeline-nal rendelkeznek, melyben az utastscsoportok egyszerre,
egy feldolgozsi egysgknt haladnak fzisrl fzisra. Az egymsrahatsok szlelst s kezelst a hardver,
tipikusan a pipeline ID fzisa vgzi, a tanult mdszerekkel (forwarding, sznetek beiktatsa, stb.). St, a pipeline
lehet in-order szuperskalr felpts is (itt a szuperskalr viselkeds nem egyes utastsokra, hanem utastscsoportokra vonatkozik). Fontos, hogy az utastscsoport mretnek semmi kze nincs a processzorban lv
mveleti egysgek szmhoz. Attl, hogy csak 3 utasts helyezhet egy csoportba, a processzorban mg lehet
ennl sokkal tbb egysg, ekkor az egymstl fggetlen csoportokat az in-order szuperskalr pipeline-nl ltott
mdon prhuzamosan vgre lehet hajtani. Az egymstl fggetlen csoportok feldertst a fordt is tmogathatja:
a template tpus mez egyik bitje jelezheti, hogy a soron kvetkez csoport az aktulis csoporttl fggetlenl
vgrehajthat. Ezek a megoldsok lehetv teszik, hogy egy processzorra lefordtott program egy jabb, gyorsabb
s tbb mveleti egysggel rendelkez tpuson is vltoztats (jrafordts) nlkl fusson.

15.6. Hatkonysgot javt technikk statikusan temezett tbbutas


pipeline-hoz
A VLIW s EPIC architektrk hatkonysgnak kulcsa, hogy a rendelkezsre ll prhuzamos vgrehajtsi
lehetsgeket minl jobban kihasznljuk, azaz az utastscsoportok legyenek minl jobban kitltve prhuzamosan
vgrehajthat utastsokkal. A prhuzamosan vgrehajthat utastsok sszevlogatsa gyakran nem egyszer
feladat. Ebben a fejezetben nhny, a VLIW s EPIC processzorok s a hozzjuk kifejlesztett fordtprogramok
ltal alkalmazott technikt mutatunk be az utastscsoportok kitltttsgnek nvelsre.

15.6.1. Ciklusok optimalizlsa


Vegyk az albbi, teljesen kznsges pldt:
for (i=0; i<N; i++)
B[i] = A[i] + C;

242

15. FEJEZET. SZLES UTASTS PIPELINE-OK


Nzzk meg, milyen elemi mveletek trtnnek a ciklus belsejben:

for (i=0; i<N; i++) {


Load A[i]
B[i] = A[i] + C;
Store B[i]
}
Ebbl egy nav fordtprogram a kvetkez kdot generlja:
i1:
i2:
i3:
i4:
i5:
i6:

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:

15.6. HATKONYSGOT JAVT TECHNIKK STATIKUSAN TEMEZETT TBBUTAS PIPELINE-HOZ 243


for (i=0; i<N; i+=4) {
B[i] = A[i] + C;
B[i+1] = A[i+1] + C;
B[i+2] = A[i+2] + C;
B[i+3] = A[i+3] + C;
}

(Feltteleztk, hogy N oszthat 4-gyel. Ellenkez esetben a maradk mveleteket a cikluson kvlre kell
mozgatni.) Lssuk a generlt kdot:

i1: loop: D1 MEM[R1+0]


i2:
D5 D0 + D1
i3:
MEM[R2+0] D5
i4:
D2 MEM[R1+8]
i5:
D6 D0 + D2
i6:
MEM[R2+8] D6
i7:
D3 MEM[R1+16]
i8:
D7 D0 + D3
i9:
MEM[R2+16] D7
i10:
D4 MEM[R1+24]
i11:
D8 D0 + D4
i12:
MEM[R2+24] D8
i13:
R1 R1 + 32
i14:
R2 R2 + 32
i15:
JUMP loop IF R1 != R3

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:

i1: loop: D1 MEM[R1+0]


i2:
D2 MEM[R1+8]
i3:
D3 MEM[R1+16]
i4:
D4 MEM[R1+24]
i5:
R1 R1 + 32
i6:
D5 D0 + D1
i7:
D6 D0 + D2
i8:
D7 D0 + D3
i9:
D8 D0 + D4
i10:
MEM[R2+0] D5
i11:
MEM[R2+8] D6
i12:
MEM[R2+16] D7
i13:
MEM[R2+24] D8
i14:
R2 R2 + 32
i15:
JUMP loop IF R1 != R3

Az trendezett kdhoz tartoz csoportosts:

244

15. FEJEZET. SZLES UTASTS PIPELINE-OK


Egsz 1

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.

15.6. HATKONYSGOT JAVT TECHNIKK STATIKUSAN TEMEZETT TBBUTAS PIPELINE-HOZ 245


A ciklusmag utastsait gy egy csoportba tehetjk ugyan, de a ciklus egyms utni itercii kztt adatfggsg
van, ami miatt az utastscsoportok kz csupa NOP csoportokat kell elhelyezni. Az dvzt megolds tvzi a
ciklus kifejtst a szoftver pipeline-nal, gy a kvetkez megoldsra jutunk:
i1: loop: D1 MEM[R1+0]
i2:
D2 MEM[R1+8]
i3:
D3 MEM[R1+16]
i4:
D4 MEM[R1+24]
i5:
R1 R1 + 32
i6:
D5 D0 + D1
i7:
D6 D0 + D2
i8:
D7 D0 + D3
i9:
D8 D0 + D4
i10:
MEM[R2+0] D5
i11:
MEM[R2+8] D6
i12:
MEM[R2+16] D7
i13:
R2 R2 + 32
i14:
MEM[R2-8] D8
i15:
JUMP loop IF R1 != R3

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

15. FEJEZET. SZLES UTASTS PIPELINE-OK

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

Ciklus kifejts + szoftver pipeline:


FP2

Int 1

Int 2

Mem1 Mem2

FP1

FP2

rajelciklusok

Int 1

Egyms utni itercik sznei:

15.13. bra. Ciklusoptimalizls hatsa a program futsi sebessgre


A 15.13. brn jl lthat, hogy a ciklus kifejtssel megszntethet a csupa NOP-okat tartalmaz ciklusok szma.
Ha a szoftver pipeline technikt is hasznljuk, akkor a kifejtett ciklus klnbz sznekkel jelzett iterciiban
vgzett mveletek mintegy egymsra toldnak, ami a mveleti egysgek jobb kihasznlshoz vezet.
Az out-of-order szuperskalr pipeline-nal rendelkez processzorok terjedsvel ezeknek az optimalizcis
technikknak a jelentsge valamelyest cskkent, hiszen a processzor pl. a Tomasulo algoritmus segtsgvel
ugyanezt a fajta utaststrendezst hardveresen elvgzi. A hardverhez kpest a kzi (vagy a fordtprogram ltal
elvgzett) ciklusoptimalizls elnye, hogy nagyobb ciklusok esetn is alkalmazhat, a processzor ugyanis csak a
(nem tl nagy szm) lehvott utastsok krben tud az utastsok sorrendjvel jtszani. A kdgenerls sorn
alkalmazott cikluskifejts jtkony hatssal van a procedurlis egymsrahatsok szmra is, hiszen a kifejtett
ciklus kevesebb itercit tesz meg, kevesebb lesz a feltteles ugrs, az utastsok folyamatos lehvsa kevesebbszer

15.6. HATKONYSGOT JAVT TECHNIKK STATIKUSAN TEMEZETT TBBUTAS PIPELINE-HOZ 247


akad meg. A modern fordtprogramok ezeket az eljrsokat tmogatjk (gyakran manulisan kell bekapcsolni,
mint pl. a GNU C complier esetn a -funroll-loops opci megadsval).

15.6.2. Prediktumok hasznlata


A procedurlis egymsrahats, vagyis a feltteles ugr utastsok a pipeline utastsfeldolgozs hatkonysgt
rontjk, hiszen az ugrsi felttel kirtkelsig nem lehetnk biztosak benne, hogy honnan kell a tovbbi utastsokat letlteni. A problma kezelsre ltalban elgazsbecslst (branch prediction) vgeznek, a processzor
megprblja megtippelni az ugrsi felttel kimenetelt s az ugrsi cmet. Az elgazsbecsl lehet, hogy tved,
ekkor rvnytelenteni kell azokat az utastsokat, melyek vgrehajtst tvedsbl elkezdte, teht az ezekre
fecsrelt id krba veszett. Ha az elgazsbecsl el is tallja az ugrs kimenetelt s cmt, a becslsi dnts
meghozsa ltalban 1-2 rajelciklust ignyel (ezalatt a pipeline vrakoztatja az utastst s a mgtte jvket),
teht a feltteles ugrs mindenkpp egy teljestmnyt ront tnyez.
A VLIW s EPIC processzorokban egy rdekes megolds rvn lehetsg van a feltteles ugr utastsok
szmnak cskkentsre. Ezekben az architektrkban az utastsokat el lehet ltni egy extra operandussal, a
prediktumregiszterrel. A prediktumregiszterek 1 bitesek. Ha az utastshoz kapcsold prediktumregiszter
rtke 0, akkor az utastst a processzor nem hajtja vgre. Plda:
R1 R2 + 32 IF P2
Ebben az esetben a P2 prediktumregiszter rtktl fgg, hogy az sszeads vgrehajtdik-e, vagy sem.
A prediktumregisztereket sszehasonlt mveletekkel lehet belltani:
P2 R3 R5
Ha R3 kisebb vagy egyenl, mint R5, P2 rtke 1 lesz, ellenkez esetben 0.
Elgazsok feltteles ugrs nlkl
A prediktumok segtsgvel sokszor el tudjuk kerlni a feltteles ugrsokat. Nzzk az albbi pldt, amely
c-be rja a s b minimumt:
C kd:
if (a b)
c = a;
else
c = b;

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

15. FEJEZET. SZLES UTASTS PIPELINE-OK

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

15.14. bra. Ugrsok szmnak cskkentse blokkegyestssel


A 15.14. bra pldjban a sznes ngyzetek az egyszer blokkok, a nyilak pedig a vezrlstadst reprezentljk.
Az eredeti programban elszr a zld sznnel jelzett egyszer blokkot duplikljuk, az egyik pldny csak a piros,
a msik pedig a srga s barna blokkokbl rhet el. Ezutn jn a blokkegyests: a kk blokk utn a vezrls
vagy a srga, vagy a barna blokkra kerl - ezt az elgazst a mr ltott mdon, prediktumokra tmaszkodva
megszntetjk, a srga s barna blokkokbl gy egy egyestett blokkot kapunk. Az egyestett blokkban a srga s
a barna blokkhoz tartoz utastsok fggetlenek, egy utastscsoportba helyezhetk. A kapott eredmny tbb
szempontbl is elnys: egyrszt kevesebb az ugrs, gy kevesebb a procedurlis egymsrahats is. Msrszt
a blokkegyests rvn az eredetinl nagyobb blokkokat kapunk, gy a fordtprogramnak a tbb utastssal
nagyobb jtktere lesz az optimlis utasts sorrend s az optimlis utasts csoportosts kialaktshoz (nagyobb
mertsbl knnyebben tall fggetlenl vgrehajthat utastsokat).

15.6.3. Spekulatv betlts


A fordtprogramok ltal alkalmazott gyakori technika (nem csak VLIW/EPIC krnyezetben), hogy az egymssal
RAW egymsrahatsban ll utastsokat a fordt egymstl a lehet legjobban eltvoltja, hogy a korbbi
eredmnye mr kszen lljon, mire a tle fgg ksbbi utasts vgrehajtsa megkezddik. Az utastsok
eltvoltsnak gtat szabnak a feltteles ugrsok. Egy egyszer blokkon bell bizonyos fokig lehet ugyan
tologatni az utastsokat, de az egyszer blokkot hatrol feltteles ugrsok el s mg nem tolhatunk utastst,
hiszen fordtsi idben nem tudjuk az ugrs kimenetelt elre megjsolni. Teht egyszer blokkon bell clszer
lehet, egyszer blokkok kztt pedig nem tnik sszernek az utastsok mozgatsa.
spekulatv betlts nlkl:

JUMP label IF R8==0


R1 MEM [R0]
R2 R1 * R1
JUMP end
label: ...
end:

spekulatv betltssel:
...
R1 MEM [R0] / spekulatv
...
JUMP label IF R8==0
spekulatv Load vglegests
R2 R1 * R1
JUMP end
label: ...
end:

15.6. HATKONYSGOT JAVT TECHNIKK STATIKUSAN TEMEZETT TBBUTAS PIPELINE-HOZ 249


A pldban az eredeti, bal oldali kddal az a problma, hogy a Load s az aritmetikai mvelet RAW egymsrahatsban llnak egymssal, a szorzs nem kezdhet el a Load eredmnye nlkl, a pipeline egy vagy tbb ciklust
haszontalan vrakozssal knytelen tlteni. A fordt nem tudja a Load-ot az egyszer blokkon bell feljebb
tolni, hiszen pont az az egyszer blokk els utastsa, ezrt azt a feltteles ugrs el mozgatja. Ekkor a Load
spekulatvv vlik, az eredmnyt nem kell rgtn az R1-be rni, csak akkor, ha az elgazs tnyleg gy alakul,
hogy a JUMP felttele hamis. Ekkor az utasts eredeti helyn vglegesthet az utasts eredmnye (R1-be rdik
a beolvasott memriatartalom). Mivel a Load j nhny utastssal megelzi a szorzst, a szorzs haladktalanul
elkezdhet lesz, mire odar a vgrehajts. Ha a feltteles ugrs bekvetkezik (a fordt spekulcija nem jn be),
akkor a Load eredmnye eldobhat.

250

15. FEJEZET. SZLES UTASTS PIPELINE-OK

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

16. FEJEZET. ELGAZSBECSLS


egy regiszter tartalmazza. Ennek rtkt vagy a regisztertrolbl kell kiolvasni, vagy, ha ppen van olyan
vgrehajts alatt ll utasts, amelynek ez az eredmnyoperandusa, akkor annak vgrehajtst meg kell
vrni. Szubrutinbl val visszatrs esetn az ugrsi cm radsul egy lass memriamvelet eredmnye
(hiszen a stack a memriban van).
Az ugrsi felttel kirtkelse. Akr az indirekt ugrsoknl, itt is gondot jelent, hogy az ugrsi felttelben
szerepet jtsz regisztert vagy a regisztertrolbl kell venni, vagy meg kell vrni az azt elllt utasts
befejezdst.

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

Intel Core i7 Nehalem:

17

Intel Core i7 Sandy Bridge:

15

Intel Atom:

13

AMD K8 s K10:

12

Via Nano:

16

ARM Cortex A8:

13

ARM Cortex A9:

16.2. Ugrsi felttel kimenetelnek becslse


A feltteles ugrsok kimenetelt akkor lehet nagy tallati pontossggal becslni, ha azok szablyosan viselkednek.
Szerencsre a statisztikk szerint az ltalnos cl programokban az ugr utastsok tlnyom rsze valban

16.2. UGRSI FELTTEL KIMENETELNEK BECSLSE

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.

16.2.1. Egyszer llapotgp alap megoldsok


A legegyszerbb megolds, ha a processzor minden feltteles ugr utasts viselkedst egy llapotgp segtsgvel
kveti nyomon. Az llapottr egy rsze az ugrik, a msik rsze a nem ugrik dntsnek felel meg. Az egyes
llapotok azt jelentik, hogy a processzor mennyire biztos benne, hogy ugrs lesz. Menet kzben folyamatosan
kveti az ugrsok tnyleges kimenetelt, s ez alapjn frissti az utasts llapotot, ha a tnyleges kimenetel egyezik
azzal, amit tippelt, akkor a bizonyosabb dntshez tartoz, ellenkez esetben a bizonytalanabb dntshez tartoz
irnyba.
nem ugrott

nem ugrott
01

00
tnyleg ugrott

Tipp: nem lesz ugrs

nem ugrott
10

tnyleg ugrott

11
tnyleg ugrott
Tipp: lesz ugrs

16.1. bra. llapotgp elgazsbecslshez


A 16.1. brn lthat llapotgp tulajdonkppen egy 2 bites teltd szmllnak felel meg. Minden egyes
feltteles ugr utastshoz tartozik egy ilyen szmll. Ha az ugrs tnylegesen bekvetkezik, eggyel nveljk, ha
tnylegesen nem kvetkezik be, egyel cskkentjk a szmll rtkt. Ha az utasts megjelenik a pipeline-ban,
s predikcira van szksg, csak r kell nzni a hozz tartoz szmllra: ha az rtke 0 vagy 1, akkor a jsls az
lesz, hogy az ugrs nem kvetkezik be, 2 vagy 3 esetn pedig a bekvetkezsre tippelnk (binris reprezentci
esetn a szmll fels bitje lesz a predikci).
Termszetesen nem csak 2 bites szmllt lehet hasznlni elgazsbecslsre. Az 1 bites szmll esetn a
predikci mindig az ugr utasts elz kimenetele lesz. Az elgazsbecslk pontossgt szimulcis vizsglatokkal
szoktk kirtkelni: vesznek egy sor gyakran hasznlt algoritmust, lefuttatjk egy processzor szimultoron, s
a szimulci sorn knyvelik a prediktor tallatainak s az ugrsi utastsok szmnak arnyt. Egy konkrt
tanulmny (1993-bl, [12]) az 1 bites llapotgpre 89%-os, a 2 bitesre pedig 93%-os pontossgot mrt. Azt is
kimutattk, hogy 3 bites szmllval csak egszen minimlisan javul a predikci pontossga, mg 3-nl tbb bites
szmll gyakorlatilag nem hoz tovbbi javulst. A 2 bites szmllk hasznlata ezek alapjn j vlasztsnak
tnik.
Nzznk egy konkrt pldt az llapotgp alap elgazsbecsls hatkonysgra:
for (i=0; i<m; i++) {
for (j=0; j<n; j++) {
...
...
}
}
A for ciklusrl tudjuk, hogy minden j iterci eltt ellenrzi a ciklusfelttelt, s ha az nem teljesl, elhagyja a
ciklust. Egy n krt fut for ciklusban gy sszesen n + 1-szer kell kirtkelni ezt a feltteles ugrst, amely n-szer

254

16. FEJEZET. ELGAZSBECSLS

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

Tipp: nem lesz ugrs

nem ugrott

10
tnyleg ugrott

tnyleg ugrott

11
tnyleg ugrott

Tipp: lesz ugrs

16.2. bra. Elgazsbecsls ugrsi elzmny tblval


Ilyen megoldst hasznl pl. az Intel Pentium 1 processzor is, br a 2 bites szmllkat nem PHT-ban trolja,
hanem a becslt ugrsi cmekkel egytt (lsd ksbb). rdekessg, hogy ebben a processzorban a szmll logikt
hibsan megvalstottk meg, mert az ugrs tnyleges bekvetkezse esetn a 00 llapotbl nem a 01-be, hanem
az 11-be ugrott az llapotgp.

16.2. UGRSI FELTTEL KIMENETELNEK BECSLSE

255

16.2.2. Korrelc figyelembe vtele


Az llapotgp alap megoldsok sok esetben hatkonyak, de nem veszik gyelembe, hogy az ugr utastsok
kimenetele gyakran fgg a korbbi ugr utastsok kimeneteltl. Pldul ragadjunk ki egy rszletet az eqntott
nev, bool kifejezsekbl PLA programozshoz igazsgtblt pt programbl:
if (a==2)
a = 0;
if (b==2)
b = 0;
if (a!=b) {
...
...
}
Ebben a programrszletben a harmadik if ugrsi felttelnek rtkt egyes esetekben az els kt if ugrsi
felttele meghatrozza. Ha az els kt if felttele igaz volt, akkor a harmadik if felttele nem lesz igaz. Az
egyms utni feltteles ugr utastsok ezt a fajta sszefggsgt (korrelcijt) j lenne az elgazsbecsls
sorn kihasznlni.
A korrelci kihasznlsnak eszkze a globlis ugrsi elzmny regiszter (global branch history register). Ez
lnyegben egy shift regiszter, ha a processzor egy ugr utastst kirtkel, annak kimenetelt (0-t vagy 1-et)
ebbe a regiszterbe shifteli. Az addigi legmagasabb helyirtk bit termszetesen ekkor elvsz. Egy k bites globlis
ugrsi elzmny regiszter az elz k ugrs kimenetelt trolja. A predikci most is a PHT alapjn trtnik, de a
PHT most nem az egyes ugr utastsok kimenetelnek becslst tmogatja, mint eddig, hanem az egyes ugrsi
elzmnymintk esetn valszn kimenetelek becslst segti, gy a PHT-t nem az ugr utasts cme, hanem a
globlis ugrsi elzmny regiszter fogja indexelni (16.3. bra).
PHT
2k
nem ugrott

Globlis ugrsi elzmny regiszter


00
nem ugrott

nem ugrott

01
tnyleg ugrott

Tipp: nem lesz ugrs

nem ugrott

10
tnyleg ugrott

tnyleg ugrott

11
tnyleg ugrott

Tipp: lesz ugrs

16.3. bra. PHT globlis ugrsi elzmny regiszterrel


Pl. ha a globlis ugrsi elzmnyregiszter rtke pp 1100110011, s belp a pipeline-ba egy ugr utasts,
akkor a PHT 1100110011-edik (decimlisan a 819-edik) bejegyzsben l 2 bites teltd szmll tartalma dnti
el, hogy a belp ugr utasts kimenetelt hogyan becsljk. A 819-edik bejegyzs segt eldnteni, hogy a
1100110011 elzmnyek utn egy ugrs meg szokott-e valsulni, vagy sem. Valsznleg a 819-es bejegyzsben
a 00 rtket ltjuk majd, ami azt jelenti, hogy nagyon valszn, hogy a 1100110011 utn egy 0 kvetkezik.
Ha ilyen elzmnyekkel az ugrs mgis megvalsul, akkor a 819-es bejegyzst 00-rl 01-re mdostjuk, teht
elknyveljk, hogy ilyen elzmnyekkel mg mindig 0-ra tippelnk, de mr nagyobb bizonytalansggal.
Ha k bites globlis ugrsi elzmny regisztert hasznlunk, akkor 2k mret PHT esetn a regiszter kzvetlenl
indexelheti a PHT-t, hash fggvnyre nincs szksg.

16.2.3. Ktszint prediktorok


Az egyszer llapotgp alap megoldsok kizrlag az adott ugr utastsra loklis dntseket tudnak hozni. A
korrelcit is gyelembe vev, globlis ugrsi elzmny regiszterre alapozott megolds pedig csak a globlis
elzmnyek alapjn dnt, nem veszi gyelembe az egyes ugr utastsok esetleg eltr, a globlis elzmnyek
alapjn esetleg nem jl megjsolhat viselkedst. A gyelembe vett loklis/globlis informcik szerint ez a
kt eljrs a lehetsgek kt szlssges esete. Tbb lehetsg is van a loklis s globlis ugrsi informcik
kombinlsra az elgazsbecsls tallati pontossgnak nvelse rdekben.
A ktszint prediktorok az albbi kt fajta informcit hasznljk a dntshozsban:

256

16. FEJEZET. ELGAZSBECSLS


ugrsi elzmny regisztert, melyben a sorakoz bitek az ugr utastsok egyms utni kimeneteleit jelentik,
minta elzmny tblt, melynek egy eleme (pl. egy teltd szmll, lsd fentebb) megadja, hogy az eddigi
viselkeds alapjn vrhat-e ugrs.
Mindkt fle informci lehet loklis ill. globlis:
Globlis ugrsi elzmny regiszter esetn a processzor egy darab ugrsi elzmny regisztert tart karban,
melybe minden egyes ugr utasts kimenetelt beshifteli.
Loklis ugrsi elzmny regiszter esetn annyi ugrsi elzmny regiszter van, ahny ugr utasts. Minden
egyes ugr utasts mltbli kimeneteleit kln, sajt regiszterben troljuk. Azt a tblzatot, melyben
az ugr utastsok elzmnyeit troljuk, ugrsi elzmny tblnak hvjuk (BHT, branch history table). A
BHT minden bejegyzse egy ugr utasts elzmnyregisztere, melynek bitjei az ugr utasts korbbi
kimenetelei.
Globlis PHT esetn a rendszerben egyetlen tblzat ll rendelkezsre, amely az ugrsok vrhat kimenetelt
tartalmazza
Loklis PHT esetn minden utastsnak kln PHT-je van, amiben az ugrs vrhat kimenetelei vannak
klnfle krlmnyek kztt.

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

Ugrsi elzmny tbla

PHT m

nem ugrott

00
nem ugrott

nem ugrott

01
tnyleg ugrott

nem ugrott

10
tnyleg ugrott

Tipp: nem lesz ugrs

16.4. bra. Loklis ugrsi elzmny regiszter loklis PHT-vel

tnyleg ugrott

11
tnyleg ugrott

Tipp: lesz ugrs

16.2. UGRSI FELTTEL KIMENETELNEK BECSLSE

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

Tipp: nem lesz ugrs

11
tnyleg ugrott

Tipp: lesz ugrs

16.5. bra. Loklis ugrsi elzmny regiszter globlis PHT-vel


4. Globlis ugrsi elzmny tbla loklis PHT-vel: Egyetlen kzs elzmny tbla van, de PHT-ja minden
ugr utastsnak sajt van. Az utasts specikus PHT-ben kell megnzni, hogy az adott globlis elzmnyek
utn lesz-e ugrs, vagy sem (16.6. bra).
Utastsszmll

PHT hash

PHT m

Globlis ugrsi elzmny regiszter

nem ugrott

00
nem ugrott

nem ugrott

01
tnyleg ugrott

nem ugrott

10
tnyleg ugrott

Tipp: nem lesz ugrs

tnyleg ugrott

11
tnyleg ugrott

Tipp: lesz ugrs

16.6. bra. Globlis ugrsi elzmny regiszter loklis PHT-vel


A gyelembe vehet elzmnyek szmt (a mltbli ugrsok trolt kimeneteleinek szmt) meghatrozza,
hogy az elzmny regiszter s a PHT loklis-e, vagy globlis. Ha mindkett globlis, akkor sok mltbeli kimenetelt,
teht hossz idej korrelcit is gyelembe lehet venni, k = 14 hossz globlis elzmny regiszter mellett 214
mret PHT-ra van szksg, ami 2 bites szmllkat vve alapul mg csak 4 KB helyet foglal (214 2/8 = 4096
byte). Ha mindkett loklis, s egyszerre 1024 ugr utasts becslshez akarunk adatokat trolni (tipikus szm),
akkor ugyanez a helyfoglals csak k = 4 hossz elzmny regiszterrel jn ki (1024 24 2/8 byte, de trolni kell a
loklis elzmny regisztereket is, ami ezen fell mg 1024 4/8 byte).
A gshare prediktor
Az imnt sorra vetteken kvl ms mdja is van a loklis s globlis informci egyttes gyelembevtelnek.
A 16.2.1 fejezetben megismert, egyszer llapotgp alap eljrs (ami egy korrelcit gyelembe nem vev
loklis eljrs) az utastsszmllval indexelte a PHT-t. A 16.2.2 fejezetben megismert, globlis ugrsi elzmnyt
gyelembe vev eljrs a globlis ugrsi elzmny regiszterrel indexelte a PHT-t. Ahhoz, hogy az ugr utastsra
loklis s a krnyezetbl ered globlis informcikat is gyelembe tudjunk venni egyidejleg, az utastsszmll
s a globlis ugrsi elzmny regiszter egy fggvnyvel kell megindexelni a PHT-t. A gshare prediktor a kett
XOR fggvnyt alkalmazza (16.7. bra).
A gshare prediktor, a rendkvl egyszer megvalsthatsga s a kitn becslsi pontossga miatt nagy
npszersgnek rvend. Ezt az eljrst alkalmazza a Sun UltraSPARC III, IBM PowerPC 4, XBox 360 Xenon
CPU, AMD Athlon K6.

258

16. FEJEZET. ELGAZSBECSLS


PHT

Utastsszmll
nem ugrott

Hash fv.

XOR

00
nem ugrott

nem ugrott

01
tnyleg ugrott

tnyleg ugrott

Tipp: nem lesz ugrs

nem ugrott

10

tnyleg ugrott

11
tnyleg ugrott

Tipp: lesz ugrs

Globlis ugrsi elzmny regiszter

16.7. bra. A gshare prediktor


Hasonl elgazsbecsls tallhat az ARM Cortex A8 processzorokban is, 10 bites globlis elzmny regiszterrel,
amely kiegsztve az ugr utasts cmnek utols 4 bitjvel egy 4096 elem 2 bites teltd szmllkbl ll
PHT-t indexel.

16.2.4. Kombinlt megoldsok


Ahogy a korbbi fejezetek rmutattak, vannak feltteles ugr utastsok, melyek viselkedsnek elrejelzsre
a loklis, msok viselkedsnek elrejelzsre a globlis informcira alapozott elgazsbecsls sikeresebb.
Clszernek tnhet tbb elgazsbecslsi eljrst is bepteni a processzorba, s egy kivlaszt logikra bzni
annak eldntst, hogy egy adott ugr utasts elgazsbecslshez mikor melyiket alkalmazzuk.
Az agree prediktor
Az agree prediktor arra a felismersre alapul, hogy az ugr utastsok ltalban valamilyen irnyba hznak: vagy
tbbnyire ugranak, vagy tbbnyire nem ugranak. Az agree prediktorban kt elgazsbecsl eljrst kombinlnak:
Egy teljesen loklis, egyszer llapotgpre alapozott algoritmus becsli meg, hogy az ugr utasts melyik
irnyba hz (bias),
s egy globlis ugrsi elzmny regisztert alkalmaznak globlis PHT-vel annak megbecslsre, hogy az
elgazs vajon a tipikus irnyba fog-e megvalsulni (amerre ltalban hz), vagy pp ellenkezleg (agree
or disagree with the bias).
A vgs dntst a kt eljrs eredmnynek kombincija adja, az albbi igazsgtblnak megfelelen:
Loklis becsl:

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

16.3. UGRSI CM BECSLSE

259
PHT 1

Globlis ugrsi elzmny regiszter

szoksos/eltr

Becsls
PHT 2

Utastsszmll

Hash fv.

Ugrani szokott/
nem szokott

16.8. bra. Az agree prediktor

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

0/0, 1/1

0/0, 1/1, 0/1

1/0

1/0

1/0

0/1

0/1

0/1

1. prediktor dnt

2. prediktor dnt

16.9. bra. Eljrskivlaszt llapotgp a tournament prediktorban


A tournament prediktoroknl a felhasznlt kt (vagy tbb) becslsi eljrs trignyn kvl szmolni kell
azzal is, hogy az eljrskivlaszt llapotgp llapott is trolni kell. Ez a 4 llapot megolds esetn minden ugr
utastsra 2 bitet jelent.
Az Alpha 21264 processzor pontosan ilyen tournament prediktort hasznlt, 2 bites eljrskivlaszt llapotgppel. A kt becsl eljrs egyike loklis ugrsi elzmny regisztert hasznlt loklis PHT-vel, a msika pedig
globlis ugrsi elzmny regisztert globlis PHT-vel.

16.3. Ugrsi cm becslse


Ha a pipeline-ba belp egy ugr utasts (legyen az feltteles vagy felttel nlkli), azon nyomban tudni kell, hogy
hol fog folytatdni a program vgrehajtsa. Feltteles ugr utasts esetn ez azt jelenti, hogy meg kell tippelni,
hogy az ugrs be fog-e kvetkezni, vagy nem, de minden (nem csak feltteles) ugr utasts esetn tudni kell az
ugrsi cmet is. Nincs id cmszmtssal bbeldni, mert az ugrsi cmre a kvetkez ciklus elejig (teht mg az
ugr utasts dekdolsa eltt!) szksg van: onnan kell lehvni a program soron kvetkez utastst.

260

16. FEJEZET. ELGAZSBECSLS

16.3.1. Az ugrsi cm buer


Ami a szks idkeretbe belefr, az nem ms, mint az ugrsi cm kiolvassa egy kln erre a clra fenntartott
specilis cache-bl, az ugrsi cm buer-bl (branch target buer, BTB). Ebben a cache-ben tallhatk az sszerendelsek az ugr utastsok cme (utastsszmllja) mint cache tag, s a hozzjuk tartoz vrhat ugrsi
cmek kztt. Mint minden cache, ez is egy tartalom szerint cmezhet memria, mely a tag mezk egyidej
komparlsa rvn egy lpsben vagy tallatot ad az ugrsi cmmel egytt, vagy BTB hibt jelez (vagyis nincs
tallat).
A BTB szervezse brmilyen, a cache memrinl megismert szervezst kvethet, ltalban tbb utas (2 vagy 4
utas) asszociatv szervezs hasznlatos. A tartalom menedzsment clszeren a legrgebbi ugr utastst vlasztja
a fellrshoz, amikor egy j, BTB-ben mg nem szerepl ugr utasts felbukkan (LRU). Ha az ugrsi cm becslse
tvesnek bizonyul (az ugr utasts elrt a cmszmtsi fzisba, s a BTB tartalmtl klnbz ugrsi cm jtt
ki), akkor a rgi rtket a BTB-ben fellrjk.
Ha feltteles ugrsrl van sz, a BTB az ugr utasts cmn (utastsszmlljn, vagy az abbl kpzett
cache tag-en) s a becslt ugrsi cmen kvl szmos egyb, az adott ugr utastshoz tartoz, az elgazsbecslst
tmogat jrulkos informcit is tartalmazhat:
egyszer llapotgp alap elgazsbecsls esetn a teltd szmll rtkt (ltalban 2 bit),
loklis ugrsi elzmnyt hasznl elgazsbecsls esetn az adott ugr utasts ugrsi elzmnyt,
loklis PHT hasznlata esetn az adott ugr utastshoz tartoz PHT-t.
A 16.10. bra egy teljesen asszociatv szervezs BTB-t brzol, melyben az ugrsi cmmel egytt a loklis
elzmnyek is a bejegyzs rszeit kpezik.
Utastsszmll
BTB
Ugr utasts cme

Becslt ugrsi cm

Loklis elzmny

=
=
=
=
=
=
=
Becslt ugrsi cm

16.10. bra. Ugrsi cm buer teljesen asszociatv szervezssel, loklis elzmnyekkel


Nhny processzor BTB-jnek paramtereit a 16.1. tblzat foglalja ssze.
A legnagyobb kitols, ami egy BTB-vel trtnhet, az az objektumorientlt nyelvekben hasznlatos virtulis
fggvnyhvs. Ebben az esetben ugyanis ugyanaz az ugr utasts nem csak 1 cmre ugorhat, hanem tbbre,
attl fggen, hogy mi az objektum tnyleges tpusa. Mivel a BTB a klasszikus esetben csak egy ugrsi cmet tud
trolni, egy heterogn kollekci bejrsa az ugrsi cmek sorozatos tves becslsvel jrhat (mivel a BTB mindig a
legutbbi ugrsi cmet tartalmazza, de virtulis hvs esetn nem biztos, hogy a kvetkez ugrs is ugyanarra a
cmre trtnik majd).
A megolds az lehet, hogy a BTB tbb ugrsi cmet is trol, s az elzmnyek alapjn prblja meg megtippelni,
hogy ppen melyikre fog majd a program ugrani.

16.3.2. Szubrutinhvsok visszatrsi cmnek becslse


A szubrutinbl val visszatrs (RET) egy specilis ugr utasts, amelynl az ugrsi cmet a stack tetejrl
leolvasott adat hatrozza meg. (Mr amennyiben a processzor a szubrutinhvsok visszatrsi cmeit stack-ben
trolja, mint pl. az x86/x64. Ebben a fejezetben ezt felttelezzk.)
Mivel a stack a rendszermemriban helyezkedik el, kezelse meglehetsen lass, ezrt a szubrutinhvsok
visszatrsi cmt is clszer becslni. Erre a clra azonban a BTB-nl hatkonyabb adatszerkezetet is lehet

16.4. ELGAZSBECSLS-TUDATOS PROGRAMOZS

261

BTB bejegyzsek

BTB szervezs

Return stack mret

Intel Pentium 4:

4096

valsz. 8 utas asszoc.

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

ARM Cortex A8/A9:

512

2 utas asszoc.

16.1. tblzat. Nhny processzor BTB paramtere s return stack mrete


hasznlni: a return stack-et. A return stack nem ms, mint egy processzorban elhelyezett, nagy sebessg, de
kis kapacits stack. Szubrutinhvskor a visszatrsi cm nemcsak a rendszermemriban tallhat lass stack
tetejre kerl, hanem a return stack tetejre is. A szubrutin vgn, a RET utastskor az utastslehv egysg a
return stack tetejrl azonnal, mg a ciklusidn bell le tudja olvasni a visszatrsi cmet, nem kell megvrni a
lass rendszermemrit.
A return stack kis mrete miatt ez a becsls csak akkor hatkony, ha az egymsba gyazott szubrutinhvsok
szma a return stack kapacitsa alatt marad, ellenkez esetben a return stack teltdik, s csak az utols nhny, a
mretnek megfelel szm visszatrsi cmet tudja nagy sebessggel szolgltatni.
A gyakorlatban hasznlt return stack mreteket a 16.1. tblzatban lthatjuk.

16.4. Elgazsbecsls-tudatos programozs


A 10.6.2. fejezetben megnztk, hogy a memriahierarchia mkdsnek ismeretben milyen programozsi
szoksokkal, technikkkal lehet egy memria-intenzv algoritmus futsi idejt a lehet legkisebbre szortani.
Az elgazsbecsls tmakrben is addik hardvertudatos optimalizlsi lehetsg. Vannak olyan programozsi praktikk, klszablyok, melyekkel az elgazsbecsl keze al dolgozva esetenknt lnyegesen gyorsabb
futst lehet elrni, mint egy hardvert gyelmen kvl hagy implementcival.

16.4.1. Az elgazsok szmnak cskkentse


Az elgazsbecsls nem vletlenl kapott egy teljes fejezetet, minden modern processzorban kiemelt fontossg
funkci. Az elgazsok nagymrtkben ronthatjk a pipeline kihasznltsgt, klnsen ha nem szablyosan
viselkednek. A legkzenfekvbb dolog, amit ez gyben egy programoz tehet, hogy kevesebb elgazst hasznl.
Bizonyos if-then-else szerkezeteket ki lehet vltani egy jl irnyzott logikai kifejezssel. Az albbi plda egy
egsz rtkeket tartalmaz tmb 500-nl nagyobb elemeit adja ssze:
for (int i=0; i<N; i++)
if (data[i] > 500)
sum += data[i];

(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

16. FEJEZET. ELGAZSBECSLS

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.)

A kvetkez pldban a tmb min s max kz es elemeit adjuk ssze:


for (int i=0; i<N; i++)
if (min<=data[i] && data[i]<=max)
sum += data[i];

(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.)

Ebben az algoritmusban a felttelkirtkelsek szma a tmb mretvel arnyos. Ha a szveg vletlenszer


betket tartalmaz, akkor az elgazsbecsl sokat hibzik, ami lasstja a programot. Az elgazs ebben az esetben
is kivlthat. Els lpsben egy segdtmbt (lookup-table-t) ksztnk el, amely minden betre tartalmazza azt a
karaktert, amire azt ki kell cserlni. Ennek a felptse tartalmaz ugyan if-then-else szerkezetet, de csupn 256-ot,
N rtktl fggetlenl. A msodik lpsben haladunk vgig a nagy data tmbn, de akkor mr a segdtmbbl
olvassuk a cserekaraktereket, nem pedig az if-then-else segtsgvel. A vgeredmny:
for (int j=0; j<256; j++)
if (!((j>='a' && j<='z') || (j>='A' && j<='Z')))
LUT[j] = ' ';
else
LUT[j] = j;
for (int i=0; i<N; i++)
data[i] = LUT[data[i]];

(alg. 3b.)

A konkrt szmtgpeken kapott mrsi eredmnyeket a 16.2. tblzat veti ssze. Az elgazsok eliminlsa

16.4. ELGAZSBECSLS-TUDATOS PROGRAMOZS

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

16.2. tblzat. Az elgazsok cskkentsnek hatsa klnbz architektrkon, N=2048*1024

16.4.2. Az elgazsok kiszmthatbb ttele


Az elz pldban azrt kaptunk kedveztlen futsi idket az if-then-else elgazst tartalmaz algoritmusokra,
mert a tmb elemei vletlenszerek voltak, az elgazsi felttel kimenetelben az elgazsbecsl semmilyen
szablyossgot nem tudott felfedezni. Ebben a fejezetben mrsekkel szmszerstjk, hogy mennyit szmt a
kiszmthatsg a program futsi sebessge szempontjbl.
Az els pldban az ugrsok kimenetelnek a kiszmthatsgt vizsgljuk. Visszatrnk egy korbbi programrszlethez, amely egy tmb 500-nl nagyobb elemeit sszegzi:
for (int i=0; i<N; i++)
if (data[i] > 500)
sum += data[i];
A futsi idket az albbi esetekre vizsgljuk:
a tmb vletlenszer elemeket tartalmaz,
rendezett tmbre,
olyan tmbre, melynek minden elemre teljesl a felttel,
olyan tmbre, melynek egyik elemre sem teljesl a felttel,
vgl pedig a felttel teljeslsre egy szablyos mintt runk el. Ebben az esetben a szablyossgot N TN F
alakban jellemezzk, melyben periodikusan N teljesls N meghisulst kvet.
Az eredmnyek a 16.11. brn lthatk, melyen az oszlopmagassgok a vletlenszer esetre kapott futsi idkhz
relatvak. A tmb feldolgozs eltti rendezse drasztikus gyorsulst eredmnyez, legfkpp a Core i7-2600
architektrn, amely a legfejlettebb elgazsbecslvel rendelkezik. A Core i7 szemmel lthatlag mg az 1T1F
(TFTFTFTF) mintzatot is tkletesen felismeri, de a 2T2F (TTFFTTFF) mr egy kicsit lasstja a futst. A
Pentium 4 esetn kevsb szembetn a szablyos esetek kztti klnbsg, de a szablyossgot ez a processzor
is meghllja.

16.4.3. Az ugrsi cm becslhetsgnek javtsa


Most azt vizsgljuk meg, hogy az ugrsi cm kiszmthatsgnak mekkora a jelentsge. A mrshez az
objektum-orientlt programozsban nap mint nap hasznlt eszkzt, egy heterogn kollekcit hozunk ltre. Egy
olyan tmbt, mely egy A osztly 16 fle leszrmazottjt tudja trolni. Az A osztly s egy tetszleges leszrmazott
B1 dencija a kvetkez:

16. FEJEZET. ELGAZSBECSLS

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

16.11. bra. Az ugrsi felttel kiszmthatsgnak a hatsa

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.

16.4. ELGAZSBECSLS-TUDATOS PROGRAMOZS

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

16.12. bra. Az ugrsi cm kiszmthatsgnak a hatsa

266

16. FEJEZET. ELGAZSBECSLS

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.

17.1. A privilgiumi szintek fogalma


Ahhoz, hogy vdelmi szablyokat lehessen megfogalmazni, a taszkokhoz privilgiumi szinteket rendelnek a
szerint, hogy milyen jogosultsgokkal rendelkeznek. A legprivilegizltabb, vagyis a legtbb jogosultsggal
rendelkez taszkok a 0-s szinthez tartoznak, s a szintek nvekedse a jogosultsgok fokozatos korltozst
kveti. A privilgiumi szinteket gyrk formjban is szoks megjelenteni, s vdelmi gyrknek nevezni (17.1.
bra).
A privilgiumi szintek szma architektrafgg. Egy vdett opercis rendszer lehetv ttelhez 2 szint
mr elegend (a 0. szintre kerl az opercis rendszer, a legklsre pedig a felhasznli programok), de tbb
szint hasznlatnak is lehet rtelme a nomabb jogosultsgkezels rdekben. Az 1973-ban megjelent Honeywell
6180-as szmtgp 8 vdelmi szintet klnbztet meg, az x86 architektra 4-et, mg szmos tovbbi (mltbli s
l) architektra, mint az ARM, MIPS, Alpha, SPARC, Motorola 68k csupn 2-t. Azt pedig az opercis rendszere
vlogatja, hogy a rendelkezsre llk kzl hny szintet hasznl valjban. Az x86 4 vdelmi szintjbl mind a
Windows, mind a Linux opercis rendszerek jabb vltozatai csupn kettt hasznlnak: a 0-st az opercis
rendszernek, a 3-ast pedig a felhasznli programoknak.
A taszkokhoz rendelt privilgiumi szintek az albb kpessgeket befolysoljk:
Azt, hogy egy taszk milyen utastsokat hasznlhat. Minden vdelmi tmogatssal rendelkez utastskszlet architektra rendelkezik privilegizlt utastsokkal, melyet csak a magas privilgiumi szinttel
rendelkez taszkok (pl. az opercis rendszer) adhatnak ki, a felhasznli taszkok nem. Ide tartozik pl. a
laptblk kezelse is, hiszen a laptbla mdostsval egy tetszleges taszk a teljes zikai memrit rni s
olvasni tudn.
267

268

17. FEJEZET. VDELEM

17.1. bra. Vdelmi gyrk (privilgiumi szintek)


Azt, hogy egy taszk milyen memriaterleteket rhet el. Nyilvnvalan nem lenne szerencss, ha
egy felhasznli taszk betekintst kaphatna az opercis rendszer privt adatszerkezeteibe, ha ezeket rni is
kpes lenne, az a rendszer stabilitst is fenyegetn. Az ellenttes irny viszont megengedett, st, egyenesen
elkerlhetetlen ahhoz, hogy egy opercis rendszer be tudjon tlteni egy alacsonyabban privilegizlt taszkot
a memriba.
Hogy egy taszk milyen fggvnyeket hvhat meg. Az opercis rendszer bels hasznlatra sznt
fggvnyeinek meghvst clszer elrhetetlenn tenni egy alacsonyabban privilegizlt taszk szmra.
Hogy egy taszk mely perifrikat hasznlhatja. Szintn clszer megakadlyozni, hogy egy taszk a
kritikus fontossg perifrikat kzvetlenl rje el, hiszen ellenkez esetben lehetsge nylna r, hogy
tvedsbl, vagy szndkosan gy kezeljk azokat, hogy rvnytelen llapotba kerlve megbntsk a
rendszert.

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.1. Memriavdelem szegmensszervezs memriakezels esetn


Ha a hardver tmogatja a szegmensszervezst (ill. lapozott szegmentlst, lsd 9.5.2. fejezet), akkor a memriavdelem nagyon egyszeren s rugalmasan megvalsthat: minden egyes taszkot s magt az opercis rendszert
is kln-kln szegmensbe kell helyezni. A szegmensler tbla a szegmens kezdetn s hosszn kvl ugyanis
vdelmi biteket is tartalmaz, melyek megadjk, hogy a tartalmuk milyen privilgiumi szinten van. Amg egy taszk
a sajt szegmenseivel dolgozik, addig msnak nem eshet bntdsa. Azonban, ha egy taszk egy msik (vagyis
tvoli) szegmenshez kvn hozzfrni, akkor a processzor vdelmi rendszere sszehasonltja a fut taszk s a
megclzott szegmens privilgiumi szintjt, s ellenrzi, hogy megengedett-e a hozzfrs.
Az x86 architektrban a szablyok a kvetkezk (17.2. bra):
Egy taszk rhatja/olvashatja a vele megegyez, vagy nla magasabb szint (teht kevsb privilegizlt)
szegmensek adatait, tvoli cmzs segtsgvel.
Egy taszk nem frhet hozz a nla jobban privilegizlt (teht alacsonyabb szinten lv) szegmensekhez.

17.2. bra. Megengedett szegmenskzi memriamveletek


Ha a memriamvelet nem megengedett, akkor egy kivtel keletkezik, s az opercis rendszer erre a clra
beregisztrlt szubrutinja kapja meg a vezrlst. Az opercis rendszer jellemzen terminlja a taszkot, mikzben
a felhasznl fel hibt jelez (segmentation fault, protection fault, stb.)

17.2. MEMRIAVDELEM

269

17.2.2. Memriavdelem tisztn a laptblra alapozva


Szegmentls hinyban a memriavdelem megvalstsa egy kicsit ms megkzeltst ignyel. Az itt lert
mdszer messze a legnpszerbb a gyakorlatban, hiszen szmos architektrban nincs szegmentls, radsul manapsg az opercis rendszerek akkor sem hasznljk ki a szegmentls okozta lehetsgeket, ha az rendelkezsre
ll (pl. Windows s Linux x86-on).
A 9.5. fejezetben mr lttuk, hogy az opercis rendszerek kpesek minden taszk szmra kln cmteret
biztostani, ha taszkvltskor laptblt is vltanak. Ebben az esetben a taszkok ltal kiadott virtulis cmek
garantltan nem tudnak hozzfrni egy msik taszk memriaterlethez, hiszen az ahhoz tartoz keretek nincsenek
benne a laptbljban. Ez a teljes elklnts meg is oldan a tkletes memriavdelmet. A problma azonban
az, hogy az opercis rendszernek is mindig elrhetnek kell lennie a virtulis memriban, tbb okbl is:
Egy perifria brmikor megszaktst generlhat, a megszaktst lekezel szubrutinnak mindig rendelkezsre
kell llnia a virtulis memriban. Ennek specilis esete, ha a hardveres idzt generl megszaktst, hogy
ideje taszkot vltani: a taszkvltst vgz szubrutinnak, amely nem az pp fut taszk, hanem az opercis
rendszer rsze, elrhetnek kell lennie, hogy r kerlhessen a vezrls.
A taszkok idnknt hvjk az opercis rendszer szubrutinjait (n. rendszerhvsokat), pl. ha meg szeretnnek nyitni egy fjlt, krik a lenyomott billenty kdjt, stb. Ha ezek a szubrutinok nem rhet el a virtulis
cmtrben, akkor nem lehet meghvni ket, hiszen nincs cm, ahova ugrani kellene.
A mai modern opercis rendszerek ezrt minden taszk virtulis cmtert kt rszre bontjk: az als fele
(user space) a taszk hasznlatban van, a fels felre vonatkoz laptbla bejegyzseket pedig gy tltik ki, hogy
a mgtt mindig az opercis rendszer lljon (kernel space). Ekkor azonban tenni kell valamit, hogy a taszk ne
tudjon hozzfrni az immr szmra is lthatv (cmezhetv) vlt opercis rendszer terlethez. A megoldst
a laptbla bejegyzsek egy specilis bitje jelenti, amivel az adott laphoz val hozzfrst korltozni lehet. Az
x86 laptbla bejegyzseiben ezt User/Supervisor bitnek hvjk, ha egy lapra be van lltva, akkor azt csak a
legmagasabb privilgiumi szintrl lehet elrni, az illetktelen elrsi ksrlet pedig vdelmi hibt eredmnyez, amit
az opercis rendszer lekezel. Ezek a lehetsg szinte minden architektra laptbla bejegyzseiben rendelkezsre
ll (pl. az ARM Domain Access Control biteknek hvja). Az x86-on, 32 bites mdban a Windows 2 GB-ot ad a
cmtartomnybl a taszkoknak (3 GB-ra nvelhet), 64 bites mdban pedig 8 TB-ot. A Linuxnl ez paramter, a
kernel fordtsakor bellthat.

17.3. bra. A virtulis cmtartomny megosztsa a taszk s az opercis rendszer kztt


sszegzskpp, a tisztn lapozsra alapozott memriavdelem elemei:
Minden taszk virtulis cmtartomnya fel van osztva a taszk s opercis rendszer kztt.
Az opercis rendszer taszkvltskor laptblt is vlt, gy, hogy az opercis rendszerre vonatkoz laptbla
bejegyzsek ugyanazok maradjanak.
Az opercis rendszer terletre vonatkoz laptbla bejegyzsekben be kell lltani a User/Supervisor
bitet.
Ezzel megolddott a taszkok szeparlsa gy, hogy az opercis rendszer is mindig elrhet, de mgsem tud a
taszk rtani neki. Van azonban egy problma: ha az opercis rendszert elrhetetlenn tettk a taszkok szmra,
hogyan tudja a taszk meghvni annak rendszerhvsait? Ezzel foglalkozik a kvetkez fejezet.

270

17. FEJEZET. VDELEM

17.3. A vezrlstadsok ellenrzse


Egy alacsony privilgiumi szint taszknak idnknt szksge lehet egy magasabb privilgiumi szint taszk rszre
a vezrlst tadni, pldul amikor egy felhasznli program az opercis rendszer fggvnyeit (rendszerhvsait)
hvja, pl. ha ki akar rni valamit a kpernyre, meg akar nyitni egy fjlt, be akarja olvasni a legutbb lettt
billentyzet kdjt, stb.
Ennek a vezrlstadsnak azonban kontrollltnak kell lennie, nem lehet a vdett, magasan privilegizlt kdba
brhol belpni, vagy annak brmilyen fggvnyt lefuttatni.

17.3.1. Kapukra alapozott tvoli vezrlstads az x86-ban


Szegmensszervezs mellett a tvoli vezrlstads (pl. opercis rendszer hvsa) kzenfekv mdja lenne, ha csak
meg kellene adni a cl szegmenst s azon bell a cl bjtpozcit, s a processzor onnan folytatn az utastsok
vgrehajtst.
Ez azonban nem megengedett. Magasabban privilegizlt szegmens fel nem engedhet meg, hogy brhov t
lehessen adni a vezrlst, hiszen az opercis rendszer kizrlag a taszkok szmra exponlt rendszerhvsait
szeretn lthatv tenni. Msrszt alacsonyabban privilegizlt szegmensre sem lehet ugrani, hiszen az megbzhatatlanabb kdot tartalmaz, nem garantlt a sikeres visszatrs.
Az x86-ban a szegmenskzi vezrlstadsra gynevezett kapukat (gate-eket) hasznlnak (tbb fajtja is van,
call gate, task gate, trap gate, interrupt gate, a kztk lv klnbsget nem trgyaljuk). A tvoli vezrlstadsra
szolgl utastsnak egyetlen paramtere van: hnyas kapura szeretne ugrani. A kapukat a rendszermemriban
trolt ler tblzat sorolja fel, fbb mezi: a clszegmens, az azon belli bjtpozci (ezek alapjn vgrehajthat az
ugrs), valamit vdelmi informcik: legalbb hnyas szint szksges a meghvshoz. Ennek a megkzeltsnek
az a f tlete, hogy a kapukat egy felhasznli taszk nem vltoztathatja meg. Az opercis rendszer hozza ltre,
minden rendszerhvshoz egyet-egyet, s a felhasznli taszk csak annyit kzlhet a processzorral, hogy hnyas
kaput szeretn meghvni (17.4. bra).

17.4. bra. Szegmenseken tnyl tvoli vezrlstads kapukkal


(Zrjelben jegyezzk meg, hogy ez azrt nem ilyen egyszer. Tbbek kztt egy rdekes problma a stack
kezelse. Rendszerhvs esetn, ami tulajdonkppen egy fggvny, a hvsi paramterek s a loklis vltozk a
stack-be kerlnek. De kinek a stack-jbe? Ha a hv stack-jbe kerlnnek, akkor visszatrs utn a felhasznli
taszkok ltnk a rendszer stack-jkben hagyott loklis vltozit, amit esetleg rosszindulatan hasznosthatnak.
Ha az op. rendszer a sajt stack-jt hasznlja a rendszerhvskor, akkor viszont nem tudja tvenni a fggvny
paramtereit, amit a hv a sajt stack-jn keresztl szeretne tadni. A megolds: kln stack-et hasznl mindkt
fl, s tvoli hvskor a hvsi paramtereket a processzor a hv stack-jbl a hvott stack-jbe msolja.)

17.3.2. Szoftver megszaktsra alapozott rendszerhvsok


A szegmentls s a kapuk hasznlata egy jl tgondolt, rugalmas megoldst adott a klnbz szegmensekben,
klnbz privilgiumi szinteken fut taszkok kztti kommunikcira.
A gyakorlatban sokszor nincs szksg ekkora exibilitsra. A modern opercis rendszerek nem engedik meg
a klnbz felhasznli taszkok kztti vezrlstadst, gy az egsz problmakr arra a krdsre korltozdik,
hogy hogyan lehet egy felhasznli taszkbl az opercis rendszer rendszerhvsait biztonsgosan meghvni.

17.3. A VEZRLSTADSOK ELLENRZSE

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.

17.5. bra. Rendszerhvs szoftveres megszaktsra alapozva


ARM architektrban is hasonl a rendszerhvsok megvalstsa: az SWI 4 hatsra, a privilgiumi szint
megemelse utn meghvdik a system_call(), amely az utastsszbl kiolvassa, hogy a 4-es rendszerhvsra,
vagyis a sys_write() fggvnyre van szksg.
Az x86 architektrban a Pentium II processzorral megjelent kt j utasts, a sysenter s a sysexit (az
AMD esetben syscall s a sysret), melyeket kifejezetten a rendszerhvsok meghvsra s az azokbl val
visszatrsre vezettek be. Ugyangy mkdnek, mint az imnt lertak, de lnyegesen gyorsabbak, mint a szoftver
megszaktsok lekezelse. Mieltt megjelent volna ez a gyors megolds, a Windows a 0x2e-s, a Linux pedig a
0x80-as megszaktst foglalta le rendszerhvsok szmra.

272

17. FEJEZET. VDELEM

17.4. Perifrik vdelme, ill. vdelem a perifriktl


Emlkezznk r, hogy a PCI/PCI Express perifrik gyakorlatilag tetszleges memriacmre kezdemnyezhetnek
adattvitelt. Elg egy hibs eszkzmeghajt, vagy egy rosszindulat perifria, s egy DMA mvelettel tetszleges
taszk, vagy magnak az opercis rendszernek a terlete is mdosthatv vlik.
Vdelmi szablyokra van szksg annak rdekben, hogy
meg lehessen tiltani egy programnak, hogy az opercis rendszer megkerlsvel kommuniklhasson egy
perifrival,
meg lehessen tiltani egy perifrinak, hogy egy vdett memriaterletet elrjen, netalntn sszerkljon.

17.4.1. A perifrikhoz val hozzfrs szablyozsa


Memrira lekpzett perifriakezels esetn egyszer a megolds: az opercis rendszernek elrhetetlenn kell
tennie a perifrikhoz rendelt memriatartomnyt a taszkok szmra, pldul gy, hogy a laptbla bejegyzsekben
belltja a Supervisor bitet.
Szeparlt I/O utastsok esetn kt lehetsg ll rendelkezsre:
a) Az I/O utastsok privilegizltt ttelve megakadlyozhat, hogy egy felhasznli taszk brminem perifriakezelst vgezzen.
b) Minden taszkhoz meghatrozzuk, hogy mely I/O cmekhez kaphat hozzfrst. Ez egy lnyegesen engedkenyebb politika, mely lehetv teszi, hogy egyes, a rendszer szempontjbl kevsb kritikus perifrikat egy
felhasznli program kzvetlenl is el tudjon rni.
Az Intel x86 architektra mindkt megoldst tmogatja. Az aktulisan fut taszk jellemzit tartalmaz
adatszerkezetben (melyet az opercis rendszer llt ssze, s amely a rendszermemriban tallhat), szerepel
egy n. I/O bitmap mez, mely egy bitekbl ll tmb. Az i. pozcijba rt 1-es az i. I/O cm engedlyezst
jelenti az aktulis taszk szmra.
Ugyanebben az adatszerkezetben, egy msik mez segtsgvel pedig a taszk eltilthat minden perifriakezel
utaststl.

17.4.2. A perifrik memriamveleteinek korltozsa


A vdelem szemszgbl a DMA egy veszlyes mvelet, hiszen ennek sorn a perifria zikailag cmzi s ri el a
memrit, a processzor minden memriavdelmi eszkznek megkerlsvel.
A processzoron fut taszkok memria-hozzfrseit a processzorban tallhat MMU felgyeli, mely a virtulis
cmekbl a laptbla segtsgvel lltja el a zikai cmet, mikzben a jogosultsg ellenrzsre is kpes.
A perifrik memria-hozzfrseit is lehet ehhez hasonl mdon felgyelni, ehhez azonban egy j elem, az
IOMMU (I/O memory management unit) szksges. Korbban az IOMMU a processzort kiszolgl szaki hd
rsze volt, ma mr azonban a processzor s az szaki hd egy eszkzben, integrlt formban van jelen. Az IOMMU
nem egy j fogalom, a SPARC, a MIPS s az Intel Itanium architektrk rgta hasznljk, de a PC-k vilgba az
AMD hozta be 2007-ben, az Intel 2008-ban kvette (a VT-d rszeknt).

17.6. bra. DMA-val szembeni memriavdelem IOMMU-val


Az IOMMU mkdsben nagyon hasonlt az MMU-hoz. A perifrik virtulis cmekkel dolgoznak, melyeket
az IOMMU fordt zikai cmekk egy sajt laptbla segtsgvel. Ezt a laptblt is az opercis rendszer kezeli. A
laptbla bejegyzsekben tallhat vdelmi bitek lehetv teszik a zikai memria egyes rszeinek levdst a
DMA mveletekkel szemben. A memriavdelem mellett az IOMMU ms egyb szempontbl is hasznos:
A 32 bites buszt hasznl (PCI/PCI Express) eszkzk szmra lehetv vlik a 4 GB feletti cmtartomny
hasznlata
A DMA tvitelhez nincs szksg zikailag folytonos memriatartomnyra

18. fejezet

Szmpldk, feladatok a processzorok


tmakrben
18.1. Feladatok a pipeline utaststemezs tmakrben
18.1.1. Feladat
Legyen adott az albbi utasts sorozat:
i1:
i2:
i3:
i4:
i5:

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

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN


Utasts

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

18.1. FELADATOK A PIPELINE UTASTSTEMEZS TMAKRBEN

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

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN


A sznet beiktatsa azrt szksges, mert i3-nak kellene az R6 rtke, de azt az i2 csak a MEM fzis vgn, a
6. temben lltja el. Ekkor kerl be a MEM/WB regiszterbe, ahonnt az EX fzis ki tudja venni, amikor
i3-at hajtja vgre. Teht a sznet miatt i3 az 5. s a 6. temben is az ID fzisban tartzkodik, ami miatt az i4
nem tud tovbblpni az IF1-bl, vagyis a sznet t is akadlyozza. Mivel az 6. temben foglalt az IF1, az i5 is
blokkoldik, az i6 lehvsa pedig nem trtnhet meg egszen a 7. temig.

(c) Forwarding hasznlata:


i3: az EX sorn a MEM/WB regiszterbl veszi az R6 leend rtkt
i5: az EX sorn az EX/MEM regiszterbl veszi az R8 leend rtkt, s a MEM/WB-bl az R7 leend
rtkt
(d) Az temezsbl lthat, hogy pipeline-al 12 ciklus kellett a vgrehajtshoz (feltltssel s kirlssel egytt).
Pipeline nlkl:

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

Ebben az optimalizlt kdban a forwarding a kvetkez pontokon lesz szksges:


i4: az EX sorn a MEM/WB regiszterbl veszi az R6 leend rtkt
i6: az EX sorn az EX/MEM regiszterbl veszi az R8 leend rtkt, s a MEM/WB-bl az R7 leend
rtkt

18.1. FELADATOK A PIPELINE UTASTSTEMEZS TMAKRBEN

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

A D0-D5 regiszterek lebegpontos szmokat, az R0 egsz szmot trol.


A pipeline minden utasts vgrehajtst 5 rszmveletre bontja: betlti (IF), dekdolja (ID), vgrehajtja a
vonatkoz aritmetikai mveleteket, majd a vonatkoz memriamveleteket (MEM), vgl a regisztertrolba
rja az eredmnyregiszter rtkt (WB). Minden utasts mind az 5 rszmveleten tesik, fggetlenl attl, hogy
szksge van-e r. Az IF, ID, MEM s WB fzisok ksleltetse 1 rajel. Az aritmetikai mvelet lehet egsz mvelet,
mely ksleltetse 1 rajel (EX, a cmszmtst is ez az egysg vgzi), lebegpontos sszeads, melynek ksleltetse
4, itercis ideje 1 (A0, A1, A2), valamint lebegpontos szorzs, melynek ksleltetse 7, itercis ideje pedig
1 (M0, M1, M2, M3, M4). A hrom aritmetikai egysg kpes prhuzamos mkdsre, s az utastsok soron
kvli befejezsre, ha ennek semmilyen szemantikai vagy egymsrahatsbeli akadlya nincs. 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) Rendezze t az utastssorozatot gy, hogy az a lehet leggyorsabban fusson le, gyorsabban, mint eredetileg!
(d) Adja meg az trendezett utastssorozat temezst is, a sznetek oknak megjellsvel!
Megolds
(a) Az albbi adat-egymsrahatsok fordulnak el a kdban:
RAW egymsrahatsok: i1 i2, i2 i3, i1 i4
WAW egymsrahats s WAR egymsrahats nincs
(b) Az temezs az albbiak szerint alakul:
Utasts

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

i4: MEM[R0 + 12] D0


9

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

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN


Az is helyes megolds, ha az adatfggsgben lv Store mveletek nem az EX-ben, hanem az ID-ben
vrakoznak!

(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

A D0-D2 regiszterek lebegpontos szmokat, az R0 egsz szmot trol.


A pipeline minden utasts vgrehajtst 5 rszmveletre bontja: betlti (IF), dekdolja (ID), vgrehajtja a
vonatkoz aritmetikai mveleteket, majd a vonatkoz memriamveleteket (MEM), vgl a regisztertrolba
rja az eredmnyregiszter rtkt (WB). Minden utasts mind az 5 rszmveleten tesik, fggetlenl attl, hogy
szksge van-e r. Az IF, ID, MEM s WB fzisok ksleltetse 1 rajel. Az aritmetikai mvelet lehet egsz mvelet,
mely ksleltetse 1 rajel (EX, a cmszmtst is ez az egysg vgzi), lebegpontos sszeads, melynek ksleltetse
4, itercis ideje 1 (A0, A1, A2), valamint lebegpontos szorzs, melynek ksleltetse 7, itercis ideje pedig
1 (M0, M1, M2, M3, M4). A hrom aritmetikai egysg kpes prhuzamos mkdsre, s az utastsok soron
kvli befejezsre, ha ennek semmilyen szemantikai vagy egymsrahatsbeli akadlya nincs. 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
Megolds
(a) Az albbi adat-egymsrahatsok fordulnak el a kdban:
RAW egymsrahatsok: i1 i2, i3 i4

18.2. FELADATOK A REGISZTER TNEVEZS TMAKRBEN

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

18.2. Feladatok a regiszter tnevezs tmakrben


18.2.1. Feladat
Legyen adott az albbi utasts sorozat:
i1:
i2:
i3:
i4:
i5:
i6:
i7:

D1 MEM [R0+0]
D1 D0 * D1
D4 D2 / D1
D2 MEM [R1+0]
D3 D0 + D2
D4 D4 - D3
MEM [R1+16] D4

A D kezdet regiszterek lebegpontos, az R kezdeten egsz rtkeket trolnak.


(a) Rajzolja fel az utastsok percedenciagrfjt! Az leket cimkzze fel az egymsrahatsok tpusnak megfelelen
(RAW/WAR/WAW)! Ha kt utasts kztt tbb egymsrahats is van, tntesse fel mindet! Feltve, hogy
minden utasts az utaststrolban van, hny ciklus szksges az utastssorozat vgrehajtshoz egy idelis
out-of-order szuperskalr processzoron, melynek vgtelen sok feldolgozegysge van, s minden utastst
egyetlen lpsben vgrehajt?
(b) Szntesse meg a WAW s WAR adat-egymsrahatsokat regiszter tnevezs segtsgvel! A regiszter tnevezst vgezze el minden utastsra szisztematikusan! A lebegpontos zikai regisztereket jellje T0, T1, T2,
, az egsz tpus zikai regisztereket U0, U1, U2, . A regiszterlekpz tbla tartalma kezdetben:
Logikai

Fizikai regiszter

R0:
R1:
D0:
D1:
D2:
D3:
D4:

U7
U3
T6
T2
T8
T1
T11

280

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN


Ha j, szabad zikai regiszterre van szksge, vlassza a tblzatban szerepl legnagyobb sorszm utn
kvetkezt!

(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:

18.2. FELADATOK A REGISZTER TNEVEZS TMAKRBEN


Logikai
regiszter:

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

A D kezdet regiszterek lebegpontos, az R kezdeten egsz rtkeket trolnak.


(a) Rajzolja fel az utastsok percedenciagrfjt! Az leket cimkzze fel az egymsrahatsok tpusnak megfelelen
(RAW/WAR/WAW)! Ha kt utasts kztt tbb egymsrahats is van, tntesse fel mindet! Feltve, hogy
minden utasts az utaststrolban van, hny ciklus szksges az utastssorozat vgrehajtshoz egy idelis
out-of-order szuperskalr processzoron, melynek vgtelen sok feldolgozegysge van, s minden utastst
egyetlen lpsben vgrehajt?
(b) Szntesse meg a WAW s WAR adat-egymsrahatsokat regiszter tnevezs segtsgvel! A regiszter tnevezst vgezze el minden utastsra szisztematikusan! A lebegpontos zikai regisztereket jellje T0, T1, T2,
, az egsz tpus zikai regisztereket U0, U1, U2, . A regiszterlekpz tbla tartalma kezdetben:
Logikai

Fizikai regiszter

R0:
D0:
D1:
D2:
D3:
D4:
D5:

U4
T6
T2
T8
T1
T9
T10

282

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN


Ha j, szabad zikai regiszterre van szksge, vlassza a tblzatban szerepl legnagyobb sorszm utn
kvetkezt!

(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

18.3. FELADATOK A VLIW ARCHITEKTRK TMAKRBEN

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.

18.3. Feladatok a VLIW architektrk tmakrben


18.3.1. Feladat
Adott az albbi C kd:
if (a <
b =
c =
}
else {
d =
e =
}

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

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN


P1,P2
R1
R2
R3
R4

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?

18.3. FELADATOK A VLIW ARCHITEKTRK TMAKRBEN

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

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN

(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.

18.4. Feladatok az elgazsbecsls tmakrben


18.4.1. 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):

18.4. FELADATOK AZ ELGAZSBECSLS TMAKRBEN

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

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN

(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:

18.4. FELADATOK AZ ELGAZSBECSLS TMAKRBEN

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

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN


Vegyk szre tovbb, hogy a tmb aktulis elemre mutat pointer (R0) nvelse, s az ugrsi felttel
kirtkelse is prhuzamosan trtnhet, de ehhez az kell, hogy az ugrs ne R0tmb vge esetn teljesljn,
hiszen ennek kirtkelsvel prhuzamosan n R0 rtke, azaz mg az R0 rgi rtkvel szmol a felttel. A
helyes ugrsi felttel teht: R0tmb vge-8 lesz. A tmb vge - 8-at most R1 fogja trolni. Egy tovbbi
mvelet megsprolsa rdekben pedig R0-t kezdetben nem a nulladik, hanem az els elemre lltjuk.
Az utastssorozat a kvetkez lesz ({} zrjelek az egy csoportba sznt utastsokat jellik) .
i1:
D0 MEM [R0-8]
label: {i2: D0 MEM [R0], i3: D1 D1 + D0,
i4: R0 R0 + 8, i5: JUMP label IF R0R1}
i6:
D1 D1 + D0
Az i1 az elbbi, elemi mveleteket tartalmaz kd for ciklus eltti utastshoz, i6 a for ciklus utni utastshoz
tartozik. Lnyegben ezek a szoftver pipeline feltltst s kirtst szolgljk.
Az temezs:
Egsz 1

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?

18.4. FELADATOK AZ ELGAZSBECSLS TMAKRBEN

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

(b) rjuk fel az temezst a feladatban adott pipeline-al:


Utasts

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

Felrhatnnk az utastsok temezst, de felesleges. Az utastsokat sikerlt gy trendezni, hogy a RAW


fgg utastsok tvolsga nagyobb, mint a vrt operandus ellltshoz szksges id (memriamveleteknl
3, FP szorzsnl 4, FP sszeadsnl 2, int mveletnl 1 rajel). Ennek ksznheten az utastssorozat
vgrehajtsa alatt egyetlen sznet beiktatsra sem lesz szksg. 15 utastsunk van, teht a for ciklus 3
kre 15 rajelciklus alatt vgrehajtdott (vagy legalbbis 15 rajel alatt minden utasts elkezddtt majd
befejezdnek, mikzben a for ciklus kvetkez 3 krnek zajlik a vgrehajtsa). Ezzel elrtk az 5 rajel /
ciklus egy kre sebessget.
Az utastsok gyes rendezgetsvel kiderl, hogy ktszeres cikluskifejts is elegend ugyanehhez a sebessghez:

292

18. FEJEZET. SZMPLDK, FELADATOK A PROCESSZOROK TMAKRBEN


i1:
i2:
i3:
i5:
i6:
i4:
i7:
i8:
i9:
i10:

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

19. FEJEZET. SIMD FELDOLGOZS

19.2.1. A vektor adattpus s hasznlatnak elnyei


A vektorprocesszorokban a vektormveletek a vektor minden elemre vonatkoznak, vagyis egyenrtkek egy
teljes ciklussal. Hasonltsuk ssze egy egyszer algoritmust megvalstst klasszikus skalr, illetve vektorprocesszor esetn.
C program:
for (i=0; i<64; i++)
C[i] = A[i] + B[i];
Klasszikus (skalr) megvalsts:
loop:

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.2. Vektorprocesszorok felptse


A vektorprocesszorok tlnyom tbbsge kt kategriba sorolhat:
A regiszter-regiszter vektorprocesszorokban a vektorkezel utastsok operandusai (a Load-tl s a Store-tl
eltekintve) vektor regiszterek. Teht ahhoz, hogy a memriban lv vektorok kztt mveleteket tudjunk
vgezni, elbb az adatokat a memribl be kell tlteni a vektorregiszterekbe.

19.2. VEKTORPROCESSZOROK

297

A memria-memria vektorprocesszorok kzvetlenl a memriban lv adatokkal tudnak mveleteket


vgezni.
A regiszter-regiszter kialakts elnye, hogy a szmtsok operandusai s rszeredmnyei a mveleti egysgekhez kzel, a processzorban helyezkednek el, nem kell azokat minden egyes alkalommal a memribl beolvasni
ill. oda visszarni. A tovbbiakban csak a regiszter-regiszter vektorprocesszorokkal foglalkozunk, mivel a 80-as
vek ta minden kereskedelmi forgalomban kaphat vektor processzor ilyen felpts.
A vektorprocesszorok felptst s fbb sszetevit a 19.1. bra brzolja.

Szorz

Memria

sszead
Vektor regiszterek
Oszt

memriasn

Vektor
Load/Store

Logikai

FP ALU
Cache

Skalr regiszterek
Int ALU

19.1. bra. Vektorprocesszorok felptse


Az brn a skalr s a vektor szmtsok rszre kln regiszterek s mveleti egysgek llnak rendelkezsre.
Vannak olyan vektorprocesszorok is, melyben a skalr mveleteket is a vektor mveleti egysgek vgzik el. A
vektorregiszterek mrete x, tipikusan 64 s 4096 kz esik. A memriban trolt skalr s vektor adatok gyors
elrse klnbz mdon biztostott:
A skalr adatok szmra egy cache memria ll rendelkezsre.
Vektorokat nem trolnak a cache memriban, de ez nem jelenti azt, hogy elrsk lass lenne, egyszeren
csak ms technikval, a vektorok memriabeli szablyos elhelyezkedsnek kihasznlsval, s a memria
specilis kialaktsval teszik gyorss a memriamveleteket.

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

19. FEJEZET. SIMD FELDOLGOZS


Bank
rajel

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

Ellenrizzk, hogy valamelyik operandus nulla-e,


a karakterisztikkat sszeadjuk,
a mantisszkat sszeszorozzuk,
az eredmny eljelbitjt ellltjuk,
az eredmnyt a szabvny szerinti normlalakra hozzuk s a trolsi pontossg ismeretben csonkoljuk.
Termszetesen ennl tbb fzisra is bonthatjuk a mveleteket, ha ezek kzl valamelyik lpst tovbb bontjuk.
A vektor mveleti egysgek a hozzjuk rendelt vektorelemek feldolgozst tlapoltan vgezhetik: pldul a szorz,
amg az egyik elemre mr az utols fzist vgzi, a kvetkez elemre ezzel egy idben ellltja az eljelbitet,
mikzben egy harmadik elemre ppen a mantisszkat szorozza, stb. A kvetkez tblzat a V2=V0+V1 mvelet
vgrehajtst mutatja be, 4 fzis sszead pipeline-t s 8 elem vektorokat felttelezve:

V2[0] V0[0] + V1[0]


V2[1] V0[1] + V1[1]

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

V2[2] V0[2] + V1[2]


V2[3] V0[3] + V1[3]
V2[4] V0[4] + V1[4]

V2[5] V0[5] + V1[5]

V2[6] V0[6] + V1[6]

V2[7] V0[7] + V1[7]

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):

V2[0] V0[0] + V1[0]


V2[1] V0[1] + V1[1]
V2[2] V0[2] + V1[2]
V2[3] V0[3] + V1[3]
V2[4] V0[4] + V1[4]
V2[5] V0[5] + V1[5]
V2[6] V0[6] + V1[6]
V2[7] V0[7] + V1[7]

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.

19. FEJEZET. SIMD FELDOLGOZS

Skalr ALU+reg.

Vezrls

ICache

300

Load/Store egysgek
ALU egysgek (szorz nlkl)
Vektor regiszterek

ALU egysgek (szorzval)

19.2. bra. A T0 vektorprocesszor felptse

19.3. bra. A NEC SX-9 vektorprocesszor felptse

19.2.3. Vektorprocesszorok jellegzetes megoldsai


Strip-mining
A vektorprocesszorok vektorregisztereinek mrete hardveresen kttt, ez a Maximum Vector Length (MVL).
A gyakorlati problmk megoldsa sorn elvtve fordul el, hogy ez a kttt mret pont megegyezik azzal a
vektormrettel, amire ppen a szmts sorn szksg van. Ha az MVL-nl kisebb vektorokkal szeretnnk dolgozni,
akkor be kell lltani a vektormret regisztert (Vector Length Register, VLR) a kvnt rtkre. A VLR meghatrozza,
hogy a tovbbi mveleteket a vektorregiszter hny elemre kell elvgezni. Ha a VLR sokkal kisebb, mint az MVL,
rvidebb futsi idkre szmthatunk.
A msik eset, ha az MVL-nl nagyobb vektorokkal szeretnnk mveleteket vgezni. Ebben az esetben a nagy
vektorainkat MVL mretekre kell szeletelni, s ezeken egyenknt elvgezni a kvnt mveleteket. Ezt az eljrst
hvjk strip-mining-nak.
Az albbi pldban N mret vektorokat adunk ssze, ahol N futsi idben derl ki (feltesszk, hogy rtkt az
R0 regiszter tartalmazza). Ekkor a fordt az albbi C kdbl a kvetkez vektorizlt kdot lltja el, strip-mining
alkalmazsval:
C program:
for (i=0; i<N; i++)
C[i] = A[i] + B[i];
Vektorizlva:
VLR R0 % MVL

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

19.4. bra. Strip-mining vektorsszeads

Vektormveletek feltteles vgrehajtsa


A legtbb vektorprocesszor rendelkezik egy maszk regiszterrel, amely logikai (1 bites) elemekbl ll, s meghatrozza, hogy a vektormveleteket a vektorregiszterek mely elemeire kell elvgezni. A maszk regiszter kzvetlenl,
vagy vektor sszehasonlt utastsokkal llthat be. Plda (kezdetben az A vektor mutatja R0-ban, B vektor
R1-ben, C vektor R2-ben van):
C program:
for (i=0; i<N; i++)
if (B[i]>0)
C[i] = A[i] / B[i];
Vektorprocesszorral:
V1 MEM[R1]
MASK V1>0
V0 MEM[R0]
V2 V0 / V1
MEM[R2] V2
Belltott maszk regiszter esetn a vektormveletek a processzor fejlettsgnek fggvnyben ktflekppen
valsthatk meg:
1. Egyszer implementci: A vektor ALU a mveleteket a vektor minden elemre vgrehajtja, de a maszk
ltal letiltott elemeket nem rja vissza az eredmnyt trol vektorregiszterbe.
2. Hatkony implementci: A vektor Load/Store egysg s a vektor ALU a maszk ltal letiltott elemeket
kihagyja a memria- ill. az aritmetikai mveletek vgrehajtsa sorn. A fenti pldban a B vektor beolvassa teljes hosszban megtrtnik (a V1 regiszterbe), ez alapjn a vektor sszehasonlt utasts ellltja a

302

19. FEJEZET. SIMD FELDOLGOZS


maszkot, majd ezutn az sszes tbbi mvelet mr csak a maszk ltal engedlyezett elemekre fog vgrehajtdni. Teht a 3. sorban a letiltott elemeket mr eleve be sem tlti a memribl, az osztsnl ezeket
eleve kihagyja, s a Store is csak az engedlyezett elemeket rja vissza a memriba. Ez a megolds nyilvn
jobban kihasznlja az erforrsokat, s gyorsabb vgrehajtsi idt eredmnyez.

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:

19.3. SIMD UTASTSKSZLET KIEGSZTSEK

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

19.3. SIMD utastskszlet kiegsztsek


A vektor utastsok nem csak professzionlis clokra, szuperszmtgpeken, hanem otthoni, multimdis clokra
is hasznosak lehetnek. Ennek megfelelen az utbbi kt vtizedben az ltalnos cl processzorokat is felruhztk
vektor feldolgoz kpessgekkel, vektor regiszterek s az ezeken operl vektor utastsok bevezetsvel. Ezek a
kpessgek persze eltrplnek a vektorprocesszorok kpessgei mellett:
nagyon kicsi a vektormret (a legnagyobb, ltalnos cl processzorban hasznlatos vektor regiszter 256
bites, 2-16 elemmel),
nincs VLR,
nincs maszk regiszter,
a mvelet lncolst nem tmogatjk,
nincs adatpipeline, a feldolgozs a mveleti egysgek tbbszrzsvel trtnik (annyi mveleti egysg
kell, amekkora a vektormret).
Mindezek ellenre ezek a kis mret vektorok s a hozzjuk kapcsold utastsok is j szolglatot tesznek,
jelentsen gyorstva nhny specilis, de npszer alkalmazst:
Kpfeldolgozsi feladatokban a kppontok ltalban 4 komponensre bonthatk (piros, zld, kk, alfa), gy
4 elem vektorokban trolhatk, rajtuk vektorutastsokkal mveletek vgezhetk. (Plda: fnyessg,
kontraszt, vagy az opercis rendszer grakus interfsznek megjelentsre, compositing, stb.)

304

19. FEJEZET. SIMD FELDOLGOZS


3D grakai alkalmazsokban s szmtgpes jtkokban a 3 dimenzis vektorokat homogn koordintarendszerben 4 koordinta rja le, gy a koordinta transzformcikat ezekkel az egyszer vektorutastsokkal
hatkonyan el lehet vgezni.
Szmos egyszer tudomnyos alapfeladat jl vektorizlhat (pl. lineris egyenletek megoldsa, stb.).
A vektorkezel utastsok az albbi kategrikba sorolhatk:
Vektor-vektor mveletek:
Inter-vektor mveletek: vektor operandusokon vgeznek elemenknt aritmetikai-, bitenknti-, logikai-,
sszehasonlt- mveleteket. Pl. elemenknti sszeads, szorzs, bitenknti S, min/max, sqrt, stb. Az
inter-vektor mveleteket minden vektor utastskszlet kiegszts tmogatja.
Intra-vektor mveletek: egyetlen vektor elemein vgez az elemek kztt rtelmezett mveletet. Pl. a
vektor elemeinek sszeadsa, sszeszorzsa, stb.
Vektorok elemek trendezse (shuing)
Skalr-vektor mveletek: egy vektor minden elemvel s egy skalrral vgzett mveletek. Pl. egy vektor
minden elemnek megszorzsa egy skalrral, stb.
Vektor load/store mveletek: a memria s a vektorregiszterek kztti adatmozgatsra szolglnak.

A legnpszerbb, manapsg hasznlatos vektor utastskszlet kiegsztsek tulajdonsgait foglalja ssze az


albbi tblzat:
Vektor kieg.

Utastskszlet

#Vektorreg.

Vektorhossz

Elemek tpusa

MMX

x86

64 bit

8x8, 4x16, 2x32 bit integer

3DNow

x86

64 bit

2x32 bit oat

SSE

x86/x64

128 bit

4x32 bit oat

SSE2-4

x86/x64

128 bit

16x8, 8x16, 2x32 bit integer, 4x32, 2x64 bit oat

AVX

x86/x64

16

256 bit

8x32, 4x64 bit oat

AltiVec

Power

32

128 bit

16x8, 8x16, 4x32 bit integer, 4x32 bit oat

NEON

ARM

32/16

64/128 bit

8x8, 4x16, 2x32 bit integer, 2x32 bit oat

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;

srcR++; srcG++; srcB++;


dstR++; dstG++; dstB++;

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.

Intel Core i7-2600

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.1. tblzat. Az SIMD utastsokkal elrhet gyorsuls

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

19. FEJEZET. SIMD FELDOLGOZS

#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 =

for (i=0; i<height*width; i+=4) {


r1 = vld1q_f32 (srcR);
r0 = vmulq_f32 (r1, r1);

i=0; i<height*width; i+=4) {


_mm_load_ps (srcR);
r1;
_mm_mul_ps (r0, r1);

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);

vst1q_f32 (dstB, r3);

_mm_store_ps (dstB, r3);


srcR+=4; srcG+=4; srcB+=4;
dstR+=4; dstG+=4; dstB+=4;

(r1,
(r1,
(r1,
(r1,
(r1,

vst1q_f32 (dstG, r2);

_mm_store_ps (dstG, r2);


r3
r3
r3
r3
r3

vsubq_f32
vmulq_f32
vaddq_f32
vminq_f32
vmaxq_f32

vst1q_f32 (dstR, r1);

_mm_store_ps (dstR, r1);


r2
r2
r2
r2
r2

=
=
=
=
=

srcR+=4; srcG+=4; srcB+=4;


dstR+=4; dstG+=4; dstB+=4;

19.5. bra. Sznteltettsg nvelse SIMD utastskszlettel

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

19.6. bra. Tmbprocesszor blokksmja


ltott maszkolsos technikt: minden feldolgozegysgben el kell helyezni egy felttelregisztert. Az egyes
feldolgozegysgekben az utasts tnyleges vgrehajtsa vagy kihagysa a felttelregiszter llsnak fggvnye.
A felttelregiszter tartalmt az elzleg vgrehajtott utastsok eredmnye mdostja.
Vegyk szre, hogy ha a feldolgozegysgek kzvetlen sszekapcsolst nem engedjk meg, egy egyszer
vektorprocesszort kapunk. Ksbb ltni fogjuk, hogy a hatkonysg szempontjbl pont az lesz kulcsfontossg,
hogy a feldolgozegysgek megfelel struktra szerint ssze vannak kapcsolva, s egymssal adatot tudnak
cserlni.
Ms s ms feladatok a feldolgozegysgek ms s ms sszektttsgt ignylik, ezrt a struktra rugalmasabb ttele rdekben az sszekttetseket clszer tkongurlhatv tenni.

19.4.2. Szisztolikus s hullmfront tmbprocesszorok


A tmbprocesszorok klasszikus vltozatnak a hatkony megvalstst tbb tnyez is gtolja, klnsen ha a
feldolgozegysget szma nagyon nagy. Az egyik problmt az utastsok zenetszrson alapul terjesztse
okozza. Az elrhet mkdsi sebessget korltozza, hogy az utastsoknak egy ciklusid alatt a tmbprocesszor
egy pontjbl, a vezrlegysgbl, minden egyes feldolgozegysgbe el kell jutnia. A tvoli feldolgozegysgekkel val adatcsere pedig nemcsak sokig tart, de fogyasztsi s termikus vonzata is van. A msik, hatkony
megvalstst gtl tnyez, ha a feldolgozegysgek sszektttsge bonyolult, illetve ha egymstl tvoli feldolgozegysgek is ssze vannak ktve egymssal. Ebben az esetben is a hossz jelutak jelentik a gondot (ksleltets,
fogyaszts, melegeds).
A felmerlt problmk megoldsra tbb, specilis tmbprocesszor struktrt is bevezettek.
Szisztolikus tmbprocesszorok
A szisztolikus tmbprocesszorok olyan specilis tmbprocesszorok, melyek a kvetkez tulajdonsgokkal brnak:
a feldolgozegysgek kizrlag a legkzelebbi szomszdaikkal vannak sszektve,
a feldolgozegysgek kztti kommunikci teljesen szinkronizlt (kzs rajel hajtja),
a tmb csak a szlein kapcsoldik a klvilghoz, azaz csak a szleken lehet inputot beadni, ill. a szleken
jelenik meg az output,
nincs kzponti vezrlegysg: minden feldolgozegysg minden rajelciklusban ugyanazt a mveletet
vgzi.
A szisztolikus tmbprocesszorok feldolgozegysgei minden egyes rajelciklusban veszik a szomszdaiktl
rkez bemeneteket, elvgeznek rajta valamilyen mveletet, s az eredmnyt tovbbtjk ms szomszdaik fel.
Ennek a kialaktsnak a kvetkez elnys tulajdonsgai vannak:
Mivel minden feldolgozegysg csak a legkzelebbi szomszdaival van sszektve, rendkvl rvidek
lesznek a jelutak. Emiatt:

308

19. FEJEZET. SIMD FELDOLGOZS


kedvezbb a fogyaszts,
s a kisebb jeltviteli ksleltetsek miatt magasabb rajel frekvencia rhet el.
Az integrlt ramkrk gyrtstechnolgijnak egyik sajtossga, hogy a kis mret ismtld mintzatokat tartalmaz szilciumszeletek ellltsa nagyon hatkony (hamar bevezethet a gyrts s kicsi a
selejt-arny).
Ez a fajta struktra knnyen bvthet, hiszen j feldolgozegysgek hozzadsakor azokat csak a tmb
szlhez kell csatlakoztatni, bvtskor a tmb belseje nem vltozik.

Nhny tipikus (gyakorlatban hasznos algoritmusokhoz szksges) sszektttsgi struktrt mutat be a 19.7.
bra.

19.7. bra. Tipikus szisztolikus tmbprocesszor struktrk

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.3. Szisztolikus tmbprocesszorok tervezse


Az erre alkalmas algoritmusok szisztolikus tmbprocesszoron val megvalstsra egy tbb-kevsb mechanikus
eljrst dolgoztak ki a 80-as vekben. Ebben a fejezetben egy pldn keresztl mutatjuk be ezt az eljrst
(Megjegyezzk, hogy az itt s a tovbbiakban lertak nem csak a szisztolikus tmbprocesszorokra rvnyesek,
hanem a hullmfront tmbprocesszorokra is.)
A plda algoritmus a vektor-mtrix szorzs, melynek sorn egy NxM-es mtrixot szorzunk meg egy N hossz
vektorral, jobbrl. Az eredmny egy M hossz vektor lesz:
for ( int i=0; i<M; i++) {
C[i] = 0;
for ( int j=0; j<N; j++)
C[i] = C[i] + A[i][j] * B[j];
}

19.4. TMBPROCESSZOROK

309

Egy hagyomnyos, szekvencilis processzoron ez az algoritmus N M lpst vesz ignybe.


A teljes fggsgi grf
A fggsgi grf az algoritmus mveleteinek egymstl val fggst rja le. A szisztolikus tmbprocesszor
prhuzamos feldolgozst vgez (a feldolgozegysg egymssal prhuzamosan mkdnek), ezrt fontos felderteni,
hogy az algoritmus mely lpsei fggetlenek egymstl, vagyis mely mveleteket lehet egymssal prhuzamosan
elvgezni.
rezzk, hogy a pldaknt felhozott mtrix-vektor szorzs bizonyos mveletei prhuzamosthatk (pl. az
eredmny vektor minden elemt egymssal prhuzamosan szmolhatjuk), de mivel szisztematikus (gp ltal
vgezhet) eljrst keresnk a prhuzamosthatsg felfedsre, erre a kvetkeztetsre a programkd alapjn kell
jutnunk. Sajnos a pldban van egy nyelvi megolds, ami nehezti ezt a munkt: a C[i] = C[i] + ... sorrl
van sz. A C[i] vltoznak pusztn memriatakarkossgi okokbl adunk tbbszr rtket. Ez bizonyos clokra
teljesen racionlis, de az ilyen tbbszrs hozzrendels megnehezti a prhuzamosthatsg feldertst, elrejti az
algoritmus termszett. Ezrt a programot tfogalmazzuk gy, hogy csak egyszeres hozzrendelst engednk meg:
for ( int i=0; i<M; i++) {
D[i][0] = 0;
for ( int j=0; j<N; j++)
D[i][j+1] = D[i][j] + A[i][j] * B[j];
C[i] = D[i][N];
}
(Megjegyezzk, hogy a prhuzamossgot automatikusan tmogat programozsi nyelvek mind egyszeres
hozzrendelsek, azaz egy vltoznak csak egyetlenegyszer lehet rtket adni. Ilyenek pldul a funkcionlis
nyelvek: F#, ML, stb.)
Ez az tfogalmazott programkd tulajdonkppen az albbi rekurzv eljrst valstja meg:
Di,j+1 = Di,j + Ai,j Bj , ahol Di,0 = 0, s Ci = Di,N .
A teljes fggsgi grf a 19.8. brn lthat. A grf csompontjai a rekurzvan szmolt mennyisgnek, most
a Di,j -nek felelnek meg. Az irnytott lek jelzik a fggsgi viszonyokat. Ahogy az brn is ltszik, a plda
algoritmus 2 dimenzis (N M-es) indextrben mozog.
C0

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

19.8. bra. A teljes fggsgi grf

A lokalizlt fggsgi grf


A teljes fggsgi grf tartalmazhat olyan megoldsokat, melyek a tmbprocesszoros megvalstst megneheztik.
Ebben a pldban a Bj bemenet okoz gondot, mert ettl a bemenettl a fggsgi grfban egyidejleg tbb
csompont is fgg. Az algoritmusok tmbprocesszorra val lekpzshez .n.lokalizlt fggsgi grf ra van
szksg, melyben fggsgek csak a szomszdos csompontok kztt vannak. Ehhez a mr eddig is rekurzv
algoritmusunkat loklisan rekurzvv kell alaktani:

310

19. FEJEZET. SIMD FELDOLGOZS

for ( int i=0; i<M; i++) {


D[i][0] = 0;
for ( int j=0; j<N; j++) {
B[i+1][j] = B[i][j];
D[i][j+1] = D[i][j] + A[i][j] * B[i][j];
}
C[i] = D[i][N];
}
(ahol kezdetben B[0][j] = B[j]).
A lokalizlt algoritmussal a 19.9. brn lthat loklis fggsgi grfot kapjuk. Ebben a fggsgi grfban
tnyleg csak az egymssal szomszdos csompontok vannak sszektve. Ezt a loklis fggsgi grfot szoks
egyszerstve brzolni gy, hogy amit csak lehet, sszevonunk. Az egyszerstett brn most pl. a (1,2)-mal
jelzett csompontot a B1,2 , a D1,3 , s az A1,2 csompontok sszevonsval kaptuk meg.
C0
B2

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

19.9. bra. A loklis fggsgi grf s az egyszerstett formja

Kzvetlen lekpzs szisztolikus tmbprocesszorra


A loklis fggsgi grf akr kzvetlenl is lekpezhet szisztolikus tmbprocesszorra gy, hogy annak minden
csompontjt egy-egy kln feldolgozegysgnek feleltetnk meg. Mivel a loklis fggsgi grfban minden
csompont csak a szomszdjval ll fggsgi kapcsolatban, a kapott feldolgozegysg hlzat eleget tesz a
szisztolikus tmbprocesszorok szksges kritriumainak. Az gy kapott struktra s az egyes feldolgozegysgek
feladata a 19.10. brn lthat (a mtrix Ai,j egytthati a csompontokban vannak eltrolva).
C0

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.10. bra. Kzvetlen lekpzs szisztolikus tmbprocesszorra s a feldolgozegysgek feladata


Egy lehetsges, a feladatot megvalst struktra teht mr megvan, mr csak az hinyzik, hogy milyen idztsekkel (milyen temben) kell a tmbprocesszor szlein a bemeneteket megjelentetni, hogy a kvnt kimenetet (a

19.4. TMBPROCESSZOROK

311

mtrix-vektor szorzs eredmnyt) kapjuk. Ezt az idztsi feladatot temezsnek hvjuk.


A kzvetlen lekpzs esetn az temezst adatramlsos elven hatrozzuk meg. Minden ciklusban azok
a feldolgozegysgek vgeznek hasznos feladatot, melyek mkdshez minden operandus rendelkezsre ll
(termszetesen minden ciklusban minden feldolgozegysg mkdik, hiszen valami mindig van a bemenetn,
de csak ezek adnak rtelmes eredmnyt). A bemeneteket gy kell temezni, hogy minden temben a hasznos
munkt vgz feldolgozegysgeket ellssuk a feladatukhoz szksges inputtal. A pldban az els temben csak
a (0,0) feldolgozegysg tud hasznos munkt vgezni, teht az els temben csak a B0 -t kell az (0,0) bemenetre
adni. A msodik temben a (0,1) s az (1,0) is megkapja (0,0) kimenett, teht a (0,1)-nek a msodik temben
van szksge B1 -re, s gy tovbb. Azt, hogy az egyes bemeneteket melyik tem elejn kell megjelentetni, mely
feldolgozegysgek aktvak s a kimenetek mely tem vgn jelennek meg, a kvetkez tblzat foglalja ssze:
tem

Bemenet

Aktivits

Kimenet

B[0]

(0,0)

B[1]

(0,1) (1,0)

B[2]

(0,2) (1,1) (2,0)

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

19.11. bra. Lekpzs vzszintes projekcival


Az eredeti 9 helyett teht 3 feldolgozegysg fogja vgrehajtani a feladatot, az albbi tblzat szerint:

312

19. FEJEZET. SIMD FELDOLGOZS


tem

Bemenet

Aktivits

Kimenet

B[0] A[0][0]

{0}

B[1] A[0][1] A[1][0]

{0} {1}

B[2] A[0][2] A[1][1] A[2][0]

{0} {1} {2}

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

19.12. bra. Lekpzs fggleges projekcival


Ismt 3 feldolgozegysget kaptunk. Az albbi tblzat megadja a vgrehajts menett s az temezst:
tem

Bemenet

Aktivits

Kimenet

A[0][0]

{0}

A[0][1] A[1][0]

{0} {1}

A[0][2] A[1][1] A[2][0]

{0} {1} {2}

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

19.13. bra. Projekci a hullmfrontok mentn

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

19.14. bra. Tmbprocesszor hullmfrontok mentn vgzett projekcival

Pipeline viselkeds a projekci elhagysval


Ha a projekcit nem vgezzk el, a kzvetlen lekpzssel kapott szisztolikus tmb pipeline adatfeldolgozsra is
kpes lesz. Lttuk, hogy a tnyleges mveleteket vgz feldolgozegysgek aktivitsa hullmfrontknt vonul
(0,0)-bl (2,2)-be. Vegyk szre, hogy ha a mtrixot egy msik vektorral is meg akarnnk szorozni, nem kell
megvrni az elz mvelet vgt: az els hullmfront mgtt rgtn egy jabbat indthatunk, az utn egy jabbat,
s gy tovbb. A kvetkez tblzatban klnbz szn htterekkel azonostjuk a megszorzand vektorokat, az
azokon dolgoz feldolgozegysgeket s a hozzjuk tartoz eredmnyeket:

314

19. FEJEZET. SIMD FELDOLGOZS


a22
a21

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.15. bra. temezs hullmfrontok mentn vgzett projekci esetn , 1/2.rsz

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

19. FEJEZET. SIMD FELDOLGOZS

Ha teht ugyanazt a mtrixot kell ms-ms vektorokkal szorozgatni, akkor a pipeline viselkedsnek ksznheten aszimptotikusan 1 mtrix-vektor szorzs egyetlenegy temet vesz ignybe!

19.4.4. Tmbprocesszorok hibatrse


Van olyan mkdsi krnyezet, ahol kvetelmny a hossz ideig tart hibamentes mkds (pl. mholdak,
vagy egyb nehezen megkzelthet helyek esetn). A szisztolikus tmbprocesszorok naiv implementcija
(feldolgozegysgek egyms mell ltetse s a szomszdok sszehuzalozsa) hibatrs szempontjbl nem
szerencss, hiszen egyetlen feldolgozegysg meghibsodsa esetn a tmbprocesszor outputja hibs lesz, gy a
teljes tmb hasznlhatatlann vlik.
A hibatrs javtsa rdekben a tmbprocesszorban zemi llapotban nem mkd, tartalk feldolgozegysgeket is clszer elhelyezni, melyeket az sszekttetsek tkongurlhatv ttelvel a meghibsodott
feldolgozegysgek helyett szksg esetn zembe lehet lltani. A kulcsfontossg krds az, hogy hogyan lehet
a feldolgozegysgek kztti sszekttetseket gy kialaktani, hogy bonyolultak se legyenek (hiszek akkor azok
is meghibsodhatnnak), de kpesek legyenek esetleg tbb hiba esetn is a hibs feldolgozegysgeket kikerlve
a tartalk feldolgozegysgeket bektni a szablyos struktrba.
Egy lehetsges megolds, ha a feldolgozegysgek kz egyszer kapcsol csompontokat helyeznk el
(a 19.15. brn srgval jellve).

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.15. bra. Szisztolikus tmbprocesszor tartalk egysgekkel s tkongurlhat sszekttetsekkel


A kapcsol csompontok 4 fle llst tudnak felvenni, a 4 irnybl jv vezetkeket 4 flekppen tudjk
sszektni (19.16. bra). Tovbb, a feldolgozegysgeket ki kell egszteni a rvidre zrs kpessgvel, hogy
hiba esetn a rvidzrat bekapcsolva a jelet a rossz feldolgozegysgen keresztl az egyik irnyba vltozatlan
formban tovbbtani lehessen (19.16. bra).

19.16. bra. A kapcsol csompontok s a feldolgozegysgek rvidzrainak llsai


Taln nem is ltszik elsre, hogy ez a megolds milyen rugalmas. A 19.17. brn lthat pldban a tmb 9 zemi s 6 tartalk feldolgozegysgbl ll, s akr 3 meghibsodst is kpes tvszelni (a hibs feldolgozegysgeket
piros szn jelli).

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

19.17. bra. Szisztolikus tmbprocesszor hibamentes s 4 hibs, tkongurlt llapotban

318

19. FEJEZET. SIMD FELDOLGOZS

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

20. FEJEZET. MULTIPROCESSZOROS RENDSZEREK


modelleknl lttuk, ennek mdja lehet tbbek kztt a vezrl token explicit tbbszrzse (FORK), majd a
tokenek ksbbi sszefogsa (JOIN). A tbb vezrl token tbb, egymstl fggetlen logikai vagy zikai
processzor kezelsben lehet. A program tbb, a logikai vagy zikai processzorokon prhuzamosan fut
ga persze cserlhet adatot egymssal, hasznlhat kzs memrit, akr mg kzs cache-t is, a prhuzamosan fut gak idnknt megvrhatjk egymst, stb. Ebben a fejezetben az explicit prhuzamossg fajtit,
lehetsgeit, alapproblmit jrjuk krbe.

Az explicit prhuzamossgot tmogat legelterjedtebb hardver megvalstsok a tbbszl processzorok (20.2.


fejezet) s a multiprocesszoros rendszerek (20.3. fejezet). A tbbszl processzorok olyan (tipikusan szuperskalr) processzorok, melyek tbb utastsszmllval rendelkeznek, s hol az egyik, hol a msik utastsszmll
ltal kijellt utastsokat hajtjk vgre a processzor erforrsain. A multiprocesszoros rendszerek ezzel szemben tbb teljes rtk processzorbl llnak, melyek mindegyike a sajt utastsszmlljn keresztl ms-ms
utastssorozatot hajt vgre.

20.2. Tbb vgrehajtsi szlat tmogat egyprocesszoros rendszerek


Ebben a fejezetben ltni fogjuk, hogy tbb vgrehajtsi szlat rdemes lehet hardveresen tmogatni egyprocesszoros rendszerekben is. Ebben az esetben ugyanis a processzor a tbb utastsfolyambl knnyebben ssze
tud vlogatni annyi egymstl fggetlen, vgrehajthat llapotban lv utastst, hogy a mveleti egysgek a
lehet legjobban ki legyenek hasznlva. Ha az egyik szl megakadna is pl. egy cache hiba vagy egy adatfggsg
miatt, a processzor a msik szl fel tud fordulni, s annak utastsait kezdi el vgrehajtani. Ha a fennakads oka
megsznik, a vgrehajts visszatrhet az els szlhoz.

20.2.1. Tbbszl vgrehajts hardver tmogats nlkl


A hardveres tbbszl processzorok megismerse eltt clszer tisztzni, hogy mi is az a tbbszl vgrehajts.
Elszr nyljunk vissza egy rgebbi fogalomhoz: az idosztsos multitaszk opercis rendszerekhez. A
professzionlis clra sznt opercis rendszerek mr kb. 50 vvel ezeltt is tmogattk tbb program (taszk)
egyprocesszoros rendszeren val egyidej vgrehajtst. Ha csak egy processzor, s emiatt egy utastsszmll
ll rendelkezsre, akkor a tbb taszk prhuzamos futsnak ltszatt idosztssal lehet kelteni. Ennek rdekben
a szmtgpben egy idztt helyeznek el, ami meghatrozott idkznknt megszaktst generl. Ekkor az
opercis rendszer idztt kiszolgl szubrutinja hvdik meg, ami a kvetkezket teszi:
A fut taszk vgrehajtst megszaktja: llapott a memriban menti (tbbek kztt a regiszterek rtkt,
az utastsszmllt, a verem mutatt).
Kivlaszt egy msik taszkot, aminek a futsa korbban ugyangy flbe lett szaktva.
Ennek a kivlasztott taszknak elveszi a memriba letrolt llapott: visszalltja a regiszterek s a verem
mutat megszaktskori rtkt.
Visszalltja a kivlasztott taszk elmentett utastsszmlljt: ettl kezdve teht a processzor innen fogja
folytatni az utastsok vgrehajtst.
Ez a taszkvlts elnagyolt vzlata. Egy modern processzorban a taszkvltskor ennl azrt tbb minden trtnik,
pl. a regiszterek, a veremmutat s az utastsszmll rtknek cserjn kvl mst is kell csinlni:
A modern opercis rendszerek minden taszkra kln laptblt tartanak karban, hogy azok azt higgyk,
hogy a teljes virtulis cmtartomny csak hozzjuk tartozik. Ennek rdekben taszkvltskor t kell lltani
a laptblra mutat hardver regiszter rtkt, hogy az ne a rgi, hanem az j taszk laptbljra mutasson.
Ekkor azonban a TLB teljes tartalmt is rvnytelenteni kell, teht a taszkvlts utn j darabig minden
memriahivatkozs TLB hibval fog jrni, mg a TLB meg nem telik az j taszk gyakran hasznlt laptbla
bejegyzseivel.
Sok processzor taszkvltskor rti az utasts cache-t, teht a taszk vgrehajtsa j pr cache-hibval fog
indulni.
sszessgben elmondhat, hogy a taszkok kztti vlts nagyon lass: az Intel Pentium 4 esetben pldul akr
2-3 ezer rajelciklust is ignybe vehet.

20.2. TBB VGREHAJTSI SZLAT TMOGAT EGYPROCESSZOROS RENDSZEREK

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.

20.2.2. Az idosztsos tbbszl vgrehajts hardver tmogatsa


Ahogy azt az egyszer utasts pipeline esetben lttuk, egy program vgrehajtsa sorn szmos olyan esemny
trtnhet, ami az utastsok folyamatos vgrehajtst megakasztja. Ilyen esemnyek lehetnek tbbek kztt:
a TLB hiba,
a cache hiba,
adatfggsgek, stb.
J lenne, ha a vgrehajtsban megakadt utastsfolyamot ilyenkor a helyzet megoldsig flre lehetne tenni,
s egy msik utastsfolyamot elvenni, s azzal haladni tovbb. Pontosan ezt teszik a tbbszl vgrehajtst
tmogat (multithreading) processzorok.
A tbbszl vgrehajtst tmogat processzorok szmos erforrst tbbszrznek: annyi utastsszmll s
annyi kln regiszter trol van a processzorban, ahny szlat tmogatnak. A szlak osztoznak (tbbek kztt) a
TLB-ben, az utasts-cache-ben, az elgazsbecsl adatszerkezetekben is: ezeket az erforrsokat azonban nem
szoktk tbbszrzni, hanem inkbb a bejegyzsekben azt is nyilvntartjk, hogy azok melyik szlhoz tartoznak.
Pl. a TLB bejegyzsek is kiegszlnek egy jabb mezvel, a bejegyzst hasznl szl azonostjval. Mivel ezeken
az erforrsokon tbb szl osztozik, szmolni kell azzal a kellemetlen lehetsggel, hogy egy rosszul viselked
szl kiszortja pl. a TLB-bl, vagy az utasts-cache-bl a msik szl bejegyzseit.
A szlak kztti vlts gy semennyi idt sem vesz ignybe. Minden utastshoz a lehvs utn hozzrendelnek
egy szlazonostt, ami biztostja, hogy az utasts a sajt szlnak erforrsain dolgozzon. A pipeline-ban gy
vegyesen elfordulnak majd klnbz szlakhoz tartoz utastsok, melyek kztt a processzor csak annyiban
tesz klnbsget, hogy a szlnak megfelel regiszterkszlettel, cache s TLB bejegyzsekkel, stb. dolgozik.
A processzor mveleti egysgeinek szlakhoz rendelsre ktfle stratgia terjedt el:
Finom felbonts tbbszl vgrehajts (ne-grained multithreading) esetn a processzor minden rajelciklusban ms szl utastsait hajtja vgre. A 20.1. brn, kzpen tallhat egy plda. Az brn fgglegesen
lefel telik az id, vzszintesen pedig az egy rajelciklus alatt egyszerre temezhet (teht fggetlen) utastsok szma van feltntetve. A nom felbontsnak megfelelen elszr a piros, aztn a srga, majd a
kk s a zld szl kap egy-egy rajelet, melynek sorn minden szl az egyszerre temezhet utastsait
vgrehajtja. Az brn jl ltszik a tbbszl vgrehajts elnye: pl. tbbszlsg nlkl a kk szlban az
els hrom s az azt kvet kt utasts kztt kt sznet telik el, pl. adat-egymsrahats miatt, ez id
alatt teht a processzor kihasznlatlan. Finom felbonts tbbszlsg esetn azonban a 4 szl miatt csak
minden negyedik lpsben kapja meg a kk szl a processzort, teht brmi is okozta a kt sznetet, bven
volt ideje megolddni, mire jra a kkre jut a sor.

322

20. FEJEZET. MULTIPROCESSZOROS RENDSZEREK


Durva felbonts tbbszl vgrehajts (coarse-grained multithreading) esetn csak akkor vlt szlat a
processzor, ha az aktulis szl nagyon megakad (pl. cache hiba esetn, vagy akr csak msodszint cache
hiba esetn), 1-2 rajelnyi sznetre nem trtnik szl vlts. A szlak kztti vlts a processzort vratlanul
ri (nem gy, mint a nom felbonts esetben), teht kell egy kis id, mire a pipeline megtelik az j szl
utastsaival, gy a szl vlts nhny rajelnyi sznettel jr (lsd: 20.1. bra bal szls esete).

(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.

20.1. bra. Lehetsgek a tbbszl vgrehajts hardveres tmogatsra

20.2.3. Szimultn tbbszl vgrehajts


A nom s durva felbonts tbbszlas megkzeltssel szemben a szimultn tbbszl vgrehajts csak a szuperskalr processzorokhoz kthet. A szuperskalr processzorokban tbb mveleti egysg ll rendelkezsre, melyek
segtsgvel az utastssorozatbl egyszerre tbb, egymstl fggetlen utasts hajthat vgre. Ezek a mveleti
egysgek gyakran kihasznlatlanok, ha a program felptse olyan, hogy az utastsok kztti egymsrahatsok
az utastsok egyttes vgrehajtst gtoljk.
A szimultn tbbszl vgrehajts ezeket a szabad erforrsokat hasznostja: ha egy utastssorozat utastsai
nem kpesek kihasznlni az sszes mveleti egysget, akkor vegynk egy msik utastssorozatot (ugyanazon
taszk msik szlt), s prbljuk meg annak utastsait vgrehajtani a fennmarad mveleti egysgekkel. Azaz
egy rajelciklusban tbb szl utastsai is (szimultn) vgrehajthatk a rendelkezsre ll mveleti egysgek
erejig. Minl tbb vgrehajtsi szlunk van, annl jobban ki tudjuk tlteni a mveleti egysgeket.
A 20.1. bra jobb oldaln lthatunk pldt szimultn tbbszlsgra. A processzor a 4 mveleti egysgt
sorra tlti ki a 4 szl utastsaival, krbenforg elv szerint. Persze vigyzni kell, hogy az azonos szlakhoz
tartoz utastscsoportok kztti sznetek szma megegyezzen az egyszl vgrehajtskor szksgessel, hiszen
az egymsrahatsok feloldshoz, cache, vagy TLB hiba, stb. feloldshoz tovbbra is ugyanannyi id kell, csak
most a kies lyukakat ms szlak utastsaival tlthetjk ki.
A tapasztalatok szerint a tbbszlsg hardveres tmogatsa mindssze 5-10%-os komplexits nvekedssel
jr, gy szinte minden nagyobb gyrt a tbbszlsg tmogatsnak valamely formja mellett tette le a vokst:

20.3. MULTIPROCESSZOROS RENDSZEREK


Processzor

323

Megjelens ve

Tbbszlsg formja

Tmogatott szlak szma

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

20.3. Multiprocesszoros rendszerek


A multiprocesszoros rendszerek teljes rtk processzorokbl llnak.

20.3.1. Motivci s nehzsgek


A multiprocesszoros rendszerek hasznlatt az albbi szempontok motivljk:
Az utastsszint prhuzamossg korltozott lehetsgei. Fentebb lttuk, hogy a tipikus programokban
lakoz utastsszint prhuzamossg gyakran mr ahhoz sem elegend, hogy 4-6 prhuzamosan mkdni
kpes mveleti egysget jl kihasznljon. A helyzetet rontja, hogy nincs 100% pontossg elgazsbecsls,
idnknt cache hibk lasstjk a memriamveleteket, stb. Ha tbb utastst szeretnnk prhuzamosan
vgrehajtani, a prhuzamosan futtathat rszeket a programoznak explicit mdon jeleznie kell.
Energiahatkonysg. A processzorok energia felhasznlsa nem egyenes arnyban, hanem annl gyorsabban n a szmtsi teljestmnnyel. Ezt tmasztja al a 20.2. bra is (forrs: Anandtech), mely szerint ezen a
bizonyos processzoron 12.5%-os rajel frekvencia (teht szmtsi teljestmny) nvels 50%-os fogyasztsemelkedssel jrt. Ebbl kiindulva, a fogyaszts szempontjbl hatkonyabb lehet N darab processzort
hasznlni egysgnyi rajellel, mint 1 processzort N -szeres rajellel.
95
90

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

20.2. bra. Fogyaszts az rajel-frekvencia fggvnyben


Kltsghatkonysg. A processzorok ra sem linerisan, hanem egy konvex fggvnyt kvetve (ltalban
exponencilisan) n a szmtsi teljestmnnyel. Jl prhuzamosthat feladatok esetn kisebb kltsggel
lehet sok lassabb, de olcs processzorbl multiprocesszoros rendszert pteni, mint kevesebb (vagy esetleg
egyetlen) gyors processzorbl.
Egyszer bvthetsg. Egy multiprocesszoros rendszert (ha erre megfelelen fel van ksztve) knny
bvteni jabb processzorok hozzadsval.
Hibatrs. Ha a sor processzorbl egy meghibsodik, nem ll meg az let, a tbbi tveszi a feladatait.

324

20. FEJEZET. MULTIPROCESSZOROS RENDSZEREK

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.

20.3.2. Amdahl trvnye


Azt, hogy egy N processzorbl ll multiprocesszoros rendszer mekkora teljestmnynvekmnyt kpes hozni
az egyprocesszoros rendszerekhez kpest, az hatrozza meg, hogy a feladat (a fut program) milyen mrtkben
prhuzamosthat. Ha a feladat nem prhuzamosthat, akrhny processzort is vennnk, a szekvencilis futsi
igny miatt az mindig csak az egyik processzoron fut majd, s pontosan annyi id alatt vgez, mint egy egyprocesszoros rendszeren. A msik vglet az, ha a program teljes mrtkben prhuzamosthat, ebben az esetben az N
processzor N -szeres sebessggel hajtja vgre azt (most tekintsnk el a program prhuzamos rszei kztt zajl
kommunikci kltsgtl).
Egy vals program tartalmaz mind prhuzamosthat, mind szekvencilisan vgrehajtand rszeket is. A tbb
processzor hadba fogsval elrhet teljestmnynvekedsrl Amdahl trvnye segtsgvel kaphatunk kpet.
Az Amdahl trvnye egy rendkvl egyszer, de nagyon is megdbbent eredmnyt ad sszefggs, melyet most
magunk levezetnk.
Legyen a programunk P rsze prhuzamosthat, s a fennmarad 1 P rsze szekvencilisan vgrehajtand.
Legyen a teljes program futsi ideje egy egyprocesszoros rendszeren 1. A program 1 P rszt ad szekvencilis
rszek teht (1 P) 1 ideig futnak. A program prhuzamosthat P rsze pedig N processzor hasznlatval 1/N
ideig fog futni. Teht N processzorral a teljes futsi id: (1 P) + P/N . Az N processzoros vgrehajts ltal elrt
teljestmnynvekeds megkaphat az 1 processzoros vgrehajtsi id (1) s az imnt szmolt N processzoros
vgrehajtsi id hnyadosaknt. Amdahl trvnye teht:
SP (N ) = Teljestmnynvekmny N processzorral =

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,

teht mindssze 16.8-szoros!


Prbljuk meg kicsit jobban megrteni a dolog termszett. Vegynk egy msik pldt (a knnyebb szmols
kedvrt). Egy program egy egyprocesszoros rendszeren 20 ra alatt fut le, s ebbl 1 rnyi futsi id esik
a nem prhuzamosthat rszekre. A 19 rnyi prhuzamosthat rsz a processzorok szmnak nvelsvel
tetszlegesen cskkenthet, vgtelen sok processzorral aszimptotikusan 0 ra lesz a prhuzamos rsz futsi
ideje. A szekvencilis rsz viszont tovbbra is 1 rig fog futni, akrhny processzor is van. Teht a maximlis
elrhet gyorsuls (vgtelen sok processzort felttelezve): SP () = 20/1 = 20-szoros. Ez az Amdahl trvnybl
is kiolvashat, hiszen
1
SP () = lim SP (N ) =
.
N
1P

20.3. MULTIPROCESSZOROS RENDSZEREK

325

A 20.3. bra bemutatja az elrhet gyorsulst a processzorok szmnak s a prhuzamosthatsg mrtknek


fggvnyben. Szemmel lthat, hogy minden grbe aszimptotikusan vzszintess vlik, s az elbbi SP ()
rtket veszi fl.
20.00
18.00

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. bra. Elrhet gyorsuls a processzorok szma s a prhuzamosts fggvnyben


Az Amdahl trvnye teht rdbbent minket arra, hogy a sok processzor minl jobb kihasznlsa rdekben
kritikus fontossg a program minl nagyobb rsznek prhuzamosthatv ttele (P nvelse). Sajnos a vezrlsramlsos elven mkd programozsi nyelvekben ez nem megy magtl: mind a fordtprogramnak, mind a
programoznak nehzsget okoz.

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

20. FEJEZET. MULTIPROCESSZOROS RENDSZEREK

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

20.4. bra. Osztott memrira alapozott UMA multiprocesszoros rendszerek


Sajnos az osztott memrira alapozott UMA rendszerek (vagy ahogy mskpp nevezik: SMP (Symmetric
multiprocessor)) nem jl sklzdnak a processzorok szmval. Ha egy j processzort illesztnk a rgiek mell,
annak teljes memriaforgalma terheli az sszekttets-hlzatot, akr sokat kommunikl a tbbi processzorral,
akr nem, ami knnyen szk keresztmetszet lehet. A gyakorlatban ezrt ilyen kialaktssal legfeljebb 100-as
nagysgrendben ktnek ssze processzorokat.
Valdi sklzhat megoldst a NUMA rendszerek jelentenek (20.5. bra). Ebben az esetben a multiprocesszoros rendszer processzort, cache-t s memrit tartalmaz csompontokbl ll. A cmtr tovbbra is kzs a
processzorok szmra, de a cmtr fel van osztva s a cmtr egyes tartomnyai a klnbz csompontokhoz
vannak hozzrendelve. Minden egyes processzor nagy sebessggel hozz tud frni a cmtartomny azon rszhez,
amely a sajt csompontjban tallhat memrival van lefedve, a cmtartomny ms csomponthoz rendelt
rszt pedig az sszekttets-hlzat segtsgvel tudja elrni, lassabb hozzfrsi idvel. Ennek a megoldsnak
az a nagy elnye, hogy a csompontok az ltaluk futtatott programok kdjt s a csak helyben szksges adatokat
a loklis memriban tudjk trolni, a lassabb, sszekttets-hlzatot terhel memria-hozzfrsek csak akkor
szksgesek, amikor a taszkok a kommunikci jegyben egyms memrijba rnak / memrijbl olvasnak.

CPU

Cache
MEM

CPU

Cache
MEM

CPU

Cache
MEM

sszekttetsek hlzata

20.5. bra. Osztott memrira alapozott NUMA multiprocesszoros rendszer

zenetkldssel kommunikl multiprocesszoros rendszerek


Az zenetalap (message passing) multiprocesszoros rendszerekben a csompontok teljes szmtgpek: processzor(ok)bl, memribl, sajt perifrikbl llnak. A csompontokban lv memria a csompont sajtja,
kvlrl kzvetlenl nem elrhet. A csompontok egy sszekttets-hlzattal vannak sszektve. A klnbz
csompontokon fut taszkok zenetek segtsgvel kommuniklnak egymssal. Ehhez az architektrhoz is
a 20.5. brn lthat blokksma tartozik, a klnbsg csak annyi, hogy itt a taszkok kztti kommunikci nem
memriamveletekkel, hanem zenetekkel trtnik.
Az zenetalap kommunikci kt alapmvelete:
zenet kldse (send)
zenet fogadsa (bevrsa, receive)
A kommunikciban rsztvev felek azonostsra minden taszkot sajt, egyedi azonostval, ID-vel ltnak
el. Az zenet a mondanival mellett tartalmazza a kld s a cmzett egyedi azonostjt, valamint egy

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

20. FEJEZET. MULTIPROCESSZOROS RENDSZEREK


Kltsg (cost): egy sszekttets-hlzat kltsgt sokfle szempont gyelembe vtelvel lehet meghatrozni,
pldul a szksges lek s egyb hlzati elemek szmval.
Sklzhatsg (scalability): a ksleltets, az tvitel s a kltsg hogy vltozik a processzorok szmnak
fggvnyben.

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.

20.4.2. Indirekt sszekttets-hlzatok


Busz alap sszekttets-hlzatok
A busz alap hlzatok taln a legegyszerbb sszekttets-hlzatok. A csompontok (processzorok, ill. memria
modulok) egy osztott, kzs hasznlat buszon keresztl kommuniklnak egymssal (20.6. bra). A kld fl a
buszra teszi az zenetet (pl. memria krst), a buszra kapcsold tbbi csompont pedig folyamatosan flel, hogy
neki szl zenet van-e ppen a buszon. A buszok nagy elnye, hogy nem csak pont-pont kommunikcit, hanem
zenetszrst is lehetv tesz, teht egy csompont kldhet egy mindenkinek szl zenetet is. Termszetesen
a buszt egyidejleg csak egyetlen csompont hasznlhatja, vagyis a busz hasznlati jogrt versenyezni kell,
valamilyen arbitrcis eljrst kell alkalmazni.
CPU

CPU

CPU

Busz

MEM

MEM

MEM

20.6. bra. Busz alap hlzat


A busz alap hlzatokban tovbbi tulajdonsgai:
Minden csompont azonos tvolsgra van a tbbitl.
A kltsg jl sklzdik: jabb csompontok hozzadsval nem n (tovbbra is egy osztott busz van
hasznlatban).
Az tvitel azonban rosszul sklzdik: a busz tviteli kpessge adott, s ez annl tbbfel oszlik, minl tbb
szerepl hasznlja a buszt. Emiatt a busz alap sszekttets-hlzatokat csak kis szm (nhny tucat)
processzor ill. memria sszektsre hasznljk.
Busz alap sszekttetst hasznltak a Sun Enterprise szerverek (1996-2001) s az Intel Pentium alap multiprocesszoros rendszerek.

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

20.7. bra. Crossbar hlzat


A crossbar hlzatok elnye, hogy egyidejleg tbb processzor is teljes sebessggel kommuniklhat a memria
modulokkal (mindaddig, amg klnbz memriamodulokkal kommuniklnak), htrnya, hogy az ra rosszul
sklzdik a processzorok s a memrik szmval. Egy jabb processzor csatlakoztatshoz 1 jabb sszekttets,
valamint M db j kapcsol bektse szksges.
Crossbar hlzat kti ssze pldul az IBM Power4, Power5, valamint a Sun Niagara processzormagjait az L2
cache memriabankjaival.
Tbbfokozat crossbar hlzatok
Lttuk, hogy a buszok nagyon jl sklzdnak kltsg szempontjbl, de rosszul tvitel szempontjbl. A crossbar
pont fordtva: jl sklzdik tvitel szempontjbl, de rosszul kltsg szempontjbl. A rossz sklzhatsgi
tulajdonsgaik mindkett hasznlatt csak kis mret multiprocesszoros rendszerekben teszik lehetv.
A tbbfokozat crossbar (multistage crossbar) az arany kzpt: tvitel szempontjbl jobban sklzdik a
busznl, s kltsg szempontjbl jobban sklzdik a crossbar-nl.
A tbbfokozat crossbar tlete, hogy vegynk kis mret crossbar kapcsol hlzatokat, s ezekbl, mint
ptelemekbl rakjunk ssze egy nagy mret sszekttets-hlzatot. E kr az egyszer tlet kr lassan egy
egsz elmlet szletett, s alapjul szolglt mind a rgi telefonkzpontok, mind a modern szmtgp hlzatok
berendezseinek mkdshez.
Most egy szndkosan leegyszerstett kpen keresztl mutatunk be a tbbfokozat crossbar mkdst:
2x2-es elemi crossbar kapcsolkbl fogunk ptkezni. Arra, hogy ezeket az elemi kapcsolkat hogyan kell
sszektni, hogy vgl nagy szm csompont sszektsre legyenek alkalmasak, tbbfle megolds is ltezik.
A 20.8. bra 8 processzor s 8 memria modul sszekapcsolst mutatja be omega s buttery elrendezsben.
Mindkt esetben 3 fokozatra, s fokozatonknt 4 elemi kapcsolra volt szksg.
Az omega hlzatokban a kapcsolk mkdse rendkvl egyszer (lsd: 20.9. bra). A forrs s a cl
csompontot binris szmokkal azonostjuk. A kapcsolhlzat i. fokozatban a forrs s a cl csompont
azonostjnak i. bitjt kell sszehasonltani: ha a 2 bit megegyezik, egyenes llsba, ha klnbzik, kereszt
llsba kell az elemi kapcsolt lltani, gy vgl pont a kvnt forrs s cl csompont lesz sszektve.
Sajnos a tbbfokozat crossbar hlzatok nem blokkols-mentesek: elfordulhat, hogy kt csompont-pr
kztt olyan utak vezetnek, melyeket nem lehet egyidejleg felpteni. A 20.10. brn pldul a kk s a piros
tvonal az els s a msodik fokozatban is ugyanazon kapcsolkon halad t, de a kt sszekttets e kt kapcsol
klnbz llst ignyeli. Mivel a kapcsolk nyilvn nem lehetnek egyszerre egyenes s kereszt llsban is,
az egyik csompont-pr vrakozni knyszerl.

330

20. FEJEZET. MULTIPROCESSZOROS RENDSZEREK


Butterfly hlzat

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:

20.8. bra. Omega s Buttery hlzatok


000

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.9. bra. Kapcsolk lltsa az Omega hlzatban


Az Omega hlzatok P processzor s memria esetn log2 P fokozatbl llnak, minden fokozatban P/2 elemi
kapcsolval, teht sszesen P/2 log2 P elemi kapcsolra van szksg. Ilyen sszekttets-hlzatot hasznlt a
P = 512 processzorbl ll IBM RP3.

20.4.3. Direkt sszekttets-hlzatok


Teljesen sszekttt hlzat
Egy teljesen sszekttt hlzatban minden csompont minden ms csomponttal ssze van ktve. A 20.11. bra
egy 8 csompontbl ll teljesen sszekttt hlzatot brzol. Ez a megolds idelis abbl a szempontbl, hogy
minden zenet egyetlen lpsben elri a cmzettet. Blokkols, versenyhelyzet nincs.
Egy N csompontbl ll teljesen sszekttt grf tmrje 1, felezsi keresztmetszete N 2 /4 (hiszen ha kt
N /2 csompontbl ll rszgrfot sszektnk egy teljesen sszekttt gr, akkor N /2 N /2 lre van szksg).
Az lsszefggsg N 1, ennyi let kell eltvoltani, hogy egy csompont leszakadjon. A teljesen sszekttt
grf tvitelben jl, kltsgben rosszul sklzdik, hiszen egy N + 1. csompont hozzadsa nem lasstja a mr
meglvk kommunikcijt, viszont N j l hozzadst ignyli.
Lineris s gyr topolgia
A teljesen sszekttt hlzatnak ugyan elnys tulajdonsgai vannak, de kltsg s sklzhatsg szempontjbl
nagy szm csompont sszektsre nem alkalmas. Az sszekttetsek szmnak tekintetben a msik vgletet

20.4. SSZEKTTETSEK

331
000

000

001

001

010

010

011

011

100

100

101

101

110

110

111

111

20.10. bra. Blokkols az Omega hlzatban

20.11. bra. Teljesen sszekttt hlzat


a lineris s a gyr topolgik jelentik. Ebben az esetben a bels csompontok csupn kt szomszddal vannak
sszektve, a kt szls csompontnak a lineris hlzatok esetben csak egy szomszdja van, mg gyr esetn a
kt szls csompontot egymssal sszektve azok fokszma is kett lesz (20.12. bra).

20.12. bra. Lineris s gyr topolgik


N csompontbl ll lineris topolgia esetn a hlzat rmrje N 1, hiszen ez az els s az utols csompont
kztt vezet t hossza. A felezsi keresztmetszet s az lsszefggsg is 1, hiszen 1 l elhagysval a grf ktfel
szakad.
A gyr jellemzi valamivel jobbak: tmrje N /2, hiszen ennyi lps alatt a kzelebbi irnyba elindulva
minden csompont elrhet. Mind a felezsi keresztmetszet, mind az lsszefggsg 2, ennyi let kell elhagyni a
grf sztesshez.
A lineris s a gyr topolgik teht kltsg szempontjbl jl sklzhatk: egy j csompont hozzadsa
mindssze egyetlen j l hozzadsval jr. Sajnos az tvitel szempontjbl ezek a megoldsok rosszul sklzhatk,
hiszen kevs az l, az jabb s jabb csompont hozzadsval jr kommunikcis tbblet ezt a kevs let terheli.
Ktdimenzis hl s trusz
A lineris s gyr topolgik legfbb htrnyn, az tvitel rossz sklzhatsgn segt, ha a csompontokat
ktdimenzis elrendezsben ktjk ssze. A hl topolgia esetn egy ngyzetrcsot kapunk. A ktdimenzis
trusz a hltl csak annyiban tr el, hogy a szls csompontok ssze vannak ktve a msik oldali megfeleljkkel
(20.13. bra).
Feltve, hogy mindkt dimenziban N csompont van, a ktdimenzis hl tmrje 2 N , hiszen
ennyi lps kell, mire egy zenet az egyik sarokbl az tellenes sarokba eljut. A felezsi keresztmetszet N , az
lsszefggsg pedig 2 (a sarokban lv csompont 2 l eltvoltsval levlaszthat).

332

20. FEJEZET. MULTIPROCESSZOROS RENDSZEREK

20.13. bra. Ktdimenzis hl s trusz topolgik

4.

A ktdimenzis trusz esetn az tmr 2 N /2, a felezsi keresztmetszet 2 N , az lsszefggsg pedig

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.14. bra. Hiperkockk


Egyltaln nem knny beltni, de az brn jl kvethet, hogy egy k dimenzis hiperkocka tmrje k,
lsszefggsge is k, felezsi keresztmetszete pedig N /2.

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

a kapcsol funkcionalits magban a processzorban, vagy a processzorbl s memribl ll csompontokban


van megvalstva, indirekt esetben pedig a hlzat ilyen kapcsolkbl ll).
Az tvonalvlaszt algoritmusokat az albbi kt csoportba soroljuk:
Statikus tvonalvlasztsrl beszlnk, ha az zenetek tvonala kizrlag a kldtl s a cmzettl fgg.
Teht minden zenet, melynek ugyanaz a kldje s a cmzettje, minden krlmnyek kztt ugyanazon az
tvonalon fog haladni.
Dinamikus tvonalvlaszts esetn a hlzat pillanatnyi llapota is szerepet jtszik az zenettovbbtsi
dntsekben. Dinamikus tvonalvlasztssal lehetv vlik az sszekttets-hlzat forgalmas rszeinek
elkerlse (teht a jobb terhels-kiegyenlts), s a meghibsodott sszekttetsek kikerlse is.
Az tvonalvlaszt algoritmusoknak a tovbbi elvrsoknak kell eleget tennik:
gyors mkds: klnsen a kapcsolkat nem clszer hossz, idignyes feladatokkal terhelni, hiszen
ezzel ms, ugyanazt a csompontot keresztez zeneteket is fenntartunk
holtpont-mentessg: ne fordulhasson el, hogy zenetek egy halmaza a tovbbts sorn olyan szituciba
kerl, hogy egyes erforrsok hasznlatrt (pl. sszekttetsek, trolk, stb.) klcsnsen egymsra
vrakoznak.
Statikus tvonalvlaszts
Az albbiakban hrom teljesen eltr megkzeltst tekintnk t a statikus tvonalvlasztsra.
tvonalvlaszts dimenzi-sorrendben (dimension-order routing): Ez az eljrs akkor alkalmazhat, ha a
csompontok valamilyen szablyos, tbbdimenzis geometriai alakzat mentn vannak sszekapcsolva. Egy ilyen
rendszerben a csompontok az alakzatban elfoglalt helyk szerint vannak azonostva. Pl. egy ktdimenzis hl
(20.13. bra) esetn a csompontokat a fggleges s vzszintes index alapjn egy (x,y) prossal azonosthatjuk. Ha
egy kapcsol kap egy zenetet, akkor rnz a cmzett azonostjra: ha annak x koordintja kisebb, mint az v,
akkor a baloldali, ha nagyobb, a jobboldali szomszdja fel tovbbtja. Ha a cmzett x koordintja megegyezik a
kapcsolval, akkor rnz a kvetkez koordintra, az y-ra. Ha nagyobb, mint az v, felfele, ha kisebb, lefele
kldi tovbb. Hromdimenzis hl esetn ugyanez a helyzet, de ott az azonost 3 tag: (x,y,z). A kapcsolk
elszr az x szerint hatrozzk meg a tovbbkldsi irnyt, majd egyezs esetn az y, vgl a z koordinta alapjn
dntenek a tovbbklds irnyrl.
Kld ltal meghatrozott tvonalvlaszts (source-based routing): Ebben az esetben maga a kld tallja
ki az tvonalat a cmzett fel, s az ltala kigondolt tvonalat, vagyis a keresztezni kvnt csompontok listjt
hozzfzi maghoz az zenethez. A kapcsolk dolga rendkvl egyszer: fogni kell az zenetet, csak le kell olvasni
a kvetkez csompont azonostjt, s tovbbtani fel. Ezzel minden intelligencia a kldnl van, teht minden
kld csompont szmra elengedhetetlen az sszekttets-hlzat topolgijnak s a hibs sszekttetseknek
a napraksz ismerete. Az eljrs egy htrnyos tulajdonsga, hogy az zenetek mrett a csatolt rintend
csompont-lista megnveli.
Tblzat alap tvonalvlaszts (table-driven routing): A kapcsolk ebben az esetben egy nagy tblzatot
trolnak, mely minden potencilis cmzetthez tartalmaz egy bejegyzst, mgpedig azt, hogy a neki cmzett
zeneteket melyik szomszdos csompont fel kell tovbbtani. Ha a kapcsol kap egy zenetet, megnzi a
cmzett mezjt, felcsapja a tblzatt, s a cmzetthez tartoz bejegyzsnek megfelel szomszdjnak tovbbtja
az zenetet. Ha az sszekttets-hlzat nagy szm csompontbl ll, a tblzat mrete tl nagy, a benne lv
keress pedig tl idignyes lehet.
Dinamikus tvonalvlaszts
A dinamikus eljrsok adaptvak, alkalmazkodnak a hlzat aktulis forgalmi viszonyaihoz, s a meghibsodott
sszekttetseket is kpesek megkerlni. Ennek rdekben azonban sokkal nehezebb kiszmtani az zenetek
tovbbtsi idejt (egyszer rvidebb, mskor hosszabb ideig tart), nehezebb biztostani a holtpont-mentessget,
valamint intzkedni kell rla, hogy az zenetek vges id alatt kzbestve legyenek, vagyis hogy ne keringhessenek
a hlzatban az rkkvalsgig.

334

20. FEJEZET. MULTIPROCESSZOROS RENDSZEREK

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

20.15. bra. Dinamikus tvonalvlaszts

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.

You might also like