32-बिट बनाम 64-बिट सिस्टम


224

32-बिट और 64-बिट सिस्टम के बीच अंतर क्या हैं?

यदि आपने दोनों का उपयोग किया है, तो आपने किस तरह के तेज अंतर का अनुभव किया है?

क्या कुछ मामलों में 64-बिट सिस्टम पर 32-बिट प्रोग्राम का उपयोग करना एक समस्या होगी?


यहां कई भ्रम हैं, और जहां वेब पर, भौतिक पते (राम तक पहुंच) के बीच पीई इसको प्रभावित करता है, मदर बोर्ड इसे प्रभावित करता है, और तार्किक एड्रेसिंग (प्रति प्रक्रिया वर्चुअल मेमोरी)। 32 बिट ओएस पर वर्चुअल मेमोरी 4GB माइनस तक सीमित होती है जो कर्नेल को सुरक्षित रखता है। यह RAM से स्वतंत्र है जिसमें आप 0.1MB या 8GB RAM हो सकते हैं और आपके पास वास्तव में 4GB वर्चुअल मेमोरी (लेकिन कुछ कर्नेल द्वारा आरक्षित) होगी। PEA का उपयोग अधिक RAM करने के लिए किया जा सकता है, लेकिन यह सही उत्तर नहीं है क्योंकि कर्नेल यह सब एक्सेस नहीं कर सकता है।
22-20 बजे ctrl-alt-delor-

जवाबों:


264

नोट: ये उत्तर मानक x86- आधारित पीसी सीपीयू (इंटेल और एएमडी) और विंडोज पर लागू होते हैं (जैसा कि आमतौर पर एंड-यूजर्स के लिए कॉन्फ़िगर किया गया है)। अन्य 32-बिट या 64-बिट चिप्स, अन्य OSes, और अन्य OS कॉन्फ़िगरेशन में अलग-अलग ट्रेडऑफ़ हो सकते हैं।

तकनीकी दृष्टिकोण से, 64-बिट OS आपको देता है:

  • व्यक्तिगत प्रक्रियाओं को प्रत्येक में 4 जीबी से अधिक रैम को संबोधित करने की अनुमति देता है (व्यवहार में, अधिकांश लेकिन सभी 32-बिट ओएस भी कुल उपयोग करने योग्य सिस्टम रैम को 4 जीबी से कम नहीं, केवल प्रति-एप्लिकेशन अधिकतम तक सीमित करते हैं)।

  • सभी संकेत 4 बाइट के बजाय 8 बाइट लेते हैं। RAM के उपयोग पर प्रभाव कम से कम है (क्योंकि आपके पास पॉइंटर्स के गीगाबाइट्स से भरा हुआ अनुप्रयोग होने की संभावना नहीं है), लेकिन सबसे खराब सैद्धांतिक स्थिति में, यह सीपीयू कैश को 1/2 को कई पॉइंटर्स रखने में सक्षम बना सकता है (मेकिंग यह प्रभावी रूप से 1/2 आकार हो सकता है)। अधिकांश अनुप्रयोगों के लिए, यह बहुत बड़ी बात नहीं है।

  • 64-बिट मोड में कई और सामान्य-उद्देश्य वाले सीपीयू रजिस्टर हैं। रजिस्टर आपके पूरे सिस्टम में सबसे तेज़ मेमोरी हैं। 32-बिट मोड में केवल 8 और 64-बिट मोड में 16 सामान्य प्रयोजन रजिस्टर हैं। वैज्ञानिक कंप्यूटिंग अनुप्रयोगों में मैंने लिखा है, मैंने 64-बिट मोड में पुन: जमा करके 30% के प्रदर्शन को बढ़ावा दिया है (मेरा आवेदन वास्तव में अतिरिक्त रजिस्टरों का उपयोग कर सकता है)।

  • अधिकांश 32-बिट OSes वास्तव में केवल व्यक्तिगत अनुप्रयोगों को 2 जीबी रैम का उपयोग करने देते हैं, भले ही आपके पास 4 जीबी स्थापित हो। ऐसा इसलिए है क्योंकि अन्य 2 जीबी का पता स्थान ओएस के साथ, अनुप्रयोगों के बीच डेटा साझा करने और ड्राइवरों के साथ संवाद करने के लिए आरक्षित है। विंडोज़ और लिनक्स आपको इस ट्रेडऑफ़ को अनुप्रयोगों के लिए 3 जीबी और 1 जीबी साझा करने के लिए समायोजित करेंगे, लेकिन यह कुछ अनुप्रयोगों के लिए समस्या पैदा कर सकता है जो परिवर्तन की उम्मीद नहीं करते हैं। मैं यह भी अनुमान लगा रहा हूं कि यह एक ग्राफिक्स कार्ड को अपंग कर सकता है जिसमें 1 जीबी रैम है (लेकिन मुझे यकीन नहीं है)। 64-बिट OS व्यक्तिगत 32-बिट एप्लिकेशन को पूर्ण 4 जीबी के साथ खेलने के लिए दे सकता है।

उपयोगकर्ता के दृष्टिकोण से:

  • एप्लिकेशन की गति आमतौर पर 32-बिट OS पर एप्लिकेशन के 32-बिट संस्करण की तुलना में 64-बिट ओएस में 64-बिट अनुप्रयोग के लिए तेज़ है, लेकिन अधिकांश उपयोगकर्ता इस गति-अप को नहीं देखेंगे। सामान्य उपयोगकर्ताओं के लिए अधिकांश एप्लिकेशन वास्तव में अतिरिक्त रजिस्टरों का लाभ नहीं उठाते हैं या बड़े कैशर्स द्वारा कैश भरने से लाभ संतुलित होते हैं।

  • यदि आपके पास कोई मेमोरी हॉग एप्लिकेशन (जैसे फोटो एडिटर, वीडियो प्रोसेसिंग, साइंटिफिक कंप्यूटिंग, आदि) हैं, यदि आपके पास 3 जीबी से अधिक रैम है, और आप एप्लिकेशन का 64-बिट संस्करण प्राप्त कर सकते हैं, चुनाव आसान है: 64-बिट ओएस का उपयोग करें।

  • कुछ हार्डवेयर में 64-बिट ड्राइवर नहीं होते हैं। स्विच करने से पहले अपने मदरबोर्ड, सभी प्लग-इन कार्ड और सभी यूएसबी उपकरणों की जांच करें। ध्यान दें कि Windows Vista के शुरुआती दिनों में, ड्राइवरों के साथ बहुत सारी समस्याएं थीं। इन दिनों चीजें आम तौर पर बेहतर होती हैं।

  • यदि आप एक समय में इतने सारे एप्लिकेशन चलाते हैं कि आप RAM से बाहर चल रहे हैं (आमतौर पर आप यह बता सकते हैं क्योंकि आपका कंप्यूटर वास्तव में धीमा होने लगता है और आप हार्ड डिस्क ड्राइव को क्रंच करते हुए सुनते हैं), तो आप 64-बिट OS चाहते हैं (और पर्याप्त रैम)।

  • आप 64-बिट विंडोज में 32-बिट एप्लिकेशन (लेकिन ड्राइवर नहीं) चला सकते हैं जिसमें कोई समस्या नहीं है। 64-बिट विंडोज में 32-बिट एप्लिकेशन के लिए सबसे खराब मंदी मैंने लगभग 5% ली है (इसका मतलब है कि अगर 32-बिट विंडोज में कुछ करने के लिए 60 सेकंड लगते हैं, तो इसे 60 * 1.05 = 65 सेकंड में सबसे अधिक समय लगता है। 64-बिट विंडोज में समान 32-बिट एप्लिकेशन)।

