Skip to main content

एचटीजी बताता है: एक सीपीयू वास्तव में कैसे काम करता है?

एचटीजी बताता है: एक सीपीयू वास्तव में कैसे काम करता है?

Geoffrey Carr

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

इस लेख के लिए अधिकांश शोध जे क्लार्क स्कॉट द्वारा "लेकिन यह कैसे पता है?" से आता है। यह एक शानदार पठन है, इस आलेख की तुलना में अधिक गहराई में जाता है, और अमेज़ॅन पर कुछ रुपये के बराबर है।

शुरू करने से पहले एक नोट: आधुनिक सीपीयू हम जो रेखांकित कर रहे हैं उससे अधिक जटिल परिमाण के आदेश हैं। एक व्यक्ति के लिए एक अरब ट्रांजिस्टर के साथ एक चिप के हर बारीकियों को समझना लगभग असंभव है। हालांकि, बुनियादी सिद्धांतों के साथ यह सब एक साथ कैसे फिट बैठता है, और बुनियादी बातों को समझने से आपको आधुनिक प्रणालियों की बेहतर समझ मिल जाएगी।

छोटा शुरू करना

कंप्यूटर बाइनरी में काम करते हैं। वे केवल दो राज्यों को समझते हैं: चालू और बंद। बाइनरी में गणना करने के लिए, वे ट्रांजिस्टर कहलाते हैं। ट्रांजिस्टर केवल गेट में मौजूद होने पर स्रोत प्रवाह को नाली में बहने की अनुमति देता है। अनिवार्य रूप से, यह एक बाइनरी स्विच बनाता है, जो दूसरे इनपुट सिग्नल के आधार पर तार को काटता है।

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

तर्क द्वार

कुछ ट्रांजिस्टर को ठीक से ढेर करें, और आपके पास लॉजिक गेट के रूप में जाना जाता है। तर्क द्वार दो बाइनरी इनपुट लेते हैं, उन पर एक ऑपरेशन करते हैं, और आउटपुट लौटाते हैं। તે તે कर आ તે कर તે कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर और गेट जांच करता है कि क्या दोनों इनपुट सत्य हैं, एक्सओआर जांचता है कि इनपुट में से केवल एक सत्य है, और एन-वेरिएंट (एनओआर, एनएएनडी, और एक्सएनओआर) उनके बेस गेट्स के उलटा संस्करण हैं।

गेट्स के साथ गणित करना

केवल दो द्वार के साथ आप मूल बाइनरी जोड़ सकते हैं। उपरोक्त यह चित्र लॉजिक गेट्स के लिए एक मुफ्त ऑनलाइन खेल का मैदान, लॉजिकली का उपयोग करके बनाया गया आधा योजक दिखाता है। यहां पर एक्सओआर गेट चालू हो जाएगा यदि इनपुट में से केवल एक चालू है, लेकिन दोनों नहीं। यदि दोनों इनपुट चालू हैं, तो और द्वार चालू हो जाएगा, लेकिन अगर कोई इनपुट नहीं है तो बंद रहें। तो यदि दोनों चालू हैं, तो एक्सओआर बंद रहता है, और द्वार द्वार चालू हो जाता है, दो के सही उत्तर में आ रहा है:

તે कर आ कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर स्थान कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर लेकिन एक बिट 1 से अधिक कुछ भी स्टोर नहीं कर सकता है, और यह मशीन बहुत उपयोगी नहीं है क्योंकि यह केवल सबसे सरल गणित समस्याओं में से एक हल करती है। लेकिन यह केवल आधा योजक है, और यदि आप उनमें से दो को एक और इनपुट के साथ जोड़ते हैं, तो आपको एक पूर्ण योजक मिल जाता है:

पूर्ण योजक में तीन इनपुट होते हैं- जोड़ने के लिए दो संख्याएं, और "ले जाने"। कैरी का उपयोग तब किया जाता है जब अंतिम संख्या एक बिट में संग्रहीत की जा सकती है। पूर्ण योजक एक श्रृंखला में जुड़े होंगे, और वाहक एक योजक से अगले में पारित किया जाता है। वाहक को पहली छमाही योजक में एक्सओआर गेट के परिणामस्वरूप जोड़ा जाता है, और दोनों मामलों को संभालने के लिए एक अतिरिक्त या गेट होता है जब ऐसा होना आवश्यक होता है।

