RAM Nasıl Tasarlanır? Belleklerde Rank Nedir?

Tüketiciler yeni bir RAM satın alırken genellikle doğrudan kapasiteye ve hıza bakar. Örneğin “32 GB DDR4-2666” olarak etiketlenen bir bellek 32 GB yoğunluğa sahiptir ve veri transfer hızı saniyede 2666 mega transferdir (MT/s).

Her şey burada bitti mi? Aslında hayır. Eğer teknolojiye ilgi duyuyorsanız ilginizi çekebilecek farklı detaylar da var. DDR4 bellek seçiminde derinlere inecek olursak dikkat edebileceğiniz farklı parametreler de var. Bunlardan biri de “rank (sınıflandırma)” terimi; örneğin 1Rx8, 2Rx4 ve 2Rx8 gibi. Şimdi rank, bellek modülü sıralaması ve bellek organizasyonu hakkındaki ayrıntılara, DDR4 modül performansı üzerindeki etkilerine yakından bakacağız.

Memory rank, bir bellek modülünde kaç set DRAM yongası (veya bellek cihazı,aygıtı) bulunduğunu tanımlamak için kullanılan bir terimdir. DDR4 DRAM yonga seti genellikle 64 bit genişliğindedir, ancak ECC (Error Correction Code) destekleniyorsa 72 bite çıkabilir. Bellek sırası içinde tüm yongalar adres, komut ve kontrol sinyallerini paylaşır.

RAM’lerde rank kavramı bellek bankasına çok benzer. Rank, üzerinde bellek yongaları ve diğer elektronik bileşenler bulunan küçük baskılı devre kartları olan bellek modüllerini tanımlarken kullanılır; bellek bankası ise depolama modüllerinin yapı taşları olan bellek entegre devre yongalarını tanımlamak için kullanılan bir terimdir.

Tek sıralı (1R-single rank) bir bellek modülü bir set DRAM çipi içerir. Her bir DRAM yonga seti 64 bit, ECC destekleniyorsa 72 bit genişliğindedir. Çift sıralı (2R-dual rank) bellekler ise iki ayrı tek sıralı bellek modülü taşır. İki set halinde DRAM çipleri içerir, dolayısıyla tek sıralı bir modülün kapasitesini iki katına çıkarır. İkili sıra düzeninde sinyaller aracılığıyla yalnızca bir sıradan belirli bir çip seçilir. Başka bir deyişle, tek seferde yalnızca bir sıraya erişim sağlanabilir.

Aynı şekilde, dört sıralı (4R-quad-rank) bir bellek modülü dört set DRAM yongası içerir. Böylelikle bir modülde iki çift sıralı bellekler kullanılabilir ve kapasite en yükseğe çıkar. Dört sıradan birine erişmek için iki çip seçme sinyali gereklidir. Benzer şekilde, yine bir seferde yalnızca bir sıraya erişilebilir.

Aşağıda çift sıralı bellek modülündeki DQ sinyal akışının basitleştirilmiş şemasına bakabilirsiniz. İki özdeş bellek yonga seti mevcut: set 1 ve set 2. Her bellek setinin 64-bit veri G/Ç sinyalleri, bir veri G/Ç modülüne bağlıdır. Tek bitlik yonga seçme (CS_n) sinyali, hangi bellek yongası grubuna erişildiğini ve seçilen kümenin veri G/Ç sinyallerinin bellek modülünün DQ pinlerine bağlanacağını kontrol eder.

Dual-rank ve quad-rank bellek modülleri, mevcut bellek teknolojisi dahilinde bir modüldeki bellek kapasitesini iki veya dört katına çıkarır. Aynı anda yalnızca bir sıraya erişim sağlanabilse de diğer sıralar boşta durmaz. Çok sıralı bellek modülleri, erişilmeyen sıraların paralel olarak yenileme döngülerinden geçtiği sıra serpiştirme (rank interleaving) adı verilen bir işlem kullanır. Bu ardışık işlem bellek yanıt süresini azaltır, bir önceki sıra veri iletimini tamamlar tamamlamaz bir sonraki sıra iletimine başlayabilir.

Öte yandan, bellek kontrolcüleri bir sıradan diğerine geçmek için ek saat döngülerine ihtiyaç duyduğundan, çok sıralı bellek modüllerinde bir miktar I/O gecikme kaybı vardır. Tek sıralı ve çok sıralı bellekler arasındaki genel gecikme performansı farkı büyük ölçüde uygulama türüne bağlıdır. Buna ek olarak, her modülde daha az bellek yongası bulunduğundan dolayı tek sıralı modüller daha az ısı üretir ve arızalanma olasılığı daha düşüktür.

