लेख का दूसरा भाग।अधिकांश आधुनिक कंप्यूटर, चाहे वह एक
फ़ूजीत्सू के सुपर कंप्यूटर हो, एक साधारण व्यक्तिगत कंप्यूटर या यहां तक कि एक कैलकुलेटर, ऑपरेशन के एक सामान्य सिद्धांत को संयोजित करता है, अर्थात्,
नियंत्रण प्रवाह (कंट्रोलफ्लो) के आधार पर एक गणना मॉडल। हालांकि, यह मॉडल एकमात्र संभव नहीं है। कुछ मायनों में, इसके विपरीत एक कम्प्यूटेशनल मॉडल
है जो डेटा स्ट्रीम या बस डेटाफ़्लो
द्वारा संचालित
होता है । मैं अब उसके बारे में बात करना चाहता हूं।
नियंत्रण प्रवाह वास्तुकला को अक्सर वॉन न्यूमैन (जॉन वॉन न्यूमैन के सम्मान में) के रूप में जाना जाता है। यह पूरी तरह से सही नहीं है, क्योंकि वॉन न्यूमैन वास्तुकला नियंत्रण प्रवाह आर्किटेक्चर का सिर्फ एक सबसेट है। नियंत्रण प्रवाह के गैर-न्यूमैन आर्किटेक्चर हैं, उदाहरण के लिए हार्वर्ड , जो अब केवल माइक्रोकंट्रोलर में पाया जा सकता है।
नियंत्रण प्रवाह (कंट्रोलफ्लो) की वास्तुकला के भाग के रूप में, कंप्यूटर में दो मुख्य नोड होते हैं: प्रोसेसर और मेमोरी। एक कार्यक्रम निष्पादन के क्रम में स्मृति में संग्रहीत निर्देशों का एक समूह है। प्रोग्राम जिस डेटा के साथ काम करता है उसे मेमोरी में भी चर के एक सेट के रूप में संग्रहीत किया जाता है। वर्तमान में निष्पादित होने वाले अनुदेश का पता एक विशेष रजिस्टर में संग्रहीत है, x86 में इसे निर्देश सूचक (आईपी) कहा जाता है। निर्देश के निष्पादन की शुरुआत का क्षण पिछले एक के पूरा होने के क्षण से निर्धारित होता है (हम अब किसी भी
आउट-ऑफ-ऑर्डर के बिना एक सरलीकृत मॉडल पर विचार कर रहे हैं)। अधिकांश पाठकों के लिए प्रणाली बहुत ही सरल, समझने योग्य और परिचित है। तो कुछ और लेकर क्यों आए?
जन्मजात नियंत्रण प्रवाह की समस्याएं
तथ्य यह है कि नियंत्रण प्रवाह वास्तुकला में कई अंतर्निहित खामियां हैं, जिन्हें पूरी तरह से समाप्त नहीं किया जा सकता है, क्योंकि वे कम्प्यूटेशनल प्रक्रिया के संगठन से खुद को स्टेम करते हैं, आप केवल तकनीकी समाधानों की विभिन्न
बैसाखियों की मदद से नकारात्मक प्रभाव को कम कर सकते हैं। हम मुख्य समस्याओं को सूचीबद्ध करते हैं:
- निर्देश निष्पादित होने से पहले, इसके ऑपरेंड को मेमोरी से प्रोसेसर रजिस्टरों में लोड किया जाना चाहिए, और निष्पादन के बाद, इसे मेमोरी में वापस अनलोड किया जाना चाहिए। प्रोसेसर-मेमोरी बस एक अड़चन बन रही है: प्रोसेसर समय का निष्क्रिय हिस्सा है, डेटा लोड होने की प्रतीक्षा कर रहा है। प्रोएक्टिव सैंपलिंग और मल्टीपल कैश लेवल का उपयोग करके वेरिएबल सक्सेस को हल किया जाता है।
- मल्टीप्रोसेसर सिस्टम का निर्माण कई कठिनाइयों से भरा हुआ है। ऐसी प्रणालियों की दो मुख्य अवधारणाएं हैं: साझा और वितरित मेमोरी के साथ। पहले मामले में, कई प्रोसेसर को एक रैम तक साझा करना शारीरिक रूप से प्रदान करना मुश्किल है। दूसरे मामले में, डेटा सुसंगतता और सिंक्रनाइज़ेशन समस्याएं उत्पन्न होती हैं। सिस्टम में प्रोसेसर की बढ़ती संख्या के साथ, अधिक से अधिक संसाधनों को सिंक्रनाइज़ेशन सुनिश्चित करने पर खर्च किया जाता है और कम से कम कंप्यूटिंग पर ही [03] ।
- कोई भी गारंटी नहीं देता है कि किसी निर्देश के निष्पादन के समय इसके ऑपरेंड निर्दिष्ट पते पर मेमोरी में होंगे। इस डेटा को रिकॉर्ड करने वाले निर्देश को अभी तक लागू नहीं किया जा सकता है। बहु-थ्रेडेड अनुप्रयोगों में,
प्रोग्रामर के संसाधनों और तंत्रिकाओं का एक महत्वपूर्ण हिस्सा थ्रेड सिंक्रोनाइज़ेशन सुनिश्चित करने पर खर्च किया जाता है।
मिलो - डेटाफ्लो
Dataflow वास्तुकला शब्द के लिए कोई स्थापित रूसी अनुवाद नहीं है। आप "स्ट्रीमिंग आर्किटेक्चर", "डेटा फ़्लो आर्किटेक्चर", "डेटा फ़्लो कंट्रोल के साथ आर्किटेक्चर" और जैसे विकल्पों पर आ सकते हैं।
डेटा प्रवाह नियंत्रण (डेटाफ़्लो)
[01] के साथ आर्किटेक्चर में "निर्देशों के अनुक्रम" की कोई अवधारणा नहीं है, कोई निर्देश सूचक नहीं है, और सामान्य अर्थों में भी पता योग्य मेमोरी नहीं है। एक स्ट्रीमिंग सिस्टम में एक कार्यक्रम निर्देशों का एक सेट नहीं है, लेकिन एक कम्प्यूटेशनल ग्राफ है। ग्राफ का प्रत्येक नोड एक ऑपरेटर या ऑपरेटरों के एक सेट का प्रतिनिधित्व करता है, और शाखाएं डेटा के अनुसार नोड्स की निर्भरता को दर्शाती हैं। इसके सभी इनपुट डेटा उपलब्ध होते ही अगला नोड चलना शुरू हो जाता है। यह डेटाफ्लो के मूल सिद्धांतों में से एक है: डेटा तत्परता निर्देशों का निष्पादन।
यहां द्विघात समीकरण की जड़ों की गणना के लिए एक उदाहरण ग्राफ है। ब्लू सर्कल ऑपरेटर हैं, नारंगी वर्ग इनपुट डेटा हैं, ग्रीन स्क्वायर आउटपुट डेटा हैं, और पीले वर्ग निरंतर हैं। काले तीर संख्यात्मक डेटा के संचरण को इंगित करते हैं, नीले तीर बूलियन डेटा को इंगित करते हैं।

