Yazmaç öbeği

Yazmaç öbeği, bir merkezi işlem birimindeki işlemci yazmaçlarının bir dizisini ifade etmektedir. Modern tümleşik devre tabanlı yazmaç öbekleri genellikle çok portlu hızlı durağan rastgele erişimli bellekleri (SRAM) kullanılarak sistemlere tümleştirilmektedirler. Bu tür rastgele erişimli bellekleri kullandıkları okuma ve yazma girişlerine göre ayrılır, fakat normal çok portlu durağan rastgele erişimli bellekler okuma ve yazma işlemlerini aynı girişleri kullanarak gerçekleştirebilmektedirler.
Bir matris şeklinde arka arkaya ve yan yana bağlanmış kapılardan oluşan yazmaç öbeği de işlemcinin tümüne oranla %20 enerji tüketir. Yazmaç öbeğinde enerji tüketimi yazmaç öbeğinin satırlarına okuma ya da yazma aracılığı ile erişildiği anlarda gerçekleşir. Ancak işlemci bir değer okuyup yazmadığı halde yani yazmaç öbeği durağan halde iken de enerji tüketir, buna durağan (static) enerji tüketimi denilir. Yazmaç öbeği, yayın kuyruğu gibi işlemcinin en yoğun birimleri SRAM tablolarından oluşmaktadır. Yazmaç öbeğini oluşturan SRAM bit hücreleri bitleri saklamak için değerlerini tazeleyen bir döngü içerisinde bulunurlar. Bu döngüde yer alan transistörler sızıntı akımı geçirerek hiçbir iş yapılmadığı anlarda da enerji tüketimine sebep olurlar. Şekil1'de yazmaç öbeğini oluşturan SRAM hücrelerinden 2 portlu bir bit hücresinin şematik çizimi gösterilmektedir.
2 portlu SRAM bit hücresi
Şekil 1.'de I1 ve I2 evirici birbiri ardına bağlanarak saklanması istenen verinin I1'in girişinde ve verinin tersinin ise I2'nin girişinde bulunmasını sağlamak ve bu sayede 2 eviricinin birbirini besleyerek devrede güç olduğu sürece verinin tazelenmeden korunmasını başarmaktır.
Devredeki veriye kelime seç telleri kullanılarak ulaşılabilir. Bu teller ve bit telleri hücrelerin birleşimine göre; eğer hücreler yatay seriliyorsa kelime seç telleri ve dikey olarak seriliyorsa bit telleri birbirine bağlanırlar. Hücrede port sayısı artırılabilir, böylece aynı anda birden fazla satır üzerine işlem yapılabilmektedir. Kelime seç–1 teli seçildiğinde T3 ve T4 transistörleri açılır ve eviricilerdeki veri bit tellerine aktarılır. Başka porttaki veriler içinde yine farklı bir hat seçilerek işlemler tekrarlanır.
Bit hücresinde yazma işlemi için yine okumadaki gibi kelime seç teli aktif hale getirilir, daha sonra bit hatları için önceden hazırlanmış veri bit hatlarından kelime seç telinin aktif olması ile eviricilere gelir ve böylece veri hücreye yazılır ve eviricilerde bir dahaki yazma işlemine kadar ve güç beslemesi devam ettiği sürece saklanır. Denilsin ki eviricilere yani hücreye mantıksal 1 değeri yazılmak isteniyor bu durumda Bit 1 teline 1 değeri gönderilir, sonra kelime seç-1 teli seçilir, bu telin aktif hale gelmesi ile transistör açılır ve bit teline gönderilen 1 değeri eviricilere verilir. Sunuç olarak mantıksal 1 değeri bit hücresine yazılmış olur. Eğer tek portlu olsaydı her bir işlem için bir vuruş harcanacaktı, fakat port sayısı çoksa aynı anda tek vuruşta birden fazla işlem gerçekleştirilebilir.
Aynı anda bir hücre birden fazla port tarafından okunabilir, fakat farklı portların yazacağı değerin aynı olup olmadığı bilinememesi sebebi ile aynı anda bir hücreye ancak bir port tarafından veri yazılabilir.
Port sayısının tek vuruşta çok işlem sunması gibi artı yöndeki etkisi yanında fiziksel büyüklüğü artırması ve SRAM tablosuna erişimi etkilemesi gibi eksileri de bulunmaktadır. Bir hücrede port sayısı arttıkça her port için bulunan nmos transistör sayısı toplam transistör sayısına eklenecek, eviricilere eklenecek her bir giriş ve transistör fazladan sığa ekleyecek, fazladan eklenecek bit telleri ve bu telleri sürmek ve işlem için yeni elemanlar eklenecek, sonuç olarak hücre fiziksel olarak büyüyecektir. Bunun yanında sığalar, telleri sürmek için gereken zaman, işlemler için eklenen kod çözücü gibi elemanlarında aynı işlemi gerçekleştirmek için büyüyecek olması ve diğer faktörler hepsi toplam gecikmeyi artıracaktır. Yine benzer etmenlerden dolayı artan güç tüketimi de port sayısının artmasının kötü etkisini artırmaktadır.
SRAM tablosu; çok sayıdaki bit hücrelerinin dizi olarak sıralanması şeklindedir. Burada birçok bit hücresinin üzerinde işlem yapmak için çeşitli çevre elemanları eklenilmektedir. Bu çevre elamanları;


