RAM (herhangi bir tür) erişim süresi neden bu kadar yavaş azalıyor?


22

Bu makale DDR4 SDRAM'ın yaklaşık 8 kat daha fazla bant genişliğine sahip DDR1 SDRAM olduğunu gösteriyor. Ancak, sütun adresini ayarlamaktan verilerin kullanılabilir olduğu zamana kadar geçen süre yalnızca% 10 (13.5ns) azalmıştır. Hızlı bir arama, en hızlı zaman uyumsuzunun erişim zamanının olduğunu gösterir. SRAM (18 yaşında) 7ns. SDRAM erişim süresi neden bu kadar yavaş azaldı? Sebep ekonomik mi, teknolojik mi yoksa temel mi?


1
Başka bir olası sebep basitçe gerekli olmama olabilir mi?
Sebastiaan van den Broek

Örneğin, bellekteki verileri aramayı daha hızlı hale getirmek için düşük erişim süresi gerekir.
Arseniy

Ekstra hızın her zaman güzel olduğunu ancak yazılım geliştirici bakış açısıyla, belki de diğer tüm IO ve mimarilere kıyasla (kelimenin tam anlamıyla farklı veri merkezlerinde çalışabilen mikro hizmetler de dahil olmak üzere) geldiğinin farkındayım. artık. Bazen 'yeterince iyi' iyidir, veya en azından fazladan Ar-Ge'yi hızlandırmayı garanti etmez. Bunu da sorunuzda potansiyel bir sebep olarak görmeyi düşünüyorum.
Sebastiaan van den Broek

1
Göre Vikipedi o FR4 üzerinde 3 ft etrafında yaymak için bir sinyal alır ne kadar süre 6,36 ns Birinci Kelime gecikme, DDR3-2200 etti, biz oldukça yakın fiziksel sınırlarına söyleyebilirim
Mark Omo

Yanıtlar:


33

Bunun nedeni, DRAM'ın bant genişliğini artırmak, gecikmeyi azaltmaktan daha kolay ve ucuzdur. Verileri açık bir ram satırından almak için önemsiz miktarda çalışma gereklidir.

Sütun adresinin kodu çözülmeli, hangi hatlara erişmek için hangi hatların seçilmesi gerektiğine karar verilmelidir ve verilerin çip üzerinde çıkış tamponlarına doğru hareket etmesi gerekir. Bu, özellikle de SDRAM yongalarının yüksek ram yoğunluklarına göre tasarlanmış ve yüksek mantık hızlarına uygun olmayan bir proseste üretildiği göz önüne alındığında biraz zaman alır. DDR (1,2,3 veya 4) kullanılarak söylenen bant genişliğini arttırmak için, mantığın çoğu genişletilebilir veya boru hattına bağlanabilir ve önceki nesillerle aynı hızda çalışabilir. Daha hızlı olması gereken tek şey, DDR pinleri için I / O sürücüsüdür.

Aksine, gecikmeyi azaltmak için tüm işlemin hızlandırılması gerekir, bu daha zordur. Büyük olasılıkla, koçun parçalarının yüksek hızlı CPU'lara benzer bir proseste yapılması gerekecektir, maliyeti büyük oranda arttırır (yüksek hızlı işlem daha pahalıdır, artı her bir yonganın 2 farklı işlem yapması gerekir).

CPU önbelleklerini RAM ve sabit disk / SSD ile karşılaştırırsanız, depolama alanı büyük olmakla depolama alanı hızlı olmak arasında ters bir ilişki vardır. L1 $ çok hızlı, ancak yalnızca 32 ile 256kB arasında veri tutabiliyor. Bu kadar hızlı olmasının nedeni küçük olması:

  • Kullanarak CPU'ya çok yakın yerleştirilebilir, yani verilerin elde edilmesi için daha kısa bir mesafe kat etmesi gerekir
  • Üzerindeki kablolar daha kısa yapılabilir, yine de verilerin dolaşması daha az zaman alır.
  • Çok fazla alan veya çok sayıda transistör gerektirmez, bu nedenle hızı optimize edilmiş bir işlem yapmak ve depolanan bit başına çok fazla güç kullanmak bu kadar pahalı değildir.

Hiyerarşiyi yükseltirken, her bir depolama seçeneğinin kapasitesi daha da artar, ancak alanda daha da büyür ve onu kullanan cihazdan daha uzağa götürür, bu da cihazın yavaşlaması gerektiği anlamına gelir.


