बेलमैक-8

एमएसी-8, जिसे आज बेलमैक-8 के नाम से जाना जाता है, एक 8-बिट कंप्यूटिंग 8-बिट माइक्रोप्रोसेसर है जिसे बेल लैब्स द्वारा डिज़ाइन किया गया है। वेस्टर्न इलेक्ट्रिक में 1977 में डब्लूई212 के रूप में सीएमओएस फॉर्म में उत्पादन प्रारंभ किया गया था। और एमएसी-8 का उपयोग केवल 4ईएसएस जैसे एटी&टी उत्पादों में किया जाता था। इस प्रकार से कोई व्यावसायिक डेटा शीट प्रकाशित नहीं की गई थी, इसलिए इसके परिणामस्वरूप अधिक कम डेटा है। अतः जनता में अधिक प्रसिद्ध उपयोग मैक-ट्यूटर कंप्यूटर प्रशिक्षक है, जो की 1979 में प्रवाहित किया गया था।

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

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

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

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

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

इस प्रकार से सिस्टम में चार सार्वजनिक हार्डवेयर रजिस्टर भी सम्मिलित थे। ये 16-बिट प्रोग्राम काउंटर (पीसी), स्टैक पॉइंटर (एसपी), रजिस्टर पॉइंटर (आरपी) और कंडीशन रजिस्टर (सीआर) थे, जिन्हें सामान्यतः अन्य प्लेटफार्मों पर स्टेटस रजिस्टर के रूप में जाना जाता है। इसमें दो आंतरिक 8-बिट रजिस्टर भी सम्मिलित हैं जिनका उपयोग केवल वर्तमान निर्देश के प्रसंस्करण के समय किया जाता है, निर्देश रजिस्टर (आईआर) जिसमें अंतिम पढ़ा गया निर्देश ऑपकोड होता है, और डी/एस रजिस्टर जो गंतव्य और स्रोत रजिस्टर संख्याओं, 0 से दो निबल्स में 15 को स्टोर्ड करता है। इसके अतिरिक्त, प्रसंस्करण के समय 16-बिट एड्रेस वैल्यू और उसके 8-बिट डेटा को लॉक कर दिया गया था।

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

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

अंकगणित और लॉजिकल निर्देशों में या दो ओपेरंड होते थे, जिनमें से प्रत्येक रजिस्टर, मेमोरी स्थान की ओर संकेत करता था, या तत्काल मान (स्थिर) रखता था। निर्देश को बाइट में रखा गया था, जिसमें ऊपरी पांच बिट्स में ऑपकोड और निचले तीन में एड्रेसिंग मोड था, जो दर्शाता था कि ऑपरेंड (यदि कोई हो) कहां रखे गए थे। इस प्रकार से उदाहरण के लिए, अतिरिक्त निर्देश यह संकेत दे सकता है कि वह मोड को 0 (रजिस्टर-टू-रजिस्टर) पर सेट करके रुपये (स्रोत) में मान को आरडी (गंतव्य) में जोड़ना चाहता था। यदि मान आर1 और आर2 में थे, तो डी/एस बाइट 00010010 पर सेट किया जाएगा। वैकल्पिक रूप से, वही जोड़ना मोड 6 का उपयोग कर सकता है, जो स्रोत बी रजिस्टर में मान को मेमोरी स्थान में मान के साथ दूसरे रजिस्टर (अप्रत्यक्ष एड्रेसिंग) में मान से ऑफसेट कर देता है। इस स्तिथि में, डी/एस रजिस्टर में 16-बिट स्रोत रजिस्टर, बीएस सम्मिलित है, और गंतव्य गंतव्य रजिस्टर, आरडी रखता है।

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

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

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

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

चूँकि सिस्टम नया था, और माइक्रोप्रोसेसरों की पूरी अवधारणा एटी&टी के लिए नई थी, कंपनी ने एमएसी-TUTOR सिंगल-बोर्ड कंप्यूटर भी पेश किया जिसका उपयोग परीक्षण और विकास के लिए किया जा सकता था। यूनिक्स टूल का उपयोग प्रोग्राम बनाने, उसे मैक-ट्यूटर पर डाउनलोड करने, चलाने और डीबग करने और यूनिक्स की ओर स्थिति वापस भेजने के लिए किया जा सकता है। मूल मैक-ट्यूटर में 2 kB की रैंडम एक्सेस मेमोरी, बुनियादी हार्डवेयर नियंत्रण कार्यों के साथ 2 kB की केवल पढ़ने के लिये मेमोरी, 1 kB प्रोग्रामयोग्य ROM चिप्स के लिए तीन सॉकेट, 28-बटन कैलकुलेटर-प्रकार का कीबोर्ड (4 बाय 7), और सम्मिलित थे। डिस्प्ले जिसमें आठ 7-सेगमेंट एलईडी हैं। ऑनबोर्ड इंटरफेस में कैसेट टेप, कंप्यूटर टर्मिनल के लिए दो आरएस-232 और 32-पिन बस विस्तारक सम्मिलित थे जिनका उपयोग अधिक मेमोरी या मेमोरी-मैप किए गए उपकरणों को जोड़ने के लिए किया जा सकता था।

