Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Intel 8086 Mimarisi Adresleme Modları 1 Mikroişlemciler.

Benzer bir sunumlar


... konulu sunumlar: "Intel 8086 Mimarisi Adresleme Modları 1 Mikroişlemciler."— Sunum transkripti:

1 Intel 8086 Mimarisi Adresleme Modları 1 Mikroişlemciler

2 İçerik 2 8086 Mikroi ş lemcinin iç tasarımı

3 3 8086 Mimarisi

4 INTEL AİLESİNİN 16 BİTLİK MİKROİŞLEMCİLERİ- 8086/8088 MİKROİŞLEMCİSİ 4 İ Ç M İ MAR İ S İ Ş ekilde x86 ailesinin 16-bit çekirdek mimarisinin basitle ş tirilmi ş bir gösterimi verilmi ş tir. Mikroi ş lemci temel iki ayrı çalı ş ma birimine sahiptir. Bu birimler:Yürütme birimi (Execution Unit – EU) ve yol arabirimi (Bus Interface Unit – BIU). EU komutları yorumlamakta (decode) ve yürütmektedir. BIU ise yol i ş lerini (i ş lem kodu okuma, operand okuma, veri saklama ve I/O cihazlarıyla haberle ş me gibi) gerçekle ş tirmektedir.

5 5 8086 / 8088 mikroişlemcisinin iç mimarisi

6 YÜRÜTME BİRİMİ EU komutları çözme ve komutları yürütme için bir kontrol birimine; aritmetik ve lojik i ş lemler için bir ALU’ya; genel amaçlı saklayıcılara (AX, BX, CX ve DX); i ş aretçi (BP ve SP) ve indis (SI, DI ) saklayıcıları ile bayraklar (flags) saklayıcısına sahiptir. EU içindeki kontrol birimi, makine dilindeki komutları yorumlamakta ve komutları yürütmek için gerekli i ş lemleri kontrol etmektedir. EU komut byte’larını BIU tarafından komut kuyru ğ una (instruction queue ) yerle ş tirilme sırasıyla, komut kuyru ğ undan almaktadır. 6

7 YÜRÜTME BİRİMİ- Devam.. E ğ er EU hafızadan bir operand’a ihtiyaç duyarsa veya bir sonucu hafızada saklamak isterse istenilen i ş lemi BIU’e yönlendirir. EU, bir i ş lem kodu okuma veya saklama i ş lemi için, BIU tarafından fiziksel adresi hesaplamada gerekenleri sa ğ lamaktadır. ALU, operand’larını, dahili yol üzerinden, genel amaçlı saklayıcılardan, komut byte’larından veya BIU’dan (örne ğ in, hafızadan okunan operand’lar ) almaktadır. ALU 8-bit veya 16- bit i ş lem yapma kapasitesine sahiptir. 7

8 YOL ARABİRİMİ BIU, bütün dı ş yol i ş lemlerini kontrol eden bir yol kontrol birimine; EU için komut byte’larını tutan komut kuyru ğ una; fiziksel hafıza adresleri üretme için bir toplayıcıya; 4 segment saklayıcısına (CS, SS, DS ve ES) ; komut i ş aretçisine (IP) ve verileri geçici olarak saklamada kullanılan bazı iç saklayıcılara sahiptir. BIU, hafıza ve I/O i ş lemleri dahil, bütün dı ş yol i ş lemlerini kontrol etmekten sorumludur. Tümdevre harici adres yolu, belli bir hafıza hücresini veya I/O port’unu seçmede kullanılır. 8

9 YOL ARABİRİMİ-Devam.. BIU, komut byte’larını okur ve onları EU için komut kuyru ğ una yerle ş tirir. BIU en fazla 4 (8088 için ) veya 6 (8086 için ) byte komut kodunu okuyabilir. EU, bir veri okuma veya yazma i ş lemine ihtiyaç duymadı ğ ı veya program akı ş ında bir dallanma olmadı ğ ı sürece, BIU komut byte’larını önden okuma için serbesttir. Bu ş ekilde komut önden okuma, BIU ve EU birimlerinin paralel çalı ş masına imkan tanır. Bu sayede i ş lemcinin veri i ş lem hızı artar. Bu ş ekilde çalı ş an bilgisayar mimarisine i ş hatlı mimari (pipelined architecture) denir. Ş ekil 3.2’de klasik bir 8- bit i ş lemcideki, örne ğ in 8085A’daki ile i ş hatlı mimariye sahip 8086/8088 mikroi ş lemcilerindeki yol zamanlaması görülmektedir. 9

