निर्देश प्रारूप और एन्कोडिंग
निर्देश प्रारूप यह परिभाषित करते हैं कि प्रत्येक मशीन निर्देश बाइनरी में कैसे व्यवस्थित होता है — ऑपकोड, रजिस्टर फ़ील्ड और तात्कालिक मान — यह निर्धारित करते हुए कि प्रोग्राम कितनी सघनता से संग्रहीत होते हैं और हार्डवेयर उन्हें कितनी आसानी से डिकोड कर सकता है।
Definition
एक निर्देश प्रारूप एक मशीन निर्देश के भीतर बिट फ़ील्ड की परिभाषित व्यवस्था है जो इसके ऑपरेशन और ऑपरेंड को एन्कोड करता है, और निर्देश एन्कोडिंग वह योजना है जो निर्देशों को इन बाइनरी पैटर्न से मैप करती है।
Scope
यह विषय निर्देशों के बाइनरी प्रतिनिधित्व को शामिल करता है: निश्चित-लंबाई बनाम परिवर्तनीय-लंबाई एन्कोडिंग, वे फ़ील्ड जो ऑपरेशन, स्रोत और गंतव्य रजिस्टरों और तात्कालिक मानों को निर्दिष्ट करते हैं, और कोड घनत्व तथा डिकोड सरलता के बीच का व्यापार-बंद। इसमें RISC-V के R/I/S/B/U/J प्रकार जैसे प्रतिनिधि प्रारूप परिवार शामिल हैं। इसमें ऑपरेंड किस एड्रेसिंग मोड का उपयोग करते हैं (एड्रेसिंग मोड) और व्यापक RISC/CISC दर्शन (RISC और CISC) का चुनाव शामिल नहीं है।
Core questions
- एक ऑपरेशन और उसके ऑपरेंड को निर्दिष्ट करने के लिए एक निर्देश एन्कोडिंग में कौन से फ़ील्ड होने चाहिए?
- निश्चित-लंबाई और परिवर्तनीय-लंबाई एन्कोडिंग डिकोड सरलता बनाम कोड घनत्व का व्यापार-बंद कैसे करते हैं?
- सीमित निर्देश बिट्स के भीतर तात्कालिक मान और बड़े स्थिरांक को कैसे एन्कोड किया जाता है?
- एक नियमित एन्कोडिंग पाइपलाइन किए गए निर्देश डिकोडिंग को कैसे सरल बनाती है?
Key concepts
- ऑपकोड फ़ील्ड
- रजिस्टर स्पेसिफायर फ़ील्ड
- तात्कालिक फ़ील्ड
- निश्चित-लंबाई बनाम परिवर्तनीय-लंबाई एन्कोडिंग
- कोड घनत्व
- डिकोड नियमितता
- निर्देश प्रारूप परिवार (R/I/S/B/U/J)
Mechanisms
प्रत्येक निर्देश को बिट फ़ील्ड में विभाजित किया जाता है: एक ऑपकोड ऑपरेशन का चयन करता है, रजिस्टर फ़ील्ड ऑपरेंड का नाम देते हैं, और तात्कालिक फ़ील्ड स्थिरांक या पता ऑफसेट रखते हैं। निश्चित-लंबाई प्रारूप (जैसे RISC-V में) सभी निर्देशों को समान चौड़ाई में रखते हैं और फ़ील्ड को लगातार रखते हैं ताकि डिकोडिंग सरल और तेज़ हो; परिवर्तनीय-लंबाई प्रारूप (जैसे x86 में) अधिक जटिल डिकोडिंग की लागत पर घनत्व के लिए निर्देशों को कसकर पैक करते हैं।
Clinical relevance
एन्कोडिंग विकल्प एक प्रोसेसर के माध्यम से फैलते हैं: नियमित निश्चित-लंबाई प्रारूप सरल, तेज़ डिकोडर को सक्षम करते हैं जो गहरी पाइपलाइनिंग को व्यावहारिक बनाते हैं, जबकि सघन परिवर्तनीय-लंबाई प्रारूप निर्देश-मेमोरी ट्रैफ़िक को कम करते हैं। कंपाइलर और असेंबलर को इन प्रारूपों को सटीक रूप से लक्षित करना चाहिए, और निर्देश-सेट एक्सटेंशन को मौजूदा एन्कोडिंग स्थान के भीतर फिट होना चाहिए।
History
प्रारंभिक निर्देश सेटों ने दुर्लभ मेमोरी को बचाने के लिए अनियमित, हाथ से ट्यून किए गए एन्कोडिंग का उपयोग किया। 1980 के दशक के RISC आंदोलन ने डिकोडिंग और पाइपलाइनिंग को सुव्यवस्थित करने के लिए समान निश्चित-लंबाई प्रारूपों का समर्थन किया, जबकि x86 जैसे CISC सेटों ने सघन परिवर्तनीय-लंबाई एन्कोडिंग को बनाए रखा। RISC-V जैसे आधुनिक खुले ISA स्वच्छ, एक्स्टेंसिबल प्रारूप परिवारों को संहिताबद्ध करते हैं।
Key figures
- David A. Patterson
- John L. Hennessy
Related topics
Seminal works
- patterson2020
- hennessy2019
Frequently asked questions
- RISC निर्देश सेट निश्चित-लंबाई एन्कोडिंग का उपयोग क्यों करते हैं?
- निश्चित-लंबाई निर्देश प्रोसेसर को अगले निर्देश का पता लगाने और उसकी लंबाई को डिकोड किए बिना उसके फ़ील्ड निकालने की अनुमति देते हैं, जो फ़ेच और डिकोड चरणों को सरल और तेज़ बनाता है और परिवर्तनीय-लंबाई एन्कोडिंग की तुलना में गहरी पाइपलाइनिंग को कहीं अधिक आसान बनाता है।
- यदि निर्देश केवल निश्चित संख्या में बिट्स चौड़े हों तो बड़े स्थिरांकों को कैसे संभाला जाता है?
- तात्कालिक फ़ील्ड सीमित होते हैं, इसलिए बड़े स्थिरांकों को टुकड़ों में बनाया जाता है — उदाहरण के लिए, एक लोड-अपर-इमीडिएट निर्देश उच्च बिट्स सेट करता है और एक अनुवर्ती निर्देश निम्न बिट्स जोड़ता है — या स्थिरांक को मेमोरी में रखा जाता है और लोड किया जाता है।