एक माइक्रोप्रोसेसर के लिए अधिकतम संख्या में ऑपकोड


13

यहाँ छवि विवरण दर्ज करें

प्रश्न के लिए अधिक से अधिक ओपकोड की संख्या क्या है, इसका उत्तर c विकल्प है, लेकिन मुझे लगता है कि यह विकल्प d है, क्योंकि, प्रत्येक पता प्रत्येक मेमोरी लोकेशन को निर्दिष्ट करता है, 16 पता लाइनें हैं, जिसका अर्थ है 2 ^ 16 पते अर्थात, 2 ^ 16 मेमोरी लोकेशन।

इसलिए, यदि प्रत्येक स्थान में एक opcode होता है, तो कुल 2 ^ 16 स्थानों में 2 ^ 16 opcodes होते हैं और यह अधिकतम opcodes की संख्या होती है, लेकिन उत्तर c के रूप में दिया जाता है, जो 2 ^ 12 है। यह कैसे हो सकता है?


7
यह सवाल पूछ रहा है कि ISA में कितने अलग-अलग ऑपकोड हैं, न कि कितने निर्देश सबसे बड़े संभावित कार्यक्रम को बना सकते हैं।
ब्रायन ड्रमंड

5
@BrianDrummond - उस व्याख्या के साथ, हालांकि, सवाल केवल सार्थक है यदि आप आईएसए के काम करने के तरीके के बारे में धारणा बनाते हैं जो सार्वभौमिक नहीं हैं। उदाहरण के लिए, Z80 में 8 बिट डेटा बस है, लेकिन कहीं-कहीं 800 अलग-अलग वैध ऑपकोड के क्षेत्र में - क्योंकि यह उपलब्ध कार्यों को विस्तारित करने और भिन्न करने के लिए उपसर्ग बाइट्स का उपयोग करता है।
जूल्स

15
पुस्तक में पूछे गए प्रश्न का कोई मतलब नहीं है। बस आकार और ओपकोड आकार के बीच कोई अंतर्निहित प्रत्यक्ष पत्राचार नहीं है। JVM 32-बिट डेटा मॉडल पर आधारित है, लेकिन इसमें 8-बिट ऑपकोड है।
क्राइसिस -ऑन स्ट्राइक-

10
यह प्रश्न असंगत है जब तक कि हमारे पास प्रश्न में दी गई जानकारी से अधिक जानकारी न हो। हमें उत्तर पाने के लिए प्रक्रिया की विशेषताओं के बारे में बहुत सी धारणाएँ बनानी होंगी - जो वास्तविक दुनिया के अधिकांश लोगों के लिए सही नहीं हैं!
डेविड श्वार्ट्ज

14
सवाल बकवास है। यदि आवश्यक हो, तो एक निर्देश opcode कई स्मृति शब्दों को फैला सकता है। कोई अंतर्निहित सीमा नहीं है।
हॉट लिक्स

जवाबों:


31

सभी विकल्प गलत हैं । अधिकतम (अद्वितीय) ओपकोड एक प्रोसेसर निष्पादित कर सकता है जो बस चौड़ाई द्वारा सीमित नहीं है।


आम तौर पर एक 12+ बिट सीपीयू को प्रति डेटा शब्द में एक कमांड के लिए डिज़ाइन किया जाता है ताकि वह एक बार में अधिकांश निर्देशों को पढ़ सके। तो एक सामान्य सीपीयू को 2 ^ 12 ऑपकोड की सीमा तक इंजीनियर किया जा सकता है।

मौजूदा सीपीयू आर्किटेक्चर जिनके पास 2 ^ 12 = 4096 से अधिक opcodes हैं, वे बहुत ही दुर्लभ हैं क्योंकि एक को शायद ही कभी जरूरत होती है कि बहुत से - बहुत कुछ सीखने के लिए, बहुत अधिक वास्तव में उपयोगी होने के लिए, बहुत महंगा सिलिकॉन स्थान बर्बाद हो जाए।

अद्यतन : जैसा कि टिप्पणियों में बताया गया था, x86 इंस्ट्रक्शन सेट के सभी संभावित रूपांतर वास्तव में 6000 से अधिक जोड़ सकते हैं, जो आपके हिसाब से निर्भर करता है! हालांकि यह एक अपवाद अधिक है।