10 YOL ARABİRİMİ-Devam.. Ş ekil 3.2 (a)’da i ş lemci, sırasıyla hafızadan i ş lem kodu okuma okuma (fetch), kod çözme (decode) ve yürütme (execute) i ş lemlerini sırayla yapıp iki komut için bitirmekte ve üçüncü komutun i ş lem kodunu okumaktadır. Birinci komutun yürütmesinde, hafızadan bir veri okuma i ş lemi ve ikinci komutun yürütmesinde ise, hafızaya bir yazma i ş lemi yapılmaktadır. 10

11 YOL ARABİRİMİ-Devam.. 11

12 YOL ARABİRİMİ-Devam.. Ş ekil 3.2 (b)’ deki x86 i ş lemcisinde, birinci komutun yürütülmesi ile ikinci komutun okuma i ş lemi (fetch 2) üst üste gelmekte, yani aynı anda paralel yapılmaktadır. İ kinci komutun yürütülmesi de üçünçü komutun okunması (fetch 3 ) ile paralel yapılmaktadır. Klasik yapıdaki mikroi ş lemcide, yukarıda ş ekil 3.2 (a )’ da verilen zamanlama diyagramı sonunda, üçüncü komutun i ş lem kodu okunurken, yakla ş ık aynı zamanda, i ş hatlı yapıdaki i ş lemci, üçüncü komutun yürütmesini bitirmi ş ve dördüncü komutun i ş lem kodunuda okumu ş durumdadır. Klasik mimaride mikroi ş lemci kod çözümü yaparken, (bazen de yürütme sırasında, operand gerektirmeyen komutlarda )yol, bo ş ta kalmakta, yolda bir i ş yapılmamaktadır. Buna kar ş ın, i ş hatlı mimaride yol (genelde ) bo ş kalmamaktadır. Verilen bu zamanlama diyagramından görüldü ğ ü gibi, i ş hatlı mimari yapı mikroi ş lemcinin veri i ş lem hızını artırmaktadır. 12

13 SAKLAYICILAR Ş ekil 3.3 intel x86 ailesinde yer alan mikroi ş lemcilerin temel saklayıcılarını göstermektedir. Gri olarak gölgelendirilmi ş alanlar, 80386, 80486 ve pentium gibi 32-bit i ş lemcilerde bulunur. X86 saklayıcıları 3 grupta toplanabilir. Genel amaçlı saklayıcılar, i ş aretçi (pointer ) ve indis (index ) saklayıcıları ve segment saklayıcıları. Bu gruplara ek olarak, CPU’ya ait çe ş itli durumları gösteren, örne ğ in bir aritmetik veya lojik i ş lem sonucu gibi, bir bayrak (flag ) saklayıcısı da bulunmaktadır. 13

14 SAKLAYICILAR-Devam.. 14

15 GENEL -AMAÇLI SAKLAYICILAR Bu grupta yer alan saklayıcılar, programcı tarafından çok de ğ i ş ik amaçlarla kullanılabilmektedir. Genel amaçlı saklayıcılardan her biri, 32-bit (EAX, EBX, ECX ve EDX), 16-bit (AX, BX, CX ve DX ) veya 8-bit (AH, AL, BH, BL, CH, CL ) olarak kullanılabilir. Daha sonraki bölümlerde açıklanacak bazı komutlar, bu saklayıcıları özel i ş lemlerde kullandıkları için, her birine bu i ş lemleri belirten bir isim verilmi ş tir. (accumulator, base, count ve data ) Saklayıcılar, assembly dilde, iki veya üç harfli gösterimlerle belirtilir. Örne ğ in, accumulator (ACC ) EAX, AX, AH veya AL ile ifade edilir. 15

