Bellek
Flip-floplar, latch’ler ve bellek: kapılar nasıl hatırlar
Mantık kapılarının belleği yoktur: aynı girişler hep aynı çıkışı verir. Yine de her bilgisayar milyarlarca biti hatırlar. İşin sırrı bir döngü. Bir kapının çıkışını kendi girişine geri besle; devre kendini yerinde tutabilir.
Geri besleme: kendini ayakta tutan döngü
Döngü içermeyen kapılardan oluşan bir devreye kombinasyonel devre denir. Çıkışları yalnızca o anki girişlere bağlıdır, bu yüzden hiçbir şey hatırlayamaz. Bir çıkışın daha önceki bir girişe geri dönmesine izin verdiğin anda devre, aynı girişler için birden fazla kararlı duruma sahip olabilir; hangisinde olduğu da geçmişine bağlıdır. İşte bellek bu. Bu tür devrelere ardışıl (sequential) devre denir.
En basit bellek tek bir biti, birbirini yerinde tutan iki kapıyla saklar: biri 1 derse öbürü 0’a itilir, bu da ilkini 1’de kalmaya zorlar. Dışarıdan bir dürtme gelmedikçe ikili sonsuza kadar (ya da elektrik kesilene kadar) olduğu yerde kalır. İki NAND kapısını bunu yapacak şekilde nasıl dizeceğin oyunun en güzel bulmacalarından biri, o yüzden fikirde duruyoruz.
SR latch (tutucu)
Set–reset latch’in (SR tutucu) iki kontrol girişi vardır. Set girişine gelen bir darbe, saklanan Q bitini 1 yapar ve Q darbe bittikten sonra da 1’de kalır. Reset girişine gelen bir darbe Q’yu 0 yapar ve Q 0’da kalır. İki giriş de etkin değilken latch sadece değerini tutar. İkisini birden etkinleştirmek yasak durumdur: tasarıma göre çıkışlar anlamsız bir duruma düşer ya da iki giriş bırakıldığında birbiriyle yarışır.
Bu türün ilk devresi, İngiliz fizikçiler William Eccles ve F. W. Jordan’ın 1918’de iki vakum tüpüyle patentini aldığı Eccles–Jordan tetikleyicisiydi. İki kararlı durumu olan bu tür devrelere zamanla flip-flop denmeye başlandı. İlk elektronik bilgisayarlar bunlardan binlercesini kullandı.
D latch: ne zaman dinleyeceğine karar vermek
SR latch tek bir şey söylemek için iki sinyale ihtiyaç duyar. D latch ise tek bir veri girişi (D) ve bir etkinleştirme (enable) girişi alır. Enable açıkken Q doğrudan D’yi izler; latch saydamdır. Enable kapandığında Q, o anda D ne ise orada donar ve bundan sonra D’ye aldırmaz.
D flip flop: yalnızca tek bir an
Saydamlık, saatle çalışan bir makinede sorun çıkarır. Bir yazmacın çıkışı biraz mantıktan geçip kendi girişine geri dönüyorsa (örneğin bir sayaç kendine 1 eklerken), saydam bir latch, saat 1’deyken değerin döngüde defalarca dönmesine izin verir. Çözüm kenar tetiklemeli D flip flop: D’yi yalnızca saatin 0’dan 1’e yükseldiği anda içeri alır, geri kalan bütün zamanda çıkışını sabit tutar. Bir kenar, bir adım. İkisini aşağıda karşılaştır.
Zamanlama: kurulma, tutma ve metastabilite
Gerçek flip-floplar, D’nin saat kenarından kısa bir süre önce kararlı olmasını (kurulma süresi, setup time) ve kenardan kısa bir süre sonra da kararlı kalmasını (tutma süresi, hold time) ister. D bu pencerenin içinde değişirse flip-flop, bir tarafa düşmeden önce öngörülemeyen bir süre 0 ile 1 arasında asılı kalabilir. Buna metastabilite denir. Saatli bir sistemin dışından gelen sinyallerin (bir düğmeye basılması ya da kendi saati olan başka bir çipten gelen veri gibi) kullanılmadan önce genellikle art arda iki flip-floptan geçirilmesinin nedeni bu. İkincisi örnek aldığında ilkinin hâlâ kararsız olma ihtimali son derece düşüktür.
Tek bitten RAM’e
Sekiz D flip-flopu yan yana koy, onlara ortak bir saat ve bir yükle (load) kontrolü ver: 8 bitlik bir yazmaç (register) elde edersin. Yazmacın çıkışını bir toplayıcıdan geçirip geri besleyen biraz mantık ekle: program sayacının kalbi olan bir sayaç elde edersin. Birçok yazmacı, hangisine yazılacağını seçen bir adres kod çözücüsü ve hangisinin okunacağını seçen bir seçiciyle bir araya getir: karşında RAM var.
Gerçek bellek çipleri her biti tam bir flip-floptan kurmaz. Statik RAM (SRAM, işlemci önbelleklerinde kullanılır) her biti iki tersleyiciden oluşan bir döngüde ve iki erişim transistöründe, toplam altı transistörde saklar. Dinamik RAM (DRAM, bilgisayarının ana belleği) her biti tek transistörlü minicik bir kondansatördeki yük olarak saklar ve yük sızıp gitmeden önce onu saniyede binlerce kez tazelemek zorundadır. Fikir latch’tekiyle aynı: bir bit, bir şeyin yerinde tuttuğu fiziksel bir durumdur.