เพื่อตอบคำถามเดิม: ไม่จำเป็นต้องเพิ่ม PA มากกว่า 48 บิต
เซิร์ฟเวอร์ต้องการหน่วยความจำสูงสุดดังนั้นเรามาลองขุดลึกลงไป
1) การกำหนดค่าเซิร์ฟเวอร์ที่ใหญ่ที่สุด (ที่ใช้กันทั่วไป) คือระบบ 8 Socket ระบบ 8S ไม่ใช่อะไรนอกจาก 8 Server CPU ที่เชื่อมต่อกันด้วยการเชื่อมต่อระหว่างกันความเร็วสูง (หรือเรียกง่ายๆว่า "บัส" ความเร็วสูง) เพื่อสร้างโหนดเดียว มีคลัสเตอร์ขนาดใหญ่อยู่ที่นั่น แต่มีอยู่ไม่มากนักเรากำลังพูดถึงการกำหนดค่าที่ใช้กันทั่วไปที่นี่ โปรดทราบว่าในโลกแห่งความเป็นจริงระบบ 2 Socket เป็นหนึ่งในเซิร์ฟเวอร์ที่ใช้กันมากที่สุดและโดยทั่วไปแล้ว 8S ถือว่าสูงมาก
2) ประเภทหน่วยความจำหลักที่เซิร์ฟเวอร์ใช้ ได้แก่ หน่วยความจำ DRAM ปกติที่สามารถแอดเดรสแบบไบต์ (เช่นหน่วยความจำ DDR3 / DDR4), Memory Mapped IO - MMIO (เช่นหน่วยความจำที่ใช้โดยการ์ดเพิ่มเติม) และ Configuration Space ที่ใช้ในการกำหนดค่า อุปกรณ์ที่มีอยู่ในระบบ หน่วยความจำประเภทแรกคือหน่วยความจำที่ใหญ่ที่สุด (และด้วยเหตุนี้จึงต้องการบิตแอดเดรสจำนวนมากที่สุด) เซิร์ฟเวอร์ระดับไฮเอนด์บางตัวใช้ MMIO จำนวนมากเช่นกันขึ้นอยู่กับการกำหนดค่าที่แท้จริงของระบบ
3) สมมติว่า CPU ของเซิร์ฟเวอร์แต่ละตัวสามารถรองรับ DDR4 DIMM ได้ 16 ตัวในแต่ละสล็อต ด้วยขนาดสูงสุด DDR4 DIMM 256GB (ขึ้นอยู่กับเวอร์ชันของเซิร์ฟเวอร์จำนวน DIMM ที่เป็นไปได้ต่อซ็อกเก็ตนี้จริง ๆ แล้วน้อยกว่า 16 DIMM แต่อ่านต่อไปเพื่อประโยชน์ของตัวอย่าง)
ดังนั้นแต่ละซ็อกเก็ตในทางทฤษฎีสามารถมี 16 * 256GB = 4096GB = 4 TB สำหรับระบบ 8S ตัวอย่างของเราขนาด DRAM สามารถมีขนาดได้สูงสุด 4 * 8 = 32 TB ซึ่งหมายความว่าจำนวนบิตสูงสุดที่จำเป็นในการจัดการกับพื้นที่ DRAM นี้คือ 45 (= log2 32TB / log2 2)
เราจะไม่เข้าไปดูรายละเอียดของหน่วยความจำประเภทอื่น ๆ (MMIO, MMCFG และอื่น ๆ ) แต่ประเด็นก็คือหน่วยความจำประเภทที่ "ต้องการ" มากที่สุดสำหรับระบบซ็อกเก็ต 8 ตัวที่มี DDR4 DIMM ประเภทใหญ่ที่สุดในปัจจุบัน (256 GB DIMM) ใช้เพียง 45 บิต
สำหรับระบบปฏิบัติการที่รองรับ 48 บิต (เช่น WS16) จะมี (48-45 =) เหลือ 3 บิต ซึ่งหมายความว่าถ้าเราใช้ 45 บิตที่ต่ำกว่าเพียงอย่างเดียวสำหรับ 32TB ของ DRAM เราจะยังมีหน่วยความจำแอดเดรส 2 ^ 3 เท่าซึ่งสามารถใช้กับ MMIO / MMCFG สำหรับพื้นที่แอดเดรสทั้งหมด 256 TB
ดังนั้นเพื่อสรุป: 1) ที่อยู่ทางกายภาพ 48 บิตเป็นบิตจำนวนมากเพื่อรองรับระบบที่ใหญ่ที่สุดในปัจจุบันซึ่ง "โหลดเต็มที่" ด้วย DDR4 จำนวนมากและยังมีอุปกรณ์ IO อื่น ๆ อีกมากมายที่ต้องการพื้นที่ MMIO 256TB เป็นที่แน่นอน
โปรดทราบว่าพื้นที่แอดเดรส 256TB นี้ (= 48 บิตของที่อยู่จริง) ไม่รวมดิสก์ไดรฟ์ใด ๆ เช่นไดรฟ์ SATA เนื่องจากไม่ได้เป็นส่วนหนึ่งของแอดเดรสแมปจึงรวมเฉพาะหน่วยความจำที่แอดเดรสแอดเดรสแบบไบต์และเปิดเผยกับระบบปฏิบัติการ
2) ฮาร์ดแวร์ของ CPU อาจเลือกใช้ 46, 48 หรือ> 48 บิตขึ้นอยู่กับรุ่นของเซิร์ฟเวอร์ แต่อีกปัจจัยที่สำคัญคือระบบปฏิบัติการรับรู้ได้กี่บิต วันนี้ WS16 รองรับที่อยู่จริง 48 บิต (= 256 TB)
สิ่งนี้หมายถึงผู้ใช้แม้ว่าจะมี CPU เซิร์ฟเวอร์ขนาดใหญ่ที่ทันสมัยเป็นพิเศษซึ่งสามารถรองรับการกำหนดแอดเดรส> 48 บิตหากคุณใช้ระบบปฏิบัติการที่รองรับ PA 48 บิตคุณก็สามารถใช้ประโยชน์จาก 256 TB เท่านั้น .
3) สรุปแล้วมีสองปัจจัยหลักในการใช้ประโยชน์จากจำนวนบิตแอดเดรสที่สูงขึ้น (= ความจุหน่วยความจำมากขึ้น)
ก) CPU HW ของคุณรองรับกี่บิต? (สามารถกำหนดได้โดยคำสั่ง CPUID ใน CPU ของ Intel)
b) คุณใช้ระบบปฏิบัติการเวอร์ชันใดและมีกี่บิตของ PA ที่รู้จัก / รองรับ
ขั้นต่ำของ (a, b) จะกำหนดจำนวนพื้นที่แอดเดรสที่ระบบของคุณสามารถใช้ประโยชน์ได้ในท้ายที่สุด
ฉันเขียนคำตอบนี้โดยไม่ได้ดูคำตอบอื่น ๆ โดยละเอียด นอกจากนี้ฉันยังไม่ได้เจาะลึกรายละเอียดเกี่ยวกับความแตกต่างของ MMIO, MMCFG และการสร้างแผนที่ที่อยู่ทั้งหมด แต่ฉันหวังว่านี่จะช่วยได้
ขอขอบคุณ Anand K Enamandram สถาปนิกแพลตฟอร์มเซิร์ฟเวอร์ Intel Corporation