16 GENEL -AMAÇLI SAKLAYICILAR (Devam..) AX (Accumulator-Toplam ) : Bir aritmetik veya lojik i ş lemden sonra sonucu içerdi ğ i (tuttu ğ u ) için bu ş ekilde adlandırılmı ş tır. EAX, AH veya AL ş eklinde adreslenir. BX (Base- Taban ) : Hafızada yer alan bir verinin taban (ofset ) adresini veya XLAT (translate ) komutuyla eri ş ilen bir tablo verisinin taban adresini içermede sık olarak kullanılır. EBX, BH veya BL ş eklinde adreslenir. CX (Count –sayma ) : Bit kaydırma (shift ) veya döndürme (rotate ) gibi i ş lemlerde, bit -sayısını (count ) tutmada string veya LOOP komutundaki i ş lem sayısını belirtmede döngü sayacı olarak kullanılır. ECX, CH veya CL ş eklinde adreslenir. DX (Data –veri ) : Özellikle, 16- veya 32-bit çarpma i ş lemlerinden sonra, sonucun yüksek de ğ erli kısmını, bir bölme i ş leminden önce bölünen sayının yüksek de ğ erli kısmını ve de ğ i ş ken I/O komutunda I/O port numarasını tutma i ş lemlerinde kullanılır. EDX, DH veya DL ş eklinde adreslenir. 16

17 İŞARETÇİ VE İNDİS SAKLAYICILARI İş aretçi ve indis saklayıcıları, genel amaçlı olarak da kullanılabilmelerine ra ğ men, genellikle, hafızada yer alan operand’lara eri ş imde indis veya i ş aretçi olarak kullanılır. SP (Stack pointer-yı ğ ın i ş aretçisi ) : En son giren ilk çıkar (Last- İ n First-Out- L İ FO ) ş eklinde çalı ş an, yı ğ ın (stack ) hafızada yer alan bir veriyi adreslemede kullanılır. Bu saklayıcı, PUSH ve POP komutları yürütülürken; bir alt program CALL komutu ile ça ğ rıldı ğ ında veya programdan bir RET komutu ile döndürüldü ğ ünde ; kesme i ş lemlerinde otomatik olarak CPU tarafından verileri yı ğ ın hafızaya yazmada ve kesme programında geri dönerken tekrar geri okumada kullanılmaktadır. ESP 32-bit i ş aretçi olarak 32-bit i ş lemcilerde kullanılır. 17

18 İŞARETÇİ VE İNDİS SAKLAYICILARI (Devam..) BP (Base pointer- taban i ş aretçisi ) :Yı ğ ın hafızada yer alan bir veri dizisini (data array ) adreslemede kullanılır. EBP, 32-bit i ş aretçi olarak 32-bit i ş lemcilerde kullanılır. SI (Source İ ndex-kaynak indisi ) : string komutlarında kaynak veriyi dolaylı adreslemede kullanılır. ESI, 32-Bit i ş aretçi olarak 32-bit i ş lemcilerde kullanılır. DI (Destination Index- Hedef İ ndisi ) : String komutlarında hedef veriyi dolaylı adreslemede kullanılır. EDI, 32-bit i ş aretçi olarak 32-bit i ş lemcilerde kullanılır. IP (Instruction Pointer-Komut İş aretçisi ) : Her zaman mikroi ş lemci tarafından yürütülecek bir sonraki komutu adreslemede kullanılır. IP içeri ğ inin CS x 10H ile toplanmasıyla, bir sonraki komutun gerçekte olan fiziksel hafıza adresi bulunur. EIP, 32- bit i ş aretçi olarak 32-bit i ş lemcilerde kullanılır. 18

19 SEGMENT SAKLAYICILARI Mikroi ş lemcideki di ğ er saklayıcılarla beraber hafıza adresleri üretmede kullanılır. Ailenin 8086-80486 ürünlerinde 4 veya 6 tane segment saklayıcısı bulunmaktadır. CS (Code Segment ) : Kod segment, hafızanın, programları ve alt programları tutan bir bölümdür.CS saklayıcısı, program kodunun ba ş langıç taban adresini belirler. CS, 8086-80286 mikroi ş lemcilerinde 64 Kbyte, 80386 ve 80486’da 4 GB ile sınırlıdır. DS ( Data Segment ) : Veri segment’i, bir program tarafından kullanılan verilerin bulundu ğ u hafıza alanıdır.DS saklayıcısı, bu veri alanının ba ş langıç taban adresini belirler. 19

