PC’lerimizdeki bellekler, sistemde yer alan iÅŸlemci ve grafik kartları gibi veri yaratan ve iÅŸleyen birimlerin ortaya çıkardığı verilerin uzun ya da kısa süreli olarak saklandığı iÅŸlevsel birimlerdir. Sabit disk sürücüler, sistem RAM’leri, iÅŸlemcilerin içindeki cache diye tabir edilen bellekler, BIOS’un saklandığı EPROM’lar, grafik kartlarının üzerindeki RAM’ler, CD’ler, disketler vs. hepsi PC’lerde yer alan bellek türleridir. Bellek kavramı bu derece geniÅŸ bir konu olmasına raÄŸmen bu yazıda konumuz olan bir çoÄŸumuzun oldukça aÅŸina olduÄŸu, hep daha fazla olmasını hayal ettiÄŸimiz ve hatta yeri geldiÄŸinde overclock denemelerimize bile dahil ettiÄŸimiz sistem RAM’i denilen bellekler. Peki RAM ne demek? RAM, İngilizcesi Random Access Memory, Türkçesiyle Rastgele EriÅŸilebilir Bellek kelimelerinin baÅŸharflerinden oluÅŸan bir kısaltma. Bu noktada, belleklerin RAM’ler ve Sadece Okunabilir Bellekler yani ROM’lar(Read Only Memory) ÅŸeklinde sınıflandırıldığını hatırlatmak isteriz. RAM’ler veriyi saklamak için beslemeye yani elektrik enerjisine ihtiyaç duyduÄŸu halde ROM’lar besleme olmasa bile veriyi saklayabilirler. Ayrıca, ROM’lar genellikle, kısaltmanın açılımından da anlaşıldığı gibi sadece okuma amacıyla kullanılırlar. Üzerlerinde saklı verinin kullanıcı tarafından kolayca deÄŸiÅŸtirilmemesi hedeflenir.
RAM’lerin en baÅŸta gelen özelliklerinden birisi; sakladıkları verilere manyetik teyplerdeki ya da CD-ROM’lardaki sıralı eriÅŸimin aksine, sırasız ve hızlı bir ÅŸekilde rastgele eriÅŸime imkan vermeleridir. EriÅŸimde saÄŸladıkları hız, RAM’lerin sistemde bu denli önemli ve performansı belirleyici olmalarında en önde gelen etkendir. Veri barındırma kapasiteleri ve hız konusunda, merkezi iÅŸlemci üzerindeki düşük kapasiteli ancak çok hızlı bir RAM olan cache belleklerle, kapasiteleri günümüzde inanılmaz boyutlara ulaÅŸmış olan sabit disk sürücüler arasında yer alırlar ve bir çeÅŸit tampon görevi görürler. İşletim sistemi, sabit sürücünün yavaÅŸlığını gizlemek amacıyla, yakın gelecekte ihtiyaç duyulabilecek veriyi henüz ihtiyaç durumu ortaya çıkmadan sabit diskten sistem RAM’leri üzerine yükler ve gerektiÄŸinde hızlı bir ÅŸekilde iÅŸlemcideki cache belleÄŸe iletilmesini saÄŸlar.
RAM’lerin, fiziksel yapıları ve çalışma prensipleri itibariyle mikroiÅŸlemcilerden hiç bir farkı yok. Tıpkı mikroiÅŸlemciler gibi, silikon üzerine iÅŸlenmiÅŸ çok sayıda transistörün, bu defa ağırlıklı olarak veri eriÅŸiminin kontrolü ve verinin saklanmasıyla ilgili belli iÅŸlevleri yerine getirmek amacıyla birbirine baÄŸlanmasıyla ortaya çıkmış ve nispeten daha az karmaşık olan elektronik yapılar. Bu yüzden mikroiÅŸlemci teknolojileriyle RAM teknolojilerini ilgilendiren konular tamamıyla ortak. RAM teknoljilerini süren hedef, mikroiÅŸlemcilerde olduÄŸu gibi, daha küçük transistörler üretmek, bu sayede aynı büyüklükte bir silikon parçasına daha fazla transistör yani daha fazla iÅŸlev sığdırmak ve silikonun daha hızlı çalışmasını saÄŸlamaktır. Bu amaca ulaÅŸma yolunda karşılaşılan engellerin çoÄŸu üretim teknolojilerindeki geliÅŸmelerle aşılmakta olup geri kalan kısım ise geliÅŸtirilen daha akıllı algoritmalar ve protokollerle çözülüyor. İşte RAM türlerini bu protokoller belirliyor.
ÇoÄŸumuz, SDR-RAM, DDR-RAM, DDR II RAM, RDRAM ve hatta artık mazi de kalmış olsa da EDO RAM gibi kısaltmaları duymuÅŸuzdur. Bu kısaltmalar, RAM’e eriÅŸmek, yani RAM’den veri okumak ya da RAM’e veri yazmak için kullanılan protokol hakkında bize bilgi verir. Örnek olarak, günümüzde en popüler RAM türü olan DDR bellekleri verebiliriz. Buradaki DDR(Double Data Rate) kısaltması, çift veri hızlı bellekler anlamında kullanılıyor. Bir önceki nesil bellek türlerine isim veren SDR(Single Data Rate) kısaltması ise tek veri hızlı RAM’leri simgeliyor. Bu kısaltmaları daha detaylı açıklayabilmek için sonraki bölümlerde deÄŸineceÄŸimiz bazı kavramları anlamak gerekiyor. Bu noktada, ön bilgi olarak söyleyebileceÄŸimiz, DDR ve SDR kavramlarının senkron olarak çalışan, yani veri akışının bir saat iÅŸaretiyle düzende tutulduÄŸu tip RAM’lerde, bir saat periyodu içinde gerçekleÅŸen veri akış hızını belirttikleri olacaktır. RD-RAM ise RAMBUS firması tarafından geliÅŸtirilen RAMBUS veriyolu üzerinde çalışan, bazı yönlerden DDR’a benzeyen, İngilizce’deki ‘RAMBUS Direct’ kelimelerinin baÅŸ harflerinden ismini alan bir RAM türüdür.
Nasıl Çalışır
Anakartlarımızdaki bellek soketlerine yerleÅŸtirdiÄŸimiz baskı devreleri, anakarta baÄŸlandıkları veri yolunun geniÅŸliÄŸine göre DIMM (Dual Inline Memory Module) ve SIMM (Single Inline Memory Module) gibi kısaltmalarla adlandırıyoruz; sanırız bunun da haklı bir sebebi var. Bugünlerde en popüler olanı, üzerinde genellikle bant geniÅŸliÄŸi yüksek ve dolayısıyla daha geniÅŸ veriyoluna ihtiyaç duyan DDR bellek yongalarını barındıran DIMM’ler. Dizüstü bilgisayarlarda kullanılan DIMM’ler fazla yer kaplamamaları için küçük olduklarından SO-DIMM(Small Outline Dual Inline Memory Module) yani küçük izdüşümlü RAM adını alıyorlar. DIMM’lere baktığımızda, genellikle 4,8 ya da 16 gibi belli sayılarda bellek yongaları, dirençler ve kondansatörlerin yanısıra SPD(Serial Presence Detect) denilen bir ROM yongası bulunduÄŸunu görebiliriz.
SPD yongası üzerinde, yazımızın ilerleyen bölümlerinde daha detaylı değineceğimiz, baskı devre üzerindeki bellek yongalarıyla ilgili çeşitli parametreler saklanır. Bu parametrelerin zamanlamayla ilgili olanları üretimden sonra yapılan perfromans testleri sonucunda modülün kararlı olarak çalışabileceği en üst performansı gerçekleyecek şekilde belirlenir ve SPD üzerine işlenir. Bellek modülü anakarta yerleştirildikten sonra, SPD üzerindeki bu parametreler boot esnasında BIOS tarafından okunur ve sistemin bellek kontrolüyle ilgili kısımları gerektiği şekilde haberdar edilir, böylece bellekle olan iletişim sağlanmış olur. Bellek modülünün üreticisi olan firmanın kodu, modülün üretim tarihi, seri numaralrı, bellek yongalarının kapasiteleri ve erişimleriyle ilgili bilgiler SPD yongasında saklanan diğer bilgiler arasında yer alır.
Bizi ilgilendiren asıl kısım ise bellek yongaları. Bunlar, tıpkı mikroişlemciler gibi, kılıflanmış tümleşik devreler. Üretim teknolojisi yani transistörlerin minyatürleştirilmesi bakımından bazı durumlarda işlemcilerden bir nesil önde gidenlerine rastlamak bile mümkün. Yonga üzerinde yer alan ve milyonlarcasının bir araya gelerek bellek dizisini oluşturduğu temel yapı, verinin en temel hali olan bir bitlik veriyi yani ikilik düzendeki 0 veya 1 bilgisini saklamakla sorumlu RAM hücresidir. Bir yongada bu hücreden milyonlarcası kullanıldığından, tasarım ve üretimde çalışan mühendisleri meşgul tutan ve para kazanmalarını sağlayan konuların başında bu bellek hücresini en az yer kaplayacak, en az fireyle en verimli şekilde üretilebilecek şekilde tasarlamak yer alır.
Bellek yongasının nasıl çalıştığını anlamak için önce bu tümdevrenin yapısını inceleyelim. Elimizde bir bellek dizini var. Bu dizini belli sayıda satır ve sütünlardan oluÅŸan iki boyutlu bir tablo olarak düşünebiliriz. Tablomuzun yapıtaÅŸları ise bahsettiÄŸimiz RAM hücreleri. Bu tablo üzerindeki herhangi bir hücreye eriÅŸmek için o hücrenin tablodaki konumunu, yani, hangi satır ve sütünun kesiÅŸim noktasında bulunduÄŸunu vermemiz gerekir. Bu konum bilgisine adres diyoruz. EriÅŸimi kolaylaÅŸtırmak için genelde bellek tablomuz yonga üzerinde daha küçük alt tablolara bölünmüştür. Bu alt tablolara banka deniyor. Günümüzde bellek yongaları genelde 4 bankalı olarak tasarlanıyor. Kısaca, adresimiz satır ve sütün numaralarının yanısıra bir banka numarasını da içeriyor. Bu sayede bellek yongası hangi bankanın kaçıncı satırındaki kaçıncı sütunundaki hücreye eriÅŸim yapılmak istendiÄŸini biliyor. İşlemcilerin belleÄŸe eriÅŸirken kullandığı en küçük veri birimi tek bir bit yerine 8 bitten oluÅŸan bayt’tır. Bu yüzden bellek yongalarında eriÅŸilebilen en küçük veri birimi de byte olarak düzenlenmiÅŸtir. Böylece bellek tablomuz satır, sütun ve banka adres bilgileriyle eriÅŸilen byte’lardan oluÅŸuyor. DiÄŸer bir deyiÅŸle bir byte’ı oluÅŸturan ve tablomuzda yanyana konumlanmış olan 8 RAM hücresi aynı anda okunuyor ya da yazılıyor. Bu aslında gerçekte olanın basitleÅŸtirilmiÅŸ hali. Kullandığımız bellek modüllerinde anakarta baÄŸlantıyı saÄŸlayan veri yolunun geniÅŸliÄŸi göze önüne alındığında - ki bu DIMM’lerde 128 bittir - aynı anda çok sayıda byte okumak mümkün.
Sanıyorum ki bu noktada bir bankanın yapısını ve nasıl iÅŸlediÄŸini incelemek yerinde olacaktır. Bu kısımda günümüzde en popüler olan SDR-RAM ve DDR-RAM bellek tiplerinin temel çalışma prensibi olan dinamik RAM nasıl çalışır hep birlikte göreceÄŸiz. BahsettiÄŸimiz gibi, banka, esas olarak belli sayıda satır ve sütunlardan oluÅŸan bir byte tablosu. Bu tablodan byte’larımızı okumak için satır ve sütun numarasını yani adresini vermemiz yeterli. Simdi byte’larımızı oluÅŸturan bitlerimize yani RAM hücrelerimize döndüğümüzde nasıl oluyor da bu hücrelerde saklanan veri ile dışarı dünya arasında iletiÅŸim saÄŸlanıyor biraz daha yakından bakalım.
RAM hücremizi dışarıya bir vanayla baÄŸlı olan bir hazne olarak düşünelim. Verimizi yani hücrelerde saklanan 0 veya 1 deÄŸerlerinden birini saklayan bitlerimizi de haznemizin boÅŸ ya da dolu olma durumu olarak, suyu ise yine aktığını varsayabileceÄŸimiz elektriksel yük yani elektronlar olarak modelleyelim. Buna modele göre, RAM hücrelerimiz, yani küçük su hazneciklerimiz, saklayacakları veri 0 ise boÅŸ, 1 ise dolu oluyor. Bellek tablomuzda bir sütunda yer alan yani dikey olarak komÅŸu olan haznelerin tümü ortak bir boruya baÄŸlı. Her sütunda bulunan bu ortak borunun elektronikteki karşılığı bit hattı. Bit hattına her okuma veya yazma iÅŸleminden önce ayrı bir vana üzerinden su dolduruluyor. Buna birazdan daha detaylı deyineceÄŸiz. Bu boruların bir ucunda, borudaki su seviyesini algılayan algı yükselticisi denilen birimler bulunuyor. EriÅŸim sırasında, önce adresin gösterdiÄŸi satırdaki bütün hazneleri bulundukları sütunlardaki ana boruya baÄŸlayan küçük vanalar aynı anda açılıyor ve tüm satırın sakladığı veri okunuyor. Sıra geliyor bu satırın hangi sütununun ayıklanacağına. Bunun için, bir kısmı satırla ilgili iÅŸlemlere eÅŸ zamanlı olarak, adresin gösterdiÄŸi sütun numarası çözümleniyor, o sütuna ait byte’ın algılayıcılarına algıla komutu veriliyor ve o byte okunmuÅŸ oluyor.
Hazne 0 mı yoksa 1 mi saklıyor bilmek istediğimizde, yani hücremizi okumak istediğimizde, haznemizi bit hattına bağlayan vanasını açıyoruz. Haznemiz boş ise önceden ağzına kadar suyla dolu olan borudaki suyun haznemizin alabileceği kadar kısmı haznemizin içine doluyor ve ana borumuzdaki su biraz eksiliyor. Bit hattımızın ucunda yer alan su seviyesi algılayıcısı, boru tamamen su doluysa 1, bir hazne kadar su eksilmişse 0 veriyor. Her sütunun altında o sütunun ana borusuna bağlı bir algılayıcı yer alıyor. Tekrar okuma işlemine geri dönersek, haznemiz okuma öncesi haznemiz boş ise yani 0 saklıyorsa vanası açıldığında ana borudaki su içine doluyor, ana borudaki su seviyesi düşüyor ve algılayıcımız 0 veriyor yani hücremizde saklanan veriyi doğru olarak dışarı aktarıyor. Haznemiz okuma öncesi zaten dolu ise haznemizin vanası açıldığında hiçbir su akışı olmuyor ve algılayıcımız dışarıya 1 değerini doğru olarak iletiyor. Bu noktada önemli bir konuyu açıklamak gerekiyor ki eminim bazı okuyucularımızın dikkatinden kaçmamıştır. Haznemiz 0 saklıyorsa yani boşsa, okuma işleminden sonra içine su doluyor, dolayısıyla içeriği bozuluyor ve bir anda 1 saklıyormuş durumuna geliyor. Aynı olay 1 saklama durumunda gerçekleşmiyor. Peki bu pratikte nasıl engelleniyor? Unutmayalım ki amacımız hazneyi, içeriğini bozmadan okuyabilmek. Basit bir fikir olarak, okuma işleminden sonra algılayıcımızın algıladığı değeri hücremize tekrar yazmak aklımıza gelebilir ancak bu performans açısından büyük kayıp olur. Düşünsenize, 0 olan her bit için her okuma sonrası bir de yazma işlemi için bekle. Gerçekte olay çok daha basit: Haznemiz ana borudaki suyun içine akmasına izin veriyor ancak bu suyu içinde saklamıyor, bunun yerine bir bakıma kanalizasyon diye nitelendirecegimiz çok daha büyük ve bellekteki her hazne tarafından paylaşılan başka bir hazneye başka bir kanalla boşaltıyor. Hücremizi kanalizasyona bağlayan kanal yine bir vana tarafından kontrol ediliyor. Haznemiz doluyken, kendi içindeki bir geri beslemeyle bu vana kapalı tutuluyor ve böylece hazneden kanalizasyona su kaçışı engelleniyor. Hazne boşken ise bu vana açılıyor. Bu kanalizasyonun elektronikteki karşılığı toprak. Böylece boşsa yine boş kalarak ama yapması gerektiği gibi bağlı olduğu sütunun bit hattındaki yani ana borusundaki suyun seviyesini azaltarak sakladığı verinin algılayıcı tarafından doğru olarak algılanmasını sağlıyor.
Okuma iÅŸlemini biraz olsun açıklığa kavuÅŸturduktan sonra bakalım yazma iÅŸlemi nasıl gerçekleÅŸiyor. Yazma iÅŸleminde amacımız haznemizin içeriÄŸini gereken durumlarda deÄŸiÅŸtirmek. Gereken durumlardan kastettiÄŸimiz, hücremize yazmak istediÄŸimiz deÄŸer, hücremizin hali hazırda sakladığıyla aynıysa, herhangi bir deÄŸiÅŸikliÄŸe gerek olmaması. Mekanizma, okumayla hemen hemen aynı. Yazma iÅŸlemi öncesi tıpkı okumada olduÄŸu gibi sütuna ait ana boru suyla dolduruluyor. Bunun yapılma sebebi, önceden gerçekleÅŸmiÅŸ bir yazma veya okuma iÅŸlemi nedeniyle ana borudaki su seviyesinde azalma olduysa bu eksiÄŸi tamamlamak, çünkü gördüğümüz gibi bu temel çalışma prensiplerinden birisi. Yazma iÅŸlemi sırasında istenilen hücrenin vanası açılıyor ve yazmak istediÄŸimiz verinin 0 ya da 1 olmasına göre algılayıcıların bulunduÄŸu ucundan ya haznenin baÄŸlı bulunduÄŸu sütundaki ana borudan yüksek basınçla su emiliyor(0) ya da boruya yüksek basınçta su basılıyor(1). Haznemiz boÅŸsa vanası açılınca bir ucundan zaten ana borudan su emildiÄŸi için yine boÅŸ kalıyor, içine su dolmuyor. Aynı ÅŸekilde haznemiz doluysa ve 1 yazılmak isteniyorsa boruya basınçlı bir ÅŸekilde su basıldığı için haznemiz yazma iÅŸlemi sırasında yine dolu kalıyor. Öte yandan, haznemiz boÅŸ ise ve 1 yazılacaksa, yani dolması isteniyorsa, vanası açıldığında ana borudaki basınçlı su, hücrenin kanalizasyona olan su akışını bastırarak dolmasını saÄŸlıyor ve hazne dolunca da geri besleme mekanizmasıya kanalizasyona açılan vana kapanıyor, haznemiz dolu kalıyor ve böylece sakladığı yeni veri 1 olarak deÄŸiÅŸmiÅŸ oluyor. Benzer ÅŸekilde, haznemiz dolu ise ve 0 yazılmak yani boÅŸaltılmak isteniyorsa, yazma iÅŸlemi sırasında borunun ucundan basınçla su emiliyor, haznemizin vanası açıldığında emme gücüyle dolu olan haznemizdeki su da ana boruya çekilerek emiliyor. Hazne boÅŸaldığında kanalizasyona olan baÄŸlantı da boÅŸalma iÅŸlemine destek olarak açılıyor ve iÅŸlem sonunda ana boruya baÄŸlantı vanası kapandığımnda hücremiz boÅŸ olarak yeni verisi olan 0′ı saklamış oluyor. Bir seviye üste çıktığımızda, bankaların ortak bir veri hattına birarada baÄŸlanmasıyla ana bellek tablomuzun oluÅŸtuÄŸunu görürüz. Bellek tablosunun yanında, adreste gösterilen banka numarasını çözen, yongayı gerektiÄŸinde güç tasarrufu gibi nedenlerle kapatıp açılmasını, belirli komutların çalıştırılmasını kontrol eden kontrol yazmaçları ve saat sinyalinin alınıp bankalara dağıtılmasını saÄŸlayan sürücü devreleri bellek yongasını oluÅŸturur.
Etiketler: bellek, Bilgisayar, dimm, Donanım, ecc registered, Elektronik, hafıza, Nasıl Çalışır?, ram, so dimm2 Yorum Yazılmış
Meraklı Kazım 27 Haziran 2008 Saat 23:53Höh be. 100 kez de okusam anlamam ben bunu. Nasıl da düşünüp yapmış elin adamı.
selçuk 11 Temmuz 2008 Saat 14:13tek kelimeyle muhteşem. çok aydınlatıcı bir bilgi.




Son Yorumlar