कार्यक्रम गणक: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
[[File:IBM 701console.jpg|thumb|[[आईबीएम 701]] कंप्यूटर का | [[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" />}} | ||
Line 9: | Line 9: | ||
== हार्डवेयर कार्यान्वयन == | == हार्डवेयर कार्यान्वयन == | ||
साधारण [[सेंट्रल प्रोसेसिंग यूनिट]] (सीपीयू) में, पीसी एक डिजिटल [[काउंटर (डिजिटल)|गणक]] होता है (जो "प्रोग्राम गणक" शब्द का मूल है) जो कई हार्डवेयर रजिस्टरों में से एक हो सकता है। [[निर्देश चक्र]]<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="Walker_1967" /> | ||
वर्तमान निर्देश की पहचान करने के लिए, पीसी को अन्य रजिस्टरों के साथ जोड़ा जा सकता है जो एक [[विभाजन (मेमोरी)| | वर्तमान निर्देश की पहचान करने के लिए, पीसी को अन्य रजिस्टरों के साथ जोड़ा जा सकता है जो एक [[विभाजन (मेमोरी)|खण्ड]] या [[पेज (कंप्यूटर मेमोरी)|पेज]] की पहचान करते हैं। यह दृष्टिकोण एक पीसी को कम बिटों के साथ यह मानकर अनुमति प्रदान करता है कि महत्त्व की अधिकांश मेमोरी इकाइयाँ वर्तमान निकट क्षेत्र में स्थित हैं। | ||
== मशीन आर्किटेक्चर में परिणाम == | == मशीन आर्किटेक्चर में परिणाम == | ||
Line 45: | Line 45: | ||
* [[निर्देश रजिस्टर]] | * [[निर्देश रजिस्टर]] | ||
* निर्देश समयबद्धन | * निर्देश समयबद्धन | ||
* [[कार्यक्रम स्थिति शब्द]] | * [[कार्यक्रम स्थिति शब्द|प्रोग्राम स्थिति शब्द]] | ||
== टिप्पणियाँ == | == टिप्पणियाँ == | ||
Line 51: | Line 51: | ||
<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= |
Revision as of 15:08, 29 December 2022
प्रोग्राम गणक (पीसी), एक ऐसा प्रोसेसर रजिस्टर है जो यह इंगित करता है कि कंप्यूटर अपने प्रोग्राम अनुक्रम में कहाँ पर है।[nb 1] इसे सामान्यतः इंटेल एक्स86 और इटेनियम माइक्रोप्रोसेसरों में निर्देश संकेतक (आईपी) और कभी-कभी निर्देश पता रजिस्टर (आईएआर),[1] निर्देश गणक[2] या निर्देश अनुक्रमक का सिर्फ एक हिस्सा कहा जाता है।[3]
सामान्यतः, एक निर्देश प्राप्त करने के बाद पीसी में वृद्धि हो जाती है, और यह अगले निर्देश का मेमोरी पता ("इंगित करता है") धारण करता है जिसे निष्पादित करना होता है।[4][nb 2]
प्रोसेसर सामान्यतः मेमोरी से क्रमिक रूप से निर्देश प्राप्त करते हैं, लेकिन नियंत्रण स्थानांतरण निर्देश पीसी में एक नया मान रखकर अनुक्रम को परिवर्तित कर देते हैं। इनमें शाखाएँ (ब्रांच) (इन्हें कभी-कभी जंप भी कहा जाता है), सबरूटीन कॉल और वापसी कथन सम्मिलित हैं। एक हस्तांतरण कंप्यूटर को विभिन्न परिस्थितियों में एक अलग अनुक्रम का पालन करने की अनुमति प्रदान करता है, जो कुछ दावों की सत्यता पर सशर्त है।
एक शाखा यह बताती है कि अगला निर्देश मेमोरी में कहीं और से प्राप्त किया गया है। एक सबरूटीन कॉल, न केवल शाखाओं बल्कि पीसी की पूर्ववर्ती सामग्री को कहीं पर सहेजती है। एक वापसी कथन पीसी की सहेजी गई सामग्री को पुनः प्राप्त करता है और सबरूटीन कॉल के बाद निर्देश के साथ अनुक्रमिक निष्पादन को पुनः प्रारंभ करते हुए इसे पीसी में वापस रखता है।
हार्डवेयर कार्यान्वयन
साधारण सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) में, पीसी एक डिजिटल गणक होता है (जो "प्रोग्राम गणक" शब्द का मूल है) जो कई हार्डवेयर रजिस्टरों में से एक हो सकता है। निर्देश चक्र[6] एक प्राप्ति के साथ प्रारंभ होता है, जिसमें सीपीयू, मेमोरी में भेजने के लिए पता बस पर पीसी का मान रखता है। मेमोरी, उस मेमोरी स्थान की सामग्री को डेटा बस में भेजकर प्रतिक्रिया देती है। (यह संग्रहित प्रोग्राम कंप्यूटर मॉडल है, जिसमें एकल मेमोरी स्थान में निष्पादन योग्य निर्देश और सामान्य डेटा दोनों होते हैं)।[7] प्राप्त करने के बाद, सीपीयू निष्पादन के लिए आगे बढ़ता है, जो प्राप्त मेमोरी सामग्री के आधार पर कुछ कार्रवाई करता है। इस चक्र में किसी बिंदु पर पीसी को इस प्रकार संशोधित किया जाता है कि निष्पादित किया जाने वाला अगला निर्देश एक अलग निर्देश हो (सामान्यतः, यह बढ़ता है जिससे अगला निर्देश वह निर्देश होता है जो वर्तमान निर्देश के अंतिम मेमोरी स्थान के तुरंत बाद वाले मेमोरी पते पर प्रारंभ होता है)।
पीसी, अन्य प्रोसेसर रजिस्टरों के समान द्विआधारी लैच का एक बैंक हो सकता है, जिसमें से प्रत्येक पीसी के मान के एक बिट को निरूपित करता है।[8] बिटों की संख्या (पीसी की चौड़ाई) प्रोसेसर आर्किटेक्चर से संबंधित है। उदाहरण के लिए, एक "32-बिट" सीपीयू, 232 इकाई मेमोरी को संबोधित करने में सक्षम होने के लिए 32 बिटों का उपयोग कर सकता है। कुछ प्रोसेसरों पर, प्रोग्राम गणक की चौड़ाई पतायोग्य मेमोरी पर निर्भर करती है; उदाहरण के लिए, कुछ एवीआर नियंत्रकों के पास एक ऐसा पीसी होता है जो 12 बिटों के बाद चारों ओर परिवेष्टित (लिपट जाना) हो जाता है।[9]
यदि पीसी एक द्विआधारी गणक है, तो यह तब बढ़ सकता है जब इसके काउंट अप इनपुट पर एक स्पंद लगाया जाता है, या सीपीयू कुछ अन्य मानों की गणना कर सकता है और इसे एक स्पंद द्वारा इसके लोड इनपुट में लोड कर सकता है।[10]
वर्तमान निर्देश की पहचान करने के लिए, पीसी को अन्य रजिस्टरों के साथ जोड़ा जा सकता है जो एक खण्ड या पेज की पहचान करते हैं। यह दृष्टिकोण एक पीसी को कम बिटों के साथ यह मानकर अनुमति प्रदान करता है कि महत्त्व की अधिकांश मेमोरी इकाइयाँ वर्तमान निकट क्षेत्र में स्थित हैं।
मशीन आर्किटेक्चर में परिणाम
एक पीसी का सामान्य रूप से बढ़ने वाला उपयोग यह मानता है कि कंप्यूटर सामान्यतः निर्देशों के रैखिक अनुक्रम को निष्पादित करता है। ऐसा पीसी वॉन न्यूमैन आर्किटेक्चर के लिए केंद्रीय है। इस प्रकार प्रोग्रामकर्ता, एल्गोरिदम के लिए भी अनुक्रमिक नियंत्रण प्रवाह का लेखन करते हैं जिन्हें अनुक्रमिक नहीं होना चाहिए। परिणामी "वॉन न्यूमैन अवरोध" ने समानांतर कंप्यूटिंग में अनुसंधान का नेतृत्व किया,[11] जिसमें गैर-वॉन न्यूमैन या डाटा प्रवाह मॉडल सम्मिलित थे जो पीसी का उपयोग नहीं करते थे; उदाहरण के लिए, अनुक्रमिक चरणों को निर्दिष्ट करने के स्थान पर, उच्च-स्तरीय प्रोग्रामकर्ता वांछित कार्य को निर्दिष्ट कर सकता है और निम्न-स्तरीय प्रोग्रामकर्ता इसे संयोजी तर्क का उपयोग करके निर्दिष्ट कर सकता है।
इस अनुसंधान से पारंपरिक, पीसी-आधारित, सीपीयू को तीव्रगति से संचालित करने की विधियाँ भी सामने आईं, जिनमें सम्मिलित हैं:
- पाइपलाइन (कंप्यूटिंग), इसमें सीपीयू में विभिन्न हार्डवेयर एक साथ कई निर्देशों के विभिन्न चरणों को निष्पादित करते हैं।
- अत्यधिक लंबा निर्देश शब्द (वीएलआईडब्ल्यू) आर्किटेक्चर, जहाँ एक ही निर्देश कई प्रभाव प्राप्त कर सकता है।
- आउट-ऑफ-ऑर्डर या गतिशील निष्पादन को पूर्वानुमानित करने की तकनीकें और नियमित अनुक्रम के बाहर निष्पादन के लिए बाद के निर्देश तैयार करना।
उच्च स्तरीय प्रोग्रामिंग में परिणाम
आधुनिक उच्च-स्तरीय प्रोग्रामिंग भाषाएँ अभी भी अनुक्रमिक-निष्पादन मॉडल का पालन करती हैं और वास्तव में, "प्रक्रिया निष्पादन" प्रोग्रामिंग त्रुटियों की पहचान करने की एक सामान्य विधि है जिसमें प्रोग्रामकर्ता की अंगुली एक पीसी के समान निष्पादन बिंदु की पहचान करती है। उच्च-स्तरीय भाषा अनिवार्य रूप से एक आभासी मशीन की मशीन भाषा है,[12] जो हार्डवेयर के रूप में निर्मित होने के लिए अत्यधिक जटिल है, लेकिन इसका अनुकरण या व्याख्या हार्डवेयर के स्थान पर सॉफ्टवेयर द्वारा किया जाता है।
हालाँकि, नए प्रोग्रामिंग मॉडल अनुक्रमिक-निष्पादन प्रोग्रामिंग से अधिक उत्कृष्ट हैं:
- एक मल्टी-थ्रेडेड प्रोग्राम का लेखन करते समय, प्रोग्रामकर्ता, अन्य थ्रेडों में निर्देशों के सापेक्ष किसी भी निर्देश के समय को निर्दिष्ट किए बिना प्रत्येक थ्रेड को निर्देशों के अनुक्रम के रूप में लिख सकता है।
- घटना-संचालित प्रोग्रामिंग में, प्रोग्रामकर्ता, प्रोग्राम के लिए समग्र अनुक्रम निर्दिष्ट किए बिना घटनाओं की प्रतिक्रिया देने के लिए निर्देशों के अनुक्रम को लिख सकता है।
- डेटाप्रवाह प्रोग्रामिंग में, प्रोग्रामकर्ता, अन्य अनुभागों के सापेक्ष समय निर्दिष्ट किए बिना कंप्यूटिंग पाइपलाइन के प्रत्येक खंड को लिख सकता है।
प्रतीक
असेंबली भाषा प्रोग्रामों में विक्रेता प्रोग्राम गणक के प्रतीक के लिए विभिन्न वर्णों का उपयोग करते हैं। जबकि इंटेल, ज़िलॉग, टेक्सास इंस्ट्रूमेंट, तोशिबा, एनईसी, सीमेंस और एएमडी प्रोसेसर प्रलेखन में "$" वर्ण का उपयोग प्रचलित है, मोटोरोला, रॉकवेल अर्द्धचालक, माइक्रोचिप प्रौद्योगिकी और हिताची इसके स्थान पर "*" वर्ण का उपयोग करते हैं,[9] जबकि एसजीएस-थॉमसन माइक्रोइलेक्ट्रॉनिक "PC" का उपयोग करता है।[9]
यह भी देखें
- शाखा पूर्वानुमान
- निर्देश कैश
- निर्देश चक्र
- निर्देश इकाई
- निर्देश पाइपलाइन
- निर्देश रजिस्टर
- निर्देश समयबद्धन
- प्रोग्राम स्थिति शब्द
टिप्पणियाँ
- ↑ 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.
- ↑ 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]
संदर्भ
- ↑ Mead, Carver; Conway, Lynn (1980). Introduction to VLSI Systems. Reading, USA: Addison-Wesley. ISBN 0-201-04358-0.
- ↑ Principles of Operation, Type 701 and Associated Equipment (PDF). IBM. 1953.
- ↑ Harry Katzan (1971), Computer Organization and the System/370, Van Nostrand Reinhold Company, New York, USA, LCCCN 72-153191
- ↑ 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.
- ↑ "ARM Developer Suite, Assembler Guide. Version 1.2". ARM Limited. 2001. Retrieved 2019-10-18.
- ↑ John L. Hennessy and David A. Patterson (1990), Computer Architecture: a quantitative approach, Morgan Kaufmann Publishers, Palo Alto, USA, ISBN 1-55860-069-8
- ↑ B. Randall (1982), The Origins of Digital Computers, Springer-Verlag, Berlin, D
- ↑ C. Gordon Bell and Allen Newell (1971), Computer Structures: Readings and Examples, McGraw-Hill Book Company, New York, USA
- ↑ 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 […]
- ↑ Walker, B. S. (1967). Introduction to Computer Engineering. London, UK: University of London Press. ISBN 0-340-06831-0.
- ↑ F. B. Chambers, D. A. Duce and G. P. Jones (1984), Distributed Computing, Academic Press, Orlando, USA, ISBN 0-12-167350-2
- ↑ Douglas Hofstadter (1980), Gödel, Escher, Bach: an eternal golden braid, Penguin Books, Harmondsworth, UK, ISBN 0-14-005579-7
श्रेणी: नियंत्रण प्रवाह श्रेणी: सेंट्रल प्रोसेसिंग यूनिट श्रेणी:डिजिटल रजिस्टर