20 SEGMENT SAKLAYICILARI (Devam..) ES ( Extra Segment ) : Bazı string komutlarında kullanılan ek veri alanıdır. SS ( Stack Segment ) : Yı ğ ın için kullanılan hafıza alanını belirler. Yı ğ ın segment’ine yazılacak veya okunacak verinin adresi, SP saklayıcısı tarafından belirlenir. BP saklayıcısı da SS’de bulunan veriyi adreslemede kullanılır. FS ve GS : Bu ek segment saklayıcılar, 80386 ve 80486’da bulunup programlarda ek hafıza segment’leri olarak kullanılabilir. 20

21 BAYRAKLAR ( FLAGS ) SAKLAYICISI Bayraklar (flags), mikroi ş lemcinin çalı ş masını belirledi ğ i gibi, çalı ş ma sırasındaki durumunu da yansıtır. Ş ekil 3.4, 8086/8088 mikroi ş lemcilerinin bayraklar (flags) sayıcısını göstermektedir. 8086/8088’ den pentium’a kadar olan mikroi ş lemcilerde, bu bayraklar uyumludur. Buna kar ş ın, 8086-80286 mikroi ş lemcilerinde bayrak sayıcısı 16-bit iken 80386 pentium i ş lemcilerinde EFLAGS (Extended flags ) saklayıcısı 32-bit içermektedir. Bayrak bit’leri, birçok aritmetik ve lojik komut yürütüldükten sonra de ğ i ş mektedir. 21

22 BAYRAKLAR ( FLAGS ) SAKLAYICISI (Devam..) C ( Carry ) : Bir aritmetik i ş lemde, toplamadan sonraki eldeyi (carry ) veya çıkarmadan sonraki ödüncü ( borrow ) belirtir. Programlarda hata durumu, özel i ş lem durumları ve sonuçları ile ilgili Boolean bayrak olarak da kullanılır. P (Parity ) : Tek e ş lik ( odd parity ) i ş lemi, lojik 0; çift e ş lik (even parity ) i ş lemi, lojik 1 ile gösterilir. E ş lik, tek veya çift olarak belirtilen, bir byte veya word’deki 1’lerin sayısıdır. Örne ğ in, ikili olarak belirtilen bir sayı ( 00110100 ) 3 tane 1’e sahipse, o sayı Tek E ş lik’tir. E ğ er bir sayı 1’lere sahip de ğ ilse ( bütün bit’ler “0” ), o sayı Çift E ş lik olarak kabul edilir. A (Auxiliary carry ) : Yapılan bir i ş lem sonucunda, bit pozisyonları 3 ve 4 arasında olan ( en sa ğ daki bit sıfır pozisyonundadır ), toplamadan sonraki eldeyi ve çıkarmadan sonraki ödüncü belirtir. Bu özel bayrak bit’i BCD bir toplama veya çıkarma i ş leminden sonra, AL’nin de ğ erini ayarlamak (adjust ) için, DAA ve DAS komutları tarafından test edilir. Di ğ er durumlarda, A bayrak bit’i mikroi ş lemci tarafından kullanılmaz. 22

