X86 आर्किटेक्चर पर, भौतिक की तुलना में वर्चुअल एड्रेस स्पेस के लिए कम बिट्स क्यों हैं?


11

मैं 64 बिट कंप्यूटिंग पर इस लेख को पढ़ रहा था , और यह उल्लेख करता है:

उदाहरण के लिए, 2011 के रूप में AMD64 आर्किटेक्चर ने भौतिक मेमोरी के लिए 52 बिट्स और वर्चुअल मेमोरी के लिए 48 बिट्स की अनुमति दी

मुझे लगता है कि यह भौतिक स्मृति की तुलना में अधिक आभासी स्मृति के लिए अनुमति देने के लिए अधिक समझ में आता है, इसलिए यह वास्तव में आसपास का दूसरा तरीका क्यों है?

बोनस प्रश्न: 64 बिट आर्किटेक्चर पर 52 या 48 बिट्स के लिए "अनुमति" देने का क्या मतलब है? अन्य बिट्स किसके लिए उपयोग किए जाते हैं?


X86 के लिए, अप्रयुक्त VA बिट्स VA की MSbit का एक संकेत विस्तार होना चाहिए। (ARM AArch64 8 MSbit को हार्डवेयर द्वारा नजरअंदाज करने की अनुमति देने का विकल्प प्रदान करता है ताकि उन्हें टैग के लिए आसानी से उपयोग किया जा सके। अज़ुल सिस्टम्स वेगा प्रोसेसर - एक जावा उपकरण का हिस्सा - टैग के लिए उपयोग किए जाने वाले VA के 16 बिट्स प्रदान करता है।) पृष्ठ तालिका में, आरक्षित पीए बिट्स शून्य होना चाहिए (मुख्य रूप से यह सुनिश्चित करने के लिए कि सॉफ्टवेयर उनका उपयोग करने का प्रयास नहीं करता है और बाद के हार्डवेयर के साथ संगतता को तोड़ता है)।
पॉल ए। क्लेटन

जवाबों:


11

यहां एक AMD64 पेज टेबल (AMD आर्किटेक्चर प्रोग्रामर गाइड, वॉल्यूम 2, Rev 3.23, 2013, पृष्ठ 132 से) की एक तस्वीर है।

AMD64 Longmode पेज टेबल

AMD64 वास्तुकला में एक पृष्ठ का "प्राकृतिक" आकार 2 12 = 4096 बाइट्स है। (ऐसे मोड हैं जहां आपके पास 2 21 = 2 एमबी पेज हो सकते हैं , लेकिन हम उन्हें अभी के लिए अनदेखा कर रहे हैं।)

प्रत्येक पृष्ठ-तालिका प्रविष्टि (PTE) (या, PDE, PDPE या PML4E नामक स्तर के आधार पर) 64 बिट्स = 2 3 बाइट्स है। तो प्रति पृष्ठ 2 9 प्रविष्टियां हैं। इसलिए पेज टेबल के 4 स्तर आपको प्रति प्रोसेस वर्चुअल पते के 4x9 + 12 = 48 बिट्स मिलते हैं। पृष्ठ तालिका चलना महंगा है, इसलिए वे 5 या 6 स्तरों तक विस्तारित नहीं होंगे जब तक कि उपभोक्ता मांग न हो।

मुझे यकीन नहीं है कि उन्होंने 52-बिट भौतिक पते की सीमा क्यों तय की। इसे भविष्य में 63-बिट तक बढ़ाया जा सकता है। अक्टूबर 2013 की कीमतों पर (4Gbit चिप्स के लिए लगभग 1US $ / गिगाबिट) यह 2 52 बाइट मेमोरी बनाने के लिए 32,000,000.00 यूएस डॉलर से अधिक का खर्च आएगा , इसलिए भौतिक पता सीमा को बढ़ाने के लिए कोई महत्वपूर्ण मांग करने से पहले यह थोड़ी देर होगी। सभी प्रकार के कारण हैं कि आप भौतिक पतों को यथासंभव छोटा क्यों रखना चाहते हैं: टीएलबी और कैश टैग्स के लिए भौतिक पतों को पकड़ना है, उदाहरण के लिए।

यह जरूरी नहीं है कि आभासी की तुलना में अधिक भौतिक स्मृति है। वर्चुअल मेमोरी प्रति प्रक्रिया है जबकि भौतिक मेमोरी सभी प्रक्रियाओं द्वारा साझा की जाती है। तो 48-बिट वर्चुअल एड्रेस और 2 52 बाइट्स वाला एक सर्वर 16 एक साथ प्रक्रियाओं का समर्थन कर सकता है और फिर भी स्वैप की आवश्यकता नहीं होने की गारंटी देता है।


