กลับไปหน้าบทความ

อ่าน 5 นาที

การเข้าถึงหน่วยความจำที่ไม่สม่ำเสมอ

การเข้าถึงหน่วยความจำแบบไม่สม่ำเสมอ ( NUMA ) เป็นการ ออกแบบ หน่วยความจำคอมพิวเตอร์ ที่ใช้ใน การประมวลผลแบบหลายโปรเซสเซอร์...

การเข้าถึงหน่วยความจำที่ไม่สม่ำเสมอ

เมนบอร์ดของ เวิร์กสเตชัน HP Z820มีซ็อกเก็ต CPU สองซ็อกเก็ต โดยแต่ละซ็อกเก็ตมี สล็อต DIMM จำนวนแปด สล็อตล้อมรอบซ็อกเก็ตอยู่

การเข้าถึงหน่วยความจำแบบไม่สม่ำเสมอ ( NUMA ) เป็นการ ออกแบบ หน่วยความจำคอมพิวเตอร์ที่ใช้ในการประมวลผลแบบหลายโปรเซสเซอร์โดยเวลาในการเข้าถึงหน่วยความจำจะขึ้นอยู่กับตำแหน่งของหน่วยความจำที่สัมพันธ์กับโปรเซสเซอร์ ภายใต้ NUMA โปรเซสเซอร์สามารถเข้าถึงหน่วยความจำเฉพาะที่ ของตนเอง ได้เร็วกว่าหน่วยความจำที่ไม่ใช่เฉพาะที่ (หน่วยความจำเฉพาะที่ของโปรเซสเซอร์อื่นหรือหน่วยความจำที่ใช้ร่วมกันระหว่างโปรเซสเซอร์) [ 1 ] NUMA มีประโยชน์สำหรับภาระงานที่มีความใกล้เคียงของการอ้างอิงหน่วย ความจำสูง และการแย่งชิงการล็อก ต่ำ เนื่องจากโปรเซสเซอร์อาจทำงานกับชุดย่อยของหน่วยความจำส่วนใหญ่หรือทั้งหมดภายในโหนดแคชของตนเอง ซึ่งช่วยลดปริมาณการรับส่งข้อมูลบนบัสหน่วยความจำ[ 2 ]

สถาปัตยกรรม NUMA นั้นพัฒนาต่อยอดมาจาก สถาปัตยกรรม มัลติโปรเซสซิ่งแบบสมมาตร (SMP) อย่างมีเหตุผล โดยได้รับการพัฒนาในเชิงพาณิชย์ในช่วงทศวรรษ 1990 โดย บริษัทต่างๆ เช่น 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 มาใช้ในเชิงพาณิชย์ครั้งแรกคือตระกูลเซิร์ฟเวอร์ Symmetrical Multi Processing XPS-100 ซึ่งออกแบบโดย Dan Gielan จาก VAST Corporation สำหรับHoneywell Information Systems Italy

ภาพรวม

สถาปัตยกรรมที่เป็นไปได้แบบหนึ่งของระบบ NUMA คือ โปรเซสเซอร์เชื่อมต่อกับบัสหรือครอสบาร์โดยใช้การเชื่อมต่อที่มีจำนวนแตกต่างกัน ซึ่งแสดงให้เห็นว่า CPU แต่ละตัวมีลำดับความสำคัญในการเข้าถึงหน่วยความจำที่แตกต่างกันไปตามตำแหน่งสัมพัทธ์ของพวกมัน

ซีพียูสมัยใหม่ทำงานได้เร็วกว่าหน่วยความจำหลักที่ใช้มาก ในยุคแรกเริ่มของการคำนวณและการประมวลผลข้อมูล ซีพียูโดยทั่วไปทำงานช้ากว่าหน่วยความจำของตัวเอง ประสิทธิภาพของโปรเซสเซอร์และหน่วยความจำมาบรรจบกันในช่วงทศวรรษ 1960 พร้อมกับการถือกำเนิดของซูเปอร์คอมพิวเตอร์เครื่อง แรก นับตั้งแต่นั้นมา ซีพียูพบว่าตัวเอง "ขาดแคลนข้อมูล" มากขึ้นเรื่อย ๆ และถูกบังคับให้หยุดชะงักเพื่อรอข้อมูลจากหน่วยความจำ (เช่น สำหรับคอมพิวเตอร์ที่ใช้สถาปัตยกรรม Von-Neumann โปรดดู ที่ปัญหาคอขวดของ Von Neumann ) การออกแบบซูเปอร์คอมพิวเตอร์จำนวนมากในช่วงทศวรรษ 1980 และ 1990 มุ่งเน้นไปที่การเข้าถึงหน่วยความจำความเร็วสูงมากกว่าโปรเซสเซอร์ที่เร็วขึ้น ทำให้คอมพิวเตอร์สามารถทำงานกับชุดข้อมูลขนาดใหญ่ด้วยความเร็วที่ระบบอื่นทำไม่ได้