32-बिट बनाम 64-बिट का क्या अर्थ नहीं है:

X86 सिस्टम पर, 32-बिट बनाम 64-बिट सीधे संकेत के आकार को संदर्भित करता है। बस इतना ही।

  • यह सी intप्रकार के आकार को संदर्भित नहीं करता है । यह विशेष संकलक कार्यान्वयन द्वारा तय किया गया है, और अधिकांश लोकप्रिय संकलक int64-बिट सिस्टम पर 32-बिट चुनते हैं।

  • यह सामान्य गैर-पॉइंटर रजिस्टरों के आकार को सीधे संदर्भित नहीं करता है । हालाँकि, 64-बिट अंकगणितीय रजिस्टरों के उपयोग के लिए यह आवश्यक है कि एप्लिकेशन और OS 64-बिट पॉइंटर मोड में भी चल रहे हों।

  • यह सीधे भौतिक पता बस के आकार को संदर्भित नहीं करता है । उदाहरण के लिए, 64 बिट वाइड कैश लाइनों और अधिकतम 512GiB मेमोरी वाले सिस्टम को अपने एड्रेस बस (यानी log2(512*1024**3) - log2(64) = 33) में 33 बिट्स की आवश्यकता होती है ।

  • यह भौतिक डेटा बस के आकार को संदर्भित नहीं करता है: यह विनिर्माण लागत (सीपीयू सॉकेट में पिंस की संख्या) और कैश लाइन आकार से अधिक संबंधित है।


8
बहुत अच्छा जवाब। विशेष रूप से क्योंकि आपने नोट किया था कि वास्तव में 4 जीबी रैम की सीमा नहीं है, लेकिन मेमोरी उपयोग की प्रक्रिया को सीमित करता है। आपकी जानकारी के लिए, मुझे लगता है कि आपको इस लिंक पर एक नज़र डालनी
ब्रेकथ्रू

8
वे अनुप्रयोग हैं जो 64 बिट विंडो पर काम नहीं करते हैं: 16 बिट अनुप्रयोग / वे जो 32 बिट या अहस्ताक्षरित कर्नेल-मोड ड्राइवरों का उपयोग करते हैं। यह मेरे जैसे एक सॉफ्टवेयर
एडिक्ट के

1
@flextendu, उन पुराने कार्यक्रमों की प्रदर्शन आवश्यकताओं को देखते हुए, आप उन्हें निश्चित रूप से एक आभासी मशीन में चला सकते हैं। VMware प्लेयर, वर्चुअल पीसी और वर्चुअल बॉक्स के साथ, उनमें से एक को भी आज़माने का कोई कारण नहीं है, अगर आपके पास 32 बिट का विंडोज लाइसेंस है। यदि आप इसके साथ खिलवाड़ नहीं करना चाहते हैं, तो वे संभवतः "विंडोज एक्सपी मोड" के तहत भी काम करेंगे।
मार्क बूथ

6
BTW, 32-बिट एप्लिकेशन 2 GiB से अधिक रैम का उपयोग नहीं करेंगे जब तक कि उनके प्रदर्शन में एक विशिष्ट ध्वज सक्षम न हो। स्रोत: blogs.technet.com/b/markrussinovich/archive/2008/11/17/…
Hello71

हां, मुझे यकीन है कि Hello71 ने कुछ महत्वपूर्ण हिट किया है जो यहां कवर नहीं किया गया है: अधिकांश 32-बिट ऐप्स सीधे अतिरिक्त रैम का लाभ नहीं लेंगे। मुझे लगता है कि यह ध्यान देने योग्य है, नहीं?
Django रेनहार्ड्ट

107

मूल रूप से आप सब कुछ बड़े पैमाने पर कर सकते हैं:

  1. OS प्रति RAM: OS के लिए x86 पर 4GB की रैम सीमा (अधिकांश समय)
  2. प्रति प्रक्रिया RAM : प्रक्रियाओं के लिए x86 पर रैम की 4GB की सीमा (हमेशा)। अगर आपको लगता है कि यह महत्वपूर्ण नहीं है, तो एक विशाल MSSQL डेटाबेस गहन एप्लिकेशन को चलाने का प्रयास करें। यदि आपके पास यह उपलब्ध है तो यह> 4GB का उपयोग करेगा और बेहतर तरीके से चलाएगा।
  3. पते: पते 32 बिट्स के बजाय 64 बिट हैं जो आपको "बड़ा" प्रोग्राम करने की अनुमति देते हैं जो अधिक मेमोरी का उपयोग करते हैं।
  4. कार्यक्रमों के लिए उपलब्ध हैंडल: आप अधिक फ़ाइल हैंडल, प्रक्रियाएँ बना सकते हैं ... उदाहरण के लिए Windows x64 पर आप प्रति प्रक्रिया> 2000 थ्रेड बना सकते हैं, लेकिन x86 पर कुछ सौ के करीब।
  5. उपलब्ध व्यापक कार्यक्रम: एक x64 से आप x86 और x64 दोनों प्रोग्राम चला सकते हैं। (उदाहरण खिड़कियां: wow64, windows32 windows64 एमुलेशन पर)
  6. अनुकरण विकल्प: एक x 64 से आप x86 और x64 VMs दोनों चला सकते हैं।
  7. तेज़: 64-बिट CPU पर कुछ गणनाएँ तेज़ होती हैं
  8. कई सिस्टम संसाधनों को विभाजित करना: जब आप कम से कम एक वीएम चलाना चाहते हैं जो आपके सिस्टम संसाधनों को विभाजित करता है, तो बहुत सारी रैम मेमोरी बहुत महत्वपूर्ण है।
  9. उपलब्ध विशेष कार्यक्रम: कई नए कार्यक्रम केवल x64 का समर्थन करते हैं। उदाहरण एक्सचेंज 2007।
  10. भविष्य अप्रचलित x86 ?: समय के साथ अधिक से अधिक 64-बिट का उपयोग किया जाएगा और अधिक से अधिक x86 का उपयोग नहीं किया जाएगा। इसलिए विक्रेता केवल 64-बिट अधिक से अधिक का समर्थन करेंगे।

