เวอร์ชวลไลเซชัน x86
การจำลองเสมือน x86คือการใช้ ความสามารถในการ จำลอง เสมือนที่ได้รับการสนับสนุนจากฮาร์ดแวร์บนซีพียูx86 / x86-64
ในช่วงปลายทศวรรษ 1990 การจำลองเสมือน x86 ทำได้โดยใช้ เทคนิค ซอฟต์แวร์ ที่ซับซ้อน ซึ่งจำเป็นต่อการชดเชยการขาดความสามารถในการจำลองเสมือนที่ได้รับการสนับสนุนจากฮาร์ดแวร์ของโปรเซสเซอร์ ในขณะเดียวกันก็บรรลุประสิทธิภาพ ที่เหมาะสม ในปี 2548 และ 2549 ทั้งIntel ( VT-x ) และAMD ( AMD-V ) ได้แนะนำการสนับสนุนการจำลองเสมือนด้วยฮาร์ดแวร์แบบจำกัด ซึ่งช่วยให้ซอฟต์แวร์การจำลองเสมือนง่ายขึ้น แต่ให้ประโยชน์ด้านความเร็วเพียงเล็กน้อย[ 1 ]การสนับสนุนฮาร์ดแวร์ที่มากขึ้น ซึ่งช่วยให้ความเร็วดีขึ้นอย่างมาก มาพร้อมกับโปรเซสเซอร์รุ่นต่อมา
การจำลองเสมือนด้วยซอฟต์แวร์
การอภิปรายต่อไปนี้จะมุ่งเน้นเฉพาะการจำลองเสมือนของสถาปัตยกรรม x86 ในโหมดป้องกันเท่านั้น
ในโหมดป้องกัน (protected mode) เคอร์เนลของระบบปฏิบัติการจะทำงานในพื้นที่เคอร์เนล (kernel space) ในระดับสิทธิ์สูงสุด ( ring 0) ซึ่งอนุญาตให้กำหนดค่าMMUจัดการหน่วยความจำทางกายภาพ และควบคุมอุปกรณ์ต่อพ่วง I/O ได้โดยตรง ในขณะที่แอปพลิเคชันจะทำงานในพื้นที่ผู้ใช้ (user space) ในระดับสิทธิ์ที่ต่ำกว่า (เช่น ring 3) ซึ่งแอปพลิเคชันจะถูกจำกัดอยู่ในพื้นที่แอดเดรสเสมือน ของตนเอง และต้องเรียกใช้การเรียกใช้ระบบ (system calls) เพื่อร้องขอการดำเนินการ I/O หรือบริการที่มีสิทธิ์พิเศษอื่นๆ จากเคอร์เนล
ในการจำลองเสมือนแบบใช้ซอฟต์แวร์ ระบบปฏิบัติการโฮสต์จะสามารถเข้าถึงฮาร์ดแวร์ได้โดยตรง ในขณะที่ระบบปฏิบัติการแขกจะสามารถเข้าถึงฮาร์ดแวร์ได้จำกัด เช่นเดียวกับแอปพลิเคชันพื้นที่ผู้ใช้อื่นๆ ของระบบปฏิบัติการโฮสต์ แนวทางหนึ่งที่ใช้ในการจำลองเสมือนแบบใช้ซอฟต์แวร์ x86 เพื่อนำกลไกนี้ไปใช้เรียกว่าการลดสิทธิ์ของวงแหวนซึ่งเกี่ยวข้องกับการเรียกใช้ระบบปฏิบัติการแขกที่วงแหวนที่สูงกว่า (มีสิทธิ์น้อยกว่า) 0 เพื่อให้ไฮเปอร์ไวเซอร์สามารถดักจับและจัดการความพยายามในการเรียกใช้คำสั่งที่มีสิทธิ์ได้[ 2 ]
มีเทคนิคสามอย่างที่ทำให้การจำลองเสมือนของโหมดป้องกันเป็นไปได้:
- การแปลไบนารีใช้เพื่อเขียนคำสั่ง ring 0 บางคำสั่งใหม่ในรูปของคำสั่ง ring 3 เช่นPOPFซึ่งหากไม่ทำเช่นนั้นจะล้มเหลวโดยไม่มีการแจ้งเตือนหรือมีพฤติกรรมที่แตกต่างออกไปเมื่อดำเนินการเหนือ ring 0 [ 3 ] [ 4 ] : 3 ทำให้การจำลองเสมือนแบบ trap-and-emulate แบบคลาสสิก เป็นไปไม่ได้[ 4 ] : 1 [ 5 ]เพื่อปรับปรุงประสิทธิภาพบล็อกพื้นฐาน ที่แปลแล้ว จำเป็นต้องถูกแคชในลักษณะที่สอดคล้องกันซึ่งตรวจจับการแก้ไขโค้ด (ใช้ในVxDเป็นต้น) การใช้หน้าซ้ำโดยระบบปฏิบัติการแขก หรือแม้แต่โค้ดที่แก้ไขตัวเอง[ 6 ]
- โครงสร้างข้อมูลหลักจำนวนหนึ่งที่โปรเซสเซอร์ใช้จำเป็นต้องมีการจำลองเนื่องจากระบบปฏิบัติการส่วนใหญ่ใช้หน่วยความจำเสมือนแบบเพจและการให้ระบบปฏิบัติการแขกเข้าถึงMMU โดยตรง จะหมายถึงการสูญเสียการควบคุมโดยตัวจัดการเวอร์ชวลไลเซชันดังนั้นงานบางส่วนของ MMU x86 จึงจำเป็นต้องทำซ้ำในซอฟต์แวร์สำหรับระบบปฏิบัติการแขกโดยใช้เทคนิคที่เรียกว่าตารางเพจจำลอง[ 7 ] : 5 [ 4 ] : 2 ซึ่งเกี่ยวข้องกับการปฏิเสธไม่ให้ระบบปฏิบัติการแขกเข้าถึงรายการตารางเพจจริงโดยการดักจับความพยายามในการเข้าถึงและจำลองแทนในซอฟต์แวร์ สถาปัตยกรรม x86 ใช้สถานะที่ซ่อนอยู่เพื่อจัดเก็บตัวอธิบายเซกเมนต์ในโปรเซสเซอร์ ดังนั้นเมื่อตัวอธิบายเซกเมนต์ถูกโหลดลงในโปรเซสเซอร์แล้ว หน่วยความจำที่โหลดอาจถูกเขียนทับและไม่มีวิธีใดที่จะดึงตัวอธิบายกลับคืนมาจากโปรเซสเซอร์ได้ดังนั้นจึงต้องใช้ตารางตัวอธิบายจำลอง เพื่อติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับตารางตัวอธิบายโดยระบบปฏิบัติการแขก [ 5 ]
- การจำลองอุปกรณ์ I/O: อุปกรณ์ที่ไม่รองรับบนระบบปฏิบัติการแขกจะต้องถูกจำลองโดยโปรแกรมจำลองอุปกรณ์ที่ทำงานในระบบปฏิบัติการโฮสต์[ 8 ]
เทคนิคเหล่านี้ทำให้เกิดภาระด้านประสิทธิภาพบางส่วนเนื่องจากขาดการสนับสนุนการจำลองเสมือน MMU เมื่อเปรียบเทียบกับ VM ที่ทำงานบนสถาปัตยกรรมที่จำลองเสมือนได้โดยธรรมชาติ เช่นIBM System/370 [ 4 ] : 10 [ 9 ] : 17 และ 21
บนเมนเฟรมแบบดั้งเดิม ไฮเปอร์ไวเซอร์ ประเภท 1 แบบ คลาสสิก เป็นแบบตั้งอิสระและไม่ขึ้นอยู่กับระบบปฏิบัติการใดๆ หรือรันแอปพลิเคชันของผู้ใช้ใดๆ ในทางตรงกันข้าม ผลิตภัณฑ์เวอร์ชวลไลเซชัน x86 รุ่นแรกๆ มุ่งเป้าไปที่คอมพิวเตอร์เวิร์กสเตชัน และรันระบบปฏิบัติการแขกภายในระบบปฏิบัติการโฮสต์โดยการฝังไฮเปอร์ไวเซอร์ไว้ในโมดูลเคอร์เนลที่ทำงานภายใต้ระบบปฏิบัติการโฮสต์ (ไฮเปอร์ไวเซอร์ประเภท 2) [ 8 ]
มีการถกเถียงกันอยู่บ้างว่าสถาปัตยกรรม x86 ที่ไม่มีความช่วยเหลือจากฮาร์ดแวร์นั้นสามารถจำลองเสมือนได้หรือไม่ ตามที่Popek และ Goldbergอธิบาย ไว้ นักวิจัย ของ VMwareชี้ให้เห็นใน เอกสาร ASPLOS ปี 2006 ว่าเทคนิคข้างต้นทำให้แพลตฟอร์ม x86 สามารถจำลองเสมือนได้ในแง่ของการตรงตามเกณฑ์สามประการของ Popek และ Goldberg แม้ว่าจะไม่ใช่ด้วยเทคนิค trap-and-emulate แบบคลาสสิกก็ตาม[ 4 ] : 2–3
ระบบอื่นๆ เช่น Denali , L4และXenใช้แนวทางที่แตกต่างออกไป ซึ่ง เรียกว่าparavirtualizationซึ่งเกี่ยวข้องกับการพอร์ตระบบปฏิบัติการให้ทำงานบนเครื่องเสมือนที่ได้ ซึ่งไม่ได้ใช้งานส่วนของชุดคำสั่ง x86 จริงที่ยากต่อการจำลองเสมือน I/O แบบ paravirtualized มีประโยชน์ด้านประสิทธิภาพอย่างมาก ดังที่แสดงให้เห็นในเอกสาร Xen ฉบับดั้งเดิมของ SOSP '03 [ 10 ]
เวอร์ชันเริ่มต้นของx86-64 ( AMD64 ) ไม่อนุญาตให้มีการจำลองเสมือนแบบเต็มรูปแบบด้วยซอฟต์แวร์เท่านั้น เนื่องจากขาดการสนับสนุนการแบ่งส่วนในโหมดยาวซึ่งทำให้การป้องกันหน่วยความจำของไฮเปอร์ไวเซอร์เป็นไปไม่ได้ โดยเฉพาะอย่างยิ่งการป้องกันตัวจัดการกับดักที่ทำงานในพื้นที่แอดเดรสเคอร์เนลของแขก[ 11 ] [ 12 ] : โปรเซสเซอร์ AMD 64 บิต รุ่น 11 และ 20 Revision D และรุ่นต่อมา (โดยทั่วไปคือรุ่นที่ผลิตในขนาด 90 นาโนเมตรหรือน้อยกว่า) ได้เพิ่มการสนับสนุนพื้นฐานสำหรับการแบ่งส่วนในโหมดยาว ทำให้สามารถเรียกใช้แขก 64 บิตในโฮสต์ 64 บิตผ่านการแปลงไบนารีได้ Intel ไม่ได้เพิ่มการสนับสนุนการแบ่งส่วนในการใช้งาน x86-64 ( Intel 64 ) ทำให้การจำลองเสมือนแบบซอฟต์แวร์เท่านั้น 64 บิตเป็นไปไม่ได้บนซีพียู Intel แต่การสนับสนุน Intel VT-x ทำให้การจำลองเสมือนแบบฮาร์ดแวร์ช่วย 64 บิตเป็นไปได้บนแพลตฟอร์ม Intel [ 13 ] [ 14 ] : 4
ในบางแพลตฟอร์ม สามารถรันระบบปฏิบัติการแขกแบบ 64 บิตบนระบบปฏิบัติการโฮสต์แบบ 32 บิตได้ หากโปรเซสเซอร์พื้นฐานเป็นแบบ 64 บิตและรองรับส่วนขยายการจำลองเสมือนที่จำเป็น
การจำลองเสมือนโดยใช้ฮาร์ดแวร์ช่วย
ฮาร์ดแวร์เวอร์ชวลไลเซชัน x86 รุ่นแรกแก้ไขปัญหาคำสั่งพิเศษ ส่วนปัญหาประสิทธิภาพต่ำของหน่วยความจำระบบเสมือนได้รับการแก้ไขด้วย เวอร์ชวลไลเซชัน MMUที่เพิ่มเข้ามาในชิปเซ็ตในภายหลัง ในปี 2005 และ 2006 IntelและAMD (ทำงานแยกกัน) ได้สร้างส่วนขยายโปรเซสเซอร์ ใหม่ สำหรับสถาปัตยกรรม x86 ส่งผลให้เกิดเวอร์ชวลไลเซชัน x86 สองแบบที่แยกจากกันและเข้ากันไม่ได้ในระดับไบนารี ได้แก่ VT-x ของ Intel และ AMD-V
หน่วยประมวลผลกลาง
โหมดเสมือน 8086
เนื่องจากIntel 80286ไม่สามารถรันแอปพลิเคชัน DOS พร้อมกันได้ดีในโหมดป้องกัน Intel จึงแนะนำโหมด 8086 เสมือนใน ชิป 80386ซึ่งนำเสนอโปรเซสเซอร์ 8086 เสมือนบนชิป 386 และชิปรุ่นต่อมา อย่างไรก็ตาม การสนับสนุนฮาร์ดแวร์สำหรับการจำลองโหมดป้องกันนั้นเพิ่งมีให้ใช้งานในอีก 20 ปีต่อมา[ 15 ]
เวอร์ชวลไลเซชันของ AMD (AMD-V)

