الوصول إلى الذاكرة غير الموحد

اللوحة الأم لمحطة عمل HP Z820 مع مقبسين لوحدة المعالجة المركزية، كل منهما يحتوي على مجموعة خاصة من فتحات DIMM الثمانية المحيطة بالمقبس.

الوصول غير المنتظم للذاكرة ( NUMA ) هو تصميم ذاكرة كمبيوتر يستخدم في المعالجة المتعددة ، حيث يعتمد وقت الوصول إلى الذاكرة على موقع الذاكرة بالنسبة للمعالج. بموجب NUMA، يمكن للمعالج الوصول إلى ذاكرته المحلية بشكل أسرع من الذاكرة غير المحلية (الذاكرة المحلية لمعالج آخر أو الذاكرة المشتركة بين المعالجات). [1] NUMA مفيد لأحمال العمل ذات موقع الذاكرة المرجعي العالي وتنازع القفل المنخفض ، لأن المعالج قد يعمل على مجموعة فرعية من الذاكرة في الغالب أو بالكامل داخل عقدة ذاكرة التخزين المؤقت الخاصة به، مما يقلل من حركة المرور على ناقل الذاكرة. [2]

تتبع معماريات NUMA منطقيًا في التوسع معماريات المعالجة المتعددة المتماثلة (SMP). تم تطويرها تجاريًا خلال التسعينيات من قبل Unisys و Convex Computer (لاحقًا Hewlett-Packard ) و Honeywell Information Systems Italy (HISI) (لاحقًا Groupe Bull ) و Silicon Graphics (لاحقًا Silicon Graphics International ) و Sequent Computer Systems (لاحقًا IBM ) و Data General (لاحقًا EMC ، والآن Dell Technologies ) و Digital (لاحقًا Compaq ، ثم HP ، والآن HPE ) و ICL . ظهرت التقنيات التي طورتها هذه الشركات لاحقًا في مجموعة متنوعة من أنظمة التشغيل الشبيهة بـ Unix ، وإلى حد ما في Windows NT .

كان أول تنفيذ تجاري لنظام Unix المستند إلى NUMA هو [ أين؟ ] [ متى؟ ] عائلة خوادم XPS-100 ذات المعالجة المتعددة المتماثلة، والتي صممها دان جيلان من شركة VAST Corporation لشركة Honeywell Information Systems Italy.

ملخص

أحد أشكال الهندسة المعمارية المحتملة لنظام NUMA. تتصل المعالجات بالناقل أو العارضة من خلال وصلات ذات سمك/عدد متفاوت. يوضح هذا أن وحدات المعالجة المركزية المختلفة لها أولويات وصول مختلفة إلى الذاكرة بناءً على موقعها النسبي.

تعمل وحدات المعالجة المركزية الحديثة بشكل أسرع بكثير من الذاكرة الرئيسية التي تستخدمها. في الأيام الأولى للحوسبة ومعالجة البيانات، كانت وحدة المعالجة المركزية تعمل بشكل أبطأ من ذاكرتها الخاصة. تقاطعت خطوط أداء المعالجات والذاكرة في الستينيات مع ظهور أول أجهزة الكمبيوتر العملاقة . منذ ذلك الحين، وجدت وحدات المعالجة المركزية نفسها بشكل متزايد "متعطشة للبيانات" واضطرت إلى التوقف أثناء انتظار وصول البيانات من الذاكرة (على سبيل المثال لأجهزة الكمبيوتر القائمة على بنية فون نيومان، انظر عنق زجاجة فون نيومان ). ركزت العديد من تصميمات أجهزة الكمبيوتر العملاقة في الثمانينيات والتسعينيات على توفير وصول عالي السرعة إلى الذاكرة بدلاً من المعالجات الأسرع، مما يسمح لأجهزة الكمبيوتر بالعمل على مجموعات بيانات كبيرة بسرعات لا تستطيع الأنظمة الأخرى الوصول إليها.

إن تحديد عدد مرات الوصول إلى الذاكرة كان بمثابة المفتاح لاستخراج أداء عالي من جهاز كمبيوتر حديث. بالنسبة للمعالجات التجارية، كان هذا يعني تثبيت كمية متزايدة باستمرار من ذاكرة التخزين المؤقت عالية السرعة واستخدام خوارزميات متطورة بشكل متزايد لتجنب أخطاء التخزين المؤقت . لكن الزيادة الهائلة في حجم أنظمة التشغيل والتطبيقات التي تعمل عليها طغت بشكل عام على تحسينات معالجة التخزين المؤقت هذه. إن أنظمة المعالجات المتعددة بدون NUMA تجعل المشكلة أسوأ بكثير. الآن يمكن للنظام تجويع العديد من المعالجات في نفس الوقت، وخاصة لأن معالجًا واحدًا فقط يمكنه الوصول إلى ذاكرة الكمبيوتر في وقت واحد. [3]