23 BAYRAKLAR ( FLAGS ) SAKLAYICISI (Devam..) Z (Zero ) : Bir aritmetik ve lojik i ş lem sonucunun sıfır oldu ğ unu belirtir. E ğ er Z=1 ise, sonuç sıfırdır ve e ğ er Z=0 ise sonuç sıfır de ğ ildir. S (Sign) : Bir toplama veya çıkarma i ş leminden sonra, sonucun aritmetik i ş aretini belirtir. E ğ er S=1 ise, i ş aret (Sign ) 1’lenir (set ) veya negatiftir. E ğ er S=0 ise, i ş aret temizlenir (cleared ) veya pozitiftir. Bayrakları etkileyen bir komuttan sonra, en de ğ erli bit pozisyonu S bit’ine yerle ş tirilir. T (Trap ) : E ğ er Trap bayra ğ ı 1’lenmi ş ise, tümdevre hata takip (debugging ) i ş lemi devreye girer. I (Interrupt ) : Mikroi ş lemci tümdevresinin kesme iste ğ i giri ş baca ğ ı INTR, harici kesme iste ğ i (Interrupt Request ) i ş lemini kontrol eder. E ğ er I=1 ise, INTR baca ğ ı aktif yapılır (enabled ) ve e ğ er I=0 ise, INTR baca ğ ı pasif (disabled ) olur. Aktif olma durumunda, mikroi ş lemci tümdevre INTR ucu üzerinden gelen kesmelere cevap verir. Aksi durumda, gelen kesme istekleri mikroi ş lemci tarafından ihmal edilir, yani cevap verilmez. ‘I’ bayrak bit’inin durumu, STI (Set I Flag ) ve CLI (Clear I Flag ) komutlarıyla kontrol edilir. 23

24 BAYRAKLAR ( FLAGS ) SAKLAYICISI (Devam..) D (Direction ) : String komutları yürütülürken, DI ve/veya SI saklayıcılarının artırılması veya azaltılması i ş lemlerinin seçimini kontrol eder. E ğ er D=1 ise, saklayıcılar otomatik olarak azaltılır ve e ğ er D=0 ise, saklayıcılar otomatik olarak artırılır. D bayra ğ ı STD (Set Direction ) komutuyla 1’lenir ve CLD (Clear Direction ) komutuyla 0’lanır. O (Overflow ) : Ta ş ma (overflow ), i ş aretli sayıların toplandı ğ ında veya çıkartıldıklarında olu ş an bir durumdur. Ta ş ma, i ş lem sonucunun hedef saklatıcıya sı ğ madı ğ ını gösterir. Örne ğ in, 8-bit saklayıcılarda i ş aretli sayı aritmeti ğ inde, 7FH (+127 ) sayısı 01H ile toplandı ğ ında sonuç 80H (-128 ) olur. Bu sonuç i ş aretli toplama için O- bayra ğ ı ile belirtilen bir ta ş ma durumudur. İş aretsiz i ş lemler için, O-bayra ğ ı ihmal edilir. 24

25 8086 / 8088 DIŞ MİMARİSİ Ş ekil 3.5 8088 ve 8086 mikroi ş lemcilerinin tümdevre uçlarını göstermektedir. Her iki tümdevrede 40-uç olup aralarında çok az farklılıklar bulunur. En büyük fark veri yolu uzunluklarındadır. 8088 8-bit veri yoluna sahiptir. Buna kar ş ın, 8086’da 16-bit veri yolu bulunur. 25

26 26 8086 / 8088 mikroişlemcileri

27 8086 / 8088 MN/MX Modu 8086/8088 i ş lemcileri için MN/MX ucuyla belirlenen iki çalı ş ma modu vardır. Minumum mod çalı ş ması, bu uca +5V uygulayarak; maximum mod, bu ucu topraklayarak elde edilir. Her iki mod farklı kontrol yapılarına neden olur. Bu farklı modlarda farklı sinyaller üretilir. Yukarıda belirtildi ğ i gibi, iki i ş lemci arasındaki dı ş mimari olarak en büyük fark, veri yolları uzunlukları arasında bulunur. Bununla beraber, kontrol sinyallerinden birinde de ufak bir fark vardır.8088’deki M/IO sinyaline kar ş ın, 8086’da IO/M bulunmaktadır. Di ğ er bir donanım farkı, her iki tümdevrenin 34 numaralı ucunda bulunur.8088’de bu uç SS0 ve 8086’da ise BHE/S7’dir. 27

