32-बिट प्रोसेसर और 1 जीबी रैम के साथ हम कितने मेमोरी एड्रेस प्राप्त कर सकते हैं?


11

32-बिट प्रोसेसर और 1 जीबी रैम और 64-बिट प्रोसेसर के साथ कितने मेमोरी पते मिल सकते हैं?

मुझे लगता है कि यह कुछ इस तरह है:

1 जीबी रैम 32 बिट्स से विभाजित या 4 से विभाजित? स्मृति पतों की संख्या प्राप्त करने के लिए?

लेकिन मुझे यकीन नहीं। इसलिए मैं पूछ रहा हूं।

मैं विकिपीडिया पर लाल करता हूं कि 1 मेमोरी एड्रेस 32 बिट्स या 4 ऑक्टेट (1 ऑक्टेट = 8 बिट्स) है, जबकि 64 बिट प्रोसेसर की तुलना में जहां 1 मेमोरी एड्रेस या 1 पूर्णांक 64 बिट्स या 8 ऑक्टेट है। लेकिन पता नहीं अगर मैं इसे सही ढंग से समझ गया या तो।


वस्तुतः सभी आधुनिक सिस्टम बाइट-एड्रेस हैं, जिसका अर्थ है कि 32 बिट्स 4 गीगाबाइट के बारे में पता कर सकते हैं (यदि बहुत रैम स्थापित है)। ऐतिहासिक रूप से, शब्द-संबोधित योजनाएं हैं, जिनमें "शब्द" 12, 15, 16, 17, 24, 32, 36, या 48 बिट्स है, और कुछ अन्य की संभावना है, प्लस दशमलव मशीनें जो 4 या 6-बिट को संबोधित करती हैं। इकाई। लेकिन यह भी ध्यान रखें कि अधिकांश आधुनिक सिस्टम वर्चुअल मेमोरी को नियोजित करते हैं, जिसका अर्थ है कि प्रोसेसर जो स्थापित है उससे अधिक मेमोरी को भी संबोधित कर सकता है।
डैनियल आर हिक्स

@DanielRHicks वर्चुअल मेमोरी इस बात को प्रभावित नहीं करती है कि कितनी रैम को संबोधित किया जा सकता है।
जेमी हनरान

@JamieHanrahan - वर्चुअल मेमोरी को काम करने के लिए कुछ एड्रेसिंग मेकेनिज्म होना चाहिए जो वर्चुअल एड्रेस रेंज (एक एकल प्रक्रिया) तक फैला हो। यह सॉफ्टवेयर सिमुलेशन के साथ किया जा सकता है, लेकिन यह काफी अक्षम है, इसलिए अधिकांश प्रणालियों में प्रोसेसर की एड्रेसिंग रेंज को एक प्रक्रिया के अधिकतम पता स्थान को शामिल करने के लिए काफी बड़ा बनाया जाता है।
डेनियल आर हिक्स

@DanielRHicks ज़रूर, लेकिन यह प्रभावित नहीं करता है कि कितनी रैम को संबोधित किया जा सकता है। RAM भौतिक स्मृति है, आभासी नहीं। वर्चुअल एड्रेस रैम एड्रेस नहीं हैं और वर्चुअल मेमोरी रैम नहीं है।
जेमी हनराहन

@JamieHanrahan - आप कोई मतलब नहीं कर रहे हैं। यदि आप वर्चुअल एड्रेस स्पेस में RAM के पेज को एड्रेस नहीं कर सकते हैं तो रैम बेकार है। (मुझे अच्छी तरह पता है कि वर्चुअल मेमोरी कैसे काम करती है, 1972 से वर्चुअल मेमोरी डिज़ाइन पर काम कर रही है।)
डैनियल आर हिक्स

जवाबों:


37

संक्षिप्त उत्तर: उपलब्ध पतों की संख्या उन लोगों के बराबर है:

  • बाइट्स में मेमोरी का आकार
  • सबसे बड़ा अहस्ताक्षरित पूर्णांक जो CPU के मशीन शब्द में सहेजा जा सकता है

उपरोक्त उत्तर और उत्तर:

मेमोरी में बाइट्स (B) होते हैं। प्रत्येक बाइट में 8 बिट (बी) होते हैं।

1 B = 8 b

