डीएलएक्स

डीएलएक्स (उच्चारण "डीलक्स") एक आरआईएससी प्रोसेसर आर्किटेक्चर है जिसे जॉन एल. हेनेसी और डेविड ए. पैटरसन द्वारा डिजाइन किया गया है, जो स्टैनफोर्ड एमआईपीएस और बर्कले आरआईएससी के प्रमुख डिजाइनर हैं जो क्रमशः आरआईएससी डिजाइन के नाम पर दो बेंचमार्क बर्कले उदाहरण डिजाइन करते हैं।

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

दो ज्ञात एस्पिडा और वैम्प "माइक्रोप्रोसेसर" हार्डवेयर कार्यान्वयन हैं। एएसपीआईडीए परियोजना (प्रोजेक्ट) के परिणामस्वरूप कई अच्छी विशेषताओं वाला एक कोर तैयार किया गया है जो पूर्ण रुप से ओपन सोर्स और विशबोन का समर्थन करता है। इसमें एक असिंक्रोनस डिजाइन है जो कई आईएसए का समर्थन करती है और एएसआईसी से प्रमाणित है। वैम्प एक डीएलएक्स-वेरिएंट है जिसे वेरीसॉफ्ट प्रोजेक्ट के रूप में गणितीय रूप से सत्यापित किया गया था। इसे पीवीएस के साथ निर्दिष्ट किया गया था और वेरिलॉग में कार्यान्वित किया गया था जो सामान्यतः सीलिंक्स एफपीजीए पर चलता है। कंपाइलर के कर्नेल से टीसीपी/आईपी तक इस पर एक पूर्ण स्टैक बनाया गया था।

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

डीएलएक्स डिज़ाइन में लंबे इंस्ट्रक्शन को कार्यान्वित के लिए एक आधुनिक दृष्टिकोण का उपयोग डेटा-फ़ॉरवर्डिंग और इंस्ट्रक्शन पुन: व्यवस्थित करने के लिए किया गया था। इस स्थिति में लंबे इंस्ट्रक्शन को उनकी फंक्शनल यूनिट में स्थगित कर दिया जाता है और जब वे इंस्ट्रक्शन पूर्ण करते हैं तो उन्हें इंस्ट्रक्शन स्ट्रीम में फिर से प्रयुक्त किया जाता है। सामान्यतः यह डिज़ाइन बाहर से ऐसी प्रतीत होती है जैसे कि इसका निष्पादन पूर्ण रूप से सही है।

कार्य
डीएलएक्स इंस्ट्रक्शन को तीन प्रकारों आर-टाइप, आई-टाइप और जे-टाइप में विभाजित किया जा सकता है। आर-टाइप इंस्ट्रक्शन शुद्ध रजिस्टर इंस्ट्रक्शन हैं, जिसमें 32-बिट वर्ड में तीन रजिस्टर संदर्भ सम्मिलित हैं। आई-टाइप इंस्ट्रक्शन दो रजिस्टर निर्दिष्ट करते हैं और शीघ्र मान रखने के लिए 16 बिट्स का उपयोग करते हैं। अंततः जे-टाइप इंस्ट्रक्शन जंप प्रकार के इंस्ट्रक्शन होते हैं, जिनमें 26-बिट एड्रेस होता है।

कुल 64 बिट संभावित इंस्ट्रक्शन के लिए ऑपकोड 6 बिट लंबे होते हैं। 32 रजिस्टरों में से एक का चयन करने के लिए 5 बिट्स की आवश्यकता होती है।
 * आर-टाइप के इंस्ट्रक्शन के स्थिति में इसका अर्थ यह है कि 32-बिट वर्ड मे केवल 21 बिट्स का उपयोग किया जाता है, जो न्यूनतम 6 बिट्स को विस्तारित इंस्ट्रक्शन के रूप में उपयोग करने की स्वीकृति देते हैं।
 * डीएलएक्स 64 से अधिक इंस्ट्रक्शन का समर्थन कर सकता है जब तक वे इंस्ट्रक्शन पूरी तरह से रजिस्टरों पर कार्य करते हैं। यह क्विर्क फ़्लोटिंग पॉइंट यूनिट जैसी डिज़ाइनों के लिए उपयोगी है।

