डीएलएक्स

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

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

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

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

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

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

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

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


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


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


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


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


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

यह भी देखें

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

बाहरी संबंध

 * The DLX Processor
 * DLX instructions
 * WinDLX
 * DLX Simulator (GNU GPL)
 * ESCAPE DLX Simulator
 * openDLX - opensource DLX-Simulator in Java (GNU GPLv3)
 * Formal verification of VAMP processor
 * ASPIDA asynchronous DLX processor
 * HERA: The Haverford Educational RISC Architecture