Her bir bellek yongasının kapasitesi, bellek derinliği x bellek genişliği olarak tanımlanır. Bellek genişliği veri yolunun genişliğini, yani her bir bellek yongasının DQ hatlarının sayısını ifade eder.

Bellek yongalarının genişliği standarttır; x4, x8 ya da x16. 64 bit genişliğinde tek sıralı bir bellekte kaç bellek yongası olduğunu hesaplayabiliriz. Örneğin, x4 bellek yongaları ile 16 adede (64 ÷ 4 = 16) ihtiyacımız var ve x8 bellek yongaları kullanıldığında bu miktar 8’e iniyor.

Şimdi 1Gbx8 ve 2Gbx4 bellek yongalarının iki ayrı blok diyagramına bakalım. Her ikisi için de toplam bellek kapasitesi 8Gb’dir. Bu arada özellikle belirtelim, küçük “b” harfi kullanıldığından dolayı “gigabit” cinsinden değerlere bakıyoruz. Yani gigabayt’ın sekizde biri.

Aşağıdaki diyagramda 1Gb x8 yapılandırması, hemen sonraki diyagramda ise 2Gbx4 yapılandırmasına bakacağız. DDR4 RAM’lerde hem x4 hem de x8 aygıtları 4 grup 4 bankaya sahiptir. x16 cihazlarda ise 4 bankadan oluşan 2 grup bulunmaktadır.


1Gbx8 bellek blok diyagramı.

Her bir bellek yongasını bir kütüphane olarak düşünebiliriz. Bu kütüphane içinde, kütüphanenin dört katı olan dört banka grubu vardır. Her katta dört raf mevcutken, her raf bankalardan birine benzer. Burada bellek hücrelerinin her birini, tıpkı kütüphane kitaplarının numaraları gibi, satır ve sütun adreslerine göre bulabiliriz.

Satır adresi MUX, her bankada verilen satır adresine bağlı olarak satır adresi mandalı ve kod çözücü aracılığıyla bellek dizisindeki bir satırı etkinleştirir. Bu satır aynı zamanda kelime satırı (veya kelime hattı-word line) olarak da adlandırılır. Bir kelime satırı etkinleştirildiğinde, hattaki veriler algılama amplifikatörlerine (yükselteç) yüklenir. Daha sonra sütun kod çözücü, verilen sütun adresine dayalı olarak algılama amplifikatöründeki verilere erişir.

Peki bir bellek yongasının kapasitesi veya yoğunluğu nasıl hesaplanır?

  • Bellek Derinliği = Satır Sayısı * Sütun Sayısı * Banka Sayısı
  • Toplam Bellek Kapasitesi = Bellek Derinliği * Bellek Genişliği

Yukarıdaki şekilde gösterildiği gibi 1Gbx8 cihaz örneğinde:

  • Satır Adres Bitlerinin Sayısı = 16
  • Toplam Satır Sayısı = 2 ^ 16 = 65536
  • Sütun Adres Bitlerinin Sayısı = 10
  • Toplam Sütun Sayısı = 2 ^ 10 = 1024

Elde edilen verilerle devam edersek:

  • Bellek Derinliği = 65536 Satır * 1024 Sütun * 16 Bank = 1Gb
  • Toplam Bellek Kapasitesi = 1Gb * 8 = 8Gb

Şimdi 2Gbx4 şeklinde tasarlanan bellek düzenine bakalım.


2Gbx4 bellek blok diyagramı.
  • Satır Adres Bitlerinin Sayısı = 17
  • Toplam Satır Sayısı = 2 ^ 17 = 131072
  • Sütun Adres Bitlerinin Sayısı = 10
  • Toplam Sütun Sayısı = 2 ^ 10 = 1024

Sonuç:

  • Bellek Derinliği = 131072 * 1024 * 16 = 2Gb
  • Toplam Bellek Kapasitesi = 2Gb* 4 = 8Gb

Bellek sıralaması ve bellek genişliği, her bir bellek modülünde kaç bellek aygıtına ihtiyaç duyulduğunu belirler. ECC destekli 64 bitlik bir DDR4 modülünde veri yolu için toplam 72 bit vardır. Bu 72 bitin 8 biti ECC için kullanılır. Tek sıralı bir modül için toplam 18 x4 bellek yongası gerekir. Her bellek yongası 4 bit sağlar ve 18 yongayla toplam bit sayısı 72’ye çıkar. Çift sıralı bir modül için bellek çiplerinin miktarını iki katına çıkararak 36 yapmak gerekmekte.

