Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Mikroişlemciler ve Mikrobilgisayarlar

Benzer bir sunumlar


... konulu sunumlar: "Mikroişlemciler ve Mikrobilgisayarlar"— Sunum transkripti:

1 Mikroişlemciler ve Mikrobilgisayarlar
Mikroişlemcilerin Farklı Çalışma Modları (Intel İşlemcilerinde Korumalı Mod) Mikroişlemciler ve Mikrobilgisayarlar

2 Intel İşlemcilerin Tarihsel Gelişimleri
Yıl Mikroişlemci Fiziksel Bellek Alanı Yazmaç Uzunluğu 1974 8080 64K 8 1977 8085 1978 8086 1 MB 16 1979 8088 1980 8096 8K (İçsel) 1981 80186 80188 1982 80286 16 MB 1985 80386 DX 4 GB 32 1987 80386 SL 32 MB 1988 80386SX 1989 80486DX 4GB 1991 80486SX 1994 Pentium Mikroişlemciler ve Mikrobilgisayarlar

3 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

4 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

5 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

6 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

7 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

8 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

9 Ö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ı (Virtual Memory) 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

10 8086 İşlemcisinin Kaydedicileri
Mikroişlemciler ve Mikrobilgisayarlar

11 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 ve sonraki işlemcilerde bulunur. Mikroişlemciler ve Mikrobilgisayarlar

12 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

13 386,486 ve Pentium İşlemcilerinin Kaydedicileri
Mikroişlemciler ve Mikrobilgisayarlar

14 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

15 Mikroişlemciler ve Mikrobilgisayarlar
Genel Amaçlı Kaydediciler (EAX,EBX,ECX,EDX,ESI,EDI,EBP, ESP): (General Purpose Registers) Bu kaydediciler, 16 bit 8086 ve 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

16 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

17 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

18 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

19 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

20 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

21 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) PE MP EM TS ET NE WP Resv. AM NW CD PG Reserved Paging Cache Disable No Write Alignment Mask Write Protect Numeric Exception Extension Type Task Switch Emulate Math Proc. Monitor Coprocessor Protected Enable 1 2 3 4 5 16 17 18 29 30 31 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

22 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 Sayfa Hatasına Yol Açan Adres Mikroişlemciler ve Mikrobilgisayarlar

23 Mikroişlemciler ve Mikrobilgisayarlar
CR3 Kaydedicisi (32 bit) 31 Dizin Tablosunun Fiziksel Adresi 3 4 11 12 Reserved PWT PCT CR3 kaydedicisi Intel mimarisinde korumalı modda fiziksel adresi tutan tek kaydedicidir. 80286’larda CR3 kaydedicisi yoktur. Mikroişlemciler ve Mikrobilgisayarlar

24 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. VME PVI TSD DE PSE MCE Reserved 1 2 3 4 5 6 31 Virtual 86 Mode Extension Time Stamp Disable Debug Extension Page Size Extension Machine Check Enable Mikroişlemciler ve Mikrobilgisayarlar

25 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 mikroişlemcilerinde bayrak saklayıcısı 16 bit olup, – Pentium serisi işlemcilerde 32 bittir (Extended Flags). Mikroişlemciler ve Mikrobilgisayarlar

26 Mikroişlemciler ve Mikrobilgisayarlar
15 O D I T S Z A P C 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

27 Mikroişlemciler ve Mikrobilgisayarlar
15 O D I T S Z A P C 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

28 Mikroişlemciler ve Mikrobilgisayarlar
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

29 Mikroişlemciler ve Mikrobilgisayarlar
KORUMALI MOD (PROTECTED MODE) Mikroişlemciler ve Mikrobilgisayarlar

30 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 Intel 80x86 hafıza adresi üretimi 1M bellek alanı Mikroişlemciler ve Mikrobilgisayarlar

31 Mikroişlemciler ve Mikrobilgisayarlar
Segment adresleri segment registerlerinde (CS,DS,ES,SS); ofset adresleri ise pointer registerlerden birisinde tutulur. Örn: 3 4 8 A 2 1 B CS IP + Instruction address 5 F E SS SP + Stack address 1 2 3 4 6 DS DI + Data address 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

32 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

33 Mikroişlemciler ve Mikrobilgisayarlar
Bir selektör 3 parçadan oluşur. 15 2 Index TI RPL 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

34 Mikroişlemciler ve Mikrobilgisayarlar
15 2 Index TI RPL TI=1 ise 13 bit TI=0 ise Yerel Betmleyici Tablo Global Betimleyici Tablo 1 1 2 2 3 3 LDT GDT . . 8192 8192 Mikroişlemciler ve Mikrobilgisayarlar

35 Mikroişlemciler ve Mikrobilgisayarlar
Örn: 211Ah biçiminde bir selektör bilgisi bulunmaktadır. Bu selektörü incelediğimizde 2 1 1 A 15 1 Index = 423h = 1059 TI RPL 1 2 3 GDT 1059 . 8192 Mikroişlemciler ve Mikrobilgisayarlar

36 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