การจำกัดจำนวนการเข้าถึงหน่วยความจำถือเป็นกุญแจสำคัญในการดึงประสิทธิภาพสูงจากคอมพิวเตอร์สมัยใหม่ สำหรับโปรเซสเซอร์ทั่วไป นั่นหมายถึงการติดตั้งหน่วยความจำแคช ความเร็วสูงจำนวนมากขึ้นเรื่อยๆ และใช้อัลกอริธึมที่ซับซ้อนมากขึ้นเรื่อยๆ เพื่อหลีกเลี่ยงการพลาดแคชแต่การเพิ่มขนาดอย่างมากของทั้งระบบปฏิบัติการและแอปพลิเคชันที่ทำงานบนระบบเหล่านั้นโดยทั่วไปแล้วทำให้การปรับปรุงการประมวลผลแคชเหล่านี้ล้มเหลว ระบบมัลติโปรเซสเซอร์ที่ไม่มี 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

สถาปัตยกรรม CPU เกือบทั้งหมดใช้หน่วยความจำที่ไม่ใช้ร่วมกันขนาดเล็กที่มีความเร็วสูงมากที่เรียกว่าแคชเพื่อใช้ประโยชน์จากความใกล้เคียงของการอ้างอิงในการเข้าถึงหน่วยความจำ ด้วย NUMA การรักษาความสอดคล้องของแคชในหน่วยความจำที่ใช้ร่วมกันมีค่าใช้จ่ายสูงมาก แม้ว่าจะออกแบบและสร้างได้ง่ายกว่า แต่ระบบ NUMA ที่ไม่สอดคล้องของแคชกลับมีความซับซ้อนมากเกินไปที่จะเขียนโปรแกรมในรูปแบบการเขียนโปรแกรมสถาปัตยกรรม von Neumann มาตรฐาน [ 8 ]

โดยทั่วไป ccNUMA ใช้การสื่อสารระหว่างโปรเซสเซอร์ระหว่างตัวควบคุมแคชเพื่อรักษาภาพหน่วยความจำที่สอดคล้องกันเมื่อแคชมากกว่าหนึ่งตัวจัดเก็บตำแหน่งหน่วยความจำเดียวกัน ด้วยเหตุนี้ ccNUMA อาจทำงานได้ไม่ดีเมื่อโปรเซสเซอร์หลายตัวพยายามเข้าถึงพื้นที่หน่วยความจำเดียวกันอย่างรวดเร็ว การสนับสนุน NUMA ในระบบปฏิบัติการพยายามลดความถี่ของการเข้าถึงประเภทนี้โดยการจัดสรรโปรเซสเซอร์และหน่วยความจำในลักษณะที่เป็นมิตรกับ NUMA และโดยการหลีกเลี่ยงอัลกอริทึมการจัดกำหนดการและการล็อกที่ทำให้การเข้าถึงที่ไม่เป็นมิตรกับ NUMA เป็นสิ่งจำเป็น[ 9 ]