कार्यान्वयन
डब्लूई212 में 7,000 से अधिक ट्रांजिस्टर का उपयोग किया गया था और इसे 5 माइक्रोन सीएमओएस प्रक्रिया पर कार्यान्वित किया गया था, जिसके परिणामस्वरूप 220x230 मिल्स का डाई प्राप्त हुआ। यह सामान्यतः 12 वी और 2 मेगाहर्ट्ज पर चलता था, जिसके परिणामस्वरूप 200 मिलीवाट ड्रॉ होता था, 6502 या Z80 जैसे समकालीन प्रोसेसर से काफी कम। ट्रांजिस्टर-ट्रांजिस्टर लॉजिक (टीटीएल) भागों को बिजली देने के लिए 5 वी पर दूसरी आपूर्ति की भी आवश्यकता थी जो बाकी कंप्यूटर हार्डवेयर के साथ इंटरफेस करती थी।

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

इसे 16-पिन एड्रेस बस और 8-पिन डेटा बस के साथ 40-पिन दोहरी इन-लाइन पैकेज में पैक किया गया था, जिसका अर्थ है कि कोई भी मुख्य पिन मल्टीप्लेक्स नहीं था और डेटा को ही चक्र में पढ़ा जा सकता था। इनपुट/आउटपुट मेमोरी-मैप्ड I/O और पोर्ट-मैप्ड I/O था और इंटेल 8080 की तरह भिन्न-भिन्न पिन का उपयोग नहीं करता था। दो पिन प्रत्यक्ष मेमोरी एक्सेस (डीएमए) प्रदान करते थे; DMA की इच्छा रखने वाला उपकरण DMAREQ को नीचे खींचेगा, और जब प्रोसेसर बस को छोड़ने के लिए तैयार होगा तो यह DMAACK को नीचे खींचकर इसका संकेत देगा। डिवाइस तब तक मेमोरी तक पहुंच सकता है जब तक उसे आवश्यकता हो और डीएमए आरईक्यू प्रवाहित करके संकेत दिया कि यह समाप्त हो गया है। अन्य तीन पिन, S1 से S3, सीपीयू की आंतरिक स्थिति और किसी भी त्रुटि की स्थिति का संकेत देते हैं। बाकी पिन पावर, इंटरप्ट कंट्रोल और क्लॉक पिन का विशिष्ट मिश्रण थे।

डब्लूई212 के कम से कम तीन संस्करण मौजूद हैं, ए से सी तक। पैकेजिंग के अलावा, इनके बीच के अंतर का किसी भी उपलब्ध संदर्भ में वर्णन नहीं किया गया है।

उपयोग एवं प्रभाव
मैक-ट्यूटर सिस्टम के अलावा, डब्लूई212 का उल्लेख अनेक एटी एंड टी उत्पादों में किया गया है, जिनमें अन्य के अलावा, 4ईएसएस स्विच भी सम्मिलित है। और SLC-96 सब्सक्राइबर लूप वाहक ।

हालाँकि बेलमैक-8 का उपयोग अपेक्षाकृत कम था, सी और इसी तरह की लैंग्वेजो को चलाने के लिए विशेष रूप से प्रोसेसर को डिजाइन करने की मूल अवधारणा को अगले दशक में बेल द्वारा लगातार खोजा गया था। निम्नलिखित बेलमैक-80 मूलतः सी मशीन का 32-बिट कंप्यूटिंग|32-बिट कार्यान्वयन था। एमिटर-युग्मित लॉजिक में उच्च-प्रदर्शन डिज़ाइन का प्रयास छोड़ दिया गया था और 1986 में सीआरआईएसपी के रूप में सरल कार्यान्वयन तैयार किया गया था, जिससे प्रदर्शन की लगभग 7.7 VAX इकाई प्राप्त हुई।

एटी एंड टी ने मोबाइल कंप्यूटिंग के लिए कम-शक्ति अनुप्रयोगों की ओर पुनः ध्यान केंद्रित करते हुए सी मशीन प्रयासों के लक्ष्य को परिवर्तनने का निर्णय लिया। इससे एटी एंड टी हॉबिट डिज़ाइन का जन्म हुआ, पहला संस्करण, एटी एंड टी 92010, 1992 में प्रवाहित किया गया। बाज़ार में सफलता की कमी के कारण एटी&टी को 1993 में हॉबिट को बाज़ार से वापस लेना पड़ा। रेफरी> और इसके साथ ही सी मशीन का विकास समाप्त हो गया।