21
Mükemmel cevap. Sadece fiziksel uzaklık faktörünü vurgulamak istiyorum: belki de en uzak RAM çubuğu için 10 cm, sinyal hızı olarak ışık hızının 1/1 / 2'si, artı PCB parçalarını yönlendirmek ve eşleştirmek için ekstra uzunluk 2ns gidiş-dönüş saatinde kolayca olabilir. Gecikmenizin ~% 15'i kırılmaz evrensel hız sınırından kaynaklanıyorsa ... benim görüşüme göre çok iyi gidiyorsunuz.
mbrig

1
L1 aynı zamanda benzersiz bir şekilde düzenlenmiştir, doğrudan onu kullanan ve SRAM'ı kullanan çekirdeğin içindedir.
orman

@forest Ve ayrıca oldukça katı bir boyut sınırlaması vardır - onu çok büyük yapın ve bu kadar hızlı tutmanın yolu yok.
Luaan

L1d önbellek, gecikme için de büyük ölçüde optimize edilebilir, örneğin setteki tüm yollara paralel olarak etiketler ve veriler almak. Bu nedenle, bir etiket eşleşmesi yalnızca verileri SRAM'dan almak yerine çıktıya uyarlar. Bu, endeks bitlerinin tümü bir adresin sayfa içi kısmı bölümünden geldiğinde, adresin yüksek bitlerindeki TLB aramasına paralel olarak da gerçekleşebilir. (@Luaan sözü gibi yani boyutuna bir sabit sınırı Yani: boyut / birleşebilirlik <= çalışma bakınız bu VIPT = Pipt hız hack için sayfa boyutu. VIPT Cache: TLB & Cache arasındaki bağlantı )
Peter Cordes

6

C_Elegans , cevabın bir bölümünü sağlar ; bir hafıza döngüsünün genel gecikme süresini azaltmak zordur .

Cevabın diğer kısmı, modern hiyerarşik bellek sistemlerinde (çoklu önbellekleme seviyeleri), bellek bant genişliğinin genel sistem performansı üzerinde bellek gecikme süresinden çok daha güçlü bir etkiye sahip olmasıdır ve bu nedenle en son geliştirme çabalarının tamamının odaklandığı yer burasıdır.

Bu, hem genel işlemlerde hem de birçok işlem / iş parçacığının paralel olarak çalıştığı ve gömülü sistemlerde geçerlidir. Örneğin, yaptığım HD video çalışmasında, milisaniye sırasındaki gecikmeleri umursamıyorum, ancak çoklu gigabayt / saniye bant genişliğine ihtiyacım var.


Ve yazılımın, gecikmeyi azaltma zorluğuna ve maliyetine kıyasla, çoğu durumda, oldukça kolay bir şekilde "yüksek" gecikme süresi için tasarlanabileceğinden de bahsedilmelidir. Hem CPU'lar hem de yazılımları çoğu durumda etkili gecikmeyi ortadan kaldırma konusunda çok iyidir. Sonunda, bellek mimarisi ve CPU önbelleğe alma / ön alma işleminin nasıl çalıştığı hakkında hiçbir fikriniz yoksa, gecikme sınırını düşündüğünüz kadar sık ​​kullanmazsınız. Basit yaklaşım genellikle çoğu yazılım için, özellikle tek iş parçacıklı için yeterince iyi çalışır.
Luaan

Modern Intel CPU'larda, bellek gecikmesi, tek çekirdekli bant genişliği için sınırlayıcı bir faktördür : bant genişliği, max_concurrency / latency değerini aşamaz ve aynı anda uçuş sırasında çekirdek dışı istekler için sınırlı bir kapasiteye sahiptir. Çok çekirdekli bir Xeon (halka veriyolunda daha fazla atlama noktasından daha yüksek eşiksizlik gecikmesi olan), daha fazla DRAM denetleyicisine sahip olmasına rağmen, dört çekirdekli masaüstü yongasına göre daha kötü tek çekirdekli bant genişliğine sahiptir. Skylake neden tek iş parçacıklı bellek verimi için Broadwell-E'den daha iyi? . Çok çekirdekli bir Xeon'da S / B belleğini doyurmak için daha fazla iş parçacığı gerekir.
Peter Cordes

