Bellek (bilgisayar)

Bellek bilgisayarı oluşturan 3 ana bileşenden biridir. (merkezi işlem birimi – bellek – giriş/çıkış aygıtları). İşlemcinin çalıştırdığı programlar ve programa ait bilgiler bellek üzerinde saklanır. Bellek geçici bir depolama alanıdır. Bellek üzerindeki bilgiler güç kesildiği anda kaybolurlar. Bu nedenle bilgisayarlarda programları daha uzun süreli ve kalıcı olarak saklamak için farklı birimler (sabit disk - CD - DVD) mevcuttur.
Belleğe genellikle random access memory (rastgele erişimli bellek) ifadesinin kısaltması olan RAM adı verilir. Bu ad bellekte bir konuma rastgele ve hızlı bir şekilde erişebildiğimiz için verilmiştir. RAM'de sadece işlemcide çalışan program parçaları tutulur ve elektrik kesildiği anda RAM'deki bilgiler silinir. Bilgilerin kalıcı olarak saklandığı yer teker(disk)’dir. Bu iki kavram bilgisayarı kullanmaya yeni başlayan insanlar tarafından genellikle karıştırılır. Bu kavramları açıklamak için en güzel benzetme; bir dosya dolabı ve çalışma masası olan ofistir. Bu örnekte dosyaların kalıcı olarak saklandığı tekeri dosya dolabı, üzerinden çalışılan verilerin bulunduğu belleği ise çalışma masası temsil etmektedir. Bir ofiste dosyalar dosya dolapları içinde saklanır ve çalışanlar üzerinden çalışmak istedikleri dosyayı dolaptan alarak kendi çalışma masaları üzerinde çalışırlar. Bilgisayarda da işlemci üzerinde çalışacağı veriler tekerden belleğe getirilir. Dosya dolabınız ne kadar büyükse, o kadar çok dosyayı saklayabilirsiniz ve masanız ne kadar büyükse aynı anda o kadar çok dosyayı masaya alıp üzerinde çalışabilirsiniz. Bilgisayar ortamında da işler tam olarak böyledir. Teker kapasitesi ne kadar büyükse o kadar çok veri saklayabiliriz ve bellek kapasitesi ne kadar büyükse işlemci o kadar çok dosya üzerinde çalışabilir. Bu benzetmenin bilgisayarın çalışma şeklinden farkıysa belleğe getirilen dosyaların tekerdeki dosyaların bir kopyası olmasıdır. Gerçek dosyalar tekerde saklanmaya devam eder. Bunun sebebiyse belleğin güç kesildiği anda verileri kaybetmesidir. Eğer bellekteki dosya değiştirilirse değişiklerin kaybolmaması için teker üzerinde değişikliklerin kaydedilmesi gerekir.

Geçmişten Günümüze Bellekler

İlk bilgisayarlarda bellek yoktu. Onun yerine süngü ve röle ile katot lambaları kullanılmakta idi. Yazılımlar ve veriler tamamen diğer medyalara geçirilmekte idiler. Teleteks şeritleri veya delikli kartlar gibi. İlk dijital bilgisayarlarda röleler bellek için kullanılmış. Daha sonra katot lambaları yanında yüzük şeklinde olan manyetik demir (ferrit) çekirdekler kullanılmış. Teker düzeninde tellere geçirilen bu demir yüzükler akımı aldığında mıknatıslaşmakta ve bu durumu kaybetmemekte idiler. Ama her okuma sürecinde hafıza bilgisini kaybetmekte idiler. Yapısal özelliği nedeni ile büyük mekanlara ihtiyaç vardı. Tipik bir büyük bilgisayar olan Telefunken TR440'nın 1970 senesinde belleği 48 bit lik 192.000 kelime yani bir Megabyte'a eşit idi.
1985'te satın alınan bir PC (Commodore PC10) de 64 KByte belleğe sahip iken 1990 da alınan bir PC de 1 MB'ye belleği bulunabiliyordu. 2005'te ise bu 512 Megabyte veya daha çok olabilir. Günümüzün PC'lerinde kullanılan işletim sistemleri (Windows, Linux, BeOs vs) bellek canavarları olup, yukarıya doğru sınır tanımamaktadırlar (tabii bu sınır var olup şu an pratik olarak ulaşılamamakta). Anakartlarda bulunan Chipset (yonga) tipine göre üst sınır olup bunların açıklamaları üreticinin İnternet sayfasında veya kılavuzunda bulunmaktadır.
Transistörün bulunuşu ile birlikte büyük atılımlar olmuş. Bugün tümleşik devre imkânları ile en modern bilgisayar sistemleri donatılmaktadır.
Günümüzde amaç büyük, ucuz ve hızlı bellek üretmektir. Ama hayatın gerçeği şudur ki; bellek büyüdükçe yavaşlar, hızlandıkça da küçülür. Bu sorunu aşıp büyük, hızlı ve ucuz bellek tasarlamak için aşamalı bellek yapısı ve koşutluk (paralellik) kullanılmaktadır.

