You are on page 1of 302

Tartalomjegyzk

Tartalomjegyzk

Tartalomjegyzk............................................................................... 3
1.fejezet: Kompatibilits az x86-os architektrkkal ................... 10
1.1. Hardware kompatibilits ........................................................ 10
1.1.1. Software kompatibilits .................................................. 10
1.2. Konkurens tdik genercis x86-kompatibilis
architektrk ........................................................................... 12
1.2.1. Az INTEL Pentium processzora..................................... 12
1.2.1.1. INTEGER egysg ................................................... 13
1.2.1.2. Cache-ek, memria kezels..................................... 15
1.2.1.3. Programg elrejelzs............................................. 17
1.2.1.4. Beptett lebegpontos egysg................................ 18
1.2.1.5. "Bogaras" a koprocesszor ?..................................... 19
1.2.1.6. Sebessgnvel technikk a Pentium osztly
szmtgpeknl..................................................... 19
1.2.1.7. Multiprocesszoros rendszerek................................. 22
1.2.1.8. Adatvdelem........................................................... 23
1.2.2. A Cyrix M1-es processzor csaldja ............................ 24
1.2.2.1. Pipeline vagy szuperpipeline ?................................ 24
1.2.2.2. 32 regiszter jobb mint 8 ! ....................................... 26
1.2.2.3. Cskkentett fggsg - nagyobb sebessg.............. 28
1.2.2.4. Kiegyntett terhels -gyorsabb programfuts ....... 29
1.2.2.5. Kiugrs lehetsge a vgrehajtsi sorrendbl......... 29
1.2.3. A NexGen Nx 586-os processzor csaldja .................... 31
1.2.3.1. Hogyan lehet RISC processzorbl CISC avagy
fbl vaskarika ? .................................................... 31
1.2.3.2. x86 - RISC86 .......................................................... 33
1.2.3.3. Szuperskalr vgrehajts-javul hatsfok............... 35
1.2.3.4. Az utasts-elrejelzsi CACHE (BPC).................. 35
1.2.3.5. Cache hierarchia...................................................... 36
2. fejezet: Processzor erforrsok................................................... 39
Landmark 2.00............................................................................... 40
CHECKIT 3.0................................................................................ 43
MIPS 1.20: (MIPS)........................................................................ 46
3
Tartalomjegyzk
CPUTEST 1.1 (MIPS)................................................................... 48
3. Fejezet: ltalnos CPU programozsi informcik ................. 62
3.1. A memria felptse.............................................................. 62
3.1.1. Nemszegmentlt vagy "lapos" modell ............................ 63
3.1.2. Szegmentlt modell ........................................................ 64
3.2. Regiszterek ............................................................................. 65
3.2.1. ltalnos regiszterek ...................................................... 65
3.2.2. Szegmensregiszterek....................................................... 67
3.2.3. Utastsmutat ................................................................ 69
3.2.4. A verem felptse s hasznlata .................................... 69
3.2.5. Flagregiszter ................................................................... 70
3.2.5.1. llapotbitek............................................................. 71
3.2.6 Rendszer-regiszterek........................................................ 73
3.2.6.1. Rendszer-flagek ...................................................... 74
3.2.6.2. Vezrlregiszterek ................................................. 77
3.2.6.3. Nyomkvet regiszterek ......................................... 82
3.3. CPU zemmdok.................................................................... 84
3.3.1. Vals zemmd ("vals md")....................................... 84
3.3.2. Vdett zemmd............................................................. 84
3.3.3.Rendszermenedzsel zemmd....................................... 84
3.4. Inicializls s az zemmdok kztti tkapcsols ............... 86
3.4.1. A processzor inicializlsa ............................................. 86
3.4.1.1. A processzor llapota reszetels utn ..................... 87
3.4.1.2. Az els vgrehajtott utasts ................................... 90
3.4.1.3. A cache engedlyezse............................................ 91
3.4.2. Software inicializls vals zemmdban...................... 92
3.4.2.1. Rendszertblzatok ................................................. 92
3.4.2.2. Az NMI megszakts............................................... 92
3.4.3. Software inicializlsa vdett zemmdban................... 93
3.4.3.1. Rendszertblzatok ................................................. 93
3.4.3.2. Megszaktsok......................................................... 94
3.4.3.3. Lapozs ................................................................... 94
3.4.3.4. Taszkok................................................................... 96
3.4.3.5. A TLB, BTB s cache tesztelse............................. 97
3.4.4. zemmdvlts .............................................................. 97
3.4.4.1. tkapcsols vdett mdba ...................................... 97
3.4.4.2. Visszakapcsols vals zemmdba ........................ 98
4
Tartalomjegyzk
3.4.5. Plda inicializlsra s zemmd tkapcsolsra............. 99
3.4.5.1. A plda clja............................................................ 99
2.4.5.2. A memria elrendezse a reset-elst kveten ....... 100
3.4.5.3. Az algoritmus.......................................................... 100
3.4.5.4. Eszkzk hasznlata ............................................... 102
3.4.5.5. A STARTUP.ASM listja....................................... 104
3.4.5.6. A MAIN.ASM forrskdja ..................................... 113
3.4.5.7. llomnyok tmogatsa.......................................... 116
3.5. A vals zemmd felptse, mkdse ................................ 119
3.5.1. Cmek lefordtsa............................................................ 119
3.5.2. Regiszterek s utastsok................................................ 120
2.5.3. Megszakts s kivtel kiszolgls ................................ 121
3.5.4. Vals zemmd kivtelek............................................. 122
3.6. A Vdett zemmd felptse, mkdse .............................. 124
3.6.1. Memriaszervez regiszterek. ........................................ 125
3.6.2. Rendszer utastsok ........................................................ 126
3.6.3. Vdett zemmd memriaszervezs ............................ 128
3.6.3.1 A szegmentlsi modell kivlasztsa....................... 131
3.6.3.1.1. A sk modell .................................................... 131
3.6.3.1.2. Vdett sk modell ............................................ 133
3.6.3.1.3. Multiszegmens modell .................................... 134
3.6.3.2. Szegmensfordts .................................................... 136
3.6.3.2.1. Szegmensregiszterek ....................................... 138
3.6.3.2.2. Szegmensszelektorok ...................................... 139
3.6.3.2.3. Szegmens deszkriptorok.................................. 141
3.6.3.2.4. Szegmensdeszkriptor-tblzatok..................... 148
3.6.3.2.5. Deszkriptortblzat bzisregiszterek............... 149
3.6.3.3. Lapfordts .............................................................. 150
3.6.3.3.1. Lapozsi opcik............................................... 151
3.6.3.3.2. Lineris cm..................................................... 152
3.6.3.3.3. Laptblzatok .................................................. 152
3.6.3.3.4. Laptblzat bejegyzsek.................................. 153
3.6.3.3.5. Lapkeret cm.................................................... 154
3.6.3.3.6. A Present (betlttt, jelenlev) bit .................. 154
3.6.3.3.7 Hozzfrt (accessed) s "piszkos" (dirty)
bitek................................................................. 156
3.6.3.3.8. rs/olvass illetve felhasznl/felgyel
bitek................................................................. 156
5
Tartalomjegyzk
3.6.3.3.9. Lapszint cache-vezrl bitek......................... 157
3.6.3.3.10. Fordtsi segdpufferek................................. 157
3.6.3.4. Szegmens- s lapfordts keverse.......................... 158
3.6.3.4.1. A sk modell .................................................... 158
3.6.3.4.2 Tbb lapot tfog szegmensek......................... 159
3.6.3.4.3. Tbb szegmenst tfog lapok.......................... 159
3.6.3.4.4. Nem illeszked lap- s szegmenshatrok........ 159
3.6.3.4.5. Illeszked lap- s szegmenshatrok ................ 159
3.6.3.4.6. Egy laptblzat elhelyezse
szegmensenknt............................................... 161
3.7. Vdelemi mechanizmusok...................................................... 162
3.7.1. Szegmens szint vdelem............................................... 162
3.7.2. A szegmens deszkriptorok s a vdelem........................ 163
3.7.2.1. Tpusellenrzs ....................................................... 164
3.7.2.2. Hatr (limit) ellenrzs ........................................... 167
3.7.3. Privilgium szintek......................................................... 169
3.7.4. Az adathozzfrsek korltozsa.................................... 171
3.7.4.1. Kdszegmensekbeli adatok elrse......................... 173
3.7.5. Vezrlstadsok korltozsa ......................................... 174
3.7.6. Kapudeszkriptorok.......................................................... 176
3.7.6.1. Veremvlts ............................................................ 181
3.7.6.2. Visszatrs egy procedrbl ................................. 185
3.7.7. Az opercis rendszer szmra lefoglalt utastsok ....... 188
3.7.7.1. Privilegizlt utastsok............................................ 188
3.7.7.2. rzkeny utastsok................................................. 189
3.7.8. Mutatk rvnyessgt ellenrz utastsok .................. 189
3.7.8.1. Deszkriptor rvnyessgnek ellenrzse............... 192
3.7.8.2. Mutatk integritsa s az RPL................................ 193
3.7.9. Lapszinti vdelem........................................................... 194
3.7.9.1. A laptblzat bemenetek ltal tartalmazott
vdelmi paramterek.............................................. 194
3.7.9.1.1. A megcmezhet tartomnyt rint
megszortsok.................................................. 195
3.7.9.1.2. Tpusellenrzs................................................ 196
3.7.9.1.3. A vdelem kombinlsa a laptblzatok
mindkt szintjn .............................................. 197
3.7.9.1.4. A lapvdelem fllri .................................... 197
3.7.9.2. Lap- s szegmensvdelem kombinlsa ................. 198
6
Tartalomjegyzk
3.8. Vdett zemmd multitaszking............................................ 200
3.8.1. Taszk-llapot-szegmens................................................. 201
3.8.2. A TSS deszkriptor........................................................... 204
3.8.3. Taszkregiszter ................................................................. 205
3.8.4. Taszk kapudeszkriptorok................................................ 208
3.8.5. Taszkkapcsols ............................................................... 209
3.8.6. Taszkok visszafel kapcsolsa (LINKING) ................... 214
3.8.6.1. A Busy (foglalt) bit megelzi a hurkok
kialakulst ............................................................ 216
3.8.6.2. A taszk visszakapcsolsok mdostsa ................... 217
3.8.7. Taszkok cmtartomnya.................................................. 218
3.8.7.1. Taszkok ltal linerisrl- fizikai cmre vgzett
lekpzs.................................................................. 218
3.8.7.2. A taszkok logikai cmtartomnya .......................... 219
3.9. Vdett zemmd kivtelek s megszaktsok ...................... 222
3.9.1. Kivtel- s megszaktsvektorok................................... 223
3.9.2. Utastsok jraindtsa.................................................... 225
3.9.3. Megszaktsok engedlyezse s letiltsa ..................... 225
3.9.3.1. Tovbbi NMI megszaktsok maszkolsa.............. 226
3.9.3.2. INTR megszaktsok maszkolsa .......................... 226
3.9.3.3. Debug hibk maszkolsa az RF bit segtsgvel .... 227
3.9.3.4. Egyes kivtelek s megszaktsok maszkolsa....... 228
3.9.4. Szimultn kivtelek s megszaktsok kztti
priorits........................................................................ 228
3.9.5. A megszaktsdeszkriptor-tblzat ................................. 230
3.9.6. IDT deszkriptorok........................................................... 231
3.9.7. Megszakts taszkok s megszakts-kezel
procedurk ................................................................... 233
3.9.7.1. Megszakts-kezel procedrk.............................. 233
3.9.7.1.1. A megszakts-kezel eljrs verme .............. 234
3.9.7.1.2. Visszatrs egy megszakts-kezel
eljrsbl ......................................................... 235
3.9.7.1.3. A megszakts-kezel eljrs flag-
hasznlata ........................................................ 236
3.9.7.1.4. Vdelem a megszakts-kezel
eljrsokban..................................................... 236
3.9.7.2. Megszakts-kezel taszkok.................................... 237
3.9.8. Hibakdok....................................................................... 239
7
Tartalomjegyzk
3.9.9. Kivtel felttelek............................................................ 240
3.9.9.1. 0-s szm megszakts - Osztshiba (Divide
Error)...................................................................... 241
3.9.9.2. 1-es szm megszakts - Debug kivtel ................ 241
3.9.9.3. 3-as szm megszakts - Trspont
(Breakpoint) ........................................................... 241
3.9.9.4. 4-es szm megszakts - Tlcsorduls
(Overflow) ............................................................. 242
3.9.9.5. 5-s szm megszakts - Hatrsrts (Bounds
Check) .................................................................... 242
3.9.9.6. 6-os szm megszakts - rvnytelen utasts
(Invalid Opcode) .................................................... 243
3.9.9.7. 7-es szm megszakts - nem elrhet eszkz
(Device Not Available).......................................... 243
3.9.9.8. 8-as szm megszakts - Ketts hiba, dupla
hiba (Double Fault)................................................ 244
3.9.9.9. 9-es szm megszakts - (az Intel ltal
fenntartott, hasznlata nem ajnlott)...................... 246
3.9.9.10. 10-es szm megszakts - rvnytelen TSS
(Invalid TSS).......................................................... 246
3.9.9.11. 11-es szm megszakts - Szegmens nincs
jelen, (Segment Not Present) ................................. 247
3.9.9.12. 12-es szm megszakts - verem kivtel
(Stack Exception)................................................... 249
3.9.9.13. 13-as szm megszakts - ltalnos vdelmi
hiba (General Protection)....................................... 250
3.9.9.14. 14-es szm megszakts - Laphiba (Page
Fault)...................................................................... 252
3.9.9.14.1. Taszkkapcsols alatti laphiba........................ 253
3.9.9.14.2. Laphiba sszefrhetetlen veremmutatval .... 254
3.9.9.15. 16-os szm megszakts - Lebegpontos
egysg hiba, Floating-Point Error) ........................ 255
3.9.9.15.1. Numerikus kivtelek kezelse....................... 257
3.9.9.15.2. Szimultn kivtelekre adott vlaszok............ 258
3.9.9.16. 17-es szm megszakts - Illeszkeds
ellenrzs ellenrzsi hiba (Alignment Check) ..... 259
3.9.9.17. 18-as szm megszakts - Processzortpus
ellenrzs (Machine Check) .................................. 261
8
Tartalomjegyzk
3.9.10. A kivtelek sszefoglalsa............................................ 261
3.9.11. Hibakdok sszefoglalsa ............................................ 263
3.10. Rendszermenedzsel zemmd........................................... 264
3.10.1. Az SMI megszakts ..................................................... 265
3.10.2. Az SMM kezdeti llapota ............................................. 267
3.10.2.1. Az SMM vgrehajtsa........................................... 268
3.10.3. Az SMRAM processzor-llapot trol formtuma....... 269
3.10.3.1. Az SMM revzi-azonost (FEFCH ofszet) ........ 271
3.10.3.2. I/O trap-jraindts (FF00H ofszet) ...................... 272
3.10.3.3. Felfggesztett llapotbl val automatikus
jraindts (FF02H ofszet) ..................................... 273
3.10.3.4. Az llapottrol bzisa (FEF8H ofszet)................ 273
3.10.4. Az SMRAM relokcija............................................... 274
3.10.5. Visszatrs az SMM-bl............................................... 275
3.11. 8086-os virtulis zemmd .................................................. 276
3.11.1. 8086 CPU kd vgrehajtsa.......................................... 277
3.11.1.1. Regiszterek s utastsok ...................................... 277
3.11.2.1. Lapozs a 8086-os virtulis taszkok esetben ...... 278
3.11.2.2. Vdelem egy 8086-os virtulis taszkon bell ....... 279
3.11.3. Belps a 8086-os virtulis zemmdba s az
abbl val kilps ........................................................ 279
3.11.3.1. Taszktkapcsolsok ltali tranzcik..................... 282
3.11.3.2. tmenet trap- s megszaktskapukon
keresztl ................................................................. 282
3.11.4. rzkeny utastsok ...................................................... 285
3.11.5. Virtulis megszaktsok tmogatsa............................. 286
3.11.6. A 8086 opercis rendszerhvsok emulcija............. 286
3.11.7. Virtulis I/O.................................................................. 287
3.11.7.1. I/O-ra lekpezett I/O............................................. 288
3.11.7.2. Memriba lekpezett I/O..................................... 288
3.11.7.3. Klnleges I/O pufferek........................................ 289
3.11.8. Klnbsgek a 8086 CPU-hoz kpest .......................... 289
3.11.9. Klnbsgek a 286 CPU-hoz kpest ............................ 294
3.11.9.1. Privilgiumszint .................................................... 294
3.11.9.2. A busz lezrsa...................................................... 295
3.11.10. Klnbsgek a 386 s 486 CPU-hoz kpest ............... 296
bra- s pldajegyzk...................................................................... 297
9
Tartalomjegyzk
Elzetes a msodik ktet tartalmbl ............................................ 301
10
Hardware kompatibilits
1.fejezet: Kompatibilits az x86-os
architektrkkal

1.1. Hardware kompatibilits

Az INTEL a Pentium processzort (80502, 80503) gy tervezte,
hogy a mr meglv x86-os architektrkkal "fellrl" kompatibilis
legyen. A gyrtk kztti hardware kompatibilitsra kr lenne szt
vesztegetni, ugyanis a hardware felpts szksgkppen elkell hogy
trjen, a jogi vitk elkerlse miatt. Azonban a fejlesztknl, s a
gyrtknl (bzzunk benne hogy nem csak ez) nem ez a f szempont.
Szeretnnek minl gyorsabb, s hatkonyabb tpusokat kifejleszteni e
gyorsul szmtstechnikai piac korltlan "szmtsi hsgnek"
kielgtse rdekben.


1.1.1. Software kompatibilits

Nagyon lnyeges krds azonban a software kompatibilits. A
software kompatibilits megrzse rdekben az alkalmazsok
fejlesztsekor szemeltt kell azokat a bit-eket, Byte-okat amelyek
klnbz hardware architektrk esetn vltozhatnak. Erre a sokfle
processzor verzi, s chip-gyrt miatt kell gyelnnk. Az tdik
genercis x86 kompatibilis processzorok gyrtsa tern sok gyrt s
fejleszt indult csatba. Minden egyes processzornl a kompatibilits
krdst kln meg kell vizsglni. Ma mr vannak neves cgek, amelyek
csak ezen krdsek vizsglatra kteleztk el magukat, pl.: az XXCAL
laboratrium. A tovbbiakban ezen nemzetkzileg elismert "laborcgek"
vizsglati eredmnyeire, vagy a software fejlesztjnek kompatibilitsi
nyilatkozatra fogunk hivatkozni.

Szmos regiszter s memriaszerkezet lersakor egyes bitek
"fenntartott"-knt vannak jellve. Abban az esetben, amikor egy bit
meghatrozatlannak vagy fenntartottnak van jellve, alapvet
kvetelmny az, hogy az jvbeni processzorokkal val kompatibilits
rdekben a software ezeket a biteket gy kezelje, mintha a jvben (br
ismeretlen) hatsuk lenne a processzor mkdsre. A fenntartott bitek
11
Kompatibilits az x86-os architektrkkal
mkdst clszer nemcsak meghatrozatlannak, hanem
kiszmthatatlannak is tekinteni. Ajnlatos, hogy a fenntartott biteket
figyelembe vev software kvesse a kvetkez irnyvonalakat:

A fenntartott biteket tartalmaz regiszterek tesztelsnek eredmnye
ne fggjn az emltett bitek llapottl. Ezrt tesztels eltt ezeket a
biteket maszkolni kell.

A memriba vagy regiszterbe val trols ne fggjn egyetlen
fenntartott bit llapottl sem.

Ne alapozzunk a fenntartott bitekben trolt informci
visszanyersnek lehetsgre.

Egy regiszter feltltsekor a fenntartott biteket mindig a
dokumentciban kzlt rtkekkel tltsk fel. Ha ez nincs
feltntetve, akkor vissza kell tlteni az elzleg onnan kiolvasott
rtkeket.
12
Hardware kompatibilits
1.2. Konkurens tdik genercis x86-kompatibilis
architektrk

1.2.1. Az INTEL Pentium processzora

Az X86-os csald legfiatalabb tagja a Pentium processzor, amelyet
az INTEL gy tervezett, hogy "lefel" 100 %-ban kompatibilis legyen az
X86-os csald elz tagjaival.

Hardware-es
Utasts-
elrejelzs
64 bites
Kd-cache
Busz interface
Prefetch
Buffer-ek
Adat-cache
Regiszter
kszlet
Hardware-es
szorzs
Hardware-es
oszts
Hardware-es
sszeads
FPU
ALU ALU
Pipeline-olt
32 bit 64 bit
64 bit
64 bit

: A Pentium processzor blokkvzlata
uperskalr architektrval pl fl, teht
tt egynl tbb utastst tud vgrehajtani.
egysggel, a processzorlapkra integrlt kln
32 bit
256 bit
64 bit
256 bit 256 bit
32 bit 32 bit
32 bit 32 bit
Integer
Egysg
64 bit

1.1. bra

or sz A Pentium processz
la egyetlen rajel ciklus a
Beptett lebegpontos
13
Konkurens tdik genercis architektrk
kd- s write-back adatcache-sel,
in mkd Intel486 chip-
ez kpest.
ine t utasts vgrehajtsi
zintre tagozdik:


Cmgenerls
Vgrehajts
WriteBack

Utastsok el-betltse
(Instruction Prefetch): Az utastsok
kdjnak a magasabb cmekrl
trtn elzetes beolvassa a
64 bit-es kls adatbusszal, az
jabb 90-100MHz-es tpusok
integrlt MP (Multi Processor)
vezrlvel rendelkeznek.

1.2.1.1. INTEGER egysg

A Pentium processzor szve
a kt beptett utasts pipeline,
amelyek egymstl fggetlenl
mkdnek. Ezek a pipeline-ok
teszik kpess a Pentium
processzort, hogy egy raciklus
alatt kt integer utastst
vgrehajtson. Ez kzel ktszeres
chip sebessget jelent az azonos
frekvenc
h

A Pentium processzor
pipeline-jai azonosak az Intel486
CPU egyszer pipeline-jval, de
magasabb sebessghez
optimalizltk ket. Mindegyik
pipel
s
Prefetch
Utasts dekdols

U V
Pipeline Pipeline
Utasts
dekdols
Cm Cm
generls generls
Vgrehajts Vgrehajts
Write-Back Write-Back
Utasts
dekdols
PREFETCH


1.2. bra: Az INTEGER egysg
14
Az INTEL Pentium processzora
processzorba, a vgrehajtst megelzen; az utastsok vgrehajtsnak
tfedsre hasznlt technika. Amikor egy utasts a prefetch-bl az
utastsdekderbe kerl, a pipeline ksz egy msik, j utasts vgre-
hajtsnak elkezdsre. Sok esetben a Pentium processzor kt utastst is
el tud vgezni egyszerre - egy utastst mindegyik pipeline-ban - ez a
mdszer "utasts prosts" nven ismert.

A prosts felttele, hogy mindkt utastsnak "egyszernek" kell
lennie. Mindegyik pipeline sajt ALU-val (aritmetikai logikai egysg),
cmgenerl egysggel, s adatcache interface-szel rendelkezik.

VGREHAJT EGYSG
MIKROKD ROM
SZEKVENCIA
VEZRL
LIMIT
EGYSG EGYSG EGYSG EGYSG
SZORZ SSZEAD ELTOL REG.
KSZLET
UTASTS
DEKDER
UTASTS
SOR
VEZRLS
CMEK
ROM
BRANCH VEZRLS
VEZRLS
PIPELINE
BELS
ADATBUSZ
BYTE MUX. S
ADATBUSZ
MEMRIA
I/O REGISZTEREK
MEMRIA
MANAGER

1.3. bra: A PIPELINE-ok bels felptsnek blokkvzlata

15
Konkurens tdik genercis architektrk
1.2.1.2. Cache-ek, memria kezels

Az elbb emltett cache egysgek 8 kByte kapacitsak, s az
egyik csak adatokat, a msik csak utastsokat trol. Az elbb emltett
cache-ek ktutas csoport-asszociatv szervezsek s tmogatjk a direct-
map eljrst. A csoport-asszociatv szervezs a cache-felpts olyan
formja, mely egy adattmb helyt a fmemriban leszkti ugyan, de
ennek helye a cache-ben nincs teljes mrtkben meghatrozva. A csoport-
asszociatv felpts a kzvetlen lekpezst megvalst felpts
elyben a fmemria egy adott cmnek csak egyetlen hely felelhet meg
cache-ben), s a teljes mrtkben asszociatv felpts (mely az adatot a
melyik rszbl a cache brmelyik rszbe helyezheti) kzt
k rom n z e
l i, hogy fmemria a ott cmrl az adat n helyen legyen
cache-elve, mely brhol lehet a cache-ben. A cache-vonalak 32 Byte-os
(256 bit) szervezsek, gy a cache ramkrknek elg csak 2* 32 Byte-
os vonalon keresni adatot a teljes cache helyet. Ezen 32 Byte-os vonalak
(a 486DX-ben csak 16 Byte-os vonalak vannak) segtsgvel pl fel a
Pe cesszor 6 bit szles bus a.
proces ak adat-, utaststrolsra van szksge s a
c teljesen fel van tltve, akkor a legrgebben hasznlt
elhagyja, s az gy teremtett res helyet az aktulis
inform cival rja fel l. Az adatcach -nek kt van - m degyik
pipe z eg og ikl t
k velet is feltudja hasznlni ugyanazt az adatot. Ha az adat
mr ppen kikerl az adatcache-bl (s csak akkor), a processzor
visszarja az adatot a f memriba. Ez a technika WRITE-BACK cache
kezels
n
p o
ltal cache-elt adatot prbl elrni.
(m
a
fmemria br
pez komp isszumot. Egy "n-szerese csoport-ass ociatv" cach
ehetv tesz a d
ntium pro

Ha a
ache mr
informcikat
4 z
szorn vagy
e interface-e
y egy rac
in
uson bell k line-ho
lnbz m
y-egy, amely azt biztostja, h
nven ismert.

Abban az esetben ha a processzor az adatot egyidejleg a
fmemriba s a cache-be is berja (a Pentium processzor dinamikusan
tmogatja a Write-Through cache kezelst), WRITE-THROUGH cache
kezelsrl beszlhetnk. A fent emltett eljrsok biztostjk a fmemria
s a cache konzisztencijt. (A konzisztencia klnse
multiprocesszoros rendszerekben fontos, s azt biztostja hogy a
r cesszor ne helytelen rtket kapjon meg, amikor egy msik processzor
Ha a cache-elt adatot megvltoztatja,
16
Az INTEL Pentium processzora
akk
felh koll
ESI szabvnyknt ismert. (MESI= Modified, Exclusive, Shared,
von
ala
pro
em
pro


Ca

or mindegyik msik processzornak a megvltoztatott adatokat kell


asznlnia.) Az elbbiekben trgyalt cache-konzisztencia proto
M
Invalid). A szabvny 4 llapotot definil, amelyek mindegyike a cache
alaihoz van rendelve, a CPU ltal ezen a vonalon vgrehajtott mvelet
pjn. Multiprocesszoros rendszerekben sokszor elfordul, hogy tbb
cesszornak egyidben van szksge ugyanarra az adatra. Ha a fent
ltett protokoll szablyait betartjuk a multiprocesszoros konzisztencia
blmt is megoldottnak tekinthetjk.
che-vonal
llapota
M
mdostott
E
kizrlagos
S
megosztott
I
rvnytelen
Ez
vonal igen igen

igen

nem
a cache-
rvnyes ?
Az adat
msolata ...

nem aktulis

rvnyes

rvnyes

--
Az adat
megtallhat



egy m

sik
processzor
cache-ben ?
nem nem taln taln

rs a
vonalra ...

nem megy ki
a buszra

nem megy ki
a buszra
kimegy a
buszra s
frissti a
cache-t

kzvetlenl
kimegy a
buszra

1.4. bra: Cache-vonal llapotai a MESI protokoll szerint

nnak meghatrozsra, hogy egy rsmvelet sor A n mikor kell a
memrit felfrisstse, a cache egy adott 'frisstsi stratgit' kell
hatssal az olvassmveletekre.)
sstsi stratgik a kvetkezk:
trs (write-through) - A cache-vonalba val rsigny esetn mind a
cache-memria, mind a fmemria frisstsre sor kerl. Az trs
f
hasznljon. (A frissts stratgija nincs
A Pentium processzor ltal tmogatott fri

17
Konkurens tdik genercis architektrk
has
zars (write-back) - A cache-vonalba val rsigny csak a
cache-memrit frissti fel. A visszars-stratgia cskkenti a busz
che konzisztencijt fenntart
mechanizmusok is kivlthatjk.
A kln adat- s utastscache elnye, hogy kizrja az
tastsbetlts s az adatelrs konfliktusnak ltrejttt. Az emltett
onfliktus akkor jhet ltre, ha pl. az egyik pipeline prefetch llapotban
ache-bl - egy adathoz szeretne hozzjutni s ugyanazokat a
chevonalakat egyidben akarjk hasznlni. A klnbontott cache-ek
znos pldul a grafikus pufferek esetben, ahol ahhoz hogy az adat
a grafikus kpernyn megjelenjen, frissteni kell a fmemrit is.

Viss
forgalmt, a szksgtelen memria-rsok kikszblse ltal. A
cache-vonalakba val rsok nem tovbbtdnak azonnal a
fmemriba, hanem a cache-ben gylnek ssze. A megvltoztatott
cache-vonalak ksbb, a visszarsi mvelet vgrehajtsakor kerlnek
a fmemriba. A visszarsi mveleteket ltalban a cache-vonalak
felszabadtsnak szksgessge vltja ki, pldul amikor a mr
teljesen betelt cache-ben szksg van egy j vonal lefoglalsra. A
visszar mveleteket a ca

A processzor lehetv teszi, hogy brmely memriaterlet
brmelyik stratgia segtsgvel kezelhet legyen. Mind a software, mind
a hardware kzben tarthatja a vezrlst a hasznlt stratgia felett; a
software a laptblzatok bejegyzseinek PWT bitje, mg a hardware a
WB/WT# jel segtsgvel.

A Pentium processzor bels cache-ei egytt hasznlhatk a kls
cache-ekkel, melyek mkdhetnek tr, visszar vagy mindkt mdban.


u
k
van s utastst tlt be a cache-bl, mikzben a msik pipeline - szintn a
c
ca
biztostjk a kt hozzfrsi mvelet prhuzamossgt.


1.2.1.3. Programg elrejelzs

18
Az INTEL Pentium processzora
A cache egysg
BTB-t sem. (Branch T
cache, amely a dinamik
trolja.

Az utasts-el
informcik segtsgv
sebessggel lehet haszn
keresztl lehet igazn m
ciklus vgetrsekor
meghatrozza, hogy a
vget a ciklus), vagy vgzett a ciklus vgrehajtsval, s a kvetkez
utastssal kell a programot folytatni.

A fentiekben v k
programgnak (Branch). Az utasts elrejelzs pedig megjsolja, melyik
programgat fogja v
gvlasztsok statisztik
tall, a BTB "megjegy
BTB informcii alapj
melyik programgt ke
helyes, ezzel az eljr
Ellenkez esetben a fe
idvesztesget nem ok
lenne.


1 l
az INTEGER egysg
ipeline-jaiban kezddik, s az els nhny integer pipeline-szint utn
ek felsorolsnl azonban nem hagyhatjuk ki a
arget Buffer = programg-trol) Ez egy aprcska
us utasts-elrejelzs (Branch Prediction) adatait
rejelzs az a technika, amely ltal szolgltatott
el a pipeline-okat teljes feltltttsggel, azaz teljes
lni. A koncepcit egy tipikus alkalmazsi pldn
egrteni: az utasts-elrejelzs minden software-
elvgez egy feltteles vizsglatot, amely
ciklus elejt kell-e ismt vgrehajtani (nem rt
zolt kt lehetsget vagy "tvonalat" nevezz
lasztani a software, a mr elzleg megtett
i alapjn. Amikor a processzor egy elgazst
zi" az utastst, s a programg ugrsi cmt. A
n szletik meg a "jslat" arrl, hogy az elgazs
ll majd a kvetkezkben felhasznlni. Ha a jslat
ssal az gcm betltsi idt meg lehet takartani.
lhasznland g cmt be kell tlteni, ami kln
oz, mert erre a mveletre egybknt is szksg
ebegpontos egysg


A 486DX processzorokhoz kpest egy teljesen jratervezett matematikai
processzor kerlt a Pentiumok lapkira. Az jts gymlcse egy 8 szint
pipeline-nal felpl meglehetsen gyors lebegpontos egysg, amely
rajelenknt egy, nhny esetben kt (ha a msodik utasts egy
"Exchange") lebegpontos szmtst kpes elvgezni.

A lebegpontos utastsok vgrehajtsa
.2.1.4. Beptett
p
19
Konkurens tdik genercis architektrk
kerl t a lebegpontos pipeline-ba. Az FPU
pipeline-jnak els ngy szintje megegyezik az
INTEGER egysg pipeline-jban megtallhat
pontos vgrehajt egysg, kerekt s
regiszterbe r egysg, hibajelz egysg. Az
FPU olyan j hardware-ben
tt algoritmusokat hasznl, amelyek a
veletekben (pl.: sszeads, szorzs,
romszosra nvelik a mveleti
cesszor ?
ppent fel a
endellenessg nem katasztroflis, s
csak a 1995 jan. 1. eltt vsrolt Pentium
eltrs az
gyszeres, ktszeres, s ngyszeres pontossg lebegpontos osztsi
a
bekvetkezsnek valsznsge ismert: <1:9000000. A "renitens" szm a
norml alakban felrt eredmny tizedespont utni negyedik, s
tizenkilencedik helyirtke kztt fordulhat el.

Utasts
dekdols
PREFETCH
els ngy szinttel. Az utols ngy szintet pedig
kvetkez egysgek alkotjk: 2 szintes
lebeg
ttervezett
to megvals
Cm
generls
kzs m
oszts), h
sebessget.

Szm konverzi
80 bit

1.2.1.5. "Bogaras" a kopro
V rehajts 1 g
->
Vgr

A szaksajtban meglehetsen sok hr r ehajts 2
Pentiumok " hibs " lebegpontos
trsprocesszorrl. Megnyugtathatom a kedves
olvast, a r
Ke
Regis
rekts
zterbe rs
processzorokban tallhat meg. Sem a hiba
nagysga, sem az ltalnos szmtsi mveletekre
vonatkoztatott gyakorisga nem szmottev. (A
gyrt 3 v garancit vllal a processzorokra, s -
bizonyos kereteken bell - ki is cserli a
"bogaras" pldnyokat.) A hiba az eredmny
pontossgnak cskkense. Az
Hibadetektls

1.5. bra:
Az FPU pipeline-ja
e
mveletekben (FDIV) fedezhet fel, az input operandusok bizonyos
kombincija esetn, a kerektsi mdtl fggetlenl. Az eredmny
pontossgnak cskkense akkor kvetkezik be, amikor oszt utasts
ismtlciklusnak hasznlnia kell a sztvlogat tblt. A hibt okoz
szmprok karakterizlsa egyltaln nem egyszer, de a hib
20
Az INTEL Pentium processzora
1.2.1.6. Sebessgnvel technikk a Pentium osztly
zmtgpeknl
kintsk t miben klnbzik egy tdik genercis Pentium

lr architektra
lasztott cache-ek
Write-Back cache kezels
jra tervezett
64 bit szles kls adatbusz a memrik fel (a maximlis sebessg
a memrira vonatkozan 528 MByte/s - a 486DX50-nl 160MB/s)
c
s szksges a
nagyobb alkalmazsoknl (hagyomnyos 4 kByte-os lapok s nvelt
4
essg ?
Els megoldsknt szmtsba jhet a Pentium osztly alaplapo-
on alkalmazott Pipelined Burst SRAM. Ez a msodszint cache-elrsi
modell vltoztatsn l kiderl, hogy ez a
dszer milyen arny sebessgnvekedst eredmnyez. A tblzat
datai Pentium processzorra vonatkoznak, raciklus szmban rtendk.
s

Elszris te
processzor az "eldktl"?


szuperska
sztv

, gyorsabb FPU

ache kezels burst mdban (nagy 256bit-es adagok tlthetk


adatcache-bl egyetlen egyszer buszciklus alatt)
a MOV, s nhny ALU utasts harware-es megvalsts, ezrt
gyorsabb mkdst, nagyobb teljestmnyt tesz lehetv
tmogatja a nvelt lapmreteket gy kevesebb lapoz
MByte-os is vlaszthatk)

Ha egy az eddigieknl gyorsabb szmtgpet szeretnnk
ltrehozni, akkor meg kell, hogy vizsgljuk melyek azok a rszegysgek,
amelyekre a tbbi rszegysgnek vrnia kell. Ha a vrakozsokat
"kihagyjuk" a rendszer gyorsulni fog. Napjainkban a processzorok olyan
mveleti sebessget rtek el, hogy rkk vrniuk kell, a perifrikra
vagy memrira, legyen az akr HDD, a fmemria, vagy cache-
memria. Hogyan nvelhet a memria elrsi seb

k
ak mdszere. Az albbi tblzatb
m
a
21
Konkurens tdik genercis architektrk

Pip
A ciklus tpusa Aszinkron SRAM
elined
Burst SRAM
Burst Read 3-2-2-2 3-1-1-1
Burst Write (Write back) 4-3-3-3 3-1-1-1
Single Read 3 3
Single Write 4 3
Back-to -back
Burst Read

3-2-2-2-2

3-1-1-1-1

1.6. bra: Cache kezelsi modellek


Pl. a 3-1-1-1 adat az els adat beolvassnl 3 raciklust kell vrni
az rvnyes adatra, a msodik azonban mr egy ciklus alatt beolvashat,
s gy tovbb. Pldul ngy egymst kvet adat beolvassa kilenc
raciklus helyett, csak hatot ignyel. Pipelined Burst SRAM-mal
attviteli sebessg maximuma 300 MByte/s fltt van. ad

A msodik megoldst keressk a DRAM-ok tjkn. A norml
Page-mode DRAM-oknl az adat a CAS# jel felfutlnl rvnyes. Erre
"gygyszer" EDO DRAM (Extended Data Output) hasznlata. (Az EDO
DRAM csak 72pin-es SIMM modulknt kerl forgalomba. Fizikai
mretklnbsg nincs a Page mode DRAM s az EDO DRAM kztt.)
Ha EDO DRAM-ot hasznlunk, az adat a CAS# ciklus teljes idtartama
alatt rvnyes. Ezzel a megoldssal a (f)memria elrsi sebessg
00MB/s -rl 200MB/s fl emelkedik. A kt idz 1 ts kztti
lnbsget az albbi brn vehetjk szemgyre. k

22
Az INTEL Pentium processzora
P
rvnyes rvnyes rvnyes
DATA (out)
rvnyes rvnyes rvnyes
EDO DRAM iddiagram:
CAS#
DATA (out)
age mode DRAM iddiagram:

iessvel kell szmolnunk. A Bus Master IDE
egolds kt legyet t egy csapsra: egyrszrl a vezrlssel nem a
processzornak kell veszdnie, (msik hardware elem teszi meg helyette)
s kialakthat egy j adattviteli megolds a mr meglv IDE buszon. E
megolds: az enhanced IDE controller. Ez a kontroller kt dediklt DMA
csatornt hasznl. (az adatok kzvetlenl a memriba kerlhetnek, s
nem szksges a processzor kzremkdse). Az adattvitel PIO mode 3,
s mode 4 IDE nvre hallgat. A mode 3-mal az IDE adattviteli
CAS#

1.7. bra: DRAM iddiagramok


Ha a fizikai memrin nem csak a memria chip-eket rtjk,
hanem a merevlemez kapacitsnak egy rszt is, - pl.: MS-Windows
swap terlete (lsd: a szegmentlt memriamodellrl szl fejezetet,
lapozs) - akkor a HDD adattviteli sebessgnek nvelsvel szintn
hatsosan nvelhetjk a teljes rendszer teljestmnyt.

A tradcionlis PIO (Programozhat I/O) IDE a CPU
kzremkdst ignyli, teht a processzornak sokat kell vrni a lass
mechanikai alkatrszekre. Minl gyorsabb processzorunk van, annl
nagyobb teljestmny k
m
23
Konkurens tdik genercis architektrk
sebessgnek maximuma 11 MByte/s, a mode 4-gyel 17 MByte/s, s ha
mode 4 mell mg a DMA mode 2-t is kivlasztjuk 22 MByte/s-os
bessget is elrhetnk (Az adatok PCI IDE controllerre vonatkoznak,
helyett nagyobb, 4 MByte-os
pokat is kezelhetnk. A nagyobb lapmret elnye, hogy cskken a
pcserlsi frekvencia, s nvekszik a lapokra vonatkoztatott tallati
kat lehet vgrehajtani.
1.2.1.7. Multiprocesszoros rendszerek

A 90-100MHz-es Pentium processzorok lapki tartalmaznak egy
multiprocesszoros vezrl ramkrt is. Ez a vezrl kt rszre oszlik: a
programozhat interrupt vezrlre (APIC= Advanced Programmable
Interrupt Controller), s az arbitrtorra. Ezen vezrl segtsgvel olyan
nagy teljestmny s viszonylagosan kis kltsg Server architektrk is
megvalsthatk, amelyek 256 (!) processzort tartalmaznak, mindegyiket
sajt cache-sel.


1.2.1.8. Adatvdelem
zm eg a tervezk, amely kifejezetten
az
paritsvizsglat a kls lbakon, s a lapkra integrlt memria
stuktrkon (cache, bufferek, mikrokd ROM).

Akad azonban olyan szituci amikor az adatok integritsa
klnsen fontos. Ezekben az esetekben hasznlhat ki a Pentium ltal
tmogatott funkcionlis redundancia ellenrzs. [Functional Redundancy
Checking (FRC)]. Az FRC kt Pentium chip-et ignyel: az egyik Master,
a msik Checker. A chip-ek prhuzamosan futnak, s a Checker
a
se
s a HDD-nek "ismernie" kell a fentiekben emltett protokollt).

A negyedik megoldst maga a Pentium processzor knlja neknk:
a hagyomnyos 4 kByte-os lapmretek
la
la
arny. A lapcserlgets helyett hasznos utastso
omplex grafikai eljrsok, keret pufferek, opercis rendszer kernelek k
esetben jelents sebessgnvekeds rhet el. A megolds msik elnye,
hogy transzparens (tltsz) az alkalmazsok szempontjbl.



S os olyan technikt valstottak m
adatok vdelmt szolglja. A hibadetektls ktszint: a
24
Az INTEL Pentium processzora
sszehasonltja az ltala kapott eredmnyeket a Master eredmnyeivel,
hogy egszen biztosan hibamentesek legyenek az eredmnyek. Az FRC
alkalmazsval a hibadetektls hatsfoka 99% feletti.

A processzor tartalmaz nhny teszt lehetsget a chip
megbzhatsgra vonatkozan. Az nteszt minden RESET esetn lefut,
s a processzor 70%-t ellenrzi az IEEE 1149.1 szabvny szerint. Ez
segt a gyrtknak a chip kls kapcsolatainak vizsglatban, s lthatv
teszi a regisztereket, a processzor llapotainak pontos detektlhatsga
rdekben. Ezenkvl a rendszer tartalmaz rendszerprogramozk szmra
egy lehetsget a cache-ek tallati arnynak mrsre. Ezzel a "sebessg
monitoroz" zemmddal felderthetk azok az esetek, amikor a
processzor hossz ideig vr a kls buszra, s ez a funkci segt a kls
memria optimalizlsban is. A Pentium processzor rendelkezik egy a
386SL-nl megismert System Management Mode-dal is, amely a
teljestmny management-ben s a biztonsgi feladatok megoldsban
lehet hasznos segtsg.

25
Konkurens tdik genercis architektrk
1.2.2. A Cyrix M1-es processzor csaldja


Nzzk meg, mi rejtzik az M1-es processzor belsejben. Ha a
felptst tekintjk szmos j megoldst tallunk. Hogy a klnbsgeket
megrtsk, nzzk a processzor szvt, az INTEGER egysget, amelyben
egkzeltleg az sszes mvelet zajlik.
.2.2.1. Pipeline vagy szuperpipeline ?
m


1

Az M1-es belsejben is megtalljuk az tdik genercis processzoroknl
mr megszokott pipeline egysget.


Az M1 szuperpipeline INTEGER egysge A PENTIUM pipeline INTEGER egysge
= Pipeline szint = utasts


1.8. bra: Az M1- es s a Pentium processzorok pipelinejainak
sszehasonltsa
26
A Cyrix M1-es processzor csaldja

27
Konkurens tdik genercis architektrk
A pipeline az az egysg, amelynek belsejben az adatok s az
tastsok vgrehajtdnak. A Pentium chip mindegyik pipeline-ja t
grehajtsi szintre osztdik nt
sszehasonltjuk a kt proc
Pentium pipeline adatfeldolgo
hogy az utasts vgrehajtsa
kt pipeline szorosabb egy
processzort klnlegesen mag
teszi alkalmass a 0,5 mikrono


1.2.2.2. 32 regiszter job

Ha a processzor ms r
32 ltalnos felhasznls
chipekkel, amelyek csak 8 il
mennyisg regiszter flexib
regiszterek a mkdshez sz
ezek tbb adatot tudnak trol dolgozhat, hogy
ritkbban kell vrnia, hogy az adat elkerljn a memribl.

A 32 regiszter miatt
adattal, ami magasabb sebess
az ugrsi cmen tallhat
anlkl, hogy tnkretenn va
aktulis Pentium regiszter lek
kzl a jslat (Branch Prediction) figyelembe vtelvel a
legoptimlisabbat vlaszthatja ki. Egy msik felptsbeli klnbsg
tallhat a cache egysgben is. Az Intel Pentium chipek elsszint cache-
e 8 kByte adat, s 8 kByte utas int
cache egysge egy 16 kByte-os dul-portos definilatlan cache-bl (a
cache trolhat utastsokat s adatokat is vegyesen), s egy 256 Byte-os
tastsvonal cache-bl pl e

u
v - mi ahogyan mr a 80486-ban is. Ha
esszort az M1-es szuperpipeline, mg a
zsi technolgit alkalmaz. Ez azt jelenti,
ht szintre tagozdik, az M1-es esetben a
ttmkdse rdekben. Ez az M1-es
as, 100 MHz fltti rajelek alkalmazsra
s technolgival .
b mint 8 !
szeibe tekintnk bele, akkor az M1-es-ben
regisztert tallhatunk, szemben az x86
yen regiszterrel rendelkeznek. A nagyobb
ilisebb felhasznlst tesz lehetv. A
ksges rszeredmnyeket troljk, s ha
ni, akkor a processzor gy
az M1-es processzor mindig tele lehet
get eredmnyez. A feltteles ugrsok sorn
utastsokat felttelesen is vgrehajthatja
ldi Pentium regiszterkszlet tartalmt. Az
pezshez pedig a tbbszrs regiszterek
ts cache-re osztdik. Az M1-es elssz
u f l.
28
A Cyrix M1-es processzor csaldja
Utasts adat
Utasts vonal
CACHE
Adat
rendez
Definilatlan CACHE
0. kszlet
1. kszlet
2. kszlet
3. kszlet
CACHE
Cmzs
FPU
Adat busz
Busz
Interfsz
Egysg
Utasts vonal CACHE
hinyz adat
Mdostott X, Y
fizikai cmek



1.9. bra: Az M1-es definilatlan CACHE-e brmilyen arnyban
tartalmazhat adatot s utastst. Az utastsvonal CACHE pedig az
INTEGER egysg ltal leginkbb hasznlt utastsokat trolja.

Nzznk egy pldt: egy adatintenzv programszegmens tlterheli
a kisebb mret adatcache-t ( a Pentium esetben 8 kByte), s a chip
lassabban fog dolgozni, mert a tbbi adatot a kls memribl kell
beolvasnia. Az M1-es esetben ugyanez az adatintenzv
programszegmens egy nagyobb (16 kByte) definilatlan cache-ben
lelassuls nlkl hajtdhat vgre, mivel a processzornak kevsb kell a
kls memrira tmaszkodnia. Az M1-es sebessgi elnynek egy rszt
a tervezk a cache nagy sebessgvel rtk el, egyetlen raciklus alatt
29
Konkurens tdik genercis architektrk
kpes elrni az adatot. Ez a gyrt szerint ktszer gyorsabb a Pentium
datelrsnl.
g erre a vrakozsra, mert
ind a
elyik megllna.
a


1.2.2.3. Cskkentett fggsg - nagyobb sebessg

Amikor kt utasts fut prhuzamosan egy szuperskalr
processzoron eltrbe kerl a kt utasts kztti fggsg problmja. Ez
a fggs azt okozza, hogy az egyik utastsnak meg kell llnia, hogy
megvrja a msik vgrehajtst. Ez pl. akkor fordulhat el ha mind a kett
ugyanazt a regisztert egyidben szeretn hasznlni, gy az egyiknek
rnia kell. Az M1-es esetben nincs szks v
m 32 regiszter mindkt pipeline fell elrhet, ezrt mindegyik
utasts megkaphatja a msolatt errl a regiszterrl s egyiknek sem kell
vrakoznia. Egy msik problmt vet fel a szuperskalr processzorokban
amikor a kt prhuzamos pipeline-ban valamelyik utastsnak szksge
van a msik utasts eredmnyre. Az M1-es olyan adathvsi technikt
hasznl, amely biztostja mindkt pipeline-ban vgrehajtd utasts
redmnynek szimultn elrst anlkl, hogy valam e
Azzal, hogy az egyik utasts eredmnyt nem kell kirni a memriba s
a msik utasts ezt az eredmnyt mgis el tudja rni a processzor idt
takart meg, cskkennek a memria elrsi ciklusok.

30
A Cyrix M1-es processzor csaldja
1.2.2.4. Kiegyntett terhels -gyorsabb programfuts

Ha a pipeline kiegyenl-
tetlensgekkel terhelt, akkor az egyik
pipeline sokkal teltettebb mint a msik
ezrt a msiknak meg kell llnia, hogy
megmaradjon a program komplexitsa, ez
szintn lassulst eredmnyez. Az M1-es
tervezi ezt a kiegyenltetlensget gy
szntettk meg, hogy az aktulis utastst
mindig a kevsb terhelt pipeline-on
hajtatjk vgre, s az utastsok t tudnak
kelni a kt pipeline kztt. Az M1-es
rendelkezik a becsls kpessgvel, ez azt
jelenti, hogy meg tudja jsolni, hogy
melyik programg utastst kell betlteni
egy bizonyos pipeline-ba ahhoz, hogy idt
takartson meg. (Ezt a funkcit nevezzk
utasts elrejelzsnek.)

Ha az aktulis utasts mr fu
valamely pipeline-on mieltt mg a pontos
jslat ismeretes lenne, mr idt takart
r
mg



Utasts
Fetch
Utasts dekdols 1
Utasts
dekdols 2
Utasts
dekdols 2
Cm
szmts 1
Cm
szmts 1
Cm Cm
szmts 2 szmts 2
t
meg. Ha a jslat rossznak bizonyult, akko
nem vesztettnk idt, mivel a progra
ugrsi cmnek betltsre egybknt is
szksg lenne.
Vgrehajts Vgrehajts
Write-Back Write-Back

1.2.2.5. Kiugrs lehetsge a
vgrehajtsi sorrendbl

Abban az esetben ha az egyik
pipeline-ban lv utasts gyorsabb mint az
t megelz msik utasts, akkor kilphet
a pipeline sorrendbl, s betltdhet a
msik pipeline-ba - anlkl, hogy a
X Y
Pipeline Pipeline


1.10. bra: Az M1-es
processzor szuperpipeline-
okbl felptett INTEGER
egysge
31
Konkurens tdik genercis architektrk
programfuts felfggesztdne - gy nem kell processzoridt fecsrelni a
lassbb utasts vgrehajtsnak kivrsra.





1.11. bra: Kiugrs a vgrehajtsi sorrendbl. Az M1-es processzorban
az egyik pipeline vgrehajtsi sorban lv utastsnak nem kell
megvrnia a msik pipeline lassbb utastst. Kiugorva a vgrehajtsi
sorbl, idt lehet megtakartani a vrehajts sorn, a program futsnak
megszaktsa nlkl.
32
A NexGen Nx 586-os processzor csaldja
1.2.3. A NexGen Nx 586-os processzor csaldja


1.2.3.1. Hogyan lehet RISC processzorbl CISC avagy
fbl vaskarika ?
A NexGen kutatsainak gymlcse egy olyan nagy sebessg
8 l
me b
ko m
chi

Ennek ellenre a Microsoft kijelentette, hogy az Nx586 Windows
kompatibilis. A processzor joggal viselheti a Novell "YES It run with
NetWare" logjt is. A kompatibilitsi teszteket a fggetlen XXCAL
laboratrium vgezte el. A legnpszerbb software-k ciklusainak
trilliival teszteltk tbb opercis rendszer, s hlzati protokoll alatt.
Az eredmny megdbbent: "Platinium Certification "

Ezen sorok lttn azt hiszem sokakban felmerl a gondolat: Az
INTEL s a Pentium egy jabb, mlt ellenfelre akadt. No de nzzk,
mit takar a tokozs.





X 6-os processzor csald, amely a 486-os s Pentiumos rendszerekt
glehetsen klnbz rszekbl pl fl. A chip nem "l
mpatibilis" sem a 60-66MHz-es, sem a 75-90-100MHz-es Pentiu
pekkel, teht specilis alaplap kell hozz.
33
Konkurens tdik genercis architektrk
Nx 586
Processzor
Nx 587
Koprocesszor
SRAM
L2 CACHE

A chip-tl elvlasztva tallhatjuk meg a lebegpontos egysget
(FPU) mint ahogyan a 386 - 387 -es rendszerekben. Ezzel szemben
integrlsra kerlt a msodszint (L2, vagy kls) cache vezrlje, a le
processzorlapkn. Az Nx586-ban egy-egy kln-kln 64 bit szles busz
ll rendelkezsre a matematikai processzorral, s a kls SRAM-okkal
val trsalgsra. A harmadik 64 bit szles busz a rendszer tbbi tagjval
trtn kapcsolattartst biztostja. A kln cache-busz cskkenti a
memria, s az I/O ciklusok kztti konfliktusokat. Elny az is, hogy a
SIMM
DRAM
Rendszer
logika
modulok
16-bites ISA busz (8MHz) 32-bites PCI vagy VESA busz (30-33MHz)
64 bit
64 bit 64 bit
64 bit
Rendszer
interface



1.12. bra: Nx586 alap IBM PC kompatibilis szmtgp felptse
NxVL vagy NxPCI rendszerinterface chip felhasznlsval. A
atematikai processzor kln tokban helyezkedik el, mg a msodszint m
cache vezrlje a processzorlapkn kapott helyet.

34
A NexGen Nx 586-os processzor csaldja
cache-busz sebessge megegyezhet a CPU rajel frekvencijval, amg a
.2.3.2. x86 - RISC86
omplex Instruction Set Computer), amely sszetett
tastsokat tartalmaz, klnbz modellek szerint. Egy plda a CISC
sen s nem software-bl
mullva, mint ahogyan a Motorola PowrePC 603, vagy az Alpha
tjai a norml
ISC utastskszletnek, gy, hogy kzben "rkltk" az x86-os
rchitektra sajtossgait. A RISC nv mgis megilleti ezeket az
dknt alkalmazhatak.
86 felttelezett eredmnnyel hajtja vgre a
ltteles ugrsokat, s az ugrsi felttelek kirtkelse utn aktualizlja
rendszer-busz tetszleges sebessggel dolgozhat. Az interface-ek
elvlasztsnak a kivezetsek szma s a tokozs gazdasgossga szab
hatrt, ugyanis az Nx586 tokozsi kltsge (463 lb PGA tok) mr gy
is ktszerese egy Pentiumnak (296 lb PGA tok).


1

A RISC (Reduced Instruction Set Computer), egy olyan
processzortpust jellemez, amely csak kevs, a fordtk ltal gyakran
ignyelt (reduklt) utastst tartalmaz hatkonyabb implementciban.
Ellentte a CISC (C
u
processzoroknl hasznlhat modellek kzl: a Pentium Load & Store
modellje.

Egy Nx586-os processzor teljes mrtkben implementlja az X86-
os utastskszletet. Ez az implementci a RISC86-os architektrval
trtnik, vals idben, dinamikusan. Hardware-e
e
processzorok teszik, aminek hatalmas teljestmnycskkens a
kvetkezmnye. Ezek az utastsok kzvetlen leszrmazot
R
a
utastsokat, mert egyszer mikrok

Az x86-os architektra egyik szk keresztmetszete a korltozott
regiszterkszlet: csak 8 ltalnos felhasznls regisztere van. Itt segt
fordts, s a RISC processzorokban mr hagyomnyos 32 regiszter. Az
Nx586, az x86 8 regisztert 22 fizikai regiszterre kpezi le. Ezt az eljrst
nevezzk regiszter tnevezsnek.

Mire j a regiszter tnevezs? A pipeline-ok elakadsnak
elkerlse rdekben az Nx5
fe
azokat. Ez a nem optimalizlt programok esetn is fennll.
35
Konkurens tdik genercis architektrk
A 32 regiszter tbbszrsen lefedi a Pentium regiszterkszlett. A
pipeline folyamatos adatramlsa biztosthat a regiszterek gyors
tnevezsvel, gy a szmtsi eredmnyek tbb fzisa hozzfrhet az
adatok jrabetltse nlkl, teht a pipeline-ok nem akadnak el a lass
adatbetlts miatt.

X86 -os utastsok
Utasts fordt, s temez
Cmz egysg

Sok X86-os utasts egyszeren konvertlhat RISC86-os
utastss. Vannak azonban olyan X86-os utastsok is, - amelyek a
betlt-eltrol modellt hasznljk, pldul a memria kezelsi ciklusok-
amelyek csak kt, vagy hrom RISC86-os utastst ignyelnek.


RISC86-os utastsok
Vgrehajt
egysg
Vgrehajt
egysg
RISC86-os utastsok
Vgrehajt
egysg
RISC86-os utastsok

1.13. bra: A NexGen szabadalmaztatott RISC86-os architektrja
dinamikusan fordtja az sszetett X86-os (CISC) utastsokat
RISC86-os utastsokk, gy teht kihasznlhatja a RISC utastsok
sebessgi elnyeit.
36
A NexGen Nx 586-os processzor csaldja



1.2.3.3. Szuperskalr vgrehajts-javul hatsfok

Azt mr tudjuk, hogy egy X86-os utasts, fordts utn
ciklusonknt kt vagy tbb RISC86 utastsknt is megjelenhet, minden
funkcionlis egysgnl. A funkcionlis egysgeket gy terveztk, hogy
prhuzamosan tbb RISC86-os utastst is vgrehajthassanak. A NexGen
szuperskalr elnevezse RISC86-os szempontbl rtend.
A RISC86-os utastsok prhuzamossgnak jobb kihasznlhatsga
rdekben, minden egyes funkcionlis egysg 14 belpsi ponttal
rendelkez vgrehajtsi sorral rendelkezik.

Az Nx586-os mikroprocesszor - ahogyan a Pentiumok is - kt
INTEGER egysggel rendelkezik. A szokatlan azonban az, hogy ez az
egysg az Nx586-ban egyltaln nem szimmetrikus. Az egyik INTEGER
egysg vgzi a RISC86 integer utastsokat, belertve a szorzst s
osztst is, mg a msik INTEGER egysg az egyszer egyciklusos
utastsokat hajtja vgre. A dekder egysg rendelkezik egy "betlts
kiegyenlt" algoritmussal, s ennek segtsgvel irnytja az utastsokat
valamelyik INTEGER egysgre.

A RISC86 betlt s trol utastsok a CM-egysgbe kerlnek,
amely kiszmtja a cl cmet, s gondoskodik az X86-os szabvnyrl
szerinti fordtsrl. Mivel a chip csak egy egyszer CM-egysget
tartalmaz, ciklusonknt csak egy betlt, vagy trol utasts hajtdhat
vgre.


1.2.3.4. Az utasts-elrejelzsi CACHE (BPC)

Az Nx586 alkalmazza az elmleti futtats s az utasts elrejelzs
technikjt is.

Ha a processzor tallkozik egy programggal, elszr megbecsli
a vgrehajtshoz szksges idt, s majd ksbb kezdi el az utastsok
vgrehajtst. Ezt a mdszert nevezzk elmleti vgrehajtsnak. Az
37
Konkurens tdik genercis architektrk
Nx586 ke legtbb
setben a szl el,
mikor a harmadik programg vizsglata elkezddik.
nl. Ez a koncepci hasonlt az AMD
ust hasznl a
hvs esetn. Az Nx586 tartalmaz egy VISSZATRSI
.2.3.5. Cache hierarchia
n ngyutas csoport asszociatv cache-t alkalmaz a tallati
rny nvelse rdekben. A Pentiummal sszehasonltva mindkt
lag indexelt, s cmkzett cache-ek vannak, de a
tasak.
ttnl tbb programg elmleti futtatsra is kpes. A
z els programg jslata abban az idpillanatban k e
a

A NexGen utasts-elrejelzsi cache-e 5 ciklusos gbntetseket
alkalmaz. A BPC 96 belpsi ponttal rendelkezik, s az els 24 utasts
yte-ot tartalmazza minden clcm B
29000 GCL CACHE-ben alkalmazottra, de klnbzik a
Pentiumtl, mert a Pentium csak a clcmeket tartalmazza (256 elem
clcm puffer).

Az Nx586 kt bites "Smith and Lee" algoritm
programg jslatok ltrehozshoz. Minden egyes BPC adat 2 elrejelzs
bitet tartalmaz. Ha egy g ksik, a BPC jabb 2048 adattal bvl, a
processzor ellenrzi a 2 bit szles "gtrtnet" tblzatot, s nveli a
jslsi pontossgot.

Ez a kt struktra pontosan megjsolja az gfeltteleket, de nem
segt, ha a kd RET utastst tartalmaz. Ennek oka az, hogy ezek a
programgak nehezen kezelhetek, mert a clcmek vltozhatnak minden
gyes szubrutin e
CM VERMET, - hasonlatosan az Alpha architektrjra - ami 1-8
egymsba gyazott szubrutin hvst tud kezelni.

E a hrom struktra kombincija biztostja azt, hogy a legtbb
kd esetben a sikeres elrejelzsek arnya 90% fltt van.


1

Azzal, hogy a lebegpontos egysg lekerlt a processzor
lapkjrl, elegend hely maradt nagyobb cache-ek felptsre. Az
Nx586 16 kByte utasts-, s 16 kByte adatcache-t tartalmaz. Ezek a
memrik ppen ktszer nagyobbak a Pentium adat- s utastscache-
nl. A NexGe
a
processzorban fizikai
entium esetben ktu P
38
A NexGen Nx 586-os processzor csaldja

g: a 0.5 mi echnolgia 66M ben
minde s alatt egy el dlyez, ezrt k lrs
zajlik ciklus alatt. 6 egyetlen cm ggel
re , hogy m che elrs csak int
(L2) cache, vagy a rendszerbusz elrsre hasznlhat. Sok processzorban
felf ts vgreha or a fent emlt nyek
bekvetkeznek, de az Nx586 az utasts vgrehajtsnak lelassulsa
nlkl kpes kezelni ezeket az esem

dszint cache-kontroller norml SRAM-okbl
felp re csatlakoz ls cache-nek azonban csak
ktfle konfigurcijt tmogatja: 256k vagy 1M. A mso ache
egysges, utastsokat s adatokat is tartalmazhat, s akrcsak az
els tas csoport tv. A klscache elrsre a
ms rl kt ciklust alkalmaz, ezrt 66MHz-es rajelnl
mi M-ok sz k.

Elrsi sebess kronos t Hz eset
gyik flperidu rst enge t cache-e
le egyetlen ra Az Nx58 z egys
a m dsz ndelkezik, ebbl addik sodik ca so
ggesztdik az utas jts amik ett esem
nyeket.
A beptett mso
tett kls cache- ik. A k
dszint c
s u zint cache, ngy
dszint cache-vez
asszocia
o
imlisan 15ns-os SR n A ksgese
1
66 MHz
1
660
1 15
s
ns
00000
= =


sa ugyanabb p-ben trtnik, ah datok
trolsa, ezrt az alkalmazhat ad ria 6%-kal cskken. Minden
cm iklust igny ahogyan a 8 B avak
(quadword-k) is. A felhasznlt adatelrsi minta 4-2-2-2. Cmkk
soro beolvassho nlhat a csopor ciatv
cache Mivel a pon port detektlt, a be ass az
adato atokban trtn

Az Nx586-os egy kicsivel hosszabb adatelrsi mintkat hasznl
mint egy 66MHz-es Pentium, amelyik ugyanazokkal a 15ns-os SRAM-
okkal tipikusan 3-2-2-2 -es mintkkal dolgozik. A NexGen-fle csoport
asszociatv mdszer nagyobb tallati arnyt biztost. A fentiekben vzolt
implementci elnye, hogy azonos cache-elrsi mintk esetn nagyobb
frekvencikat alkalmaz, mivel a cache-busz sebessge fggetlen lehet a
rendszerbusztl. Egy 100MHz-es Nx586-os 4-2-2-2 -es cache elrsi
mintval 10ns-os SRAM-okat ignyelne. A 100MHz-es Pentium
A cmkk trol an a chi ol az a
atmem
ke beolvassa kt c el, mint yte-os sz
zatokban trtn z hasz t-asszo
implementci. tos cso olv
kkal egytt soroz ik.
39
Konkurens tdik genercis architektrk
rendszerbusza 66MHz-en "ketyeg", s 5-3-3-3 -as modellt hasznl. A
Pentiumnak kisebb sebessge ellenre elnyre szl, hogy megtarthatjuk
a kevsb kltsges 15ns-os SRAM-jainkat.

A lapkra integrlt cache-k WRITE-THROUGH protokollt
hasznlnak, mg a kls cache-ek esetben a tervezk a WRITE-BACK
mdszert alkalmaztk a rendszerbusz forgalmnak cskkentse
rdekben. Az adat- s utastscache-ek tmogatjk az nmdost
kdokat.
40
Landmark 2.0
2. fejezet: Processzor erforrsok

an a Pentium ssgnek ponto tse
cljbl sszevetettk nhny gyrt 32, vagy 64 bites X86-os archi-
tektrj processzort.

Byte kls felhasznlsva Az
e n kzlj ls cache mret
processzoroknl klnbz lehet, a klnbsgekre - tpusjelzs szerint -
az e else sorn k .

ents SLC jelzs processzorai esetben, egy
vala fixen beforrasztott processzor llta a sarat a tesztek
ny ek kvetke , hogy klnbz ls
cache-sel, s esetleg FPU nlkl trtntek meg a mrsek. Az SLC33-as
pr alaplap 64 kByte, az SLC2-66 128 kByte kls
ca z SLC2-5 aplap nem rendelkezett kls
cache-foglalattal. Az ezektl eltr ben 256 kByte 1 he-t
h

486-os p rok minden gyrt esetben
tarta pontos egysget. A tblzatokban a "+FPU" jelzs
kls jelent. Ha az 486SX - 486SLC tpusoknl nem
jell r jelenltt, nyek ntos
egysg nlkl rtkelendek. Az Nx 586-os processzort fogad alaplap
NxVL rendszervezrl chip-pel plt fel, s nem rendelkezett
koprocesszor foglalattal.

lt processzor minden esetben lteznek az
aktulis tpusjelzs alatt, csak a jobb sszehasonlthatsg rdekben
vettk el ket". Ezek fizikailag az elrtnl magasabb rajellel
m ghajtott "tuningolt" de kifogstalanul mkd pldnyok, pl.: az
Am486DX4-120 valjban egy AmDX4-100, 120MHz-es rajel
frekvencival.

Landmark 2.00


Az albbiakb ok sebe s rzkelte
A tesztek 256 k -cache l kszltek.
ttl eltr eseteket kl k. A be klnbz TI
redmnyek kirtk itrnk
A Texas Intrum
milyen alaplapba
zprbi sorn. Enn zmnye mret k
oc esszort tartalmaz
che-t tartalmazott. A 0-es al
esetek 5ns-os cac
asznltunk fel.
A DX jelzs rocesszo
lmazzk a lebeg
koprocesszort
tk koprocesszo a mrsi eredm lebegpo
A *-gal jel ok nem
"k
e
41
Processzor erforrsok
Processor Tpus: CPU (MHz) FPU (MHz)
PENTIUM 90 519,47 1743,79
PENTIUM 66 385,85 1299,15
PENTIUM 60 346,74 1169,92
NEXGEN Nx586 P90 527.15 --
Am 486DX4-120 * 401,59 1059,28
INTEL 486DX4-100 359,53 882,57
Am 486DX4-100 334,15 856,64
Am 486DX2-100 * 334,62 882,79
INTEL 486DX2-80 * 267,70 706,05
Am 486DX2-80 267,70 704,11
Cyrix 486DX2-V80 264,45 770,57
INTEL 486DX2-66 222,96 587,49
Am 486DX2-66 222,91 588,02
Cyrix 486DX2-V66 219,94 640,87
TI 486SLC2-66+FPU 152,76 162,07
INTEL 486SX2-50 167,30 14,10
TI 486SLC2-50+FPU 115,15 116,70
Am 486DX-40 133,84 353,06
TI 486SXLC-40 129,81 10,66
TI 486SLC-40 129,90 6,45
INTEL 486DX-33 110,37 291,15
TI 486SLC-33 107,98 7,42
INTEL 486SX-25 83,67 7,04
Am 386 DX-40 62,40 --
Am 386SX-40 52,19 --
42
Landmark 2.00
PENTIUM 90
PENTIUM 66
PENTIUM 60
NE
IN
T
XGEN Nx586 P90
Am 486DX4-120 *
TEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
I 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40 52.19
62.4
83.67
107.98
110.37
129.9
129.81
133.84
115.15
167.3
152.76
219.94
222.91
222.96
264.45
267.7
267.7
334.62
334.15
359.53
401.59
527.15
346.74
385.85
519.47
0 100 200 500 60
La k 2 se g )
300 400 0
ndmar .0 CPU bess ek (MHz
PENTIUM 90
PENTIUM 66
NE
IN
T
PENTIUM 60
XGEN Nx586 P90
Am 486DX4-120 *
TEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
I 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40

43
Processzor erforrsok
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
7.04
7.42
291.15
6.45
10.66
353.06
116.7
14.1
162.07
640.87
588.02
587.49
770.57
704.11
706.05
882.79
856.64
882.57
1059.28
1169.92
1299.15
1743.79
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Landmark 2.0 FPU sebessgek (MHz)
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40



44
CHECKIT 3.0
CHECKIT 3.0

Processor Type: Dhrystones Whetstones
PENTIUM 90 70577 25940900
PENTIUM 66 52749 21665700
PENTIUM 60 47474 19360100
NEXGEN Nx586 P90 59343 1015400
Am 486DX4-120 * 55852 20808800
INTEL 486DX4-100 43158 14893800
Am 486DX4-100 39211 12872800
Am 486DX2-100 * 47474 17337700
INTEL 486DX2-80 * 39211 13109500
Am 486DX2-80 39211 13109500
Cyrix 486DX2-V80 39211 13876500
INTEL 486DX2-66 33609 11419900
Am 486DX2-66 33609 11419900
Cyrix 486DX2-V66 33609 11561800
TI 486SLC2-66+FPU 29759 3705600
INTEL 486SX2-50 24348 461000
TI 486SLC2-50+FPU 21427 2605100
Am 486DX-40 19303 6880100
TI 486SXLC-40 16999 334800
TI 486SLC-40 9749 201600
INTEL 486DX-33 15785 5703700
TI 486SLC-33 11236 224000
INTEL 486SX-25 12054 226600
Am 386 DX-40 11631 312200
Am 386SX-40 7206 114600

45
Processzor erforrsok
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40 7206
11631
12054
11236
15785
9749
16999
19303
21427
24348
29759
33609
33609
33609
39211
39211
39211
47474
39211
43158
55852
59343
47474
52749
70577
0 10000 20000 30000 40000 50000 60000 70000 80000
Checkit 3.0: CPU sszehanonlts Dhrystone-ok
alapjn
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40

46
CHECKIT 3.0
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40 114600
312200
226600
224000
5703700
201600
334800
6880100
2605100
461000
3705600
11561800
11419900
11419900
13876500
13109500
13109500
17337700
12872800
14893800
20808800
1015400
19360100
21665700
25940900
0 10000000 20000000 30000000
Checkit 3.0: FPU sszehasonlts Whetstones-ok
alapjn
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40

47
Processzor erforrsok
MIPS 1.20: (MIPS)

Processzor Tpus: Gener
al Inst.
Intege
r Inst.
Mem.
-mem.
Reg. -
reg.
Reg. -
mem.
tlago
s:
(MIPS
)
PENTIUM 90 13,34 23,48 17,19 29,59 28,21 22,36
PENTIUM 66 9,84 17,39 13,10 21,91 21,44 16,73
PENTIUM 60 8,88 15,66 11,79 19,74 19,30 15,07
NEXGEN Nx586 P90 7,73 27,54 4,44 31,52 13,86 16,94
Am 486DX4-120 * 11,96 27,99 16,05 34,24 25,55 23,16
INTEL 486DX4-100 10,04 27,17 13,36 34,40 21,27 21,25
Am 486DX4-100 9,9 23,30 13,21 28.50 21,18 19,22
Am 486DX2-100 * 10,01 23,32 13,37 28,53 21,33 19,31
INTEL 486DX2-80 * 8,05 18,66 10,70 22,82 17,06 15,46
Am 486DX2-80 7,97 18,66 10,70 22,82 17,06 15,44
Cyrix 486DX2-V80 9,70 22,90 14,09 29,62 19,80 19,23
INTEL 486DX2-66 6,66 15,54 8,91 19,01 14,21 12,86
Am 486DX2-66 6,68 15,53 8,91 19,00 14,20 12,86
Cyrix 486DX2-V66 8,08 19,05 11,72 24,64 16,47 15,99
TI 486SLC2-66+FPU 7,29 13,59 10,73 15,31 14,81 12,34
INTEL 486SX2-50 5,00 11,66 6,68 14,26 10,68 9,66
TI 486SLC2-50+FPU 5,66 10,24 8,01 11,54 11,08 9,31
Am 486DX-40 4,03 9,32 5,35 11,41 8,55 7,73
TI 486SXLC-40 4,77 11,13 6,95 14,13 9,36 9,33
TI 486SLC-40 4,77 11,13 6,70 14,42 9,36 9,28
INTEL 486DX-33 3,31 7,69 4,41 9,41 7,05 6,37
TI 486SLC-33 3,96 9,27 5,69 12,01 7,77 7,74
INTEL 486SX-25 2,51 5,83 3,34 7,13 5,33 4,83
Am 386 DX-40 3,14 6,08 4,00 8,86 5,65 5,71
Am 386SX-40 2,60 5,82 3,61 8,42 4,76 5,04

48
MIPS 1.20
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40

PENTIUM 90
PENTIUM 66
Cyri
INTEL 486DX2-66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
x 486DX2-V80
0 20 40 60 80 100 120
MIPS 1.2 (MIPS)
PENTIUM 90
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
Regiszter-memria
mozgats
Regiszter-regiszter
mozgats
Memria-memria
mozgats
Integer utastsok
General utastsok
PENTIUM 66
Cyri
INTEL 486DX2-66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
x 486DX2-V80

49
Processzor erforrsok
CPUTEST 1.1 (MIPS)
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
Am 486DX4-100
INTEL 486DX2-66
Am 486DX2-66
Cyrix 48
TI 486SLC2-66+FPU
INTEL 486SX2-50
INTEL 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
6DX2-V66
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
25.182
19.419
17.486
22.803
28.432
20.31
17.889
23.66
18.936
18.938
20.666
15.781
15.867
17.193
13.57
13.226
9.934
10.816
8.913
8.305
8.943
5.865
6.571
7.239
5.652
0 5 10 15 20 25 30 35
CPUTEST 1.1:
tlagos mveleti sebessg (MIPS)
PENTIUM 90
Am 486DX4-120 *
Am 486DX4-100
INTEL 486DX2-66
Am 486DX2-66
Cyrix 48
TI 486SLC2-66+FPU
INTEL 486SX2-50

TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
INTEL 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
6DX2-V66
50
CPUTEST 1.1
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
C
0
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
yrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-4
52.324
38.766
34.909
67.448
56.496
47.04
47.036
47.073
37.658
37.658
34.445
31.367
31.357
28.65
27.937
23.535
23.588
18.828
19.978
19.978
15.526
10.875
11.773
19.764
17.164
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75
CPUTEST1.1:
Regiszter - regiszter (MIPS)
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
C
0

Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
yrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-4
51
Processzor erforrsok
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
39.324
29.174
26.272
25.787
35.481
19.477
14.526
29.563
23.65
23.65
28.669
19.699
19.692
23.846
19.19
19.456
13.733
15.139
11.609
10.969
12.485
5.515
9.341
6.37
3.7
0 5 10 15 20 25 30 35 40 45
CPUTEST1.1:
Regiszter - memria (MIPS)
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
52
CPUTEST 1.1
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
486DX2-V80 Cyrix
INTEL 486DX2-66
INTE
TI 486SLC2-50+FPU
TI
Am 386SX-40
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
L 486SX2-50
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
486SLC-33
INTEL 486SX-25
Am 386 DX-40
38.979
35.627
32.081
27.389
15.195
9.126
6.451
12.09
9.671
9.671
17.521
8.056
9.149
14.573
8.245
9.482
4.766
9.027
2.713
3.761
7.867
6.339
3.964
9.807
5.041
PENTIUM 90
Cyrix
INTEL 486DX2-66
INTE
TI 486SLC2-50+FPU
TI
Am 386SX-40
INTEL 486SX-25
Am 386 DX-40
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
486SLC-33
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
L 486SX2-50
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
486DX2-V80
0 5 10 15 20 25 30 35 40 45
CPUTEST1.1:
Memria - memria (MIPS)
53
Processzor erforrsok
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
486DX4-100 Am
Am
Cyrix 486DX2-V66
INT
TI 486SLC-33
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
486DX2-66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
EL 486DX-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
10.847
8.036
7.237
8.818
6.31
3.935
3.058
5.314
4.251
4.251
5.579
3.541
3.54
4.64
3.61
3.385
2.327
3.163
2.243
2.243
2.65
1.777
1.91
1.813
1.617
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
0 2 4 6 8 10 12
CPUTEST1.1:
Stack mveletek (MIPS)
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
486DX4-100 Am
Am
Cyrix 486DX2-V66
INT
TI 486SLC-33
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
EL 486DX-33
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
486DX2-66
54
CPUTEST 1.1
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
A
Am 386 DX-40
Am 386SX-40
m 486DX4-100
m 486DX2-100 * A
INT
486DX2-80
TI
INTEL 486SX-25
EL 486DX2-80 *
Am
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
486SLC-33
0.383
0.4
0.355
0.602
0.496
0.273
0.259
0.553
0.519
0.535
0.569
0.503
0.226
0.503
0.642
0.495
0.634
0.479
0.48
0.48
0.143
0.473
0.529
0.579
0.27
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
CPUTEST1.1:
I/O mveletek (MIPS)
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
A
INT
486DX2-80
TI
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
486SLC-33
Am
Cyrix 486DX2-V80
INTEL 486DX2-66
EL 486DX2-80 *
Am 486DX4-100
m 486DX2-100 *
55
Processzor erforrsok
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
86DX4-120 *
6DX4-100
Am 4
INTEL 48
INTEL 486DX2-80 *
C
IN
TI 486SLC-40
I
INTEL 486SX-25
Am 486DX4-100
Am 486DX2-100 *
Am 486DX2-80
yrix 486DX2-V80
TEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
NTEL 486DX-33
TI 486SLC-33
Am 386 DX-40
Am 386SX-40
6.87
5.09
4.583
8.362
8.874
9.023
7.388
7.394
5.915
5.915
8.049
4.927
4.925
6.695
4.954
3.697
3.734
2.957
4.086
4.086
2.439
3.279
1.849
3.053
1.864
0 1 2 3 4 5 6 7 8 9 10
CPUTEST 1.1:
Matematikai mveletek FPU nlkl (MIPS)
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
86DX4-120 *
6DX4-100
Am 386 DX-40
Am 386SX-40
Am 4
INTEL 48
INTEL 486DX2-80 *
C
IN
TI 486SLC-40
I
INTEL 486SX-25
NTEL 486DX-33
TI 486SLC-33
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
Am 486DX2-80
yrix 486DX2-V80
TEL 486DX2-66
Am 486DX2-66
Am 486DX4-100
Am 486DX2-100 *
56
CPUTEST 1.1
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
486DX2-80 Am
Am 486DX2-66
Cyrix 486DX2-V66
Am
Am
Cyrix 486DX2-V80
INTEL 486DX2-66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
386 DX-40
386SX-40
25.223
18.687
16.828
20.224
26.057
16.631
13.441
21.765
17.412
17.412
20.11
14.503
14.498
16.727
14.035
13.478
9.569
11.057
8.852
6.672
9.118
6.376
6.831
4.793
3.525
PEN
Am
Am 486DX2-66
Cyrix 486DX2-V66
Am
Am
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
386 DX-40
386SX-40
Cyrix 486DX2-V80
INTEL 486DX2-66
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
486DX2-80
TIUM 90
0 5 10 15 20 25 30
CPUTEST 1.1:
Logikai mveletek (MIPS)
57
Processzor erforrsok
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
486DX2-V66 Cyrix
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI
INTEL 486SX-25
86 DX-40
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
486SLC-33
Am 3
Am 386SX-40
52.595
38.967
35.09
39.115
56.128
34.951
26.242
46.921
37.456
37.456
55.208
31.2
31.188
45.92
29.434
24.68
20.433
19.744
22.785
19.085
16.282
18.148
12.344
13.04
11.41
0 5 10 15 20 25 30 35 40 45 50 55 60 65
CPUTEST 1.1:
Adatforgats (Bit/s)
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Cyrix
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI
INTEL 486SX-25
86 DX-40 Am 3
Am 386SX-40
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
486SLC-33
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
486DX2-V66
58
CPUTEST 1.1
PENTIUM 90
PENTIUM 66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Cyrix 486DX2-V80
INTEL 486DX2-66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
0.041
0.022
0.018
7.486
50.846
42.338
42.332
42.365
33.892
33.892
15.844
28.23
28.222
13.179
14.081
21.101
10.614
16.945
7.471
7.47
13.973
1.185
10.596
5.929
3.85
0 10 20 30 40 50 60
CPUTEST 1.1:
JMP/CALL utastsok (MIPS)
PENTIUM 90
PENTIUM 66
Am 486DX2-66
Cyrix 486DX2-V66
TI 486SLC2-66+FPU
INTEL 486SX2-50
TI 486SLC2-50+FPU
Am 486DX-40
TI 486SXLC-40
TI 486SLC-40
INTEL 486DX-33
TI 486SLC-33
INTEL 486SX-25
Am 386 DX-40
Am 386SX-40
ennyi
Cyrix 486DX2-V80
INTEL 486DX2-66
PENTIUM 60
NEXGEN Nx586 P90
Am 486DX4-120 *
INTEL 486DX4-100
Am 486DX4-100
Am 486DX2-100 *
INTEL 486DX2-80 *
Am 486DX2-80
Ha azt szeretnnk megtudni, hogy az egyes 486-os architektrk
m ben hasonltanak, vagy trnek el egymstl, elg a mrsi adatok
kztt vizsgldnunk. Az ugrsok (JMP/CALL), matematikai mveletek -
koprocesszorral s anlkl - sebessgi klnbsgbl kitnik, hogy a
59
Processzor erforrsok
Cyrix processzorok felptse lnyegesen klnbzik az INTEL s az
AMD ltal hasznlt struktrktl. Egy gyorsabb koprocesszort, s kicsivel
yorsabb, az INTEL-tl klnbz CPU-t takar a tokozs. Az INTEL s
z AMD DX2-66 -os processzora esetben az is kitnik, hogy az INTEL
r bellrl teljesen
egegyezik! Mindegyik tesztprogram a teljesen azonos eredmnyeket
ez a helyzet. Ebben a
ategriban a Cyrix viszi a plmt. A tesztprogramok mr-algoritmus
pros
mre
mrt
mr
azon
param
esetben az eredmny szintn nagymrtkben fgg a cache mrettl. A
IPS s a CPUTEST esetben azonban a helyzet sokkal jobb.

Penti
mr
bels
magu
CAL
isme
utas
JMP-CALL utastsok vrehajtsrl kszlt tblzat/
mve
Penti
mind
fejez
techn
szere
okna
proce
rends
g
a
nem alaptalanul perlekedett: a kt processzo
m
mutatott. A DX2-80 -asok esetben szintn
k
hosszait is rdemes megfigyelni. Az rul a Texas SCL40 - SXLC40
a, ugyanis klnbsg a kt tpus kztt csak a bels-cache
tben van. Az SLC40-ben 1 kByte (!), az SXLC40-ben 8 kByte. A
adatokbl kiderlt, Landmark CPU sebessg mrse nem, FPU
se pedig nagymrtkben fgg a belscache mrettl, egybknt
os teljestmny processzorok esetn. (Sokszor sajnos nem csak azt a
tert mrjk amelyiket szeretnnk!) A Dhrystone-ok Whetstone-ok
M

Az ugrsokat sszehasonltva sokakat meglep a tny, hogy a
umok, s az Nx586 esetben is meglehetsen alacsony rtkeket
nk. Csodk ebben a mfajban nincsenek. A processzorok a kls, s
cache-ek feltltsvel, s az utasts elrejelzssel foglaljk el
kat, pipeline-ok pedig az ugrs utn nem lehetnek tele utastssal. (A
L utasts esetben a helyzet mg rosszabb: az elbbiekben
rtetett procedrk ktszer - egyszer a CALL, s egyszer a RET
ts eredmnyeknt - hajtdnak vgre.) /lsd: CPUTEST 1.1

rdekes dolgokra bukkanhatunk, ha az Nx586 regiszter
leteinek sebessgt vetjk ssze az azonos slycsoportba tartoz
umval: a kizrlag regiszterek kztt vgrehajtott mveletekben
ig az Nx586 vezetett. Ennek magyarzata - az Nx586-rl szl
etben mr trgyalt - 32 regiszter, s a regiszter tnevezsi
olgia. Sajnos az Nx586 a memria mveletek mrseinl nem
pelt tl fnyesen, ezt az alaplapra integrlt 12ns-os CACHE-RAM -
k tulajdontjuk. (A Nexgen 10ns-os cache-RAM -okat r el a P90-es
sszorhoz.) A msik sszetev, hogy PCI-buszra pl
zervezrl chippel (pl.: NxPCI rendszer vezrl) ugyanazon
60
CPUTEST 1.1
proce
(90M

Szmunkra meglepetst okozott a Cyrix, s a DX4-es
z utastsok (FP) a ktszeres
ontossg alakok hasznlatt felttelezik.
UTASTS NEXGEN INTEL IBM
sszorral egy nylfarknyival nagyobb sebessg rhet el.
Hz-nl kb.: 2,5-3%)

processzorok a Pentiumokhoz viszonytott meglehetsen magas
INTEGER mveleti sebessge. Most nzzk milyen klnbsgek vannak
az utastsok vgrehajtsnak temezsben nhny konkurens tdik
genercis processzorban. Kiemeltnk nhny matematikai utastst a
teljessg ignye nlkl. A tblzat az utasts vgrehajtsnak idejt a
vgrehajtshoz szksges rajel ciklusok szmval adja meg. A
matematikai processzorra vonatko
p


Nx586 Pentium PowerPC
601
FP ADD kss: 2 3 4
eredmny: 2 1 1
FP MUL kss: 2 3 4
eredmny: 2 2 2
FP DIV kss: 40 39 31
eredmny: 40 39 29
MUL (integer) kss: 8 10 9
DIV (integer) kss: 39 41 36

rdekessgknt nzzk meg a Pentium processzor s konkurensei
r alatt mrt INTEGER, s Floating Point
ISC processzorknt hardware-sen (pl.: Nx586),
sok (pl.: PowerPC, R4400, Alpha) software-b


UNIX opercis rendsze
teljestmnyeit. Egyesek R
m l emullva valstjk
meg az x86-os architektrt.
61
Processzor erforrsok


Processzor
tpus
Bels rajel
frekvencia

SPECint92

SPECfp92
Bels-cache
mret
Pentium 60 60MHz 58.3 52.2 16 kByte
Pentium 66 66MHz 64.5 56.9 16 kByte
Pentium 75 75MHz 83.8 60.8 16 kByte
Pentium 90 90MHz 100.9 73.5 16 kByte
Pentium 100 100MHz 112.7 81.8 16 kByte
SPARC+ 50MHz 65.2 83 36 kByte
PowerPC601 66MHz 75 91 32 kByte
PowerPC603 66MHz 55 65 16 kByte
PowerPC604 100MHz 140 145 32 kByte
HP7100 99MHz 80 150 --
Alpha21064 150MHz 84.4 127.7 16 kByte
MIPS R4400SC 150MHz 61.7 63.4 16 kByte
Cyrix M1 100MHz 130 nincs adat 16 kByte

Gyrtk: Pentium -INTEL
PowerPC -IBM
K5 -AMD
M1 -CYRIX
HP7100 -HEWLET-PACKARD
R4400 -MIPS
Alpha21064 -DEC
Nx586 -NEXGEN
62
UNIX SPECint SPECfp tesztek
Pentium 60
Pentium 66
Pentium 75
Pentium 90
Pentium 100
SPARC+
erPC601
PowerPC603
rPC604
HP7100
ha21064
4400SC
Cyrix M1
Pow
Powe
Alp
MIPS R
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150
Pentium 60
Pentium 66
Pentium 75
ntium 90
Pentium 100
SPARC+
erPC601
PowerPC603
rPC604
HP7100
ha21064
4400SC
Cyrix M1
UNIX SPE

Pe
Pow
Powe
Alp
MIPS R
Cint92

MIPS R4400SC
Cyrix M1
Pentium 60
Pentium 66
Pentium 75
Pentium 90
Powe
HP7100
Alpha21064
Pentium 100
SPARC+
rPC601
PowerPC603
PowerPC604
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150
MIPS R4400SC
Cyrix M1
UNIX SPECfp92
Pentium 90
Powe
HP7100
Alpha21064
PowerPC603
PowerPC604
Pentium 100
SPARC+
rPC601
Pentium 75
Pentium 60
Pentium 66

63
ltalnos CPU programozsi informcik
3. Fejezet: ltalnos CPU programozsi
informcik


3.1. A memria felptse
emr
echanizmus, mely tbb, fggetlen
kevesebb RAM-ot s
nagy
mtart
gz hardware a logikai cmet a
emszegmentlt cmtartomny cmzshez szksges lineris cmm, a
programok s rendszerek
egbzhatsgnak nvelse rdekben. Pldul megelzhet az, hogy
program
ensbe

A Pentium processzor buszra kapcsolt memria neve fizikai
memria, mely 8 bites Byte-okbl ll sorozatnak tekinthet. Minden
Byte-nak megfelel egy s csakis egy, fizikai cmnek nevezett cm,
amelynek rteke 0-tl maximum 2
32
-1-ig (4 GByte) terjedhet.

A memria kezelst a megbzhat s hatkony mkds
rdekben a hardware vgzi. A memriakezels hasznlata esetben a
rogramok nem rik el kzvetlenl a fizikai memrit, hanem egy p
m iamodellt cmeznek, melynek virtulis memria a neve.

A memria kezelse szegmentlsbl s lapozsbl ll. A
egmentls egy olyan m sz
cmtartomnyt biztost. A lapozs mechanizmusa
gy bizonyos mennyisg lemeztrol kapacitst ignyl e
c omny modelljt tmogatja. Hasznlhat mindkt vagy csak az
egyik mdszer a kett kzl. Egy program ltal hasznlt cmek logikai
cmek. A szegmentlst v
n
lapozst vgz hardware pedg a lineris cmeket fizikai cmekk alaktja
t.

A memria tekinthet egyetlen "lapos" cmtartomnyknt is, mint
amilyen a fizikai memria; tekinthet azonban egy vagy tbb, egymstl
fggetlen memriarsznek is, melyek neve szegmens. Egy program
legtbb 16383 klnbz fajta s mret szegmenst hasznlhat. A
szegmensek felhasznlhatk a
m
egy program verme, tllpve a neki sznt terletet, fellrja a
djt kpez utastsokat; ez a kd s a verem kt kln szegm k
val helyezsvel rhet el. gy mindegyik szegmens meghatroz egy
modult.
64
A memria felptse

Mindkt, a lapos s a szegmentlt modell is biztostja a memria
delmt. E kt modell kzt elhelyezked modellek szintn
cmet kpez.
k. Az
lkalmazsfejlesztk szmra a lapozs nem rzkelhet, rszletek ezzel
a lapos modell. Br nincs olyan
zemmdbit vagy vezrlregiszter amelyik a szegmentl mechanizmust
zegmensnek ugyanarra a
neris cmre val lekpezsvel. Ennek kvetkeztben minden
emr
hardware vdelmet nyjt a software hibk ellen. Ha egy logikai cm egy
v
kivlaszthatk. Egy memriamodell kivlasztsnak szempontjait s azt,
ahogyan a rendszerprogramozk egy modellt megvalstanak, az
alkalmazsi terlet hatrozza meg.

Fggetlenl attl, hogy tbb szegmens van hasznlatban vagy
sem, a logikai cmek lineris cmekk val talaktsa a cmeket egy
szegmensen belli ofszetnek rtelmezve trtnik. Minden szegmensnek
van egy szegmensdeszkriptora, mely tartalmazza a szegmens bziscmt
s mrethatrt. Ha az ofszet nem haladja meg ezt a hatrt, s nincs ms
felttel, mely megakadlyozn a szegmenshez val hozzfrst, az ofszet
s a bziscm sszeaddik s a lineris

Ha a CR0 regiszter 31. bitje trlve van (a CR0 regisztert lsd
ksbb), a szegmentlsbl add lineris cm fizikai cmknt lesz
felhasznlva. Ez a regiszterbit hatrozza meg hogy hasznlatban van-e
lapozs vagy sem. Ha a bit 1-re van lltva, a lineris cm fizikai cmm
val talaktst a lapoz hardware vgzi.

Ha tbb szegmens van hasznlatban, ezek rszei az
alkalmazsfejleszt ltal hasznlt programozsi krnyezetne
a
kapcsolatban ksbb.

3.1.1. Nemszegmentlt vagy "lapos" modell

A legegyszerbb memriamodell

kikapcsoln, ugyanez a hats rhet el minden s


li
m iamvelet ugyanarra a memriatartomnyra fog vonatkozni.

A lapos modellben a szegmensek lefedhetik a fizikai cmek egsz
skljt vagy csupn azokat a rszeket, melyek a fizikai memriba
vannak lekpezve. A kisebb cmtartomny elnye, hogy egy minimlis
65
ltalnos CPU programozsi informcik
nemltez cmet (melyhez nem tartozik memria) jell, akkor egy kivtel
keletkezik (kivteleket lsd ksbb).
.1.2. Szegmentlt modell
mutatsra kerl cmtalakt mechanizmus segtsgvel
pezi le. A programozknak ezt a lekpezst nem kell figyelembe
fszetek s minden egyes szegmenshez val hozzfrs kln
llenrizhet.
- a szegmensen belli 32 bites cm.


3

A memria felptsnek szegmentlt modellje a logikai cmek
tartomnyt 16383, egyenknt maximum 4 GByte mret szegmensre
osztja, melyek nagysga sszesen 2
46
Byte (64 TByte). Ezt a 64 TByte
logikai cmtartomnyt a fizikai cmtartomnyra a processzor a
ksbbiekben be
k
vennik. A szegmentlt modell elnye az, hogy a cmtartomnyokon
belli o
e

Egy, a szegmentlt cmtartomnyt cmz pointer kt rszbl ll (lsd a 3.1
brt).

1. Szegmensszelektor - a szegmenst azonost 16 bites mez.
2. Ofszet



3.1. bra: Szegmentlt cmzs
66
Regiszterek
3.2. Regiszterek

A processzornak tizenhat, a programozk ltal hasznlhat
regisztere van. Amint azt a 3.2. bra is mutatja. Ezek a kvetkezkppen
soportosthatk:
nyolc darab 32 bites regisztert a
programoz szabadon hasznlhatja.
teszik annak
megvltoztatst.
.2.1. ltalnos regiszterek
is (kivve az ESP
gisztert, mely nem hasznlhat indexoperandusknt). A felsorolt
X, CX, DX, BP, SP, SI, DI
ltalnos regisztereinek neveibl szrmaznak. Ahogy a 3.2. bra is
utatja
ls Byte-ok).


c

1. ltalnos regiszterek. Ezt a

2. Szegmensregiszterek. Ezek a regiszterek a klnbz
memriahozzfrsi mdokhoz hozzrendelt szegmensszelektorokat
tartalmazzk. A kd- s veremterlethez val hozzfrs pldul kln
szegmensregiszterek segtsgvel trtnik. Ez a hat regiszter a
pillanatnyilag hozzfrhet memriaszegmenseket hatrozza meg.

3. llapot- s vezrlregiszterek. Ezek a regiszterek a processzor
llapotrl adnak tjkoztatst s lehetv


3

Az ltalnos regiszterek az EAX, EBX, ECX, EDX, EBP, ESP,
ESI, EDI 32 bites regiszterek. Ezek a regiszterek a programoz ltal
szabadon vlasztott rtkeket tartalmazhatnak (logikai, aritmetikai
mveletek operandusait, eredmnyt stb). Ezenkvl tartalmazhatjk mg
a cmszmtsokhoz szksges operandusokat
re
regiszterek nevei a 8086 processzor AX, B

m , ezekkel a nevekkel lehet hivatkozni a 32 bites regiszterek als 16


bitjre.

Az AX, BX, CX s DX 16 bites regiszterek mindkt Byte-jnak
sajt neve is van. A Byte-regiszterek elnevezse a kvetkez: AH, BH,
CH s DH (fels Byte-ok) illetve AL, BL, CL s DL (a
67
ltalnos CPU programozsi informcik
ltalnos regiszterek
AH AL AX
15 16
Szegmens regiszterek
Sttusz s vezrl regiszterek
DH DL
CS
EFLAGS
DX
EAX
EDX
16-BIT 32-BIT
ESP
0 7 8 31
giszter rendelkezsre ll,
gyes utastsok azonban operandusaik trolsra csak bizonyos
operandusknt az
CX (ciklusszmll), ESI (forrsindex) s EDI (clindex) regisztereket
BH BL
CH CL
BP
SI
DI
SP
BX
CX
EBX
ECX
EBP
ESI
EDI
SS
DS
ES
FS
GS
EIP


3.2. bra: Alkalmazsok szmra elrhet regiszterkszlet

A cmszmtsok s legtbb aritmetikai illetve logikai mvelet
eredmnyei szmra minden ltalnos cl re
e
regisztereket hasznlnak fel. Pldul a fzrutastsok
E
hasznljk. Ezen mveletekhez specifikus regisztereket hozzrendelve az
utastskszlet tmrebben kdolhat. A specifikus regisztereket hasznl
68
Regiszterek
utastsok a kvetkezk: duplapontossg szorzs s oszts-, I/O-, fzr-,
transzlatl, ciklus-, klnbz eltol- s forgat-, valamint
veremmveletek.


3.2.2. Szegmensregiszterek

A szegmentci a rendszertervezk szmra rugalmassgot nyjt a
klnbz memriafelptsi modellek kzti vlasztsban. A
szegmensregiszterek a 16 bites szegmensszelektorokat tartalmazzk,
melyek egy, a memriban elhelyezked tblzatot indexelnek. Ez a
blzat tartalmazza a szegmensek bziscmt, valamint a
ntlt modell
inden egyes szegmens ugyanarra a fizikai memriatartomnyra val
ll
ndelkezsre, ezeknek szelektorait a CS, DS, SS, ES, FS s GS
egmensregiszterek tartalmazzk. Minden regiszterhez egy kln
emriaelrsi md tartozik (kd, adat, vagy verem); mindegyik
ak kzl (lsd a 3.3
brt). Ms szegmensek is hasznlhatk, ezek szegmensszelektort be
telek s a vezrlst
egmensek kzt tad utastsok (pldul CALL, RET vagy JMP)
p autmatikusan
gzi).
t
memriahozzfrst illet informcikat. Nem szegme
m
lekpezsvel valsthat meg.

A memriban egy adott pillanatban hat szegmens
re
sz
m
regiszter egy szegmenst jell, a program ltal hasznlt

kell tlteni a megfelel szegmensregiszterbe.



Kdszegmens a neve annak a szegmensnek, mely a vgrehajtand
utastsokat tartalmazza. Ennek szegmensszelektort a CS regiszter
tartalmazza. A processzor a kdszegmensben lev utastsokat olvassa be,
a szegmensen belli ofszetknt az EIP regiszter tartalmt felhasznlva. A
CS regiszter feltltse a megszaktsok, kiv
sz
vgrehajtsa eredmnyekppen trtnik (a szmtg
v

Egy eljrs meghvsa eltt szksges egy memriarsz kijellse
a verem szmra. A verem tartalmazza a visszatrsi cmet, a hvrutin
ltal tadott paramtereket, valamint az eljrs ltal ignyelt ideiglenes
vltozkat. A veremszegmens azonostsra minden veremmvelet az SS
69
ltalnos CPU programozsi informcik
regisztert hasznlja, mely a CS regiszterrel ellenttben kls mdon
feltlthet; gy az alkalmazs sajt maga pthet fel vermeket.


A DS, ES, FS s GS regiszterek lehetv teszik, hogy egyszerre
gy adatszegmens lljon rendelkezsre. A ngy adatszegmens biztostja
onsgos
ozzfrst. Pldul kln-kln adatszegmens hozhat ltre az aktulis
odul
. Ha egy programhiba kvetkeztben a program futsa
sszezavarodik, a szegmentl mechanizmus a hiba ltal okozott krt a
nsek elrse rdekben a DS,
ES, FS s GS regiszterek az
en is
feltlthetk. Az egyetlen teend a
megtrtnne.

s szegmens
bziscme trolva van. Egy
s cmzse egy regiszterben vagy maga az utasts testben
egadott ofszet segtsgvel trtnik. Azt, hogy melyik
n
a klnbz tpus adatstruktrkhoz val hatkony s bizt
h
m adatstruktri, a magasabb szint modulbl exportlt adatok, egy
dinamikusan ltrehozott adatstruktra s a ms programokkal megosztott
adatok szmra

program ltal foglalt szegmensekre korltozza.



Az adatok szerkezettl
fggen (vagyis hogyan vannak az
adatok szegmensekre osztva) a
program tbb szegmenshez is
ignyelhet hozzfrst. A tovbbi
Kd szegmens
Stack szegmens
CS
SS
szegme
1. adatszegmens
3. adatszegmens
S
S
alkalmazi program futsa kzb
megfelel szegmensregiszter
feltltse, mg mieltt az illet
szegmens adataihoz val hozzfrs
Minden egye
szegmensen belli adat
megcmzshez a 32 bites ofszetet
hozz kell adni a szegmens bziscmhez. A szegmens kivlasztsa (a
szegmensszelektornak a szegmensregiszterbe val betltse ltal) utn az
utastsnak csak az ofszetet kell megadnia. Az adatszegmensen belli
operandu
m
2. adatszegmens E
FS
4. adatszegmens GS
D


3.3. bra: Szegmentlt memria
70
Regiszterek
szegmensregiszter hasznland akkor, amikor csak egy ofszet van
egadv
utat (EIP) regiszter az aktulis kdszegmensben
v kvetkez vgrehajtand utasts ofszetjt tartalmazza. Az
utastsok (ugrsok, hvsok, stb.),
egszaktsok s kivtelek vgzik.
.2.4. A verem felptse s hasznlata
giszter tmogatja:
e csak egy verem llhat rendelkezsre. Az, amelynek
asznlja.
V
tartalmazza. A veremmutatt a PUSH s POP utastsok,
szubrutinhvsok s visszatrsek, kivtelek, valamint
.4. bra) a processzor cskkenti az ESP regisztert, majd berja az
m a, egyszer szablyok hatrozzk meg.


3.2.3. Utastsmutat

Az utastsm
le
utastsmutat nem ll kzvetlenl a programoz rendelkezsre,
kezelst a vezrlstad
m

Az EIP regiszter egyik utasts kezdcmrl a kvetkezre
ugrik. Az utastsok elbetltse miatt az EIP az utastsokat a
processzorba betlt busz aktivitsrl csak egy hozzvetleges
tjkoztatst ad. Az utastsok elbetltsnek rszletes lersa egy
ksbbi fejezetben tallhat.


3

A veremmveleteket hrom re

1. Veremszegmens (SS) regiszter. A verem a memriban helyezkedik
el. Egy rendszerben a vermek szmt a hasznlhat szegmensek
maximlis szma korltozza. A verem nagysga maximlisan 4
GByte lehet, vagyis egyenl egy szegmens maximlis mretvel.
Egyszerr
szelektort az SS regiszter tartalmazza. Ez az aktulis verem. A
processzor minden veremmvelethez automatikusan az SS regisztert
h

2. eremmutat (ESP) regiszter. Az ESP regiszter a verem tetejt
(TOS - Top-Of-Stack) az aktulis veremszegmensen belli aktulis
ofszetet
megszaktsok hasznljk. Egy adat veremre val rhelyezsekor
(3
71
ltalnos CPU programozsi informcik
adatot az j TOS-ba. Amikor egy adatot kivesz a verembl, a
pr
a memriban a verem lefele n, a kisebb
cmek irnyba.
. Veremkeret-bzismutat (EBP) regiszter. Az EBP regiszter
je
tinra, a verem a visszatrsi cmet s az illet szubrutinnak
tadott adatstruktrkat tartalmazza. A szubrutin megnveli a
sz ekppen az ideiglenes vltozk verembl
val ki- s behelyezse ltal a veremmutat n illetve cskken. Ha a
tt
valami is a verembe kerlt volna, akkor a bzismutat felhasznlhat
a rgztett ofszet adatstruktrk elrsre. Ha ez nem gy trtnt,
zet az idszakos vltozk ltal
elfoglalt hely fggvnyben vltozni fog.
3.2.5. Flagregiszter

Az felttelkdokat (azaz tvitel, eljel, tlcsorduls) s
llapotbiteket, (gyjtnevkn: flageket), az EFLAGS nev 32 bites
regiszter tartalmazza. A flagek elrendezst a regiszteren bell a 3.5. bra
mutatja be.

Az flagek a Pentium processzor llapotrl adnak tjkoztatst,
ezenkvl egyes mveletek vgrehajtst irnytjk. Az llapot- s vezrl
flagbiteken kvl a flagregiszter mg rendszerflageket is tartalmaz.
ocesszor kimsolja azt a TOS-bl, majd nveli az ESP regisztert.
Mskppen fogalmazva

3
llemz felhasznlsi mdja a vermen keresztl tadott
paramterekhez val hozzfrs. Amikor a vezrls taddik egy
szubru
vermet, amennyiben ideiglenes loklis vltozi szmra helyre van
ksge. Ennek eredmny
veremmutat rtke azeltt volt a bzismutatba msolva, miel
akkor egy adatstruktrt azonost ofs

Az EBP regiszter ltal trtn memriacmzs az aktulis
veremszegmenst (SS regiszter) hasznlja. Mivel a veremszegmenst nem
kell kln megadni, az utastskd tmrebb. Az EBP regiszter ms
szegmensek cmzsre is hasznlhat, de ekkor a szegmenst kln meg
kell adni (MOV AX,GS:[EBP]). Az olyan utastsok, mint az ENTER s
LEAVE, a vltozkhoz val knnyebb hozzfrs rdekben az EBP
regisztert automatikusan belltjk.


72
Regiszterek

SS
ESP
Az utoljra behelyezett adat
SS
ESP
j behelyezett adat
j
Rgi


3.4. bra: A verem mkdse


3.2.5.1. llapotbitek

Az EFLAGS regiszter llapotbitjei az olyan aritmetikai utastsok
eredmnynek jellegrl adnak szmot, mint az ADD, SUB, MUL vagy
DIV. A MOV utasts nincs hatssal ezekre az llapotbitekre. A feltteles
ugrsok s szubrutinhvsok lehetv teszik, hogy a program rzkelni
tudja az flagek llapott s ezektl fggen cselekedjen. Amikor egy
ciklusszmll rtke a cskkentsek sorn elrte a nullt, a ZF bit
llapota 1 lesz, e vltozs miatt a ciklus elejre val ugrst megvalst
feltteles ugrutasts nem hajtdik vgre, s a ciklus megszakad. Az
llapotbiteket a 3.6. bra mutatja be kln.

73
ltalnos CPU programozsi informcik
EFLAGS
31
30
29
28
27
0
0
0
26
25
24
23
22
21
20
19
0
0
0
0
0
ID
VIP
VIF
X ID FLAG
X LTSZLAGOS MEGSZAKTS-FELFGGESZTS
X LTSZLAGOS MEGSZAK
18
17
14
7
0
0
AC
VM
NT
SF
TS FLAG
X ILLESZKEDS ELLENRZ
X 8086 VIRTULIS MD
ATST JELZ FLAG
X BEGYAZOTT TASZK
S ELJEL FLAG
C - VEZRL FLAG
X - RENDSZER FLAG
1,0 - NEM HASZN
16
15
RF
0
X FOLYT
13
12
11
10
9
8
IOPL
OF
DF
IF
TF
X I/O PRIVILGIUM SZINT
S TLCSORDULS FLAG
C IRNY FLAG
X MEGSZAKTS ENGEDLYEZ FLAG
X CSAPDA FLAG
5
6
4
3
2
1
0
ZF
AF
0
0
PF
1
CF
S ZERO FLAG
S FL-TVITEL FLAG
S PARITS FLAG
S TVITEL FLAG
S - STTUSZ FLAG
LT, INTEL LLTAL FENNTARTVA

ter 3.5. bra: Az EFLAGS regisz
74
Regiszterek

Nv Szndk Kialakulsi felttel
OF Tlcsorduls Az eredmny meghaladta a pozitv vagy
negatv hatrt
SF Eljel Az eredmny negatv
ZF Zero Az eredmny nulla
AF Fltvitel tvitel trtnt a 3. biten (BCD-nl
hasznlatos)
PF Parits Az eredmny als Byte-jban pros szm 1
bitek vannak
CF tvitel A legfels bitrl tvitel trtnt

3.6. bra: llapotbitek


Az EFLAGS regiszter DF vezrlbitje a fzrutastsok irnyt vezrli.
(10. bit)

A DF bit belltsa a fzrutastsok cskken memriatartomny
fel trtn vgrehajtst eredmnyezi, vagyis a fzrek feldolgozsa a
magasabb cmek fell az alacsonyabb cmek irnyba tart. A DF bit
trlse fordtott irny feldolgozst eredmnyez.


3.2.6 Rendszer-regiszterek

A rendszerprogramozknak sznt regisztereket a kvetkez
kategrikba sorolhatjuk:

- EFLAGS regiszter
- memriaszervez regiszterek (memory management )
- vezrl regiszterek (control)
- nyomkvet regiszterek (debug)

A rendszer-regiszterek vezrlik a felhasznli programok
vgrehajt krnyezett. Az opercis rendszerek tbbsge a felhasznli
programok szmra korltozza ezen lehetsgeket. (Mindamellett
75
ltalnos CPU programozsi informcik
szerkeszthetnk olyan opercis rendszereket is, amely
program a legprivilegizltabb szinten fut, ez esetben a felhasznli
rogramoknak me
ekben minden
gengedett e lehetsgekbe val beavatkozs.)
A 0-val illetve 1-el jellt bitpozcik az Intel ltal fenntartottak.
asznlatuk nem ajnlott. Mindg a megelz kiolvasskor kapott
- (Id
ultita
egszakts bit (19. bit)
p


3.2.6.1. Rendszer-flagek

Az EFLAGS regiszter rendszer-flagjei vezrlik az I/O
mveleteket, a maszkolhat megszaktsokat, a nyomkvetst, a
taszkcsert, illetve a virtulis 8086-os zemmdot. Egy felhasznli
programnak ezeket a flageket nem kell figyelembe vennie, s tilos
szmra az llapotuk megvltoztatst megksrelni. Egyes opercis
rendszerekben egy rendszerflag llapotnak megvltoztatst clz
ksrlet kivtelt idz el. A fent emltett flageket a 3.5. bra szemllteti.


H
rtkekre lltandk.

ID entification Flag) azonost flag, (21. bit)

Ha egy program kpes arra, hogy az ID flaget magasra, illetve
alacsonyra lltsa, azt jelenti, hogy a processzor tmogatja a CPUID
utastst. Lsd cpu azonostsa.

VIP - (Virtual Interrupt Pending Flag) virtulis megszaktsfelfggeszts
bit (20. bit)

Ez a flag a VIF flaggel egytt lehetv teszi minden egyes,
m szkos krnyezetben fut felhasznli program szmra, hogy a
rendszer IF flagjnek egy virtulis verzijt hasznlhassa. Rszletes
tmutat ezen flagek virtulis 8086-os, illetve vdett zemmd
hasznlatrl a fggelkben tallhat.

IF - (Virtual Interrupt Flag) virtulis m V

A VIF flag egy virtulis kpe az IF (Interrupt Flag) megszakts
flagnek, a VIP-el egytt hasznlatos.
76
Regiszterek

AC - (Alignment Check Mode) illeszkeds-ellenrzs (18. bit)

Az AC flag s a CR0 regiszterbeli AM bit magasra lltsval
ET) lehetv vlik a memriahivatkozsok illeszkedsnek ellenrzse.
atkozs, mint
ldul egy pratlan cmen elhelyezked 16 bites szra, vagy egy nggyel
o
mg abban az esetben sem, ha ezt egy felhasznli
dbeli memriahivatkozs okozn.
lyes
leszkedst, mint pldul az i860-as. Az illeszkedsi kivtelt az
rtelme
s, mint a 8086-os processzor
rogramozsi krnyezetnek emullsa.

F - (Resume Flag) folytats jelz bit (16. bit)

Az RF bit ideiglenesen letiltja a nyomkvetsi hibkat (debug
ults), annak rdekben, hogy egy debug fault utn jra folytatni
lehessen egy utastst, anlkl, hogy kzvetlenl egy jabb nyomkvetsi
hibt okozna. A hibakeres (debugger) az IRETD utastssal lltja
magasra ezt a bitet, a megszaktott programba val visszatrs
(S
Valahnyszor egy illeszkedsi hibs operandusra kerl hiv
p
nem szthat cmen lev doublewordra, egy illeszkedsi kivtel
jelentkezik. Az illeszkedsi kivtelek csak felhasznli mdban (user-
mode) (3. privilgium szinten) generldnak. Azok a
memriahivatkozsok, amelyek alaprtelmezse a 0. privilgium szint,
mint pldul a szegmensdeszkriptorok betltse, nem okozzk a
fenntemltett kivtelt
m

Az illeszkedsi kivtelt fel lehet hasznlni az adatok
illeszkedsnek ellenrzsre. Ez akkor lehet hasznos, ha egy olyan
processzorral cserlnk adatokat, amely megkveteli minden adat he
il
zprogramok (interpreters) arra is felhasznlhatjk, hogy bizonyos
mutatkat (pointereket) specilisan megjelljenek hibs illesztssel.
Ezltal elkerlhetk a mutatk egyenknti ellenrzsnek kltsgei, s
gy az alkalmazs pillanatban csak a specilis mutatkat kezelik.

VM - (Virtual-8086 Mode) virtulis 8086-os zemmdjelz bit (17. bit)

Magasra lltva a VM flaget a processzort virtulis 8086-os
zemmdba hozzuk, amely nem m
p
R

fa
77
ltalnos CPU programozsi informcik
pillanatban. A POPF, POPFD, vagy IRET utastsok nem befolysoljk
az RF flaget.

NT - (Nested Task) egymsba gyazott taszkokat jelz bit (14. bit)

A processzor belltja, illetve teszteli az NT flaget, hogy vezrelje
a megszaktott s meghvott taszkok egymsba lncolst. Az NT flag
befolysolja az IRET utasts vgrehajtst, ugyanakkor a POPF, POPFD,
s IRET utastsok befolysoljk az NT flaget. Ezen flag rtknek
helytelen megvltoztatsa vratlan kivteleket generlhat a felhasznli
programokban.

IOPL - (I/O Privilege Level) I/O privilegizlt szintet jelz bitek (12. s
13. bit)

Az I/O privilegizlsi szintet a vdelmi mechanizmus az I/O
cmtartomnyhoz val hozzfrs ellenrzsre hasznlja. Az aktulisan
vgrehajts alatt ll szegmens privilgiumszintje (CPL) s az IOPL
rtke hatrozzk meg azt, hogy a POPF, POPFD, s IRET utastsok
mdosthatjk-e ezen mez rtkt. Tovbbi informcik a msodik
ktetben.

- (Interrupt-Enable Flag) megszakts-engedlyezst jelz bit (9. bit)

Ha IF magas logikai szintre van lltva, a processzor vlaszol a
maszkolhat megszakts krsekre (INTR megszaktsok). Alacsonyra
lltva ezt a bitet letiltjuk ezeket a megszaktsokat. Az IF flag nincs
hatssal sem a kivtelekre, sem a nemmaszkolhat megszaktsokra (NMI
megszaktsok). A CPL illetve IOPL hatrozzk meg, hogy a CLI, STI,
POPF, s IRET utastsok vltoztathatnak-e ezen a biten.

TF - (Trap Flag) csapda bit (8. bit)

A TF flag magasra lltsa a processzort - a hibakeress rdekben
- lpsenknti vgrehajts zemmdba helyezi. Ebben az zemmdban a
processzor minden egyes utastst kveten egy hibakeres kivtelt
(debug excepcion) generl, ezltal lehetv tve egy program
ellenrzst, mikzben az egyenknt hajtja vgre az utastsokat. A
IF
78
Regiszterek
lpsenknti vgrehajts csak egy a processzor ltal knlt szmos
hibakeres lehetsg kzl. Ha egy felhasznli program a POPF,
POPFD, vagy IRET utastsok egyikvel magasra lltja a TF flaget, egy
hibakeres kivtel (debug exception) generldik.


3.2.6.2. Vezrlregiszterek
.7. bra a CR0 3 vezrlregiszterek
formtumt mutatja be. Az opercis rendszerek tlnyom rsze
ja a felhasznl t abban, h regisztereket
thessk (habr ez lkli ren engedett). A
znli programok olvashatjk ezeket a regisztereket, pldnak
kedvrt a CR0-t olvasva meghatrozhatjk, hogy a numerikus
koprocesszor jelen van-e. A MOV utasts k ehetv
teszik, hogy ezeket a regisztereket feltlthess essk az
ltalnos regiszterekbl, illetve regiszterekbe. P
V EAX, CR0

A CR0 regiszter rendszervezrl bi amelyek
zemmdokat vezrelnek, vagy olyan llapotokat jeleznek, amelyek
inkbb ltalnosan a pr oznak taszkok
vgrehajtsra. Egy pr a rezer elyiknek
gk lt elz
tt ltan

PG - (Paging) lapozs bit ( CR0 31. bitje)

Ha ez a bit magas, a lapozs m
tiltott.
Ha a lapozs alatt kivtel generldik, a CR2-es regiszterbe kerl
2 bites lineris telt zte. A lapozs alatt
t lsd k

A 3 , CR1, CR2, CR S CR4
meggtol i programoka ogy a vezrl
feltl egy vdelem n dszerben meg
felhas
lnbz formi l
k vagy elmenth
ldul:

MO
MOV CR3, EBX
teket tartalmaz,
ocesszorra vonatk , mintsem egyedi
ogramnak tilos vlt bitek valam
megvltoztatst me
kiolvassukkor kapo
srelni. A rezerv
s l
biteket mindig az
rtkekre tancso i.
egengedett, ha alacsony, a lapozs


az a 3 cm, amely a
s
kiv elid
ltrejtt kivtelek (page faults) kezel sbb.
79
ltalnos CPU programozsi informcik
1
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
24
25
26
27
28
29
30
31
22
23
1
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
24
25
26
27
28
29
22
23
30
31
CR0 C C CR4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
TARTVA
RTVA
E
LAP
B
PSE
DE
P
P
NE


Ha lapozst hasznlunk, a CR3-as regiszter tartalmazza a
cmt
nlhat cmbitknt. Az 386-os processzorral ellenttben,
486-os illetve a Pentium processzorok ezek kzl kt bitnek
D -
R1 CR2 R3
0
MCE
0
0
0
0
0
0
0
FENN
FENNTA
LAPHIBA
LINERIS
CM
CMTR
ZIS
TSD
PVI
VME
CD
WT
MP
EM
TS
ET
NE
AM
WP
PG
CD
NW

A vezrl regiszterek f 3.7. bra: elptse


lap r (a fels szint laptblzat) cmnek 20 legjelentkenyebb bitjt.
A CR3-as regiszter a lapcmtr bziscm-regisztere (PDBR Page
Directory Base Register) nven is ismert. Megjegyzend, hogy a
lapcmtrnak is lapkeret illeszkedsnek kell lennie, ezrt a regiszter als
2-bitje nem hasz 1
a
jelentsget tulajdontanak. Ezek:

PC (Page-Level Cache Disable) lapszinti cache-letilts bit (CR3 4.
bitje)

Ha a lapozs megengedett, a lapozst nem hasznl buszciklusok
mint pldul a megszakts elismer ciklusok idejn ennek a bitnek az
80
Regiszterek
llapota megjelenik a processzor PCD vonaln. Ha a lapozs nem
engedlyezett, ez az informci minden egyes buszciklus idejn
egjelenik. A PCD vonalat (pin-t) egy kls cache-be trtn pufferels
ljk.
D - (C
elszr invalidlni kell. A cache-elsre vonatkoz informcikat
sd ksbb.
Ha ez a bit 0-ra van lltva, engedlyezi a cache trst (write-
, ha 1-re van lltva, letiltja a
ache-invalidl ciklusokat s azokat az trsokat, amelyek cache-
m
(caching) ciklusonknti vezrlsre hasznljk.

PWT - (Page-Level Writes Transparent) lapszinti tltsz trs bit (CR3
3. bitje)

Ha a lapozs megengedett, a lapozst nem hasznl buszciklusok
mint pldul a megszakts elismer ciklusok idejn ennek a bitnek az
llapota megjelenik a processzor PWT vonaln. Ha a lapozs nem
engedlyezett, ez az informci minden egyes buszciklus idejn
megjelenik. A PWT vonalat (pin-t) egy kls cachen trtn trs (write-
through) ciklusonknti vezrlsre haszn

C ache Disable) cache-letilts bit (CR0 30. bitje)

Ha ez a bit 0-ra van lltva, engedlyezi a cache feltlt
mechanizmust, ha 1-re, letiltja azt. Ha ez a bit 1-es, a cache-vesztsek
(cache misses) nem okoznak cache feltltst. Megjegyzend, hogy a
cache-tallatok nincsenek letiltva; ahhoz, hogy teljesen kiiktassuk a
cache-t,
l

NW - (Not Write-through) trstilts bit (CR0 29. bitje)


through) s a cache-invalidl ciklusokat
c
tallatosak. A cache-hasznlatra vonatkoz informcikrt lsd ksbb.

AM - (Alignment Mask) illeszkedsi maszk (CR0 18. bitje)

Ha ez a bit 1-es, az illeszkeds ellenrzs engedlyezett, ha 0,
letiltott. Az illeszkeds ellenrzsre csak abban az esetben kerl sor, ha az
AM bit s az AC flag is 1-es, s a CPL rtke 3 (felhasznli md).


81
ltalnos CPU programozsi informcik

W Write Protect) rsvdelem bit (CR0 16. bitje)

Ha 1-re van lltva, ez a bit levdi a felhasznli- szint lapokat a
felgyelprogram-szinti rs ellen. Ha ez a bit rtke 0, a csak
olvashat, felhasznli-szint lapokra a felgyelprogram rhat is. Ez a
lehetsg hasznosnak bizonyul, ha az n. "rs kzbeni msols"
megoldst (copy-on-write) akarjuk megvalstani
P - (
j, szrmaztatott
szkok (processes) ltrehozsra (forking), amely egyes opercis
ndszerekben (pldul az UNIXban) hasznlatos.
E - (Numeric Error) numerikus hiba bit (CR0 5. bitje)
onalakat kls logikval PC-tpus hibajelentsek ltrehozsra
asznljk.
vts bit (CR0 4. bitje)
S - (Task Switched) taszkkapcsols bit (CR0 3. bitje)
szkkapsols alkalmval belltja a
ta
re

N

Ha ez a bit magasra van lltva, a lebegpontos numerikus hibk
jelentsnek standard mechanizmusa engedlyezett. Ha NE=0 s az
IGNE# bemenet aktv, a numerikus hibkat a processzor nem veszi
figyelembe. Abban az esetben, ha NE=0 s az IGNE# bemenet inaktv, a
numerikus hibk arra ksztetik a processzort, hogy meglljon, s egy
megszaktsra vrjon. A megszakts a FERR# vonal segtsgvel
generldik, amely a megszakts kontroller egyik bemenett hajtja meg
(a FERR# vonal emullja az 287-es s 387-es matematikai
koprocesszorok ERROR# vonalt). Az NE bitet, az IGNE# s a FERR#
v
h

T - (Extension Type) koprocesszorral b E

Ez a bit azt mutatja, hogy a processzor tmogatja az 387 DX
matematikai koprocesszor utastskszlett (Pentium processzoroknl ez a
bit fenntartott).

T

A processzor minden egyes ta
TS bitet, illetve teszteli azt, amikor a lebegpontos numerikus utastsokat
rtelmezi. Ezzel a bittel lehetv vlik a numerikus kontextus mentsnek
illetve helyrelltsnak ksleltetse mindaddig, amg a numerikus adat
82
Regiszterek
tnylegesen felhasznlsra nem kerl. A CLTS utasts 0-ra lltja
(RESET) ezt a bitet.

EM - (Emulation) numerikus koprocesszor emullsa (CR0 2. bitje)

Mikor az EM bit magas logikai szintre van lltva (EM=1), egy
numerikus utasts vgrehajtsa "nem ltez koprocesszor" kivtelt
generl. Ha a processzornak nincs lebegpontos egysge, az EM bitet 1-re
kell lltani.

MP - (Monitor coProcessor) koprocesszor monitoroz bit.

Az 286-os s 386 DX processzorokban az MP bit a WAIT -
oprocesszorral val szinkronizlsra hasznlatos- utasts mkdst
esszorok
rogramjait futtatjuk 486-os vagy Pentium processzorok FPU-jn, ez a bit
telez
ME - (Virtual-8086 Mode Extensions) virtulis 8086-os zemmd
k
vezrli. Abban az esetben, ha 286-os vagy 386 DX proc
p
k en 1-re lltand. Az MP bitet resetelni kell a 486 SX processzor
estben.

PE - (Protection Enable) vdett zemmd engedlyez bit (CR0 0. bitje)

A PE bit magas llapota engedlyezi a szegmens-szint vdelmet.
A vdelemrl tovbbi informcik a vdett zemmdnl

A CR4-es regiszterben bizonyos architektrlis kiterjesztseket
engedlyez bitek tallhatk. Ez a regiszter a Pentium proceszszorban
jelenik meg elszr

V
kiterjesztsek bit (CR4 0. bitje)

Ez a bit magasra lltva tmogatja egy virtulis megszakts
engedlyezst jelz flag virtulis 8086-os zemmdbeli alkalmazst.
Ezen "adottsg" javtani kpes a virtulis 8086-os zemmdban fut
alkalmazsok teljestmnyn, mgpedig gy, hogy megsznteti a
kltsgeit egy virtulis 8086-os monitorba val fault kivtellel trtn-
"kiugratsnak", bizonyos utastsok emullsakor. Lsd a fggelkben.

83
ltalnos CPU programozsi informcik


PVI - (Protected-Mode Virtual Interrupts) vdett zemmd virtulis
megszaktsok (CR4 1. bitje)

Ez a bit magasra lltva tmogatja egy virtulis megszakts
Ennek a bitnek a magasra lltsa engedlyezi az I/O
E - (
grl a fggelkben
llhatk.
Enable) gptpus ellenrzs engedlyezst
jelz bit (CR4 6. bitje)
.2.6.3. Nyomkvet regiszterek

engedlyezst jelz flag vdett zemmdbeli alkalmazst. Ezen
tulajdonsg lehetv teszi a 0. privilegizlsi szintre tervezett programok
szmra, hogy a 3-as privilgiumszinten fussanak. Tovbbi informcik a
fggelkben.

TSD - (Time Stamp Disable) time stamp-szmll olvass tiltsa (CR4 2.
bitje)

Ezt a bitet 1-re lltva az RDTSC utasts (Read from Time Stamp
Counter) privilegizlt utastss vlik. Rszletek az RDTSC utastsrl a
2. ktetben.

DE - (Debugging Extensions) hibakeress kiterjesztsek bitje (CR4 3.
bitje)


trspontokat. Lsd ksbb.

PS Page Size Extensions) lapmret kiterjesztsek bitje (CR4 4. bitje)

Ennek a bitnek a magasra lltsa engedlyezi a 4 MByte-os
lapmretet. Tovbbi informcik errl a lehets
ta

MCE - (Machine Check

Magasra lltva ezt a bitet, engedlyezzk a gptpus ellenrz kivtelt.


3
84
Regiszterek
A nyomkvet regiszterek fejlett hibakeres kpessggel ltjk el
a processzort, belertve az adat trspontokat s annak lehetsgt, hogy
a kdszegmens mdostsa nlkl az utastsok kz trspontokat
reakpoints) szrhassunk (hasznos lehet a ROM-ra alapozott software-ek
prog
egy
haszn 3.8. bra illusztrlja.
(b
nyomkvetse esetn). Csak a legmagasabb privilgiumszinten fut
ramok kpesek ezekhez a regiszterekhez hozzfrni. A ksbbiekben
teljeskr lerst kaphatunk ezen regiszterek felptsrl s
latrl. A nyomkvet regisztereket a


1
0
2
3
4
5
6
7
8
9
10
1
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DR7 DR6 DR5 DR4 DR3 DR2 DR1 DR0
LEN
R
1
0
11
12
13
14
22
23
24
25
26
31
15
16
17
18
19
20
21
27
28
29
30 3
LEN
LEN
R/W
R/W
3
2
2
/W
1
LEN
R/W
0
0
0
GD
0
0
1
GE
LE
G3
L3
G2
L2
G1
L1
G0
L0
B3
B2
B1
B0
BD
BT
BS
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
FENNTARTVA FENNTARTVA
LINERIS
CME
LINERIS
CME
LINERIS
CME
SPONT
LINERIS
CME
TRSPONT
3.
TRSPONT
2.
TRSPONT
1.
TR
0.
1
1
1
1
1
1
1
1
1

3.8. bra: Nyomkvet regiszterek
85
ltalnos CPU programozsi informcik
3.3. CPU zemmdok


3.3.1. Vals zem

md ("vals md")
Ez az zemmd az Intel 8086 processzor programozsi
lltja, melybl egyetlen utasts
gtsgvel tkapcsolhat a vdett mdba.
tmogatja. Minden j
mikroprocesszorra (kezdve az 386 SL-tl) jellemz az SMM, mely egy
opercis rendszer- s alkalmazsfggetlen, ezek szmra transzparens
mechanizmus. Ezen mechanizmus segtsgvel implementlhatk a
rendszerteljestmnyt menedzsel s OEM megklnbztet funkcik. Az
SMM-be val belps egy kls megszaktsvonal (az SMI#)

krnyezett valstja meg, biztostva egy pr kiterjesztst (ilyen pldul
az ebbl a mdbl val kilps lehetsge). A reszet ltali inicializls a
processzort a vals zemmdba
se


3.3.2. Vdett zemmd

Ez a processzor natv llapota. Ebben az zemmdban az sszes
utasts s architekturlis jellemz elrhet, biztostva a legnagyobb
teljestmnyt s kpessgeket. Minden j alkalmazs s opercis
rendszer szmra ez az ajnlott zemmd.

A vdett md ltal nyjtott lehetsgek kz tartozik 8086-ra rt
"vals md" software multitaszking, vdett md krnyezetben trtn
kzvetlen vgrehajtsa. Ennek a lehetsgnek a neve 8086-os virtulis
md (vagy "V86 md"). A 8086-os virtulis md valjban nem a
processzornak egy zemmdja, hanem egy attribtum, amelyet vdett
mdban, megfelel software segtsgvel, brmely taszk szmra
bellthat.


3.3.3.Rendszermenedzsel zemmd

A Pentium mikroprocesszor a rendszermenedzsel zemmmdot
(SMM - System Management Mode) is
86
CPU zemmdok
aktivlsval trtnik, mely a CPU-t egy klnll cmtartomnyra
apcsolja t, lementve a CPU teljes llapott. Ennek kvetkeztben az k
SMM-specifikus kd vgrehajtsa transzparens. Az SMM-bl val
visszatrskor az elz mveletek fordtottja hajtdik vgre.
87
ltalnos CPU programozsi informcik
3.4. Inicializls s az zemmdok kztti
tkapcsols
e
grehajtst. Inicializlskor a processzor a modell s revziszmmal
hogy milyen
hetsgek llnak a software rendelkezsre. Annak mdjt, ahogyan az
alkalm
feltrk
rsz a processzor kezdeti llapotrl nyjt informcikat s trgyalja a
va s lsnak kvetelmnyeit, a kt
zemm en rsze az
icializl folyamatnak. A vdett zemmdba val tkapcsolst egy


.4.
RES
eghatrozott llapotba kerlnek. Ezek a meghatrozott llapotok, mint
ldul az EB
vgrehajt ek utn felptheti a
memri a r nt pldul a GDT s IDT
tblzatok, m a azi software-ek hasznlnak.
A RESE
(TLB-k) s elgazs clpufferek (BTB-k) mkdse letiltdik.
lasza akkor is, ha jelzst kap a futs
g

ggel, hogy nem vltoztatja meg a
els cache-ek s modell specifikus regiszterek llapott, valamint a


A hardware reszetet kveten a processzor egy jlmeghatrozott
alapllapotba kerl annak rdekben, hogy megkezdhesse a softwar
v
kapcsolatos informcikat nyjt annak meghatrozsra,
le
azsok a rendelkezskre ll lehetsgeket futsidben
pezik, egy ksbbi fejezet trgyalja, egy plda ksretben. Ez a
l s vdett zemmd konfigur
d kzti tkapcsols folyamatt, mely normlis esetb
in
pldaprogram mutatja be.
1. A processzor inicializlsa 3

Az inicializlst a processzor RESET bemenete idzi el. A
ET aktivlst kveten a processzor egyes regiszterei egy jl
m
p P regiszter tartalma, elegendek ahhoz, hogy a software
sa megkezddjn. A software ez
ban z olyan adatstruk kat, mi t
lyeket a rendszer- s z alkalm e
T aktivlsakor a bels cache-ek, fordtst gyorst pufferek

A gp bekapcsolsakor a RESET jelet a hardware aktivlja. E jelet
a hardware ms esetekben is aktivlhatja; pldul a reszet ltali
inicializls manulisan is elidzhet, egy billentygomb segtsgvel.
Reszetels lehet a hardware v
felf gesztsre vagy a kikapcsolsra.

A Pentium processzornak egy INIT bemenete is van, mely a
RESET-hez hasonlt, azzal a klnbs
b
88
Inicializls s az zemmdok kztti tkapcsols
leb pontos llapotot. Az INIT leh eg etsget nyjt a vdettbl a vals
zemmdba val tkapcsolsra gy, hogy a cache-ek tartalma megmarad.


3.4.

eszt-krs
egvalstsa a hardware-tervez feladata, amennyiben az ntesztre
(Az us, ezrt az Intel
nntartja a jogot magnak az rajelek pontos szmnak bejelents nlkli
gv
regiszter tartalma nulla lesz. Ha a teszt utn az EAX regiszterben nulltl
lnbz rtk van, ez azt mutatja, hogy a processzor hibs. Ha nem
olt nteszt krve, inicializls utn az EAX regiszter tartalma nulla.
Inicializls utn az EDX regiszter a processzor azonostjt s a
3H. Ezt a
mot az inicializl software kivlasztsra felhasznlva a binris
rgykd kompatibiliss tehet ms Intel processzorokkal is. A DL
nostszmt tartalmazza. Reszetels utn az
DX regiszter fels szava fenntartott.

Az INIT aktivlsakor a TLB-k s a BTB letiltdnak.


1.1. A processzor llapota reszetels utn
Bekapcsolskor ntesztels krhet; az nt
m
szksg van. Az nteszt elvgzse krlbell 2
19
rajelnyi idt ignyel.
rajelek elbb emltett szma modell-specifik
fe
me ltoztatsra.)

A processzorteszt hibamentes lefolyst kveten az EAX
k
v


revzijnak szmt tartalmazza (3.9. bra). A DH regiszter a 3, 4 vagy 5
rtkeket tartalmazza, melyek a Intel386, Intel486 illetve a Pentium CPU-
t azonostjk. E csaldok klnbz alosztlyainak esetben a DH-ban
ms rtkek is lehetnek, pldul az Intel386 SX CPU esetben 2
sz
t
regiszter a revzi egyedi azo
E

DL DH
31 15 7 0
DX
EDX
FENNTARTVA
ESZKZ
AZONOST
EGYEDI
AZONOST


89
ltalnos CPU programozsi informcik
3.9. bra: Az EDX regiszter tartalma reszetels utn


CR0 Reszetels utn
31
30
29
28
27
26
25
24
23
22
18
13
12
4
21
20
19
17
16
15
14
AM
PG
CD
NW 1- Nem t-r tiltva
0 - Lapozs tiltva
1 - Cache tiltva
0 - Illeszkeds ellenrzs tiltv
FENNTARTVA
a
0 - rsvdettsg tiltva WP
11
10
9
8
7
5
6
NE
3
2
EM
TS
1
1
0
PE
MP
FENNTARTVA
0 - Kls FPU hiba
leteknl nincs c
0 - Nincs taszk vlts
0 - ESC mve
0 - WAIT mveleteknl nincs c
0 - Vals zemmd


.10 utn 3 . bra: A CR0 regiszter tartalma reszetels
90
Inicializls s az zemmdok kztti tkapcsols
Pen eten a CR0
reg apo llapot a
processzort val ba lltja s kikapcsolja a lapozst. A flagek s
egy iszte 1. bra
mutatja be.



Regi
A tium processzor zembe helyezst kv
iszter ll tt a 3.10. bra mutatja (60000010H). Ez az
s zemmd
b reg reknek az zembehelyezs utni llapott a 3.1
szter RESET - BIST
nlkl
INIT
EFLAG 00000002h 00000002h
EIP 0000FFF0h 0000FFF0h
CR0 6000001 A CD s NW
biteket nem
cserli, a 4. bitet
1-be lltja, az
0h
sszes tbbit trli.
CR2, CR3, CR4 00000000h 00000000h
CS szelektor=0F000h
bzis=0FFF0000h
szelektor=0F000h
hatr=0FFFFh
hozzfrhrt
bzis=0FFF0000h
hatr=0FFFFh
t,
hozzfrhet
elrsi jogok
vannak, rhat,
olvashat,
elrsi jogok
vannak, rhat,
olvasha
SS, DS, ES, FS, GS szelektor=0000h
bzis=0000h
hatr=0FFFFh
elrsi jogok
vannak, rhat,
szelektor=0000h
bzis=0000h
hatr=0FFFFh
elrsi jogok
vannak, rhat,
olvashat,
hozzfrhet
olvashat,
hozzfrhet
E 000005xxh 000005xxh DX
EAX hibtlan nteszt
esetn nulla
0
EBX, ECX, ESI, EDI,
EBP, ESP
00000000h 00000000h
91
ltalnos CPU programozsi informcik
L szelektor=0000h
bzis=00000000h
hatr=0FFFFh
elrsi jogok
szelektor=0000h
bzis=00000000h
hatr=0FFFFh
el
DTR
vannak, rhat,
olvashat
rsi jogok
vannak, rhat,
olvashat
GDTR, IDTR bzis=00000000h
hatr=0FFFFh
vannak, rhat,
olvashat
bzis=00000000h
hatr=0FFFFh
vannak, rhat,
olvashat
elrsi jogok elrsi jogok
DR0, DR1, DR2, DR3 00000000h
DR6 FFFF0FF0h FFFF0FF0h
DR7 00000400h 00000400h
T S ime tamp szmll 0 Nem cserli
Vezrl
kivlas
s esemny
zt
0 Nem cserli
TR12 0 Nem cserli
Minden m
sp fi
s modell
eci kus regiszter
Nem definilt Nem cserli
Adat
TLB-k
s kd Cache, rvnytelen rvnytelen



he z
vannak
szabad

.4.1 els v utas

Egy cm ge a s iszter bzis rsze
ik a tn , kia a l Ez
emmd yes, isc a
vdett mdban mskpp trtnik, mint dban. Egy utasts
3.11. bra: A processzor llapota a reszetelst kveten
Az EFLAGS regiszter fels 10 bitjnek llapota az zembe
lye st kveten meghatrozatlan. A meghatrozatlan bitek fenn
tartva, a software vgrehajtsa egyik emltett bit llapottl sem
fggjn.

3 .2. Az grehajtott
nerlshoz
ts
zegmensreg
y hozzadd
minden z
yleges cmhez
rvn
laktva g ineris cmet.
m kiszmtsa esetben habr a bz
a vals zemm
92
Inicializls s az zemmdok kztti tkapcsols
beolva
s gy a kett e
sshoz a CS er bzis rsze hozzaddik az EIP tartalmhoz
gyt lin

Vals zem a ak
tartalma megvltozik, akkor a bzis rsz is megvltozik, ennek az
ek a 16-szo Reszetels utn azonban a CS bzisrsze
edik yen z l,
ehelyett a CS szele
CS szelektor rtknek a reszetels utni els megvltoztatsa a fenti
szablyt fogja kvetni (bzis = szelektor*16). Ennek ere az
and
cmrl fog trtnni M-ban l inicializl
kell elhelyezkedjen. A cm a Pentium fizi emrijnak
legnagyobb cme alatt 16 Byte-tal van.

Biztostani kell, hogy az inicializls befejezs
tvoli ugrs s hvs ne hajtdjon vgre. Ha az els tvoli ugrs vagy
hvs vals zemmdban trtnik, az j rtk a (16 bites) CS szelektorba
kerl s a CS bzisnak rtkt csak 20 bitesre fogja belltani, vagyis a
clknt szerepl cm a 0 s 1M kzti tartomnyban lesz. Ajnlatos
meggyzdni arrl, hogy ebben a tartomnyban rvny s kd
van-e.
adatszeg ra a mtartomny
dik, ahol a vrhata z

3.4.1.3. A cache engedlyezs
e en CR D jeinek
trlsvel trtnik t ) a
cache-elst (tr mdban az Intel486 tium
esetben) s a cache-letilt ciklusokat. szet st
kveten minden cache-vonal rvnytelen, a cache-els engedlyezse
eltt nincs szksg a cache rvnytelentsre. A cache kezelsnek
rszletes lerst, belertve az tr cache-stratgia Pen n
al megvalstst a laptblzat-bejegyzs PWT bitjnek
felha
regiszt
t meghatrozza a eris cmet.
szegmensregis mdban, amikor zter szelektorn
rtkn
msknt viselk
rosra.
, nem lesz eg l 16-szor a s elektor rtkve
dmnyekppen
ktor rtke 0F000H s a CS bzis 0FFFF0000H. A
els vgrehajt utasts beolvassa a CS.bzis+EIP = 0FFFFFFF0H
. Az EPRO ev
processzor
kd ezen a cmen
kai m
e eltt semmilyen
es memria

Az
aljra (0 cm) llt

mensek szm bziscm a fiz
n a RAM helye
e
ikai c
kedik el.

A cach gedlyezse a
(a hardware resze
0 regiszter C
1-re lltja ket
s visszar m
Mivel a re
s NW bit
. Ez engedlyezi
dban a Pen
ltali inicializl
tium processzoro
v
sznlsval, egy ksbbi tartalmazza.
93
ltalnos CPU programozsi informcik

Olyan krlmnyek kzt, amikor a cache-vonalak esetleg
ngedlyezse eltt a cache-t le
ell tiltani vagy ki kell rteni. Ezt a software-inicializls alkalmval a
egbz
snek modell specifikus rszletei a 'Pentium
M Processor Data Book' dokumentciban tallhatk.
s zemmdban
mdja van. A vgrehajtst a Pentium a
patibilis zemmdban kezdi, melynek vals
software el kell
szornak szksge
lapvet rendszerfunkcik vgrehajtsnak cljbl, mint
zaktsok kezelse. Ha a processzor tovbbra is vals
e az adatstruktrk felptst a 8086-os
ezze. Ha a processzor vdett mdban fog
s
tu
lzatra. A
dik (amg
nem vltozik), a megszaktsok engedlyezse eltt fel kell
svektorok tblzatt s
riba, a reszet ltali
kveten lesz egy olyan idszak, amikor az NMI
rvnyesnek vannak megjellve, a cache e
k
m hatsgi tesztet vgz rutin segtsgvel oldhat meg, mely a
tesztregisztereket felhasznlva, tesztmintkat futtat keresztl a cache
memrin. A cache tesztel
T


3.4.2. Software inicializls val

A processzornak tbb zem
86 processzorral kom 80
zemmd a neve. A reszet ltali inicializls utn a
az adatstruktrkat, melyekre a proces ksztse azokat
van az olyan a
pldul a megs
zemmdban marad, a softwar
lakban kell elvg ltal hasznlt a
kdn m i, a software az adatstruktrkat a vdett mdban hasznlato
form mban kell felptse, majd t kell kapcsoljon a vdett zemmdba.


3.4.2.1. Rendszertblzatok

Vals zemmdban nincs szksg deszkriptor tb
eszkriptor tblzatot (IDT), mely a 0 cmen kezd megszakts d
az IDTR meg
tlteni a kivtel- s megszakts-kezelkre mutat pointerekkel.


3.4.2.2. Az NMI megszakts

Az NMI megszakts mindig engedlyezve van (kivve az
s egym ba gyazott NMI-ket). Mivel a megszakt
zakts-kezelt be kell tlteni a mem az NMI megs
inicializlst
94
Inicializls s az zemmdok kztti tkapcsols
megszakts nem kezelhet. A hardware-nek biztostania kell egy olyan
dban
modellek hasznlatt, melyek az egyetlen,
ytl (lapos modell) egszen a nagyon strukturlt
rjednek, melyek tbb, minden taszk szmra fggetlen s
artomnyt biztostanak (multiszegmentlt modellek).
t a lapozs, mely olyan nagymret adatstruktrkhoz
rmja olyan
et az opercis rendszer pt fel s a
DT-
mens
kell
s
sik csoport
s: a
mdszert, mely megelzi az NMI megszaktsok generlst, amikor
azokat a software mg nem tudja kezelni. Pldul az IDT s NMI
megszaktsokat bele lehet tenni a ROM-ba, gy lehetsgess vlik az
NMI megszakts kezelse mr rgtn az inicializls utn. Legtbb
rendszer az NMI engedlyezst/letiltst gy vgzi el, hogy az NMI jelet
tvezeti egy S kapun, melyet egy I/O port egyik bitje vezrel. A
reszetelskor a hardware trlheti ezt a bitet, majd a software jra
bellthatja, amikor mr kszen ll az NMI megszakts kezelsre. A
rendszer software-ek tervezinek ismernik kell a hardware ltal hasznlt
mechanizmust, mely a software-t a reszetelst kvet NMI
megszaktsoktl vdi.


3.4.3. Software inicializlsa vdett zemm

A vdett mdban szksges adatstruktrkat a felhasznlt
memriakezel funkcik hatrozzk meg. A processzor tmogatja a
klnbz szegmentlt
mtartomn folyamatos c
modellekig te
vdett cmt
Engedlyezhe
teszi lehetv a hozzfrst, melyeknek rszben a memriban, rszben
pedig a lemezen tallhatk. A cmkpzs mindkt fo
adatstruktrkat ignyel, melyek
memriakezel hardware hasznl.


3.4.3.1. Rendszertblzatok

A lapozst nem hasznl lapos modellnek legkevesebb egy G
atszeg re van szksge, melyben legalbb egy kd- s egy ad
deszkriptor van. Az els GDT bejegyzs egy nulldeszkriptort
tartalmazzon. Egy lapozst hasznl lapos modellnek kd-
adatdeszkriptorokat biztosthat a felgyeli md s egy m
kd- s adatdeszkriptort a felhasznli md szmra. (Megjegyz
msodszint laptblzat kikszblhet, ha a lapcmtr egy nmagra
95
ltalnos CPU programozsi informcik
mutat bejegyzst tartalm . Ez etben a lap tr az es cm s a laptblzat
lis
ksg
k h m utasts
me at tt R szterbe.
ell az cis rendszer
se v sok szmra
T ks Az LDT-k
ig ne be yes opercis
k le.
ozsi
ms.
l az
Egy
m
ozott
szer
nyt
t, a
egy kaput. Az
gtsgvel az IDT
Ha a
ni llapota
elrhet processzor
ugyanazon a lapon helyezkedik el.) A verem helyezhet egy norm
rhat/olvashat adatszegmensbe is, akkor a verem rszre nincs sz
deszkriptorra. A verem csa azutn asznlhat, iutn a LDTR
regi segtsgvel a GDT bzisc s h ra betltd a GDT

A multiszegmentlt mod esetben oper
szmra tovbbi szegmen kre, alamint az alkalmaz
szegmensekre s LD -ra lehet sz g.
szegmensdeszkriptorokat nyel k a GDT- n. Eg
rendszerek szksg esetn jabb szegmenseket s LDT-ket foglalna
rogram Ez maximlis rugalmassgot biztost az olyan dinamikus p
krnyezetek kezelsben, mint pldul egy tervezi munkallo
Ennek ellenre szmos opercis rendszer egyetlen LDT-t haszn
sszes folyamat szmra s a GDT bejegyzseket elre lefoglalja.
begyazott rendszer, mint pldul egy folyamatvezrls, rgztett sz
eghatr alkalmazi program szmra elre le kell foglaljon egy m
szm LDT-t. Ez egy egyszer s hatkony md egy olyan rend
teljestm software-krnyezetnek struktrlsra, mely vals idej
ignyel.


3.4.3.2. Megszaktsok

Ha a hardware megengedi a megszaktsok generls
megszakts kezel szmra ltre kell hozni egy IDT-t s
IDT csak azutn hasznlhat, miutn a LIDT utasts se
bziscme s hatra betltdtt az IDTR regiszterbe.


3.4.3.3. Lapozs

ezrli. A szegmentcitl eltren a lapozst egy mdbit v
CR0 regiszter PG bitje nulla (a reszet ltali inicializls ut
pontosan ez), akkor a programoz ltal
architektrbl a lapozsi mechanizmus teljes mrtkben hinyozni fog.

96
Inicializls s az zemmdok kztti tkapcsols
Ha PG bit rtke 1, akkor engedlyezve van a lapozs. A bitet a
vetkez
A os
mdban nem
esl, akkor a PG
-re llthatk.
nak
eket
utasts utn egy JMP utasts kell
kirtse az addig beolvasott s dekdolt
lhat.
ikusan
s cme
ett
i. A Pentium csak a 2. lps elvgzst
MOV CR0 utastssal lehet belltani. A bit belltsa eltt a k
feltteleknek kell teljeslnik:

1. A software ltrehozott mr legkevesebb kt laptblzatot, a
apok a es lapcmtrat s 4 kByte-os l hasznlat etn legkevesebb egy
msodszint laptblzatot. 4 MByte- lapokkal kapcsolatos
cik a fggelkben tallhatk. inform

2. A PDBR regiszterbe (mely ugyanaz, mint a CR3) be van tltve a
lapcmtr bziscme.

3. A processzor vdett mdban van (a lapozs vals zem
ll rendelkezsre). Ha minden ms megszorts telj
s PE bitek egyidejleg 1

gy a lefel, mint a felfel val kompatibilits fenntarts
PG bit (s a PE bit) belltsakor a kvetkez irnyelv rdekben a
kell kvetni:

lenl a PG bitet bellt 1. Kzvet
kvetkezzen. A MOV CR0 utn kvetkez JMP szerepe az, hogy a
vgrehajts folysnak megvltoztatsa ltal a 386 s 486
zorokbl process
utastsokat. A Pentium processzor az elgazsok elrejelzsre egy
elgazsi clpuffert (BTB - Branch Target Buffer) hasznl, ezrt
szksgtelen az el-beolvassi sor elgazsi utastsokkal val
kirtse. A BTB-rl tbb informci a fggelkben tal

2. A PG bitet bellt utaststl a JMP-ig terjed kd egy ident
lekpezett lapon kell elhelyezkedjen (a lap JMP eltti lineri
megegyezik a lapozs engedlyezse utni fizikai cmvel).

A 32 bites x86 architektrk a lapozs engedlyezst s a vd
tkapcsolst klnbzkppen valstjk meg. A 386 mdba val
esetben a fenti 1. vagy 2. lps vgrehajtsa szksges. A 486 esetben
mindkt lpst el kell vgezn
97
ltalnos CPU programozsi informcik
ignyli de a 386 s 486 oce rokkal a lefel illet pr sszo ve felfel val
st elvgezni.
agyobb
r nincs
l ra.
agasabb


foglaltnak megjellni. Az LDT deszkriptorjaihoz hasonlan a
icializl software TSS
regiszterbe. Ez
t vgezn,
alkalmval az aktulis
nlata utn a
zteren. Az
kriptorok ltrehozsra. A
y a vezrlsnek magasabb
megszerezze a
kompatibilits megtartsa rdekben ajnlatos mindkt lp


3.4.3.4. Taszkok

Ha a multitaszking mechanizmus nincs hasznlatban s a n
s nincs engedlyezve, akko privilgium szintekre val tvlt
szksg a TR regiszter inicia izs

Ha a multitaszking mechanizmus hasznlatban van s a nagyobb
privilgiumszintekre val tvlts engedlyezve van (a m
privilgium SS s ESP rtkei a TSS-bl kaphatk meg), az inicializl
software szmra ltre kell hozni a TSS-t s a TSS deszkriptort. A TSS
deszkriptor, ltrehozsakor, nem lehet foglaltnak jellve; a TSS
deszkriptorokat a taszktkapcsolsok vgrehajtsnak mellkhatsaknt a
CPU szokta
e TSS d szkriptorjai is a GDT-ben vannak. Az in
deszkriptorja az LDT utasts segtsgvel tltdik a TR
az utasts a TSS deszkriptort foglaltknt jelli meg, de nem hajt vgre
olst. Mieltt a software az els taszktkapcsols taszktkapcs
be kell tlteni a szelektort, mivel az tkapcsols
taszk bemsoldik a TSS-be. Az LTR utasts hasz
taszktkapcsols tovbbi mveleteket hajt vgre a TR regis
LDT szegmensekhez hasonlan a TSS-ek s TSS deszkriptorok is
szksg esetn lefoglalhatk, illetve elre lefoglalhatk.

Ha a magasabb privilgiumszintekre val tvlts engedlyezve
desz van, akkor szksg van a TSS-ek s TSS
a TSS-t arra hasznlja, hog processzor
privilgiumszint szegmensekre val tadsakor
tort s veremmutatjt. veremszegmens szelek
98
Inicializls s az zemmdok kztti tkapcsols
3.4.3.5. A TLB, BTB s cache tesztelse

A vdett mdba val tkapcsols folyamatnak rszeknt a
programoz ha gy akarja, tesztelheti a TLB-t, a BTB-t s a cache-t.
Rszletes informcikat a tesztelsrl a fggelk tartalmaz.


3.4.4. zemmdvlts

A 32 bites cmtartomny s utastskszlet teljes kihasznlsa
vals zemmdba. Ez a rsz
oftware el kell vgezzen ahhoz,
zemmdba vltson t.
tt mdba
egy minimlis
szekben trgyaltak szerint inicializlni
gisztereket. E tblzatok ltrehozsa utn a
a CR0 regiszter PE bitjnek 1-re
0 utasts hasznlhat. A PE bit
zokat az irnyelveket kell kvetni, melyeket az
s engedlyezse kapcsn.
uk, ami a vals zemmdban volt; a
ell tltsn. A vgrehajts a
-lel kezddik.
rdekben a processzort a natv vals zemmdjbl t kell kapcsolni
vdett zemmdba. Egy rendszer szksgesnek tarthatja azt is, hogy
egyes mveletek esetben visszavltson a
seket azonostja, melyeket a s azokat a lp
hogy valsbl vdettbe s vdettbl vals


de 3.4.4.1. tkapcsols v

A vdett mdba kapcsols eltt ltre kell hozni
szm adatstruktrt s az elz r
kell a GDT, IDT s TR re
software elvgezheti a vdett mdba val tkapcsols lpseit.

s A vdett mdba val belp
a MOV CR lltsval trtnik; erre
belltsa sorn is ugyana
rgyalt a lapoz elz rsz t

dett mdba val belps utn a szegmensregisztereknek A v
tovbbra is ugyanaz a tartalm
software minden szegmensregisztert jra fel k
vdett mdban nulla rtk CPL
99
ltalnos CPU programozsi informcik
3.4.4.2. Visszakapcsols vals zemmdba
utastssal trli a CR0 regiszter PE
. A vals zemmdba
kppen kell eljrjon:
ket vgzi:
adja t (a
zik a fizikai cmmel). Biztostja, hogy a GDT
elynek hatra 64K
enshatrt, melyre a
van. Biztostja, hogy a GDT s az LDT a
i a vals
kriptorok
zterek
ptorok
b.
megszaktsokat. A CLI utasts letiltja az INTR vonalon
ramkrk

R0 Ha a software egy MOV C
bitjt, a processzor visszatr a vals zemmdba
z val visszatrst lebonyolt procedra a kvetke

1. Ha a lapozs engedlyezve van, a kvetkez

entikusan lekpezett lineris cmekre A vezrlst id
lineris cm megegye
s az IDT is identikusan lekpezett legyen.
A CR0 regiszter PG bitjt trli.
Trli a TLB-t azltal, hogy nullzza a CR3 regisztert.

2. A vezrlst egy olyan szegmensre adja t, m
(0FFFFH). Ez betlti a CS regiszterbe a szegm
vals mdban szksg
vals mdban cmezhet memriban legyenek (0-1M).

3. Az SS, DS, ES, FS s GS szegmensregiszterekbe betlt
mdnak megfelel, a kvetkez rtkeket tartalmaz desz
rjait: szelekto

Szegmenshatr = 64K (0FFFFH)
Byte granularits (G=0)
Kiterjeszts felfele (E=0)
) rhat (W=1
Jelen van (P=1)
Bzis = brmilyen rtk

Megjegyzend, hogy ha nem trtnik meg a szegmensregis
ajts a vdett mdban betlttt deszkri jrafeltltse, akkor a vgreh
felhasznlsval folyik tovb

4. Letiltja a
rkez megszaktsokat; az NMI megszaktsok kls
segtsgvel tilthatk le.

100
Inicializls s az zemmdok kztti tkapcsols
5. Trli a CR0 regiszter PE bitjt.
k. gy (a
ssor s a
erlnek. A
sre nincs szksg, azonban a lefele
als zemmdba val ttrs
tvoli JMP utastst.
svektor-tblzat bzisnak s
utastst hasznlja.
zsi md ltal ignyelt
d tkapcsolsra
izlsara s zemmdvltsra olyan pldt
alhat a felhasznl ltal rt alkalmazsba.
tk a felhasznlt Intel fejleszteszkzkrl,
vagy
dett

6. A JMP utasts segtsgvel a vals md programra ugri
3 6 s 486 processzorok esetben) kirl az utast
hozzfrsi jog bitjeibe k
8
megfelel rtkek a CS regiszter
p ornl erre a lp Pentium rocessz
val kompatibilits rdekben a v
t atos elhelyezni egy folyama ba ajnl

s cmzsi md a megszakt 7. A val
a h trnak betltsre a LIDT

8. Engedlyezi a megszaktsokat.

9. A szegmensregiszterekbe betlti a vals cm
rtkeket.


sra s zemm 3.4.5. Plda inicializl

inicial Ez a rsz az
mutat be, amelyik belefogl
Ugyanitt informcik tallha
vagyis az ASM386/486 assemblerrl s a BLD386 builder-rl.


3.4.5.1. A plda clja

E plda clja az, hogy rgtn a reszet utn az EPROM-ban
flash-memriban lev kdot felhasznlva tkapcsolja a CPU-t v
szer alkalmazst futtasson. zemmdba, majd egy egy
101
ltalnos CPU programozsi informcik
2.4.5.2. A memria elrendezse a reset-elst kveten

Az elbbiekben trgyaltak s a 3.11. bra alapjn, a 3.12. b
mutatja a processzor resz
ra a memria
etelst kveten s e plda kezdeti elrendezst
pontjn.

RESZET UTN
0FFFF FFFFh
0FFFF 0000h
0FFFF FFF0h
64K
[CS.Bzis+EIP]
[SP, DS, SS, ES] 0
EIP=0000 FFF0
CSbzis=0
DSbzis=0
ESbzis=0
SSbzis=0
SP=0
EPROM

rocesszor llapota a reszetet kveten
i 3.1 utatja, a STARTUP.ASM
Meghatrozs

12. bra: A p 3.


oritmus 3.4.5.3. Az alg

A plda fbb lpse t a 3. bra m
forrsszveg sorainak szmozsval egytt.

ASM sorok
157 Rvid ugrs az EPROM belpsi pontjra
162-169 Felpt a RAM-ban egy ideig
bejegyzssel:
lenes GDT-t egy
0. null
1. irhat/olvashat adat szegmens,
Bzis=0 hatr=4 GByte
102
Inicializls s az zemmdok kztti tkapcsols
171-172 A GDT pointert a GDTR regiszterbe tlti.
174-177 A CR0 regiszter vdet zemmd bitjnek belltsa.
179-181 Kzeli ugrs a vald mdot trl sorra.
184-186 DS s ES regiszterek feltltse a GDT[1]
izikai memria deszkriptorral, most mindkett a teljes f
terletre mutat.
188-195 Vgrehajt egy specifikus tbla inicializl
g.
st amire az j
vdett md miatt van szks
196-218 Az alkalmazs GDT-jt a ROM-bl a RAM-ba msolja
220-238 Az alkalmazs IDT-jt a ROM-bl a RAM-ba msolja
241-243 Az alkalmazs GDTR regiszternek feltltse
2 245 A alm IDTR regisz rnek feltltse 44- z alk azs te
247-261 Az alkalmazs TSS-t a ROM-bl a RAM-ba msolja
263-267 A TSS deszkriptor felfrisstse.
277 TR regiszter feltltse (taszkvllts nlkl)
282-286 SS s ESP feltltse az alkalmazsban tallt TSS
rtkekkel.
287 Az alkalmazs TSS-ben tallt EFLAG elmentse
288 Az alkalmazs TSS-ben tallt CS elmentse
289 Az alkalmazs TSS-ben tallt EIP elmentse
290-293 DS s ES feltltse az alkalmazsban tallt TSS
rtkekkel.
296 Vgrehajt egy IRET-et, visszatlti a fenti rtkeket s
belp az alkalmazs kdjba.

3.13. bra: Az algoritmus s a forrsszveg ezzel kapcsolatos sorainak
szma

Megjegyzsek:

A vdett mdba val tkapcsolskor (a tvoli ugrs vagy tvoli
hvs ltal) a CS szelektor nem vltozik meg s az eredeti bzisrtk
megmarad (Ha a reszet utn nem volt tvoli ugrs, a bzis rtke
0FFFF0000H marad; itt tallhat az EPROM).

103
ltalnos CPU programozsi informcik
A reszet utn a megszaktsok le vannak tiltva s gy is kell
maradjanak, klnben tvoli ugrsokat okozhatnak. Az NMI nincs
letiltva, de az inicializls ideje alatt nem aktivldhat.

A TEMP_GDT hasznlata megengedi a tmbk egyszer
mozgatst az EPROM-bl brhova a RAM terletn bell. Egy GDT
bejegyzs gy van felptve, hogy a bzis a 0 cmre mutasson s a hatr
4GB legyen. Ha a DS s ES regiszterekbe betltdik ez a deszkriptor, a
TEMP_GDT-re nincs tbb szksg s ennek helyt elfoglalhatja az
alkalmazs GDT-je.

Ez a kd egyetlen TSS-t (s egyetlen LDT-t sem) felttelez. Ha az
alkalmazsnak tbb TSS-e van, ezeket a RAM-ba kell msolni. Ugyangy
kell eljrni az alkalmazs LDT-jeivel is.

Egyes implementlsoknl a korai 8086 processzorok szimullsa
rdek a. A
vdett m
elltani, hogy
.4.

A plda az Intel software eszkzeit (ASM386 s BLD386)
hasznlja.

Az inicializl kd generlsra felhasznlt ASM386 s BLD386
eszkzei a kvetkezket felttelezik:

Az ASM 386 a kdszegmens attribtumnak megfelel, helyes
operandusmret opkdot fog generlni. Az attribtumot vagy az
ASM386 segtsgkr vezrlje vagy a kdszegmens defincija
hatrozza meg.

A kdszegmenset, mely vals zemmdban fog futni, USE 16
attribtumra kell lltani. Ha a szegmensben 32 bites
operandusok (MOV EAX, EBX) kerlnek felhasznlsra, egy
automatikus operandusprefix fog generldni, mely a processzort

ben az A20-A31 cmvonalak reszet utn nincsenek dekdolv
dba val tkapcsols sorn ajnlatos a dekdereket gy
az sszes cmvonalat dekdoljk. b


3 5.4. Eszkzk hasznlata

104
Inicializls s az zemmdok kztti tkapcsols
a 32 bites mveletekre knyszerti annak ellenre, hogy az
alaprtelmezsben szerepl kdszegmens attribtum 16 bites.

Az Intel ASM386 assemblere megengedi a specifikus 16 s 32
bites utastsok hasznlatt, ilyen pldul a a LGDTW, LGDTD,
IRETD. Egy ltalnos utasts (pldul LGDT) hasznlata esetn a
megfelel opkd generlshoz az assembler a alaprtelmezsben
szerepl szegmensattribtumot fogja felhasznlni.

Tma ASM386 s
Startup.A58
BLD386
vezrl s
BLD file
Hats
Bootstrap public startup
startup:
bootstrap
start(startup)
Kzeli ugrs a
0FFFFFFF0h-
nl a startra
GDT
elhelyezkeds
public
GDT_EPROM
GDT_EPROM
TABLE_REG <>
TABLE
GDT(location
=
GDT_EPROM
)
A GDT
elhelyezkedse a
DGT_EPROM
pozcira lesz
programozva.
IDT
elhelyezkeds
public
IDT_EPROM
IDT_EPROM
TABLE_REG <>
TABLE
IDT(location=
IDT_EPROM)
Az IDT
elhelyezkedse
az IDT_EPROM
pozcira lesz
programozva.
RAM
0...3FFFh) tbla
mozgatsokhoz
a ramot
kizrsa az
alkalmazs
szegmens
terletbl.
kezdet RAM_START
equ 400h
memory(reser
v=
A
RAM_START a
hasznlja clnak
Ezrt szksges
egy terlet
105
ltalnos CPU programozsi informcik
Az alkalmazs
TSS-nek
elhelyezkeds
TSS_INDEX equ
10
ABLE GDT
R 0:
Az alkalmazs
TSS
e a
T
(ENT Y=(1
PROTECTED
))
deszkriptort a
teszi.
GDT-ben _
MODE_TASK
GDT 10.
pontjra
EPROM mret s
elhelyezkeds
Az inicializl
kd mrete s
SEGMENT
startup.c
elhelyezhedse. (base=0FFFF0
000h) memory
legfeljebb 64K
s a 4GB-os
ode
Az inicializlt
kd mrete
tn
nie.
(RANGE(
ROM_AREA
memria fels
64K-s terle
= ROM(x..y)) kell
elhelyezked

3.14. bra: A BLD s az ASM forrsllomny kzti sszefggs


3.4.5.5. A STARTUP.ASM listja
mmilyen opkd vagy ofszettel kapcsolatos
nem tartalmaz.
tartup.a58 pw (132)


A CPU-t vdett mdba kapcsol kd forrsszvegt a 3-1 plda
rtalmazza. Ez a lista se ta
informcit

3-1 plda: STARTUP.ASM

OBJECT MODULE: startup.obj
ASM386.EXE s

Sor Forrskd

1 NAME STARTUP
2 ;
3 ;
4 ;
5 ;Elfelttelek:
6 ;
7 ;1. Az als 64K memria az RAM s a modul
106
Inicializls s az zemmdok kztti tkapcsols
8 ; has
ltrehozsnl.
znlhatja azt tmeneti terletek
d szabadon
ja amibe

ogy egyezzen
.
EQU 0FFFF0000h
neris cme, ami
;nyelv file-ban van megadva.
RT EQU 400h
;lineris memria terleten. A GDT, IDT s a
ti TSS
egy kis
is cmen. A RAM_START-
l l 3
atok
;szabad Byte lineris cmt. Ez akkor
os, ha memria
0 ;managert hasznlunk.
31 ;
32 TSS_INDEX EQU 10
33 ;
34 ;A TSS index az indts utn elsknt fut
taszk TSS-nek
35 ;indexe.
36 ;
37 ;
9 ;
van elegen 10 ;2. A rendszernek
11 ; szabadon hasznlhat RAM-
bemsolhat
12 ; a GDT, IDT, TSS kezdeti rtkei
13 ;
14 ;
15 ;Konfigurcis adat, meg kell h
a build nyelv
16 ;file-al
17 CS_BASE
18 ;
19 ;A CS_BASE a STARTUP_CODE li
a build
20
21 ;
22 RAM_STA
23 ;
24 ;A RAM_START a szabadon hasznlhat RAM
kezdete a
25
kezde
26 ;ezen hely fl msoldnak s
t is adatszegmens
27 ;kihagy ezen a liner
n v 2
28 ;bites sz tartalmazza a lemsolt tblz
fltti els
29
haszn
3
107
ltalnos CPU programozsi informcik
38 ;
9 ; 3
40 ;
41 ;Szerkezet a rendszer adat szmra
42 ;
3 ;TSS szerkezet 4
44
DW ?
0 ESP1 DD ?
DW ?
?
?
DD ?
9 EAX_reg DD ?
0 ECX_reg DD ?
DD ?
2 EBX_reg DD ?
TASK_STATE STRUC
45 link DW ?
46 link_h DW ?
47 ESP0 DD ?
48 SS0 DW ?
49 SS0_h
5
51 SS1 DW ?
52 SS1_h DW ?
53 ESP2 DD ?
4 SS2 DW ? 5
55 SS2_h
56 CR3_reg DD
5 DD 7 EIP_reg
58 EFLAGS_REG
5
6
61 EDX_reg
6
63 ESP_reg DD ?
64 EBP_reg DD ?
65 ESI_reg DD ?
66 EDI_reg DD ?
67 ES_reg DW ?
68 ES_h DW ?
69 CS_reg DW ?
70 CS_h DW ?
71 SS_reg DW ?
72 SS_h DW ?
73 DS_reg DW ?
74 DS_h DW ?
75 FS_reg DW ?
76 FS_h DW ?
77 GS_reg DW ?
78 GS_h DW ?
108
Inicializls s az zemmdok kztti tkapcsols
79 LDT_reg DW ?
80 LDT_h DW ?
81 TRAP_reg DW ?
82 IO_map_bas
3 TASK_STATE ENDS
?
3 DESC ENDS
4 ;
s LIDT utastsok
.
---------------------------------------
-----------------------
114 ;
e DW ?
8
84 ;
85 ;A deszkriptor elemi szerkezete
86 DESC STRUC
87 lim_0_15 DW ?
88 bas_0_15 DW ?
89 bas_16_23 DW ?
90 acces DB ?
91 gran DB ?
92 bas_24_31 DB
9
9
95 ;Szerkezet az LGDT
szre r
96 ;TABLE_REG STRUC
97 table_lim DW ?
98 tabla_linear DD ?
99 TABLE_REG ENDS
100 ;A GDT s IDT deszkriptorok ofszetje a
builder ltal generlt 101 ;GDT-ben.
102 ;GDT_DESC_OFF EQU 1*SIZE (DESC)
103 ;IDT_DESC_OFF EQU 2*SIZE (DESC)
104 ;
105 ;rtkadsok az tmeneti GTD felptshez
06 LINEAR_SEL EQU 2*SIZE 1
(DESC)
107 LINEAR_PROTO_LO EQU
00000FFFFh
108 LINEAR_PROTO_HI EQU
000CF9200h
109 ;
110 ;Vdett md engedlyez bit a CR0-ban
111 PE_BIT EQU 1
112 ;
113 ;----
-
109
ltalnos CPU programozsi informcik
115 ;----------------------ADAT SZEGMENS--------
---------------
116 ;
117 ;Kezdetben ez az adatszegmens a lineris 0
cmen
118 ;kezddik a CPU bekapcsolsi llapota miatt.
19 ; 1
120 STARTUP_DATA SEGMENT RW
BEL
DWORD
YTE
36 ;
47 ;
121 ;
122 free_mem_linear_base LA

123 TEMP_GDT LABEL BYTE
124 TEMP_GDT_NULL_DESC DESC <>
125 TEMP_GDT_LINEAR_DESC DESC <>
126 ;
127 ;tmeneti terlet az LGDT s a LIDT
utastsok szmra.
128 TEMP_GDT_SCRATCH TABLE_REG <>
129 APP_GDT_RAM TABLE_REG <>
130 APP_IDT_RAM TABLE_REG <>
131 ;
132 FILL DW
133 ;
134 ;Az utols dolog a szegmensben ami szksges
dword illeszkedshez.
135 end_data LABEL B
1
137 STARTUP_DATA ENDS
138 ;-------------------------------------------
---------------
139 ;
140 ;
141 ;-------------------------------------------
---------------
142 STARTUP_CODE SEGMENT ER PUBLIC
USE16
143 ;
144 ;A builder lltal feltltve
145 PUBLIC GDT_EPROM
146 GDT_EPROM TABLE_REG <>
1
110
Inicializls s az zemmdok kztti tkapcsols
148 ;A builder lltal feltltve
PROM
<>
addik t a vezrls.
nnek a lineris memria fels
15 an lenn
155 ;
156 PUBLIC STARTUP
157 STARTUP:
158 ;
159 ;DS s ES a lineris memria als 64K-jt
160 ASSUME DS TA RTUP_
161 ;Lsd a 3-15 br
;A GDTR regiszter feltltse az tmeneti

EBX,TEMP_GDT ;Felpti a TEMP_GDT-t az
ban.
D PTR [ cmecni
165 MOV DWORD PTR [
PTR [ LO
PTR [ _HI
TEMP_GD sc BX
169 MOV TEMP_GDT_scratch.table_lim,15
170 ;
66h ;32 bites GDT
EMP_GDT_sc
d
R0
EBX,PE_
BX
179 ;Trli az utast
P CLEAR_L L
LABEL:
149 PUBLIC IDT_E
50 IDT_EPROM TABLE_REG 1
151 ;
152 ;Belpsi pont a STARTUP kdba - a
bootolskor egy rvid ugrs
53 ;segtsgvel ide 1
E
4 ;64K-jb kell ie.
cmzi.
:S

RTUP_D
t.
ATA, ES:STA DATA
162
GDT-vel.
163 LEA
als memri
164 MOV DWOR
tudjuk.
EBX],0 ;ahol
EBX]+4,0
166 MOV DWORD
167 MOV DWORD
EBX]+8,LINEAR_PROTO_
EBX]+12,LINEAR_PROTO
168 MOV T_ ratch.table_linear,E
171 DB L
vgrehajts
172 LGDT T ratch
173 ;
174 ;Belps v
175 MOV EBX,C
ett mdba.

BIT 176 OR
177 MOV CR0,E
178 ;

s elolvas sort
180 JM
181 CLEAR_
ABE
111
ltalnos CPU programozsi informcik
182 ;
183 ;Elkszti a j t, a
a 4G-s tartomnyt cmzik.
CX,LINE S
DS,CX
S,CX
vgzi a specifikus belltsokat
;

;
93 ;
94 ;
95 ;Lsd a
ROM GDT-t a RAM-ba msolja a
TART+size(STARTUP_DATA) cmre.
200
201
02 ADD ECX,OFFSET (GDT_EPROM)
204
05
208
209 MOV APP_GDT_ram[EBX].table_linear,EAX
210 ADD EAX,ECX
211 REP MOVS BYTE PTR ES:[EDI],BYTE PTR
DS:[ESI]
212 ;
213 ;A GDT bzicmnek rgztse a
deszkriptorban.
214 MOV ECX,EDX
215 MOV [EDX[.bas_0_15+GDT_DESC_OFF,CX
216 ROR ECX,16
217 MOV [EDX[.bas_16_23+GDT_DESC_OFF,CL
218 MOV [EDX[.bas_24_31+GDT_DESC_OFF,CH
219 ;
z DS, ES regisztereke mik
184 MOV
185 MOV
AR_ EL
186 MOV E
187 ;
188 ;El tbla .
189 ;
190
191
192
; ......
1
1
1 3.16 brt.
196 ;Az EP
197 ;RAM_S
198 MOV EAX,RAM_START
199 ADD EAX,OFFSET (end_data)
MOV EBX,RAM_START
MOV ECX,CS_BASE
2
203 MOV SI,[ECX].table_linear
MOV EDI,EAX
MOVZX ECX,[ECX].table_lim 2
206 MOV APP_GDT_RAM[EBX].table_lim,CX
207 INC EXC
MOV EDX,EAX
112
Inicializls s az zemmdok kztti tkapcsols
220 ;Az EPROM IDT RAM-ba msolsa a
21 ;RAM_START+size(STARTUP_DATA)+SIZE cmre. 2
222 MOV ECX,CS_BASE
223 ADD ECX,OFFSET (IDT_EPROM)
224 MOV SI,[ECX].table_linear
225 MOV EDI,EAX
226 MOVZX ECX,[ECX].table_lim
227 MOV APP_IDT_RAM[EBX].table_lim,CX
228 INC EXC
229 MOV APP_IDT_ram[EBX].table_linear,EAX
230 MOV EBX,EAX
231 ADD EAX,EXC
232 REP MOVS BYTE PTR ES:[EDI],BYTE PTR
DS:[ESI]
233 ;
234 ;Az IDT mutat rgztse a GDT-ben.
35 MOV [ 2 EDX[.bas_0_15+IDT_DESC_OFF,BX
38 24_31+IDT_DESC_OFF,BH
23
24 TR regiszterek feltltse
241 MOV EBX,RAM_START
24
24
24
24
24
24
24
49 NDEX*SIZE(DESC)
257 LSL ECX,EBX
258 INC ECX
259 MOV EDX,EAX
236 ROR EBX,16
37 MOV [EDX[.bas_16_23+IDT_DESC_OFF,BL 2
2 MOV [EDX[.bas_
9 ;
0 ;GDTR s ID
2 DB 66h
3 LGDT APP_GDT_ram[EBX]
4 DB 66h
5 LIDT APP_IDT_ram[EBX]
6 ;
sa 7 ;A TSS mozgat
8 MOV EDI,EAX
MOV EBX,TSS_I 2
250 MOV ECX,GDT_DESC_OFF
251 MOV GS,CX
252 MOV DH,GS:[EBX].bas_24_31
253 MOV DL,GS:[EBX].bas_16_23
254 ROL EDX,16
255 MOV DX,GS:[EBX].bas_0_15
256 MOV ESI,EDX
113
ltalnos CPU programozsi informcik
260 ADD EAX,ECX
261 REP MOVS BYTE PTR ES:[EDI], BYTE PTR
70 MOV free_mem_linear_base+RAM_START,EAX
271 ;
272 ;Felttelezzk, hogy a kezdeti taszkban nem
hasznlnak LDT-t - ha
273 ;szksges, hozzadhatunk egy LDT-t mozgat
kdot, aminek
274 ;hasonltania kell arra amit a TSS
mozgatsra hasznltunk.
275 ;
276 ;TR betltse.
277 LTR BX ;Nincs taszkvllts, csak
eszkriptor betlts.
278 ;Lsd
79 ;A taszkvllts szimullshoz szksges
AX,[EDX].SS_reg
V ESP,EDI
87 PUSH DWORD PTR [EDX].EFLAGS_reg
8
ES,BX
DS:[ESI]
262 ;
263 ;A TSS pointer rgztse.
264 MOV GS:[EBX[.bas_0_15+IDT_DESC_OFF,DX
265 ROR EDX,16
266 MOV GS:[EBX[.bas_16_23+IDT_DESC_OFF,DL
267 MOV GS:[EBX[.bas_24_31+IDT_DESC_OFF,DH
268 ROL EDX,16
269 ;Elmenti a szabad memria kezdcmt
RAM_START helyzetben.
2
d
a 3.17 brt.
2
regiszterek betltse.
280 ;
281 ;
282 ;
83 MOV 2
284 MOV EDI,[EDX].ESP_reg
285 MOV SS,AX
286 MO
2
28 PUSH DWORD PTR [EDX].CS_reg
289 PUSH DWORD PTR [EDX].EIP_reg
290 MOV AX,[EDX].DS_reg
291 MOV BX,[EDX].ES_reg
292 MOV DS,AX
293 MOV
114
Inicializls s az zemmdok kztti tkapcsols
294 ;
izlshoz.
96 IRETD
definilja az
Ez a rsz
SEGMENT RW
dup (?)

;
0 nop
1 nop
6 END main_start, ds:data, ss:stack
295 ;Egy tvoli ugrs szimullsa a taszk
inicial
2
297 ;
298 STARTUP_CODE ENDS
299 ;
300 END STARTUP, DS:STARTUP_DATA,
SS:STARTUP_DATA


3.4.5.6. A MAIN.ASM forrskdja

A 3-2 pldban bemutatott MAIN.ASM llomny
dat- s veremszegmenseket az alkalmazs szmra. a
helyettesthet egy magasszint nyelvben rt taszk f moduljval, melyet
a STARTUP.ASM-ban szerepl IRET utasts hv meg.

3-2 plda: MAIN.ASM

1 NAME main_module
DATA 2
3 DW 1000
4 DATA ENDS
5
6 STACK STACKSEG 800
7 ;
8 CODE SEGMENT ER USE32 PUBLIC
9 main_start:
1
1
12 nop
3 ; 1
14 CODE ENDS
15 ;
1
115
ltalnos CPU programozsi informcik
0FFFF FFFFh
0FFFF 0000h
GDT_SCRATCH
START: [CSBASE+E
-Kzeli ugrs a startra
-TEMP_GDT felptse
-LGDT
-Vdett md tkapcsolsa
LIMIT
BASE
DS, ES=GDT[1] 4GB
IP]
TEMP_GDT
GDT [1]
GDT [0] 0
BASE=0, LIMIT=4G


3.15. bra: A TEMP_GDT ltrehozsa s a vdett mdba val
tkapcsols (a forrsszveg 162-172 sorai)

0FFFF FFFFh
0
GDT
TSS RAM
IDT RAM
TSS
IDT
-GDT, IDT, TSS
ROM-bl RAM-ba mozgatsa
-Msolatok rgztse
-LTR
GDT RAM
RAM_START


116
Inicializls s az zemmdok kztti tkapcsols
3.16. bra: A GDT, IDT s TSS ROM-bl RAM-ba msolsa (a
forrsszveg 196-261 sorai)

SS=TSS.SS
ESP=TSS.ESP
PUSH TSS.EFLAG
PUSH TSS.CS
PUSH TSS.EIP
ES=TSS.ES
DS=TSS.DS
IRET
EIP
EFLAGS
ESP
ES
CS
SS
DS
TSS RAM
IDT RAM
GDT RAM
RAM_START
GDT
IDT ALIAS
GDT ALIAS
0


3.17. bra: tkapcsols a taszkra (a forrsszveg 282 296 sorai)


3.4.5.7. llomnyok tmogatsa

A STARTUP.ASM s MAIN.ASM forrskd llomnyok
lefordtst s a vgs alkalmazs ltrehozst 3-3 pldban mutatott
parancskteg llomny segtsgvel lehet elvgezni.

117
ltalnos CPU programozsi informcik
ASM386 STARTUP.ASM
ASM386 MAIN.ASM
BLD386 STARTUP.OBJ, MAIN.OBJ buildfile
(EPROM.BLD) bootstrap (STARTUP)
Bootload

3-3 plda: Az alkalmazs lefordtsra s felptsre szolgl
parancskteg-llomny

E pldban a BLD386-nak tbb szerepe is van:

A szegmensek s tblzatok szmra fizikai memrit foglal le.
A bemeneti llomnyok s a felpts mdjnak lerst tartalmaz
(gynevezett "build") llomny alapjn felpti a tblzatokat.
Linkeli a trgy llomnyokat s rendezi a referencikat.
Bootolhat s EPROM-ba programozhat llomnyt generl.

A 3-4 plda a felpts mdjnak lerst tartalmaz llomnyt
mutatja be, melynek alapjn a BLD386 a fentebb felsorolt mveletek
vgzi el.

3-4 plda: Build-llomny

INIT_BLD_EXAMPLE;

EGMENT S

*SEGMENTS (DPL=0)
, startup.startup_code
(BASE=0FFFF0000h)
;
TASK

BOOT_TASK (OBJECT=startup,
INITIAL, DPL=0,
NOT INTENABLED)

, PROTECTED_MODE_TASK
(OBJECT=main_module,
DPL=0,
118
Inicializls s az zemmdok kztti tkapcsols
NOT INTENABLED)
;
TABLE
GDT (


LACATION=GDT_EPROM
, main_module.stack
)
OM

, ENTRY=(
10: (PROTECTED_MODE_TASK
, startup.startup_code
, startup.startup_data
, main_module.data
, main_module.code


),

IDT (
LOCATION=IDT_EPROM
);

MEMORY
(
RESERVE=(0..3FFFH
-- terlet a rombl msolt IDT, GDT,
TSS szmra.

R
, 60000h..0FFFEFFFFH)
, RANGE=(ROM_AREA=ROM
(0FFFF0000h..0FFFFFFFFh))
-- Eprom mret 64K
, RANGE=(ROM_AREA=RAM (4000h..5FFFFh))
);

END

119
ltalnos CPU programozsi informcik
3.5. A vals zemmd felptse, mkdse

A Pentium processzor vals zemmdban kpes futtatni a 8086-
os, 8088-as, 80186-os s a 80188-as processzorokra, illetve az Intel 286,
tel 386, Intel 486-os processzorok vals zemmdjaira rt programokat.
megkzeltleg
zonos a 8086, 8088, illetve 80188-as processzorokval. A programoz
mr
melyek az opercis rendszer programozk vals zemmdrl
lkotott kpt hivatottak kibvteni, mint pldul :
k lefordtsa
lra forgatva kpezi a 20
ites bziscmet. Az effektv (ofszet) cm ngy 0-s bittel egsztdik ki a
ls helyrtk bitek fltt, s a bziscmmel sszeaddva alkotja a
t a 3.18. bra szemllteti. Minthogy fenn ll az
tvitel (carry) lehetsge, a keletkezett lineris cmeknek 21 szignifins
In

Ebben az zemmdban a processzor felptse
a
sz a a vals zemmdban dolgoz 32 bites proceszszor egy gyors
8086-os, vagy egy vals zemmd, bvtett utastskszlet Intel 286-os
processzornak tnhet.

Ebben a rszben bizonyos kiegszt fogalmakrl esik majd
emlts, a
a

cmek kpzse
megszaktsok s kivtelek kezelse
vals zemmd kivtelek.


3.5.1. Cme

Vals zemmdban a processzor a szelektorokat nem
deszkriptorok mutatjaknt rtelmezi, hanem lineris cmeket llt el,
akrcsak egy 8086-os. A szelektort ngy bittel ba
b
fe
lineris cmet, ahogyan az

bitje lehet. Egy 8086-ra rt program a 0-tl 10FFEFh-ig terjed (1 MByte


s megkzeltleg 64 kByte-nyi) lineris cmtartomny brmely lineris
cmt elllthatja. ( Ugyanakkor megjegyzend, hogy az Intel 486-os
illetve Pentium processzorok esetben az A20M# jel vals zemmdban
felhasznlhat az A20-as cmvonal maszkolsra, utnozva ezltal a
8086-os processzor 20 bitet tfog viselkedst). Minthogy a lapozs
vals zemmdban nem megengedett, a lineris cm fizikai cmknt kerl
felhasznlsra.
120
A vals zemmd felptse, mkdse

0 0 0 0
0 4 20
0 0 0 0
0 4 20
4 20
BZIS
OFSZET
+
=
16 bites Szegmens szelektor
16 bites effektv cm
0
X X X X X X X X X X X X X X X X X X X X LINERIS CM


3.18. bra: Cmek lefordtsa
zaktsok) jelentkeznek, ha egy effektv cm a 0-tl
5535-ig terjed tartomnyon kvl esik.

3.5.2. Regiszterek

A vals zemmdban rvnyes regiszter szett magba foglalja az
sszes 8086-os processzor esetben definilt regisztert s ezenfell, a
386-os processzornl s 387-es koproceszszornl bevezetett j
regisztereket: FS, GS, nyomkvet regiszterek, kontroll regiszterek, teszt
regiszterek s a lebegpontos egysg (NDP) regiszterei. j utastsok
jelentek meg, amelyek expliciten az FS illetve GS szegmensregiszterekkel
hivatottak mveleteket vgezni, ezenkvl hasznlhatk az j szegmens-
fllr prefixek is annak rdekben, hogy a cmek kiszmtshoz az
utastsokat ksztetni lehessen az FS s GS regiszterek hasznlatra.


Ellenttben a 8086-os s 286-os processzorokkal, akrcsak a 386-
os illetve 486-os processzorok, a Pentium kpes 32 bites effektv cmek
ellltsra egy cm-fllr prefix segtsgvel. Ugyanakkor vals
zemmdban a 32 bites cmek rtke nem haladhatja meg a 65535-t
anlkl, hogy egy kivtelt ne okozna. A 286-os vals zemmdjval val
teljes kompatibilits rdekben pszeudo vdelmi hibk (12-es vagy 13-as,
hibakd nlkli megs
6

s utastsok
121
ltalnos CPU programozsi informcik
rvnytelen utasts (invalid-opcode) kivtelt elidz utasts
dok kz azon vdett zemmd utastsok tartoznak, amelyek vdett
emm
e.
akts
agy kivtel azonostjt, hogy megkapja a megfelel indexet a
gsza
kdokat.
Az elsdleges klnbsg a vals zemmd 32 bites processzorok
s a 8086-os megszaktskezelse kztt az, hogy a megszaktsvektorok
tblzatnak helye s mrete az IDTR regiszter tartalmtl fgg.
k
z d szegmens szelektorokat illetve szegmens deszkriptorokat
mozgatnak vagy tesztelnek, mint pldul: a VERR, VERW, LAR, LSL,
LTR, STR, LLDT, s az SLDT utastsok. A vals zemmdban fut
programok kpesek kihasznlni azon j, alkalmazs-orientlt utastsok
elnyeit, amelyek a 8086-os, 80186-os, 80188-as, 286-os, 386-os, 486-os
illetve Pentium processzorok bevezetsvel egsztettk ki az
architektrt.

Ellenttben a 8086-os s 286-os processzorokkal, hasonlan a
386-os illetve 486-os processzorokhoz, a Pentium felknlja egy
operandus hossz fllr prefix hasznlatnak lehetsgt, amely lehetv
teszi 32 bites operandusok hozzfrst. Ennek ellenre ezen prefix
hasznlattl vakodjunk, ha clunk a 8086-os vagy 286-os
processzorokkal val kompatibilits megrzs


2.5.3. Megszakts s kivtel kiszolgls

Vals zemmdban a megszaktsok s kivtelek nagyjbl gy
mkdnek, mint egy 8086-os processzoron. A megszaktsok s kivtelek
megszakts kezel rutinokat hvnak meg egy megszaktsvektor
tblzaton keresztl. A processzor nggyel beszorozza a megsz
v
me ktsvektorok tblzatban. A megszaktsvektorok tblzatnak
bejegyzsei "far" (tvoli) tpus mutatk a megszaktst vagy kivtelt
kiszolgl procedrk bemenpontjaira. Egy megszakts megjelensekor
a processzor eltrolja a CS, illetve IP regiszterek aktulis rtkt a
verembe (push), letiltja a megszaktsokat, trli a TF flaget s tadja a
vezrlst a megszakts-vektorok tblzatbl kiolvasott cmre. A
kiszolgl rutin vgn egy RET utasts visszaprgeti az elbbi lpseket,
mieltt a megszaktott eljrsnak visszaadn a vezrlst. A kivtelek
vals zemmdban nem szolgltatnak hiba

122
A vals zemmd felptse, mkdse
ltalnos esetben ez nem nyilvnval a programoz szmra, mert egy
reset inicializlst kveten az IDTR regiszterben a bzis cm 0 s a hatr
rtke 3FF, ami kompatibilis a 8086-os processzorral. Ugyanakkor, vals
zemmdban a LIDT utastst hasznlhatjuk az IDTR regiszterbeli
bziscm illetve hatr (limit) rtkeinek megvltoztatsra. Tovbbi
rszleteket az IDTR regiszterrl, valamint a LIDT s SIDT utastsokrl
az elbbi rsz szolgltat. Ha egy befut megszakts tblzatbeli
bemenpontja meghaladja az IDTR regiszter ltal trolt hatr rtkt, egy
ketts hiba kivtelt (double-fault exception) eredmnyez.


3.5.4. Vals zemmd kivtelek
A processzor jelez attl fggen,
ogy vals vagy vde
zemmd kizrsokat rszletezi.
Meghatrozs Vekto A kivtel forrsa Hiba-

nmely kivtelt eltr mdon
tt zemmdban dolgozik-e. A 3.19. bra a vals h


r mutat
pointer
vissza-
trs
utn
Osztsi hiba 0 DIV s IDIV utastsok van
Nyomkvets 1 Akrmi (1.megj)
NMI 2 Nem maszkolhat megszakts van
Trspont 3 INT utasts nincs
Tlcsorduls 4 INTO utasts nincs
Hatr ellenrzs 5 BOUND utasts van
Hibs mveleti kd 6 Fenntartott mveletkdok s van
helytelen LOCK prefix
hasznlat
Eszkz nem elrhet 7 ESC vagy WAIT utastsok van
Dupla hiba 8 Interrupt tbla tl kicsi, hiba
elfordulsa egy msik hiba
kezelse kzben
van
Fenntartva 9
123
ltalnos CPU programozsi informcik
rvnytelen TSS
(3.megjegyzs)
10 JMP, CALL, IRET utastsok,
megszaktsik s kivtelek
van
Szegmens nincs 11 Akrmilyen mvelet, amelyik
jelen (3.megjegyzs) cserli a szegmenseket
van
Stack kivtel 12 Stack ofszet tl nagy van
CS, DS, ES, FG, GS
szegmens tlfuts
13 Ofszet tlnylik a 64K-s
hatron, kd vgrehajtsi
ksrlet a CS hatrn tl
van
Laphiba
(3.megjegyzs)
14 Akrmilyen mvelet, amelyik
hivatkozik a memrira
van
Fenntartva 15 van
Lebegpontos hiba 16 ESC vagy WAIT utastsok van
(2.megj)
Illeszkeds
ellenrzs
(3.megjegyzs)
17 Akrmilyen adat hivatkozs nincs
Fenntartva 18-31
Software
megszakts
0-255 INT n utastsok nincs
Maszkolhat
megszakts
32-255 van

3.19. bra: Kivtelek s megszaktsok

Megjegyzsek:

1. Egyes nyomkvet kivtelek a hibt okoz utastsra mutatnak,
msok az azt kvet utastsra. A kivtel kezel tesztelheti a DR6-os
regiszter tartalmt, hogy megllaptsa, melyik helyzet ll fennt.

2. A lebegpontos hibkat az els olyan ESC illetve WAIT utasts
alatt jelenti, amely a kivtelt elidz ESC utastst kveti.

3. A 10-es, 11-es, 14-es s 17-es kivtelek vals zemmdban nem
jelentkeznek, viszont virtulis 8086-os mdban elfordulhatnak.
124
A vdett zemmd felptse, mkdse
3.6. A Vdett zemmd felptse, mkdse

t inkbb a ksbbi, vdett
zemmdrl s rendszer-programozsrl szl informcik elrevettse.

A processzor architektrlis tulajdonsgainak jelents hnyadt
kizrlag rendszer programozk veszik ignybe. Ebben a rszben ezen
tulajdonsgok ttekintsre kerl sor. A felhasznli programok ri
szmra szksgesnek bizonyulhat e fejezet tolvassa, csakgy mint az
ezt kvet fejezetek, amelyekben a fenntemltett tulajdonsgok
felhasznlsi mdjai kerlnek bemutatsra, annak rdekben, hogy
megrthessk a rendszer programozk rendelkezsre ll hardware
knlta lehetsgeket, amelyekkel az alkalmazi programok szmra
megbzhat s biztonsgos krnyezeteket (environment) hozhatnak ltre.
Ezenkvl, a rendszerszinti architektra hatkony hibaelhrt
(debugging) lehetsgeket is tmogat, amelyeket az alkalmazi
programrk valsznleg szvesen beptennek fejleszts alatt ll
programjaikba.

Az architektra rendszerszinti lehetsgei kz tartoznak a kvetkezk:

memriaszervezs
vdelem
multitaszking
kivtelek s megszaktsok
ki- s beviteli mveletek (Input/Output)
inicializls s zemmdvlts
a lebegpontos egysg (FPU) menedzsmentje
hibaelhrts, nyomkvets
cache szervezs
multiprocesszls

A felsorolt tulajdonsgokat regiszterek s utastsok tmogatjk,
ezek sorra bemutatsra kerlnek a kvetkez rszben. A jelen rsz clja
nem annyira a rszletes bemutatsuk, min

Valahnyszor egy regiszterrl illetve utastsrl kerl emlts, azt vagy


magyarzat ksri, vagy utals egy ksbbi fejezetre.
125
ltalnos CPU programozsi informcik
3.6.1. Memriaszervez regiszterek.

A processzor ngy regisztere hatrozza meg azon adatstruktrk
helyt, amelyek a szegmentlt memria szervezst szablyozzk, amint
azt a 3.20. bra mutatja. Specilis utastsok llnak rendelkezsre ezen
regiszterek feltltsre s elmentsre. A GDTR s IDTR regiszterek
feltlthetk bizonyos utastsokkal, amelyek a memribl egy 6-Byte
hosszsg adatblokkot vesznek ki. AZ LDTR s TR regisztereket olyan
tastsokkal tlthetjk fel, amelyek operandusai 16 bites szegmens u
szelektorok. A regiszterek fennmarad Byte-jait a processzor
automatikusan feltlti az operandus ltal kijellt deszkriptorokbl.

SZELEKTOR
SZELEKTOR LDTR
TR
0 15
RENDSZER SZEGMENS
REGISZTEREK DESZKRIPTOR REGISZTEREK (A
GDTR
IDTR
0 15 16 47 32 BIT LINERIS BZISCM
RENDSZER C
32 BIT LINERIS BZISCM 32 BIT SZEGMENS HATR JELLEMZK
UTMATIKUSAN TLTDNEK)
MZ REGISZTEREK


3.20. bra: Memria kezel regiszterek

Az opercis rendszerek tbbsge levdi a felhasznli program
ell azokat az utastsokat, amelyek a memriaszervez regisztereket
tltik fel (br elkpzelhet olyan rendszer is, amelyben egyltaln nincs
vdelem).

GDTR Global Descriptor Table Register - globlis deszkriptortblzat
regiszter

A GDTR regiszter tartalmazza a globlis deszkriptortblzat
(GDT) 32 bites bziscmt s a 16 bites hatrt (limit). Valahnyszor
hivatkozs trtnik egy memriban lev adatra, egy szegmensszelektort
hasznlunk egy GDT- vagy LDT-beli szegmensdeszkriptor
megkeressre. A szegmensdeszkriptor a szegmens bziscmt
rtalmazza. ta
126
A vdett zemmd felptse, mkdse

DTR
T) 32
ites bziscmt, a 32 bites szegmens hatrt, a deszkriptor attribtumokat
s a 16 bites szegmensszelektort. Az LDT-t tartalmaz szegmensnek van
gy szegmensdeszkriptora a GDT-ben. A GDT-nek nincs
szegmensszelektora. Valahnyszor hivatkozs trtnik egy memriban
v adatra, egy szegmensszelektort hasznlunk egy GDT- vagy LDT-beli
egmensdeszkriptor megkeressre. A szegmensdeszkriptor a szegmens
TR I
R Task Register - taszkregiszter

Ez a regiszter tartalmazza az ppen
bites bziscmt, a 32 bites szegmens hat
s a 16 bites szegmensszelektort. Egy G
deszkriptorra (TSS) mutat. Lsd: multitaszk


3.6.2. Rendszer utastsok
re ika

2. deszkriptortblzatok cmzse
3. multitaszking
4. lebegpontos mveletek
L Local Descriptor Table Register - helyi deszkriptortblzat
regiszter

Ez a regiszter tartalmazza a helyi deszriptortblzat (LD
b
e
le
sz
bziscmt tartalmazza.

ID nterrupt Descriptor Table Register - megsz.-dt. reg.

Az IDTR regiszter tartalmazza a megszakts deszkriptortblzat
(IDT) 32 bites bziscmt s a 16 bites hatrt (limit). Valahnyszor befut
egy megszakts, a megszaktsvektor e tblzaton belli indexknt
meghatroz egy kapudeszkriptort. A kapudeszkriptor egy mutatt
tartalmaz, amelyet a megszakts kiszolgl rutin elindtsra
alkalmaznak.

T
vgrehajts alatt ll taszk 32
rt, a deszkriptor attribtumokat
DT-beli taszk-llapotszegmens
ing.

A dszer utastsok a kvetkez funkc t ltjk el:
1. mutatk paramterellenrzse
127
ltalnos CPU programozsi informcik
5. ki- s beviteli mveletek
6. megszakts-vezrls
7. nyomkvets, hibakeress
8. cache-szervezs
9.
anakkor nem
asznlhat fel a PE bit trlsre sem.
lelltja a processzort, amg egy
ngedlyezett megszakts vagy egy RESET jel nem rkezik be.
ardware halt zemmdbeli vlaszval.
iztonsgos
ommunikci rdekben.

Minden egyes utastsrl rszletes informcit kaphatunk a knyv
msodik ktetbl.
rendszervezrls

Az SMSW s az LMSW utastsokat a 16 bites 286-os
proceszszorral val kompatibilits rdekben vezettk be. A 32 bites
processzorokra, mint pldul a Pentiumra rt programokban nem ajnlott a
hasznlatuk. Helyette inkbb a vezrlregiszterekhez kell a MOV utasts
klnbz formival hozzfrni. Az LMSW utasts nem befolysolja a
PG, CD, NW, AM, WP, NE vagy ET biteket, ugy
h

A HLT utasts mindaddig
e
(jegyezzk meg, hogy az NMI illetve SMI megszaktsok mindg
engedlyezettek.) A processzor egy specilis buszciklust generl a halt
zemmdra val vlts jelzsre. A hardware sokflekppen vlaszolhat
erre a jelre. A gp ells paneljn pldul bekapcsolhat egy fnyjelzst,
esetleg generlhat egy diagnosztizl NMI-t, vagy akr inicializlst
(reset) is kezdemnyezhet. A software rknak tisztban kell lennik a
h

A LOCK utastsprefix clja, hogy lehetv tegye egy vdett
olvass-mdosts-rs mvelet kezdemnyezst egy memriban lv
operandus rtknek mdostsakor. A LOCK# jel aktivldik, s a
processzor a levdett ("lezrt") utasts alatt nem vlaszol a buszvezrls
tadst clz krsekre. Ezt a mechanizmust multiprocesszoros
rendszerekben hasznljk a proceszszorok kzti b
k

128
A vdett zemmd felptse, mkdse
3.6

A memriaszervezs egy olyan hardware mechanizmus, amely
kr
z esetben, ha tbb program fut prhuzamosan, mindegyiknek fggetlen
cm
elle
a t


sze
egy
kr
egy jedt
mtartomnyok szimullhatk. Az opercis rendszerek tervezi
tpusait
tasts elrse, veremre vonatkoz push vagy pop, olvassi vagy rsi
vele
kben kihasznljuk, ugyanis
.3. Vdett zemmd memriaszervezs

lehetv teszi az opercis rendszerek szmra, hogy egy leegyszerstett
nyezetet hozzanak ltre a futtatott programok rszre. Pldul abban
a
cmtartomnyt kell biztostani. Ha mindannyian ugyanazon
tartomnyon osztoznnak, egyenknt kne nehzkes s idpazarl
nrz mveleteket elvgeznik, hogy elkerlhessk az sszetkzst
bbi programmal.
A memriaszervezs szegmentlsbl illetve lapozsbl ll. A
gmentls clja, hogy minden egyes program rszre szmos,
mstl fggetlen s vdett cmtartomnyt biztostson. A lapozs olyan
nyezetek kialaktst tmogatja, amelyekben egy kis mret RAM s
bizonyos mennyisg lemezterletet felhasznlsval kiter
c
vlaszthatnak a kt mechanizmus kzl. Ha egyszerre tbb program is
szalad, az emltett kt eljrs kzl brmelyiket felhasznlhatjuk arra,
hogy egy programot megvdjnk ms programok beavatkozstl.

A szegmentls megengedi a teljesen strukturlatlan, egyszer
memria modellek (mint amilyen a 8 bites processzorok), vagy az
erteljesen strukturlt, cmfordtsos illetve vdelemmel elltott modellek
hasznlatt. A memriaszervezs a "szegmenseknek" nevezett egysgekre
vonatkozik. Minden egyes szegmens egy nll, vdelemmel elltott
cmtartomny. A szegmensekhez val hozzfrst olyan adatok vezrlik,
amelyek meghatrozzk a szegmens hosszt, a hozzfrshez szksges
privilgiumszintet, a szegmensre trtn memriahivatkozsok
(u
m tek, stb.), illetve azt, hogy a szegmens a memriban tallhat-e.

A szegmentlst a memria hozzfrsek ellenrzsre
hasznljk, ami a fejleszts alatt ll program hibinak feldertsben s a
"vgtermk" megbzhatsgnak nvelsben igencsak hasznosnak
bizonyulhat. A trgynyelvi modulok sszekapcsolsnak (link)
leegyszerstsre is hasznlatos. Nincs rtelme helyfggetlen kdot rni,
ha a szegmentl mechanizmust teljes mrt
129
ltalnos CPU programozsi informcik
minden egyes memriahivatkozst a modul kd, illetve
datszegmensnek bziscmhez viszonythatunk. A szegmentlst
are modulok ltrehozsra is
lhasznlhatjuk, amelyekben a fix cmek (abban az rtelemben fixek,
int pldul a 8080-as processzor, amelynl a logikai
m egyben fizikai cm is. A 32 bites processzorok vdett zemmdban is
mkdtethetk ezzel a memria modellel, ha a szegmenseket ugyanabba a
cmtartomnyba kpezzk le (mapping), a lapozst pedig letiltjuk.

A software-ek meghibsodsnak igen gyakori oka az, hogy a
verem "belen" az utastskdba vagy a program adataiba. Ennek
megelzsre biztos mdszer a szegmentls. A vermet a kd vagy adat
rszre fenntartott cmtartomnyon kvl es tartomnyba tehetjk. gy a
verem cmek mindg a veremszegmensbeli, az adatcmek pedig az
adatszegmensbeli memriarszre vonatkoznnak. A verem-szegmensnek
hardware ltal meghatrozott maximlis hossza van. Brmely olyan
prblkozs, amely a verem maximlis mretnek tlhaladst clozn,
kivtelt generlna.

Egy komplex programrendszer teljes mrtkben kihasznlhatja a
szegmentlst. Pldul egy olyan opercis rendszer, amelyben a
rogramok vals idben osztjk meg az adatokat, preczen ellenrizheti a
ozzfrst ezekhe k" (bugs), mint a
rogram ltal vgrehajtott szablytalan hozzfrssel generlt kivtelek
min


egy
lap rdtja a lineris cmet
a
ugyanakkor ROM-ra alapul softw
fe
hogy nem lehet ket megvltoztatni) egy szegmens bziscmhez
viszonytott ofszetek. Klnbz rendszereknek eltr fizikai cmen
lehetnek a ROM-moduljai, mivelhogy a szegmentl mechanizmus
minden egyes memriahivatkozst a megfelel helyre irnyt.

Egy egyszer memria felpts esetn minden cm ugyanarra a
cmtartomnyra hivatkozik. Ezt a memria modellt hasznljk a 8 bites
mikroprocesszorok, m
c
p
h z az adatokhoz. A "program-gubanco
p
jelentkeznek. Ez hasznos lehet a programrs stdiumban, mint
hibakeres segdlet, illetve a vgfelhasznlnak leszlltott rendszerben,
t a hiba helyrellt procedrk vezrlje.
A szegmentl hardware egy szegmentlt (logikai) cmet fordt le
folytonos, nem szegmentlt cmtartomnyra n. "lineris" cmre. Ha a
ozs megengedett, a lapoz mechanizmus lefo
130
A vdett zemmd felptse, mkdse
fizikai cmre. Ha a lapozs nem engedlyezett, a lineris cm fizikai
cm
lap


m
m
Lap
hoz
ke
alk
lap
me ezett kivtel
isszalltja a processzor regisztereinek tartalmt olyan rtkekre,
am
vgrehajtst. Ez a specilis eljrs megengedi az utasts jraindtst,
azaz kpesti az opercis rendszert arra, hogy kiolvassa a lapot a
lem
lekpezseit, s jraindtsa a programot. A program szmra ez a
lyamat ttetsz.
n lapozhat (demand-paged)
irtulis memrit, engedlyezett a lapozs. A felhasznli software
alk
cmknt kerl felhasznlsra. A fizikai cm a processzorbl kijv
buszra kerl, engedlyezett lapozs esetn esetleg a httrtrolrl
ozdik be.
A lapozs mechanizmust arra hasznlhat, hogy egy jelents
ret, nem szegmentlt cmtartomnyt lehessen szimullni egy kis
ret, fragmentlt cmtartomny s nmi lemezterlet segtsgvel.
ozssal a szabad memriaterletnl nagyobb adatstruktrkhoz lehet
zfrni, azltal, hogy rszint a memriaban, rszint a lemezen troljuk
t.

A lapozst 4 kByte-os, lapoknak nevezett egysgekre
almazzk. Ha egy program megprbl hozzfrni egy lemezen lev
hoz, klnleges eljrssal szaktdik meg. Ms kivtelekkel s
gszaktsokkal ellenttben, a cmek lefordtsakor keletk
v
elyek lehetv teszik a kivtelt elidz utasts megismtelt
ezrl, felfrisstse a lap lineris cmeinek fizikai cmekre val
fo

A lapozs opcionlis. Ha egy opercis rendszer soha nem
engedlyezi a lapozs mechanizmust, a lineris cmek fizikai cmekknt
kerlnek felhasznlsra. Ez akkor volna lehetsges, ha egy 16 bites
processzorra rt alkalmazst 32 bites processzorra adaptlunk. Egy 16
bites processzorra rt opercis rendszer nem alkalmaz lapozst, mivel a
cmtartomnya annyira rvid (64 kByte), hogy sokkal inkbb
gazdasgosabb egsz szegmenseket tcserlni (swap) a RAM s a lemez
kztt, mint egyedi lapokat.

Az olyan opercis rendszerekben mint az UNIX, amelyek
tmogatjk az ignyeknek megfelele
v
rszre a lapozs ttetsz, teht a 16 bites processzorokra rt
almazsokat tmogat opercis rendszer kpes futtatni azokat a
131
ltalnos CPU programozsi informcik
lap
nem moknak. Szegmentlst hasznl
rogramokat azokkal a szegmensekkel ktelez futtatni, amelyek


3.6


telj ritriuma alapjn vlasztjk meg. Pldul, ha egy opercis
ndszerben tbb program osztja meg vals idben adatait, maximlis
telj
a mem
szks

A msik oldalrl viszont, egy olyan opercis rendszer, amely
csa
szegme
szegme
megn ivel a
egmensregiszterek tartalmt nem kell tbb elmenteni vagy


Pl
pro


3.6


sze zve. Egy
egmensen belli ofszet vonatkozhat gy kd, mint adat terletre. Ez a
ozs engedlyezse mellett is. A lapozssal ellettben, a szegmentls
ttetsz a felhasznli progra
p
hasznlatra eredetileg meg voltak tervezve.
.3.1 A szegmentlsi modell kivlasztsa
A memria szegmentlsnak modelljt a megbzhatsg s
estmny k
re
estmnyt egy olyan modell nyjthatna, amely hardware-ileg ellenrzi
ria hivatkozsokat. Ehhez egy multiszegmens modellre lenne
g.
k egyetlen programot futtat, magasabb teljestmnyt rne el egy
ntls nlkli, n. "sk" modellel. A "far" tpus mutatk s a
ns-fellr prefixek kikszblsvel lecskken a kd hossza s
a vgrehajts sebessge. A kontextusvlts is gyorsabb, m
sz
visszalltani.
A szegmentls egyes elnyeit a lapozs is kpes biztostani.
dul az adatok megoszthatk (share), ugyanazon lapok minden egyes
gram cmtartomnyba val betrkpezsvel.
.3.1.1. A sk modell
A legegyszerbb modell a sk modell. Ebben a modellben minden
gmens a teljes fizikai cmtartomnyra van rtrkpe
sz
modell a lehet legtkletesebben eltrli a szegmentls mechanizmust,
akr a rendszerprogramoz, akr a felhasznli programir szemszgbl
ltott architektrbl. E megolds lehetsges volna egy olyan
programozsi krnyezet esetben, mint az UNIX, amely tmogatja a
lapozst, ellenben a szegmentlst nem.
132
A vdett zemmd felptse, mkdse

Egy szegmenst egy szegmensdeszkriptor hatroz meg. A sk
modellben legalbb kt szegmensdeszkriptort kell ltrehozni: egyet a kd
hivatkozsoknak, egy msikat pedig az adat hivatkozsoknak. Mindkt
deszkriptornak ugyanaz kell legyen a bziscme. Valahnyszor
memriahozzfrs trtnik, a szegmens regiszterek egyikt a
szegmensdeszkriptor kivlasztsra hasznljk. A szegmens deszkriptor
szolgltatja a szegmens bziscmt s a hatr (limit) rtkt, valamint a
hozzfrst ellenrz informcikat. (Lsd a 3.21 brt)

ltalban a ROM-ot a fizikai cmtartomny tetejre helyezik,
mivel a processzor az FFFF_FFF0H cmen kezdi vgrehajtani az
utastsokat. A RAM a cmtartomny aljn foglal helyet, ugyanis a reset
utn a DS adatszegmens bziscme 0.

A sk modellben minden deszkriptor bziscme 0, s a
szegmenshatr rtke 4 GByte. A szegmenshatrt 4 GByte-ra lltva a
szegmentl mechanizmust meggtoljuk abban, hogy kivtelt generljon
a szegmenshatron kvlre es memria hivatkozsokkor. Ugyanakkor
mg fennll annak lehetsge, hogy a lapoz illetve szegmentl vdelmi
mechanizmusok kivteleket generljanak, de ezeket is ki lehet iktatni a
memria modellbl.

CS
SS
DS
ES
FS
GS
HOZZFRS HATR
BZISCM
EPROM
DRAM
4G
0
FIZIKAI KD S ADATSZEGMENS
DESZKRIPTOR
SZEGMENS
REGISZTEREK MEMRIA


3.21. bra: Sk modell
133
ltalnos CPU programozsi informcik
3.6.3.1.2. Vdett sk modell
A v t dell t az egyszer sk modellre, azzal a
k bs el ho szeg atr akkorra vannak
be tva m k tulaj pen gy
ltalnos vdelm ib kivt erl
ne implem ria terlethez hozzfrni. Ez a lehetsg olyan
op cis r d ere en nlha a lapozs
mechanizmu v k csolv

E modellben a szegm har at
ab , h y e l z m arek en
rekeszek cm h sgnek kvetkezm Pldul,
ha roc sz ho ne a RE szciklus
tudomsulvtelezsre s befejezsre hasznlatos), a buszciklus nem
fej dik be, s a program v sa

B e n ro volna ezeket a
memria cellkat m mezni, mgis addhat ilyen nem ksrlet,
program ny en. s ellenrzse
nlkl m t n , gy eg anc programot.
Hardware-es ellenrzs esetn a progra tt mdon "omlanak
s ". en r gy iagn zen illetve
he ell e r a ecov oced

A . ra gy v sk a
szegmensdeszkriptorok gy voltak belltva, hogy csak a fizikailag ltez
me ria tartomnyt takarjk. A fizika DRAM
rs t eg k i tv datsz ns ta ziscme
s zeg nshatra opcionlisan bellthat gy, hogy a DRAM
tartomn oz e yezz zf trt az
EP M a R reteinek sszeg riba
kpezett I/O tartomnyt is haszn lehet
zvetlenl a D

det sk mo hasonl
ln gg , gy a mensh rtkek csak
ll , a ek ora a donkp i memria cmtartomnya. E
megksrelnk i h a el gen dik valahnyszor
m
er
ent
en
lt m
sz
em
kb hasz t, amelyekben
s ki an ap a.
entl
emri
dware meggtolja a programok
eszeket cmezzenek meg. Ez ban og n m te
ez
or
et
z
nyei hardware fggk.
ADY# jel (amely egy bu a p es m rkezik be
ez grehajt lell.
r egy tle p gramnak sem megengedett
egc
ozsi hibk eredm ekpp A cmek hardware-e
eg rt het ho y gub hirtelen lellthatja a
mok ellenrz
sze Ily ko e d zis etet lehet megjelenteni,
lyr t lj sok t (r ery pr ure) lehet kezdemnyezni.
3 22. b e dett modellre ad pldt. Ebben
m i memrinak EPROM s
z
s
y
me
d- lle e a egme karja. A kdszegmens b
yh
s
is
D
eng
AM
dl
m
en hoz rst. Az adatszegmens ha
re kell belltani. Ha mem
lunk, ez megcmezhet
RO
le
k RAM terlet hatrn tl.

134
A vdett zemmd felptse, mkdse
CS
SS
DS
ES
FS
GS
HOZZFRS HATR
BZISCM
EPROM
DRAM
4G
0
FIZIKAI
DESZKRIPTOROK
SZEGMENS
REGISZTEREK MEMRIA
SZEGMENS
MEMRIA I/O
HOZZFRS HATR
BZISCM


3.22. bra: Vdett sk modell


3.6.3.1.3. Multiszegmens modell
A legbonyolultabb modell a multiszegmens modell. Itt a
gmentl mechanizmus teljeskr lehetsgeit hasznljuk. Minden
es programnak megvan a sajt szegmensdeszkriptor tblzata s a
t szegmensei. A szegmensek lehetnek teljes mrtkben a program
agntulajdonban", vagy bizonyos ms programkal lehetnek
gosztva. A programoknak bizonyos szegmensekhez val hozzfrse
enknt ellenrizhet.
Maximum hat sze


sze
egy
saj
"m
me
egy

gmens llhat rendelkezsre azonnali hasznlatra.
Ezek azok a szegmensek, amelyeknek a szegmens-szelektorai a
szegmensregiszterekbe vannak betltve. Ms szegmensekhez a szegmens
szelektoraik szegmens regiszterbe val betltsvel lehet hozzfrni.
(Lsd a 3.23 brt).

Minden egyes szegmens egy klnll cmtartomny.
Mindamellett, hogy megengedett a fizikai memria egymssal
szomszdos blokkjaiba betlteni ket, a szegmentl mechanizmus
meggtolja, hogy egy szegmens tartalmhoz hozzfrhessnk egy msik
szegmens hatrt tlp olvasssal. Minden memrit rint mveletnl
ellenrizve van annak a szegmensnek a hatra (limit), amelyet a mvelet
135
ltalnos CPU programozsi informcik
hasznl. A szegmens hatrt tllp memriacmzsi prblkozs
ltalnos vdelmi hiba kivtelt eredmnyez.

A szegmentl mechanizmus csak a szegmens deszkriptorban
eghatrozott cmtartomny betartst kveteli meg. Az opercis
lefo
cm sek hasznlata. Pldul, egy rendszer
OM-jban trolva lehet kd is, adat is. Kdszegmens deszkriptort
ada

m
rendszer feladata minden egyes szegmensnek klnll cmtartomnyokat
glalni. Elkpzelhet olyan eset is, amelyben szksges lehet kzs
tartomnyt megoszt szegmen
R
hasznlunk, ha a ROM-ban utastselrst vgznk. Ha a ROM-ot
tknt olvassuk, adatszegmens deszkriptort hasznlunk.
CS
SS
DS
ES
FS
GS
FIZIKAI
DESZKRIPTOROK
SZEGMENS
EGISZTEREK MEMRIA
SZEGMENS
R
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM
HOZZFRS HATR
BZISCM


3.23. bra: Multiszegmens modell
136
A vdett zemmd felptse, mkdse
3.6.3.
Egy logikai cm a szegmenst jell 16 bites szegmens
2 bites ofszetbl ll. A
gikai cmek a hozzfrsi jog s a tartomny szempontjbl kerlnek
a teszteknek, a logikai cmeket a
rocesszor lineris cmekre fordtja le, az ofszetet hozzadva a szegmens
bzisc h rbl szrmazik, ami egy
memr a ns mretrl, helyzetrl s
ozzfrsi adatairl szolgltat informcit. A szegmensdeszkriptort kt
ns ll rendelkezsre. Ez az
hat szegmens, amelyeknek a szegmens szelektora fel van tltve a
processzorba. A szegmens szelektor a logikai cm megfelel lineris
cmm alaktsra hasznlatos informcikat tartalmazza. Minden
memria hivatkozs tpusnak (kd tartomnyra, verem tartomnyra s
adat tartomnyra), kln szegmensregisztere van a processzorban. Ezek
az aktulisan hasznlat alatt ll szegmensek szegmensszelektorjait
tartalmazzk. Ms szegmensekhez val hozzfrs szksgess teszi a
szegmensregiszterek feltltst a MOV utasts klnbz forminak
segtsgvel. Legtbb ngy adat tartomnyt lehet egyszerre elrni, ami
teht sszesen hat szegmensregisztert jelent.

Mikor egy szegmensszelektor betltsre kerl, a bziscm, a
szegmenshatr s a hozzfrsi jogot ellenrz informcik is
betltdnek a szegmensregiszterbe. A processzor addig nem nyl a
memriban lev deszkriptor tblzathoz, ameddig egy j szegmens
szelektor nem kerl betltsre. A processzorban eltrolt informcik
2. Szegmensfordts


szelektorbl, valamint a szegmensen belli 3
lo
ellenrzs al. Ha megfelel ezeknek
p
m ez. A bziscm a szegmensdeszkripto
ib n trolt adatstruktra, s a szegme
h
tblzat valamelyikbl kaphatjuk meg. Vagy a globlis deszkriptor
tblzatbl (GDT), vagy a loklis deszkriptor tblzatbl (LDT). A
rendszerbeli sszes programnak egyetlen GDT tblzata van, s egy-egy
klnll LDT tblzata minden egyes fut programnak. Ha az opercis
rendszer megengedi, klnbz programok osztozhatnak ugyanazon
LDT-n. A rendszert gy is konfigurlhatjuk, hogy egy LDT tblzatot se
tartalmazzon. Ebben az esetben minden program a GDT-t fogja hasznlni.

Minden logikai cmhez egy szegmens van rendelve (mg akkor is,
ha az opercis rendszer minden szegmenst ugyanabba a cmtartomnyba
kpez le). Annak ellenre, hogy egy programnak sok ezer szegmense
lehet, azonnali alkalmazsra csak hat szegme
a
137
ltalnos CPU programozsi informcik
lehetv teszik szmra a cmek lefordtst anlkl, hogy plusz
buszciklusokra lenne szksge. Az olyan rendszerekben, amelyekben
tbb processzornak van hozzfrsi lehetsge ugyanazon
deszkriptortblzatokhoz, a software kteles a szegmensregisztereket
jratlteni, valahnyszor a deszkriptor tblzatokat mdoststja. Ha ez
nem gy trtnik, fennll az a lehetsg, hogy egy szegmens regiszterben
eltrolt rgi szegmens deszkriptor kerl alkalmazsra, miutn a
memriarezidens vltozata mr megvltozott.

A szegmensszelektor a deszkriptortblzatok egyiknek egy 13
bites indext tartalmazza. Az index, egy nyolcas sklatnyezvel val
beszorzs utn (ennyi Byte tallhat egy szegmensdeszkriptorban) a
deszkriptor tblzat 32 bites bziscmvel addik ssze. A bziscm vagy
a globlis deszkriptortblzat regiszterbl (GDTR), vagy a loklis
deszkriptortblzat regiszterbl (LDTR) szrmazik. Ezek a regiszterek
tartalmazzk a deszkriptortblzatok kezdetnek lineris cmt. Amint azt
3.24. bra is mutatja, a szegmensszelektor egyik bitje hatrozza meg,
hogy a processzor m
a
elyik tblzatot hasznlja.

GLOBLIS
DESZKRIPTOR
TBLZAT
DE
LOKLIS
SZKRIPTOR
TBLZAT
T
I
TI=0 TI=1
HATR
BZISCM
HATR
BZISCM
SZELEKTOR
GDTR LDTR
SZEGMENS


SZELEKTOR
138
A vdett zemmd felptse, mkdse
3.24. bra: TI BIT - A deszkriptor tbla kivlasztsa
A lefordtott cm a lineris cm, amint az a 3.25 brn is lthat.
Ha nem haszn Ha a lapozs
geng

lunk lapozst, ez egyben a fizikai cm is.
me edett, egy msodik szint cmfordts adja meg a fizikai cmet.
Ezzel a tpus fordtssal a fejezet ksbbi rszben foglalkozunk.

0 0 15 31
Logokai cm
Deszkriptor tbla
Szelektor Ofszet
0 31
Lineris cm


3.25. bra: Szegmens fordts


3.6.3.2.1. Szegmensregiszterek
Szegmens
deszkriptor
Brmely memriahozzfrs tpushoz egy szegmensregiszter van
mre, illetve adatra vonatkoz hivatkozsok
a ltal kijellt szegmenseket
ezik


rendelve. A kdra, vere
indegyike a szegmensregisztereik tartalm m
cm meg. Tovbbi szegmensek tehetk elrhetv, ha a program
vgrehajtsa kzben a szegmens-szelektorjaikat betltjk ezekbe a
regiszterbe. A 3.26 brnak megfelelen, minden egyes regiszternek van
egy "lthat" s egy "lthatatlan" rsze. A szegmensregiszterek lthat
rsznek feltltsre a MOV utasts klnbz formi ismeretesek. A
lthatalan rszt a processzor tlti fel.

139
ltalnos CPU programozsi informcik
Azok a mveletek,
amelyek ezeket a regisztereket
feltltik, utastsok a
felhasznli programok
szmra. Kt fajta ilyen
utasts ltezik:

1. kzvetlen betlt
utastsok, mint amilyenek a
MOV, POP, LDS, LES, LSS,
LGS s LFS utastsok. Ezek
az utastsok expliciten a szegmensregiszterekre vonatkoznak.

2. kzvetett betlt utastsok, mint amilyenek a CALL s JMP
utastsok "far" vltozatai. Ezek az utastsok a CS regiszter tartalmt
mkdsk implicit rszeknt mdostjk.

Amikor a fenti utastsok egyike vgrehajtdik, egy
szegmensszelektor betltdik a szegmensregiszter lthat rszbe. A
processzor automatikusan feltlti a szegm
Lthat rsz Lthatatlan rsz
Szelektor Bzis cm, hatr, stb.
CS
SS
DS
ES
FS
GS


3.26. bra: Szegmens regiszterek
ens regiszter lthatatlan rszt a
eszkriptor tblzatbl kiolvasott informcikkal (pldul a
ziscmmel). Minthogy az utastsok legnagyobb rsze azokra a
elyek szelektorai mr be vannak tltve a
egmens regiszterekbe, a processzor teljestmny vesztesg nlkl kpes
nsszelektorai a
szegmensregisztereket foglaljk el egy adott pillanatban. Ez azt jelenti,
teht, hogy a program a MOV utasts klnbz forminak segtsgvel
lecserlheti ezen regiszterek tartalmt, mikor j szegmensre van szksge.

Egy szegmensszelektor meghatroz egy szegmens deszkriptort,
egy deszkriptortblzat s a tblzaton belli deszkriptor megjellsvel.
d
b
szegmensekre vonatkozik, am
sz
a logikai cm ofszetjt a szegmens bziscmvel sszeadni.


3.6.3.2.2. Szegmensszelektorok

A szegmensszelektor egy szegmens deszkriptornak nevezett,
szegmens definil informcira mutat. Egy programnak lehet tbb
szegmense azon a haton kvl, amelyek szegme
140
A vdett zemmd felptse, mkdse
A felhasznli programok szmra a szegmens szelektorok egy pointer
ltoz rszeknt jelennek meg, de a szelektorok rtkeit ltalban a
g
aders) hatrozzk meg, illetve mdostjk, s nem a felhasznli
programok. A 3.27. bra egy szelektor formtumt mutatja be.

: 8192 deszkriptor kzl
kivlaszt egyet a
atbl. A
Tblzat mutat bit:
Meghatrozza, hogy melyik tblzat kerl alkalmazsra. 0-s bit a
lis LDT-t szelektlja.
gnye
inditvnyozza egy lemezen trolt
v
kapcsolprogram (link editor) vagy kapcsol tltprogramok (linkin
lo
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IN
Index
DEX
T
I
RPL
deszkriptortblz
processzor beszorozza az index
rtkt egy 8-as sklatnyezvel
(egy szegmensdeszkriptorban
ennyi Byte van) s az eredmnyt
sszeadja a deszkriptortblzat
bziscmvel (amelyet a GDTR
vagy az LDTR regiszter trol).

Tbla kijell
0=GDT
1=LDT
Privilgium szint kr
00 = Legmagasabb szint
11 = Legalacsonyabb szint


3.27. bra: Szegmens szelektor
GDT-t, 1-es bit az aktu

lt privilegizlsi szint (RPL): Ha ez a mez egy nagyobb rtk
privilgium szintet jell, mint a program szintje (teht kevsb
privilegizlt), akkor egyszeren fellrja a program privilegium
szintjt minden olyan hozzfrs esetn, amely ezt a szelektort
hasznlja. Ha egy program egy kevsb privilegizlt
szegmensszelektort alkalmaz, a memria hozzfrsek az alacsonyabb
privilegizlsi szinten mennek vgbe. Ezt az eljrst annak a vdelem
srtsnek az elhrtsra hasznljk, amely akkor lpne fel, amikor
egy kevsb privilgizlt program egy privilgizltabb programot
prblna arra felhasznlni, hogy levdett adatokhoz frjen hozz.

Pldul a rendszer kezel programok vagy a perifria meghajtk
(device driver) magas privilgium szinten kell fussanak ahhoz, hogy
elrhessk a vdelemmel elltott terleteket, mint pldul a perifria
interfszek kontroll regisztereit. Ugyanakkor elkerlend ms, levdett
terlettel az sszeakads, mg akkor is, ha egy kevsb privilegizlt
rogram ezt krn. Ha egy program p
141
ltalnos CPU programozsi informcik
szektor memriba tltst egy privilegizltabb program, pldul az
percis rendszer ltal elfoglalt helyre, az RPL felhasznlhat egy
ltalnos vdelmi hiba kivltsra a kevsb privilegizlt
egmensszelektor hasznlatnak pillanatban. Ez a kivtel mg akkor is

ls bejegyzsre mutat szelektort) "null szelektorknt" hasznlhatunk.
processzor nem generl kivtelt, ha egy (CS-tl illetve DS-tl
tort tltnk. Ugyanakkor, ha egy
ull szelektort tartalmaz regiszterrel vgznk memria hozzfrst,
.6.3.2.3. Szegmens deszkriptorok

A szegmens deszkriptorok a memriban elhelyezked
adatstruktrk, amelyek a szegmens mrett, helyt illetve a vezrl- s
sttusinformcikat szolgltatjk a processzor szmra. A deszkriptorokat
ltalban a fordtprogramok, kapcsolprogramok, betltprogramok
vagy az opercis rendszer hozzk ltre, de semmi esetre sem a
felhasznli programok. A deszkriptorok ltalnos formtumt a 3.28.
bra mutatja be. Brmely tpus deszkriptor ennek az alapformtumnak a
vltozatait hasznlja.

o
sz
ltrejnne, ha a szegmens szelektort hasznl program privilgium szintje
elgsges volna ahhoz, hogy a mveletet egymagban elvgezze.

Mivel a GDT legels bejegyzst a processzor nem hasznlja, egy
0-s indexel s 0-s tblzat mutatval elltott szelektort (teht a GDT
e
A
klnbz) regiszterbe egy null szelek
n
kivtel keletkezik. Ezt a lehetsget hasznlaton kvli szegmens
regiszterek inicializlsra lehet alkalmazni.


3
142
A vdett zemmd felptse, mkdse
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0 Szegmens hatr 15-0
L 19-16
+0
Tpus G
B
0
A
V
Szegmens
hatr P S DPL
+4
D/B - Alap szegmens operandus mret (0 - 16 bites, 1 - 32 bites)
A
an
DPL - Deszkriptor privilgium szint
S
cmtartomnybeli helyzett. A processzor sszeteszi a hrom bziscm
mezt s gy kpezi az egy, 32 bites rtket. A szegmensek bziscm
,
a
kd
ezve. Megyjegyzend,

D
_
G - Szemcszettsg
VL - Rendszer program szmra engedlyezett a hasznlat
P - A szegmens jelen v
- Deszkriptor tpus (0 - rendszer, 1 - alkalmazs)
0 - Fenntartva


3.28. bra: Szegmens deszkriptorok

ziscm: Meghatrozza a szegmens 4 GByte-os fizikai B
rtkei 16 Byte-os keretekhez kell illeszkedjenek annak rdekben
hogy a programok teljestmnyt maximalizljk az adatok, illetve
16 Byte-os keretekbe trtn illesztsvel.

Felbonts (Granularity) bit: A szegmenshatr (Limit) mez rtknek
4096-os (2
12
) tnyzvel val sklzst engedlyezi. Ha a bit rtke
0, a szegmenshatr rtke egy Byte-os egysgekben, ellenkez
esetben 4 kByte-os egysgekben van rtelm
hogy a sklzs alkalmazsa esetn a cmek 12 legkevsb rtkes
bitje nem kerl ellenrzsre. Pldul, ha a G bit magas, egy 0-s
szegmenshatr a 0-4095 kztti tartomnyba helyezi a megengedett
eltolsi cmeket. Fontos azt is megjegyeznnk, hogy ez kizrlag a
szegmenshatr mezre rvnyes. A bziscm mindig Byte-os
felbonts marad.

143
ltalnos CPU programozsi informcik
Sze
bites rtket. A szegmens hosszt a processzor ktflekppen
en:
gikai cmek ofszetjei 0-tl
szegmenshatr rtkig terjedhetnek. Ms ofszetek kivtelt generlnak.
lefele bvl szegmensek megvltoztatjk a limit mez rtelmt.
k a 0-tl a
egmenshatrig terjednek (lsd a szegmenstpus mezt a
e helyezzk, amely nem kell mretet vltoztasson, akkor
z egy kznsges adatszegmens is lehet.
l. Adatszegmensekben a
bit neve B bit, s a veremmel vgzett mveletek kt aspektust
elle
gmenshatr (Limit): A szegmens mrett hatrozza meg. A
processzor sszeteszi a kt szegmenshatr mezt, gy kapja meg a 20
rtelmezi, a felbonts (G) bit llapotnak fggvnyb

1. Ha G=0, a szegmens hossza egy Byte-tl egy MByte-ig terjed, 1
Byte-os nvekmnnyel.

2. Ha G=1, a szegmens hossza 4 kByte-tl 4 GByte-ig terjed, 4
kByte-os nvekmnnyel.

A felfele bvl szegmensek esetn a lo
a
A
Brmely ofszettel megcmezhetk, kivve azokkal, amelye
sz
kvetkezkben). Ennek az az rtelme, hogy lehetv tegye olyan
szegmensek kpezst, amelyeknl a szegmenshatr rtknek
nvelsvel a szegmens cmtartomnynak aljn foglaldik le j
memriaterlet, s nem a szegmens tetejn. A lefele bvl szegmensek
clja a verem befogadsa, de hasznlatuk nem ktelez. Ha a stack-et egy
olyan szegmensb
e

S bit, deszkriptor tpust lelz bit: Meghatrozza, hogy egy adott
szegmens rendszer szegmens vagy kd- illetve adatszegmens. Ha S=1,
a szegmens vagy kdszegmens, vagy adatszegmens. Ha S=0, a
szegmens egy rendszer szegmens.

D bit / B bit: Kdszegmensek esetben ennek a bitnek a neve D bit, s az
operandusok s effektv cmek alaprtelmezs szerinti hosszt jelli.
Ha a D bit 1-re van lltva, 32 bites operandusokat s 32 bites effektv
cmzsmdot hatroz meg. Ellenkez esetben 16 bites
operandushosszt s 16 bites cmzsmdot jel
nrzi:

144
A vdett zemmd felptse, mkdse
1. A veremmutat regiszter mrett. Ha B=1, a PUSH, POP s
CALL tpus mveletek mindegyike a 32 bites ESP regisztert
hasznlja; ha B=0, a verem mveletek a 16 bites SP regisztert
hasznljk.
hatr (limit) mez hatrozza meg a verem
szegmens als korltjt. Ha B=1, a fels korlt FFFF_FFFFH; ha
B=0, a fels korlt FFFFH.
zegmenstpus mez: ennek a meznek az rtelmezse attl fgg, hogy a
sze
tpus
mezje meghatrozza az engedlyezett szegmens hozzfrs tpust,
s a szegmens nvekedsi irnyt (lsd 3.29. bra). Adatszegmensek
rom bitjnek a kvetkez az
rtelme: lefele terjed (E - expand-down), rs engedlyezs (W -
wri
Az adatszegmensek lehetnek csak olvashat, illetve
hat/olvashat tpusuak. A veremszegmensek olyan adatszegmensek,
tpusuak. Ha az SS regiszterbe
rmilyen ms tpus szegmens szelektora kerl betltsre, ltalnos
delm
esetben nagyobbnak kell
nnie a szegmens limit rtknl. A szegmenshatr ezen rtelmezsnek
gfel

2. Egy lefel bvl verem fels korltjt. Lefel terjed szegmensek
esetn a szegmens

S
gmens deszkriptor egy felhasznli szegmens vagy egy rendszer
szegmens deszkriptora. A rendszer szegmenseknek kiss eltr a
deszkriptor formtuma, lsd ksbb. Egy momria deszkriptor
esetn a szegmenstpus mez legals h
te enable), illetve elrt (A - accessed). Kdszegmensek esetn az
emltett hrom bit rtelme: illeszked (C - conforming), olvass
engedlyezs (R - read enable), illetve elrt (A - accessed).


r
amelyek ktelezen rhat/olvashat
b
v i hiba kivtel generldik. Ha a verem szegmens mrete vltoz
kell legyen, akkor ez egy lefele bvl adatszegmens lehet. A
szegmenshatr rtelme megvltozik a lefele bvl szegmens esetben. A
lefele bvl szegmensekben azok a szablyos ofszet cmek, anelyek a
felfele nvekv szegmensekben kivteleket idznek el. A felfele bvl
szegmenseket csak olyan eltolsi cmekkel lehet megcmezni, amelyek
rtke kisebb vagy egyenl a szegmenshatrnl. A lefele terjed
szegmensekbe mutat ofszeteknek minden
le
me elen a szegmenshatr cskkense a szegmens aljn eredmnyez
memria foglalst, ami a veremszegmens esetben helyes, ugyanis a
verem az alacsonyabb cmek irnyba terjed. Ha a veremnek egy fix
145
ltalnos CPU programozsi informcik
mret szegmenst foglalunk le, ez a szegmens nem kell felttlenl lefele
nvekv legyen.
146
A vdett zemmd felptse, mkdse

Tpus 11 10
E
9
W
8
A
Deszkriptor
tpus
Meghatrozs
0 0 0 0 0 Adat Csak olvashat
1 0 0 0 1 Adat Csak olvashat, hozzfrhet
2 0 0 1 0 Adat rhat - olvashat
3 0 0 1 1 Adat rhat - olvashat,
hozzfrhet
4 0 1 0 0 Adat Csak olvashat, lefel
nvekv
5 0 1 0 1 Adat Csak olvashat, hozzfrhet,
lefel nvekv
6 0 1 1 0 Adat rhat, olvashat, lefel
nvekv
7 0 1 1 1 Adat rhat, olvashat,
hozzfrhet, lefel nvekv
Tpus 11 10
C
9
R
8
A
Deszkriptor
tpus
Meghatrozs
0 1 0 0 0 Kd Csak vgrehajthat
1 1 0 0 1 Kd Csak vgrehajthat,
hozzfrhet
2 1 0 1 0 Kd vgrehajthat, olvashat
3 1 0 1 1 Kd vgrehajthat, olvashat,
hozzfrhet
4 1 1 0 0 Kd Csak vgrehajthat, illeszked
5 1 1 0 1 Kd Csak vgrehajthat,
hozzfrhet, illeszked
6 1 1 1 0 Kd vgrehajthat, olvashat,
illeszked
7 1 1 1 1 Kd vgrehajthat, olvashat,
hozzfrhet, illeszked

3.29. bra: Alkalmazsi szegmens tpusok

A kdszegmensek lehetnek vgrehajthat/olvashat, illetve csak
vgrehajthat tpusuak. Egy vgrehajthat/olvashat szegmens hasznos
147
ltalnos CPU programozsi informcik
lehet pldul abban az esetben, ha egy ROM-ba az utastskddal egytt
onstansokat is elhelyeztek. Ebben az esetben a konstansok kiolvashatk
dmnyez, ha nem hasznlunk taszkkaput. Azok a rendszer kezel
rogramok, amelyek nem frnek hozz levdett terletekhez, mint
milyenek az adat konverzit vgz eljrsok (pld. EBECDIC/ASCII
matikai knyvtr) s egyes
ivteltpusok (pldul: Osztsi hiba, INTO ltal detektlt tlcsorduls s
b
letesztelve a software kvetni tudja a szegmens felhasznlst. Pldul,
almazs sszes
szegmensnek A bitjeit. Ha az alkalmazs kiakad, lehetv vllik ezen
bite
neris
cmek helyessgre.
szegmens elrsekor,
g akkor is, ha a hozzfrs egy olvassi ciklus. Ha a deszkriptor
nben a ciklus soha sem fejezdne be. A hardware
zen tulajdonsgai szksgesek, ha ROM-ra alapozott deszkriptor
tblzatokat hasznlunk a 386-os processzorban, amely belltja az A
bitet valahnyszor egy szegmens deszkriptor. betltsre kerl. A 486 s
k
vagy egy CS fllr prefixel elltott utastssal, vagy egy kdszegmensre
vonatkoz szegmens szelektornak egy adatszegmens regiszterbe trtn
betltsvel. A kdszegmens lehet illeszked (conforming), vagy nem
illeszked (non-conforming). A vezrls tadsa egy privilegizltabb,
illeszked szegmensnek megtartja a CPL rtkt. Egy nem illeszked
szegmensnek eltr privilgium szinten tadott vezrls ltalnos vdelmi
hibt ere
p
a
fordts, Huffman kdols/dekdols, mate
k
BOUND tpus tartomny tlps) tlthetk csak az illeszked
kdszegmensekbe.

A szegmenstpus (Type) mezbeli A (accessed) bitet a processzor lltja
be azzal a cllal, hogy jelezze egy szegmens szegmensregiszterbe val
tltst. Az A bitet 0-s kezdeti rtkre lltva, majd ksb
egy programfejleszt rendszer kitrlheti egy alk
k llapota alapjn az alkalmazs ltal elrt sszes szegmens
feltrkpezse. A hibakeres mechanizmus ltal biztostott
trspontokkal ellenttben (lsd 2. ktet), a felhasznltsgi informci
inkbb a szegmensek hasznlatra vonatkozik, mintsem a li

A processzor aktualizlhatja a Type mezt a
m
tblzatok a ROM-ban vannak elhelyezve, szksgess vllhat a hardware
rszre, hogy az rsi ciklus ideje alatt megelzze a ROM adatbuszra val
csatlakozsnak engedlyezst. Ugyanakkor egy ROM-ba r ciklus
esetn szksg lehet a READY# jel processzorba trtn
visszajuttatsra, kl
e
148
A vdett zemmd felptse, mkdse
Pentium processzorok ellenben csak akkor lltjk 1-re az A bitet, ha az
elzleg mg nem volt belltva. A ROM-ba elhelyezett
deszkriptortblzatokba val rs megelzhet, belltva minden egyes
deszkriptor A bitjt.

DPL (Descriptor Priviledge Level) a deszkriptor privilgiumszintje. A
szegmens privilgiumszintjt hatrozza meg, a mr lert vdelmi
mechanizmus alkalmazsval.

A szegmens jelenltt jelz bit: Ha ez a bit rtke 0, a processzor egy
"betltetlen szegmens" kivtelt generl, amikor a deszkriptor
szelektora betltdik egy szegmens regiszterbe. Ezt az idkzben
elrhetetlenn vllt szegmensekhez val hozzfrs felismersre
hasznljk. Egy szegmens akkor vllhat elrhetetlenn (unavailable),
mikor az opercis rendszernek szabad memria terletet kell
ltrehoznia. A memriban helyet foglal, alkalmazson kvli
struktrk, mint pldul a fontok vagy perifria meghajtk ltal
elfoglalt hely felszabadtsra kerl. Egy struktra helye a szegmens
"betltetlen" megjellsvel szabadthat fel (ezt a szegmens
jelenltt jelz bit 0-ra lltsval lehet elrni). Ezt kveten a
szegmens ltal eddig lefoglalt terletet felhasznlhatjuk ms clra. A
legkzelebbi alkalommal, mikor a felszabadtott struktrra szksg
van, a "betltetlen szegmens" kivtel fogja jelezni, hogy a szegmenst
jra be kell tlteni a memriba. A mem.szervezs ezen a felhasznli
programok szmra ttetsz formjt virtulis memrinak nevezzk.
Egy opercis rendszer a fizikai memrinl sokkal nagyobb
mennyisg virtulis memrit kpes fenntartani azzal, hogy minden
pillanatban csak nhny szegmenst trol egyszerre a fizikai
memriban.

A 3.30 brn egy olyan deszkriptor formtumt lthatjuk,
amelyben a szegmens jelenltt jelz bit trlve van. Ha ez a bit 0, az
opercis rendszernek engedlyezve van az "Elrhet" (Available)
mezben eltrolni a sajt adatait, mint pldul a hinyz szegmens helyt
tekint informcikat.

149
ltalnos CPU programozsi informcik
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Tpus P S DPL
+4
+0
Elrhet
Elrhet Elrhet

3.30. bra: Szegmens deszkriptor (a szegmens nincs jelen)
3.6.3.2.4. Szegmensdeszkriptor-tblzatok

Kt fajta deszkriptortblzat ltezik:

a globlis deszkriptortblzat (GDT)
a loklis deszriptortblzat (LDT)

A taszkoknak van egyetlen egy, kzs GDT-je, illetve minden
egyes aktv taszknak kln-kln van egy LDT-je. A deszkriptor tblzat
egy szegmens deszkriptorokbl ll tmb, amint azt a 3.31. bra mutatja.
Egy deszkriptor tblzat hossza vltoz, s legtbb 8192 (2
13
)
deszkriptort tartalmazhat. A processzor nem hasznlja a GDT legels
deszkriptort. Erre a "null deszkriptorra" mutat szegmens szelektor, adat
szegmens regiszterekbe (DS, ES, FS vagy GS-be) tltve, nem generl
kivtelt, viszont minden olyan esetben kivtelt eredmnyez, amelyben
megksrelnk egy memria hozzfrst ezzel a deszkriptorral.
Inicializlva a szegmensregisztereket ezzel a szegmensszelektorral,
garantlhatjuk, hogy a hasznlaton kvli szegmensregiszterekre val
vletlen hivatkozsok kivtelt idzzenek el.




150
A vdett zemmd felptse, mkdse
GLOBLIS
DESZKRIPTOR
TBLZAT TBLZAT
LOKLIS
DESZKRIPTOR
+32
+40
+48
+56
+32
+40
+48
+56
+16
+24
HATR
BZISCM
HATR
BZISCM
GDTR regiszter
Az els deszkriptor a
GDT-ben nem hasznlt +0
+8
HOZZFRS
LDT deszkriptor
(GDT belpsi pont #2)
+0
+8
+16
+24
Ezek a regiszterek tartalmazzk a tblzatok 32 bites
y olyan cmre, amelynek 4-el val osztsi maradka 2). gy a
rocesszor egy illesztett szt, s azt kveten egy illesztett duplaszt
ormlis esetben nem trolnak
s-ellenrzsi hiba kivltsnak
hets


3.31. bra: Deszkriptor tblzatok


3.6.3.2.5. Deszkriptortblzat bzisregiszterek

A processzor a GDTR s IDTR regiszterek alapjn tallja meg a
globlis deszkriptor tblzatot (GDT), illetve a megszaktsok
eszkriptort (IDT). d
lineris cmtartomnybeli cmeit. Ezenkvl troljk mg a tblzatok
mreteinek 16 bites hatr rtkt. Valahnyszor az IDTR s GDTR
regiszterek betltsre vagy elmentsre kerl sor, egy - a 3.32 brn
lthat - 48 bites "pszeuddeszkriptor"-ra trtnik memriahivakozs. A
felhasznlmdbeli (3. privilgiumszint) illeszkedsi hibk elkerlse
vgett ajnlatos a pszeuddeszkriptort pratlan sz cmre elhelyezni
agyis eg (v
p
trol. A felhasznl-mdbeli programok n
szeud-deszkriptorokat, de egy illeszked p
le ge elkerlhet a pszeuddeszkriptorok ilyen tpus illesztsvel.

151
ltalnos CPU programozsi informcik
A cache vonal feltlts
teljestmnynek maximalizlsa
rdekben clszer a GDT s IDT
bziscmeit egy nyolc Byte-os
kerethez illeszteni. A GDT, illetve
IDT hatrrtkei Byte-okban vannak
kifejezve. Csakgy, mint a szegmensek es
47 16 15 0
Bziscm Hatr


3.32. bra: Pszeud deszkriptor
formtum
tben, itt is a hatr (limit)
rtkt a bziscmmel sszeadva kapjuk meg az utols, rvnyes Byte
t.
ki.
or tbla a loklis deszkriptortblzat (LDT).
Egy 16 t onostja, amelyet az LDTR regiszter
trol. A ziscmt s
hatrr T (GDT-
bl kio s nal feltlts (cache
ne fill) teljestmnynek maximalizlsa rdekben ajnlatos az LDT-t
.6.3.3. Lapfordts
ls mentes
mtartomnybeli 32 bites cmet rtnk. Ez a cmtartomny lehet egy
mi lemezterlet
gtsgvel. Ha lapozst hasznlunk, a lineris cm vagy a neki
egfel
p
mezrekldsnek ksretben), majd jraindtsa a kivtelt elidz

cm Ha a hatr rtke 0, pontosan egy rvnyes Byte-ot hatroz meg.


Minthogy a szegmens deszkriptorok hossza minden esetben nyolc Byte, a
hatr rtke mindg eggyel kevesebb kell legyen mint nyolc egsz szm
sokszorosa (teht 8N-1). Az LGDT s SGDT utasts feltlti, illetve
kiolvassa a GDTR regisztert, a LIDT s SLDT utasts pedig az IDTR
regisztert tlti fel, illetve olvassa

A harmadik deszkript
bi es szegmens szelektor az
z LDTR regiszter ezen kvl tartalmazza az LDT b
tkt, de ezeket a processzor tlti be automatikusan az LD
lva ott) szegmens deszkriptorbl A cache vo
li
egy nyolc Byte-os kerethez illeszteni.


3

Lineris cm alatt egy egyenletes, szegment
c
kiterjedt fizikai cmtartomny (pldul tbb GByte-nyi RAM-bl
kpezett), ugyanakkor a lapozs segtsgvel szimullhat ez a
cmtartomny, egy kis mennyisg RAM s n
se
m el fizikai cmre fordtdik, vagy egy kivtel generldik. A
kivtel biztostja az opercis rendszernek azt a lehetsget, hogy
beolvassa a lapot a lemezrl (valsznleg egy msik la
le
utastst.

152
A vdett zemmd felptse, mkdse
A lapozs abban tr el a szegmentlstl, hogy fix mret lapokat
hasznl. A szegmensekkel ellenttben, amelyeknek hossza ltalban
megegyezik a bennk foglalt kd- vagy adatstruktrk mretvel, a
lapoknak rgztett mretk van. Abban az esetben, ha a szegmentls a
cmfordts egyedli felhasznlt mdja egy, a fizikai memriban jelen
v adatstruktrnak minden rsze a memriban tallhat. Ha lapozst
gy rsze a memriban, msik rsze a
ely vagy a lineris cmeket trkpezi
Lookaside
uffer) nevet viselik. A TLB a legtbb laptblzat olvassra irnyul
krsnek eleget tesz. A felesleges buszciklusok csak akkor jelennek meg,
am -ben nin t. Ez ltalban akkor trtnik, amikor egy
laphoz sz ideje nem ozzfrs.


3.6.3.3 Lapozsi op

lapozs megengedett, ha a CR0 . bitje magasra van
lltva. t a bitet lta az operci ware
inicializ s idejn. Ha zs enged ek lineris
cmekk laktshoz a dtsnak eg zintjt alkalmazzuk.
Ha a lapozs nem engedlyezett, a line s. A
PG bit 1 kell legyen, ha az opercis rendszer egynl tbb programot
futtat virtulis 8086-os zemmdban, vagy az ignyeknek megfelelen
lapozhat (demand-page) virtulis memr
le
hasznlunk, az adatstruktra e
mezen lehet. Az az informci, am le
le fizikai cmekre, vagy kivteleket vlt ki, egy memriban trolt,
laptblzat nven ismert adatsruktra. Csakgy, mint a szegmentls
esetben, ez az informci is egy processzoron belli gyorsttrba
(cache) kerl, a cmfordtsra szksges buszciklusok szmnak
minimizlsa rdekben. A szegmentlssal ellenttben, a cmfordt
gyorsttrak teljesen ttetszek a felhasznli programok rszre. A
processzor ltal cmfordtsra felhasznlt informcikat trol
yorsttrak a "fordtsi segdpuffer" (TLB - Translation g
B
ikor TLB a
hos
c la s tal
volt h

.1. cik
A regiszter 31
Ez lban s rendszer lltja be a soft
l a lapo lyezett, a fizikai cm
a cmfor y msodik s
ris cm egyben fizikai cm i
it hasznlunk.
153
ltalnos CPU programozsi informcik
3.6.3.3.2. Lineris cm

A 3.33 brn egy 4 kByte-os lap lineris cmnek formtumt lthatjuk.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Lapcmtr Tblzat Ofszet



izsgl lapcmtr, tblzat, s
fszet me
hasznlja
hasznlja la tal kijellt laptblzatban. Az ofszet mezt a
laptblzat ltal m
hasznja.
6 Byte-nyi adatot tartalmaz, vagy legtbb 1
Kt sz
egcm el. Egy
pcmtr m xim
laptblzato
cmez meg f

Teh
1 MByte (2
20
en egyes
lap 4 kByte (2
12
GByte-nyi
Byte-nl na t lapok hasznlatnak tmogatsrl a
ggelkben olvashatunk.


3.33. bra: A lineris cm formtuma
A 3.34. bra bemutatja, hogy a processzor a laptblzatokat
va, miknt fordtja le egy lineris cm v
o zit fizikai cmre. A cmzmechanizmus a lapcmtr mezt
indexknt egy lapcmtrban. A tblzat mezt indexknt
pcmtr l a
eghatrozott lapon belli operandusok cmzsre


3.6.3.3.3. Laptblzatok

A laptblzat egy 32 bites bejegyzseket tartalmaz tmb. Maga a
laptblzat is egy lap, s 409
kByte 32 bites bejegyzst. A ngy kilByte-os oldalak, belertve a
lapcmtrakat s a laptblzatokat is, 4 kByte-os keretekhez illeszkednek.
inten elhelyezett tblzatokat alkalmazunk egy memria lap
zshez. A legkls szinten a lapcmtr helyezkedik m
la a um 1024 bejegyzst trol, amelyek a msodik szint
kat cmezik meg. Egy laptblzat legtbb 1 kByte-nyi lapot
izikai memriban. a
t egyetlen lapcmtr ltal megcmzett laptblzatok sszesen
) 4 kByte-os lapot kpesek megcmezni. Ha mind
) Byte-ot tartalmaz, egyetlen cmlaptr laptblzatai 4
(2
20
x2
12
=2
32
) lineris cmtartomnyt kpes tfogni. A 4
gyobb mre k
f
154
A vdett zemmd felptse, mkdse
Lapcmtr
bejegyzs
Lap tblzat
Fizikai cm
Lap directory
Lap tblzat
Lap keret
bejegyzs
Lapcmtr Tblzat Ofszet


3.34. bra: Lapfordts

Az aktulis lapcmtr fizikai cme a CR3-as regiszterben van
eltrolva, amelyet mg a lapcmtr bziscm regiszternek (PDBR) is
neveznk. A memriaszervez software dnti el, hogy az sszes taszk egy
lapcmtrat hasznl-e, vagy minden egyes taszk rendelkezik egy kln
lapcmtrral, esetleg a kt megolds valamilyen kombincijt hasznlja.


3.6.3.3.4. Laptblzat bejegyzsek

A laptblzatok s lapcmtrak bemenpontjai, 4 kByte-os lapok
esetn, a 3.35 brn ltat formtumok egyikvel rendelkeznek. A 4
kByte-nl nagyobb lapok laptblzat- s lapcmtr formtumrl tovbbi
informcik a fggelkben tallhatk.

155
ltalnos CPU programozsi informcik
1
0
2
3
1
0
7
8
14
15
19
31
4
5
6
7
8
9
10
14
19
31
11
12
13
15
16
17
18
20
21
22
23
24
25
26
27
28
29
30
1
0
2
3
4
5
6
Piszkos
Hozzfrhet
Cache tiltott
tr
Felhasznl
rhat
Jelen van
7
14
19
31
0
31-12
20
21
22
23
24
25
26
27
28
29
30
Lapkeret
cm
20
21
22
23
24
25
26
27
28
29
30
8
9
10
11
12
13
0
Hozzfrhet
a programoz
szmra
15
16
17
18
2
3
4
5
6
9
10
11
12
13
16
17
18
1
0
7
8
9
10
14
15
19
20
21
22
31
0
programoz
szmra
rhat
Jelen van
31-12
Lapmret (0=4k)
Laptblzat
bejegyzs
Lapcmtr
bejegyzs


3.35. bra: A lapcmtr formtuma s a laptblzatok elemei a 4K-s
.
szint
ptblzatban a lapkeret cm annak a ngy kByte-os lapnak a cme,
ely a
mriba, s
laptblzat bejegyzs fennmarad rsze az opercis rendszer
23
24
25
26
27
28
29
30
Lapkeret
cm
16
17
18
11
12
13
Hozzfrhet
a
2
3
4
5
6
Hozzfrhet
Cache tiltott
tr
Felhasznl
0
lapokhoz


3.6.3.3.5. Lapkeret cm

A lapkeret cm a lap fizikai kezdcmt hatrozza meg. A
lapcmtrakban a lapkeret cm egy laptblzat cme. Egy msodik
la
am keresett operandust, illetve utastst tartalmazza.


3.6.3.3.6. A Present (betlttt, jelenlev) bit

A P bit megmutatja, hogy egy lapkeret a fizikai memriban
jelenlev lapra mutat-e.

Ha a Present bit trlve van, a lap nincs betltve a me
a
rendelkezsre ll, hogy abba trolhassa pldul a hinyz lap holltrl
156
A vdett zemmd felptse, mkdse
szl informcit. A 3.36 brn lthat a laptblzat bejegyzs
formtuma abban az esetben, ha a Present bit rtke 0.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
0 H o z z f r h e t


3.36. b mtuma nem jelenlv lapoknl
Ha zintjn a P bit trlve van, egy
ptblzat bejegyzs hasznlatt clz kisrlet laphiba kivtelt
rl a fizikai memriba.
Az
. A kivtelt elidz program ezek utn jraindtdik.
ra: Laptblzat bejegyzs for

a laptblzatok brmely s
la
eredmnyez. Az ignyeknek megfelelen lapozhat (demandpage)
virtulis memrit tmogat rendszerekben,a trgyalt esetben a kvetkez
esemnysorozat jelentkezik:

1. Az opercis rendszer betlti a lapot a lemez

2. opercis rendszer bejegyzi a lapkeret cmt a laptblzatba s
belltja annak P bitjt. Ms bitek, mint pldul a piszkos (dirty)
illetve a hozzfrt (accessed) bitek is belltdhatnak.

3. Minthogy egy fordtsi segdpuffer (TLB) mg mindg tartalmazhatja
a rgi laptblzat bejegyzs msolatt, az opercis rendszer
rvnytelenti azokat. A fordtsi segdpufferek (TLB-k)
rvnytelentsnek mikntjt a fejezet ksbbi rsze trgyalja.

4

Megjegyzend, hogy a lapcmtrnak mint olyannak, nincs Present
bitje a CR3-ban. A lapcmtr betltetlen is lehet, amg a hozzrendelt
taszk felfggesztett llapotban van, de az opercis rendszernek
biztostania kell azt, hogy a CR3-nak egy folyamat TSS-ben lev kpe
ltal kijellt lapcmtr, jelen legyen a fizikai memriban, mg mieltt a
folyamat megkapn a vezrlst. A lapcmtrnak ezenkvl mindaddig a
memriban kell maradnia, amg a taszk aktv.


157
ltalnos CPU programozsi informcik
3.6.3.3.7 Hozzfrt (accessed) s "piszkos" (dirty) bitek

Ezen bitek szolgltatnak adatokat a laphasznlatrl a laptblzatok
indkt szintjn. Az Accessed bit a lapokhoz, vagy egy msodik szint
ptblzathoz trtn olvassi vagy rsi hozzfrsek jelzsre hasznlt.
zzfrs jelzsre hasznlatos. Ezeket a
iteket a hardware lltja be, br a processzor impiciten egyik bitet sem
sra, a processzor nem hasznlja a lapcmtr D bitjt.
z opercis rendszer ellenrizheti, hogy a laphoz
olt-e rs-hozzfrs. Ha a lapnak ltezik a lemezen egy msolata, s
m
la
A Dirty bit egy lapba val rsi ho
b
trli ezek kzl.

A processzor az A bitet a laptblzatok mindkt szintjn belltja,
mg a lapot olvas illetve r mveletek eltt. A processzor mg egy, az
illet laptblzat bejegyzs ltal megjellt cmre r mvelet eltt belltja
a D bitet. Kizrlag a msodik szint laptblzat Dirty bitje kerl
felhasznl

Az opercis rendszer felhasznlhatja az Accessed bitet, amikor
nmi szabad trterletet kell ltrehoznia egy lap vagy egy msodik szint
laptblzat lemezre kldsvel. A laptblzatok A bitjnek peridikus
trlsvel ellenrizheti, hogy melyek az utoljra hasznlt lapok. A
hasznlatlan lapok eslyesek a lemezrekldsre.

Az opercis rendszer felhasznlhatja a Dirty bitet, amikor egy
lapot visszakld a lemeztrra. A lap memriba tltsnek pillanatban
trlve a Dirty bitet, a
v
nem trtnt rs-hozzfrs a memriban lev pldnyhoz, nem
szksges a diszk memria szerinti frisstse.

A knyv msodik ktetbl megtudhatjuk, hogy a
multiprocesszoros rendszerekben a processzor hogyan jtja fel az
Accessed s Dirty biteket.


3.6.3.3.8. rs/olvass illetve felhasznl/felgyel bitek

A Read/Write s User/Supervisor biteket a processzor lapvdelem
ellenrzsre hasznlja fel, amit a cmfordtssal egyidben vgez. A
vdelemrl bvebb informci a fejezet ksbbi rszben tallhat.
158
A vdett zemmd felptse, mkdse


3.6.3.3.9. Lapszint cache-vezrl bitek

A PCD s PWT biteket lapszint cache szervezsre alkalmazzk.
A software-ek ezen bitek segtsgvel kontrollhatjk az nll lapok
vagy a msodik szint laptblzatok cache hasznlatt. A cache
asznlatrl bvebb informci egy ksbbi fejezetben tallhat.
znlt laptblzat bemeneteket a processzor a
hip-be ptett cache trakban, az gynevezett fordtsi segdpufferekben,
tasts cache memriknak klnll fordtsi segdpufferei vannak. A
mem
hajt
tart


(am
opercis rendszerek programozinak azonnal rvnytelenteni kell a
rdtsi segdpuffereket (elvetve ezekbl a laptblzat bemenpontokat)
bit
ker k nem tartjk szmon a
ltozsokat, s ennek kvetkeztben az ezt kvet laptblzat-


rv
egy

pld.:
MOV CR3,EAX

h


3.6.3.3.10. Fordtsi segdpufferek

A legutoljra has
c
(ms nven TLB) trolja. A Pentium mikroprocesszorban az adat- s
u
lapozsok legjelentsebb hnyada a TLB-k tartalmt hasznlja fel. A
riban tallhat laptblzatok elrsre csak abban az esetben
dnak vgre buszciklusok, amikor a fordtsi segdpufferek nem
almazzk a krt lap fordtsi informciit.
A TLB-k ttetszek a felhasznli programok szmra
elyeknl PL>0), de az opercis rendszerek szmra (PL=0) nem. Az
fo
valahnyszr a laptblzat bemenetek mdoslnak (akkor is, ha a Present
rtke 0). Ha ez nem gy trtnik, akkor cmfordtskor felhasznlsra
lhetnek olyan rgebbi adatok, amelye
v
hivatkozsok helytelenek lehetnek.
Az opercis rendszer a CR3-as regiszter feltltsvel
nytelentheti a TLB-ket. A CR3-as regiszter a kvetkez kt eljrs
ikvel tlhet fel:
1. Explicit feltlts a MOV utasts alkalmazsval, mint
159
ltalnos CPU programozsi informcik
2.
utasts csak egyetlen TLB bemenetet
rvnytelent; br egyes esetekben az INVLPG teljes egszben
rvnytelenti az utasts-cache TLB-t.


.6.3.4. Szegmens- s lapfordts keverse
sszefoglalja a logikai
mek fizikai cmekre val fordtsnak mindkt stdiumt, a lapozs
Ha a 32 bites processzor szegmensek nlkl megrt software-eket
l kpessgnek
ikapcsolsa. A 32 bites processzoroknak nincs szegmentls letilt
m
adattar a val lekpezsvel.
32 bites processzorutastsok ltal hasznlt 32 bites ofszetek 4 GByte-

Ha lapozst hasznlunk, a szegmensek a teljes lineris
art
lapoz
cmtart
Implicit feltlts taszkkapcsolssal, amely megvltoztatja a CR3-
as regiszter tartalmt (Lsd ksbb, taszkkapcsols).

Amikor egy nll lap lekpezse (mapping) vltozik meg, az
opercis rendszernek az INVLPG utastst kell hasznlnia. Ha
lehetsges, az INVLPG

3

A 3.37. bra egyesti a 3.36 s 3.34 brkat, s
c
engedlyezse esetben. A cmfordts mindkt stdiumban ltez
opcik szmtalan klnbz memria szervezsi md tmogatsra
alkalmazhatk.


3.6.3.4.1. A sk modell


futtat, szksges lehet a processzor szegment
k
zem dot kapcsol bitje, de ugyanaz a hats rhet el a verem-, kd- s
tomnyok ugyanazon lineris cmtartomnyr
A
nyi lineris cmtartomnyt takarnak le.

cmt omnyra lekpezhetk. Ha egyszerre, egynl tbb program fut, a
mechanizmus segtsgvel minden egyes programnak nll
omny biztosthat.
160
A vdett zemmd felptse, mkdse
3.6.3.4.2 Tbb lapot tfog szegmensek

A processzor architektrja megengedi olyan szegmensek
hasznlatt, amelyek hossza meghaladja egy lap mrett. Pldul egy
kiterjedt adatsruktra lapok ezreit foghatja t. Ha a lapozs nem lenne
engedlyezett, az adatstruktra brmely rszhez val hozzfrs
megkveteln a teljes adatstruktra jelenltt a fizikai memriban.
Lapozs esetn csak a hozzfrt rszt tartalmazlapnak kell a memriban
lennie.


3.6.3.4.3. Tbb szegmenst tfog lapok

A szegmensek ugyanakor lehetnek a lapoknl rvidebbek is. Ha
egy ilyen szegmens egy, ms szegmensekkel nem megosztott lapon kap
helyet, a fennmarad trterlet "parlagon marad". Pldul egy kis mret
adatstruktra, mint amilyen egy 1 Byte-os szemafor, elfoglal 4 kByte-nyi
helyet, ha egy lapra egyedl kerl elhelyezsre. Ha tbb szemafort
hasznlunk, sokkal gazdasgosabb ugyanarra az egy lapra pakolni ket.

3.6.3.4.4. Nem illeszked lap- s szegmenshatrok

Az architektra nem tesz ktelezv a lapok s a szegmensek
hatra kzt semmilyen megfeleltetst. Egy lap tartalmazhatja egyik
szegmens vgt, illetve egy msik szegmens elejt. Hasonlan, egy
szegmens tartalmazhatja egy lap vgt, illetve egy msik lap elejt.

.6.3.4.5 3 . Illeszked lap- s szegmenshatrok

A memria szervez software egyszerbb s hatkonyabb lehet,
ha bizonyos mrtkben megkveteli a lapok illetve a szegmenshatrok
kzti illeszkedst. Pldul, ha egyetlen lapra elfr szegmens kt lapra
kerl elhelyezsre, ktszer tbb lapozsi mveletre lehet szksg a
egmens elrshez. sz

161
ltalnos CPU programozsi informcik
Szelektor Ofszet
LOGIKAI CM
15 0 31 0
Deszkriptor tblzat
Szegmens
deszkriptor
OR
Tartalomjegyzk Tblzat Ofszet
4k-s Lapkeret
Tartalomjegyzk Ofszet
Lineris cm
Lineris cm (4k-s lapoknl)
Operandus
Laptblzat
Laptblzat
bejegyzs
Lapcmtr
4k-s tartalomjegyzk
bejegyzs
4M-s tartalomjegyzk
bejegyzs
4M-s Lapkeret
Operandus
CR3
(4M-s lapoknl)

lapcm fordts 3.37. bra: Kombinlt szegmens- s

162
A vdett zemmd felptse, mkdse
3.6.3.4.6. Egy laptblzat elhelyezse szegmensenknt

A lapozs s szegmentls egyttes hasznlatnak egyik
lehetsges megkzeltse - amely leegyszersti a memria szervez
software-t - az, hogy minden egyes szegmensnek sajt laptblzata legyen
iztostva, ahogyan azt a 3.38. bra mutatja. Ez a megolds a
egme
b
sz nsnek egyetlen lapcmtr bejegyzst biztost, amely a szegmens
lapozshoz szolgltatja a hozzfrst ellenrz informcikat.

Loklis
deszkriptor
tblzat Laptblzatok
Lapkeretek
Lapcmtr
Lapcmtr
Laptblzat
bejegyzs
Laptblzat
bejegyzs
bejegyzs
Deszkriptor
Deszkriptor
Laptblzat
bejegyzs
Laptblzat
bejegyzs
Lapcmtr
bejegyzs
bejegyzs
Laptblzat
Laptblzat
bejegyzs


3.38. bra: minden egyes szegmensnek biztostani kell sajt laptblzatot
163
ltalnos CPU programozsi informcik
3.7. Vdelemi mechanizmusok

A vdelem egy megbzhat multitaszking szmra
elengedhetetlen. A vdelem clja az, hogy a taszkok egymsba trtn
beavatkozst kikszblje. Pldul, a vdelem megakadlyozhatja az
egyik taszkot abban, hogy egy msik taszk utastsait vagy adatait
fellrja.

Programrs kzben a vdelmi mechanizmus egy tisztbb kpet
megjelenst.
vdelmi mechanizmus
megvhat a feldertetlen program hibk ltal okozott hiba lehetsgtl (a
rejte
vdeni lik a diagnosztizls s
egksrelhet az automatikus helyrellts.
meghatroz bit, amellyel a vdelmi mechanizmust ki lehetne
apcsolni, ugyanaz a hats rhet el azzal, hogy minden egyes szegmens
, illetve azok adataira gyakorolt
eavatkozsnak mennyisgt korltozni lehessen. A vdelem egy rtkes
adhat a program sszeakadsairl. Ha egy program vratlan hivatkozst
tesz egy nem megfelel trterletre, a vdelmi mechanizmus
meggtolhatja az esemnyt, illetve visszajelezheti annak

A vgfelhasznli rendszerekben a
tt hibk sosem maradnak rejtve). Az opercis rendszert meg lehet
a srlsektl, ezltal lehetv v
m

A vdelem lapokra s szegmensekre alkalmazhat. A processzor
egyik regiszterben tallhat kt bit meghatrozza az aktulisan fut
program privilegizlsi szintjt (ms nven aktulis privilgium szint,
vagy CPL). A CPL ellenrzse a szegmentlsi s lapozsi cmfordts
ideje alatt trtnik.

Annak ellenre, hogy nem ltezik egy vezrlregiszter vagy egy
zemmd
k
szelektorhoz, szegmens deszkriptorhoz, illetve laptblzat bejegyzshez
nulls privilgium szintet (a legmagasabb privilegizltsgi szintet)
rendelnk


3.7.1. Szegmens szint vdelem

A vdelem biztostja annak lehetsget, hogy egy helytelenl
mkd program ms programokra
b
164
Vdelmi mechanizmusok
segteszkze a software rsnak, mivel megengedi klnbz software
akeres, stb.) szmra, hogy srtetlenl
egmaradjanak a memriban. Mikor egy felhasznli program elakad, a
a helyrellt eljrsok elindtsra.
en egyes memriahivatkozs esetn ellenrzdik, hogy
a vdelmi feltteleknek. Minden ellenrzs a memriaciklus
be; brmely szablytalansg meggtolja a ciklus
s kivtelt eredmnyez. Minthogy az ellenrzsek a
mfordtssal prhuzamosan trtnnek, nincs teljestmnykiess. t
delm
artomnyt rint megszortsok
4. Az procedrk bemenpontjait rint megszortsok
5. Az utastskszletet rint megszortsok

A vdelem megszegse kivtelt eredmnyez. A kivtel
mechanizmus magyarzatt lsd a fejezet ksbbi rszben Ezen rsz
azokat a vdelem megszegseket rja le, amelyek kivtelekhez vezetnek.


3.7.2. A szegmens deszkriptorok s a vdelem

A 3.39. bra a szegmens deszkriptor azon mezit mutatja be,
melyeket a vdelmi mechanizmus hasznl. A "Tpus" mez klnbz
bitjei az ltaluk elltott funkcikkal vannak elnevezve.
trehoz egy deszkriptort, belltja
nnak vdelmi paramtereit is. ltalnos esetben a felhasznli
terekkel trdnik.
szegme szor betlti mind a szegmens bziscmt,
eszkzk (opercis rendszer, hib
m
rendszer kpes diagnzis zeneteket megjelenteni, illetve a hida esetleges
helyrelltsra. A gyrtsi fzisban a vdelem megbzhatbb teszi a
software-eket azzal, hogy lehetsget biztost az opercis rendszer
szmra

Mind
eleget tesz-e
kezdete eltt indul
elkezdst
c
v i ellenrzs tpus ltezik:

1. Tpus ellenrzs
2. Hatr (limit) ellenrzs
3. A megcmezhet t
a

Amikor az opercis rendszer l
a
programok rinak nem szksges a vdelmi param

Amikor egy program betlt egy szegmensregiszterbe egy
ns szelektort, a proces
165
ltalnos CPU programozsi informcik
mind a vdelmi informcikat. Minden szegmensregiszter lthatalan
rszben hely van biztostva a bziscm, limit, tpus s privilgium szint
trolsra. Amg ez az informci a szegmensregiszterben rezidens, az
ugyanarra a szegmensre irnyul, egymst kvet vdelmi ellenrzsek
teljestmny kimarads nlkl vgezhetk.

3.7.2.1. Tpusellenrzs

A felhasznli kd- s adatszegmensek deszkriptorain kvl, a
processzornak rendszerszegmens- s kapudeszkriptorai is vannak. Ezek
olyan adatstruktrk, amelyek taszkok, illetve kivtelek s megszaktsok
szervezsre hasznlatosak. A 3.40. bra felsorolja a rendszer szegmensek
s kapuk minden definilt tpust. Megjegyzend, hogy nem minden
deszkriptor hatroz meg egy szegmenst; a kapudeszkriptorok a
procedrk bemenpontjaira mutat pointereket tartalmaznak.

Tpus Meghatrozs
Decimlis Binris
0 0000 Fenntartva
1 0001 Hozzfrhet 16 bites TSS
2 0010 LDT
3 0011 Foglalt 16 bites TSS
4 0100 16 bites Call kapu
5 0101 Taszk kapu
6 0110 16 bites megszakts kapu
7 0111 16 bites csapda kapu
8 1000 Fenntartva
9 1001 Hozzfrhet 32 bites TSS
10 1010 Fenntartva
11 1011 Foglalt 32 bites TSS
12 1100 32 bites Call kapu
13 1101 Fenntartva
14 1110 32 bites megszakts kapu
15 1111 32 bites csapda kapu

3.40. bra: Rendszer szegmens- s kapu tpusok
166
Vdelmi mechanizmusok

Az adat- s kdszegmens deszkriptorok tpus mezi olyan biteket
tartalmaznak, amelyek meghatrozzk a tovbbiakban a szegmens cljt
(lsd 3.39. bra)

Az rhat (Writable) bit egy adatszegmens deszkriptorban
meghatrozza, hogy a programok rhatnak-e a szegmensbe.

Az Olvashat (Readable) bit egy kdszegmens deszkriptorban
iszterekbe) olvasva a deszkriptor egy szelektort.
A tpusellenrzs felhasznlhat olyan programozsi hibk
feldertsre, amelyek megksrelnk a szegmenseket a programr
szmra nemkvnatos mdon alkalmazni. A processzor kt alkalommal
ellenrzi a tpusinformcit:

1. Mikor egy deszkriptor szelektora betltdik egy
szegmensregiszterbe. Bizonyos szegmensregiszterek csak
meghatrozott deszkriptorokat tartalmazhatnak; pldul:

A CS regisztert csak vgrehajthat szegmens szelektorval
szabad feltlteni.

A vgrehajthat de nem olvashat szegmensek szelektorai
nem tlthetk be az adatszegmens regiszterekbe.

Csak rhat adatszegmensek szelektorai tlthetk az SS
regiszterbe.

meghatrozza, hogy a programok olvashatnak-e egy szegmensbl
(pldul a kdtartomnyban trolt konstansokat). Egy olvashat
kdszegmens ktflekppen olvashat:

1. A CS regiszter segtsgvel, a CS fllr prefixet
hasznlva

2. Az adatszegmens regiszterbe (DS, ES, FS, vagy GS
reg

167
ltalnos CPU programozsi informcik
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0 Szegmens hatr 15-0
G B
A
V
L
Szegmens
hatr
19-16
1 1 DPL
+4
+0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0 Szegmens hatr 15-0
G D
A
V
L
Szegmens
hatr
19-16
1 1 DPL
+4
+0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0
Tpus
Szegmens hatr 15-0
G
Szegmens
hatr
19-16
1 0 DPL
+4
+0
0
0 1 C R A
0 E W A 0
A - Hozzfrhet
B - Nagy
C - Illeszked
D - Alapbellts
DPL - Deszkriptor privilgium szint
E - lefel nvekv
G - Szemcszettsg
R - Olvashat
W - rhat


3.39. bra: Vdett mdban hasznlt deszkriptor mezk
168
Vdelmi mechanizmusok



2. Mikor az utastsok olyan szegmensekhez frnek hozz, amelyek
deszkriptorai mr be vannak tltve a szegmensregiszterekbe.
Egyes szegmenseket az utastsok csak bizonyos elre
atnak; pldul:
Egyetlen utasts sem rhat egy vgrehajthat szegmensbe.

m olvashat egy vgrehajthat
ashat (Readable) bit nincs
belltva.

.7.2.2. Hatr (limit) ellenrzs
Egy szegmens deszkriptor limit mezje meggtolja a programokat
bban, hogy a szegmensen kvlre cmezhessenek. A hatr gyakorlati
it llapottl. Adatszegmensek esetn a
s. Az E bit a Tpus mez egyik
ens deszkriptorra vonatkozik.
zegmens Byte-okban
meghatrozott mdon hasznlh


Egyetlen utasts sem rhat egy adatszegmensbe ha az
rhat (Writable) bit nincs belltva.
Egyetlen utasts se
szegmensbl, ha az Olv

3


a
rtke fgg a G (Granularity) b
hatr fgg az E (Expansion) bit rtktl i
bitjnek megnevezse, ha adatszegm

Ha a G bit trlve van, a hatr a deszkriptor 20 bites Limit
mezjnek rtke. Ebben az esetben a hatr a 0-tl F_FFFFH rtkig
terjed (2
20

- 1 vagy 1 MByte). Ha a G bit rtke 1, a processzor
beszorozza a limit mez rtkt egy 2
12
sklatnyezvel. Ebben az
esetben a hatr a 0FFFH-tl (2
12
- 1 vagy 4 kByte) egszen
FFFF_FFFFH-ig (2
32
-1 vagy 4 GByte) terjed. Jegyezzk meg, hogy a
sklatnyez hasznlatakor a cm als tizenkt bitje nem kerl limit
ellenrzs al; ha a G bit 1-re van lltva s a szegmenshatr rtke 0, a
szegmensen belli rvnyes ofszetek 0-tl 4095-ig terjednek.

Minden szegmenstpus esetn, kivve a lefele bvl
szegmenseket, a limit rtke egyel kevesebb mint a s
169
ltalnos CPU programozsi informcik
kifejezett hossza. A processzor ltalnos vdelmi hibt idz el a
kvetkez esetek brmelyikben:

Egy olyan memriabeli Byte elrsre tett ksrlet, amelynek a
cme > limit
Egy olyan memriabeli sz elrsre tett ksrlet, amelynek a
cme > (limit-1)
Egy olyan memriabeli duplasz elrsre tett ksrlet,
amelynek a cme > (limit-3)
Egy olyan memriabeli ngyes sz elrsre tett ksrlet,
amelynek a cme > (limit-7)

A lefele bvl adatszegmensek esetben a hatrnak ugyanaz a
funkcija van, csak mskppen van rtelmezve. Ebben az esetben az
rvnyes ofszetek tartomnya a (limit+1)-tl a 2
32
-1 -ig terjed, ha B=1,
illetve 2
16
-1-ig, ha B=0. Egy lefele bvl szegmensnek akkor van
maximlis hossza, ha a szegmenshatr rtke 0.

A limit ellenrzs olyan programhibkat "fedez fel", mint
milyenek a "kiszalad" indexek, illetve az rvnytelen mutat
szmtsok. ktldnak,
zltal a kivlt ok megtallsa egyszerbb. Limit ellenrzs nlkl ezek
tani, s jelezni forrsukat.
amely nem hasznlatos. Annak ellenre, hogy ezt a
a
Ezek a hibk a megjelensk pillanatban dete
e
a hibk fellrhatnnak kritikus trterleteket egy msik modul
belsejben, s az emltett hibk ltezse mindaddig nem lenne
kimutathat, amg a srlt modul ssze nem esne, ez egy olyan esemny
lvn, amely jval a tulajdonkppeni hiba utn kvetkezne be. A vdelem
kpes ezeket a hibkat elhr

A szegmenshatr ellenrzs mellett ltezik mg a
deszkriptortblzatok limit ellenrzse is. A GDTR, LDTR, s az IDTR
regiszterek tartalmaznak egy-egy 16 bites limit rtket. Ezeket a
processzor arra hasznlja, hogy meggtolja a programokat abban, hogy
egy deszkriptortblzaton kvl es szegmens deszkriptort szelektljanak.
A deszkriptortblzat hatrrtke a tblzat utols rvnyes Byte-jt
hatrozza meg. Minthogy minden deszkriptor 8 Byte-nyi hossz, egy N
deszkriptort tartalmaz tblzat hatrrtke 8N-1 kne legyen. Egy
szelektornak az rtke lehet 0 is. Ez a deszkriptor a GDT legels elemre
vonatkozik,
170
Vdelmi mechanizmusok
deszkriptort be lehet tlteni egy szegmensregiszterbe, brmely olyan
ok alacsonyabb
rivilgiumszintet jelentenek. Ha minden egyb vdelmi ellenrzs ki van
gyanaz
hats rhet el minden privilegizlsi szintnek 0-s rtket rendelve. (A
bit; a
vgreh
elrhet d nem engedlyezett, a processzor vals
zemmdban dolgozik, amelyben egy gyors, kiterjesztett 8086-os


megbzhatsgnak javtsra lehet felhasznlni. Az opercis
ndszernek a legmagasabb privilegizltsgot (szmozs szerinti
program al megsrljn. Ha egy program
sszeomlik, az opercis rendszernek megadatik ezltal a lehetsg arra,
y d
ksrel
softwa
program ra. Abban az esetben, ha egy kezelprogram (device
river) fagyna le, az opercis rendszer kpes kell, hogy legyen egy
Egy kezelprogram
prblkozs, amely ezzel a deszkriptorral hivatkozna a memrira,
ltalnos vdelmi hibt vltana ki.


3.7.3. Privilgium szintek

A vdelmi mechanizmus ngy privilgium szintet ismer,
szmozsuk 0-tl 3-ig trtnik. A nagyobb szm
p
elgtve, egy ltalnos vdelmi hiba generldik, valahnyszor egy
program megksrel egy szegmenshez hozzfrni a szegmenshez rendelt
privilgium-szintnl kevsb privilegizlt szinten (nagyobb privilgium
szmmal).

Annak ellenre, hogy nem ltezik a vdelmi mechanizmus
kikapcsolst szolgl vezrlregiszter vagy zemmd-vlt bit, u
a
CR0 regiszter PE bitje nem csak a vdelmi mechanizmust engedlyez
vdett zemmd engedlyezsre hasznlt, vagyis a program-
ajts egy olyan mdjnak, amelyben a teljes 32 bites architektra
. Ha a vdett zemm

processzornak tnik.)
A privilgium-szinteket az opercis rendszerek
re
legkisebb privilegizlsi szintet) biztostva megvdhet attl, hogy ms
okban elfordul gubancok lt

hog iagnzis-zenetet generlhasson, illetve helyrellt eljrsokat


jen meg. Egy jabb privilegizlsi szint llapthat meg a rendszer-
re egyb rszei, mint pldul a perifria-eszkzket kezel
ok szm
d
diagnzis-zenetet kldeni, teht van rtelme az opercis rendszert
megvdeni a kezelprogramok gubancaitl.
171
ltalnos CPU programozsi informcik
ugyanakkor fontos perifrit kezelhet, mint pldul egy lemezegysget.
Ha a felhasznli program akad el, a kezelprogramnak nem szabad a
lemez knyvtrstruktrjt mdostania. A kezelprogram szmra
clszer egy kztes privilegizlsi szintet biztostani az opercis
rendszer s a felhasznli programok kztt. A felhasznli programok a
legalacsonyabb privilegizlsi szintet (szmozs szerinti legnagyobb
szintet) kapjk.

A 3.41. bra bemutatja, hogy miknt rtelmezhetk ezek a privi-
legizlsi szintek mint vdelmi gyrk. A kzppont jelkpezi a
legkritikusabb software-t, ltalban egy opercis rendszer magjt
(kernel) tartalmaz szegmenseket. A kls gyrk a kevsb kritikus
software-eket jelkpezik.

A kvetkez adatstruktrk tartalmaznak privilegizlsi szinteket:

A CS szegmens-regiszter legals kt bitje tartalmazza az aktulis
priv
r a vezrls
taddik egy eltr privilegizlsi szinttel rendelkez
kd
ilegizlsi szint.
A szegmens-szelektorok tartalmaznak egy "szksges privilegizlsi
lja, hogy a szelektort
ltrehoz procedra privilegizlsi szintjt jelkpezze. Ha az RPL
kev


ilgium-szintet (CPL). Ez az aktulisan fut program
privilegizlsi szintje. Az SS regiszter legals kt bitje is trolja a
CPL egy msolatt. Normlis esetben a CPL rtke megegyezik annak
a kdszegmensnek a privilegizlsi szintjvel, amelybl az utasts-
elrs trtnik. A CPL rtke megvltozik, valahnyszo
szegmensnek.

A szegmens-deszkriptorok tartalmaznak egy "deszkriptor-
privilegizlsi szint"-nek nevezett mezt (DPL). A DPL a
szegmenshez rendelt priv


szint"-nek nevezett mezt (RPL). Az RPL c
sb privilegizltabb a CPL-nl, akkor fllrja a CPL-t. Amikor
egy privilegizltabb program egy kevsb privilegizlt programtl kap
egy szegmens-szelektort, az RPL teszi azt, hogy a memria-
hozzfrs a kevsb privilegizlt szinten menjen vgbe.

172
Vdelmi mechanizmusok
A privilegizlsi szintek akkor kerlnek ellenrzs al, amikor egy
deszkriptor szelektora betltdik egy szegmens-regiszterbe. Az
adathozzfrs esetn alkalmazott ellenrzsek eltrnek a vgrehajthat
szegmensek kztti vezrlstadskor alkalmazott ellenrzsektl; ebbl
kifolylag az elkvetkez alfejezetekben a kt hozzfrs-tpus kln-
kln kerl bemutatsra.

Opercis rendszer KERNEL
0. szint
Op. rendszer kezelprogramok
Eszkzmeghajtk, stb.
Alkalmazsok
1. szint
2. szint
3. szint


3.41. bra: Vdelmi gyrk



egy a
regiszt
ellenr
szelekt
mutatja
ellenr

3.7.4. Az adathozzfrsek korltozsa
Ahhoz, hogy a memriban lev operandusokat megcmezzk,
datszegmens szelektort be kell tlteni egy adatszegmens-
erbe. (a DS, ES, FS, GS, vagy SS regiszterekbe). A proceszszor
zi a szegmens privilegizlsi szintjeit. Az ellenrzs a szegmens-
or betltsnek pillanatban trtnik. Amint azt a 3.42. bra
, hrom klnbz privilegizlsi szint kerl ilyen tpus
zs al.
173
ltalnos CPU programozsi informcik

A hro

. A program CPL-je (aktulis privilegizlsi szintje). Ezt a CS
regiszter kt legals helyrtk bitje trolja

s des rnak L-je
r-privilegizlsi szintje).
ens m re nlt
ilegiz tje). az
ensregiszter (az SS, DS, ES,
t az op dus
m ellenrztt privilegizlsi szint a kvetkez:
1
.
2. Az operandust tartalmaz szegmen
(deszkripto
zkripto DP

3. Az operandust tartalmaz szegm
szelektor RPL-je (szksges priv
operandus elrsre felhasznlt szegm
egjells
lsi szin
hasz
Ezt
FS, vagy GS regiszterek) kt legals bitje
a veremszegmensben van, az RPL megegyezik a CPL rtkvel.
rolja. Ha eran

174
Vdelmi mechanizmusok
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 3 2 6 8 7 5 4 1 0
DPL
+4
+0
Operandus szegmens deszkriptor
szter
Operandus szegmens szelektor
Aktulis kdszegmens regi
CPL - Aktulis privilgium szint
PL - Deszkriptor privilgium szint
Privilgium
ellenrzs
CPL
RPL
D
RPL - Ignyelt privilgium szint


3.42. bra: Privilgium ellenrzs adathozzfrseknl

Az utastsok csak abban az esetben tlthetnek fel egy
szegm nsregisztert, ha a szegmens DPL-je kisebb vagy egyenl
privi izlsi szint (nagyobb privilgium szm) mint a CPL s a
e
leg
ny a CPL vltozsval
dosul. Ha a CPL=0, brmely privilegizlsi szint adatszegmens
; ha a CPL=1, csak az 1-tl 3-ig terjed privilgiumszint
szelektor RPL-je kzl a legkevsb privilegizltnl.

Egy taszk ltal megcmezhet tartom
m
hozzfrhet
175
ltalnos CPU programozsi informcik
adatszegmensek rhetk el; ha a CPL=3, csak a 3-as privilegizlsi szint
datszegmensek rhetk el.
nsekbeli adatok elrse
Sz abban
tben, ROM tpus trban vannak megadva.
nsokat; nem
r, ha

kdszegme adatok elrsre a kvetkez mdszerek

Egy
(non ens
Egy
(con rehajthat szegmens szelektorval.
3. Egy fix alkalmazsa egy olyan
k
szel iszterbe van tltve.
Az els esetre az adatszegmens hozzfrsre vonatkoz,
sodik eset mindig rvnyes, mivel
gy olyan kdszegmens privilegizlsi szintje, amelynek Conforming
.7.5. Vezrlstadsok korltozsa
a
Azok a rendszerek, amelyek a lehetsges ngy privilegizlsi szint kzl
csak kettt hasznlnak, a 0-s s a 3-as szinteket kell alkalmazzk.


3.7.4.1. Kdszegme

ksges lehet a kdszegmensben adatokat trolni, pldul
az ese ha a kd s az adatok is
A kdszegmensek szablyszeren trolhatnak konsta
lehetsges kdszegmensknt definilt szegmensbe rni, csak akko
ugyanarra a cmtartomnyra egy adatszegmenst is lekpeznk. A
nsekbeli
lehetsgesek:
1. adatszegmens-regiszter feltltse egy nemilleszked
conforming), olvashat, vgrehajthat szegm
szelektorval.

2. adatszegmens-regiszter feltltse egy illeszked
forming), olvashat, vg

kdszegmens-fllr pre
olvashat, vgrehajthat szegmens rsa cljbl, amelyne
ektora mr a CS reg


ugyanazon szablyok rvnyesek. A m
e
(illeszked) bitje 1-re van lltva, a DPL rtktl fggetlenl,
gyakorlatilag megegyezik a CPL rtkvel. A harmadik eset mindig
rvnyes, minthogy a CS regiszter ltal kijellt kdszegmens DPL-je
maga a CPL.


3

176
Vdelmi mechanizmusok
A vezrlstadsokat a JMP, CALL, RET, INT, s IRET
Ez a rsz csak a JMP, CALL s RET utastsokkal
glalkozik.
utastsok "near" formi a program
limit-e tve. A processzor ellenrzi, hogy a JMP,
aktuli atrt. Ez a limit a CS regiszterbe van "cache-
lve", gy a "near" tpus vezrlstadsok esetn a vdelmi ellenrzsek
em ro

szelektlja.
utastsok, valamint a kivtel- s megszakts-mechanizmusok biztostjk.
A kivtelek s a megszaktsok specilis esetek, amelyeket egy ksbbi
fejezet trgyal.
fo

A JMP, CALL s RET
vezrlst az aktulis kdszegmensen bell adjk t, ezrt ezek csak a
llenrzsnek vannak ki
CALL illetve RET utastsok rendeltetsi helyei nem haladjk-e meg az
s kdszegmens h
e
n ntjk a teljestmnyt.

A JMP s CALL utastsok "far" vltozatainak operandusai ms
szegmensekre vonatkoznak, ezrt a processzor privilgium-ellenrzst
vgez. A JMP s CALL utastsok ktflekppen vonatkozhatnak egy
msik szegmensre:

1. Az operandus egy msik vgrehajthat szegmens deszkriptort

2. Az operandus egy call-kapu deszkriptort szelektlja.

Amint azt a 3.43. bra mutatja, az olyan vezrlstadsok esetn,
amelyek nem hasznlnak call-kaput, kt klnbz privilegizlsi szint
lesz alvetve a privilgium-ellenrzsnek:

1. A CPL (aktulis privilegizlsi szint).

2. A cl kdszegmens deszkriptornak DPL-je.


177
ltalnos CPU programozsi informcik
Cl kd-szegmens deszkriptor
31 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0 30 29
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
DPL
+4
+0
Tpus
1 C R A 1
Aktulis kdszegmens regiszter
Operandus szegmens szelektor
CPL - Ak lis privilgium szi
DPL - De riptor privilgium
C - Illeszkeds bit
RPL
tu nt
szk szint
CPL
Privilgium
ell s enrz

3.43. b Privilgiu lkli vez dsoknl

Normlis esetben nnak a szeg ek a DPL
rtkvel, amelyet a processzor ppen vgrehajt. Ennek ellenre a CPL
lehet a DPL rtknl nagyobb (kevsb privilegizlt), ha az aktulis
kdszegm s egy szegmens nt azt a
szegmen szkriptornak utatja). Egy illeszked
(conforming) szegmens a hv procedra privilegizlsi szintjn szalad. A
proces rtk
ltrhet az aktulis kdszegmens deszkriptorban trolt DPL rtktl.

m ellen kapu n ra: rzs taszk rlsta
a a CPL megegyezik mensn
en illeszked (conforming) (ami
sde tpusmezje m
szor a CS regiszterben trolja a CPL egy msolatt; ez az
e
178
Vdelmi mechanizmusok

A processzor csak abban az esetben engedlyezi a JMP s CALL
utastsokkal egy msik szegmensbe trtn direkt hvst, ha a kvetkez
kt privilgium szably kzl valamelyik teljestve van:

A szegmens DPL-je egyenl a CPL-el.

A szegmens egy illeszked (conforming) kdszegmens, s a DPL-
je kisebb (privilegizltabb) a CPL-nl.

Az illeszked szegmensek olyan programok esetn hasznlatos,
mint pldul a matematikai knyvtrak, illetve nhny kivtel kiszolgl
procedra esetn, amelyek tmogatjk ugyan az alkalmazsokat, de nincs
szksgk hozzfrni vdett rendszer-szolgltatsokhoz. Amikor a
vezrls egy "conforming" tpus szegmensnek kerl tadsra, a CPL
rtke nem vltozik meg, mg akkor sem, ha a szegmens megcmzsre
asznlt szelektornak eltr az RPL-je. Ez az egyedli olyan felttel,
amely esetben a CPL klnbzhet az aktulis kdszegmens DPL
rtktl.

A kdszegmensek legtbbje nem illeszked (nonconforming).
Ezen szegmensek esetn a kapu nlkli vezrlstads csak ugyanazzal a
privilegizlsi szinttel rendelkez kdszegmensek kztt lehetsges.
Ugyanakkor nha szksges a vezrls tadsa magasabb privilegizlsi
szintekre. Ez a CALL utasts segtsgvel megy vgbe, call-
kapudeszkriptorok alkalmazsval, amelyek a ksbbiek folyamn
lesznek elmagyarzva. A JMP utasts soha nem adhatja t a vezrlst egy
olyan nem illeszked (nonconforming) szegmensnek, amelynek DPL
rtke nem egyenl a CPL rtkvel.


3.7.6. Kapudeszkriptorok

A klnbz privilegizlsi szinten lev vgrehajthat
szegmensek kztti vezrlstads vdelmnek biztostsa rdekben a
processzor kapudeszkriptorokat hasznl. Ngy fajta kapudeszkriptor
ltezik:

h
179
ltalnos CPU programozsi informcik
- call-kapuk
- trapkapuk
megsz
egyik formja.
ltr privilegizlsi szintek kztti vezrlstadsra vannak alkalmazva.
en
gynl tbb privilegizlsi szint kerl alkalmazsra. A 3.44. bra egy call-
pu fo
- aktskapuk
- taszkkapuk

A call-kapuk a vdett zemmdbeli vezrlstads
E
Csak azokban a rendszerekben szksges a hasznlatuk, amelyekb
e
ka rmtumt illusztrlja.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0 30 29
DPL
+4
1 1 0 0 0 0 0 0
DWORD
szmll
fszet a szegmensben 31-16 P
+0 Ofszet a szegmensben 15-0 Szegmens szelektor
O
.
gy call-kapudeszkriptor a GDT-ben
vagy az LDT-ben foglalhat helyet, de a megszaktsdeszkriptor-
tblzatban (IDT-ben) nem.


3.44. bra: Call kapu

Egy call-kapunak kt f funkcija van:

1. Megjellni egy procedra bemenpontjt.

2 Meghatrozni a procedrba val belpshez szksges
privilegizlsi szintet.

A CALL s JMP utastsok ugyanolyan mdon hasznljk a call-
kapudeszkriptorokat, mint a kdszegmens deszkriptorokat. Amikor a
hardware felismeri, hogy a cl szegmens-szelektora egy
kapudeszkriptorra utal, az utasts ltal vgrehajtott mvelet a call-kapu
tartalma ltal lesz meghatrozva. E
180
Vdelmi mechanizmusok

Egy kapu szelektor s ofszet mezi egy procedra bemenpontjra
utat
y mg rosszabb esetben egy
tasts kzepbe ). A vezrlstadst vgrehajt utasts argumentuma
em a
m pointert kpeznek. A call-kapu garantlja azt, hogy minden egyes
ms szegmensnek trtn vezrlstads egy rvnyes bemenpontra
trtnik, s nem a procedra kzepbe (vag
u
n szegmens-szelektor illetve procedra bemenpontjt mutat
szegmensen belli ofszet. Ehelyett, a szegmens-szelektor egy
kapudeszkriptorra mutat, s az ofszet hasznlaton kvl marad. A 3.45.
bra bemutatja a cmzsnek ezen formjt.

0 31 0 15
Szelektor A szegmensen belli ofszet
Nem hasznlt
Cl cm
Deszkriptor tblzat
Ofszet
Szelektor
DPL Szml.
Ofszet
Kapu deszkriptor
Bzis
Bzis
DPL Bzis
Kd szegmens
deszkriptor
Eljrs
Belpsi pont


3.45. bra: A call kapu mechanizmusa

181
ltalnos CPU programozsi informcik
Amint azt a 3.46. bra mutatja, egy call-kapun keresztl trtn
lsi szint)
. A call-kapu megjellsre hasznlt szegmens-szelektor RPL
(szksges privilegizlsi szint) rtke.
deszkriptor privilegizlsi szint) rtke.
. A cl kdszegmensdeszkriptornak DPL rtke.
gmensen bell
mos olyan eljrs lehet, amelyek klnbz privilegizlsi szintrl
rtn

izlsi szintre
lehet felhasznlni (br az ugyanarra a szintre
rtn vezrlstadsokkor nem szksgesek). Kizrlag a CALL
t
lkalmazni, vagy egy ugyanakkora, illetve nagyobb privilegizltsggal
ndelkez illeszked (conforming) kdszegmensnek trtn
vezrlstads rvnyessgnek ellenrzsre ngy klnbz
privilegizlsi szint van felhasznlva.

Egy call-kapun keresztl trtn vezrlstads alkalmval
ellenrztt privilegizlsi szintek a kvetkezk:

1. A CPL (az aktulis privilegiz
2
3. A kapudeszkriptor DPL (
4

A kapudeszkriptor DPL mezje hatrozza meg, hogy milyen
privilegizlsi szintekrl hasznlhat a kapu. Egy kdsze
sz
t felhasznlsra vannak rendeltetve. Pldul, egy opercis
rendszernek lehet nhny olyan szolgltatsa, amelyeknek az a
rendeltetse, hogy gy az opercis rendszer, mint a felhasznli program
ltal alkalmazva legyenek, mint pldul a karakter ki- s bevitelt kezel
rutinok, mikzben ms szolgltatsok csak az opercis rendszer ltali
hasznlatra vannak tervezve, mint pldul a kezelprogramokat
inicializl rutinok.

A kapukat magasabb, vagy ugyanazon privileg
trtn vezrlstadsra
t
utastsok kpesek a kapukat magasabb privilegizlsi szintre val
vezrlstadsra felhasznlni. A JMP utasts csak egy ugyanolyan
privilegizltsg kdszegmensnek val vezrlstadsra kpes a kapu
a
re
vezrlstadsra.

182
Vdelmi mechanizmusok
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
DPL
+4
+0
Cl kd-szegmens deszkriptor
Operandus szegmens szelektor
CPL - Aktulis privilgium szint
DPL - Deszkriptor privilgium szint
RPL - Ignyelt privilgium szint
Aktulis kdszegmens regiszter
RPL
CPL
Privilgium
ellenrzs
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 13 12 11 10 9 6 8 7 5 4 3 2 1 0 14
DPL
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
+4
+0
Call kapu


3.46. bra: Privilgium ellenrzs call kapuval trtn vezrlstadsnl
183
ltalnos CPU programozsi informcik


Egy nem illeszked szegmensre ugr JMP utasts esetn az itt
vetkez mindkt privilgium-szably be kell legyen tartva; klnben
MAX(CPL,RPL) <= a kapu DPL-je
. Megvltoztatja a CPL-t.
rmlisan
lytatdik tovbb. Mikor a processzor visszatr (return), az elmentett
giszterek tartalma visszalltjk az eredeti vermet.
k
ltalnos vdelmi hiba kivtel generldik.

-
-A cl kdszegmensnek DPL-je = CPL

Egy CALL utasts (vagy egy illeszked szegmensre ugr JMP utasts)
esetn az itt kvetkez mindkt privilgium-szably be kell legyen tartva,
klnben ltalnos vdelmi hiba kivtel generldik.

- MAX(CPL,RPL) <= a kapu DPL-je
-A cl kdszegmensnek DPL-je <= CPL


3.7.6.1. Veremvlts

Egy privilegizltabb szintre trtn procedra-hvs a kvetkezket vgzi
el:

1
2. tadja a vezrlst (a vgrehajtst)
3. Taszkkapcsolst vgez

Mindegyik bels vdelmi gyrnek (a 0-s 1-es s 2-s
privilegizlsi szintek) megvan a sajt veremtra, a kevsb privilegizlt
szintekrl trtn krsek fogadsra. Ha a veremterletet a hv
biztostan, s a verem tl kicsi lenne, a meghvott procedra elakadhatna,
a nem elgsges veremterlet miatt. Ehelyett a processzor
megakadlyozza a kevsb privilegizlt programokat abban, hogy
privilegizltabb programokat megsrthessenek, mgpedig egy j verem
ltrehozsval a privilegizltabb szintre val krs pillanatban. Az j
verem ltrejn, a rgi stack-bl tmsolsra kerlnek a paramterek, a
regiszterek tartalma elmentdik, s az utasts-vgrehajts no
fo
re
184
Vdelmi mechanizmusok
A processzor a taszk-llapot-szegmens (TSS) segtsgvel tallja
meg a vermek ltrehozsnak szksges helyet, amint azt a 3.47. bra
utatja
kezdeti
rtkbl (egy szegmensen belli kezdeti ofszetbl) ll ssze. A kezdeti
eremmutatk szigoran csak olvashat tpus rtkek lehetnek. A
a taszk futsa kzben. Ezeket a
eremmutatkat kizrlag azzal a cllal hasznlja, hogy egy magasabb
lkalommal, amikor a procedra jra meghvsra kerl, a
ezdeti veremmutat segtsgvel j verem lesz ltrehozva.
m . Minden taszknak megvan a sajt TSS-e. A TSS a bels vdelmi
gyrk kezdeti veremmutatit tartalmazza. Az opercis rendszer a
felels azrt, hogy minden egyes TSS-t ltrehozzon s inicializlja azok
veremmutatit. (Ha az opercis rendszer nem hasznl TSS-eket a
multitaszking megvalstshoz, mg akkor is le kell foglalnia legalbb
egy TSS-t az emltett, veremmel sszefgg cl rdekben). Egy kezdeti
veremmutat egy szegmens-szelektorbl s az ESP regiszter egy

v
processzor nem mdostja ket
v
privilegizlsi szintre trtn hvs esetn j veremtrakat hozzon ltre.
Ezek a vermek a meghvott procedra visszatrse pillanatban eltnnek.
A kvetkez a
k

SS0
SS1
SS2
ESP2
1
32 bites Taszk llapot szegmens
0
8
12
16
20
24

3.47. bra: Kezdeti stack pointerek egy TSS-ben
ESP0
ESP
0 31
100
4

185
ltalnos CPU programozsi informcik

Valah privilgium gvltoztatsa egy call-
ka trt T c lt ve l
ltrehozsra. zor a cl kd PL rtkt (a )
l a gy a 0 s vag pri sz eti
veremmutatjt kivlassza.
Az gmens DPL- kell legyen az j CPL
a SS-hiba generldik. Az opercis
n a l
letv rem . a
e t
l h ll
n l y a
E er t t,
c z s
n
e .
ter ldnak az j A meghvott procedrn
ell a pa int
elyeke zmll
ount) mezje jelzi a proceszszornak, hogy hny duplaszt (maximum
be. Ha
A klnbz privilegizlsi szintek kztti procedrahvskor a
nyszor a -szint me
puval nik, a SS-bl egy m bet svel j rem ker
A process szegmens D z j CPL-t
hasznlja fe rra, ho -s, 1-e y 2-es vilegizlsi int kezd

j veremsze je egyenl
rtkvel; h
rendszer feladata, hogy m
ez nem gy van, egy T
inde lkalmazott
-s sd
privilegiz si szintnek
A ltrehozza a
szegmensdeszkriptoruk tpusm
v il eremt, e a ve zegmen eszkriptort
feltntetet
vermek
zjben
eg
mdon
e e rhat/olvash
tartalmazzanak, a Lim
at us tp ak kell
it mezk
yenek. Elegend
elen, hog
lyet k
ek megfe
e
magukb
e foglalhassk
illetve a me
a s z SS SP regiszt
edrnak s
k tartalm t, a viszsza
amtereket
rsi cm
ghvott pro ksges par s ideiglene
vltozkat.

Ami
hvsokat ill
p z edig a ugyanazon
ra paramterei a verem
a leg privi izlsi szi
be kerlnek
te n n trt
eti, a proced
ek tmso
lhelyezsre
A param
b
verembe.
ramterek ugyanazon relatv cmeket hasznlva rhetk el, m
t a veremvlts nlkl kne alkalmazni. Egy call-kapu s am
(c
31-et) msoljon t a hv verembl a meghvott procedra verem
a szmll rtke 0, egy paramter sem lesz tmsolva.

Ha 31-nl tbb duplaszt kell a meghvott procedrnak tadni, a
paramterek egyike egy adatstruktra mutatja lehet, vagy az SS s ESP
regiszterek elmentett rtkeit a rgi veremterletrl val paramter-
hozzfrshez lehet felhasznlni.


processzor a kvetkez veremmel kapcsolatos mveleteket vgzi:

1. Ellenrzi, hogy a meghvott procedra veremnek mrete elg
nagy legyen ahhoz, hogy befogadja a paramtereket s a
186
Vdelmi mechanizmusok
regiszterek elmentett tartalmt; ha ez nincs teljestve,
veremkivtelt generl.

2. Az SS s ESP regiszterek rgi tartalmt kt duplaszknt lenyomja
a meghvott procedra verembe (a 16 bites SS regiszter 0-s
bitekkel van 32 bitre kiegsztve, a legfels, 0-s kitlts
kiegszt sz az Intel ltal lefoglalt; hasznlata nem ajnlott).

3. A paramtereket a hv procedra verembl a meghvott
procedra verembe msolja t.

4. A CALL utastst kvet utastsra mutat pointert (A CS s EIP
regiszterek rgi rtkeit) lenyomja az j verembe. A hvs utn az
SS s ESP regiszterek a veremben erre a viszszatrsi pointerre
mutatnak.

A 3.48. brn lthat a veremkeret egy sikeres szintek kzti
procedrahvs s visszatrs eltt, kzben s utn.

Parm1
Parm2
Parm3
ESP
ESP
Parm1
Parm2
Parm3
Rgi SS
Rgi ESP
Rgi CS
Rgi EIP
Rgi stack
j stack Rgi stack
hvs eltt
hvs utn,
visszatrs eltt
RET FAR N-el val
visszatrs utn (N=3)
ESP


3.48. bra: Stack keret szintek kztti hvs alatt

A TSS-ben a 3-as privilegizlsi szintnek nincs veremmutatja,
ugyanis egy 3-as privilegizlsi szint procedrt nem hvhat meg egy
kevsb privilegizlt procedra sem. A 3-as privilegizlsi szint verme az
187
ltalnos CPU programozsi informcik
SS s EIP regiszterek tartalma ltal van eltrolva, a
eghvott privilegizlsi szint veremben vannak elm
melyek a 3-as szintrl
entve.
trsi cmet emeli le (pop).
ormlis krlmnyek kztt, a visszatrsi mutat rvnyes, mivelhogy
egy CALL vagy INT utasts hozta ltre. Mgis a processzor elvgzi a
priv lehetsg, hogy az aktulis
pro hatta a mutat rtkt, vagy nem sikerlt
me A viszszatrsi utasts ltal a veremrl
emelt kdszegmens-szelektor RPL rtke meg kell egyezzen a hv
tabb szintek
nyba. Ha a RET utasts tall egy olyan elmentett CS rtket,
lyn
CPL, p
ilyen t

1.

m

Egy call-kapus hvs nem ellenrzi az j verembe msolt szavak
rtkeit. A meghvott procedrnak kell ellenriznie minden paramter
helyessgt.. Egy ksbbi rszben tallhat magyarzat arra, hogy miknt
lehet az ARPL, VERR, VERW, LSL, s LAR utastsok segtsgvel a
mutatk rtkeit ellenrizni.


3.7.6.2. Visszatrs egy procedrbl

A RET utasts "near" formi csak az aktulis kdszegmensen
bell vgeznek vezrlstadst, ezrt csak a limit-ellenrzsnek vannak
alvetve. A CALL utastst kvet parancs ofszetje a verembl lesz
leemelve s az EIP-be tltve. A processzor ellenrzi, hogy ez az ofszet
nem haladja-e meg az aktulis kdszegmens hatrt.

A RET utasts "far" formja egy korbbi "far" tpus CALL
utasts ltal a veremre lenyomott vissza
N
ilgium-ellenrzst, mivel fennll az a
cedra megvltoztat
gtartania helyesen a vermet.
le
procedra privilegizlsi szintjvel.

Egy msik szegmensbe val visszatrs megvltoztathatja a
privilegizlsi szintet, de csakis a kevsb privilegizl
ir
ame ek az RPL-je szmszerint nagyobb (kevsb privilegizlt) mint a
rivilegizlsi szintek kztti visszatrs (return) megy vgbe. Egy
pus visszatrs a kvetkez lpseket teszi meg:
A 3.49. brn bemutatott ellenrzseket vgzi el, s a CS, EIP, SS
s ESP regisztereket feltlti a verembe elmentett elz rtkeikkel.
188
Vdelmi mechanizmusok
2. Az SS s ESP regiszterek rgi tartalmt (az aktulis verem tetejn)

. A DS, ES, GS szegmensek tartalmt ellenrzi. Ha ezen regiszter
privilegizltabb szegmensekhez
frjen hozz.
A kivtel
tpusa
Hibakd
a RET utasts ltal meghatrozott szm Byte-tal kiigaztja. A
keletkez ESP rtket nem veti al veremszegmens hatr
ellenrzsnek. Az a tny, hogy az ESP rtke a hatron kvlre
esik, nem vevdik szre mindaddig, amg a kvetkez verem-
mveletre sor nem kerl. ( A visszatr procedra SS s az ESP
regisztereinek tartalma nincs eltrolva; normlis esetben ezek
rtkei megegyeznek a TSS ltal tartalmazott rtkekkel.)
3
kzl brmelyik egy olyan szegmensre vonatkoznak, amelynek
DPL-je kisebb mint az j CPL (kivve az illeszked
szegmenseket), a szegmensregiszterbe a nulls szelektor tltdik
be (Index=0, TI=0). A RET utasts egymagban ilyen esetben
nem jelez kivteleket; ugyanakkor brmely kvetkez
memriahivatkozs, amely nulls szelektort tartalmaz
szegmensregisztert alkalmaz, ltalnos vdelmi hiba kivtelt
eredmnyez. Ez meggtolja a kevsb privilegizlt kdot abban,
hogy egy privilegizltabb procedra ltal a szegmensregiszterben
hagyott szelektorok segtsgvel

Az ellenrzs tpusa
A verem teteje + 7 a veremszegmens hatrn
bell kell legyen

Stack 0
A visszatr kdszegmens RPL-je nagyobb
kell legyen mint a CPL

Vdelmi CS
A visszatr kdszegmens szelektora nem lehet
nulls szelektor
Vdelmi CS
a

A vissz
deszkroptor-tblzat hatrn bell kell lennie
atr kd szegmensdeszkriptornak a Vdelmi CS

189
ltalnos CPU programozsi informcik
A visszatrst vgz szegmensdeszkriptor
kdszegm

Vdelmi CS
ensre kell vonatkozzon
A visszat k
memriban (present)

Szegmens
nincs jelen
CS r dszegmens jelen kell legyen a
A sszatr, nem illeszked
(nonconfo
kell legyen a v
elektornak RPL rtkvel, illetve a
kdsze
legyen
elektornak RPL rtkvel.

Vdelmi CS vi
rming) kdszegmens DPL-je egyenl
isszatr kd szegmens-
sz
visszatr, illeszked (conforming)
gmens DPL-je kisebb vagy egyenl kell
a visszatr kd szegmens-
sz
ESP + N + 15 * a veremszegmens hatrn bell
kell legye

Stack hiba 0
n
Az ESP +
szelektor nem

N + 12 * helyen tallhat szegmens-
lehet nulls szelektor
Vdelmi SS
Az ESP + +
szegmensdesz
hatrn bell k

N 12 * helyen tallhat
kriptornak a deszkriptor-tblzat
ell lennie
Vdelmi SS
A veremsz gm tor rhat/olvashat
kell legyen

Vdelmi SS e ensdeszkrip
A veremszegm
memriban (p

ens jelen kell legyen a
resent)
Stack hiba SS
A rgi verems
gyen a rgi k
zegmens DPL-je egyenl kell
dszegmens RPL rtkvel
Vdelmi SS
le

A rgi veremszegmens-szelektor RPL-je
egyenl kell legyen a rgi veremszegmens DPL
rtkvel
Vdelmi SS
190
Vdelmi mechanizmusok
* N a RET utastst kvet kzvetlen operandus

3.49. bra: Szintek kztti visszatrs ellenrzs


3.7.7. Az opercis rendszer szmra lefoglalt utastsok

Azokat az utastsokat, amelyek a vdelmi mechanizmust
rinthetik, vagy amelyek befolysolhatjk a rendszer ltalnos
teljestmnyt, csak megbzhat procedrk hasznlhatjk. A
proceszszornak kt ilyen utastscsoportja van:

1. Privilegizlt utastsok - amelyek a rendszer vezrlsre
hasznlatosak
2. rzkeny (sensitive) utastsok - amelyek az I/O, illetve az I/O-
fgg mveletekre hasznlatosak


3.7.7.1. Privilegizlt utastsok

Azok az utastsok, amelyek a vdett szolgltatsokat rinthetik,
csak akkor hajthatk vgre, ha a CPL rtke 0 (legprivilegizltabb). Ha
ezen utastsok kzl brmelyik 0-tl eltr CPL mellett hajtdik vgre,
ltalnos vdelmi hiba kivtel generldik. Ezen utastsok kz
tartoznak a kvetkezk:

CLTS Clear Task-Switched Flag - taszkvltsjelz bit trlse
HLT Halt Processor - lells
INVD Invalidate Cache - bels cache rvnytelentse
VLPG Invalidate TLB Entry - TLB bejegyzs rvnytelentse
GDT Load GDT Register - a globlis deszkriptortblzat-regiszter
bet
IDT
IN
L
ltse
L Load IDT Register - a megszakts
deszkriptortblzatregiszter betltse
LLDT Load LDT Register - a loklis deszkriptortblzat-regiszter
betltse
LMSW Load Machine Status Word - a gpi llapotsz betltse
LTR Load Task Register - taszkregiszter betltse
191
ltalnos CPU programozsi informcik
MOV to/from CRn - Move to Control Register n - adatmozgats a
CRn vezrlregiszterbe
MOV to/from DRn - Move to Debug Register n - adatmozgats a
DRn nyomkvetregiszterbe
WBINVD Write Back and Invalidate Cache - Cache-be val visszars
s rvnytelents
.7.7.2. rzkeny utastsok
ges,
ogy vdve legyenek, ugyanakkor az is szksges, hogy az olyan
procedrk is hasznljk ket, amelyek a 0-tl eltr privilegizlsi
szinten futnak. Az I/O mveletek vdelmi mechanizmust a msodik
ktet rszletezi.
z
psekbl ll:
vgzi az
tasts vgrehajtsa pillanatban, az els ellenrzs elvgzshez a
LAR (Load Access Rights) - hozzfrsi jogot tartalmaz Byte betltse


3

Az I/O mveletekkel foglalkoz utastsok szmra szks
h


3.7.8. Mutatk rvnyessgt ellenrz utastsok

A mutatk rvnyessgt ellenrz utastsok. a privilegizlsi
szintek kztti szigeteltsg fenntartsra szksges. A kvetke
l

1. Annak ellenrzse, hogy a mutatt szolgltatnak van-e joga a
szegmenshez hozzfrni.
2. Annak ellenrzse, hogy a szegmens tpusa kompatibilis-e a
felhasznlsi cljval.
3. Annak ellenrzse, hogy a mutat ofszetje nem haladja-e meg a
szegmenshatrt.

Br a processzor a 2. s 3. ellenrzst automatikusan el
u
software segtsge szksges. E cl rdekben adott az ARPL utasts. A
software is alkalmazhatja inkbb a 2. s 3. lpst, ahelyett, hogy egy
kivtel megjelensre vrakozna. Ezen clt szolgljk a LAR, LSL,
VERR, s VERW utastsok.

192
Vdelmi mechanizmusok

A LAR utasts annak ellenrzsre hasznlatos, hogy a mutat
kompatibilis privilegizlsi szint s tpus szegmensre vonatkozik-e. A
LAR utastsnak egyetlen operandusa van: azon deszkriptor szegmens-
szelektora, amelynek a hozzfrsi jogt vizsglja. Az illeszked
(conforming) kdszegmensek brmely privilegizlsi szintrl
hozzfrhetk. Brmely ms szegmensdeszkriptor olvashat kell legyen a
CPL-nl, illetve a szelektor RPL rtknl szmszerint nagyobb (kevsb
privilegizlt) privilgiumszinten. Ha a deszkriptor olvashat, a LAR
tasts kivlasztja a deszkriptor msodik dupla-szavt, lemaszkolja ezt az
rtket 00FxFF00H-val, eltrolja az eredmnyt a meghatrozott 32 bites
lltja a ZF bitet. (Az x azt mutatja, hogy a
rolt rtk megfelel ngy bitje hatrozatlan.) A betlts utn a
nt a DPL rtke, vagy ha a szegmensszelektor tlpn a
eszkriptortblzat hatrt, a visszaadott rtk 0 lesz s a ZF bit trldik.
l a
eszkriptorokkal lehetsges, amelyek szegmenseket rnak le (adat, kd,
zegmensek (veremszegmensek), ms tpus
egmensektl eltr mdon kezelik a hatrt. gy a LAR, mint a LSL
u

clregiszterbe, s magasra
t
hozzfrsi jogok azonnal tesztelhetk. Brmely rvnyes
deszkriptortpust lehet a LAR utastssal tesztelni. Ha az RPL vagy CPL
nagyobb mi
d

LSL (Load Segment Limit) a szegmenshatr betltse

Az LSL utasts lehetv teszi a software szmra, hogy egy
szegmensdeszkriptor hatrt tesztelje. Ha egy (memriban vagy egy
regiszterben lev) szegmens-szelektor ltal meghatrozott deszkriptor a
CPL mellett olvashat, az LSL utasts feltlti a megadott 32 bites
regisztert egy 32 bites, Byte-felbonts hatrral, amelyet az sszeillesztett
limit mezk s a deszkriptor G bitje alapjn szmt ki. Ez csak azokka
d
taszk-llapot, s loklis deszkriptortblzat); a kapudeszkriptorok nem
rhetk el. (A 3.50. bra rszletesen felsorolja, hogy melyek az rvnyes
tpusok, s melyek nem.) A limit rtelmezse a szegmens tpustl fgg.
Pldul, a lefele bvl adats
sz
utastsok esetn a ZF bit akkor van magasra lltva, ha a betlts sikeres,
ellenkez esetben a ZF bit trldik.

Tpus kd Deszkriptor tpus rvnyes?
0 fenntartva nem
1 fenntartva nem
193
ltalnos CPU programozsi informcik
2 LDT igen
3 fenntartva nem
4 fenntartva nem
5 Taszk kapu nem
6 fenntartva nem
7 fenntartva nem
8 fenntartva nem
9 Lehetsges 32 bites TSS igen
A fenntartva nem
B Foglalt 32 bites TSS igen
C 32 bites call kapu nem
D fenntartva nem
E 32 bites megszakts kapu nem
F 32 bites trap kapu nem

3.50. bra: rvnyes deszzkriptor tpusok LSL mveletekhez

Egy jabb ellenrzs, az illeszkeds-ellenrzs (alignment check)
alkalmazhat a CPL=3 esetn. Amikor gy a CR0-beli AM bit, mint az
AC flag is 1-re van lltva, a nem illesztett (unaligned)
emriahivatkozsok kivteleket generlnak. Ez azon programok
szmra hasznos, amelyek a mutatk als kt bitjt hasznljk az ltaluk
megcmzett adatstruktra tpusnak azonostsra. Pldul, egy
matematikai knyvtr szubrutinja elfogadhat numerikus adatstruktrkra
mutat pointereket. Ha e struktra tpushoz az 10 (binris) kdot
trstjuk az erre a tpusra mutat pointer legals kt bitjn, a matematikai
szubrutinok kijavthatjk a tpuskdot -10 (binris) eltols hozzadsval.
Abban az esetben, ha a szubrutin helytelen mutattpust kapna, egy
illesztetlen (unaligned) hivatkozs jnne ltre, amely kivtelt generlna.
Az illeszkeds-ellenrzs felgyorstja a szimbolikus feldolgozs (azaz a
mestersges intelligencia) nyelvekben megrt programok feldolgozst,
mint amilyen a Lisp, Prolog, Smalltalk s a C++. A pointer-vgek tpus-
ellenrzsnek felgyorstsra lehet hasznlni.

m
194
Vdelmi mechanizmusok
3.7.8.1. Deszkriptor rvnyessgnek ellenrzse

A processzor kt olyan utastssal rendelkezik, a VERR s VERW
utastsokkal, amelyek megllaptjk, hogy a szegmens-szelektor a
jelenlegi CPL mellett rhat vagy olvashat szegmensre mutat. Egyikk
sem okoz vdelmi hibt, ha a szegmens nem hozzfrhet.

VERR (Verify for Reading) a szegmens olvashatsgnak ellenrzse

A VERR utasts olvassra ellenrzi a szegmenst s ha a CPL
mellett a szegmens olvashat, belltja a ZF bitet. A VERR utasts a
kvetkezket ellenrzi:

Hogy a szegmens-szelektor a GDT vagy az LDT hatrain belli
szegmensdeszkriptorra mutat-e.
Hogy a szegmens-szelektor egy kd- vagy adatszegmens deszkriptort
indexel.
Hogy a szegmens olvashat, s egy kompatibilis privilegizlsi szintje
van-e.

Az adatszegmensek s a nem illeszked (nonconforming)
ensek privil glja, hogy a DPL
evsb privilegizlt sz
a e
VERW
azt vizsglja, hogy az deszkriptor a hatrok kztt van-e, hogy
szegme
rivileg CPL-hez, akr a szelektor RPL rtkhez
dsz

kdszegm gium-ellenrzse azt vizs
int legyen akr a CPL-hez, akr a szelektor RPL k
rtkhez viszonytva. Az illeszked (conforming) szegmensek nem
kerlnek privilgiumszint-ellenrzs al.

VERW (Verify for Writing) a szegmens rhatsgnak ellenrzse

A VERW utasts ugyanazokat a kpessgeket nyjtja a szegmens
rsr llenrzshez, mint a VERR utasts Akrcsak a VERR utasts, a
parancs is belltja a ZF bitet, ha a szegmens rhat. Az utasts
nsdeszkriptor legyen, rhat-e, illetve hogy a DPL-je kevsb
izlt szint legyen akr a p
viszonytva. Attl fggetlenl, hogy illeszkedk (conforming) vagy sem,
a k egmensek soha sem rhatk.
195
ltalnos CPU programozsi informcik
3.7.8.


mutat
omlasz

Erre egy kznsges pldul az FREAD (fjl_azonost, Byte-ok
ma, puffer mutat) rendszerprocedra. Ez a kpzeletbeli procedra egy
y pufferbe, fllrva brmit, ami
r benne tallhat. Az alkalmazsok szintjn fut programok krseit
szolglja ki, de privilegizlt mdon kell szaladjon annak rdekben, hogy
lvashasson a rendszer I/O pufferbl. Ha a felhasznli program egy
hibs puffermutat egy olyat, amely
rivilegizlt cmtartomnyban lev kritikus kdra vagy adatra mutatna - a
rocedra a rendszer sszeomlshoz vezet krt okozhatna.

megeng
a privi
kell le
pldban az RPL annak a felhasznli programnak a CPL-je volna,
melyik meghvta a rendszerszint procedrt. A processzor
toma
Annak rdekben, hogy ki legyen hasznlva a processzor ltal
elvgzett RPL-ellenrzs elnye, a meghvott procedrnak csak azt kell
ellenriznie, hogy minden neki tadott szegmens-szelektornak az eredeti
hv CPL-jnek megfelel, vagy annl kevsb privilegizlt RPL rtke
van. Ez garantlja azt, hogy a szegmens-szelektorok nem
privilegizltabbak a forrsaiknl. Ha a szelektor egy olyan szegmenshez
val hozzfrsre van hasznlva, amelyet a forrs nem lenne kpes
kzvetlenl elrni, teht az RPL a szegmens DPL rtknl kevsb
privilegizlt, ltalnos vdelmi hiba kivtel keletkezik amikor a szelektor
a szegmensregiszterbe kerl.

ARPL (Adjust Requested Privilege Level) - a szelektor RPL mezjnek
belltsa
2. Mutatk integritsa s az RPL
A szksges privilegizlsi szint (RPL) megelzheti az olyan
k balesetszer hasznlatt, amelyek kevsb privilegizlt szintrl
tank ssze a privilegizltabb kdot.

sz
lemezen lev fjlbl adatokat olvas be eg
m
o
t adna t ennek a procedrnak -
p
p

Az RPL hasznlata kpes megelzni ezt a problmt. Az RPL
edi egy privilgium-fllr hozzrendelst egy szelektorhoz. Ez
lgium-fllr annak a kdszegmensnek a privilegizlsi szintje
gyen, amely a szegmens-szelektort ltrehozta. A fennemltett
a
au tikusan ellenriz minden szegmensregiszterbe betlttt szegmens-
szelektort, hogy megllaptsa: az RPL je megengedi-e a hozzfrst.


196
Vdelmi mechanizmusok

Az ARPL utasts egy szegmens-szelektor RPL rtkt belltja az
eredeti rtk, s egy ltalnos regiszterben trolt szegmensszelektor RPL
mezjnek rtke kzl a nagyobbik (kevsb privilegizlt) rtkre. Az
RPL mez a szegmens-szelektor s a regiszter kt legjelentktelenebb
bitje. Az utbbi ltalban a hv CS regiszternek verembeli msolata. Ha
a bellts megvltoztatja a szelektor RPL-jt, a ZF bit belltdik (set);
ellenkez esetben a ZF bit trldik.


3.7.9. Lapszinti vdelem

A vdelem gy szegmensekre, mint lapokra is vonatkozik. Ha a
memriaszegmentls sk modelljt hasznljuk, a lapszinti vdelem
meggtolja a programokat abban, hogy egymst zavarjk.

Minden egyes memriahivatkozs megvizsgls al kerl annak
rdekben, hogy meg lehessen llaptani: eleget tesz-e a vdelmi
feltteleknek. Minden ellenrzs a memriaciklus elindtsa eltt kerl
elvgzsre; brmely szablysrts meggtolja a ciklus elkezdst s
kivtelt eredmnyez. Minthogy az ellenrzsek a cmfordtssal
prhuzamosan trtnnek, nincs teljestmny-kiess. Kt lapszint vdelmi
ellenrzs ltezik:

1. A megcmezhet tartomnyt rint megszortsok
2. Tpusellenrzs
A vde tt zemmd
ivtel-mechanizmus magyarzatrol majd ksbb lesz sz. Ez a rsz
zokat a vdelem-megszegseket rja le, amelyek kivtelekhez vezetnek.

laphozzfrst kontrollljk. A vdelmi ellenrzsek mind az els-, mind
msodik szint laptblzatokra is hivatkoznak.

lem megsrtse kivtelt eredmnyez. A vde
k
a


3.7.9.1. A laptblzat bemenetek ltal tartalmazott
vdelmi paramterek

A 3.51. bra a laptblzat bemenet azon mezit emeli ki, amelyek a
a
197
ltalnos CPU programozsi informcik

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0 29
P hozzf. 0 0 D A C W
S D T W
Lapkeret cm 31-12
P R
_
P U
_

3.51. bra:
i szintet
lnbztetnk meg, a 0-tl 3-ig. A lapok esetben kt privilegizlsi
zmeghajt
ogramok), illetve vdett rendszeradatok (mint amilyenek
i
szmra.
, minden lap hozzfrhet. Ha a processzor felhasznli
inten fut, csak a felhasznli szint lapjai rhetk el.
R/W - rhat/olvashat
U/S - User/supervisor

Egy laptblzat bejegyzs vdelmi mezi


3.7.9.1.1. A megcmezhet tartomnyt rint megszortsok

A privilgium lapok esetben a szegmensekhez kpest eltr
mdon rtelmezett. A szegmensek esetben ngy privilegizls
k
szint ltezik:

1. Felgyel-szint (U/S=0) - az opercis rendszer, ms
rendszersoftware-ek (mint pldul az eszk
kezelpr
a laptblzatok) rszre.

2. Felhasznli szint (U/S=1) - az alkalmazsok kdja s adata

A szegmentlsra hasznlt privilegizlsi szintek a lapozsnl
hasznlt privilegizlsi szintre vannak lekpezve. Ha a CPL rtke 0, 1,
vagy 2, a processzor felgyel-szinten dolgozik. Ha a CPL=3, a
processzor felhasznli szinten mkdik. Amikor a processzor felgyel-
szinten dolgozik
sz
198
Vdelmi mechanizmusok
3.7.9.1

A vde

. Csak-olvassi hozzfrs (R/W=0)


WP bit
olvasha
process
tartoz
megjel
szint
nem ol iba kivtel
enerldik brmely vdelmi szably megsrtsre tett ksrlet esetn.

process
legyen
bitjne a felhasznli
int lapjainak rsvdettsge irnti " fogkonysgt".

msol
lehet, a
fel j taszkok ltrehozsra. Egy j taszk ltrehozsakor lehetsges a
l szegmens cmtartomnynak teljes lemsolsa. Ez a szrmaztatott
lapszet
on-wri
szegme
mint a
csak ak
bit alka
lapra v

.2. Tpusellenrzs
lmi mechanizmus csak kt tpus lapot ismer fel:
1
2. rsi/olvassi hozzfrs (R/W=1).
Amikor a processzor felgyelszinten szalad s a CR0-s regiszter
je 0-s (a reset inicializlst kvet llapota), minden lap rhat s
t is egyben (az rs-vdettsg figyelmen kvl marad). Ha a
zor felhasznli szinten fut, csak azok a felhasznli szinthez
lapok rhatk, amelyek rsi/olvassi hozzfrsre vannak
lve. Az rhat/olvashat, illetve a csak-olvashat felhasznli
lapok olvashatk. A felgyel-szint lapok sem nem rhatk, sem
vashatk felhasznli szintrl. Egy ltalnos vdelmi h
g

A 386-os processzorral ellenttben, a 486-os s Pentium
zorok megengedik, hogy a felhasznli szint lapok rsvdettek
ek a felgyel mdbeli hozzfrsek ellen. A CR0 regiszter WP
k magasra lltsa engedlyezi a felgyel-szintnek
sz

A felgyel-ellenes rsvdelem lehetsge az n. "rs kzbeni
s" (copy-on-write) stratgijnak implementlsa esetn is hasznos
melyet nmely opercis rendszer, mint pldul a UNIX, hasznl
sz
taszk szmra egy komplett msolatt nyjtja a szl szegmens- s
tjnek. Egy alternatv stratgia, az "rs kzbeni msols" (copy-
te) trterletet s idt takart meg azzal, hogy a gyermek taszk
nseit s lapjait ugyanazokra a szegmensekre s lapokra kpezi le,
melyeket a szl taszk is hasznl. A lapnak egy egyedi msolata
kor kerl megteremtsre, amikor a taszkok egyike a lapra r. A WP
lmazsval a felgyelprogram detektlhatja a felhasznli-szint
al rsi ksrletet, s ugyanakkor tmsolhatja is a lapot.

199
ltalnos CPU programozsi informcik
3.7.9.1.3. A vdelem kombinlsa a laptblzatok mindkt szintjn

Brmely lap esetn, a lapcmtrbeli bejegyzsnek (els szint
laptblzat) vdelmi attribtumai klnbzhetnek a msodik szint
laptblzat bemeneteinek attribtumaitl. A processzor gy ellenrzi egy
p vdelmt, hogy a lapcmtrban (els szint laptblzat), mint a
sodi
van.
SS s IDT).
la
m k szint laptblzatban megadott vdelmi informcit is
tanulmnyozza. A 3.52. bra bemutatja a vdelmi attribtumok lehetsges
kombinciibl add vdelmet, akkor, ha a WP bit trlve


3.7.9.1.4. A lapvdelem fllri

Nmely hozzfrs gy van leellenrizve, mintha a 0-s
privilegizlsi szinten vgbemen hozzfrsek volnnak, a CPL brmely
rtke esetn:

Hozzfrs a szegmensdeszkriptorokhoz (LDT, GDT, T

Hozzfrs a bels veremhez, egy CALL utasts, vagy kivtelek s
megszaktsok kzben, ha a privilegizlsi szint megvltozik.

Lapcmtr bejegyzs Laptblzat bejegyzs Kombinlt effektus
Privil-
gium
hozzfr-
hetsg
Privil-
gium
hozzfr-
hetsg
Privil-
gium
hozzfr-
hetsg
User Csak User Csak User Csak
olvashat olvashat

olvashat
User
olvashat
r
olvashat
User Csak
t
Csak User hat/
olvasha
User Cs
olvashat
User Csak
olvashat
rhat/
olvashat
User ak
User
ashat
r
olvashat
User rhat/
shat
rhat/
olv
User hat/
olva
User isor Csa
olvashat
Sup
olvashat
Csak
olvashat
Superv k ervisor rhat/
User Csak
olvasha
Supervisor rhat/ Supervisor rhat/
olvashat t olvashat
200
Vdelmi mechanizmusok
User
t
Csa
olvashat
Sup
olvashat
rhat/
olvasha
Supervisor k ervisor rhat/
User rha
olvashat
Sup
olvashat
rhat/
olvashat
Supervisor t/ ervisor rhat/
Supervisor Csak User Csak
olvashat
Supervisor rhat/
vashat olvashat ol
Supervisor Csak User rhat/
olvashat
Sup
vashat olvashat
ervisor rhat/
ol
Supervi User Csak
olvashat
Sup
vashat
sor rhat/
olvashat
ervisor rhat/
ol
Supervi
shat
rhat/
olvashat
Sup
olvashat
sor rhat/
olva
User ervisor rhat/
Su vi r Csa
olvashat
Sup
olvashat
per sor Csak
olvashat
Superviso k ervisor rhat/
Su vi r rha
olvashat
Sup

per sor Csak Superviso
olvashat
t/ ervisor rhat/
olvashat
Supervisor rhat/ Supervisor Csak
olvashat
Supervisor rhat/
vashat olvashat ol
Supervi rvisor rhat/
olvashat
Sup
olvashat
sor rhat/
olvashat
Supe ervisor rhat/

pcmtr s laptblzat vdelem


3 . ensvdele omb

engedlyezett, a processzor elszr a szegmens-,
m a i. Ha a proce r vd el
akr a s szintjn, a mvelet nem hajtdik vgre,
ehelyett egy kivtel keletkezik. Ha a szegmentlsnl kivtel generldik,
a mvel hiba kivtelt.
Pldul, adatszegmenst
efinilni, amelynek vannak egyes csak-olvashat, illetve ms,
zat) bejegyzseinek U/S s R/W bitjei az rsi
ozzfrs letiltst hatroznk meg, a lapcmtr-bemenet ltal kijellt
3.52. bra: Kombinlt la
.7.9 2. Lap- s szegm
Ha a lapozs
m k inlsa
ajd lapvdelmet rtkeli k
zegmensek, akr a lapok
et nem vlt ki lap
sszo elemsrtst fedez f

lehetsg van egy olyan kiterjedt
d
rhat/olvashat rszei is. Ebben az esetben, a csak-olvashat rszek
lapcmtr- (vagy laptbl
h
201
ltalnos CPU programozsi informcik
lapok szmra (vagy a msodik szint laptblzatban megadott egyedi
sznlni pldul, egy olyan
amelynek bizonyos rszei csak-
lvasha tok, vagy ROM-ban trolt konstansok
setn). Ez, egy sk adattartomnyt, egyetlen, risi szegmensknt
ugyana
virtuli
terlete
lapok szmra). Ezt a technikt fel lehetne ha
kiterjedt adatszegmens definilsra,
o t tpusak (kzs ada
e
definil, amely sk tartomny hozzfrshez sk mutatk szksgesek,
kkor vdelem al helyezve a kzs adatokat, a megosztott,
s cmterletre lekpezett llomnyokat, illetve a felgyelprogram
it.
202
Vdett zemmd multitaszking
3.8. tt z

A Pentium processzor bizt ltitaszking szmra
szksges hardware tmogatst. A taszk egy olyan program, amely ppen
r on m n
vgreh alatt. m k ,
vagy egy call utas eg. Kt klnbz tpus, taszkokra
vonatkoz deszkriptor ltezik, amelyek egy deszkriptor-tblzatban
me k: taszk-llapot-szegmens deszkriptorok s a taszkkapuk.
A s deszkriptortpus brm k-
kapcs letkezik. A taszkkapcsols t egy procedrahvs,
zo cit trol el. A taszkkapcsols tadja
a vezrlst egy teljesen j krnyezetnek, egy taszk krnyezetnek. Ehhez
ro em er e,
A s
procedrkkal ellenttben a taszkok at A
taszkkapcsols nem be. A processzor
ll emriban trolt adatsruktrba, az n. taszk-
llap at
gi
ott
nnak rdekben, hogy a taszkot folytatni lehessen. A processzor

aktsok s kivtelek taszkkapcsolsokat okozhatnak (ha
Vde emmd multitaszking
ostja a mu
fut, vagy amely ar
ajts
a vr, hogy fuss
Egy taszkot egy
ts hv m
, mikzben egy
egszakts, egy
sik program va
ivtel, egy ugrs
gjelenhetne
mikor a vezrl
ols ke
taddik a kt elyiknek, tasz
olyan, min
csak tbb process r-llapotinform
szksg van a p
idertve az EFL
cesszor majdn
GS regisztert
sszes regiszt
a szegmensregisztereket is. A
nek elmentsr
nem jraindth
mit a verem
k (re-entrant).
nyom le sem

apotinformci a m
ot-szegmensbe lesz elmentve. A multitaszkingot tmog
szterek s adatstruktrk a kvetkezk: re

taszk-llapot-szegmens
taszk-llapot-szegmensdeszkriptor
taszkregiszter
taszkkapudeszkriptor

A felsorolt struktrk segtsgvel, a processzor tadhatja a
ezrlst egyik taszktl a msiknak, elmentve az eredeti taszk llap v
a
ezenkvl kt tovbbi taszk-szervez lehetsget is felknl:

1. A megsz
ez szksges a rendszerben). A processzor nemcsak a
megszaktsok s kivtelek kezelsre kpes taszkkapcsolst
vgrehajtani, hanem automatikusan vissza is tud kapcsolni, amikor
a megszakts vagy kivtel visszatr (return). Ez a mechanizmus
kpes a megszakts-taszkok alatt megjelen megszaktsok
kezelsre.
203
ltalnos CPU programozsi informcik

2. Minden egyes taszkkapcsolskor, a processzor egy j LDT-re is
kpes vltani. Ez arra hasznlhat, hogy minden taszknak egy
klnll logikai cm - fizikai cm megfeleltetst lehessen
biztostani. Ez egy plusz vdelmi lehetsg, ugyanis gy a
eg lehet elzni azt,
hogy egymssal sszeakadjanak. A PDBR regiszter is jratltdik.
i a taszkok egyms kztti elszigetelsnek biztostsra.
alkalm
program
kln
lmentsre szksges id tl hossz lehet. Az ilyen helyzetekben egy
adatstr meg. Ez
hetv teszi egy kisebb terjedelm processzor llapotinformci
ment
bizonyos tpus szegmensbe vannak elmentve,
melyet taszk-llapot-szegmensnek, vagy TSS-nek neveznk. A 3.53.
ja be (a 16
ites, 80286-os processzor taszkjaival val kompatibilitst egy ms tpus
ikus mezk, amelyeket a processzor minden
taszkkapcsolskor felfrisst. Ezek a mezk a kvetkezket
Az ltalnos regisztereket (EAX, ECX, EDX, EBX, ESP,
EBP, ESI, s EDI).
taszkokat el lehet egymstl szigetelni, s m
Ez a tny megengedi, hogy a lapozmechanizmust is fel lehessen
hasznln

A multitaszking-mechanizmus hasznlata opcionlis. Egyes
azsok esetn lehet, hogy nem a legjobb mdja a
vgrehajts megszervezsnek. Ahol a megszaktsokra
sen gyors vlaszra van szksg, ott a processzor llapotnak
e
lehetsges kompromisszum az, hogy hasznljuk a taszkokra vonatkoz
uktrkat, de a taszkkapcsolst software ton valstsuk
le
el st. Ez a technika egyike lehet azon optimizlsoknak, amelyek a
teljestmny nvelsre alkalmazhatk.


3.8.1. Taszk-llapot-szegmens

Egy taszk visszalltshoz szksges processzor-
llapotinformcik egy
a
bra a 32 bites CPU-kra rt taszkok TSS formtumt mutat
b
TSS biztostja, de errl a msodik ktetben lesz rszletesebben sz). Egy
TSS mezi kt f kategriba oszthatk:

1. Dinam
troljk:

204
Vdett zemmd multitaszking

A szegmensregisztereket ( ES, CS, SS, DS, FS, s GS).

A flag regisztert ( EFLAGS)
Az utastsmutatt (EIP)

Az elz taszk TSS-nek szelektort (csak akkor frissti
fel, amikor egy return vrhat).

2. Statikus mezk, amelyeket a processzor olvas, de nem mdost.
Ezek a mezk a taszk ltrehozsakor lesznek belltva. Ezen
mezk a kvetkezket troljk:

A taszk LDT-jnek szelektort.

A taszk PDBR-jt (CR3).

A 0-s, 1-es s 2-es privilegizlsi szintek vermeinek
logikai cmt.

A T bitet (debug trap bit), amely ha 1-re van lltva, arra
kszteti a processzort, hogy valahnyszor egy
taszkkapcsols jelenik meg, debug-kivtelt hozzon ltre. (
A hibakeressrl tbb informci tallhat a msodik
ktetben.)

Az I/O engedlyez bittrkp s a megszakts trnyit
bit-trkp bziscmt. Ha jelen vannak, ezek a bittrkpek
a TSS magasabb cmeire kerlnek eltrolsra. A bziscm
az I/O trkp elejre, illetve a 32 Byte-os megszakts
trkp vgre mutat. (A megszakts-tirnytsrl tovbbi
informcik szintn a msodik ktetben tallhatk).


205
ltalnos CPU programozsi informcik
0 0 0
0 0 0 0 0 0 0 0 0 0 T
0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A taszk LDT szelektora
FS
GS
DS
SS
CS
ES
EDI
ESI
EBP
60
64
68
72
76
80
84
88
92
96
ESP
SS1
SS0
ESP0 4
8
12
16
20
36
56
100
0

azon r
taszkka
rszbe
jelen le
I/O trkp bzis cm
15 31
EBX
EDX
ECX
EAX
EFLAGS
40
44
48
52
EIP
CR3 (PDBR)
SS2
ESP2
24
28
32
ESP1
LINK (rgi TSS szelektor) 0


3.53. bra: 32 bites taszk llapot szegmens

Ha a lapozs hasznlt, fontos megelzni a laphatroknak a TSS
szbe trtn elhelyezst, melyekbl a processzor olvas a
pcsols idejn (az els 104 Byte). Ha egy laphatr a TSS ezen
kerl, a hatr mindkt oldaln tallhat lapoknak egyidben kell
nnik. Azonfell, ha a lapozs engedlyezett, a kimen taszk TSS-
206
Vdett zemmd multitaszking
nek m
tblza illetve rhat/olvashatnak kell
egjellni. Visszallthatatlan hiba, ha azutn rkezik be egy laphiba,
TSS ol


3.8.2.
egfelel lapokat, az j taszk TSS-t, s mindezek deszkriptor-
t bemenett jelenlvnek,
m
vagy egy ltalnos vdelmi hiba kivtel, miutn a processzor megkezdte a
vasst.
A TSS deszkriptor

Mint minden ms szegmenst, a taszk-llapot-szegmenst is egy deszkriptor
hatroz meg. A 3.54. bra bemutatja a TSS deszkriptor formtumt.

TSS Deszkriptor
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0 Szegmens hatr 15-0
G
A
V
L
Szegmens
hatr
19-16
DPL
+4
+0
0 0 P 0 1 0 B 1
Tpus
31
- A rendszer software szmra elrhet AVL
- Foglaltsg bit
-
B
PL
a 11-es (decimlis) rtk foglalt taszkot
ent.
Deszkriptor privilgium szint
- Szemcszettsg
- A szegmens jelenltt jelz bit
D
G
P


3.54. bra: TSS Deszkriptor

A tpusmez Foglalt (Busy) bitje jelzi, hogy a taszk foglalt-e. Egy
foglalt taszk ppen fut, vagy arra vr, hogy futhasson. Ha a tpusmez
rtke 9, inaktv taszkot jell,
jel A taszkok nem rekurzvak. A processzor arra hasznlja a Foglalt
bitet, hogy a megszaktott taszkok hvsra tett ksrleteket detektlja.
207
ltalnos CPU programozsi informcik


(Granu zegmens
eszkriptorokbeli szerepkkel azonos funkcijuk van. A Limit meznek
kevese
ttrs,
gener
szks
limit r

Egy TSS deszkriptorhoz hozzfr procedra kivlthat egy
mezinek rtke 3-nl kisebbnek kell lennie, hogy csak a privilegizlt
softwa


proced
deszkri
memr
A TSS deszkriptornak egy szegmensregiszterbe val tltse kivtelt
enerl. A TSS deszkriptorok csak a GDT-ben tartzkodhatnak. Egy TSS
ozzfrsre tett olyan ksrlet, amely egy magasra lltott TI bittel
rendelkez szelektort alkalmaz (ami az aktulis LDT-t jelli), kivtelt
eredmnyez.


3.8.3. Taszkregiszter

A taszkregiszter (TR) az aktulis TSS megtallst szolglja. A
3.55. bra azt az utat mutatja, amit a processzor megtesz a TSS
elrshez.

A taszkregiszternek van egy lthat rsze (teht egy olyan rsze,
amelyet a software olvasni s mdostani kpes), s egy lthatatlan rsze
(azaz egy olyan rsze, amelyet a processzor trol, illetve amely a software
szmra elrhetetlen). A lthat rszben lev szelektor egy TSS
deszkriptor GDT-beli indexe. A processzor a TR lthatatlan rszt a TSS
A Bzis, Limit, s DPL mezknek, illetve a Felbonts
larity) s Jelenlev (Present) biteknek az adats
d
67H-nl nagyobb vagy egyenl rtke kell legyen, ami egy Byte-tal
bb egy taszk-llapot minimlis mretnl. Egy olyan taszkra val
amelynek a TSS deszkriptor-limitje kevesebb mint 67H, kivtelt
l. Egy I/O engedlyez bittrkp hasznlatakor nagyobb limitre van
g. Az opercis rendszernek akkor is szksge lehet egy nagyobb
tkre, ha a TSS-ben a rendszer kiegszt adatokat trol.

taszkkapcsolst. A rendszerek tbbsgben a TSS deszkriptorok DPL
re-ek vgezhessenek taszkkapcsolst.
A TSS deszkriptorhoz val hozzfrs nem adja meg a
rnak azt a kpessget, hogy olvashassa vagy mdosthassa a
ptort. Az olvass vagy a mdosts csak az ugyanarra a
iaterletre lekpezett adat deszkriptor alkalmazsval lehetsges.
g
h
208
Vdett zemmd multitaszking
deszkriptorbl szrmaz bziscm s limit rtknek trolsra hasznlja.
Ezeknek az rtkeknek a megtartsa a taszk vgrehajtst sokkal
hatkonyabb teszi, mivel a processzornak nem kell ezeket az rtkeket a
memribl elrnie, azrt, hogy az aktulis taszk TSS-t megcmezze.

Az LTR s STR utastsok a taszkregiszter lthat rsznek
mdostsra s olvassra hasznlatosak. Mindkt utastsnak egyetlen
operandusa van, egy memriban elhelyezett 16 bites szegmens-szelektor,
vagy egy ltalnos regiszter.

Az LTR (Load Task Register) utasts feltlti a taszkregiszter
lthat rszt az operandussal, amely a GDT-ben lev egyik TSS
deszkriptorhoz kell index legyen. Az LTR utasts ugyanakkor feltlti a
lthatatlan rszt is a TSS deszkriptorbl vett informcikkal. Az LTR
utasts egy privilegizlt utasts, csak akkor hajthat vgre, ha CPL=0.
Az LTR utastst ltalban a rendszerinicializls alkalmval hasznljk
arra, hogy egy kezdeti rtket tegyenek a taszkregiszterbe. Ezt kveten,
a TR regiszter tartalma a taszkkapcsolst elidz esemnyek ltal
mdosul.

Az STR (Store Task Register) utasts egy ltalnos regiszterbe,
vagy a memriba menti el a taszkregiszter lthat rszt. Az STR
utasts szintn privilegizlt.

A taszk kapudeszkriptor egy taszkhoz biztost indirekt, vdett
referencit. A 3.56. bra egy taszkkapu formtumt illusztrlja.

A taszkkapu szelektor mezje index egy TSS deszkriptorhoz.
hasznlt.
A taszkkapu DPL-je szablyozza a taszkkapcsols deszkriptorhoz
al hozzfrst. Egy procedra nem szelektlhat egy taszkkapu
deszkriptort anlkl, hogy a szelektor RPL-je s a procedra CPL-je
numerikusan kisebbek, vagy egyenlk lennnek a deszkriptor DPL
rtkvel. Ez meggtolja a kevsb privilegizlt procedrkat abban,
hogy taszkkapcsolst idzzenek el. Amikor egy taszkkapu kerl
alkalmazsra, a cl TSS deszkriptor DPL rtke nem lesz felhasznlva.

Ennek a szelektornak az RPL rtke nem


v
209
ltalnos CPU programozsi informcik
Taszk llapot szegmens
TSS Deszkriptor
N
Globlis deszkriptor tblzat
Szelektor Bzis cm Szegmens hatr
Lthatatlan rsz Lthat rsz
TR
0

3.55. bra: Taszk regiszter

Egy taszkkapuhoz hozzfr
ugyangy,
taszkkapuk, m
elgtsenek ki:

Foglalt bit trolva van a TSS deszkriptorban, minden
taszknak csak egyetlen ilyen deszkriptora lehet. Ennek ellenre,
ltez
desz ri

2. A t
teljest
s a T
procedra taszkkapcsolst vlthat ki
mint egy TSS deszkriptorhoz hozzfr procedra. gy a
int a TSS deszkriptorok clja az, hogy hrom kvetelmnyt

1. Egy taszknak csupn egyetlen Foglalt (Busy) bitje legyen.
Minthogy a
het szmtalan olyan taszkkapu, amely ugyanazt az egy TSS
ptort szelektlja. k
aszkokhoz szelektv hozzfrst biztostsanak. A taszkkapuk
ik ezt az elvrst, ugyanis helyet foglalhatnak egy LDT-ben
SS deszkriptor DPL rtktl eltr DPL-jk lehet. Egy
210
Vdett zemmd multitaszking
olyan
szintje a GDT-beli TSS deszkriptor hasznlathoz (amelynek a
DPL rtke ltalban 0), mg mindg meghvhat egy msik
r leszktheti a
taszkkapcsolst bizonyos taszkokra.
.8.4. Taszk kapudeszkriptorok
procedra, amelynek nincs meg a kell privilegizlsi
taszkot, ha hozzfrhet annak LDT-jben lev taszkkapuhoz. A
taszkkapuk segtsgvel az opercis rendsze


3

TSS Kapudeszkriptor
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
TSS szegmens szelektor +0
DPL
+4
P 0 0 1 0 1
Tpus
Fenntartva Fenntartva
Fenntartva
- Deszkriptor privilgium szint
ens jelenltt jelz bit
DPL
P - A szegm


3 k kapudeszkriptor


3. y megszakts vagy kivtel taszkkapcsolst eredmnyezzen. A
zkkapuk a amely lehetv teszi a
gszaktsok s kivtelek szm
dmnyezze ts vagy egy kivtel egy
zkkapura m tat, a proceszszor tkapcsol a
ett taszkra

.56. bra: Tasz
Eg
tas z IDT-ben is lehetnek,
me ra, hogy taszkkapcsols
nek. Amikor egy megszak ere
tas utat vektort szolgl
jelz .
211
ltalnos CPU programozsi informcik
.57. bra t, ahogyan mind az LDT-ben
lev taszkkapu, mi IDT-ben helyet foglal taszkkapu
azonos ugyanazt a

A 3 bemutatja azt a mdo
nd pedig az
tja taszkot.
Loklis deszkriptor tblzat Globlis deszkriptor tblzat Taszk sttusz szegmens
apu tor

ngy eset brmelyikben:
Taszk k TSS deszkrip
Megszakts deszkriptor tblzat
Taszk kapu


3.57. bra: Taszkokra jellemz taszk kapuk


3.8.5. Taszkkapcsols

A processzor tadja a vezrlst egy msik taszknak a kvetkez
212
Vdett zemmd multitaszking

1. Az aktv taszk egy JMP vagy CALL utastst hajt vgre egy TSS
Egy megszakts vagy egy kivtel akkor vlt ki taszkkapcsolst,
egszakts kiszolgl rutin mindg visszaadja a vezrlst a
egszaktott procedrnak, amely esetenknt ms taszkban is lehet. Ha az
T bit trlve van, normlis visszatrs kvetkezik. Ha az NT magasra
taszk a
ghat
deszkriptorra.

2. Az aktv taszk egy JMP vagy CALL utastst hajt vgre egy
taszkkapura

3. Egy megszakts vagy egy kivtel az IDT-ben lev egyik
taszkkapura mutat.

4. Az aktv taszk egy IRET utastst hajt vgre, mikzben az NT flag
magasra van lltva.

A JMP, CALL s IRET utastsok, csakgy mint a megszaktsok
s kivtelek, a processzor kznsges mechanizmusai, melyeket olyan
krlmnyek kztt is hasznlni lehet, amelyekben nem jn ltre
taszkkapcsols. A deszkriptor tpusa (amikor a taszk call hvst kap),
illetve az NT bit (ha a taszk visszatr) klnbztetik meg a standard
mechanizmust attl a formtl, amely egy taszkkapcsolst okoz.

A JMP vagy CALL utastsok, annak rdekben, hogy
taszkkapcsolst hozzanak ltre, tadhatjk a vezrlst akr egy TSS
deszkriptornak, akr egy taszkkapunak. Mindkt esetben az eredmny
ugyanaz: a processzor tadja a vezrlst a megadott taszknak.


ha az IDT-ben lev egyik taszkkapura mutat. Ha egy IDT-beli
megszakts vagy trap kapura indexel, taszkkapcsols nem megy vgbe.

Egy m
m
N
van lltva, taszkkapcsols jn ltre. A taszkkapcsolst fogad
egszaktskezel rutin TSS-ben lev TSS szelektor ltal van m
me rozva.

gy taszkkapcsols a kvetkez lpsek szerint trtnik: E

213
ltalnos CPU programozsi informcik
1. Ellenrzi azt, hogy az aktv taszk tkapcsolhat-e az j taszkra. Az
adat-hozzfrsi privilgiumszablyok a JMP s CALL
nyes limitje van-e (nagyobb mint
67H). A hibk visszalltjk a processzor llapotban vgzett
brmely vltoztatst, ha ksrlet trtnik a hiba-generl utasts
-kiszolgl rutin
regiszterek tmsolsra kerlnek az aktulis TSS-be (az EAX,
szegmensregiszterek ES, CS, SS, DS, FS valamint a GS. Az ebben
a lpsben detektlt brmely hiba, megjelenik a bejv taszk
utastsokra vonatkoznak. A TSS deszkriptor s a taszkkapu DPL-
je szmszerint nagyobb (teht alacsonyabb privilegizlsi szinten)
vagy egyenl kell legyen a kapuszelektor CPL s RPL rtkvel.
A megszaktsok, kivtelek s az IRET utasts szmra
megengedett a taszkkapcsols, fggetlenl a cl taszkkapu, vagy a
TSS deszkriptor DPL rtktl.

2. Ellenrzi azt, hogy a bejv taszk TSS deszkriptora jelenlevknt
van-e megjellve, illetve rv
vgrehajtsra. Ez a tny megengedi a kivtel
szmra, hogy a visszatrsi cm a hiba-kivlt utastsra
mutasson, s nem az ezt kvet utastsra. A kivtel-kiszolgl
rutin kijavthatja azt az okot, amely a hibt elidzte, s
jraindthatja a taszkot. A kivtel-kiszolgl rutin beavatkozsa
teljesen ttetsz lehet a felhasznli program szmra.

3. Elmenti az aktulis taszk llapott. A processzor megtallja a
taszkregiszterben az aktulis TSS bziscmt. A processzor
ECX, EDX, EBX, ESP, ESI, EDI, ES, CS, SS, DS, FS, GS s
EFLAGS regiszterek, valamint az utastsmutat).

4. A TR regisztert feltlti a bejv taszk TSS deszkriptorra
vonatkoz szelektorral, belltja a bejv taszk Foglalt bitjt,
illetve a CR0 regiszter TS bitjt. A szelektor vagy egy CALL,
illetve JMP utasts operandusa, vagy egy taszkkapubl
szrmazik.

5. Betlti az j taszk llapott a megfelel TSS-bl, s folytatja a
vgrehajtst. A betlttt regiszterek a kvetkezk: az LDTR
regiszter; a PBDR (CR3); az EFLAGS regiszter; az ltalnos
regiszterek EIP, EAX, ECX, EDX, EBX, ESP, ESI, EDI s a
214
Vdett zemmd multitaszking
krnyezetben. Egy kivtel-kiszolgl rutin szmra gy tnik,
mintha az j taszk els utastsa nem lett volna vgrehajtva.

Fontos, hogy taszkkapcsols esetn a kimen taszk llapota
n
kez tben kvetkezett volna. A regiszterek azokra
z rtkekre lesznek visszalltva, amelyeket a megllsuk pillanatban
rtalmaztak.
Minden taszkkapcsols magasra lltja a CR0 regiszter TS (Task
A TS bit azt mutatja, hogy a lebegpontos egysg krnyezete


17. rutinok rekurzv
vsok alanyai lehetnek, ha megksrelik a kivtelt ltrehoz szegmens-
els


privilegizlsi szintje kztt nincs sszefggs. Minthogy a taszkokat
lszigetelik egymstl a fggetlen cmtartomnyaik s taszkllapot-
elle
A b
priv

ps llapot ellenrzs Kivtel
1
Hibakd

mi dig elmentdik. Ha a taszk folytatdik, a vezrls azzal az utastssal
ddik, amely normlis ese
a
ta


Switched) bitjt. A TS bit a rendszersoftware szmra hasznos az integer
s a lebegpontos egysgek mveleteinek koordinlsra.


eltrhet az aktv taszk krnyezettl.
A taszkkapcsolsok ltal okozott kivteleket (a 3.58. bra 5.-tl
-ig terjed pontjaibl add kivteleket) kezel
h
szelektort jra betlteni. A kivtel okt (vagy a tbbszrs okok kzl az
t) meg kell szntetni, mieltt a szelektor jratltdne.
A kimen taszk privilegizlsi szintje s a bejv taszk
e
szegmenseik, s mivel a TSS-hez val hozzfrst privilgium szablyok
nrzik, a taszkkapcsolshoz nincs szksg a privilgium vizsglatra.
ejv taszk a CS regiszter j tartalmnak RPL rtke ltal mutatott
ilegizlsi szinten kezd vgrehajtdni, amelyet a TSS-bl tlt be.
L
hivatkozs
1
van a memriban
NP Az j taszk TSS-e A TSS deszkriptor jelen
2 A TSS deszkriptor nem
foglalt
TS, GP A taszk visszakap-
csolt TSS-e
215
ltalnos CPU programozsi informcik
3 A TSS szegmens hatr
nagyobb vagy egyenl mint
108
TS Az j taszk TSS-e
4 A regiszterek feltltve a TSS rtkeivel
5 Az j rvnyes taszk LDT TS Az j taszk LDT-
szelektora
2
je
6 A kdszegmens DPL rtke TS j kdszegmens
megegyezik a szelektor
RPL rtkvel
7 Az SS szelektor rvnyes
2
TS j verem-
szegmens
8 A veremszegmens jelen
van a memriban
SF j verem-
szegmens
9 A veremszegmens DPL
rtke megegyezik a CPL
rtkkel
TS j verem-
szegmens
10 Az j taszk LDT-je jelen TS A
van a memriban je
z j taszk LDT-
11 A CS szelektor rvnyes
2
TS j kdszegmens
12 A kdszegmens jelen van a
memriban
NP j kdszegmens
13 A veremszegmens DPL
rtke megegyezik a
szelektor RPL rtkvel
TS j verem-
szegmens
14 A DS, ES, FS s GS
szelektorok rvnyesek
2

TS j adatszegmens
15 A DS, ES, FS s GS
szegmensek olvashatk
TS j adatszegmens
16 A DS, ES, FS s GS NP j adatszegmens
szegmensek jelen vannak a
memriban
17 A DS, ES, FS s GS
szegmensek DPL rtke
nagyobb vagy egyenl a
CPL rtkvel
TS j adatszegmens

3.58. bra: Taszkvlts alatti ellenrzs
216
Vdett zemmd multitaszking

Megjegyzsek: A jvbeli Intel processzorok az ellenrzseket eltr
sorrendben vgezhetik.

1. NP= a szegmens nincs jelen kivtel,
= vdelmi hiba kivte
S= le
SF= veremhiba k

. Egy szelektor akkor rvnyes, ha egy kompatibilis tpus
tblzatban van (pldul egy LDT szelektor nem lehet brmilyen
ms tblzatban a GDT-n kvl), a tblzat szegmenshatrn belli
cm el deszkriptorra utal
(pl r k abban az esetben
rvnyes, ha egy utat, a deszkriptor
tpusa a tpusme
3.8.6. Taszkok visszafel kapcsolsa (LINKING)

m hogy az elz
utatja, hogy az
ppen vgrehajts alatt azva egy msik taszkba, s
az aktv taszk TSS-nek taszk TSS
szelektort trolja, ha ltezik ilyen. (lsd a 3.59. brt).

GP ltalnos lek,
T "rvnyte n TSS" kivtel,
ivtel.
2
et foglal
dul a CS
, s egy kompatibilis tpus
ktor csa egiszterben lev szele
kdszegmens deszkriptorra m
zben van megadva).


A
taszknak visszaszolgltassa a vezrlst. Az NT flag m
TSS Link ezje s az NT jelzbit clja,
egm
ll taszk be van-e g
magasabb szinten lev
y
Link mezje a
217
ltalnos CPU programozsi informcik
TSS TSS TSS
Legfels szint taszk Begyazott taszk Mlyebben begyazott tasz
LINK LINK LINK
NT=0 NT=1 NT=1
k Jelenleg fut taszk
EFLAGS
NT=1
TR regiszter


3.59. bra: Begyazott taszkok

Amikor egy megszakts, kivtel, jmp vagy call taszkkapcsolst
eredmnyez, a processzor bemsolja az aktulis taszk-llapot-szegmens
elektort az j taszk TSS-be, s belltja az NT bitet. Az NT flag azt
jelzi, hogy a TSS Link mezjbe egy elmentett TSS szelektor kerlt
etltsre. Az j taszk egy IRET utasts vgrehajtsval adja vissza a
vez al
erl. Ha ez 1-re van lltva, a processzor taszkkapcsolst vgez az elz
sz
b
rlst. Az IRET utasts vgrehajtsakor az NT bit ellenrzs
k
taszkra. A 3.60. bra sszefoglalja azon TSS mezk szerept, amelyeket a
taszkkapcsols rint.

Mez Az ugrs hatsa A CALL utasts
vagy
megszakts
hatsa
Az IRET
utasts hatsa
Az j taszk Busy
bitje
A bit belltva
(eltte trltnek
kell lennie)
A bit belltva
(eltte trltnek
kell lennie)
Nem vltozik,
1-nek kell lennie
A rgi taszk
Busy bitje
A bit trlt Nem vltozik A bit trlt
218
Vdett zemmd multitaszking
Az j taszk NT
flagje
Nem vltozik A flag
belltdik
Nem vltozik
A rgi taszk NT Nem vltozik Nem vltozik A flag trlt
flagje
Az j taszk Link
mezje
Nem vltozik A szelektorral
betltve
Nem vltozik
A rgi taszk
Link mezje
Nem vltozik Nem vltozik Nem vltozik

3.60. bra: A taszkvltsok hatsa a Busy, NT s LINK m

ezkre
Megjegyzend, hogy az NT flaget brmely privilegizlsi szinten
z NT bitet s vgrehajtson egy IRET utastst, aminek az
olna a kvetkezmnye, hogy meghvsra kerlne az aktulis taszk TSS-
ne l megjellt taszk. Annak rdekben, hogy a hamis
taszkkapcsolsok ne jrjanak sikerrel, az opercis rendszernek
inic en egyes ltala ltrehozott TSS Link mezjt.
(foglalt) bit megelzi a hurkok
ialakulst

A TSS deszkriptornak B (foglalt) bitje megakadlyozza az
jraindtott taszkkapcsolst. Csak egyetlen egy elmentett taszk-krnyezet
ltezik, a TSS-ben eltrolt krnyezet, ezrt egy taszkot csak egyszer
szabad meghvni mieltt befejezdne. A felfggesztett taszkok lnca
brmilyen hosszra megnhet, a tbbszrs megszaktsoknak,
kivteleknek, ugrsoknak s hvsoknak ksznheten. A B bit
megakadlyozza, hogy a taszkot meg lehessen hvni, ha ebben a lncban
tallhat. Egy jrahvott taszkkapcsols fellrn a taszk rgi TSS-t, ami
felbontan a lncot.

A processzor a kvetkezkppen kezeli a Busy bitet:

1. Mikor tkapcsol egy taszkra, a processzor belltja a bejv taszk
B bitjt

fut software mdosthatja. Egy program szmra adott az a lehetsg,
hogy belltsa a
v
k Link mezje lta
ializlnia kell mind


3.8.6.1. A Busy
k
219
ltalnos CPU programozsi informcik

2. Mikor visszakapcsol egy taszkrl, a processzor letrli a kimen
taszk B bitjt, ha azt a taszkot nem kell a lncba helyezze (ha teht
a taszkkapcsolst elidz utasts egy JMP vagy CALL utasts).
Ha a taszk a lncba kerl, a B bitje tovbbra is 1-re marad lltva.

3. Ha az j taszk Busy bitje mr be van lltva, taszkkapcsols esetn
a processzor egy ltalnos vdelmi hiba kivtelt generl.

Ekppen a processzor meggtolja, hogy egy taszk sajt magra
kapcsolhasson, vagy a lnc brmely ms taszkjra, ezzel megakadlyozva
az jraindtott (re-entrant) taszkkapcsolst.

A B bitet multiprocesszoros konfigurciban is lehet hasznlni,
mivel a processzor buszlezrst (bus lock) indtvnyoz amikor belltja,
vagy trli a B bitet. Ez megakadlyozza, hogy kt processzor ugyanazt a
taszkot hvhassa meg.

3.8.6.2. A taszk visszakapcsolsok mdostsa

Annak rdekben, hogy a megszaktott taszkokat, az ket
megszakt taszkok eltt folytatni lehessen, szksgess vlhat a
felfggesztett taszkok lncnak mdostsa. Ennek egy megbzhat mdja
a kvetkez:

1. A megszaktsok letiltsa.

2. Elsknt, a megszakt taszk TSS-nek Link mezjt kell
megvltoztatni, majd a lncbl kiemelt taszk TSS deszkriptornak
B bitjt kell trlni.

3. A megszaktsok engedlyezse.
220
Vdett zemmd multitaszking
3.8.7. Taszkok cmtartomnya

Az LDT szelektor s a TSS PDBR (CR3) mezje felhasznlhat
ajt laptblzat gyjtemnye, a lineris
meknek fizikai cmekre val lekpezse vgett.
z az LDT-je legyen.
3.8.7.1. Taszkok ltal linerisrl- fizikai cmre vgzett
kpzs
ical mapping)
t ltalnos kategriba sorolhatk:
ris-fizikai lekpzs.
Ha a lapozs nincs engedlyezve, ez az egyedli lehetsg.
meghaladhatja a rendelkezsre ll fizikai tartomnyt, ha
arra, hogy minden taszkhoz sajt LDT s laptblzat legyen rendelve.
Minthogy a loklis deszkriptor-tblzatokban (LDT) lev szegmens-
deszkriptorok kpezik a taszkok s a szegmensek kztti kapcsolatot,
minden egyes taszknak nll LDT-t lehet biztostani, ezen kapcsolatok
fltti egyni kontroll ltrehozsa rdekben. Brmely meghatrozott
szegmenshez val hozzfrs hozzrendelhet brmely egyni taszkhoz, a
szegmens szegmens-deszkriptornak a megfelel taszk loklis
deszkriptor-tblzatba val helyezsvel. Ha a lapozs engedlyezett,
minden taszknak lehet egy s
c

Az is lehetsges, hogy a taszkoknak ugyana
z egy egyszer s memriatakarkos mdja annak, hogy bizonyos E
taszkoknak engedlyezni lehessen, hogy egyms kztt
kommunikljanak, illetve egymst vezreljk, anlkl, hogy a teljes
rendszer vdelmi korltait ejteni kne.

Mivel mindegyik taszk hozzfrhet a GDT-hez, az a lehetsg is
adott, hogy ezen tblzaton belli szegmensdeszkriptorokkal elrhet
egosztott szegmenseket hozzunk ltre. m


le

A taszkok lineris-fizikai lekpzsei (linear-to-phys
k

1. Minden taszk ltal megosztott, egyetlen line
Lapozs hinyban minden lineris cm az identikus fizikai
cmekre van lekpezve. Ha engedlyezett a lapozs, a lineris-
fizikai lekpzs e formja gy valsthat meg, hogy minden taszk
egyetlen kzs lapcmtrat hasznl. A lineris tartomny
221
ltalnos CPU programozsi informcik
tmogatott az ignyeknek megfelelen lapozhat (demand-paged)
virtulis memria hasznlata.
2. Fggetlen lineris-fizikai lekpzs minden egyes taszknak. A
lekpezs e formja abbl addik, hogy minden egyes taszk
klnll lapcmtrat hasznl. Mivel minden taszkkapcsolskor a
PDBR (a lapcmtr bzisregisztere) a TSS-bl kerl betltsre,
mindegyik taszknak klnll lapcmtra lehet.

A klnbz taszkok lineris cmtartomnya teljesen eltr fizikai
cmekre kpezhet le. Ha a klnbz lapcmtrak bemenetei klnbz
laptblzatokra mutatnak, s a laptblzatok a fizikai memria klnbz
lapjaira mutatnak, akkor a taszkok egyetlen kzs fizikai cmen sem
osztoznak.

A taszk-llapot-szegmensnek egy minden taszk szmra elrhet
tartomnyban kell helyet foglalnia, azrt, hogy a TSS cmek lekpezse
taszkkapcsols kzben ne vltozzon, mialatt a proceszszor a TSS-t
olvassa, illetve jrarja. A GDT ltal lekpzett lineris tartomny egy
egosztott fizikai trterletre is le kell legyen kpezve, ellenkez esetben
a GDT zss
telvel kt taszk lineris tartomnya miknt fedi t egymst a fizikai
.8.7.2. A taszkok logikai cmtartomnya
yba val
kpezs (mapping) nem engedi meg a taszkok kztti adatmegosztst.
A GDT szegmensdeszkriptorain keresztl. Minden taszk hozz tud
frni a GDT-ben lev deszkriptorokhoz. Ha ezek a deszkriptorok

m
cljt veszti. A 3.61. bra bemutatja, hogy laptblzatok k
t
trterletben.


3

Egymagban az tfedett, linerisrl-fizikai tartomn
le
Ahhoz, hogy adatokat tehessenek kzss, a taszkoknak egy kzs
logikairl-lineris tartomnyba val lekpezsre is szksgk van.
Magyarn olyan deszkriptorokhoz is hozz kell frhessenek, amelyek egy
megosztott (kzss tett), lineris cmtartomnyra mutatnak. Hrom
mdja van a megosztott, logikairl fizikai cmtartomnyba val
lekpezsek megteremtsnek:

1.
222
Vdett zemmd multitaszking
egy olyan lineris cmtartomnyra mutatnak, amely az sszes
ezve, akkor
a taszkok kzss tehetnek adatokat, illetve utastsokat.
is
tartomnyt cmeznek meg, megosztott (shared) fizikai memrit
eteket tegyenek kzss. Ezeknek
a deszkriptoroknak a kznsges neve: alias. A jelen eljrs mg
inkbb szelektvebb, mint a fentebb felsoroltak, ugyanis az LDT
t, lineris
cmtartomnyokra mutathat.
taszk szmra kzs fizikai cmtartomnyra van lekp

2. Kzss tett LDT-ken keresztl. Kt, vagy tbb taszk hasznlhatja
ugyanazt a loklis deszkriptor-tblzatot (LDT-t), ha a TSS-kben
tallhat LDT szelektorok ugyanazt a LDT-t szelektljk a
cmfordtshoz. Az LDT-beli szegmensdeszkriptorok, amelyek
tfedett (overlapping) fizikai tartomnyra lekpezett liner
szolgltatnak.

3. Ugyanarra a lineris cmtartomnyra lekpez LDT-beli
szegmensdeszkriptorokon keresztl. Ha a szban forg taszk lap-
lekpezse a lineris cmtartomnyt ugyanarra a fizikai
cmtartomnyra kpzi le, ezen deszkriptorok lehetv teszik a
taszkok szmra, hogy cmterl
tbbi deszkriptora fggetlen, nem megosztot


223
ltalnos CPU programozsi informcik
PTE
A taszk
lapja
aszk TSS-e Lapcmtrak Laptblzatok Lapkeretek
PDBR PDE
PTE
PTE
lapja
Megoszt.
lap
PTE
B taszk
A t
B taszk TSS-e
Megosztott
PDE
PTE
A taszk
A taszk
lapja
lapja
B taszk
Megoszt.
lap
Laptblzatok

i memriban
PDBR
PDE PTE
PDE PTE
lapja

3.61 bra: Lineris tfeds a fizika

224
Vdett zemmd kivtelek s megszaktsok
3.9. Vdett zemmd kivtelek s megszaktsok
sok hajtdnak vgre. ltalnos
setben, a megszaktsok s kivtelek szervizelse a felhasznli
rogramok szmra ttetsz mdon megy vgbe. A megszaktsok, a
semnyek, mint pldul a perifria-eszkzk
iszolglsi krseinek kezelsre hasznlatosak. A kivtelek, a
szaktsok
p. A maszkolhat megszaktsok addig nem
keletkeznek, amg a megszakts-engedlyez flag (IF)
Nem maszkolhat megszaktsok, amelyek a processzor
NMI (NonMaskable Interrupt) vonaln rkeznek be. A
processzor nem rendelkezik egy olyan mechanizmussal,
amelyik meggtoln a nem maszkolhat megszaktsokat.

. Kivtelek

A processzor ltal detektlt kivtelek. Ezek tovbb
rlhatnak. Ezeket az
utastsokat gyakran nevezik "software-

A kivtelek s megszaktsok egy taszknak vagy egy
procedrnak trtn erltetett vezrlstadsa. A taszkot, vagy a
procedrt "kiszolgl rutinnak" nevezzk (handler). A megszaktsok
vletlenszeren jelennek meg egy program vgrehajtsa kzben, a
hardware-jelzsekre adott vlaszknt. A kivtelek akkor jelennek meg,
amikor kivteleket elidz utast
e
p
processzoron kvli e
k
processzor ltal az utastsok vgrehajtsa alatt szlelt feltteleket
kezelnek, mint pldul a nullval val osztst.

A megszaktsoknak s a kivteleknek kt-kt forrsa van:

1. Meg

Maszkolhat megszaktsok, amelyeket a CPU az INTR
bemenetre ka
nincs 1-re lltva.

2
bonthatk hibkra (faults), csapdkra (traps) s abortokra.

Programozott kivtelek. Az INTO, INT 3 , INT n s
BOUND utastsok kivteleket gene
225
ltalnos CPU programozsi informcik
megszaktsoknak", de a processzor kivtelekknt kezeli
ket.

A jelen rsz a processzor azon adottsgait mutatja be, amelyek
ontrollljk a megszaktsokat, s vlaszolnak azokra.
Az NMI megszaktshoz s a kivtelekhez a 0-tl 31-ig terjed
has et kzlk. E tartomny szabad vektorai egy
setleges jvbeli felhasznlsra fenntartottak ezrt ne hasznljuk a


A
pro
vek
terj a
ivtel- s megszakts-vektorok kirendelst mutatja.
V
k


3.9.1. Kivtel- s megszaktsvektorok

A processzor minden egyes megszakts- vagy kivteltpushoz
rendel egy azonost szmot. Ezt a szmot "vektor"-nak nevezzk.


tartomnybl vannak a vektorok rendelve. A processzor jelenleg nem
znlja mindegyik
e
hozzrendeletlen vektorokat.
A maszkolhat megszaktsok vektorait a hardware determinlja.
kls megszakts-vezrlk, (mint pldul az 8258A jelzs
gramozt megszakts-vezrl) a processzor buszra helyezik a
tort, ennek megszakts-elismer ciklusa idejn. A 32-tl 255-ig
ed tartomnybl brmely vektorok alkalmazhatk. A 3.62. bra
k

ektorszm Meghatrozs
0 Osztsi hiba
1 Debug kivtel
2 Nem maszkolhat megszakts
3 Trspont
4 INTO tlcsordulst tallt
5 BOUND hatr tllps
6 Nem megengedett op. kd
7 Eszkz nem elrhet
8 Dupla hiba
9 Koprocesszor szegmens tlfuts
10 rvnytelen taszk sttusz szegmens
226
Vdett zemmd kivtelek s megszaktsok
11 Szegmens nincs jelen
12 Verem hiba
13 ltalnos vdelmi hiba
14 Laphiba
15 Intel ltal fenntartva
16 Lebegpontos hiba
17 Illeszkeds ellen rzs
18 Gptpus ellenrzs
19-31 Intel ltal fenntartva
32-255 Maszkolhat m tsok egszak

3.62. bra: Kivtelek s megszaktsvektorok

* Megjegyzs: A processzortpus ellenrzs modell-specifikus kivtel,
amely csak a Pentium processzorokon ltezik.

A kivteleket hibkra, trapokra s abortokra oszthatjuk, annak
gy a kivtelt
ten, amelyben a
ivtel
ardware-hibk, vagy a
ndszer tblzatokban tallt sszefrhetetlen, vagy szablytalan rtkek.
fggvnyben, hogy miknt vannak jelentve, illetve, ho
elidz utasts jraindtst tmogatjk-e.

Hibk (faults): A hiba egy olyan kivtel, amelyet a processzor az
utastshatron jelent, azon utastst megelzen, amelyben a kivtel
szlelve volt. A hiba jelentse a gpnek egy olyan helyrelltott
llapotban trtnik, amely megengedi az utasts jraindtst. A
hibakezel rutin visszatrsi cme a hibt kivlt utastsra mutat, nem
pedig az ezt kvet utastsra.

Csapdk (traps): A trap egy olyan kivtel, amelyet a processzor
az utastshatron jelent, rgtn azon utastst kve
k szlelve volt.

Abort-ok (aborts): Az abort egy olyan kivtel, amely nem jelenti
minden esetben a kivtelt elidz utasts helyt, s amely nem
engedlyezi a kivtelt kivlt program jraindtst. Az abortok komoly
hibk jelentsre hasznlatosak, mint amilyenek a h
re
227
ltalnos CPU programozsi informcik
3.9.2. Utastsok jraindtsa

A megszaktsok s kivtelek legnagyobb rsze esetn, a
aztak. Ez
hetv teszi az utastsok jraindtst.

gy felhasznli program hivakozhat egy olyan szegmensben
a
megelz rtkre visszalltani. A processzor mindezen
isszallt mveleteket a felhasznli programok szmra teljesen
iba jelenik meg, az EIP regiszter gy lesz
elyre

vezrlstadsra mindaddig nem kerl sor, amg az aktulis utastsnak
nincs vge. Ennek az az eredmnye, hogy az EIP regiszter a kivtel vagy
megszakts megjelensnek pillanatban, ppen a vgrehajts alatt ll
utastst kzvetlenl kvet utastsra mutat. Ha az utastsnak van egy
ismtlsi prefixe, a vezrls tadsa az aktulis mvelet vgn trtnik, a
kvetkez mvelet elvgzsre belltott regiszterekkel. Ellenben, ha a
kivtel egy hiba, a processzor regiszterei visszalltdnak azokra az
llapotokra, amelyeket az utasts elkezdse eltt tartalm
le

Az utasts jraindtst olyan kivtelek kezelsre lehet
felhasznlni, amelyek lezrjk az operandusokhoz val hozzfrst.
ldul, e P
lev datra, amely nincs betltve a memriba. Amikor a kivtel
megjelenik, a kivtel-kiszolgl rutinnak be kell tltenie a szegmenst
(valsznleg a lemezrl), s folytatnia kell a vgrehajtst a kivtelt
elidz utastssal kezdden. A kivtel megjelensnek pillanatban, az
utasts mr megvltoztathatta a processzor egyes regisztereinek
tartalmt. Ha az utasts egy operandust olvasott ki a verembl, ktelez a
eremmutatt a v
v
tltsz mdon vgzi el.

Mikor egy h
h lltva, hogy a kivtelt kivlt utastsra mutasson. Amikor a
kivtel-kiszolgl handler visszatr, a vgrehajts ezzel az utastssal
folytatdik.


3.9.3. Megszaktsok engedlyezse s letiltsa

Bizonyos felttelek s jelzbit-belltsok arra ksztetik a
processzort, hogy egyes megszakts- s kivteltpusokat letiltson.

228
Vdett zemmd kivtelek s megszaktsok
3.9.3.1. Tovbbi NMI megszaktsok maszkolsa

Amg egy NMI megszaktskezel rutin fut, a processzor letiltja a
egszaktst kiszolgl procedrhoz vagy taszkhoz intzett tovbbi
), az
gymsbagyazott maszkolhat megszaktsok letiltsa cljbl, ugyanis
gy maszkolhat-megszaktst kiszolgl eljrsbl szrmaz IRET
Az IF flag kikapcsolhatja a processzor INTR vonaln berkez
e
me lmen kvl maradnak. Ha az IF magasra van lltva,
z INTR megszaktsok ki lesznek szolglva. Egy RESET jelre
Az lear) az IF
itet.
9. bitjt). Ezek az utastsok csak akkor
ajthatk vgre, ha a CPL szint megegyezik az IOPL rtkvel, vagy
A PUSHF utasts eltrol minden flag-et a verembe, ahol ezek
vizsglhatk, illetve mdosthatk. A POPF utastssal lehet a
m
hvsokat, mindaddig, amg a kvetkez IRET utasts nem kerl
vgrehajtsra. Ezzel megelzi azt, hogy a megszaktskezelhz intzett
hvsok felgyljenek a veremben. Ajnlott, megszakts kapuk
alkalmazsa a nem maszkolhat megszaktsokra (NMI
e
e
utasts jra engedlyezn az NMI-t.


3.9.3.2. INTR megszaktsok maszkolsa


m gszaktsok szervizelst. Ha az IF bit trlve van, az INTR
gszaktsok figye
a
vlaszolva, a processzor, a tbbi flag-hez hasonlan, trli az IF bitet is.
STI s CLI utasts magasra lltja (set), illetve letrli (c
b

A CLI (Clear Interrupt-Enable Flag - megszakts engedlyez bit
trlse) utasts s az STI (Set Interrupt-Enable Flag - megszakts
engedlyez bit belltsa) utasts egy ismert llapotba hozza az IF flag-
et (az EFLAGS regiszter
h
annl privilegizltabb.

Az IF bitet mg a kvetkez mveletek is befolysoljk:


megvltoztatott formt az EFLAGS regiszterbe visszatlteni.

229
ltalnos CPU programozsi informcik
aszkkapcsolsok, illetve a POPF s IRET utastsok feltltik az
EFLAGS regisztert, teht felhasznlhatk az IF bit belltsnak
megvltoztatsra.
A t
A kapuzott megszaktso san trlik az IF bitet, letiltva
ezzel a megszaktsokat.


3.9.3.3. Debug hibk maszkolsa az RF bit segtsgvel

at RF bi a,
hogy meggtolja egy utasts-trspont hiba tbbszrs kiszolglst. Az
RF a kvetkezkppen mkdik:

Miel ely hiba lbb
belltja az RF bitet az EFLAGS msolat
kiszolgl rutin verembe hel (push). No
veremb i kpt a software-ek kell mdos

Ma bitet a hibakeze utin lltja r az IRETD
utastst hajtja vgre a hiba-generl utastsra val visszatrshez.
Az IRETD verembl az
EFLAGS regiszterbe. (A POPF s POPFD utastsok nem viszik t az
RF msolatt az EFLAGS regiszterbe.)

A processzor trli az RF bitet, ha mi st siker znie,
IRET uta t, illetve a ta apcsolst el JMP,
y INT uta okat. Teh g belltva rad, de
mint egy, IRET ut kve ts
Ha RF be van lltva, arra kszteti a processzort, hogy beszntesse az
utas

k automatiku
Az EFLAGS regiszterben tallh t alkalmazsnak clj
tt a processzor belpne brm kezel rutinba, e
ban, amelyet aztn a
rmlis esetben, az RF yez
el nem tsk.
gt az RF l r be, amiko
utasts tmozgatja az EFLAGS kpt a
nden utast lt befeje
kivve az sts szkk idz
CALL vag sts t az RF fla ma
nem tbb,
idejre.
- az n kzvetlen tkez - utas


ts-trspont hibk jelentst.

Mivel az utasts-trspont hibk a legnagyobb prioritssal
rendelkez hibk, ugyanahhoz az utastshoz kapcsold brmely ms
hibt megelzen kerlnek bejelentsre. Az utasts vgrehajtsra tett
legels ksrlet esetn RF=0, illetve RF =1 minden olyan prblkozs
230
Vdett zemmd kivtelek s megszaktsok
esetn, amely egy utasts-trspont hibt, vagy brmilyen ms hibt
kveten, jraindtan az utastst. Ez azt biztostja, hogy minden
tasts-trspont hiba csak egyszer lesz jelentve.
e-ek, amelyek gyakran kell veremszegmenst
ltsanak, egy utasts prt hasznlnak, pldul:
utastst kveten, a processzor letiltja a
egszaktsokat, a debug-kivteleket s az egylpses nyomkvet trap
kivteleket, amg a kvetkez utasts mgtti utastshatrt el nem ri.
ltalnos vdelmi-hibk mg ekkor is generldhatnak. Ha az SS
regiszter tartalmnak mdostsra az LSS utastst hasznljuk, ez a
problma nem jelenik meg.


3.9.4. Szimultn kivtelek s megszaktsok kztti
priorits

Ha egy utastshatron egynl tbb kivtel, vagy megszakts van
fggben (pending), a processzor egy elre meghatrozhat sorrendben
szolglja ki ket. A megszakts- s kivtel forrsok osztlyai kzti
prioritsokat a 3.63. bra mutatja be. Amg ezen osztlyok kztti
priorits konzisztens az architektra egszn, addig minden egyes
osztlyon belli kivtelek alkalmazs-fggk, s processzoronknt eltrk
lehetnek. A processzor elszr a legmagasabb prioritssal rendelkez
osztlyba tartoz, fggben lev kivtelt, vagy megszaktst szolgl ki,
u


3.9.3.4. Egyes kivtelek s megszaktsok maszkolsa

Azok a softwar
v

MOV SS, AX
MOV ESP, StackTop

Ha egy megszakts vagy kivtel jelenik meg miutn a szegmensszelektor
mr fel van tltve, de mg mieltt az ESP regiszter be lenne tltve, a
megszakts- vagy kivtel-kiszolgl rutin idejre, a veremtartomnyba
mutat logikai cmnek ezen kt rsze sszefrhetetlen.

Ennek a helyzetnek az elkerlse vgett, egy MOV SS-be, vagy
POP SS-be tpus
m
231
ltalnos CPU programozsi informcik
tadvn a vezrlst a kezel rutin els utastsnak. Az a
priorits kivteleket elveti. Az alacsonyabb
ggben maradnak. Az elvetett kivtelek jra aktualizldnak, am
lacsonyabb
priorits megszaktsok
ikor a
egsza
f
m kts kezel visszaadja a vezrlst a megszaktsi pontra.

Priorits Osztly Meghatrozs
Magas 1. osztly Trap az elz mveleten
-Trspont
-Debug trap kivtel
2. osztly Kls megszakts
-NMI megszakts
-Maszkolhat megszakts
3. osztly Hiba a kvetkez utastsnl
-Kd trspont hiba
-Kdszegmens hatr tllps
-Laphiba az elolvassnl
4. osztly Hiba a kvetkez utasts dekodolsnl
-rvnytelen op. kd
-Mveleti kd hosszabb 15 Byte-nl
-Koprocesszor nem ll rendelkezsre
Alacsony 5. osztly Hiba egy utasts vgrehajtsakor
-ltalnos detektls
-Koprocesszor hiba
-Tlcsorduls
-Hatrellenrzs
-rvnytelen TSS
-Szegmens nincs jelen
-Verem kivtel
-ltalnos vdelmi hiba
-Adat laphiba
-Illeszkeds ellenrzs

te itsa 3.63. bra: Kiv lek s megszaktsok egyms kztti prior
232
Vdett zemmd kivtelek s megszaktsok
3 zak

akts s
megszaktshoz, a hozzrendelt esemnyt kiszolgl procedra vagy
taszk deszkriptort rendeli. Akrcsak a GDT, vagy az LDT-k, az IDT is
egy 8 Byte-os deszkriptorokat tartalmaz tmb. Az IDT-be mutat
in hoz sklatnyezvel
(a deszkriptorban lev Byte-ok szmval) a kivtel-, vagy
megszaktsvekto , az IDT nem
rtalmazhat tbb mint 256 deszkriptort. Kevesebb, mint 256 deszkriptort
.9.5. A megs tsdeszkriptor-tblzat
A megsz deszkriptor-tblzat (IDT) minden kivtelhez
dexek formls a processzor beszorozza egy 8-as
rt. Mivel mindssze 256 vektor van
ta
viszont tartalmazhat, mert deszkriptorokra csak azoknak a
megszaktsvektoroknak van szksgk, amelyek elfordulhatnak.

Az IDT a fizikai memria brmely rszn rezidens lehet. Amint
azt a 3.64. bra mutatja, a processzor az IDTR regisztert felhasznlva
lokalizlja az IDT-t. Ez a regiszter tartalmazza az IDT 32 bites
bziscmt, valamint a 16 bites hatrt. A LIDT s SIDT utastsok tltik
fel, illetve mentik el az IDTR regiszter tartalmt. Mindkt utastsnak egy
operandusa van, amely a memriban lev hat Byte cme.

IDT bziscm
IDTR regiszter
IDT hatr
at Megszakts deszkriptor tblz
Kapu az N.
megszaktshoz

megszaktshoz
Kapu az 3.
megszaktshoz
Kapu az 2.
Kapu az 1.
megszaktshoz

233
ltalnos CPU programozsi informcik
3.64. bra: IDT lokalizlsa a memriban az IDTR segtsgvel
a hatron kvlre es
eszkriptorra mutat, a processzor tmegy "shutdown" mdba. Ebben az
emm
incs kezdemnyezve. A processzor egy specilis buszciklust
enerl a "shutdown" llapotba val belps jelzsre. A software-
jleszt
riba. Ez az utasts brmely privilgium szinten
grehajthat.

3.9
tart

1. taszkkapukat

A 3.65. bra bemutatja a taszkkapuk, megszakts kapuk, s trap

Abban az esetben, ha egy vektor
d
z dban a processzor megsznteti az utasts-vgrehajtst,
mindaddig, amg nem szlel egy NMI megszaktst, vagy amg egy reset
inicializls n
g
fe k tisztban kell legyenek a hardware-nek erre a jelzsre adott
vlaszval. Pldul, a hardware ilyenkor kigyjthat egy fnyjelzst a gp
f paneljn, generlhat egy diagnosztika-informcikat felvev NMI
megszaktst, vagy kezdemnyezhet reset inicializlst.

A LIDT (Load IDT Register - a megszaktsdeszkriptor-tblzat
regisztert betlt utasts) feltlti az IDTR regisztert a memriban lev
operandusban trolt bziscmmel s limit-tel. Ezt az utastst csak akkor
lehet vgrehajtani, ha CPL=0. ltalban az opercis rendszerek
inicializl kdja hasznlja az IDT ltrehozshoz. Az opercis rendszer
arra is felhasznlhatja, hogy egyik IDT-rl a msikra vltson.

SIDT (Store IDT Register - a megszaktsdeszkriptor-tblzat
regisztert eltrol utasts) tmsolja az IDTR-ben trolt bziscmet s
limit rtket a mem
v

.6. IDT deszkriptorok

Az IDT a kvetkez hrom tpus deszkriptor kzl brmelyiket
almazhatja:
2. megszakts kapukat
3. trap kapukat

kapuk formtumt.

234
Vdett zemmd kivtelek s megszaktsok
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Fenntartva
TSS szegmens szelektor
P 0 DPL
+4
+0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Ofszet 31-16 P DPL Fenntartva
+4
Szegmens szelektor Ofszet 15-0
+0
31 0 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0 3
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Ofszet 31-16 P DPL
+4
Szegmens szelektor Ofszet 15-0
+0
0 1 0 1 Fenntartva
Fenntartva
0 1 1 1 0 0 0 0
Fenntartva 0 1 1 1 1 0 0 0


3.65. bra: IDT kapudeszkriptor


235
ltalnos CPU programozsi informcik
3.9.7. Megszakts taszkok s megszakts-kezel
aktsvektort
almazza egy IDT-ben lev
ezje a kivtelt vagy megszaktst kiszolgl
procedra elejre mutat.

procedurk

Amint a CALL utasts kpes egy procedrt, vagy egy taszkot
meghvni, gy egy kivtel, vagy megszakts is kpes egy kezelrutint,
akr mint procedrt, akr mint taszkot "meghvni". A kivtelre vagy
megszaktsra vlaszolva, a processzor a kivtel, vagy megsz
alk deszkriptor indexelsre. Ha a processzor
egy megszakts-, vagy trap kapura indexel, a call-kapura irnyul CALL
utastshoz hasonl mdon hvja meg a kiszolgl rutint. Ha a processzor
egy taszkkaput tall, a taszkkapura irnyul CALL utastshoz hasonl
mdon vgez taszkkapcsolst.


3.9.7.1. Megszakts-kezel procedrk

Amint azt a 3.66. bra mutatja, egy megszakts-, vagy trap kapu
kzvetett mdon cmez meg egy olyan procedrt, amely az aktv taszk
kontextusban fut. A kapu szelektora egy vgrehajthat szegmens GDT-
beli, vagy az aktulis LDT-ben lev deszkriptorra mutat. A
kapudeszkriptor ofszet m
236
Vdett zemmd kivtelek s megszaktsok
IDT
Eljrs
Cl kdszegmens
Bzis cm
Szegmens
deszkriptor
Megszakts vagy
trap kapu
GDT vagy LDT
Ofszet
Megszakts
vektor
Szegmens szelektor


3.66. bra: Megszakts procedura hvs

A processzor, egy procedrahvssal majdnem azonos mdon hv
meg egy kivtelt, vagy megszaktst kiszolgl procedrt.


3.9.7.1.1. A megszakts-kezel eljrs verme

Akrcsak egy CALL utastssal trtn vezrlstads esetn, a
kivtelt, vagy megszaktst kiszolgl procedrnak val vezrlstads
237
ltalnos CPU programozsi informcik
is alkalmazza a vermet, a processzor llapotnak elmentsre. Amint azt a
3.67. bra mutatja, egy megszakts, a megszaktott utasts cmnek
stack-be val eltrolst megelzen, lenyomja az EFLAGS regiszter
tartalmt a verembe.

Nem privilgizlt szint
csere hibakd nlkl
Nem privilgizlt szint
csere hibakddal
Privilgizlt szint
csere hibakd nlkl
Privilgizlt szint
csere hibakddal
Rgi EFLAG
Rgi CS
Rgi EIP
Rgi ESP
j ESP
Rgi ESP
j ESP
Rgi EFLAG
Rgi CS
Rgi EIP
Hibakd
Nem hasznlt
Rgi SS
Rgi ESP
Rgi EFLAG
Rgi CS
Rgi EIP j ESP
ESP
a TSS-bl
j ESP
ESP
a TSS-bl
Nem hasznlt
Rgi SS
Rgi ESP
Rgi EFLAG
Rgi CS
Rgi EIP
Hibakd


3.67. bra: Verem keret egy megszakts vagy kivtel utn

Nmely kivtel tpus egy hibakdot is lenyom a verembe. A
kivtelt kiszolgl rutin felhasznlhatja a hibakdot a kivtel
diagnosztikjra.


3.9.7.1.2. Visszatrs egy megszakts-kezel eljrsbl

A megszakts-kezel eljrs a normlis eljrsoktl az eljrsbl
val kilps metdusban klnbzik. Az IRET utasts a megszakts-
kezel procedra elhagysra hasznlatos. Az IRET utasts hasonlt a
RET utastsra, azzal a klnbsggel, hogy ngy tovbbi Byte-tal nveli
az ESP regisztert, s visszalltja az elmentett flageket az EFLAGS
regiszterbe. Az EFLAGS regiszter IOPL mezjt csak abban az esetben

238
Vdett zemmd kivtelek s megszaktsok
lltja vissza, ha a CPL=0. Az IF bit csak akkor mdosul, ha CPL<=
IOPL.


3.9.7.1.3. A megszakts-kezel eljrs flag-hasznlata

A megszakts kapukat vagy trap kapukat hasznl megszaktsok
a TF bit trlst okozzk, miutn annak aktulis rtkt, az EFLAGS
regiszter elmentett tartalmnak rszeknt, elmentik a verembe. Ezzel, a
processzor megelzi azt, hogy az utasts nyomkvets a megszaktsra
adott vlaszt befolysolhassa. Egy kvetkez IRET utasts visszalltja a
TF bitet az EFLAGS regiszter verembe elmentett tartalmnak rtkre.

Egy megszakts kapu s egy trap kapu kzti klnbsg az IF
flagre gyakorolt hatsukbl addik. Egy megszakts kaput alkalmaz
megszakts trli az IF bitet, megakadlyozva ezzel, hogy ms
megszaktsok beavatkozzanak az aktulis megszaktskezel rutinba.
Egy kvetkez IRET utasts visszalltja az IF bitet az EFLAGS
regiszter verembe elmentett tartalmnak rtkre. Egy trap kaput hasznl
megszakts nem vltoztat az IF biten.


3.9.7.1.4. Vdelem a megszakts-kezel eljrsokban

Azok a privilgium szablyok, amelyek a megszakts-kezel
procedrkat irnytjk, azonosak a procedra hvsra rvnyes
szablyokkal: a processzor nem teszi lehetv egy megszaktsnak, hogy
tadja a vezrlst egy kevsb privilegizlt (szmszerint nagyobb
privilegizlsi szint) szegmensben lev procedrnak. E szably
megsrtsre tett ksrlet ltalnos vdelmi hiba kivtelt eredmnyez.

Minthogy a megszaktsok ltalban nem szablyos idkznknt
jelennek meg, az emltett privilgium szably gyakorlatilag azokra a
privilegizlsi szintekre knyszerti a megszortsokat, amelyeken a
kivtelt-, vagy megszaktst kiszolgl rutinok kpesek futni. A
kvetkez technikk brmelyikt fel lehet hasznlni a privilgium
szablyok megsrtsnek megelzsre:

239
ltalnos CPU programozsi informcik
A kivtelt-, vagy megszakts-kezel rutinokat illeszked
(conforming) kdszegmensbe lehet elhelyezni. Ezt a technikt
bizonyos kivteleket (pldul az osztshiba kivtelt) kezel rutinok
alkalmazhatjk. Ezek a kiszolgl rutinok csak a veremben elrhet
adatokat szabad hasznljk. Ha a megszakts-kezelnek szksge
lenne egy adatszegmensben tallhat adatokra, akkor az
adatszegmensnek ktelezen 3-as privilegizlsi szintje kne legyen,
ami vdtelenn tenn azt.

A megszaktst kiszolgl rutin 0-s privilegizlsi szint
kdszegmensbe is elhelyezhet. Ez a handler a program CPL-jtl
fggetlenl, mindig futhatna.


3.9.7.2. Megszakts-kezel taszkok

Egy IDT-beli taszkkapu kzvetetten hatroz meg egy taszkot,
ahogyan azt a 3.68. bra illusztrlja. A taszkkapuban tallhat szegmens-
szelektor egy GDT-beli TSS deszkriptort cmez meg.

240
Vdett zemmd kivtelek s megszaktsok
IDT
TSS
TSS bzis cm
TSS szegmens
deszkriptor
Taszk kapu
GDT
Megszakts
vektor
TSS szelektor


3.68. bra: Megszakts taszkkapcsols

Amikor egy kivtel, vagy megszakts meghv egy IDT-ben lev
taszkkaput, taszkkapcsols keletkezik. Egy megszaktsnak klnll
taszkkal val kiszolglsa kt elnyt knl fel:

A teljes kontextus automatikusan elmentdik

241
ltalnos CPU programozsi informcik
A megszakts-kezel elszigetelhet a tbbi taszktl, egy klnll
cmtartomny hozzrendelsvel. Ez, a megszaktskezel rszre egy
kln LDT biztostsval valsthat meg.

Egy megszakts okozta taszkkapcsols ugyangy mkdik, mint
a tbbi taszkkapcsols. A megszakts-kezel taszk visszatr a
megszaktott taszkba, egy IRET utastst vgezve.

Egyes kivtelek egy hibakdot szolgltatnak. Ha a taszkkapcsolst
egy ilyen kivtel eredmnyezte, a processzor lenyomja a hibakdot a
megszakts-kezel privilegizlsi szintjnek megfelel verembe.

Hogyha egy opercis rendszer megszakts-kiszolgl taszkokat
hasznl, tulajdonkppen kt taszk-eloszt mechanizmus ltezik: a
software temez (az opercis rendszer rsze), illetve a hardware
temez (a processzor megszaktsi mechanizmusnak rsze). A software
temez olyan megszaktskiszolgl taszkokat kell kszenltbe
helyezzen (accomodate), amelyek eloszthatk (dispatched), ha a
megszaktsok engedlyezve vannak.


3.9.8. Hibakdok

Egy bizonyos szegmenshez kapcsold kivtelek esetn, a
processzor eltrol egy hibakdot a kivtelkezel vermbe (fggetlenl
attl, hogy az procedra, vagy taszk). A hibakdoknak a 3.69. brn
lthat formtuma van. A hibakd hasonlt egy szegmens-szelektorhoz,
ugyanakkor, az RPL mez helyett a hibakd kt, egybites mezt
tartalmaz:

1. A processzor belltja az EXT bitet, ha a programon kvli esemny
eredmnyezte a kivtelt.

2. A processzor belltja az IDT bitet, ha a hibakd index rsze egy IDT-
beli deszkriptorra vonatkozik

242
Vdett zemmd kivtelek s megszaktsok
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Fenntartva Szelektor index
T
I
I
D
T
E
X
T


3.69. bra: Hibakd

Ha az IDT bit nincs belltva (set), a TI bit mutatja meg, hogy a
hibakd egy GDT-re (TI=0), vagy az LDT-re (TI=1) vonatkozik-e. A
megmaradt 13 bit a szegmens szelektornak fels bitjei. Egyes esetekben
a hibakd nulla (teht az als sz minden bitje 0-s).

A hibakd duplaszknt van a veremre helyezve. Ez azrt trtnik
gy, hogy a verem olyan cmekhez maradjon illesztett (aligned), amelyek
ngy tbbszrsei. A duplasz fels rsze fenntartott.


3.9.9. Kivtel felttelek

A kvetkez alpontok felsoroljk azokat a feltteleket, amelyek
kivteleket generlnak. Mindegyik lers hiba-, trap-, vagy abort-knt
osztlyozza a kivteleket. E kategorizls azon procedrk
jraindtshoz szksges informcit szolgltatja a
rendszerprogramozknak, amelyekben a kivtelek megjelennek:

Hibk - A CS s EIP regiszterek elmentett tartalma a hibt kivlt
utastsra mutat.

Csapdk - A CS s EIP regisztereknek a trap megjelensekor
elmentett tartalma a trap-et kivlt utasts utn vgrehajtand
utastsra mutat. Ha egy vezrlst tad utasts ideje alatt egy trap
detektldik, a CS s EIP regiszterek elmentett tartalma tkrzi a
vezrlstadst. Pldul, ha egy JMP utastsban trap van detektlva,
a CS s EIP regiszterek elmentett tartalma a JMP utasts rendeltetsi
helyre mutat, s nem - JMP fltti kvetkez cmen lev utastsra.

Abortok - Az abort egy olyan kivtel, amely nem engedi meg sem a
kivtelt okoz utasts helynek pontos behatrolst, sem a kivtelt
243
ltalnos CPU programozsi informcik
kivlt program jraindtst. Az abortok komoly hibk jelentsre
hasznlatosak, mint amilyenek a hardware-hibk, vagy a
rendszertblzatokban tallt sszefrhetelen, vagy szablytalan
rtkek.


3.9.9.1. 0-s szm megszakts - Osztshiba (Divide
Error)

Az osztshiba egy DIV, vagy IDIV utasts esetn jelenik meg, ha
az oszt nulla.


3.9.9.2. 1-es szm megszakts - Debug kivtel

A processzor debug kivtelt generl egy sor felttel esetn. Az,
hogy a kivtel hiba, vagy trap, a feltteltl fgg, ahogy kvetkezik:

Utasts cm trspont hiba
Adat cm trspont trap
ltalnos detektls hiba
Lpsenknti vgrehajts trap
Taszkkapcsols trspont trap

A processzor nem nyom le hibakdot ennl a kivtelnl. A
kivtelkezel rutin megvizsglhatja a nyomkvet regisztereket, hogy
megllaptsa, melyik felttel vltotta ki a kivtelt. A debugolsrl s a
nyomkvet regiszterekrl rszletes informci tallhat a 2. ktetben.


3.9.9.3. 3-as szm megszakts - Trspont
(Breakpoint)

Az INT 3 utasts trspont trap-et generl. Az INT 3 utasts egy
Byte-nyi hossz, ami leegyszersti egy RAM-ban lev kdszegmensbeli
mveletkd (opcode) kicserlst a trspont mveletkdra. Az opercis
rendszer, vagy egy nyomkvet eszkz alkalmazhat egy, a kdszegmens
244
Vdett zemmd kivtelek s megszaktsok
fizikai cmtartomnyra lekpezett adatszegmenst, az INT 3 utasts azon
pontokra val elhelyezsre, amelyekben a debugol meghvsa
szksges. A nyomkvetk a program felfggesztsre trspontokat
hasznlnak, a regiszterek, vltozk, stb. vizsglathoz.

A CS, illetve EIP regiszterek elmentett tartalma a trspontot
kvet Byte-ra mutatnak. Ha a debugol engedlyezi a felfggesztett
program vgrehajtsnak folytatst, a trspont helyn az INT 3 utastst
visszacserli az eredeti mveletkdra, s mieltt visszaadn a vezrlst,
dekrementlja az EIP regiszter elmentett tartalmt.


3.9.9.4. 4-es szm megszakts - Tlcsorduls
(Overflow)

A tlcsorduls trap akkor jelenik meg, ha a processzor belltott
OF flag mellett egy INTO utastst hajt vgre. Mivel gy az eljeles, mint
az eljel nlkli aritmetika ugyanazon nhny utastst hasznlja, a
processzor nem tudja meghatrozni, hogy a tlcsorduls tulajdonkppen
mikor jelenik meg. Ehelyett, magasra lltja az OF bitet, ha az eljeles
szmokknt rtelmezett eredmnyek a tartomnyon kvlre esnnek.
Eljeles operandusokon vgzett aritmetikai mveletek esetn az OF flag
kzvetlenl tesztelhet, vagy az INTO utasts alkalmazhat.


3.9.9.5. 5-s szm megszakts - Hatrsrts (Bounds
Check)

A hatrsrts (bounds-check) hiba akkor jn ltre, amikor a
processzor egy BOUND utasts vgrehajtsa kzben azt szleli, hogy az
operandus meghaladja a megadott hatrrtkeket. A program a BOUND
utastst annak ellenrzsre hasznlhatja fel, hogy egy eljeles
tmbindex nem lpi-e tl egy memriablokkban definilt eljeles
hatrrtkeket.


245
ltalnos CPU programozsi informcik
3.9.9.6. 6-os szm megszakts - rvnytelen utasts
(Invalid Opcode)

Az rvnytelen utasts (invalid op-code) hiba akkor keletkezik,
amikor egy rvnytelen mveletkdot detektl a vgrehajt egysg. ( A
kivtel addig nem detektldik, amg az rvnytelen utasts
vgrehajtsra nem trtnik ksrlet. Teht egy rvnytelen mveletkd
elzetes elrse (prefetch) nem vltja ki ezt a kivtelt.) A verembe nem
kerl hibakd. A kivtel ugyanazon taszk keretn bell kezelhet.

Ez a kivtel akkor is jelentkezik, ha az operandus tpusa az adott
utasts szmra rvnytelen. A pldk kz sorolhat egy regiszter-
operandust alkalmaz szegmensek kztti JMP utasts, vagy egy
regiszter forrsoperandust hasznl LES utasts.

A harmadik felttel, amely ezt a kivtelt generlja, a LOCK prefix
hasznlata egy olyan utastssal, amely nem zrhat le. Csak bizonyos
utastsokra alkalmazhat a busz lezrsa, s ezeknek az utastsoknak
csak azon formi hasznlhatk, amelyek a memriba rnak. A LOCK
prefix minden eltr hasznlata rvnytelen utasts hibt generl.


3.9.9.7. 7-es szm megszakts - nem elrhet eszkz
(Device Not Available)

A "numerikus koprocesszor nem elrhet" hibt a kvetkez kt
felttel egyike hozza ltre:

A processzor vgrehajt egy ESC utastst, s a CR0 regiszter EM bitje
1-re van lltva.

A processzor vgrehajt egy WAIT (MP=1 esetn) utastst, vagy egy
ESC utastst, s a CR0 regiszter TS bitje 1-re van lltva.

Teht a 7-es megszakts akkor jelentkezik, amikor a programoz
azt akarja, hogy az ESC utasts software ton legyen kezelve (EM=1
esetn), illetve akkor, amikor a processzor egy WAIT, vagy ESC
246
Vdett zemmd kivtelek s megszaktsok
utastssal tallkozik, s a lebegpontos egysg kontextusa eltr az
aktulis taszk kontextustl.

Az Intel286-os s Intel386-os processzorokban a CR0 regiszter
MP bitje s a TS bit annak megllaptsra szolgl, hogy a WAIT utasts
kivtelt kell-e generljon. A Pentium, Intel486 DX s Intel487 SX
processzorokon fut programok esetn az MP bit 0 kell legyen.


3.9.9.8. 8-as szm megszakts - Ketts hiba, dupla
hiba (Double Fault)

Ha a processzor, mikzben egy elz kivtel kiszolgl rutinjt
prblja behvni, egy jabb kivtelt detektl, normlis esetben a kt
kivtelt sorban, egyms utn szolgja ki.

Osztly Vektorszm Meghatrozs
1 Debug kivtel
2 NMI megszakts
Jindulat 3 Trspont
kivtelek 4 Tlcsorduls
s megszaktsok 5 Hatrellenrzs
6 rvnytelen op. kd
7 Eszkz nem elrhet
16 FPU hiba
0 Osztsi hiba
Jrulkos 10 rvnytelen TSS
kivtelek 11 Szegmens nincs jelen
12 Verem hiba
13 lt. vdelmi hiba
Laphibk 14 Laphiba

3.70. bra: Megszakts s kivtel osztlyok


247
ltalnos CPU programozsi informcik
Els Msodik kivtel
kivtel Jindulat Jrulkos Laphiba
Jindulat ok ok ok
Jrulkos ok Dupla hiba ok
Laphiba ok Dupla hiba Dupla hiba

3.71. bra: Dupla hiba viszonyok

Ha mgsem kpes ket sorosan kezelni, ketts hiba kivtelt jelez.
Annak eldntsre, hogy a processzor milyen esetben kell kt kivtelt
"dupla hiba"-knt megjelljn, a kivteleket a kvetkez hrom osztlyba
sorolja: "szeld" (benign) kivtelek, "hozzjrul" (contributory)
kivtelek, illetve laphiba kivtelek. Ezt a felosztst a 3.70. bra brzolja.
Az els kivtel osztlyt sszevetve a msodik kivtel osztlyval, a
processzor a 3.71. brn megjellt esetekben jelent ketts hibt.

Egy utasts elzetes elrse (prefetch) idejn szlelt kezdeti
szegmens- vagy laphiba a 3.71. brn kvl esik. Ugyanakkor brmely
tovbbi hiba, amely akkor generldik, amikor a processzor megksreli
tadni a vezrlst a megfelel hibakezelnek, tovbbra is dupla hiba
szekvencihoz vezethet.

A processzor minden alkalommal lenyom egy hibakdot a ketts
hibt kiszolgl rutin vermbe, viszont ennek a hibakdnak az rtke
mindig 0. A hibt kivlt utasts nem indthat jra. Ha a ketts hiba
kivtelkezel meghvsra tett ksrlet kzben jabb kivtel is elfordul, a
processzor tmegy lelltott (shutdown) mdba. Ez a md hasonlt egy
HLT utastst kvet llapothoz. Egyetlen utasts sem kerl
vgrehajtsra, amg egy NMI megszakts, vagy egy RESET jel nem fut
be. Ha a lells akkor jn ltre, mikzben a processzor egy NMI
megszaktst hajt vgre, csak a RESET jel kpes jraindtani a
processzort. A "shutdown" llapot jelzsre a processzor egy specilis
buszciklust generl.

248
Vdett zemmd kivtelek s megszaktsok
3.9.9.9. 9-es szm megszakts - (az Intel ltal
fenntartott, hasznlata nem ajnlott)

A 9-es megszakts, a "koprocesszor-operandus szegmenshatr
srts "abort a 386-os CPU-ra alapul, 387-es numerikus koprocesszorral
elltott rendszerekben generldik, amikor a 386-os processzor egy lap-
vagy szegmens srtst detektl, mikzben a 387-es numerikus
koprocesszor operandusnak kzps rszt transzferlja. Ezt a
megszaktst nem generlja sem a Pentium, sem a 486-os processzor,
helyette a 13-as szm megszakts jn ltre.


3.9.9.10. 10-es szm megszakts - rvnytelen TSS
(Invalid TSS)

Az rvnytelen TSS hiba akkor generldik, ha egy rvnytelen
TSS-el rendelkez szegmensre trtnik taszkkapcsolsi ksrlet. A TSS a
3.72. brn felsorolt esetekben rvnytelen. A kivtelkezel vermbe
lenyomdik egy hibakd, a hiba oknak feldertst elsegtend. Az
EXT bit megmutatja, hogy a kivtelt a program ellenrzsi terletn
kvlre es felttel okozta-e (pldul, ha egy taszkkaput alkalmaz kls
megszakts egy rvnytelen TSS-re ksrelt meg taszkkapcsolst
vgrehajtani).

Hibakd index Meghatrozs
TSS szegmens A TSS szegmenshatr kisebb mint 67h
LDT szegmens rvnytelen LDT, vagy LDT nincs jelen
Verem szegmens A veremszegmens szelektor tllpi a deszkriptor
tbla hatrt
Verem szegmens A verem szegmens nem rhat
Verem szegmens A veremszegmens DPL-je nem kompatibilis a
CPL-el
Verem szegmens A veremszegmens szelektor RPL-je nem
kompatibilis a CPL-el
Kdszegmens A kdszegmens szelektor tllpi a deszkriptor
tbla hatrt
Kdszegmens A kdszegmens nem vgrehajthat
249
ltalnos CPU programozsi informcik
Kdszegmens A nem illeszked kdszegmens DPL-je nem
egyenl a CPL-el
Kdszegmens Az illeszked kdszegmens DPL-je nagyobb a
CLP-nl
Adatszegmens Az adatszegmens szelektor tllpi a deszkriptor
tbla hatrt
Adatszegmens Az adatszegmens nem olvashat

3.72. bra: rvnytelen TSS llapotok

Ez a hiba megjelenhet akr az eredeti taszk, akr a bejv taszk
kontextusban. Amg a processzor nem ellenrizte le teljesen az j taszk
TSS-nek jelenltt, a kivtel az eredeti taszk kontextusban jn ltre.
Abban a pillanatban, hogy az j TSS jelenlte detektlva van, a
taszkkapcsols befejezettnek lesz nyilvntva. Vagyis a TR regiszterbe az
j TSS-re mutat szelektor tltdik be, s ha a taszkkapcsolst kivlt ok
egy CALL hvs vagy egy megszakts volt, az j TSS Link mezje a rgi
TSS-re mutat. Brmely hiba, amelyet a processzor ezen a ponton
tlmenen fedez fel, az j taszk kontextusban lesz kezelve. Annak
rdekben, hogy biztostva legyen egy TSS elrhetsge a kivtel
kiszolglshoz, az "rvnytelen TSS" kivtelt kiszolgl rutin egy
taszkkaput alkalmaz taszk kell legyen.


3.9.9.11. 11-es szm megszakts - Szegmens nincs
jelen, (Segment Not Present)

A "szegmens nincs jelen" hiba akkor generldik, amikor a
processzor szleli, hogy a deszkriptor P bitje 0-s. A processzor a
kvetkez esetek brmelyikben generlhatja ezt a hibt:

Mikzben megksreli a CS, DS, ES, FS, vagy GS regisztereket
feltlteni, az SS regiszter feltltse viszont, veremhibt okoz.

Mikzben megksreli az LDT regisztert az LLDT utasts
segtsgvel feltlteni, az LDT regiszter egy taszkkapcsols kzbeni
feltltse viszont, egy "rvnytelen TSS" kivtelt okoz.
250
Vdett zemmd kivtelek s megszaktsok

Mikzben megksreli egy olyan kapudeszkriptor alkalmazst,
melynek P bitje betltetlen szegmenst jell.

Ez a hiba jraindthat. Ha a kivtelkezel betlti a szegmenst,
majd ezt kveten visszatr (return), a megszaktott program vgrehajtsa
folytatdik.

Ha egy taszkkapcsols kzben "szegmens nincs jelen" kivtel
keletkezik, a taszkvlts nem minden lpse lesz befejezve. Egy
taszkkapcsols alatt a processzor elszr feltlti az sszes
szegmensregisztert, majd ellenrzi ezek tartalmnak helyessgt. Amikor
egy "betltetlen szegmens" kivtel kerl felfedezsre, a htramarad
szegmensregiszterek mg nincsenek leellenrizve, ezrt ezek memria-
hozzfrsre alkalmatlanok lehetnek. A "betltetlen szegmens"
kivtelkezel rutinja nem "szmthat" arra, hogy a CS, SS, DS, ES, FS,
illetve GS regiszterekben tallhat szegmens-szelektororokat
felhasznlhatja anlkl, hogy egy jabb kivtelt ne okozna. A
kivtelkezel minden egyes szegmensregisztert meg kell vizsgljon,
mieltt megprbln folytatni a bejv taszkot, klnben a ksbbiekben
ltalnos vdelmi hibk keletkezhetnek, olyan felttelek mellett, amelyek
a diagnosztizlst mg nehezebb teszik. Ezen eset kezelsre hrom
lehetsg knlkozik:

1. Taszk segtsgvel kezelni a "betltetlen szegmens" kivtelt. A
megszaktott taszkra val visszakapcsols arra kszteti a processzort,
hogy ellenrizze a regisztereket, mikzben a TSS-bl betlti ket.

2. PUSH s POP utastsokat alkalmazni az sszes szegmensregiszterre.
Minden POP utasts arra kszteti a processzort, hogy ellenrizze a
szegmensregiszter j tartalmt.

3. Minden egyes szegmensregnek a TSS-ben eltrolt tartalmt
ellenrizni, szimullva azt a tesztelst, amelyet a processzor a
szegmensregiszter betltsekor vgez.

Ez a kivtel lenyom egy hibakdot a verembe. A hibakd EXT
bitje magasra lltdik, ha egy programon kvli esemny idzte el a
251
ltalnos CPU programozsi informcik
megszaktst, amely a tovbbiakban egy betltetlen szegmensre mutatott.
Az IDT bit akkor lesz belltva, ha a hibakd egy IDT bemenetre utal
(pldul, egy jelen nem lev kapura vonatkoz INT utasts). Az
opercis rendszer, a virtulis memria szegmensszint alkalmazsra,
tipikusan a "betltetlen szegmens" kivtelt alkalmazza. Ennek ellenre,
egy kapudeszkriptorbeli "nincs jelen" jells ltalban nem azt jelzi, hogy
a szegmens nincs jelen (mivel a kapuknak nem felelnek meg felttlenl
szegmensek). A jelen nem lev kapukat az opercis rendszer, a szmra
klns jelentsggel br kivtelek jelzsre hasznlhatja fel.


3.9.9.12. 12-es szm megszakts - verem kivtel
(Stack Exception)

A veremhiba kt felttel mellett jn ltre:

Brmely olyan mveletben trtn hatrsrts eredmnyeknt, amely
az SS regiszterre vonatkozik. Ide tartoznak az olyan verem-orientlt
utastsok, mint a POP, PUSH, ENTER, s a LEAVE, valamint egyb
olyan memriahivatkozsok, amelyek impliciten, vagy expliciten
alkalmazzk az SS regisztert (pldul MOV AX, [BP+6] vagy MOV
AX, SS:[EAX+6]). Az ENTER utasts akkor vltja ki ezt a kivtelt,
amikor tl kevs hely van a loklis vltozk lefoglalsra.

Mikor ksrlet trtnik az SS regiszternek egy olyan deszkriptorral
val feltltsre, amely a "szegmens nincs jelen" megjellst viseli,
de egybknt rvnyes. Ez megjelenhet egy taszkkapcsolskor, egy
eltr privilegizlsi szintre trtn CALL hvskor, egy eltr
privilegizlsi szintre val visszatrskor, egy LSS utasts esetn,
illetve egy SS regiszterbe trtn MOV vagy POP utasts esetn.

Amikor a processzor szleli a veremhibt, a hibakezel vermbe
lenyom egy hibakdot. Ha a kivtel oka egy betltetlen veremszegmens,
vagy az j veremnek, privilegizlsi szintek kzti CALL hvs alatt
ltrejtt tlcsordulsa, akkor a hibakd a kivtelt elidz szegmens
szelektort tartalmazza (a kivtelkezel tesztelheti a deszkriptor P bitjt
annak megllaptsra, hogy ezek kzl melyik kivtel jtt ltre),
ellenkez esetben a hibakd rtke 0.
252
Vdett zemmd kivtelek s megszaktsok

Ezt a kivtelt kivlt utasts minden esetben jraindthat. A
kivtelkezel vermbe eltrolt visszatrsi cm arra az utastsra mutat,
amelyet jra kell indtani. ltalban, ez maga a kivtelt okoz utasts.
Ugyanakkor, azon veremhiba esetn, amely egy "nincs jelen" jelzs
veremszegmens deszkriptor taszkkapcsols kzbeni betltsekor
jelentkezik, a mutatott utasts a bejv taszk els utastsa.

Ha a veremhiba egy taszkkapcsols kzben lp fel, a
szegmensregisztereket nem lehet a memria megcmzsre felhasznlni.
Egy taszkkapcsols alatt, a szelektorrtkek hamarabb kerlnek betltsre
a deszkriptorok ellenrzsnl. Abban az esetben, ha veremkivtel
generldik, a fennmaradt szegmensregiszterek mg nem lvn
leellenrizve, a hasznlatuk kivtelt okozhat. A veremhiba kivtelkezel
rutinja nem "szmthat" arra, hogy a CS, SS, DS, ES, FS, illetve GS
regiszterekben tallhat szegmensszelektororokat felhasznlhatja anlkl,
hogy egy jabb kivtelt ne okozna. A kivtelkezel minden egyes
szegmensregisztert meg kell vizsgljon, mieltt megprbln folytatni a
bejv taszkot, klnben a ksbbiekben ltalnos vdelmi-hibk
keletkezhetnek, olyan felttelek mellett, amelyek a diagnosztizlst mg
nehezebb teszik.


3.9.9.13. 13-as szm megszakts - ltalnos vdelmi
hiba (General Protection)

Minden olyan vdelemsrts, amely nem okoz egy msik kivtelt,
ltalnos vdelmi hiba kivtelt eredmnyez. Ezek kz tartoznak:

A szegmens hatr tlpse, a CS, DS, ES, FS, vagy GS szegmensek
hasznlata kzben.

A szegmens hatr tlpse, egy deszkriptor-tblzat megcmzse
esetn.

Egy nem vgrehajthat szegmensnek tadott vezrls.

Egy csak-olvashat tpus adatszegmens vagy kdszegmens rsa
253
ltalnos CPU programozsi informcik

Egy csak-vgrehajthat tpus kdszegmens olvassa

Az SS regiszternek egy csak-olvashat szegmens szelektorval val
feltltse (ha taszkkapcsols alatt a szelektor egy TSS-bl szrmazik,
amely esetben egy rvnytelen TSS kivtel jelentkezik.)

Egy rendszerszegmens szelektornak betltse az SS, DS, ES, FS,
vagy GS regiszterekbe.

Egy csak-vgrehajthat kdszegmens szelektornak betltse a DS,
ES, FS, vagy GS regiszterekbe.

Egy vgrehajthat szegmens szelektornak betltse az SS regiszter
be.

A DS, ES, FS, vagy GS regiszterkel trtn memria-hozzfrs, ha
azok a nulls deszkriptort tartalmazzk.

Egy foglalt (busy) taszkra val kapcsols.

A privilgiumszablyok megsrtse.

Az utastshossz 15 Byte-nyi korltjnak tlhaladsa (ez csak abban
az esetben trtnhet meg, ha egy utasts el redundns prefixek
kerlnek).

A CR0 regiszter betltse, ha a PG=1 (a lapozs engedlyezve van) s
PE=0 (a vdelem le van tiltva).

Virtulis 8086-os zemmdbl, trap-kapuzott megszakts vagy
kivtel, egy 0-tl eltr privilegizlsi szint kezel rutinra.

A CR4 regiszter fenntartott bitjeinek 1-re val trsa.

Az ltalnos vdelmi kivtel egy hiba (fault). Egy ltalnos
vdelmi hiba kivtelre adott vlaszknt, a processzor lenyom a
kivtelkezel vermre egy hibakdot. Ha a kivtelt egy deszkriptor
254
Vdett zemmd kivtelek s megszaktsok
betltse okozta, a hibakd ennek a deszkriptornak egy szelektort
tartalmazza. Klnben a hibakd nulla. Egy hibakdon belli szelektor
forrsai a kvetkezk lehetnek:

Az utasts egy operandusa.

Egy olyan kapu szelektora, amelyik az utasts operandusa.

Egy taszkkapcsolsban rsztvev TSS-beli szelektor


3.9.9.14. 14-es szm megszakts - Laphiba (Page
Fault)

Laphiba akkor jelenik meg, ha a lapozs engedlyezett (a CR0
regiszter PG bitje 1-es) s a processzor egy lineris cmnek fizikai cmre
val fordtsakor, a kvetkez felttelek egyikt szleli:

A cmfodtshoz szksges lapcmtr- vagy laptblzat bejegyzs P
bitje 0-s, ami azt jelzi, hogy a laptblzat, vagy az operandust
tartalmaz lap nincs jelen a fizikai memriban.

A procedra nem rendelkezik a kell privilgiummal ahhoz, hogy a
megadott lapot elrhesse.

Ha a laphiba oka egy lapszint vdelemsrts, a lapcmtrbeli
hozzfrst jelz "A" bitek a hiba megjelensvel egyidben lesznek
belltva. A laptblzat hozzfrst jelz bitjei csak akkor kerlnek
belltsra, ha nem lp fel lapszint vdelemsrts.

A processzor kt olyan informcit biztost a laphiba kezelnek,
amelyek segtik a kivtel diagnosztizlst, illetve helyrelltst
(recover):

Egy verembeli hibakdot. A laphibkra adott hibakdoknak eltr
formtumuk van, a tbbi kivtel hibakdjaihoz kpest (lsd 3.73.
bra). A hibakd hrom dolgot kzl a kivtelkezelvel:

255
ltalnos CPU programozsi informcik
1. A kivtelt egy betltetlen (not-present) lap, egy hozzfrsi jog
megsrtse, vagy egy fenntartott bit hasznlata okozta-e.

2. A processzor felgyelszinten mkdtt-e a kivtel megjelense
kzben.

3. A kivtelt elidz memria-hozzfrs rs, vagy olvass volt-e.

A CR2 regiszter tartalmt. A processzor feltlti a CR2 regisztert azzal
a 32 bites lineris cmmel, amely a kivtelt elidzte. A kivtelkezel
ezt a cmet arra hasznlhatja, hogy lokalizlja a megfelel lapcmtr,
illetve laptblzat bemeneteket. Ha a laphibakezel vgrehajtsa
kzben egy jabb laphiba jn ltre, a hibakezel rutinnak el kell
trolni a CR2 regiszter tartalmt a verembe (push).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
P
R
S
S
R
_
U
V
_
W
Fenntartva


P 0 A hiba oka egy nem jelenlv lap volt
1 A hiba oka egy lapszint vdelem megszegs volt
W/R 0 A hibt okoz memria hozzfrs egy olvass volt
1 A hibt okoz memria hozzfrs egy rs volt
U/S 0 A hiba keletkezsekor a vgrehajts supervisor mdban
trtnt.
1 A hiba keletkezsekor a vgrehajts user mdban trtnt.
RSV 0 A hibt egy belltott bit okozta a laptblzat vagy a
lapcmtr egy fenntartott pozcijn
1 Egyb

3.73. bra: Laphiba hibakdok


3.9.9.14.1. Taszkkapcsols alatti laphiba

Egy taszkkapcsols alatt a kvetkez mveletek idznek el
memria hozzfrst:
256
Vdett zemmd kivtelek s megszaktsok

A kimen taszk llapotnak a taszk llapot-szegmensbe (TSS) val
rsa.

A bejv taszk TSS-deszkriptornak lokalizlsa a GDT olvassval.

A bejv taszk TSS-nek olvassa, a benne lev szegmens-
deszkriptorok tpusnak ellenrzse vgett.

A bejv taszk LDT-jnek esetleges olvassa, az j TSS-ben trolt
szegmensregiszterek ellenrzse vgett.

Laphiba szrmazhat brmely fentemltett mvelet vgrehajtsbl.
A kt utols alpont esetn, a kivtel a bejv taszk kontextusban jelenik
meg. Az utastsmutat az j taszk kvetkez utastst jelli ki, nem a
taszkkapcsolst elidz utastst (vagy az utoljra vgrehajts alatt ll
utastst, mint a megszaktsok esetben). Ha az opercis rendszer
struktrja megengedi, hogy a taszkkapcsolsok idejn laphibk
jelenjenek meg, a laphibakezelt taszkkapun keresztl kell meghvja.


3.9.9.14.2. Laphiba sszefrhetetlen veremmutatval

Klns figyelmet kell fordtani annak biztostsra, hogy a
laphiba ne ksztesse a processzort egy rvnytelen veremmutat
(SS:ESP) alkalmazsra. A 16 bites processzorokra rt software-ek
gyakran hasznlnak egy utasts-prt egy j veremre val ttrshez,
pldul:

MOV SS, AX
MOV SP, StackTop (verem teteje)

Minthogy a msodik utasts hozzfr a memrihoz, a 32 bites
processzorok esetn lehetsges, hogy laphiba keletkezzen, miutn az SS
regiszterben lev szelektor megvltozott, de mg mieltt az SP regiszter
tartalma elszenvedte volna a megfelel mdostsokat. Ebben a
stdiumban, az SS:SP (vagy 32 bites programokban az SS:ESP)
257
ltalnos CPU programozsi informcik
veremmutat kt rsze, sszefrhetetlen. Az j veremszegmenssel a rgi
veremmutat kerl alkalmazsra.

A processzor nem alkalmaz sszefrhetetlen veremmutatt, ha a
laphiba kiszolglsa egy helyesen definilt veremre trtn tvltst
(stack switch) idz el, (teht a kivtelkezel rutin egy taszk, vagy egy
privilegizltabb procedra). Ugyanakkor, ha a laphiba ugyanazon a
privilegizlsi szinten van, s ugyanabban a taszkban tallhat, mint a
kivtelkezel rutin, a processzor megksreli alkalmazni az inkonzisztens
veremmutat ltal kijellt vermet.

Azokban a lapozst hasznl rendszerekben, amelyek a laphibkat
a hibz taszk keretn bell (trap-, vagy megszakts kapukkal) kezelik, a
laphiba-kezel rutinnal megegyez privilegizlsi szinten fut software-
ek szmra ajnlott, hogy inkbb az LSS utasts segtsgvel
inicializljanak egy j vermet, mintsem a fentemltett utastsprral. Ha a
laphiba-kezel rutin a 0-s privilegizlsi szinten fut (normlis esetben), a
problma csak a 0-s szinten szalad programokra szkl le, vagyis
tipikusan az opercis rendszer kerneljre.


3.9.9.15. 16-os szm megszakts - Lebegpontos
egysg hiba, Floating-Point Error)

A numerikus koprocesszor hiba egy lebegpontos aritmetikai
utasts ltal kivltott hibt jelez. A 16-os szm megszakts csak akkor
jhet ltre, ha a CR0 regiszterbeli NE bit 1-re van lltva.

Ha NE=1, egy nem maszkolhat lebegpontos kivtel a 16-os
megszaktst vltja ki, azonnal a kvetkez nemvezrl (non-control)
lebegpontos utasts, vagy WAIT utasts eltt. A 16-os megszakts egy
opercis rendszer-hvs, amely meghvja a kivtelkezel rutint.

Ha NE=0 (s az IGNE# bemenet inaktv), egy nem maszkolt
koprocesszor hiba azonnal a kvetkez nemvezrl (non-control)
lebegpontos utasts, vagy WAIT utasts eltt, lefagysra (freeze)
knyszerti a processzort. A lefagyott processzor egy kls megszaktsra
vr, amelyet a kls hardware kell szolgltasson, vlaszknt a 486-os,
258
Vdett zemmd kivtelek s megszaktsok
vagy Pentium processzor FERR# vonaln kimen jelre ( a FERR#
hasonlt az 387-es numerikus koprocesszor ERROR# vonalra). Az NE
rtktl fggetlenl, egy maszkolatlan numerikus kivtel aktivlja a 486-
os s a Pentium processzorok FERR# vonalt. Ebben az esetben a kls
megszakts hvja meg a kivtelkezel rutint. Ha de az IGNE# bemenet
aktv, a processzor figyelmen kvl hagyja a kivtelt, s folytatja
feladatt. A kls megszaktsok ltali hibajelents a DOS-al val
kompatibilits rdekben tmogatott. A numerikus hibk kezelsekor a
processzornak kt feladata van:

Amikor egy hibt (error) szlel, nem szabad megsrtenie a numerikus
kontextust.

Trlnie kell a hibt, s meg kell ksrelnie a hiba helyrelltst
(recovery).

Br az eljrs, amellyel a programozk ezen feladatokat
ellthatjk, alkalmazsonknt vltozik, mgis a kivtelkezelk tbbsge
magba foglalja a kvetkez lpseket:

Az FPU krnyezetnek (vezrl-, llapot-, s toldalk szk,
operandus- s utasts mutatk) elmentse gy, ahogyan az a kivtel
pillanatban volt.

Az llapotsz kivtelt jelz bitjeinek trlse.

Az INTR, NMI, vagy SMI ltal letiltott megszaktsok engedlyezse.

A kivtel identifiklsa, az elmentett krnyezetbeli llapot-, s
vezrlsz vizsglata segtsgvel.

Nhny rendszer-fgg mvelet elvgzse, a kivtel helyrelltsa
(rectify) rdekben.

Visszatrs a megszaktott programba, s a normlis vezrls
folytatsa.


259
ltalnos CPU programozsi informcik
3.9.9.15.1. Numerikus kivtelek kezelse

A numerikus kivteleket kezel rutinoknak szmos formja
ltezhet. Ezek megvloztathatjk az FPU aritmetikai s programozsi
szablyait. Ezek a mdostsok jradefinilhatjk egy hiba (error)
alaprtelmezs szerinti kijavtsnak mdjt, megvltoztathatjk az FPU
megjelenst a programozk szmra, vagy mdosthatjk az FPU
aritmetikai szablyainak defincijt.

kivtelekre adott vlaszok mdostsnak egyike az volna, hogy a
denormlis aritmetika a memribl betlttt denormlisokon legyen
elvgezve. Egy megjelensbeli vltozst a regiszterveremnek a
memriba val kiterjesztse jelenten, "vgtelen" szm numerikus
regiszter biztostsnak rdekben. Az FPU aritmetikja tvltoztathat
arra, hogy automatikusan kiterjessze a vltozk pontossgt s a
tartomnyt, amikor ez tlhaladdik.

Nhny lehetsges, alkalmazs-fgg lehetsg:

Egy kivtel szmll inkrementlsa, a ksbbi kijelzs, vagy
kinyomtats vgett.

Diagnosztika-informcik kinyomtatsa, vagy kijelzse (pldul az
FPU krnyezete s regiszterei).

A tovbbi vgrehajts abortolsa.

Egy diagnosztika rtk (egy NaN) elmentse az eredmnyben, majd a
szmtsok folytatsa.

Fontos, hogy egy kivtel, az alkalmazstl fggen, nem jelent
minden esetben hibt (error). Amint a kivtelkezel kijavtja a kivtelt
elidz felttelt, a kivtelt okoz lebegpontos utasts jraindthat, ha
ez megfelel. Ugyanakkor, az IRET utastst hasznlva ez nem
lehetsges, mert a trap a "vtkes" ESC utastst kvet ESC vagy WAIT
utastsnl jelenik csak meg. A kivtelkezel meg kell szerezze a "vtkes"
utasts cmt azon taszk belsejben, amely kezdemnyezte azt, msolatot
kell ksztenie rla, a msolatot vgre kell hajtania a "vtkes" taszk
260
Vdett zemmd kivtelek s megszaktsok
kontextusban, majd egy IRET utastssal vissza kell trjen az aktulis
utastslncba.

A numerikus kivtelt okoz felttel kijavtsa rdekben, a
kivtelkezel fel kell ismerje pontosan az FPU azon llapott, amelyben a
kivtelkezel meghvsnak pillanatban volt, majd kpes kell legyen az
FPU arra az llapotra visszakvetkeztetni, amely a kivtel kezdetn volt
aktulis. Az FPU llapotnak visszafejtshez a programozknak tudniuk
kell, hogy a klnbz osztly kivtelek eltr pillanatokban lesznek
felismerve, a numerikus utasts vgrehajtsa eltt, vagy azt kveten.

Az rvnytelen mvelet, zrval val oszts s denormlis
operandus kivtelek egy mvelet megkezdse eltt lesznek detektlva,
mg a tlcsorduls, alulcsorduls, s a pontossg kivtelek addig nem
jelennek meg, amg egy valdi eredmny nincs kiszmtva. Ha egy
mveletkezds eltti kivtel detektldik, az FPU regiszterverme s
memriatra mg nincs feljtva, s gy tnik, mintha a "vtkez" utasts
mg nem lett volna vgrehajtva.

Amikor egy mveletkezds utni kivtel detektldik, a
regiszterverem s memria gy nznek ki, mintha az utasts befejezdtt
volna, teht fljthatk. Ugyanakkor, egy store, vagy store-andpop
tpus mveletben, a maszkolatlan tl/alulcsorduls mveletkezds eltti
kivtelknt van kezelve, a memria nem lesz felfrisstve, s a verembl
semmi sem lesz kiemelve.


3.9.9.15.2. Szimultn kivtelekre adott vlaszok

Az olyan estekben, amelyekben szimultn, tbbszrs kivtelek
keletkeznek, az FPU az albbiakban kvetkez elsbbsgi-lista alapjn
jelzi az egyik kivtelt. Ez annyit jelent, hogy pldul egy SNaN zrval
val osztsa "rvnytelen mveletet" eredmnyez, s nem "nullval val
osztsi hibt" ; a maszkolt eredmny a QNaN valdi vgtelen (real
infinite), s nem a vgtelen . Egy denormlis, vagy pontossg kivtel
ugyanakkor, ksrhet egy numerikus alulcsordulst, vagy tlcsordulst.

A numerikus kivtelek kzti sorrend a kvetkez:
261
ltalnos CPU programozsi informcik

1. rvnytelen mvelet kivtel, a kvetkezkppen tovbb osztva:

verem alulcsorduls
verem tlcsorduls
nem tmogatott formtum operandus
SNaN operandus

2. QNaN operandus. Br ez nem egy kivtel, ha egy operandus egy
QNaN, kezelse elnyt lvez az alacsonyabb priorits kivtelek eltt.

3. Brmely, fentebb nem emltett kivtel, vagy nullval val oszts.

4. Denormlis operandus. Ha le van maszkolva, a mvelet vgrehajtsa
folytatdik, s ugyanakkor egy alacsonyabb priorits kivtel is
megjelenhet.

5. Numerikus alulcsorduls, vagy tlcsorduls. A pontatlan eredmny
(pontossg) flag is bejellhet.

6. Pontatlan eredmny (pontossg-) kivtel.


3.9.9.16. 17-es szm megszakts - Illeszkeds
ellenrzs ellenrzsi hiba (Alignment Check)

Az illeszkeds ellenrzsi hiba kivtel a nem illesztett (unalign)
operandusokhoz val hozzfrs esetn generldhat. Pldul, egy
pratlan Byte-cmen trolt sz, vagy egy duplasznak egy olyan cmen
val trolsa, amelyik nem ngynek tbbszrse. A 3.74. bra az
adattpusok ltal ignyelt illeszkedsi feltteleket sorolja fel. Az
illeszkeds ellenrzs engedlyezshez a kvetkez felttelek teljestse
szksges:

a CR0 regiszterbeli AM bit magasra legyen lltva
az AC flag magasra legyen lltva
a CPL rtke 3 legyen (felhasznli md)

262
Vdett zemmd kivtelek s megszaktsok
Adat tpus A cmnek oszthatnak kell lennie:
WORD 2
DWORD 4
rvid REAL 4
hossz REAL 8
TEMPREAL 8
Szelektor 2
48 bites szegmentlt mutat 4
32 bites lap mutat 4
32 bites szegmentlt mutat 2
48 bites pszeudo deszkriptor 4
FSTENV/FLDENV mentsi
terlet
2 vagy 4, az operandusmrettl
fggen.
FSAVE/FSTOR mentsi terlet 2 vagy 4, az operandusmrettl
fggen.
Bit sztring 4

3.74. bra: Adattpusok ltal ignyelt illeszkedsi felttelek

Az illeszkeds ellenrzs azon programok szmra hasznos,
amelyek a mutatk als kt bitjt hasznljk az ltaluk megcmzett
adatstruktra tpusnak azonostsra. Pldul, egy matematikai knyvtr
szubrutinja elfogadhat numerikus adatstruktrkra mutat pointereket. Ha
e struktra tpushoz az '10' (binris) kdot trstjuk az erre a tpusra
mutat pointer legals kt bitjn, a matematikai szubrutinok kijavthatjk
a tpuskdot -10 (binris) eltols hozzadsval. Abban az esetben, ha a
szubrutin helytelen mutattpust kapna, egy illesztetlen (unaligned)
hivatkozs jnne ltre, amely kivtelt generlna.

Az illeszkeds ellenrzs hiba kivtelek csak felhasznli mdban
(3. privilgium szinten) generldnak. Azok a memriahivatkozsok,
amelyek alaprtelmezse a 0. privilgium szint, mint pldul a szegmens-
deszkriptorok betltse, nem okozzk a fentemltett kivtelt mg abban az
esetben sem, ha ezt egy felhasznli mdbeli memriahivatkozs okozn.
Egy 48 bites pszeudo-deszkriptor (egy deszkriptor-tblzat bzisregiszter-
tartalmnak memriabeli msolata) trolsa felhasznli mdban,
illeszkeds ellenrzs hiba kivtelt generlhat. Br a felhasznli
263
ltalnos CPU programozsi informcik
programok normlis esetben nemigen trolnak pszeudo-deszkriptorokat, a
hiba mgis elkerlhet, a pszeudo-deszkriptornak egy pratlan sz cmre
val illesztsvel (teht egy olyan cmre, amelynek 4-el val osztsi
maradka 2).

Az FSAVE s FRSTOR utastsok illesztetlen referencikat
(hozzfrseket) lltanak el, amelyek illeszkedsellenrzs-hiba
kivteleket okozhatnak. Ezekre az utastsokra a felhasznli
programoknak ritkn van szksgk.


3.9.9.17. 18-as szm megszakts - Processzortpus
ellenrzs (Machine Check)

A processzortpus ellenrzs modell-specifikus kivtel, amely
csak a Pentium processzorokon ltezik.


3.9.10. A kivtelek sszefoglalsa

A 3.75.bra sszefoglalja a Pentium processzor ltal felismert
kivteleket.

Meghatrozs Vektor
szm
Visszatrsi
cm a hibra
mutat?
Kivtel
tpus
A kivtel forrsa
Oszts nullval 0 Igen Hiba DIV s IDIV
mvelet
Debug kivtel 1 *1 *1 Akrmilyen
kd vagy adat
hivatkozs
Trspont 3 Nem Trap INT 3 mvelet
Tlcsorduls 4 Nem Trap INTO mvelet
Hatrsrts 5 Igen Hiba BOUND
mvelet
rvnytelen op.
kd
6 Igen Hiba Fenntartott
mveleti kdok
264
Vdett zemmd kivtelek s megszaktsok
Eszkz nem
elrhet
7 Igen Hiba ESC s WAIT
mvelet
Dupla hiba 8 Igen Abort Brmi
rvnytelen TSS 10 Igen
2
Hiba JMP, CALL,
IRET mvelet,
megszaktsok
s kivtelek
Szegmens nincs
jelen
11 Igen
2
Hiba Akrmilyen
mvelet ami
szegmenst vlt
Verem hiba 12 Igen Hiba Verem mvelet
ltalnos
vdelmi hiba
13 Igen Hiba/
trap
3

Akrmilyen
kd vagy adat
hivatkozs
Laphiba 14 Igen Hiba Akrmilyen
kd vagy adat
hivatkozs
FPU hiba 16 Igen Hiba
4
ESC s WAIT
mvelet
Illeszkeds
ellenrzs
17 Igen Hiba Akrmilyen
adat hivatkozs
Gptpus
ellenrzs
18 - Modellfgg
Software
megszakts
0-255 Nem Trap INT n mvelet

3.75. bra: Kivtelek sszefoglalsa

Megjegyzsek:

1. A nyomkvet kivtelek trap-ek, vagy hibk lehetnek. Ez a kivtel a
DR6 regiszter tartalmt vizsglja meg ahhoz, hogy megklnbztesse
a trap-eket a hibktl.

2. A taszkkapcsolsok kzbeni jraindthatsg felttelhez kttt.

265
ltalnos CPU programozsi informcik
3. Minden ltalnos vdelmi hiba jraindthat. Ha a hiba a
kivtelkezel meghvsra tett ksrlet kzben jelentkezik, a
megszaktott program jraindthat, de a megszakts maga elveszhet.

4. A lebegpontos hibk nem lesznek jelentve, csak a hibt generl
ESC utastst kvet els ESC vagy WAIT utasts berkezsekor.


3.9.11. Hibakdok sszefoglalsa

A 3.75. bra sszesti minden egyes kivtelt kvet hiba
informcit.

Meghatrozs Vektor szm Hibakd van ?
Osztsi hiba 0 Nincs
Debug kivtel 1 Nincs
Trspont 3 Nincs
Tlcsorduls 4 Nincs
Hatrellenrzs 5 Nincs
rvnytelen op. kd 6 Nincs
Eszkz nem elrhet 7 Nincs
Dupla hiba 8 Van, mindg nulla
rvnytelen TSS 10 Van
Szegmens nincs jelen 11 Van
Verem hiba 12 Van
lt. vdelmi hiba 13 Van
Laphiba 14 Van, spec. formtum
FPU hiba 16 Nincs
Illeszkeds
ellenrzs
17 Van, mindg nulla
Modell ellenrzs 18 Modellfgg
Software
megszakts
0-255 Nincs

3.75. bra: Hibakdok sszefoglalsa

266
Rendszermenedzsel zemmd
3.10. Rendszermenedzsel zemmd

A rendszermenedzsel zemmd (SMM - System Management
Mode) segti a rendszerfejlesztket az olyan rendkvl magas szint
rendszerfunkcik kialaktsban, mint a fogyasztsmenedzsment vagy a
biztonsg, nemcsak az alkalmazi software, hanem maga az opercis
rendszer szmra is tltsz mdon.

Az SMM a vdett, vals, s 8086-os virtulis mdokkal
egyszinten lev, egyik f zemmd. Az SMM azonban gy volt tervezve,
hogy az alkalmazi software-ek s ltalnos cl opercis
rendszersoftware-ek nem, csak a firmware tudja hasznlni. A 3.76. bra
azt mutatja be, hogy ms zemmdokbl a processzor hogyan lphet be
az SMM zemmdba, illetve hogyan lphet ki abbl. A kls SMI# jel a
processzort arra knyszerti, hogy az tkapcsoljon az SMM zemmdba.
Az SMM zemmdbl az RSM utastssal lehet kilpni. Az SMI# jel
aktivlst egy hordozhat szmtgp esetben pldul a gp fedelnek
lecsuksa okozhatja.

Az SMM tltsz az alkalmazi programok s az opercis
rendszer szmra, mivel:

Az SMM zemmdba val belps egyetlen tja egy kls jel ltal
kivltott, nem maszkolhat megszakts.

A processzor egy klnll cmtartomnyban lev SMM kd
vgrehajtst kezdi meg, mely cmtartomny neve rendszer-
menedzsment-RAM (SMRAM).

Az SMM zemmdba val belpskor a processzor a megszaktott
program regiszter-llapott az SMRAM-nak egy SMM llapottrol
rekord nevezet rszbe menti.

A normlis esetben az opercis rendszer vagy az alkalmazsok ltal
kezelt minden megszakts az SMM zemmdba val belpskor
letiltdik.

267
ltalnos CPU programozsi informcik
Egy specilis RSM utasts az SMM llapot-rekordbl viszszalltja a
processzor regisztereinek llapott s a vezrlst visszaadja a
megszaktott programnak.

Az SMM abban hasonlt hasonlt a vals zemmdhoz, hogy
nincsenek privilgiumszintjei s nem vgez cmlekpzst. Egy SMM
program vgrehajthat I/O s ms rendszerutastsokat, s ngy GByte-
memrit cmezhet.


3.10.1. Az SMI megszakts

Amikor egy utastshatron az SMI# jelet felismeri, a processzor
elbb kivrja, hogy minden trolsi mvelet befejezdjn (a klsleg
fggben levket is ide rtve). Ezutn elmenti a regiszterek llapott az
SMRAM-ba s megkezdi az SMM kezel vgrehajtst.

Az SMI#-nek a debug kivtelek s kls megszaktsoknl
nagyobb prioritsa van. Ez azt jelenti, hogy ha az utastshatron e
kivtelek kzl tbb mint egy jelenik meg, akkor csak az SMI lesz
kiszolglva, a debug kivtel vagy kls megszakts nem.

Az jabb SMI# vagy NMI krseket az SMM-ben lev processzor
mr nem veszi figyelembe. A CR4 regiszter gpellenrzst engedlyez
bitje szintn trldik. Az SMM-ban megjelen SMI# s NMI
megszaktsok betltdnek ugyan, de csak akkor hajtdnak vgre, amikor
a processzor az RSM utasts ltal kilp az SMM-bl.

268
Rendszermenedzsel zemmd
RESET
RESET
Vals cmzsi md
PE=1 PE=0
Megszakts,
kivtel
Taszkvlts,
IRET
SMI
RSM
SMI
RSM
SMI
RSM
Vdett md
Virtulis 8086 md
Rendszer menedzsel
md


3.76. bra: Az zemmd-llapotok kzti tmenetek

Az SMM-ba val belpskor a kezelket ignyl kls
megszaktsok letiltdnak (az EFLAGS regiszter IF bitje trldik). Erre
azrt van szksg, mert az SMM-ban lev processzor egy kln
cmtartomnyt hasznl. Emiatt a megszakts deszkriptor-tblzatban
(IDT) trolt vektorok nem alkalmazhatak. A kivtelek engedlyezshez
az SMM program j megszakts/kivtel vektorokat kell felptsen. Az
SMM megszaktsvektor-tblzatnak formtuma megegyezik a vals
zemmdban hasznltval. Amg a megszaktsvektor-tblzatot helyesen
fel nem pti, addig az SMM kezelprogram nem generlhat kivteleket.
Kivtelek azonban mg letiltott megszaktsok esetn is keletkezhetnek.
A bels megszaktsok megjelenst csak a helyesen megrt software
elzheti meg. Az j kivtelvektorok belltsa utn a bels kivtelek
kiszolglhatk.
269
ltalnos CPU programozsi informcik
Ugyancsak az SMM-be val belpskor az lpsenknti
vgrehajts (az EFLAGS TF bitjnek rtke nulla) s cmtrspont (a
DR7 trlve van) kivtelek is trldnek. A processzor debug-
lehetsgeinek maga az SMM-ben val hibakeressre felhasznlsa
rdekben az SMM kezelnek elbb biztostania kell, hogy az IDT-be egy
megfelel, elrhet kezel legyen installlva, majd a debug regiszterekbe
illetve az EFLAGS-be be kell tltenie a megfelel rtkeket.


3.10.2. Az SMM kezdeti llapota

Miutn a processzor felismerte az SMI# jelet s elmentette a
regiszterek llapotait, sajt llapott a 3.77. brn bemutatott rtkekre
vltoztatja.

Regiszter Tartalom
EFLAG 2
EIP 8000h
CS szelektor 3000h, ez az rtk a 30000h bziscm
inicializl utastst adja
DS, ES, FS, GS, SS
szelektorok
0
DS, ES, FS, GS, SS
hatr
0FFFFFFFFh
DS, ES, FS, GS, SS
jellemzk
16 bites, felfel nvekv
CR0 0, 2, 3 s 31. bitek trlve (PE, EM, TS, PG)
CR4 0
CR6 Nem definilt
CR7 400h
GDTR, LDTR,
IDTR, TSSR
Nem definilt
Modell specifikus
regiszter
Nincs mdostva

3.77 bra: Az SMM kezdeti llapota

270
Rendszermenedzsel zemmd
Az adatcache-ek kirtsrt, az adat- valamint utastscache-ek
rvnytelentsrt s ezeknek az SMM alatti letiltsrt a kls hardware
felel.


3.10.2.1. Az SMM vgrehajtsa

Az SMM kezel vgrehajtst a processzor a CS szegmens 8000H
ofszetjtl kezdi. A kdszegmens bziscme kezdetben 30000H, ez a cm
azonban megvltoztathat.

Az SMM kezeljnek meghvsakor a processzor CR0
regiszternek PE (vdelem) s PG (lapozs) bitjei trldnek, gy a
processzor a vals zemmdhoz hasonl krnyezetbe kerl. Mivel a (CS-
tl klnbz) szegmens-bzis trldik s a szegmenshatrok
0FFFFFFFFH rtkre lltdnak, a cmtartomny egyetlen lapos, nem
szegmentlt, 4GB-os lineris tartomnyknt kezelhet, a processzor
azonban a cmeket a vals zemmdban hasznlttal megegyez mdon
generlja. Amikor a szegmensszelektorba egy 16 bites rtk tltdik, az
rtk 4 bittel balra toldik s betltdik a szegmens-bzisba. Az SMM-
ben egy szegmensregiszter betltse sorn a deszkriptor regiszterek rejtett
rszeiben a hatr mez s az attribtumok nem mdosulnak.

Az operandusmret s cmmret alaprtelmezse 16 bit, a 4
GByte-os logikai cmtartomnyban brhol, az adatok kzvetlen elrsre
hasznlhatk az operandusmret- s cmmret-fllr prefixek.

Az operandusmret-fllr prefixekkel egytt az SMM kezel a
vezrlsnek a ngy GByte-os cmtartomny brmelyik pontjra val
tadsra hasznlhat ugrsokat, hvsokat s visszatrseket.
Megjegyzendk azonban a kvetkez korltozsok:

Brmely vezrlstads, melynek nincs operandusmret-fllr
prefixe, az EIP regisztert annak als 16 bitjre csonktja.

A vals zemmdban hasznlthoz hasonl bziscm-kpzs miatt a
hossz ugrsok, hvsok, megszaktsok vagy kivtelek a vezrlst
271
ltalnos CPU programozsi informcik
nem adhatjk t egy 20 bitesnl nagyobb mret (azaz egy MByte-nl
nagyobb) bziscm szegmensre.

Egy kivtel vagy megszakts nem adhatja t a vezrlst egy 16
bitesnl (64 kByte-nl) nagyobb mret szegmensre.

Ha a kivtelek s megszaktsok engedlyezve vannak, akkor a
visszatrsi cmeknek csak az als 16 Byte-ja kerl a veremre. Ha a
megszaktott procedra ofszetje nagyobb, mint 64 kByte, akkor a
megszaktskezel, a vermen lev visszatrsi cmnek a software
ltali bizonyos mdostsa nlkl, nem tudja visszaadni a vezrlst az
illet procedrnak.


3.10.3. Az SMRAM processzor-llapot trol formtuma

Az SMRAM terlet llapottrol rekordjnak szerkezett a 3.78
bra mutatja be. A regiszterek fizikai helye ahhoz a CS-bzisba tlttt
rtkhez kpest relatvak, mely kezdetben 30000H, de megvltoztathat.
A regiszterek abszolt helye: (CSbzis + RegiszterOfszet).

Az FFA8H-FFFFH ofszeteken lev mezk az SMM# megszakts
pillanatban a processzor regiszter-llapott troljk. A fennmarad
biteket a kvetkez rszek mutatjk be.

Regiszter ofszet Regiszter
0FFFC CR0
0FFF8 CR3
0FFF4 EFLAG
0FFF0 EIP
0FFEC EDI
0FFE8 ESI
0FFE4 EBP
0FFE0 ESP
0FFDC EBX
0FFD8 EDX
0FFD4 ECX
272
Rendszermenedzsel zemmd
0FFD0 EAX
0FFCC DR6
0FFC8 DR7
0FFC4 TR*
0FFC0 LDTR*
0FFBC GS*
0FFB8 FS*
0FFB4 DS*
0FFB0 SS*
0FFAC CS*
0FFA8 ES
0FFA7-0FF04 Fenntartva
0FF02 Lells automatikus
jraindtsa
0FF00 I/O trap jraindtsa
0FEFC SMM reviziszm
0FEF8 llapot trol bzisa
0FEF7-0FE00 Fenntartva

3.78. bra: Az llapottrol formtuma

Megjegyzsek:

A FENNTARTOTT-knt bejellt terleteket az SMM kezel nem
hasznlhatja. E terletekre val rs a processzor hibs mkdst
eredmnyezheti. Az a software, amelyik ezeknek a terleteknek a
tartalmra alapoz, az elkvetkez processzor genercikkal
inkompatibilis lehet.

* A fels 2 Byte FENNTARTOTT.

A 3.78. brn megnevezett regiszterek lthatk, teht az SMM
kezel kiolvashatja rtkket az llapottrol rekordbl. Ezek kzl az
adatttelek kzl az SMM egyeseket megvltoztathat s a megvltozott
rtkk a processzor regisztereibe az RSM utastssal tlthet be. A 3.79.
bra bemutatja, hogy mely adatttelek vltoztathatk meg, s melyek
nem. A tblzat mg azt is megmutatja, hogy egyes regiszterrtkek az
273
ltalnos CPU programozsi informcik
llapottrolba mentdnek, azonban nem lthatk. E ttelek a fenntartott
rszeken troldnak, de helyk s formtumuk klnbz processzor-
verzik esetn ms s ms. A 3.79. bra utols sora azokat a regisztereket
mutatja, melyeket az SMI# s RSM nem trol illetve llt vissza
automatikusan. Ha az SMM kezel megvltoztatja ezeket a regisztereket,
akkor implicit mdon el is kell trolja, illetve vissza is kell lltsa ket.

llapot adat Mentett s
visszatlttt?
Olvashat? rhat?
EDI, ESI, ESP, EBX, EDX, ECS,
EAX, EFLAG, EIP
Igen Igen Igen
CR0, CR3, DR6, DR7, TR,
LDTR, GS, FS, DS, SS, CS, ES
Igen Igen Nem
CR1, CR2, CR4, A GDT
lthatatlan deskriptor regiszterei,
LDT, IDT, CS, DS, ES, FS, GS
Igen Nem Nem
DR0-DR7, FP regiszterek STn,
FCS, FSW, cmz sz, FP utasts
mutat, FP op. kd s operandus
mutat
Nem Nem Nem

3.79. bra: llapot-beoszts

3.10.3.1. Az SMM revzi-azonost (FEFCH ofszet)

A 32 bites SMM revzi-azonost megadja az SMM
verziszmt s a processzor ltal nyjtott lehetsgeket.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
SMM revizi szint Fenntartva, rtke 0
I/O trap kiterjeszts
SMM bzis relokci


3.80. bra: SMM revzi-azonost

274
Rendszermenedzsel zemmd
Az SMM revzi-azonost mezit a 3.81. bra mutatja. Az 1-re
lltott 16. vagy 17. bitek azt mutatjk, hogy a processzoron az illet
lehetsgek implementlva vannak.

Bitek Megjegyzs
0-15 Alap SMM verzi azonost
16 A processzor tmogatja az I/O trap jraindtst
17 A processzor tmogatja az SRAM thelyezst

3.81. bra: SMM revzi-azonost tblzat

Megjegyzs: Minden ms bit fenntartott.


3.10.3.2. I/O trap-jraindts (FF00H ofszet)

Az I/O trap-jraindt slot lehetv teszi az SMM szmra, hogy
az az RSM utastst egy megszaktott I/O utasts automatikus jra
trtn vgrehajtsra brja. Ha az RSM utasts vgrehajtsakor az I/O
trap-jraindt slot az FFH rtket tartalmazza, akkor a processzor az
SMI# ltal megszaktott I/O utastst automatikusan jra vgrehajtja. Ha
az RSM utasts vgrehajtsakor az I/O trap-jraindt slot a 00H rtket
tartalmazza, akkor a processzor az SMI# ltal akkor a processzor nem
hajtja vgre jra az I/O utastst. Az I/O trap-jraindt slot-ot az SMI#
feldolgozsakor a processzor automatikusan nullval inicializlja. Az
SMM kezel csak akkor kell az I/O trap-jraindt slotot a 0FFH rtkre
lltsa, amikor az SMI# egy I/O utastshatron szakad meg egy trap ltal.
Ha az RSM utasts vgrehajtsakor a processzor az I/O trap-jraindt
slotban a 0FFH rtket tallja, de a megszaktott utasts nem egy I/O
utasts, akkor a mvelet eredmnye kiszmthatatlan.
275
ltalnos CPU programozsi informcik
3.10.3.3. Felfggesztett llapotbl val automatikus
jraindts (FF02H ofszet)

Ha felfggesztett llapotban a processzor felismeri az SMI#-t,
akkor a processzor a felfggesztett llapotbl val automatikus jraindts
Byte-jt 1-re lltja, egybknt trli azt. Ha ez a mez 1, akkor az SMM
kezel megvltoztathatja rtkt annak rdekben, hogy ellenrizze a
processzornak a kezelbl az RSM utastssal val, a HLT utastst
folytat visszatrst. A lehetsgeket a 3.82. bra mutatja.

rtk a belpsnl rtk a kilpsanl CPU mkds a kilpsnl
0 0 Visszatr a megszaktott
program kvetkez utastsra
0 1 Kiszmthatatlan
1 0 Visszatr a HLT utni
utastsra
1 1 Visszats a megszaktott HLT
utastsra

3.82. bra: Felfggesztett llapotbl val automatikus jraindts


3.10.3.4. Az llapottrol bzisa (FEF8H ofszet)

A processzornak egy olyan lthatatlan bels regisztere van,
amelyik megadja az llapottrol rekord s az SMM kezel els
utastsnak fizikai bziscmt. Az SMRAM relokcijt tmogat
processzorok (a Pentium is ilyen) e regiszter tartalmt az SMI# jel
feldolgozsa alatt az llapottrol-bzisba mentik.

Az RSM utasts vgrehajtsakor a Pentium processzor
viszszatlti bels regisztereinek tartalmt az llapottrol-bzisbl. gy
lehetv vlik e regiszter tartalmnak megvltoztatsa. Az llapottrol-
bzis s a processzor bels, fenntartott regiszterben trolt kezdeti rtk
030000H.

276
Rendszermenedzsel zemmd
Ez a mr meglv SMM rendszerekkel val kompatibilits
rdekben van gy, melyeknl az alaprtelmezsben szerepl SMRAM
terlet minimlisan a 38000H cmnl kezdd 32 kByte-nyi rszknt van
definilva. Most, hogy az SMRAM helye vltoz lehet, az SMRAM
terlet egy minimlisan 32 kByte mret, az [8000H + SCbzis] cmen
kezdd terletknt van definilva.


3.10.4. Az SMRAM relokcija

Az SMM revzi-azonost megadja, hogy a processzor tmogatja
az SMRAM relokcijt vagy sem. Az SMRAM nem cache-elhet
cmekre val reloklsa megelzheti azt, hogy az SMI# feldolgozsa
megzavarja a cache tartalmt.

Az SMRAM-relokci megvalstsa az SMRAM llapot-
troljnak egy lokcija s egy lthatatlan bels regiszter
felhasznlsval trtnik. A 4 Byte-os llapottrol-bzis a processzor
ltal az SMM-be val belpskor felhasznlt lthatatlan bels
regiszternek felel meg. Az SMM llapottrol s az SMM kezel els
utastsnak helyt hatrozza meg.

Egy SMI# kiszolglsakor a processzor lthatatlan bels
regiszternek tartalma az llapottrol-bzis mezben lesz trolva. Egy
RSM utasts vgrehajtsakor a processzor a lthatatlan regisztert az
llapottrol-bzisbl tlti fel.

Az SMM kezel megvltoztathatja az llapottrol-bzis mez
rtkt az llapottrol rekordban. Ezutn, amikor jabb SMI#-k
generldnak, az SMM llapottrol s a kdszegmens-bzisok szmra
generlt lokcik szmra a processzor az j rtket hasznlja.

Megjegyzend, hogy az INIT vonal aktivlsa a bels
llapottrol-bzisregiszter tartalmt nem vltoztatja meg. Ugyancsak
megjegyzend, hogy amikor a processzor az j llapottrol-bzist
feltlti, a vltoztats nincs hatssal a CS szelektorra.
277
ltalnos CPU programozsi informcik
3.10.5. Visszatrs az SMM-bl

Az RSM utasts kilp az SMM-bl s visszaadja a vezrlst a
megszaktott programnak. Az RSM utasts csak az SMM-ben hajthat
vgre. Vgrehajtsra az SMM-en kvl tett ksrlet rvnytelen-opkd
kivtelt okoz.

Az RSM utasts vgrehajtsakor a processzor elzleg (az SMM-
be val belpskor) elmentett llapota visszalltdik s a vezrls
visszakerl a megszaktott programra. Ha a processzor egy rvnytelen
llapot-informcit detektl, akkor a lekapcsolt llapotba vlt t. Ez csak
a kvetkez esetekben trtnhet meg:

Az llapottrol bzis mezben trolt rtk nem egy 32 kByte-hoz
illesztett cm.

A CR4 regiszter egyik fenntartott bitjnek rtke 1.

A CR0 valamelyik bitkombincija illeglis, pontosabban (PG=1 s
PE=0) vagy (NW=1 s CD=0).

Lekapcsolt llapotban a processzor egy NMI megszakts
megjelensig vagy a reszetelsig megszaktja az utastsok vgrehajtst.
Hogy a lekapcsolt llapotba val belpst jelezze, a processzor egy
specilis buszciklust generl.

Ha az SMM kezel a rendszernek olyan llapott vltoztatta meg,
amelyet az RSM nem llt vissza (ilyenek pldul a lebegpontos
regiszterek), akkor azt az llapotot mg az RSM vgrehajtsa eltt vissza
kell lltsa.
278
8086-os virtulis zemmd
3.11. 8086-os virtulis zemmd

A Pentium processzor tmogatja egy vagy tbb 8086 vagy 8088
program vdett md krnyezetben val vgrehajtst. Ebben a
krnyezetben egy 8086 program egy 8086-os virtulis taszk rszeknt fut.
A 8086-os virtulis zemmd kihasznlja a vdett md ltal a
multitaszking szmra nyjtott tmogatst. A 8086-os programokat
futtat 8086-os virtulis taszkokbl nemcsak hogy tbb is lehet, hanem
ezek a Pentium processzor ms taszkjaival is multitaszkolhatk.

A 8086-os virtulis taszkok clja az, hogy a 8086 proceszszorra rt
program szmra egy "virtulis gp"-et emulljanak. Egy teljes virtulis
gp hardware-bl s rendszersoftware-bl ll. A 8086 processzor
emulcijt a software ltal felhasznlt hardware valstja meg, a
kvetkezkppen:

A hardware egy virtulis regiszterkszletet (a TSS-en keresztl),
virtulis memrit (a taszk lineris cmtartomnynak els MByte-
jt), s a megszaktsok virtulis tmogatst biztostja, ezenkvl
kzvetlenl vgrehajt minden olyan utastst, mely az elbbiekben
emltett regisztereket s cmtartomnyt hasznlja.

A software a virtulis gp kls interfszt (I/O, megszaktsok s
kivtelek) a tgabb krnyezettel (amelyben maga is fut) konzisztens
mdon vezrli. A software vlaszthat azon lehetsgek kztt, hogy a
I/O-t, a megszaktsokat s a kivtelkezelst maga emullja, vagy
ezeknek a software kzbelpse nlkli vgrehajtst a hardware-re
bzza.

A 8086-os virtulis gpeket tmogat software neve 8086-os
virtulis felgyelprogram. A Pentium processzor sajt 8086-os virtulis
mkdsi mdjnak olyan kiterjesztseit tartalmazza, melyek az
alkalmazsok teljestmnyt azltal nvelik meg, hogy kikszblik az
egyes mveletek emullsa miatt keletkez, a felgyelprogramnak
jelentett hibkat. A virtulis md kiterjesztsrl a Pentium processzoron
tbb informci a fggelkben tallhat.


279
ltalnos CPU programozsi informcik
3.11.1. 8086 CPU kd vgrehajtsa

A processzor akkor mkdik 8086-os virtulis zemmdban, ha
az EFLAGS regiszter VM (virtual machine) bitje 1-re van lltva. E flaget
a processzor kt alkalommal teszteli:

1. Egy szegmensregiszter feltltsekor annak kidertse rdekben, hogy
szksg van-e a 8086 stlus cmtalaktsra vagy sem.

2. Egy utasts dekdolsakor, annak meghatrozsa rdekben, hogy
mely utastsok rzkenyek az IOPL-re s hogy mely utastsokat
nem tmogat (a vals zemmdhoz hasonlan).


3.11.1.1. Regiszterek s utastsok

A 8086-os virtulis zemmdban rendelkezsre ll
regiszterkszlet magba foglalja a 8086 processzor sszes regisztert,
valamint a 8086 processzor utn bevezetett j regisztereket (FS s GS).
Olyan utastsok llnak rendelkezsre, melyek kzvetlenl a
szegmensregiszterekkel dolgoznak.

Az 10FFEFH feletti lineris cmek a V86 felgyelprogram, az
opercis rendszer, valamint a tbbi rendszersoftware rendelkezsre
llnak. A felgyelprogramnak is szksge lehet adatszegmens-
deszkriptorokra, mivel elemeznie kell a 8086 programnak a cmtartomny
els MByte-jban tallhat megszaktsvektor-tblzatt s ms rszeit.

A 8086 opercis rendszer implementlsra ltalban kt
vlasztsi lehetsg van:

1. A 8086 opercis rendszer a 8086 program rszeknt fut. Ez a
megkzelts a kvetkez esetekben elnys:

A 8086 alkalmazs kdja megvltoztatja az opercis rendszert.

Nincs elg id a a 8086 opercis rendszernek egy Pentium CPU
opercis rendszerknt trtn jraimplementlsra.
280
8086-os virtulis zemmd

2. A 8086 opercis rendszer a V86 felgyelprogramban van
implementlva vagy emullva. Ez a megkzelts a kvetkez
esetekben elnys:

Az opercis rendszer funkcii tbb 8086-os virtulis taszk kztt
knnyebben koordinlhatk.

A 8086 opercis rendszer funkcii Pentium CPU rendszerhvsokkal
knnyen emullhatk.

Megjegyzend, hogy a 8086 processzor opercis rendszernek
implementlsra vlasztott mdnak klnbz 8086 opercis
rendszerek felhasznlsa esetn klnbz 8086-os virtulis taszkjai
lesznek.


3.11.2.1. Lapozs a 8086-os virtulis taszkok esetben

Egyetlen 8086-os virtulis taszknak sincs szksge lapozsra, a
lapozs azonban hasznos vagy szksges lehet a kvetkez esetekben:

Tbb 8086-os virtulis taszk kpzse. Minden egyes taszk a lineris
cmek als MByte-jt ms s ms fizikai cmtartomnyra kell
lekpezze.

Az 1 MByte-nl jelentkez cmcsonkts emullsa. A 8086 csald
tagjai 1 MByte-nl nagyobb cmet is megadhatnak. Pldul egy
0FFFFH rtk szelektor s egy 0FFFFH rtk ofszet ltal
meghatrozott tnyleges cm rtke 10FFEFH (1 MByte plusz 65519
Byte). A 8086 processzor, mivel csak 20 bites cmeket tud kpezni,
levgja a legmagasabb bitet, teht 0FFFEH-ra csonktja ezt a cmet. A
Pentium processzor az ilyen cmeket nem csonktja. Ha a 8086
programok valamelyike fgg a cmcsonktstl, egy 8086-os virtulis
taszkban ugyanez a hats rhet el az 100000H s 110000H illetve a 0
s 100000H kzti lineris cmeknek ugyanarra a fizikai cmre trtn
lekpezsvel.

281
ltalnos CPU programozsi informcik
A fizikai cmtartomnynl nagyobb lineris cmtartomny kpzse.

Multitaszkingban fut tbb 8086 program szmra kzs 8086
opercis rendszer vagy ROM kd megosztsa.

Csapda llts a memriba lekpezett I/O eszkzknek, illetve ezek
tirnytsa.


3.11.2.2. Vdelem egy 8086-os virtulis taszkon bell

Egy 8086 program szegmensei kzt nem ktelez a vdelem. A
8086-os virtulis taszkban fut rendszersoftware-nek a 8086 alkalmazi
programmal szemben val vdelmre a software-tervezk a kvetkezket
kell figyelembe vegyk:

Minden egyes taszk lineris cmtartomnynak els MByte-jt (plusz
64 kByte-ot) a 8086 processzorra rt program szmra kell lefoglalni.
Egy 8086 processzortaszk nem generlhat e tartomnyon kvl es
cmeket.

A virtulis gp felgyelprogramjnak s a minden egyes 8086-os
virtulis taszk cmtartomnyban lev rendszersoftware vdelmre az
U/S bitet kell hasznlni. Ha a processzor 8086-os virtulis
zemmdban van, akkor a CPL rtke 3 (legkevsb privilegizlt);
ezrt egy 8086 processzorra rt programnak csak felhasznli
privilgiumai vannak. Ha a virtulis gp felgyelprogramja lapjainak
felgyeli privilgiumai vannak, akkor ezekhez a 8086 program nem
frhet hozz.


3.11.3. Belps a 8086-os virtulis zemmdba s az
abbl val kilps

A 3.83. bra sszefoglalja egy 8086 programba val belps s az
abbl val kilps mdozatait. A 8086-os virtulis zemmdba val
belps a VM flag 1-re lltsa ltal trtnik. Ez ktflekppen valsthat
meg:
282
8086-os virtulis zemmd

1. Egy taszkra val tkapcsols az j TSS-bl betlti az EFLAGS
regiszter kpt. Az j taszk TSS-e nem 16, hanem 32 bites kell
legyen, mivel a 16 bites TSS nem tlti fel az EFLAGS fels, a VM
flaget tartalmaz szavt. Az EFLAGS regiszter j tartalmban 1-re
lltott VM flag azt jelenti, hogy az j taszk 8086 utastsokat hajt
vgre, ezrt a szegmensregiszterek TSS-bl val feltltsekor a
processzor 8086 stlusban alaktja ki a bziscmet.

2. Egy taszk procedrjban tallhat IRET utasts feltlti az EFLAGS
regisztert a verembl. Az 1-re lltott VM flag azt jelenti, hogy a
procedra, amelyre a vezrls visszaaddik, egy 8086 procedra. Az
IRET utasts vgrehajtsakor a CPL rtke 0 kell legyen, ellenkez
esetben a processzor nem vltoztatja meg a VM llapott.

Belps az
inicializlsba
Taszkvlts
vagy IRET
8086 program
(V86 md)
Megszakts, kivtel
IRET
Taszkvlts
Taszkvlts
Egyb CPU taszk (vdett md)
V86 monitor
(vdett md)
Taszkvlts
Taszkvlts


3.83. bra: Belps a 8086-os virtulis zemmdba s az abbl val
kilps

A 8086-os virtulis zemmdba taszktkapcsolssal val belps
esetn a szegmensregiszterek a TSS-bl tltdnek fel, a VM flag
belltsra egy IRET utastst hasznlva fel, a szegmensregiszterek a
PL0 verem szegmensregisztereibl tltdnek fel (lsd a 3.84. brt).

283
ltalnos CPU programozsi informcik
Megszakts vagy kivtel fellpte esetn a processzor kilp a
8086-os virtulis zemmdbl. Ilyenkor kt eset lehetsges:

1. A megszakts vagy kivtel egy taszktkapcsolst okoz. Egy 8086-os
virtulis taszkrl brmilyen ms taszkra val tkapcsols esetn az
EFLAGS regiszter feltltdik az j taszk TSS-bl. Ha az j TSS 32
bites s az EFLAGS j tartalmnak VM flagje trlve van, vagy ha az
j TSS 16 bites, akkor a processzor trli az EFLAGS regiszter VM
flagjt, a vdett md cmalakot felhasznlva az j TSS-bl feltlti a
szegmensregisztereket, s vdett mdban megkezdi az j taszk
utastsnak vgrehajtst.

2. A megszakts vagy kivtel egy 0. privilgiumszint
(legprivilegizltabb) procedrt hv meg. A processzor trolja az
EFLAGS regiszter aktulis tartalmt, majd trli a VM flaget. A
megszakts- vagy kivtelkezel emiatt "natv" 32 bites vdett-md
kdknt fut. Ha a megszakts vagy kivtel egy hasonl szegmensben
vagy 0-tl klnbz privilgiumszint szegmensben lev procedrt
hv meg, akkor a processzor ltalnos vdelmi hibt generl, a
hibakd annak a kdszegmensnek a szelektora, melyre a hvs
vonatkozott.

Nem hasznlt
Rgi GS
Rgi FS
Rgi DS
Rgi ES
Rgi SS
Rgi ESP
Rgi EFLAG
Rgi CS
Rgi EIP j ESP
ESP a TSS-bl Nem hasznlt
Rgi GS
Rgi FS
Rgi DS
Rgi ES
Rgi SS
Rgi ESP
Rgi EFLAG
Rgi CS
Rgi EIP
j ESP
ESP a TSS-bl
Hibakd
Hibakddal Hibakd nlkl

284
8086-os virtulis zemmd
3.84. bra: A 0. privilgiumszint verem llapota 8086-os virtulis
mdban, a megszaktst kveten

A rendszersoftware- nem vltoztatja meg kzvetlenl a VM flag
llapott, ehelyett megvltoztatja a vermen vagy a TSS-ben trolt
EFLAGS kpnek egyes bitjeinek llapott. Amikor az els 8086-os
virtulis taszkot felpti, a 8086-os virtulis felgyelprogram az
EFLAGS-nek a vermen vagy a TSS-ben lev kpnek VM bitjt 1-re
lltja. A megszakts- s kivtelkezelk elemezhetik a vermen lev VM
flag llapott. Ha a megszaktott procedra 8086-os virtulis mdban
futott, akkor a kezelnek esetleg szksge lehet a 8086-os virtulis
felgyelprogram maghvsra.


3.11.3.1. Taszktkapcsolsok ltali tranzcik

Egy 8086-os virtulis taszkba illetve abbl val tkapcsolsnak az
oka a kvetkez hrom kzl az egyik:

1. Egy taszkkaput meghv megszakts.
2. A 32 bites opercis rendszer temezjnek egy akcija.
3. IRET utasts vgrehajtsa 1-re lltott NT flag esetn.

Az elbbi esetek brmelyikben a processzor az j TSS-ben lev
kpnek megfelelen megvltoztatja az EFLAGS regiszter VM flagjnek
llapott. Ha az j TSS 16 bites, akkor az EFLAGS regiszter fels szava
nincs a TSS-ben, ebben az esetben a processzor trli a VM flaget. A
processzor a VM flaget mg azeltt mdostja, hogy a
szegmensregisztereket az j TSS-bl feltlten. A VM flag j belltsa
meghatrozza azt, hogy a processzor az j szegmensregiszter-kpeket
8086, 80286 vagy 32 bites szelektorokknt rtelmezi.


3.11.3.2. tmenet trap- s megszaktskapukon
keresztl

A trap- s megszaktskapukat meghv kivtelek s
megszaktsok nyomn a processzor kilphet a 8086-os virtulis
285
ltalnos CPU programozsi informcik
zemmdbl. A kivtel vagy megszakts egy IRET utasts
vgrehajtsval tr vissza a 8086 programba.

A kivtelek s megszaktsok hromflekppen kezelhetk:

1. A 8086-os virtulis felgyelprogram ltal.

2. A 8086-os virtulis felgyelprogram tadhatja a vezrlst a 8086
program sajt megszaktskezeljre.

3. Egy vdett md megszaktskiszolgl rutin ltal.

Ha a megszaktst vagy kivtelt a felgyelprogram kell kezelje s
ha az EFLAGS vermen trolt kpben a VM flag 1-re van lltva, akkor a
megszaktskezel tadja a vezrlst a felgyelprogramnak. A
felgyelprogram az els kt mdszer egyikt hasznlja. Ha nincs
szksg arra, hogy a megszaktst vagy kivtelt a felgyelprogram
kezelje, akkor a 3-ra llthat IOPL lehetv teszi, hogy minden virtulis
md megszaktst a vdett md megszaktsrutin kezeljen.

Mivel egy 8086 program a 8086 processzoron val futtatsra volt
tervezve, ezrt ennek egy 8086-os virtulis taszkban 8086 stlus
megszaktsvektor-tblzata van, mely a 0 lineris cmen kezddik. Ezrt
a felgyelprogram kzbelpst s a vdett mdba val tkapcsolst
ignyl kivtelek s megszaktsok esetn a processzor ezt a tblzatot
nem hasznlja kzvetlenl, ehelyett a kezelket az IDT-n keresztl hvja
meg. 8086-os virtulis mdban egy megszakts vagy kivtel szmra az
IDT bejegyzse vagy-vagy alapon a kvetkezket kell tartalmazza:

Egy taszkkaput.

Egy 32 bites trapkaput (14-es deszkriptortpus) vagy egy 32 bites
megszaktskaput (15-es deszkriptortpus), mely egy nem megegyez,
0. privilgiumszint (legprivilegizltabb) kdszegmensre kell
mutasson.

A 32 bites trap- vagy megszaktskapukat hasznl megszaktsok
s kivtelek a 0. privilgiumszintet hasznljk. A szegmensregiszterek
286
8086-os virtulis zemmd
tartalma e privilgiumszint vermn lesznek trolva. Egy 8086 programot
futtat 8086-os virtulis taszk esetn a futs sorn bekvetkez kivtel
vagy megszakts utn a verem llapott a 3.84. bra szemllteti.

Miutn a processzor a 8086-os szegmensregisztereket elmenti a 0.
privilgiumszint vermre, a kezel procedra futtatsa eltt trli a
szegmensregisztereket. Ez lehetv teszi a megszaktskezel szmra,
hogy az biztonsgosan elmentse s visszalltsa a DS, ES, FS s GS
regiszterek tartalmt gy, mintha azok a Pentium CPU szelektorai
lennnek. A rendes taszkok vagy 8086-os virtulis taszkok ltal
meghvott megszaktskezelk a regiszterek elmentsre s
visszalltsra brmely taszk esetn ugyanazt a kdrszt hasznlhatjk. E
regisztereknek az IRET utasts vgrehajtsa eltti trlse nem okoz trap-
et a kivtelkezelben. A szegmensregiszterekben rtkeket vr vagy
visszaadni akar megszakts-kezelk a regisztereknek a 0.
privilgiumszint vermre mentett kpt kell hasznlniuk. Az olyan
megszaktskezelk, melyeknek tudniuk kell, hogy a megszakts 8086-os
virtulis mdban lpett fel vagy sem, megvizsglhatjk az EFLAGS
regiszter eltrolt tartalmnak VM flagjt.

Egy megszakts vagy kivtel visszakldse a 8086 programnak a
kvetkez lpsekbl ll:

1. A 8086 megszaktsvektor felhasznlsa a megfelel kezel
procedra helynek megllaptsra.

2. A 8086 program FLAGS, CS s IP rtkeinek trolsa a 3.
(legkevsb privilegizlt) privilgiumszint vermn.

3. A visszatrsi kapcsolat lecserlse a 0. privilgiumszint vermn gy,
hogy az a 3. privilgiumszinten lev kezel procedrra mutasson.

4. A vezrlsnek a kezelre val tadsa, egy IRET utasts
vgrehajtsval.

5. Amikor a 3. privilgiumszinten lev kezel IRET utastsa jbl
meghvja a 8086-os virtulis felgyelprogramot, a visszatrsi
kapcsolat visszalltsa a 0. privilgiumszint vermn gy, hogy az az
287
ltalnos CPU programozsi informcik
288
eredeti, megszaktott, 3. privilgiumszinten lev procedrra
mutasson.

6. A vezrlsnek a megszaktott procedrnak val visszaadsa, egy
IRET utasts vgrehajtsval.

Ha az IOPL 3-ra van lltva s a megszaktskapu DPL-je szintn
3-ra, akkor az INT n utastsok a megadott vektorszmmal egy trap ltal
megszakadnak. Az olyan megszaktsvektorok, melyeknek IDT kapuja 3-
ra van lltva, megvizsglhatjk az EFLAGS veremre mentett kpnek a
VM bitjt annak megllaptsa cljbl, hogy a megszaktst vissza kell-e
trteni a felgyelprogramhoz vagy t kell adni a 8086 program
megszaktskezeljnek.


3.11.4. rzkeny utastsok

Amikor a Pentium processzor 8086-os virtulis zemmdban
mkdik, a CLI, STI, PUSHF, POPF, INT n, s IRET utastsok
rzkenyek az IOPL-re. Az IOPL-re vdett zemmdban rzkeny IN,
INS, OUT s OUTS utastsok a 8086-os virtulis zemmdban nem
rzkenyek. A 8086-os virtulis mdban rzkeny utastsok teljes
felsorolsa a kvetkez:

CLI - Megszaktst engedlyez bit trlse
STI - Megszaktst engedlyez bit 1-re lltsa
PUSHF - Flagek veremre helyezse
POPF - Flagek leemelse a veremrl
INT n - Software-megszakts
IRET - Visszatrs megszaktsbl

8086-os virtulis mdban val futs alatt a CPL rtke mindig 3.
Ha az IOPL rtke kisebb mint 3, a fenti utastsok vgrehajtsra tett
prblkozs ltalnos vdelmi hibt okoz. Ezen utastsok az IOPL-re
azrt rzkenyek, hogy lehetsget adhassanak a 8086-os virtulis
felgyelprogramnak arra, hogy az a hatsukat emullhassa. Ezen
utastsok mkdst akkor, amikor a virtulis md kiterjesztse
mkdsben van, a fggelk trgyalja.
8086-os virtulis zemmd
289
3.11.5. Virtulis megszaktsok tmogatsa

Szmos, nem multitaszking rendszerekre rt 8086 program a
megszaktsok vezrlse rdekben az IF flaget lltja. Multitaszking
krnyezetben ez problmk forrsa lehet. Emiatt a 386 s 486
processzorokon fut felgyelprogramok a software-bl egy virtulis
megszaktsflaget lltnak. Az IF flaget llt minden utasts a
felgyelprogramra adja t a vezrlst, az ezeken a processzorokon val
emulci cljbl. A Pentium processzornak a virtulis megszaktsflag-
tmogatsrl tbb informci a fggelkben tallhat.


3.11.6. A 8086 opercis rendszerhvsok emulcija

Szmos 8086 opercis rendszerhvs a paramtereknek a veremre
val helyezse, majd egy INT n utasts vgrehajtsa ltal trtnik. Az
INT n utasts rzkeny az IOPL-re amiatt, hogy lehetv tegye az, hogy
a 8086-os virtulis felgyelprogram emullni tudja a 8086 opercis
rendszer funkciit, vagy a megszaktst visszakldhesse a 8086 opercis
rendszerhez.

Ha az IOPL<3, az INT n utastsokat a felgyelprogram fogja el.
Ha IOPL=3, akkor a megszaktsokat a vdett md megszaktskezel
rutin szolglja ki, a 486 processzorral kompatibilis mdon. A 386 s 486
processzorokon a 8086-os virtulis zemmdban vgrehajtott minden
INT n utastst a felgyelprogram kell elfogjon, amikor az IOPL<3. A
Pentium proceszszornak a megszaktskezelst tmogat virtulis md
kiterjesztsrl informcik a fggelkben tallhatk.

A 3.85. bra meghatrozza, hogy a 8086-os virtulis mdban az
IOPL rtkre alapozva a processzor milyen mveleteket fog vgezni.
ltalnos CPU programozsi informcik
290

IOPL Processzor mvelet
=3 Megszaktsa a V86 mdbl a vdett mdba
Trli a VM s a TF flaget
Ha a szolgltats megszakts kapun keresztl trtnik,
trli az IF flaget
PL0 rtkei lecserldnek a TSS rtkeire
Elmenti a GS, FS, DS s ES regisztereket a PL0 veremre
Nullra lltja a GS, FS, DS s ES regisztereket
Elmenti megszaktott taszk SS, EIP, EFLAG, CS s EIP
regisztereit a PL0 veremre
Belltja CS s EIP rtkeit a megszakits kapu alapjn
<3 ltalnos vdelmi kivtel

3. 85. bra: A software-megszakts mveletei


3.11.7. Virtulis I/O

Szmos, nem multitaszking rendszerekre rt 8086 program az I/O
portokhoz kzvetlen mdon fr hozz. Multitaszking krnyezetben ez
problmk forrsa lehet. Ha ugyanahhoz a porthoz tbb mint egy program
fr hozz, ezek megzavarhatjk egymst. Legtbb multitaszking rendszer
megkveteli azt, hogy az alkalmazi programok a portokat az opercis
rendszeren keresztl rjk el. Ez egyszerbb, kzpontostott vezrlst
eredmnyez.

Az I/O vdelmet a processzor olyan I/O-k ltrehozsval valstja
meg, melyek kompatibilisek a krnyezettel s tltszak a 8086
programok szmra. Az I/O portok vdelmt a tervezk a kvetkezkben
felsorolt, klnbz szempontok figyelembevtelvel valsthatjk meg:

Az I/O kzvetlen vgrehajtsra tett minden egyes ksrlet esetn meg
kell vdeni az I/O cmtartomnyt s kivteleket kell generlni.

A 8086 programot hagyni kell, hogy az I/O-t kzvetlenl vgezze el.

8086-os virtulis zemmd
291
Bizonyos I/O portok elrsre tett ksrletek esetn kivteleket kell
generlni.

Bizonyos, a memriba lekpezett I/O portok elrsre tett ksrletek
esetn kivteleket kell generlni.

Az I/O portokhoz val hozzfrst vezrl mdszer attl fgg,
hogy a hozzfrsek I/O-ra vagy a memriba vannak lekpezve.


3.11.7.1. I/O-ra lekpezett I/O

A bizonyos I/O cmek elrsre tett ksrletek esetn kivtelek
generlsra az I/O engedlyez bittrkp hasznlhat. Minden egyes
8086-os virtulis taszk I/O engedlyez bittrkpe meghatrozza, hogy az
adott taszk esetben mely I/O cmek generlnak kivteleket. Mivel
minden taszknak ms s ms I/O engedlyez bittrkpe lehet, klnbz
taszkok esetben a kivteleket generl I/O cmek klnbzhetnek. A
vdett mdtl ez abban klnbzik, hogy az IOPL-t senki nem vizsglja
meg.


3.11.7.2. Memriba lekpezett I/O

A memriba lekpezett I/O-t hasznl rendszerekben a
processzor lapozsi lehetsgei felhasznlhatk az I/O portokhoz val
hozzfrsi ksrletek esetn kivtelek generlsra. A 8086-os virtulis
felgyelprogram a memriba lekpezett I/O vezrlsre a lapozst a
kvetkezkppen hasznlhatja:

Az I/O mveletek vgrehajtst ignyl taszkok lineris
cmtartomnynak egy rszt az I/O portok ltal hasznlt fizikai
cmtartomnyra kpezi le. Az I/O portokat (klnbz lapokon)
klnbz cmekre tve, a lapoz mechanizmus megvalsthatja a
taszkok egymstl val elszigetelst.

A lineris cmtartomny egy rszt olyan lapokra kpezi le, melyek
nincsenek jelen. gy ahnyszor a taszk megksrli egy I/O mvelet
ltalnos CPU programozsi informcik
292
vgrehajtst ezeken a lapokon, egy kivtel generldik. A
rendszersoftware- ezutn majd rtelmezheti a megprblt I/O
mveletet.

Az I/O tartomny software-emulcija bizonyos krlmnyek
kzt az opercis rendszer rszrl tl sok kzbelpst ignyel. Ilyenkor
lehetsges az, hogy csak az els I/O hozzfrs megksrlse okozzon
kivtelt. A rendszersoftware- ezutn eldntheti, hogy az I/O vezrlsnek
kizrlagos joga igeiglenesen tadhat-e egy programnak vagy sem. Ha
igen, akkor az I/O vdelmt megsznteti s a program szmra lehetv
teszi, hogy az teljes sebessggel fusson.


3.11.7.3. Klnleges I/O pufferek

Az intelligens kontrollerek pufferei (pldul egy bittrkpes
keretpuffer) a lapok lekpezsvel szintn emullhatk. A puffer lineris
tartomnya minden egyes 8086-os virtulis taszk esetben ms s ms
fizikai tartomnyra kpezhet le. A 8086-os virtulis felgyelprogram
azt vezrli, hogy melyik virtulis puffert kell a fizikai cmtartomnyban
lev vals pufferbe msolni.


3.11.8. Klnbsgek a 8086 CPU-hoz kpest

8086-os virtulis zemmdban ltalban a 8086 s 8088
processzorokra rt programok futnak. A kvetkez felsorols bemutatja a
8086 processzor s a Pentium processzor valamint ms 32 bites
processzorok 8086-os virtulis zemmdja kzti kisebb eltrseket.

1. Az utastsok vgrehajtshoz szksges rajelek szma. A 32 bites
processzorokon legtbb utasts kevesebb rajel alatt hajtdik vgre,
mint a 8086 processzoron. A leginkbb befolysolt terletek a
kvetkezk:

Az I/O mveletek alkalmval az I/O eszkzk ltal ignyelt
ksleltetsek.

8086-os virtulis zemmd
293
A 8087 koprocesszorral prhuzamosan mkd 8086 processzor
esetben felttelezett ksleltetsek.

2. Az osztskivtelek a DIV utastsra mutatnak. A Pentium processzor
esetben az osztskivtelek mindig a hibt okoz utastsra mutat
CS:IP rtket mentik el. A 8086 processzornl a CS:IP a kvetkez
utastsra mutat.

3. Meghatrozatlan 8086 processzor-opkdok. A 8086 processzor
esetben nem definilt opkdok a Pentium processzoron vagy
rvnytelen-opkd kivtelt generlnak, vagy a Pentium szmra
definilt j utastsknt hajtdnak vgre.

4. A PUSH SP ltal a veremre helyezett rtk. A PUSH SP utasts
vgrehajtsakor a Pentium processzor ms adatot helyez a veremre,
mint a 8086. A Pentium processzor az SP-nek a cskkents eltti
rtkt helyezi a veremre, mg a 8086 a cskkents utni rtkt. Ha a
veremre helyezett adatra szksg van, akkor a PUSH SP utastst a
kvetkez hrom utastssal kell helyettesteni:

PUSH BP
MOV BP, SP
XCHG BP, [BP]

Ez a kd a Pentiumon gy mkdik, mint a PUSH SP a 8086
processzoron.

5. Lptets vagy forgats tbb mint 31 bittel. A Pentium processzor a
lptets s forgats szmllinak csak az als 5 bitjt veszi
figyelembe. Ez a szmll rtkt legtbb 31-re korltozza.

6. Redundns prefixek. A Pentium processzor az utastsok hosszt 15
Byte-ra korltozza. E hatr megsrtsre az egyetlen lehetsg az
utasts eltti redundns prefixek hasznlata. Az utastshossz-hatr
megsrtse esetn ltalnos vdelmi kivtel generldik. A 8086
processzor nem korltozza az utastsok hosszt.

ltalnos CPU programozsi informcik
294
7. A 0 vagy 65535 rtk ofszetet tlp operandus. A 8086
processzoron egy, a 65535 ofszetet (pldul a 65535 ofszetre egy szt
msol MOV) vagy 0 ofszetet (pldul egy sz kiemelse a verembl
egy PUSH ltal, amikor az SP regiszter rtke 1) tlp operandushoz
val hozzfrs esetn az ofszet modulo 65535 alapon megcsonkul. A
Pentium processzor ebben az esetben egy kivtelt generl, ltalnos
vdelmi kivtelt, ha a szegmens egy adatszegmens (azaz a szegmenset
a CS, DS, ES, FS, vagy GS regiszterek cmzik), vagy veremkivtelt,
ha a szegmens egy veremszegmens (melyet az SS regiszter cmez).

8. A 65535 ofszetet tlp sorozatos vgrehajts. A 8086 processzor
esetben, ha az utastsok sorozatos vgre hajtsa a 65535 ofszet
tlpse utn is folytatdik, akkor a processzor a kvetkez utastst
ugyanazon szegmens 0 ofszetjrl tlti be. A Pentium processzor
ebben az esetben ltalnos vdelmi kivtelt generl.

9. A LOCK hasznlata csak bizonyos utastsokra van korltozva. A
LOCK prefix s az ltala vezrelt jel kizrlag annak megelzsre
hasznlhat, hogy ms buszvezrlk az adattviteli mveletet
megszaktsk. A LOCK prefix csak a memrit mdost, kvetkez
Pentium utastsokkal hasznlhat. A LOCK brmilyen ms
utastssal (vagy az albbiakban felsoroltakkal abban az esetben, ha
azok nem a memrit mdostjk) val hasznlata rvnytelen-opkd
kivtelt eredmnyez.

Bitteszt s -vltoztats: a BTS, BTR s BTC utastsok.

Csere: az XCHG, XADD, CMPXCHG s CMPXCHG8B
utastsok (az XCHG esetben nincs szksg a LOCK prefixre).

Egyoperandus aritmetikai s logikai: INC, DEC, NOT s NEG
utastsok.

Ktoperandus aritmetikai s logikai: ADD, ADC, SUB, SBB,
AND, OR s XOR utastsok.

10. Lpsenknti vgrehajts kls megszaktskezelk. A Pentium
processzor lpsenknti vgrehajts kivteleinek prioritsa
8086-os virtulis zemmd
295
klnbzik a 8086 processzortl. Ez a vltoztats megelzi hogy a
kls megszaktskezel is lptetve legyen akkor, amikor a program
megszaktott. A Pentium processzor lpsenknti vgrehajts
kivtelnek minden ms kls megszaktsnl nagyobb prioritsa van.
Az NT utasts vagy egy kivtel ltal meghvott megszaktskezelt a
Pentium azonban mg mindig lpsenknt hajt vgre.

11. IDIV kivtelek a 80H s 8000H hnyadosok esetben. Az IDIV
utasts hnyadosaknt a Pentium kpes a legkisebb negatv szm
generlsra. A 8086 processzor ehelyett azonban osztshiba kivtelt
generl.

12. Flagek a veremben. Az EFLAGS regiszter PUSH utasts,
megszaktsok, vagy kivtelek ltal trolt tartalma a 8086
processzoron trolttl a 12.-tl 15.-ig terjed bitekben klnbzik. A
8086 processzoron ezek a bitek gy troldnak, mintha 1-re lettek
volna lltva, a Pentiumon azonban 8086-os virtulis mdban a 15. bit
rtke mindig 0 s a 12.-tl 14.-ig terjed bitekben mindig az utoljra
beljk tlttt rtk van.

13. Az NMI kezelt megszakt NMI. Miutn a Pentium processzor egy
NMI kivtelt elfogad, a kvetkez IRET utasts vgrehajtsig
maszkolja az NMI megszaktst.

14. A lebegpontos-hiba kivtelt hv lebegpontos hibk. A
lebegpontos-hiba kivtelek a Pentium processzoron meghvjk a
lebegpontos-hiba kivtel kezeljt. Ha a 8086 processzor a 8087
megszakts szmra ms kivtelt hasznl, akkor mindkt
kivtelvektor a lebegpontos-hiba kivtel kezeljre kell mutasson. A
Pentium processzornak olyan jelei vannak, melyek kls logika
hozzadsval tmogatjk a szmos szemlyi szmtgpen hasznlt
megszakts-kezel mechanizmus emulcijnak a felhasznl ltal
definilt hibajelentseit.

15. A numerikus kivtelek meg kell engedjk a prefixek hasznlatt. A
Pentium processzoron a lebegpontos kivtelek szmra lementett CS
s IP regiszterek az ESC utasts eltt esetleg jelenlev prefixekre
ltalnos CPU programozsi informcik
296
mutatnak. A 8086 processzoron az elmentett CS:IP az ESC utastsra
mutat.

16. A Lebegpontos Egysg (FPU) nem hasznlja a megszakts-
kontrollert. A Pentium processzornak kldtt lebegpontos hibajel
nem halad t a megszaktskontrolleren (A 8087 koprocesszor INT
jele viszont thalad). A koprocesszor-hiba kivtel kezeljbl egyes
utastsokat trlni kell, amennyiben azok a megszaktskezelt
hasznljk. A Pentium processzornak olyan jelei vannak, melyek
kls logika hozzadsval tmogatjk a szmos szemlyi
szmtgpen hasznlt megszaktskezel mechanizmus
emulcijnak a felhasznl ltal definilt hibajelentseit.

17. A busz tartsra adott vlasz. A 8086 s Intel286 processzoroktl
eltren a Pentium processzor vlaszol a buszvezrls tvevsre
irnyul, ms lehetsges buszvezrlktl (pldul DMA kontrollertl)
rkez krsekre egy olyan nem illeszked operandus rszeinek
tvitele esetn, mint pldul egy dupla szt kpez kt sz.

18. A 8086-os virtulis zemmdban a CPL rtke 3. A 8086 processzor
nem tmogatja a vdelmet, gy CPL-je sincs. A 8086-os virtulis md
egy 3 rtk CPL-t hasznl, mely megakadlyozza a privilegizlt
utastsok vgrehajtst. Ezek a kvetkezk:

LIDT utasts
LGDT utasts
LMSW utasts
A MOV utastsnak a vezrlregiszterek feltltsre s
elmentsre szolgl specilis alakjai.
CLTS utasts
HLT utasts
INVD utasts
WBINVD utasts
INVLPG utasts
RDMSR utasts
WRMSR utasts
RSM utasts

8086-os virtulis zemmd
297
A fenti utastsok a processzornak az inicializlst kvet vals
zemmdjban hajthatk vgre. Lehetv teszik a rendszer-
adatstruktrk (pldul a deszkriptortblzatok) inicializlst a
vdett mdba val belps eltt. Mivel a 8086-os virtulis
zemmdba csak vdett mdbl lehet belpni, ezek a struktrk a
belpskor mr inicializlva vannak.

19. A denormlt kivtel kezelse klnbzik. A kivtelkezels
klnbsgeinek rszletei a 23. fejezetben tallhatk.


3.11.9. Klnbsgek a 286 CPU-hoz kpest

A 8086-os virtulis zemmd s az Intel286 vals zemmdja
kzti klnbsgek az alkalmazsok s az opercis rendszer kzti
interfszre vannak hatssal. Az alkalmazs a 3. privilgiumszinten
(felhszanli mdban) fut, gy a vdett privilgium utastsok s
architekturlis lehetsgek hasznlatra tett minden ksrlet a 8086-os
virtulis felgyelprogramot fogja meghvni. A felgyelprogram elemzi
ezeket a hvsokat s emullja ket.


3.11.9.1. Privilgiumszint

A 8086-os virtulis mdban fut programok privilgiumszintje 3
(felhasznli md), mely megakadlyozza a privilegizlt utastsok
vgrehajtst. A privilegizlt utastsok a kvetkezk:

LIDT utasts
LGDT utasts
LMSW utasts
A MOV utastsnak a vezrl- s debugregiszterek feltltsre s
elmentsre szolgl specilis alakjai.
CLTS utasts
HLT utasts
INVD utasts
WBINVD utasts
INVLPG utasts
ltalnos CPU programozsi informcik
298
RDMSR utasts
WRMSR utasts
RSM utasts

A 8086-os virtulis mdba csak vdett mdbl lehet belpni, gy
ennek nincs szksge ezeknek az utastsoknak a vgrehajtsra. Mg a
8086-os virtulis zemmdban nem, addig vals zemmdban ezek az
utastsok vgrehajthatk.


3.11.9.2. A busz lezrsa

A 286 processzor a buszlezr funkcit a 386, 486 s Pentium
processzoroktl eltr mdon implementlja. Ez a tny a 8086 programok
szmra attl fggen lehet szrevehet vagy sem, hogy a 8086-os
virtulis felgyelprogram a LOCK prefixet hogyan kezeli. Az LOCK
prefix-szel elltott utastsok rzkenyek az IOPL-re, a software-tervezk
tetszs szerint emullhatjk ket. Ezrt ha a 8086 programoknak a LOCK
kzvetlen vgrehajtsa engedlyezve van, a memria lezrsnak a 8086
processzorra jellemz mdjt hasznl programok a Pentium s ms 32
bites processzorokon lehet, hogy nem fognak megfelelen futni.

A LOCK prefix s az ltala vezrelt buszjel kizrlag annak
megelzsre hasznlhat, hogy ms buszvezrlk az adattviteli
mveletet megszaktsk. A LOCK prefix csak a memrit mdost,
kvetkez Pentium utastsokkal hasznlhat. A LOCK brmilyen ms
utastssal (vagy az albbiakban felsoroltakkal abban az esetben, ha azok
nem a memrit mdostjk, pldul ha a cloperandus egy regiszter) val
hasznlata rvnytelen-opkd kivtelt eredmnyez.

Bitteszt s -vltoztats: a BTS, BTR s BTC utastsok.

Csere: az XCHG, XADD, CMPXCHG s CMPXCHG8B
utastsok (az XCHG esetben nincs szksg a LOCK prefixre).

Egyoperandus aritmetikai s logikai: INC, DEC, NOT s NEG
utastsok.

8086-os virtulis zemmd
299
Ktoperandus aritmetikai s logikai: ADD, ADC, SUB, SBB,
AND, OR s XOR utastsok.

A lezrt utastsok garantltan csak a cloperandus ltal megadott
memriarszt zrjk le, egyes esetekben azonban nagyobb rszeket is
lezrhatnak.

A 8086 s 286 processzoroktl eltren a Pentium processzor
vlaszol a buszvezrls tvevsre irnyul, ms lehetsges
buszvezrlktl (pldul DMA kontrollertl) rkez krsekre egy olyan
nem illeszked operandus rszeinek tvitele esetn, mint pldul egy
dupla szt kpez kt sz.


3.11.10. Klnbsgek a 386 s 486 CPU-hoz kpest

A vals zemmd az Intel386, Intel486 s Pentium
processzorokon ugyangy viselkedik. Amikor a virtulis md
kiterjeszts le van tiltva (a CR4 VME bitjnek rtke 0), akkor a Pentium
processzor 8086-os virtulis zemmdjnak viselkedse a 386 s 486
processzorokvel megegyez. A virtulis md kiterjeszts
engedlyezsvel (a CR4 VME bitjnek rtke 1) a Pentium processzor
8086-os virtulis zemmdjnak teljestmnye jelents mrtkben megn.
E kiterjesztsekkel kapcsolatos informcik a fggelkben tallhatk. A
maximlis teljestmny elrse rdekben a Pentium processzorra portlt
programok engedlyezett cache-el kell fussanak.

ltalnos CPU programozsi informcik
300
bra- s pldajegyzk

1.1. bra: A Pentium processzor blokkvzlata.............................. 12
1.2. bra: Az INTEGER egysg.................................................... 13
1.3. bra: A PIPELINE-ok bels felptsnek blokkvzlata ....... 14
1.4. bra: Cache-vonal llapotai a MESI protokoll szerint ........... 16
1.5. bra: Az FPU pipeline-ja........................................................ 19
1.6. bra: Cache kezelsi modellek............................................... 20
1.7. bra: DRAM iddiagramok.................................................... 21
1.8. bra: Az M1- es s a Pentium processzorok pipelinejainak
sszehasonltsa ........................................................... 24
1.9. bra: Az M1-es definilatlan CACHE-e brmilyen
arnyban tartalmazhat adatot s utastst. Az
utastsvonal CACHE pedig az INTEGER egysg
ltal leginkbb hasznlt utastsokat trolja................. 27
1.10. bra: Az M1-es processzor szuperpipeline-okbl
felptett INTEGER egysge........................................ 29
1.11. bra: Kiugrs a vgrehajtsi sorrendbl. Az M1-es
processzorban az egyik pipeline vgrehajtsi
sorban lv utastsnak nem kell megvrnia a
msik pipeline lassbb utastst. Kiugorva a
vgrehajtsi sorbl, idt lehet megtakartani a
vrehajts sor................................................................ 30
1.12. bra: Nx586 alap IBM PC kompatibilis szmtgp
felptse NxVL vagy NxPCI rendszerinterface chip
felhasznlsval. A matematikai processzor kln
tokban helyezkedik el, mg a msodszint cache
vezrlje a processzorlapkn kapott helyet.................. 32
1.13. bra: A NexGen szabadalmaztatott RISC86-os
architektrja dinamikusan fordtja az sszetett
X86-os (CISC) utastsokatRISC86-os utastsokk,
gy teht kihasznlhatja a RISC utastsok sebessgi
elnyeit. ........................................................................ 34
3.1. bra: Szegmentlt cmzs....................................................... 64
3.2. bra: Alkalmazsok szmra elrhet regiszterkszlet .......... 66
3.3. bra: Szegmentlt memria.................................................... 68
3.4. bra: A verem mkdse........................................................ 71
3.5. bra: Az EFLAGS regiszter ................................................... 72
bra- s pldajegyzk
301
3.6. bra: llapotbitek................................................................... 73
3.7. bra: A vezrl regiszterek felptse .................................... 78
3.8. bra: Nyomkvet regiszterek ............................................... 83
3.9. bra: Az EDX regiszter tartalma reszetels utn.................... 87
3.10. bra: A CR0 regiszter tartalma reszetels utn .................... 88
3.11. bra: A processzor llapota a reszetelst kveten.............. 90
3.12. bra: A processzor llapota a reszetet kveten .................. 100
3.13. bra: Az algoritmus s a forrsszveg ezzel kapcsolatos
sorainak szma ............................................................. 101
3.14. bra: A BLD s az ASM forrsllomny kzti
sszefggs .................................................................. 104
3-1 plda: STARTUP.ASM.......................................................... 104
3-2 plda: MAIN.ASM................................................................. 113
3.15. bra: A TEMP_GDT ltrehozsa s a vdett mdba val
tkapcsols (a forrsszveg 162-172 sorai) ................. 115
3.16. bra: A GDT, IDT s TSS ROM-bl RAM-ba msolsa
(a forrsszveg 196-261 sorai)..................................... 115
3.17. bra: tkapcsols a taszkra (a forrsszveg 282 296
sorai)............................................................................. 116
3-3 plda: Az alkalmazs lefordtsra s felptsre szolgl
parancskteg-llomny ................................................ 117
3-4 plda: Build-llomny............................................................. 117
3.18. bra: Cmek lefordtsa ........................................................ 120
3.19. bra: Kivtelek s megszaktsok ........................................ 123
3.20. bra: Memria kezel regiszterek........................................ 125
3.21. bra: Sk modell ................................................................... 132
3.22. bra: Vdett sk modell ........................................................ 134
3.23. bra: Multiszegmens modell ................................................ 135
3.24. bra: TI BIT - A deszkriptor tbla kivlasztsa ................... 137
3.25. bra: Szegmens fordts ....................................................... 138
3.26. bra: Szegmens regiszterek.................................................. 139
3.27. bra: Szegmens szelektor ..................................................... 140
3.28. bra: Szegmens deszkriptorok.............................................. 142
3.29. bra: Alkalmazsi szegmens tpusok ................................... 145
3.30. bra: Szegmens deszkriptor (a szegmens nincs jelen) ......... 148
3.31. bra: Deszkriptor tblzatok ................................................ 149
3.32. bra: Pszeud deszkriptor formtum.................................... 150
3.33. bra: A lineris cm formtuma............................................ 152
ltalnos CPU programozsi informcik
302
3.34. bra: Lapfordts .................................................................. 153
3.35. bra: A lapcmtr formtuma s a laptblzatok elemei a
4K-s lapokhoz. ............................................................. 154
3.36. bra: Laptblzat bejegyzs formtuma nem jelenlv
lapoknl ........................................................................ 155
3.37. bra: Kombinlt szegmens- s lapcm fordts .................... 160
3.38. bra: minden egyes szegmensnek biztostani kell sajt
laptblzatot ................................................................. 161
3.40. bra: Rendszer szegmens- s kapu tpusok .......................... 164
3.39. bra: Vdett mdban hasznlt deszkriptor mezk ............... 166
3.41. bra: Vdelmi gyrk........................................................... 171
3.42. bra: Privilgium ellenrzs adathozzfrseknl ............... 172
3.43. bra: Privilgium ellenrzs taszkkapu nlkli
vezrlstadsoknl...................................................... 175
3.44. bra: Call kapu ..................................................................... 177
3.45. bra: A call kapu mechanizmusa.......................................... 178
3.46. bra: Privilgium ellenrzs call kapuval trtn
vezrlstadsnl.......................................................... 180
3.47. bra: Kezdeti stack pointerek egy TSS-ben ......................... 182
3.48. bra: Stack keret szintek kztti hvs alatt ......................... 184
3.49. bra: Szintek kztti visszatrs ellenrzs ......................... 187
3.50. bra: rvnyes deszzkriptor tpusok LSL mveletekhez..... 191
3.51. bra: Egy laptblzat bejegyzs vdelmi mezi................... 195
3.52. bra: Kombinlt lapcmtr s laptblzat vdelem.............. 198
3.53. bra: 32 bites taszk llapot szegmens................................... 203
3.54. bra: TSS Deszkriptor .......................................................... 204
3.55. bra: Taszk regiszter ............................................................ 207
3.56. bra: Taszk kapudeszkriptor ................................................ 208
3.57. bra: Taszkokra jellemz taszk kapuk ................................. 209
3.58. bra: Taszkvlts alatti ellenrzs........................................ 213
3.59. bra: Begyazott taszkok...................................................... 215
3.60. bra: A taszkvltsok hatsa a Busy, NT s LINK
mezkre ........................................................................ 216
3.61 bra: Lineris tfeds a fizikai memriban ......................... 221
3.62. bra: Kivtelek s megszaktsvektorok.............................. 224
3.63. bra: Kivtelek s megszaktsok egyms kztti
prioritsa....................................................................... 229
bra- s pldajegyzk
303
3.64. bra: IDT lokalizlsa a memriban az IDTR
segtsgvel .................................................................. 230
3.65. bra: IDT kapudeszkriptor ................................................... 232
3.66. bra: Megszakts procedura hvs ...................................... 234
3.67. bra: Verem keret egy megszakts vagy kivtel utn......... 235
3.68. bra: Megszakts taszkkapcsols........................................ 238
3.69. bra: Hibakd....................................................................... 240
3.70. bra: Megszakts s kivtel osztlyok ................................ 244
3.71. bra: Dupla hiba viszonyok.................................................. 245
3.72. bra: rvnytelen TSS llapotok.......................................... 247
3.73. bra: Laphiba hibakdok...................................................... 253
3.74. bra: Adattpusok ltal ignyelt illeszkedsi felttelek........ 260
3.75. bra: Kivtelek sszefoglalsa ............................................. 262
3.75. bra: Hibakdok sszefoglalsa........................................... 263
3.76. bra: Az zemmd-llapotok kzti tmenetek..................... 266
3.77 bra: Az SMM kezdeti llapota............................................. 267
3.78. bra: Az llapottrol formtuma ........................................ 270
3.79. bra: llapot-beoszts.......................................................... 271
3.80. bra: SMM revzi-azonost............................................... 271
3.81. bra: SMM revzi-azonost tblzat ................................. 272
3.82. bra: Felfggesztett llapotbl val automatikus
jraindts..................................................................... 273
3.83. bra: Belps a 8086-os virtulis zemmdba s az abbl
val kilps................................................................... 280
3.84. bra: A 0. privilgiumszint verem llapota 8086-os
virtulis mdban, a megszaktst kveten.................. 281
3. 85. bra: A software-megszakts mveletei ............................ 287
ltalnos CPU programozsi informcik
304
Elzetes a msodik ktet tartalmbl


Cmzsmdok - amit, s amivel cmezhetnk

FPU - felpts, szerkezet
- veremkezels
- mkds, kivtelek
- adatformtumok, pontossg
- prhuzamos kezels

Optimalizci - hogy a programjaink jobbak legyenek

I/O kezels - portkezelsi lehetsgek

Trace, debug - a hibk feldertse

Lehetsgek - az tdik genercis processzorok ltal nyjtott
tovbbi lehetsgek

Utastskszlet - A Pentium processzor teljes utastskszlete

Fggelkek - A P54 Pentium processzor rszletesebb blokkvzlata
s egyb adatai
- A PowerPC 601, 603, 604 processzorok
blokkvzlatai, s egyb adataik






Products mentioned in this book are mentioned for
identification purposes only. Product names appearing in
this book may or may not be registered trade marks or
copyrights of their respective companies.

You might also like