जब दोनों इनपुट चालू होते हैं, तो वाह चालू हो जाता है, और श्रृंखला में अगले पूर्ण योजक को भेजता है:

और यह उतना जटिल है जितना अतिरिक्त हो जाता है। अधिक बिट्स तक चलना अनिवार्य रूप से केवल लंबी श्रृंखला में अधिक पूर्ण योजक का मतलब है।

अधिकांश अन्य गणित संचालन के साथ किया जा सकता है; गुणा केवल दोहराया गया जोड़ा है, कुछ फैंसी बिट इनवर्जन के साथ घटाव किया जा सकता है, और विभाजन सिर्फ दोहराव घटाया जाता है। और जब सभी आधुनिक कंप्यूटरों में अधिक जटिल परिचालनों को गति देने के लिए हार्डवेयर-आधारित समाधान होते हैं, तो आप तकनीकी रूप से पूर्ण योजक के साथ ऐसा कर सकते हैं।

बस, और मेमोरी

अभी, हमारा कंप्यूटर खराब कैलकुलेटर से ज्यादा कुछ नहीं है। ऐसा इसलिए है क्योंकि यह कुछ भी याद नहीं कर सकता है, और इसके आउटपुट के साथ कुछ भी नहीं करता है। ऊपर दिखाया गया एक मेमोरी सेल है, जो कि यह सब कर सकता है। हुड के तहत, यह कई नंद द्वारों का उपयोग करता है, और वास्तविक जीवन में भंडारण तकनीक के आधार पर काफी अलग हो सकता है, लेकिन इसका कार्य समान है। आप इसे कुछ इनपुट देते हैं, 'लिखो' बिट चालू करते हैं, और यह सेल के अंदर इनपुट स्टोर करेगा। यह सिर्फ एक मेमोरी सेल नहीं है, क्योंकि हमें इससे जानकारी पढ़ने का एक तरीका भी चाहिए। यह एक एनाबेलर के साथ किया जाता है, जो स्मृति में प्रत्येक बिट के लिए और द्वार का संग्रह होता है, सभी एक दूसरे इनपुट से जुड़े होते हैं, "पढ़ा" बिट। आ कर તે તે તે कर તે તે कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर

यह पूरा पैकेज एक रजिस्टर के रूप में जाना जाता है में लपेटा गया है। ये रजिस्ट्रार बस से जुड़े हुए हैं, जो पूरे सिस्टम के चारों ओर चलने वाले तारों का एक बंडल है, जो प्रत्येक घटक से जुड़ा हुआ है। यहां तक ​​कि आधुनिक कंप्यूटरों में भी एक बस है, हालांकि मल्टीटास्किंग प्रदर्शन में सुधार करने के लिए उनके पास कई बसें हो सकती हैं।

प्रत्येक रजिस्टर में अभी भी एक लिखना और थोड़ा सा पढ़ना है, लेकिन इस सेटअप में, इनपुट और आउटपुट एक ही चीज़ है। यह वास्तव में अच्छा है। उदाहरण के लिए। यदि आप R1 की सामग्री को R2 में कॉपी करना चाहते हैं, तो आप R1 के लिए रीड बिट चालू कर देंगे, जो आर 1 की सामग्री को बस पर धक्का देगी। जबकि रीड बिट चालू है, आप R2 के लिए लिखने की बिट चालू कर देंगे, जो बस सामग्री को R2 में कॉपी करेगा।

रजिस्टरों का प्रयोग रैम बनाने के लिए भी किया जाता है। તે कर તે कर તે कर તે कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर कर

डिकोडर्स बाइनरी इनपुट लेते हैं और इसी क्रमांकित तार को चालू करते हैं। उदाहरण के लिए, बाइनरी में "11" 3 है, उच्चतम 2-बिट संख्या, इसलिए डिकोडर उच्चतम तार चालू कर देगा। प्रत्येक छेड़छाड़ पर, एक रजिस्टर है। ये सभी केंद्रीय बस से जुड़े हुए हैं, और केंद्रीय लेखन और इनपुट पढ़ते हैं। दोनों पठन और लिखने का इनपुट केवल तभी चालू होगा जब रजिस्टर पर पार होने वाले दो तार भी प्रभावी ढंग से आपको उस रजिस्टर का चयन करने की इजाजत दे सकें जिससे लिखना और पढ़ना है। फिर, आधुनिक रैम कहीं अधिक जटिल है, लेकिन यह सेटअप अभी भी काम करता है।

