बेलमैक-8

MAC-8, जिसे आज BELLMAC-8 के नाम से जाना जाता है, एक 8-बिट कंप्यूटिंग|8-बिट माइक्रोप्रोसेसर है जिसे बेल लैब्स द्वारा डिज़ाइन किया गया है। 1977 में वेस्टर्न इलेक्ट्रिक में WE212 के रूप में CMOS फॉर्म में उत्पादन शुरू हुआ। MAC-8 का उपयोग केवल 4ESS जैसे AT&T उत्पादों में किया गया था। कोई व्यावसायिक डेटा शीट  प्रकाशित नहीं की गई थी, इसलिए इसके परिणामस्वरूप बहुत कम जानकारी है। जनता में सबसे प्रसिद्ध उपयोग मैक-ट्यूटर  कंप्यूटर प्रशिक्षक  है, जो 1979 में जारी किया गया था।

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

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

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

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

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

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

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

निर्देश सेट
MAC-8 अनुदेश सेट वास्तुकला  (ISA) को तीन व्यापक समूहों में विभाजित किया गया था, अंकगणित और तार्किक, नियंत्रण स्थानांतरण (शाखा लगाना), और विशेष।

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

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

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

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

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

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

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

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

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

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

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

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

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