บนสถาปัตยกรรม 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.