डीएलएक्स

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

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

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

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

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

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

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

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


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


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


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


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


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

यह भी देखें

 * एजुकेशनल प्रोग्रामिंग लैंग्वेज
 * एलसी-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