Tek tip olmayan bellek erişimi - Non-uniform memory access

HP Z820 iki CPUS ve NUMA ile

Tek Tip Olmayan Bellek Erişimi (NUMA) bir bilgisayar hafızası kullanılan tasarım çoklu işlem, burada bellek erişim süresi işlemciye göre bellek konumuna bağlıdır. NUMA altında, bir işlemci kendi yerel hafıza yerel olmayan bellekten daha hızlı (başka bir işlemciye yerel bellek veya işlemciler arasında paylaşılan bellek). NUMA'nın faydaları, özellikle verilerin genellikle belirli görevler veya kullanıcılarla güçlü bir şekilde ilişkilendirildiği sunucularda belirli iş yükleriyle sınırlıdır.[1]

NUMA mimarileri mantıksal olarak aşağıdakilerden ölçeklendirmeyi takip eder: simetrik çoklu işlem (SMP) mimarileri. 1990'larda ticari olarak geliştirildi. Unisys, Konveks Bilgisayar (sonra Hewlett Packard ), Honeywell Information Systems Italy (HISI) (daha sonra Groupe Bull ), Silikon Grafikler (sonra Silicon Graphics International ), Sıralı Bilgisayar Sistemleri (sonra IBM ), Veri Genel (sonra EMC ), ve Dijital (sonra Compaq, sonra HP şimdi HPE ). Bu şirketler tarafından geliştirilen teknikler daha sonra çeşitli Unix benzeri işletim sistemleri ve bir ölçüde Windows NT.

NUMA tabanlı Unix sisteminin ilk ticari uygulaması, VAST Corporation'dan Dan Gielan tarafından aşağıdakiler için tasarlanan Simetrik Çoklu İşlem XPS-100 sunucu ailesiydi. Honeywell Bilgi Sistemleri İtalya.

Temel kavram

Bir NUMA sisteminin olası bir mimarisi. İşlemciler, değişen kalınlık / sayıdaki bağlantılarla veri yoluna veya çapraz çubuğa bağlanır. Bu, farklı CPU'ların göreceli konumlarına göre belleğe farklı erişim önceliklerine sahip olduğunu gösterir.

Modern CPU'lar, kullandıkları ana bellekten çok daha hızlı çalışır. Bilgi işlem ve veri işlemenin ilk günlerinde, CPU genellikle kendi belleğinden daha yavaş çalışıyordu. İşlemcilerin ve belleğin performans çizgileri, 1960'larda ilkinin gelişiyle kesişti süper bilgisayarlar. O zamandan beri, CPU'lar kendilerini "veriye açlık içinde" buldular ve verilerin bellekten gelmesini beklerken oyalanmak zorunda kaldılar. 1980'lerin ve 1990'ların birçok süper bilgisayar tasarımı, daha hızlı işlemcilerin aksine yüksek hızlı bellek erişimi sağlamaya odaklandı ve bilgisayarların büyük veri kümeleri üzerinde diğer sistemlerin yaklaşamayacağı hızlarda çalışmasına izin verdi.

Bellek erişim sayısını sınırlamak, modern bir bilgisayardan yüksek performans elde etmenin anahtarı oldu. Ticari işlemciler için bu, giderek artan miktarda yüksek hızlı kurulum anlamına geliyordu. ön bellek önlemek için giderek daha karmaşık algoritmalar kullanmak önbellekte eksik. Ancak işletim sistemlerinin ve üzerlerinde çalıştırılan uygulamaların boyutundaki çarpıcı artış, genellikle bu önbellek işleme iyileştirmelerini gölgede bıraktı. NUMA içermeyen çok işlemcili sistemler sorunu önemli ölçüde daha da kötüleştirir. Artık bir sistem aynı anda birkaç işlemciyi aç bırakabilir, bunun nedeni özellikle aynı anda yalnızca bir işlemci bilgisayarın belleğine erişebilmesi.[2]

NUMA, her işlemci için ayrı bellek sağlayarak bu sorunu çözmeye çalışır ve birkaç işlemci aynı belleği ele almaya çalıştığında performansın düşmesini önler. Yaygın verileri içeren sorunlar için (ortak sunucular ve benzer uygulamalar), NUMA, tek bir paylaşılan bellek üzerindeki performansı, kabaca işlemci sayısı (veya ayrı bellek bankası) ile artırabilir.[3] Çoğunlukla NUMA olmayan sistemlerde kullanılan bu sorunu ele almak için başka bir yaklaşım, çok kanallı bellek mimarisi bellek kanallarının sayısındaki doğrusal bir artışın, bellek erişim eşzamanlılığını doğrusal olarak artırdığı.[4]