64-बिट आर्किटेक्चर के 2 बड़े प्रकार x64 और IA64 आर्किटेक्चर हैं। लेकिन x64 अब तक का सबसे लोकप्रिय है।

x64 x86 कमांड के साथ-साथ x64 कमांड चला सकते हैं। IA64 x86 कमांड भी चलाता है, लेकिन यह SSE एक्सटेंशन नहीं करता है। X86 निर्देशों को चलाने के लिए इटेनियम पर समर्पित हार्डवेयर है; यह एक एमुलेटर है, लेकिन हार्डवेयर में।

जैसा कि @Phil में बताया गया है कि आप यहाँ कैसे काम करते हैं, इसका गहन विवरण प्राप्त कर सकते हैं


1
उम। IA64 x86 कमांड चलाता है। यह SSE एक्सटेंशन नहीं करता है, हालांकि। X86 निर्देशों को चलाने के लिए इटेनियम पर समर्पित हार्डवेयर है; यह एक एमुलेटर है, लेकिन हार्डवेयर में।
tzot 14

2
कुछ साल पहले, रेमंड चेन ने 2000 थ्रेड "सीमा" के बारे में पोस्ट किया, और यह कमोबेश एक शहरी किंवदंती है: blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspx
bk1s

उनके स्पष्टीकरण के लिए अरस्टेनिका के लिए अपवोट।
अवीहू तुरज़ियन

2
4 जीबी की रैम सीमा काफी हद तक सही नहीं है (यह घरेलू उपयोगकर्ताओं विंडोज सिस्टम पर डाली गई एक कृत्रिम सीमा है), पीएई की जांच करें । अधिकांश अप-टू-डेट हार्डवेयर के साथ, एक लिनक्स पीएई कर्नेल (जो कि 32 बिट के लिए डिफ़ॉल्ट रूप से उपयोग किया जाता है) 4 जीबी से अधिक बस ठीक को संबोधित कर सकता है। वही FreeBSD और NetBSD पर लागू होता है।
इज़्ज़ल

32 बिट सिस्टम उस "पते" (3 डी पंच) के कारण 4GB (1 punct) से अधिक का उपयोग नहीं कर सकता। क्योंकि उच्चतम 32bit संख्या 4.294.967.296 (= 4GB) है। तो आपके पहले और तीसरे पंच एक ही हैं। आप 3 पंक्चर निकाल सकते हैं। :)
जेट

46

लोगों को इस समय जो सबसे बड़ा प्रभाव दिखाई देगा वह यह है कि एक 32 बिट पीसी अधिकतम 4GB मेमोरी को ही संबोधित कर सकता है। जब आप ऑपरेटिंग सिस्टम द्वारा अन्य उपयोगों के लिए आवंटित मेमोरी को बंद कर देते हैं, तो आपका पीसी संभवतः केवल 3.25GB की बेकार मेमोरी दिखाएगा। 64 बिट पर जाएं और यह सीमा गायब हो जाती है।

यदि आपका गंभीर विकास हो रहा है तो यह बहुत महत्वपूर्ण हो सकता है। कई वर्चुअल मशीन चलाने की कोशिश करें और आप जल्द ही मेमोरी से बाहर हो जाएं। सर्वर को अतिरिक्त मेमोरी की आवश्यकता होती है और इसलिए आप पाएंगे कि 64 बिट का उपयोग डेस्कटॉप की तुलना में सर्वरों पर कहीं अधिक है। मूर का नियम यह सुनिश्चित करता है कि हमारे पास मशीनों पर कभी भी अधिक मेमोरी होगी और इसलिए कुछ बिंदुओं पर डेस्कटॉप मानक के अनुसार 64 बिट पर भी स्विच करेगा।

प्रोसेसर अंतर के अधिक विस्तृत विवरण के लिए, ArsTechnica के इस उत्कृष्ट लेख को देखें


7
32-बिट प्लेटफ़ॉर्म और 4GB सीमा कुछ मिथ्या नाम है और (है) मुख्य रूप से एक ऑपरेटिंग सिस्टम आर्किटेक्चर चॉइस / डिज़ाइन सीमा है। वास्तव में, 32-बिट्स से 4GB वास्तव में VA प्रक्रिया में एक सीमा पर है। भौतिक पता इंटेल 32-बिट सीपीयू पर 36-बिट्स का समर्थन करता है
टॉल जेफ

1
आप एक अच्छा बिंदु बनाते हैं जो निश्चित रूप से सच है। लेकिन पीसी उपयोगकर्ताओं की वास्तविक दुनिया में प्रभाव यह है कि वहाँ मशीन पूर्ण 4GB का उपयोग करने वाली नहीं है जो उन्होंने भुगतान किया था। मेरे पिताजी के पास यह मुद्दा था और अभी भी यह भ्रम है कि उनके द्वारा भुगतान की गई 4 जीबी का पूरी तरह से उपयोग नहीं किया जा सकता है।

2
अपनी बात को सराहें, लेकिन सिर्फ इस धारणा को चलाने की कोशिश करें कि फिक्स प्रोसेसर में नहीं है या 64-बिट पर जा रहा है, यह थोड़े बेहतर ओएस डिजाइन की बात है। यह संबोधित किया जाता है, उदाहरण के लिए, 32-बिट संस्करणों में भी विंडोज के एंटरप्राइज़ संस्करणों पर। यह 64GB रैम के लिए अनुमति देता है।
टॉल जेफ़

तकनीकी रूप से, सीमा गायब नहीं होती है। यह अगले दशक में किसी भी समय किसी मशीन पर उस रैम को स्थापित करने के लिए अव्यावहारिक / असंभव है जहां यह आगे बढ़ता है।

उपरोक्त PAE पर मेरी टिप्पणी देखें : 4GB की सीमा पूरी प्रणाली के लिए सही नहीं है - लेकिन केवल एकल प्रक्रियाओं पर लागू होती है (कोई भी प्रक्रिया 4GB और अपने आप तक पहुँच नहीं सकती है - लेकिन संपूर्ण प्रणाली, यानी सभी प्रक्रियाएँ, PAE सक्षम हो सकती हैं) )। इसलिए जब तक किसी के पास ऐसे एप्लिकेशन न हों, जो 4GB और उससे ऊपर (जैसे वीडियो एडिटर / बड़ी वीडियो फ़ाइलों के साथ कन्वर्टर्स) का उपयोग करने में सक्षम हों और 8GB + इंस्टॉल किया गया हो, तो यह 32 बिट या 64 बिट का उपयोग करते हुए बहुत अंतर नहीं करना चाहिए।
इज़्ज़ी

31

