कार्यक्रम गणक: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:


[[File:IBM 701console.jpg|thumb|[[आईबीएम 701]] कंप्यूटर का फ्रंट पैनल 1952 में पेश किया गया था। बीच में रोशनी विभिन्न रजिस्टरों की सामग्री प्रदर्शित करती है। निर्देश काउंटर निचले बाएँ पर है।|282x282px]]'''प्रोग्राम काउंटर (PC)''', जिसे आमतौर पर [[इंटेल]] x[[86]] और [[इटेनियम]] [[माइक्रोप्रोसेसर|माइक्रोप्रोसेसरों]] में '''इंस्ट्रक्शन पॉइंटर (IP)''' कहा जाता है, और कभी-कभी '''इंस्ट्रक्शन एड्रेस रजिस्टर (IAR)''',<ref name="Mead_1980" /> '''इंस्ट्रक्शन काउंटर''',<ref name="IBM_1953" /> या इंस्ट्रक्शन सीक्वेंसर का सिर्फ एक हिस्सा कहा जाता है।<ref name="Katzan_1971" /> एक [[प्रोसेसर रजिस्टर]] है जो इंगित करता है कि [[कंप्यूटर]] अपने [[कंप्यूटर प्रोग्राम|प्रोग्राम]] अनुक्रम में कहां है।<ref group="nb" name="NB1" />
[[File:IBM 701console.jpg|thumb|[[आईबीएम 701]] कंप्यूटर का फ्रंट पैनल 1952 में पेश किया गया था। बीच में रोशनी विभिन्न रजिस्टरों की सामग्री प्रदर्शित करती है। निर्देश गणक निचले बाएँ पर है।|282x282px]]'''प्रोग्राम गणक (पीसी)''', एक ऐसा [[प्रोसेसर रजिस्टर]] है जो यह इंगित करता है कि [[कंप्यूटर]] अपने [[कंप्यूटर प्रोग्राम|प्रोग्राम]] अनुक्रम में कहाँ पर है।<ref group="nb" name="NB1" /> इसे सामान्यतः [[इंटेल]] एक्स[[86]] और [[इटेनियम]] [[माइक्रोप्रोसेसर|माइक्रोप्रोसेसरों]] में '''निर्देश संकेतक (आईपी)''' और कभी-कभी '''निर्देश पता रजिस्टर (आईएआर)''',<ref name="Mead_1980" /> '''निर्देश गणक'''<ref name="IBM_1953" /> या निर्देश अनुक्रमक का सिर्फ एक हिस्सा कहा जाता है।<ref name="Katzan_1971" />


आमतौर पर, पीसी एक [[निर्देश (कंप्यूटर विज्ञान)|निर्देश]] प्राप्त करने के बाद बढ़ जाता है, और अगले निर्देश का स्मृति पता ("इंगित करता है") रखता है जिसे निष्पादित किया जाएगा।<ref name="Silberschatz_2018" />{{refn|group="nb"|name="NB2"|In a processor where the incrementation precedes the fetch, the PC points to the current instruction being executed. In some processors, the PC points some distance beyond the current instruction; for instance, in the [[ARM7]], the value of PC visible to the programmer points beyond the current instruction and beyond the [[delay slot]].<ref name="ARM_AG12" />}}
सामान्यतः, एक [[निर्देश (कंप्यूटर विज्ञान)|निर्देश]] प्राप्त करने के बाद पीसी में वृद्धि हो जाती है, और यह अगले निर्देश का मेमोरी पता ("इंगित करता है") धारण करता है जिसे निष्पादित करना होता है।<ref name="Silberschatz_2018" />{{refn|group="nb"|name="NB2"|In a processor where the incrementation precedes the fetch, the PC points to the current instruction being executed. In some processors, the PC points some distance beyond the current instruction; for instance, in the [[ARM7]], the value of PC visible to the programmer points beyond the current instruction and beyond the [[delay slot]].<ref name="ARM_AG12" />}}


