การเปิดตัวโปรแกรมจำลอง QEMU 7.2

มีการนำเสนอการเปิดตัวโครงการ QEMU 7.2 แล้ว ในฐานะอีมูเลเตอร์ QEMU ช่วยให้คุณสามารถรันโปรแกรมที่คอมไพล์สำหรับแพลตฟอร์มฮาร์ดแวร์เดียวบนระบบที่มีสถาปัตยกรรมที่แตกต่างไปจากเดิมอย่างสิ้นเชิง เช่น รันแอปพลิเคชัน ARM บนพีซีที่รองรับ x86 ในโหมดการจำลองเสมือนใน QEMU ประสิทธิภาพของการเรียกใช้โค้ดในสภาพแวดล้อมแบบแยกจะใกล้เคียงกับประสิทธิภาพของระบบฮาร์ดแวร์ เนื่องจากการดำเนินการตามคำสั่งโดยตรงบน CPU และการใช้ Xen Hypervisor หรือโมดูล KVM

เดิมทีโปรเจ็กต์นี้สร้างขึ้นโดย Fabrice Bellard เพื่อให้โปรแกรมปฏิบัติการ Linux ที่สร้างขึ้นสำหรับแพลตฟอร์ม x86 ทำงานบนสถาปัตยกรรมที่ไม่ใช่ x86 ในช่วงหลายปีที่ผ่านมาของการพัฒนา มีการเพิ่มการรองรับการจำลองแบบเต็มรูปแบบสำหรับสถาปัตยกรรมฮาร์ดแวร์ 14 แบบ จำนวนอุปกรณ์ฮาร์ดแวร์ที่จำลองมีมากกว่า 400 รายการ ในการเตรียมการสำหรับเวอร์ชัน 7.2 มีการเปลี่ยนแปลงมากกว่า 1800 รายการจากนักพัฒนา 205 คน

การปรับปรุงสำคัญที่เพิ่มเข้ามาใน QEMU 7.2:

  • โปรแกรมจำลอง x86 ในตัวสร้างโค้ด TCG แบบคลาสสิกได้เพิ่มการรองรับคำสั่ง AVX, AVX2, F16C, FMA3 และ VAES รวมถึงการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับการใช้คำสั่ง SSE สำหรับ KVM มีการเพิ่มการรองรับสำหรับกลไกในการติดตามการออกจากเครื่องเสมือน (“ แจ้งเตือน vmexit”) ซึ่งช่วยให้คุณหลีกเลี่ยงข้อผิดพลาดใน CPU ที่อาจนำไปสู่การแฮงค์
  • โปรแกรมจำลอง ARM รองรับ Cortex-A35 CPU และส่วนขยายโปรเซสเซอร์ ETS (การซิงโครไนซ์การแปลขั้นสูง), PMUv3p5 (ส่วนขยาย PMU 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (การควบคุมฮาร์ดแวร์ของแฟล็กการเข้าถึงและสถานะ "สกปรก") และ E0PD (ป้องกันการเข้าถึง EL0 ไปยังการแมปที่อยู่แบบแบ่งพาร์ติชัน)
  • โปรแกรมจำลอง LoongArch เพิ่มการรองรับ fw_cfg DMA, หน่วยความจำ hot-plug และการจำลองอุปกรณ์ TPM (Trusted Platform Module)
  • โปรแกรมจำลองสถาปัตยกรรม OpenRISC ใช้แพลตฟอร์ม 'virt' สำหรับการทดสอบอุปกรณ์และใช้งานในระบบบูรณาการอย่างต่อเนื่อง การสนับสนุนสำหรับการดำเนินการแบบมัลติเธรดของเครื่องสร้างโค้ด TCG (Tiny Code Generator) แบบคลาสสิกได้ถูกนำมาใช้แล้ว
  • ตัวจำลองของสถาปัตยกรรม RISC-V ในเครื่องจำลอง 'virt' มีความสามารถในการโหลดเฟิร์มแวร์จาก pflash ในโหมด S ปรับปรุงการทำงานกับแผนผังอุปกรณ์
  • โปรแกรมจำลอง 390x ให้การสนับสนุน MSA5 (ส่วนขยาย Message-Security-Assist 5 พร้อมคำสั่ง PRNO สำหรับการสร้างตัวเลขสุ่มหลอก), คำแนะนำ KIMD/KLM (การใช้งาน SHA-512) และการตีความ zPCI แบบขยายสำหรับระบบแขกที่ใช้ไฮเปอร์ไวเซอร์ KVM .
  • แบ็กเอนด์สำหรับการทำงานกับหน่วยความจำให้การจัดสรรหน่วยความจำล่วงหน้าโดยคำนึงถึงสถาปัตยกรรม NUMA
  • การตรวจสอบส่วนหัวของอุปกรณ์บล็อกที่เข้ารหัสของ LUKS ได้รับการเสริมความแข็งแกร่ง และเพิ่มความสามารถในการสร้างอิมเมจ LUKS บน macOS แล้ว
  • แบ็กเอนด์ 9pfs ซึ่งอนุญาตให้ใช้ระบบไฟล์เครือข่าย Plan 9 เพื่อเข้าถึงเครื่องเสมือนเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง ได้เปลี่ยนไปใช้แฮช GHashTable ในตารางตัวระบุ ซึ่งในบางสถานการณ์ทำให้ประสิทธิภาพเพิ่มขึ้น 6-12 เท่า
  • เพิ่มสตรีมแบ็กเอนด์ netdev และ dgram ใหม่
  • เพิ่มการรองรับ FreeBSD ให้กับตัวแทนสำหรับแขกที่ใช้ ARM
  • GUI บิวด์สำหรับ macOS ช่วยให้สามารถรวมอินเทอร์เฟซที่ใช้ Cocoa และ SDL/GTK ไว้ในไฟล์ปฏิบัติการไฟล์เดียวได้
  • โมดูลย่อย "slirp" ในตัวถูกลบออกแล้ว แต่ขอแนะนำให้ใช้ไลบรารีระบบ libslirp แทน
  • เนื่องจากขาดความสามารถในการทดสอบ จึงเลิกใช้การรองรับระบบโฮสต์ที่มีโปรเซสเซอร์ MIPS 32 บิตที่ใช้ลำดับไบต์ Big Endian

ที่มา: opennet.ru

เพิ่มความคิดเห็น