पाइपलाइन
एमआईपीएस डिज़ाइन की तरह डीएलएक्स, एक इंस्ट्रक्शन-पाइपलाइन के उपयोग पर अपना प्रदर्शन आधारित करता है। डीएलएक्स डिज़ाइन में यह अवधारणा में अत्यधिक सरल "क्लासिक" आरआईएससी है। पाइपलाइन में पाँच चरण होते हैं:


 * आईएफ - इंस्ट्रक्शन फ़ेच यूनिट/साइकल
 * IR<-Mem(PC)
 * NPC<-PC+4
 * ऑपरेशन: पीसी को भेजें और इंस्ट्रक्शन को मेमोरी से इंस्ट्रक्शन रजिस्टर (आईआर) में लाएं अगले अनुक्रमिक इंस्ट्रक्शन को संबोधित करने के लिए पीसी को 4 से बढ़ाएं। आईआर का उपयोग अगले इंस्ट्रक्शन को रखने के लिए किया जाता है जिसकी बाद के घड़ी चक्रों पर आवश्यकता होगी; इसी प्रकार रजिस्टर एनपीसी का उपयोग अगले अनुक्रमिक पीसी को रखने के लिए किया जाता है।


 * आईडी - इंस्ट्रक्शन डिकोड यूनिट
 * ऑपरेशन: इंस्ट्रक्शन को डिकोड करें और रजिस्टरों को पढ़ने के लिए रजिस्टर फ़ाइल तक पहुंचें। यह यूनिट IF से इंस्ट्रक्शन प्राप्त करती है, और उस इंस्ट्रक्शन से ऑपकोड और ऑपरेंड निकालती है। यदि ऑपरेशन द्वारा अनुरोध किया जाता है तो यह रजिस्टर मान भी पुनः प्राप्त करता है।


 * ईएक्स - निष्पादन यूनिट/एफ्फेक्टिव एड्रेस साइकल
 * ऑपरेशन: अरिथमेटिक लॉजिक यूनिट (एएलयू) ईएक्स साइकल में तैयार किए गए ऑपरेंड पर कार्य करती है जो डीएलएक्स इंस्ट्रक्शन के आधार पर चार कार्यों में से एक का प्रदर्शन करती है।
 * मेमोरी रेफ्रेंस: रजिस्टर-रजिस्टर एएलयू इंस्ट्रक्शन, रजिस्टर-इमीडिएट एएलयू इंस्ट्रक्शन


 * एमईएम - मेमोरी एक्सेस यूनिट
 * इस यूनिट में सक्रिय डीएलएक्स इंस्ट्रक्शन लोड, ब्रांच और स्टोर होते हैं।
 * मेमोरी रेफ्रेंस: यदि आवश्यक होती है तो मेमोरी तक डीएलएक्स इंस्ट्रक्शन लोड होता है जिससे डेटा मेमोरी से वापस आ जाता है जिसको एलएमडी (लोड मेमोरी डेटा) रजिस्टर में रखा जाता है।


 * डब्ल्यूबी - राइटबैक यूनिट
 * सामान्यतः आधुनिक शब्दावली में इसे "स्टोर यूनिट" कहा जाता है। इसके मेमोरी सिस्टम डेटा और एएलयू को परिणाम को रजिस्टर फ़ाइल मे लिखा जाता है।

यह भी देखें

 * एजुकेशनल प्रोग्रामिंग लैंग्वेज
 * एलसी-3
 * मिक्स, एमएमएक्स
 * माइक्रोब्लेज़
 * माइक्रोसिम
 * ओपन आरआईएससी

बाहरी संबंध

 * The डीएलएक्स Processor
 * डीएलएक्स instructions
 * Winडीएलएक्स
 * डीएलएक्स Simulator (GNU GPL)
 * ESCAPE डीएलएक्स Simulator
 * openडीएलएक्स - opensource डीएलएक्स-Simulator in Java (GNU GPLv3)
 * Formal verification of VAMP processor
 * ASPIDA asynchronous डीएलएक्स processor
 * HERA: The Haverford Educational RISC Architecture