CPU रजिस्टर क्या हैं?


27

यह सवाल पिछले कुछ समय से मुझे परेशान कर रहा है और आज मुझे लगा कि मैं इसे गूगल करूंगा। मैंने इसके बारे में कुछ चीजें पढ़ी हैं और यह बहुत कुछ वैसा ही लग रहा था जैसा कि मुझे हमेशा प्रोसेसर कैश के रूप में जाना जाता है ।

क्या दोनों के बीच कोई अंतर है या क्या मैं सही हूं जब मुझे लगता है कि वे समान हैं? क्या वास्तव में एक सीपीयू के अंदर काम करने के लिए एक रजिस्टर होना आवश्यक है?

विकिपीडिया के अनुसार एक रजिस्टर सीपीयू में एक जगह है जहाँ रैम को वापस भेजे जाने से पहले मेमोरी को जल्दी से एक्सेस और संशोधित किया जा सकता है। क्या मुझे यह गलत समझ में आया या कैश और रजिस्टर वास्तव में एक ही हैं?


13
सीपीयू रजिस्टर एक ऐसा संगठन है जो आपके सीपीयू पर नज़र रखता है। एनएसए सीपीयू रजिस्टर का एक उदाहरण है।
जिमी हॉफ

3
सीपीयू स्तर -1 कैश अक्सर रजिस्टरों के समान सिलिकॉन सामान से बना होता है। यह बहुत तेज़ नहीं है क्योंकि कैश स्थानों के साथ कैश्ड पतों को जोड़ने के लिए इसे अतिरिक्त देखने की आवश्यकता है। लेकिन रजिस्टर और कैश निश्चित रूप से चिप्स पर अलग-अलग जगह हैं।
ज़ेन लिंक्स

3
@ जिमीहॉफ: मुझे डर है कि आपकी टिप्पणी ओपी को भ्रमित करने वाली होगी, कंप्यूटर विज्ञान के ज्ञान की गिरावट के लिए।
19

3
@rwong Nah मुझे मिला, मुझे लगा कि यह बहुत मज़ेदार है। : पी
Jeroen

1
और एक और अंतर आकार है: एक रजिस्टर फ़ाइल शायद ही कभी सैकड़ों शब्दों के जोड़े से बड़ी होती है, जबकि L1 कैश 64k के रूप में आसानी से कुछ हो सकता है।
SK-तर्क

जवाबों:


61

वे काफी समान नहीं हैं। रजिस्टरों वे स्थान हैं जहां सीपीयू वास्तव में काम कर रहे हैं, जो मूल्य स्थित हैं। सीपीयू डिजाइन ऐसा है कि यह केवल तब ही संशोधित या अन्यथा मूल्य पर कार्य करने में सक्षम होता है जब यह एक रजिस्टर में होता है। इसलिए रजिस्टर्स लॉजिक का काम कर सकते हैं, जबकि मेमोरी (कैशे सहित) केवल उन वैल्यूज को पकड़ सकती है जो सीपीयू से पढ़ता है और लिखता है।

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

संपादित करें: यहाँ एक सरल विवरण है कि तर्क कैसे काम करता है।

आइए कल्पना करें कि हमारे पास R1..R4 नाम के चार रजिस्टर हैं। यदि आप एक कथन संकलित करते हैं जो इस तरह दिखता है:

x = y + z * 3;

कंपाइलर मशीन कोड का उत्पादन करेगा (जब डिसबंबल्ड) कुछ इस तरह दिखता है:

LOAD  R1, ADDRESS_Z //move the value of Z into register 1
MUL   R1, 3         //multiply the value of register 1 by 3
LOAD  R2, ADDRESS_Y //move the value of Y into register 2
ADD   R1, R2        //adds the value in R2 to the value in R1
STORE R1, ADDRESS_X //move the value of register 1 into X