प्रोसेसर आमतौर पर स्मृति से क्रमिक रूप से निर्देश प्राप्त करते हैं, लेकिन नियंत्रण स्थानांतरण निर्देश पीसी में एक नया मान रखकर अनुक्रम को बदल देते हैं। इनमें [[ब्रांच (कंप्यूटर साइंस)|शाखाएँ]] (कभी-कभी जंप कहा जाता है), [[सबरूटीन]] कॉल और [[वापसी कथन]] शामिल हैं। एक हस्तांतरण जो कुछ दावे की सच्चाई पर सशर्त है, कंप्यूटर को अलग-अलग परिस्थितियों में एक अलग क्रम का पालन करने देता है।
प्रोसेसर सामान्यतः मेमोरी से क्रमिक रूप से निर्देश प्राप्त करते हैं, लेकिन ''नियंत्रण स्थानांतरण निर्देश'' पीसी में एक नया मान रखकर अनुक्रम को परिवर्तित कर देते हैं। इनमें [[ब्रांच (कंप्यूटर साइंस)|शाखाएँ (ब्रांच)]] (इन्हें कभी-कभी जंप भी कहा जाता है), [[सबरूटीन]] कॉल और [[वापसी कथन]] सम्मिलित हैं। एक हस्तांतरण कंप्यूटर को विभिन्न परिस्थितियों में एक अलग अनुक्रम का पालन करने की अनुमति प्रदान करता है, जो कुछ दावों की सत्यता पर सशर्त है।


एक शाखा प्रदान करती है कि अगला निर्देश स्मृति में कहीं और से प्राप्त किया जाता है। एक सबरूटीन कॉल न केवल शाखाएं बल्कि पीसी की पूर्ववर्ती सामग्री को कहीं सहेजती है। एक रिटर्न पीसी की सहेजी गई सामग्री को पुनः प्राप्त करता है और इसे पीसी में वापस रखता है, सबरूटीन कॉल के बाद निर्देश के साथ अनुक्रमिक निष्पादन को फिर से शुरू करता है।
एक शाखा यह बताती है कि अगला निर्देश मेमोरी में कहीं और से प्राप्त किया गया है। एक सबरूटीन कॉल, न केवल शाखाओं बल्कि पीसी की पूर्ववर्ती सामग्री को कहीं पर सहेजती है। एक वापसी कथन पीसी की सहेजी गई सामग्री को पुनः प्राप्त करता है और सबरूटीन कॉल के बाद निर्देश के साथ अनुक्रमिक निष्पादन को पुनः प्रारंभ करते हुए इसे पीसी में वापस रखता है।


== हार्डवेयर कार्यान्वयन ==
== हार्डवेयर कार्यान्वयन ==
एक साधारण [[सेंट्रल प्रोसेसिंग यूनिट]] (सीपीयू) में, पीसी एक डिजिटल [[काउंटर (डिजिटल)|काउंटर]] है (जो "प्रोग्राम काउंटर" शब्द का मूल है) जो कई हार्डवेयर रजिस्टरों में से एक हो सकता है। [[निर्देश चक्र]]<ref name="Hennessy_1990" /> एक लाने के साथ शुरू होता है, जिसमें सीपीयू मेमोरी में भेजने के लिए [[पता बस]] पर पीसी का मान रखता है। मेमोरी उस मेमोरी लोकेशन की सामग्री को डेटा [[बस (कंप्यूटिंग)|बस]] में भेजकर प्रतिक्रिया देती है। (यह [[संग्रहीत प्रोग्राम कंप्यूटर]] मॉडल है, जिसमें एकल मेमोरी स्पेस में निष्पादन योग्य निर्देश और सामान्य डेटा दोनों होते हैं)।<ref name="Randall_1982" /> प्राप्त करने के बाद, सीपीयू निष्पादन के लिए आगे बढ़ता है, जो मेमोरी सामग्री के आधार पर कुछ कार्रवाई करता है। इस चक्र में किसी बिंदु पर, पीसी को संशोधित किया जाएगा ताकि निष्पादित किया जाने वाला अगला निर्देश एक अलग हो (आमतौर पर, बढ़ा हुआ ताकि अगला निर्देश वर्तमान निर्देश के अंतिम स्मृति स्थान के तुरंत बाद स्मृति पते पर शुरू हो)।
साधारण [[सेंट्रल प्रोसेसिंग यूनिट]] (सीपीयू) में, पीसी एक डिजिटल [[काउंटर (डिजिटल)|गणक]] होता है (जो "प्रोग्राम गणक" शब्द का मूल है) जो कई हार्डवेयर रजिस्टरों में से एक हो सकता है। [[निर्देश चक्र]]<ref name="Hennessy_1990" /> एक ''प्राप्ति'' के साथ प्रारंभ होता है, जिसमें सीपीयू, मेमोरी में भेजने के लिए [[पता बस]] पर पीसी का मान रखता है। मेमोरी, उस मेमोरी स्थान की सामग्री को डेटा [[बस (कंप्यूटिंग)|बस]] में भेजकर प्रतिक्रिया देती है। (यह [[संग्रहीत प्रोग्राम कंप्यूटर|संग्रहित प्रोग्राम कंप्यूटर]] मॉडल है, जिसमें एकल मेमोरी स्थान में निष्पादन योग्य निर्देश और सामान्य डेटा दोनों होते हैं)।<ref name="Randall_1982" /> प्राप्त करने के बाद, सीपीयू निष्पादन के लिए आगे बढ़ता है, जो प्राप्त मेमोरी सामग्री के आधार पर कुछ कार्रवाई करता है। इस चक्र में किसी बिंदु पर, पीसी को संशोधित किया जाएगा ताकि निष्पादित किया जाने वाला अगला निर्देश एक अलग हो (सामान्यतः, बढ़ा हुआ ताकि अगला निर्देश वर्तमान निर्देश के अंतिम मेमोरी स्थान के तुरंत बाद मेमोरी पते पर शुरू हो)।


