बहुत सारे मामलों में, चुनाव बहुत मनमाना होता है या "जहाँ भी यह सबसे अच्छा होता है" पर आधारित होता है क्योंकि ISAs समय के साथ बढ़ते हैं। हालांकि, एमओएस 6502 एक चिप का एक अद्भुत उदाहरण है जहां आईएसए डिजाइन सीमित ट्रांजिस्टर से जितना संभव हो उतना निचोड़ने की कोशिश से प्रभावित था।
की जाँच करें इस वीडियो को बताया गया हो कि 6502 रिवर्स इंजीनियर किया गया था , विशेष रूप से 34:20 बजे के बाद।
6502 1975 में शुरू किया गया 8-बिट माइक्रोप्रोसेसर है। हालांकि, Z80 की तुलना में इसमें 60% कम द्वार थे, यह दो बार तेजी से था, और हालांकि यह अधिक (बाधाओं आदि के संदर्भ में) विवश था, लेकिन इसके साथ इसे बनाया गया था। सुरुचिपूर्ण निर्देश सेट।
इसमें केवल 3510 ट्रांजिस्टर शामिल हैं, जिन्हें हाथ से खींचा गया था, लोगों की एक छोटी टीम ने कुछ बड़ी प्लास्टिक शीटों पर रेंगते हुए जो बाद में वैकल्पिक रूप से सिकुड़ गए थे, 6502 की विभिन्न परतों का निर्माण किया।
जैसा कि आप नीचे देख सकते हैं, 6502 डिकोड रोम में इंस्ट्रक्शन ओपकोड और टाइमिंग डेटा को पास करता है, फिर इसे एक "रैंडम कंट्रोल लॉजिक" कंपोनेंट में पास करता है, जिसका उद्देश्य संभवतः कुछ जटिल परिस्थितियों में रॉम के आउटपुट को खत्म करना है।
वीडियो में 37:00 पर आप डीकोड रॉम की एक तालिका देख सकते हैं, जो बताती है कि दिए गए नियंत्रण आउटपुट के लिए इनपुट को "1" प्राप्त करने के लिए किन शर्तों को पूरा करना चाहिए। आप इसे इस पृष्ठ पर भी पा सकते हैं ।
आप देख सकते हैं कि इस तालिका की अधिकांश चीजों में विभिन्न स्थितियों में Xs हैं। उदाहरण के लिए लेते हैं
011XXXXX 2 X RORRORA
इसका मतलब यह है कि ओपकोड के पहले 3 बिट्स 011 होना चाहिए, और जी 2 होना चाहिए; और कुछ मायने नहीं रखता है। यदि हां, तो RORRORA नाम का आउटपुट सही होगा। सभी आरओआर ऑपकोड 011 से शुरू होते हैं; लेकिन अन्य निर्देश भी हैं जो 011 से भी शुरू होते हैं। इन्हें शायद "यादृच्छिक नियंत्रण तर्क" इकाई द्वारा फ़िल्टर किया जाना चाहिए।
तो मूल रूप से, ऑपकोड को चुना गया था ताकि निर्देश जो एक ही काम करने की आवश्यकता थी क्योंकि उनके बिट पैटर्न में एक दूसरे के साथ कुछ समान था। आप इसे एक opcode तालिका देखकर देख सकते हैं ; सभी OR निर्देश 000 से शुरू होते हैं, सभी स्टोर निर्देश 010 से शुरू होते हैं, सभी निर्देश जो शून्य-पृष्ठ पते का उपयोग करते हैं, वे xxxx01xx फॉर्म के हैं। बेशक, कुछ निर्देश "फिट" नहीं लगते हैं, क्योंकि उद्देश्य पूरी तरह से नियमित रूप से ओपकोड प्रारूप के लिए नहीं है, बल्कि एक शक्तिशाली उपकरण सेट प्रदान करना है। और यही कारण है कि "यादृच्छिक नियंत्रण तर्क" आवश्यक था।
ऊपर मैंने जिस पृष्ठ का उल्लेख किया है, वह कहता है कि ROM में कुछ आउटपुट लाइनें दो बार दिखाई देती हैं, "हम मानते हैं कि ऐसा किया गया है क्योंकि उनके पास जहां वे चाहते थे, वहां कुछ लाइन के आउटपुट को रूट करने का कोई तरीका नहीं था, इसलिए उन्होंने उसी लाइन को एक अलग स्थान पर रखा। फिर से स्थान। " मैं बस इंजीनियरों को उन गेट्स को एक-एक करके हाथ से खींचने की कल्पना कर सकता हूं और अचानक डिजाइन में एक दोष का एहसास कर सकता हूं और पूरी प्रक्रिया को फिर से शुरू करने से बचने के लिए एक तरह से आने की कोशिश कर रहा हूं।