37 Betimleyici Tablolar ve Betimleyici Tablo Kaydecileri
Yerel Betmleyici Tablo Global Betimleyici Tablo Kesme Betimleyici Tablo 1 1 1 2 2 2 3 3 3 . . LDT GDT . IDT A) B) C) 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

38 Global Descriptor Table
GDTR (48 bit) Taban Adres(32 bit) Limit(16 bit) GDTR Tablonun uzunluğu limit kısmında bulunan sayının 1 fazlasıdır. Tablo Uzunluğu Global Descriptor Table Mikroişlemciler ve Mikrobilgisayarlar

39 Global Descriptor Table
Ö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: 0001F FFF = 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

40 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  byte Böyle bir durumda depolanabilecek betimleyici sayısı ise: / 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 Index TI RPL 13 bit SELECTOR Mikroişlemciler ve Mikrobilgisayarlar

41 Mikroişlemciler ve Mikrobilgisayarlar
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 Index TI RPL 13 bit Taban GDT LDT 1 1 2 2 3 3 Tablo Uzunluğu . . 41 Mikroişlemciler ve Mikrobilgisayarlar

42 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 1 Index = 3E5h = 997 TI RPL 1 2 3 GDT 997 . Mikroişlemciler ve Mikrobilgisayarlar

43 Interrupt Descriptor Table
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

44 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  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ı h ise tablo uzunluğu nedir ve tablo içerisinde kaç adet betimleyici bulunmaktadır? Başlangıç adresi : h dır. Uzunluğu: 03FF + 1 = 400h  1024 byte Bitiş adres: FF = 13FF Bir betimleyicinin uzunluğu 8 byte olup, bu IDT içerisinde 1024/8 = 128 tane betimleyici saklanabilmektedir. Mikroişlemciler ve Mikrobilgisayarlar

45 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

46 Segment Betimleyicisi
31 32 63 Segment Limit (15-0) Segment Base (15-0) Base (23-16) A TYPE S P DPL Limit (19-16) AVL O D G (31-24) 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

47 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 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

48 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 1 Index = 342h = 834 TI RPL 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

49 Mikroişlemciler ve Mikrobilgisayarlar
Segment Limiti 31 Segment Base (15-0) Segment Limit (15-0) Base (31-24) Limit (19-16) Base (23-16) G D O AVL P DPL S TYPE A 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

50 Mikroişlemciler ve Mikrobilgisayarlar
Limit için 20 bitin kullanıldığı bir durumda segmentin büyüklüğü 220= =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

51 Mikroişlemciler ve Mikrobilgisayarlar
Örn: Bir segment betimleyicisinin limit kısmı 001FF ve G bitinin değeri ise 1 ise segmentin uzunluğu ne kadardır? Segment uzunluğu = 4096 x (001FF + 1 ) = byte = 2 MB Örn: Bir betimleyicinin yüksek anlamlı bytelarından düşük anlamlı bytelarına doğru olarak verilen hex karşılığı aşağıdadır. Buna göre betimleyicinin belirtmiş olduğu segmentin uzunluğu ne kadardır? 00 41 EF FF F0 h 4 1 E F 1 F F F 0000 0000 0100 0001 1110 1111 0000 0001 0000 0000 0000 0000 1111 1111 1111 0000 Limit Limit G 0001 1111 1111 1111 0000 + 1 = byte (yaklaşık 128 K) Mikroişlemciler ve Mikrobilgisayarlar

52 Mikroişlemciler ve Mikrobilgisayarlar
İşlemci belleğe erişim gerektiren tüm komutlarını çalıştırmadan önce erişilecek bölgenin segment limitleri içerisinde kalıp kalmadığını betimleyicisine bakarak test eder. Eğer erişilecek bölge segment limitlerinin dışında ise, bu durumu içsel bir kesme kullanarak sisteme programcısına bildirir. Bu tür içsel kesmelere korumalı modda istina (exception) denir. Derleyiciler programcının belirledikleri segmentlerin uzunluklarını sayısal değerlere çevirerek object modül içerisine yazarlar. Sembolik makine dili derleyicileri DATA ve CODE segmentlerin uzunluklarını içlerinde tanımlanan toplam veri ve kod miktarlarını hesaplayarak bulurlar. Intel işlemcileri segment limitleri dışına yapılmak istenen geçersiz erişimleri 13 (0Dh) numaralı kesmeyi çağırarak sistem programcısına bildirirler. 13 nolu kesmenin çağrılmasına yol açan durumlara “Genel Koruma Hatası (General Protection Error)” denir. Bu gibi durumlarda işletim sistemi programın yürütümünü durdurur. Mikroişlemciler ve Mikrobilgisayarlar

53 Mikroişlemciler ve Mikrobilgisayarlar
Segmentin Başlangıcı 31 32 63 Segment Limit (15-0) Segment Base (15-0) Base (23-16) A TYPE S P DPL Limit (19-16) AVL O D G (31-24) Segment betimleyicisi içerisindeki 32 bit, segmentin bellekteki başlangıcını gösteren taban adresidir. Bu da limit de olduğu gibi ayrık bir şekildedir. 32 bit ile 4 GB’lık bellek bire bir adreslenebilmektedir. Segmentin bellekte nereden başlayacağına işletim sistemi karar verir. Taban adresi fiziksel olmayıp doğrusal bir adrestir. Mikroişlemciler ve Mikrobilgisayarlar