अन्य प्रोसेसर रजिस्टरों की तरह, पीसी बाइनरी लैच का एक बैंक हो सकता है, प्रत्येक पीसी के मूल्य के एक बिट का प्रतिनिधित्व करता है।<ref name="Bell_1971" /> बिट्स की संख्या (पीसी की चौड़ाई) प्रोसेसर आर्किटेक्चर से संबंधित है। उदाहरण के लिए, एक "32-बिट" सीपीयू 2<sup>32</sup> यूनिट मेमोरी को संबोधित करने में सक्षम होने के लिए 32 बिट्स का उपयोग कर सकता है। कुछ प्रोसेसरों पर, प्रोग्राम काउंटर की चौड़ाई एड्रेसेबल मेमोरी पर निर्भर करती है; उदाहरण के लिए, कुछ [[एवीआर नियंत्रक|एवीआर नियंत्रकों]] के पास एक पीसी होता है जो 12 बिट्स के बाद चारों ओर लपेटता है।<ref name="Arnold_2020_AS" />
अन्य प्रोसेसर रजिस्टरों की तरह, पीसी बाइनरी लैच का एक बैंक हो सकता है, प्रत्येक पीसी के मूल्य के एक बिट का प्रतिनिधित्व करता है।<ref name="Bell_1971" /> बिट्स की संख्या (पीसी की चौड़ाई) प्रोसेसर आर्किटेक्चर से संबंधित है। उदाहरण के लिए, एक "32-बिट" सीपीयू 2<sup>32</sup> यूनिट मेमोरी को संबोधित करने में सक्षम होने के लिए 32 बिट्स का उपयोग कर सकता है। कुछ प्रोसेसरों पर, प्रोग्राम गणक की चौड़ाई एड्रेसेबल मेमोरी पर निर्भर करती है; उदाहरण के लिए, कुछ [[एवीआर नियंत्रक|एवीआर नियंत्रकों]] के पास एक पीसी होता है जो 12 बिट्स के बाद चारों ओर लपेटता है।<ref name="Arnold_2020_AS" />


यदि पीसी एक बाइनरी काउंटर है, तो यह तब बढ़ सकता है जब इसके काउंट यूपी इनपुट पर एक पल्स लगाया जाता है, या सीपीयू कुछ अन्य मान की गणना कर सकता है और इसे एक पल्स द्वारा इसके लोड इनपुट में लोड कर सकता है।<ref name="Walker_1967" />
यदि पीसी एक बाइनरी गणक है, तो यह तब बढ़ सकता है जब इसके काउंट यूपी इनपुट पर एक पल्स लगाया जाता है, या सीपीयू कुछ अन्य मान की गणना कर सकता है और इसे एक पल्स द्वारा इसके लोड इनपुट में लोड कर सकता है।<ref name="Walker_1967" />


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


