2012-04-13 16 views
6

जब एक ही कैश लाइन के अंदर विभिन्न चर होते हैं, तो आप False Sharing का अनुभव कर सकते हैं, जिसका अर्थ है कि भले ही दो अलग-अलग धागे (विभिन्न कोरों पर चल रहे हों) दो अलग-अलग चरों तक पहुंच रहे हों, यदि वे दो चर शामिल हैं एक ही कैश लाइन, आपके पास प्रदर्शन हिट होगा, क्योंकि हर बार कैश समेकन ट्रिगर किया जाएगा।झूठी साझाकरण और परमाणु चर

अब कहते हैं कि वे चर परमाणु चर हैं (परमाणु तक मैं ऐसे सी के atomic<t> ++ के रूप में चर जो एक स्मृति बाड़ परिचय, मतलब), होगा झूठी बंटवारे बात वहाँ है, या यह कोई फर्क नहीं पड़ता अगर परमाणु चर एक ही कैश में हैं लाइन या नहीं, माना जाता है कि वे वैसे भी कैश समेकन पेश करेंगे। दूसरे शब्दों में, एक ही कैश लाइन में परमाणु चर डालने से एप्लिकेशन को उसी कैश लाइन में डालने से धीमा कर दिया जाता है?

उत्तर

5

एक स्पष्टीकरण: नकारात्मक परिणामों के लिए कम से कम कुछ "झूठी साझा" चरों को एक्सेस किया जाना चाहिए। यदि लिखना दुर्लभ है, तो झूठी साझाकरण का प्रदर्शन प्रभाव बल्कि नगण्य है; अधिक लिखते हैं (और इसलिए कैश लाइन संदेशों को अमान्य करते हैं) खराब प्रदर्शन।

परमाणुओं के साथ भी, कैश लाइन साझाकरण (या तो गलत या सत्य) अभी भी मायने रखता है। यहां कुछ सबूत देखें: http://www.1024cores.net/home/lock-free-algorithms/first-things-first। इस प्रकार, जवाब है - हां, एक ही कैश लाइन में विभिन्न धागे द्वारा उपयोग किए जाने वाले परमाणु चर रखकर उन्हें दो अलग-अलग लाइनों में रखने की तुलना में धीमा कर सकते हैं। हालांकि, मुझे लगता है कि यह ज्यादातर अनजान होगा, जब तक कि ऐप इन परमाणु चर को अद्यतन करने के अपने समय का एक महत्वपूर्ण हिस्सा खर्च न करे।

0

उसी कैश लाइन में परमाणु चर डालने से उन्हें उसी कैश लाइन में न डालने से धीमा कर दिया जाएगा?

"परमाणु" चर की झूठी साझा करने सकता है प्रदर्शन की समस्याओं के लिए नेतृत्व (चाहे या नहीं यह होगा इस तरह की समस्याओं के लिए नेतृत्व के लिए बहुत कुछ पर निर्भर करता है)।

मान लें कि आपके पास दो कोर हैं, A और B, और प्रत्येक अपने चर पर संचालित होता है। आइए क्रमशः इन चर a और b पर कॉल करें।

A अपने कैश में a है, और B अपने कैश में b है।

विचार करें कि A वृद्धि a पर क्या होता है।

  • अगर a और b एक कैश लाइन का हिस्सा, b कीB की प्रतिलिपि अवैध हो जाएगी, और b को अपनी अगली पहुँच एक कैश मिस देना पड़ेगा।
  • अगर a और b एक कैश लाइन का हिस्सा नहीं है, वहाँ B पर कोई प्रभाव नहीं जहाँ तक b के अपने कैश की गई प्रतिलिपि का संबंध है है।

यह a और b "परमाणु" हो या न होता है।

0

यदि आप मजबूत स्थिरता आवश्यकताओं के साथ परमाणु चर का उपयोग करते हैं, तो पूर्ण स्मृति बाधा, झूठी साझाकरण का प्रभाव शायद ध्यान देने योग्य नहीं होगा।ऐसी पहुंच के लिए परमाणु संचालन का प्रदर्शन मूल रूप से स्मृति पहुंच विलंबता द्वारा सीमित होता है। तो चीजें किसी भी तरह धीमी होती हैं, मुझे नहीं लगता कि वे झूठी साझाकरण की उपस्थिति में बहुत धीमे हो जाएंगे।

यदि आपके पास अन्य कम घुसपैठ मेमोरी ऑर्डरिंग हैं तो परमाणुओं द्वारा किए गए प्रदर्शन कम हो सकते हैं, और इसलिए झूठी साझाकरण का प्रभाव महत्वपूर्ण हो सकता है।

कुल मिलाकर, मैं पहले इस तरह के संचालन के लिए झूठी साझाकरण के बारे में चिंता करने से पहले परमाणु संचालन के प्रदर्शन को देखता हूं।

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