Mikroişlemcilerde RISC ve CISC Mimarisi

Mikroişlemcileri yapı bakımından Harvard ve Von Neumann mimarisi olarak ikiye ayırsak da yapısal olarak başka mimarilerin de olduğunu söylemiştik. Yani işlemciler uygulamada Harvard ve Von Neumann olarak ikiye ayrılmış gibi gözükse de yapısal olarak kutuplaşma söz konusu değildi. İşlemciler yapısal olarak mimarilere ayrıldığı gibi komut kümesi bakımından da mimarilere ayrılmaktadır. Önceden bahsettiğimiz Harvard ve Von Neumann mimarileri merkezi işlem birimi, program hafızası ve veri hafızası arasındaki bağlantıya göre farklılaşan mimarilerdi. Şimdi bahsedeceğimiz mimariler ise doğrudan merkezi işlem biriminin iç yapısı ile alakalı olan RISC ve CISC mimarileridir.

RISC ve CISC mimarileri komut kümesini esas alan mimariler olduğundan önceki mimarilere göre farklı bir kategoride olduğunu belirtelim. Yani bir işlemcinin Harvard veya Von Neumann mimarisinde olmasıyla RISC veya CISC olmasının teorik olarak bir alakası yoktur. Fakat uygulamada maliyetler işin içine girdiğinde aralarında bir bağ olduğunu gözlemlemekteyiz. Öncelikle bu mimarilerin doğuşunu anlatalım ve sonrasında ise ikisi arasındaki farklılıkları daha da ayrıntılı olarak açıklayalım.

Mikroişlemcilerin üretilmesinden önce bile komut seti mimarileri tartışılan bir konu haline gelmiştir. Ana akım (mainstream) diyeceğimiz görüşe göre bir işlemcinin komut setinde ne kadar fazla komut olursa o işlemcinin yapabileceği iş o kadar fazladır. 1960lardan itibaren bilgisayar tasarımcıları her yapılacak karmaşık işi yapmak üzere donanımı geliştirip karmaşık işleri bile tek komutta yapmayı hedefliyordu. Karmaşık işlerin tek komutta yapılması hem programlama bakımından hem de performans ve hafıza bakımından oldukça iyi bir seçenekti. Fakat bilgisayarların yapacağı her ayrı bir komut için yüzlerce transistör ve mantık kapısı gerekliydi. İş karmaşıklaştıkça transistörlerin sayısı artmakla artan üretim maliyetinin yanında bu karmaşık sistemi tasarlamak için ciddi bir tasarım maliyeti gerekliydi.

Bu karmaşık ve fazla komut kümesini bulunduran sistemlere CISC (Complex Instruction Set Computer) adı verilmiştir. Bazen bu fazla komutların pek çoğu programcılar tarafından neredeyse hiç kullanılmaz olmuştur. Çünkü spesifik bir işi yapmaya yönelik bir komut hazırlandığında o işten başka işte kullanılması mümkün olmuyordu. 100 değil 500 komutun elimizin altında olması Assembly dilinde program yazarken işimizi kolaylaştırsa da 500 komutu işleyebilen bir sistemi satın almaya ve yapmaya gelince işin rengi değişmektedir.

Harvard mimarisinin Von Neumann mimarisine göre daha iyi olduğunu fakat kullanılmadığını daha öncesinde söylemiştik. Kullanılmamasının tek sebebi Harvard mimarisinde çalışacak bir sistemi üretmenin daha maliyetli olmasıdır. CISC konusu da aslında bir bakıma böyledir. CISC sistemler daha karmaşık ve performanslı olsa da birim fiyatı 1 doların altına kadar düşen mikrodenetleyici pazarında kullanılması söz konusu olamaz.

CISC mimarisi o yüzden bilgisayarlarla sınırlı kalarak günümüze kadar gelmiştir. Şu an x86 tabanlı olan Intel ve AMD işlemciler CISC mimarisine örnek olarak gösterilebilir. CISC mimariyle üretilen işlemcilerde daha fazla transistör olması sadece pahalı oldukları anlamına da gelmemektedir. Daha fazla transistör daha fazla güç tüketimi ve ısınma demektir. Bu yüzden işlem kapasitesi aynı olan bir RISC mimarili işlemciye göre daha fazla güç ve soğutma isteyecektir.

