QEMU 7.0 ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์ถœ์‹œ

QEMU 7.0 ํ”„๋กœ์ ํŠธ์˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ์„œ QEMU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์™„์ „ํžˆ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€์ง„ ์‹œ์Šคํ…œ์—์„œ ํ•˜๋‚˜์˜ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๊ตฌ์ถ•๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด x86 ํ˜ธํ™˜ PC์—์„œ ARM ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. QEMU์˜ ๊ฐ€์ƒํ™” ๋ชจ๋“œ์—์„œ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ์˜ ์ฝ”๋“œ ์‹คํ–‰ ์„ฑ๋Šฅ์€ CPU์—์„œ ์ง์ ‘ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  Xen ํ•˜์ดํผ๋ฐ”์ด์ € ๋˜๋Š” KVM ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋“œ์›จ์–ด ์‹œ์Šคํ…œ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜ x86 ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๋นŒ๋“œ๋œ Linux ์‹คํ–‰ ํŒŒ์ผ์ด ๋น„ x86 ์•„ํ‚คํ…์ฒ˜์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก Fabrice Bellard๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„๊ฐ„์˜ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด 14๊ฐœ์˜ ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์—๋ฎฌ๋ ˆ์ด์…˜ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์˜ ์ˆ˜๋Š” 400๊ฐœ๋ฅผ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 7.0์„ ์ค€๋น„ํ•˜๋ฉด์„œ 2500๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ 225๊ฐœ ์ด์ƒ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

QEMU 7.0์— ์ถ”๊ฐ€๋œ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:

  • x86 ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” Intel Xeon Scalable ์„œ๋ฒ„ ํ”„๋กœ์„ธ์„œ์— ๊ตฌํ˜„๋œ Intel AMX(Advanced Matrix Extensions) ๋ช…๋ น ์„ธํŠธ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. AMX๋Š” ํ–‰๋ ฌ ๊ณฑ์…ˆ์„ ์œ„ํ•œ TMUL(Tile matrix MULtiply)๊ณผ ๊ฐ™์ด ์ด๋Ÿฌํ•œ ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋งž์ถคํ˜• TMM "TILE" ๋ ˆ์ง€์Šคํ„ฐ ๋ฐ ๋ช…๋ น์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ACPI ERST ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ACPI ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋ฅผ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” virtiofs ๋ชจ๋“ˆ์—์„œ ๋ณด์•ˆ ๋ ˆ์ด๋ธ”์— ๋Œ€ํ•œ ์ง€์›์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝ์„ฑ CVE-2022-0358์„ ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค๋ฅธ ๊ทธ๋ฃน์— ์†ํ•˜๊ณ  SGID ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ๋Š” virtiofs๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์‹œ์Šคํ…œ์—์„œ ๊ถŒํ•œ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง„ํ–‰ ์ค‘์ธ ํ™œ์„ฑ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ์œ ์—ฐ์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์Šค๋ƒ…์ƒท์ด ์ƒ์„ฑ๋œ ํ›„ CBW(Copy-Before-Write) ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ์Šค๋ƒ…์ƒท์˜ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์ด ๋ฐฑ์—…๋˜๋Š” ์˜์—ญ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•จ). ์”๋‹ˆ๋‹ค). qcow2 ์ด์™ธ์˜ ํ˜•์‹์˜ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—…์ด ์žˆ๋Š” ์Šค๋ƒ…์ƒท์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์ง์ ‘ ์ œ๊ณต๋˜์ง€ ์•Š๊ณ  ์Šค๋ƒ…์ƒท ์•ก์„ธ์Šค ๋ธ”๋ก ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. CBW ํ•„ํ„ฐ์˜ ์ž‘๋™์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ • ๋น„ํŠธ๋งต์„ ์ฒ˜๋ฆฌ์—์„œ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 'virt' ๋จธ์‹ ์šฉ ARM ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” virtio-mem-pci, ๊ฒŒ์ŠคํŠธ CPU ํ† ํด๋กœ์ง€ ๊ฐ์ง€ ๋ฐ hvf ๊ฐ€์†๊ธฐ์™€ ํ•จ๊ป˜ KVM ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ PAuth ํ™œ์„ฑํ™”์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. 'xlnx-versal-virt' ๋ณด๋“œ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ PMC SLCR ๋ฐ OSPI ํ”Œ๋ž˜์‹œ ์ปจํŠธ๋กค๋Ÿฌ ์—๋ฎฌ๋ ˆ์ด์…˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด CRF ๋ฐ APU ์ œ์–ด ๋ชจ๋ธ์ด 'xlnx-zynqmp' ์—๋ฎฌ๋ ˆ์ดํŠธ ๋จธ์‹ ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. FEAT_LVA2, FEAT_LVA(Large Virtual Address space) ๋ฐ FEAT_LPA(Large Physical Address space) ํ™•์žฅ์˜ ์—๋ฎฌ๋ ˆ์ด์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Classic TCG(Tiny Code Generator)๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  QEMU๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ RAM์ด ์—†๋Š” ARMv4 ๋ฐ ARMv5 CPU๊ฐ€ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
  • RISC-V ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” KVM ํ•˜์ดํผ๋ฐ”์ด์ €์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ  Vector 1.0 ๋ฒกํ„ฐ ํ™•์žฅ๊ณผ Zve64f, Zve32f, Zfhmin, Zfh, zfinx, zdinx ๋ฐ zhinx{min} ๋ช…๋ น์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ 'spike' ๋จธ์‹ ์šฉ OpenSBI(RISC-V Supervisor Binary Interface) ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ 'virt' ๋จธ์‹ ์˜ ๊ฒฝ์šฐ ์ตœ๋Œ€ 32๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  AIA๋ฅผ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.
  • HPPA ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” HP-UX VDE/CDE ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์„ ์œ„ํ•ด ์ตœ๋Œ€ 16๊ฐœ์˜ vCPU์™€ ํ–ฅ์ƒ๋œ ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. SCSI ์žฅ์น˜์˜ ๋ถ€ํŒ… ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ๋Œ€ 4๊ฐœ์˜ CPU ์ฝ”์–ด ์‚ฌ์šฉ, ์™ธ๋ถ€ initrd ์ด๋ฏธ์ง€ ๋กœ๋“œ ๋ฐ 'sim' ๋ณด๋“œ์šฉ OpenRISC ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ๋ถ€ํŒ… ๊ฐ€๋Šฅํ•œ ์ฝ”์–ด์— ๋Œ€ํ•œ ์žฅ์น˜ ํŠธ๋ฆฌ ์ž๋™ ์ƒ์„ฑ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ 'pseries' ๋จธ์‹ ์šฉ PowerPC ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์ค‘์ฒฉ๋œ KVM ํ•˜์ดํผ๋ฐ”์ด์ €์˜ ์ œ์–ดํ•˜์— ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. spapr-nvdimm ์žฅ์น˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 'powernv' ์—๋ฎฌ๋ ˆ์ดํŠธ ๋จธ์‹ ์šฉ XIVE2 ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ PHB5 ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ์ง€์› ์ถ”๊ฐ€, XIVE ๋ฐ PHB 3/4์— ๋Œ€ํ•œ ์ง€์› ๊ฐœ์„ .
  • z390 ํ™•์žฅ(Miscellaneous-Instruction-Extensions Facility 15)์— ๋Œ€ํ•œ ์ง€์›์ด s3x ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€