•	Yazma sürücüleri


•	Kelime seç sürücüleri


•	Kod çözücü


•	Ön doldurucu


•	Fark algılayıcı


olarak belirlenmiştir.


Yazma sürücüleri: SRAM tablosunda kelime uzunluğu yani sütun sayısından bağımsız olarak satır sayısı arttıkça yazma portlarına gönderilecek veri telleri uzamaktadır. Dikey olarak giden bu telleri süren çevre elemanı yazma sürücüsüdür.
Kelime seç sürücüleri: Yazma sürücülerine benzer şekilde fakat bu sefer yatay uzayan kelime seç telini sürmek için kullanılan çevre elemanıdır.
Kod Çözücü: SRAM tablosunda bir kelime okumak için tablonun tüm satırını seçmek gerekmektedir. Bir portun tüm kelime seç telleri birbirine bağlı olduğundan sadece seçilecek satırı saptamak yeterlidir. SRAM tablosu 0'dan başlayarak adreslenir, ilk satır 0 adresine sahiptir. Bundan sonraki her satırın adresi 1 artarak gider. SRAM tablosuna ulaşacak mikroişlemci ilgili adresi verir, bu adresi kullanarak istenen kelime seç telini aktif etmek için kullanılan sistem elemanıdır.
Ön Doldurucu: SRAM tablosunda okuma için kelime seç teli aktif edildikten sonra hücre içindeki eviricilerde saklanan veri bit ve bit değil teline verilir, fakat giderek uzayan teller için aynı işlemi yapmak ve bu telleri sürmek çok küçük boyutlarda tasarlanmış eviricilerle zorlaşmaktadır ve çok zaman almaktadır. Bu amaçla ön doldurucu devreler kullanılmaktadır. Bu devreler okuma sinyali öncesinde Bit ve Bit değil telleri VDD/2 gerilim seviyesine çekerler. Bu sayede okunacak veri ne olursa olsun dolup boşalması gereken sığa yarısına iner. Böylece hem gecikme hem de güç tüketimi azalır.

Fark Algılayıcı: Kısaca SRAM tablosunda, okuma sırasında bit ve bit değil telleri arasındaki küçük gerilim değerlerindeki farkı algılayarak bu değerleri mantık düzeylerine (1 ve 0) çeken kazancı çok yüksek olan yükselticilerdir.
Genel olarak yazmaç öbekleri bu çevre elemanları ve SRAM bit hücrelerinin birleştirilmesi ile oluşturulmaktadır.
İşlemcilerde enerji tüketimini azaltmak için çeşitli uygulamalar geliştirilmektedir ve bunlardan önemli bir kısmı yazmaç öbeklerinde enerji tasarrufunu içermektedir. Bir yazmaç öbeğinde yazma ve okuma girişlerinden bazılarını iptal etmek ve yazmaç öbeklerini bloklara bölmek geliştirilen fikirlerden bir tanesidir. Diğer bir yöntem ise kullanılmayan satırların kapatılması yöntemidir. Yazmaç öbeğinde dar değerlerin kullanılması ile bu dar değerlerin tek bir satıra yazılması gibi diğer birçok yöntemde geliştirilmekte olan uygulamalar arasındadır.
Merkezi İşlem Biriminin Buyruk kümesi mimarisi, yonga üzerindeki bellek ile fonksiyonel birimler arasındaki veriyi düzenlemek için kullanılan yazmaç kümesini tanımlamaktadır. Temel MİB'lerde, bunlar yani mimarisel yazmaçlar, MİB içinde bulunan fiziksel yazmaçlardaki girdilere birebir karşılık gelmektedirler. Daha karmaşık düzeydeki MİB'ler yazmaç yeniden adlandırma (register renaming) işlemini kullanırlar, böylece hangi fiziksel girdinin hangi belirlenen mimarisel yazmacı tuttuğunu gösteren çizelge koşum sırasında devingen olarak değişebilmektedir. Transparan önbelleklere nazaran yazmaç öbeği mimarinin bir parçasıdır ve programlayıcı tarafından görülebilmektedir.