CPU, जिसे माइक्रोप्रोसेसर के रूप में भी जाना जाता है, कंप्यूटर का दिल और/या दिमाग है। आइए कंप्यूटर के कोर में गहराई से गोता लगाएं ताकि हमें कंप्यूटर प्रोग्राम कुशलतापूर्वक लिखने में मदद मिल सके।
"एक उपकरण आमतौर पर एक मशीन से अधिक सरल होता है; यह आमतौर पर हाथ से उपयोग किया जाता है, जबकि एक मशीन अक्सर जानवर या भाप की शक्ति से चलती है।"
– चार्ल्स बैबेज
एक कंप्यूटर एक मशीन है जो ज्यादातर बिजली से चलती है लेकिन इसकी लचीलापन और प्रोग्रामेबिलिटी ने इसे एक उपकरण की सादगी हासिल करने में मदद की है।
CPU एक कंप्यूटर का दिल और/या दिमाग है। यह उसे दिए गए निर्देशों को निष्पादित करता है। इसका मुख्य काम अंकगणित और तार्किक संचालन करना और निर्देशों को एक साथ व्यवस्थित करना है। मुख्य भागों में गोता लगाने से पहले आइए देखें कि CPU के मुख्य घटक क्या हैं और उनकी भूमिकाएं क्या हैं:
प्रोसेसर के दो मुख्य घटक
- कंट्रोल यूनिट — CU
- अंकगणित और तार्किक इकाई — ALU
कंट्रोल यूनिट — CU
कंट्रोल यूनिट CU CPU का वह हिस्सा है जो निर्देशों के निष्पादन को व्यवस्थित करने में मदद करता है। यह बताता है कि क्या करना है। निर्देश के अनुसार, यह CPU को कंप्यूटर के अन्य विभिन्न भागों से जोड़ने वाले तारों को सक्रिय करने में मदद करता है जिसमें ALU शामिल है। कंट्रोल यूनिट प्रसंस्करण के लिए निर्देश प्राप्त करने वाला CPU का पहला घटक है।
कंट्रोल यूनिट के दो प्रकार हैं:
- हार्डवायर्ड कंट्रोल यूनिट्स।
- माइक्रोप्रोग्रामेबल (माइक्रोप्रोग्राम्ड) कंट्रोल यूनिट्स।
हार्डवायर्ड कंट्रोल यूनिट हार्डवेयर हैं और उनके काम को जोड़ने/संशोधित करने के लिए हार्डवेयर में बदलाव की आवश्यकता होती है जबकि माइक्रोप्रोग्रामेबल कंट्रोल यूनिट को उनके व्यवहार को बदलने के लिए प्रोग्राम किया जा सकता है। हार्डवायर्ड CU निर्देशों को प्रोसेस करने में तेज़ होते हैं जबकि माइक्रोप्रोग्रामेबल अधिक लचीले होते हैं।
अंकगणित और तार्किक इकाई — ALU
अंकगणित और तार्किक इकाई ALU जैसा कि नाम से पता चलता है सभी अंकगणित और तार्किक गणनाएं करती है। ALU जोड़, घटाव जैसे संचालन करता है। ALU में लॉजिक सर्किटरी या लॉजिक गेट होते हैं जो इन संचालन को करते हैं।
अधिकांश लॉजिक गेट दो इनपुट लेते हैं और एक आउटपुट उत्पन्न करते हैं
नीचे हाफ एडर सर्किट का एक उदाहरण है जो दो इनपुट लेता है और परिणाम आउटपुट करता है। यहां A और B इनपुट हैं, S आउटपुट है और C कैरी है।
स्टोरेज — रजिस्टर और मेमोरी
CPU का मुख्य काम उसे दिए गए निर्देशों को निष्पादित करना है। इन निर्देशों को प्रोसेस करने के लिए अधिकांश समय, इसे डेटा की आवश्यकता होती है। कुछ डेटा इंटरमीडिएट डेटा होते हैं, कुछ इनपुट होते हैं और अन्य आउटपुट होते हैं। ये डेटा निर्देशों के साथ निम्नलिखित स्टोरेज में संग्रहीत होते हैं:
रजिस्टर
रजिस्टर एक छोटा सेट होता है जहां डेटा संग्रहीत किया जा सकता है। एक रजिस्टर लैचेस का संयोजन है। लैचेस जिन्हें फ्लिप-फ्लॉप्स भी कहा जाता है, लॉजिक गेट्स के संयोजन हैं जो 1 बिट जानकारी संग्रहीत करते हैं।
एक लैच में दो इनपुट वायर होते हैं, राइट और इनपुट वायर और एक आउटपुट वायर। हम राइट वायर को सक्षम करके स्टोर किए गए डेटा में बदलाव कर सकते हैं। जब राइट वायर अक्षम होता है तो आउटपुट हमेशा वही रहता है।
CPU में आउटपुट के डेटा को स्टोर करने के लिए रजिस्टर होते हैं। मेन मेमोरी (RAM) पर भेजना धीमा होगा क्योंकि यह इंटरमीडिएट डेटा है। यह डेटा अन्य रजिस्टर को भेजा जाता है जो BUS से जुड़ा होता है। एक रजिस्टर निर्देश, आउटपुट डेटा, स्टोरेज एड्रेस या किसी भी प्रकार का डेटा स्टोर कर सकता है।
मेमोरी (RAM)
रैम एक अनुकूलित तरीके से व्यवस्थित और कॉम्पैक्ट एक साथ रजिस्टर का संग्रह है ताकि यह अधिक मात्रा में डेटा स्टोर कर सके। RAM (रैंडम एक्सेस मेमोरी) वोलेटाइल हैं और जब हम पावर बंद करते हैं तो इसका डेटा खो जाता है। चूंकि RAM रजिस्टर का संग्रह है, डेटा को पढ़ने/लिखने के लिए RAM 8-बिट एड्रेस इनपुट लेता है, स्टोर किए जाने वाले वास्तविक डेटा के लिए डेटा इनपुट और अंत में रीड और राइट एनेबलर जो लैचेस के लिए वैसे ही काम करता है।
निर्देश क्या हैं
निर्देश वह बारीक स्तर की गणना है जो एक कंप्यूटर कर सकता है। विभिन्न प्रकार के निर्देश हैं जो एक CPU प्रोसेस कर सकता है।
निर्देशों में शामिल हैं:
- अंकगणित जैसे add और subtract
- तर्क निर्देश जैसे and, or, और not
- डेटा निर्देश जैसे move, input, output, load, और store
- कंट्रोल फ्लो निर्देश जैसे goto, if … goto, call, और return
- CPU को सूचित करें कि प्रोग्राम समाप्त हो गया है Halt
निर्देश कंप्यूटर को असेंबली भाषा का उपयोग करके प्रदान किए जाते हैं या कंपाइलर द्वारा उत्पन्न किए जाते हैं या कुछ उच्च-स्तरीय भाषाओं में व्याख्या किए जाते हैं।
ये निर्देश CPU के अंदर हार्डवायर्ड हैं। ALU में अंकगणित और तार्किक होते हैं जबकि कंट्रोल फ्लो CU द्वारा प्रबंधित किए जाते हैं।
एक क्लॉक साइकिल में कंप्यूटर एक निर्देश कर सकते हैं लेकिन आधुनिक कंप्यूटर एक से अधिक कर सकते हैं।
निर्देशों का एक समूह जो एक कंप्यूटर कर सकता है उसे निर्देश सेट कहा जाता है।
CPU क्लॉक
क्लॉक साइकिल
कंप्यूटर की गति इसके क्लॉक साइकिल द्वारा निर्धारित की जाती है। यह प्रति सेकंड क्लॉक पीरियड्स की संख्या है जिस पर कंप्यूटर काम करता है। एक सिंगल क्लॉक साइकिल बहुत छोटी होती है जैसे लगभग 250 * 10 *-12 सेकंड। क्लॉक साइकिल जितनी तेज़ होगी, प्रोसेसर उतना ही तेज़ होगा।
CPU क्लॉक साइकिल को gHz (गीगाहर्ट्ज) में मापा जाता है। 1gHz 10 ⁹ Hz (हर्ट्ज) के बराबर है। एक हर्ट्ज का अर्थ है एक सेकंड। तो 1 गीगाहर्ट्ज का अर्थ है 10 ⁹ साइकिल प्रति सेकंड।
क्लॉक साइकिल जितनी तेज़ होगी, CPU उतने अधिक निर्देश निष्पादित कर सकता है।क्लॉक साइकिल = 1/क्लॉक रेटCPU समय = क्लॉक साइकिल की संख्या / क्लॉक रेट
इसका अर्थ है कि CPU समय को बेहतर बनाने के लिए हम या तो क्लॉक रेट बढ़ा सकते हैं या CPU को प्रदान किए गए निर्देशों को अनुकूलित करके क्लॉक साइकिल की संख्या कम कर सकते हैं। कुछ प्रोसेसर क्लॉक साइकिल बढ़ाने की क्षमता प्रदान करते हैं लेकिन चूंकि यह भौतिक परिवर्तन हैं इसलिए ओवरहीटिंग और यहां तक कि धुआं/आग लग सकती है।
एक निर्देश कैसे निष्पादित होता है
निर्देश RAM पर क्रमिक क्रम में संग्रहीत होते हैं। एक काल्पनिक CPU के लिए निर्देश में OP कोड (ऑपरेशनल कोड) और मेमोरी या रजिस्टर एड्रेस होता है।
कंट्रोल यूनिट के अंदर दो रजिस्टर होते हैं इंस्ट्रक्शन रजिस्टर (IR) जो निर्देश का OP कोड लोड करता है और इंस्ट्रक्शन एड्रेस रजिस्टर जो वर्तमान में निष्पादित हो रहे निर्देश का एड्रेस लोड करता है। CPU के अंदर अन्य रजिस्टर होते हैं जो निर्देश के अंतिम 4 बिट्स के एड्रेस में संग्रहीत मूल्य को स्टोर करते हैं।
आइए दो संख्याओं को जोड़ने वाले निर्देशों के एक सेट का उदाहरण लें। निम्नलिखित उनके विवरण के साथ निर्देश हैं:
चरण 1 — LOAD_A 8:
निर्देश प्रारंभ में RAM में मान लीजिए <1100 1000> के रूप में सहेजा जाता है। पहले 4 बिट OP कोड हैं। यह निर्देश निर्धारित करता है। यह निर्देश फेच किया जाता है IR कंट्रोल यूनिट के। निर्देश को डिकोड किया जाता है ताकि यह load_A हो जिसका अर्थ है कि इसे निर्देश के अंतिम 4 बिट जो 1000 है उस एड्रेस में डेटा को रजिस्टर A में लोड करना होगा।
चरण 2 — LOAD_B 2
उपरोक्त के समान यह मेमोरी एड्रेस 2 (0010) में डेटा को CPU रजिस्टर B में लोड करता है।
चरण 3 — ADD B A
अब अगला निर्देश इन दो संख्याओं को जोड़ना है। यहां CU ALU को जोड़ संचालन करने और परिणाम को वापस रजिस्टर A में सहेजने के लिए कहता है।
चरण 4 — STORE_A 23
यह दो संख्याओं को जोड़ने में मदद करने वाला निर्देशों का एक बहुत ही सरल सेट है।
हमने सफलतापूर्वक दो संख्याओं को जोड़ लिया है!
BUS
CPU, रजिस्टर, मेमोरी और IO डिवाइस के बीच सभी डेटा बस के माध्यम से स्थानांतरित होते हैं। बस उस डेटा को मेमोरी में लोड करने के लिए जिसे अभी जोड़ा गया है, CPU मेमोरी एड्रेस को एड्रेस बस पर रखता है और योग के परिणाम को डेटा बस पर रखता है और कंट्रोल बस में सही सिग्नल को सक्षम करता है। इस तरह बस की मदद से डेटा मेमोरी में लोड होता है।
कैश
CPU के पास अपने कैश में निर्देशों को प्रीफेच करने का तंत्र भी होता है। जैसा कि हम जानते हैं कि एक प्रोसेसर एक सेकंड के भीतर लाखों निर्देश पूरा कर सकता है। इसका मतलब है कि RAM से निर्देश लाने में निष्पादित करने से अधिक समय खर्च होगा। इसलिए CPU कैश कुछ निर्देशों और डेटा को प्रीफेच करता है ताकि निष्पादन तेज़ हो सके।
यदि कैश और ऑपरेटिंग मेमोरी में डेटा अलग है तो डेटा को डर्टी बिट के रूप में चिह्नित किया जाता है।
निर्देश पाइपलाइनिंग
आधुनिक CPU समानांतरता में निर्देश निष्पादन के लिए निर्देश पाइपलाइनिंग का उपयोग करते हैं । फेच, डिकोड, एक्जीक्यूट। जब एक निर्देश डिकोड चरण में होता है तो CPU दूसरे निर्देश को फेच चरण के लिए प्रोसेस कर सकता है।
इसकी एक समस्या है जब एक निर्देश दूसरे पर निर्भर होता है। इसलिए प्रोसेसर उन निर्देशों को निष्पादित करते हैं जो निर्भर नहीं हैं और अलग क्रम में हैं।
मल्टी-कोर कंप्यूटर
यह मूल रूप से अलग CPU है लेकिन इसमें कुछ साझा संसाधन हैं जैसे कैश।
प्रदर्शन
CPU का प्रदर्शन इसके निष्पादन समय द्वारा निर्धारित होता है।प्रदर्शन = 1/निष्पादन समय
मान लीजिए एक प्रोग्राम को निष्पादित होने में 20ms लगते हैं। CPU का प्रदर्शन 1/20 = 0.05msसापेक्ष प्रदर्शन = निष्पादन समय 1/ निष्पादन समय 2
CPU प्रदर्शन के लिए विचार किए जाने वाले कारक निर्देश निष्पादन समय और CPU क्लॉक स्पीड हैं। इसलिए किसी प्रोग्राम के प्रदर्शन को बढ़ाने के लिए हमें या तो क्लॉक स्पीड बढ़ाने की आवश्यकता है या प्रोग्राम में निर्देशों की संख्या कम करने की। प्रोसेसर स्पीड सीमित है और मल्टी-कोर वाले आधुनिक कंप्यूटर प्रति सेकंड लाखों निर्देशों का समर्थन कर सकते हैं। लेकिन अगर हमारे द्वारा लिखा गया प्रोग्राम में बहुत सारे निर्देश हैं तो यह समग्र प्रदर्शन को कम कर देगा।
बिग O नोटेशन दिए गए इनपुट के साथ प्रदर्शन कैसे प्रभावित होगा यह निर्धारित करता है।
CPU को तेज़ बनाने और जितना संभव हो उतना प्रदर्शन करने के लिए बहुत सारे ऑप्टिमाइज़ेशन किए गए हैं। कोई भी प्रोग्राम लिखते समय हमें यह विचार करने की आवश्यकता है कि CPU को प्रदान किए जाने वाले निर्देशों की संख्या को कम करने से कंप्यूटर प्रोग्राम का प्रदर्शन कैसे बढ़ेगा।
मिलाप नेपाने ब्लॉग पर भी पोस्ट किया गया: CPU कैसे काम करता है