7

आधुनिक प्रोग्रामिंग भाषाएं अपने उपयोगकर्ताओं के लिए प्रथम श्रेणी के नागरिकों के समानांतरता और समवर्ती तंत्र प्रदान करती हैं। मैं समझता हूं कि समानांतर एल्गोरिदम प्रोग्राम किए जाते हैं और अच्छी तरह से कल्पना कर सकते हैं कि बहु-कोर CPU पर दो थ्रेड समानांतर में कैसे चल सकते हैं।एक धागे/कोर पर समांतरता कैसे संभव है?

फिर भी, इनमें से अधिकतर प्लेटफॉर्म एक थ्रेड पर समानांतर प्रक्रियाओं को चलाने का भी समर्थन करते हैं।

  • क्या ये प्रक्रियाएं समानांतर में चलती हैं?
  • कैसे, असेंबली स्तर पर एक ही थ्रेड पर एक साथ दो अलग-अलग दिनचर्या निष्पादित की जा सकती हैं?

उत्तर

6

टीएलटीआर; : समांतरता (वास्तविक simultanenous निष्पादन) के अर्थ में, एक एकल, गैर-हाइपरथ्रेड किए गए CPU कोर पर, संभव नहीं है।


हार्डवेयर (< - संपादित करें) Paralellism कई स्तरों पर प्राप्त किया जा सकता।

  1. बहु मेजबान
  2. मल्टी-प्रोसेसर
  3. मल्टी कोर
  4. बहु धागे ("हाइपर-थ्रेडिंग", यानी "हिंदुस्तान टाइम्स") (संपादित करें: कम करने का पठन स्तर द्वारा आदेश दिया मैं voluntarity) जहां कई ALUs ही कोर द्वारा संचालित हो सकता है vectorized compuations के मामले

आपका प्रश्न मामलों 3 में दो सॉफ्टवेयर धागे चल रहा से संबंधित है छोड़ देते हैं। (यदि एचटी अनुपलब्ध/अक्षम है) या 4.

  • दोनों मामलों में, प्रक्रिया वास्तव में समानांतर में नहीं चलती है। उपयोगकर्ता के पास सीपीयू स्तर पर किए गए बेहद तेज़ संदर्भ स्विच के कारण एक साथ प्रभाव होता है, जो कि भौतिक कोर (resp। थ्रेड) समय को आवंटित करता है, एक या अन्य सॉफ़्टवेयर थ्रेड

  • दोनों में मामलों, उन दिनचर्या बस एक साथ निष्पादित नहीं कर रहे हैं, लेकिन क्रमिक रूप से

सापेक्षिक प्राथमिकता "प्राथमिकता" आप इस प्रक्रिया को देने के द्वारा विभिन्न OSes पर सेट किया जा सकता उन 2 दिनचर्या में से प्रत्येक के लिए आवंटित, नियंत्रित किया जाएगा कि ओएस के शेड्यूलर द्वारा, जो बदले में सीपीयू समय आवंटित करेगा।

एचटीएच।

इस विषय को बेहतर ढंग से समझने के लिए परीक्षण करने के लिए, आप "cpu affinity" को Google पर भेजना चाहेंगे। यह आपको एक बहु-कोर CPU के एक भौतिक सिंगल कोर पर दो-थ्रेडेड प्रक्रिया चलाने देगा, और प्रत्येक थ्रेड द्वारा लिया गया समय, उनकी प्राथमिकता को संशोधित करते समय, समय ...

+0

(4) दो अलग अलग चीजों को मिक्स। एचटी दो धागे के बीच तेजी से स्विचिंग की अनुमति देने के लिए हार्डवेयर समर्थन है (इसलिए यदि एक धागा स्मृति से डेटा के लिए इंतजार कर रहा है, तो दूसरा ले जा सकता है)। वहाँ भी है (5) जो सॉफ्टवेयर स्तर पर "सरल" थ्रेडिंग है। दोनों 4 और 5 "सत्य" थ्रेडिंग नहीं हैं जहां संचालन समानांतर में होते हैं लेकिन (4) काफी करीब आते हैं, इसमें कुछ ऑपरेशन (या आंशिक संचालन) अन्य हाइपर-थ्रेड के समानांतर में हो सकते हैं। उदाहरण के लिए, एक हाइपर-थ्रेड के लिए मेमोरी लेना हो रहा है जबकि दूसरे रन होते हैं। –

+0

@adrew cooke: सूची को परिशोधित करने के लिए धन्यवाद। मैंने जानबूझकर सूची में (5) शामिल नहीं किया क्योंकि यह "सॉफ्टवेयर" समांतरता है, इसलिए आप सही हैं (और मैं प्रारंभिक पोस्ट को संशोधित कर रहा हूं): मैं केवल "हार्डवेयर" समांतरता प्रकारों को सूचीबद्ध कर रहा था। –

+0

-1: सभी आधुनिक सीपीयू निर्देश स्तर पर समांतरता प्रदान करते हैं। मेरा जवाब देखें –

1

हां, वहां प्रत्येक थ्रेड में समांतरता है और आप इसे मुफ्त में प्राप्त करते हैं, इससे कोई फ़र्क नहीं पड़ता कि आप किस प्रोग्रामिंग भाषा का उपयोग करते हैं (हालांकि समांतरता की मात्रा भिन्न हो सकती है)।

इसे instruction-level parallelism कहा जाता है।विवरण काफी जटिल हैं और विभिन्न प्रोसेसर माइक्रो-आर्किटेक्चर के बीच भिन्न हैं।

Computer Architecture: A Quantitative Approach एक शानदार पुस्तक है जिसमें निर्देश-स्तर समांतरता पर एक अध्याय शामिल है और पुस्तक के उदाहरण सिखाते हैं कि इंजीनियरिंग के बारे में तर्कसंगत तरीके से कैसे सोचें। बाहर और अधिक जानकारी के लिए निम्न लिंक

की जांच:

http://en.wikipedia.org/wiki/Superscalar

http://en.wikipedia.org/wiki/Instruction_pipelining

http://en.wikipedia.org/wiki/Out-of-order_execution

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