यह ध्यान देने योग्य हो सकता है कि कंप्यूटर वास्तुकारों ने हार्डवेयर द्वारा उपयोग किए जाने वाले ऊपरी बिट्स की आवश्यकता को सीखा है, आमतौर पर ओएस के लिए नकारात्मक पतों के सामान्य उपयोग के लिए साइन एक्सटेंशन के द्वारा ("अन्य बिट्स किसके लिए उपयोग किए जाते हैं?")। इसके अलावा, Ln निर्देशिका प्रविष्टि कैशिंग के साथ, एक 5-स्तरीय तालिका को अधिकांश समय पूरी तरह से चलने की आवश्यकता नहीं है। पीटीई बिट्स 52:62 सॉफ्टवेयर के लिए आरक्षित हैं, इसलिए संगतता को तोड़े बिना भौतिक पते के लिए उपयोग नहीं किया जा सकता है, 4KiB पृष्ठों को पीए के 52-बिट तक सीमित कर दिया है। इसके अलावा, लिनुस टॉर्वाल्ड्स पीएई (वीए> पीए के खिलाफ प्रसिद्ध रूप से गुस्से में हैं "पारंपरिक" ओएस डिजाइन को आसान बनाने में लगता है)।
पॉल ए। क्लेटन

"इसे भविष्य में 63-बिट तक बढ़ाया जा सकता है।" ठीक है, नहीं, पृष्ठ तालिका संरचना को बदले बिना नहीं। जैसा कि यह है, PxE के 62 में से 52 बिट्स ऑपरेटिंग सिस्टम के उपयोग के लिए आरक्षित हैं। और ओएस उनका उपयोग कर रहे हैं (विंडोज एक "वर्किंग सेट लिस्ट इंडेक्स" के लिए उस फ़ील्ड का उपयोग करता है), इसलिए प्रोसेसर आर्किटेक्ट उन्हें पीएफएन फ़ील्ड का विस्तार करने के लिए स्वतंत्र नहीं हैं। भविष्य में पीएई जैसा विकल्प होना निश्चित रूप से संभव होगा जो पीटी संरचना को बदल देगा ताकि पीएफएन के अधिक बिट्स की अनुमति मिल सके, लेकिन यह एक महत्वपूर्ण वास्तु परिवर्तन होगा।
जेमी हनराहन

3

कुछ बिंदुओं पर विचार करना, भौतिक रैम महंगा है। यकीन है कि 16 जीबी अब सस्ता है कि 4 जीबी केवल कुछ साल पहले था, लेकिन 2 ^ 64 (16 एक्साबाइट्स) हास्यास्पद रूप से बड़े हैं।

तो x64 के लिए x86 के एएमडी के एक्सटेंशन ने रजिस्टरों को सीमित करके "2" 52 तक की अनुमति दी । यह दो चीजें करता है, प्रोसेसर की लागत कम करता है और प्रदर्शन में सुधार करता है। अधिक रजिस्टरों का उपयोग नहीं किया जाता है इसका मतलब है कि बहुत सी खाली जगह है जो अभी भी संचालन के दौरान ध्यान में रखी जानी चाहिए।

और, अगर आप गणित के आदमी नहीं हैं ... तीन आकारों के बीच का अंतर बहुत बड़ा है! मैं कोई गणित गुरु नहीं हूं, लेकिन दशमलव 52 बिट 64.2% के बारे में है। 48 बिट 52 का 6% है। (कोई मेरे गणित की जांच करता है?)

क्योंकि एएमडी ने अधिक भौतिक रैम की अनुमति दी थी तब आभासी, लेख में कहा गया है कि एएमडी सर्वरों के बारे में सोच रहा था। सर्वर को बड़ी मात्रा में भौतिक रैम की आवश्यकता होती है। वर्चुअल रैम सैकड़ों या हजारों कर्मचारियों के लिए औसत सर्वर अनुप्रयोगों का समर्थन करने के लिए बहुत धीमा है।

मेरे अपने विचार: हमने उस समय को छोड़ दिया है जब RAM छोटी थी, और हार्ड ड्राइव को RAM का समर्थन करना था। रैम की कीमत एक ऐसे बिंदु पर गिर गई है जहां औसत व्यक्ति पर्याप्त से अधिक रैम डाल सकता है। Office जैसे विशिष्ट एप्लिकेशन लें, जिसमें 1-2GB RAM की आवश्यकता होती है। मेरा कंप्यूटर 7 साल पहले संभाल सकता है। यद्यपि डिस्क में पढ़ने और लिखने की गति के साथ, मुझे आशा है कि मुझे कभी भी वर्चुअल मेमोरी (पुराने पीएम * 2.5 दर्शन का उपयोग करके) से 7 जीबी फ़ाइल प्राप्त नहीं करनी होगी।

मैं केवल यह भी मान सकता हूं कि एएमडी उन रजिस्टरों के लिए जगह छोड़ना चाहता था जो भौतिक रैम रजिस्टरों का उपयोग करते हैं, जैसे कि एकीकृत जीपीयू पर रैम।

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