डेटाफ्लो आर्किटेक्चर: Difference between revisions

From Vigyanwiki
(Created page with "{{More citations needed|date=August 2012}} डेटा प्रवाह आर्किटेक्चर एक डेटाफ्लो-आधारित कं...")
 
No edit summary
Line 1: Line 1:
{{More citations needed|date=August 2012}}
{{More citations needed|date=August 2012}}
[[ डेटा प्रवाह ]] आर्किटेक्चर एक डेटाफ्लो-आधारित [[कंप्यूटर आर्किटेक्चर]] है जो सीधे पारंपरिक [[वॉन न्यूमैन वास्तुकला]] या [[ बहाव को काबू करें ]] आर्किटेक्चर के विपरीत है। डेटाफ्लो आर्किटेक्चर में कोई [[ कार्यक्रम गणक ]] नहीं है, अवधारणा में: निर्देशों की निष्पादन क्षमता और निष्पादन पूरी तरह से निर्देशों के लिए इनपुट तर्कों की उपलब्धता के आधार पर निर्धारित किया जाता है,<ref name=architecture>{{cite journal |last=Veen |first=Arthur H. |date=December 1986 |title=डेटाफ्लो मशीन आर्किटेक्चर|journal=ACM Computing Surveys |volume=18 |number=4 |pages=365–396 |url=https://www.researchgate.net/publication/220566271 |access-date=5 March 2019 |doi=10.1145/27633.28055 |s2cid=5467025}}</ref> ताकि निर्देश निष्पादन के क्रम की भविष्यवाणी करना कठिन हो सके।
'''डेटाफ्लो आर्किटेक्चर''' एक [[डेटाफ्लो]]-आधारित [[कंप्यूटर आर्किटेक्चर]] है जो सीधे पारंपरिक [[वॉन न्यूमैन आर्किटेक्चर]] या [[ बहाव को काबू करें |बहाव को नियंत्रण करें]] आर्किटेक्चर के विपरीत है। डेटाफ्लो आर्किटेक्चर में कोई [[ कार्यक्रम गणक ]] नहीं है, अवधारणा में: निर्देशों की निष्पादन क्षमता और निष्पादन पूरी तरह से निर्देशों के लिए इनपुट तर्कों की उपलब्धता के आधार पर निर्धारित किया जाता है,<ref name=architecture>{{cite journal |last=Veen |first=Arthur H. |date=December 1986 |title=डेटाफ्लो मशीन आर्किटेक्चर|journal=ACM Computing Surveys |volume=18 |number=4 |pages=365–396 |url=https://www.researchgate.net/publication/220566271 |access-date=5 March 2019 |doi=10.1145/27633.28055 |s2cid=5467025}}</ref> ताकि निर्देश निष्पादन के क्रम की भविष्यवाणी करना कठिन हो सके।


हालांकि किसी भी व्यावसायिक रूप से सफल सामान्य-उद्देश्य वाले कंप्यूटर हार्डवेयर ने डेटाफ्लो आर्किटेक्चर का उपयोग नहीं किया है, लेकिन इसे विशेष हार्डवेयर जैसे [[ अंकीय संकेत प्रक्रिया ]], [[नेटवर्क रूटिंग]], [[ ग्राफिक्स प्रसंस्करण ]], [[ टेलीमेटरी ]] और हाल ही में डेटा वेयरहाउसिंग और [[ कृत्रिम होशियारी ]] (जैसे) में सफलतापूर्वक लागू किया गया है। : बहुरूपी डेटा प्रवाह<ref>{{Cite news |last=Maxfield |first=Max |date=24 December 2020 |title=डीप विजन के पॉलीमॉर्फिक डेटाफ्लो आर्किटेक्चर को नमस्ते कहें|work=Electronic Engineering Journal |publisher=Techfocus media}}</ref> कनवल्शन इंजन,<ref>{{cite web |url=https://kinara.ai/<!-- Prior: https://deepvision.io/ --> |title=किनारा (पूर्व में डीप विजन)|author=<!-- Unstated --> |date=2022 |website=Kinara |access-date=2022-12-11}}</ref> संरचना संचालित,<ref>{{cite web |url=https://hailo.ai/ |title=हेलो|author=<!-- Unstated --> |date=<!-- Undated --> |website=हेलो|access-date=2022-12-11}}</ref> डेटा प्रवाह [[निर्धारण (कंप्यूटिंग)]]<ref>{{Cite report |last=Lie |first=Sean |date=29 August 2022 |url=https://www.cerebras.net/blog/cerebras-architecture-deep-dive-first-look-inside-the-hw/sw-co-design-for-deep-learning |title=Cerebras Architecture Deep Dive: First Look Inside the HW/SW Co-Design for Deep Learning |website=Cerebras}}</ref>). यह आज के कई सॉफ्टवेयर आर्किटेक्चर में भी बहुत प्रासंगिक है, जिसमें [[डेटाबेस]] इंजन डिजाइन और [[समानांतर कंप्यूटिंग]] फ्रेमवर्क शामिल हैं।{{Citation needed|date=March 2015}}
हालांकि किसी व्यावसायिक रूप से सफल सामान्य-उद्देश्य वाले कंप्यूटर हार्डवेयर में डेटाफ्लो आर्किटेक्चर का उपयोग नहीं किया गया है, लेकिन इसे विशेष हार्डवेयर जैसे [[डिजिटल सिग्नल प्रोसेसिंग]], [[नेटवर्क रूटिंग]], [[ग्राफिक्स प्रोसेसिंग यूनिट पर सामान्य प्रयोजन कंप्यूटिंग|ग्राफिक्स प्रोसेसिंग]], [[टेलीमेट्री]], और हाल ही में डेटा वेयरहाउसिंग और [[आर्टिफिशियल इंटेलिजेंस की उन्नति के लिए एसोसिएशन|आर्टिफिशियल इंटेलिजेंस]] (जैसे) में सफलतापूर्वक लागू किया गया है। पॉलीमॉर्फिक डेटाफ्लो<ref>{{Cite news |last=Maxfield |first=Max |date=24 December 2020 |title=डीप विजन के पॉलीमॉर्फिक डेटाफ्लो आर्किटेक्चर को नमस्ते कहें|work=Electronic Engineering Journal |publisher=Techfocus media}}</ref> कनवल्शन इंजन,<ref>{{cite web |url=https://kinara.ai/<!-- Prior: https://deepvision.io/ --> |title=किनारा (पूर्व में डीप विजन)|author=<!-- Unstated --> |date=2022 |website=Kinara |access-date=2022-12-11}}</ref> संरचना-चालित,<ref>{{cite web |url=https://hailo.ai/ |title=हेलो|author=<!-- Unstated --> |date=<!-- Undated --> |website=हेलो|access-date=2022-12-11}}</ref> डेटाफ्लो [[शेड्यूलिंग]]<ref>{{Cite report |last=Lie |first=Sean |date=29 August 2022 |url=https://www.cerebras.net/blog/cerebras-architecture-deep-dive-first-look-inside-the-hw/sw-co-design-for-deep-learning |title=Cerebras Architecture Deep Dive: First Look Inside the HW/SW Co-Design for Deep Learning |website=Cerebras}}</ref>)यह आज भी कई सॉफ्टवेयर आर्किटेक्चर में बहुत प्रासंगिक है, जिसमें [[डेटाबेस]] इंजन डिजाइन और [[समांतर कंप्यूटिंग]] फ्रेमवर्क सम्मिलित हैं।{{Citation needed|date=March 2015}}


तार गति पैकेट अग्रेषण जैसे रीयल-टाइम डेटा पथ अनुप्रयोगों द्वारा प्रस्तुत वर्कलोड से मिलान करने के लिए सिंक्रोनस डेटाफ्लो आर्किटेक्चर ट्यून। डेटाफ्लो आर्किटेक्चर जो प्रकृति में नियतात्मक हैं, प्रोग्रामर को प्रोसेसर लोड संतुलन, सिंक्रनाइज़ेशन और सामान्य संसाधनों तक पहुंच जैसे जटिल कार्यों का प्रबंधन करने में सक्षम बनाते हैं।<ref name="EN-Genius">{{cite press release |date=June 18, 2008 |title=HX300 Family of NPUs and Programmable Ethernet Switches to the Fiber Access Market |url=http://www.en-genius.net/site/zones/networkZONE/product_reviews/netp_061608 |website=EN-Genius |url-status=dead |archive-url=https://web.archive.org/web/20110722151409/http://www.en-genius.net/site/zones/networkZONE/product_reviews/netp_061608 |archive-date=2011-07-22}}</ref> इस बीच, शब्दावली का टकराव होता है, क्योंकि डेटाफ्लो शब्द का उपयोग समानांतर प्रोग्रामिंग के एक उपक्षेत्र के लिए किया जाता है: [[डेटाफ्लो प्रोग्रामिंग]] के लिए।
तार-गति पैकेट अग्रेषण जैसे रीयल-टाइम डेटा पथ अनुप्रयोगों द्वारा प्रस्तुत वर्कलोड से मेल खाने के लिए सिंक्रोनस डेटाफ्लो आर्किटेक्चर ट्यून। डेटाफ्लो आर्किटेक्चर जो प्रकृति में नियतात्मक हैं, प्रोग्रामर को प्रोसेसर लोड संतुलन, सिंक्रनाइज़ेशन और सामान्य संसाधनों तक पहुंच जैसे जटिल कार्यों को प्रबंधित करने में सक्षम बनाते हैं।<ref name="EN-Genius">{{cite press release |date=June 18, 2008 |title=HX300 Family of NPUs and Programmable Ethernet Switches to the Fiber Access Market |url=http://www.en-genius.net/site/zones/networkZONE/product_reviews/netp_061608 |website=EN-Genius |url-status=dead |archive-url=https://web.archive.org/web/20110722151409/http://www.en-genius.net/site/zones/networkZONE/product_reviews/netp_061608 |archive-date=2011-07-22}}</ref>
 
इस बीच, शब्दावली का टकराव होता है, क्योंकि [[डेटाफ्लो|''डेटाफ्लो'']] शब्द का उपयोग समानांतर प्रोग्रामिंग के एक उपक्षेत्र के लिए किया जाता है: [[डेटाफ्लो प्रोग्रामिंग]] के लिए।


== इतिहास ==
== इतिहास ==
डेटा प्रवाह के लिए हार्डवेयर आर्किटेक्चर 1970 और 1980 के दशक की शुरुआत में कंप्यूटर आर्किटेक्चर अनुसंधान का एक प्रमुख विषय था। [[मैसाचुसेट्स की तकनीकी संस्था]] के [[जैक डेनिस]] ने स्टैटिक डेटाफ्लो आर्किटेक्चर के क्षेत्र का बीड़ा उठाया जबकि मैनचेस्टर डेटाफ्लो मशीन<ref name="Manchester-Dataflow">[https://web.archive.org/web/20120730230237/http://cnc.cs.manchester.ac.uk/projects/dataflow.html Manchester Dataflow Research Project, Research Reports: Abstracts, September 1997]</ref> और MIT टैग की गई टोकन वास्तुकला गतिशील डेटा प्रवाह में प्रमुख परियोजनाएँ थीं।
1970 और 1980 के दशक की शुरुआत में डेटाफ्लो के लिए हार्डवेयर आर्किटेक्चर [[कंप्यूटर आर्किटेक्चर]] रिसर्च का एक प्रमुख विषय था। [[एमआईटी]] के [[जैक डेनिस]] ने स्थिर डेटाफ्लो आर्किटेक्चर के क्षेत्र में अग्रणी भूमिका निभाई, जबकि मैनचेस्टर डेटाफ्लो मशीन<ref name="Manchester-Dataflow">[https://web.archive.org/web/20120730230237/http://cnc.cs.manchester.ac.uk/projects/dataflow.html Manchester Dataflow Research Project, Research Reports: Abstracts, September 1997]</ref> और एमआईटी टैग्ड टोकन आर्किटेक्चर गतिशील डेटाफ्लो में प्रमुख परियोजनाएं थीं।


हालाँकि, शोध से संबंधित समस्याओं पर कभी काबू नहीं पाया गया:
हालाँकि, शोध से संबंधित समस्याओं पर कभी नियंत्रण नहीं पाया गया:


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


बहरहाल, 1990 के दशक से [[आउट-ऑफ-ऑर्डर निष्पादन]] (OOE) प्रमुख कंप्यूटिंग प्रतिमान बन गया है। यह प्रतिबंधित डेटा प्रवाह का एक रूप है। इस प्रतिमान ने एक निष्पादन विंडो का विचार पेश किया। निष्पादन विंडो वॉन न्यूमैन आर्किटेक्चर के अनुक्रमिक क्रम का पालन करती है, हालांकि विंडो के भीतर, डेटा निर्भरता क्रम में निर्देशों को पूरा करने की अनुमति है। यह [[ CPU ]] में पूरा किया जाता है जो निष्पादन विंडो में कोड की डेटा निर्भरता को गतिशील रूप से टैग करता है। डेटा निर्भरताओं का गतिशील रूप से ट्रैक रखने की तार्किक जटिलता, आउट-ऑफ-ऑर्डर निष्पादन सीपीयू को निष्पादन इकाइयों (2-6) की एक छोटी संख्या तक सीमित करती है और निष्पादन विंडो के आकार को 32 से 200 निर्देशों की सीमा तक सीमित करती है, जो कि उससे बहुत छोटा है। पूर्ण डेटा प्रवाह मशीनों के लिए कल्पना की गई।
बहरहाल, 1990 के दशक से [[आउट-ऑफ-ऑर्डर निष्पादन]] (ओओइ) प्रमुख कंप्यूटिंग प्रतिमान बन गया है। यह प्रतिबंधित डेटा प्रवाह का एक रूप है। इस प्रतिमान ने एक ''निष्पादन विंडो'' का विचार पेश किया। ''निष्पादन विंडो'' वॉन न्यूमैन आर्किटेक्चर के अनुक्रमिक क्रम का पालन करती है, हालांकि, विंडो के भीतर, डेटा निर्भरता क्रम में निर्देशों को पूरा करने की अनुमति है। यह सीपीयू में पूरा किया जाता है जो निष्पादन विंडो में कोड की डेटा निर्भरता को गतिशील रूप से टैग करता है। डेटा निर्भरताओं का गतिशील रूप से ट्रैक रखने की तार्किक जटिलता [[ओओई सीपीयू]] को निष्पादन इकाइयों (2-6) की एक छोटी संख्या तक सीमित करती है और निष्पादन विंडो आकार को 32 से 200 निर्देशों की सीमा तक सीमित करती है, पूर्ण डेटाफ्लो मशीनों के लिए कल्पना की तुलना में बहुत छोटा है।


== डेटाफ्लो आर्किटेक्चर विषय ==
== डेटाफ्लो आर्किटेक्चर विषय ==


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


Line 28: Line 30:
आम तौर पर, नियंत्रण प्रवाह वास्तुकला में, [[संकलक]] बाइनरी आउटपुट फ़ाइलों में निर्देश अनुक्रमों को बेहतर ढंग से व्यवस्थित करने के लिए निर्देशों के बीच डेटा निर्भरता के लिए प्रोग्राम स्रोत कोड का विश्लेषण करते हैं। निर्देश क्रमिक रूप से व्यवस्थित किए जाते हैं लेकिन निर्भरता की जानकारी स्वयं बायनेरिज़ में दर्ज नहीं की जाती है। डेटाफ्लो मशीन के लिए संकलित बायनेरिज़ में यह निर्भरता जानकारी होती है।
आम तौर पर, नियंत्रण प्रवाह वास्तुकला में, [[संकलक]] बाइनरी आउटपुट फ़ाइलों में निर्देश अनुक्रमों को बेहतर ढंग से व्यवस्थित करने के लिए निर्देशों के बीच डेटा निर्भरता के लिए प्रोग्राम स्रोत कोड का विश्लेषण करते हैं। निर्देश क्रमिक रूप से व्यवस्थित किए जाते हैं लेकिन निर्भरता की जानकारी स्वयं बायनेरिज़ में दर्ज नहीं की जाती है। डेटाफ्लो मशीन के लिए संकलित बायनेरिज़ में यह निर्भरता जानकारी होती है।


एक डेटाफ्लो कंपाइलर चर नामों का उपयोग करने के बजाय प्रत्येक निर्भरता के लिए अद्वितीय टैग बनाकर इन निर्भरताओं को रिकॉर्ड करता है। प्रत्येक निर्भरता को एक अद्वितीय टैग देकर, यह बाइनरी में गैर-निर्भर कोड सेगमेंट को ऑर्डर से बाहर और समानांतर में निष्पादित करने की अनुमति देता है। कंपाइलर डेटा प्रवाह के लिए लूप, ब्रेक स्टेटमेंट और विभिन्न प्रोग्रामिंग कंट्रोल सिंटैक्स का पता लगाता है।
एक डेटाफ्लो कंपाइलर चर नामों का उपयोग करने के बजाय प्रत्येक निर्भरता के लिए अद्वितीय टैग बनाकर इन निर्भरताओं को रिकॉर्ड करता है। प्रत्येक निर्भरता को एक अद्वितीय टैग देकर, यह बाइनरी में गैर-निर्भर कोड सेगमेंट को ऑर्डर से बाहर और समानांतर में निष्पादित करने की अनुमति देता है। कंपाइलर डेटाफ्लो के लिए लूप, ब्रेक स्टेटमेंट और विभिन्न प्रोग्रामिंग कंट्रोल सिंटैक्स का पता लगाता है।


=== कार्यक्रम ===
=== कार्यक्रम ===
प्रोग्राम गतिशील डेटा प्रवाह कंप्यूटर के सीएएम में लोड किए जाते हैं। जब एक निर्देश के सभी टैग किए गए ऑपरेंड उपलब्ध हो जाते हैं (यानी, पिछले निर्देशों और/या उपयोगकर्ता इनपुट से आउटपुट), [[निष्पादन इकाई]] द्वारा निर्देश को निष्पादन के लिए तैयार के रूप में चिह्नित किया जाता है।
प्रोग्राम गतिशील डेटाफ्लो कंप्यूटर के सीएएम में लोड किए जाते हैं। जब एक निर्देश के सभी टैग किए गए ऑपरेंड उपलब्ध हो जाते हैं (यानी, पिछले निर्देशों और/या उपयोगकर्ता इनपुट से आउटपुट), [[निष्पादन इकाई]] द्वारा निर्देश को निष्पादन के लिए तैयार के रूप में चिह्नित किया जाता है।


इसे निर्देश को सक्रिय करने या सक्रिय करने के रूप में जाना जाता है। निष्पादन इकाई द्वारा एक बार निर्देश पूरा हो जाने के बाद, इसका आउटपुट डेटा CAM को (इसके टैग के साथ) भेजा जाता है। कोई भी निर्देश जो इस विशेष डेटा (इसके टैग मान द्वारा पहचाना जाता है) पर निर्भर हैं, तब निष्पादन के लिए तैयार के रूप में चिह्नित किए जाते हैं। इस तरह, बाद के निर्देशों को उचित क्रम में निष्पादित किया जाता है, [[दौड़ की स्थिति]] से बचा जाता है। यह क्रम मानव प्रोग्रामर, क्रमादेशित क्रम द्वारा परिकल्पित अनुक्रमिक क्रम से भिन्न हो सकता है।
इसे निर्देश को सक्रिय करने या सक्रिय करने के रूप में जाना जाता है। निष्पादन इकाई द्वारा एक बार निर्देश पूरा हो जाने के बाद, इसका आउटपुट डेटा CAM को (इसके टैग के साथ) भेजा जाता है। कोई भी निर्देश जो इस विशेष डेटा (इसके टैग मान द्वारा पहचाना जाता है) पर निर्भर हैं, तब निष्पादन के लिए तैयार के रूप में चिह्नित किए जाते हैं। इस तरह, बाद के निर्देशों को उचित क्रम में निष्पादित किया जाता है, [[दौड़ की स्थिति]] से बचा जाता है। यह क्रम मानव प्रोग्रामर, क्रमादेशित क्रम द्वारा परिकल्पित अनुक्रमिक क्रम से भिन्न हो सकता है।

Revision as of 17:33, 19 May 2023

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

हालांकि किसी व्यावसायिक रूप से सफल सामान्य-उद्देश्य वाले कंप्यूटर हार्डवेयर में डेटाफ्लो आर्किटेक्चर का उपयोग नहीं किया गया है, लेकिन इसे विशेष हार्डवेयर जैसे डिजिटल सिग्नल प्रोसेसिंग, नेटवर्क रूटिंग, ग्राफिक्स प्रोसेसिंग, टेलीमेट्री, और हाल ही में डेटा वेयरहाउसिंग और आर्टिफिशियल इंटेलिजेंस (जैसे) में सफलतापूर्वक लागू किया गया है। पॉलीमॉर्फिक डेटाफ्लो[2] कनवल्शन इंजन,[3] संरचना-चालित,[4] डेटाफ्लो शेड्यूलिंग[5])। यह आज भी कई सॉफ्टवेयर आर्किटेक्चर में बहुत प्रासंगिक है, जिसमें डेटाबेस इंजन डिजाइन और समांतर कंप्यूटिंग फ्रेमवर्क सम्मिलित हैं।[citation needed]

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

इस बीच, शब्दावली का टकराव होता है, क्योंकि डेटाफ्लो शब्द का उपयोग समानांतर प्रोग्रामिंग के एक उपक्षेत्र के लिए किया जाता है: डेटाफ्लो प्रोग्रामिंग के लिए।

इतिहास

1970 और 1980 के दशक की शुरुआत में डेटाफ्लो के लिए हार्डवेयर आर्किटेक्चर कंप्यूटर आर्किटेक्चर रिसर्च का एक प्रमुख विषय था। एमआईटी के जैक डेनिस ने स्थिर डेटाफ्लो आर्किटेक्चर के क्षेत्र में अग्रणी भूमिका निभाई, जबकि मैनचेस्टर डेटाफ्लो मशीन[7] और एमआईटी टैग्ड टोकन आर्किटेक्चर गतिशील डेटाफ्लो में प्रमुख परियोजनाएं थीं।

हालाँकि, शोध से संबंधित समस्याओं पर कभी नियंत्रण नहीं पाया गया:

  • बड़े पैमाने पर समानांतर प्रणाली में कुशलतापूर्वक डेटा टोकन प्रसारित करना।
  • बड़े पैमाने पर समानांतर प्रणाली में कुशलता से निर्देश टोकन भेजना।
  • एक वास्तविक कार्यक्रम की सभी निर्भरताओं को धारण करने के लिए कंटेंट-एड्रेसेबल मेमोरी (सीएएम) का निर्माण करना।

एक बड़े नेटवर्क में प्रभावी रूप से वितरित होने के लिए निर्देश और उनकी डेटा निर्भरता बहुत सूक्ष्म सिद्ध हुई। अर्थात्, एक बड़े कनेक्शन नेटवर्क के माध्यम से यात्रा करने के लिए निर्देशों और टैग किए गए परिणामों का समय कई संगणना करने के समय से अधिक था।

बहरहाल, 1990 के दशक से आउट-ऑफ-ऑर्डर निष्पादन (ओओइ) प्रमुख कंप्यूटिंग प्रतिमान बन गया है। यह प्रतिबंधित डेटा प्रवाह का एक रूप है। इस प्रतिमान ने एक निष्पादन विंडो का विचार पेश किया। निष्पादन विंडो वॉन न्यूमैन आर्किटेक्चर के अनुक्रमिक क्रम का पालन करती है, हालांकि, विंडो के भीतर, डेटा निर्भरता क्रम में निर्देशों को पूरा करने की अनुमति है। यह सीपीयू में पूरा किया जाता है जो निष्पादन विंडो में कोड की डेटा निर्भरता को गतिशील रूप से टैग करता है। डेटा निर्भरताओं का गतिशील रूप से ट्रैक रखने की तार्किक जटिलता ओओई सीपीयू को निष्पादन इकाइयों (2-6) की एक छोटी संख्या तक सीमित करती है और निष्पादन विंडो आकार को 32 से 200 निर्देशों की सीमा तक सीमित करती है, पूर्ण डेटाफ्लो मशीनों के लिए कल्पना की तुलना में बहुत छोटा है।

डेटाफ्लो आर्किटेक्चर विषय

स्थिर और गतिशील डेटाफ्लो मशीनें

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

सामग्री-पता योग्य मेमोरी (CAM) का उपयोग करने वाले डिज़ाइन को डायनेमिक डेटाफ़्लो मशीन कहा जाता है। वे समांतरता को सुविधाजनक बनाने के लिए स्मृति में टैग का उपयोग करते हैं।

कंपाइलर

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

एक डेटाफ्लो कंपाइलर चर नामों का उपयोग करने के बजाय प्रत्येक निर्भरता के लिए अद्वितीय टैग बनाकर इन निर्भरताओं को रिकॉर्ड करता है। प्रत्येक निर्भरता को एक अद्वितीय टैग देकर, यह बाइनरी में गैर-निर्भर कोड सेगमेंट को ऑर्डर से बाहर और समानांतर में निष्पादित करने की अनुमति देता है। कंपाइलर डेटाफ्लो के लिए लूप, ब्रेक स्टेटमेंट और विभिन्न प्रोग्रामिंग कंट्रोल सिंटैक्स का पता लगाता है।

कार्यक्रम

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

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

निर्देश

एक निर्देश, इसके आवश्यक डेटा ऑपरेंड के साथ, एक निष्पादन इकाई को एक पैकेट के रूप में प्रेषित किया जाता है, जिसे एक निर्देश टोकन भी कहा जाता है। इसी तरह, आउटपुट डेटा CAM को डेटा टोकन के रूप में वापस प्रेषित किया जाता है। निर्देशों और परिणामों का पैकेटीकरण बड़े पैमाने पर तैयार निर्देशों के समानांतर निष्पादन की अनुमति देता है।

डेटाफ्लो नेटवर्क निष्पादन इकाइयों को निर्देश टोकन वितरित करते हैं और सीएएम को डेटा टोकन लौटाते हैं। पारंपरिक वॉन न्यूमैन आर्किटेक्चर के विपरीत, डेटा टोकन स्थायी रूप से स्मृति में संग्रहीत नहीं होते हैं, बल्कि वे क्षणिक संदेश होते हैं जो केवल निर्देश भंडारण के पारगमन में मौजूद होते हैं।

यह भी देखें

संदर्भ

  1. Veen, Arthur H. (December 1986). "डेटाफ्लो मशीन आर्किटेक्चर". ACM Computing Surveys. 18 (4): 365–396. doi:10.1145/27633.28055. S2CID 5467025. Retrieved 5 March 2019.
  2. Maxfield, Max (24 December 2020). "डीप विजन के पॉलीमॉर्फिक डेटाफ्लो आर्किटेक्चर को नमस्ते कहें". Electronic Engineering Journal. Techfocus media.
  3. "किनारा (पूर्व में डीप विजन)". Kinara. 2022. Retrieved 2022-12-11.
  4. "हेलो". हेलो. Retrieved 2022-12-11.
  5. Lie, Sean (29 August 2022). Cerebras Architecture Deep Dive: First Look Inside the HW/SW Co-Design for Deep Learning. Cerebras (Report).
  6. "HX300 Family of NPUs and Programmable Ethernet Switches to the Fiber Access Market". EN-Genius (Press release). June 18, 2008. Archived from the original on 2011-07-22.
  7. Manchester Dataflow Research Project, Research Reports: Abstracts, September 1997