Bilgisayarınızda bir program açtığınızda veya en sevdiğiniz video oyununu başlattığınızda o yükleme ekranında ne oluyor, hiç düşündünüz mü? O kısacık anlarda milyonlarca işlem, adeta bir bale gösterisi gibi arka planda dönüp duruyor. Ama belki de bu işlemlerin en yaygını, verinin depolandığı yerden, yani SSD’den, işlemcinin asıl çalışma alanına, yani DRAM‘e kopyalanmasıdır. Bilgisayarınızın neden bir yavaş kaplumbağa gibi hissedebileceği ya da bir süpersonik jet gibi hızlanabileceği arasındaki fark işte bu minicik, ışık hızındaki veri transferlerinde gizli!
SSD’ler, tüm programlarınızı ve verilerinizi uzun süreli depolama için saklarken, bilgisayarınız o verilere ihtiyaç duyduğunda, önce ilgili dosyaları DRAM‘e taşımak zorunda. İşte o meşhur yükleme çubuğunun hikayesi tam da burada başlıyor. İşlemcinizin sadece DRAM‘e taşınan verilerle çalıştığını düşünürsek, ona neden “çalışma belleği” veya “ana bellek” dendiği de sanırım gayet açık. Peki, neden ikisine birden ihtiyacımız var? Gelin, bu karmaşık görünen denklemi birlikte çözelim.
Bilgisayarın Beyni: Neden Hem SSD Hem de DRAM Var?
Bilgisayarlarımızdaki bu ikili sistemin arkasında müthiş bir mühendislik zekası yatıyor. Düşünsenize, SSD’ler verileri devasa 3D dizilerde, trilyonlarca bellek hücresiyle, terabaytlarca depolama alanı sunarak kalıcı olarak saklar. Yani uzun vadeli hafızamız onlar. Bir dosyayı açmak ya da bir uygulamayı başlatmak için SSD’den veri okumak yaklaşık 50 mikrosaniye sürer.
Ancak DRAM, milyarlarca minik kapasitör bellek hücresiyle 2D dizilerde geçici olarak veri depolar ve bize gigabaytlarca çalışma belleği sunar. İşte burası ilginç: DRAM nedir diye sorduğumuzda karşımıza çıkan en çarpıcı özelliklerden biri, hızı. Bir DRAM kapasitöründen veri okumak ya da yazmak sadece 17 nanosaniye sürer! Bu, SSD’lerden 3000 kat daha hızlı demek! Hız farkını şöyle hayal edin: Mach 3 hızıyla giden süpersonik bir jetin hızını, hareket eden bir kaplumbağanın hızıyla karşılaştırmak gibi bir şey. İşte bilgisayar belleği dünyasındaki DRAM ve SSD farkı bu denli büyük.
Peki, DRAM bu kadar hızlıysa neden her şeyi onda depolamıyoruz? Çünkü hız tek faktör değil. DRAM, 2D dizilerle sınırlıdır ve her bellek hücresinde geçici olarak tek bir bit veri depolar. Örneğin, sekiz çipli bir DRAM çubuğu 16 gigabayt veri tutarken, fiziksel olarak daha küçük bir SSD 2 terabayt veri, yani DRAM‘in 100 katından fazla depolayabilir. Ayrıca, kapasitörlerindeki verileri sürekli olarak depolamak ve yenilemek için güce ihtiyaç duyar. İşte bu yüzden, bilgisayarlar SSD’leri ve DRAM’i birlikte kullanır. Birkaç saniye yükleme süresi harcayarak veriyi SSD’den DRAM‘e kopyalarız ve hatta bazen ihtiyaç duymadan önce verileri önceden yükleyerek, terabaytlarca veriyi SSD’de saklayıp, programların DRAM‘e kopyalanan kısımlarına nanosanayeler içinde erişebiliriz. Video oyunlarının farklı yükleme süreleri olmasının ve DRAM kapasite gereksinimlerinin ardındaki mantık da budur.
DRAM’in İç Yapısı ve CPU ile İletişimi
Bir DRAM çubuğuna, diğer adıyla Çift Sıralı Bellek Modülü’ne (DIMM) baktığımızda, üzerinde sekiz adet DRAM çipi görürüz. Anakart üzerinde ise genellikle dört adet DRAM yuvası bulunur. Bu yuvalara takıldığında, DRAM doğrudan işlemciye, anakart üzerinden geçen iki bellek kanalı aracılığıyla bağlanır. Her bellek kanalı, DDR5 özelinde iki ayrı bölüme (Kanal A ve Kanal B) ayrılmıştır ve bu kanallar aynı anda 32 bit veri aktarımı yapabilir. Ayrıca, verinin nereye yazılacağını veya okunacağını belirten adresler ve komutlar da ayrı kablolar üzerinden taşınır. Tüm bu detaylar, işlemcinin bellek denetleyicisinin DRAM ile nasıl konuştuğunu ve veri akışını nasıl yönettiğini gösteriyor.
Milyarlarca Hafıza Hücresinin Sırrı: Bir DRAM Mikroçipine Yolculuk
Peki, bu küçük çipin içinde neler oluyor? Bir DRAM mikroçipini açtığımızda, dış ambalajın içinde bir bağlantı matrisi ve asıl işi yapan “die” adı verilen ana kısım bulunur. Bu 2 gigabaytlık DRAM die’ı, her biri dört bankadan oluşan sekiz banka grubuna, toplamda 32 bankaya ayrılmıştır. Her bankanın içinde, 65.536 hücre yüksekliğinde ve 8192 hücre genişliğinde devasa bir dizi bulunur. Yani bir nevi sıralar ve sütunlar halinde düzenlenmiş bir ızgara hayal edin.
Milyarlarca bellek hücresine erişmek için 31 bitlik bir adrese ihtiyacımız var. Adresin bir kısmı banka grubunu seçerken, diğer kısmı bankayı, sonraki 16 bit ise tam olarak hangi sıradaki 65 bin hücreden birine erişileceğini belirler. Çip aynı anda 8 bit okuyup yazdığı için, 8192 sütun 8’er bellek hücresi olarak gruplandırılır ve sütun adresi için sadece 10 bit yeterli olur. Bu adres, 21 kablo kullanılarak iki kısım halinde gönderilerek zaman kazanılır.
Şimdi gelelim bu nanoskopik bellek hücrelerinin içine. Her bir hücre, 1T1C (1 Transistör 1 Kapasitör) hücresi olarak adlandırılır ve birkaç düzine nanometre büyüklüğündedir. Bir kapasitör, elektrik yükleri veya elektronlar şeklinde bir bit veri depolarken, bir transistör bu veriye erişmek için kapı görevi görür. Kapasitör, silisyumun içine kazılmış derin bir hendek şeklinde tasarlanmıştır ve iki iletken yüzey arasına, sadece birkaç atom kalınlığında bir dielektrik yalıtkan yerleştirilmiştir. Bu yalıtkan, elektron akışını durdurur ama elektrik alanlarının geçişine izin verir. Eğer kapasitör elektronlarla 1 volta kadar şarj edilirse, bu ikili 1’i temsil eder; boşsa, 0 volt ise ikili 0’ı temsil eder. Yani her hücre yalnızca bir bit veri tutar. Transistör ise, kapısına voltaj uygulandığında açılır ve kapasitörü bitline’a (veri hattına) bağlar, böylece veri yazılabilir veya okunabilir.
Burada küçük bir not: Bu transistörler o kadar küçüktür ki, elektronlar zamanla kanaldan sızar. Bu yüzden kapasitörün içerdiği verinin DRAM çalışma prensibi gereği sürekli tazelenmesi gerekir.
DRAM’in Temel Operasyonları: Okuma, Yazma ve Tazeleme
Şimdi bu minik hücrelerden oluşan devasa dizilerde verinin nasıl okunup yazıldığını ve tazelendiğini daha yakından inceleyelim.
Okuma (Reading):
CPU’dan gelen okuma komutu ve 31 bitlik adres, DRAM‘e ulaşır. Önce ilgili banka seçilir, ardından o bankadaki tüm kelime hatları (wordline) kapatılarak tüm kapasitörler yalıtılır ve tüm bitline’lar 0,5 volta kadar ön şarj edilir. Sonra 16 bitlik sıra adresiyle bir sıra açılır ve o sıradaki tüm kapasitörler kendi bitline’larına bağlanır. Eğer bir kapasitör 1 bitini tutuyorsa (1 volt şarjlıysa), bu yükün bir kısmı 0,5 voltluk bitline’a akar ve bitline’daki voltaj artar. Bitline’ın altında bulunan duyarlılık yükselticisi (sense amplifier) bu küçük voltaj değişimini algılar, yükseltir ve bitline voltajını tamamen 1 volta çıkarır. Eğer 0 bitini tutuyorsa, kapasitöre yük akar ve bitline voltajı 0 volta düşürülür. Bu yükselticiler olmazsa, küçük kapasitörün uzun bitline’daki minicik değişimi fark etmek imkansız olurdu. Bu işlemden sonra, tüm 8000’den fazla bitline, kapasitörlerde saklanan yüke karşılık gelen 1 volt veya 0 volta getirilir ve bu sıra “açık” kabul edilir. Son olarak, sütun seçme çoklayıcısı (column multiplexer) 10 bitlik sütun adresini kullanarak ilgili 8 bitline’ı okuma sürücüsüne bağlar ve bu 8 değer, 8 veri kablosu üzerinden CPU’ya gönderilir.
Yazma (Writing):
Veri yazma işlemi okumaya benzer, ancak bazı temel farkları vardır. CPU’dan yazma komutu, adres ve yazılacak 8 bit DRAM çipine gönderilir. Yine banka seçilir, kapasitörler yalıtılır ve bitline’lar 0,5 volta ön şarj edilir. 16 bitlik adresle bir sıra açılır, kapasitörler bitline’ı etkiler ve duyarlılık yükselticileri bu değişimi algılayarak bitline’ları 1 veya 0’a getirir, böylece sıra açılır. Ardından, sütun adresi çoklayıcıya gider, ancak bu sefer yazma komutu gönderildiği için çoklayıcı belirli 8 bitline’ı, CPU’dan gelen yazılacak 8 biti içeren yazma sürücüsüne bağlar. Bu yazma sürücüleri, duyarlılık yükselticilerinden çok daha güçlüdür ve bitline’daki önceki voltajı geçersiz kılarak her 8 bitline’ı, yazılacak 1 için 1 volta veya 0 için 0 volta çekerler. Bu yeni bitline voltajı, açık sıradaki 8 kapasitörün daha önce depoladığı yükleri veya değerleri geçersiz kılar ve böylece 31 bitlik adrese karşılık gelen 8 bit veriyi bellek hücrelerine yazar.
Tazeleme (Refreshing):
Bellek hücrelerindeki transistörler o kadar küçüktür ki, yükler zamanla sızar. Bu yüzden kapasitörlerin içindeki bilginin kaybolmaması için sürekli olarak yenilenmeleri gerekir. Yenileme işlemi oldukça basittir: Tüm sıraları kapatmak, bitline’ları 0,5 volta ön şarj etmek ve bir sırayı açmak. Tıpkı okuma işleminde olduğu gibi, kapasitörler bitline’ları etkiler ve duyarlılık yükselticileri, açılan sıranın bitline’larını ve kapasitörlerini depolanan değere bağlı olarak tamamen 1 volta veya 0 volta getirerek sızan yükü yeniden doldurur. Bu işlem, sıra sıra, yaklaşık 50 nanosaniye içinde gerçekleşir ve 65 binden fazla sıranın tamamı yaklaşık 3 milisaniyede tazelenir. Her banka için bu yenileme işlemi her 64 milisaniyede bir tekrarlanır. Çünkü istatistiksel olarak, bir bellek hücresinin depoladığı 1’in 0’a dönüşmesine neden olacak kadar çok yük sızdırması için gereken sürenin altındadır bu. Yani verilerinizi güvende tutmanın tek yolu budur.
Şöyle bir durup düşündüğümüzde, DRAM bellek hücrelerinden geçen inanılmaz veri miktarını hayal etmek bile zor. Bu bellek bankaları her saniye 4 milyar 800 milyon okuma ve yazma isteğini karşılarken, her bankadaki her bellek hücresini sıra sıra saniyede yaklaşık 16 kez tazeler. Bu, gerçekten dudak uçuklatan bir veri akışı ve bilgisayarların gerçek gücünü ortaya koyuyor. Basit karşılaştırmalar, aritmetik işlemler ve veri aktarımı gibi şeyleri saniyede milyarlarca kez yapabiliyorlar!
DRAM Hızını Sınırsızlaştıran Optimizasyonlar
DRAM‘in bu baş döndürücü hızlara ulaşmasını sağlayan pek çok dahice tasarım optimizasyonu var. Bunları keşfetmek, DDR5 gibi yeni nesil belleklerin neden bu kadar etkileyici olduğunu anlamamızı sağlıyor.
Sıra İsabetleri (Row Hit / Page Hit):
Bir banka içindeki tek bir sırayı açmak zaman alan bir işlemdir. Ancak eğer bir sıra zaten açıksa, 10 bitlik sütun adresini kullanarak o sıradaki herhangi bir 8 bellek hücresi bölümüne tekrar tekrar okuma veya yazma yapabiliriz. İşte buna sıra isabeti (row hit veya page hit) denir. Bir sıra isabeti olduğunda, bir sırayı açmak için gereken tüm adımları atlarız, sadece sütun adresini kullanarak farklı bir 8 sütun kümesini (bitline’ı) çoklayıcıya bağlarız ve bu da ciddi zaman kazancı sağlar. İşlemcilerin bellek denetleyicileri ve programlar, sonraki sıra isabeti sayısını artırmak için optimize edilmiştir. Tam tersi olan, bir programın sürekli farklı sıralara atlayıp durması durumu ise “thrashing” olarak adlandırılır ve hem enerji hem de zaman açısından inanılmaz derecede verimsizdir.
32 Bağımsız Banka:
DDR5 DRAM‘de neden 32 banka var? İşte bu tam da sıra isabetleri ile ilgili! Her bankanın sıraları, sütunları, duyarlılık yükselticileri ve sıra çözücüleri birbirinden bağımsız çalıştığı için, farklı bankalardan birden fazla sıra aynı anda açık olabilir. Bu da sıra isabeti olasılığını artırır ve işlemcinin verilere erişim süresini azaltır. Dahası, birden fazla banka grubuna sahip olmak, CPU’nun her banka grubundan bir bankayı tazelerken diğer üçünü kullanabilmesini sağlayarak tazelemenin performans üzerindeki etkisini azaltır.
Veri Patlaması Tamponu (Burst Buffer) ve Patlama Uzunluğu (Burst Length):
Bu, DRAM‘in hızlı sıralı veri erişimini optimize eden bir başka akıllıca tasarım. Fonksiyonel diyagramımıza 128 bitlik geçici bir depolama alanı, yani bir patlama tamponu (burst buffer) eklediğimizi düşünelim. Çoklayıcıdan çıkan 8 kablo yerine, bu 128 bitlik tampon konumlarına bağlanan 128 kablomuz var. Böylece, 128 bellek hücresi ve bitline, patlama tamponuna bağlanarak 128 değeri geçici olarak yükler veya önbelleğe alır. Tampon için ayrılan 4 bit kullanılarak, tampondaki 8 hızlı erişimli veri konumu okuma sürücülerine bağlanır ve veri CPU’ya gönderilir. Bu 4 bit döngüsel olarak kullanılarak, 8’er bitten oluşan 16 setin tamamı okunur ve böylece patlama uzunluğu 16 olur. Bu tasarımın faydası, veriler yan yana olduğu sürece mikroçip başına 16 set 8 bitin (toplam 1024 bit) son derece hızlı bir şekilde okunup yazılabilmesidir.
Alt Diziler (Sub-arrays) ve Hiyerarşik Yapı:
Bir bankadaki 65536 sıra x 8192 sütunluk dizi oldukça devasadır. Bu da çok uzun kelime hatları ve bitline’lar anlamına gelir, özellikle her bir hendek kapasitör bellek hücresinin boyutuyla karşılaştırıldığında. Bu nedenle, devasa dizi 1024’e 1024 gibi daha küçük bloklara ayrılır. Her alt dizinin altında ara duyarlılık yükselticileri bulunur ve kelime hatları da alt bölümlere ayrılır, hiyerarşik bir sıra kodlama şeması kullanılır. Bitline’ları alt bölümlere ayırarak, her minik kapasitörün bitline’ı duyarlılık yükselticisine kadar olan mesafesi ve tel miktarı azalır, bu da kapasitörün o kadar büyük olmasına gerek kalmaz. Kelime hatlarını alt bölümlere ayırmak ise, sekiz binden fazla transistör kapısı ve kanalından gelen kapasitif yükü azaltır, böylece bir sıradaki tüm erişim transistörlerini açmak için gereken süre kısalır.
Katlanmış DRAM Mimarisi (Folded DRAM) ve Diferansiyel Çiftler:
Bu, belki de en karmaşık ama bir o kadar da etkili bir optimizasyondur. Hatırlayın, her bitline’ın altında bir duyarlılık yükselticisi vardı. Bu optimizasyonda, her duyarlılık yükselticisine sütun başına iki bitline gider ve bellek hücrelerinin sıraları dönüşümlü olarak sol ve sağ bitline’lara bağlanır, böylece bitline sayısı iki katına çıkar. Bir sıra aktif olduğunda, bitline’ların yarısı aktifken diğer yarısı pasiftir ve bir sonraki sıra aktif olduğunda tam tersi olur. Duyarlılık yükselticisinin içine baktığımızda, çapraz bağlı bir invertör buluruz. Bu, aktif bitline 1 olduğunda, pasif bitline’ın tam tersi olan 0’a çekilmesini sağlar. Ve aktif 0 olduğunda, pasif 1 olur. Pasif bitline herhangi bir bellek hücresine bağlı olmadığı için depolanan verileri bozmaz. Bu çapraz bağlı invertör, iki bitline’ın her zaman birbirinin zıttı olmasını sağlar ve bunlara diferansiyel çift denir. Bu tasarımın üç önemli faydası vardır:
1. Ön Şarj Kolaylığı: Ön şarj adımında, tüm bitline’ları 0,5 volta getirmek isteriz. Diferansiyel bir aktif ve pasif bitline çiftine sahip olmak, çapraz bağlı invertörleri ayırıp bir transistör kullanarak ikisi arasında bir kanal açmakla en kolay çözümü sunar. Yük kolayca 1 bitline’dan 0’a akar ve ikisi de ortalamasını alarak 0,5 volta yerleşir.
2. Gürültü Bağışıklığı: Bu tasarım, harici elektrik alanlarından kaynaklanan gürültüye karşı daha dirençlidir.
3. Parazitik Kapasitans Azalması: İki zıt yüklü elektrik teli oluşturarak, dışarıya yayılan elektrik alan miktarını azaltırız ve duyarlılık yükselticinin bir bitline’ı 1 volta, diğerini 0 volta yükseltme yeteneğini artırırız.
İşte bu yüzden, bilgisayarlarımızdaki o DDR5 çubuğu, bir yığın kuru bilgiden çok daha fazlası. O, mühendislik harikası, her saniye trilyonlarca işlemi sessizce gerçekleştiren, görünmez bir kahraman. Bir sonraki yükleme ekranında, o minicik DRAM çipinin içinde dönen inanılmaz hikayeyi hatırlayın. Teknolojinin kalbindeki bu karmaşık dansı anlamak, dijital dünyamızın nasıl işlediğine dair bakış açımızı tamamen değiştiriyor.
—
Sıkça Sorulan Sorular
Bilgisayarlar neden hem SSD’leri hem de DRAM’i bir arada kullanıyor?
Bilgisayarlar, SSD’leri ve DRAM’i farklı amaçlar için bir arada kullanır. SSD’ler, terabaytlarca veriyi kalıcı olarak depolayan daha yavaş, büyük kapasiteli belleklerdir. DRAM ise, işlemcinin doğrudan çalışabildiği, gigabaytlarca kapasiteye sahip, ancak çok daha hızlı ve geçici bir çalışma belleğidir. SSD’deki veriler önce DRAM’e kopyalanır ve bu sayede işlemci verilere nanosanayeler içinde erişebilir, böylece genel performans ve hız dengesi sağlanır.
DRAM hücreleri neden sürekli tazelenmeye ihtiyaç duyar?
DRAM hücrelerindeki kapasitörler, veriyi elektrik yükleri şeklinde depolar. Bu kapasitörlere bağlı transistörler inanılmaz derecede küçük olduğu için, depolanan elektrik yükleri zamanla sızma eğilimindedir. Bu yük sızıntısı, hücredeki 1 bitinin 0 bitine dönüşmesine neden olabilir. Bu nedenle, verilerin kaybolmaması için DRAM hücrelerinin her 64 milisaniyede bir “tazelenmesi” gerekir; yani sızan yükler yeniden doldurulur.
DDR5 DRAM’de hız ve verimlilik için ne gibi optimizasyonlar bulunmaktadır?
DDR5 DRAM’de hız ve verimlilik için bir dizi önemli optimizasyon bulunur. Örneğin, her biri bağımsız çalışabilen 32 bankanın kullanılması, aynı anda birden fazla sıraya erişim olasılığını artırarak “sıra isabetlerini” çoğaltır ve veri erişim sürelerini kısaltır. Ayrıca, “patlama tamponları” (burst buffers) sayesinde sıralı verilere çok daha hızlı erişim sağlanır. “Alt diziler” (sub-arrays) ve “katlanmış DRAM mimarisi” gibi tasarımlar da sinyal mesafelerini azaltarak ve gürültü bağışıklığını artırarak performansı ve enerji verimliliğini önemli ölçüde iyileştirir.