ตามกฎทั่วไปพวกเขาทำไม่ได้ จำเป็นต้อง เพื่อแบ่งปันพื้นที่ที่อยู่เดียวกัน การแยกพื้นที่ที่อยู่ของอุปกรณ์นั้นเป็นสิ่งที่ IOMMU ใช้และมีประโยชน์ด้วยเหตุผลหลายประการ:
- สามารถอนุญาตให้เครื่องเสมือนเข้าถึงฮาร์ดแวร์ทางกายภาพได้โดยตรงด้วยไดรเวอร์ดั้งเดิม
- มันแยกความสามารถในการระบุที่อยู่ของอุปกรณ์ออกจากพื้นที่ที่อยู่จริง กล่าวอีกนัยหนึ่งมันช่วยให้คุณมีอุปกรณ์ที่สามารถเข้าถึงข้อมูลแบบ 32 บิตได้ทุกที่ในหน่วยความจำกายภาพแม้เหนือ 4G แรก
- มันช่วยให้คุณแยกอุปกรณ์จากกันอย่างละเอียดมากขึ้นซึ่งสามารถปรับปรุงความปลอดภัยของระบบ
เท่าที่ทำไมนี่ไม่ใช่พฤติกรรมเริ่มต้นและทำไมบรรทัด IDSEL ไม่ได้ใช้สำหรับเรื่องนี้ฉันไม่สามารถพูดได้จริงๆเพราะฉันไม่มีความรู้เกี่ยวกับประวัติของการออกแบบ PCI มากนัก การคาดเดาครั้งแรกของฉันคือการเริ่มต้นเพื่อให้ง่ายต่อการติดตั้งไดรเวอร์พอร์ตสำหรับการ์ด ISA ไปยัง PCI (ISA ถือว่าพื้นที่ที่อยู่ที่ใช้ร่วมกันแบบแบน) นอกจากนี้ IOMMU ไม่ได้เป็นบิตของฮาร์ดแวร์ที่ง่ายที่สุดในการออกแบบและเพิ่งมีวางจำหน่ายอย่างแพร่หลายในแพลตฟอร์ม x86 (และยังไม่รับประกันว่าจะมีชิป Intel จำนวนมากที่ยังไม่มีและชิป AMD ต่ำสุดมากมาย ไม่เหมือนกัน)
มันอาจจะคุ้มค่าที่ชี้ให้เห็นว่าด้วย PCI Express จะมีประโยชน์ในการแบ่งปันพื้นที่ที่อยู่ข้ามอุปกรณ์ซึ่งช่วยให้คุณทำการถ่ายโอนแบบอุปกรณ์ต่ออุปกรณ์ (แม้ว่าแพลตฟอร์มส่วนใหญ่จะไม่รองรับสิ่งนี้) ซึ่งสามารถ มีประโยชน์อย่างมากในการตั้งค่ากริดขนาดใหญ่ที่ใช้ RDMA (คุณสามารถรับข้อมูลจากอุปกรณ์ระยะไกลได้โดยตรงโดยไม่ต้องใช้ระบบปฏิบัติการของระบบระยะไกลเพื่อเป็นสื่อกลางเมื่อมีการตั้งค่าการถ่ายโอน)