इनपुट-आउटपुट मेमोरी मैनेजमेंट यूनिट

कंप्यूटिंग में, एक इनपुट-आउटपुट मेमोरी मैनेजमेंट यूनिट (IOMMU) एक मेमोरी मैनेजमेंट यूनिट (MMU) है जो डायरेक्ट मेमोरी एक्सेस | डायरेक्ट-मेमोरी-एक्सेस-सक्षम (DMA-सक्षम) I/O कंप्यूटर बस को मुख्य मेमोरी से जोड़ती है। एक पारंपरिक MMU की तरह, जो केंद्रीय प्रसंस्करण इकाई-दृश्यमान आभासी पतों को भौतिक पतों में अनुवादित करता है, IOMMU डिवाइस-दृश्यमान आभासी पतों (जिन्हें इस संदर्भ में 'उपकरण पते' या I/O पतों भी कहा जाता है) को भौतिक में मैप करता है। पते। कुछ इकाइयां दोषपूर्ण या दुर्भावनापूर्ण उपकरणों से मेमोरी सुरक्षा भी प्रदान करती हैं।

एक उदाहरण IOMMU ग्राफिक्स एड्रेस रीमैपिंग टेबल (GART) है जिसका उपयोग इंटेल आर्किटेक्चर और AMD कंप्यूटरों पर त्वरित ग्राफिक्स पोर्ट और PCI एक्सप्रेस ग्राफिक्स कार्ड द्वारा किया जाता है।

x86 आर्किटेक्चर पर, नॉर्थब्रिज (कंप्यूटिंग) और साउथब्रिज (कंप्यूटिंग) की कार्यक्षमता को CPU और प्लेटफ़ॉर्म कंट्रोलर हब (PCH) के बीच विभाजित करने से पहले, I/O वर्चुअलाइजेशन CPU द्वारा नहीं बल्कि चिपसेट द्वारा किया जाता था।

लाभ
मेमोरी (डीएमए) के प्रत्यक्ष भौतिक पते की तुलना में आईओएमएमयू होने के लाभों में शामिल हैं:
 * स्मृति के बड़े क्षेत्रों को भौतिक स्मृति में सन्निहित होने की आवश्यकता के बिना आवंटित किया जा सकता है – IOMMU सन्निहित आभासी पतों को अंतर्निहित खंडित भौतिक पतों पर मैप करता है। इस प्रकार, वेक्टर I/O (स्कैटर-इकट्ठा सूचियाँ) के उपयोग से कभी-कभी बचा जा सकता है।
 * ऐसे उपकरण जो संपूर्ण भौतिक मेमोरी को संबोधित करने के लिए लंबे समय तक मेमोरी पतों का समर्थन नहीं करते हैं, अभी भी IOMMU के माध्यम से संपूर्ण मेमोरी को संबोधित कर सकते हैं, परिधीय के एड्रेसेबल मेमोरी स्पेस से और बफ़र्स को कॉपी करने से जुड़े ओवरहेड्स से बचते हैं।
 * उदाहरण के लिए, x86 कंप्यूटर एक x86 प्रोसेसर में फिजिकल एड्रेस एक्सटेंशन (PAE) फीचर के साथ 4 गीगाबाइट से अधिक मेमोरी को एड्रेस कर सकते हैं। फिर भी, एक साधारण 32-बिट PCI डिवाइस 4 GiB सीमा से ऊपर की मेमोरी को आसानी से संबोधित नहीं कर सकता है, और इस प्रकार यह इसे सीधे एक्सेस नहीं कर सकता है। IOMMU के बिना, ऑपरेटिंग सिस्टम को समय लेने वाली बाउंस बफ़र्स (जिसे डबल बफ़र्स के रूप में भी जाना जाता है) को लागू करना होगा ).
 * स्मृति दुर्भावनापूर्ण उपकरणों से सुरक्षित है जो डीएमए हमलों और दोषपूर्ण उपकरणों का प्रयास कर रहे हैं जो त्रुटिपूर्ण स्मृति हस्तांतरण का प्रयास कर रहे हैं क्योंकि एक उपकरण स्मृति को पढ़ या लिख ​​नहीं सकता है जिसे इसके लिए स्पष्ट रूप से आवंटित (मैप) नहीं किया गया है। स्मृति सुरक्षा इस तथ्य पर आधारित है कि CPU पर चलने वाला OS विशेष रूप से MMU और IOMMU दोनों को नियंत्रित करता है। उपकरण शारीरिक रूप से कॉन्फ़िगर की गई मेमोरी प्रबंधन तालिकाओं को दरकिनार करने या दूषित करने में असमर्थ हैं।
 * हार्डवेयर-समर्थित वर्चुअलाइजेशन में, अतिथि ऑपरेटिंग सिस्टम हार्डवेयर का उपयोग कर सकते हैं जो विशेष रूप से वर्चुअलाइजेशन के लिए नहीं बनाया गया है। उच्च प्रदर्शन हार्डवेयर जैसे ग्राफिक्स कार्ड मेमोरी को सीधे एक्सेस करने के लिए डीएमए का उपयोग करते हैं; वर्चुअल वातावरण में सभी मेमोरी पतों को वर्चुअल मशीन सॉफ़्टवेयर द्वारा फिर से मैप किया जाता है, जिसके कारण DMA डिवाइस विफल हो जाते हैं। IOMMU इस री-मैपिंग को हैंडल करता है, जिससे नेटिव डिवाइस ड्राइवर्स को गेस्ट ऑपरेटिंग सिस्टम में इस्तेमाल करने की अनुमति मिलती है।
 * कुछ आर्किटेक्चर में IOMMU मानक मेमोरी एड्रेस री-मैपिंग के समान ही हार्डवेयर इंटरप्ट री-मैपिंग भी करता है।
 * परिधीय मेमोरी पेजिंग को IOMMU द्वारा समर्थित किया जा सकता है। PCI-SIG PCIe एड्रेस ट्रांसलेशन सर्विसेज (ATS) पेज रिक्वेस्ट इंटरफेस (PRI) एक्सटेंशन का उपयोग करने वाला एक पेरिफेरल मेमोरी मैनेजर सेवाओं की आवश्यकता का पता लगा सकता है और संकेत दे सकता है।