== मशीन आर्किटेक्चर में परिणाम ==
== मशीन आर्किटेक्चर में परिणाम ==
एक पीसी का उपयोग जो सामान्य रूप से बढ़ता है, यह मानता है कि कंप्यूटर जो करता है वह आमतौर पर निर्देशों के रैखिक अनुक्रम को निष्पादित करता है। ऐसा पीसी [[वॉन न्यूमैन वास्तुकला|वॉन न्यूमैन आर्किटेक्चर]] के लिए केंद्रीय है। इस प्रकार प्रोग्रामर एल्गोरिदम के लिए भी अनुक्रमिक नियंत्रण प्रवाह लिखते हैं जिन्हें अनुक्रमिक नहीं होना चाहिए। परिणामी "वॉन न्यूमैन टोंटी" ने समानांतर कंप्यूटिंग में अनुसंधान का नेतृत्व किया,<ref name="Chambers_1984" /> जिसमें गैर-वॉन न्यूमैन या [[डाटा प्रवाह]] मॉडल शामिल थे जो पीसी का उपयोग नहीं करते थे; उदाहरण के लिए, अनुक्रमिक चरणों को निर्दिष्ट करने के बजाय, उच्च-स्तरीय प्रोग्रामर वांछित [[कार्यात्मक प्रोग्रामिंग|कार्य]] निर्दिष्ट कर सकता है और निम्न-स्तरीय प्रोग्रामर [[संयोजन तर्क]] का उपयोग करके इसे निर्दिष्ट कर सकता है।
एक पीसी का सामान्य रूप से बढ़ने वाला उपयोग यह मानता है कि कंप्यूटर सामान्यतः निर्देशों के रैखिक अनुक्रम को निष्पादित करता है। ऐसा पीसी [[वॉन न्यूमैन वास्तुकला|वॉन न्यूमैन आर्किटेक्चर]] के लिए केंद्रीय है। इस प्रकार प्रोग्रामकर्ता, एल्गोरिदम के लिए भी अनुक्रमिक नियंत्रण प्रवाह का लेखन करते हैं जिन्हें अनुक्रमिक नहीं होना चाहिए। परिणामी "वॉन न्यूमैन अवरोध" ने समानांतर कंप्यूटिंग में अनुसंधान का नेतृत्व किया,<ref name="Chambers_1984" /> जिसमें गैर-वॉन न्यूमैन या [[डाटा प्रवाह]] मॉडल सम्मिलित थे जो पीसी का उपयोग नहीं करते थे; उदाहरण के लिए, अनुक्रमिक चरणों को निर्दिष्ट करने के स्थान पर, उच्च-स्तरीय प्रोग्रामकर्ता वांछित [[कार्यात्मक प्रोग्रामिंग|कार्य]] को निर्दिष्ट कर सकता है और निम्न-स्तरीय प्रोग्रामकर्ता इसे [[संयोजन तर्क|संयोजी तर्क]] का उपयोग करके निर्दिष्ट कर सकता है।


इस शोध से पारंपरिक, पीसी-आधारित, सीपीयू को तेजी से चलाने के तरीके भी सामने आए, जिनमें शामिल हैं:
इस अनुसंधान से पारंपरिक, पीसी-आधारित, सीपीयू को तीव्रगति से संचालित करने की विधियाँ भी सामने आईं, जिनमें सम्मिलित हैं:


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


== उच्च स्तरीय प्रोग्रामिंग में परिणाम ==
== उच्च स्तरीय प्रोग्रामिंग में परिणाम ==
आधुनिक उच्च-स्तरीय प्रोग्रामिंग भाषाएं अभी भी अनुक्रमिक-निष्पादन मॉडल का पालन करती हैं और वास्तव में, प्रोग्रामिंग त्रुटियों की पहचान करने का एक सामान्य तरीका "प्रक्रिया निष्पादन" है जिसमें प्रोग्रामर की उंगली एक पीसी के रूप में निष्पादन के बिंदु की पहचान करती है। उच्च-स्तरीय भाषा अनिवार्य रूप से एक आभासी मशीन की मशीन भाषा है,<ref name="Hofstadter_1980" /> हार्डवेयर के रूप में निर्मित होने के लिए बहुत जटिल है लेकिन इसके बजाय सॉफ्टवेयर द्वारा अनुकरण या [[दुभाषिया (कंप्यूटिंग)|व्याख्या]] की जाती है।
आधुनिक उच्च-स्तरीय प्रोग्रामिंग भाषाएँ अभी भी अनुक्रमिक-निष्पादन मॉडल का पालन करती हैं और वास्तव में, "प्रक्रिया निष्पादन" प्रोग्रामिंग त्रुटियों की पहचान करने की एक सामान्य विधि है जिसमें प्रोग्रामकर्ता की अंगुली एक पीसी के समान निष्पादन बिंदु की पहचान करती है। उच्च-स्तरीय भाषा अनिवार्य रूप से एक आभासी मशीन की मशीन भाषा है,<ref name="Hofstadter_1980" /> जो हार्डवेयर के रूप में निर्मित होने के लिए अत्यधिक जटिल है, लेकिन इसका अनुकरण या [[दुभाषिया (कंप्यूटिंग)|व्याख्या]] हार्डवेयर के स्थान पर सॉफ्टवेयर द्वारा किया जाता है।