Genel olarak ana noktanız doğrudur: çoğu, sıra dışı arka uçların durmasını önlemek için düşük gecikme süresi nedeniyle önbellekte isabet eder. HW ön beslemesi, sıralı erişimlere ayak uydurabilmek ve çekirdek ihtiyaç duymadan önce verileri önbellekte hazır tutmak için çoğunlukla bant genişliğine ihtiyaç duyar. DRAM gecikme böylece verimli yazılım kullanımı erişim desenleri ayarlı olması gerekir, çekirdek saat döngüleri yüzlerce olduğu yok hem uzamsal / zamansal yerellik ve HW önceden getirme yenerek önbellek özlüyor. Özellikle yükler için, çünkü depo tamponları depo gecikmesini sıra dışı arka uçların geri kalan kısmından ayırabilir.
Peter Cordes

Disk G / Ç için, milisaniye gecikme süresi, sıralı erişimler için gizlemek için okumaya hazır bir ön ek bulunmadığımızın önemi olmazdı. Fakat gecikme süresi ne kadar yüksek olursa, gizlenmesi o kadar zor olur. (Önceden alma algoritmalarınız ne kadar iyi olmalı ve erişim şablonlarınız ne kadar öngörülebilir olmalı.) Ve istediğiniz bant genişliğini elde etmek için uçuşta tutmanız gereken daha fazla istek / veri baytı.
Peter Cordes

2

Bu kadar çok fikrim yok, ama hepsinin biraz olmasını bekliyorum.

Ekonomik

Bilgisayarların / telefonların çoğunluğu için, hız fazlasıyla yeterli. Daha hızlı veri depoları için SSD geliştirilmiştir. İnsanlar (neredeyse) gerçek zamanlı olarak video / müzik ve diğer hızlı yoğun görevleri kullanabilirler. Bu yüzden daha fazla hıza ihtiyaç duyulmaz (hava tahmini vb. Özel uygulamalar hariç).

Diğer bir neden ise çok yüksek bir RAM hızını işlemektir, hızlı olan CPU'lara ihtiyaç vardır. Ve bu da çok fazla güç kullanımıyla geliyor. Bunları batarya cihazlarında (cep telefonları gibi) kullanma eğilimi çok hızlı RAM (ve CPU'lar) kullanılmasını önlediğinden, bu sayede bunların ekonomik hale getirilmesinde faydası olmaz.

Teknik

Cips / IC'lerin küçülme boyutuyla (şimdiki nm seviyesi), hız artar, ancak önemli ölçüde artmaz. Daha çok ihtiyaç duyulan RAM miktarını artırmak için daha sık kullanılır (ayrıca ekonomik bir neden).

Temel

Örnek olarak (her ikisi de devrelidir): Daha fazla hız almanın en kolay yolu (SSD tarafından kullanılır), yükü birden fazla bileşene yaymaktır, bu şekilde 'işlem' hızları da artmaktadır. Aynı anda okuyan 8 USB çubuğu kullanarak ve birbiri ardına 1 USB bellekten veri okumak yerine, sonuçları birleştirmek (8 kez uzun sürer) ile karşılaştırın.


1
SSD'lerin SDRAM gecikmesi ile tam olarak ne ilgisi var?
C_Elegans

@C_Elegans ikisi de devredir, bu 'genel' sorusu için çok fazla fark olduğunu sanmıyorum.
Michel Keijzers

2
Bir sayfayı açma süresi, ön dolum döngüsünden dolayı gerçekten o kadar azalmadı; Günümüzde ihtiyaç duyulan enerji miktarı, on yıl öncesine göre önemli ölçüde farklı değildir. Bu benim deneyimimdeki erişim zamanına hâkim.
Peter Smith

5
@MichelKeijzers Her ikisi de devre olmasına rağmen, SSD'ler ve SDRAM çok farklı kullanım durumlarına hizmet eder ve veri depolamak için farklı tekniklerden yararlanır. Ek olarak, CPU'ların gerçekten daha hızlı RAM'a ihtiyaç duymadıklarını söylemek pek mantıklı gelmiyor, çoğu modern CPU'ların 3 önbellek seviyesine sahip olmasının sebebi, RAM'lerinin CPU'ya hizmet edecek kadar hızlı hale getirilememesidir.
C_Elegans

1
Daha büyük depolama için SSD'ler olduğunu söylemiştiniz . Daha hızlı mı demek istedin ? Bir ssd'de aynı miktarda depolama bir hdd'den daha pahalıdır. SSD'lerin ana satış noktası hız ve belki de gürültü ve güvenilirliktir. Kapasite için, HDD'ler hala daha iyi
user198712
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.