सिस्टम आर्किटेक्चर के लिए जिसमें पोर्ट I/O मेमोरी एड्रेस स्पेस से अलग एड्रेस स्पेस है, IOMMU का उपयोग तब नहीं किया जाता है जब CPU I/O पोर्ट के माध्यम से उपकरणों के साथ संचार करता है। सिस्टम आर्किटेक्चर में जिसमें पोर्ट I/O और मेमोरी को उपयुक्त एड्रेस स्पेस में मैप किया जाता है, एक IOMMU पोर्ट I/O एक्सेस का अनुवाद कर सकता है।

नुकसान
स्मृति के प्रत्यक्ष भौतिक पते की तुलना में IOMMU होने के नुकसान में शामिल हैं:
 * अनुवाद और प्रबंधन ओवरहेड से प्रदर्शन में कुछ गिरावट (जैसे, पेज टेबल वॉक)।
 * जोड़े गए I/O पेज टेबल | पेज (अनुवाद) टेबल के लिए फिजिकल मेमोरी की खपत। यदि तालिकाओं को प्रोसेसर के साथ साझा किया जा सकता है तो इसे कम किया जा सकता है।
 * पृष्ठ तालिका के आकार को कम करने के लिए कई IOMMUs की ग्रैन्युलैरिटी मेमोरी पेजिंग (अक्सर 4096 बाइट्स) के बराबर होती है, और इसलिए प्रत्येक छोटे बफर को DMA हमले से सुरक्षा की आवश्यकता होती है, जिसे डिवाइस को दृश्यमान बनाने से पहले पृष्ठ संरेखित और शून्य किया जाना चाहिए। . ओएस मेमोरी आवंटन जटिलता के कारण इसका मतलब है कि डिवाइस ड्राइवर को संवेदनशील डेटा संरचनाओं के लिए बाउंस बफ़र्स का उपयोग करने की आवश्यकता है और इसलिए समग्र प्रदर्शन कम हो रहा है।

वर्चुअलाइजेशन
जब एक ऑपरेटिंग सिस्टम एक वर्चुअल मशीन के अंदर चल रहा होता है, जिसमें पैरावर्चुअलाइज़ेशन का उपयोग करने वाले सिस्टम शामिल होते हैं, जैसे कि Xen और कर्नेल-आधारित वर्चुअल मशीन, यह आमतौर पर मेमोरी के होस्ट-भौतिक पतों को नहीं जानता है जो इसे एक्सेस करता है। यह कंप्यूटर हार्डवेयर तक सीधे पहुंच प्रदान करना कठिन बनाता है, क्योंकि यदि अतिथि OS हार्डवेयर को अतिथि-भौतिक पतों का उपयोग करके प्रत्यक्ष मेमोरी एक्सेस (DMA) करने का निर्देश देने की कोशिश करता है, तो यह संभवतः मेमोरी को दूषित कर देगा, क्योंकि हार्डवेयर को इसके बारे में पता नहीं होता है। दी गई वर्चुअल मशीन के लिए गेस्ट-फिजिकल और होस्ट-फिजिकल एड्रेस के बीच मैपिंग। भ्रष्टाचार से बचा जा सकता है यदि अनुवाद लागू करने के लिए हाइपरविजर या होस्ट ओएस I/O ऑपरेशन में हस्तक्षेप करता है। हालाँकि, इस दृष्टिकोण से I/O कार्रवाई में विलंब होता है।

एक IOMMU हार्डवेयर द्वारा एक्सेस किए गए पतों को उसी (या एक संगत) अनुवाद तालिका के अनुसार फिर से मैप करके इस समस्या को हल करता है जिसका उपयोग अतिथि-भौतिक पते को होस्ट-भौतिक पते पर मैप करने के लिए किया जाता है।

प्रकाशित विनिर्देश

 * AMD ने IOMMU तकनीक के लिए एक विनिर्देश प्रकाशित किया है, जिसे AMD-Vi कहा जाता है।
 * आईबीएम ने विस्तारित नियंत्रण कार्यक्रम समर्थन की पेशकश की: वर्चुअल स्टोरेज एक्सटेंडेड (ईसीपीएस: वीएसई) मोड इसकी 43xx लाइन पर; चैनल प्रोग्राम वर्चुअल एड्रेस का इस्तेमाल करते हैं।
 * इंटेल ने आईओएमएमयू तकनीक के लिए डायरेक्टेड आई/ओ, संक्षिप्त वीटी-डी के लिए वर्चुअलाइजेशन टेक्नोलॉजी के रूप में एक विनिर्देश प्रकाशित किया है।
 * सन माइक्रोसिस्टम्स IOMMU के बारे में जानकारी सोलारिस डेवलपर कनेक्शन के डिवाइस वर्चुअल मेमोरी एक्सेस (DVMA) सेक्शन में प्रकाशित की गई है। * IBM ट्रांसलेशन कंट्रोल एंट्री (TCE) का वर्णन IBM eServer pSeries 690 में लॉजिकल पार्टीशन सिक्योरिटी नामक दस्तावेज़ में किया गया है।
 * PCI-SIG के पास I/O वर्चुअलाइजेशन (IOV) शर्तों के तहत प्रासंगिक कार्य है और एड्रेस ट्रांसलेशन सर्विसेज (एटीएस)।
 * एआरएम आर्किटेक्चर IOMMU के अपने संस्करण को सिस्टम मेमोरी मैनेजमेंट यूनिट (SMMU) के रूप में परिभाषित करता है इसके वर्चुअलाइजेशन आर्किटेक्चर के पूरक के लिए।

यह भी देखें

 * विषम प्रणाली वास्तुकला (HSA)
 * IOMMU- सहायक हार्डवेयर की सूची
 * मेमोरी-मैप्ड I/O
 * स्मृति सुरक्षा

बाहरी संबंध

 * Mastering the DMA and IOMMU APIs, Embedded Linux Conference 2014, San Jose, by Laurent Pinchart
 * Mastering the DMA and IOMMU APIs, Embedded Linux Conference 2014, San Jose, by Laurent Pinchart