IOMMU

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]
๊ฐ์ด ๋ณด๊ธฐ
[ํธ์ง]๊ฐ์ฃผ
[ํธ์ง]- โ โAMD I/O Virtualization Technology (IOMMU) Specification Revision 1.0โ (PDF) (์์ด). 2006๋ 2์ 1์ผ์ ํ์ธํจ.
- โ โMainstreaming Server Virtualization: The Intel Approachโ (PDF) (์์ด). 2006๋ 3์ 1์ผ์ ํ์ธํจ.
- โ โDVMA Resources and IOMMU Translationsโ (์์ด). 2007๋ 4์ 30์ผ์ ํ์ธํจ.
- โ โLogical Partition Security in the IBM eServer pSeries 690โ (์์ด). 2007๋ 4์ 30์ผ์ ํ์ธํจ.
- โ โI/O Virtualization specificationsโ (์์ด). 2021๋ 3์ 8์ผ์ ์๋ณธ ๋ฌธ์์์ ๋ณด์กด๋ ๋ฌธ์. 2007๋ 5์ 1์ผ์ ํ์ธํจ.
- โ 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์ผ์ ํ์ธํจ.
- โ โ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์ผ์ ํ์ธํจ.