हालाँकि, नए प्रोग्रामिंग मॉडल अनुक्रमिक-निष्पादन प्रोग्रामिंग को पार करते हैं:
हालाँकि, नए प्रोग्रामिंग मॉडल अनुक्रमिक-निष्पादन प्रोग्रामिंग से अधिक उत्कृष्ट हैं:


*एक [[थ्रेड (कंप्यूटिंग)|मल्टी-थ्रेडेड]] प्रोग्राम लिखते समय, प्रोग्रामर प्रत्येक थ्रेड को निर्देशों के अनुक्रम के रूप में अन्य थ्रेड्स में निर्देशों के सापेक्ष किसी भी निर्देश के समय को निर्दिष्ट किए बिना लिख ​​सकता है।
*एक [[थ्रेड (कंप्यूटिंग)|मल्टी-थ्रेडेड]] प्रोग्राम का लेखन करते समय, प्रोग्रामकर्ता, अन्य थ्रेडों में निर्देशों के सापेक्ष किसी भी निर्देश के समय को निर्दिष्ट किए बिना प्रत्येक थ्रेड को निर्देशों के अनुक्रम के रूप में लिख ​​सकता है।
*[[घटना-संचालित प्रोग्रामिंग]] में, प्रोग्रामर प्रोग्राम के लिए समग्र अनुक्रम निर्दिष्ट किए बिना घटनाओं का जवाब देने के लिए निर्देशों के अनुक्रम लिख सकता है।
*[[घटना-संचालित प्रोग्रामिंग]] में, प्रोग्रामकर्ता, प्रोग्राम के लिए समग्र अनुक्रम निर्दिष्ट किए बिना घटनाओं की प्रतिक्रिया देने के लिए निर्देशों के अनुक्रम को लिख सकता है।
*[[डेटाफ्लो प्रोग्रामिंग]] में, प्रोग्रामर कंप्यूटिंग [[पाइपलाइन प्रोग्रामिंग|पाइपलाइन]] के प्रत्येक खंड को अन्य अनुभागों के सापेक्ष समय निर्दिष्ट किए बिना लिख ​​सकता है।
*[[डेटाफ्लो प्रोग्रामिंग|डेटाप्रवाह प्रोग्रामिंग]] में, प्रोग्रामकर्ता, अन्य अनुभागों के सापेक्ष समय निर्दिष्ट किए बिना कंप्यूटिंग [[पाइपलाइन प्रोग्रामिंग|पाइपलाइन]] के प्रत्येक खंड को लिख ​​सकता है।