हार्डवेयर कार्यान्वयन
स्ट्रीमिंग मशीनों में, डेटा को प्रेषित किया जाता है और तथाकथित के रूप में संग्रहीत किया जाता है।
टोकन (टोकन)। एक टोकन एक संरचना है जिसमें वास्तविक मूल्य संचारित होता है और
लेबल गंतव्य नोड का सूचक होता है। सबसे सरल स्ट्रीमिंग कंप्यूटिंग सिस्टम में दो डिवाइस होते हैं: एक निष्पादन इकाई और एक मिलान इकाई
[11] ।

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

स्थैतिक डेटाफ्लो वास्तुकला
ऊपर वर्णित योजना को स्थिर (स्टेटिक डेटाफ़्लो) कहा जाता है। इसमें, प्रत्येक कंप्यूटिंग नोड को एक ही प्रतिलिपि में प्रस्तुत किया जाता है, नोड्स की संख्या अग्रिम में जानी जाती है, और सिस्टम में परिसंचारी टोकन की संख्या भी अग्रिम में जानी जाती है। स्थैतिक वास्तुकला कार्यान्वयन का एक उदाहरण एमआईटी स्टेटिक डेटाफ्लो मशीन
[12] है , जो कि 1974 में मैसाचुसेट्स इंस्टीट्यूट ऑफ टेक्नोलॉजी में बनाया गया एक स्ट्रीमिंग कंप्यूटर है। मशीन में एक संचार नेटवर्क द्वारा जुड़े कई
प्रसंस्करण तत्व शामिल थे। एक तत्व का सर्किट चित्र में दिखाया गया है:

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

स्थिर की तुलना में डायनामिक डेटाफ्लो आर्किटेक्चर, गणना की बेहतर समानता के कारण उच्च प्रदर्शन को दर्शाता है। इसके अलावा, यह प्रोग्रामर के लिए अधिक अवसर प्रदान करता है। दूसरी ओर, एक गतिशील प्रणाली हार्डवेयर कार्यान्वयन में अधिक जटिल है, विशेष रूप से मिलान उपकरणों और टोकन संदर्भ पीढ़ी ब्लॉकों के लिए।
जारी रखा जाए
लेख के अगले भाग में: डेटाफ़्लो आर्किटेक्चर यहाँ वर्णित के अनुसार अच्छे क्यों नहीं हैं? क्लासिक के साथ
हेजहोग के साथ एक स्ट्रीमिंग सिस्टम कैसे पार करें? कैसे, और सबसे महत्वपूर्ण बात, डेटाफ़्लो सिस्टम पर लिखे गए प्रोग्राम क्या हैं?
बने रहें ...
साहित्य
सामान्य डेटाफ़्लो प्रश्न
[०१] - डाटाफ्लो आर्किटेक्चर, ज्यूरिज सिलक
[०२] - बकानोव वी.एम. स्ट्रीमिंग (डेटाफ़्लो) कंप्यूटर: डेटा प्रोसेसिंग की तीव्रता को नियंत्रित करते हैं
[०३] - धारा के डेटा (डेटाफ्लो) आर्किटेक्चर पर डेटा प्रोसेसिंग का समानांतरकरण। पत्रिका "टॉप 50 सुपर कंप्यूटर"।
हार्डवेयर कार्यान्वयन
[११] - डेटाफ्लो आर्किटेक्चर, अरविंद डेविड ई। कुलर
[१२] - एक बेसिक डेटा-फ्लो प्रोसेसर, जैक बी डेनिस और डेविड पी। मिसुनास के लिए प्रारंभिक वास्तुकला
[१३] - एक बहुस्तरीय डेटा फ्लो कंप्यूटर आर्किटेक्चर, जेआर गुरद, आई। वॉटसन।