อ่าน 4 นาที
หน่วยจัดการหน่วยความจำอินพุต-เอาต์พุต
ในด้าน คอมพิวเตอร์ หน่วย จัดการหน่วยความจำแบบอินพุต-เอาต์พุต ( IOMMU ) คือ หน่วยจัดการหน่วยความจำ (MMU) ที่เชื่อมต่อ บัส อินพุต-เอาต์พุตที่สามารถ เข้าถึงหน่วยความจำโดยตรง (DMA)...
หน่วยจัดการหน่วยความจำอินพุต-เอาต์พุต

ในด้านคอมพิวเตอร์หน่วยจัดการหน่วยความจำแบบอินพุต-เอาต์พุต ( IOMMU ) คือหน่วยจัดการหน่วยความจำ (MMU) ที่เชื่อมต่อบัสอินพุต-เอาต์พุตที่สามารถเข้าถึงหน่วยความจำโดยตรง (DMA) เข้ากับหน่วยความจำหลักเช่นเดียวกับ MMU แบบดั้งเดิมที่แปลงที่อยู่เสมือน ที่ CPUมองเห็นได้เป็นที่อยู่ทางกายภาพ IOMMU จะแมปที่อยู่เสมือนที่อุปกรณ์มองเห็นได้ (เรียกอีกอย่างว่าที่อยู่ของอุปกรณ์หรือที่อยู่ I/O ที่แมปกับหน่วยความจำ ในบริบทนี้) ไปยังที่อยู่ทางกายภาพ หน่วยบางหน่วยยังให้ การป้องกันหน่วยความจำจากอุปกรณ์ที่ผิดพลาดหรือเป็นอันตราย อีกด้วย
ตัวอย่างหนึ่งของ IOMMU คือตารางการแมปที่อยู่กราฟิก (GART) ที่ใช้โดย การ์ดกราฟิก AGPและPCI Expressบนคอมพิวเตอร์สถาปัตยกรรม Intel และ AMD
บนสถาปัตยกรรม x86 ก่อนที่จะมีการแบ่งฟังก์ชันการทำงานของnorthbridgeและsouthbridgeระหว่าง CPU และPlatform Controller Hub (PCH) การจำลองเสมือน I/O ไม่ได้ดำเนินการโดย CPU แต่ดำเนินการโดยชิปเซ็ต[ 1 ] [ 2 ]
ข้อดี
ข้อดีของการมี IOMMU เมื่อเปรียบเทียบกับการเข้าถึงหน่วยความจำโดยตรง (DMA) ได้แก่:
- สามารถจัดสรรพื้นที่หน่วยความจำขนาดใหญ่ได้โดยไม่จำเป็นต้องอยู่ติดกันในหน่วยความจำทางกายภาพ – IOMMU จะแมปที่อยู่เสมือนที่อยู่ติดกันไปยังที่อยู่ทางกายภาพที่กระจัดกระจายอยู่เบื้องหลัง ดังนั้น การใช้I/O แบบเวกเตอร์ ( รายการ แบบกระจายและรวบรวม ) จึงสามารถหลีกเลี่ยงได้ในบางครั้ง
- อุปกรณ์ที่ไม่รองรับที่อยู่หน่วยความจำที่ยาวพอที่จะเข้าถึงหน่วยความจำทางกายภาพทั้งหมด ยังคงสามารถเข้าถึงหน่วยความจำทั้งหมดได้ผ่านทาง IOMMU ซึ่งจะช่วยหลีกเลี่ยงค่าใช้จ่ายเพิ่มเติมที่เกี่ยวข้องกับการคัดลอกบัฟเฟอร์ไปและกลับจากพื้นที่หน่วยความจำที่สามารถเข้าถึงได้ของอุปกรณ์ต่อพ่วง
- ตัวอย่างเช่น คอมพิวเตอร์ x86 สามารถเข้าถึงหน่วยความจำได้มากกว่า 4 กิกะไบต์ด้วย คุณสมบัติ Physical Address Extension (PAE) ในโปรเซสเซอร์ x86 อย่างไรก็ตาม อุปกรณ์ PCI 32 บิตทั่วไปไม่สามารถเข้าถึงหน่วยความจำที่เกินขอบเขต 4 GiB ได้ ดังนั้นจึงไม่สามารถเข้าถึงได้โดยตรง หากไม่มี IOMMU ระบบปฏิบัติการจะต้องใช้บัฟเฟอร์แบบเด้งกลับ ที่ใช้เวลานาน (หรือที่เรียกว่าบัฟเฟอร์คู่[ 3 ] )
- หน่วยความจำได้รับการปกป้องจากอุปกรณ์ที่เป็นอันตรายที่พยายามโจมตีแบบ DMAและอุปกรณ์ที่ทำงานผิดพลาดที่พยายามถ่ายโอนข้อมูลหน่วยความจำที่ไม่ถูกต้อง เนื่องจากอุปกรณ์ไม่สามารถอ่านหรือเขียนข้อมูลไปยังหน่วยความจำที่ไม่ได้จัดสรร (แมป) ไว้ให้โดยชัดเจน การป้องกันหน่วยความจำนี้อาศัยข้อเท็จจริงที่ว่าระบบปฏิบัติการที่ทำงานบน CPU (ดูรูป) ควบคุมทั้ง MMU และ IOMMU แต่เพียงผู้เดียว อุปกรณ์ต่างๆ จึงไม่สามารถหลีกเลี่ยงหรือทำให้ตารางการจัดการหน่วยความจำที่กำหนดค่าไว้เสียหายได้
- ในการจำลองเสมือนระบบ ปฏิบัติการ แขกสามารถใช้ฮาร์ดแวร์ที่ไม่ได้ออกแบบมาสำหรับการจำลองเสมือนโดยเฉพาะได้ ฮาร์ดแวร์ประสิทธิภาพสูง เช่น การ์ดกราฟิก ใช้ DMA ในการเข้าถึงหน่วยความจำโดยตรง ในสภาพแวดล้อมเสมือน ที่อยู่หน่วยความจำทั้งหมดจะถูกแมปใหม่โดยซอฟต์แวร์เครื่องเสมือน ซึ่งทำให้การทำงานของอุปกรณ์ DMA ล้มเหลว หน่วย IOMMU จะจัดการการแมปใหม่นี้ ทำให้สามารถใช้ไดรเวอร์อุปกรณ์ดั้งเดิมในระบบปฏิบัติการแขกได้
- ในสถาปัตยกรรมบางแบบ IOMMU ยังทำการ แมปการ ขัดจังหวะด้วยฮาร์ดแวร์ในลักษณะที่คล้ายกับการแมปที่อยู่หน่วยความจำมาตรฐาน อีกด้วย
- การจัดการหน่วยความจำแบบเพจจิ้งสำหรับอุปกรณ์ต่อพ่วงสามารถทำได้โดยใช้ IOMMU อุปกรณ์ต่อพ่วงที่ใช้ส่วนขยาย PCI-SIG PCIe Address Translation Services (ATS) Page Request Interface (PRI) สามารถตรวจจับและส่งสัญญาณความต้องการบริการจัดการหน่วยความจำได้
สำหรับสถาปัตยกรรมระบบที่พอร์ต I/O อยู่ในพื้นที่แอดเดรสที่แยกต่างหากจากพื้นที่แอดเดรสของหน่วยความจำ จะไม่มีการใช้ IOMMU เมื่อ CPU สื่อสารกับอุปกรณ์ผ่านพอร์ต I/Oแต่ในสถาปัตยกรรมระบบที่พอร์ต I/O และหน่วยความจำถูกแมปไปยังพื้นที่แอดเดรสที่เหมาะสม IOMMU สามารถแปลงการเข้าถึงพอร์ต I/O ได้
ข้อเสีย
ข้อเสียของการมี IOMMU เมื่อเปรียบเทียบกับการระบุตำแหน่งทางกายภาพโดยตรงของหน่วยความจำ ได้แก่: [ 4 ]
- ประสิทธิภาพการทำงานอาจลดลงบ้างเนื่องจากค่าใช้จ่ายในการแปลและการจัดการ (เช่น การตรวจสอบตารางหน้า)
- การใช้หน่วยความจำทางกายภาพสำหรับตารางหน้า I/O (การแปล) ที่เพิ่มเข้ามา สามารถลดปัญหานี้ได้หากสามารถใช้ตารางเหล่านั้นร่วมกันกับโปรเซสเซอร์ได้
- เพื่อลดขนาดตารางเพจ ความละเอียดของ IOMMU จำนวนมากจึงเท่ากับการแบ่งเพจหน่วยความจำ (โดยทั่วไปคือ 4096 ไบต์) ดังนั้นบัฟเฟอร์ขนาดเล็กแต่ละตัวที่ต้องการการป้องกันการโจมตี DMA จะต้องได้รับการจัดเรียงเพจและตั้งค่าเป็นศูนย์ก่อนที่จะแสดงให้ตัวอุปกรณ์เห็น เนื่องจากความซับซ้อนของการจัดสรรหน่วยความจำของระบบปฏิบัติการ หมายความว่าไดรเวอร์อุปกรณ์จำเป็นต้องใช้บัฟเฟอร์ชั่วคราวสำหรับโครงสร้างข้อมูลที่ละเอียดอ่อน ซึ่งส่งผลให้ประสิทธิภาพโดยรวมลดลง
เวอร์ชวลไลเซชัน
เมื่อระบบปฏิบัติการทำงานอยู่ภายในเครื่องเสมือนรวมถึงระบบที่ใช้พาราเวอร์ชวลไลเซชันเช่นXenและKVMโดยปกติแล้วระบบปฏิบัติการจะไม่ทราบที่อยู่ทางกายภาพของหน่วยความจำบนเครื่องโฮสต์ที่เข้าถึง ทำให้การเข้าถึงฮาร์ดแวร์ของคอมพิวเตอร์โดยตรงทำได้ยาก เพราะหากระบบปฏิบัติการแขกพยายามสั่งให้ฮาร์ดแวร์ทำการเข้าถึงหน่วยความจำโดยตรง (DMA) โดยใช้ที่อยู่ทางกายภาพของแขก อาจทำให้หน่วยความจำเสียหายได้ เนื่องจากฮาร์ดแวร์ไม่ทราบการแมประหว่างที่อยู่ทางกายภาพของแขกและที่อยู่ทางกายภาพของเครื่องโฮสต์สำหรับเครื่องเสมือนนั้น การเสียหายนี้สามารถหลีกเลี่ยงได้หากไฮเปอร์ไวเซอร์หรือระบบปฏิบัติการโฮสต์เข้ามาแทรกแซงการทำงานของ I/O เพื่อใช้การแปลง อย่างไรก็ตาม วิธีการนี้จะทำให้เกิดความล่าช้าในการทำงานของ I/O
IOMMU แก้ปัญหานี้โดยการแมปที่อยู่ซึ่งเข้าถึงโดยฮาร์ดแวร์ใหม่ตามตารางการแปลเดียวกัน (หรือที่เข้ากันได้) ซึ่งใช้ในการแมปที่อยู่ทางกายภาพของแขกไปยังที่อยู่ทางกายภาพของโฮสต์[ 5 ]
ข้อกำหนดที่เผยแพร่
- AMDได้เผยแพร่ข้อกำหนดสำหรับเทคโนโลยี IOMMU ซึ่งเรียกว่าAMD- Vi [ 6 ] [ 7 ]
- IBMเสนอการสนับสนุนโปรแกรมควบคุมแบบขยาย: โหมด Virtual Storage Extended (ECPS:VSE) [ 8 ]บน สายผลิตภัณฑ์ 43xx ของตน โดยโปรแกรมช่องสัญญาณจะใช้ที่อยู่เสมือน
- Intelได้เผยแพร่ข้อกำหนดสำหรับเทคโนโลยี IOMMU ในชื่อ Virtualization Technology for Directed I/O ซึ่งย่อว่าVT- d [ 9 ]
- ข้อมูลเกี่ยวกับSun IOMMU ได้รับการเผยแพร่ในส่วนการเข้าถึงหน่วยความจำเสมือนของอุปกรณ์ (DVMA) ของ Solaris Developer Connection [ 10 ]
- IBM Translation Control Entry (TCE) ได้รับการอธิบายไว้ในเอกสารชื่อ Logical Partition Security ในIBM eServer pSeries 690 [ 11 ]
- PCI -SIGมีงานที่เกี่ยวข้องภายใต้เงื่อนไขSingle Root I/O Virtualization (SR-IOV) และ Address Translation Services (ATS) ซึ่งก่อนหน้านี้ครอบคลุมอยู่ในข้อกำหนดเฉพาะ แต่ตั้งแต่ PCI Express 5.0 เป็นต้นมา ได้ถูกย้ายไปยัง PCI Express Base Specification [ 12 ]
- ARMกำหนด IOMMU เวอร์ชันของตนเป็นหน่วยจัดการหน่วยความจำระบบ (SMMU) [ 13 ]เพื่อเสริมสถาปัตยกรรมเวอร์ชวลไลเซชัน[ 14 ]
ดูเพิ่มเติม
- สถาปัตยกรรมระบบแบบผสมผสาน (HSA)
- รายการฮาร์ดแวร์ที่รองรับ IOMMU
- อินพุต/เอาต์พุตแบบแมปหน่วยความจำ
- การป้องกันหน่วยความจำ
ลิงก์ภายนอก
- Bottomley, James (2004-05-01). "การใช้ DMA" . Linux Journal (121). ที่ปรึกษาระบบเฉพาะทาง . เก็บถาวรจากต้นฉบับเมื่อ 2006-07-15 . สืบค้นเมื่อ2006-08-09 .
- การเรียนรู้การใช้งาน API ของ DMA และ IOMMU อย่างเชี่ยวชาญการประชุม Embedded Linux Conference 2014 ณ เมืองซานโฮเซ โดย Laurent Pinchart
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ หน่วยจัดการหน่วยความจำอินพุต-เอาต์พุต
ในด้าน คอมพิวเตอร์ หน่วย จัดการหน่วยความจำแบบอินพุต-เอาต์พุต ( IOMMU ) คือ หน่วยจัดการหน่วยความจำ (MMU) ที่เชื่อมต่อ บัส อินพุต-เอาต์พุตที่สามารถ เข้าถึงหน่วยความจำโดยตรง (DMA)...
ข้อดี
ข้อดีของการมี IOMMU เมื่อเปรียบเทียบกับการเข้าถึงหน่วยความจำโดยตรง (DMA) ได้แก่:
ข้อเสีย
ข้อเสียของการมี IOMMU เมื่อเปรียบเทียบกับการระบุตำแหน่งทางกายภาพโดยตรงของหน่วยความจำ ได้แก่: [ 4 ]
เวอร์ชวลไลเซชัน
เมื่อระบบปฏิบัติการทำงานอยู่ภายใน เครื่องเสมือน รวมถึงระบบที่ใช้ พาราเวอร์ชวลไลเซชัน เช่น Xen และ KVM โดยปกติแล้วระบบปฏิบัติการจะไม่ทราบที่อยู่ทางกายภาพของหน่วยความจำบนเครื่องโฮสต์ที่เข้าถึง ทำให้การเข้าถึงฮาร์ดแวร์ของคอมพิวเตอร์โดยตรงทำได้ยาก...