Her bir x4 belleğin 8Gb kapasiteye sahip olduğunu düşünürsek, 16 + 2 (ECC) birime sahip tek sıralı bir modül 16 GB modül kapasitesi sunar.

  • 8Gb * 16 = 128Gb = 16 GB

36 adet 8 Gb (2Gb x 4) birime sahip çift sıralı bir ECC modülü ise 32 GB modül kapasitesi sunar.

  • 8Gb * 32 = 256Gb = 32 GB

Bellekler x8 ile derecelendiriliyorsa, ECC destekli 64 bit DDR4 modülü tek sıralı bir modül için toplam 9 adet x8 belleğe ve çift sıralı bir bellek modülü için 18 x8 belleğe ihtiyaç duyacaktır. Bu x8 bellek aygıtlarının her biri 8Gb bellek kapasitesine sahipse, tek sıralı bir modül toplam 8 GB kapasiteye ulaşır.

  • 8Gb * 8 = 64Gb = 8 GB

18 adet 8Gb (1Gb x 8) yongaya sahip çift sıralı bir ECC modülü 16 GB kapasite sağlar.

  • 8Gb * 16 = 128Gb = 16 GB

Aynı bellek teknolojisinde çift sıralı ve dört sıralı düzen kullanıldığında gördüğünüz gibi RAM kapasitesi katlanarak artıyor.

Bellek yongasının sahip olduğu genişlik (x4, x8 veya x16),  tFAW gibi bellek zamanlama parametreleri üzerinde de etkilidir. tFAW, Four Active Window (Dört Aktif Pencere) süresini ifade eder ve dört ACTIVATE komutunun verilebileceği bir zamanlama penceresini ifade eder.

Her ACTIVATE komutu, bir banka içindeki bir satırı açmak için verilir. Yukarıdaki blok diyagramlarında her bankanın kendi algılama amplifikatör setine sahip olduğunu görüyoruz, böylece her banka için bir sıra aktif kalabilir. Bir bellek kontrolcüsü arka arkaya dört ACTIVATE komutu (aktif komutu) verebilir. Ancak dördüncü ACTIVATE yapıldıktan sonra tFAW penceresi sona erene kadar beşinci ACTIVATE komutu verilemez.

Aşağıdaki tabloda çeşitli DDR4 hızlarına ve sayfa boyutlarına atanan tFAW pencere uzunluklarını görebilirsiniz. Aynı DDR4 hızı altında, sayfa boyutu büyüdükçe tFAW penceresinin daha uzun olduğuna dikkat edin. Örneğin DDR4-1600, 1/2KB sayfa boyutu ile 20ns’lik bir tFAW penceresine sahip. Peki bu ne anlama geliyor? Bir banka içinde ilk satırı açmak için bir komut verildiğinde kontrolcünün beşinci bir satırı açmak için bir komut verilmeden önce 20ns veya 16 saat döngüsü (CK) beklemesi gerektiğini göstermekte.

DDR4 tFAW zamanlaması için JEDEC bellek standardı spesifikasyonu sayfa boyutlarına göre değişiyor: 1/2 KB, 1 KB ve 2 KB.

Boyutlar DDR4-1600 DDR4-1866 DDR4-2133 DDR4-2400
1/2 KB sayfa boyutu için dört ACTIVATE penceresi (minimum) tFAW (1/2 KB) 16CK veya 20ns’den büyük 16CK veya 17ns’den büyük 16CK veya 15ns’den büyük 16CK veya 13ns’den büyük
1 KB sayfa boyutu için dört ACTIVATE penceresi (minimum) tFAW (1 KB) 20CK veya 25ns’den büyük 20CK veya 23ns’den büyük 20CK veya 21ns’den büyük 20CK veya 21ns’den büyük
2 KB sayfa boyutu için dört ACTIVATE penceresi (minimum) tFAW (2 KB) 28CK veya 35ns’den büyük 28CK veya 30ns’den büyük 28CK veya 30ns’den büyük 28CK veya 30ns’den büyük

Sayfa boyutları ile bellek yongaları arasındaki ilişkiye gelelim. Daha önce iki 8 Gb bellek cihazını kısaca karşılaştırdığımız için, bu ikisine sayfa boyutları açısından bir kez daha bakalım.

