2010-10-03 17 views
20

डीएमए और मेमोरी-मैप किए गए आईओ के बीच क्या अंतर है? वे दोनों मेरे समान दिखते हैं।डीएमए और मेमोरी-मैप किए गए आईओ के बीच क्या अंतर है?

+0

यह भी संबंधित है: [लिनक्स डिवाइस ड्राइवर्स, दूसरा संस्करण: अध्याय 13: एमएमएपी और डीएमए] (http://www.xml.com/ldd/chapter/book/ch13.html); पहले यहां जवाब पढ़ने में मुझे बहुत मदद मिली, हालांकि। – sdaau

उत्तर

31

मेमोरी मैप किए गए I/O CPU को विशिष्ट मेमोरी पतों को पढ़ने और लिखकर हार्डवेयर को नियंत्रित करने की अनुमति देता है। आमतौर पर इसका उपयोग निम्न बैंडविड्थ संचालन जैसे नियंत्रण नियंत्रण बिट्स के लिए किया जाएगा।

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

+0

तो वे मूल रूप से एक ही चीज़ हैं लेकिन विपरीत दिशाओं में? – f126ck

+0

बिल्कुल नहीं। डीएमए तब होता है जब दो डिवाइस जो सीपीयू नहीं हैं, संवाद करने के लिए मेमोरी बस का उपयोग करते हैं (एक डिवाइस के साथ आमतौर पर मुख्य मेमोरी होती है, और सीपीयू द्वारा प्रक्रिया को संसाधित किया जाता है)। मेमोरी मैप किए गए आईओ सीपीयू मेमोरी बस पर डिवाइस से बात कर रहा है जो मुख्य स्मृति नहीं है। – jdizzle

+0

डीएमए डिवाइस को डिवाइस में होने पर भी डीएमए बफर को मैप करने की आवश्यकता क्यों है? – ransh

10

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

डीएमए स्थानांतरण के साथ, डिवाइस सीधे वास्तविक मेमोरी बफर से डेटा को स्थानांतरित करने में सक्षम है। सीपीयू डिवाइस को बफर का स्थान बताता है, और फिर डिवाइस सीधे मेमोरी तक पहुंचने पर अन्य काम कर सकता है।

17

चूंकि अन्य ने पहले से ही प्रश्न का उत्तर दिया है, इसलिए मैं थोड़ा सा इतिहास जोड़ूंगा।

पुराने दिनों में, x86 (पीसी) हार्डवेयर पर, केवल आई/ओ स्पेस और मेमोरी स्पेस था। ये दो अलग-अलग पता रिक्त स्थान थे, विभिन्न बस प्रोटोकॉल और विभिन्न सीपीयू निर्देशों के साथ पहुंचे, लेकिन एक ही प्लग-इन कार्ड स्लॉट पर बात करने में सक्षम थे।

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

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

पीसीआई के दिनों के लिए फास्ट-फॉरवर्ड, और बस प्रोटोकॉल बहुत अधिक स्मार्ट हो गए: कोई भी डिवाइस स्थानांतरण शुरू कर सकता है। तो किसी भी समय इसे पसंद करने वाले किसी भी डेटा को होस्ट करने के लिए किसी भी डेटा को स्थानांतरित करने के लिए, RAID नियंत्रक कार्ड के लिए यह संभव है। इसे "बस मास्टर" मोड कहा जाता है, लेकिन किसी विशेष कारण के लिए लोग इस मोड को "डीएमए" के रूप में संदर्भित नहीं करते हैं, भले ही पुराने डीएमए नियंत्रक लंबे समय तक चले गए हों। पुराने डीएमए स्थानान्तरण के विपरीत, अक्सर कोई संबंधित I/O पता नहीं होता है, और बस मास्टर मोड अक्सर डिवाइस पर मौजूद एकमात्र इंटरफ़ेस होता है, जिसमें कोई CPU "बिट-बैंगिंग" मोड नहीं होता है।

+3

लिनक्स कर्नेल 'डीएमए' में 5000 से अधिक फाइलों में उल्लेख किया गया है, यह एक कारण हो सकता है कि हर कोई अभी भी डीएमए के बारे में बात क्यों करता है। – JohnnyFromBF

0

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

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

संबंधित मुद्दे

 संबंधित मुद्दे