1 जीबी रैम वास्तव में 1 GiB (जिबाइट, गीगाबाइट नहीं) है। अंतर यह है:

1 GB  = 10^9 B = 1 000 000 000 B
1 GiB = 2^30 B = 1 073 741 824 B

मेमोरी के हर बाइट का अपना पता होता है, चाहे वह सीपीयू मशीन शब्द कितना भी बड़ा क्यों न हो। उदाहरण के लिए। इंटेल 8086 सीपीयू 16-बिट था और यह बाइट्स द्वारा मेमोरी को संबोधित कर रहा था, इसलिए आधुनिक 32-बिट और 64-बिट सीपीयू करें। यह पहली सीमा का कारण है - आपके पास मेमोरी बाइट्स से अधिक पते नहीं हो सकते।

मेमोरी पता बस बाइट्स की एक संख्या है सीपीयू को मेमोरी की शुरुआत से उस व्यक्ति को प्राप्त करने के लिए छोड़ना पड़ता है जिसे वह ढूंढ रहा है।

  • पहले बाइट को एक्सेस करने के लिए 0 बाइट्स को छोड़ना पड़ता है, इसलिए पहले बाइट का एड्रेस 0 है।
  • दूसरे बाइट को एक्सेस करने के लिए इसे 1 बाइट को छोड़ना पड़ता है, इसलिए इसका पता 1 है।
  • (इत्यादि...)
  • अंतिम बाइट तक पहुंचने के लिए, CPU 1073741823 बाइट्स को छोड़ देता है, इसलिए इसका पता 1073741823 है।

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

मशीन शब्द संख्याओं (रैम, कैश या आंतरिक रजिस्टरों में) को रखने के लिए उपयोग किए जाने वाले मेमोरी सीपीयू की मात्रा है। 32-बिट CPU संख्याओं को रखने के लिए 32 बिट्स (4 बाइट्स) का उपयोग करता है। मेमोरी पते भी संख्याएँ हैं, इसलिए 32-बिट CPU पर मेमोरी एड्रेस में 32 बिट्स होते हैं।

अब इस बारे में सोचें: यदि आपके पास एक बिट है, तो आप इस पर दो मान बचा सकते हैं: 0 या 1. एक और बिट जोड़ें और आपके पास चार मान हैं: 0, 1, 2, 3. तीन बिट्स पर, आप आठ मानों को सहेज सकते हैं : 0, 1, 2 ... 6, 7. यह वास्तव में एक बाइनरी सिस्टम है और यह इस तरह काम करता है:

Decimal Binary
0       0000
1       0001
2       0010
3       0011
4       0100
5       0101
6       0110
7       0111
8       1000
9       1001
10      1010
11      1011
12      1100
13      1101
14      1110
15      1111

यह बिल्कुल सामान्य जोड़ की तरह काम करता है, लेकिन अधिकतम अंक 1 है, 9 नहीं। दशमलव 0 है 0000, तो आप 1 जोड़ते हैं और प्राप्त करते हैं 0001, एक बार फिर से जोड़ते हैं और आपके पास है 0010। दशमलव के साथ 09और एक को जोड़ने के साथ यहां क्या खुशी है: आप 9 से 0 बदलते हैं और अगले अंक में वृद्धि करते हैं।

ऊपर दिए गए उदाहरण से आप देख सकते हैं कि हमेशा एक अधिकतम मूल्य है जिसे आप संख्या में बिट्स की निरंतर संख्या के साथ रख सकते हैं - क्योंकि जब सभी बिट्स 1 होते हैं और आप 1 से मूल्य बढ़ाने की कोशिश करते हैं, तो सभी बिट्स 0 हो जाएंगे, इस प्रकार ब्रेकिंग नंबर। यह पूर्णांक अतिप्रवाह कहा जाता है और उपयोगकर्ताओं और डेवलपर्स दोनों के लिए कई अप्रिय समस्याओं का कारण बनता है।

   11111111    = 255
+         1
-----------
  100000000    = 0   (9 bits here, so 1 is trimmed)
  • 1 बिट के लिए सबसे बड़ा मूल्य 1 है,
  • 2 बिट्स - 3,
  • 3 बिट्स - 7,
  • 4 बिट्स - 15