कुछ भी मुफ्त नहीं है: हालांकि 64-बिट एप्लिकेशन 32-बिट अनुप्रयोगों की तुलना में अधिक मेमोरी तक पहुंच सकते हैं , नकारात्मक पक्ष यह है कि उन्हें अधिक मेमोरी की आवश्यकता है । उन सभी पॉइंटर्स को जिन्हें 4 बाइट्स की आवश्यकता थी, अब उन्हें 8. की आवश्यकता है। उदाहरण के लिए, Emacs में डिफ़ॉल्ट आवश्यकता 60% अधिक मेमोरी है जब यह 64-बिट आर्किटेक्चर के लिए बनाया गया है। यह अतिरिक्त पदचिह्न मेमोरी पदानुक्रम के हर स्तर पर प्रदर्शन को नुकसान पहुंचाता है: बड़े निष्पादन योग्य डिस्क से लोड होने में अधिक समय लेते हैं, बड़े काम करने वाले सेट अधिक पेजिंग का कारण बनते हैं और बड़ी वस्तुओं का मतलब प्रोसेसर कैश में कम फिट होता है। यदि आप 16K L1 कैश वाले CPU के बारे में सोचते हैं, तो एक 32-बिट एप्लिकेशन मिस होने से पहले 4096 पॉइंटर्स के साथ काम कर सकता है और L2 कैश में जा सकता है, लेकिन 64-बिट एप्लिकेशन को सिर्फ 2048 पॉइंटर्स के बाद L2 कैश के लिए पहुंचना होगा।

X64 पर यह अन्य आर्किटेक्चरल सुधारों जैसे अधिक रजिस्टरों द्वारा कम किया जाता है, लेकिन PowerPC पर यदि आपका एप्लिकेशन> 4G का उपयोग नहीं कर सकता है तो "ppc64" की तुलना में "ppc" पर तेजी से चलने की संभावना है। इंटेल पर भी x86 पर तेजी से चलने वाले वर्कलोड हैं, और कुछ x 64 की तुलना में x64 पर 5% से अधिक तेजी से चलते हैं।


2
यह उत्तर बताता है कि PowerPC64 x86-64 जितना अच्छा नहीं है। सच तो यह है कि पॉवरपैक ६४ में पॉवरपैक में सुधार नहीं हुआ, क्योंकि पॉवरपैक नहीं तोड़ा गया।
21-20 बजे ctrl-alt-delor-

3
Linux में अब x32 ABI है, जिसमें x86-64 के सभी स्पीड बेनिफिट्स (अधिक रजिस्टर, पुनः डिज़ाइन किए गए ABI) हैं, लेकिन 32 बिट पॉइंटर्स के साथ। +1 इंगित करने के लिए कि 64 बिट मोड का लाभ वास्तविक चौड़ाई में वृद्धि से नहीं है, लेकिन बहुत सारे सामान को गिराने के मौके से जो आर्किटेक्चर को पकड़े हुए था। 64bit regs में कुछ अनुप्रयोगों के लिए मूल्य है, लेकिन 64bit सूचक स्थान कम अक्सर आवश्यक है।
पीटर कॉर्ड्स

19

64-बिट OS अधिक रैम का उपयोग कर सकता है। इसके बारे में, व्यवहार में है। 64-बिट विस्टा / 7, जहां वे रैम में महत्वपूर्ण घटक रखते हैं, के लिए कट्टर सुरक्षा सुविधाओं का उपयोग करते हैं, लेकिन यह वास्तव में 'ध्यान देने योग्य' नहीं है।

ChrisInEdmonton से:

PAE के साथ ix86 सिस्टम पर 32-बिट ऑपरेटिंग सिस्टम 64 जीबी तक रैम को संबोधित कर सकता है। X86-64 पर 64-बिट ऑपरेटिंग सिस्टम 256 टीबी के वर्चुअल एड्रेस स्पेस तक पहुंच सकता है, हालांकि इसे बाद के प्रोसेसर में 16 ईबी तक बढ़ाया जा सकता है। ध्यान दें कि कुछ ऑपरेटिंग सिस्टम एड्रेस स्पेस को और सीमित करते हैं, और अधिकांश मदरबोर्ड में अतिरिक्त प्रतिबंध होंगे।


4
एक OS के लिए, 32-बिट बनाम 64-बिट केवल बिंदुओं के आकार (आपके पहले पैराग्राफ की सही चर्चा करता है) को संदर्भित करता है। -1: कुछ OS, डिफॉल्ट पूर्णांक आकार को पॉइंटर साइज़ में लॉक करने के लिए चुनते हैं, लेकिन न तो विंडोज और न ही लिनक्स ऐसा करते हैं। पूर्णांक गणित सटीक अपरिवर्तित है। कोई व्यापक रूप से उपयोग किया जाने वाला ओएस फ्लोटिंग पॉइंट परिशुद्धता (दूसरा पैराग्राफ का दावा क्या है) को बदलता है। "फ्लोट" या "सिंगल" 32-बिट्स है, "डबल" 64-बिट्स है, चाहे ओएस 32-बिट या 64-बिट पॉइंटर्स का उपयोग करता हो।
श्री फूज

आह, मैं स्पष्ट रूप से गलत था, कि क्लीयर करने के लिए धन्यवाद :)
18

कोई दिक्कत नहीं है। -1 -> +1
श्री फूज

यह बताने के लिए अपने जवाब को संपादित करने के लायक हो सकता है कि कितनी रैम तक पहुँचा जा सकता है। पीएई के साथ एक ix86 प्रणाली पर 32-बिट ऑपरेटिंग सिस्टम 64 जीबी तक रैम को संबोधित कर सकता है। X86-64 पर 64-बिट ऑपरेटिंग सिस्टम 256 टीबी के वर्चुअल एड्रेस स्पेस तक पहुंच सकता है, हालांकि इसे बाद के प्रोसेसर में 16 ईबी तक बढ़ाया जा सकता है। ध्यान दें कि कुछ ऑपरेटिंग सिस्टम एड्रेस स्पेस को और सीमित करते हैं, और अधिकांश मदरबोर्ड में अतिरिक्त प्रतिबंध होंगे।
क्रिसइंमोंटॉन

मैं इसे सरल रखने के लिए, के रूप में नंबर दिए गए हैं चाहता था ज्यादातर काफी अधिक समय अप्रासंगिक है, लेकिन यह उन्हें अब में रहना चोट नहीं कर सकते हैं।
फोजी

14

यकीन नहीं है कि मैं आपके सभी सवालों के जवाब एक पूरे निबंध को लिखे बिना कर सकता हूं (यह हमेशा Google है ...), लेकिन आपको 64 बिट के लिए अपने ऐप को अलग तरीके से डिज़ाइन करने की आवश्यकता नहीं है। मुझे लगता है कि जो संदर्भित किया जा रहा है, वह यह है कि आपको चीजों से सावधान रहना होगा, जैसे कि पॉइंटर आकार अब चींटियों के समान आकार नहीं हैं। और आपके पास चार बाइट्स वाले कुछ प्रकार के डेटा पर इनबिल्ट मान्यताओं के साथ संभावित समस्याओं का एक पूरा भार है जो अब सच नहीं हो सकता है।

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

