2012-01-13 6 views
15

निम्नलिखित दो पंक्तियों के बीच क्या अंतर है?_mm_load_ps बनाम _mm_load_pd बनाम आदि

__m128 x = _mm_load_ps((float *) ptr); 
__m128 y = _mm_load_pd((double *)ptr); 

दूसरे शब्दों में, क्यों एक सामान्य __m128 _mm_load(const void *) के बजाय बहुत से अलग _mm_load_xyz निर्देश दिए गए हैं,?

+3

'_mm_load_pd' के लिए वापसी प्रकार' __m128d' है, '__m128' –

+0

@PaulR: वह .... दुनिया में सभी भावनाओं को बनाता है। मैंने पूरी तरह से यह नहीं देखा। इस पर ध्यान दिलाने के लिए धन्यवाद। :) – Mehrdad

उत्तर

13

विभिन्न अंतर्निहित हैं क्योंकि वे विभिन्न निर्देशों से मेल खाते हैं।

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

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

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

+0

ओह, कभी नहीं, मैं गलत था - रिटर्न प्रकार अलग हैं। यह अब पूरी समझ में आता है। :) +1 बहुत बहुत धन्यवाद। – Mehrdad

+0

@ मेहरदैड यह कल से आपके एसएसई प्रश्न में उल्लिखित एक ही डोमेन-शफलिंग चीज़ से संबंधित है। – Mysticial

3

_mm_load_ps भार 4 एकल परिशुद्धता चल बिन्दु

_mm_load_pd भार को महत्व देता है 2 डबल परिशुद्धता चल बिन्दु

ये अलग-अलग बातें करते हैं को महत्व देता है, तो मुझे लगता है कि यह सिर्फ समझ में आता है विभिन्न कार्यों के लिए। इसके अलावा, सी में, कोई अधिभार नहीं है।

+0

मेरा से बेहतर स्पष्टीकरण :) –

+0

तो यह सिर्फ एक अर्थशास्त्र मुद्दा है, सीपीयू से संबंधित चीज़ नहीं? – Mehrdad

+0

@ मेहरदाद, ठीक है, क्योंकि हम यहां इंट्रिनिक्स के साथ काम कर रहे हैं, ये कार्य उनके कार्यान्वयन में भिन्न हो सकते हैं, सामान्यीकरण के लिए अनुमति नहीं दे रहे हैं। –

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