डिरेक्ट मेमोरी एक्सेस

डायरेक्ट मेमोरी एक्सेस(डीएमए) कंप्यूटर सिस्टम की एक विशेषता है और कुछ हार्डवेयर सबसिस्टम को सेंट्रल प्रोसेसिंग यूनिट(सीपीयू) से स्वतंत्र रूप से मुख्य सिस्टम मेमोरी तक पहुंचने की अनुमति देता है।

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

डीएमए का उपयोग "मेमोरी टू मेमोरी" कॉपी करने या मेमोरी के भीतर डेटा को ले जाने के लिए भी किया जा सकता है। डीएमए महंगे मेमोरी ऑपरेशंस को लोड कर सकता है, जैसे कि बड़ी कॉपी या स्कैटर-गैदर ऑपरेशंस, सीपीयू से एक समर्पित डीएमए इंजन के लिए। आई/ओ एक्सेलेरेशन टेक्नोलॉजी एक कार्यान्वयन उदाहरण है। डीएमए नेटवर्क-ऑन-चिप और इन-मेमोरी कंप्यूटिंग आर्किटेक्चर में प्रवृत्ति रखता है।

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

एक इनपुट, आउटपुट, या मेमोरी-टू-मेमोरी ऑपरेशन करने के लिए, होस्ट प्रोसेसर डीएमए कंट्रोलर को ट्रांसफर करने के लिए शब्दों की संख्या और उपयोग करने के लिए मेमोरी एड्रेस की गिनती के साथ आरंभ करता है। सीपीयू तब डेटा ट्रांसफर शुरू करने के लिए पेरिफेरल डिवाइस को कमांड करता है। डीएमए नियंत्रक तब पता प्रदान करता है और सिस्टम मेमोरी को नियंत्रण रेखा पढ़ता/लिखता है। हर बार डेटा का एक बाइट परिधीय उपकरण और मेमोरी के बीच स्थानांतरित होने के लिए तैयार होता है, डीएमए नियंत्रक अपने आंतरिक पता रजिस्टर को तब तक बढ़ाता है जब तक कि डेटा के पूरे ब्लॉक को स्थानांतरित नहीं कर दिया जाता।

बस मास्टरिंग
एक बस मास्टरिंग सिस्टम में, जिसे फर्स्ट पार्टी डीएमए सिस्टम के रूप में भी जाना जाता है, मेमोरी बस का नियंत्रण प्रत्येक सीपीयू और पेरिफेरल्स(बाह्य उपकरणों) को दिया जा सकता है। जहां पेरिफेरल बस मास्टर बन सकता है, यह सीपीयू की भागीदारी के बिना सीधे सिस्टम मेमोरी में लिख सकता है, आवश्यकतानुसार मेमोरी एड्रेस और कंट्रोल सिग्नल प्रदान कर सकता है। प्रोसेसर को होल्ड स्थिति में रखने के लिए कुछ उपाय प्रदान किए जाने चाहिए ताकि बस विरोध न हो।

बर्स्ट मोड
बर्स्ट मोड में, डेटा का एक पूरा ब्लॉक सन्निहित अनुक्रम में स्थानांतरित किया जाता है। एक बार डीएमए नियंत्रक को सीपीयू द्वारा सिस्टम बस तक पहुंच प्रदान करने के बाद, यह सीपीयू को सिस्टम बसों के नियंत्रण को वापस जारी करने से पहले डेटा ब्लॉक में डेटा के सभी बाइट्स को स्थानांतरित करता है, सीपीयू को अपेक्षाकृत लंबे समय तक निष्क्रिय छोड़ देता है। इस मोड को "ब्लॉक ट्रांसफर मोड" भी कहा जाता है।