द क्लॉक, द स्टेपर, और डिकोडर

रजिस्टरों का हर जगह उपयोग किया जाता है और सीपीयू में जानकारी को संग्रहीत करने और संग्रहीत करने के लिए मूल उपकरण हैं। तो उन्हें चीजों को चारों ओर स्थानांतरित करने के लिए क्या कहता है?

घड़ी सीपीयू के मूल में पहला घटक है और एक सेट अंतराल पर बंद हो जाएगी, जो हर्ट्ज में मापा जाता है, या चक्र प्रति सेकंड। यह वह गति है जिसे आप सीपीयू के साथ विज्ञापित करते हैं; एक 5 गीगाहर्ट्ज़ चिप प्रति सेकेंड 5 बिलियन चक्र कर सकती है। सीपीयू कितनी तेजी से घड़ी की गति अक्सर एक बहुत अच्छी मीट्रिक होती है।

घड़ी में तीन अलग-अलग राज्य हैं: आधार घड़ी, सक्षम घड़ी, और सेट घड़ी। बेस घड़ी आधे चक्र के लिए होगी, और दूसरी छमाही के लिए बंद हो जाएगा। सक्षम घड़ी का उपयोग रजिस्टरों को चालू करने के लिए किया जाता है और यह सुनिश्चित करने के लिए कि डेटा सक्षम है, लंबे समय तक चलने की आवश्यकता होगी। सेट घड़ी हमेशा सक्षम घड़ी के साथ ही चालू होने की आवश्यकता होती है, या फिर गलत डेटा लिखा जा सकता है।

घड़ी स्टेपर से जुड़ा हुआ है, जो एक से अधिकतम चरण तक गिना जाएगा, और इसे पूरा होने पर स्वयं को रीसेट कर देगा। घड़ी प्रत्येक रजिस्टर के लिए और गेट्स से भी जुड़ा हुआ है जो सीपीयू लिख सकता है:

ये और द्वार भी एक अन्य घटक, निर्देश डिकोडर के आउटपुट से जुड़े हुए हैं। निर्देश डिकोडर "एसईटी आर 2 से आर 1" जैसे निर्देश लेता है और इसे कुछ ऐसा करता है जो सीपीयू समझ सकता है। इसका अपना आंतरिक रजिस्टर है, जिसे "निर्देश रजिस्टर" कहा जाता है, जहां वर्तमान ऑपरेशन संग्रहीत होता है। यह आपके द्वारा चलाए जा रहे सिस्टम पर कितनी सटीक है, लेकिन एक बार इसे डीकोड करने के बाद, यह सही सेट चालू कर देगा और सही रजिस्टरों के लिए बिट्स सक्षम करेगा, जो घड़ी के अनुसार बंद हो जाएंगे।

प्रोग्राम निर्देश रैम में संग्रहीत हैं (या आधुनिक सिस्टम पर एल 1 कैश, सीपीयू के करीब)। चूंकि प्रोग्राम डेटा रजिस्टरों में संग्रहीत होता है, बस हर दूसरे चर की तरह, इसे प्रोग्राम के चारों ओर कूदने के लिए फ्लाई पर छेड़छाड़ की जा सकती है। इस तरह कार्यक्रमों को लूप और यदि कथन के साथ, उनकी संरचना मिलती है। एक जंप निर्देश स्मृति में वर्तमान स्थान सेट करता है कि निर्देश डिकोडर एक अलग स्थान से पढ़ रहा है।

यह सब एक साथ कैसे आता है

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

गणना करने के लिए, प्रोग्राम डेटा सिस्टम रैम से नियंत्रण खंड में लोड किया जाता है। नियंत्रण अनुभाग रैम से दो संख्याओं को पढ़ता है, पहले एएलयू के निर्देश रजिस्टर में लोड करता है, और फिर दूसरी को बस पर लोड करता है। इस बीच, यह एएलयू को एक निर्देश कोड भेजता है जो बता रहा है कि क्या करना है। एएलयू फिर सभी गणना करता है और परिणाम को एक अलग रजिस्टर में संग्रहीत करता है, जिसे सीपीयू पढ़ सकता है और फिर प्रक्रिया जारी रख सकता है।

Link
Plus
Send
Send
Pin