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

From Vigyanwiki
(Created page with "{{Short description|Processor register that indicates where a computer is in its program sequence}} {{Use dmy dates|date=February 2020|cs1-dates=y}} File:IBM 701console.jpg|...")
 
No edit summary
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Processor register that indicates where a computer is in its program sequence}}
[[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" />
{{Use dmy dates|date=February 2020|cs1-dates=y}}
[[File:IBM 701console.jpg|thumb|[[आईबीएम 701]] कंप्यूटर का फ्रंट पैनल 1952 में पेश किया गया था। बीच में रोशनी विभिन्न रजिस्टरों की सामग्री प्रदर्शित करती है। निर्देश काउंटर निचले बाएँ पर है।]]प्रोग्राम काउंटर (पीसी), जिसे आमतौर पर [[इंटेल]] x[[86]] और [[इटेनियम]] [[माइक्रोप्रोसेसर]]ों में निर्देश सूचक (आईपी) कहा जाता है, और कभी-कभी निर्देश पता रजिस्टर (आईएआर) कहा जाता है,<ref name="Mead_1980" />निर्देश काउंटर,<ref name="IBM_1953" />या निर्देश अनुक्रमक का सिर्फ एक हिस्सा,<ref name="Katzan_1971" />एक [[प्रोसेसर रजिस्टर]] है जो इंगित करता है कि [[कंप्यूटर]] अपने [[कंप्यूटर प्रोग्राम]] अनुक्रम में कहाँ है।<ref group="nb" name="NB1" />


आमतौर पर, पीसी को एक [[निर्देश (कंप्यूटर विज्ञान)]] प्राप्त करने के बाद बढ़ाया जाता है, और अगले निर्देश (पॉइंटर (कंप्यूटर प्रोग्रामिंग)) का मेमोरी पता रखता है जिसे निष्पादित किया जाएगा।<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 को संबोधित करने में सक्षम होने के लिए 32 बिट्स का उपयोग कर सकता है<sup>32</sup> मेमोरी की इकाइयाँ। कुछ प्रोसेसरों पर, प्रोग्राम काउंटर की चौड़ाई एड्रेसेबल मेमोरी पर निर्भर करती है; उदाहरण के लिए, कुछ [[एवीआर नियंत्रक]]ों के पास एक पीसी होता है जो 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" /> जो हार्डवेयर के रूप में निर्मित होने के लिए अत्यधिक जटिल है, लेकिन इसका अनुकरण या [[दुभाषिया (कंप्यूटिंग)|व्याख्या]] हार्डवेयर के स्थान पर सॉफ्टवेयर द्वारा किया जाता है।


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


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


== प्रतीक ==
== प्रतीक ==
[[सभा की भाषा]] प्रोग्राम में प्रोग्राम काउंटर के प्रतीक के लिए विक्रेता विभिन्न वर्णों का उपयोग करते हैं। जबकि Intel, [[Zilog]], [[Texas Instruments]], [[Toshiba]], [[NEC]], [[Siemens]] और [[AMD]] प्रोसेसर प्रलेखन में $ वर्ण का उपयोग प्रचलित है, [[Motorola]], Rockwell सेमीकंडक्टर, [[माइक्रोचिप प्रौद्योगिकी]] और [[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 47: Line 44:
* [[निर्देश रजिस्टर]]
* [[निर्देश रजिस्टर]]
* निर्देश समयबद्धन
* निर्देश समयबद्धन
* [[कार्यक्रम स्थिति शब्द]]
* [[कार्यक्रम स्थिति शब्द|प्रोग्राम स्थिति शब्द]]


== टिप्पणियाँ ==
== टिप्पणियाँ ==
Line 53: Line 50:
<ref group="nb" name="NB1">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.</ref>
<ref group="nb" name="NB1">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.</ref>
}}
}}
==इस पेज में लापता आंतरिक लिंक की सूची==
*सूचक (कंप्यूटर प्रोग्रामिंग)
*स्मृति पता
*वॉन न्यूमैन टोंटी
*बहाव को काबू करें
*घटना (कंप्यूटिंग)
*रॉकवेल सेमीकंडक्टर
*निर्देश निर्धारण
== संदर्भ ==
== संदर्भ ==
{{Reflist|refs=
{{Reflist|refs=
Line 80: Line 65:
<ref name="Arnold_2020_AS">{{cite book |title=Macro Assembler AS – User's Manual |version=V1.42 |author-first=Alfred |author-last=Arnold |translator-first1=Alfred |translator-last1=Arnold |translator-first2=Stefan |translator-last2=Hilse |translator-first3=Stephan |translator-last3=Kanthak |translator-first4=Oliver |translator-last4=Sellke |translator-first5=Vittorio |translator-last5=De Tomasi |date=2020 |orig-year=1996, 1989 |chapter=E. Predefined Symbols |chapter-url=http://john.ccac.rwth-aachen.de:8000/as/as_EN.html#sect_E_ |page=Table E.3: Predefined Symbols – Part 3 |url=http://john.ccac.rwth-aachen.de:8000/as/as_EN.html |access-date=2020-02-28 |url-status=live |archive-url=https://web.archive.org/web/20200228144943/http://john.ccac.rwth-aachen.de:8000/as/as_EN.html |archive-date=2020-02-28 |quote=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 […]}}</ref>
<ref name="Arnold_2020_AS">{{cite book |title=Macro Assembler AS – User's Manual |version=V1.42 |author-first=Alfred |author-last=Arnold |translator-first1=Alfred |translator-last1=Arnold |translator-first2=Stefan |translator-last2=Hilse |translator-first3=Stephan |translator-last3=Kanthak |translator-first4=Oliver |translator-last4=Sellke |translator-first5=Vittorio |translator-last5=De Tomasi |date=2020 |orig-year=1996, 1989 |chapter=E. Predefined Symbols |chapter-url=http://john.ccac.rwth-aachen.de:8000/as/as_EN.html#sect_E_ |page=Table E.3: Predefined Symbols – Part 3 |url=http://john.ccac.rwth-aachen.de:8000/as/as_EN.html |access-date=2020-02-28 |url-status=live |archive-url=https://web.archive.org/web/20200228144943/http://john.ccac.rwth-aachen.de:8000/as/as_EN.html |archive-date=2020-02-28 |quote=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 […]}}</ref>
}}
}}
{{X86 assembly topics}}


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




[[Category: Machine Translated Page]]
[[Category:CS1 français-language sources (fr)]]
[[Category:CS1 maint]]
[[Category:CS1 Ελληνικά-language sources (el)]]
[[Category:Citation Style 1 templates|W]]
[[Category:Collapse templates]]
[[Category:Created On 18/12/2022]]
[[Category:Created On 18/12/2022]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates based on the Citation/CS1 Lua module]]
[[Category:Templates generating COinS|Cite web]]
[[Category:Templates generating microformats]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates used by AutoWikiBrowser|Cite web]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia fully protected templates|Cite web]]
[[Category:Wikipedia metatemplates]]

Latest revision as of 17:04, 12 September 2023

आईबीएम 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