Elbette, tüm veriler tek bir görevle sınırlı kalmaz, bu da birden fazla işlemcinin aynı verileri gerektirebileceği anlamına gelir. Bu durumların üstesinden gelmek için NUMA sistemleri, verileri bellek bankları arasında taşımak için ek donanım veya yazılım içerir. Bu işlem, bu bankalara bağlı işlemcileri yavaşlatır, bu nedenle NUMA nedeniyle genel hız artışı, büyük ölçüde çalışan görevlerin doğasına bağlıdır.[3]

AMD ile NUMA uyguladı Opteron işlemci (2003), kullanma HyperTransport. Intel x86 için NUMA uyumluluğunu duyurdu ve Itanium 2007 sonundaki sunucular Nehalem ve Tukwila CPU'lar.[5] Her iki Intel CPU ailesi ortak bir yonga seti; ara bağlantıya Intel denir Hızlı Yol Ara Bağlantısı (QPI).[6]

Önbellek tutarlı NUMA (ccNUMA)

Bir ccNUMA'nın topolojisi Buldozer sunucu hwloc'un lstopo aracı kullanılarak çıkarıldı.

Neredeyse tüm CPU mimarileri, az miktarda çok hızlı paylaşılmayan bellek kullanır. önbellek patlamak referans yeri bellek erişimleri. NUMA ile önbellek tutarlılığı paylaşılan bellek arasında önemli bir ek yük vardır. Tasarlaması ve oluşturması daha basit olmasına rağmen, önbellekle uyumlu olmayan NUMA sistemleri, standartta programlamak için engelleyici bir şekilde karmaşık hale gelir von Neumann mimarisi programlama modeli.[7]

Genellikle, ccNUMA, birden fazla önbellek aynı bellek konumunu depoladığında tutarlı bir bellek görüntüsü tutmak için önbellek denetleyicileri arasında işlemciler arası iletişimi kullanır. Bu nedenle, birden çok işlemci aynı bellek alanına hızlı bir şekilde erişmeye çalıştığında ccNUMA düşük performans gösterebilir. NUMA için destek işletim sistemleri İşlemcileri ve belleği NUMA dostu yollarla tahsis ederek ve NUMA dostu olmayan erişimi gerekli kılan programlama ve kilitleme algoritmalarından kaçınarak bu tür erişimin sıklığını azaltmaya çalışır.[8]

Alternatif olarak, önbellek tutarlılık protokolleri gibi MESIF protokolü önbellek tutarlılığını korumak için gereken iletişimi azaltmaya çalışın. Ölçeklenebilir Tutarlı Arayüz (SCI) bir IEEE önceki çok işlemcili sistemlerde bulunan ölçeklenebilirlik sınırlamalarını önlemek için dizin tabanlı bir önbellek tutarlılık protokolünü tanımlayan standart. Örneğin SCI, NumaConnect teknolojisinin temeli olarak kullanılır.[9][10]

2011 itibariyle, ccNUMA sistemleri, temel alan çok işlemcili sistemlerdir. AMD Opteron harici mantık olmadan uygulanabilen işlemci ve yonga setinin NUMA'yı desteklemesini gerektiren Intel Itanium işlemci. CcNUMA etkin yonga setlerine örnek olarak SGI Shub (Süper hub), Intel E8870 ve HP sx2000 (Integrity ve Superdome sunucularında kullanılır) ve NEC Itanium tabanlı sistemlerde bulunanlar. Daha önceki ccNUMA sistemleri Silikon Grafikler dayanıyordu MIPS işlemciler ve ARALIK Alfa 21364 (EV7) işlemci.

NUMA ve küme hesaplama karşılaştırması

NUMA, birbirine sıkıca bağlı bir biçim olarak görülebilir. küme hesaplama. Ek olarak sanal bellek bir küme mimarisine sayfalama, NUMA'nın tamamen yazılım içinde uygulanmasına izin verebilir. Bununla birlikte, yazılım tabanlı NUMA'nın düğümler arası gecikmesi, donanım tabanlı NUMA'nınkinden birkaç kat daha büyük (daha yavaş) kalır.[1]

Yazılım desteği

NUMA, bellek erişim performansını büyük ölçüde etkilediğinden, iş parçacıklarının ve işlemlerin bellek içi verilerine yakın zamanlanmasına olanak sağlamak için belirli yazılım optimizasyonlarına ihtiyaç vardır.

  • Silikon Grafikler IRIX Origin sunucu serisiyle 1240 CPU üzerinde ccNUMA mimarisi desteği.
  • Microsoft Windows 7 ve Windows Server 2008 R2 64 mantıksal çekirdek üzerinde NUMA mimarisi için destek eklendi.[11]
  • Java 7 NUMA tanıyan bellek ayırıcı için destek eklendi ve Çöp toplayıcı.[12]
  • Sürüm 2.5 Linux çekirdeği zaten temel NUMA desteği içeriyordu,[13] sonraki çekirdek sürümlerinde daha da geliştirildi. Linux çekirdeğinin 3.8 sürümü, sonraki çekirdek sürümlerinde daha verimli NUMA ilkelerinin geliştirilmesine izin veren yeni bir NUMA temeli getirdi.[14][15] Linux çekirdeğinin 3.13 Sürümü, bir süreci hafızasına yaklaştırmayı amaçlayan çok sayıda politika getirmiştir. hafıza sayfaları süreçler arasında paylaşılan veya şeffaf kullanım büyük sayfalar; yeni sysctl ayarları, NUMA dengelemenin etkinleştirilmesine veya devre dışı bırakılmasına ve çeşitli NUMA bellek dengeleme parametrelerinin yapılandırılmasına izin verir.[16][17][18]
  • OpenSolaris modeller NUMA mimarisi ile lgroups.
  • FreeBSD 11.0 sürümüne ilk NUMA yakın ilgi alanı ve politika yapılandırması eklendi [19]

