एमआइपी I निर्देश प्रारूपों को समझने के लिए, आपको एमआइपी पाइपलाइन को समझने की जरूरत है और सीपीयू कार्यान्वयन प्रौद्योगिकी लगभग 1985 में वापस सोचना चाहिए। यदि आप आरेख को देखते हैं (आप एक को जानते हैं), तो आप देखेंगे कि रजिस्टर फाइल रीडिंग में है। आईडी चरण, आईएफ के ठीक बाद।
आर-टाइप निर्देश के उद्देश्य के लिए, आईडी चरण को निम्नलिखित कार्य करने की आवश्यकता है:
- निर्धारित करें कि यह वास्तव में एक आर-प्रकार का निर्देश है।
- यदि हां, तो रजिस्टर फाइल को रजिस्टर से मान लोड करने के लिए कहें।
इस चर्चा के उद्देश्य के लिए, यह पहला काम है जिसके बारे में आपको सोचना है। यदि बहुत सारे निर्देश डिकोडिंग कार्य हैं, जो आपको रजिस्टर से भी करने की आवश्यकता है, यदि आपको रजिस्टरों से किसी भी मान की आवश्यकता है, तो इससे पहले कि आप रजिस्टर रीडिंग शुरू कर सकें, देरी बढ़ जाती है। यह आईडी चरण की जटिलता को भी बढ़ाता है। सभी आर-प्रकार के निर्देशों के लिए एक एकल ओपकोड को जलाकर, आप जटिलता को न्यूनतम रखते हैं।
यह थोड़ा अजीब लगता है कि आप सिर्फ शिफ्टिंग के लिए पांच बिट्स समर्पित करते हैं। मैं कुछ संभावित स्पष्टीकरणों के बारे में सोच सकता हूं। एक यह है कि यह रूटिंग को सरल करता है (उन पांच बिट्स को हमेशा रजिस्टर फाइल में फीड किया जाता है, उन पांच बिट्स को हमेशा बैरल शिफ्टर में फीड किया जाता है, उन छह बिट्स को एएलयू के माध्यम से रूट किया जाता है जो यह निर्धारित करते हैं कि कौन सा फंक्शन परफॉर्म करना है)।
वे भविष्य में संयुक्त शिफ्ट-लेफ्ट-एंड-ऐड निर्देश शुरू करने के बारे में सोच रहे होंगे। यह निश्चित रूप से होगा:
$d = $s + ($t << shamt)
2रों+ 1रों
आज, हम शायद एक और अधिक जटिल डिकोडिंग चरण के बारे में दो बार नहीं सोचेंगे, खासकर जब से रजिस्टर फ़ाइल एक्सेस बाद में एक विशिष्ट सुपरस्क्लेयर सीपीयू की पाइपलाइन में होते हैं। कई आधुनिक सीपीयू भी एल 1 कैश में एक निर्देश डालने के समय कुछ मोटे निर्देश डिकोडिंग करते हैं । आप अतिरिक्त जानकारी को संग्रहीत करने के लिए आई-कैश लाइनों को कुछ बिट्स को व्यापक बनाते हैं (मूर के नियम के लिए धन्यवाद, आपके पास "उचित" निर्देश को सरल और तेज डिकोडिंग करने के लिए बहुत सारे ट्रांजिस्टर हैं)।
एक कारण यह है कि वे शायद ऑपकोड फ़ील्ड को जितना संभव हो उतना छोटा रखना चाहते थे, ताकि यह जे-प्रकार के निर्देशों को यथोचित रूप से दंडित न कर सके। जैसा कि आप शायद जानते हैं, जे-प्रकार के निर्देश छद्म-प्रत्यक्ष पते का उपयोग करते हैं। घर पर खेलने वाले किसी भी व्यक्ति के लाभ के लिए, मैं इसे संक्षेप में समझाऊंगा।
J-type निर्देश का पता फ़ील्ड 26 बिट्स है। क्योंकि निर्देश हमेशा 4-बाइट के होते हैं, आपको कम से कम दो बिट्स को स्टोर करने की आवश्यकता नहीं होती है, जिसका मतलब है कि आपके पास प्रभावी रूप से 28 बिट्स का पता है। हालाँकि, MIPS I में पता स्थान 32-बिट्स है। तो कूद स्थान के शीर्ष चार बिट्स प्रोग्राम काउंटर से लिया गया है।
इसका मतलब है कि आप सीधे उस स्थान पर नहीं जा सकते जहां पीसी स्थान के सबसे महत्वपूर्ण चार बिट अलग-अलग हैं। आपको इसके बजाय एक स्क्रैच रजिस्टर के माध्यम से एक अधिक महंगा तीन-अनुदेश कूदना होगा:
lui $r,target >> 16
ori $r,$r,target & 0xFFFF
jr $r
यह आज बहुत बुरा नहीं है, लेकिन 1985 में, यह बहुत अधिक घड़ी चक्र है।
एड्रेस फील्ड से थोड़ी सी चोरी करने से डायरेक्ट जंप की प्रभावी रेंज और भी कम हो जाएगी। आप देख सकते हैं कि भुगतान करने के लिए यह बहुत अधिक कीमत कैसे हो सकती है।