आईबीएम 801

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

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

801 पर अपने कार्य के लिए, जॉन कॉके (कंप्यूटर वैज्ञानिक) को कई पुरस्कारों और पदकों से सम्मानित किया गया, जिसमें 1987 में ट्यूरिंग अवार्ड, 1991 में प्रौद्योगिकी का राष्ट्रीय पदक और 1994 में विज्ञान का राष्ट्रीय पदक सम्मलित हैं।

मूल अवधारणा
1974 में, आईबीएम ने एक घंटे में एक मिलियन कॉल, या प्रति सेकंड लगभग 300 कॉल को संभालने के लिए एक टेलीफोन स्विच के निर्माण की संभावना की जांच प्रारम्भ की थी। उन्होंने गणना किया कि प्रत्येक कॉल को पूरा करने के लिए 20,000 निर्देशों की आवश्यकता होगी, और जब जोड़ा गया समय ओवरहेड और अन्य कारण, ऐसी मशीन को लगभग 12 एमआईपीएस के परफॉरमेंस की आवश्यकता होती है। इसके लिए परफॉरमेंस में महत्वपूर्ण प्रगति की आवश्यकता होगी; उनकी वर्तमान टॉप-ऑफ़-द-लाइन मशीन, आईबीएम सिस्टम/370 मॉडल 168 1972 के अंत में, लगभग 3 एमआईपीएस को प्रदर्शित किया था।

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

टेलीफोन स्विच परियोजना को 1975 में समाप्त कर दिया गया था, लेकिन टीम ने अवधारणा पर बहुत प्रगति की थी और अक्टूबर में आईबीएम ने इसे सामान्य प्रयोजन के डिजाइन के रूप में चलाये रखने का निर्णय किया था। इसे संलग्न करने के लिए कोई स्पष्ट परियोजना नहीं होने के कारण, टीम ने उस बिल्डिंग के बाद इसे 801 कहने का निर्णय किया जिसमें उन्होंने काम किया था। सामान्य उद्देश्य की भूमिका के लिए, टीम ने रियल वर्ल्ड प्रोग्राम पर विचार करना प्रारम्भ किया जो विशिष्ट मिनीकंप्यूटर पर चलते हैं। आईबीएम ने अपनी मशीनों पर रियल वर्ल्ड के वर्कलोड के प्रदर्शन पर अधिक मात्रा में सांख्यिकीय डेटा एकत्र किया था और इस डेटा ने प्रदर्शित किया कि विशिष्ट प्रोग्राम में आधे से अधिक समय केवल पांच निर्देशों : मेमोरी से लोड वैल्यू, स्टोर वैल्यू टू मेमोरी, ब्रांच, निश्चित-बिंदु संख्याओं की तुलना और निश्चित-बिंदु संख्याओं को जोड़ने का पालन करने में व्यतीत होता है। इसने सुझाव दिया कि समान सरलीकृत प्रोसेसर डिज़ाइन सामान्य-उद्देश्य मिनीकंप्यूटर के लिए विशेष-उद्देश्य स्विच के रूप में ठीक काम करता हैं।

माइक्रोकोड के उपयोग के विरुद्ध तर्क

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

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

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

परिणामतः, निर्देश सेट में उपलब्ध अधिकांश निर्देश कम्पाइलड प्रोग्राम में कभी भी उपयोग नहीं किए गए थे और यहीं पर टीम ने 801 प्रोजेक्ट की मुख्य उपलब्धि प्राप्त की थी:

"कंप्यूटर और उसके उपयोगकर्ताओं के बीच माइक्रोकोड लगाने से सबसे अधिक बार निष्पादित निर्देशों को पूरा करने में अधिक खर्च आता है।"

माइक्रोकोड प्रदर्शन करने से पहले निर्देश की जांच करने के लिए अशून्य समय लेता है। हटाए गए माइक्रोकोड के साथ वही अंतर्निहित प्रोसेसर इस ओवरहेड को समाप्त कर देगा और उन निर्देशों को तीव्रता से चलाता हैं। चूंकि माइक्रोकोड अनिवार्य रूप से विशेष हार्डवेयर कार्यान्वयन के लिए समर्पित छोटे सबरूटीन चलाता था, यह अंततः वही मूल कार्य कर रहा था जो संकलक करता था, मशीन-विशिष्ट निर्देशों के अनुक्रम के रूप में उच्च-स्तरीय निर्देशों को क्रियान्वित करता था। केवल माइक्रोकोड को हटाने और संकलक में इसे क्रियान्वित करने के परिणामस्वरूप मशीन तेज हो सकती है।

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