Ayrıca bakınız

Referanslar

  1. ^ a b Nakul Manchanda; Karan Anand (2010-05-04). "Tek Tip Olmayan Bellek Erişimi (NUMA)" (PDF). New York Üniversitesi. Arşivlenen orijinal (PDF) 2013-12-28 tarihinde. Alındı 2014-01-27.
  2. ^ Sergey Blagodurov; Sergey Zhuravlev; Mohammad Dashti; Alexandra Fedorov (2011-05-02). "Çok Çekirdekli Sistemlerde NUMA-Farkında Çatışma Yönetimi İçin Bir Örnek" (PDF). Simon Fraser Universitesi. Alındı 2014-01-27.
  3. ^ a b Zoltan Majo; Thomas R. Gross (2011). "NUMA Çok Çekirdekli Çok İşlemcili Bellek Sistemi Performansı" (PDF). ACM. Arşivlenen orijinal (PDF) 2013-06-12 tarihinde. Alındı 2014-01-27.
  4. ^ "Intel Çift Kanallı DDR Bellek Mimarisi Teknik Raporu" (PDF) (Rev. 1.0 ed.). Infineon Technologies Kuzey Amerika ve Kingston Teknolojisi. Eylül 2003. Arşivlenen orijinal (PDF, 1021KB ) 2011-09-29 tarihinde. Alındı 2007-09-06.
  5. ^ Intel Corp. (2008). Intel QuickPath Mimarisi [Beyaz kağıt]. Alınan http://www.intel.com/pressroom/archive/reference/whitepaper_QuickPath.pdf
  6. ^ Intel Kurumu. (18 Eylül 2007). Gelsinger, Intel ve Yüksek Teknoloji Endüstrisinin Hızlı Teknolojisi Caden [Basın açıklaması] ile Konuştu. Alınan http://www.intel.com/pressroom/archive/releases/2007/20070918corp_b.htm
  7. ^ "ccNUMA: Önbellek Tutarlı Birörnek Olmayan Bellek Erişimi". slideshare.net. 2014. Alındı 2014-01-27.
  8. ^ Per Stenstromt; Truman Joe; Anoop Gupta (2002). "Önbellek Uyumlu NUMA ve COMA Mimarilerinin Karşılaştırmalı Performans Değerlendirmesi" (PDF). ACM. Alındı 2014-01-27.
  9. ^ David B. Gustavson (Eylül 1991). "Ölçeklenebilir Tutarlı Arayüz ve İlgili Standartlar Projeleri" (PDF). SLAC Yayını 5656. Stanford Lineer Hızlandırıcı Merkezi. Alındı 27 Ocak 2014.
  10. ^ "NumaChip, önbelleğe uyumlu, düşük maliyetli paylaşılan bellek sağlar". Numascale.com. Arşivlenen orijinal 2014-01-22 tarihinde. Alındı 2014-01-27.
  11. ^ NUMA Desteği (MSDN)
  12. ^ Java HotSpot ™ Sanal Makine Performans İyileştirmeleri
  13. ^ "Linux Ölçeklenebilirlik Çabası: NUMA Grup Ana Sayfası". sourceforge.net. 2002-11-20. Alındı 2014-02-06.
  14. ^ "Linux kernel 3.8, Bölüm 1.8. Otomatik NUMA dengeleme". kernelnewbies.org. 2013-02-08. Alındı 2014-02-06.
  15. ^ Jonathan Corbet (2012-11-14). "NUMA acele". LWN.net. Alındı 2014-02-06.
  16. ^ "Linux kernel 3.13, Bölüm 1.6. NUMA sistemlerinde iyileştirilmiş performans". kernelnewbies.org. 2014-01-19. Alındı 2014-02-06.
  17. ^ "Linux çekirdeği belgeleri: Belgeler / sysctl / kernel.txt". kernel.org. Alındı 2014-02-06.
  18. ^ Jonathan Corbet (2013-10-01). "NUMA planlama ilerlemesi". LWN.net. Alındı 2014-02-06.
  19. ^ "FreeBSD 11.0-RELEASE Sürüm Notları". freebsd.org. 2016-09-22.

Dış bağlantılar