İşlemcinin tepe işlem gücü ile bellek ve ara bağlantı bant genişliğinin yirmi yıldaki ayrışması. Açılan bu makasa bellek duvarı denir.

Bellek duvarı (İngilizce: memory wall), bir bilgisayarda işlemci hızının ana bellek (özellikle DRAM) erişim hızından çok daha hızlı artması sonucu ortaya çıkan ve giderek büyüyen başarım açığını ifade eden bir kavramdır. İşlemci, gereksindiği veriyi bellekten beklerken giderek artan sayıda çevrim boşa harcadığından, bir noktadan sonra sistemin başarımı işlemcinin hızıyla değil bellek gecikmesiyle sınırlanır. Terim, 1995'te bilgisayar bilimcileri William A. Wulf ve Sally A. McKee tarafından yazılan kısa bir makaleyle yaygınlaşmıştır. Bellek duvarı ile Von Neumann darboğazı yakın ama ayrı kavramlardır: darboğaz, buyruk ile verinin aynı yolu paylaşmasından doğan bir yapı sorunudur ve bellek ne kadar hızlı olursa olsun sürer; bellek duvarı ise işlemci ile bellek başarımının farklı hızlarda artmasından doğan bir eğilimdir.

Nedeni

1980'lerin ortalarından 2000'lerin ortalarına kadar işlemci başarımı yılda yaklaşık %50 oranında artarken, DRAM belleğin erişim gecikmesi yılda yalnızca yaklaşık %7 oranında iyileşmiştir. Bu iki eğilim üstel olduğundan aradaki açık her yıl büyüyerek işlemci ile bellek arasında giderek genişleyen bir başarım uçurumu oluşturmuştur. Bellek bant genişliği gecikmeye kıyasla daha hızlı iyileştiğinden, duvarı asıl belirleyen etken bellek gecikmesidir; bir veriye erişmek için geçen süre, işlemcinin aynı sürede yapabileceği işlem sayısı cinsinden sürekli artmıştır. Aynı ayrışma bant genişliğinde de görülür: yirmi yıllık bir dönemde donanımın tepe işlem gücü 60.000 kat artarken DRAM bant genişliği 100, yongalar arası bağlantının bant genişliği ise 30 kat artmıştır.

Wulf ve McKee, önbellek kullanılsa bile sorunun kaçınılmaz olduğunu göstermiştir. Ortalama bellek erişim süresi

t ¯ = p ⋅ t ön + ( 1 − p ) ⋅ t bel {\displaystyle {\bar {t}}=p\cdot t_{\text{ön}}+(1-p)\cdot t_{\text{bel}}}

biçiminde yazılırsa (burada p önbellekte bulma oranı, tön önbellek erişim süresi, tbel ana bellek erişim süresidir), işlemci-bellek uçurumu büyüdükçe tbel değeri işlemci çevrimi cinsinden sınırsız büyür. Bu durumda bulma oranı p 1'e ne kadar yakın olursa olsun, (1 − ptbel terimi sonunda baskın gelir ve ortalama erişim süresini belleğin hızına çeker.

Başa çıkma yöntemleri

Bellek duvarının etkisini azaltmak için işlemci tasarımında çeşitli teknikler geliştirilmiştir:

  • Çok katmanlı önbellek hiyerarşisi: sık erişilen veriyi işlemciye yakın, küçük ve hızlı katmanlarda (L1, L2, L3) tutarak ortalama erişim süresini düşürmek (bk. bellek hiyerarşisi).
  • Önceden getirme (prefetching): gelecekte erişileceği tahmin edilen veriyi, istenmeden önce belleğe getirmek.
  • Gecikme gizleme: sıra dışı yürütme ve çoklu iş parçacığı gibi yöntemlerle, bellek beklenirken bağımsız başka işleri yürütmek.
  • Bellek düzeyi paralelliği: aynı anda birden çok bellek isteğini sürdürerek bekleme sürelerini üst üste bindirmek.

Bu teknikler duvarın etkisini hafifletse de tümüyle ortadan kaldıramaz; bellek gecikmesi çağdaş sistemlerde başlıca başarım sınırlayıcılarından biri olmayı sürdürmektedir.

Üç duvar bağlamı

Bellek duvarı, 2000'li yıllarda tek çekirdekli başarım artışını sona erdiren üç temel kısıttan biri olarak anılır: güç duvarı (artan güç yoğunluğunun saat hızını sınırlaması), bellek duvarı ve buyruk düzeyi paralelliği duvarı (bir buyruk akışından çıkarılabilecek paralellikteki azalan getiri). Bu üç duvar birlikte, sektörü saat hızını yükseltmek yerine çok çekirdekli işlemciler aracılığıyla paralelliğe yöneltmiştir. Çok çekirdekli tasarımlar başarımı artırırken artan çekirdek sayısının daha çok bellek bant genişliği gerektirmesi, duvarın bant genişliği boyutunu da gündeme getirmiştir.

Ayrıca bakınız

Kaynakça

  1. ^ a b Patterson, David A.; Hennessy, John L. (2014). Computer Organization and Design: The Hardware/Software Interface (5 bas.). Morgan Kaufmann. ISBN 978-0124077263. 
  2. ^ a b Wulf, William A.; McKee, Sally A. (1995). "Hitting the memory wall: implications of the obvious". ACM SIGARCH Computer Architecture News. 23 (1). ss. 20-24. doi:10.1145/216585.216588. 
  3. ^ Gholami, Amir; Yao, Zhewei; Kim, Sehoon; Hooper, Coleman; Mahoney, Michael W.; Keutzer, Kurt (2024). "AI and Memory Wall". IEEE Micro. 44 (3). ss. 33-39. doi:10.1109/MM.2024.3373763. 
  4. ^ Mahapatra, Nihar R.; Venkatrao, Balakrishna (1999). "The processor-memory bottleneck: problems and solutions". XRDS: Crossroads, The ACM Magazine for Students. 5 (3). doi:10.1145/357783.331677. 
  5. ^ McKee, Sally A. (2004). "Reflections on the memory wall". Proceedings of the 1st Conference on Computing Frontiers (CF '04). s. 162. doi:10.1145/977091.977115.