Mirıl lesz szó?
Architektúra, címzési módok
Címzés fogalma, címzési módok
Virtuális tárkezelés
Példa: Intel
Koschek Vilmos
[email protected] Koschek Vilmos
Címzés
Címértelmezés
Fogalom A címzési mód az az út (algoritmus), ahogyan az operandus címét meghatározzuk.
Adat
Címmegadás
Címértelmezés
Címmódosítás
???? Koschek Vilmos
Címzés
3
Közvetlen (immediate) adatmegadás MK
Közvetlen adatmegadás Rejtett címzés
Cím
MK
2
Közvetlen címzés Közvetett címzés
Valós/ virtuális (késıbb !) Koschek Vilmos
Címzés
4
Rejtett (inherent), vagy implicit címzés
ADAT
MK
ADAT MOV AL, 28H 0xB0
Címzés
0x28
Koschek Vilmos
CLI, STI, IRET -> IF ! 5
Címzés
Koschek Vilmos
6
1
Közvetett (indirekt) címzés
Közvetlen (direkt) címzés MK
CÍM
MK
MOV AL, [106] 33
AL = 0x33
Koschek Vilmos
Címzés
113 112 111 110 109 108 107 106 105 104 103 102 101 100
CÍM Indirekció
SI
106
MOV AL, [SI]
33
AL=0x33 Többszörös is lehet ! 7
Koschek Vilmos
Címzés
MK
Abszolút
Rövidített (relatív)
Lapcímes Bázisregiszteres
Koschek Vilmos
9
Rövidített MK
Cím
+
13 Cím
Bázis
Címezhetı tár Méret Sebesség
113 112 111 110 109 108 107 106 105 104 103 102 101 100
Lapcímes
Címezhetı tár
Méret Sebesség
Koschek Vilmos
Lapcímes MK
. . .
255 256 257
+
Lapcím
258 . . .
Címzés
510 511 512 513
2 2.lap
Lapcímes:
11
0 1
0.lap
1.lap
Relatív
Koschek Vilmos
10
Lapon belüli cím 254
Címzés
113 112 111 110 109 108 107 106 105 104 103 102 101 100
Címzés
CÍM
Címzés
8
Abszolút
Címmegadás
113 112 111 110 109 108 107 106 105 104 103 102 101 100
Lapon belüli cím
Lap Lapcím Eltolás, elıjel nélküli PC, 0,
3.lap
Koschek Vilmos
. . .
13
766 767 768 769 . . . 12
2
Relatív MK
Eltolás
113 112 111 110 109 108 107 106 105 104 103 102 101 100
4
13
+ Eltolás
Bázis
102
Címmódosítás Indexelés: egymás utáni, azonos típusú adatok (tömb) címzésére szolgál. MOV AL, CIM [SI]
Automatikus módosítása:
Relatív:
Autoinkrementálás / autodekrementálása Címzés elıtt (pre) /után (post)
Bázis: PC, Bázis reg, Stack Elıjeles
Koschek Vilmos
Címzés
13
Koschek Vilmos
Címzés
Valós cím meghatározásának tervezési tere
14
Intel (16/32) processzorok
Címzés Címmegadás
Abszolút
Címmódosítás
Relatív
Rbi bázis
Indexelés Egyszeres
Automatikus változtatás
Programozható regiszterek
Utasításforma
Címzési lehetıségek
Többszörös
PC bázis TOS bázis
Yi bázis
Növelés
Yabs RBi Pre +1 Y= PC + D + Rbk + Rxj Post -1 TOS Yi
Előtte -pre
Utána -post
Csökkentés
Előtte
Koschek Vilmos
Címzés
Utána
15
Programozó által használható regiszterek.
31
Szegmens regiszterek
Státus és vezérlı regiszterek
16
15
8
7
AH DH CH BH
Általános regiszterek
16
Általános regiszterek
Programozható regiszterek
Koschek Vilmos
Címzés
0
AL DL CL BL
AX
EAX
DX
EDX
CX
ECX
BX
EBX EDI
DI SI
ESI
SP BP Címzés
Koschek Vilmos
17
Címzés
Koschek Vilmos
ESP 16 bites
EBP 18
3
Szegmens regiszterek
Státusz és vezérlı regiszterek 31
15
16
0
SS DS ES FS GS CS
3. adat
0. adat
19
53 18
0 01000111
71
00110101 01010011
53 83
0 10001000
136
20
Carry flag 00110101 11101110
+
S
Z
C
O
0
0
0
0
1
0
0
1
11001011 10101101
-53 -83
0
0
1
1
1 01111000
-136
0
1
1
0
+
11101110 00010010
-18 18
1
00000000
0
+
EFLAGS
Koschek Vilmos
Címzés
Sign, zero, carry, overflow 00110101 00010010
16 bites
• OF: túlcsordulás • SF: előjel • ZF: zéró • AF: félátvitel • PF: paritás (páratlan egészít ki) ITTTTT! • CF: átvitel • DF: irány • AC: illeszkedés ellenőrzés • VM: 1, virtuális 8086 • IF: megszakítás maszkolás • TF: 1, utasítás után kivétel
1. adat
Koschek Vilmos
EIP
Példák flagekre:
2. adat
Címzés
+
0
IP FLAGS
Kód
+
15
Stack
1 00100011
JB címke : jump if bellow JNAE címke: jump if not above or equal JC címke Kisebb vagy nem nagyobb - egyenlı
33
00110101 10101101
+
Elıjel nélküli mőveletek eredményének vizsgálata
53 -18
53 -83
0 11100010
JNB címke : jump if not bellow JAE címke: jump if above or equal JNC címke Nem kisebb vagy nagyobb - egyenlı
136
Pethı Ádám Assembly alapismeretek Pethı Ádám: Variációk assembly-re
Koschek Vilmos
Címzés
21
Koschek Vilmos
Címzés
Utasításforma
16 bites 1.
22
2.
4.
3.
5.
6.
16 bites MK (6) D(1)
W(1)
32 bites
MOD (2) REG (3) R/M (3) L cím / L adat H cím / H adat L adat H adat
Címzés
Koschek Vilmos
23
Címzés
Koschek Vilmos
24
4
Címzési mód bájt Lehetséges átvitel R -> M R <- M R -> R M -> M
D
D=0 : regiszterből D=1 : regiszterbe
REG
Címzési mód bájt értékei
0
R
MOD R/M M
Irány
1
R
M
0
R MOV AX, R BX ? R->R
1
R
R
R->M R<-M
R->R
OP1: REG : regiszter OP2: MOD-R/M: regiszter/memória
W=1 W= 0
000
AX
AL
000
bx+si
001
CX
CL
001
bx+di
010
DX
DL
010
bp+si
011
BX
BL
011
100
SP
AH
100
101
BP
CH
110
SI
111
DI
25
10
11 (W!)
bx+si+D
bx+si+D
AL/AX
bx+di+D
bx+di+D
CL/CX
bp+si+D
bp+si+D
DL/DX
bp+di
bp+di+D
bp+di+D
BL/BX
si
si+D
si+D
AH/SP
101
di
di+D
di+D
CH/BP
DH
110
d.cím
bp+D
bp+D
DH/SI
BH
111
bx
bx+D
bx+D
BH/DI
1 2 4 8
Címzés
*
+
EAX EBX ECX EDX EBP ESI EDI ESP
+
27
Lehetséges másik szegmens
Eltolás
R/M
Regiszterbe (AX)
1
11
000
011 26
Védett mód
22
33
44
44
33
22
11
00
44
44
44
44
44
EIP
Stack művelet
SS
nincs
ESP
DS
CS,ES,SS,FS,GS
Effektív cím
DS
CS,ES,SS,FS,GS
ESI
ES
nincs
EDI
SS
CS,ES,SS,FS,GS
Effektív cím
28
MOV SI, CIM1 MOV DI,CIM2 MOVSB
INC ECX MOV EAX, 112233H ADD CÍM, AL MOV [SI], 7 SUB [BX]CÍM, AH MOV CÍM[EDI], 25 ADD [EBX]CÍM[ESI], AL
-> [DS:SI] –> [ES:DI]
I/O port címzése
29
Fizikai cím (20)
Regiszteres címzés: Bennfoglalt (közvetlen adat): Direkt memória: Regiszter indirekt: Bázis címzés: Indexelt címzés: Bázis indexelt címzés: String címzés:
BP, mint bázisregiszter
Szegmens (16)
Koschek Vilmos
String cél
Eltolás (16)
Még néhány példa…
nincs
Koschek Vilmos
000
11
Címzés
CS
Címzés
011
Később…
Utasítás lehívás
String forrás
11
Valós mód
Logikai cím számításának forrásai
Változók (kivéve a következőket)
REG
0
Címzési lehetıségek
Koschek Vilmos
Memória hivatkozás Szegmens típusok bázis
D MOD
Koschek Vilmos
MK: 1-2 bájt Adat: 4 bájt Cím: 4 bájt SIB bájt: Scale, Index, Base EAX EBX ECX EDX EBP ESI EDI
01
Regiszterből (BX)
Címzés
32 bites
00
R/M
MOV AX, BX ? Koschek Vilmos
Címzés
MOD
RE G
Címzés
Direkt: Indirekt:
OUT 30, AL IN AX, DX Koschek Vilmos
30
5
Fogalom
Virtuális tárkezelés
Címtér
Fogalom
Lapcímzés
Szegmentálás
Példa: Intel
Transzformáció
Logikai (virtuális)
Amit a programozó lát
Fizikai (valós)
Ami a számítógépben van
Virtuális tártechnika
Idáig erről volt szó! Címzés
Koschek Vilmos
31
Címzés
Lapcímzés, mőködés Virtuális címtér
Lap – azonos méret !
P00
P1 P030
0
1
P01
P1 P021
1
P112 P0
2
P10
3
P02
3
P10
4
P11
5
P12
6
P13
7
Címzés
Transzformáció
1. 2.
3. 4.
5.
6.
HDD P10 P11 P12 P13
P00 P01 P02
Koschek Vilmos
P00 P01
7.
P02
33
32
Win7….
Valós címtér, OPT
0
2
Koschek Vilmos
Kattintson ide a Rendszer párbeszédpanel megnyitásához. A bal oldali ablaktáblán kattintson a Speciális rendszerbeállítások elemre. Amennyiben a rendszer rendszergazdai jelszót vagy megerısítést kér, írja be a jelszót vagy adjon megerısítést A Speciális lap Teljesítmény területén kattintson a Beállítások gombra. Kattintson a Haladó fülre, majd a Virtuális memória területen kattintson a Módosítás gombra. Törölje A lapozófájl méretének automatikus kezelése az összes meghajtón jelölınégyzetet. A Meghajtó [Kötetcímke] kattintson arra a meghajtóra, amely a módosítani kívánt lapozófájlt tartalmazza. Kattintson az Egyéni méret gombra, írja be az új méret értékét megabájt mértékegységben a Kezdeti méret (MB) vagy a Maximális méret (MB) mezıbe, kattintson a Beállítás gombra, majd kattintson az OK gombra.
Címzés
Koschek Vilmos
34
Kérdések
Win7…
• Lap mérete ? • Transzformáció ? • Hozzáférési idő ? • Melyik lapot dobjam el ?
Címzés
Koschek Vilmos
35
Címzés
Koschek Vilmos
36
6
Lapméret ITTTTTT
?
1
2
3
• Fizikai lapcím • Használták ? •W? • Jogosultságok • Érvényes?
12 bit
7 bit 18. P.
Q 6 Q
Logikai lap: n, 4096, 12 bit Fizikai lap: 128, 7 bit Lapméret: 4096, 12 bit Lapbejegyzés: 3 bájt 4096*4096 = 16MBájt 128*4096 = 0,5MBájt
Koschek Vilmos
1
Cím vezetékek
0
0
38
0
0
1
0
0
0
0
0
1
Találat jelző 0
0 0
összehasonlító áramkör
Memória felhasználásának hatékonysága?
1
0
10 alkalmazás: 10 * 4096 * 3 = 120KBájt 128 * 3 = 384Bájt
0
0
1 1
összehasonlító áramkör 0
0
0
4 x 4 bit Kereső szó
összehasonlító áramkör 1
D 100 Fizikai cím
Laphiba!
Asszociatív tár
Memóriaolvasás? +1? -> hozzáférési idı
D
Q 6
n-1.
Címzés
Két „apró” probléma…
D 100 D
SW laptábla 0. 1.
Laptábla bejegyzés
37
18 P
12 bit
+
Koschek Vilmos
Címzés
Logikai cím
P
B 0 1 2 3 4 5 6 7 8 9 10 11 12 13
0
Transzformáció
Laptábla bázis reg.
0
1 0
összehasonlító áramkör Adat vezetékek Koschek Vilmos
Címzés
Laptábla bázis reg.
39
Hozzáférési idı P
B
S
HW laptábla
. P
P.
Q
S. Q
n-1.
M
D m-1.
SW laptábla Koschek Vilmos
Fizikai cím
SW laptábla 41
Címzés
.
m-1.
12 bit
0. 1.
1. 0. 0. 0. 1. 1.
0. 1.
Q
Logikai cím D
6 bit
Adat
Keres ő szó
P
6 bit
+ 0. 1.
40
Többszintő (Memória felhasználása)
D
+
Címzés
Laptábla bázis reg.
Logikai cím
B
Koschek Vilmos
Címzés
+
k-1. P.
Q k-1.
k-1. SW2 laptáblák Koschek Vilmos
Q
D Fizikai cím
42
7
Kétszintő lapcímzés
Melyik lapot dobjam el ?
m=6 bit (S) -> SW laptábla, 64 bejegyzés k=6 bit (P) -> m darab SW2, 64 bejegyzés
Lapigény
10 alkalmazás: 10 x 100KBájt 1 db SW, 10 db SW2 64*3 + 10*64*3 = 2112 Bájt
Van szabad fizikai lap OK
Memóriaolvasás? +2? -> hozzáférési idı Asszociatív tár: S P Találat P,Q -> S,P,Q !
El kell dobni egyet, na de melyiket? A legalkalmasabbat …
0
0
0
1
Későbbi lapváltások száma
Kevés munkával jár
1
0
1/2
Lapváltási algoritmusok
„Tiszta” lap
1
1
Koschek Vilmos
Címzés
Nincs szabad fizikai lap
43
Koschek Vilmos
Címzés
Lapváltási algoritmusok
44
FIFO A tárban levő lapok közül a legrégebbit! -> First in first out Fizikai lapok nyilvántartása
FIFO
LRU
FINUFO
Koschek Vilmos
Címzés
45
LRU Fizikai lapok nyilvántartása
Koschek Vilmos
46
FIFO, LRU összehasonlítása 4 db logikai, 3 db fizikai lap
Tw
Tw
Tw
Tw
t
4
1
2
3
FIFO
1
2
3
4
1
LRU
3
4
3
CÍMLÁNC
1
2
3
1
2
1
2
4
1
Tw: munka HB,KSZ
HB==1 ? HB==0 • Nem történt hozzáfordulás • KSZ++
Használat i bit
Címzés
Fizikai memória lapcímei
Címzés
A tárban levő lapok közül a legrégebben használt! -> Least recently used 0 1 2 3 4 5 6 7 8
Pointer
0 1 2 3 4 5 6 7 8 9 10 11 12 13
Korjelz ő számlál ó
HB==1
HW
• Történt hozzáfordulás • KSZ=0 • HB=0
Akkor melyik a jobb? És miért? És mikor egyforma?
Kiválasztás: KSZ ? Koschek Vilmos
47
Címzés
Koschek Vilmos
48
8
Mi a probléma?
FINUFO LRU + FIFO = First In Not Used First Out
Lapcímzés: társzervezését a fizikai tár oldaláról közelíti meg
Fizikai lapok nyilvántartása Pointer
0 1 2 3 4 5 6 7 8 9 10 11 12 13
FIFO + HB HB==1 -> FIFO
Nagy logikai címek kezelése problémát jelent • Nagy számú címbit • Nagyméretű, hézagosan kitöltött laptábla
A címtartomány egymással határos, változó hosszúságú szakaszokra – SZEGMENSEKRE – van osztva.
Fizikai memória lapcímei
Használat i bit
Címzés
Koschek Vilmos
49
Szegmentálás, működés
Koschek Vilmos
Címzés
50
Transzformáció
Szegmens tábla bázis reg.
Logikai cím
Szegmens önálló LOGIKAI egység, összetartozó adatok
B Szelektor
B0
S0 S1
• Eljárások • Tömbök • Táblázatok • Stack •. •.
B1 B2
S2 B3
S3
+
Szegmens (deszkriptor) tábla 0. 1.
+
Relatív adat pozíció
ADAT
A társzervezést a logikai tár oldaláról közelíti meg !
B4
S4
18.
B5
S5
Leginkább a logikai címtér kezelésére Futás közbeni hozzárendelés. Koschek Vilmos
Címzés
L
Deszkriptor • Szegmens kezdőcíme (R) n-1. • Limit (L) •Használták ? •W? • Jogosultságok 51
D
R
Fizikai cím
Gyorsítás -> asszociatív tár ! Koschek Vilmos
Címzés
52
Intel 32 VT
Szegmensváltás Tár tördelődése -> lyuktábla
16 bites szelektor
32 bites Offset
S0 Lyuk S1
S4
Szegmens transzformáció
????
n Lap tran. ?
S2
Lyuk S3
Legpontosabb illeszkedés (Best Fit) • Lyuktábla lyukak szerint
i Dir
Page
Offset
(Lineáris cím)
Szegmentált
Legelső illeszkedés (First Fit) • Lyuktábla címek szerint
Lap transzformáció Sík 32 bites fizikai cím
Címzés
Koschek Vilmos
53
Címzés
Koschek Vilmos
54
9
Szegmens transzformáció
Transzformáció 15
0
31
Szelektor Deszkriptor tábla 0. 1.
Sík (flat) címtér
Szegmentált címtér
• A memória egyetlen 4GBájtos tömb
• 64 tbájt logikai címtér
• Cím: 32 bites
• Cím: 16 bites szelektor+ 32bites offset
• Szegmens reg.-t csak egyszer kell beállítani
• 16383 db 4Gbájtos szegmens
LDTR, GDTR
+
Deszkriptor
n-1.
31
Koschek Vilmos
55
0
Lineáris cím
Logikai cím -> Lineáris cím
Címzés
0
Offset
Koschek Vilmos
Címzés
56
Deszkriptor
Szelektor
• Bázis, 32 bit
• Látható rész: 16 bites szegmens regiszter • 2 bit, RPL: szelektort létrehozó eljárás védelmi szintje
• Limit, 20 bit
• 1 bit, 0-GDT, 1: LDT
• Granulaty bit, • G=0-Limit*1 bájt ->1Mbájt
• 13 bit, 8192 bejegyzés
• G=1-Limit*4096 bájt ->4Gbájt
• Type 3 bit, leíró típusa:read, write, code, data,….
• Nem látható rész: deszkriptor, proc kezeli!
• DPL 2 bit,
deszkriptor privilégium szint
• Present 1 bit
213 *21 *232 = 246
• Accessed 1 bit
RPL: Requestor’s Privilege Level Koschek Vilmos
Címzés
Lineáris cím -> Fizikai cím
57
Lineáris cím DIR
• Present 1 bit
0
PAGE
58
Bejegyzések LKB, LTB
Lap transzformáció 31
Koschek Vilmos
Címzés
OFFSET
• U/S, R/W 2 bit, lapszintű tárvédelem Lapkönyvtár
+
• Accessed 1 bit
Laptábla
0. 1.
0. 1.
+
LKB
n-1.
• Dirty 1 bit • 20 bit, laptábla/lap fizikai címének felső része
+
LTB
LKB,LTB = 4 bájt DIR/10 bit + PAGE/10 bit + OFFSET/12 bit = 32 bit
n-1. 0
31
Címzés
1. 2. 3.
Fizikai cím
CR3 Koschek Vilmos
59
Címzés
DIR/10 + CR3 => LKB LKB/20 + PAGE/10 => LTB LTB/20 + OFFSET/12 => FIZIKAI CÍM Koschek Vilmos
(DIR*4!) (30?)
60
10
Asszociatív tár Lineáris cím => fizikai cím kétszintes => lassú
http://nik.bmf.hu/broczko/tantargy.htm
32 elemű asszociatív tár, TLB: Translation Lookaside Buffer
LKB – LTB párokat tárolja
98% Címzés
Koschek Vilmos
61
Címzés
Koschek Vilmos
62
11