मुझे लगता है कि यह एक डिजाइन के बजाय एक कार्यान्वयन मुद्दा है। Ie मुझे लगता है कि कहने का "डिजाइन", एक फोटो एडिटिंग पैकेज वही होगा जो कुछ भी शब्द कहता है। हम कोड लिखते हैं जो 32 बिट और 64 बिट दोनों संस्करणों के लिए संकलित है, और निश्चित रूप से डिजाइन दोनों के बीच भिन्न नहीं है - यह एक ही कोडबेस है।

64 बिट पर मौलिक "बड़ा सौदा" यह है कि आप 32 बिट की तुलना में बहुत बड़े मेमोरी एड्रेस स्थान तक पहुंच प्राप्त करते हैं। इसका मतलब है कि आप वास्तव में अपने कंप्यूटर में 4 जीबी से अधिक मेमोरी में चक सकते हैं और वास्तव में इससे फर्क पड़ता है।

मुझे यकीन है कि अन्य उत्तर I से अधिक विवरण और लाभों में जाएंगे।

अंतर का पता लगाने के संदर्भ में, फिर प्रोग्रामिक रूप से आप केवल एक पॉइंटर (जैसे आकार) (शून्य *) के आकार की जांच करते हैं। 4 के जवाब का मतलब है इसके 32 बिट्स, और 8 का मतलब है कि आप 64 बिट के वातावरण में चल रहे हैं।


4
यदि आप ऐसे प्रोग्राम लिखते हैं जो आकस्मिक रूप से मान लेते हैं कि कुछ सूचक प्रकार कुछ अभिन्न प्रकार के समान हैं, तो इसे रोंग करते हैं। यह लंबे समय से सच है।
डेविड थॉर्नले

@ डेविड: आप बिलकुल सही कह रहे हैं। दुर्भाग्य से, वहाँ कोड का एक टन है कि वास्तव में ऐसा करता है।

10

एक 32 बिट प्रक्रिया में 4 जीबी का वर्चुअल एड्रेस स्पेस होता है; यह कुछ ऐप्स के लिए बहुत कम हो सकता है। 64 बिट ऐप में वस्तुतः असीमित पता स्थान होता है (निश्चित रूप से यह सीमित है, लेकिन आप संभवतः इस सीमा को नहीं मारेंगे)।

OSX पर अन्य फायदे हैं। निम्न लेख देखें , क्यों 64 बिट एड्रेस स्पेस में कर्नेल रन होता है (भले ही आपका ऐप 64 या 32 रन करता हो) या आपके ऐप को 64 बिट एड्रेस स्पेस में चलाते हुए (जबकि कर्नेल अभी भी 32 बिट है) बहुत बेहतर प्रदर्शन की ओर ले जाता है। संक्षेप में: यदि 64 बिट (कर्नेल या ऐप या दोनों में से कोई एक) है, तो टीएलबी ("ट्रांसलेशन लुकसाइड बफर") को तब भी फ्लश नहीं करना होगा जब आप स्पेस और बैक का उपयोग करने के लिए कर्नेल से स्विच करेंगे (जो गति देगा ऊपर RAM पहुँच)।

"लंबे लंबे int" चर (64 बिट चर जैसे uint64_t) के साथ काम करने पर आपको प्रदर्शन लाभ होता है। एक 32 बिट सीपीयू दो 64 बिट मूल्यों को जोड़ / घटा / घटा / बढ़ा सकता है, लेकिन एक भी हार्डवेयर ऑपरेशन में नहीं। इसके बजाय इस ऑपरेशन को दो (या अधिक) 32 बिट ऑपरेशन में विभाजित करने की आवश्यकता है। तो 64 बिट नंबर के साथ बहुत काम करने वाले ऐप को हार्डवेयर में सीधे 64 बिट गणित करने में सक्षम होने की गति प्राप्त होगी।

अंतिम लेकिन कम से कम x86-64 आर्किटेक्चर क्लासिक x86 आर्किटेक्चर की तुलना में अधिक रजिस्टरों की पेशकश नहीं करता है। रजिस्टरों के साथ काम करना रैम के साथ काम करने की तुलना में बहुत तेज है और सीपीयू के पास जितना अधिक रजिस्टर है, उतनी ही बार इसे रैम और रजिस्टर में वापस रजिस्टर मूल्यों को स्वैप करने की आवश्यकता होती है।

यह पता लगाने के लिए कि आपका CPU 64 बिट मोड में चल सकता है, आप विभिन्न sysctl चर देख सकते हैं। जैसे एक टर्मिनल खोलें और टाइप करें

sysctl machdep.cpu.extfeatures

यदि यह EM64T को सूचीबद्ध करता है, तो आपका CPU x86-64 मानक के अनुसार 64 बिट पता स्थान का समर्थन करता है। आप भी देख सकते हैं

sysctl hw.optional.x86_64

यदि यह 1 (सच्चा / सक्षम) कहता है, तो आपका CPU x86-64 बिट मोड का समर्थन करता है, यदि यह 0 (गलत / अक्षम) कहता है, तो यह नहीं है। यदि सेटिंग बिल्कुल नहीं मिली है, तो इसे गलत मानें।

नोट: आप एक देशी C ऐप के भीतर से sysctl चर ला सकते हैं, कमांड लाइन टूल का उपयोग करने की कोई आवश्यकता नहीं है। देख

man 3 sysctl

त्रुटि: "machdep.cpu.extfeatures" एक अज्ञात कुंजी है

मुझे लगता है कि इसे EM64T नहीं कहा जाता है, साथ ही, यदि आप बुद्धि के लिए दुर्भाग्यपूर्ण नहीं हैं।

9

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

