जटिल अनुदेश सेट कंप्यूटर

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

सीआईएससी आर्किटेक्चर के उदाहरणों में जटिल मेनफ़्रेम कंप्यूटर से लेकर सरल माइक्रोकंट्रोलर तक सम्मिलित हैं जहां मेमोरी लोड और स्टोर संचालन अंकगणितीय निर्देशों से भिन्न नहीं होते हैं। विशिष्ट निर्देश सेट आर्किटेक्चर जिन्हें पूर्वव्यापी रूप से सीआईएससी लेबल किया गया है, सिस्टम/360 से ज़ेड/आर्किटेक्चर, पीडीपी-11 और वैक्स आर्किटेक्चर और अनेक  अन्य हैं। प्रसिद्ध माइक्रोप्रोसेसर और माइक्रोकंट्रोलर जिन्हें अनेक  अकादमिक प्रकाशनों में सीआईएससी का लेबल भी दिया गया है मोटोरोला 6800, 6809 और मोटोरोला 68000 श्रृंखला वर्ग सम्मिलित हैं; इंटेल 8080, आईएपीएक्स 432 और x86 वर्ग ; ज़िलॉग Z80, ज़िलॉग Z8 और Z8000 वर्ग ; राष्ट्रीय अर्धचालक NS32000 वर्ग ; एमओएस प्रौद्योगिकी 6502 वर्ग ; इंटेल 8051 वर्ग ; और दूसरे वर्ग सम्मिलित है।

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

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

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

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

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

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

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

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

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

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

तर्क, पीएलए और माइक्रोकोड के लिए ट्रांजिस्टर अब दुर्लभ संसाधन नहीं हैं; आज केवल बड़ी हाई-स्पीड कैश मेमोरी ही ट्रांजिस्टर की अधिकतम संख्या द्वारा सीमित हैं। चूँकि जटिल, सीआईएससी डिकोडर्स की ट्रांजिस्टर गिनती प्रति प्रोसेसर ट्रांजिस्टर की कुल संख्या की तरह तेजी से नहीं बढ़ती है (अधिकांश सामान्यतः कैश के लिए उपयोग किया जाता है)। उत्तम उपकरणों और उन्नत तकनीकों के साथ, इसने लोड-स्टोर सीमाओं (अथार्त गैर-आरआईएससी) के बिना अत्यधिक एन्कोडेड और परिवर्तनीय-लंबाई डिज़ाइन के नए कार्यान्वयन को उत्पन्न किया है। यह सर्वव्यापी x86 (नीचे देखें) जैसे पुराने आर्किटेक्चर के पुन: कार्यान्वयन के साथ-साथ एम्बेडेड सिस्टम और समान उपयोगों के लिए माइक्रोनियंत्रक के नए डिज़ाइन को नियंत्रित करता है। आधुनिक x86 के स्थिति में सुपरस्केलर जटिलता को निर्देशों को या अधिक सूक्ष्म संचालन में परिवर्तित करके और उन माइक्रो-ऑपरेशंस को गतिशील रूप से प्रसारित करके हल किया गया था, अथार्त अप्रत्यक्ष और गतिशील सुपरस्केलर निष्पादन; पेंटियम प्रो और एएमडी के5 इसके प्रारंभिक उदाहरण हैं। यह अधिक सरल सुपरस्केलर डिज़ाइन को (अधिक जटिल) डिकोडर्स (और बफ़र्स) के बाद स्थित करने की अनुमति देता है, जिससे बोलने के लिए, अनेक स्थितियों में दोनों दुनिया का सर्वश्रेष्ठ मिलता है। इस तकनीक का उपयोग आईबीएम जेड196 और बाद के जेड/आर्किटेक्चर माइक्रोप्रोसेसरों में भी किया जाता है।

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

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

एक पीडीपी-10, पीडीपी-8, इंटेल80386, इंटेल4004, मोटोरोला68000, सिस्टम जेड मेनफ्रेम, बरोज़ B5000, वैक्स, ज़िलोग ज़ेड80000, और एमओएस प्रौद्योगिकी 6502 सभी की संख्या में व्यापक रूप से भिन्नता है, निर्देशों के आकार, और प्रारूप, रजिस्टरों की संख्या, प्रकार और आकार, और उपलब्ध डेटा प्रकार कुछ के पास सबस्ट्रिंग के लिए स्कैनिंग, इच्छित स्पष्ट -बीसीडी अंकगणित, या पारलौकिक कार्य जैसे संचालन के लिए हार्डवेयर समर्थन है, जबकि अन्य के पास केवल 8-बिट जोड़ और घटाव है। किंतु वे सभी सीआईएससी श्रेणी में हैं. क्योंकि उनके पास लोड-ऑपरेट निर्देश होते हैं जो वास्तविक गणना करने वाले समान निर्देशों के अंदर मेमोरी सामग्री को लोड और/या संग्रहीत करते हैं। उदाहरण के लिए, पीडीपी-8, जिसमें केवल 8 निश्चित-लंबाई निर्देश हैं और कोई माइक्रोकोड नहीं है, निर्देशों के काम करने के विधि के कारण सीआईएससी है, पावरपीसी, जिसमें 230 से अधिक निर्देश (कुछ वैक्स से अधिक) हैं, और रजिस्टर जैसे जटिल आंतरिक हैं नाम बदलना और पुनः क्रमित बफ़र, आरआईएससी है, जबकि न्यूनतम सीआईएससी में 8 निर्देश हैं, किंतु स्पष्ट रूप से सीआईएससी है क्योंकि यह समान निर्देशों में मेमोरी एक्सेस और गणना को जोड़ता है।

यह भी देखें

 * अल्प निर्देश सेट कंप्यूटर
 * एक-निर्देश सेट कंप्यूटर
 * शून्य अनुदेश सेट कंप्यूटर
 * बहुत लंबा निर्देश शब्द
 * माइक्रोकोड
 * निर्देश सेट आर्किटेक्चर की तुलना

सामान्य सन्दर्भ

 * टैनेनबाम, एंड्रयू एस. (2006) स्ट्रक्चर्ड कंप्यूटर ऑर्गनाइजेशन, पांचवां संस्करण, पियर्सन एजुकेशन, इंक. अपर सैडल रिवर, एनजे।