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

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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

यह भी देखें

 * शाखा पूर्वानुमान
 * निर्देश कैश
 * निर्देश चक्र
 * निर्देश इकाई
 * निर्देश पाइपलाइन
 * निर्देश रजिस्टर
 * निर्देश समयबद्धन
 * प्रोग्राम स्थिति शब्द