610 likes | 903 Views
Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod). Intel İşlemcilerin Tarihsel Gelişimleri. İlk kişisel bilgisayarlar ve DOS işletim sistemi 8086’lar zamanında tasarlandığı için Intel sonraki modellerinde geriye doğru uyumu sürekli olarak korumuştur.
E N D
Mikroişlemcilerin Farklı Çalışma Modları(Intel İşlemcilerinde Korumalı Mod) Mikroişlemciler ve Mikrobilgisayarlar
Intel İşlemcilerin Tarihsel Gelişimleri Mikroişlemciler ve Mikrobilgisayarlar
İlk kişisel bilgisayarlar ve DOS işletim sistemi 8086’lar zamanında tasarlandığı için Intel sonraki modellerinde geriye doğru uyumu sürekli olarak korumuştur. Intel sonraki modellerinde geriye doğru uyumu koruyabilmek için işlemciyi çeşitli çalışma modlarına ayırmıştır. 32 bitlik bir Pentium işlemci istendiği taktirde gerçek modda (real mode) çalıştırılabilir. Bu durumda işlemci bir 8086 gibi çalışmış olacaktır. Veya korumalı modda (protected mode) çalıştırılarak işlemcinin bütün özelliklerinin aktif hale gelmesi sağlanabilir. İşlemcinin hangi modda kullanılacağı işletim sistemine bağlıdır. Mikroişlemciler ve Mikrobilgisayarlar
286,386,486 ve Pentium İşlemcilerin Çalışma Modları 3 ayrı çalışma modu sökonusudur. Gerçek Mod (Real Mode) Korumalı Mod (Protected Mode) Sanal x86 Mod (286’larda mevcut değil) Mikroişlemciler ve Mikrobilgisayarlar
Gerçek modda işlemci küçük farklılıklar dışında 8086 gibi çalışır. Korumalı mod, programlar arasında bellek ayrımının sağlandığı, 32 bit çok işlemli çalışmaların mümkün olduğu, sayfalama ve sanal bellek işlemlerinin gerçekleştirilebildiği işlemcinin en geniş çalışma modudur. Sanal 86 modu, korumalı mod programları ile gerçek mod programları arasında görevlerarası geçiş yapılabilmesi amacıya tasarlanmıştır. Diğer bir deyişle sanal 86 mod, korumalı modun çeşitli özelliklerinin kullanılabildiği gerçek mod denilebilecek bir ara moddur. (80286’da mevcut değildir. Mikroişlemciler ve Mikrobilgisayarlar
Genel Olarak Korumalı Mod(Overview of Protected Mode) Çokişlemli(multiprocessing) işletim sistemlerinde birden fazla program aynı anda bellekte bulunur. İşletim sistemi Program1 Program2 Program3 …….. Mikroişlemciler ve Mikrobilgisayarlar
Eğer sistem üzerinde bir koruma mekanizması mevcut değilse, belleğin herhangi bir bölgesine erişebilir. Böyle bir durumda ise bir program, başka bir programın müdahalesi yüzünden bozulacaktır. Örn: Aşağıda Prog1 isterse İşletim Sisteminin, Program2 veya 3’ün bellek alanına izinsiz olarak erişebilir. İşletim sistemi Örn: DOS işletim sisteminde durum bu şekildedir. Programcı yanlış bir bölgeye veri aktararak o anda bellekte bulunana başka bir programı bozabilir. Program1 Program2 Program3 …….. Mikroişlemciler ve Mikrobilgisayarlar
Programların güvenliğini ve bütünlüğünü sağlamaya yönelik işlemcinin sağladığı tüm olanaklara koruma mekanizması denir. Korumalı sistemlerde farklı programlar belirli önceliklerle güvenli bir biçimde aynı bellek alanı içerisinde çalışırlar. Koruma mekanizması, etkin bir şekilde işlemci tarafından sağlanır. Bu tür işlemcilerin bütün veri aktarma komutları, aktarma işleminin programın kendi bellek alanı içerisinde yapılıp yapılmadığını kontrol ederek çalışırlar. Örn: MOV word ptr [SI], AX Koruma mekanizması, yalnızca bir programın kendi sınırlarını aşarak başka bir bölgeye erişiminin engellenmesi işlemlerini içermez. Bunun dışında pek çok işlemi içermektedir. Mikroişlemciler ve Mikrobilgisayarlar
Öncelik Derecelendirmesi (Privilege Level) Korumalı modda her programın bir önceliği vardır. Genel olarak yüksek öncelikli programların düşük öncelikli programlara erişmesi serbest bırakılmıştır, ancak düşük öncelikli programların yüksek öncelikli programlara erişmesi yasaklanmıştır. Intel işlemcilerinde toplam 4 öncelik derecesi vardır (0,1,2,3). 0 numaralı öncelik en yüksek önceliktir ve diğer önceliklere sahip alanlara erişebilir. Sanal Bellek Kullanımı (VirtualMemory) Sanal bellek fiziksel belleğin yetmediği durumlarda programların belli kısımlarının diskte saklanarak yer değişmeli olarak çalışabilmesi durumudur. Sayfalama (Paging) Sayfalama bellek kullanım oranını yükselten bir bellek yönetim tekniğidir. Sanal bellek kullanımına destek vermektedir. Intel işlemcilerde sayfalar 4K uzunluğundadır. Programlar sayfalara rastgele yerleştirilebilirler. Mikroişlemciler ve Mikrobilgisayarlar
8086 İşlemcisinin Kaydedicileri Mikroişlemciler ve Mikrobilgisayarlar
Genel Amaçlı Kaydediciler (AX,BX,CX,DX): • Accumulator(AH,AL,AX):Matematiksel hesaplamalarda kullanılan temel saklayıcıdır. • Base (BH,BL,BX) : Hafıza bölgelerini işaret eder. • Count (CL,CH,CX) : Döngülerde sayaç olarak kullanılır. • Data (DL,DH,DX) : Hesaplamalarda verilerin tutulduğu saklayıcıdır. Segment Kaydedicileri (CS,SS,DS,ES): • Segment saklayıcıları diğer saklayıcılarla beraber hafıza adresleri üretmede kullanılırlar. • Code Segmet (CS): Komutların bulunduğu hafıza bölgesini gösterir. Bu saklayıcı program kodunun taban adresini belirler. • Data Segment (DS): Verilerin bulunduğu hafıza bölgesini işaret eder. DS, bu bölgenin taban adresini belirtir. • Stack Segment (SS) :Hafızadaki yığın bölgesini işaret eder. • Extra Segment (ES,FS,GS) : Ek olarak kullanılan hafıza segmentleridir. 80386 ve sonraki işlemcilerde bulunur. Mikroişlemciler ve Mikrobilgisayarlar
Index Kaydedicileri: • Source Index (SI) ve Destination Index (DI) : Bu iki kaydedici sırasıyla kaynak-hedef kaydedicileridir. Dizilerin başlangıç adreslerini gösterirler. Dizi ve benzeri data türleri üzerinde işlem yaparken kullanılırlar. Gösterici Kaydedicileri: • Stack Pointer (SP): Yığın olarak isimlendirilen özel bir hafıza bölesini işaret eder. LIFO prensibine göre çalışır. • Base Pointer (BP): Yine yığın bölgesinin adreslenmesinde kullanılır. • Intruction Pointer (IP): Bir sonra işlenecek olan komutun bellek adresine işaret eder. Bayrak Kaydedicisi (Flag): • Flag Register (Flag): Her işlemden sonra bu kaydedicinin içeriği değişir. CPU dallanma işlemlerinde bu kaydedicideki lojik değerleri kullanarak karar verir. Mikroişlemciler ve Mikrobilgisayarlar
386,486 ve Pentium İşlemcilerinin Kaydedicileri Mikroişlemciler ve Mikrobilgisayarlar
32 bit Intel kaydedicilerini 5 grup altında incelemek mümkündür: • Genel Amaçlı Kaydediciler (General Purpose Registers) • Segment Kaydedicileri (Segment Registers) • Koruma Kaydedicileri (Protection Registers) • Kontrol Kaydedicileri (Control Registers) • Debug ve Test Amaçlı Kaydediciler (Debug and Test Registers) Mikroişlemciler ve Mikrobilgisayarlar
I) Genel Amaçlı Kaydediciler (EAX,EBX,ECX,EDX,ESI,EDI,EBP, ESP): (General Purpose Registers) Bu kaydediciler, 16 bit 8086 ve 80286 işlemcisiyle uyumu koruyabilmek için 4 parça halinde tasarlanmışlardır. E kelimesi Extended (Uzatılmış) anlamındadır. Her biri 32 bittir. Mikroişlemciler ve Mikrobilgisayarlar
II) Segment Kaydedicileri (CS,SS,DS,ES,FS,GS): (Segment Registers) Segment kaydedicilerinin işlevi gerçek mod ile sanal 86 modda aynıdır. Bu modlarda segment kaydedicileri fiziksel bellekte 64K’lık segment bölgesinin başlangıcını gösterirler. Mikroişlemci segment kaydedicisindeki bilgiyi 16 ile çarpar ve bu değeri bir offset bilgisi ile toplayarak doğrusal bir adres elde eder. Mikroişlemciler ve Mikrobilgisayarlar
Erişim Hakkı Taban Adres Limit Pentium işlemcilerde her segment kaydedicisinin bir de programcıya kapalı olan tampon kısmı vardır. Bu kısım betimleyici bilgilerinin tutulduğu tampon bir kaydedicidir. 8 byte uzunluğundadır. Betimleyici otomatik olarak betimleyici tablosundan çekilerek ilgili tampon kaydedicisine yerleştirilir. Mikroişlemciler ve Mikrobilgisayarlar
III) Koruma Kaydedicileri: (Protection Registers) Koruma ile ilgili olarak 4 temel kaydedici söz konusudur. Bunlar GDTR, IDTR, LDTR, ve TR’dir. Taban Adres(32 bit) Limit(16 bit) GDTR IDTR Erişim Hakkı Taban Adres Limit GDTR IDTR Mikroişlemciler ve Mikrobilgisayarlar
GDTR (Global Descriptor Table Register) (48 bit) Global betimleyici tablosunun başlangıç adresini tutar. IDTR (Interrupt Descriptor Table Register) (48 bit) Kesme betimleyici tablosunun başlangıç adresini tutar. Korumalı modda kesme işlemleri kesme betimleyici tablo yoluyla yönlendirilmektedir. LDTR (Local Descriptor Table Register) (16 bit) Yerel betimleyici tablosunun başlangıç adresinin ve limit bilgisinin yazılı olduğu betimleyiciye ilişkin bir seçici (selector) belirtir. Gereken değer bu seçicinin gösterdiği yerden çekilir. GDTR ve IDTR kaydedicileri 48 bit uzunluğundadır. TR (Task Register) O anda çalışmakta olan programa ilişkin görev durum segment betimleyicinin seçici bilgisini tutar. 16 bittir. Mikroişlemciler ve Mikrobilgisayarlar
IV) Kontrol Kaydedicileri (Control Registers) Konrtol yazmaçları korumalı moda geçiş, sayfalama, matematik işlemci, içsel tampon(cache) yönetimi gibi önemli işlemlerin düzenlenmesi amacıyla kullanılır. 32 bit uzunluğundadır. 386,486 işlemcilerinde CR0, CR1, CR2, CR3 bulunmaktadır. Pentiumlarda ise CR4 eklenmiştir. Mikroişlemciler ve Mikrobilgisayarlar
CR0 Kaydedicisi (32 bit) Bu kaydedici, işlemcinin en önemli işlevlerinin düzenlenmesi amacıyla kullanılırı. (Örn: Sayfalamanın etkin olup olmaması, cache belleğin etkin olup olmaması, matematik işlemcinin emulasyonun olup olmaması gibi) Monitor Coprocessor Numeric Exception Cache Disable PG CD NW Alignment Mask Resv. WP NE ET PE Task Switch EM Reserved TS MP Reserved AM 29 31 30 18 17 16 5 4 3 2 0 1 Write Protect Extension Type Protected Enable Paging No Write Emulate Math Proc. Korumalı moda geçiş PE bitinin 1 yapılmasıyla sağlanır. Fakat bu, tek başına yeterli olmayıp birtakım ön hazırlıkların da yapılması gerekmektedir. Mikroişlemciler ve Mikrobilgisayarlar
CR1 Kaydedicisi (32 bit) Intel bu kaydediciyi ileri modellerinde kullanmak üzere ayırmıştır. Bu kaydediciden bir okuma yapıldığında 0 değeri elde edilir. CR2 Kaydedicisi (32 bit) Bir sayfalama hatası (page fault) oluştuğunda sayfalama hatasını oluşturan doğrusal adres bu kaydedici içerisinde tutulur. 286’larda tanımlı değildir. 31 0 Sayfa Hatasına Yol Açan Adres Mikroişlemciler ve Mikrobilgisayarlar
CR3 Kaydedicisi (32 bit) 31 0 12 11 4 3 Dizin Tablosunun Fiziksel Adresi Reserved PCT PWT Reserved CR3 kaydedicisi Intel mimarisinde korumalı modda fiziksel adresi tutan tek kaydedicidir. 80286’larda CR3 kaydedicisi yoktur. Mikroişlemciler ve Mikrobilgisayarlar
CR4 Kaydedicisi (32 bit) Pentium işlemcilerle birlikte tanımlanmıştır. Önceki işlemcilerde yoktur. Ancak Pentiumlardan sonra üretilen bazı 486’larda bu kaydedici bulunabilmektedir. Debug Extension Reserved MCE 0 PSE DE TSD PVI VME 31 0 5 4 3 2 1 6 Machine Check Enable Virtual 86 Mode Extension Page Size Extension Time Stamp Disable Mikroişlemciler ve Mikrobilgisayarlar
EFLAGS Kaydedicisi (32 bit) Bayraklar, CPU’nun çalışmasını belirlediği gibi, çalışması sırasındaki durumları da yansıtır. 8086-80286 mikroişlemcilerinde bayrak saklayıcısı 16 bit olup, 80386 – Pentium serisi işlemcilerde 32 bittir (Extended Flags). Mikroişlemciler ve Mikrobilgisayarlar
15 0 • C(Carry) : Toplamadan sonraki eldeyi (Carry) ve çıkarmadan sonraki ödüncü (borrow) belirtmek için kullanılır. • P (Parity) : Tek eşlik lojik “0” ; çift eşlik lojik “1” ile ifade edilir. • A (Auxiliary Carry) : Yapılan aritmetiksel işlem sonucunda, 3. ve 4. bitler arasında olan carry ve borrow durumunu belirtmek için kullanılır. • Z (Zero) : Aritmetik veya lojik işlemin sonucunun 0 olduğunu belirtir. • S (Sign) : Toplama veya çıkarma işleminden sonra sonucun aritmetik işaretini belirtir. Mikroişlemciler ve Mikrobilgisayarlar
15 0 • T (Trap): Bu bayrak 1 ise, tüm devre hata takip (debugging) • durumuna girer. • I (Interrupt) : INTR girişini kontrol eder. I=1 ise INTR aktif durumdadır. I=0 ise INTR pasif durumdadır. Bu durumda iken gelen kesmelere cevap verilmez. • D (Direction) : String işlemleri yapılırken, DI ve SI saklayıcılarının arttırılması veya azaltılmasını düzenler. D=1 azaltılır, D=0 ise arttırılır. • O (Overflow) : İşaretli sayıların toplanıp çıkarılmasından sonra taşma olup olmadığını bildirir. Mikroişlemciler ve Mikrobilgisayarlar
V) Debug ve Test Kaydedicileri (Debug and Test Registers) 386, 486 ve Pentium işlemcilerde 32 bit uzunluğunda 8 debug kaydedicisi vardır(DR0,DR1,……….,DR7) Mikroişlemciler ve Mikrobilgisayarlar
KORUMALI MOD (PROTECTED MODE) Mikroişlemciler ve Mikrobilgisayarlar
Gerçek mod çalışmasıması 8086 işlemcisi incelenirken söz edilmişti. Buna göre: Segment kaydedicisindeki bilgi 16 ile çarpılmakta ve ardından çarpılan segment bilgisi bir offset değeri ile toplanmaktaydı. Segment saklayıcısının değerine 0h eklenir. FFFFF 16-bit register 0000 Addr1 + 0FFFF Segment (64K) + 16-bit register Offset Offset Addr1 20-bit memory address Segment address 00000 1M bellek alanı Intel 80x86 hafıza adresi üretimi Mikroişlemciler ve Mikrobilgisayarlar
3 4 8 A 0 5 0 0 0 0 CS SS 4 2 1 4 F F E 0 IP + SP + 3 8 A B 4 5 F F E 0 Instruction address Stack address 1 2 3 4 0 DS 0 0 2 2 DI + 1 2 3 6 2 Data address Segment adresleri segment registerlerinde (CS,DS,ES,SS); ofset adresleri ise pointer registerlerden birisinde tutulur. Örn: 8088/8086 tarafından yürütülecek bir sonraki komutun adresi, CS:IP ikilisi yardımıyla edle edilir. 8088/8086 tarafından hafızadaki verinin adresi, DS: DI (veya SI,BX) ikilisi yardımıyla edle edilir. Mikroişlemciler ve Mikrobilgisayarlar
Korumalı modda, fiziksel adres bir dizi dönüşüm sonucunda elde edilmektedir. Bu modda, segment kaydedicilerinde bulunana bilgilere seçici (selector) denir. Diğer bir deyişle korumalı modda, segemet kavramının yerini selektor kavramı almaktadır. Selektör doğrudan fiziksel bellekte bir yer göstermez, betimleyici tablo (descriptor table) denen bir bölgede index belirtir. Gerçek segment değeri bu tablodan çekilmektedir. Mikroişlemciler ve Mikrobilgisayarlar
Bir selektör 3 parçadan oluşur. 15 2 0 13 bit RPL (Requested Privilege Level) : Selektörün öncelik derecesini gösterir. Selektörler, daha önce de bahsedildiği gibi betimleyici tablo denen bir tabloda bir index göstermektedir. Betimleyici tablolar kendi aralarında 3’e ayrılır: • Global Betimleyici Tablo (Global Descriptor Table) • Yerel Betimleyici Tablo (Local Descriptor Table) • Kesme Betimleyici Tablo (Interrupt Descriptor Table) TI (Table Indıcator) : Tablo göstericisidir. TI=0 ise index global betimleyici tabloya ilişkindir. TI=1 ise index yerel betimleyici tabloya ilişkindir. Index: Selektörün index bilgisini göstermektedir.213=8192 olup index bölgesi tablo içerisindeki 8192 betimleyiciden birini seçer. Mikroişlemciler ve Mikrobilgisayarlar
15 2 0 TI=1 ise 13 bit TI=0 ise Global Betimleyici Tablo Yerel Betmleyici Tablo 0 0 1 1 2 2 3 3 LDT GDT . . . . . . . . . . . . 8192 8192 Mikroişlemciler ve Mikrobilgisayarlar
Örn: 211Ah biçiminde bir selektör bilgisi bulunmaktadır. Bu selektörü incelediğimizde 2 1 1 A 15 0 Index = 423h = 1059 TI RPL 0 1 2 3 GDT 1059 . . . . . . 8192 Mikroişlemciler ve Mikrobilgisayarlar
Korumalı modda, adres bilgileri 16 bit selektör ile offsetten oluşmaktadır. Selektör ve offsetten oluşan adrese sanal adres (virtual address) denir. Sanal Adres (Virtual Address) [Selector : Offset] Korumalı modun sayfalama özelliği etkin durumdaysa sanal adres önce doğrusal adrese, daha sonra ise fiziksel adrese çevrilir. Eğer sayfalama özelliği pasif ise, doğrusal ve fiziksel adresler aynıdırlar. Sayfalama Aktif: Sanal Adres Doğrusal Adres Fiziksel Adres Sayfalama Pasif: Sanal Adres = Sanal Adres Fiziksel Adres Mikroişlemciler ve Mikrobilgisayarlar
Betimleyici Tablolar ve Betimleyici Tablo Kaydecileri Global Betimleyici Tablo Kesme Betimleyici Tablo Yerel Betmleyici Tablo 0 0 0 1 1 1 2 2 2 3 3 3 . . . . . . . . . . . . LDT GDT . . . . . . IDT B) C) A) Betimleyici tablolar her biri 8 byte uzunluğunda olan betimleyicilerden oluşmaktadır. Selektör betimleyici tablo içerisinde bir betimleyiciyi gösterir. Betimleyici tablo kaydedicileri daha önce koruyucu kaydediciler kısmında gösterildiği gibi, betimleyici tabloların bellekte nerede bulundukları ve ne kadar uzunlukta olduğunu gösterir. Mikroişlemciler ve Mikrobilgisayarlar
A) GDTR (48 bit) Taban Adres(32 bit) Limit(16 bit) GDTR Tablo Uzunluğu Tablonun uzunluğu limit kısmında bulunan sayının 1 fazlasıdır. Global Descriptor Table Mikroişlemciler ve Mikrobilgisayarlar
Örn: GDTR kaydedicisinin limit kısmı 0FFF ve taban kısmı 0001F000h’dır. Buna göre GDT tablosunun başlangıç adresi, bitiş adresi ve uzunluğu nedir? Bu tablo kaç adet betimleyici içermektedir? Başlangıç adresi : 0001F000h dır. Uzunluğu: 0FFF + 1 = 1000h 4096 byte 0001F000 Bitiş adres: 0001F000 + 0FFF = 1FFFF Bir betimleyicinin uzunluğu 8 byte olup, bu GDT içerisinde 4096/8 = 512 tane betimleyici saklanabilmektedir. Global Descriptor Table 4K 0001FFFF Mikroişlemciler ve Mikrobilgisayarlar
Örn: GDTR kaydedicisinin limit kısmı 16 olduğuna göre GDT’in uzunluğu en fazla ne kadar olabilir? Böyle bir durumda tabloda kaç adet betimleyici olur? Limit kısmında yazılabilecek en büyük değer FFFF olup, Uzunluğu: FFFF + 1 = 10000h 65536 byte Böyle bir durumda depolanabilecek betimleyici sayısı ise: 65536 / 8 = 8192’dir. Dikkat edilirse bu selektör seçicisinde de 13 bitlik kısım (213 = 8192) bu kadarlık bir alanı adreslemek için kullanılmaktaydı. 15 2 0 13 bit SELECTOR Mikroişlemciler ve Mikrobilgisayarlar
B) LDTR (16 bit) Bu kaydedici tablonun limit ve taban adreslerini içermez. Yerel betimleyici tablonun limit ve taban adreslerini global betimleyici tablonun içerisinde bir bir betimleyici şeklinde bulunur. Bu yüzden LTDR kendi başına bir selektör görevindedir. 15 2 0 13 bit Taban 0 GDT LDT 0 1 1 2 2 3 Tablo Uzunluğu 3 . . . . . . . . . . . . 41 Mikroişlemciler ve Mikrobilgisayarlar
Örn: LDTR kaydedicisinin içindeki değer 1F2Ah olsun. LDT tablosunun taban adresi ve uzunluğu GDT hangi betimleyicisinden çekilmektedir? 1 F 2 A 15 0 Index = 3E5h = 997 TI RPL 0 1 2 3 GDT 997 . . . . . . Mikroişlemciler ve Mikrobilgisayarlar
C) IDTR (48 bit) Bu kaydedici kesme betimleyici tablonun başlangıç adresini ve uzunluğunu tutar. Kesme betimleyici tablo korumalı modun kesme vektörü gibi düşünülebilir. Taban Adres(32 bit) Limit(16 bit) IDTR Tablo Uzunluğu Interrupt Descriptor Table Mikroişlemciler ve Mikrobilgisayarlar
Örn: IDTR kaydedicisinin limit kısmı en fazla ne uzunlukta olabilir ve bu tabloda en fazla kaç betimleyici olması mümkündür? Tablonun en büyük uzunluğu FFFFh +1 = 10000h 65536 byte olup x86 ailesinde toplam kesme sayısı 256 olduğu için 256 x 8 = 2048 byte uzunlukta olması yeterlidir. Örn: IDTR kaydedicisinin limit kısmı 03FFh ve taban kısmı 00001000h ise tablo uzunluğu nedir ve tablo içerisinde kaç adet betimleyici bulunmaktadır? Başlangıç adresi : 00001000h dır. Uzunluğu: 03FF + 1 = 400h 1024 byte Bitiş adres: 00001000 + 03FF = 13FF Bir betimleyicinin uzunluğu 8 byte olup, bu IDT içerisinde 1024/8 = 128 tane betimleyici saklanabilmektedir. Mikroişlemciler ve Mikrobilgisayarlar
Betimleyiciler (Descriptors) Betimleyicilerin türleri ne olursa olsun hepsi 8 byte uzunluğundadır. Betimleyiciler 2’ye ayrılırlar: Betimleyiciler Sisteme İlişkin Olmayan Betimleyiciler Sisteme İlişkin Betimleyiciler Mikroişlemciler ve Mikrobilgisayarlar
Segment Betimleyicisi 0 31 Segment Base (15-0) Segment Limit (15-0) Limit (19-16) Base (23-16) Base (31-24) AVL DPL TYPE A P S O D G 63 32 Segment betimleyicileri koruma mekanizması için gerekli olan segment bilgilerini tutarlar. Bu yapı sayesinde 8086 işlemcileriyle olan uyumluluk korunmuştur. Bu yöntemle, 8086 işlemcisindeki segment yazmaçları atılmamış işlevleri değiştirilerek kullanılmıştır. Böyle bir yapı, işlemci içerinde özel bir saklayıcada saklanamayacak büyüktür. Mikroişlemciler ve Mikrobilgisayarlar
Hatırlanacağı üzere her bir segment kaydedicisinin 8 bytelık bir tampon kaydedicisi vardır. Erişim Hakkı Taban Adres Limit 0 63 Segment kaydedicilerine bir yükleme yapıldığında işlemci tablonun ilgili betimleyicisini bellekten okuyarak bu tampon kaydedicilerine yerleştirir. Böylece betimleyici tablosuna erişim sadece segment kaydedicilerine yükleme sırasında sadece 1 kez yapılmaktadır. Mikroişlemciler ve Mikrobilgisayarlar
Örn: MOV AX,1A13 MOV DS, AX komutları korumalı moda çalıştırılırsa işlemci nasıl davranır? İşlem sonucunda DS 1A13 verisiyle yüklenecektir. 1 A 1 3 15 0 Index = 342h = 834 TI RPL 0 Bu durumda tablonun 834. elemanından başlayarak 8 byte’lık bilgi tablodan alınarak DS’in tampon kısmına okunur. 1 2 3 GDT 834 . . . . . . Mikroişlemciler ve Mikrobilgisayarlar
Segment Limiti 0 31 Segment Base (15-0) Segment Limit (15-0) Limit (19-16) Base (23-16) Base (31-24) AVL DPL TYPE A P S O D G 63 32 Betimleyici içerisindeki 20 bit, segmentin bellekteki uzunluğunu göstermektedir. Bu 30 bitlik kısım betimleyici içerinde ayrık olarak bulunur. Segmentin limit kısmı koruma mekanizması için gereklidir. Programın kod ya da data olarak sınırların dışına çıkıp çıkmadığı bu limit değerine bakılarak kontrol edilir. Korumalı modda çalışan bir işlemci için segment limiti ne kadardır ? Mikroişlemciler ve Mikrobilgisayarlar
Limit için 20 bitin kullanıldığı bir durumda segmentin büyüklüğü 220=1048576=1 MB olur. Fakat korumalı modda segmentin boyutu bununla sınırlı olmayıp G(granularity) bitinin durumuna bağlı olarak 4 GB’a kadar çıkabilmesi mümkündür. G=0 ise, segmentin uzunluğu limit kadar olabilir (1 MB). G=1 ise, segmentin uzunluğu limit kısmında bulunan sayının 4096(4K) ile çarpımına eşittir. G=1 ise, en büyük segment uzunluğu 1 MB x 4096 = 4 GB olur. Görüldüğü segmentin 1 MB sınırını aşabilmesi için G=1 olması gerekmektedir. Mikroişlemciler ve Mikrobilgisayarlar