ScholarGate
ผู้ช่วย

การจำลองเสมือน I/O และ DMA

การเข้าถึงหน่วยความจำโดยตรงช่วยให้อุปกรณ์สามารถถ่ายโอนข้อมูลเข้าและออกจากหน่วยความจำได้โดยไม่ต้องให้โปรเซสเซอร์เข้ามาเกี่ยวข้องกับการประมวลผลข้อมูลแต่ละคำ และการจำลองเสมือน I/O ช่วยขยายขีดความสามารถนี้เพื่อแบ่งปันอุปกรณ์ทางกายภาพระหว่างเครื่องเสมือนได้อย่างปลอดภัย ซึ่งทั้งสองสิ่งนี้มีความสำคัญต่อระบบที่ทันสมัยและระบบคลาวด์ที่มีประสิทธิภาพ

ค้นหาหัวข้อด้วย PaperMindเร็ว ๆ นี้Find papers & topics
Tools & resources
ดาวน์โหลดสไลด์
Learn & explore
วิดีโอเร็ว ๆ นี้

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 จะถ่ายโอนการเคลื่อนย้ายข้อมูลจำนวนมากไปยังตัวควบคุมเฉพาะ ทำให้โปรเซสเซอร์สามารถทำงานอื่นที่เป็นประโยชน์ได้ และจัดการกับการขัดจังหวะเมื่อทำงานเสร็จสิ้นเพียงครั้งเดียว

Methods for this concept

Related concepts