डीएमए नियंत्रक कैसे काम करता है?


14

एंड्रयू एस। टेनबाम, हर्बर्ट बोस द्वारा आधुनिक ऑपरेटिंग सिस्टम में धारा 5.1.4 प्रत्यक्ष मेमोरी एक्सेस से , 2014 ,

स्पष्टीकरण को सरल बनाने के लिए, हम मानते हैं कि सीपीयू सभी उपकरणों और मेमोरी को सिंगल सिस्टम बस के माध्यम से एक्सेस करता है जो सीपीयू, मेमोरी और आई / ओ उपकरणों को जोड़ता है, जैसा कि चित्र 5-4 में दिखाया गया है।

यहाँ छवि विवरण दर्ज करें

  1. डीएमए कैसे काम करता है, यह समझाने के लिए, आइए पहले देखें कि डीएमए का उपयोग न होने पर डिस्क कैसे पढ़ती है।

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

    क्यू: दूसरे चरण में,

    • डेटा को " कंट्रोलर के बफर से " मुख्य मेमोरी में स्थानांतरित नहीं किया जाता है ? इसे " नियंत्रक के बफर से " और " नियंत्रक डिवाइस के रजिस्टर से " दोनों क्यों कहते हैं ?

    • दूसरे चरण में, नियंत्रक अपने बफर से मुख्य मेमोरी में डेटा ट्रांसफर कर सकता है, बिना सीपीयू को बाधित किए बिना और फिर से ओएस को शामिल किए बिना?

  2. जब डीएमए का उपयोग किया जाता है, तो प्रक्रिया अलग होती है।

    • पहले सीपीयू अपने रजिस्टरों को सेट करके डीएमए कंट्रोलर को प्रोग्राम करता है ताकि यह पता चल सके कि कहां ट्रांसफर किया जाना है (छवि 1-4 में चरण 1)।
      यह डिस्क नियंत्रक को डिस्क से डेटा को उसके आंतरिक बफर में पढ़ने और चेकसम को सत्यापित करने के लिए एक कमांड जारी करता है
    • जब वैध डेटा डिस्क नियंत्रक के बफर में होता है, तो डीएमए शुरू हो सकता है। डीएमए नियंत्रक डिस्क नियंत्रक (चरण 2) के लिए बस पर एक रीड रिक्वेस्ट जारी करके स्थानांतरण शुरू करता है । यह रीड रिक्वेस्ट किसी अन्य रीड रिक्वेस्ट की तरह दिखता है, और डिस्क कंट्रोलर को यह नहीं पता (या देखभाल) है कि यह सीपीयू से आया है या डीएमए कंट्रोलर से। आमतौर पर, लिखने के लिए मेमोरी एड्रेस बस की एड्रेस लाइनों पर होता है, इसलिए जब डिस्क कंट्रोलर अपने आंतरिक बफर से अगला शब्द प्राप्त करता है, तो यह जानता है कि इसे कहां लिखना है। मेमोरी के लिए लेखन एक और मानक बस चक्र (चरण 3) है।
    • जब लेखन पूरा हो जाता है, तो डिस्क नियंत्रक डीएमए नियंत्रक को एक पावती संकेत भेजता है, बस पर भी (चरण 4)। DMA नियंत्रक तब बाइट काउंट का उपयोग करने और घटाने के लिए मेमोरी एड्रेस को बढ़ाता है। यदि बाइट की गिनती अभी भी 0 से अधिक है, तो चरण 4 में से 2 को दोहराया जाता है जब तक कि गिनती 0 तक नहीं पहुंच जाती।
    • उस समय, डीएमए नियंत्रक सीपीयू को बाधित करता है यह बताने के लिए कि स्थानांतरण अब पूरा हो गया है। जब ऑपरेटिंग सिस्टम शुरू होता है, तो इसे डिस्क ब्लॉक को मेमोरी में कॉपी नहीं करना पड़ता है; यह पहले से ही है।

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

  3. डिवाइस का एक उपकरण नियंत्रक डिवाइस को नियंत्रित करता है और डिवाइस पर संचालन करता है। डीएमए नियंत्रक किस उपकरण को नियंत्रित और संचालन करता है?

धन्यवाद!


ऐसा लगता है कि आपकी समझ बस Mastering पर आधारित है, जो मुझे लगता है कि उस पाठ्यपुस्तक में वर्णित डीएमए अवधारणा से अधिक आधुनिक है। पाठ्यपुस्तक में डीएमए अवधारणा अधिक आदिम है।
6