CISC sistemlerin uygulama alanının kısıtlı olmasından dolayı mikroişlemci tasarımcıları yeni bir mimari geliştirme gereksinimi duymuştur. Aslında bu mimari CISC mimarisinin kırpılmasından meydana gelmiştir de diyebiliriz. RISC (Reduced Instruction Set Computer) adı verilen bu mimari CISC’de olduğu gibi yüksek performans ve işlem kabiliyetine sahip olmasa da düşük performanslı ve basit uygulamalar için düşük maliyetli ve kolay tasarımlı bir çözüm olarak CISC’in yerini almıştır.

RISC mimarisini kullanan sistemlerin başında mikrodenetleyicilerin büyük bir kısmını zikredebiliriz. Mikrodenetleyiciler yapısı itibariyle ilk olarak kontrol ve otomasyon sistemleri için kullanıldığından karmaşık bilgisayarların yaptığı işleri yapmasına gerek yoktur. Üstelik mikrodenetleyiciler bilgisayarlara göre ucuz bir alternatif olduğu için maliyetlerinin de çok düşük olması gereklidir.

RISC mimarisinde az komut bulunması daha az iş yaptığı anlamına da gelmemektedir. Aynı işi daha çok komut kullanarak yine yapabilmektedir. Burada bizim ödün vermemiz gereken nokta performans ve bellek olacaktır. Yüksek performans gerektirmeyen uygulamalarda zaten buna ihtiyacımız olmadığı gibi belleklerin ucuz olmasından dolayı bellek noktasında da bir sıkıntımız yoktur. Çünkü 1 megabayt yerine 4 megabayt bellek üretmek RISC yerine CISC mimarili işlemci üretmekten çok daha ucuza mal olmaktadır.

RISC mimarisi azalan komut setinden dolayı Assembly ile karmaşık uygulamaları yazan programcıların işini zorlaştıracaktır. Fakat basit uygulamalarda daha az komut kullanılacağı ve öğrenileceği için bir bakıma kolaylık da sağlamaktadır. RISC mimarisi kullanan sistemler çok fazla bellek ve performans derdinde olmadığı için yüksek seviye programlama dilleri ile de rahatça programlanabilmektedir. Geliştiriciler çoğu zaman Assembly ile program yazmadan C, C++ veya Java gibi dillerle program yazabilmektedir. Bu durumda zaten mimarinin CISC veya RISC olmasının bir önemi de yoktur. Çünkü ikisinde de aynı dil ve kod yazılmaktadır.

RISC mimarisinin CISC mimarisine göre başka farklılıkları da bulunmaktadır. Bunlardan biri belli bir komut boyutuna sahip olmalarıdır. Örneğin AVR mikrodenetleyicilerde çoğu komut 16-bit olmakta bazı komutlar ise 32-bit olmaktadır. Yani 3 bayt veya 1 baytlık bir komut bulunmamaktadır.

Aynı zamanda AVR mikrodenetleyicilerde göreceğimiz üzere RISC mimarisindeki sistemler oldukça  fazla yazmaç bulundurmaktadır. Akümülatör sistemli yapılarla ve yığınlarla uğraşmadan bu yazmaçlar ile çok daha kolay programlama yapma imkanımız vardır. Örneğin 32 genel kullanımlı yazmaca istediğimiz veriyi istediğimiz şekilde yazıp sonra da buralardan alıp kullanabiliriz. Önce veya sonra alma derdimiz ortadan kalkar.

RISC mimarisi ile daha kolay Harvard mimarisini kullanma şansımız olur. Yani kod ve veri adres ve veri yolları birbirinden ayrı olmaktadır. CISC mimarisinde yani çoğu bilgisayarda program, veri ve diğer birimler için tek bir adres ve veri yolu bulunmaktadır.

RISC mimarisinin bir özelliği de doğrudan belleğe müdahale olmamasıdır. Yani işlemek istediğimiz veri önce bellekten okunur ve yazmaçlara aktarılır. Yazmaçlar üzerinde işlem yapılır ve sonra belleğe yazılır. CISC mimarisinde ise doğrudan belleğe müdahale eden komutlar mevcuttur.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

 

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.