Elektrik Mühendisliği · Sayı 258 · Haziran 1978
MİKROİŞLEMCİ YAZILIMI
Elektronik ve yarı iletkenler Teknik / bilimsel makale
- Yıl
- 1978
- Sayfa
- 4
- Okuma süresi
- 11 dk
- Görüntülenme
- 0
Konu
İlgili: Bilgisayar, yazılım ve internet
Anahtar kelimeler
- mikroişlemci
- komut kümesi
- çevirici dili
- yüksek düzey programlama dili
- makine dili
- mikrobilgisayar
Özet
Mikroişlemcilerin yazılım açısından genel programlama özellikleri, komut kümeleri, adresleme biçimleri, programlama dilleri ve derleyici/yorumlayıcı türleri incelenmekte, geliştirme ve deneme sistemleri açıklanmaktadır.
Tam metin
Metin PDF'ten otomatik çıkarılmıştır; tablo, şekil ve formüller eksik ya da hatalı olabilir. Özgün dizgi için PDF'e bakın.
mikroişlemci yazılımı
Y üksel TARHAN
UDK: 621.3.049.771.14
ÖZET
Mikroişlemcilerin kullanım ve uygulama alanları giderek genişlerken, mikroişlemcili devre öğeleri hızla gelişmek te ve karmaşıklaşmaktadır. Bu yazıda, mikroişlemciler yazılım açısından ele alınmakta, genel programlama özel likleri, programlama dilleri ve işletim sistemleri kısaca in celenmektedir. Geliştirme ve deneme sistemleri açıklan maktadır.
SUMMARY
As the areas of application of microprocessors groıv lar ger, circuit elements become more sophisticated and complex. in this article microprocessor softıuare and general programming characteristics are explained. Prog ram testing and development tools are given briefly.
Yan iletken teknolojisinde son yıllarda sağlanan gelişme ler mühendislik açısından çok önemli bir dizi devre öğe sinin ortaya çıkmasına neden oldu. Bu devre öğeleri i çinde tasarım, uygulama ve geliştirme açısından üzerinde en çok söz edileni hiç kuşkusuz mikroişlemcilerdir.
Mikroişlemci, bilgi saklama ve giriş/çıkış birimleri yar dımıyla, bazı çevre koşullarını sezme, yorumlama ve de netleme işlemlerini yapan elektronik bir devredir. Bu işlemlerin niteliği ve yapılma biçimi, bellekte saklanan programlarca belirlenir. Programlar, uygulamanın öngör düğü işlevleri sağlamakta, öte yandan, donanım birimle rinin desteğiyle, çevre birimlerinin güvenilir ve verimli biçimde çalışmasını sağlamaktadır. Mini ve büyük bilgi sayarlarla, belirli bir uygulamada yer alan mikroişlemci ve yardımcı donanıma bir bütün olarak bu açıdan ba kıldığında, kavramsal olarak arada büyük bir fark olma dığı söylenebilir.
Uygulama açısından durum biraz daha değişiktir. Labo ratuar araçlarında, elektrikli ev eşyalarında, taşıtlarda ve benzeri diğer basit denetim uygulamalarında mini veya büyük bilgisayarlardan ekonomik biçimde yararlanma o lanağı yoktur. Büyük çapta hesaplama işlemlerine gerek göstermeyen, boyut ve elektrik enerjisi açısından zorun lu olarak sınırlandırılmış uygulamaların tasarımında mik
Yüksel Tarhan, HÜ
roişlemciler kaçınılmaz olarak yer alırken, minibilgisayar kullanımı büyük çaplı veya çok hızlı hesaplama işlemle rine yönelik, fazla sayıda kullanıcıya hizmet veren uygu lama alanlarına doğru kaymaktadır.
Mikroişlemciler kendi aralarında hız, besleme gerilimi, komut kümesi gibi özellikler bakımından guruplanmakla birlikte, yer aldıkları uygulamalar kabaca ikiye ayrılabilir.
Göreli olarak durağan, basit, giriş ve çıkışları belirlenmiş denetim işlevlerini sağlamak için mikroişlemcinin atan mış biçimde kullanıldığı uygulamalarda yer alan dizgele re denetleyiciCconfroüer), daha genel amaçlı, değişik programların işletilmesine olanak veren dizgelere mikro bilgisayar (microcomputer) adı veriliyor. Her iki gurup taki donanımın istenilen biçimde iş görmesi için uygun programların hazırlanması, işletimle ilgili belge, yöntem ve verilerin düzenlenmesi, kısaca, yazılım adı verilen öğe nin oluşturulması gerekmektedir.
Bilgisayar donanımında son yıllarda sağlanan gelişmeler, donanım fiyatlarının her on yılda yaklaşık on kat ucuz lamasını sağlarken, yazılım alanındaki gelişmeler çok daha yavaş ortaya çıkmaktadır. Bu nedenle yazılımın donanıma göre önemi artmaktadır. Yoğun biçimde bilgi sayar kullanan ülkelerdeki bazı uygulamalarda, yazılım giderlerinin donanım giderlerine oranı 10:1 ile gösteril mektedir. Diğer bir deyişle, yazılım için donanıma oran la on kat daha fazla harcama yapılmaktadır. Bu oranın önümüzdeki yıllarda giderek büyüyeceği anlaşılmakta dır. Mikroişlemcili dizgelerde bu durum daha fazla be lirginlik kazanmıştır. Birkaç yüz liralık bir harcamayla geliştirilecek bir dizgenin işletilebilmesi için gereken bü yükçe bir yazılım harcaması, uygulamanın ekonomik ve rimliliğini ortadan kaldırabilmektedir. Ote yandan yazılı mın donanıma bağlı özellikleri, donanım geliştikçe yazı lımın bir kısmının değişmesini gerektirmektedir.
Mikroişlemcili dizgelerin yazılım sorunlarının çözümlen mesinde, bilgisayar yazılımında sağlanan otuz yıllık bir deney ve bilgi birikiminden yararlanılmaktadır. Burada mikroişlemcilerin genel yazılım özelliklerinden bazılarını kısaca sıralayalım.
KOMUT KÜMESİ
Komut kümesi, bir mikroişlemcinin yapabileceği işlem ler belirler. Değişik mikroişlemcilerin komut kümeleri birbirlerine oranla çok büyük değişiklikler göstermekle birlikte, tümünde bulunan ortak komut türleri aşağıdaki gibi sınıflandırılabilir.
Aritmetik ve mantıksal her mikroişlemcinin toplama, çı karma, sayaç kaydırma, VE, YADA evirme gibi işlemleri yapan komutları vardır.
Veri aktarma: Mikroişlemcinin sayaçları arasında, veya bellekle sayaç arastnda bilgi aktarma için kullanılan ko mutlardır. Bazı mikroişlemcilerde bulunan, işlemlerin en son saklanan değerler üzerinde yapılmasını sağlayan istif (stack) işleme komut ları da bu türdendir
Sınama: Durum belirteçlerinin değerlerine bağlı olarak (sıfır, eksi veya artı sayaç değerleri, toplamada taşma vb) program içinde belirli bir konuma atlamayı sağlayan ko mutlardır.
Arftrma Efesittme.Sayaçların veya bellekteki bir alanın i çindeki değeri bir artıran veya eksilten, elde edilen sonu ca göre durum belirteçlerini düzenleyen komutlardır.
Program Denetimi:Programıp içinde istenilen konuma at lanmasını sağlayan, altyordam çağırma, geri dönme, ke silme gibi işlemleri yaptıran komutlardır.
Bayrakların Denetimi: Bayrakların (flag) değerlerini dü zenleyen komutlardır.
Giriş/Çikış İşlemleri: Giriş/çıkış işlemlerinin yapılmasını denetleyen komutlardır. Birçok mikroişlemcide bu iş lemler, giriş/çıkış adresi olarak tanımlanmış bir konum üzerinde normal komuttan kullanarak yapılır, bazılarında özel komutlar bulunabilir.
Bir mikroişlemcinin kullanışlı olması çok sayıda komutu işletebilmesine bağlı değildir. Dünyanın en çok satılan minibilgisayarlarından biri olan PDP 8'in yalnızca sekiz temel komuttan oluşan bir komut kümesi vardı. Çok ge niş bir komut kümesinin verimli kullanım sağlayacak bi çimde öğrenilmesi, daha küçük ancak anlamlı bir komut kümesine oranla daha zor olabilir. Programlanabilme açı sından bir mikroişlemcinin uygunluğu yeterli bir komut kümesinin yanısıra, adresleme olanaklarına da bağlıdır.
ADRESLEME BİÇİMLERİ
Bir mikroişlemcinin sağladığı değişik adresleme biçimle r i , mikroişlemcinin gücünü ve program hazırlama kolaylı ğını belirleyen çok önemli bir özelliktir. Karmaşık yükle yiciler gerekt irmeden, y eri değiştirebilen (rebcatable) programlar hazırlayabilmek için göreli (relative) adres leme olanağı gereklidir. Eğer mikroişlemcinin büyük bo yutlu diziler üzerinde işlem yapması gerekiyorsa dolaylı ve dizinli adresleme yapılabilmesi istenir.
PROGRAMLAMA DİLLERİ
Mikroişlemcinin çalışma biçimi, bütün diğer sayısal aygıtlarda olduğu gibi, kağıt üzerinde 1 ve 0 ile belir
tilen iki değişik gerilim düzeyine dayanıyor. Bütün veri ve komutlar bir noktadan diğerine iletilirken, bellek ve ya mikroişiemci içinde, bu iki gerilim düzeyi cinsinden gösterilmektedir. Bundan dolayı programcı, program ha zırlarken, 1940'lardaki bilgisayar programcısının yaptığı gibi, 1/0 dizilerini (veya 8% 16'h karşılıklarım) içeren makine dilini kullanmak durumundadır.
Makine dilinin, 1/0 dizilerinden oluşan komutları öğren me ve hatırlama zorlukları, hata yapma olasılığının yük sekliği, hata bulma ve düzeltme güçlükleri gibi birçok sakıncası, büyük bilgisayar dizgeleri için, yıllarca önce bulunan bir y önt emle, çevirici dili (assembly language) ile çözümlenmişti. Her komut için akılda tutulması ko lay, alfabetik bir kısaltma kullanıldığında gösterim hata ları büyük ölçüde azalırken, program hazırlanması kolay laşıyordu. Çevirici dili ile yazılmış programlar, bilgisayar tarafından, çevirici (assembler) adı verilen bir başka program tarafından makine diline dönüştürülüyor ve bel leğe yerleştiriliyordu. Mikroişlemcili uygulamalarda bu yöntem kavramsal olarak aynen geçerli olmakla birlikte, uygulamada çözümlenmesi gereken sorunlar vardır.
Denetleyicilerin sınırlı yetenekleri ve atanma durumları, çevirici programların belleklerinde bulunmasına olanak vermemekte ve gerektirmemektedir. Bu nedenle, kod dönüşümü, genel amaçlı bilgisayarlarda yapılmaktadır. Hemen her tür bilgisayarda kullanılabilen bir yüksek dü zey programlama dilinde (FORTRAN gibi) hazırlanmış ve derlenmiş olan çevirici program, çevirici dili iie yazıl mış olan programı mikroişlemcinin makine diline çevir mektedir. Elde edilen program, kağıt şerit gibi bir ortam üzerinden, veya tuşlarla doğrudan doğruya mikroişlem ciye verilmektedir. Bu tüı çeviriciler çapraz çeviricifeross assembler) adı ile anılmaktadır. Denetleyicilerin belleğin de yer alan programlar genellikle salt oku bellek içinde değişmeyecek biçimde yer aldığından bu yöntem en uy gun çözümdür
Mikrobilgisayarlarda kullanıcının program yazması gere kebildiği için, çeviri işleminin mikrobilgisayar tarafından yapılması, belleğin bir bölümünde yer alan çevirici prog ramın kullanıcı programlarını makine diline çevirmesi istenebilir. Çevirici program salt oku bellek içine yerleşti rildiğinde, dizge kapatıldığında silinmeyen, açıldığında ot omat ik olarak devreye giren yerleşik çevirici (resident assembler) elde edilir.
Çevirici dilinin, uzmaniaşmamış kullanıcı açısından bir çok sakıncası vardır. Programlama süresini kısaltmak, programlama zorluklarının bir bölümünü azaltmak için, konuşma dili ve matematiksel işlemlerin gösterim biçimi gibi günlük yaşamda alışılagelmiş biçimlere yakın kural lardan oluşturulan, bundan dolayı kolaylıkla akılda tu tulan ve kullanılan yüksek düzey programlama dilleri
tasarlandı. Bugün birçoğu özel uygulamalar için yararlı olan 200'ü aşkın yüksek düzey programlama dili, nitelik leri farklı sayısız kullanıcının bilgisayarlardan eş düzeyde yararlanmasını sağlamakladır.
Mikroişlemci programlarının hazırlanmasında üzerinde durulması gereken etmenlerin başlıcaları programlama kolaylığı ile kod verimliliğidir. Donanımdan bağımsız bir yapıya sahipolan yüksek düzey programlama dilleri algo ritmaların biçimlendirilmesi ve uygulanmasına daha el verişli olmakla birlikte, sonuçta elde edilecek kod çoğu zaman çevirici dili ile doğrudan yazılan koda oranla da ha az verimlidir. Bir başka deyişle, yüksek düzey prog ramlama dillerinden biri ile yazılan programlar makine diline dönüştürüldüğünde, çevirici dili ile aynı işi yapan programa oranla daha fazla makine komutu içerdiği görülür. Komut sayısı ise, bir programın çalışma hızını belirleyen önemli göstergelerden biridir. Bu sakıncaların giderilmesi için, yüksek düzey programlama dillerinden makine diline dönüşümü sağlayan derleyicilere eniyileşti ren (optimizer) yordamlar eklenerek sonuçta elde edilen kodun daha kısa ve öz olması sağlanabiliyor.
Yüksek düzey dillerinden biri ile yazılmış mikrobilgisa yar programları, çeviricilerde olduğu gibi, genel amaçlı bilgisayarlar yardımıyla, çapraz derleyici (cross compiler) adı verilen programlar tarafının makine düine çevrile bilmektedir. Çapraz derleyiciler, mikrobilgisayarlardan genel amaçlarla yararlanmak isteyen bilgisayar konusun da uzmanlaşmamış kullanıcılara kolaylık sağlamakla birlikte üretilen makine kodunun verimsizliği ve mikro bilgisayara aktarma zorlukları nedeniyle sınırlı biçimde kullanılmaktadır.
Makine diline dönüşümü sağlayan yordamlar, günümüzde pazarlanan mikrobilgisayarların birçoğunda, özellikle hobi mikrobilgisayarlarında, 4 10 K byte'lık salt oku bel lek içine yerleştirilmiş biçimde bulunmaktadır.
Derleyici kavramına yaklaşan bir başka program dönüş türme yöntemi, yüksek düzey dili ile yazılmış programla rın her komutunun, yorumlayıcı (interpreter) adını vere bileceğimiz bir program yardımıyla, diğer komutlardan ayrı biçimde çözümlenmesi ve gerçek makine diline dö nüştürülmeden işletilmesidir. Bu yöntem, her komutu ayn bir birim olarak aldığından uzmanlaşmamış kullanı cıların program hatalarını bulmaları kolaylaşmaktadır.
Mikrobilgisayarlar için geliştirilen derleyici ve yorumla yıcılar, FORTRAN BASIC, APL, Pascal, LISP gibi yük sek düzey dillerinin kullanılmasına olanak vermektedir. Bunlardan BASIC ve APL, etkileşimli (interactive) prog ramlama için dünya çapında kullanılan dillerdir, önü müzdeki yıllarda bu dillere yenilerinin katılacağı rahat lıkla söylenebilir.
İŞLETİM SİSTEMLERİ işletim sistemi, genel olarak, bir bilgisayar sisteminin ça lışmasını denetleyen, kullanıcının program yazma ve iş letmesini kolaylaştıran bir program kümesi olarak tanım lanabilir. Büyük bir bilgisayar için bu küme çok sayıda ve kapsamlı programlardan oluşmaktadır. Buna karşın mikroişlemci kullanan basit denetim uygulamaları, sınır lı yetenekleri nedeniyle işletim sistemine gerek gösterme mekte, kesilme hata uyarıları, çevre birimlerinin deneti mi gibi işlemler ya tümüyle donanım tarafından yada bel lekteki küçük bir yordam yardımıyla düzenlenmektedir. Daha genel amaçlı mikrobilgisayarlar için bu geçerli de ğildir. Çevre birimlerinin belleğe veya mikroişlemciye göndereceği farklı biçim ve içerikteki bilgilerin anlam landırılması, bilgi kayıplarının önlenmesi, çeşitli prog ramlama ve işletim kolaylıklarının sağlanması için ayrın tılı işletim sistemlerine gerek vardır. Mikrobilgisayarın kullanım amacına, bellek sığasına, donanım ve çevre bi rimlerinin özelliklerine bağlı olarak değişiklik gösteren işletim sistemi, tuş veya anahtarlar yoluyla kullanıcı tarafından kullanımdan önce yaz oku belleğe yerleşti rilebileceği gibi, tümü veya bir bölümü salt oku bellek üzerinde yer alarak, güç verildiği anda mikrobilgisayarın çalışmasını sağlayacak biçimde tasarlanmış olabilir.
Pazarlanan yeni mikrobilgisayarların bir çoğunda, sayaç değerlerinin düzenlenmesi, çevre birimlerinin kullanıma hazır duruma getirilmesi gibi ilk işlemler, dizgeye güç ve rildiğinde otomatik olarak, bellek üzerinde bulunan küçük bir denetim programı (monitör) tarafından yerine getirilmektedir. Bu işleme uyandırma (bootstrapping) diyebiliriz. Uyandırma işleminden sonra geniş kapsam lı bir işletim sistemi programı, denetim programının gözetimi altında, kağıt şerit, kaset veya disk gibi bir or tamdan belleğe aktarılabilir.
Mikrobilgisayarlarda bugün en çok kullanılan giriş/çıkış birimleri arasında uzakyazıcı (teletype) uçlar, katod ışın lı tüpler, satır yazıcı, kağıt şerit, kaset ve küçük disk bi rimleri bulunmaktadır. Okuma/yazma işlemlerinin büyük bir çoğunluğu, işletim sisteminin hataları önleyici, eşgü dümü sağlayıcı denetimi altında yapılmaktadır. Bununla birlikte, anahtarlı girişlerin kod çözücü vb donanım öğe lerince gerçekleştirilmesi de olanaklıdır.
işletim sistemi içinde yer alan programlar, farklı birçok işlemi yerine getirebilmektedir. Programlama dilleri ile il gili programlardan daha önce söz edilmişti. Metin düzel tici (tert editör), kütük düzenleme ve erişim altsistemi, katod ışınlı tüpteki görüntüyü düzenleyen grafik altsis temi, disk ve kaset işletim altsistemi, yükleyici gibi işle tim sistemi programları, güvenilir, esnek ve rahat bir iş
letim sağlamak amacıyla giderek yaygın biçimde kulla nılmaktadır.
TASARIM AŞAMASINDA Y A Z I L I M DESTEĞİ
Mikroişlemcili sistemlerin tasarlanmasında yazılım ve do nanımın birbirini bütünleme durumu, mikroişlemcilerin atanmış biçimde kullanıldığı denetleyici uygulamala rında ön plana çıkmaktadır. Uygulamanın başarısı, işleti lecek programın yetkinliği ile doğrudan ilintilidir. De netleyicinin yer aldığı dizge genellikle büyük çapta üre tileceğinden, üretimden sonra ortaya çıkabilecek bir program hatası veya yetersizliği ekonomik açıdan büyük sorunlar doğuracaktır. Bu durumu önlemek için, tasarım sırasında program hazırlanma ve denenmesinde kolaylık sağlayan, geliştirme dizgesi ve benzetici adı verilen İki yardımcı tasarım öğesi ortaya çık ti (Şekil 1 ).
PROGRAMLAMA DİLİ
MAKİNE DİLİNE OONUŞUM
ÇEVİRİCİ DİLİ
YÜKSEK DÜZEY DİLİ
KALICI ÇEVİRİCİ
ÇAPRAZ ÇEVİRİCİ
MAKİNE DİLİ
L
ÇAPRAZ
I
DERLEYİCİ
G«n«i amoçlı bilgisayar
HATA AYIKLAMA DENEME GELİŞTİRME
GELİŞTİRME SİSTEMİ
Şekil 1. Mikroışlemci programları İşlem evreleri. Geliştirme sistemi, mikroişlemci yazılımının geliştiril mesinde ve denenmesinde kullanılan tasarlanan dizgenin belirli parçalarına doğrudan doğruya bağlanarak yazılan programların gereken etkinlikte çalışıp çalışmadığını tasarımcı veya programcıya bildiren aygıtlara verilen ad dır. Bu aygıtlarla programın çalışma çevresi istenilen bi çimde düzenlenebilmektedir.
Benzeticiler, bir mikroişlemcinin komut kümesini, ça lışma biçim ve ortamını benzetim yoluyla oluşturan, ge nel amaçlı bilgisayarlar için yazılmış programlardır.
Geliştirme sistemlerinin edinilmesi için oldukça büyük bir harcama yapmak gerekmektedir. Benzeticilerden yararlanmak üzere kiralanacak bilgisayar zamanı ile ek donanım giderleri ise, kısa dönemde az olmakla birlikte, uzun dönemde geliştirme sisteminin giderlerini aşabilir.
Hata ayıklama, deneme ve geliştirme işlemlerinde seçi lecek yöntem eldeki olanaklara, istenen işletimsel esnek
lik düzeyine, kısa ve uzun dönemli giderlere bağlı olarak belirlenmektedir. Geliştirme sistemleri, işletimsel ortama yaklaşan, kullanılan donanım birimleri üzerinde gerçek işlemler yapan bir çözüm olduğundan bazı uygulamalar için uygundur, öte yandan benzeticiler program komut larını • istenilen düzey ve derinlikte çözümleyebildikle rinden, bellek boyu gibi kısıtlamalar yüzünden bu olana ğı sağlamayan geliştirme sistemlerine oranla daha kulla nışlıdır.
Programcıya, hazırladığı programı etkileşimli biçimde denetleme olanağı verdiği için geliştirme sistemleri genellikle daha etkin ve hızlı bir çalışma sağlamaktadır.
Mikroişlemci yazılımı, mini veya büyük bilgisayar yazı lımının özel bir durumu olarak düşünülebilir. Mikroiş lemci ve ek donanım giderlerinin düşük olması, yazılım giderlerinin belirli bir düzeyin altında tutulması sonucu nu doğurmaktadır. Mikrobilgisayarlar için bu durum, yetenekli bir dizgenin ilkel sayılabilecek bir yazılım des teği ile işletilmesi anlamına gelmektedir. Hızla gelişen teknoloji, yazılımda standartlaşma çabalarını etkisiz bırakmakta, birçok tasarım için sıfırdan başlayarak yazı lım üretmek gerekmektedir.
Mikroişlemciler günlük yaşantımıza girmeye başlamıştır. Bu aygıttan yeterince yararlanabilmek için gereken yazı lım geliştirme öğeleri, donanımdan daha hızlı biçimde gerçekleştirilmelidir.
KAY NAKLAR
1. Johnson, G.R., R. Mueller, Automated Generation of Cross System Softw are For Microcomputers, Computer, Ocak 1 9 7 7 , s. 23 38.
2. Korn, A.G., A Proposed Method For Simplified Microcomputer Programming, Computer, Ekim 1975, s. 43 52.
3 Krummel, L., G. Schultz, Advances İn Microcompu ter Development Systems, Computer, Şubat 1 9 7 7 , s. 13 19.
4. Myers, W . The Need For SoftwareEngineering.Com puter, Şubat 1 9 7 8 , s. 12 25.
5 Pantone, J.M., Microprocessor DevelopmentAids: The Timesharing Software Approach,Compcon 7 8 , 1978, s. 331 333.
6. Z80 CPU Technical Manual. Zilog İne, 1 976.