AMD ได้พัฒนาส่วนขยายการจำลองเสมือนรุ่นแรกภายใต้ชื่อรหัส "Pacifica" และเผยแพร่ครั้งแรกในชื่อ AMD Secure Virtual Machine (SVM) [ 16 ]แต่ต่อมาทำการตลาดภายใต้เครื่องหมายการค้าAMD Virtualizationซึ่งย่อว่าAMD- V
เมื่อวันที่ 23 พฤษภาคม 2549 AMD ได้เปิดตัว Athlon 64 ( "Orleans" ), Athlon 64 X2 ( "Windsor" ) และ Athlon 64 FX ( "Windsor" ) ซึ่งเป็นโปรเซสเซอร์ AMD รุ่นแรกที่รองรับเทคโนโลยีนี้
ความสามารถของ AMD-V ยังมีอยู่ในตระกูลโปรเซสเซอร์Athlon 64และAthlon 64 X2 ที่มีการแก้ไข "F" หรือ "G" บน ซ็อกเก็ต AM2 , Turion 64 X2และโปรเซสเซอร์Opteronรุ่นที่ 2 [ 17 ]และรุ่นที่ 3 [ 18 ] PhenomและPhenom II โปรเซสเซอร์ APU Fusionรองรับ AMD-V AMD-V ไม่ได้รับการสนับสนุนจาก โปรเซสเซอร์ Socket 939 ใดๆ โปรเซสเซอร์ Sempronที่รองรับ AMD-V มีเพียง APU และCPU เดสก์ท็อป Huron , Regor , Sargasเท่านั้น
ซีพียู AMD Opteron ตั้งแต่ตระกูล 0x10 Barcelona เป็นต้นไป และซีพียู Phenom II รองรับเทคโนโลยีการจำลองเสมือนด้วยฮาร์ดแวร์รุ่นที่สองที่เรียกว่าRapid Virtualization Indexing (เดิมเรียกว่า Nested Page Tables ในระหว่างการพัฒนา) ซึ่งต่อมา Intel ได้นำไปใช้ในชื่อExtended Page Tables (EPT)
ณ ปี 2019 โปรเซสเซอร์ AMD ที่ใช้สถาปัตยกรรม Zen ทั้งหมด รองรับ AMD-V แล้ว
แฟล็ก CPUสำหรับ AMD-V คือ "svm" สามารถตรวจสอบได้ในระบบปฏิบัติการ BSDที่ใช้dmesgหรือsysctlและในLinuxผ่านทาง[ 19 ]คำสั่งใน AMD-V ประกอบด้วย VMRUN, VMLOAD, VMSAVE, CLGI, VMMCALL, INVLPGA, SKINIT และ STGI /proc/cpuinfo
สำหรับเมนบอร์ด บางรุ่น ผู้ใช้ต้องเปิดใช้งานคุณสมบัติ AMD SVM ใน การตั้งค่า BIOSก่อนที่แอปพลิเคชันจะสามารถใช้งานได้[ 20 ]
เวอร์ชวลไลเซชันของ Intel (VT-x)

