32 bites Intel mikroprocesszorok zemmdok vdett zemmd alap
32 bites Intel mikroprocesszorok
Üzemmódok • védett üzemmód – alap működési mód • valós üzemmód – 8086 -os programozási környezetet biztosít, néhány kiegészítéssel • virtuális 8086 -os üzemmód – védett, multitasking környezetben biztosít valós módra írt programok futtatásához szimulált környezetet • rendszerfelügyeleti üzemmód
Feladatok • hardver támogatás biztosítása – memória kezelés – szoftver modulok védelme – multitasking – megszakítás és kivételkezelés – multiprocesszoros rendszer – cache kezelés – hard erőforrások és tápegység kezelés – debug – hatékonyság követés
Regiszterek
Regiszterkészlet • programozható regiszter • a szegmensregiszterek kivételével 32 bites regiszterek
Felhasználói regiszterek • 8 általános regiszter: • utasítás mutató: EIP • 6 szegmensregiszter: CS, SS, DS, ES, FS, GS • állapotregiszter: EFLAGS
EFLAGS regiszter
Regiszterek és adatszerkezetek
Rendszerregiszterek
Vezérlőregiszterek
CR 0 (1) • • PE – Protect Enable – PE=1 védett üzemmód MP – Monitor co. Processor EM – Emulate Math coprocessor TS – Task Switched – taskváltásnál TS=1 – a kopr. meghívásakor kiváltja a kopr. állapotának kimentését • ET – Extension Type – 1 • NE – Numeric Exception – NE = 1 – lebegőpontos kivételkor INT 16 h – NE = 0 – DOS kompatibilis üzemmód • WP – Write Protect – írásvédett lapra történő írás engedélyezése a rendszer számára
CR 0 (2) • AM – Alignment Mask – engedélyezi az automatikus illeszkedésellenőrzést, ha az EFLAGS AC bitje kéri • NW – No Write-through – cache használat engedélyezése (Pentium 4 -től nem használt) • CD – Cache Disable – a cache töltése nem engedélyezett (olvasásnál ha nincs cache találat nem frissíti a cache-t) – cache üzemszerű működése: CD=0 és NW=0 • PG – Paging Enable – lapozás engedélyezése (csak védett üzemmódban)
CR 1 -3 • CR 1 – fenntartott • CR 2 – a legutóbbi virtuális cím (lineáris cím), amely laphibát okozott • CR 3 – lapcímtár címe (20 bit) – PWD – Page-level Writes Transparent – cache írásmód használata lapozásnál – WME – Virtual-8086 Mode Extensions – engedélyezi a virtuális mód kiterjesztések használatát (pl. VIF)
CR 4 • különböző architekturális kiterjesztések engedélyezése – – – – – PVI – Protected-Mode Virtual Interrupts TSD –Time Stamp Disable DE – Debugging Extensions PSE – Page Size Extensions PAE – Physical Address Extension – 36 bites memória címzés engedélyezése lapozásnál MCE – Machine-Check Enable PGE – Page Global Enable PCE – Performance-Monitoring Counter Enable OSFXSR – Operating System Support for FXSAVE and FXRSTOR instructions OSXMMEXCPT – Operating System Support for Unmasked SIMD Floating-Point Exceptions
Nyomkövető regiszterek • DR 0–DR 3 – négy független hardware töréspontot (breakpoint) definiál – lineáris cím • DR 4, DR 5 – fenntartott • DR 6 – Debug Status Register – az utolsó debug kivétel felléptekor teljesült feltételek • DR 7 – Debug Control Register
Lebegőpontos regiszterek
FPU - állapotregiszter
FPU – vezérlőregiszter (Control Word)
FPU – toldalékszó regiszter (Tag Word) • minden általános regiszter tartalmát két bit jellemzi
Mutató regiszterek • az utolsó végrehajtott nem vezérlő utasításra mutatnak (lehetővé teszik a hibát generáló utasítás lokalizálását) • utasítás pointer regiszter • operandus pointer regiszter • 48 bites regiszterek (offset 0 -31, szegmens 32 -47) • utasítás kód – Floating Point Opcode – 10 bit
Mentés • lebegőpontos regiszterek mentése memóriába
Memóriaszervezés
Virtuális memória kezelés
Címterület • az a címterület, amit a processzor címezni képes • 4 Gbyte – 232 • kiterjeszthető 64 Gbyte-ra – 236
Logikai és lineáris címek
Szegmens szelektor • Index – a deszkriptortáblához • a szegmensregiszterek tartalmazzák
Szegmensregiszterek
Szegmens deszkriptor
Kód és adatszegmens típusok
Deszkriptortáblák
Lapozás • • • lineáris címet fordít fizikai címre fix méretű fizikai blokkok, nincs felaprózódás cím – lapkeret név + offset a lapozást a CR 0 regiszter PG bitje engedélyezi lapok mérete – 4 KB, ha a PDE-ben PS=0 – 4 MB, ha a PDE-ben PS=1 • 4 KB-os lapok esetén két szintes táblázatok – lapcímtár – laptáblázat címe – laptáblázat – 1024 bemenet, mindegyik egy fizikai lap címe • lapcímtár címe – CR 3 regiszter
Lapozás
Lapcímtár bemenet (PDE)
Laptáblázat bemenet(PTE)
TLB – Translation Lookaside Buffer • a lapozó egység belső cache memóriája (tartalommal címezhető) • Leggyakrabban használt PTE és PDT-k • CR 3 betöltésekor, illetve lapcímtár vagy laptáblázat módosításakor ki kell üríteni. • lineáris cím fordításakor először itt keresi az információt • a címek kb. 98%-ában találat
Védelem
Védelmi rendszer • szegmens és lapszintű védelmet is biztosít • minden memória hivatkozásnál ellenőrzi, hogy a védelmi feltételek teljesülnek-e • az ellenőrzéseket a címek fordításával egyidőben végzi, így nincs hatásfok veszteség • kivétel lép fel, ha nem teljesülnek a feltételek • védelmi rendszer ellenőrzései: – – – határellenőrzés típusellenőrzés privilégiumszint ellenőrzés címezhető tartomány korlátozása eljárás belépési pontok korlátozása utasítások használatának korlátozása
Védelmi szintek
Védelmi szintek (2) • CPL – Current Privilege Level – a végrehajtott task privilégiumszintje, a CS és SS regiszterek 0 és 1 -es bitje • DPL – Descriptor Privilege Level – egy szegmens vagy kapu privilégiumszintje – a szegmens deszkriptorban • RPL – Requested Privilege Level – megkívánt privilégiumszint – szelektorban
Ellenőrzés adatszegmensek esetén
Példa
Közvetlen CALL és JMP • szegmensen belül mindig megengedett • azonos privilégiumszinten levő szegmensek között megengedett • magasabb privilégiumszinten levő „conforming” kódszegmensre megengedett – magmarad a hívó kódot tartalmazó szegmens privilégiumszintje, nem történik veremváltás
Közvetlen CALL és JMP
Példa
Kapuk • Ellenőrzött hozzáférést biztosítanak különböző privilégiumszinten levő kódszegmensekhez • lehetnek – Call kapuk – Trap kapuk – Interrupt kapuk – Task kapuk
Call kapuk • lehetővé teszik a különböző privilégiumszinten levő szegmensek közti vezérlésátadást • lehetővé teszik a 16 és 32 bites szegmensek közti kommunikációt
Call kapuk • a kapu meghatározza az eljárás belépési pontját, a CALL utasításban levő offset nem számít • amikor call kapun keresztül egy magasabb privilégiumszintű eljárást hívunk meg a CPL a meghívott szegmens privilégiumszintje lesz • magasabb privilégiumszintre történő váltáskor a magasabb szintű verembe kerül: SS, ESP, (Param. Count duplaszó), CS, EIP
Call kapuk használata
Call kapuk – példa
Megszakításkezelés • a megszakításvektor az Interrupt Descriptor Table (IDT) • tartalmazhat: – task-kapu deszkriptorokat, – megszakítás-kapu deszkriptorokat, – trap-kapu deszkriptorokat • kezdőcíme az IDTR regiszterben
IDT
Megszakítás-kapu • törli az EFLAGS regiszter IF bitjét (letiltja az újabb megszakításokat)
Trap-kapu • nem törli az EFLAGS regiszter IF bitjét (nem tiltja le az újabb megszakításokat)
Task kezelés • task váltáskor az aktuális task állapotát le kell menteni • minden taskhoz tartozik egy task állapot szegmens – TSS (Task State Segment), ahova a szükséges információkat lementi a rendszer • az aktuális TSS-re a TR (Task Register) mutat
Task kezelés
Task állapot szegmens – TSS
TSS deszkriptor
Task kapu
Forrás • IA-32 Intel® Architecture Software Developer's Manual, – Volume 3: System Programming Guide ftp: //download. intel. com/design/Pentium 4/man uals/25366817. pdf – Volume 1: Basic Architecture ftp: //download. intel. com/design/Pentium 4/man uals/25366517. pdf
- Slides: 59