प्रोसेसर और उसके भाग
- ALU (अंकगणितीय तार्किक इकाई): जोड़-घटाव, तार्किक क्रियाएँ (AND, OR, NOT, XOR), शिफ़्ट और तुलना।
- नियंत्रण इकाई (CU): निर्देश डिकोड करती है और बाकी भागों को नियंत्रण संकेत भेजती है।
- घड़ी (clock): नियमित पल्स भेजती है; हर कदम एक टिक पर। गति हर्ट्ज़ में (3 GHz = एक सेकंड में 3 अरब टिक)।
- रजिस्टर: CPU के अंदर बहुत छोटे और बहुत तेज़ भंडार।
- PC (प्रोग्राम काउंटर): अगले निर्देश का पता।
- MAR (मेमोरी एड्रेस रजिस्टर): पढ़ने या लिखने का पता।
- MDR (मेमोरी डेटा रजिस्टर, या MBR): अभी पढ़ा या लिखा जाने वाला डेटा।
- CIR (करंट इंस्ट्रक्शन रजिस्टर): जिस निर्देश को डिकोड-एक्ज़िक्यूट किया जा रहा है।
- ACC (संचायक) या सामान्य रजिस्टर: काम के मान और परिणाम।
- स्टेटस रजिस्टर: शून्य, ऋणात्मक, कैरी, ओवरफ़्लो, इंटरप्ट-सक्षम जैसे फ़्लैग।
- बसें: पता बस (एक-तरफ़ा, CPU → मेमोरी), डेटा बस (दो-तरफ़ा), नियंत्रण बस (read, write, clock, इंटरप्ट अनुरोध जैसे संकेत)।
फ़ेच–डिकोड–एक्ज़िक्यूट चक्र
रजिस्टर ट्रांसफ़र नोटेशन में ([ ] = 'की सामग्री'):
- MAR ← [PC]: अगले निर्देश का पता MAR में।
- PC ← [PC] + 1: PC अब उसके बाद वाले निर्देश को दिखाता है।
- MDR ← [मेमोरी]पते पर: निर्देश डेटा बस से MDR में।
- CIR ← [MDR]: निर्देश CIR में।
- डिकोड: CU उसे opcode (क्या करना) और operand (किस पर करना) में बाँटती है।
- एक्ज़िक्यूट: जैसे ACC में मान लोड करना, ALU से गणना, परिणाम सेव करना, या ब्रांच के लिए PC बदलना।
- इंटरप्ट जाँचो, फिर दोहराओ।
निर्देश समुच्चय और पता-विधान
निर्देश समुच्चय (instruction set) किसी प्रोसेसर द्वारा चलाए जा सकने वाले सभी मशीनी निर्देशों की सूची है; हर प्रोसेसर परिवार का अपना होता है। मशीन कोड निर्देश में opcode (मूल क्रिया और पता-विधान) और एक या ज़्यादा operand होते हैं।
- तात्कालिक (immediate): ऑपरेंड ख़ुद मान है। ADD #3 मतलब 3 जोड़ो।
- प्रत्यक्ष (direct): ऑपरेंड मेमोरी पता है। ADD 10 मतलब पता 10 पर रखा मान जोड़ो।
उदाहरण: पता 10 पर 7 हो, तो ADD #10 10 जोड़ता है, पर ADD 10 7 जोड़ता है।
असेंबली भाषा की क्रियाएँ
असेंबली भाषा छोटे स्मरक (mnemonics) इस्तेमाल करती है, जो मशीन कोड से एक-एक मिलते हैं। आम क्रियाएँ:
- LDR Rd, <मेमोरी> लोड; STR Rd, <मेमोरी> सेव; MOV Rd, #n मान कॉपी।
- ADD / SUB Rd, Rn, <ऑपरेंड> गणना।
- CMP Rn, <ऑपरेंड> तुलना (फ़्लैग सेट); B हमेशा ब्रांच; BEQ / BNE / BGT / BLT बराबर, बराबर नहीं, बड़ा, छोटा होने पर ब्रांच।
- AND, ORR, EOR, MVN तार्किक; LSL, LSR शिफ़्ट (2 से गुणा या भाग); HALT।
चयन और लूप CMP और शर्ती ब्रांच से लेबल पर कूदकर लिखे जाते हैं।
प्रोसेसर के प्रदर्शन को प्रभावित करने वाले कारक
- कोर की संख्या: ज़्यादा कोर एक साथ ज़्यादा निर्देश चला सकते हैं, पर तभी जब काम समानांतर हिस्सों में बँट सके।
- कैश मेमोरी: चिप पर छोटी तेज़ मेमोरी, जिसमें हाल का या बार-बार लगने वाला डेटा; बड़ा कैश = RAM तक कम धीमे चक्कर।
- घड़ी की गति: प्रति सेकंड ज़्यादा चक्र = ज़्यादा निर्देश (पर ज़्यादा गर्मी)।
- शब्द लंबाई (word length): एक बार में संसाधित बिट; लंबा शब्द बड़ी संख्याएँ एक बार में।
- पता बस की चौड़ाई: n लाइनें 2ⁿ स्थान पता कर सकती हैं।
- डेटा बस की चौड़ाई: ज़्यादा लाइनें, हर बार ज़्यादा बिट।
इंटरप्ट और अस्थिर वातावरण सहेजना
इंटरप्ट प्रोसेसर को संकेत है कि किसी चीज़ पर ध्यान चाहिए: की दबाना, टाइमर, प्रिंटर में काग़ज़ ख़त्म, हार्डवेयर ख़राबी या सॉफ़्टवेयर त्रुटि।
- प्रोसेसर चालू फ़ेच-एक्ज़िक्यूट चक्र पूरा करता है, फिर इंटरप्ट जाँचता है।
- अगर कोई इंटरप्ट प्रतीक्षा में है और उसकी प्राथमिकता चालू काम से ऊँची है, तो अस्थिर वातावरण (PC, रजिस्टर, स्टेटस फ़्लैग) स्टैक पर push होता है।
- PC में सही इंटरप्ट सर्विस रूटीन (ISR) का पता डाला जाता है, अक्सर इंटरप्ट वेक्टर तालिका से।
- ISR चलता है (ऊँची प्राथमिकता वाला इंटरप्ट इसे भी रोक सकता है)।
- सहेजे मान स्टैक से pop होकर वापस आते हैं और प्रोग्राम ठीक वहीं से आगे चलता है।
मुख्य सूत्र और परिभाषाएँ
- MAR ← [PC]
- PC ← [PC] + 1; MDR ← [मेमोरी]पते पर
- CIR ← [MDR]
- पता किए जा सकने वाले स्थान = 2^(पता बस की चौड़ाई)
- प्रति सेकंड निर्देश ≈ घड़ी गति × प्रति चक्र निर्देश × कोर (आदर्श)
- तात्कालिक: ADD #n में n। प्रत्यक्ष: ADD n में मेमोरी[n]।
हल किए गए उदाहरण
1. फ़ेच चरण में हर रजिस्टर में क्या होता है, बताइए।
PC में अगले निर्देश का पता है; वह MAR में कॉपी होता है। उस पते का निर्देश डेटा बस से MDR में आता है और PC बढ़ता है। फिर निर्देश MDR से CIR में जाता है, डिकोड के लिए तैयार।
2. पता 20 पर 5 है और ACC में 2। (a) ADD #20 (b) ADD 20 के बाद ACC?
(a) तात्कालिक: 2 + 20 = 22। (b) प्रत्यक्ष: 2 + मेमोरी[20] = 2 + 5 = 7।
3. 24-बिट पता बस कितने मेमोरी स्थान पता कर सकती है?
2²⁴ = 1,67,77,216 स्थान (16 Mi)।
4. ट्रेस कीजिए: MOV R0, #4 / ADD R0, R0, #6 / CMP R0, #10 / BEQ done / MOV R0, #0 / done: HALT।
R0 = 4, फिर 10। CMP से ज़ीरो फ़्लैग सेट (R0 = 10)। BEQ done पर कूदता है, MOV R0, #0 छूट जाता है। अंत में R0 = 10।
5. इंटरप्ट पर अस्थिर वातावरण क्यों सहेजना ज़रूरी है?
ISR वही रजिस्टर इस्तेमाल करेगा और PC बदलेगा। PC, रजिस्टर और फ़्लैग सहेजे बिना मूल प्रोग्राम सही जगह से सही मानों के साथ नहीं लौट पाएगा।
6. कोर दोगुने करने से प्रोग्राम दोगुना तेज़ क्यों नहीं होता?
सिर्फ़ समानांतर चल सकने वाले हिस्सों को फ़ायदा होता है; बाकी एक कोर पर चलता है। कोर कैश और मेमोरी बैंडविड्थ भी बाँटते हैं और तालमेल में समय लगता है।
आम गलतियाँ
- यह कहना कि MAR डेटा रखता है। MAR पता रखता है; MDR डेटा।
- भूल जाना कि PC फ़ेच के दौरान ही, निर्देश चलने से पहले, बढ़ जाता है।
- तात्कालिक और प्रत्यक्ष में उलझना: # मतलब वही संख्या।
- यह कहना कि इंटरप्ट निर्देश को बीच में रोक देता है। यह चक्र के अंत में जाँचा जाता है।