Sayfa boyutu, bir satır etkinleştirildiğinde algılama amplifikatörüne yüklenen bit sayısını ifade ediyor. Bu nedenle sayfa boyutu doğrudan satır başına bit sayısı veya satır başına sütun sayısı ile ilgili.

  • Sayfa Boyutu = Sütun Sayısı * Bellek Yonga Genişliği = 1024 * Bellek Aygıtı Genişliği

Aşağıdaki tabloda her cihaz genişliği için sayfa boyutları yer alıyor:

Bellek Genişliği Sayfa Boyutu (Kb) Sayfa Boyutu (KB)
x4 4 Kb 1/2 KB
x8 8 Kb 1 KB
x16 16 Kb 2 KB

Üç bellek genişliği arasında kıyas yapacak olursak, x4 cihazlar en kısa tFAW zamanlama sınırına ve x16 cihazlar en uzun tFAW zamanlama sınırına sahip. tFAW özelliğindeki fark, daha yüksek genişliğe sahip bellekler üzerinde olumsuz zamanlama performansı etkisine sahip.

Farklı bellek genişliklerinin bellek performansı üzerindeki etkisini ölçmek için AMD EPYC 7713 Milan işlemcili Gen11 sunucularında yapılan bazı testlere bakalım. Bildiğiniz gibi Milan serisi CPU 64 çekirdeğe ve 8 kanal bellek desteğine sahip.


Gen11 sunucu belleği yapılandırması.

Bu sunucular, her bellek kanalına 1 DIMM yerleştirilecek şekilde yapılandırılmış. Çekirdek başına 6 GB bellek oranıyla birlikte 384 GB kapasiteli RAM (64 çekirdek* 6 GB) kullanmak mümkün. Bu yapılandırma, dört adet 32 GB 2Rx8 ve dört adet 64 GB 2Rx4 bellek modülü takılarak sağlanıyor.

2Rx4 ve 2Rx8 DDR4 modülleri arasındaki bant genişliği performans farkını karşılaştırmak için iki test senaryosuna ihtiyaç var. Biri tüm 2Rx4 DDR4 modülleriyle, diğeri ise 2Rx8 DDR4 modülleriyle. Her iki testte de her bellek kanalında (1DPC) sekiz adet 32 GB 32 Mbps DDR4 RDIMM bellekler takıldı. İlk testte 2Rx4, ikinci testte 2Rx8 bellek modülleri ele alındı.

Test DIMM Sayısı Bellek Üreticisi Parti Numarası RAM Kapasitesi RAM Hızı RAM Organizasyonu
(RAM Yapısı)
1 8 Samsung M393A4G43BB4-CWE 32 GB 3200 MT/s 2Rx8
2 8 Samsung M393A4K40EB3-CWECQ 32 GB 3200 MT/s 2Rx4

Bellek Gecikme Süreleri

Memory Latency Checker, Intel tarafından geliştirilmiş sentetik bir kıyaslama aracı. Bu araçla bellek gecikmesi, bant genişliği ve bunların farklı okuma/yazma oranlarına sahip iş yüklerinde değişimi ve ayrıca akış üçlüsü ölçülebiliyor. Listedeki Stream Triad, üç işlem içeren, bellekleri kıyaslamasında kullanılan bir iş yükü; çalışma sırasında önce büyük bir 1D dizisini bir skaler ile çarpıyor, ardından ikinci bir diziye ekliyor ve üçüncü bir diziye atıyor.

2Rx8 32 GB Bant Genişliği 2Rx4 32 GB Bant Genişliği Yüzde Farkı
Tüm okumalar 173,287 MB/s 173,650 MB/s 0.21%
3:1 okuma-yazma 154,593 MB/s 156,343 MB/s 1.13%
2:1 okuma-yazma 151,660 MB/s 155,289 MB/s 2.39%
1:1 okuma-yazma 146,895 MB/s 151,199 MB/s 2.93%
Stream Triad 156,273 MB/s 158,710 MB/s 1.56%

Genel okuma testindeki bant genişliği performans farkı çok önemli değil ve fark sadece %0,21. Yazma miktarı %25’ten (3:1 okuma-yazma) %50’ye (1:1 okuma-yazma) doğru arttıkça, iki test arasındaki bant genişliği performans farkı da bir miktar (%1,13 ve %2,93) artıyor.

LMBench Sonuçları