चूंकि अधिकांश आधुनिक सीपीयू में रजिस्टर होते हैं जो 32 या 64 बिट्स चौड़े होते हैं, इसलिए वे जिस भी आकार को पकड़ सकते हैं, उसके ऊपर किसी भी मूल्य पर गणित कर सकते हैं। उन्हें छोटे मूल्यों के लिए विशेष रजिस्टरों की आवश्यकता नहीं होती है; वे केवल विशेष ASM निर्देशों का उपयोग करते हैं जो इसे केवल रजिस्टर के भाग का उपयोग करने के लिए कहते हैं। और, केवल दो हाथों के साथ बढ़ई की तरह, रजिस्टरों केवल एक बार में डेटा की एक छोटी राशि पकड़ सकते हैं, लेकिन उन्हें पुन: उपयोग किया जा सकता है, उनमें और बाहर सक्रिय डेटा पारित कर सकते हैं, जिसका अर्थ है कि "बहुत सारे रजिस्टर" नहीं हैं अंत की आवश्यकता है। (बहुत अधिक उपलब्ध होने के कारण कंपाइलर तेजी से कोड उत्पन्न करने की अनुमति देता है, लेकिन यह कड़ाई से आवश्यक नहीं है।)


26
और शहर भर में गोदाम में और अधिक सामान (डिस्क) और अन्य सामान वह (नेटवर्क) में Fedex'd कर सकते हैं :-)
Dan Pichelman

2
प्रश्न में सिस्टम आर्किटेक्चर पर बहुत अधिक निर्भर करता है।
वर्ल्ड इंजीनियर

5
@ 16 बिट x86 प्रोसेसर में आपके पास एक्सिस, बीएक्स और इतने पर रजिस्टर्स हैं। जब वे 32 बिट प्रोसेसर में चले गए तो उन्होंने रजिस्टरों को 32 बिट ईएएक्स, ईबीएक्स पर बढ़ाया, अगर आप एक्सएक्स का उपयोग करते हैं तो आपको ईएएक्स के कम 16 बिट मिलते हैं। 64 बिट मोड में, उन्होंने रजिस्टरों का नाम RAx रखा, जिसमें निचले 32 बिट्स EAx थे और निचले 16 बिट्स अभी भी कुल्हाड़ी हैं। 16 बिट एक्स रजिस्टर के उच्च बाइट पाने के लिए एएच जैसे बाइट के अन्य हिस्सों को देखने के लिए इन आरेखों को देखें: en.wikipedia.org/wiki/X86#Structure
stonemetal

2
और आधुनिक सीपीयू में, यह थोथा टूट जाता है, साथ ही, रजिस्टरों के कारण वास्तव में फास्ट मेमोरी के इन-कोर बैंक में केवल अस्थायी मैपिंग होने के कारण, निर्देश धारा के आधार पर बदल रहा है और यह अनुमानित निर्देश धारा का कितनी बारीकी से अनुसरण कर रहा है।
वैटाइन

2
@MasonWheeler अपनी ओर से एक अच्छा विकल्प।
वेटाइन

3

वास्तव में सीपीयू शब्दावली में एक रजिस्टर एक माइक्रोप्रोसेसर (सीपीयू) के अंदर उपलब्ध मेमोरी का छोटा नाम है, रजिस्टरों के विशिष्ट नाम, आकार और फ़ंक्शन प्रोसेसर से प्रोसेसर में भिन्न होते हैं, उदाहरण के लिए, यदि 8085 माइक्रोप्रोसेसर 8-बिट प्रोसेसर है जो 8 है -बिट रजिस्टर (ए: एंक्युमुलेटर, बी, सी, डी, ई, एच और एल रजिस्टर और एक ध्वज रजिस्टर सभी 8-बिट हैं)। दो 16-बिट रजिस्टर पीसी और एसपी सभी विशेष कार्य कर रहे हैं और कार्य विधानसभा प्रोग्रामिंग के दौरान तस्वीर में आते हैं। कुछ रजिस्टरों का नियंत्रण प्रोग्रामर से परे है।

यदि आप एक और प्रोसेसर लेते हैं तो रजिस्टरों को अलग-अलग कहने दिया जाएगा कि 8086 16-बिट प्रोसेसर है और इसमें AX, BX, CX और DX सभी 16-बिट, PC, SP और फ्लैग रजिस्टर हैं।

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

लेकिन प्रोसेसर (सीपीयू) कैश और प्रोसेसर (सीपीयू) रजिस्टरों के बीच मामूली अंतर होता है, रजिस्टर वास्तव में कुछ विशेष गतिविधियों जैसे मेमोरी पॉइंटर, प्रोग्राम स्टेटस आदि के लिए आवश्यक होते हैं। Ex: PC: प्रोग्राम काउंटर जो प्रोग्राम मेमोरी में मेमोरी पॉइंटर का काम करता है, एसपी: स्टैक पॉइंटर जो स्टैक मेमोरी में मेमोरी पॉइंटर का काम करता है। और संचायक बफर और मुख्य रजिस्टर के लिए ALU का उपयोग करने के लिए अंकगणितीय ऑप्स है ...

आप निर्वासन के लिए मेसन व्हीलर स्पष्टीकरण देख सकते हैं


1

मुझे लगता है कि यह सोचने में मदद मिलती है कि रजिस्टर स्मृति नहीं हैं और इस तरह से नहीं सोचा जाना चाहिए।

OO की तरह अधिक सोचें - रजिस्टर एक वर्ग है, जो मेमोरी से प्राप्त नहीं है और मेमोरी एक क्लास है जो रजिस्टर से व्युत्पन्न नहीं है, लेकिन रजिस्टर क्लास में मेमोरी से अपने डेटा को परिवर्तित करने के लिए तरीके (मशीन ओप कोड) हैं। दूसरी ओर स्मृति रजिस्टरों के बारे में कुछ नहीं जानती है और उन पर कार्रवाई नहीं कर सकती है। नतीजतन, सभी CPU संचालन रजिस्टरों द्वारा किए जाते हैं, जो अक्सर मेमोरी तक पहुंचते हैं।

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


मैमोरी-मैप्ड I / O में, "मेमोरी" के केवल-लेखन क्षेत्र असामान्य नहीं हैं।
SK-तर्क

@ एसके-तर्क - सही - हालांकि प्रश्न के संदर्भ में स्पष्ट रूप से पूछा गया है कि ओपी स्मृति के बारे में सोचता है क्योंकि आप जिस चीज से पढ़ते हैं और लिखते हैं। उसे और अधिक भ्रमित करने की आवश्यकता नहीं है :)
मैट्नज़

0

@ मेसन व्हीलर द्वारा प्रदान किया गया उत्तर सटीक था, लेकिन मुझे लगता है कि आपके प्रश्न को दूसरे परिप्रेक्ष्य में रखना संभव है। आपके प्रश्न को देखते हुए, यह मेरे लिए एक अवधारणा है जो आपको कैश और एक रजिस्टर के बीच अंतर को पूरी तरह से समझने की आवश्यकता है, डेटा पथ है । जैसा कि मेसन ने ठीक से इंगित किया है, सीपीयू (यानी, इसका डेटा पथ) का तर्क इस तरह से डिज़ाइन किया गया है कि मेमोरी जानकारी को सीधे सीपीयू द्वारा निपटा नहीं जा सकता है और इसीलिए रजिस्टर मौजूद हैं। वास्तव में, सीपीयू उस प्रोग्राम के वर्तमान निर्देश को डिकोड करने में भी सक्षम नहीं है जो यह चल रहा है यदि वह निर्देश पहले उचित रजिस्टर में लोड नहीं किया गया था (आमतौर पर आईआर, "इंस्ट्रक्शन रजिस्टर")।

यह सीपीयू के तार के तरीके से संबंधित है। मेमोरी और ALU के बीच कोई भौतिक पथ नहीं है; ALU को दिए गए सभी डेटा को किसी न किसी रजिस्टर में किसी भी तरह बफ़र करना होगा। यह अलग हो सकता है, लेकिन ALU में मेमोरी को सीधे कनेक्ट करने के लिए आवश्यक सर्किटरी बहुत जटिल होगी: यह aforementionation डेटा पथ द्वारा निर्धारित रजिस्टर फ़ाइल के माध्यम से मेमोरी और ALU के बीच सभी संचार को मध्यस्थ करने के लिए आसान और अधिक कुशल है। । वास्तव में, तब भी जब एक निर्देश एक ऑपरेंड (एक एड्रेसिंग मोड जिसे डायरेक्ट एड्रेसिंग के रूप में जाना जाता है ) के रूप में एक मेमोरी पोजीशन निर्दिष्ट करता है , इसी डेटा यूनिट को एक रजिस्टर में लोड किया जाता है जिसे एमबीआर (मेमोरी बफर रजिस्टर) के रूप में जाना जाता है, जिसे कभी-कभी एमडीआर, मेमोरी कार्ड बफर कहा जाता है। )।

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

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