Aşamalı Bellek Yapısı

Bellekler, aşamaları kullanılarak, en ucuz teknolojinin sağlayabileceği boyutla en pahalı teknolojinin sağlayabileceği hız sunulmaya çalışılmaktadır. Yazmaçlar işlemcinin içindedir ve işlemci yazmaçlara doğrudan erişebilir. Yazmaçlara erişim için geçen süre bir nanosaniyenin altındadır. Yazmaçlarda sadece birkaç bitlik veri tutulabilir. Bir GB veri saklayabilecek yazmaçlar üretmek için milyonlarca dolar harcamak gerekir. Birinci düzey önbellek birkaç kilobaytlık veri tutabilir ve erişim süresi birkaç nanosaniyedir. Erişim süresi ikinci düzey önbellekte birkaç on nano-saniyeye, ana bellekte de yüzlerce nano-saniyeye çıkar.
Bu yapıda yazmaçlar ve bellek arası iletişim derleyiciler; önbellek ve bellek arasındaki iletişim donanım; bellek ve teker arasındaki iletişim de işletim sistemi, donanım ve kullanıcı tarafından yönetilir.

Tanımlar/Kavramlar

Bulma(Hit): Aranan verinin üst düzey bellekte herhangi bir öbekte bulunmasıdır.
Bulma Zamanı: Bellek erişim süresi + Verinin bulunup bulunamadığının belirlenme süresi.
Bulamama(Miss): Aranan verinin alt düzey bir bellekte bulunmasıdır.
Bulamama Gecikmesi: Üst düzey bellekten bir öbeğin atılması + Yeni öbeğin işlemciye getirilmesi için geçen zaman.

Alanda Yerellik

Bir öğe bellekten okunduysa, yakınındaki adresteki öğelerin okunması olasıdır.

Zamanda Yerellik

Bir öğe bellekten okunduysa yakın zamanda tekrar okunması olasıdır.

Rastgele Erişimli Bellek (RAM)

Rastgele erişimli bellek ifadesindeki rastgele kavramı, bellekteki her veriye bellekteki konumundan bağımsız olarak aynı sürede erişilebildiği anlamına gelir.  Şekil 2.1 de sıradan bilgisayarlarda kullanılan RAM hücresinin fonksiyonel davranışını gösterir.
Fiziksel uyarlama tam olarak şekildeki gibi olmak zorunda değildir, ama çalışma şekli böyledir. Bir bellek hücresini uyarlamanın birçok yolu vardır. Şekildeki gibi flipfloplar üzerine kurulu RAM yongaları (çipleri) statik RAM’lerdir (SRAM) ve her konumun içeriği güç kesilene kadar saklanır. Dinamik RAM (DRAM) yongalarında bir miktar enerji depolayan kapasitörler kullanılır. Bu kapasitörlerdeki enerji seviyesi 1 ya da 0’a karşılık gelir. Kapasitörler flipfloplardan çok daha küçüktür, bu yüzden aynı boyutlardaki bir DRAM, SRAM’den çok daha fazla veri saklayabilir. DRAM üzerindeki hücrelerde, kapasitör boşaldıkça hücredeki veri düzenli olarak değiştirilmeli ya da yenilenmelidir.
DRAM’ler ortamdaki gama ışınlarıyla etkileşim içine girerlerse, üzerilerindeki kapasitörler zamanından erken deşarj olabilir. Fakat bu çok nadir gerçekleşen bir durumdur. Açık bırakılan bir sistem günlerce hata vermeden çalışabilir. Bu yüzden ilk kişisel bilgisayarlarda (PC) hata algılayıcı devreler bulunmazdı. Bilgisayarlar gün sonunda kapatılırdı ve bu sayede hatalar yığılmazdı. Hata algılayıcılarının olmaması, DRAM fiyatlarının uzun bir süre daha düşük seyretmesini sağladı. Ancak gelişen teknolojiyle DRAM fiyatlarının en düşük seviyeye gelmesi ve bilgisayarların açık kalma sürelerinin artmasıyla beraber, hata algılayıcılar bilgisayarların olağan parçaları haline geldiler.

RAM Çeşitleri