साइकिल स्टीलिंग मोड
साइकिल स्टील मोड का उपयोग उन प्रणालियों में किया जाता है जिनमें सीपीयू को बर्स्ट ट्रांसफर मोड के लिए आवश्यक समय की लंबाई के लिए अक्षम नहीं किया जाना चाहिए। साइकिल स्टील मोड में, डीएमए नियंत्रक बीआर(बस रिक्वेस्ट) और बीजी(बस ग्रांट) संकेतों का उपयोग करके उसी तरह से बीआर(बस रिक्वेस्ट) और बीजी(बस ग्रांट) संकेतों के रूप में सिस्टम बस तक पहुंचता है, दो सिग्नल जो सीपीयू और डीएमए कंट्रोलर के बीच इंटरफेस को नियंत्रित करते हैं। हालाँकि, साइकिल स्टील मोड में, डेटा ट्रांसफर(जैसे बाइट) की एक इकाई के बाद, सिस्टम बस का नियंत्रण बीजी के माध्यम से सीपीयू को दिया जाता है। बाद के अनुरोध बीआर के माध्यम से तब तक किए जाते हैं जब तक डेटा के पूरे ब्लॉक को स्थानांतरित नहीं किया जाता है, डेटा की एक इकाई(जैसे बाइट) प्रति अनुरोध स्थानांतरित की जा रही है। सिस्टम बस के नियंत्रण को लगातार प्राप्त करने और जारी करने से, डीएमए नियंत्रक अनिवार्य रूप से निर्देश और डेटा ट्रांसफर को बीच में छोड़ देता है। सीपीयू एक निर्देश को संसाधित करता है, फिर डीएमए नियंत्रक एक डेटा मान को स्थानांतरित करता है, और इसी तरह। डेटा इतनी तेजी से ट्रांसफर नहीं होता है, लेकिन सीपीयू बर्स्ट मोड में लंबे समय तक बेकार नहीं रहता है। साइकल चोरी करने वाला मोड उन नियंत्रकों के लिए उपयोगी है जो वास्तविक समय में डेटा पर्यवेक्षण करते हैं।

ट्रांसपैरेंट मोड
पारदर्शी मोड डेटा के एक ब्लॉक को स्थानांतरित करने में सबसे अधिक समय लेता है, फिर भी समग्र सिस्टम प्रदर्शन के मामले में यह सबसे कुशल मोड भी है। पारदर्शी मोड में, डीएमए नियंत्रक केवल तभी डेटा स्थानांतरित करता है जब सीपीयू संचालन कर रहा होता है जो सिस्टम बसों का उपयोग नहीं करता है। पारदर्शी मोड का प्राथमिक लाभ यह है कि सीपीयू कभी भी अपने कार्यक्रमों को क्रियान्वित करना बंद नहीं करता है और डीएमए ट्रांसफर समय के मामले में नि: शुल्क है, जबकि नुकसान यह है कि हार्डवेयर को यह निर्धारित करने की आवश्यकता है कि सीपीयू सिस्टम बसों का उपयोग नहीं कर रहा है या नहीं, जो जटिल हो सकता है, इसे "हिडन डीएमए डेटा ट्रांसफर मोड" भी कहा जाता है।

कैशे कोहेरेन्सी
डीएमए कैशे कोहेरेन्सी के कारण सुसंगतता की समस्या हो सकती है। कैशे और बाहरी मेमोरी से लैस एक सीपीयू की कल्पना करें जिसे सीधे डीएमए का उपयोग करने वाले उपकरणों द्वारा एक्सेस किया जा सकता है। जब सीपीयू मेमोरी में स्थान एक्स तक पहुँचता है, तो वर्तमान मान कैशे में संग्रहीत हो जाएगा। एक्स पर बाद के ऑपरेशन एक्स की कैशे की गई कॉपी को अपडेट करेंगे, लेकिन राइट-बैक कैशे मानकर एक्स के बाहरी मेमोरी संस्करण को नहीं। यदि अगली बार डिवाइस द्वारा एक्स तक पहुँचने का प्रयास करने से पहले कैशे को मेमोरी में नहीं डाला जाता है, तो डिवाइस को एक्स का पुराना मान प्राप्त होगा।

इसी तरह, यदि डिवाइस द्वारा मेमोरी में एक नया मान लिखने पर एक्स की कैश्ड कॉपी अमान्य नहीं होती है, तो सीपीयू एक्स के पुराने मान पर काम करेगा।

