QEMU 7.1 ใช้การปรับปรุงด้วยการถ่ายโอนหน่วยความจำใน Linux
มีการประกาศเปิดตัว QEMU เวอร์ชัน 7.1 ซึ่งมีการปรับปรุงหลายอย่างสำหรับอีมูเลเตอร์ต่างๆ โดยเฉพาะอย่างยิ่งการเปลี่ยนแปลงสำหรับ ARM และ RISC-V รวมถึงการปรับปรุงการถ่ายโอนหน่วยความจำสำหรับ Linux ในการเตรียมการสำหรับ เวอร์ชัน7.1 นั้น มีการเปลี่ยนแปลงมากกว่า 2800 รายการโดยนักพัฒนา 238 คน
สำหรับผู้ที่เพิ่งเริ่มใช้ QEMU คุณควรรู้ว่ามันอนุญาตให้คุณเรียกใช้โปรแกรมที่สร้างขึ้นสำหรับแพลตฟอร์มฮาร์ดแวร์เดียวบนระบบที่มีสถาปัตยกรรมที่แตกต่างอย่างสิ้นเชิง เช่น การเรียกใช้แอปพลิเคชัน ARM บนพีซีที่รองรับ x86
ในโหมดเวอร์ชวลไลเซชันใน QEMU ประสิทธิภาพของการเรียกใช้โค้ดในสภาพแวดล้อมแบบแยกส่วนจะคล้ายกับของระบบฮาร์ดแวร์เนื่องจากการสั่งการโดยตรงบน CPU และการใช้ Xen hypervisor หรือโมดูล KVM
ความแปลกใหม่หลักของ QEMU 7.1
ในเวอร์ชันใหม่สำหรับ Linux นี้ ได้มีการนำตัวเลือก zero-copy-send มาใช้ซึ่งช่วยให้สามารถจัดการการถ่ายโอนหน้าหน่วยความจำระหว่างการย้ายระบบแบบสดโดยไม่ต้องมีการบัฟเฟอร์ขั้นกลาง
นอกจากนี้QMP (QEMU Machine Protocol) ยังเพิ่มความสามารถในการใช้คำสั่ง `block-export-add` เพื่อส่งออกอิมเมจ NBDพร้อมข้อมูลเพจในสถานะ "dirty" และยังมีการเพิ่มคำสั่ง `query-stats` และ `query-stats-schema` ใหม่สำหรับการสอบถามสถิติจากระบบย่อยต่างๆ ของ QEMU อีกด้วย
การเปลี่ยนแปลงที่สำคัญอีกประการหนึ่งใน QEMU เวอร์ชันใหม่นี้คือตัวแทนระบบปฏิบัติการแขก (guest agent) มีความเข้ากันได้กับแพลตฟอร์ม Solaris ดีขึ้นและเพิ่มคำสั่งใหม่ 'guest-get-diskstats' และ 'guest-get-cpustats' เพื่อแสดงสถานะของดิสก์และซีพียู นอกจากนี้ยังมีการเพิ่มข้อมูล NVMe SMART ลงในคำสั่ง 'guest-get-disks' และข้อมูลประเภทบัส NVMe ลงในคำสั่ง 'guest-get-fsinfo' ด้วย
นอกจากนี้ ยัง ได้เพิ่มอีมูเลเตอร์ LoongArch ใหม่เพื่อรองรับ สถาปัตยกรรมชุดคำสั่ง LoongArch เวอร์ชัน 64 บิต (LA64) อีมูเลเตอร์นี้รองรับโปรเซสเซอร์ Loongson 3 5000 และนอร์ธบริดจ์ Loongson 7A1000
นอกจากนี้ ยังมีการเน้นย้ำว่าโปรแกรมจำลอง ARM ได้นำเครื่องจักรจำลองประเภทใหม่ๆ มาใช้ ได้แก่Aspeed AST1030 SoC, Qualcomm และ AST2600/AST1030 (fby35)รวมถึงเพิ่มการสนับสนุนการจำลอง CPU Cortex-A76 และ Neoverse-N1 ตลอดจนส่วนขยายโปรเซสเซอร์ SME (Scalable Matrix Extensions), RAS (Reliability, Availability, Serviceability) และคำสั่งเพื่อป้องกันการรั่วไหลของแคชภายในระหว่างการประมวลผลคำสั่งแบบคาดการณ์ล่วงหน้าใน CPU
ในขณะที่โปรแกรมจำลองสถาปัตยกรรม RISC-V ได้เพิ่มการสนับสนุนสำหรับส่วนขยายชุดคำสั่ง (ISA) ใหม่ที่กำหนดไว้ในข้อกำหนด 1.12.0 รวมถึงการสนับสนุนเพิ่มเติมสำหรับส่วนขยาย Sdtrig และการสนับสนุนที่ดีขึ้นสำหรับคำสั่งเวกเตอร์
การเปลี่ยนแปลงที่สำคัญอื่นๆในเวอร์ชันใหม่นี้ ได้แก่:
- ปรับปรุงตัวเลือกการดีบัก
- เพิ่มการรองรับ TPM (Trusted Platform Module) ให้กับเครื่องจำลอง 'virt' และเพิ่มการรองรับ Ibex SPI ให้กับเครื่อง 'OpenTitan'
- โปรแกรมจำลอง x86 สำหรับ KVM ได้เพิ่มการรองรับสำหรับการจำลองเสมือนของกลไกการติดตาม LBR (Last Branch Record)
- ใช้การจำลองตัวจัดการขัดจังหวะ GICv4 สำหรับเครื่อง 'virt'
- โปรแกรมจำลองสถาปัตยกรรม HPPA มีเฟิร์มแวร์ใหม่ที่ใช้ SeaBIOS v6 ที่รองรับการใช้แป้นพิมพ์ PS/2 ในเมนูบูต
- ปรับปรุงการจำลองพอร์ตอนุกรม
- เพิ่มแบบอักษรคอนโซล STI เพิ่มเติม
- โปรแกรมจำลองสถาปัตยกรรม MIPS สำหรับบอร์ด Nios2 (-เครื่อง 10m50-ghrd) ใช้การจำลองตัวควบคุมการขัดจังหวะเวกเตอร์และชุดการลงทะเบียนเงา
- ปรับปรุงการจัดการข้อยกเว้น
- เพิ่มความสามารถในการใช้อุปกรณ์ 4A UART สูงสุด 16550 เครื่องในโปรแกรมจำลองสถาปัตยกรรม OpenRISC สำหรับเครื่อง 'or1k-sim'
- โปรแกรมจำลองสถาปัตยกรรม 390x ให้การสนับสนุนส่วนขยาย Vector-Enhancements Facility 2 (VEF 2) BIOS s390-ccw มีความสามารถในการบูตจากดิสก์ที่มีขนาดเซกเตอร์อื่นที่ไม่ใช่ 512 ไบต์
- เพิ่มการรองรับเคอร์เนล lx106 และรหัสอ็อบเจ็กต์การทดสอบแคชในโปรแกรมจำลองสถาปัตยกรรม Xtensa
สุดท้ายนี้หากคุณสนใจเรียนรู้เพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงและคุณสมบัติใหม่ใน QEMU เวอร์ชัน 7.1 คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ต่อไปนี้