सबसे बड़ी संभव संख्या हमेशा 2 ^ N-1 होती है, जहां N बिट की संख्या होती है। जैसा कि मैंने पहले कहा, एक मेमोरी एड्रेस एक संख्या है और इसका अधिकतम मूल्य भी है। इसीलिए मशीन शब्द का आकार उपलब्ध मेमोरी पतों की संख्या के लिए भी एक सीमा है - कभी-कभी आपका सीपीयू अधिक संख्याओं को संसाधित नहीं कर सकता है ताकि अधिक मेमोरी को संबोधित किया जा सके।

तो 32 बिट्स पर आप 0 से 2 ^ 32-1 तक नंबर रख सकते हैं, और यह 4 294 967 295 है। यह 1 जीबी रैम में सबसे बड़े पते से अधिक है, इसलिए आपके विशिष्ट मामले में रैम की मात्रा सीमित कारक होगी।

32-बिट सीपीयू के लिए रैम की सीमा सैद्धांतिक रूप से 4 जीबी (2 ^ 32) है और 64-बिट सीपीयू के लिए यह 16 ईबी (एक्सैबाइट, 1 ईबी = 2 ^ 30 जीबी) है। दूसरे शब्दों में, 64-बिट सीपीयू पूरे इंटरनेट को संबोधित कर सकता है ... 200 बार;) ( वुल्फरामअल्फा द्वारा अनुमानित )।

हालांकि, वास्तविक जीवन के ऑपरेटिंग सिस्टम में 32-बिट सीपीयू 3 गिबी रैम को संबोधित कर सकते हैं। यह ऑपरेटिंग सिस्टम की आंतरिक वास्तुकला के कारण है - कुछ पते अन्य उद्देश्यों के लिए आरक्षित हैं। आप विकिपीडिया पर इस तथाकथित 3 जीबी बैरियर के बारे में अधिक पढ़ सकते हैं । आप इस सीमा को भौतिक पता एक्सटेंशन के साथ उठा सकते हैं ।


मेमोरी एड्रेसिंग के बारे में बोलते हुए, कुछ चीजें हैं जिनका मुझे उल्लेख करना चाहिए: वर्चुअल मेमोरी , सेगमेंटेशन और पेजिंग

अप्रत्यक्ष स्मृति

जैसा कि @Daniel R Hicks ने एक अन्य उत्तर में बताया, OSes वर्चुअल मेमोरी का उपयोग करते हैं। इसका अर्थ है कि अनुप्रयोग वास्तव में वास्तविक मेमोरी पतों पर काम नहीं करते हैं, लेकिन ओएस द्वारा प्रदान किए गए हैं।

यह तकनीक ऑपरेटिंग सिस्टम को रैम से कुछ डेटा को तथाकथित पेजफाइल (विंडोज) या स्वैप (* एनआईएक्स) में स्थानांतरित करने की अनुमति देती है। HDD RAM की तुलना में कुछ कम धीमा है, लेकिन यह शायद ही कभी एक्सेस किए गए डेटा के लिए एक गंभीर समस्या नहीं है और यह OS को आपके द्वारा वास्तव में स्थापित किए गए अनुप्रयोगों से अधिक RAM प्रदान करने की अनुमति देता है।

पेजिंग

अब तक हम जो बात कर रहे थे उसे फ्लैट एड्रेसिंग स्कीम कहा जाता है।

पेजिंग एक वैकल्पिक संबोधन योजना है जो अधिक मेमोरी को संबोधित करने की अनुमति देती है जो आप आमतौर पर फ्लैट मॉडल में एक मशीन शब्द के साथ कर सकते हैं।

4-अक्षरों के शब्दों से भरी किताब की कल्पना करें। मान लीजिए कि प्रत्येक पृष्ठ पर 1024 संख्याएँ हैं। एक नंबर को संबोधित करने के लिए, आपको दो बातें जाननी होंगी:

  • उस शब्द को मुद्रित करने वाले पृष्ठ की संख्या।
  • उस पृष्ठ पर कौन सा शब्द वह है जिसे आप खोज रहे हैं।

