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

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

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

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

  • ํด๋ž˜์‹ TCG ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ์˜ x86 ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— AVX, AVX2, F16C, FMA3 ๋ฐ VAES ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ง€์›๊ณผ SSE ๋ช…๋ น์–ด ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. KVM ์ข…๋ฃŒ ์ถ”์  ๋ฉ”์ปค๋‹ˆ์ฆ˜("notify vmexit")์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์–ด ์ค‘๋‹จ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š” CPU ์˜ค๋ฅ˜๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ARM ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” CPU Cortex-A35 ๋ฐ ํ”„๋กœ์„ธ์„œ ํ™•์žฅ ETS(Enhanced TranslationSynchronization), PMUv3p5(PMU Extensions 3.5), GTG(Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS(์•ก์„ธ์Šค ํ”Œ๋ž˜๊ทธ ๋ฐ "dirty"์˜ ํ•˜๋“œ์›จ์–ด ์ œ์–ด)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ) ๋ฐ E0PD(๊ณต์œ  ์ฃผ์†Œ ๋งต์— ๋Œ€ํ•œ EL0 ์•ก์„ธ์Šค ๋ฐฉ์ง€).
  • LoongArch ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” fw_cfg DMA, ๋ฉ”๋ชจ๋ฆฌ ํ•ซ ํ”Œ๋Ÿฌ๊น… ๋ฐ TPM(์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ๋ชจ๋“ˆ) ์žฅ์น˜ ์—๋ฎฌ๋ ˆ์ด์…˜์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • OpenRISC ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์ง€์†์ ์ธ ํ†ตํ•ฉ ์‹œ์Šคํ…œ์—์„œ ์žฅ์น˜ ํ…Œ์ŠคํŠธ ๋ฐ ์‚ฌ์šฉ์„ ์œ„ํ•ด 'virt' ํ”Œ๋žซํผ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์‹ TCG(Tiny Code Generator) ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์‹คํ–‰ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ 'virt' ๋จธ์‹ ์˜ RISC-V ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—๋Š” ์ด์ œ S ๋ชจ๋“œ์˜ pflash์—์„œ ํŽŒ์›จ์–ด๋ฅผ ๋ถ€ํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์žฅ์น˜ ํŠธ๋ฆฌ ์ž‘์—…์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 390x ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” MSA5 ํ™•์žฅ(์˜์‚ฌ ๋‚œ์ˆ˜ ์ƒ์„ฑ์„ ์œ„ํ•œ PRNO ๋ช…๋ น์–ด๊ฐ€ ํฌํ•จ๋œ Message-Security-Assist Extension 5), KIMD/KLM ๋ช…๋ น์–ด(SHA-512 ๊ตฌํ˜„) ๋ฐ ๊ฒŒ์ŠคํŠธ์— ๋Œ€ํ•œ ํ™•์žฅ๋œ zPCI ํ•ด์„์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. KVM ํ•˜์ดํผ๋ฐ”์ด์ €.
  • ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…์„ ์œ„ํ•œ ๋ฐฑ์—”๋“œ๋Š” NUMA ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ „ ํ• ๋‹น์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • LUKS ์•”ํ˜ธํ™”๋œ ๋ธ”๋ก ์žฅ์น˜ ํ—ค๋”์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๊ฐ€ ๊ฐ•ํ™”๋˜์—ˆ์œผ๋ฉฐ macOS์—์„œ LUKS ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ๋‹ค๋ฅธ ๊ฐ€์ƒ ๋จธ์‹ ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด Plan 9 ๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” 9pfs ๋ฐฑ์—”๋“œ์—์„œ๋Š” ์‹๋ณ„์ž ํ…Œ์ด๋ธ”์˜ GHashTable ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜๋˜์—ˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ์ผ๋ถ€ ์ƒํ™ฉ์—์„œ๋Š” ์„ฑ๋Šฅ์ด 6~12๋ฐฐ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. .
  • ์ƒˆ๋กœ์šด netdev ๋ฐฑ์—”๋“œ ์ŠคํŠธ๋ฆผ ๋ฐ dgram์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • FreeBSD์— ๋Œ€ํ•œ ์ง€์›์ด ARM ๊ฒŒ์ŠคํŠธ ์—์ด์ „ํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • macOS์šฉ GUI ๋นŒ๋“œ๋Š” ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ์— Cocoa ๋ฐ SDL/GTK ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ด์žฅ ํ•˜์œ„ ๋ชจ๋“ˆ "slirp"๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ libslirp๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ๊ธฐ๋Šฅ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด "๋น… ์—”๋””์•ˆ" ๋ฐ”์ดํŠธ ์ˆœ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 32๋น„ํŠธ MIPS ํ”„๋กœ์„ธ์„œ๊ฐ€ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ง€์›์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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