== प्रतीक ==
== प्रतीक ==
[[सभा की भाषा|असेंबली लैंग्वेज]] प्रोग्राम में प्रोग्राम काउंटर के प्रतीक के लिए विक्रेता विभिन्न वर्णों का उपयोग करते हैं। जबकि इंटेल, [[Zilog|ज़िलॉग]] , [[Texas Instruments|टेक्सास इंस्ट्रूमेंट्स]], [[Toshiba|तोशिबा]], [[NEC|एनईसी]], [[Siemens|सीमेंस]] और [[AMD|एएमडी]] प्रोसेसर प्रलेखन में "$" वर्ण का उपयोग प्रचलित है, [[Motorola|मोटोरोला]], रॉकवेल सेमीकंडक्टर, [[माइक्रोचिप प्रौद्योगिकी]] और [[Hitachi|हिताची]] इसके बजाय "*" वर्ण का उपयोग करते हैं,<ref name="Arnold_2020_AS" /> जबकि [[एसजीएस-थॉमसन माइक्रोइलेक्ट्रॉनिक]] "पीसी" का उपयोग करता है।<ref name="Arnold_2020_AS" />
[[सभा की भाषा|असेंबली भाषा]] प्रोग्रामों में विक्रेता प्रोग्राम गणक के प्रतीक के लिए विभिन्न वर्णों का उपयोग करते हैं। जबकि इंटेल, [[Zilog|ज़िलॉग]], [[Texas Instruments|टेक्सास इंस्ट्रूमेंट]], [[Toshiba|तोशिबा]], [[NEC|एनईसी]], [[Siemens|सीमेंस]] और [[AMD|एएमडी]] प्रोसेसर प्रलेखन में "$" वर्ण का उपयोग प्रचलित है, [[Motorola|मोटोरोला]], रॉकवेल अर्द्धचालक, [[माइक्रोचिप प्रौद्योगिकी]] और [[Hitachi|हिताची]] इसके स्थान पर "*" वर्ण का उपयोग करते हैं,<ref name="Arnold_2020_AS" /> जबकि [[एसजीएस-थॉमसन माइक्रोइलेक्ट्रॉनिक]] "PC" का उपयोग करता है।<ref name="Arnold_2020_AS" />
== यह भी देखें ==
== यह भी देखें ==
* [[शाखा भविष्यवाणी|शाखा पूर्वानुमान]]
* [[शाखा भविष्यवाणी|शाखा पूर्वानुमान]]
Line 57: Line 57:


*सूचक (कंप्यूटर प्रोग्रामिंग)
*सूचक (कंप्यूटर प्रोग्रामिंग)
*स्मृति पता
*मेमोरी पता
*वॉन न्यूमैन टोंटी
*वॉन न्यूमैन टोंटी
*बहाव को काबू करें
*बहाव को काबू करें

Revision as of 16:53, 28 December 2022

आईबीएम 701 कंप्यूटर का फ्रंट पैनल 1952 में पेश किया गया था। बीच में रोशनी विभिन्न रजिस्टरों की सामग्री प्रदर्शित करती है। निर्देश गणक निचले बाएँ पर है।

प्रोग्राम गणक (पीसी), एक ऐसा प्रोसेसर रजिस्टर है जो यह इंगित करता है कि कंप्यूटर अपने प्रोग्राम अनुक्रम में कहाँ पर है।[nb 1] इसे सामान्यतः इंटेल एक्स86 और इटेनियम माइक्रोप्रोसेसरों में निर्देश संकेतक (आईपी) और कभी-कभी निर्देश पता रजिस्टर (आईएआर),[1] निर्देश गणक[2] या निर्देश अनुक्रमक का सिर्फ एक हिस्सा कहा जाता है।[3]

सामान्यतः, एक निर्देश प्राप्त करने के बाद पीसी में वृद्धि हो जाती है, और यह अगले निर्देश का मेमोरी पता ("इंगित करता है") धारण करता है जिसे निष्पादित करना होता है।[4][nb 2]

प्रोसेसर सामान्यतः मेमोरी से क्रमिक रूप से निर्देश प्राप्त करते हैं, लेकिन नियंत्रण स्थानांतरण निर्देश पीसी में एक नया मान रखकर अनुक्रम को परिवर्तित कर देते हैं। इनमें शाखाएँ (ब्रांच) (इन्हें कभी-कभी जंप भी कहा जाता है), सबरूटीन कॉल और वापसी कथन सम्मिलित हैं। एक हस्तांतरण कंप्यूटर को विभिन्न परिस्थितियों में एक अलग अनुक्रम का पालन करने की अनुमति प्रदान करता है, जो कुछ दावों की सत्यता पर सशर्त है।

एक शाखा यह बताती है कि अगला निर्देश मेमोरी में कहीं और से प्राप्त किया गया है। एक सबरूटीन कॉल, न केवल शाखाओं बल्कि पीसी की पूर्ववर्ती सामग्री को कहीं पर सहेजती है। एक वापसी कथन पीसी की सहेजी गई सामग्री को पुनः प्राप्त करता है और सबरूटीन कॉल के बाद निर्देश के साथ अनुक्रमिक निष्पादन को पुनः प्रारंभ करते हुए इसे पीसी में वापस रखता है।