อีกทางเลือกหนึ่ง โปรโตคอลความสอดคล้องของแคช เช่นโปรโตคอล MESIFพยายามลดการสื่อสารที่จำเป็นในการรักษาความสอดคล้องของแคชScalable Coherent Interface (SCI) เป็น มาตรฐาน IEEEที่กำหนดโปรโตคอลความสอดคล้องของแคชแบบอิงตามไดเร็กทอรีเพื่อหลีกเลี่ยงข้อจำกัดด้านความสามารถในการปรับขนาดที่พบในระบบมัลติโปรเซสเซอร์รุ่นก่อนๆ ตัวอย่างเช่น SCI ถูกใช้เป็นพื้นฐานสำหรับเทคโนโลยี 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 ]ซึ่งได้รับการปรับปรุงเพิ่มเติมในเวอร์ชันเคอร์เนลที่ตามมา
    • เคอร์เนล Linux เวอร์ชัน 3.8 นำเสนอพื้นฐาน NUMA ใหม่ที่ช่วยให้สามารถพัฒนานโยบาย NUMA ที่มีประสิทธิภาพมากขึ้นในเคอร์เนลเวอร์ชันต่อๆ มา[ 15 ] [ 16 ]
    • เคอร์เนล Linux เวอร์ชัน 3.13 นำเสนอนโยบายมากมายที่มุ่งเน้นการวางกระบวนการไว้ใกล้กับหน่วยความจำ พร้อมกับการจัดการกรณีต่างๆ เช่น การใช้หน้าหน่วยความจำร่วมกันระหว่างกระบวนการ หรือการใช้หน้าหน่วยความจำขนาดใหญ่ แบบโปร่งใส การตั้งค่า sysctlใหม่ช่วยให้สามารถเปิดหรือปิดใช้งานการปรับสมดุล NUMA ได้ รวมถึงการกำหนดค่าพารามิเตอร์การปรับสมดุลหน่วยความจำ NUMA ต่างๆ[ 17 ] [ 18 ] [ 19 ]
  • OpenSolarisจำลองสถาปัตยกรรม NUMA ด้วย lgroups
  • FreeBSDเพิ่มการสนับสนุนสถาปัตยกรรม NUMA ในเวอร์ชัน 9.0 [ 20 ]
  • Silicon Graphics IRIX (เลิกผลิตแล้วตั้งแต่ปี 2013) รองรับสถาปัตยกรรม 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)

ดูเพิ่มเติม

  • วิดีโอเพิ่มเติมที่เกี่ยวข้องกับระบบ EV7: CPU, IO เป็นต้น
  • อินเทล ทูควีลา
  • คำอธิบายเกี่ยวกับ Intel QPI (CSI)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Non-uniform_memory_access&oldid=1351490301 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเข้าถึงหน่วยความจำที่ไม่สม่ำเสมอ

การเข้าถึงหน่วยความจำแบบไม่สม่ำเสมอ ( NUMA ) เป็นการ ออกแบบ หน่วยความจำคอมพิวเตอร์ ที่ใช้ใน การประมวลผลแบบหลายโปรเซสเซอร์...

ภาพรวม

ซีพียูสมัยใหม่ทำงานได้เร็วกว่าหน่วยความจำหลักที่ใช้มาก ในยุคแรกเริ่มของการคำนวณและการประมวลผลข้อมูล ซีพียูโดยทั่วไปทำงานช้ากว่าหน่วยความจำของตัวเอง ประสิทธิภาพของโปรเซสเซอร์และหน่วยความจำมาบรรจบกันในช่วงทศวรรษ 1960 พร้อมกับการถือกำเนิดของ...

การนำไปใช้

AMD นำ NUMA มาใช้กับ โปรเซสเซอร์ Opteron (2003) โดยใช้HyperTransport Intel ประกาศ ความเข้ากันได้ของ NUMA สำหรับเซิร์ฟเวอร์ x86 และ Itanium ในช่วงปลายปี 2007 ด้วยซีพียู Nehalem และ Tukwila [ 6 ] ซีพียูตระกูล Intel ทั้งสองตระกูลใช้ ชิปเซ็ต...

แคช NUMA ที่สอดคล้องกัน (ccNUMA)

สถาปัตยกรรม CPU เกือบทั้งหมดใช้หน่วยความจำที่ไม่ใช้ร่วมกันขนาดเล็กที่มีความเร็วสูงมากที่เรียกว่า แคช เพื่อใช้ประโยชน์ จากความใกล้เคียงของการอ้างอิง ในการเข้าถึงหน่วยความจำ ด้วย NUMA การรักษา ความสอดคล้องของแคช ในหน่วยความจำที่ใช้ร่วมกันมีค่าใช้จ่ายสูงมาก...