Bellek ve Mikroişlemci
Mikroişlemci tabanlı sistemlerdeki adres alanı mantıksal
yada fiziksel bellek olarak gösterilir. Mantıksal bellek yapısı fiziksel bellek
yapısından birçok açıdan farklıdır. Mantıksal bellek programcı tarafından
görülen bellek alanı olarak tanımlanırken fiziksel bellek , bellek sisteminin
donanımsal yapısını oluşturur.
Mantıksal bellek:
Mantıksal bellek alanı tüm intel ailesi işlemciler için temelde
aynıdır. Mantıksal bellek byte ile numaralanır.Aşağıdaki şekil tüm intel ailesi
işlemciler için bellek haritasını verir. Şekilde görüldüğü gibi tek fark bazı
işlemcilerin daha fazla bellek içermesidir. Ayrıca bazı sistemlerde fiziksel bellek
mantıksal bellekten farklılıklar gösterebilir.
8086,8088 ve 80186'da mantıksal bellek 00000H adresinden başlayarak FFFFFH adresine kadar devam eder. Bu sınırlar 1 megabyte'lık belleği kullanılabilir kılar. 80286 ve 80386SX' de mantıksal bellek alanı 000000H dan başlayarak FFFFFFH' a kadar uzanır , böylece bu sistemlerde 16 M bellek kullanılabilmektedir. 80386SL ise 0000000H'dan başlayıp 1FFFFFFH'a kadar devam ederek 32M ve son olarak 80386DX , 80386SX , 80486 00000000H'dan başlayıp FFFFFFFFH'a kadar uzanan adresleri ile 4 gigabyte adresleyebilmektedirler.
Fiziksel bellek:
Intel ailesinde fiziksel bellek genişliği farklılıklar gösterir.
8088 belleği 8 bit genişliğinde , 8086 , 80186 , 80286 , 80386SX 16 bit genişliğinde
ve 80386DX , 80486 32 bit genişliğindedir. Programlama açısından fiziksel bellek
genişliğinin pek önemi yoktur çünkü mantıksal bellek tüm işlemcilerde 8 bit
genişliğindedir. Donanımdaki farkı ile aşağıdaki şekil ile görebilirsiniz.
Tek banktan oluşan 8088 dışında tüm intel ailesi işlemcilerinde bellek banklar içinde organize edilmişlerdir. Bellek bank'ı belleğin 8 bit genişliğindeki bölümüdür. 16 bit işlemciler 16 bitlik bellek genişliği sağlamak için iki bellek bank'ı kullanır ve byte'lar ve word'ler adreslenir. 32 bit işlemciler ise 4 bellek bank'ı kullanarak byte , word ve double word adresleyebilirler.
Kişisel bilgisayarda bellek:
Intel ailesi üzeriden yapılacak bir çalışma kişisel
bilgisayardaki bellek yapısını anlamayı gerektirir. Çünkü kişisel bilgisayarlar 1
megabyte'lık ana bellek düşünülerek üretilmiş 8088 temellidirler. Bu ana bellek
genellikle gerçek bellek (real memory) olarak adlandırılır. Bellek genişlemeleri
LIM'in (Lotus-Intel-microsoft) geliştirdiği EMS (Expanded Memory Structure)
standardından önce mümkün olmuyordu.
Aşağıdaki şekil kişisel bilgisayarlardaki bellek haritasını göstermektedir.
İlk 640K'lık bellek alanı bütün kişisel bilgisayarlarda TPA (transient program area) olarak adlandırılır. TPA işletim sistemi ve I/O aygıtları için controlleri içerir. TPA'dan sonraki alanda sistemi kontrol için BIOS memory bulunur. İlk 1M üstü bellek ise extendend memory'dir ve disk caching programlari ve işletim sistemi tarafından tanımlanan diğer data segmentlerini içerir.
Programlama modeli
Programlama Intel ailesi işlemcilerin iç register
yapısını iyice anlamayı gerektirir. Bu bölümde mikroişlemcinin register yapısı ve
belleğin segment ve offset register'ları ile adreslenmesi anlatılacaktır.
Genel amaçlı register'lar:
Genel amaçlı registerlar programcının isteği doğrultusunde
kullanılabilir. Aşağıda genel amaçlı register'ların ana görevleri verilmiştir.
AX(Accumulator): Genellikle aritmetik ve lojik işlemleri sonuçlarını tutar.
BX(Base ): Bellekte adreslenmiş verinin base adresini tutar.
CX(Count): Döngü işlemlerinde sayaç olarak kullanılır.
DX(Data): 32 veya 16 bitlik çarpma işlemlerinden sonra sonucun en değerli bölümünü tutar.
Pointer ve Index Register'ları:
Pointer ve index register'lar da aslında genel amaçlı
register'lardır ve bellek bölgesini indexler yada gösterirler. Bu registerlar ;
SP(Stack Pointer): LIFO (last in first out) yığınında veriyi adreslemek için kullanılır. Bu genellikle PUSH ve POP komutları çalıştığında gerçekleşir. 32 bitliği ESP register'ıdır.
BP(Base Pointer): Yığın bellekteki veri dizisini adreslemek için kullanılır.
SI (Source Index): String işlemlerinde kaynak veriyi dolaylı olarak adreslerken kullanılır.
DI(Destination Index): String işlemlerinde hedef veriyi dolaylı olarak kullanmak için kullanılır.
IP(Instruction Pointer): İşlemci tarafından çalıştırılacak diğer komutun adresini tutar. Diğer komutun adresi IP içeriğini CSx10 ' ile toplayarak bulunur.
Flag Register'ları
Flag'lar cpu'nun işlemindeki şartları belirler. Flag bitleri
aritmetik ve lojik işlemler sonucu değişikliğe uğrarlar. Aşağıda flag'lerin
listesi ve fonksiyonları verilmiştir.
C (Carry): Toplama işlemindeki elde yada çıkarma işlemindeki ödünç almayı belirtir. Carry bayrağı ayrıca bazı program ve prosedürlerde hatayı belirtir.
P (Parity): Bu flag tek parity için lojik 0 ve çift parity için lojik 1 alır. Parity sayıdaki 1'lerin adedidir. Örneğin eğer sayı 3 binary bir biti içerirse tek paritydir .
A (Auxiliary Carry): Sonucun 3 ve 4. pozisyonları için toplamadan sonra eldeyi , çıkarmadan sonra ödünçü tutar.
Z (Zero): Aritmetik yada lojik işlemin sonucunun sifır olduğu bilgisini tutar.
S (Sign): Toplama yada çıkarmadan sonra sonucun işaretini tutar.
T (Trap): chip debugging de tuzaklamayı sağlar (istenmeyen bir durum ile karşılaşılınca yürütülen komutun kesilmesi gibi işlemlere tuzak (trap) denir.
I (Interrupt): INTR input pin' inin işlemlerini kontrol eder. Eğer I 1 ise INTR (Interrupt Request) kullanılabilir , 0 ile kullanılamaz.
D (Direction): String işlemleri sırasında DI veya SI'daki artış veya düşüş seçimini kontrol eder.
O (Overflow): İşaretli sayılar toplandığı yada çıkarıdığı zaman oluşur.
NT (Nested Task): Korumalı kip işlemlerinde bir görev içinde başka bir görevin tanımlandığı durumları içerir.
Ayrıca RF (Resume) , VM (Virtual Mode) ve AC (Alignment check) flagleri de mevcuttur.
Segment Register'ları:
CS (code): Code segment , programların ve diğer programlar tarafından
kullanılan procedure'lerin tutulduğu bellek bölümüdür.
DS (data): Programlar tarafından kullanılan verilerin tutulduğu bellek bölümüdür.
ES (extra): Bazı string komutları tarafından kullanılan ek bir veri segmentidir.
SS (stack): Yığın için kullanılacak bellek alanını tanımlayan segmenttir.
Gelecek Ay: temel komutlar
Bu döküman risc tarafından " The Intel Microprocessors" isimli
kitaptan çevrilmiştir.
Sorularınız için e-mail adresim lkaptan@yahoo.com
, http://eng.kou.edu.tr/~lkaptan ,icq:
20093137