2013-02-12 30 views
5

हमें एसएसई/एवीएक्स के लिए गठबंधन स्मृति की आवश्यकता क्यों है?एसएसई वेक्टरेशन और मेमोरी संरेखण के बीच संबंध

मुझे जो जवाब मिलता है वह एक गठबंधन है जो स्मृति लोड को असाइन किए गए मेमोरी लोड से बहुत तेज है। फिर, यह गठबंधन मेमोरी लोड असाइन किए गए मेमोरी लोड की तुलना में बहुत तेज़ क्यों है?

उत्तर

9

यह एसएसई (या यहां तक ​​कि x86) के लिए विशिष्ट नहीं है। अधिकांश आर्किटेक्चर लोड और स्टोर्स पर स्वाभाविक रूप से गठबंधन करने की आवश्यकता होती है अन्यथा वे या तो (ए) अपवाद उत्पन्न करते हैं या (बी) दो या दो से अधिक चक्रों की आवश्यकता होती है और कुछ गलत तरीके से लोड किए गए लोड/स्टोर को पारदर्शी रूप से संभालने के लिए कुछ ठीक हो जाते हैं। X86 (बी) पर डेटा प्रकार < 16 बाइट्स के लिए सच है लेकिन (ए) एसएसई डेटा प्रकारों के लिए सच है जब तक आप लोड/स्टोर निर्देशों के गलत तरीके से उपयोग किए गए संस्करणों का स्पष्ट रूप से उपयोग नहीं करते हैं जो गलत तरीके से डेटा को संभाल सकते हैं।

आप सोच सकते हैं: क्यों न केवल संरेखण के बावजूद इन एसएसई लोड/स्टोर निर्देशों के गलत तरीके से उपयोग किए गए संस्करणों का उपयोग करें? जवाब यह है कि ये निर्देश आम तौर पर उनके गठबंधन समकक्षों की तुलना में बहुत धीमे होते हैं क्योंकि वे आमतौर पर उपरोक्त (बी) के अनुसार व्यवहार करते हैं, जो उन्हें कोर I7 जैसे हालिया इंटेल CPUs के अलावा आम तौर पर 2x या अधिक धीमी बनाता है, जहां दंड बहुत छोटा होता है , लेकिन महत्वहीन नहीं है।

+2

और ध्यान रखें कि यहां तक ​​कि आधुनिक कोरों पर भी जहां गलत तरीके से उपयोग किया जाता है, आमतौर पर तेज़ होते हैं, पेज-क्रॉसिंग एक्सेस अभी भी काफी धीमी हैं। यदि आपका बफर काफी बड़ा और गलत तरीके से लिखा गया है, तो इसमें पेज क्रॉसिंग होंगे। –

+1

सही है, और गलत तरीके से लोड होने के कारण कैश लाइन सीमाओं को पार करने के परिणामस्वरूप एक बड़ा कैश पदचिह्न हो सकता है जो प्रदर्शन पर नकारात्मक प्रभाव डाल सकता है। –

+1

क्रॉसिंग पेज भी बदतर हैं ... – Mysticial