डीडीआर 3 दोहरी चैनल मेमोरी के साथ कोर 2 प्रोसेसर के लिए सैद्धांतिक अधिकतम मेमोरी बैंडविड्थ प्रभावशाली है: आर्किटेक्चर पर Wikipedia article के अनुसार, प्रति सेकंड 10+ या 20+ गीगाबाइट्स। हालांकि, स्टॉक memcpy() कॉल इसे प्राप्त नहीं करते हैं। (इस तरह के सिस्टम पर मैंने देखा है कि 3 जीबी/एस है।) संभावना है कि यह ओएस विक्रेता आवश्यकता के कारण है कि प्रोसेसर की विशेषताओं के आधार पर प्रत्येक प्रोसेसर लाइन के लिए memcpy() को ट्यून किया जाए, इसलिए एक स्टॉक memcpy() कार्यान्वयन ब्रांड और लाइनों की एक विस्तृत संख्या पर उचित होना चाहिए।कोर 2 या कोर i7 आर्किटेक्चर के लिए पूरी तरह से अनुकूलित memcpy/memmove?
मेरा प्रश्न: क्या कोर 2 या कोर i7 प्रोसेसर के लिए एक स्वतंत्र रूप से उपलब्ध, अत्यधिक ट्यून संस्करण है जिसे सी प्रोग्राम में उपयोग किया जा सकता है? मुझे यकीन है कि मैं एक की जरूरत में एकमात्र व्यक्ति नहीं हूं, और यह हर किसी के लिए अपने स्वयं के memcpy() को माइक्रो-अनुकूलित करने के लिए प्रयास का एक बड़ा अपशिष्ट होगा।
एमएसवीसी memcpy वेक्टरेटेड है जब इन शर्तों को पूरा किया जाता है (लगभग, मैं इस पर एक विशेषज्ञ नहीं हूँ): स्रोत और dest पते दोनों कम से कम 8-बाइट (64-बिट) गठबंधन हैं, और आंदोलन का आकार ऊपर है एक निश्चित दहलीज। 64-बिट संरेखण एमएसवीसी की गारंटी से आता है कि इसका अपना 'मॉलोक' 64-बिट संरेखण देता है। फिर, 32-बिट बिल्डों पर, 128-बिट एसएसई 2 का उपयोग किया जाएगा (यदि आवश्यक हो तो 64-बिट शफल के साथ), और 64-बिट बिल्ड पर, यह 64-बिट सामान्य प्रयोजन रजिस्टरों (डफ के डिवाइस के साथ) का उपयोग आंदोलन करने के लिए करेगा क्योंकि जब यह ठीक से किया जाता है तो यह एसएसई 2 की तुलना में "तेज़ पर्याप्त" होता है। – rwong
/मेहराब: न्यूनतम CPU वास्तुकला आवश्यकताओं, में से एक: SSE2 - (डिफ़ॉल्ट) SSE2 के साथ उपलब्ध निर्देश का उपयोग सक्षम सक्षम सीपीयू यह वह जगह है दृश्य स्टूडियो vs2013.update3 के कुलपति ++ उत्पादन । जिसमें मेरे बेंचमार्क के आधार पर एसएसई 2 डिफ़ॉल्ट है, उपयोग/आर्क: एसएसई 2 मेम्पी प्रदर्शन में सुधार नहीं करेगा, और मैंने बेंचमार्क किया है, यहां तक कि/ARCH: AVX memcpy प्रदर्शन में सुधार नहीं करता है। –
zhaorufei