28 AD7 –AD0 (8088 ve 8086 )- Adres/veri yolu : 8088’in seçimli (multiplexed ) Adres /veri yolunu olu ş turur. ALE sinyali aktif oldu ğ unda (lojik 1 ), hafıza adresinin veya I/O port numarasının en sa ğ dü ş ük 8-bit’ini tutar.ALE pasif oldu ğ unda (lojik 0 ) veri, bu yolda bulunur. Bu yol, bir tutma tasdikinde (hold acknowledge ) yüksek empedans durumundadır. A15 –A8 (8088 ) – Adres yolu : Bir yol çeviriminde, hafıza adres bit’lerinin üst yarısını sa ğ lar. Bu adres hatları, bir tutma tasdikinde yüksek empedans durumundadır. 28 8086 / 8088 MN/MX Modu- Devam..

29 AD15 –AD8 (8086 ) –Adres/veri yolu : 8086’nın seçimli Adres/veri yolunun üst bölümünü olu ş turur. Bu hatlar, ALE lojik 1 oldu ğ unda A15-A8 bitlerini içerir. Bu yol, bir tutma tasdikinde yüksek empedans durumundadır. A19 / S6, A18 / S5, A17 / S4, A16 / S3 –Adres /Durum yolu :Seçimli yol olup A19-A16 adres hatları ile S6-S3 durum bitlerini içerir. Bu sinyaller bir tutma tasdikinde yüksek empedans durumundadır. 29 8086 / 8088 MN/MX Modu- Devam..

30 30

31 31

32 S6 durum bit’i lojik ‘0’ da kalır. S5 bit’i IF bayrak bit’inin durumunu belirtir ve S4 ve S3 bir yol çevriminde, tablo 3.1 ‘de verildi ğ i gibi, hangi segmente eri ş ildi ğ ini gösterir. 32

33 RD- Okuma (Read ): Lojik 0 oldu ğ unda mikroi ş lemcinin hafızadan veya bir giri ş cihazından veri okudu ğ unu dı ş loji ğ e bildirir. Bu sinyal, bir tutma tasdikinde yüksek empedans durumundadır. READY- Hazır : Mikroi ş lemcinin bir giri ş sinyali olup i ş lemcinin zamanlamasına bekleme durumları ( wait states ) ekleme için kullanılabilir. E ğ er bu giri ş, lojik 0 yapılırsa, mikroi ş lemci bekleme durumuna girer ve bo ş ta kalır. Bekleme durumu istenmiyor ise normalde bu giri ş lojik 1 durumunda kalmalıdır. INTR – Interrupt Request (Kesme iste ğ i ) : Donanım kesmesi için kullanılır. IF=1 oldu ğ unda INTR giri ş i lojik 1 yapılırsa, x86 i ş lemcisi bir dı ş donanım kesmesi almı ş olur ve bunun neticesi, o an yürütülen komut tamamlandıktan sonra, kesme tasdik ( INTA ) çevrimine girer. 33

34 TEST – Test : WAIT komutu tarafından test edilen bir giri ş tir. E ğ er TEST lojik 0 ise, WAIT komutu bir NOP gibi davranır. E ğ er TEST lojik 1 ise, WAIT komutu TEST giri ş inin lojik 0 olmasını bekler. Bu uç 8087 nümerik i ş lemcisiyle beraber kullanılır. NMI – Nonmaskable Interrupt ( Maskelenemeyen kesme ) : INTR gibi, bir dı ş donanım kesme giri ş idir. Bu kesmenin olu ş ması için IF bit’inin 1 olması gerekmez. RESET –Reset : Bu giri ş, en az 4 saat periyodu lojik 1 seviyesinde tutuldu ğ unda mikroi ş lemci kendisini sıfırlar ve i ş lemci FFFF0h adresindeki komuttan itibaren çalı ş maya ba ş lar. Ayrıca IF bayra ğ ı da sıfırlanır. CLK – Clock (saat ) : Mikroi ş lemcinin temel zamanlama sinyalini sa ğ lar. VCC – Pover supply (Besleme kayna ğ ı ) : +5V besleme GND – Ground ( Toprak ) : İş lemci iki toprak giri ş ine sahip olup her ikisinin de topra ğ a ba ğ lanması gerekmektedir. 34

