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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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

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

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