इस मुद्दे को सिस्टम डिज़ाइन में दो तरीकों में से एक में संबोधित किया जा सकता है: कैशे कोहेरेन्सी सिस्टम हार्डवेयर में एक विधि को लागू करते हैं, जिसे बस स्नूपिंग कहा जाता है, जिससे बाहरी राइट्स को कैशे कंट्रोलर को संकेत दिया जाता है जो तब डीएमए राइट्स के लिए कैशे अमान्यकरण या कैशे फ्लश के लिए प्रदर्शन करता है। असंबद्ध सिस्टम इसे सॉफ्टवेयर पर छोड़ देते हैं, जहां ओएस(OS) को यह सुनिश्चित करना चाहिए कि आउटगोइंग डीएमए ट्रांसफर शुरू होने से पहले कैशे लाइनों को फ्लश कर दिया जाए और इनकमिंग डीएमए ट्रांसफर से प्रभावित मेमोरी रेंज तक पहुंचने से पहले इसे अमान्य कर दिया जाए। ओएस को यह सुनिश्चित करना चाहिए कि इस दौरान किसी भी चल रहे धागे द्वारा मेमोरी रेंज का उपयोग नहीं किया जाता है। बाद वाला दृष्टिकोण डीएमए ऑपरेशन के लिए कुछ ओवरहेड निवेदित करता है, क्योंकि अधिकांश हार्डवेयर को प्रत्येक कैश लाइन को व्यक्तिगत रूप से अमान्य करने के लिए लूप की आवश्यकता होती है।

हाइब्रिड भी मौजूद हैं, जहां माध्यमिक L2 कैशे कोहेरेंट है जबकि L1 कैशे(सामान्यतः ऑन-सीपीयू) सॉफ्टवेयर द्वारा प्रबंधित किया जाता है।

आईएसए
मूल आईबीएम पीसी(और अनुवर्ती पीसी / एक्सटी) में, केवल एक Intel 8237 डीएमए नियंत्रक था जो चार डीएमए चैनल प्रदान करने में सक्षम था(क्रमांकित 0–3)। इन डीएमए चैनलों ने 8-बिट ट्रांसफर किए(क्योंकि 8237 एक 8-बिट डिवाइस था, आदर्श रूप से पीसी के इंटेल 8088 सीपीयू/बस आर्किटेक्चर से मेल खाता था), केवल पहले(इंटेल 8086 /8088-मानक) मेगाबाइट रैम को संबोधित कर सकता था और सीमित था उस स्थान के भीतर एकल 64 किलोबाइट सेगमेंट को संबोधित करना(हालांकि स्रोत और गंतव्य चैनल अलग-अलग सेगमेंट को संबोधित कर सकते हैं)। इसके अतिरिक्त, नियंत्रक का उपयोग केवल विस्तार बस I/O उपकरणों के लिए, से या उनके बीच स्थानांतरण के लिए किया जा सकता है, क्योंकि 8237 केवल चैनल 0 और 1 का उपयोग करके मेमोरी-टू-मेमोरी ट्रांसफर कर सकता है, जिनमें से पीसी में चैनल 0(और एक्सटी) डायनेमिक मेमोरी रिफ्रेश के लिए समर्पित था। इसने इसे सामान्य-उद्देश्य "ब्लिटर" के रूप में उपयोग करने से रोक दिया, और इसके परिणामस्वरूप पीसी में मेमोरी मूव्स ब्लॉक हो गईं, सीपीयू की सामान्य पीआईओ गति द्वारा सीमित, बहुत धीमी थी।

आईबीएम पीसी/एटी के साथ, बढ़ाए गए एटी बस(आईएसए, या "उद्योग मानक वास्तुकला" के रूप में अधिक परिचित पुन: नाम) ने तीन अतिरिक्त प्रदान करने के लिए एक दूसरा 8237 डीएमए नियंत्रक जोड़ा, और जैसा कि एक्सटी के अतिरिक्त एक्सपेंडेबिलिटी के साथ संसाधन संघर्ष द्वारा हाइलाइट किया गया है। मूल पीसी, बहुत जरूरी चैनल(5-7; चैनल 4 का उपयोग पहले 8237 के कैस्केड के रूप में किया जाता है)। 80286 सीपीयू के पूर्ण 16 एमबी मेमोरी एड्रेस स्पेस को संबोधित करने के लिए पेज रजिस्टर को भी फिर से जोड़ा गया था। यह दूसरा नियंत्रक भी 16-बिट स्थानांतरण करने में सक्षम तरीके से एकीकृत किया गया था जब I/O डिवाइस को डेटा स्रोत और/या गंतव्य के रूप में उपयोग किया जाता है(क्योंकि यह वास्तव में केवल मेमोरी-टू-मेमोरी ट्रांसफर के लिए डेटा को संसाधित करता है, अन्यथा बस 16-बिट सिस्टम के अन्य भागों के बीच डेटा प्रवाह को नियंत्रित करना, अपनी डेटा बस की चौड़ाई को अपेक्षाकृत महत्वहीन बनाना), ऊपरी तीन चैनलों का उपयोग किए जाने पर डेटा थ्रूपुट को दोगुना करना। अनुकूलता के लिए, निचले चार डीएमए चैनल अभी भी केवल 8-बिट ट्रांसफर तक ही सीमित थे, और मेमोरी-टू-मेमोरी ट्रांसफर अब तकनीकी रूप से संभव थे क्योंकि चैनल 0 को डीआरएएम रीफ्रेश को संभालने से मुक्त होने के कारण व्यावहारिक दृष्टिकोण से वे सीपीयू अब जो प्राप्त कर सकता था, उसकी तुलना में नियंत्रक के परिणामी कम थ्रुपुट के कारण सीमित मूल्य के थे(यानी, एक 16-बिट, अधिक अनुकूलित 80286 न्यूनतम 6 मेगाहर्ट्ज पर चल रहा है, बनाम 4.77 मेगाहर्ट्ज पर लॉक किया गया 8-बिट नियंत्रक)। दोनों ही मामलों में, 64 केबी x86 मेमोरी सेगमेंटेशन समस्या बनी रही, जिसमें व्यक्तिगत स्थानान्तरण 16-बिट मोड में भी खंडों को पार करने में असमर्थ थे(बजाय उसी खंड की शुरुआत में "चारों ओर लपेटना"), हालांकि यह व्यवहार में प्रोग्रामिंग की अधिक समस्या थी प्रदर्शन की तुलना में जटिलता, क्योंकि लगभग हर 15 μs में बस पर एकाधिकार करने के लिए डीआरएएम रिफ्रेश(हालांकि नियंत्रित) की निरंतर आवश्यकता ने बड़े(और तेज, लेकिन निर्बाध) ब्लॉक ट्रांसफर के उपयोग को रोक दिया।

उनके धीमे प्रदर्शन के कारण(1.6 मेगाबाइट/सेकेंड अधिकतम 8-बिट स्थानांतरण क्षमता 5 मेगाहर्ट्ज पर, लेकिन आईएसए बस ओवरहेड्स और मेमोरी रीफ्रेश बाधाओं जैसे अन्य हस्तक्षेप के कारण पीसी/एक्सटी) में 0.9 एमबी/सेकंड और एटी में 16-बिट स्थानांतरण के लिए 1.6 एमबी/सेकंड से अधिक नहीं ) और किसी भी गति ग्रेड की अनुपलब्धता जो मूल पीसी के मानक 4.77 मेगाहर्ट्ज घड़ी से अधिक गति पर चलने वाले प्रत्यक्ष प्रतिस्थापन की स्थापना की अनुमति देगा, ये उपकरण 1980 के दशक के उत्तरार्ध से प्रभावी रूप से अप्रचलित हो गए हैं। विशेष रूप से, 1985 में 80386 प्रोसेसर का आगमन और 32-बिट ट्रांसफर के लिए इसकी क्षमता(हालांकि 80186 के बाद इंटेल सीपीयू में एड्रेस कैलकुलेशन और ब्लॉक मेमोरी चाल की दक्षता में काफी सुधार का मतलब था कि पीआईओ 16-बिट-बस द्वारा भी ट्रांसफर करता है। 80286 और 80386SX अभी भी आसानी से 8237 से आगे निकल सकते हैं), साथ ही( विस्तारित उद्योग मानक वास्तुकला ) के विकास के विकास या( माइक्रो चैनल आर्किटेक्चर, वीईएसए स्थानीय बस और पेरिफ़ेरल कंपोनेंट इंटरकनेक्ट ) के लिए प्रतिस्थापन आईएसए बस अपने स्वयं के बहुत अधिक के साथ -प्रदर्शन डीएमए सबसिस्टम(ईआईएसए के लिए अधिकतम 33 एमबी/एस तक, 40 एमबी/एस एमसीए, सामान्यतः 133 एमबी/एस वीएलबी/पीसीआई) ने मूल डीएमए नियंत्रकों को बूस्टर की तुलना में प्रदर्शन मिलस्टोन की तरह अधिक बना दिया। उन्हें बाद की मशीनों पर अंतर्निहित लीगेसी पीसी हार्डवेयर का समर्थन करने के लिए आवश्यक सीमा तक समर्थित किया गया था। 32-बिट विस्तार बसों के बाद आईएसए डीएमए का उपयोग जारी रखने वाले पुराने हार्डवेयर के टुकड़े ध्वनि विस्फ़ोटक मानक थे जिन्हें ध्वनि फाड़ने वाला मानक के साथ पूर्ण हार्डवेयर संगतता बनाए रखने की आवश्यकता थी; और मदरबोर्ड पर सुपर I/O डिवाइस जो अक्सर एक अंतर्निहित फ्लॉपी डिस्क नियंत्रक, एक इन्फ्रारेड डेटा एसोसिएशन इन्फ्रारेड नियंत्रक जब एफआईआर(फास्ट इन्फ्रारेड) मोड का चयन किया जाता है, और एक IEEE 1284 समानांतर पोर्ट नियंत्रक जब ईसीपी मोड का चयन किया जाता है। ऐसे मामलों में जहां एक मूल 8237s या प्रत्यक्ष संगत अभी भी उपयोग किए गए थे, सिस्टम के वास्तविक पता स्थान या स्थापित मेमोरी की मात्रा की परवाह किए बिना इन डिवाइसों में या से स्थानांतरण अभी भी पहले 16 MB मुख्य रैम तक सीमित हो सकता है।

प्रत्येक डीएमए चैनल में एक 16-बिट एड्रेस रजिस्टर और एक संबद्ध 16-बिट काउंट रजिस्टर होता है। डेटा ट्रांसफर शुरू करने के लिए डिवाइस ड्राइवर डीएमए चैनल का पता सेट करता है और डेटा ट्रांसफर, पढ़ने या लिखने की दिशा के साथ रजिस्टरों की गणना करता है। इसके बाद यह डीएमए हार्डवेयर को ट्रांसफर शुरू करने का निर्देश देता है। जब स्थानांतरण पूर्ण हो जाता है, तो डिवाइस CPU को बाधित करता है।

स्कैटर-गैदर या वेक्टर आई/ओ डीएमए एक एकल डीएमए लेनदेन में कई मेमोरी क्षेत्रों से और डेटा के हस्तांतरण की अनुमति देता है। यह कई सरल डीएमए अनुरोधों को एक साथ जोड़ने के बराबर है। प्रेरणा सीपीयू से कई इनपुट/आउटपुट इंटरप्ट और डेटा कॉपी कार्यों को ऑफ-लोड करना है।

डीआरक्यू का मतलब डेटा रिक्वेस्ट है; डीएसीके डेटा स्वीकार करने के लिए। डीएमए कार्यक्षमता वाले कंप्यूटर सिस्टम के हार्डवेयर आरेखों पर देखे जाने वाले ये प्रतीक, सीपीयू और डीएमए नियंत्रक के बीच इलेक्ट्रॉनिक सिग्नलिंग लाइनों का प्रतिनिधित्व करते हैं। प्रत्येक डीएमए चैनल में एक अनुरोध और एक पावती क्यू सम्मिलित होता है। डीएमए का उपयोग करने वाले उपकरणों को निर्दिष्ट डीएमए चैनल की दोनों पंक्तियों का उपयोग करने के लिए कॉन्फ़िगर किया जाना चाहिए।

16-बिट आईएसए ने बस मास्टरिंग की अनुमति दी।

मानक आईएसए डीएमए कार्य:

1. DRAM डीआरएएम रिफ्रेश (अप्रचलित)

2. उपयोगकर्ता हार्डवेयर, आमतौर पर ध्वनि कार्ड 8 बिट डीएमए

3. फ्लॉपी डिस्क नियंत्रक

4. हार्ड डिस्क (पीआईओ मोड द्वारा अप्रचलित, और यूडीएमए मोड द्वारा प्रतिस्थापित), पैरेलल पोर्ट (ईसीपी सक्षम पोर्ट), ओपीटीआई 928 जैसे कुछ साउंडब्लास्टर क्लोन

5. पीसी/एक्सटी डीएमए कंट्रोलर के लिए कैस्केड

6. हार्ड डिस्क (पीएस/2 केवल), अन्य सभी के लिए उपयोगकर्ता हार्डवेयर, आमतौर पर साउंड कार्ड 16-बिट डीएमए

7. यूजर हार्डवेयर

8. यूजर हार्डवेयर

पीसीआई
पीसीआई आर्किटेक्चर में आईएसए के विपरीत, कोई केंद्रीय डीएमए नियंत्रक नहीं है। इसके बजाय, एक पीसीआई डिवाइस बस के नियंत्रण("बस मास्टर") का अनुरोध कर सकता है और सिस्टम मेमोरी तक पढ़ने और लिखने का अनुरोध कर सकता है। अधिक सटीक रूप से, एक पीसीआई घटक एक पीसीआई बस नियंत्रक से बस स्वामित्व का अनुरोध करता है(सामान्यतः एक पीसीआई होस्ट ब्रिज, और एक पीसीआई टू पीसीआई ब्रिज ), जो एक साथ कई उपकरणों द्वारा बस कंट्रोलर का अनुरोध करने पर मध्यस्थता करेगा क्योंकि एक के पास केवल एक बस मास्टर हो सकता है. समय। जब घटक को स्वामित्व दिया जाता है, तो यह पीसीआई बस पर सामान्य पढ़ने और लिखने के आदेश जारी करेगा, जिसका दावा पीसीआई बस नियंत्रक द्वारा किया जाएगा।

एक उदाहरण के रूप में, एक इण्टेल कोर-आधारित पीसी पर, साउथब्रिज डीएमआई(डायरेक्ट मीडिया इंटरफ़ेस) का उपयोग करके मेमोरी कंट्रोलर(जो सीपीयू डाई पर एकीकृत होता है) को लेनदेन को अग्रेषित करेगा, जो बदले में उन्हें डीडीआर संचालन में परिवर्तित कर देगा और उन्हें मेमोरी पर भेज देगा। बस। परिणामस्वरूप, पीसीआई डीएमए स्थानांतरण में काफी संख्या में चरण शामिल होते हैं; हालाँकि, इससे थोड़ी समस्या होती है, क्योंकि पीसीआई डिवाइस या पीसीआई बस स्वयं बाकी घटकों की तुलना में धीमी परिमाण का क्रम है(डिवाइस बैंडविड्थ की सूची देखें)।

एक आधुनिक x86 सीपीयू 4 जीबी से अधिक मेमोरी का उपयोग कर सकता है, या तो x86-64 सीपीयू के मूल 64-बिट मोड का उपयोग कर सकता है, या 36-बिट एड्रेसिंग मोड भौतिक पता एक्सटेंशन(पीएई)। ऐसी स्थिति में, 32-बिट एड्रेस बस के साथ डीएमए का उपयोग करने वाला उपकरण 4 जीबी लाइन से ऊपर की मेमोरी को एड्रेस करने में असमर्थ है। नया डबल एड्रेस साइकिल(डीएसी) तंत्र, यदि पीसीआई बस और डिवाइस दोनों पर ही लागू किया जाता है, 64-बिट डीएमए एड्रेसिंग सक्षम करता है। अन्यथा, ऑपरेटिंग सिस्टम को या तो महंगा डबल बफ़र्स(DOS/Windows नामकरण) जिसे बाउंस बफ़र्स(फ्रीबीएसडी/लिनक्स) के रूप में भी जाना जाता है, का उपयोग करके समस्या को हल करने की आवश्यकता होगी, या यदि कोई मौजूद है तो पता अनुवाद सेवाएँ प्रदान करने के लिए आईओएमएमयू का उपयोग कर सकता है।

आई/ओएटी
एक सामान्य प्रयोजन सीपीयू में शामिल डीएमए इंजन के एक उदाहरण के रूप में, कुछ इंटेल झियोन चिपसेट में आई/ओ एक्सेलेरेशन टेक्नोलॉजी(आई/ओएटी) नामक एक डीएमए इंजन शामिल है, जो मुख्य सीपीयू से मेमोरी कॉपी को ऑफलोड कर सकता है, इसे अन्य काम करने के लिए मुक्त कर सकता है।. 2006 में, इंटेल के लिनक्स कर्नेल डेवलपर एंड्रयू ग्रोवर ने नेटवर्क ट्रैफ़िक प्रतियों को ऑफ़लोड करने के लिए आई/ओएटी का उपयोग करके बेंचमार्क का प्रदर्शन किया और वर्कलोड प्राप्त करने के साथ सीपीयू उपयोग में 10% से अधिक सुधार नहीं पाया।

डीडीआईओ
डीएमए तंत्र में आगे प्रदर्शन-उन्मुख संवर्द्धन इंटेल झियोन E5(Intel Xeon E5) प्रोसेसर में उनके डेटा डायरेक्ट आई/ओ(डीडीआईओ) विशेषता के साथ पेश किए गए हैं, जिससे डीएमए "विंडो" सिस्टम रैम के बजाय सीपीयू कैश के भीतर रहने की अनुमति देता है। परिणामस्वरूप, सीपीयू कैशे का उपयोग आई/ओ के लिए प्राथमिक स्रोत और गंतव्य के रूप में किया जाता है, जिससे नेटवर्क इंटरफ़ेस कंट्रोलर(एनआईसी) सीधे स्थानीय सीपीयू के अंतिम स्तर कैशे(L3 कैशे) में डीएमए को अनुमति देता है और आई/ओ की महंगी लाने से बचता है। सिस्टम रैम से डेटा। परिणामस्वरूप, डीडीआईओ समग्र आई/ओ प्रसंस्करण विलंबता को कम करता है, आई/ओ के प्रसंस्करण को पूरी तरह से कैशे में निष्पादित करने की अनुमति देता है, उपलब्ध रैम बैंडविड्थ/विलंबता को एक प्रदर्शन बाधा बनने से रोकता है, और अनुमति देकर बिजली की खपत को कम कर सकता है। कम शक्ति वाली स्थिति में रैम अधिक समय तक रहेगा।

एएचबी
सिस्टम-ऑन-अ-चिप और एम्बेडेड सिस्टम में, विशिष्ट सिस्टम बस इंफ्रास्ट्रक्चर एक जटिल ऑन-चिप बस है जैसे एएमबीए हाई-परफॉर्मेंस बस। एएमबीए दो प्रकार के एएचबी घटकों को परिभाषित करता है: मास्टर और स्लेव। एक स्लेव इंटरफ़ेस एक प्रोग्राम किए गए आई/ओ के समान है जिसके माध्यम से सॉफ़्टवेयर(एम्बेडेड सीपीयू पर चल रहा है, जैसे एआरएम) डिवाइस के अंदर आई/ओ रजिस्टरों या(कम सामान्यतः) स्थानीय मेमोरी ब्लॉक को लिख/पढ़ सकता है। सीपीयू को भारी लोड किए बिना सिस्टम मेमोरी से/से डीएमए लेनदेन करने के लिए डिवाइस द्वारा एक मास्टर इंटरफ़ेस का उपयोग किया जा सकता है।

इसलिए, उच्च बैंडविड्थ डिवाइस जैसे कि नेटवर्क नियंत्रक जिन्हें सिस्टम मेमोरी में/से बड़ी मात्रा में डेटा स्थानांतरित करने की आवश्यकता होती है, उनके पास एएचबी के लिए दो इंटरफ़ेस एडेप्टर होंगे: एक मास्टर और एक दास इंटरफ़ेस। ऐसा इसलिए है क्योंकि एएचबी जैसी ऑन-चिप बसें बस को ट्राई-स्टेटिंग या बस में किसी भी लाइन की दिशा को बदलने का समर्थन नहीं करती हैं। पीसीआई की तरह, किसी केंद्रीय डीएमए नियंत्रक की आवश्यकता नहीं है क्योंकि डीएमए बस-मास्टरिंग है, लेकिन सिस्टम पर मौजूद कई मास्टर्स के मामले में एक मध्यस्थ की आवश्यकता होती है।

आंतरिक रूप से, एक मल्टीचैनल डीएमए इंजन सामान्यतः सॉफ्टवेयर द्वारा क्रमादेशित कई समवर्ती स्कैटर-गैदर आई/ओ संचालन करने के लिए डिवाइस में मौजूद होता है।

