2012-08-30 33 views
7

मैं अपने समांतर जावा प्रोग्राम के प्रदर्शन को ट्यून कर रहा हूं। मैं आर्किटेक्चर प्रभाव के बारे में उत्सुक हूँ।विभिन्न सॉकेट पर सीपीयू कैसे संवाद करते हैं?

  • कैसे दो CPUs संवाद करते हैं, कितनी तेजी से वे संवाद होगा:

    दो सीपीयू सॉकेट के साथ एक मशीन, क्वाड-कोर इंटेल जिऑन सीपीयू के साथ हर एक, तो यह देखते हुए?

  • एक ही चिप पर दो कोर कितनी तेजी से संवाद करेंगे?
  • क्या एक ही चिप पर चार कोर समकक्ष या मेमोरी एक्सेसिंग के मामले में बराबर हैं?
+0

क्या आप बहुत सारे डेटा पास कर रहे हैं? डेटा कैसे पास किया जाता है (उदाहरण के लिए 0 एमक्यू इस्तेमाल किया जाता है)? – osgx

उत्तर

3

1) कैसे दो CPUs संवाद करते हैं, कितनी तेजी से वे संवाद चाहते हैं?

अधिकांश समय वे स्मृति या निकटतम साझा स्मृति पदानुक्रम स्तर के माध्यम से संवाद करते हैं।

2; (सिस्टम स्मृति SMP और NUMA पर दोनों साझा स्तर के रूप में माना जाता है। यहां तक ​​कि अगर NUMA में यह है एक और चिप की स्मृति नियंत्रक के माध्यम से पहुँचता यह सिर्फ गैर वर्दी = धीमी पहुँच है)) कितनी तेजी से दो होगा एक ही चिप पर कोर संवाद?

उसी चिप पर कोर आमतौर पर एल 2 या एल 3 कैश साझा करते हैं। विभिन्न चिप्स पर कोर कैश कोहेन्सी प्रोटोकॉल का उपयोग कर स्मृति के माध्यम से या कैश-टू-कैश इंटरैक्शन के माध्यम से संवाद करते हैं।

तो सीपीयू के बीच गुजरने वाली स्मृति की 1 (अलग चिप्स) गति (बैंडविड्थ) के मामले में सादा स्मृति पढ़ने/लिखने के करीब होगा। और यदि 2 (एक ही चिप) में यह गति बड़ी हो सकती है, कैश पढ़ने/लिखने की गति तक। संचार के

विलंबता सीपीयू के कई सैकड़ों मामले 2.

3 में मामला 1 और कई दर्जनों में टिक्स) संवाद स्थापित करने या स्मृति का उपयोग करने के मामले में एक ही चिप बराबर पर चार कोर हैं हो जाएगा?

उसी चिप के सभी चार कोर आमतौर पर रैम के बराबर दूरी होते हैं। यह चिप वास्तुकला और कार्यान्वयन पर निर्भर करता है; कुछ पुराने इंटेल के लिए उदा। मल्टीकोर चिप वास्तव में एकल पैकेज में पैक दो चिप्स था।

+0

तो दो कोरों को दो कोरों को आवंटित करते समय, दो चिप्स पर एक एक चिप पर एक से अधिक बार धीमा हो सकता है, है ना? – JackWM

+0

धागे के बीच बातचीत क्या है? बातचीत के बीच वे कितना काम करेंगे? क्या वे बहुत सारे डेटा भेज रहे हैं या सिर्फ साझा डेटा संरचना पर काम कर रहे हैं? – osgx

8

इष्टतम मेमोरी प्रदर्शन के करीब कोर के लिए धागे को शेड्यूल करने के लिए कैसे स्मृति के उपयोग पैटर्न पर निर्भर करता है, और आमतौर पर परेशानी के लायक नहीं है। यदि आपका प्रोग्राम जावा में है, तो संभवतः आपको इष्टतम प्रदर्शन के करीब पहुंचने के लिए आवश्यक नियंत्रण स्तर नहीं होने वाला है।

आधुनिक CPUs ने मेमोरी नियंत्रकों को एकीकृत किया है, और आधुनिक बहु-सॉकेट सिस्टम ने स्मृति वितरित की है। यह

Non-Uniform Memory Access (NUMA)

कहा जाता है सॉकेट के बीच आधुनिक बहु सॉकेट इंटेल प्रोसेसर संचार में QPI

QuickPath Interconnect (QPI)

QPI इंटेल वास्तुकला निर्दिष्ट करता है कि यह कैसे काम करता है के साथ किया जाता है। एएमडी का समकक्ष हाइपरट्रांसपोर्ट है।आप यहाँ विभिन्न आर्किटेक्चर के बारे में अधिक सीख सकते हैं:

System Architecture

स्मृति के लिए एक पहुँच है कि स्तर 1 डेटा कैश में याद करते हैं (एक ही सॉकेट में) स्तर 2 डेटा कैश द्वारा सेवित हो सकता है या यह हो सकता है इंटेल ने "अंतिम स्तर कैश (एलएलसी)" को कॉल किया है जो सॉकेट में होगा जिसमें उस स्मृति पते के लिए मेमोरी कंट्रोलर होगा। एलएलसी में एक और सॉकेट में मारना प्रोसेसर चक्र के कुछ दस गुना हो सकता है, लेकिन ड्रम (एक सौ से अधिक प्रोसेसर चक्र) तक पहुंचने से भी तेज़ है।

+1

बहुत अच्छा सारांश। "सिस्टम आर्किटेक्चर" भी एक महान संसाधन की तरह दिखता है। –