تحاول NUMA معالجة هذه المشكلة من خلال توفير ذاكرة منفصلة لكل معالج، وتجنب التأثير على الأداء عندما تحاول العديد من المعالجات معالجة نفس الذاكرة. بالنسبة للمشاكل التي تنطوي على بيانات منتشرة (شائعة للخوادم والتطبيقات المماثلة)، يمكن لـ NUMA تحسين الأداء على ذاكرة مشتركة واحدة بعامل تقريبًا عدد المعالجات (أو بنوك الذاكرة المنفصلة). [4] نهج آخر لمعالجة هذه المشكلة هو بنية الذاكرة متعددة القنوات ، حيث تؤدي الزيادة الخطية في عدد قنوات الذاكرة إلى زيادة التزامن في الوصول إلى الذاكرة خطيًا. [5]

بالطبع، لا تنتهي جميع البيانات إلى حصرها في مهمة واحدة، مما يعني أن أكثر من معالج قد يتطلب نفس البيانات. للتعامل مع هذه الحالات، تتضمن أنظمة NUMA أجهزة أو برامج إضافية لنقل البيانات بين بنوك الذاكرة. تعمل هذه العملية على إبطاء المعالجات المرتبطة بهذه البنوك، لذا فإن الزيادة الإجمالية في السرعة بسبب NUMA تعتمد بشكل كبير على طبيعة المهام الجارية. [4]

التنفيذات

نفذت AMD تقنية NUMA مع معالج Opteron (2003)، باستخدام HyperTransport . أعلنت شركة Intel عن توافق NUMA لخوادم x86 و Itanium في أواخر عام 2007 مع وحدات المعالجة المركزية Nehalem و Tukwila . [6] تشترك عائلتا وحدة المعالجة المركزية من Intel في مجموعة شرائح مشتركة ؛ يُطلق على الاتصال اسم Intel QuickPath Interconnect (QPI)، والذي يوفر نطاقًا تردديًا عاليًا للغاية لتمكين قابلية التوسع العالية على اللوحة وتم استبداله بإصدار جديد يسمى Intel UltraPath Interconnect مع إصدار Skylake (2017). [7]

ذاكرة التخزين المؤقت المتماسكة NUMA (ccNUMA)

تم استخراج طوبولوجيا خادم ccNUMA Bulldozer باستخدام أداة lstopo الخاصة بـ hwloc.

تستخدم جميع بنيات وحدة المعالجة المركزية تقريبًا كمية صغيرة من الذاكرة غير المشتركة السريعة جدًا والمعروفة باسم ذاكرة التخزين المؤقت لاستغلال موقع المرجع في عمليات الوصول إلى الذاكرة. مع NUMA، فإن الحفاظ على تماسك ذاكرة التخزين المؤقت عبر الذاكرة المشتركة له تكلفة إضافية كبيرة. على الرغم من أن أنظمة NUMA غير المتماسكة مع ذاكرة التخزين المؤقت أسهل في التصميم والبناء، إلا أنها تصبح معقدة للغاية للبرمجة في نموذج برمجة بنية فون نيومان القياسي . [8]

عادةً، يستخدم ccNUMA الاتصال بين المعالجات بين وحدات تحكم ذاكرة التخزين المؤقت للحفاظ على صورة ذاكرة متسقة عندما تخزن أكثر من ذاكرة تخزين مؤقتة نفس موقع الذاكرة. لهذا السبب، قد يعمل ccNUMA بشكل سيئ عندما تحاول معالجات متعددة الوصول إلى نفس منطقة الذاكرة في تتابع سريع. يحاول دعم NUMA في أنظمة التشغيل تقليل تكرار هذا النوع من الوصول من خلال تخصيص المعالجات والذاكرة بطرق صديقة لـ NUMA وتجنب خوارزميات الجدولة والقفل التي تجعل الوصول غير الصديق لـ NUMA ضروريًا. [9]