अब यह ठीक है कि आधुनिक x86 CPU स्मृति को कैसे संभालते हैं। इसे 4 KiB पृष्ठों (प्रत्येक में 1024 मशीन शब्द) में विभाजित किया गया है और उन पृष्ठों में संख्याएँ हैं। (वास्तव में पेज 4 MiB बड़े या 2 MiB PAE वाले हो सकते हैं )। जब आप मेमोरी सेल को संबोधित करना चाहते हैं, तो आपको उस पेज में पेज नंबर और एड्रेस की आवश्यकता होती है। ध्यान दें कि प्रत्येक मेमोरी सेल को एक जोड़ी संख्याओं द्वारा संदर्भित किया जाता है, जो कि विभाजन के मामले में नहीं होगा।

विभाजन

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


एक उदाहरण:

मान लें कि हमारे पास 8 बाइट्स की मेमोरी है, जो 4 जी बाइट को छोड़कर सभी शून्य को रखती है जो 255 के बराबर है।

फ्लैट मेमोरी मॉडल के लिए चित्रण:

 _____
|  0  |
|  0  |
|  0  |
| 255 |
|  0  |
|  0  |
|  0  |
|  0  |
 -----

4-बाइट पृष्ठों के साथ पृष्ठांकित स्मृति के लिए चित्रण :

 PAGE0
 _____
|  0  |
|  0  |
|  0  |  PAGE1
| 255 |  _____
 -----  |  0  |
        |  0  |
        |  0  |
        |  0  |
         -----

4-बाइट सेगमेंट वाली खंडित मेमोरी के लिए चित्रण 1 द्वारा स्थानांतरित किया गया:

 SEG 0
 _____   SEG 1
|  0  |  _____   SEG 2
|  0  | |  0  |  _____   SEG 3
|  0  | |  0  | |  0  |  _____   SEG 4
| 255 | | 255 | | 255 | | 255 |  _____   SEG 5
 -----  |  0  | |  0  | |  0  | |  0  |  _____   SEG 6
         -----  |  0  | |  0  | |  0  | |  0  |  _____   SEG 7
                 -----  |  0  | |  0  | |  0  | |  0  |  _____
                         -----  |  0  | |  0  | |  0  | |  0  |
                                 -----   -----   -----   -----

जैसा कि आप देख सकते हैं, 4 बाइट को चार तरीकों से संबोधित किया जा सकता है: (0 से संबोधित करते हुए)

  • खंड ०, ऑफसेट ३
  • खंड 1, ऑफसेट 2
  • खंड 2, ऑफसेट 1
  • खंड 3, ऑफसेट 0

यह हमेशा एक ही मेमोरी सेल है।

वास्तविक जीवन में कार्यान्वयन खंडों को 1 से अधिक बाइट द्वारा स्थानांतरित किया जाता है (8086 के लिए यह 16 बाइट्स था)।

विभाजन के बारे में क्या बुरा है यह जटिल है (लेकिन मुझे लगता है कि आप पहले से ही जानते हैं कि;) क्या अच्छा है, यह है कि आप मॉड्यूलर कार्यक्रमों को बनाने के लिए कुछ चतुर तकनीकों का उपयोग कर सकते हैं।

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


1
एक OS उपयोगकर्ता प्रक्रिया के लिए पूर्ण 4GiB वर्चुअल एड्रेस स्पेस (संभवतः x86 के लिए एक पेज - 4KiB) दे सकता है, लेकिन यह सिस्टम कॉल को अधिक महंगा बनाता है क्योंकि एड्रेस स्पेस को बदलना होगा। PAE और इसी तरह के तंत्र के साथ, सिस्टम द्वारा पता योग्य भौतिक मेमोरी की मात्रा बढ़ाई जा सकती है, हालांकि पते अभी भी 32 बिट्स तक सीमित हैं।
पॉल ए। क्लेटन

यह वह नहीं है जो मैं खोज रहा था, लेकिन यह अच्छी जानकारी वैसे भी है! अधिकतम की अच्छी व्याख्या के लिए धन्यवाद। बाइनरी और दशमलव तालिका की तुलना के लिए अंकों की बात (1 = अधिकतम। बाइनरी 9 में अधिकतम है।)। वास्तव में इस बारे में सोचने का एक अच्छा तरीका है। मैंने कुछ नया सीखा। :) धन्यवाद!
जोहान स्मोहन

यह गिबी और गीगा इतना भ्रमित कर रहा है ... क्योंकि कुछ साइटों पर मैंने पढ़ा है कि मेमोरी को गिबी में और दूसरों पर मापा जाता है कि यह गीगा में है ... क्या आपके पास कुछ अच्छा / विश्वसनीय स्रोत है?
जोहान स्मोहन

