2012-02-10 9 views
10

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

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

वहाँ एक 32-बिट, x86-64 मंच होने के लिए किसी भी मौलिक बाधा है? मुझे लगता है कि इस तरह के चिमेरा का समर्थन किसी भी ऑपरेटिंग सिस्टम में जटिलता को जोड़ देगा, और कोई भी जो पिछले 20% चाहता है उसे सिर्फ इसे वर्क ™ बनाना चाहिए, लेकिन यह अभी भी लगता है कि यह विभिन्न कम्प्यूटेशनल गहन कार्यक्रमों के लिए सबसे अच्छा फिट होगा।

+0

अधिकांश अनुप्रयोगों में प्रोफाइलिंग डेटा में संकेतक सूचक आकार में वृद्धि के कारण कोई महत्वपूर्ण नुकसान नहीं होता है। – Puppy

+0

इंटेल संकलक विकल्प [ 'Qauto-ilp32'] (http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/compiler_c/copts/ccpp_options/option_qauto_ilp32 है एचटीएम) जो पॉइंटर्स के लिए 32-बिट्स का उपयोग करने के लिए "कोशिश करता है" - यहां तक ​​कि x64 मोड में भी। – Mysticial

+0

@ मिस्टिकियल लेकिन यह पुराने-पुराने 'नज़दीकी' और 'दूर' पॉइंटर्स की तरह है, है ना? यह समाधान ठीक है, मुझे लगता है, लेकिन यह उतना साफ नहीं है जितना मैं जिक्र कर रहा हूं। – Potatoswatter

उत्तर

10

विकास में लिनक्स के लिए "x32" नामक एक एबीआई है। यह x86_64 और ia32 के बीच एक मिश्रण है जो आप वर्णन करते हैं - पूर्ण 64 बिट रजिस्टर सेट का उपयोग करते समय 32 बिट पता स्थान। इसे एक कस्टम कर्नेल, binutils और जीसीसी की जरूरत है।

कुछ कल्पना रन कुछ मानक में लगभग 30% की एक performace सुधार का संकेत मिलता है। https://sites.google.com/site/x32abi/

+0

पर 32-बिट प्रोग्राम नहीं है यह वास्तव में अच्छी जानकारी है। मुझे सवाल पूछने के बारे में थोड़ा अनिश्चित महसूस हुआ, क्योंकि इसकी phrasing संभवतः किसी भी अच्छे जवाब को रोक दिया। लेकिन चिमेरा का समर्थन करने के लिए सिर्फ एक मंच भी है, अगर अंतर काफी महत्वपूर्ण है, तो खेल मैदान बदलता है। – Potatoswatter

-4

यह "x86-32 अनुकरण" कहा जाता है, या WOW64 विंडोज (संभवतः अन्य OSes पर कुछ और) पर है और यह प्रोसेसर में एक हार्डवेयर झंडा है। यहां किसी उपयोगकर्ता-मोड की चाल की आवश्यकता नहीं है।

+0

क्या यह उपयोगकर्ता के लिए सुलभ ध्वज है? तो ओएस को बचाने/पुनर्स्थापित करने और समर्थन करने के लिए आवश्यक है? – Potatoswatter

+0

आह, इसे देखा - http://en.wikipedia.org/wiki/WOW64। नहीं, यह केवल 64-बिट ओएस पर मानक 886 कोड चला रहा है, पुराना आईएसए केवल 8 रजिस्टरों के साथ। बस '-m32' जैसा ही है। मुझे नहीं लगता कि अन्य ओएसई उस "फीचर" को एक नाम देने से परेशान हैं। – Potatoswatter

+0

@ पोटाटोस्वाटर: और यह वर्णन करने के लिए कि आप वास्तव में कैसे वर्णन करते हैं, वास्तव में अलग है? उद्देश्य प्राप्त करने के लिए उपयोगकर्ता-मोड हैक्स करने के बजाय, प्रोसेसर इसे हार्डवेयर में प्राप्त करता है। यह हमेशा तेज होगा। कोई संकलक ध्वज नहीं है जो इसे प्राप्त करता है, यह एक हार्डवेयर प्रोसेसर सुविधा है। – Puppy

0

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

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

संबंधित मुद्दे