35 MN / MX – Minumum / Maximum mode : İş lemcinin minumum veya maximum modlarından birinde çalı ş masını seçme giri ş idir. Bu giri ş in +5V olması durumunda, i ş lemci minumum modunda, topra ğ a ba ğ lanması durumunda maximum modda çalı ş ır. BHE / S7 – Bus High Enable ( Yol Yüksek Aktif ) : 8086 i ş lemcisinde, bir okuma veya yazma çevriminde, veri yolunun üst 8- bit’inin ( D15 – D8 ) aktif oldu ğ unu dı ş loji ğ e bildirir. S7 ‘nin durumu her zaman lojik 1’dir. 35

36 8086 /8088 HAFIZA MİMARİSİ 8086 / 8088 mikroi ş lemcisi 20-bit adres yolu ile toplam 1048576 (1M ) byte hafıza hücresi adresleyebilmesine kar ş ın, her iki i ş lemcinin fiziksel hafıza yapıları farklıdır. Bununla beraber, bu i ş lemcilerin lojik hafızaları ş ekil 3.8 de görüldü ğ ü gibi aynıdır. Lojik hafıza, genellikle yazılım tarafından programcıya görülen hafızaya verilen isimdir. Bu hafıza, donanım tasarımcısı tarafından görülen, gerçek hafıza yapısını olu ş turan fiziksel hafızadan farklı olabilir. 36

37 8086 /8088 HAFIZA MİMARİSİ 8088 ve 8086 mikroi ş lemcilerinin lojik hafızası 00000h tan ba ş layıp FFFFFh’a kadar uzanır.Lojik hafıza geni ş li ğ i bir byte (8-bit) olup bu adreslerin uzunlu ğ u 1M byte hafıza blo ğ unu belirtir.mikroi ş lemci tarafından adreslenen 16-bit bir hafıza kelimesi, herhangi bir byte adresinden ba ş lar ve pe ş pe ş e 2 bye i ş gal eder. 37

38 8086 mikroi ş lemcisinin fiziksel hafıza haritaları geni ş lik olarak birbirinden farklıdır.8088 hafızası 8-bit, 8086 hafızası ise 16-bit geni ş li ğ indedir.Programcı için hafıza her zaman 8-bit geni ş li ğ inde olmasına ra ğ men, fark sadece donanım tasarımcısı için bulunur. Ş ekil 3.9 8088 mikroi ş lemcisinin fiziksel hafıza alanını göstermektedir. bu hafıza haritası ş ekil 3.8’de verilen lojik hafıza haritası ile aynıdır. 8088’in hafıza arabirimi 8085a i ş lemcisine benzemektedir. 38

39 8086 mikroi ş lemcisinin fiziksel hafıza haritası ş ekil 3.10’da görülmektedir.8088’den farklı olarak ki ayrı hafıza blogu içermektedir. Tek blok (yüksek hafıza) ve çift blok (dü ş ük hafıza). Her 8086 blogu 512k*8 olup toplam adreslenebilir hafıza yine 1M byte’tır. bu yapının avantajı, 8086, byte veya kelime (16-bit, word) verisini do ğ rudan adresleyebilmektedir. bundan dolayı, 8086, 16-bit bir kelimeyi bir i ş lemde okuyup yazabilmektedir.s(verinin adresinin çift oldu ğ u sa ğ landı ğ ında). Buna kar ş ın, 8088, 16-bit veri aktarımı için 2 okuma veya yazmaya gerek duyar. 8086 yazılımı daha hızlı çalı ş ır.Çünkü 8086 bir çok komuta ve 16-bit veriye 8088’in iki katı hızında eri ş ir. 39

40 8086 fizikel hafıza yapısı 40

41 41

42 SEGMENT’Lİ HAFIZA YAPISI 8086/8088 mikroi ş lemcisinde hafıza eri ş im, segment saklayıcıları yoluyla yapılır. Herbir segment hafıza blo ğ u 64k byte’tır. Ş ekil 3.11’de segment saklayıcıları ile adreslenen bir hafıza hariası örne ğ i görülmektedir.hafıza alanında aynı anda 4 farklı segment bulunabilmektedir.Bunlar: kod segment (CS), veri segment (DS), ekstra segment (es) ve yı ğ ın segmentidir(SS). 42

43 43