सेल
एक मल्टीप्रोसेसर-सिस्टम-ऑन-चिप में डीएमए के उदाहरण के उपयोग के रूप में, आईबीएम/सोनी/तोशिबा के सेल प्रोसेसर में एक पावर प्रोसेसर तत्व(पीपीई) और आठ सिनर्जिस्टिक प्रोसेसर तत्व(एसपीई) सहित इसके 9 प्रसंस्करण तत्वों में से प्रत्येक के लिए एक डीएमए इंजन शामिल है।. चूंकि एसपीई के लोड/स्टोर निर्देश केवल अपनी स्थानीय मेमोरी को पढ़/लिख सकते हैं, एक एसपीई पूरी तरह से डीएमए पर निर्भर करता है कि वह अन्य एसपीई की मुख्य मेमोरी और स्थानीय मेमोरी से डेटा ट्रांसफर करे। इस प्रकार डीएमए इस सीपीयू के अंदर कोर के बीच डेटा ट्रांसफर के प्राथमिक साधन के रूप में कार्य करता है(कैश-सुसंगत सीएमपी आर्किटेक्चर जैसे कि इंटेल के रद्द किए गए सामान्य-उद्देश्य वाले जीपीयू, लारबी(लैराबी(माइक्रोआर्किटेक्चर)) के विपरीत)।

सेल में डीएमए पूरी तरह से कैश्ड कोहेरेंट है(ध्यान दें कि डीएमए द्वारा संचालित एसपीई के स्थानीय स्टोर मानक अर्थों में वैश्विक रूप से सुसंगत कैश के रूप में कार्य नहीं करते हैं)। पढ़ने("प्राप्त करें") और लिखने("पुट") दोनों में, एक डीएमए कमांड या तो 16 केबी तक के आकार के एक ब्लॉक क्षेत्र या 2 से 2048 ऐसे ब्लॉकों की सूची स्थानांतरित कर सकता है। डीएमए कमांड एक स्थानीय पते और एक दूरस्थ पते की एक जोड़ी को निर्दिष्ट करके जारी किया जाता है: उदाहरण के लिए, जब एक एसपीई प्रोग्राम एक पुट डीएमए कमांड जारी करता है, तो यह स्रोत के रूप में अपनी स्थानीय मेमोरी का पता और एक वर्चुअल मेमोरी एड्रेस(इंगित करता है) निर्दिष्ट करता है। या तो मुख्य मेमोरी या किसी अन्य एसपीई की स्थानीय मेमोरी) लक्ष्य के रूप में, साथ में एक ब्लॉक आकार के साथ। एक प्रयोग के अनुसार, सेल में डीएमए का एक प्रभावी चरम प्रदर्शन(3 GHz, एकसमान ट्रैफ़िक के तहत) प्रति सेकंड 200 जीबी तक पहुँच जाता है।

पाइपलाइनिंग
स्क्रैचपैड मेमोरी और डीएमए(जैसे डिजिटल सिग्नल प्रोसेसर और सेल प्रोसेसर) वाले प्रोसेसर डबल बफरिंग या मल्टीबफरिंग के माध्यम से प्रोसेसिंग के साथ डीएमए मेमोरी ऑपरेशंस को ओवरलैप करने वाले सॉफ्टवेयर से लाभान्वित हो सकते हैं। उदाहरण के लिए, ऑन-चिप मेमोरी दो बफ़र्स में विभाजित है; प्रोसेसर एक में डेटा पर काम कर रहा हो सकता है, जबकि डीएमए इंजन दूसरे में डेटा लोड और स्टोर कर रहा है। यह सिस्टम को एक पूर्वानुमेय मेमोरी एक्सेस पैटर्न की आवश्यकता की कीमत पर मेमोरी लेटेंसी से बचने और बर्स्ट ट्रांसफर का फायदा उठाने की अनुमति देता है।

संदर्भ

 * DMA Fundamentals on Various PC Platforms, from A. F. Harvey and Data Acquisition Division Staff NATIONAL INSTRUMENTS
 * mmap and DMA, from Linux Device Drivers, 2nd Edition, Alessandro Rubini & Jonathan Corbet
 * Memory Mapping and DMA, from Linux Device Drivers, 3rd Edition, Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
 * DMA and Interrupt Handling
 * DMA Modes & Bus Mastering

बाहरी संबंध

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