कार्यक्रम गणक

प्रोग्राम काउंटर (पीसी), जिसे आमतौर पर इंटेल x86 और इटेनियम माइक्रोप्रोसेसरों में निर्देश सूचक (आईपी) कहा जाता है, और कभी-कभी निर्देश पता रजिस्टर (आईएआर) कहा जाता है, निर्देश काउंटर, या निर्देश अनुक्रमक का सिर्फ एक हिस्सा, एक प्रोसेसर रजिस्टर है जो इंगित करता है कि कंप्यूटर अपने कंप्यूटर प्रोग्राम अनुक्रम में कहाँ है।

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

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

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

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

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

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

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

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


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

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

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


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

प्रतीक
सभा की भाषा प्रोग्राम में प्रोग्राम काउंटर के प्रतीक के लिए विक्रेता विभिन्न वर्णों का उपयोग करते हैं। जबकि Intel, Zilog, Texas Instruments, Toshiba, NEC, Siemens और AMD प्रोसेसर प्रलेखन में $ वर्ण का उपयोग प्रचलित है, Motorola, Rockwell सेमीकंडक्टर, माइक्रोचिप प्रौद्योगिकी और Hitachi इसके बजाय * वर्ण का उपयोग करते हैं, जबकि एसजीएस-थॉमसन माइक्रोइलेक्ट्रॉनिक पीसी का उपयोग करता है।

यह भी देखें

 * शाखा भविष्यवाणी
 * निर्देश कैश
 * निर्देश चक्र
 * निर्देश इकाई
 * निर्देश पाइपलाइन
 * निर्देश रजिस्टर
 * निर्देश समयबद्धन
 * कार्यक्रम स्थिति शब्द

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

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