ก่อนหน้านี้มีชื่อรหัสว่า "Vanderpool" VT-x เป็นเทคโนโลยีของ Intel สำหรับการจำลองเสมือนบนแพลตฟอร์ม x86 เมื่อวันที่ 14 พฤศจิกายน 2548 Intel ได้เปิดตัวPentium 4 สองรุ่น (รุ่น 662 และ 672) ซึ่งเป็นโปรเซสเซอร์ Intel รุ่นแรกที่รองรับ VT-x แฟล็ก CPU สำหรับความสามารถ VT-x คือ "vmx" ใน Linux สามารถตรวจสอบได้ผ่านหรือ/proc/cpuinfoในmacOSผ่าน[ 19 ] [ 21 ] [ 22 ]sysctl machdep.cpu.features
"VMX" ย่อมาจาก Virtual Machine Extensions ซึ่งเพิ่มคำสั่งใหม่ 13 คำสั่ง ได้แก่ VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXOFF, VMXON, INVEPT, INVVPID และ VMFUNC [ 23 ]คำสั่งเหล่านี้อนุญาตให้เข้าและออกจากโหมดการทำงานเสมือนที่ระบบปฏิบัติการแขกรับรู้ว่ากำลังทำงานด้วยสิทธิ์เต็มที่ (ring 0) แต่ระบบปฏิบัติการโฮสต์ยังคงได้รับการป้องกัน
ณ ปี 2015 โปรเซสเซอร์ Intel สำหรับเซิร์ฟเวอร์ เดสก์ท็อป และมือถือรุ่นใหม่เกือบทั้งหมดรองรับ VT-x โดยมี โปรเซสเซอร์ Intel Atom บางรุ่น เป็นข้อยกเว้นหลัก[ 24 ]สำหรับเมนบอร์ด บางรุ่น ผู้ใช้ต้องเปิดใช้งานคุณสมบัติ VT-x ของ Intel ใน การตั้งค่า BIOSก่อนที่แอปพลิเคชันจะสามารถใช้งานได้[ 25 ]
Intel เริ่มรวมExtended Page Tables (EPT) [ 26 ]ซึ่งเป็นเทคโนโลยีสำหรับการจำลองเสมือนตารางเพจ[ 27 ]ตั้งแต่สถาปัตยกรรมNehalem [ 28 ] [ 29 ]ที่เปิดตัวในปี 2008 ในปี 2010 Westmereได้เพิ่มการสนับสนุนสำหรับการเปิดใช้งานโปรเซสเซอร์เชิงตรรกะโดยตรงในโหมดจริง ซึ่งเป็นคุณสมบัติที่เรียกว่า "แขกที่ไม่จำกัด" ซึ่งต้องใช้ EPT ในการทำงาน[ 30 ] [ 31 ]
นับตั้งแต่ สถาปัตยกรรมไมโคร Haswell (ประกาศในปี 2013) Intel เริ่มรวมการทำเงา VMCSเป็นเทคโนโลยีที่ช่วยเร่งการจำลองเสมือนแบบซ้อนกันของ VMM [ 32 ] โครงสร้างควบคุมเครื่องเสมือน (VMCS) เป็นโครงสร้างข้อมูลในหน่วยความจำที่มีอยู่เพียงครั้งเดียวต่อ VM ในขณะที่ได้รับการจัดการโดย VMM ทุกครั้งที่มีการเปลี่ยนแปลงบริบทการทำงานระหว่าง VM ต่างๆ VMCS จะถูกกู้คืนสำหรับ VM ปัจจุบัน ซึ่งกำหนดสถานะของโปรเซสเซอร์เสมือนของ VM [ 33 ]ทันทีที่ใช้ VMM มากกว่าหนึ่งตัวหรือ VMM แบบซ้อนกัน ปัญหาจะปรากฏขึ้นในลักษณะที่คล้ายกับสิ่งที่จำเป็นต้องมีการจัดการตารางเพจเงา ดังที่ได้อธิบายไว้ข้างต้นในกรณีดังกล่าว VMCS จำเป็นต้องทำเงาหลายครั้ง (ในกรณีของการซ้อนกัน) และใช้งานบางส่วนในซอฟต์แวร์ในกรณีที่ไม่มีการสนับสนุนฮาร์ดแวร์โดยโปรเซสเซอร์ เพื่อให้การจัดการเงา VMCS มีประสิทธิภาพมากขึ้น Intel ได้นำการสนับสนุนฮาร์ดแวร์สำหรับการทำเงา VMCS มาใช้[ 34 ]
VIA virtualization (VIA VT)
โปรเซสเซอร์ VIA Nano 3000 Series และ รุ่นที่สูงกว่ารองรับเทคโนโลยีเวอร์ชวลไลเซชัน VIA VT ที่เข้ากันได้กับ Intel VT-x [ 35 ] EPT มีอยู่ในZhaoxin ZX-C ซึ่งเป็นรุ่นต่อจากVIA QuadCore-EและEden X4คล้ายกับ Nano C4350AL [ 36 ]
การจำลองการขัดจังหวะเสมือน (AMD AVIC และ Intel APICv)
ในปี 2555 AMD ได้ประกาศAdvanced Virtual Interrupt Controller ( AVIC ) โดยมีเป้าหมายเพื่อลดโอเวอร์เฮดการขัดจังหวะในสภาพแวดล้อมเวอร์ชวลไลเซชัน[ 37 ] เทคโนโลยีนี้ ตามที่ประกาศไว้ ไม่รองรับx2APIC [ 38 ] ในปี 2559 AVIC พร้อมใช้งานบนโปรเซสเซอร์ตระกูล AMD 15h รุ่น 6Xh (Carrizo) และรุ่นใหม่กว่า[ 39 ]
นอกจากนี้ในปี 2012 Intel ยังได้ประกาศเทคโนโลยีที่คล้ายกันสำหรับการขัดจังหวะและ การจำลองเสมือน APICซึ่งยังไม่มีชื่อแบรนด์ในขณะที่ประกาศ[ 40 ] ต่อมาได้มีการตั้งชื่อแบรนด์เป็นAPIC virtualization ( APICv ) [ 41 ] และวางจำหน่ายในเชิง พาณิชย์ในซีพียู Intel ซีรีส์ Ivy Bridge EPซึ่งจำหน่ายในชื่อXeon E5-26xx v2 (เปิดตัวปลายปี 2013) และ Xeon E5-46xx v2 (เปิดตัวต้นปี 2014) [ 42 ]
หน่วยประมวลผลกราฟิก
การจำลองกราฟิกเสมือน (Graphics virtualization) ไม่ได้เป็นส่วนหนึ่งของสถาปัตยกรรม x86 เทคโนโลยีการจำลองกราฟิกเสมือน ของ Intel (GVT) ให้การจำลองกราฟิกเสมือนเป็นส่วนหนึ่งของสถาปัตยกรรมกราฟิก Gen รุ่นใหม่ๆ ถึงแม้ว่าAMD APUจะใช้ ชุดคำสั่ง x86-64 แต่ ก็ใช้สถาปัตยกรรมกราฟิกของ AMD เอง ( TeraScale , GCNและRDNA ) ซึ่งไม่รองรับการจำลองกราฟิกเสมือนLarrabee เป็น สถาปัตยกรรมไมโครกราฟิกเดียวที่ใช้ x86 แต่ก็มีแนวโน้มว่าไม่ได้รวมการสนับสนุนการจำลองกราฟิกเสมือนไว้ด้วย
ชิปเซ็ต
การจำลองเสมือนหน่วยความจำและ I/O ดำเนินการโดยชิปเซ็ต [ 43 ] โดยทั่วไป คุณสมบัติเหล่านี้จะต้องเปิดใช้งานโดย BIOS ซึ่งจะต้องสามารถรองรับและตั้งค่าให้ใช้งานได้
การจำลองเสมือน I/O MMU (AMD-Vi และ Intel VT-d)

