Architektúra, címzési módok Mirıl lesz szó? Címzés fogalma, címzési módok Virtuális tárkezelés Koschek Vilmos Példa: Intel vkoschek@vonalkodhu Fogalom A címzési mód az az út (algoritmus), ahogyan az operandus címét meghatározzuk Címértelmezés Adat Közvetlen adatmegadás Rejtett címzés Cím Címmegadás Címértelmezés Címmódosítás Közvetlen címzés Közvetett címzés???? Valós/ virtuális (késıbb!) Közvetlen (immediate) adatmegadás Rejtett (inherent), vagy implicit címzés AAT MOV AL, H AAT xb x CLI, STI, IRET -> IF!
Közvetlen (direkt) címzés Közvetett (indirekt) címzés CÍM CÍM AL = x MOV AL, [] 9 Indirekció SI MOV AL, [SI] AL=x Többszörös is lehet! 9 Címmegadás Abszolút Abszolút Rövidített (relatív) Lapcímes Bázisregiszteres Címezhetı tár Méret Sebesség CÍM 9 9 Bázis Címezhetı tár Méret Sebesség Cím Rövidített Lapcímes Relatív 9 Cím Lapcímes: Lapcímes lap Lapon belüli cím lap Lapcím lap Lapon Lap belüli cím Lapcím Eltolás, elıjel nélküli lap PC,, 9 Koschek Vilmos Címzés
Eltolás Bázis Relatív: Bázis: PC, Bázis reg, Stack Elıjeles Relatív Eltolás 9 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: Autoinkrementálás / autodekrementálása Címzés elıtt (pre) /után (post) Valós cím meghatározásának tervezési tere Címmegadás Címzés Címmódosítás Intel (/) processzorok Programozható regiszterek Abszolút R bi bázis PC bázis Relatív Egyszeres Indexelés Többszörös Automatikus változtatás TOS bázis Y i bázis Növelés Csökkentés Utasításforma Címzési lehetıségek Y abs R Bi Pre Y= PC R bk R xj Post - TOS Y i Előtte -pre Utána -post Előtte Utána Programozható regiszterek Általános regiszterek Programozó által használható regiszterek Általános regiszterek Szegmens regiszterek AH H CH BH AL L CL BL AX X CX BX EAX EX ECX EBX Státus és vezérlı regiszterek I SI SP BP bites EI ESI ESP EBP
Szegmens regiszterek Státusz és vezérlı regiszterek SS S ES FS GS CS Stack adat adat adat adat Kód IP FLAGS Példák flagekre: 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 F: irány AC: illeszkedés ellenőrzés VM:, virtuális IF: megszakítás maszkolás TF:, utasítás után kivétel bites EIP EFLAGS 9 Sign, zero, carry, overflow - - - - S Z C O - - Pethı Ádám Assembly alapismeretek Pethı Ádám: Variációk assembly-re Carry flag Elıjel nélküli mőveletek eredményének vizsgálata JB címke : jump if bellow JNAE címke: jump if not above or equal JC címke Kisebb vagy nem nagyobb - egyenlı JNB címke : jump if not bellow JAE címke: jump if above or equal JNC címke Nem kisebb vagy nagyobb - egyenlı Utasításforma bites bites bites () () W() MO () REG () R/M () L cím / L adat H cím / H adat L adat H adat
Lehetséges átvitel R -> M R <- M R -> R M -> M = : regiszterből = : regiszterbe OP: REG : regiszter OP: MO-R/M: regiszter/memória Címzési mód bájt REG MO R/M Irány R M R->M R M R<-M MOV R AX, RBX? R->R R R R->R RE G Címzési mód bájt értékei W= W= AX AL CX CL X L BX BL SP AH BP CH SI H I BH MOV AX, BX? R/M MO (W!) bxsi bxsi bxsi AL/AX bxdi bxdi bxdi CL/CX bpsi bpsi bpsi L/X bpdi bpdi bpdi BL/BX si si si AH/SP di di di CH/BP dcím bp bp H/SI bx bx bx BH/I MO REG R/M Regiszterből (BX) Regiszterbe (AX) bites Címzési lehetıségek : - bájt Adat: bájt Cím: bájt SIB bájt: Scale, Index, Base EAX EBX ECX EX EBP ESI EI * EAX EBX ECX EX EBP ESI EI ESP Valós mód Védett mód Később Eltolás () Szegmens () Fizikai cím () Logikai cím számításának forrásai Memória hivatkozás típusok Szegmens bázis Lehetséges másik szegmens Eltolás Utasítás lehívás CS nincs EIP Stack művelet SS nincs ESP Változók (kivéve a következőket) S CS,ES,SS,FS,GS Effektív cím String forrás S CS,ES,SS,FS,GS ESI String cél ES nincs EI BP, mint bázisregiszter SS CS,ES,SS,FS,GS Effektív cím 9 Még néhány példa Regiszteres címzés: INC ECX Bennfoglalt (közvetlen adat): MOV EAX, H irekt memória: A CÍM, AL Regiszter indirekt: MOV [SI], Bázis címzés: SUB [BX]CÍM, AH Indexelt címzés: MOV CÍM[EI], Bázis indexelt címzés: A [EBX]CÍM[ESI], AL String címzés: MOV SI, CIM MOV I,CIM MOVSB -> [S:SI] > [ES:I] I/O port címzése irekt: Indirekt: OUT, AL IN AX, X
Virtuális tárkezelés Fogalom Fogalom Címtér Lapcímzés Logikai (virtuális) Transzformáció Fizikai (valós) Szegmentálás Amit a programozó lát Ami a számítógépben van Példa: Intel Idáig erről volt szó! Virtuális tártechnika Virtuális címtér Lapcímzés, mőködés Lap azonos méret! Valós címtér, OPT Win P P P P P P P P P H P P P P P Transzformáció P P P P P P P P P P 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 Win Kérdések Lap mérete? Transzformáció? Hozzáférési idő? Melyik lapot dobjam el?
Lapméret ITTTTTT Laptábla bázis reg B Transzformáció P Logikai cím? 9 Laptábla bejegyzés Fizikai lapcím Használták? W? Jogosultságok Érvényes? Logikai lap: n, 9, bit Fizikai lap:, bit Lapméret: 9, bit Lapbejegyzés: bájt 9*9 = MBájt *9 =,MBájt SW laptábla P Q n- Laphiba! bit P Q bit bit Q Fizikai cím Két apró probléma Memóriaolvasás?? -> hozzáférési idı Cím vezetékek Asszociatív tár x bit Kereső szó Találat jelző összehasonlító áramkör Memória felhasználásának hatékonysága? alkalmazás: * 9 * = KBájt * = Bájt összehasonlító áramkör összehasonlító áramkör összehasonlító áramkör Adat vezetékek 9 Laptábla bázis reg B Hozzáférési idı Keres ő szó P P Logikai cím HW laptábla Q Adat Többszintő (Memória felhasználása) Laptábla bázis reg B bit m- S P bit Logikai cím bit P n- Q SW laptábla Fizikai cím Q S M k- P Q k- m- k- Q SW laptábla SW laptáblák Fizikai cím
Kétszintő lapcímzés m= bit (S) -> SW laptábla, bejegyzés k= bit (P) -> m darab SW, bejegyzés alkalmazás: x KBájt db SW, db SW * ** = Bájt Memóriaolvasás?? -> hozzáférési idı Asszociatív tár: S P Találat P,Q -> S,P,Q! / Melyik lapot dobjam el? Van szabad fizikai lap OK Későbbi lapváltások száma Lapváltási algoritmusok Lapigény Nincs szabad fizikai lap El kell dobni egyet, na de melyiket? A legalkalmasabbat Kevés munkával jár Tiszta lap Lapváltási algoritmusok FIFO LRU FINUFO FIFO A tárban levő lapok közül a legrégebbit! -> First in first out Fizikai lapok nyilvántartása 9 Fizikai memória lapcímei Pointer LRU A tárban levő lapok közül a legrégebben használt! -> Least recently used Fizikai lapok nyilvántartása T w T w T w T w t T w : munka HB==? HB,KSZ HB== HB== HW Nem történt Történt hozzáfordulás hozzáfordulás Használat KSZ KSZ= i bit HB= Korjelz ő Kiválasztás: KSZ? számlál Címzés ó Koschek Vilmos FIFO, LRU összehasonlítása db logikai, db fizikai lap CÍMLÁNC FIFO LRU Akkor melyik a jobb? És miért? És mikor egyforma?
9 FINUFO LRU FIFO = First In Not Used First Out Fizikai lapok nyilvántartása Pointer FIFO HB HB== -> FIFO Fizikai memória Használat lapcímei i bit 9 Mi a probléma? Lapcímzés: társzervezését a fizikai tár oldaláról közelíti meg 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 S S S S AAT S S Szegmentálás, működés B B B B Relatív adat pozíció B B Futás közbeni hozzárendelés Szegmens önálló LOGIKAI egység, összetartozó adatok Eljárások Tömbök Táblázatok Stack A társzervezést a logikai tár oldaláról közelíti meg! Leginkább a logikai címtér kezelésére Szegmens tábla bázis reg B eszkriptor Szegmens kezdőcíme (R) Limit (L) Használták? W? Jogosultságok Transzformáció Szegmens (deszkriptor) tábla n- L R Szelektor Gyorsítás -> asszociatív tár! Logikai cím Fizikai cím S Lyuk S S Lyuk S Szegmensváltás???? Tár tördelődése -> lyuktábla S Legpontosabb illeszkedés (Best Fit) Lyuktábla lyukak szerint Legelső illeszkedés (First Fit) Lyuktábla címek szerint Intel VT bites szelektor bites Offset Szegmens transzformáció n Lap tran? i ir Page Offset (Lineáris cím) Szegmentált Lap transzformáció Sík bites fizikai cím 9
Transzformáció Szegmens transzformáció Szelektor Offset Sík (flat) címtér Szegmentált címtér eszkriptor tábla LTR, GTR A memória egyetlen GBájtos tömb tbájt logikai címtér Cím: bites Szegmens reg-t csak egyszer kell beállítani Cím: bites szelektor bites offset db Gbájtos szegmens eszkriptor n- Logikai cím -> Lineáris cím Lineáris cím Szelektor Látható rész: bites szegmens regiszter bit, RPL: szelektort létrehozó eljárás védelmi szintje bit, -GT, : LT bit, 9 bejegyzés Nem látható rész: deszkriptor, proc kezeli! RPL: Requestor s Privilege Level * * = Bázis, bit Limit, bit eszkriptor Granulaty bit, G=-Limit* bájt ->Mbájt G=-Limit*9 bájt ->Gbájt Type bit, leíró típusa:read, write, code, data, PL bit, deszkriptor privilégium szint Present bit Accessed bit Lap transzformáció Lineáris cím -> Fizikai cím Lineáris cím IR PAGE OFFSET Bejegyzések LKB, LTB Present bit U/S, R/W bit, lapszintű tárvédelem Lapkönyvtár Laptábla Accessed bit irty bit LKB LTB bit, laptábla/lap fizikai címének felső része LKB,LTB = bájt n- n- IR/ bit PAGE/ bit OFFSET/ bit = bit CR Fizikai cím IR/ CR => LKB (IR*!) LKB/ PAGE/ => LTB (?) LTB/ OFFSET/ => FIZIKAI CÍM 9
Asszociatív tár Lineáris cím => fizikai cím kétszintes => lassú elemű asszociatív tár, TLB: Translation Lookaside Buffer http://nikbmfhu/broczko/tantargyhtm LKB LTB párokat tárolja 9%