आईबीएम 801

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

कंप्यूटर बाजार में 801 बेहद प्रभावशाली था। बड़ी मात्रा में प्रदर्शन डेटा के साथ, आईबीएम यह प्रदर्शित करने में सक्षम था कि सरल डिजाइन सबसे शक्तिशाली क्लासिक सीपीयू डिजाइनों को भी आसानी से मात देने में सक्षम था, जबकि एक ही समय में मशीन कोड का उत्पादन किया गया था जो अत्यधिक अनुकूलित सीआईएससी निर्देशों की तुलना में केवल मामूली बड़ा था। सिस्टम/370 जैसे मौजूदा प्रोसेसरों पर भी इन्हीं तकनीकों को लागू करने से आम तौर पर उन सिस्टमों का प्रदर्शन भी दोगुना हो जाता है। इसने RISC अवधारणा के मूल्य का प्रदर्शन किया, और IBM की भविष्य की सभी प्रणालियाँ 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