RAM’ler silikon üzerine yerleştirilmiş birçok transistörün, ağırlıklı olarak veri erişiminin kontrolü ve verinin saklanmasıyla ilgili belli işlevleri yerine getirmesi için birbirine bağlanmış elektronik yapılardır. RAM teknolojilerinde güdülen hedef daha küçük transistörler üretmek, böylece bir silikon parçasına daha fazla transistör yani daha fazla işlev sığdırmak ve bu sayede silikonun daha hızlı çalışmasını sağlamaktır. Bu hedefe giderken karşılaşılan engellerin çoğu gelişen teknolojiyle daha üretim aşamasındayken aşılıp geri kalan kısım ise geliştirilen algoritmalar ve protokollere çözülmektedir. RAM çeşitleri ise bu protokoller tarafından belirlenmektedir.
Kısaca hatırlamak gerekirse iki çeşit RAM olduğunu söyledik, DRAM ve SRAM. Kapasitörlerin şarjını periyodik olarak yenilemek gerektiği için DRAM’lara dinamik bellek, elektrik kesilmediği sürece bilgiyi sakladığı için SRAM’lara statik bellek adı verilir. DRAM’ın SRAM’a karşı avantajı ise yapısal basitliğidir. SRAM’da her bit için altı transistör gerekirken DRAM’da bir transistör ve bir kapasitör yeterlidir. Ekonomik nedenlerden ötürü kişisel bilgisayarlar, çalışma istasyonları ve Playstation – Xbox gibi küçük olmayan oyun konsollarında genel olarak büyük olan DRAM kullanılırken önbellek ve teker tamponu gibi diğer kısımlarda SRAM kullanılır.
SRAM ile ilgili ayrıntılar SRAM'de; SDRAM, RDRAM, DDR SDRAM gibi DRAM ile ilgili ayrıntılar DRAM'de bulunabilir.

Salt Okunur Bellek (Read Only Memory) - ROM

Üzerindeki verileri kalıcı ya da yarı kalıcı olarak saklayan rastgele erişimli belleklere ROM denir  Bir program belleğe yüklendiğinde, üzerine başka bir veri yazılana ya da güç kesilene kadar bellekte kalır. Bazı uygulamalar içinse veriler hiç değişmez. Bilgisayar oyunları, hesap makineleri, mikro dalga fırınlar üzerindeki kontrol programları gibi değişmeyen programlar ROM üzerinde saklanır.
ROM basit bir cihazdır. Bir kod çözücü, birkaç mantık kapısı ve veri çıkışlarından oluşur. Flipflop ya da kapasitörlere ihtiyaç duymadan çalışır.
Yüksek hacimli uygulamalarda ROM'lar fabrikalarda programlanır. Buna alternatif olarak küçük uygulamalar ve prototipler için, içerikleri PROM yazıcı olarak bilinen ve kısmen ucuz olan cihazlar kullanılarak kullanıcı tarafından yazılabilen Programlanabilir ROMlar (PROM) kullanılır. Maalesef oyun endüstrisinin oluşmaya başladığı ilk dönemlerde, PROM yazıcıların PROMların içeriğini okuma kabiliyeti de vardı. Bu sayede oyunların korsan kopyaları yeni PROM'lara kaydediliyor, hatta içlerindeki veri deşifre edilerek karşı mühendislik için kullanılıyordu. 
PROM’lar programcıya kodunun sürekli olarak saklanması imkânını verse de, PROMların üzerine sadece bir kez yazılabilir. Silinebilir ROMlara (Erasable PROMs – EPROM) ise üzerlerindeki veri kızılötesi ışınlarla silinerek tekrar tekrar yazma işlemi yapılabilir. Elektrikle silinebilir PROMlarsa (Electrically Erasable PROMs – EEPROM) içeriklerinin elektrik gücüyle yazılıp silinebilmesine izin verirler. Günümüzde kullanılan flaş belleklerin çoğunda bu teknoloji kullanılmaktadır. EEPROMlar üzerine on binlerce kez veri yazma ve silme işlemi yapılabilir.

Yonga Yapısı