विकिपीडिया में द्विआधारी उपसर्गों पर एक लेख है, जिसमें कुछ ऐतिहासिक पृष्ठभूमि भी शामिल है। अधिकांश हार्डवेयर-संबंधित संख्याएं दशमलव उपसर्गों का उपयोग करती हैं, सबसे उल्लेखनीय अपवाद संभवतः रैम और शायद रंग पैमाने हैं - जैसे। 16M रंगों वाले एलसीडी में तीन 8-बिट रंग चैनल (2 ^ 24) होते हैं। सीधे अपने प्रश्न का उत्तर देना: इस मामले में उपलब्ध पतों की संख्या मेमोरी बाइट्स की संख्या के बराबर है, क्योंकि रैम प्रति-बाइट आधार पर संबोधित किया जाता है। 32-बिट CPU 2 ^ 32 B, 64-बिट एक - 2 ^ 64 तक संभाल सकता है।
गोनोस्तज

धन्यवाद! मुझे स्कूल की परीक्षा के लिए इसकी आवश्यकता है। :) मुझे लगता है कि मैं अब सबसे अधिक चीजों को समझता हूं। केवल एक चीज जो अभी भी मुझे परेशान करती है वह है 2 ^ 32 बी, अगर यह 32 बिट प्रोसेसर है और 32byte नहीं है?
जोहान स्मोहन

3

उपरोक्त के अलावा, ध्यान दें कि वर्चुअल एड्रेसिंग का उपयोग मल्टीपल एड्रेस स्पेस के साथ किया जाता है । इसलिए, भले ही आपके पास केवल 1GB रैम हो, लेकिन एक प्रोग्राम वैचारिक रूप से 4GB तक वर्चुअल मेमोरी का उपयोग कर सकता है (हालाँकि अधिकांश ऑपरेटिंग सिस्टम इसे इससे कम पर सीमित करेगा)। और आप वैचारिक रूप से इस तरह के 4 जीबी एड्रेस स्पेस की अनंत (लगभग) अनंत संख्या में हो सकते हैं।

RAM आकार किसी प्रोग्राम के अधिकतम आकार या (प्रोग्राम को चलाने के लिए) की अधिकतम सीमा को बाधित नहीं करता है, बल्कि प्रदर्शन को बाधित करता है। जब वास्तविक मेमोरी "ओवर-कमिटेड" हो जाती है और सिस्टम रैम और डिस्क, परफॉरमेंस प्लमसेट के बीच मेमोरी के "पेज" को "स्वैप" करने लगता है।


2

RAM का 1GByte 1024 * 1024 * 1024 बाइट्स या 1,073,741,824 बाइट्स पर कब्जा कर लेगा।

एक 32-बिट प्रोसेसर में हमेशा 4 * 1024 * 1024 * 1024 बाइट्स होते हैं, या एड्रेस स्पेस की 4,294,967,296 बाइट्स होती हैं । 1 जीबी का रैम इस स्पेस के भीतर दिखाई देता है। इंटेल प्रोसेसर पर, कुछ रैम को इंटरप्ट वैक्टर के लिए एड्रेस 0 पर दिखाई देना होता है, इसलिए फिजिकल रैम एड्रेस 0 पर शुरू होता है और ऊपर जाता है।

उस एड्रेस स्पेस में अन्य चीजें दिखाई देती हैं, जैसे कि BIOS और विकल्प रोम (पहले 1Mbyte के भीतर ऊपरी 384Kbytes में), I / O डिवाइस (APIC की तरह) और वीडियो RAM। सिस्टम प्रबंधन मोड "SMRAM" के साथ कुछ अजीब चीजें भी चलती हैं जो मुझे अभी तक पूरी तरह से समझ में नहीं आई हैं।

ध्यान दें कि यह भौतिक पता स्थान है, कर्नेल के दृष्टिकोण से। MMU किसी भी तरीके से किसी भी उपयोगकर्ता प्रक्रिया को पुनर्व्यवस्थित कर सकता है।


मैं विकिपीडिया पर लाल करता हूं कि 1 मेमोरी एड्रेस 32 बिट्स या 4 ऑक्टेट (1 ऑक्टेट = 8 बिट्स) है, जबकि 64 बिट प्रोसेसर की तुलना में जहां 1 मेमोरी एड्रेस या 1 पूर्णांक 64 बिट्स या 8 ऑक्टेट है। आप 4 * 1024 * 1024 * 1024 बाइट्स एड्रेस स्पेस के बारे में सही हैं, लेकिन मैं मेमोरी एड्रेस स्पेस की खोज कर रहा था, जो मुझे लगता है कि 1 जीबी / 32 बिट्स है, लेकिन मुझे अभी भी पता नहीं है कि मैं सही हूं या नहीं। :) आपके उत्तर के लिए धन्यवाद!
जोहान स्मोहन

Np। इंटेल सीपीयू के दो एड्रेस स्पेस हैं: "मेमोरी" और "आई / ओ"। रैम के अलावा अन्य चीजें "मेमोरी" स्पेस में दिखाई देती हैं। अन्य चीजें जैसे I / O डिवाइस या ROM, RAM द्वारा अप्रकाशित स्पॉट पर हो सकती हैं। आम तौर पर केवल I / O डिवाइस I / O एड्रेस स्पेस में दिखाई देते हैं।
लॉरेंससी

@johansmohan न तो आपके नंबर और न ही लॉरेंस के जवाब सही हैं। प्रोसेसर की "बिट चौड़ाई" और रैम पतों की चौड़ाई के बीच कोई निश्चित संबंध नहीं है। 32-बिट-केवल x86 प्रोसेसर 64 जीबी रैम को संबोधित कर सकते हैं। x64 प्रोसेसर 40-बिट भौतिक पता स्थान पर शुरू हुआ और अब 52 बिट पर है। वर्चुअल एड्रेस स्पेस के लिए, यह अलग भी हो सकता है। X64 पर, यद्यपि वर्चुअल पते स्टोर करने के लिए 64 बिट्स लेते हैं, केवल 48 बिट्स कार्यान्वित किए जाते हैं, 16 ईआईबी के बजाय 256 टीआईबी के वीएएस के लिए आप 64 बिट्स की अपेक्षा करेंगे।
जेमी हनरहान

0

एक 32 बिट प्रोसेसर अधिकतम 2 ^ 32 व्यक्तिगत मेमोरी बाइट्स (लगभग 4GB) पर पता कर सकता है, लेकिन 1GB मेमोरी होने से 1 * 1024 * 1024 * 1024 पता करने योग्य बाइट्सफ़ॉफ़ मेमोरी बन जाएगी (हालाँकि आपके पास शायद 2 ^ 32 वर्चुअल एड्रेस स्पेस होगा )। 64 बिट सीपीयू 2 ^ 64 व्यक्तिगत बाइट्स को संबोधित कर सकता है, लेकिन मुझे लगता है कि अधिकांश सिस्टम मेमोरी पतों के लिए केवल 48 बिट्स का उपयोग करते हैं जो ऊपरी सीमा बनाते हैं। पता योग्य बाइट्स 2 ^ 48।


आपका मतलब 1024 * 1024 * 1024 था और 1 * 1024 * 1024 सही नहीं था?
जोहान स्मोहन

एक 32 बिट प्रोसेसर अधिकतम 2 ^ 32 ऑक्टेट या बिट्स पर पता कर सकता है? बस जाँच, क्योंकि मुझे यह सुनिश्चित करने के लिए पता होना चाहिए।
जोहान स्मोहन

@ जोहान सुमोहन सही, यह 1 * 1024 * 1024 * 1024 होना चाहिए था
AcId

@johan smohan एक 32 बिट प्रोसेसर अधिकतम 2 ^ 32 बाइट्स को संबोधित कर सकता है, एक बाइट 8 बिट्स (बिट्स का एक ऑक्टेट टी) के साथ
AcId

0

स्वीकृत उत्तर एक अच्छी व्याख्या देता है। लेकिन मुझे नहीं लगता कि यह जवाब है। इसमें एड्रेस बस के बारे में कुछ भी शामिल नहीं है । और इसका आकार वास्तव में मेमोरी की कमी का मुख्य कारण है। उदाहरण के लिए 8080 8-बिट प्रोसेसर है (इसके डेटा बस का आकार 8 बिट है), लेकिन इसमें 16-बिट एड्रेस बस है। यह 2 ^ 16 = (2 ^ 6) * (2 ^ 10) = 64 * 1024 बाइट्स = 64KB को संबोधित कर सकता है।

आप यहां (32-बिट) "तकनीकी इतिहास" अनुभाग में पा सकते हैं।


मैं सहमत हूँ। ध्यान दें कि 16-बिट पीडीपी -11 के बाद के मॉडल में 22-बिट पता बस (और इसलिए 4 एमबी रैम) को संबोधित किया जा सकता था, एचपी 1000 एमएक्स, "16-बिट", अंततः 16 एमबी रैम (24) तक पहुंच गया। -बिट पते); VAX एक 32-बिट CPU था, लेकिन इसमें 30-बिट भौतिक पता स्थान था, लेकिन आधा I / O स्थान के लिए, 512 MB की RAM सीमा के लिए आरक्षित था; "16-बिट" 8086, 1 एमबी; "16-बिट" 80286, 16 एमबी; आदि और जब पीएई को पेंटियम प्रो के साथ पेश किया गया था, तो 32-बिट x86 64 जीबी रैम (24-बिट भौतिक पता स्थान) को संबोधित कर सकता था, हालांकि कम-क्रम वाले तीन बिट्स वास्तव में इसे सीपीयू से बाहर नहीं बनाते हैं)।
जॅमी हनरहान

-2

मैं इस बातचीत में सबसे बुनियादी जानकारी खो दिया है, तो यहाँ मेरा जवाब है:

"यह एक 32 बिट प्रोसेसर है" कहने का अर्थ है कि निर्देश आकार, या कमांड आकार, जो कि सीपीयू समझ सकता है और एक समय में काम कर सकता है 32 बिट्स है। इसी तरह 64 बिट प्रोसेसर के साथ: वे 64 बिट्स के निर्देशों को संभाल सकते हैं।

इसे एक पुराने मैकेनिकल कैलकुलेटर की तरह समझें: आपके पास केवल इतने ही अंक हैं, इसलिए बस किसी भी लंबी संख्या में इनपुट नहीं कर सकते।

अब, एक पता जो सीपीयू उपयोग कर सकता है, उसे उसी स्थान में फिट करना होगा, इसलिए 32 बिट प्रोसेसर के लिए, इसका उपयोग करने वाला पता भी अधिकतम 32 बिट ही हो सकता है। तो, यहाँ से हम अधिकतम संख्याओं की गणना कर सकते हैं (यानी, CPU द्वारा अधिकतम RAM की मात्रा)

2 ^ 32 = 4294967296 (= 4 जीबी)

या

2 ^ 64 = 18446744073709551616 (= अधिक तरीका;)

या, एक मज़ेदार उदाहरण के रूप में, मेरे पुराने कमोडोर 64 में 16 बिट सीपीयू था, इसलिए यह निम्नलिखित मेमोरी को प्रबंधित करने में सक्षम था:

2 ^ 16 = 65536 बाइट्स (= 64 KB)

यह मूल तर्क है, लेकिन, जैसा कि पहले कहा गया है, इस सीमा के आसपास तरीके हैं, जैसे वर्चुअल एड्रेस स्पेस, मेमोरी मैपिंग आदि।


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

स्पष्टीकरण पूरी तरह से सही है। यह मानते हुए कि "प्रोसेसर चौड़ाई" कहते समय सेंटीमीटर में वास्तविक चिप आयाम का मतलब नहीं है, जिस स्थिति में आप इसके असंबंधित कहने में सही होंगे, आप भौतिक मेमोरी एड्रेसिंग के साथ मेमोरी मैपिंग तकनीक / वर्चुअल एड्रेस स्पेस को गलत कर रहे हैं। इसके अलावा आप जो कहते हैं वह कर्नेल कार्यान्वयन से अधिक संबंधित है, आप PAE linux kernels पर जांच करना चाहते हैं।
टुनके गोनकुओलू

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

1
@DanielRHicks डैनियल हिक्स सही है। सीपीयू की "बिट चौड़ाई" को "निर्देश आकार, या कमांड आकार" के साथ कुछ भी करने की आवश्यकता नहीं है। ऐसे सीपीयू बनाए गए हैं जो उस तरह से बनाए गए थे लेकिन आज के कमोडिटी प्रोसेसर (x86 / x64) उनमें से नहीं हैं।
जेमी हनरहान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.