मैंने किताब के सरलीकृत मॉडल के लिए एक आरेख जोड़ा।
टिम

चित्र में तीर 3 पाठ विवरण से मेल नहीं खाता ... बधाई। यह निर्धारित करने के लिए कि कौन सा सही है, चरण 3 के लिए बस समय आरेख की आवश्यकता होगी। इससे भी महत्वपूर्ण बात यह है कि चरण 3 में डेटा सिग्नल को रखने के लिए कौन सी डिवाइस जिम्मेदार है, यह जानने की जरूरत है। क्या डिस्क कंट्रोलर डेटा को पहले डीएमए कंट्रोलर को भेजता है, और फिर डीएमए कंट्रोलर डेटा को दोहराता है (बस में अपना वोल्टेज लगाता है) ) स्मृति को?
रवांग

चरण 4 में "एके" भी संदिग्ध है। क्या डीएमए पहले से ही नकल करने के लिए बाइट्स की संख्या नहीं जानता है?
6

स्पष्ट नहीं है कि कैसे स्पष्ट किया जाए। ओएस पर और वास्तुकला पर आपने कौन सी पुस्तकों का अध्ययन किया या आपको लगता है कि सबसे अच्छे हैं?
टिम

जवाबों:


7

Q1

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

इस मामले में बफर हार्ड-डिस्क (नियंत्रक) पर स्मृति का एक टुकड़ा है, और नियंत्रक डिवाइस स्वयं हार्ड-डिस्क (नियंत्रक) का एक नियंत्रण रजिस्टर पंजीकृत करता है।

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

Q2

तो, एक डीएमए नियंत्रक का पूरा बिंदु "डिवाइस के आंतरिक बफर से सामान को मेमोरी में स्टोर करने का थकाऊ कार्य करना है"। सीपीयू डीएमए नियंत्रक और डिस्क डिवाइस दोनों के साथ काम करेगा। यदि डिस्क स्वयं ऐसा कर सकती है, तो डीएमए नियंत्रक की कोई आवश्यकता नहीं होगी।

और वास्तव में, आधुनिक प्रणालियों में, डीएमए क्षमता आम तौर पर कड़ी मेहनत से डिस्क नियंत्रक में ही, इस अर्थ में कि नियंत्रक "बस मास्टरिंग" क्षमताओं, जिसका अर्थ है कि नियंत्रक ही है में बनाया गया है है डिवाइस के लिए डीएमए नियंत्रक। हालांकि, उन्हें दो अलग-अलग उपकरणों के रूप में देखने के लिए डीएमए की पूरी अवधारणा को समझना थोड़ा मुश्किल है।

Q3 (तरह का)

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

वास्तविक साक्ष्य: जब मैंने पहली बार डिस्क से मेमोरी में डीएमए ट्रांसफर के बारे में सीखा था तो 1997 के आसपास या जब आईडीई कंट्रोलर ने डीएमए का उपयोग करना शुरू कर दिया था, और आपको आईडीई को डीएमए करने की अनुमति देने के लिए "मदरबोर्ड आईडीई नियंत्रक" ड्राइवर प्राप्त करने की आवश्यकता थी। हार्ड-डिस्क से पढ़ने पर लगभग 6-10% सीपीयू समय लगता है, जहां एक ही सेटअप में डीएमए लगभग 1% सीपीयू समय का उपयोग करेगा। उस समय से पहले, SCSI डिस्क कंट्रोलर वाले केवल फैंसी सिस्टम DMA का उपयोग करते थे।


5

यह कोई उत्तर नहीं है; यह स्पष्टीकरण के लिए एक अनुरोध है जो टिप्पणियों में फिट होने के लिए बहुत लंबा है।

इससे पहले कि कोई इस प्रश्न का उत्तर दे सके, किसी को उस कंप्यूटर सिस्टम आर्किटेक्चर को स्पष्ट रूप से समझाना होगा जिसकी चर्चा की जा रही है। अर्थात्:

  • इस विवरण में बस सिस्टम क्या शामिल हैं?

    • अधिकांश कंप्यूटर सिस्टम में एक मेमोरी बस होती है।
    • अधिकांश कंप्यूटरों में अन्य प्रकार की बस प्रणालियाँ भी होती हैं।
  • क्या डिस्क IO मेमोरी बस से भी गुजरती है?

    • दूसरे शब्दों में, क्या डिस्क पते के लिए पता बस लाइनों और डेटा के लिए डेटा बस लाइनों का उपयोग करता है?
  • क्या डिस्क कंट्रोलर मेमोरी बस को इस रूप में देखता है ...

    • एक मेमोरी बस? यही है, यह सोचता है कि यह एक मेमोरी चिप से बात कर रहा है; यानी आरएएस (पंक्ति एक्सेस स्ट्रोब), कैस (कॉलम एक्सेस स्ट्रोब), ...
    • बहुत संभावना नहीं है - मेमोरी चिप से बात करने के लिए DRAM टाइमिंग (विलंबता) के अनुसार कमांड जारी करने के बारे में अल्ट्रा-सटीक होना चाहिए - कुछ घड़ी चक्र बहुत जल्दी या बहुत देर से, डेटा हानि हो जाएगी।
  • तो ... डिस्क नियंत्रक क्या सोचता है कि बस "वास्तव में" है?

  • अधिकांश कंप्यूटर प्रणालियों में, एक प्रकार का IO होता है जिसे "पोर्ट I / O" कहा जाता है।

    • पोर्ट I / O मेमोरी बस में या तो पिगीबैक हो सकता है, या उनके पास एक और समर्पित बस हो सकती है।
    • पोर्ट I / O की विशिष्ट विशेषता यह है कि व्यक्ति एक (या पूर्वनिर्धारित स्थिर संख्या) बस चक्र में चीजों को समाप्त कर सकता है - DRAM समय के खतरों के बारे में चिंता करने की कोई आवश्यकता नहीं है।
  • अधिक उन्नत (अच्छी तरह से, दो दशक पहले से) सिस्टम में, नए प्रकार के बस सिस्टम हैं। उदाहरण के लिए, ISA, PCI, AGP, PCMCIA ... SCSI, ATA, SAS, SATA, FC-AL ...


अब, "जिस कंप्यूटर सिस्टम पर चर्चा की जा रही है" के बारे में इतनी अनिश्चितताओं के साथ, आप समझ सकते हैं कि आपको अपने प्रश्न का स्पष्ट उत्तर क्यों नहीं मिलेगा।

हां, मुझे पता है कि यह एक पाठ्यपुस्तक से आता है। आपके पास एक प्रति है। मैं नही। (घर पर नहीं - कार्यालय में एक है, हालांकि।) इसलिए, यदि आपको उत्तर की आवश्यकता है, तो आपको कुछ आरेख दिखाने और यह समझाने की आवश्यकता होगी कि आपके कंप्यूटर का बस सिस्टम कैसा दिखता है।


हालांकि बहुत नीचे की रेखा पर:

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

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

  • समय-सीमा के दौरान जहां डीएमए बस (बहुवचन) को लेता है, डीएमए उस बस पर कमांड जारी करेगा - अर्थात इसके सामान्य नियंत्रक के स्थान पर, अर्थात डीएमए यह दिखावा करता है कि यह सीपीयू का काम कर रहा है।

  • यदि डेटा ट्रांसफर में दो अलग-अलग बस शामिल हैं, तो डीएमए को अलग-अलग बस में करना पड़ सकता है।

  • कई बाइट्स (शब्द, आदि) को स्थानांतरित करने में सक्षम होने के लिए, DMA में प्रतिलिपि बनाई जाने वाली डेटा की शेष राशि का ट्रैक रखने के लिए एक लूप काउंटर होता है।

  • मुख्य मेमोरी में लिखने में सक्षम होने के लिए, डीएमए में एक मेमोरी एड्रेस रजिस्टर होता है, जो सीपीयू द्वारा प्रोग्राम किया जाता है, ताकि सीपीयू डीएमए को बता सके कि डेटा कहां लिखना है।

  • सिस्टम के बस डिजाइन के आधार पर, डीएमए डीआरएएम समय चक्रों के भीषण विस्तार से निपट सकता है या नहीं हो सकता है।

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

  • आधुनिक कंप्यूटर सिस्टम में एक समर्पित सबसिस्टम है जिसे DRAM कंट्रोलर कहा जाता है। यदि एक है, तो यह लगभग निश्चित है कि यह DRAM नियंत्रक DMA की कार्यक्षमता को भी पूरा करेगा, अर्थात, ऐसा लगता है कि यह एक प्रोग्रामयोग्य "बाइट कॉपी लूप" है, और उपरोक्त सभी जटिलता DRAM के सिलिकॉन में छिपी हुई है नियंत्रक।


यदि आप इसे बहुत भ्रामक पाते हैं - मुझे यह भ्रामक लगता है - आपको आरेखों की आवश्यकता होगी। आरेख के बहुत सारे। सिस्टम आरेख। बस चित्र। आरेख। राज्य संक्रमण आरेख। आदि।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.