44 Her segment saklayıcısı, 20-bit adresin 16-bit kısmını tutar.segment saklayıcıda bulunan 16-bit adresin dü ş ük de ğ erli bölümüne, 0h(00002)eklenir.Ayrıca bir ofset (indis)bu adresle toplanarak, donanım tarafından otomatik olarak20-bit adres elde edilir.bu i ş leme lojik adresin fiziksel adrese çevrilmesi denir.segment saklayıcılarına göre a ş a ğ ıda açıklanaca ğ ı gibi, ofset, de ğ i ş ik saklayıcılarda gelir. E ğ er bir 8086/8088 sistemi sadece 64k byte hafıza içeriyorsa, bütün 4 segment saklayıcıları 0000h ile yüklenir ve segmentler üst üste çakı ş ır.Bu durumda adres aralı ğ ı X0000h-XFFFFh arasında de ğ i ş ir.(X herhangi bir 16-lı rakamdır) Her bir segment saklayıcısı, özel bir fonksiyona sahiptir ve bir veya daha çok indis veya i ş aretci saklayıcısı ile ili ş kilidir.bir hafıza adresi üretmek için, bir segment saklayıcısının içeri ğ i, bir ofset adres adres tutan bir indis veya i ş aretci saklayıcısına eklenir. 44

45 Ş ekil 3.12’de bir komut tarafından adreslenen bir verinin, fiziksel adresinin üretimi görülmektedir.Bu örnekte, veri segment saklayıcısı DS 1000h içermekte, yani veri segment 10000h fiziksel adresinden itibaren ba ş lamaktadır.Taban saklayıcısı BX’te ofseyt adres 0020h bulunmakta, ve böylece fiziksel adres 10020h veya 1000h*10h+0020h olmaktadır 45

46 Kod segment CS, program ve veri alanı olarak kullanılabilmesine ra ğ men, genelde, program kodlarının bulundu ğ u alandır.8086/8088 tarafından yürütülecek bir sonraki komutun adresi, komut i ş artecisi IP’ye CS*10h içeri ğ inin toplanmasıyla elde edilir. Veri segment’i DS, bir çok komut ve adresleme modu tarafından eri ş ilen program verilerini tutar.Hafızadaki verinin adresi, BX, SI veya DI saklayıcılarından birine DS*10h içeri ğ inin toplanmasıyla elde edilir. Yı ğ ın (stack) segment’i SS, L İ FO(last In First Out)tarzında çalı ş maktadır.bir yı ğ ın hücresinin adresi, SP’nin içeri ğ i artı SS*10h’2tır.BP tarafından adreslenen veri de normalde yı ğ ın segment’inde bulunur. ES string komutları tarafından kullanılan veri alanıdır.bir string komutu yürütüldü ğ ünde hedef aders DI artı ES*10h, kaynak veri ise, SI artı ES*10h’tır. 46

47 SEGMENT’Lİ HAFIZA YAPISININ AVANTAJLARI Yukarıda anlatılan segment’li hafıza yapısı, ilk bakı ş ta ş a ş ırtıcı ve zor görülebilir.bu hafıza yapısı için hatırlatılması gerekenler özetle ş unlardır:Program i ş lem kodları CS alanından okunmakta, program verileri DS ve ES alanlarında saklanmaktadır.yı ğ ın i ş lemleri ise, SP ve BP saklayıcılarını kullanarak SS üzerinde i ş lem yapar. Ayrı kod ve veri alanlarının olmasının ilk avantajı, bir programın, farklı veri blokları üzerinde çalı ş abilmesidir.bu i ş lem, DS saklayıcısına farklı bir blo ğ a i ş aret eden yeni bir adresin yüklenmesiyle yapılır. 47

48 Segment’li hafıza yapısının en büyük avantajı, lojik adresler üreten x86 programlarının hafızanın herhangi bir yerine yüklenip çalı ş tırılabilmesidir.Bunun nedeni lojik adreslerin her zaman.CS taban adresinden ba ğ ımsız olarak, 0000h ile FFFFh arasında de ğ i ş mesidir. 48

49 49

50 50 8086 Mimarisi


"Intel 8086 Mimarisi Adresleme Modları 1 Mikroişlemciler." indir ppt

Benzer bir sunumlar


Google Reklamları