การจำลองเสมือน I/O และ DMA
การเข้าถึงหน่วยความจำโดยตรงช่วยให้อุปกรณ์สามารถถ่ายโอนข้อมูลเข้าและออกจากหน่วยความจำได้โดยไม่ต้องให้โปรเซสเซอร์เข้ามาเกี่ยวข้องกับการประมวลผลข้อมูลแต่ละคำ และการจำลองเสมือน I/O ช่วยขยายขีดความสามารถนี้เพื่อแบ่งปันอุปกรณ์ทางกายภาพระหว่างเครื่องเสมือนได้อย่างปลอดภัย ซึ่งทั้งสองสิ่งนี้มีความสำคัญต่อระบบที่ทันสมัยและระบบคลาวด์ที่มีประสิทธิภาพ
Definition
การเข้าถึงหน่วยความจำโดยตรง (Direct memory access) คือกลไกที่อุปกรณ์ถ่ายโอนข้อมูลโดยตรงไปยังหรือจากหน่วยความจำหลักโดยที่โปรเซสเซอร์ไม่ต้องคัดลอกข้อมูลแต่ละส่วน และการจำลองเสมือน I/O (I/O virtualization) คือชุดของเทคนิคที่นำเสนอและแบ่งปันอุปกรณ์ I/O ทางกายภาพระหว่างเครื่องเสมือนหลายเครื่องได้อย่างปลอดภัยและมีประสิทธิภาพ
Scope
หัวข้อนี้ครอบคลุมการเข้าถึงหน่วยความจำโดยตรง (DMA) และการจำลองเสมือน I/O: วิธีที่ตัวควบคุม DMA เคลื่อนย้ายข้อมูลจำนวนมากและส่งสัญญาณการทำงานเสร็จสิ้น บทบาทของ IOMMU ในการแปลที่อยู่และการป้องกันสำหรับการถ่ายโอนข้อมูลของอุปกรณ์ และเทคนิคสำหรับการแบ่งปันอุปกรณ์ระหว่างเครื่องเสมือน เช่น การจำลองอุปกรณ์ (device emulation) การจำลองเสมือนบางส่วน (paravirtualization) และการส่งผ่านโดยตรงด้วยฮาร์ดแวร์ (hardware-assisted passthrough) โดยจะกล่าวถึงการเคลื่อนย้ายข้อมูลของอุปกรณ์ที่มีประสิทธิภาพและปลอดภัย แต่ไม่รวมถึงการควบคุมอุปกรณ์พื้นฐานและการขัดจังหวะ (สถาปัตยกรรม I/O และบัส) และสื่อจัดเก็บข้อมูล (อุปกรณ์จัดเก็บข้อมูลสำรอง)
Core questions
- DMA ถ่ายโอนข้อมูลจำนวนมากได้อย่างไรโดยไม่ทำให้โปรเซสเซอร์ไม่ว่าง?
- IOMMU ให้การแปลที่อยู่และการป้องกันสำหรับการถ่ายโอนข้อมูลของอุปกรณ์ได้อย่างไร?
- อุปกรณ์ทางกายภาพถูกแบ่งปันระหว่างเครื่องเสมือนได้อย่างปลอดภัยได้อย่างไร?
- ข้อดีข้อเสียของการจำลองอุปกรณ์ (device emulation) การจำลองเสมือนบางส่วน (paravirtualization) และการส่งผ่านโดยตรง (passthrough) มีอะไรบ้าง?
Key concepts
- การเข้าถึงหน่วยความจำโดยตรง (DMA)
- ตัวควบคุม DMA และตัวอธิบาย (descriptors)
- การขัดจังหวะเมื่อทำงานเสร็จสิ้น (completion interrupts)
- IOMMU และการแปลที่อยู่ของอุปกรณ์
- การจำลองอุปกรณ์ (device emulation)
- I/O ที่จำลองเสมือนบางส่วน (paravirtualized I/O)
- การส่งผ่านอุปกรณ์โดยตรง (device passthrough) และ SR-IOV
- การแยกส่วนและการป้องกัน
Key theories
- การเข้าถึงหน่วยความจำโดยตรง
- ตัวควบคุม DMA จะถ่ายโอนบล็อกข้อมูลระหว่างอุปกรณ์และหน่วยความจำโดยอัตโนมัติ โดยจะขัดจังหวะโปรเซสเซอร์เมื่อทำงานเสร็จสิ้นเท่านั้น ซึ่งเป็นการซ้อนทับ I/O กับการคำนวณและมีความสำคัญต่อการเคลื่อนย้ายข้อมูลที่มีปริมาณงานสูง
Mechanisms
สำหรับการถ่ายโอนข้อมูลแบบ DMA โปรเซสเซอร์จะตั้งโปรแกรมตัวควบคุมด้วยแหล่งที่มา ปลายทาง และความยาว จากนั้นจะทำงานอื่นต่อไปในขณะที่อุปกรณ์เคลื่อนย้ายข้อมูลและส่งสัญญาณขัดจังหวะเมื่อทำงานเสร็จสิ้น IOMMU จะแปลที่อยู่ที่อุปกรณ์ใช้และจำกัดการเข้าถึงของอุปกรณ์ ซึ่งให้การป้องกันและช่วยให้การส่งผ่านข้อมูลโดยตรงเป็นไปอย่างปลอดภัย เครื่องเสมือนจะเข้าถึงอุปกรณ์ผ่านอุปกรณ์จำลอง (emulated devices) ไดรเวอร์ที่จำลองเสมือนบางส่วน (paravirtualized drivers) หรือการส่งผ่านฮาร์ดแวร์โดยตรง (direct hardware passthrough) (รวมถึงการจำลองเสมือน I/O แบบรากเดียว (single-root I/O virtualization) ที่ช่วยให้อุปกรณ์หนึ่งสามารถนำเสนอฟังก์ชันเสมือนได้หลายฟังก์ชัน)
Clinical relevance
DMA เป็นพื้นฐานสำหรับ I/O ที่มีประสิทธิภาพ ช่วยให้โปรเซสเซอร์เป็นอิสระในระหว่างการถ่ายโอนข้อมูลจำนวนมากไปยังและจากอุปกรณ์จัดเก็บข้อมูลและเครือข่าย การจำลองเสมือน I/O มีความสำคัญต่อการประมวลผลแบบคลาวด์และศูนย์ข้อมูล ซึ่งเครื่องเสมือนจำนวนมากใช้ฮาร์ดแวร์ทางกายภาพร่วมกัน IOMMU ให้การแยกส่วนที่ทำให้การแบ่งปันและการกำหนดอุปกรณ์โดยตรงทั้งปลอดภัยและรวดเร็ว
History
การเข้าถึงหน่วยความจำโดยตรงถูกนำมาใช้ตั้งแต่คอมพิวเตอร์ยุคแรกๆ เพื่อลดภาระการเคลื่อนย้ายข้อมูลจากโปรเซสเซอร์ เมื่อการจำลองเสมือนกลายเป็นหัวใจสำคัญของเซิร์ฟเวอร์และการประมวลผลแบบคลาวด์ในช่วงทศวรรษ 2000 การสนับสนุนฮาร์ดแวร์ เช่น IOMMU และการจำลองเสมือน I/O แบบรากเดียว (single-root I/O virtualization) ได้ถูกเพิ่มเข้ามาเพื่อให้การแบ่งปันอุปกรณ์และการกำหนดโดยตรงมีประสิทธิภาพและปลอดภัย
Debates
- ประสิทธิภาพการส่งผ่านโดยตรงเทียบกับความยืดหยุ่น
- การส่งผ่านอุปกรณ์โดยตรง (direct device passthrough) ให้ประสิทธิภาพ I/O ใกล้เคียงกับฮาร์ดแวร์จริงแก่เครื่องเสมือน แต่ลดความยืดหยุ่นในการย้ายข้อมูลและการใช้งานเกินกำลัง ในขณะที่ I/O แบบจำลองหรือแบบจำลองเสมือนบางส่วนมีความยืดหยุ่นมากกว่าแต่ช้ากว่า นักออกแบบระบบจึงต้องสร้างสมดุลระหว่างสิ่งเหล่านี้สำหรับปริมาณงานของตน
Key figures
- John L. Hennessy
- David A. Patterson
- Abraham Silberschatz
Related topics
Seminal works
- hennessy2019
- silberschatz2018
Frequently asked questions
- IOMMU ทำอะไร?
- IOMMU จะแปลที่อยู่ที่อุปกรณ์ใช้ระหว่าง DMA ให้เป็นที่อยู่หน่วยความจำทางกายภาพ และจำกัดว่าหน่วยความจำใดที่อุปกรณ์สามารถเข้าถึงได้ สิ่งนี้ให้การป้องกันและการแยกส่วน — ป้องกันไม่ให้อุปกรณ์หรือไดรเวอร์ทำให้หน่วยความจำเสียหายโดยไม่ตั้งใจ — และช่วยให้การกำหนดอุปกรณ์โดยตรงไปยังเครื่องเสมือนเป็นไปอย่างปลอดภัย
- ทำไม DMA จึงสำคัญต่อประสิทธิภาพ?
- หากไม่มี DMA โปรเซสเซอร์จะต้องคัดลอกข้อมูลทุกคำไปยังหรือจากอุปกรณ์ ซึ่งจะใช้รอบการทำงานและทำให้เกิดการหยุดชะงักในการถ่ายโอนข้อมูลที่ช้า DMA จะถ่ายโอนการเคลื่อนย้ายข้อมูลจำนวนมากไปยังตัวควบคุมเฉพาะ ทำให้โปรเซสเซอร์สามารถทำงานอื่นที่เป็นประโยชน์ได้ และจัดการกับการขัดจังหวะเมื่อทำงานเสร็จสิ้นเพียงครั้งเดียว