بدلاً من ذلك، تحاول بروتوكولات تماسك ذاكرة التخزين المؤقت مثل بروتوكول MESIF تقليل الاتصالات المطلوبة للحفاظ على تماسك ذاكرة التخزين المؤقت. واجهة التماسك القابلة للتطوير (SCI) هي معيار IEEE يحدد بروتوكول تماسك ذاكرة التخزين المؤقت القائم على الدليل لتجنب قيود التوسع الموجودة في أنظمة المعالجات المتعددة السابقة. على سبيل المثال، يتم استخدام واجهة التماسك القابلة للتطوير كأساس لتقنية NumaConnect. [10] [11]

NUMA مقابل الحوسبة العنقودية

يمكن للمرء أن ينظر إلى NUMA كشكل مقترن بإحكام من الحوسبة العنقودية . إن إضافة ترقيم الذاكرة الافتراضية إلى بنية العنقود يمكن أن يسمح بتنفيذ NUMA بالكامل في البرنامج. ومع ذلك، فإن زمن انتقال البيانات بين العقد في NUMA المستندة إلى البرنامج يظل أكبر بعدة أوامر من حيث الحجم (أبطأ) من زمن انتقال NUMA المستند إلى الأجهزة. [2]

دعم البرمجيات

نظرًا لأن NUMA يؤثر بشكل كبير على أداء الوصول إلى الذاكرة، فمن الضروري إجراء تحسينات معينة للبرامج للسماح بجدولة الخيوط والعمليات بالقرب من بياناتها الموجودة في الذاكرة.

  • أضافت أنظمة التشغيل Microsoft Windows 7 و Windows Server 2008 R2 الدعم لهندسة NUMA لأكثر من 64 نواة منطقية. [12]
  • أضافت Java 7 دعمًا لمخصص الذاكرة ومجمع القمامة المتوافق مع NUMA . [13]
  • نواة لينكس :
    • قدم الإصدار 2.5 دعمًا أساسيًا لـ NUMA، [14] والذي تم تحسينه بشكل أكبر في إصدارات النواة اللاحقة.
    • جلب الإصدار 3.8 من نواة Linux أساسًا جديدًا لـ NUMA والذي سمح بتطوير سياسات NUMA أكثر كفاءة في إصدارات النواة اللاحقة. [15] [16]
    • جلبت النسخة 3.13 من نواة لينكس العديد من السياسات التي تهدف إلى وضع عملية بالقرب من ذاكرتها، جنبًا إلى جنب مع التعامل مع حالات مثل مشاركة صفحات الذاكرة بين العمليات، أو استخدام صفحات ضخمة شفافة؛ تسمح إعدادات sysctl الجديدة بتمكين أو تعطيل موازنة NUMA، بالإضافة إلى تكوين معلمات موازنة ذاكرة NUMA المختلفة. [17] [18] [19]
  • يقوم OpenSolaris بإنشاء نماذج لهندسة NUMA باستخدام lgroups.
  • أضاف FreeBSD دعمًا لهندسة NUMA في الإصدار 9.0. [20]
  • دعم Silicon Graphics IRIX (تم إيقافه اعتبارًا من عام 2021) لهندسة ccNUMA على وحدة المعالجة المركزية 1240 مع سلسلة خادم Origin.

دعم الأجهزة

اعتبارًا من عام 2011، أصبحت أنظمة ccNUMA أنظمة متعددة المعالجات تعتمد على معالج AMD Opteron ، والذي يمكن تنفيذه بدون منطق خارجي، ومعالج Intel Itanium ، والذي يتطلب من مجموعة الشرائح دعم NUMA. ومن أمثلة مجموعات الشرائح التي تدعم ccNUMA SGI Shub (Super hub)، وIntel E8870، و HP sx2000 (المستخدمة في خوادم Integrity وSuperdome)، وتلك الموجودة في أنظمة NEC المستندة إلى Itanium. كانت أنظمة ccNUMA السابقة مثل تلك من Silicon Graphics تعتمد على معالجات MIPS ومعالج DEC Alpha 21364 (EV7).

انظر أيضا

مراجع

  1. ^ هذه المقالة مبنية على مادة مأخوذة من Non-uniform+memory+access في القاموس المجاني عبر الإنترنت للحوسبة قبل 1 نوفمبر 2008 وتم دمجها بموجب شروط "إعادة الترخيص" في GFDL ، الإصدار 1.3 أو الأحدث.
  2. ^ من تأليف ناكول مانشاندا؛ كاران أناند (2010-05-04). "الوصول غير المنتظم للذاكرة (NUMA)" (PDF) . جامعة نيويورك. مؤرشف من الأصل (PDF) في 2013-12-28 . تم الاسترجاع في 2014-01-27 .
  3. ^ سيرجي بلاجودوروف. سيرجي جورافليف؛ محمد دشتي؛ الكسندرا فيدوروف (2011/05/02). "حالة لإدارة التنافس المدرك لـ NUMA على الأنظمة متعددة النواة" (PDF) . جامعة سيمون فريزر . تم الاسترجاع 2014/01/27 .
  4. ^ ab Zoltan Majo; Thomas R. Gross (2011). "Memory System Performance in a NUMA Multicore Multiprocessor" (PDF) . ACM. مؤرشف من الأصل (PDF) في 2013-06-12 . تم الاسترجاع في 2014-01-27 .
  5. ^ "ورقة بحثية حول بنية ذاكرة DDR ثنائية القناة من Intel" (PDF) (الطبعة 1.0). Infineon Technologies North America وKingston Technology. سبتمبر 2003. مؤرشف من الأصل (PDF، 1021  كيلوبايت ) في 2011-09-29 . تم الاسترجاع في 2007-09-06 .
  6. ^ Intel Corp. (2008). Intel QuickPath Architecture [White paper]. تم الاسترجاع من http://www.intel.com/pressroom/archive/reference/whitepaper_QuickPath.pdf
  7. ^ شركة إنتل. (18 سبتمبر 2007). جيلسنجر يتحدث إلى شركة إنتل والصناعات التكنولوجية المتقدمة في مجال التكنولوجيا السريعة [بيان صحفي]. مأخوذ من http://www.intel.com/pressroom/archive/releases/2007/20070918corp_b.htm
  8. ^ "ccNUMA: Cache Coherent Non-Uniform Memory Access". slideshare.net. 2014. تم الاسترجاع في 2014-01-27 .
  9. ^ بير ستينستروم؛ ترومان جو؛ أنوب جوبتا (2002). "تقييم الأداء المقارن لهياكل NUMA وCOMA المتماسكة مع ذاكرة التخزين المؤقت" (PDF) . ACM . تم الاسترجاع في 2014-01-27 .
  10. ^ David B. Gustavson (سبتمبر 1991). "The Scalable Coherent Interface and Related Standards Projects" (PDF) . SLAC Publication 5656. Stanford Linear Accelerator Center . مؤرشف من الأصل (PDF) في 2022-10-09 . تم الاسترجاع في 27 يناير 2014 .
  11. ^ "تتيح شريحة NumaChip تخزين ذاكرة مشتركة متماسكة ومنخفضة التكلفة". Numascale.com. مؤرشف من الأصل في 2014-01-22 . تم الاسترجاع في 2014-01-27 .
  12. ^ دعم NUMA (MSDN)
  13. ^ تحسينات أداء Java HotSpot Virtual Machine
  14. ^ "جهود توسيع نطاق لينكس: الصفحة الرئيسية لمجموعة NUMA". SourceForge.net . 2002-11-20 . تم الاسترجاع في 2014-02-06 .
  15. ^ "Linux kernel 3.8, Section 1.8. Automatic NUMA balancing". kernelnewbies.org . 2013-02-08 . تم الاسترجاع في 2014-02-06 .
  16. ^ جوناثان كوربيت (2012-11-14). "NUMA في عجلة من أمرنا". LWN.net . تم الاسترجاع في 2014-02-06 .
  17. ^ "Linux kernel 3.13, Section 1.6. Improved performance in NUMA systems". kernelnewbies.org . 2014-01-19 . تم الاسترجاع في 2014-02-06 .
  18. ^ "توثيق نواة لينكس: Documentation/sysctl/kernel.txt". kernel.org . تم الاسترجاع في 2014-02-06 .
  19. ^ جوناثان كوربيت (2013-10-01). "تقدم جدولة NUMA". LWN.net . تم الاسترجاع في 2014-02-06 .
  20. ^ "numa(4)". www.freebsd.org . تم الاسترجاع في 2020-12-03 .
  • الأسئلة الشائعة حول NUMA
  • الذاكرة المشتركة الموزعة على أساس الصفحة
  • مشروع OpenSolaris NUMA
  • فيديو تعريفي لهندسة نظام Alpha EV7
  • المزيد من الفيديوهات المتعلقة بأنظمة EV7: وحدة المعالجة المركزية، ووحدة الإدخال والإخراج، وما إلى ذلك
  • تحسين NUMA في تطبيقات Windows
  • دعم NUMA في Linux في SGI
  • إنتل توكويلا
  • شرح Intel QPI (CSI)
  • أنظمة Itanium NUMA الحالية
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=الوصول_غير_الموحد_للذاكرة&oldid=1239320007"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate