Bellek bant genişliği - Memory bandwidth

Bellek bant genişliği verilerin bir cihazdan okunabileceği veya saklanabileceği hızdır. yarı iletken bellek tarafından işlemci. Bellek bant genişliği genellikle şu birimlerle ifade edilir: bayt / saniye Ancak bu, yaygın olarak kullanılan 8 bitlik baytların katı olmayan doğal veri boyutlarına sahip sistemler için değişebilir.

Belirli bir bellek veya sistem için tanıtılan bellek bant genişliği genellikle maksimum teorik bant genişliğidir. Uygulamada, gözlemlenen bellek bant genişliği, ilan edilen bant genişliğinden daha az olacaktır (ve aşılmayacağı garanti edilmektedir). Çeşitli bilgisayar kıyaslamaları çeşitli erişim modellerini kullanarak sürekli bellek bant genişliğini ölçmek için mevcuttur. Bunlar, bir sistemin çeşitli gerçek uygulama sınıflarında sürdürmesi gereken bellek bant genişliğine ilişkin içgörü sağlamayı amaçlamaktadır.

Ölçüm kuralları

"Bayt / saniye" payında aktarılan veri miktarını tanımlamak için üç farklı kural vardır:

  1. bcopy sözleşmesi: birim zamanda bellekteki bir konumdan başka bir konuma kopyalanan veri miktarını sayar. Örneğin, bellekteki bir konumdan bellekteki başka bir konuma bir saniyede 1 milyon bayt kopyalamak saniyede 1 milyon bayt olarak sayılır. Bcopy geleneği kendi kendine tutarlıdır, ancak daha karmaşık erişim düzenlerine sahip durumları, örneğin üç okuma ve bir yazma gibi kapsayacak şekilde kolayca genişletilmez.
  2. Akış kuralı: Uygulama kodunun açıkça okuduğu veri miktarını artı uygulama kodunun açıkça yazdığı veri miktarını toplar.[1] Önceki 1 milyon baytlık kopya örneğini kullanarak, STREAM bant genişliği 1 milyon bayt okuma artı bir saniyede yazılan 1 milyon bayt olarak sayılacak ve saniyede toplam 2 milyon bayt olacaktı. STREAM kuralı en çok doğrudan kullanıcı koduna bağlıdır, ancak donanımın gerçekleştirmesi gereken tüm veri trafiğini saymayabilir.
  3. donanım kuralı: veri hareketinin kullanıcı kodu tarafından açıkça talep edilmiş olup olmamasına bakılmaksızın, donanım tarafından okunan veya yazılan gerçek veri miktarını sayar. Aynı 1 milyon baytlık kopya örneğini kullanarak, donanım bilgisayar sistemlerinde bant genişliği önbellek ayırma ilkesini yaz donanım, depoları gerçekleştirmeden önce hedef diziyi bellekten önbelleğe okuduğundan ek 1 milyon bayt trafik içerir. Bu, donanım tarafından fiilen aktarılan saniyede toplam 3 milyon bayt verir. Donanım kuralı en çok doğrudan donanıma bağlıdır, ancak kullanıcının kodunu uygulamak için gereken minimum veri trafiği miktarını temsil etmeyebilir.
Örneğin, bazı bilgisayar sistemleri, özel talimatlar kullanarak yazma tahsis trafiğini önleme yeteneğine sahiptir, bu da gerçekleştirilen farklı veri trafiği miktarlarına dayalı olarak bant genişliğinin yanıltıcı karşılaştırmalarına yol açar.

Bant genişliği hesaplama ve isimlendirme

İsimlendirme, bellek teknolojilerine göre farklılık gösterir, ancak emtia için DDR SDRAM, DDR2 SDRAM, ve DDR3 SDRAM bellek, toplam bant genişliği şunların ürünüdür:

  • Temel DRAM saat frekansı
  • Saat başına veri aktarımı sayısı: "Çift veri hızlı" (DDR, DDR2, DDR3, DDR4) bellek durumunda iki.
  • Bellek veriyolu (arabirim) genişliği: Her DDR, DDR2 veya DDR3 bellek arabirimi 64 bit genişliğindedir. Bu 64 bit bazen "satır" olarak adlandırılır.
  • Arayüz sayısı: Modern kişisel bilgisayarlar tipik olarak iki bellek arabirimi kullanır (çift ​​kanal modu) etkin bir 128 bit veri yolu genişliği için.

Örneğin, çift kanallı belleğe ve 400 MHz'de çalışan kanal başına bir DDR2-800 modülüne sahip bir bilgisayar teorik olarak maksimum bellek bant genişliğine sahip olacaktır:

Saniyede 400.000.000 saat × saat başına 2 satır × satır başına 64 bit × 2 arayüz =
Saniyede 102.400.000.000 (102.4 milyar) bit (bayt cinsinden, 12.800 MB / sn veya 12.8 GB / sn)

Bu teorik maksimum bellek bant genişliği, sürdürülebilir olmayabilecek "patlama hızı" olarak adlandırılır.

DDR, DDR2 ve DDR3 modülleri için adlandırma kuralı, maksimum hızı (örn., DDR2-800) veya maksimum bant genişliğini (örn., PC2-6400) belirtir. Hız derecesi (800) maksimum saat hızı değil, bunun iki katıdır (iki kat veri hızı nedeniyle). Belirtilen bant genişliği (6400), 64 bit genişlik kullanılarak saniyede aktarılan maksimum megabayttır. Çift kanallı mod konfigürasyonunda bu, etkin bir şekilde 128 bitlik bir genişliktir. Bu nedenle, örnekteki bellek yapılandırması şu şekilde basitleştirilebilir: çift kanal modunda çalışan iki DDR2-800 modülü.

Modül başına iki bellek arabirimi, PC sistem belleği için ortak bir yapılandırmadır, ancak tek kanallı yapılandırmalar daha eski, düşük kaliteli veya düşük güçlü cihazlarda yaygındır. Bazı kişisel bilgisayarlar ve modern grafik kartlarının çoğu ikiden fazla bellek arabirimi kullanır (ör. Intel'in LGA 2011 platformu ve NVIDIA GeForce GTX 980). Birçok arabirimi paralel olarak çalıştıran yüksek performanslı grafik kartları, çok yüksek toplam bellek veri yolu genişliğine erişebilir (örneğin, sırasıyla altı ve sekiz 64 bit arabirim kullanarak NVIDIA GeForce GTX TITAN'da 384 bit ve AMD Radeon R9 290X'te 512 bit).

ECC bitleri

Olan sistemlerde hata düzeltme belleği (ECC), arayüzlerin ek genişliği (tipik olarak 64 bit yerine 72) bant genişliği spesifikasyonlarında sayılmaz, çünkü kullanıcı verilerini depolamak için fazladan bitler yoktur. ECC bitleri, o donanımda depolanan bilgilerden ziyade bellek donanımının bir parçası olarak düşünülmelidir.

Ayrıca bakınız

Referanslar

BSS Random Access Benchmark Çok Çekirdekli Rastgele Bellek Erişiminin Performans Değerlendirmesi ve Optimizasyonu ACM / IEEE HiPC 2010

  1. ^ STREAM Benchmark SSS: Bayt ve FLOPS Sayma: http://www.cs.virginia.edu/stream/ref.html#counting

Dış bağlantılar