हार्डवेयर कार्यान्वयन

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

अन्य प्रोसेसर रजिस्टरों की तरह, पीसी बाइनरी लैच का एक बैंक हो सकता है, प्रत्येक पीसी के मूल्य के एक बिट का प्रतिनिधित्व करता है।[8] बिट्स की संख्या (पीसी की चौड़ाई) प्रोसेसर आर्किटेक्चर से संबंधित है। उदाहरण के लिए, एक "32-बिट" सीपीयू 232 यूनिट मेमोरी को संबोधित करने में सक्षम होने के लिए 32 बिट्स का उपयोग कर सकता है। कुछ प्रोसेसरों पर, प्रोग्राम गणक की चौड़ाई एड्रेसेबल मेमोरी पर निर्भर करती है; उदाहरण के लिए, कुछ एवीआर नियंत्रकों के पास एक पीसी होता है जो 12 बिट्स के बाद चारों ओर लपेटता है।[9]

यदि पीसी एक बाइनरी गणक है, तो यह तब बढ़ सकता है जब इसके काउंट यूपी इनपुट पर एक पल्स लगाया जाता है, या सीपीयू कुछ अन्य मान की गणना कर सकता है और इसे एक पल्स द्वारा इसके लोड इनपुट में लोड कर सकता है।[10]

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

मशीन आर्किटेक्चर में परिणाम

एक पीसी का सामान्य रूप से बढ़ने वाला उपयोग यह मानता है कि कंप्यूटर सामान्यतः निर्देशों के रैखिक अनुक्रम को निष्पादित करता है। ऐसा पीसी वॉन न्यूमैन आर्किटेक्चर के लिए केंद्रीय है। इस प्रकार प्रोग्रामकर्ता, एल्गोरिदम के लिए भी अनुक्रमिक नियंत्रण प्रवाह का लेखन करते हैं जिन्हें अनुक्रमिक नहीं होना चाहिए। परिणामी "वॉन न्यूमैन अवरोध" ने समानांतर कंप्यूटिंग में अनुसंधान का नेतृत्व किया,[11] जिसमें गैर-वॉन न्यूमैन या डाटा प्रवाह मॉडल सम्मिलित थे जो पीसी का उपयोग नहीं करते थे; उदाहरण के लिए, अनुक्रमिक चरणों को निर्दिष्ट करने के स्थान पर, उच्च-स्तरीय प्रोग्रामकर्ता वांछित कार्य को निर्दिष्ट कर सकता है और निम्न-स्तरीय प्रोग्रामकर्ता इसे संयोजी तर्क का उपयोग करके निर्दिष्ट कर सकता है।

इस अनुसंधान से पारंपरिक, पीसी-आधारित, सीपीयू को तीव्रगति से संचालित करने की विधियाँ भी सामने आईं, जिनमें सम्मिलित हैं:

उच्च स्तरीय प्रोग्रामिंग में परिणाम

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

हालाँकि, नए प्रोग्रामिंग मॉडल अनुक्रमिक-निष्पादन प्रोग्रामिंग से अधिक उत्कृष्ट हैं:

  • एक मल्टी-थ्रेडेड प्रोग्राम का लेखन करते समय, प्रोग्रामकर्ता, अन्य थ्रेडों में निर्देशों के सापेक्ष किसी भी निर्देश के समय को निर्दिष्ट किए बिना प्रत्येक थ्रेड को निर्देशों के अनुक्रम के रूप में लिख ​​सकता है।
  • घटना-संचालित प्रोग्रामिंग में, प्रोग्रामकर्ता, प्रोग्राम के लिए समग्र अनुक्रम निर्दिष्ट किए बिना घटनाओं की प्रतिक्रिया देने के लिए निर्देशों के अनुक्रम को लिख सकता है।
  • डेटाप्रवाह प्रोग्रामिंग में, प्रोग्रामकर्ता, अन्य अनुभागों के सापेक्ष समय निर्दिष्ट किए बिना कंप्यूटिंग पाइपलाइन के प्रत्येक खंड को लिख ​​सकता है।

प्रतीक

