๋ณธ๋ฌธ์œผ๋กœ ์ด๋™

IOMMU

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „.
์ž…์ถœ๋ ฅ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜(IOMMU) ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜ (MMU)

IOMMU (Input/Output Memory Management Unit, ์ž…์ถœ๋ ฅ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜, IOMMU)๋Š” DMA ๊ฐ€๋Šฅํ•œ ์ž…์ถœ๋ ฅ ๋ฒ„์Šค์™€ ์ฃผ๊ธฐ์–ต์žฅ์น˜๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜(MMU)์ด๋‹ค. MMU๊ฐ€ CPU์— ๋ณด์ด๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋“ฏ์ด, IOMMU๋Š” ์ฃผ๋ณ€๊ธฐ๊ธฐ์—์„œ ๋ณด์ด๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ(์žฅ์น˜ ์ฃผ์†Œ ๋˜๋Š” ์ž…์ถœ๋ ฅ ์ฃผ์†Œ๋ผ๊ณ  ๋ถ€๋ฆ„)์„ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ฃผ๋ณ€๊ธฐ๊ธฐ์˜ ์˜ค๋™์ž‘์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค.

์‹ค์ œ ์˜ˆ์‹œ์™€ ํ˜ธ์นญ

[ํŽธ์ง‘]

IOMMU์˜ ์˜ˆ๋กœ, AGP๋‚˜ PCI ์ต์Šคํ”„๋ ˆ์Šค์˜ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” GART(Graphics Address Remapping Table)๊ฐ€ ์žˆ๋‹ค.

AMD๋Š” ํ•˜์ดํผํŠธ๋žœ์ŠคํฌํŠธ ์•„ํ‚คํ…์ฒ˜์—์„œ์˜ IOMMU ๊ธฐ์ˆ ์˜ ๋ฐฉ๋ฒ•์„ ๊ณตํ‘œํ•˜๊ณ  ์žˆ๋‹ค.[1] ์ธํ…”์€ IOMMU์˜ ๋ฐฉ๋ฒ•์„ VT-d (Virtualization Technology for Directed I/O)๋กœ ๊ณตํ‘œํ•˜๊ณ  ์žˆ๋‹ค.[2] ์ฌ ๋งˆ์ดํฌ๋กœ ์‹œ์Šคํ…œ์ฆˆ์˜ IOMMU๋Š” Solaris Developer Connection์˜ DVMA(Device Virtual Memory Access)๋กœ ๊ณตํ‘œํ•˜๊ณ  ์žˆ๋‹ค.[3] IBM์˜ IOMMU๋Š” TCE(Translation Control Entry)๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฌธ์„œ๊ฐ€ ์žˆ๋‹ค.[4] PCI-SIG ์—์„œ๋Š” ๊ด€๋ จ๋˜๋Š” ๋ถ€๋ถ„์„ I/O ๊ฐ€์ƒํ™” (IOV)[5]์™€ Address Translation Services (ATS) ๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ์žˆ๋‹ค.

x86์˜ IOMMU์— ๋Œ€ํ•ด์„œ๋Š” x86 ๊ฐ€์ƒํ™”๋„ ์ฐธ๊ณ ํ•  ๊ฒƒ.

์ด์ 

[ํŽธ์ง‘]

๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๋น„๊ตํ•œ IOMMU์˜ ์ด์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ํฐ ๋ฒ„ํผ๋ฅผ ํ™•๋ณดํ•  ๋•Œ์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์—ฐ์†์ด๋ž€ ๊ฒƒ์„(์‹ค์ œ๋กœ ๋‚˜๋‰˜์—ˆ์ง€๋งŒ) ๋ณด์ฆํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. IOMMU๊ฐ€ ์ด์–ด์ ธ ์žˆ๊ฒŒ๋” ๊ฐ€์ƒ ์ฃผ์†Œ์™€ ๋‚˜๋‰œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ์˜ ๋งคํ•‘์„ ์‹คํ–‰ํ•œ๋‹ค.
  • ์ฃผ๊ธฐ์–ต ๋ฉ”๋ชจ๋ฆฌ ์ „์ฒด์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ์˜ ์ฃผ์†Œ ํญ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ฃผ๋ณ€๊ธฐ๊ธฐ(๋ฒ„์Šค)์ผ ๋•Œ์—๋Š” IOMMU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์œ„์— ์–ด๋””๋“  ๋ฒ„ํผ๊ฐ€ ์žˆ์–ด๋„ ์•ก์„ธ์Šค๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๊ฒƒ์— ์˜ํ•ด ์ฃผ๋ณ€๊ธฐ๊ธฐ๊ฐ€ ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„์— ์žˆ๋Š” ๋ฒ„ํผ์™€ ์‹ค์ œ ๋ฒ„ํผ ๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง„๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ตœ์‹  x86๊ณ„์—ด ํ”„๋กœ์„ธ์„œ๋Š” PAE ๊ธฐ๋Šฅ์— ์˜ํ•ด 4GB ์ด์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ด€๋ฆฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ 32๋น„ํŠธ์˜ PCI ์žฅ์น˜๋Š” 4GB๋ฅผ ๋„˜๋Š” ์ฃผ์†Œ์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๋‹จ์ˆœํžˆ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋‹ค. IOMMU๊ฐ€ ์—†์„ ๋•Œ์— ์šด์˜ ์ฒด์ œ๋Š” ๋”๋ธ” ๋ฒ„ํผ๋ง(์œˆ๋„)์ด๋‚˜ ๋ฐ”์šด์Šค ๋ฒ„ํผ(๋ฆฌ๋ˆ…์Šค)๋กœ ๋ถˆ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์— ์˜ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์—†๋‹ค๋ฉด ์žฅ์น˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋‹ค. ์ด๊ฒƒ์— ์˜ํ•ด ์žฅ์น˜์˜ ์˜ค๋™์ž‘์ด๋‚˜ ์•…์„ฑ ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณดํ˜ธํ•œ๋‹ค. IOMMU์˜ ์„ค์ •์€ CPU ์ƒ์—์„œ ๋™์ž‘ํ•˜๋Š” OS๊ฐ€ ์‹คํ–‰ํ•˜๊ธฐ์— ์žฅ์น˜์—์„œ ์„ค์ •ํ•  ์ˆ˜๋Š” ์—†๋‹ค.
    • ๊ฐ€์ƒํ™”์—์„œ๋Š” ๊ฒŒ์ŠคํŠธ OS๊ฐ€ IOMMU๋ฅผ ์ง์ ‘ ์ œ์–ดํ•˜๊ฒŒ ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
    • ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ผ IOMMU๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ์˜ ์žฌ๋งคํ•‘์„ ์‹คํ–‰ํ•œ๋‹ค.

IOMMU๋Š” CPU๊ฐ€ ์žฅ์น˜์™€ (DMA๊ฐ€ ์•„๋‹Œ) ๋ณด๋“œ ๋งต ์ž…์ถœ๋ ฅ์œผ๋กœ ํ†ต์‹ ํ•  ๋•Œ์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ฒฐ์ 

[ํŽธ์ง‘]

IOMMU๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์— ๊ฒฐ์ ์œผ๋กœ์จ ๋‹ค์Œ์˜ ์‚ฌํ•ญ์ด ์ง€์ ๋˜๊ณ  ์žˆ๋‹ค.[6]

  • IOMMU์— ์˜ํ•œ ๋ณ€ํ™˜๊ณผ ๊ด€๋ฆฌ์— ์˜ํ•ด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.
  • I/O์šฉ์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์žˆ๊ธฐ์— ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ทธ๋งŒํผ ์†Œ๋น„๋œ๋‹ค ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ๊ธฐ๊ธฐ์—์„œ ํ”„๋กœ์„ธ์„œ ๊ฐ„์˜ I/O์šฉ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๊ณต์œ  ๊ฐ€๋Šฅํ•  ๋•Œ์— ๋ฌธ์ œ๋Š” ์กฐ๊ธˆ ์™„ํ™”๋œ๋‹ค.

IOMMU ์™€ ๊ฐ€์ƒํ™”์˜ ๊ด€๊ณ„

[ํŽธ์ง‘]