LMBench, belleklerin bant genişliği performanslarını incelemek için sıklıkla kullanılan  başka bir sentetik kıyaslama yazılımı. LMBench bw_mem test sonuçları, Memory Latency Checker testiyle oldukça yakın.

2Rx8 32 GB Bant Genişliği 2Rx4 32 GB Bant Genişliği Yüzde Farkı
Okuma 170,285 MB/s 173,897 MB/s 2.12%
Yazma 73,179 MB/s 76,019 MB/s 3.88%
Okuduktan sonra yazma 72,804 MB/s 74,926 MB/s 2.91%
Kopyalama 50,332 MB/s 51,776 MB/s 2.87%

En büyük bant genişliği farkı yazma esnasında ortaya çıkıyor. 2Rx4 testi, 2Rx8 testine göre %3,88 daha yüksek skorlar veriyor.

Bellek organizasyonu ve bellek genişliği, bellek bant genişliği performansı üzerinde küçük bir etkiye sahip. Özetlemek gerekirse, aradaki fark en çok yazma ağırlıklı iş yüklerinde kendini hissettiriyor. Ancak bu durumda bile fark %4’ten daha az.

X4 genişliğine sahip bellek modülleri, aynı kapasiteye sahip x8 genişliğindeki bellek modüllerine kıyasla bellek modülünde iki kat daha fazla bellek yongası gerektiriyor. Daha fazla bellek aygıtı demek daha fazla güç gereksinimi demek. Micron’un ölçüm verilerine göre, 16 Gb çip kullanan 2Rx8 32 GB bellek modülleri, 8 Gb çip kullanan 2Rx4 32 GB bellek modüllerinden %31 daha az güç tüketmekte. X8 bellek modülleri kullanıldığında önemli oranda güç tasarrufu sağlanıyor ki bu bant genişliğindeki küçük farklara göre daha ağır basabilir.

Single Rank, sadece modülün bir tarafında çiplere sahip olabildiği gibi, çift taraflı modüllere de sahip olabilir. Bellek modülleri üzerindeki tanıtıcı etiketler genellikle modülleri tanımlamak için en uygun yoldur. Eğer etiket üzerinde 1Rx4 ve 1Rx8 gibi değerler varsa, modül Single Rank’tir. Eğer 2Rx4 ve 2Rx8 değerlerini görürseniz, modülünüz Dual Rank’tır.

Hız

SRM modüller genellikle DRM modüllerden daha hızlıdır zira bilgisayar SRM modülüne ulaştığı zaman veri yolunu bir kere taraması yetecektir. Ancak DRM modüllere erişim sağlandığında aynı yolun iki defa taranması gerekir.

Uyumluluk

SRM ve DRM modüllerin birlikte kullanılması, bir zamanlar ciddi sıkıntılar çıkarmış olsa da, DDR3 ve DDR4 bellek çağında bu iki tür bellek türü arasında neredeyse hiçbir uyumluluk sorunu bulunmuyor. Hatta bazı sunucular, yüksek miktarda RAM’in kullanıldığı sistemlerde Single ve Dual Rank belleklerin birlikte kullanılmasını gerektiriyor.

Bir DIMM modül üzerindeki rank sayısı, modülün tüm bit genişliğine ulaşabilmek için kullanılan bağımsız DRAM setlerinin sayısına eşittir. Bu rank bloklarına aynı anda erişilemez zira bu bloklar aynı veri yolunu kullanır. Modül üzerindeki DRAM çiplerinin fiziksel dizilim planı da her zaman rank bloku sayısına eşit olmayabilir. Uzun bir süre DRAM çiplerinin modül üzerine dizilme şekli tek taraflı ve çift taraflı olarak ayrılmıştı. Ancak bu ayırım bazı senaryolarda modüllerin çalışma prensipleri ile uyuşmuyordu.

Örneğin 64-bitlik bir I/O setine sahip bir SRM modülünde tüm bitlerde yazma ve okuma işlemi yapmak için sadece bir DRAM seti kullanılır. Çoğu elektronik sistemde bellek modülünün tüm veri kapasitesine aynı anda ulaşabilmek için bellek kontrolcüleri kullanılır.

64-bitlik bir DRM modülde ise farklı zamanlarda erişilebilen iki DRAM seti vardır. Aynı anda rank bloklarından sadece birine erişim sağlanabilir ve hangi blokun kullanılacağı CS birimleri ile belirlenir. Bu sebeple DRM bir modül için veri bitleri birbiri ile bağlı DRAM setleri, DRAM başına bir CS birimi ile erişilebilir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir