MIPS में क्यों shamt और फंक्शनल फंक्शन / opcode शामिल था?


15

मैं उलझन में हूं कि क्यों MIPS डिजाइनरों में शिफ्टिंग के लिए समर्पित 5 बिट्स और अलग-अलग ओपकोड और फ़ंक्शन बिट्स शामिल होंगे।

क्योंकि MIPS बहुत RISC है, इसलिए मुझे लगता है कि केवल शिफ्टिंग कुछ निर्देशों में किया जाएगा, इसलिए उन 5 बिट्स को ऐसा लगता है कि वे अंतरिक्ष को बर्बाद कर रहे हैं जब उन्हें तत्काल में रखा जा सकता है। मुझे लगता है कि R- और I- प्रकार के निर्देशों को अलग करने के लिए opcodes और कार्यात्मक अलग-अलग हैं, लेकिन यह 1 बिट द्वारा opcode का विस्तार करके किया जा सकता है। इन दोनों के साथ R- प्रकार के निर्देश 22 बिट लंबे हो सकते हैं। यदि I-type और J-type निर्देश उनके तत्काल और पते को रखना चाहते हैं तो यह काम नहीं करेगा, लेकिन दोनों ही अनावश्यक लगते हैं।

जवाबों:


10

यहां कुछ अलग ट्रेड-ऑफ चल रहे हैं।

पहले, हम चाहते हैं कि निर्देश निश्चित चौड़ाई (32-बिट) हो। यह गारंटी देता है कि निर्देश कैश-ब्लॉक और पृष्ठ संरेखित हैं जो कैश और पेज उपस्थिति और अनुमति जांच को सरल बनाते हैं।

दूसरा हम चाहते हैं कि विभिन्न अनुदेश क्षेत्र ( opcode/ source regs/ immediates) निश्चित चौड़ाई और निश्चित स्थिति वाले हों। यह उन्हें डिकोड करने के लिए तेज / कम तर्क बनाता है और उन्हें पाइपलाइन के शुरुआती चरणों में जरूरत होती है। ( destinationपाइप लाइन के अंत तक रजिस्टर की आवश्यकता नहीं है, इसलिए यह अलग-अलग जगहों पर Rऔर Iनिर्देशों में हो सकता है ।) functionफ़ील्ड की स्थिति और चौड़ाई थोड़ी कम मायने रखती है क्योंकि इसमें ALU के कार्य को नियंत्रित करने की आवश्यकता होती है, लेकिन ऐसा है तीसरे पाइपलाइन चरण में, इसलिए यदि आवश्यक हो तो इसके साथ काम करने के लिए आपके पास थोड़ा समय है।

IJJ228228Iसंकलक / लिंकर लेखकों के लिए निर्देश भी अच्छा है। (एसपीएआरसी पर, जहां तत्काल क्षेत्र केवल 12 बिट्स था, उन्हें load-high20 बिट के साथ एक संपूर्ण विशेष अनुदेश वर्ग जोड़ना था ।)

26=64JRI

लेकिन यह Rनिर्देश के साथ कुछ wiggle कमरा छोड़ देता है। 6-बिट ओपकोड के अलावा, इनको रजिस्टर स्पेसिफिकेशन के लिए केवल 15 अतिरिक्त बिट्स की आवश्यकता होती है, जो विस्तारित ऑपकोड और / या शिफ्ट-राशि के लिए 11 बिट्स को छोड़ देता है।

आपको निर्देश के functionलिए विस्तारित opcode होने के रूप में क्षेत्र के बारे में सोचना चाहिए R। केवल एक Rनिर्देश opcode है, लेकिन 64 अलग हैं functionsजो Rअनुदेश प्रदर्शन कर सकते हैं।

ठीक है। हमारे पास 60 अलग-अलग Iनिर्देश हैं और 64 अलग-अलग Rनिर्देश हैं, इसलिए हमें शिफ्ट-तत्काल निर्देश कहां रखना चाहिए?

ठीक है, न केवल कम Iनिर्देश हैं, बल्कि ऐसे और भी तरीके हैं जिनसे हम I निर्देश लेना चाहते हैं । याद रखें कि सभी शाखा निर्देशों को निर्देश देने की आवश्यकता है Iक्योंकि उनके पास एक रिश्तेदार (तत्काल) ऑफसेट है। इसके अलावा सभी लोड और स्टोर निर्देश IMIPS पर प्रारूप हैं । और अंत में हमें निर्देश होने के लिए लोड-अपर-तत्काल निर्देश की आवश्यकता होती है I। इतना ही नहीं, लेकिन Rनिर्देशों में अभी भी 5 अतिरिक्त अप्रयुक्त बिट्स हैं, (जो कि इस वास्तुकला पर तत्काल-शिफ्ट-तत्काल की आवश्यकता है), इसलिए यह शिफ्ट बनाने के लिए और अधिक प्रोत्साहन देता है-विशेष (अजीब) Rनिर्देशों में ।

इनमें से बहुत सारे निर्णय विज्ञान की तुलना में अधिक कला हैं, लेकिन एक अंतर्निहित तर्क है जिसे समझा जा सकता है। प्रमुख लक्ष्य निर्देशों की संख्या को यथासंभव छोटा बनाना नहीं है, यह एक उच्च प्रदर्शन करना हैपाइपलाइन एक चिप पर फिट होती है (ताकि 1980 के दशक में MIPS और Sun जैसी छोटी कंपनियाँ, IBM और DEC को टक्कर दे सकें)। (डेविड पैटरसन द्वारा आविष्कार किया गया RISC नाम कुछ दुर्भाग्यपूर्ण है। यह इसलिए पकड़ा गया क्योंकि यह प्यारा था, इसलिए नहीं कि "कम किए गए निर्देश" MIPS और SPARC आर्किटेक्चर वास्तव में क्या करने की कोशिश कर रहे थे) का सटीक वर्णन है।) निर्देश निश्चित चौड़ाई (और अपेक्षाकृत छोटे ताकि आप बेहतर आई-कैश व्यवहार प्राप्त करें) लाने के लिए, पेजिंग करें और सरल और तेज डिकोड करें। आप निर्देश के कुछ हिस्सों को जल्द से जल्द डिकोड करना चाहते हैंopcodeएक निश्चित चौड़ाई और एक निश्चित स्थिति में होने के लिए दो स्रोत रजिस्टर, और संकेत-विस्तारित तत्काल)। आप चाहते हैं कि जितनी जल्दी हो सके, और आप उतने अलग-अलग प्रकार के निर्देश चाहते हैं, जो उन सभी बाधाओं को देखते हुए फिट होंगे।


विशेष रूप से वास्तुकला डिजाइनरों के लक्ष्यों के बारे में आपकी जानकारीपूर्ण प्रतिक्रिया के लिए धन्यवाद। मुझे MOS 6502 से MIPS की तुलना करना दिलचस्प लगता है, क्योंकि अगर मैं इसे सही ढंग से समझता हूं तो 6502 में कभी भी shamt नहीं था (मैं अभी भी निर्देश प्रारूपों को समझने की कोशिश कर रहा हूं)।
क्यूर

1
6502 एक पहली पीढ़ी का माइक्रोप्रोसेसर डिज़ाइन (प्री-CISC) था, हालाँकि इसने पाइपलाइनिंग का अनुमान लगाया था, इसमें यह एक ही समय में राइटबैक रजिस्टर कर सकता था कि यह अगला निर्देश लोड कर रहा था। 6502 में अधिकांश 8-बिट माइक्रो की तरह बाइट ऑपकोड था। विचार करने के लिए एक अन्य वास्तुकला एआरएम है, जिसे उच्च-स्तरीय इलेक्ट्रॉनिक इंजीनियरों के एक झुंड द्वारा डिज़ाइन किया गया था जो बर्कले आरआईएससी पत्रों को पढ़ते थे और एमओएस कारखाने का दौरा करते थे और "हे, हम ऐसा कर सकते हैं" का फैसला किया।
छद्म नाम

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

5

एमआइपी I निर्देश प्रारूपों को समझने के लिए, आपको एमआइपी पाइपलाइन को समझने की जरूरत है और सीपीयू कार्यान्वयन प्रौद्योगिकी लगभग 1985 में वापस सोचना चाहिए। यदि आप आरेख को देखते हैं (आप एक को जानते हैं), तो आप देखेंगे कि रजिस्टर फाइल रीडिंग में है। आईडी चरण, आईएफ के ठीक बाद।

आर-टाइप निर्देश के उद्देश्य के लिए, आईडी चरण को निम्नलिखित कार्य करने की आवश्यकता है:

  1. निर्धारित करें कि यह वास्तव में एक आर-प्रकार का निर्देश है।
  2. यदि हां, तो रजिस्टर फाइल को रजिस्टर से मान लोड करने के लिए कहें।

इस चर्चा के उद्देश्य के लिए, यह पहला काम है जिसके बारे में आपको सोचना है। यदि बहुत सारे निर्देश डिकोडिंग कार्य हैं, जो आपको रजिस्टर से भी करने की आवश्यकता है, यदि आपको रजिस्टरों से किसी भी मान की आवश्यकता है, तो इससे पहले कि आप रजिस्टर रीडिंग शुरू कर सकें, देरी बढ़ जाती है। यह आईडी चरण की जटिलता को भी बढ़ाता है। सभी आर-प्रकार के निर्देशों के लिए एक एकल ओपकोड को जलाकर, आप जटिलता को न्यूनतम रखते हैं।

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

वे भविष्य में संयुक्त शिफ्ट-लेफ्ट-एंड-ऐड निर्देश शुरू करने के बारे में सोच रहे होंगे। यह निश्चित रूप से होगा:

$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 में, यह बहुत अधिक घड़ी चक्र है।

एड्रेस फील्ड से थोड़ी सी चोरी करने से डायरेक्ट जंप की प्रभावी रेंज और भी कम हो जाएगी। आप देख सकते हैं कि भुगतान करने के लिए यह बहुत अधिक कीमत कैसे हो सकती है।


एआरएम में बाद में देखे गए प्रकार के "संयुक्त पारी-बाएं-और-निर्देश"?
डेमियन यरिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.