Basit bir bellek yongası 0 dan m-1’e kadar sıralanmış m bit adres girişi (A₀-Aₘ₋₁), yonga seçici (YS ) ve okuma (K) – yazma (K~) kontrolünden oluşur. 5.1'de YS ve K’nın üzerindeki çizgiler yonganın YS=0 iken seçildiği ve K=0 iken bir yazma işlemi gerçekleşeceğini gösterir. T kadar bir zaman sonra yongadan veri okunacağında w bitlik veri, D₀-Dw-1 veri çıkışlarında hazır olur. Veri hattı burada da olduğu gibi birçok yongada çift yönlüdür.
Şekildeki yongadaki adres satırları, gelen m bitlik veriden, her biri w-bit sözcükle ilişkilendirilmiş olan adreslerden hangisinin kullanılacağını belirler. Yonga üzerinde de 2ᵐxw bitlik veri saklanabilir.
RAMler yazmaçlar derlemi olarak düşünülebilir. RAM yongaları üzerinde sözcükleri saklamak için yazmaçlar kullanılır ve hangi sözcüğün okunacağına ya da yazılacağına karar vermek içinde adresleme mekanizmaları oluşturulur.
Küçük RAM modülleri birleştirilerek daha büyük modüller elde edilebilir. Farklı tasarım yolları kullanılarak hem sözcük boyutu hem de modül başına düşen sözcük sayısı arttırılabilir. Örneğin sekiz adet 16M x 1-bit RAM kullanılarak bir adet 16M x 8-bit RAM yapılabilir. (16M=2²⁴ )

Bellek ve Başarım

Bilgisayarda başarım, yürütme zamanı ile belirlenir. Daha açık söylemek gerekirse Başarım = 1 / Yürütme Zamanı dır. Yürütme zamanı ise
Yürütme Zamanı = Buyruk Sayısı * BBÇ * Çevirim Zamanı
formülüyle verilir. Burada buyruk sayısı, o programın çalışması için kaç buyruğun yürütülmesi gerektiğini; BBÇ, bir buyruğun işlenmesi için kaç çevirim yapılması gerektiğini ve çevirim zamanı ise çevirim başına geçen süreyi göstermektedir. Bir programın buyruk sayısı bilgisayardan bilgisayara değişmez, her bilgisayarda aynıdır. Çevirim zamanı ise işlemcinin saat vuruş sıklığıyla alakalıdır. Örneğin saat vuruş sıklığı 200 MHz olan bir işlemcinin çevirim zamanı 5 ns dir.
Başarımda belleğin rolü ise BBÇ’nin hesaplanmasında ortaya çıkar. Örneğin ideal BBÇ’si 1,1 çevrim olan bir işlemciyi ele alalım. Bu işlemci zamanının %50 sini aritmetik ve mantık işlemleriyle, %30 unu yükleme ve saklama işlemleriyle ve %20 sini denetimde kullansın. Ayrıca kabul edelim ki bellek işlemlerinin %10 unu önbellekte bulamasın ve bu durum 50 vuruşluk gecikme yaratsın. O halde BBÇ
BBÇ = BBÇ + Buyruk Başına Ortalama Duraklama
    = 1,1(çevrim) + (0,30(veriBellegiİslemi/buyruk)× 0,10(bulamama/veriBellegiİslemi)× 50(çevrim/bulamama))
    = 1,1 çevrim + 1,5 çevrim
    = 2,6 çevrim
olarak hesaplanır.
Buradan kolayca hesaplanacağı üzere 1,5 çevrim / 2,6 çevrim = 0,58 olup demek ki işlemci zamanının %58 ini belleği beklemekle geçirmektdir.
Eğer bulamama oranı %1 artarsa yani %11 olursa o halde BBÇ 2,75 çevrim olacak ve bu durumda işlemci zamanının %60 ını belleği beklemekle geçirecektir.
O halde oluşacak gecikme zamanı sabit kalmak üzere belleğin boyutunu büyüterek bulamama oranını azaltırsak yürütme zamanı azalır, dolayısıyla başarım artar diyebiliriz.

Ticari Bellek Modülleri

Piyasalarda satılan belleklerin çoğu belli standartlara göre üretilirler. Şekilde sekiz adet 2²⁰ bitlik çipten oluşmuş 1MB’lık bir yonga modülünü göstermektedir. 1 den 30’a kadar numaralandırılmış olan bağlantı noktaları tek bir yol üzerinde sıralanmıştır. 2²⁰ adet adres alanı için 20 tane adres satırına ihtiyaç olmasına rağmen sadece 10 tane adres girişi vardır. 10 bitlik satır ve sütun için 10 bitlik adresler ayrı ayrı gelirler ve kolon adres storoboskobu ile satır adres storoboskobu gelen adreslerden kendilerine ait olanı seçerek adresi belirlerler. (Satır adres storoboskobu belli aralıklarla kapasitörleri şarj etme işleminide gerçekleştirir.) Bu işlem adrese erişim zamanını 2 katına çıkarırmış gibi görünse de, sadece satır ya da sadece sütun adresinin değiştiği durumlarda ortalama erişim zamanı 20 bitlik adres girişi kullanılan duruma göre daha hızlıdır. V1 den V8 e kadar olan 8 adet veri yolu da aynı anda 1 baytlık verinin paralel olarak okunup yazılmasına imkân verir.