์šด์˜ ์ฒด์ œ๊ฐ€ Xen ๋“ฑ์˜ ๊ฐ€์ƒํ™” ์†Œํ”„ํŠธ์›จ์–ด ์ƒ์— ๋™์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ ์šด์˜ ์ฒด์ œ๋Š” ์•ก์„ธ์Šคํ•˜๊ณ  ์žˆ๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ชจ๋ฅธ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ฃผ๋ณ€๊ธฐ๊ธฐ์— DMA๋ฅผ ์ง€์‹œํ•˜๋„๋ก ํ•˜์—ฌ๋„ ์ง์ ‘์ ์œผ๋กœ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์‹ค์ œ๋กœ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์ด ์ž…์ถœ๋ ฅ ์กฐ์ž‘์— ๋Œ€ํ•˜์—ฌ ๋ณ€ํ™˜์„ ํ•˜๊ณ  ์žˆ์–ด ์ž…์ถœ๋ ฅ ์กฐ์ž‘์ง€์—ฐ์ด ๋ฐœ์ƒํ•˜๋Š” ์›์ธ์ด ๋˜๊ณ  ์žˆ๋‹ค.

IOMMU๋Š” ๊ฒŒ์ŠคํŠธ OS์™€ ์ฃผ๋ณ€๊ธฐ๊ธฐ์˜ ์•ก์„ธ์Šคํ•˜๋Š” ์ฃผ์†Œ์˜ ๋งคํ•‘์„ ํ•˜๊ธฐ์—, ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.[7]

๊ฐ™์ด ๋ณด๊ธฐ

[ํŽธ์ง‘]

๊ฐ์ฃผ

[ํŽธ์ง‘]
  1. โ†‘ โ€œAMD I/O Virtualization Technology (IOMMU) Specification Revision 1.0โ€ (PDF) (์˜์–ด). 2006๋…„ 2์›” 1์ผ์— ํ™•์ธํ•จ.
  2. โ†‘ โ€œMainstreaming Server Virtualization: The Intel Approachโ€ (PDF) (์˜์–ด). 2006๋…„ 3์›” 1์ผ์— ํ™•์ธํ•จ.
  3. โ†‘ โ€œDVMA Resources and IOMMU Translationsโ€ (์˜์–ด). 2007๋…„ 4์›” 30์ผ์— ํ™•์ธํ•จ.
  4. โ†‘ โ€œLogical Partition Security in the IBM eServer pSeries 690โ€ (์˜์–ด). 2007๋…„ 4์›” 30์ผ์— ํ™•์ธํ•จ.
  5. โ†‘ โ€œI/O Virtualization specificationsโ€ (์˜์–ด). 2021๋…„ 3์›” 8์ผ์— ์›๋ณธ ๋ฌธ์„œ์—์„œ ๋ณด์กด๋œ ๋ฌธ์„œ. 2007๋…„ 5์›” 1์ผ์— ํ™•์ธํ•จ.
  6. โ†‘ Ben-Yehuda, Muli; Xenidis, Jimi; Ostrowski, Michal (2007๋…„ 6์›” 27์ผ). ใ€ŠProceedings of the Linux Symposium 2007ใ€‹ (PDF). Ottawa, Ontario, Canada: IBM Research. 2007๋…„ 9์›” 27์ผ์— ์›๋ณธ ๋ฌธ์„œ (PDF)์—์„œ ๋ณด์กด๋œ ๋ฌธ์„œ. 2007๋…„ 7์›” 2์ผ์— ํ™•์ธํ•จ.
  7. โ†‘ โ€œXen FAQ: In DomU, how can I use 3D graphicsโ€ (์˜์–ด). 2008๋…„ 10์›” 2์ผ์— ์›๋ณธ ๋ฌธ์„œ์—์„œ ๋ณด์กด๋œ ๋ฌธ์„œ. 2006๋…„ 12์›” 12์ผ์— ํ™•์ธํ•จ.

์ฐธ๊ณ  ๋ฌธํ—Œ

[ํŽธ์ง‘]
  • Bottomley, James (2004๋…„ 5์›” 1์ผ). โ€œUsing DMAโ€. ใ€ŠLinux Journalใ€‹ (Specialized Systems Consultants). 2006๋…„ 7์›” 15์ผ์— ์›๋ณธ ๋ฌธ์„œ์—์„œ ๋ณด์กด๋œ ๋ฌธ์„œ. 2006๋…„ 8์›” 9์ผ์— ํ™•์ธํ•จ.ย