हालांकि 4-बिट सीपीयू के लिए 2 ^ 4 = 16 निर्देश बहुत बार पर्याप्त नहीं होते हैं, इसलिए ऐसे प्रोसेसर बहुत अधिक होते हैं।

एक सीपीयू में कई तरीके और कारण हो सकते हैं, जिसमें डेटा बस में फिट होने से अधिक ऑपकोड शामिल हो सकते हैं:

शब्द-फैले हुए निर्देश

एक प्रोसेसर को एक एकल डेटा चक्र में एक कमांड पढ़ने की आवश्यकता नहीं है - यह कई परिणामी चक्रों का उपयोग कर सकता है। वास्तव में अधिकांश सीपीयू नहीं - हालांकि इसका अधिक सामान्यतः निर्देश तर्कों के लिए उपयोग किया जाता है, बल्कि फिर opcode अंतरिक्ष का विस्तार करने के लिए।

उदाहरण: इंटेल 4004 में केवल 4 लाइनें हैं जो डेटा / एड्रेस लाइनों, 4-बिट डेटा शब्द के रूप में बहुसंकेतन हैं, लेकिन 8-बिट निर्देशों में 40 से अधिक ऑपकोड हैं।

उपसर्ग और प्रत्यय

A (CISC) प्रोसेसर में उतने ही अनुदेश उपसर्ग और प्रत्यय हो सकते हैं जितने की आवश्यकता होती है।

उन लोगों को एक वास्तविक निर्देश के लिए उपसर्ग दिया जाता है कि यह क्या करता है - या तो थोड़ा या पूरी तरह से।

यह "अद्वितीय ओपकोड" की आपकी परिभाषा पर निर्भर करता है। यदि कोई एक निर्देश के किसी भी भाग को मानता है जो डेटा को opcode का हिस्सा नहीं है, तो उनकी कुल संख्या में सभी संभावित बदलाव शामिल होंगे। हालाँकि, कुछ लोगों का मानना ​​है कि ये प्रत्यय निर्देश के अलग-अलग भाग हैं।

उदाहरण: Intel x86 CPU में वास्तव में 4M opcodes नहीं है। हालाँकि, यदि आप सभी उपसर्गों को एक ओपकोड के एक भाग के रूप में गिनते हैं, तो आधुनिक सीपीयू 15 बाइट्स के निर्देश के लिए अनुमति देता है - जो कि संभावित ओपोड्स का एक बहुत कुछ है। हालाँकि कई लोग बस यही काम करेंगे - इसलिए यह उनकी "अद्वितीय" होने की परिभाषा पर निर्भर करता है।

मोड

एक प्रोसेसर में ऑपरेशन के कई तरीके हो सकते हैं जिसमें यह एक पूरी तरह से अलग सेट ऑपकोड हो सकता है।

उदाहरण: इंटेल x86_64 में 32-बिट (वास्तविक / v86 / संरक्षित) और 64-बिट मोड हैं जिनके अलग-अलग ऑपकोड हैं। एआरएम सीपीयू में एआरएम 32-बिट और अंगूठे 16-बिट मोड हो सकते हैं।

बस बिट मल्टीप्लेक्सिंग

प्रश्न "डेटा लाइन" और "एड्रेस लाइन्स" बताता है, हालांकि आंतरिक डेटा बस और आंतरिक पता बस दोनों वास्तविक बस लाइनों की मात्रा से अधिक व्यापक हो सकती है।

मल्टीप्लेक्स बस डेटा को क्रमिक रूप से भेजा जाता है, अर्थात पहली छमाही, फिर दूसरी छमाही। सीपीयू इसे पूर्ण आकार के आंतरिक रजिस्टरों में संग्रहीत करता है और उन पर काम करता है।

यह अक्सर लागत और / या भौतिक पदचिह्न आकार को कम करने के लिए किया जाता है।

उदाहरणों में इंटेल 4004, एलपीसी डेटा बस पर कुछ भी शामिल है, और एनईसी वीआर 4300, निंटेंडो 64 के सीपीयू जिसमें केवल 32-लाइन डेटा बस थी।

कोई समानांतर बस नहीं

पिछले बिंदु की निरंतरता के रूप में, एक सीपीयू को एक समानांतर बस को उजागर करने की भी आवश्यकता नहीं है।

सीपीयू आसानी से केवल एक अनुक्रमिक बस को उजागर कर सकता है जैसे कि I2C, SPI इत्यादि।

इस तरह के एक समर्पित सीपीयू का उत्पादन करना शायद बहुत अधिक लागत प्रभावी नहीं है, लेकिन बहुत कम पिन-गणना वाले माइक्रोकंट्रोलर (जिसमें सीपीयू और मेमोरी दोनों शामिल हैं) को उस कीमती पिन को कुछ और उपयोगी बनाने के लिए बचाने के लिए बनाया गया है। उदाहरण के लिए, Atmel ATTINY4 / 5/6/10 चिप्स में केवल 6 पिन हैं, दो पावर के लिए, एक रीसेट के लिए, तीन सामान्य उद्देश्य के लिए। क्रमिक रूप से मालिकाना 3-लाइन इंटरफ़ेस के माध्यम से निर्देश भेजे जाते हैं।

एक माइक्रोकंट्रोलर की आपकी परिभाषा के आधार पर, इसे एक माइक्रोप्रोसेसर माना जा सकता है या इसे एक कार्य करने के लिए क्रमादेशित किया जा सकता है (यानी एक अनुक्रमिक बस या बसों के साथ एक समर्पित सीपीयू का अनुकरण करें)।

यह प्रश्न स्पष्ट रूप से बताता है कि किसी प्रकार की डेटा बस आईएस उजागर हुई है, लेकिन ऐसा नहीं है कि यह एक समानांतर बस है। सिद्धांत रूप में 12-लाइन डेटा बस में एक एकल सीरियल डेटा लाइन और 11 ऑक्ज़िलरी / ग्राउंड / स्टेटस लाइनें शामिल हो सकती हैं , हालांकि यह शायद बहुत ही विचार नहीं होगा।

समर्पित निर्देश बस

वास्तव में एक प्रोसेसर को उसी बस लाइनों पर निर्देशों को स्वीकार करने की आवश्यकता नहीं है क्योंकि यह डेटा करता है।

यह आसानी से मामला हो सकता है जब ALUs एक माइक्रोप्रोसेसर के एक हिस्से के बजाय असतत चिप्स थे लेकिन अब ज्यादातर समय आर्थिक रूप से व्यवहार्य नहीं है।

लेकिन कुछ भी नहीं बस निर्देश के लिए समर्पित लाइनों के साथ एक सीपीयू को लागू करने से रोकता है। ऐसा CPU तब उपयोगी हो सकता है जब किसी एकल ऑपरेशन डेटा (SIMD) पर किया जाना चाहिए।

चूंकि अनुदेश बस की चौड़ाई पूरी तरह से मनमाना है, इसलिए अधिकतम संभव ओपकोड गणना है।


4
रुचि के बिंदु के रूप में, x86-64 में 1000 और 6000 ओपकोड हैं, जो आप से पूछते हैं ( 1 , 2 , 3 ) पर निर्भर करता है ।
LMS

कभी भी उन्हें गिनने की कोशिश नहीं की, लेकिन सभी विविधताओं के साथ यह समझ में आता है।
जैक व्हाइट

13

ओपकोड की अधिकतम संख्या को वास्तव में कुछ तरीकों से सोचा जा सकता है:

  • अद्वितीय opcodes की अधिकतम संभव संख्या।

इसे इंस्ट्रक्शन चौड़ाई से इकट्ठा किया जा सकता है न कि डेटा बस की चौड़ाई से। आमतौर पर एक ओपकोड एक एकल मेमोरी एक्सेस में फिट होगा, और फिर उत्तर 2 ^ 12 है। लेकिन प्रोसेसर 2 ^ 12 से परे संभावित ऑपकोड की संख्या का विस्तार करने के लिए एक बहु-चक्र ओपोड डिकोडिंग प्रक्रिया को लागू कर सकता है।

  • अधिक से अधिक निर्देश (जिसमें opcodes शामिल हैं) जो प्रोसेसर सीधे पता कर सकते हैं।

अधिकतम निर्देश (ओपकोड युक्त) जो प्रोसेसर सीधे पता कर सकते हैं, पता बस की चौड़ाई (2 ^ 16) द्वारा सीमित है। अप्रत्यक्ष रूप से प्रोसेसर हालांकि अधिक मेमोरी को संबोधित करने में सक्षम हो सकता है जैसे कि एक ओपकोड पेज-स्वैप या इसी तरह के ऑपरेशन को अन्य स्रोत से निर्देश प्राप्त करने की सुविधा प्रदान कर सकता है।


2
सवाल यह नहीं है कि अस्पष्ट है। यदि इसे आपके दूसरे बिंदु के रूप में व्याख्या किया जाना था, तो इसे "अधिकतम निर्देशों की संख्या के रूप में तैयार किया जा सकता है जिन्हें संग्रहीत / संबोधित / किया जा सकता है"। शब्द "ओपकोड" यह स्पष्ट करता है कि यह निर्देश सेट के बारे में है, न कि एड्रेसेबल रेंज के बारे में।
मंद मे विश्वास खो दिया

11
बहु-शब्द ऑप-कोड का उल्लेख करना संभव है, इसलिए प्रश्न बहुत अच्छा नहीं है।
स्पेरो पेफेनी

2
देशी अंग्रेजी बोलने वालों के पास अक्सर एक पूर्वाग्रह होता है जो उनके लिए कठिन है कि वे केवल उन शब्दों के नंगे अर्थ को समझें जो वे उपयोग करते हैं। जब अंतर्राष्ट्रीय अंग्रेजी बोलने वाले इसे पढ़ते या सुनते हैं तो उन्हें दूसरा (अभीष्ट) अर्थ नहीं मिल सकता है। एक ही लागू होता है जब एक छात्र एक नई अभिव्यक्ति सीखता है - यदि योगों अस्पष्ट हैं तो गलतफहमी करना आसान है। इसलिए मुझे लगता है कि छात्र ने यह जान लिया है कि प्रत्येक निर्देश में उसके भीतर एक ओपकोड भाग होता है। हां, मैं कहूंगा कि यह सच है। वास्तव में, प्रश्न 01 का शब्दांकन अस्पष्ट है।
एचकेओबी

4
@ सेफ़रोफेनी याप, प्रश्न निस्संदेह बिना संदर्भ के अस्पष्ट है। यदि ओपी को यह सिखाया गया था कि जो भी निर्देश लंबाई है, तो पहले मेमोरी एक्सेस में ओपकोड प्राप्त किया जाएगा, फिर उत्तर (सी) है, अन्यथा, यह अकल्पनीय है। मुद्दा यह है कि क्या ओपी ने अपने EE.SE प्रश्न में पर्याप्त संदर्भ दिया था, या उसके शिक्षक ने कुछ दिया था और अस्पष्ट प्रश्न तैयार किया था?
लोरेंजो दोनाती - कोडिडैक्ट .२

1
@SpehroPefhany यह सच है :) लेकिन अंग्रेज़ी - शायद उनके हल्के झुंझलाहट - भी इंटरनेशनल इंग्लिश दुनिया (का हिस्सा हैं bbc.com/capital/story/... )
HKOB

4

आप इस प्रश्न से भ्रमित होने के लिए सही हैं - यह बहुत बुरी तरह से लिखा गया है।

हालांकि, मुझे संदेह है कि इस सवाल का इरादा मशीन के लिए अनुदेश शब्द का आकार निर्धारित करना है। प्रदान किए गए बहुत अधूरे डेटा को देखते हुए, यह डेटा बस की चौड़ाई के अनुरूप होना चाहिए ; एड्रेस बस की चौड़ाई मुख्य मेमोरी का अधिकतम आकार निर्धारित करती है।

व्यवहार में, किसी दिए गए मशीन के निर्देशों का "ओपकोड" क्षेत्र अक्सर निर्देश से काफी छोटा होता है, फिर भी निर्देश डेटा बस की तुलना में व्यापक हो सकता है।

पुराने मोटोरोला 68008 बिंदु में एक मामला है - यह 8-बिट डेटा बस के साथ 68000 का एक लागत-कम संस्करण था, लेकिन इसमें 16-बिट निर्देश शब्दों का उपयोग किया गया था, जिसमें आमतौर पर 7 बिट्स opcode निर्धारित करते हैं (शेष स्रोत और गंतव्य रजिस्टर की पहचान करें, और पता मोड, जिनमें से सभी को ऑपरेंड माना जाना चाहिए , न कि ओपोड )। यदि आप ओपकोड में एड्रेसिंग मोड बिट्स को शामिल करते हैं, जैसा कि कुछ करते हैं, जो कुल मिलाकर 10-बिट ओपकोड फ़ील्ड बनाता है। कुछ निर्देशों में वास्तविक निर्देश काफी हद तक लंबे हो सकते हैं।


"शेष स्रोत और गंतव्य रजिस्टरों की पहचान करते हैं, और एड्रेसिंग मोड, जिनमें से सभी को ऑपरेंड माना जाना चाहिए, न कि opcode" ... ठीक है, यह एक राय का विषय है। RISC आर्किटेक्चर के लिए, यह स्पष्ट रूप से सच है, लेकिन कई मामलों में CISC आर्किटेक्चर को इस तरह के तदर्थ तरीके से परिभाषित किया जाता है कि यह संभवतः प्रत्येक संयोजन को एक अलग ओपकोड के रूप में गिनने के लिए समझ में आता है। Z80 बिंदु में एक मामला है - जबकि इसके कई निर्देशों में एक या दो रजिस्टर चयन हैं जो ओपोड के बिट्स में एन्कोड किए गए हैं, एड्रेसिंग मोड पूरी तरह से तदर्थ हैं और उपसर्गों की व्याख्या में परिवर्तन करते हैं ...
जूल्स

... दोनों एड्रेसिंग मोड और कई मामलों में रजिस्टर करते हैं, जो कि बिटफिल्ड से रजिस्टरों की व्याख्या सीधे से थोड़ी कम है। अधिकांश दस्तावेज़ीकरण और कोडांतरक समझ पर काम करते हैं, इसलिए, निर्देश और रजिस्टर का प्रत्येक संयोजन एक अलग ओपकोड है, और केवल तात्कालिक मान और अप्रत्यक्ष पता ऑफ़सेट मान वास्तव में ऑपरेंड हैं। इस विश्व दृश्य को इसके पूर्ववर्ती, इंटेल 8080 द्वारा साझा किया गया है, जहां मानक विधानसभा भाषा प्रारूप में रजिस्टरों द्वारा संचालित एक निर्देश दिया गया था, जो कि तर्क के रूप में नहीं दिया गया है, जो कि महामारी के हिस्से के रूप में एन्कोडेड है।
जूल्स

सच है - Z80 इस तरह से 8-बिट माइक्रोकोड सीपीयू की खासियत है। 6502 में एक अधिक तार्किक ओपोड मैपिंग थी जिसने डिकोड सर्किटरी को अनुकूलित करने की अनुमति दी थी। लेकिन मैं विशेष रूप से 68K के बारे में बात कर रहा था, जिसके निर्देशों में बहुत अलग-अलग एड्रेसिंग-मोड और गंतव्य-रजिस्टर फ़ील्ड हैं। उन लोगों को घटाने के बाद, ओपकोड क्षेत्र अभी भी 68008 डेटा बस की तुलना में व्यापक हो सकता है।
क्रोमैटिक्स

1

Edson DeCastro ने लगभग ठीक उसी तरह का एक कंप्यूटर डिज़ाइन किया, जो PDP-8, 15 पता और 12 डेटा लाइनों के साथ है।

तो पोस्ट किए गए प्रश्न का उत्तर 574 ऑप-कोड है, क्योंकि पीडीपी -8 में 284 ऑप-कोड थे, और एड केवल आधा पागल है।


2
यह सुनिश्चित नहीं है कि गिरावट क्यों है - यह किसी भी उत्तर के रूप में अच्छा है, यह देखते हुए कि प्रश्न अनिवार्य रूप से अर्थहीन है। :)
जूल्स

मुझे संदेह है क्योंकि नीचे 284 * 2 = 568, 574 नहीं है।
मार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.