Plazma sayı 5, sayfa 47

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 47

Oysa flip floplarda durum tam tersidir. Örneğin bir flip flop türü olan toggle-flip floplar şöyle çalışır. Bu flip flopun bir girişi vardır. Bu girişe toggle adı verilir. Çıkış ise flip flopun o an sakladığı bilgidir (bir bitlik bilgi yukarıdan hatırlayın). Toggle değeri 0 iken değer değişmez. Toggle 1 yapılırsa çıkış değişir. 0 ise 1, 1 ise 0 olur. Şimdi dikkat ederseniz bu devrenin giriş değerini bilmemiz çıkışı tahmin etmemize yetmiyor. Devre aynı girişe farklı durumlarda farklı çıkış veriyor. Yani devrenin bir durumu başka bir deyişle bir hafızası var.

Şimdi bu temel kavramı toparlayalım. En basitten en karmaşığa kadar bütün dijital devreler bu iki tip alt devrelerin birleşiminden oluşur. Bu iki tür devre tipine sık sık değineceğim.

ALU (Arithmetic Logic Unit)

Şimdi ALU konusuna dönelim. ALU'nun kombinasyonel (yani hafızası olmayan) bir devre olduğunu söylemiştim. ALU giriş olarak iki tane 8 bitlik hat ve yapılacak işlemi seçen bazı kontrol hatları alır. Çıkışı da 8 bitlik bir hattır. CPU içinde genelde registerlar ALU'nun girişlerine dijital anahtarlarla (ki bunlara bus transceiver da denir) bağlanır. Bu anahtarlar kapatılırsa o registerda saklanan değer ALU'ya giriş parametresi olarak verilmiş olur. Ayrıca bellekten okunan bir değer de ALU girişine bağlanabilir. Bu bağlantı yapılıp kontrol girişlerine de yapılması istenen operasyon belirtildiği anda ALU'nun çıkışında sonuç belirir. Bu çıkış yine dijital anahtarlarla bir registera bağlanabilir. Böylece 2 registerla veya bellekle yapılan bir işlemin sonucu tekrar bir registera saklanmış olur.

Bu bölümü sağ salim atlatabildiyseniz ciddi bir tebriği hak ettiniz. Şu anda CPU mimarisi ile ilgili çok temel bazı kavramları anlamış bulunuyorsunuz. Eğer anlamadıysanız çok önemli değil ama ara sıra tekrar okuyarak ya da bize yazarak bu problemi çözmeye çalışın.

Özet olarak CPU'muzda registerlar ve ALU sayesinde artık registerlara bir takım değerler yüklüyor, bunlar arasında işlemler yapıp sonuçları tekrar registerlara saklayabiliyoruz. Bu CPU ile şu halde pek çok faydalı iş yapılabilir. Fakat biz bilgisayar dediğimiz alete doğru basitten karmaşığa gelişen bir yolculuğa devam edeceğiz. Önümüzdeki konu bellek

Bellek

Bellek her biri registerlara benzeyen 8'er bitlik saklama hücrelerinin bir araya getirilmesiyle oluşturulan hafıza bloğudur. Registerlardan daha ucuz ve daha yavaştır. Bu yüzden daha bol miktarda konulabilir.

Bellekteki her bayta erişebilmemizi sağlayan şey adresleme kavramıdır. Örneğin 64 kilobaytlık bir bellekte adresleri 0'dan başlayıp yaklaşık 64000 civarlarına kadar uzanan yaklaşık 64000 kutucuk vardır. Bu kutucukların her biri bir baytlık (0-255 arası) bir değer alabilir.

Bellek çipleri üzerinde adres ve data bus adı verilen pinler olur. Bir pin ile de okuma veya yazma seçeneği seçilir. Mesela okuma/yazma pinine okuma seçeneğini koyup adres bus'a 15 yazarsak, 15. adresteki baytın değeri data bus'da gözükür.

Bus nedir? Dijital elektronikte çipleri veya çiplerin içindeki alt bölümlerin birbirleriyle data alışverişi yapmalarını sağlayan çoğu zaman 8, 16, 32 bitlik hatlara bus denir. Mesela CPU'dan bahsederken ALU'nun çıkışının A registerine bağlı olduğunu söylemiştim. İşte bu bağlantı ALU devresinin çıkışındaki 8 bağlantı noktasından A registerinin girişindeki 8 giriş bağlantı noktasına giden yan yana 8 kablodan ibarettir.

İşte CPU ve belleği bir araya koyarsak daha çok iş yapabilen bir CPU elde edebiliriz. CPU genelde Bellek Adres Tamponu ve Bellek Data Tamponu denilen registerlar içerir. Bu registerlar bellek çipinin adres ve data buslarına bağlıdır. Böylece CPU Adres Tamponuna bir değer yazıp, bellekte o adreste bulunan data değerini Bellek Data Tamponuna yükleyebilir. Böylece o registerdaki değer herhangi bir diğer registera kopyalanabilir. Bu register da ALU'ya bağlıdır. Böylece bellekten okunan bir değer o an registerlarda bulunan değerlerle aritmetik/mantıksal bir işleme sokulabilir. Son olarak registerlardan birindeki değer Bellek Data Tamponuna kopyalanıp ardından Bellek Adres Tamponuna istenen bir adres yazılır ve okuma/yazma pini de yazma durumuna getirilirse, CPU bellekteki istediği bir adrese herhangi bir registerin değerini yazmış olur.

Şekil 2.

Şu an önemli bir noktaya geldik. Artık elimizde bayağı yetenekli bir cihaz var. Elimizdeki bellekte duran bilgileri okuyup registerlara yüklüyor ardından üzerlerinde bazı işlemler yapıyor ve sonuçları tekrar bellekte saklayabiliyoruz. Bir örnek inceleyelim... Diyelim ki bellekteki 10 adresindeki sayı ile 15 adresindeki sayılar toplanıp sonuç 100 adresine yazılacak. Olaylar şu sırayla olur.

1. Adres Tamponuna 10 yazılır. Okuma modu seçilir. Data tamponuna 10 adresindeki data gelir. 2. Data tamponundaki değer A registerine kopyalanır. 3. Adres Tamponuna 15 yazılır. Okuma modu seçilir. Data tamponuna 15 adresindeki data gelir. 4. ALU'da toplama işlemi seçilir. ALU'nun bir inputunda A diğer inputunda Data tamponu bağlantıları açılır. Toplamanın sonucu A registerine geri yüklenir.

Klavyeyle gezinmek için ← ve → tuşları.