इस सूत्र में कही गई कुछ बातें (जैसे # रजिस्टर का दोहराव) केवल x86-> x86_64 पर लागू होती हैं, सामान्य रूप से 64-बिट पर नहीं। बस इस तथ्य की तरह कि x86_64 के तहत एक गारंटी में SSE2, 686 opcodes और PIC करने का एक सस्ता तरीका है। ये सुविधाएँ सख्ती से 64-बिट के बारे में नहीं हैं, लेकिन विरासत को काटने और ज्ञात x86 सीमाओं को हटाने के बारे में हैं

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

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

आमतौर पर संरेखण ओवरहेड 64-बिट आर्किटेक्चर पर भी बड़ा होता है (रिकॉर्ड 32-बिट पहले केवल अक्सर 32-बिट और 64-बिट मान का मिश्रण बन जाता है), संरचनाओं को और भी अधिक उड़ा देता है।

कुल मिलाकर, मेरे सरल परीक्षणों से पता चलता है कि वे लगभग एक-दूसरे को रद्द कर देंगे, अगर ड्राइवरों और रनटाइम लाइब्रेरी ने पूरी तरह से अनुकूलित किया है, जिससे औसत ऐप के लिए कोई महत्वपूर्ण गति अंतर नहीं है। हालाँकि कुछ ऐप अचानक तेज़ हो सकते हैं (जैसे जब एईएस पर निर्भर करता है) या धीमे (महत्वपूर्ण डेटास्ट्रक्चर को लगातार चारों ओर घुमाया / स्कैन / चलाया जाता है और बहुत सारे पॉइंटर्स होते हैं)। हालांकि परीक्षण विंडोज पर थे, और इसलिए PIC इष्टतमकरण को बेंचमार्क नहीं किया गया था।

ध्यान दें कि अधिकांश JIT-VM भाषाएँ (Java, .NET) उदाहरण के लिए C ++ की तुलना में औसतन (आंतरिक रूप से) अधिक महत्वपूर्ण बिंदुओं का उपयोग करती हैं। संभवतः उनका मेमोरी उपयोग औसत कार्यक्रम की तुलना में अधिक बढ़ जाता है, लेकिन मैं इसे धीमा करने के प्रभावों की बराबरी करने की हिम्मत नहीं करता हूं (क्योंकि ये वास्तव में जटिल और कायर जानवर हैं और अक्सर मापने के बिना भविष्यवाणी करना मुश्किल है)

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

(*) एक छोटा ज्ञात तथ्य यह है कि एसएसई रजिस्टरों की संख्या भी 64-बिट मोड में दोगुनी हो जाती है

(**) डॉ। डॉब्स ने कुछ साल पहले इसके बारे में एक अच्छा लेख लिखा था।


8

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

वॉल्यूम 4 पर एक नज़र डालें, मैं जिस शांत चाल के बारे में बात कर रहा हूं, उसके कुछ उदाहरणों के लिए पूर्व-फ़ासिकल 1 ए।


7

अधिक मेमोरी x86_64 को संबोधित करने की क्षमता के अलावा, अधिक रजिस्टरों को संकलक को अधिक कुशल कोड उत्पन्न करने की अनुमति देता है। प्रदर्शन में सुधार आमतौर पर हालांकि काफी छोटा होगा।

X86_64 आर्किटेक्चर x86 के साथ पीछे की ओर संगत है। अनमॉडिफाइड 32-बिट ऑपरेटिंग सिस्टम को चलाना संभव है। 64-बिट OS से अनमॉडिफाइड 32-बिट सॉफ़्टवेयर चलाना भी संभव है। हालांकि सभी सामान्य 32-बिट पुस्तकालयों की आवश्यकता होगी। उन्हें अलग से स्थापित करने की आवश्यकता हो सकती है।


अधिक रजिस्टरों, और एक नए सिरे से तैयार किए गए एबीआई (रजिस्टर में फ़ंक्शन आर्ग्स) आमतौर पर 10 से 15% स्पीडअप होता है, जो बहुत ही सभ्य है। अब 32 बिट पॉइंटर्स के साथ एक एक्स 32 लिनक्स एबीआई है, लेकिन एमड64 लॉन्ग मोड का उपयोग करते हुए, और कॉग-इन-रजिस्टरों को कन्वेंशन कहते हैं। तो आपके पास amd64 के सभी गति लाभ हैं, लेकिन हर पॉइंटर के लिए 64 बिट्स की आवश्यकता के ओवरहेड के बिना। यह (वर्चुअल) मेमोरी की 4GB की जरूरत नहीं है कि सब कुछ के लिए अच्छा है।
पीटर कॉर्ड्स

6

यह धागा बहुत पहले से ही है, लेकिन ...

अधिकांश उत्तर इस तथ्य पर ध्यान केंद्रित करते हैं कि आपके पास एक बड़ा, 64-बिट पता स्थान है, इसलिए आप अधिक मेमोरी को संबोधित कर सकते हैं। सभी अनुप्रयोगों के लगभग 99% के लिए, यह पूरी तरह से अप्रासंगिक है। बड़ा हूप।

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

इसके अलावा, 64-बिट के लिए सबरूटीन कॉलर / कैली कन्वेंशन को रजिस्टरों में पारित किए गए अधिकांश मापदंडों को रखने के लिए परिभाषित किया गया है, बजाय कॉल करने वाले को स्टैक पर धक्का दिए और कैली को बंद किए हुए।

तो एक "विशिष्ट" C / C ++ एप्लिकेशन को 64-बिट के लिए पुन: उपयोग करके लगभग 10% या 15% प्रदर्शन सुधार मिलेगा। (मान लें कि ऐप का कुछ हिस्सा गणना के लिए बाध्य था। बेशक, यह ग्वारेंटेड नहीं है; सभी कंप्यूटर समान गति की प्रतीक्षा करते हैं। आपका माइलेज मई वेरिए।)


जबकि x86 की तुलना में x64 के लिए निर्देश सेट बेहतर है, जो आमतौर पर महत्वहीन होगा। 64-बिट कोड 32-बिट की तुलना में धीमा हो सकता है, इसलिए भी, क्योंकि निर्देश बड़े हो सकते हैं, इसलिए उनमें से कम कैश में फिट होते हैं। (लूप्स को नियंत्रित करना, BTW, आजकल एक बहुत ही संदेहास्पद तकनीक है, क्योंकि यह कैश मिस की संख्या को बढ़ाएगा।) जहां मैं काम करता हूं, वहां मेमोरी मेमोरी एड्रेसिंग के लिए हमें 64 बिट्स की आवश्यकता होती है।
डेविड थॉर्नले

डेविड, X64 और x86 निर्देश सेट लगभग समान हैं, केवल ऑपरेंड के आकार और कुछ रजिस्टर उपसर्गों को छोड़कर। IA64, उर्फ ​​इटेनियम उर्फ ​​इटानिक के साथ, 64-बिट कोड आमतौर पर x86 कोड 3x होगा, और निर्देश कैश को ठीक उसी तरह से तनाव दें जैसा आप कहते हैं। यह एक बड़ा कारण था कि यह वास्तुकला बुरी तरह विफल रही। लेकिन x86 उर्फ ​​AMD64 उर्फ ​​EM64T के साथ, कोड वृद्धि आमतौर पर केवल 10-20% है।

यद्यपि x64 अधिक रजिस्टरों को पता योग्य बनाता है , मुझे यकीन नहीं है कि यह वास्तव में उपलब्ध भौतिक रजिस्टरों की संख्या को बढ़ाता है - सभी हालिया x86 प्रोसेसर में कई (> 100) "छाया" रजिस्टर हैं, और "रजिस्टर नामकरण" + सट्टा निष्पादन का उपयोग करें स्वतंत्र डिग्री पथ को एक डिग्री के समानांतर निष्पादित करने की अनुमति देने के लिए। वास्तव में, यदि n स्वतंत्र कोड पथ निष्पादित हो रहा है, तो n कई बार रजिस्टर उपलब्ध हैं (जब तक कि सभी छाया रजिस्टर बाहर न निकल जाएं)।

@j_random_hacker। आप बिलकुल सही कह रहे हैं कि वास्तुकला के नीचे वे चालें चल रही हैं। लेकिन कोई फर्क नहीं पड़ता कि कितने छाया रजिस्टर उपलब्ध हैं, यदि प्रोग्राम को 8 से अधिक डेटा आइटमों के साथ काम करने की आवश्यकता है और केवल 8 रजिस्टरों को निर्देश सेट में उजागर किया गया है, तो कंपाइलर को स्टोर / रीलोड निर्देश उत्पन्न करना होगा । तो हाँ, X64 वास्तव में दो बार कई रजिस्टर "उपलब्ध" करता है

मेरा अनुभव यह है कि यह रास्ता कम है, और इस तथ्य से ऑफसेट किया जाता है कि जिस एवीजी मेमब्लॉक को स्थानांतरित किया जाना है वह बड़ा है।
मार्को वैन डे वोयर्ट

6

पहले से उल्लेखित लाभों के अलावा यहां सुरक्षा के संबंध में कुछ और भी हैं:

  • x86_64 cpus में उनके पृष्ठ तालिकाओं में कोई-निष्पादित बिट नहीं है। यानी यह बफर ओवररन के कारण होने वाले धर्मनिरपेक्ष कारनामों को रोक सकता है। 32-बिट x86 cpus केवल PAE मोड में इस सुविधा का समर्थन करते हैं।
  • बड़ा पता स्थान बेहतर पता स्थान लेआउट रेंडमाइजेशन (ASLR) की अनुमति देता है जो बफर के दोहन को कठिन बना देता है।
  • x86_64 cpus फीचर पोज़िशन-इंडिपेंडेंट कोड यानी डेटा एक्सेस, इंस्ट्रक्शन पॉइंटर रजिस्टर (RIP) के सापेक्ष।

एक और लाभ जो दिमाग में आता है वह यह है कि vmalloc()लिनक्स कर्नेल के साथ आवंटित आभासी सन्निहित स्मृति की मात्रा 64 बिट मोड में बड़ी हो सकती है।


5

32-बिट मशीन के साथ आपके पास पता करने के लिए केवल 4,294,967,295 बाइट्स हैं। 64-बिट मशीन के साथ आपके पास 1.84467441 × 10 ^ 19 बाइट्स मेमोरी है।

विकिपीडिया यह कहता है

64-बिट प्रोसेसर 32-बिट वातावरण में काम करने के रूप में दो बार के रूप में उपवास के रूप में विशेष कार्यों (जैसे बड़े आंकड़े के factorials) की गणना (दिए गए उदाहरण 32-बिट और 64-बिट विंडोज कैलकुलेटर के बीच तुलना से ली गई है; )। यह 64-बिट अनुकूलित अनुप्रयोगों की सैद्धांतिक संभावनाओं की एक सामान्य भावना देता है।

जबकि 64-बिट आर्किटेक्चर निर्विवाद रूप से डिजिटल वीडियो, वैज्ञानिक कंप्यूटिंग, और बड़े डेटाबेस जैसे अनुप्रयोगों में बड़े डेटा सेट के साथ काम कर रहे हैं, वहाँ इस बात पर काफी बहस हुई है कि क्या वे या उनके 32-बिट संगतता मोड तुलनात्मक रूप से कीमत से अधिक तेज़ होंगे अन्य कार्यों के लिए 32-बिट सिस्टम। X86-64 आर्किटेक्चर (AMD64) में, 32-बिट ऑपरेटिंग सिस्टम और एप्लिकेशन के अधिकांश भाग 64-बिट हार्डवेयर पर आसानी से चलने में सक्षम हैं।

सूर्य की 64-बिट जावा वर्चुअल मशीनें अपने 32-बिट वर्चुअल मशीनों की तुलना में धीमी गति से शुरू होती हैं क्योंकि सन ने केवल 64-बिट प्लेटफार्मों के लिए "सर्वर" JIT कंपाइलर (C2) को लागू किया है। [९] "क्लाइंट" JIT कंपाइलर (C1), जो कम कुशल कोड का उत्पादन करता है, लेकिन बहुत तेजी से संकलित करता है, 64-बिट प्लेटफार्मों पर उपलब्ध नहीं है।

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


2
भौतिक पता बस की लंबाई स्वतंत्र है चाहे वह 32 या 64-बिट प्रोसेसर हो। कुछ 32-बिट प्रोसेसर में 32 बिट्स से बड़ी बसें होती हैं, और 64-बिट प्रोसेसर में 64-बिट एड्रेस बस नहीं होती है।

1
माना। सिद्धांत रूप में, पता स्थान 2 ^ 64 है। व्यवहार में, सीपीयू निर्माता छोटे मूल्यों का उपयोग कर रहे हैं ... जैसे 2 ^ 40 या 2 ^ 48।
स्टु थॉम्पसन

5

Microsoft.com से उद्धरण:

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

MS-टेबल


2
दिलचस्प है, लेकिन ध्यान देने योग्य है कि विंडोज के कुछ 32-बिट संस्करण अधिक भौतिक स्मृति के लिए अनुमति देते हैं। उदाहरण के लिए देखें, en.wikipedia.org/wiki/…
ChrisInEdmonton

@ChrisInEdmonton सिस्टम 4GB या मेमोरी से अधिक का समर्थन करता है लेकिन प्रत्येक प्रक्रिया के लिए पता अभी भी 2GB (बड़े पते के साथ 3GB) तक सीमित है। तो भले ही आपके सिस्टम में बहुत सारी मेमोरी हो, फिर भी यह उन प्रोग्रामों की मदद नहीं करता है जो मेमोरी व्यापक हैं, और प्रदर्शन अभी भी 64-बिट संस्करण से पीछे है। इसके अलावा,
एएसएलआर

4

क्रिस्टोफ़ और पोशी ने 32 और 64 बिट ओएस के बीच मुख्य तकनीकी अंतर को बताया है 'उपयोगकर्ता का अनुभव आमतौर पर सिद्धांत से बहुत अलग होता है। Windows के 64 बिट उपभोक्ता संस्करण (XP और Vista) में उनके ड्राइवर समर्थन में बड़े अंतराल छेद हैं। मेरे पास कई प्रिंटर, स्कैनर, और अन्य बाहरी उपकरण हैं जो फ्लैट 64 बिट संस्करणों के साथ काम नहीं करते हैं जो 32 बिट संस्करणों के साथ ठीक काम करते हैं। ये ऐसे उपकरण हैं जिनमें 64 बिट ड्राइवर थे और वे अभी भी काम नहीं करेंगे। इस बिंदु पर मैं आपको कुछ भी आधारित उपभोक्ता से दूर रहने की सलाह दूंगा जो Microsoft से 64 बिट है जब तक आप यह नहीं सुनते कि विंडोज 7 इसे कैसे संभालता है, वास्तविक अंत-उपयोगकर्ताओं से, न कि केवल uber-geeks से, जिनके पास वर्तमान में इसकी पहुंच है। इसे कम से कम 6 महीने दें और देखें कि लोग क्या अनुभव कर रहे हैं।


कम ड्राइवर हो सकते हैं लेकिन यह वास्तव में उतना बुरा नहीं है जितना कि यह ध्वनि करता है। मैं 2007 से 64 बिट्स चला रहा हूं और कभी कोई कठिनाई नहीं हुई। ऐसा कहने के बाद, मेरे पास कोई अस्पष्ट या प्राचीन उपकरण नहीं हैं।
रोमनस्टॉक

1
विस्टा 64 बिट के साथ मेरा सबसे हाल ही में एक नया एचपी मल्टी फंक्शन प्रिंटर था जो पिछले महीने 2 महीने के डेल सिस्टम पर था। डेल और एचपी दोनों ने हार मान ली और मेरे ग्राहक ने मुझे XP प्रो पर डालने और विस्टा से छुटकारा पाने के लिए भुगतान किया। किसी भी इकाई के बारे में कुछ भी अस्पष्ट नहीं है।
केविन के

1
आमतौर पर यदि आप 64-बिट OS वाला कंप्यूटर खरीदते हैं, तो सब कुछ काम करेगा। मैं एक पुराने कंप्यूटर को अपडेट करने की कोशिश करने से पहले सावधान रहूंगा, या अगर मेरे पास एक पुराना प्रिंटर है, या अगर मुझे अपने आप को अपग्रेड करना पसंद है।
डेविड थॉर्नले

हार्डवेयर जो विंडोज के साथ वर्क्स को प्रमाणित करना चाहता है या विंडोज लोगो के साथ उपयोग के लिए प्रमाणित है, उसे 64-बिट ड्राइवरों की पेशकश करनी चाहिए । हो सकता है कि अगली बार के लिए देखो। लेकिन वास्तव में, कभी-कभी विक्रेता उपभोक्ता हार्डवेयर के लिए परेशान नहीं करते हैं क्योंकि अधिकांश उपभोक्ता अभी भी 32 बिट पर होंगे।
जॉय

2

कुछ खेल-खेल कार्यक्रम बिट-बोर्ड प्रतिनिधित्व का उपयोग करते हैं। उदाहरण के लिए शतरंज, चेकर्स और ओथेलो में 8x8 बोर्ड है, यानी 64 वर्ग, इसलिए मशीन शब्द में कम से कम 64 बिट्स होने से प्रदर्शन में मदद मिलती है।

मुझे एक शतरंज कार्यक्रम के बारे में पढ़ना याद है जिसका 64-बिट बिल्ड 32-बिट संस्करण के रूप में लगभग दोगुना था।


2

32-बिट और 64-बिट शब्द एक कंप्यूटर प्रोसेसर (जिसे सीपीयू भी कहा जाता है) को संदर्भित करता है, जानकारी को संभालता है। विंडोज के 64-बिट संस्करण 32-बिट सिस्टम की तुलना में बड़ी मात्रा में रैंडम एक्सेस मेमोरी (रैम) को प्रभावी ढंग से संभालते हैं।

मेरी राय में गति अलग हो सकती है


1

Microsoft विंडोज के संबंध में एक और बात यह है कि कई वर्षों से Win32 एपीआई है जो 32-बिट ऑपरेटिंग सिस्टम के लिए अभिप्रेत है और 64 बिट संकलन के लिए अनुकूलित नहीं है। जब मैं अपने अनुप्रयोगों के लिए कुछ DLL लिखता हूं, तो मैं आमतौर पर Win32 में संकलन करता हूं जो कि 64 बिट संस्करण नहीं है। विस्टा से पहले, विंडोज के कई सफल 64 बिट संस्करण नहीं हुए हैं, मेरा मानना ​​है कि जहां मैं काम करता हूं, वहां मेरी नई मशीन में 4 जीबी रैम है, लेकिन मैं अभी भी 32-बिट विंडोज एक्सपी प्रो का उपयोग कर रहा हूं क्योंकि यह एक ज्ञात स्थिर ओ है / XP64 या Vista के सापेक्ष।

मुझे लगता है कि आप यह भी देखना चाह सकते हैं कि जब 16-बिट से 32-बिट में शिफ्ट हुआ था, तो कुछ और डिटेल्स के लिए यह शिफ्ट कुछ लोगों के लिए बड़ी बात क्यों हो सकती है। मिशन-क्रिटिकल एप्लिकेशन जो एक कंपनी डेस्कटॉप पर चल सकती है, जैसे छोटे अकाउंटिंग पैकेज, 64-बिट ऑपरेटिंग सिस्टम पर नहीं चल सकते हैं और इस तरह एक विरासत मशीन को वर्चुअल या रियल के आसपास रखने की आवश्यकता है।

एक पते के आकार को बदलने से कुछ बड़े प्रभाव और नतीजे हो सकते हैं।


1

अधिकांश व्यावहारिक उद्देश्यों के लिए आप शायद अंतर नहीं देखेंगे।

64-बिट ऑपरेटिंग सिस्टम को स्थापित करने के लिए आपके पास 64-बिट CPU (पिछले कुछ वर्षों में अधिकांश CPU) होना चाहिए।

64-बिट ऑपरेटिंग सिस्टम के लिए कुछ फायदे हैं:

  • यह आपको 4GB से अधिक रैम चलाने की अनुमति देगा (32-बिट OS में आप जिस अधिकतम संख्या को संबोधित कर सकते हैं वह 2 ^ 32- 4GB है)
  • यह बड़े डेटा सेट (जैसे एक्सेल) और कुछ कम्प्यूटेशनल रूप से गहन कार्यों (जैसे फ़ोटोशॉप और बड़ी फ़ाइलों) के साथ काम करने के लिए सहायक है
  • आप केवल 64-बिट OS पर 64-बिट प्रोग्राम चला सकते हैं, लेकिन आप दोनों पर 32-बिट प्रोग्राम चला सकते हैं (ध्यान रखें कि बहुत सारे प्रोग्राम दोनों के रूप में आते हैं, इसलिए केवल 64-बिट प्रोग्राम ही नहीं हैं प्रोग्राम)।

अधिकांश परिदृश्यों में, 64-बिट प्रोग्राम थोड़ी अधिक मेमोरी का उपयोग करते हैं, लेकिन व्यक्तिगत कंप्यूटर के लिए, यह आमतौर पर ध्यान नहीं दिया जाता है।

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