असेंबली भाषा प्रोग्रामों में विक्रेता प्रोग्राम गणक के प्रतीक के लिए विभिन्न वर्णों का उपयोग करते हैं। जबकि इंटेल, ज़िलॉग, टेक्सास इंस्ट्रूमेंट, तोशिबा, एनईसी, सीमेंस और एएमडी प्रोसेसर प्रलेखन में "$" वर्ण का उपयोग प्रचलित है, मोटोरोला, रॉकवेल अर्द्धचालक, माइक्रोचिप प्रौद्योगिकी और हिताची इसके स्थान पर "*" वर्ण का उपयोग करते हैं,[9] जबकि एसजीएस-थॉमसन माइक्रोइलेक्ट्रॉनिक "PC" का उपयोग करता है।[9]

यह भी देखें

टिप्पणियाँ

  1. For modern processors, the concept of "where it is in its sequence" is too simplistic, as instruction-level parallelism and out-of-order execution may occur.
  2. In a processor where the incrementation precedes the fetch, the PC points to the current instruction being executed. In some processors, the PC points some distance beyond the current instruction; for instance, in the ARM7, the value of PC visible to the programmer points beyond the current instruction and beyond the delay slot.[5]


इस पेज में लापता आंतरिक लिंक की सूची

  • सूचक (कंप्यूटर प्रोग्रामिंग)
  • मेमोरी पता
  • वॉन न्यूमैन टोंटी
  • बहाव को काबू करें
  • घटना (कंप्यूटिंग)
  • रॉकवेल सेमीकंडक्टर
  • निर्देश निर्धारण

संदर्भ

  1. Mead, Carver; Conway, Lynn (1980). Introduction to VLSI Systems. Reading, USA: Addison-Wesley. ISBN 0-201-04358-0.
  2. Principles of Operation, Type 701 and Associated Equipment (PDF). IBM. 1953.
  3. Harry Katzan (1971), Computer Organization and the System/370, Van Nostrand Reinhold Company, New York, USA, LCCCN 72-153191
  4. Silberschatz, Abraham; Gagne, Greg; Galvin, Peter B. (April 2018). Operating System Concepts. United States: Wiley. pp. 27, G-29. ISBN 978-1-119-32091-3.
  5. "ARM Developer Suite, Assembler Guide. Version 1.2". ARM Limited. 2001. Retrieved 2019-10-18.
  6. John L. Hennessy and David A. Patterson (1990), Computer Architecture: a quantitative approach, Morgan Kaufmann Publishers, Palo Alto, USA, ISBN 1-55860-069-8
  7. B. Randall (1982), The Origins of Digital Computers, Springer-Verlag, Berlin, D
  8. C. Gordon Bell and Allen Newell (1971), Computer Structures: Readings and Examples, McGraw-Hill Book Company, New York, USA
  9. 9.0 9.1 9.2 Arnold, Alfred (2020) [1996, 1989]. "E. Predefined Symbols". Macro Assembler AS – User's Manual. V1.42. Translated by Arnold, Alfred; Hilse, Stefan; Kanthak, Stephan; Sellke, Oliver; De Tomasi, Vittorio. p. Table E.3: Predefined Symbols – Part 3. Archived from the original on 2020-02-28. Retrieved 2020-02-28. 3.2.12. WRAPMODE […] AS will assume that the processor's program counter does not have the full length of 16 bits given by the architecture, but instead a length that is exactly sufficient to address the internal ROM. For example, in case of the AT90S8515, this means 12 bits, corresponding to 4 Kwords or 8 Kbytes. This assumption allows relative branches from the ROM's beginning to the end and vice versa which would result in an out-of-branch error when using strict arithmetics. Here, they work because the carry bits resulting from the target address computation are discarded. […] In case of the abovementioned AT90S8515, this option is even necessary because it is the only way to perform a direct jump through the complete address space […]
  10. Walker, B. S. (1967). Introduction to Computer Engineering. London, UK: University of London Press. ISBN 0-340-06831-0.
  11. F. B. Chambers, D. A. Duce and G. P. Jones (1984), Distributed Computing, Academic Press, Orlando, USA, ISBN 0-12-167350-2
  12. Douglas Hofstadter (1980), Gödel, Escher, Bach: an eternal golden braid, Penguin Books, Harmondsworth, UK, ISBN 0-14-005579-7

श्रेणी: नियंत्रण प्रवाह श्रेणी: सेंट्रल प्रोसेसिंग यूनिट श्रेणी:डिजिटल रजिस्टर