पहला कार्यान्वयन
प्रारंभिक रूप से प्रस्तावित आर्किटेक्चर सोलह 24-बिट रजिस्टरों वाली एक मशीन थी और आभासी मेमोरी  के बिना थी।  इसने निर्देश में दो-ऑपरेंड प्रारूप का उपयोग किया, ताकि निर्देश आम तौर पर फॉर्म के हों , तीन-ऑपरेंड प्रारूप के विपरीत,. परिणामी CPU 1980 की गर्मियों तक चालू था और Motorola MECL-10K असतत घटक प्रौद्योगिकी का उपयोग करके कार्यान्वित किया गया था तार से लिपटे बड़े कस्टम बोर्डों पर। CPU को 66 ns चक्र (लगभग 15.15 MHz) पर क्लॉक किया गया था और प्रति सेकंड लगभग 15 मिलियन निर्देशों की तेज़ गति से गणना कर सकता था।

801 आर्किटेक्चर का उपयोग कई प्रकार के IBM उपकरणों में किया गया था, जिसमें उनके S/370 मेनफ्रेम (जैसे IBM 3090) के लिए चैनल नियंत्रक शामिल हैं। विभिन्न नेटवर्किंग डिवाइस, और आईबीएम 9370 मेनफ्रेम परिवार के 9373 और 9375 प्रोसेसर में  लंबवत माइक्रोकोड  निष्पादन इकाई के रूप में। 801 आर्किटेक्चर का मूल संस्करण IBM ROMP माइक्रोप्रोसेसर के आर्किटेक्चर का आधार था  IBM RT PC वर्कस्टेशन कंप्यूटर और IBM रिसर्च के कई प्रायोगिक कंप्यूटरों में उपयोग किया जाता है। इलियड नाम के 32-बिट एड्रेसिंग के साथ 801 आर्किटेक्चर के व्युत्पन्न का उद्देश्य असफल आईबीएम एएस/400#फोर्ट नॉक्स मिडरेंज सिस्टम प्रोजेक्ट के प्राथमिक प्रोसेसर के रूप में काम करना था।

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

32-बिट प्रारूप में जाने से एक और महत्वपूर्ण लाभ हुआ। व्यवहार में, यह पाया गया कि विशिष्ट गणित कोड में दो-ऑपरेंड प्रारूप का उपयोग करना कठिन था। आदर्श रूप से, दोनों इनपुट ऑपरेंड रजिस्टरों में बने रहेंगे जहां उन्हें बाद के ऑपरेशनों में फिर से इस्तेमाल किया जा सकता है, लेकिन ऑपरेशन के आउटपुट ने उनमें से एक को ओवरराइट कर दिया, अक्सर ऐसा होता था कि मानों में से एक को मेमोरी से फिर से लोड करना पड़ता था. 32-बिट प्रारूप में जाने से, निर्देश शब्दों में अतिरिक्त बिट्स को एक अतिरिक्त रजिस्टर निर्दिष्ट करने की अनुमति मिलती है, ताकि ऐसे कार्यों के आउटपुट को एक अलग रजिस्टर में निर्देशित किया जा सके। बड़े निर्देश शब्द ने भी रजिस्टरों की संख्या को सोलह से बढ़ाकर बत्तीस करने की अनुमति दी, एक परिवर्तन जो 801 कोड की परीक्षा द्वारा स्पष्ट रूप से सुझाया गया था। 24 से 32-बिट्स के निर्देश शब्दों के विस्तार के बावजूद, इन दो परिवर्तनों के कारण टाले गए भार और बचत के कारण प्रोग्राम 33% की वृद्धि नहीं हुई।

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

जब 801 का नया संस्करण 370 पर एक सिम्युलेटर के रूप में चलाया गया था, तो टीम को यह जानकर आश्चर्य हुआ कि 801 के लिए संकलित कोड और सिम्युलेटर में चलाया जाने वाला कोड अक्सर उसी स्रोत कोड की तुलना में तेजी से चलता है जो सीधे 370 मशीन कोड का उपयोग करके संकलित किया जाता है। 370 का PL/1 संकलक। जब उन्होंने अपनी प्रायोगिक PL.8 भाषा को 370 में वापस पोर्ट किया और इसका उपयोग करते हुए अनुप्रयोगों को संकलित किया, तो वे मौजूदा PL/1 कोड की तुलना में तीन गुना अधिक तेजी से चले। यह संकलक द्वारा RISC जैसे निर्णय लेने के कारण था कि कोड को आंतरिक रजिस्टरों में कैसे संकलित किया जाए, जिससे अधिक से अधिक मेमोरी एक्सेस का अनुकूलन किया जा सके। ये 370 पर 801 की तरह ही महंगे थे, लेकिन यह लागत आमतौर पर CISC कोड की एक पंक्ति की सादगी से छिपी हुई थी। PL.8 कंपाइलर लोड से बचने और बचाने के बारे में अधिक आक्रामक था, और इसके परिणामस्वरूप CISC प्रोसेसर पर भी उच्च प्रदर्शन हुआ।

चीता, पैंथर और अमेरिका प्रोजेक्ट
1980 के दशक की शुरुआत में, 801 पर सीखे गए पाठों को आईबीएम एडवांस्ड कंप्यूटर सिस्टम्स प्रोजेक्ट प्रोजेक्ट से जोड़ा गया, जिसके परिणामस्वरूप चीता नामक एक प्रायोगिक प्रोसेसर का निर्माण हुआ। चीता एक 2-वे सुपरस्केलर प्रोसेसर था, जो 1985 में पैंथर नामक प्रोसेसर के रूप में विकसित हुआ, और अंततः 1986 में अमेरिका नामक 4-वे सुपरस्केलर डिज़ाइन में विकसित हुआ। यह एक तीन-चिप प्रोसेसर सेट था जिसमें एक इंस्ट्रक्शन प्रोसेसर शामिल था जो निर्देशों को प्राप्त करता है और डिकोड करता है, एक फिक्स्ड-पॉइंट प्रोसेसर जो इंस्ट्रक्शन प्रोसेसर के साथ ड्यूटी साझा करता है, और उन सिस्टमों के लिए एक फ्लोटिंग-पॉइंट प्रोसेसर होता है जिन्हें इसकी आवश्यकता होती है। 801 टीम द्वारा डिज़ाइन किया गया, अंतिम डिज़ाइन 1986 में IBM के ऑस्टिन कार्यालय को भेजा गया था, जहाँ इसे IBM RS/6000 सिस्टम में विकसित किया गया था। 25 मेगाहर्ट्ज पर चलने वाली RS/6000 अपने युग की सबसे तेज मशीनों में से एक थी। इसने सामान्य परीक्षणों पर अन्य आरआईएससी मशीनों को दो से तीन गुना बेहतर प्रदर्शन किया, और पुराने सीआईएससी सिस्टमों को मामूली रूप से बेहतर प्रदर्शन किया।

RS/6000 के बाद, कंपनी ने अपना ध्यान 801 अवधारणाओं के एक संस्करण की ओर लगाया जिसे विभिन्न पैमानों पर कुशलतापूर्वक गढ़ा जा सकता था। परिणाम आईबीएम पावर इंस्ट्रक्शन सेट आर्किटेक्चर और PowerPC ऑफशूट था।

मान्यता
801 पर अपने काम के लिए, जॉन कॉके (कंप्यूटर वैज्ञानिक) को कई पुरस्कार और पदक से सम्मानित किया गया:

माइकल जे. फ्लिन 801 को पहले आरआईएससी के रूप में देखते हैं।
 * 1985: एकर्ट-मौचली पुरस्कार
 * 1987: ए.एम. ट्यूरिंग अवार्ड
 * 1989: कंप्यूटर पायनियर पुरस्कार
 * 1991: प्रौद्योगिकी का राष्ट्रीय पदक
 * 1994: जॉन वॉन न्यूमैन मेडल
 * 1994: विज्ञान का राष्ट्रीय पदक * 2000: बेंजामिन फ्रैंकलिन पदक (फ्रैंकलिन संस्थान)  (द फ्रैंकलिन इंस्टीट्यूट)

अग्रिम पठन

 * "Altering Computer Architecture is Way to Raise Throughput, Suggests IBM Researchers". Electronics V. 49, N. 25 (23 December 1976), pp. 30–31.
 * V. McLellan: "IBM Mini a Radical Departure". Datamation V. 25, N. 11 (October 1979), pp. 53–55.

बाहरी संबंध

 * The 801 Minicomputer - An Overview
 * IBM System 801 Principles of Operation, Version 2
 * 801 I/O Subsystem Definition
 * IBM Archives: A Brief History of RISC, the IBM RS/6000 and the IBM eServer pSeries