MİKRO İŞLEMCİLER VE
MİKRODENETLEYİCİLER
1.1. Mikroişlemcileri Birbirinden Ayıran Özellikler
1.1.1. Kelime Uzunluğu
Mikroişlemcinin her saat darbesinde işlem yapabileceği bit sayısına kelime uzunluğu
denir. İşlemciler bu süre zarfında komutları yorumlar veya bellekteki veriler üzerinde işlem
yapar. İşlenen veriler işlemcinin özelliğine göre 4-bit, 8-bit, 16-bit, 32-bit ve 64-bit
uzunluğunda olabilir. Kelime uzunluğu veri yolu uzunluğuna eşittir. İşlemci, her saat
darbesinde işleyebildiği kelime uzunlu ile tanımlanır. Intel 8086 işlemcisinin kelime
uzunluğu 16-bit olduğu için 16-bitlik mikroişlemci denir. İşlemciler dört, sekiz, on altı, otuz
iki ve altmış dört bit olarak sınıflandırılır
Eğer komutlar veya veriler küçük gruplar hâlinde işlenirse hızda azalma meydana
gelir. İşlenen veri sayısının artması aynı sürede yapılan işin miktarını artırmakta ve yapılan
işin süresini azaltmaktadır.
16-bitlik bir işlemci ile 16-bitlik iki sayının toplanması, çarpılması veya
karşılaştırılması bir adımda yapılırken 8-bitlik işlemcide bu işlem daha fazla adımda
gerçekleştirilmektedir. Tablo 1.1’de mikroişlemciler ve kelime uzunlukları görülmektedir.
Üretici Frma Üretim Yılı Mikroişlemci Veri Yolu genişliği
(Kelime Uzunluğu)
Intel 1971 4004 4 bit
Motorola 1974 6800 8 bit
Zilog 1975 Z80 8 bit
MOS Tec 1976 6502 8 bit
Intel 1976 8085 8 bit
Intel 1978 8086 16 bit
Motorola 1979 68000 16 bit
Intel 1982 80286 16 bit
Motorola 1983 68010 16 bit
Intel 1985 80386DX 32 bit
Motorola 1987 68030 32 bit
Intel 1989 80486 32 bit
Intel 1993 Pentium 32 bit
1.1.2. Komut İşleme Hızı
Mikroişlemcilerin çalışması için saat sinyallerine ihtiyaç vardır. İşlemci (CPU) her
saat sinyalinde bir sonraki işlem basamağına geçer. İşlemcinin hızını incelerken saat
frekansına ve komut çevrim sürelerine bakmak gerekir. Saat frekansı mikroişlemciye
dışardan uygulanan ya da işlemcinin içinde bulunan osilatörün frekansıdır. Komut çevrim
süresi ise herhangi bir komutun görevini tamamlayabilmesi için geçen süredir. Şekil 1.2’de
komut çevrim süresi gösterilmiştir
1.1.3. Adresleme Kapasitesi
Bir işlemcinin adresleme kapasitesi, adresleyebileceği veya doğrudan erişebileceği
bellek alanının büyüklüğüdür. Bu büyüklük işlemcinin adres hattı sayısına bağlıdır. Bu hattın
sayısı tasarlanacak sistemde kullanılabilecek bellek miktarını da belirlemektedir.
Motorola 6800, Zilog Z-80, Intel 8085 ve Mostek 6502 mikroişlemcileri 16 adres
hattına sahiptir. 16-bitlik adres hattına sahip bir mikroişlemcinin adres büyüklüğü 216 ile
65536 olacaktır. Bu miktar yaklaşık 64KB ile ifade edilir.
Eğer çok büyük bellek gerektiren bir sistem tasarlanacaksa işlemcinin adres hattı
büyük seçilmelidir. Bundan sonraki bilgiler daha çok 6502 mikroişlemci ağırlıklı olacaktır.
1.1.4. Kaydedici Sayıs
Bir programcının assembly diliyle program yazımı sırasında en çok ihtiyaç duyduğu
geçici bellek hücreleri kaydedicilerdir. Mikroişlemcilerde kaydediciler, genel amaçlı
kaydediciler ve özel amaçlı kaydediciler olmak üzere iki grupta toplanır. Tüm
mikroişlemcilerde bu gruplara dahil edebileceğimiz değişik görevlere atanmış, farklı
özellikte, sayıda kaydediciler bulunur. Bu kaydediciler 8, 16, 32 ve 64-bitlik olabilir.
Kaydedicilerin sayısının programcının işinin kolaylaştırmasının yanında programın
daha sade ve anlaşılır olmasını da sağlar. Her mikroişlemcinin kendine has yapısı ve
kaydedici isimleri vardır. Herhangi bir mikroişlemciyi programlamaya başlamadan önce
mutlaka bu kaydedicilerin isimlerinin ve ne tür işlevlere sahip olduklarının iyi bilinmesi
gerekir. Şekil 1.3’te 6502 mikroişlemcisi görülmektedir.
1.1.5. Farklı Adresleme Modları
Bir komutun işlenmesi için gerekli verilerin bir bellek bölgesinden alınması veya bir
bellek bölgesine konulması ya da bellek–kaydedici veya kaydedici–kaydedici arasında
değiştirilmesi için farklı erişim yöntemleri kullanılır. Mikroişlemcinin işleyeceği bilgiye
farklı erişim şekilleri, ‘adresleme yöntemleri’ olarak ifade edilir. Kısaca adresi tarif
yollarıdır.
Herhangi bir bellek bölgesindeki veriye çok farklı şekillerde erişilebilmek için farklı
yolların olması programcıya esneklik sağlar. Mesela, 6800 ve 8085 işlemcilerde 7’şer, Z-80
işlemcisinde 10 ve 6502 mikroişlemcisinde 13 adet adresleme modu vardır. 6502
işlemcisinde temelde 51 komuta vardır. Bu komutlar 13 adresleme yoluyla birlikte 150
civarına ulaşmaktadır. Bu da programcının elinde kullanabileceği çok komut demektir. Tüm
bu işlemcilerde esasta aynı olan adresleme modları bazılarında uygulamada değişmektedir.
Adresleme modlarını meydana getiren bazı adresleme türleri aşağıda sıralanmıştır.
Ø Doğrudan adresleme
Ø Dolaylı adresleme
Ø Veri tanımlı adresleme
Ø Kaydedici adresleme
Ø Mutlak adresleme
Ø Göreceli adresleme
Ø İndisli adresleme
Ø Akümülatör ve imalı adresleme
1.1.6. İlave Edilecek Devrelerle Uyumluluk
Mikroişlemcili sisteme eklenecek devrelerin en azından işlemci hızında çalışması
gerekir. Sisteme ilave edilecek bellek entegrelerinin hızları işlemci ile aynı hızda olması
tercih edilmelidir. Aynı şekilde sisteme takılan giriş çıkış birimlerinin (Şekil 1.4) hızları ve
performansları mikroişlemci ile aynı veya çok yakın olmalıdır. Sisteme takılan birimlerin
hızları mikroişlemciye göre düşükse mikroişlemcinin hızı diğer elemanlardaki yavaşlıktan
dolayı düşer.
1.2.1. Kaydediciler
Kaydediciler, daha önce de bahsedildiği gibi, genel ve özel amaçlı olmak üzere iki
gruba ayrılır. Bunlardan başka programcıya gözükmeyen (ilgilendirmeyen) kaydediciler de
vardır. (IR, DAR, MAR ve MBR gibi). Genel amaçlılara 6502 işlemcisinde; akümülatör, X
indis ve Y indis kaydedicisi girmektedir. Özel amaçlılar ise, PC, SP, Bayraklar, DR gibi
kaydediciler girmektedir. (Şekil 1.5) Aşağıda bunlardan bazıları anlatılacaktır.
1.2.1.1. Akümülatör
Akümülatörler (ACC ya da A olarak da tanımlanabilir), bilgisayarın aritmetik ve
mantık işlemleri sırasında depo görevi yapan önemli bir kaydedicidir. Eğer kaydediciler bir
sistemde sekreterya olarak düşünülürse, akümülatör bu sistemde baş sekreter olarak yerini
alır.
Ara değerlerin üzerinde tutulması, sisteme gelen verinin ilk alındığı yer, belleğe veya
dış dünyaya gönderilecek verilerin tutulduğu yer olarak görev yapar. Bu yüzden, işlemcinin
A kaydedicisini hedefleyen komutları çoktur. Bazı işlemcilerde B kaydedicisi de yardımcı
akümülatör olarak kullanılır.
1.2.1.2. İndis Kaydedicileri
X ve Y olarak tanımlanan indis kaydedicilerinin temelde üç görevi vardır.
Hesaplamlarda ara değerlerin geçici tutulmasında, program döngülerinde ve zamanlama
uygulamalarında bir sayıcı olarak ve bellekte depolanmış bir dizi verinin üzerinde bir indisçi
olarak kullanılmaktadır. Bazı işlemcilerde sadece tek indisçi olabilir.
1.2.1.3. Program Sayıcı (PC)
Mikroişlemcinin yürütmekte olduğu program komutlarının adres bilgisini tuttuğu özel
amaçlı bir kaydedicidir. Bilindiği gibi bir programı oluşturan komutlar ve veriler normal
bellekte saklıdır. Bilgisayarın çalışması sırasında hangi komutun hangi sırada
kullanılacağının bilinmesi gerekir. Bu görevi program sayıcı (PC) yerine getirir. Program
sayıcının bit genişliği adres yolu genişliği kadardır. Eğer işlemcinin 16-bit adres hattı var ise
PC=16 bit, işlemcinin 32-bit adres hattı var ise PC=32 bit büyüklüğünde olur.
Bellekten alınan her komut kodundan sonra alınacak yeni komut kodunun adresi
program sayıcıya otomatik olarak işlemci tarafından yüklenir. Komut çevrimi, PC’nin yeni
adresi adresyoluna koyması ile başlar. Bunun ardından da ilgili kontrol sinyali gönderilir.
Bellekten gelen her bilgiden sonra PC, kontrol devresinden aldığı işarete uyarak adres
satırını 1 arttırır. (Şekil 1.6) Böylece bilgilerin bellekten işlemciye düzenli bir şekilde
gelmesi sağlanır.
1.2.1.4. Durum Kaydedicisi (Bayraklar)
Durum kaydedicisi 8-bitlik bir kaydedicidir. Bu kaydedicinin her bir biti ayrı ayrı
anlam ifade eder. Mikroişlemci içinde veya dışardan yapılan herhangi aritmetiksel, mantıksal
veya kesmelerle ilgili işlemlerin sonucuna göre bu bitler değer değiştirir. Bir işlem
sonucunda bu bitlerin aldığı değere göre program yön bulur. Programcı bu bitlerde oluşacak
değerlere göre programa yön verebilir. Şekil 1.7’te 6502 mikroişlemcisine ait 1-baytlık
durum kaydedicisinin bit şekli göstermektedir.
Carry (elde bayrağı-C): Elde / borç bayrağıdır. 8-bitlik bir işlem sonucunda
dokuzuncu bit ortaya çıkıyorsa elde var demektir. Bu durumda C bayrağı mantıksal 1 olur.
Bu bayrak biti programcı tarafından kurulur ya da silinebilir (CLC, SEC). Ayrıca bazı
komutlar tarafından test edilebilir (BCC, BCS).
Zero (sıfır bayrağı-Z): Sıfır bayrağı, aritmetik ve mantık işlemi sonucunda kaydedici
içeriği sıfır ise Z = 1’e kurulur. Aksi durumda sıfırlanır (Z = 0).
Interrupt disable (kesme yetkisizleştirme bayrağı-I): Mikroişlemci normal
durumda komutları işlerken bir kesme (IRQ) geldiğinde bu kesme bu bayrak biti ile
engellenebilir. Eğer bu bit komutlar (SEI) mantıksal 1 yapılırsa gelen kesmeler göz önüne
alınmaz. Ancak bu bayrak mantıksal 0 olduğunda kesme dikkate alınır ve kesme hizmet
yordamına dalınır. Yani bu bayrak biti, normal işleyiş sırasında bir kesme geldiğinde kabul
edilip edilmeyeceğini belirler. Programcı bunu komutla yapar. NMI kesmesi bu bayrak için
kullanılmaz.
Decimal (ondalık bayrağı-D): Bu bayrak 1 olduğunda aritmetik işlemler BCD
modunda yapılırken 0 olduğunda ikilik modta yapılır. Bu işlem eğitim ve uygulama açısında
programcıya büyük kolaylıklar sağlar.
Overflow (taşma bayrağı-V): Bu bayrak aritmetik işlemlerde, eğer işlem +127 ile -
128 aralığını geçiyorsa bir taşma meydana gelir ve V bayrağı 1 olur. Diğer yandan, yine
benzer işlemlerde, eğer pozitif bir sayı ile negatif bir sayı üzerinde işlem yapılıyorsa ve
sonuç pozitif çıkması gerekiyorken negatif çıktıysa, bu bayrak 1 olur. Taşma bayrağı işaretli
sayılarla işlem yapılırken devreye girer.
Negative (negatif bayrağı-N): 8-bitlik bir işlemcide 7.bit MSB biti olarak bilinir.
Eğer MSB biti bir işlem sonucunda 1 ise N bayrağı 1’e kurulur. Eğer MSB biti 0 ise
kaydedicisideki değer pozitif demektir ki, N bayrağı 0 olur.
Bayraklardaki 4. bit B (Break) olarak tanımlanmış olup, program durduğunda
otomatikman 1 olur. 5. bit ileride kullanılmak üzere boş (+5V) bırakılmıştır.
Farklı mikroişlemcilerde birbirine benzer bayraklar olmasına rağmen faklı bayraklarda
olabilir.
1.2.1.5. Yığın İşaretçisi (SP)
RAM belleğin herhangi bir bölümü yığın olarak kullanılabilir. Yığın mikroişlemcinin
kullandığı geçici bellek bölgesi olarak tanımlanır. Yığın işaretçisi, yığının adresini tutan özel
amaçlı bir kaydedicidir. SP adres bilgisi göstereceği için 16-bit uzunluğundadır.
Bu kaydediciye programın başında yığının başlangıç adresi otomatik olarak atanır.
İşlemci tarafından yığının başlangıç adresi SP’ye yüklendikten sonra artık belleğin bu
bölgesi depo benzeri bir görev yürütür. Yığına veri girişi yapıldıkça yığın göstericisinin
değeri de yapısına gore değişir. (Şekil 1.8).
Yığına her veri girişinde yığın göstericisinin değeri bir azalmakta, yığından her veri
çekildiğin de ise yığın göstericisinin değeri otomatik olarak bir artmaktadır. Yığına
gönderilen veri yığın göstericisinin işaret ettiği adresteki bellek hücresine yazılır. Yığından
veri çekilirse yığın göstericisi bir önceki verinin adresine işaret edecek şekilde bir
azalacaktır. Mikroişlemci işlediği ana programdan alt programa dallandığında veya bir
kesme sinyali ile kesme hizmet programına dallandığında mevcut kaydedicilerin içeriklerini
ve dönüş adresini saklayabilmek için otomatik olarak verileri ve adresleri yığına atar. Alt
programdan veya kesme hizmet programından ana programa geri dönülmesi durumunda, ana
programda kaldığı yerin adresini ve kaydedicilerdeki verileri kaybetmemiş olur.
1.2.2. Aritmetik ve Mantık Birimi (ALU)
Mikroişlemcinin en önemli kısmını aritmetik ve lojik birimi (ALU) oluşturur .Bu ünite kaydediciler üzerinde toplama, çıkarma, karşılaştırma, kaydırma ve döndürme
işlemleri yapar. Yapılan işlemin sonucu kaydediciler üzerinde saklanır. Bazen de yalnızca
durum kodu kaydedicisini etkiler. ALU’daki bir işlem sonucunda durum kodu
kaydedicisindeki bayrakların birkaçı etkilenebilir veya hiçbiri etkilenmez. Programcı için
çoğu zaman ALU’da yapılan işlemin sonucunda etkilenen bayrakların durumu daha
önemlidir. Gelişmiş mikroişlemcilerin içindeki ALU’lar çarpma ve bölme işlemlerini
yapabilmektedir. ALU’nun işlem yapabileceği en büyük veri, mikroişlemcideki
kaydedicilerin veri büyüklüğü ile sınırlıdır. 8 bitlik mimariye sahip bir mikroişlemcideki
ALU en fazla 8 bitlik sayılar üzerinde işlem yapar.
Ø Aritmetiksel işlemler
ALU’da yapılan aritmetiksel işlemler mikroişlemcinin yapısına göre çeşitlilik
gösterebilir. 8-bitlik mimariye sahip bir mikroişlemcide toplama, çıkarma, çarpma, bölme
işlemleri ve ondalıklı sayılarla matematiksel işlemler yapılabilmektedir. Gelişmiş
işlemcilerde büyük ondalıklı sayılarla işlem yapmak için ayrıca matematik işlemci
mevcuttur.
Ø Mantıksal işlemler
· Mantıksal çarpma VE işlemi
· Mantıksal toplama VEYA işlemi
· Özel VEYA, XOR işlemi
· Değil, NOT işlemi
· Karşılaştırma (=, =<, =>, <> gibi) ve kaydırma gibi işlemler bu ünitede
yapılır.
· Sağa veya sola kaydırma ve döndürme işlemleri
· İçerik artırma veya azaltma işlemleri
Bütün bu işlemler teknolojik yapısı değişik kapı ve flip-flop’lardan oluşan bir sistem
tarafından yürütülmektedir.
1.2.3. Kontrol Birimi
Kontrol birimi, sistemin tüm işleyişinden ve işlemin zamanında yapılmasından
sorumludur. Kontrol birimi, bellekte program bölümünde bulunan komut kodunun alınıp
getirilmesi, kodunun çözülmesi, ALU tarafından işlenmesi ve sonucun geri belleğe
konulması için gerekli olan kontrol sinyalleri üretir.