หน่วยจัดการหน่วยความจำอินพุต/เอาต์พุต (IOMMU) ช่วยให้เครื่องเสมือน แขก สามารถใช้ อุปกรณ์ ต่อพ่วง โดยตรง เช่น อีเธอร์เน็ต การ์ดกราฟิกเร่งความเร็ว และตัวควบคุมฮาร์ดไดรฟ์ ผ่านDMAและ การแมปการ ขัดจังหวะซึ่งบางครั้งเรียกว่าPCI passthrough [ 44 ]
นอกจากนี้ IOMMU ยังช่วยให้ระบบปฏิบัติการสามารถกำจัดบัฟเฟอร์ชั่วคราวที่จำเป็นสำหรับการสื่อสารกับอุปกรณ์ต่อพ่วงที่มี พื้นที่ หน่วยความจำเล็กกว่าพื้นที่หน่วยความจำของระบบปฏิบัติการ โดยใช้การแปลงที่อยู่หน่วยความจำ ในขณะเดียวกัน IOMMU ยังช่วยให้ระบบปฏิบัติการและไฮเปอร์ไวเซอร์ป้องกันฮาร์ดแวร์ที่มีข้อบกพร่องหรือเป็นอันตรายจากการบุกรุกความปลอดภัยของหน่วยความจำได้ อีก ด้วย
ทั้ง AMD และ Intel ได้เปิดเผยข้อมูลจำเพาะของ IOMMU แล้ว:
- เทคโนโลยีการจำลองเสมือน I/O ของ AMD หรือ "AMD-Vi" เดิมเรียกว่า "IOMMU" [ 45 ]
- เทคโนโลยี "Virtualization Technology for Directed I/O" (VT-d) ของ Intel [ 46 ]ซึ่งรวมอยู่ในโปรเซสเซอร์ Intel ระดับไฮเอนด์รุ่นใหม่ส่วนใหญ่ (แต่ไม่ใช่ทั้งหมด) ตั้งแต่สถาปัตยกรรม Core 2 เป็นต้นไป[ 47 ]
นอกเหนือจากการรองรับ CPU แล้ว ทั้งชิปเซ็ตเมนบอร์ด และเฟิร์มแวร์ระบบ ( BIOSหรือUEFI ) จำเป็นต้องรองรับฟังก์ชันการจำลองเสมือน I/O ของ IOMMU อย่างเต็มที่จึงจะสามารถใช้งานได้ เฉพาะอุปกรณ์PCIหรือPCI Express ที่รองรับ การรีเซ็ตระดับฟังก์ชัน (FLR) เท่านั้นที่สามารถจำลองเสมือนได้ด้วยวิธีนี้ เนื่องจากจำเป็นสำหรับการกำหนดฟังก์ชันอุปกรณ์ ต่างๆ ใหม่ ระหว่างเครื่องเสมือน[ 48 ] [ 49 ] หากอุปกรณ์ที่จะกำหนดไม่รองรับMessage Signaled Interrupts (MSI) จะต้องไม่ใช้ สาย ขัดจังหวะร่วมกับอุปกรณ์อื่นเพื่อให้สามารถกำหนดได้[ 50 ] อุปกรณ์ PCI ทั่วไป ทั้งหมดที่ต่อผ่านบริดจ์ PCI/ PCI-Xไปยัง PCI Express สามารถกำหนดให้กับเครื่องเสมือนแขกได้พร้อมกันทั้งหมดเท่านั้น อุปกรณ์ PCI Express ไม่มีข้อจำกัดดังกล่าว
การจำลองเสมือนเครือข่าย (VT-c)
- เทคโนโลยี "Virtualization Technology for Connectivity" (VT-c) ของ Intel [ 51 ]
PCI-SIG Single Root I/O Virtualization (SR-IOV)
PCI-SIG Single Root I/O Virtualization (SR-IOV)จัดเตรียมชุดวิธีการจำลองเสมือน I/O ทั่วไป (ไม่เฉพาะ x86) โดยอิงตาม ฮาร์ดแวร์ดั้งเดิมของ PCI Express (PCIe) ตามที่ PCI-SIG กำหนดมาตรฐานไว้: [ 52 ]
- บริการแปลงที่อยู่ (ATS)รองรับ IOV ดั้งเดิมบน PCI Express ผ่านการแปลงที่อยู่ จำเป็นต้องมีการรองรับธุรกรรมใหม่เพื่อกำหนดค่าการแปลงดังกล่าว
- IOV แบบรากเดียว (SR-IOV หรือ SRIOV)รองรับ IOV ดั้งเดิมในโทโพโลยี PCI Express ที่ซับซ้อนแบบรากเดียวที่มีอยู่ จำเป็นต้องรองรับความสามารถของอุปกรณ์ใหม่เพื่อกำหนดค่าพื้นที่การกำหนดค่าเสมือนหลายรายการ [ 53 ]
- Multi-root IOV (MR-IOV)รองรับ IOV ดั้งเดิมในโทโพโลยีใหม่ (เช่น เซิร์ฟเวอร์แบบเบลด) โดยต่อยอดจาก SR-IOV เพื่อให้มีคอมเพล็กซ์รูทหลายชุดที่ใช้ลำดับชั้น PCI Express ร่วมกัน
ใน SR-IOV ซึ่งเป็นรูปแบบที่พบได้บ่อยที่สุด VMM โฮสต์จะกำหนดค่าอุปกรณ์ที่รองรับเพื่อสร้างและจัดสรร "เงา" เสมือนของพื้นที่การกำหนดค่า เพื่อให้แขกของเครื่องเสมือนสามารถกำหนดค่าและเข้าถึงทรัพยากรอุปกรณ์ "เงา" ดังกล่าวได้โดยตรง[ 54 ]เมื่อเปิดใช้งาน SR-IOV อินเทอร์เฟซเครือข่ายเสมือนจะสามารถเข้าถึงได้โดยตรงสำหรับแขก[ 55 ] หลีกเลี่ยงการมีส่วนร่วมของ VMM และส่งผลให้ประสิทธิภาพโดยรวมสูงขึ้น[ 53 ]ตัวอย่างเช่น SR-IOV บรรลุ แบนด์วิดท์เครือข่าย bare metal มากกว่า 95% ในศูนย์ข้อมูลเสมือนของNASA [ 56 ]และในAmazon Public Cloud [ 57 ] [ 58 ]
ดูเพิ่มเติม
- การเปรียบเทียบซอฟต์แวร์การจำลองเสมือนแอปพลิเคชัน
- การเปรียบเทียบซอฟต์แวร์การจำลองเสมือนแพลตฟอร์ม
- การจำลองเสมือนโดยใช้ฮาร์ดแวร์ช่วย
- ไฮเปอร์ไวเซอร์
- การจำลองเสมือน I/O
- การจำลองเสมือนเครือข่าย
- การจำลองเสมือนระดับระบบปฏิบัติการ
- ลำดับเหตุการณ์การพัฒนาเทคโนโลยีเวอร์ชวลไลเซชัน
- เครื่องเสมือน
- รายการฮาร์ดแวร์ที่รองรับ IOMMU
- การแปลงที่อยู่ระดับที่สอง (SLAT)
- ข้อความแจ้งเตือนการขัดจังหวะ (MSI)
ลิงก์ภายนอก
- ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับเทคโนโลยีเวอร์ชวลไลเซชันของ Intel (เก็บถาวรไว้ที่ghostarchive.orgเมื่อวันที่ 10 พฤษภาคม 2022)
- หลักสูตรพิเศษที่มหาวิทยาลัยซานฟรานซิสโกเกี่ยวกับ Intel EM64T และ VT Extensions (ปี 2007)
- หลักสูตรโอเพนซอร์สและโอเพนแอ็กเซส 2 วัน เกี่ยวกับการเขียนโปรแกรม VT-x VMM