บนสถาปัตยกรรม x86 เหตุใดจึงมีบิตน้อยกว่าสำหรับพื้นที่ที่อยู่เสมือนมากกว่าจริง


11

ผมอ่านนี้บทความเกี่ยวกับคอมพิวเตอร์ 64 บิตและกล่าวถึง:

ตัวอย่างเช่นสถาปัตยกรรม AMD64 ณ ปี 2011 ได้รับอนุญาต 52 บิตสำหรับหน่วยความจำกายภาพและ 48 บิตสำหรับหน่วยความจำเสมือน

ฉันคิดว่ามันจะสมเหตุสมผลกว่าที่จะอนุญาตให้มีหน่วยความจำเสมือนมากกว่าหน่วยความจำกายภาพดังนั้นทำไมมันจึงเป็นอย่างนั้นจริง ๆ

คำถามโบนัส: "อนุญาต" สำหรับ 52 หรือ 48 บิตในสถาปัตยกรรม 64 บิตหมายความว่าอย่างไร บิตอื่น ๆ ใช้ทำอะไร?


สำหรับ x86 บิต VA ที่ไม่ได้ใช้จะต้องเป็นส่วนขยายสัญญาณของ MSbit ของ VA (ARM AArch64 ให้ตัวเลือกในการอนุญาตให้ 8 MSbits ถูกละเว้นโดยฮาร์ดแวร์เพื่อให้สามารถใช้งานได้สะดวกสำหรับแท็กโปรเซสเซอร์ Azul Systems Vega - ส่วนหนึ่งของอุปกรณ์ Java - ใช้บิต 16 บิตของ VA สำหรับแท็ก) ในตารางหน้าบิต PA ที่สงวนไว้ต้องเป็นศูนย์ (ส่วนใหญ่เพื่อให้แน่ใจว่าซอฟต์แวร์จะไม่พยายามใช้และแบ่งความเข้ากันได้กับฮาร์ดแวร์ในภายหลัง)
Paul A. Clayton

คำตอบ:


11

นี่คือรูปภาพของตารางหน้า AMD64 (จากคู่มือของ AMD Architecture Programmer, Vol. 2, Rev 3.23, 2013, หน้า 132)

ตารางหน้า AMD64 Longmode

ขนาด "เป็นธรรมชาติ" ของเพจในสถาปัตยกรรม AMD64 คือ 2 12 = 4096 ไบต์ (มีโหมดที่คุณสามารถมี 2 21 = 2Mbyte เพจได้ แต่เราจะเพิกเฉยต่อตอนนี้)

รายการ Page-Table (PTE) แต่ละรายการ (หรือขึ้นอยู่กับระดับที่เรียกว่า PDE, PDPE หรือ PML4E) คือ 64 bits = 2 3ไบต์ ดังนั้นจึงมี 2 9รายการต่อหน้า ดังนั้นตารางหน้า 4 ระดับทำให้คุณได้รับ 4x9 + 12 = 48 บิตของที่อยู่เสมือนต่อกระบวนการ การเดินตารางหน้ามีราคาแพงดังนั้นพวกเขาจะไม่ขยายเป็น 5 หรือ 6 ระดับเว้นแต่ / จนกว่าจะมีความต้องการของผู้บริโภค

ฉันไม่แน่ใจว่าทำไมพวกเขาจึงตัดสินใจ จำกัด ที่อยู่จริง 52 บิต สิ่งนี้สามารถขยายได้ถึง 63 บิตในอนาคต ในเดือนตุลาคม 2013 ราคา (ประมาณ 1US $ / กิกะบิตสำหรับชิป 4Gbit) จะมีราคาสูงกว่า 32,000,000.00 ดอลลาร์สหรัฐเพื่อสร้างหน่วยความจำ2 52ไบต์ดังนั้นจะต้องรอสักครู่ก่อนที่จะมีความต้องการเพิ่มขีด จำกัด ที่อยู่จริง มีสาเหตุหลายประการที่คุณต้องการให้ที่อยู่ทางกายภาพมีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ตัวอย่างเช่นแท็ก TLB และแคชต้องเก็บที่อยู่ทางกายภาพไว้

ไม่จำเป็นต้องย้อนกลับว่ามีหน่วยความจำกายภาพมากกว่าเสมือน หน่วยความจำเสมือนเป็นต่อกระบวนการในขณะที่หน่วยความจำกายภาพที่ใช้ร่วมกันโดยกระบวนการทั้งหมด ดังนั้นเซิร์ฟเวอร์ที่มีที่อยู่เสมือน 48- บิตและหน่วยความจำ2 52ไบต์สามารถรองรับกระบวนการที่เกิดขึ้นพร้อมกัน 16 กระบวนการและยังรับประกันว่าไม่จำเป็นต้องสลับ


