Content extract
-1- Virtuális tárkezelés Az utasítások végrehajtásakor memória-adatra való hivatkozáskor használt címzési módokat már megvizsgáltuk. Intel processzor esetén minden tárhivatkozás szegmens-relatív A címképzés során számított cíhossz adja meg a maximálisan megcímezhető memóriát: I8086 esetén 20 bit, I80286 esetén 24 bit, I80386/486 esetén 32 bit, A virtuális tárkezelés lehetővé teszi nem csak a központi tár, hanem a háttértárolók bevonását a program és adatok tárolására, mintha azok a tárban lennének, a programozó számára transzparens módon. Ezzel nagyobb programok készíthetők, és több adat használható a programokban, mintha a központi tár ténylegesen befogadná azokat. A fizikai tár nem növelhető általában addig, amennyit a címtartomány megenged a magas RAM árak miatt. A fizikai tár elvi és tényleges méreténél nagyobb címtartomány igénybevételére használják a lapozásos tárolókezelési módszert.
Ma már a korszerű mikroprocesszorok is hardveresen támogatják ennek használatát. -2- Programok a virtuális címre hivatkoznak (logikai cím), de az adatok a fizikai tárban vannak (vagy lenniük kell). Ha nincs ott, akkor be kell vinni. Címleképzést kell végezni: Valós cím = fizikai blokk kezdőcíme + relatív cím A blokk mérete lehet: − Változó (ez a szegemens) − Rögzített (ez a lap) Ha a program hivatkozik egy virtuális címre: − A tárkezelő táblázatok segítségével megállapítja, hogy a kívánt lap a tárban van-e. Ha igen, a táblázatokból kikeresi, hogy melyik fizikai lapon van. Kiszámítja a tényleges fizikai címet, majd felhasználja az adatot. − Ha a lap nincs a t árban, akkor kikeresi a l ap háttértárbeli helyét, keres egy nem használt lapot (vagy kicserél egyet) a fizikai memóriában, behozza a l apot. Kiszámolja a f izikai címet, majd felhasználja az adatot. A tárkezelő rendszer (MMU) feladata: A logikai cím
átalakítása fizikai címmé szegmens- és/vagy laptáblázatok segítségével. Az Intel processzorok (I80386/486, Pentium) háromlépcsős címkiszámítási módja: szegmens- + lapcímzés védett 32 bites üzemmódban. Az I80386-os processzorral kezdődően a processzor címek 32 bitesek: max. 4 GB fizikai memória címezhető. A virtuális tárméret 64 TB (tera byte) -3- Szegmentált lapozásos címzés Szegmens regiszterek (16 bit) CS DS SS ES FS GS Szegmens tábla Virtuális cím (32 bit) 13 bit Szegmens szelektor 32 Szegmens kezdőcíme 32 Szegmens leíró (64 bit) 8 KB 32 Új virtuális cím (32 bit) Laptábla katalógus CR3 Szegmens leíró (64 bit) Laptábla # Laptábla # 10 Laptáblázatok 20 Lap # Relatív cím 10 12 Lapkeret sorszám Virtuális tároló . . . 4 KB 12 1023 20 32 Tárban 20 Laptábla # 1023 . . . . . . Lapozható -42 szegmens tábla használható: − Global (Global Description Table: GDT) − Local (Local Description
Table: LDT) Max. használható memória (246 = 64 TB) = Szegmensek száma (213+1) x Szegmens max. mérete (232) Címfordítás szükséges a logikai címek fizikai címekké átalakításánál a másodlagos tárak (háttértárak) esetén is! Az ehhez szükséges adatokat is táblázatokban tárolja az oprációs rendszer. Virtuális cím leképzése fizikai címre 1. Utasításban (imliciten vagy expliciten) adott: szegmensregiszter és a virtuális cím A szegmensregiszter 13 bitje (szelektor) kiválaszt egy szegmens leírót a szegmens táblában. 2. Szegmens kezdőcíme + virtuális cím újabb virtuális címet ad 3. Virtuális cím első 10 bitje (laptábla #) kiválaszt egy sort a laptábla katalógusban 4. Laptábla katalógus laptáblázat sorszáma kiválaszt egy laptáblázatot 5. Laptáblázat lapkeret-sorszáma (20 bit) és a virtuális cím relatív címének (12 bit) konkatenációja adja a 32 bites fizikai címet. Ha a lapkeret bent van a memóriában, az utasítás
végrehajtása folytatódik. Ha nincs bent, ún page fault trap (egyfajta megszakítás) keletkezik. Az utasítás végrehajtása felfüggesztődik Lapkeret behozatal után folytatódik az utasítás végrehajtása (vagy előről kezdődik). Szegmens szelektor 16 bites a CS, DS, SS, ES regiszterekben Szegmens sorszáma RPL = a szükséges privilegizálási szint TI = 0 (GDT használata) 1 (LDT használata) TI RPL A deszkriptor táblázat kijelölése Szegmensleírók (deszkriptorok) Hossza: 64 bit Tartalma: 1. Szegmens kezdőcíme: 32 bit 2. Szegmens mérete: 20 bit 3. Egység: a méret byte-ban vagy lapban adott? 4. Szegmens a memóriában van-e? 5. I80286 vagy I80386/486 utasításkészlet 6. Privilégium szint 7. Egyebek -5- Memória hivatkozáskor 1. és 2 alapján szegmenshatár-ellenőrzést végez a processzor A szegmentálás előnyei és hátrányai Előnyök: Virtuális memória megvalósítása Privilegizálási szintek alkalmazása (op. rendszer biztonsága)
Szegmens határ ellenőrzés (pl. mutatók, tömbmutatók ellenőrzése) Hátrányok: 48 bit-es mutatók Lassabb működés Lehetőségek a szegmentálás kialakítására 1. Szegmentálás kiküszöbölése: egyetlen nagy kód és adatszegmens az egész memória lefoglalásával Lapozás lehetséges, de elvész a privilegizálási védelem. 2. Minden taszk egy kód- és egy adatszegmensből áll Csak az operációs rendszer foglalkozik a szegmensekkel. Védelmi mechanizmus a taszkok között működik. Virtuális memória kezelés lehet: szegmentált vagy lapozásos. 3. Teljes szegmentálás Minden nagyobb objektum vagy modul külön szegmensben van. Telejesen biztonságos környezetet biztosít. Ez a leglassúb változat. A lapozás előnyei és hátrányai Fix lapméret előnyösebb a szegmentálásnál (lapméret = diszk szektor méret), a m emóriában nem lesznek kihasználatlan területek (nincs fregmentáció). Nem kellenek nagy, összefüggő területek. Védelmi mechanizmus
elvész (privilégium, határ ellenőrzés). Lehetnek töredékesen kihasznált lapok. Virtuális cím fizikai cím konverzió minden memória hivatkozásnál van (lassú). A szegmentálás és a lapozás együttes használata a legkedvezőbb! -6Példa a szegmentált virtuális tárkezelésre Legyen 4 futtatni kívánt taszk: Rendszermemória: I. II. III. IV. 400 KB (kód- és adatszegmens együtt) 100 KB 400 KB 200 KB Az operációs rendszer elindítja mind a 4 taszkot, elkészíti a deszkriptorokat, betölti az I., II és a III program kód- és adatszegmensét, a IV. program kódszegmensét, de a IV program adatszegmensét nem tölti be, hanem a deszkriptorban jelöli, hogy nincs jelen. Az ütemező elindítja a programokat. Ha a IV taszkra kerül a sor, és hivatkozás történik az adatszegmensre, megszakítás (exception = kivétel) generálódik. Az operációs rendszer megállapítja, hogy mi okozta a megszakítást: adatszegmens nincs jelen. Kicseréli az
adatszegmenst egy tárban lévő szegmenssel (swapping), és a deszkriptor táblába is bejegyzi a változásokat. -7- II. taszk kód- és adatszegmense a diszkre kerül, és helyettük a I V taszk adatszegmense kerül a t árba (A kódszegmens tartalma nem változik, ténylegesen nem kell kivinni a diszkre). -8Az I80386/486 processzorok üzemmódjai Címsín: 32 bit, ezért a címezhető tárolóméret: 4 GB (232) Adatsín 32 bit Regiszterek mérete: 32 bit, 32 bit-es műveletek (EAX, EBX, regiszterek) Üzemmódok: 1. Valós: I8086 processzorként működik Védelem nincs. Címezhető memória: 1 MB Multiprogramozás a védelem hiánya miatt nem lehetséges 2. Védett (protected) a) 16 bit-es üzemmód I80286-osként működik 16 bit-es utasítások használhatók Címezhető tároló 16 MB Csak szegmentált tárolókezelés b) 16 bit-es, virtuális I8086-os üzemmód Az I8086-os program taszk-ként működik az I80386/486-on Szimulálja az I8086-os környezetet,
kihasználja a processzor összes erőforrását c) 32 bit-es üzemmód A processzor saját üzemmódja. Az összes erőforrás használható. Multitaszkos feldolgozás lehetséges Az I80386 és az I80486 processzor közötti legfontosabb különbség 486-os on-board cache tárral rendelkezik Beépített koprocesszor Pentium Órajel frekvencia és busz sebesség 66 MHz vagy nagyobb Adatbusz 64 bit-es On board cache: 256 KB Irodalom: Dr. Kovács Magda: 32 bites mikroprocesszorok 80386/80486 II. LSI Oktatóközpont 1994 -9Intel P6-os processzor Főbb jellemzők: 5.5 millió tranzisztor 15.5 millió tranzisztor a másodlagos cache-ben 3 utas szuperskalár mikroarchitektúra 14 állapotú superpipeline 5 párhuzamos működésű feldolgozó egység: 2 integer, 1 load, 1 store, 1 FPU 8 KB 2 way set associativ primary utasítás cache 8 KB 4 way set associativ primary adat cache 256 KB SRAM másodlagos cache dedikált teljes sebességű buszon. Külön lapkán, de egy tokban a CPU-val
(6 tranzisztor/bit) Tranzakció alapú I/O busz (új memória művelet indítható, mielőtt az előző befejeződne) Out of order utasítás végrehajtás, dinamikus elágazás előrejelzés és spekulatív végrehajtás Teljesítmény: 200 SPECint92 133 MHz processzoron 2.9 V, 06-mikron 4 rétegű BiCMOS technológia CPU: 306 mm2, SRAM: 202 mm2 felületű Fogyasztás: 20 W 133 MHz-en Tömeggyártás 1995 végén indult 33%-al gyorsabb a 133 MHz-es Pentium-nál Versenytársai: NexGen: Nx586 AMD K5 Cyrix M1 P6 lassabb, mint a legjobb RISC processzorok, de nem sokkal. A DEC Alpha 21164 integer műveleti sebessége csak 1.5-szerese a P6-énak A teljesítmény különbség nem olyan nagy, hogy a RISC processzorok kiszorítsák az Intel-t. A létező programok 90%-a az Intel processzorra készült. A P6 CISC/RISC hibridnek tekinthető, hordozza a RISC-ek legfontosabb technológiai elemeit. Intel x86 architektúra 32 bit-es magvalósítása. A Pentiumhoz képest sok lényeges változtatás:
3 utas szuperskalár processzor, amely 5 utasítást tud egyidejűleg végrehajtani. A megnövekedett utasítás végrehatási sebességhez tökéletesítették a cach e-t. Több regisztere van, az elágazások kimenetelének előrejelzése is jobb lett, az utasításokat nemcsak sorrendben, hanem “Out of Order” is képes végrehajtani. A P6 a programok szintjén CISC, a végrehajtás szintjén pedig RISC: az x86 utasításokat egy dekóder segítségével RISC-szerű egyszerű utasításokra bontja. Ezek a mikro utasítások könnyeebben párhuzamosíthatók, mint az x86-os utasítások