54 Mikroişlemciler ve Mikrobilgisayarlar
D Biti 31 32 63 Segment Limit (15-0) Segment Base (15-0) Base (23-16) A TYPE S P DPL Limit (19-16) AVL O D G (31-24) 54 Kod ya da data segmentlerinin 16 ya da 32 bit olup olmadığını gösterir. Her iki segment için 4 farklı durum söz konusudur. D=0 olduğunda segment kaydedicileri (CS veya DS) 16 bitliktir. Bu durumda makine komutları, komutları gibi ele alınmaktadır. D=1 olduğunda segment kaydedicileri (CS veya DS) 32 bitliktir. Bu durumda makine komutları, 80386, ve Pentium gibi ele alınmaktadır. Mikroişlemciler ve Mikrobilgisayarlar

55 Mikroişlemciler ve Mikrobilgisayarlar
Erişim Hakları 31 32 63 Segment Limit (15-0) Segment Base (15-0) Base (23-16) A TYPE S P DPL Limit (19-16) AVL O D G (31-24) 47 40 Mikroişlemciler ve Mikrobilgisayarlar

56 Mikroişlemciler ve Mikrobilgisayarlar
TYPE S P DPL 40 47 A P (Present) : Eğer P=1 ise segment bellekte hazır bulunmaktadır. Diğer durumda (P=0) ise segment bellekte değildir. Intel işlemcileri bir segmente eriştiğinde bellekte olmadığını farkederse 11 nolu kesmeyi çağırır. DPL bitleri segmentin önceliğini belirtir. Daha önce de belirtildiği 4 tane öncelik derecesi mevcuttur. 0 dereceli öncelik en yüksek değerlikli önceliktir. Bir data segmete ancak kendisine eşit ya da kendisinden daha yüksek öncelikli programlar erişebilir. Yine benzer biçimde kod segment ancak kendisine eşit öncelikli segmentleri çağırabilir. Mikroişlemciler ve Mikrobilgisayarlar

57 Mikroişlemciler ve Mikrobilgisayarlar
TYPE S P DPL 40 47 A İşemci, betimleyicilerin hangi türde olduğuna (sisteme ilişkin veya değil) S, Type ve A bitlerini dikkate alarak karar vermektedir. S=0 ise betimleyici bir sisteme ilişkindir. S=1 ise betimleyici sisteme ilişkin değildir. S=0 olması durumunda, betimleyicinin alt grubu A biti de TYPE kısmına katılarak tespit edilir. (Toplamda 4 bit olup 16 farklı tür ifade edilebilir.) Mikroişlemciler ve Mikrobilgisayarlar

58 Sisteme İlişkin Betimleyici Türü
S=0 olması durumunda TYPE Sisteme İlişkin Betimleyici Türü Ayrılmış (Reserved) 1 Mevcut 16 bit görev durum segment betimleyicisi 2 Yerel betimleyici tablo betimleyicisi (LDT) 3 Meşgul 16 bit görev durum segment betimleyicisi 4 16 bit çağırma kapısı betimleyicisi 5 Görev kapısı betimleyicisi 6 16 bit kesme kapısı betimleyicisi 7 16 bit tuzak kapısı betimleyicisi 8 9 Mevcut 32 bit x86 görev durum segment betimleyicisi A B Meşgul 32 bit x86 görev durum segment betimleyicisi C 32 bit x86 çağırma kapısı betimleyicisi D E 32 bit x86 kesme kapısı betimleyicisi F 32 bit x86 tuzak kapısı betimleyicisi Mikroişlemciler ve Mikrobilgisayarlar

59 Type alanı da kendi içinde alt alanlara bölünebilir.
S=1 olması durumunda segment sisteme ilişkin değildir. Bu durumda segment ya kod veya data ve/veya stack segmenttir. A biti dahil edilmez. TYPE S P DPL 47 41 Type alanı da kendi içinde alt alanlara bölünebilir. TYPE S P DPL 47 41 Görüldüğü gibi E biti betimleyicinin kod mu yoksa data/stack betimleyicisi mi olduğunu gösterir. E=0 ise Data/Stack Segment Betimleyici E ED/C W/R E=1 ise Kod Segment Betimleyici E ED W E C R Mikroişlemciler ve Mikrobilgisayarlar

60 Akış Şeması S=0 S=1 Sisteme ilişkin olmayan segment betimleyicisi
S biti (44) Sisteme ilişkin olan segment betimleyicisi E=0 E=1 E biti (43) Data/Stack segment betimleyicisi Kod segment betimleyicisi Mikroişlemciler ve Mikrobilgisayarlar


"Mikroişlemciler ve Mikrobilgisayarlar" indir ppt

Benzer bir sunumlar


Google Reklamları