อาจเป็นเรื่องที่น่าสังเกตว่าสถาปนิกคอมพิวเตอร์ได้เรียนรู้ที่จะต้องใช้บิตส่วนบนเพื่อใช้งานโดยฮาร์ดแวร์โดยปกติแล้วการขยายสัญญาณเพื่อให้เหมาะกับการใช้งานทั่วไปของที่อยู่เชิงลบสำหรับระบบปฏิบัติการ ("บิตอื่น ๆ นอกจากนี้ด้วยการแคชรายการ Ln ไดเรกทอรีตาราง 5 ระดับจึงไม่จำเป็นต้องเดินเกือบตลอดเวลา PTE bits 52:62 สงวนไว้สำหรับซอฟต์แวร์ดังนั้นจึงไม่สามารถใช้สำหรับที่อยู่ทางกายภาพโดยไม่ทำลายความเข้ากันได้ จำกัด หน้า 4KiB เป็น 52 บิตของ PA นอกจากนี้ Linus Torvalds โกรธกับชื่อเสียง PAE (VA> PA ดูเหมือนว่าจะลดความซับซ้อนของการออกแบบระบบปฏิบัติการ "ดั้งเดิม")
Paul A. Clayton

"สิ่งนี้สามารถขยายได้ถึง 63 บิตในอนาคต" ดีไม่ไม่ไม่เปลี่ยนโครงสร้างตารางหน้า เนื่องจากเป็นบิต 52 ถึง 62 ของ PxE ที่สงวนไว้สำหรับการใช้งานระบบปฏิบัติการ และระบบปฏิบัติการกำลังใช้งานอยู่ (Windows ใช้ฟิลด์นั้นสำหรับ "ดัชนีรายการชุดการทำงาน") ดังนั้นสถาปนิกโปรเซสเซอร์ไม่สามารถขยายฟิลด์ PFN ได้ฟรี แน่นอนว่ามันจะเป็นไปได้ที่จะมีตัวเลือกที่เหมือน PAE ในอนาคตที่จะเปลี่ยนโครงสร้าง PT เพื่อให้บิต PFN เพิ่มขึ้น แต่นั่นจะเป็นการเปลี่ยนแปลงทางสถาปัตยกรรมที่สำคัญ
เจมี่ Hanrahan

3

จุดที่ควรพิจารณาทางกายภาพ RAM มีราคาแพง แน่นอนว่า 16 GB นั้นถูกกว่าตอนนี้ที่ 4GB เพียงไม่กี่ปีที่ผ่านมา แต่ 2 ^ 64 (16 exabytes) มีขนาดใหญ่มาก

ดังนั้นส่วนขยายของเอเอ็มดี x86 สำหรับ x64 "อนุญาต" ถึง 2 ^ 52 โดยการ จำกัด การลงทะเบียน สิ่งนี้ทำสองสิ่งลดค่าใช้จ่ายของโปรเซสเซอร์และปรับปรุงประสิทธิภาพ การลงทะเบียนเพิ่มเติมที่ไม่ได้ใช้หมายความว่ามีพื้นที่ว่างจำนวนมากที่ยังต้องนำมาพิจารณาในระหว่างการดำเนินการ

และในกรณีที่คุณไม่ใช่คนคณิตศาสตร์ ... ความแตกต่างระหว่างสามขนาดนั้นใหญ่มาก! ฉันไม่ใช่กูรูทางคณิตศาสตร์ แต่ด้วยทศนิยม 52 บิตคิดเป็น 0.02% จาก 64 บิต 48 บิตคือ 6% ของ 52 (มีคนตรวจสอบคณิตศาสตร์ของฉัน?)

สำหรับสาเหตุที่เอเอ็มดียอมให้ฟิสิคัลแรมเป็นเสมือนจริงบทความระบุว่าเป็นเพราะเอเอ็มดีกำลังคิดถึงเซิร์ฟเวอร์ เซิร์ฟเวอร์ต้องการ RAM จริงจำนวนมาก Virtual RAM ช้าเกินไปที่จะรองรับแอพพลิเคชันเซิร์ฟเวอร์โดยเฉลี่ยสำหรับพนักงานหลายร้อยหรือหลายพันคน

ความคิดของฉัน: เราเหลือเวลาเมื่อ RAM มีขนาดเล็กและฮาร์ดไดรฟ์ต้องรองรับ RAM ราคาใน RAM ลดลงถึงจุดที่บุคคลทั่วไปสามารถใส่ RAM ได้มากกว่าเพียงพอ ใช้แอปพลิเคชันทั่วไปเช่น Office ที่ต้องการ RAM ขนาด 1-2GB คอมพิวเตอร์ของฉัน 7 ปีที่แล้วสามารถจัดการได้ แม้ว่าจะมีความเร็วในการอ่านและเขียนไปยังดิสก์ฉันหวังว่าฉันจะไม่ต้องเรียกไฟล์ 7GB จากหน่วยความจำเสมือน (ใช้ปรัชญา PM * 2.5 เก่า)

ฉันสามารถสันนิษฐานได้ว่า AMD ต้องการออกจากห้องสำหรับการลงทะเบียนที่ใช้การลงทะเบียน RAM จริงเช่น RAM บน GPU ในตัว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.