กลับไปหน้าบทความ

อ่าน 12 นาที

เวอร์ชวลไลเซชัน x86

การจำลองเสมือน x86 คือการใช้ ความสามารถในการ จำลอง เสมือนที่ได้รับการสนับสนุนจากฮาร์ดแวร์ บน ซีพียู x86 / x86-64

เวอร์ชวลไลเซชัน 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 Phenom

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)

ซีพียูIntel Core i7 (บลูมฟิลด์)

ก่อนหน้านี้มีชื่อรหัสว่า "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)

บันทึกเคอร์เนล Linuxที่แสดงข้อมูล AMD-Vi

หน่วยจัดการหน่วยความจำอินพุต/เอาต์พุต (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 ]

ดูเพิ่มเติม

  • ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับเทคโนโลยีเวอร์ชวลไลเซชันของ Intel (เก็บถาวรไว้ที่ghostarchive.orgเมื่อวันที่ 10 พฤษภาคม 2022)
  • หลักสูตรพิเศษที่มหาวิทยาลัยซานฟรานซิสโกเกี่ยวกับ Intel EM64T และ VT Extensions (ปี 2007)
  • หลักสูตรโอเพนซอร์สและโอเพนแอ็กเซส 2 วัน เกี่ยวกับการเขียนโปรแกรม VT-x VMM
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=X86_virtualization&oldid=1340447463#Interrupt_virtualization_.28AMD_AVIC_and_Intel_APICv.29 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เวอร์ชวลไลเซชัน x86

การจำลองเสมือน x86 คือการใช้ ความสามารถในการ จำลอง เสมือนที่ได้รับการสนับสนุนจากฮาร์ดแวร์ บน ซีพียู x86 / x86-64

การจำลองเสมือนด้วยซอฟต์แวร์

การอภิปรายต่อไปนี้จะมุ่งเน้นเฉพาะการจำลองเสมือนของสถาปัตยกรรม x86 ใน โหมดป้องกัน เท่านั้น

การจำลองเสมือนโดยใช้ฮาร์ดแวร์ช่วย

ฮาร์ดแวร์เวอร์ชวลไลเซชัน x86 รุ่นแรกแก้ไขปัญหาคำสั่งพิเศษ ส่วนปัญหาประสิทธิภาพต่ำของหน่วยความจำระบบเสมือนได้รับการแก้ไขด้วย เวอร์ชวลไลเซชัน MMU ที่เพิ่มเข้ามาในชิปเซ็ตในภายหลัง ในปี 2005 และ 2006 Intel และ AMD (ทำงานแยกกัน) ได้สร้าง ส่วนขยายโปรเซสเซอร์ ใหม่...

หน่วยประมวลผลกลาง

เนื่องจาก Intel 80286 ไม่สามารถรันแอปพลิเคชัน DOS พร้อมกันได้ดีในโหมดป้องกัน Intel จึงแนะนำ โหมด 8086 เสมือน ใน ชิป 80386 ซึ่งนำเสนอโปรเซสเซอร์ 8086 เสมือนบนชิป 386 และชิปรุ่นต่อมา อย่างไรก็ตาม...