Multithreading (computer architecture)
कंप्यूटर वास्तुकला में, मल्टीथ्रेडिंग एक केंद्रीय प्रसंस्करण इकाई (सीपीयू) (या एक बहु-कोर प्रोसेसर में एक एकल कोर) की क्षमता है जो ऑपरेटिंग सिस्टम द्वारा समर्थित निष्पादन के कई धागे प्रदान करती है। यह दृष्टिकोण बहुसंसाधन से अलग है। मल्टीथ्रेडेड अनुप्रयोग में, धागे एक या कई कोर के संसाधनों को साझा करते हैं, जिसमें कंप्यूटिंग इकाइयाँ, सीपीयू कैश और ट्रांसलेशन लुकसाइड बफर (टीएलबी) शामिल हैं। जहाँ मल्टीप्रोसेसिंग प्रणालियों में एक या अधिक कोर में कई पूर्ण प्रसंस्करण इकाइयाँ शामिल होती हैं, मल्टीथ्रेडिंग का उद्देश्य थ्रेड-स्तर समानांतरता के साथ-साथ निर्देश-स्तर समानांतरता का उपयोग करके एकल कोर का उपयोग बढ़ाना है। चूँकि दोनों तकनीकें पूरक हैं, वे लगभग सभी आधुनिक सिस्टम आर्किटेक्चर में कई मल्टीथ्रेडिंग सीपीयू के साथ और कई मल्टीथ्रेडिंग कोर वाले सीपीयू के साथ संयुक्त हैं। अवलोकन मल्टीथ्रेडिंग प्रतिमान अधिक लोकप्रिय हो गया है क्योंकि 1990 के दशक के अंत से निर्देश-स्तर समानता का और अधिक लाभ उठाने के प्रयास रुक गए हैं। इसने लेनदेन प्रसंस्करण के अधिक विशिष्ट क्षेत्र से थ्रूपुट कंप्यूटिंग की अवधारणा को फिर से उभरने की अनुमति दी। भले ही एक धागे या एकल प्रोग्राम को और तेज करना बहुत मुश्किल है, लेकिन अधिकांश कंप्यूटर सिस्टम वास्तव में कई धागे या प्रोग्रामों के बीच मल्टीटास्किंग कर रहे हैं। इस प्रकार, सभी कार्यों के थ्रूपुट में सुधार करने वाली तकनीकों के परिणामस्वरूप समग्र प्रदर्शन लाभ होता है। थ्रूपुट कम्प्यूटिंग के लिए दो प्रमुख तकनीकें मल्टीथ्रेडिंग और मल्टीप्रोसेसिंग हैं। लाभ यदि किसी धागे में बहुत सारे कैश छूट जाते हैं, तो अन्य धागे अप्रयुक्त कंप्यूटिंग संसाधनों का लाभ उठाना जारी रख सकते हैं, जिससे तेजी से समग्र निष्पादन हो सकता है, क्योंकि ये संसाधन बेकार हो जाते यदि केवल एक धागे को निष्पादित किया जाता। इसके अलावा, यदि कोई धागा सीपीयू के सभी कंप्यूटिंग संसाधनों का उपयोग नहीं कर सकता है (क्योंकि निर्देश एक दूसरे के परिणाम पर निर्भर करते हैं), तो दूसरा धागा चलाने से उन संसाधनों को निष्क्रिय होने से रोका जा सकता है। नुकसान कैश या ट्रांसलेशन लुकसाइड बफर (टी. एल. बी.) जैसे हार्डवेयर संसाधनों को साझा करते समय कई धागे एक दूसरे के साथ हस्तक्षेप कर सकते हैं। नतीजतन, एक धागे के निष्पादन समय में सुधार नहीं होता है और कम आवृत्तियों या अतिरिक्त पाइपलाइन चरणों के कारण, जो धागे-स्विचिंग हार्डवेयर को समायोजित करने के लिए आवश्यक हैं, केवल एक धागे के निष्पादन के समय में भी गिरावट आ सकती है। कुल मिलाकर दक्षता भिन्न होती है; इंटेल अपनी हाइपर-थ्रेडिंग तकनीक के साथ 30 प्रतिशत तक सुधार का दावा करता है, जबकि एक सिंथेटिक प्रोग्राम केवल गैर-अनुकूलित आश्रित फ्लोटिंग-पॉइंट संचालन के एक लूप का प्रदर्शन करता है जो वास्तव में समानांतर में चलने पर एक 100% गति सुधार प्राप्त करता है। दूसरी ओर, एम. एम. एक्स. या अल्टीवेक एक्सटेंशन का उपयोग करके और डेटा प्रीफेच (एक अच्छे वीडियो एन्कोडर के रूप में) का प्रदर्शन करने वाले हाथ से ट्यून किए गए असेंबली लैंग्वेज प्रोग्राम कैश मिस या निष्क्रिय कंप्यूटिंग संसाधनों से पीड़ित नहीं होते हैं। इसलिए इस तरह के कार्यक्रम हार्डवेयर मल्टीथ्रेडिंग से लाभान्वित नहीं होते हैं और वास्तव में साझा संसाधनों के लिए विवाद के कारण खराब प्रदर्शन देख सकते हैं। सॉफ्टवेयर के दृष्टिकोण से, मल्टीथ्रेडिंग के लिए हार्डवेयर समर्थन सॉफ्टवेयर को अधिक दिखाई देता है, जिसमें मल्टीप्रोसेसिंग की तुलना में एप्लिकेशन प्रोग्राम और ऑपरेटिंग सिस्टम दोनों में अधिक परिवर्तन की आवश्यकता होती है। मल्टीथ्रेडिंग का समर्थन करने के लिए उपयोग की जाने वाली हार्डवेयर तकनीकें अक्सर कंप्यूटर मल्टीटास्किंग के लिए उपयोग की जाने वाली सॉफ्टवेयर तकनीकों के समानांतर होती हैं। मल्टीथ्रेडिंग में थ्रेड शेड्यूलिंग भी एक बड़ी समस्या है। मल्टीथ्रेडिंग इंटरलीव्ड/टेम्पोरल मल्टीथ्रेडिंग के प्रकार मोटे दाने वाले मल्टीथ्रेडिंग का सबसे सरल प्रकार तब होता है जब एक धागा तब तक चलता है जब तक कि इसे एक घटना द्वारा अवरुद्ध नहीं कर दिया जाता है जो आम तौर पर एक लंबे विलंबता वाला स्टॉल बनाता है। इस तरह का स्टॉल एक कैश मिस हो सकता है जिसे ऑफ-चिप मेमोरी तक पहुंचना पड़ता है, जिसे डेटा वापस आने में सैकड़ों सीपीयू चक्र लग सकते हैं। स्टाल के हल होने की प्रतीक्षा करने के बजाय, एक थ्रेडेड प्रोसेसर निष्पादन को दूसरे धागे में बदल देगा जो चलाने के लिए तैयार था। केवल जब पिछले धागे के लिए डेटा आ गया था, तो पिछले धागे को चलाने के लिए तैयार धागे की सूची में वापस रखा जाएगा। उदाहरण के लिएः चक्रः धागे से निर्देश जारी किया जाता है। चक्रः धागे से निर्देश जारी किया जाता है। चक्रः धागे से निर्देश जारी किया जाता है, जो एक भार निर्देश है जो सभी कैश में छूट जाता है। चक्रः थ्रेड शेड्यूलर को बुलाया जाता है, थ्रेड पर स्विच किया जाता है। चक्रः धागे से निर्देश जारी किया जाता है। चक्रः धागे से निर्देश जारी किया जाता है। अवधारणात्मक रूप से, यह वास्तविक समय संचालन प्रणालियों में उपयोग किए जाने वाले सहकारी बहु-कार्य के समान है, जिसमें कार्य स्वेच्छा से निष्पादन समय को छोड़ देते हैं जब उन्हें किसी प्रकार की घटना की प्रतीक्षा करने की आवश्यकता होती है। इस प्रकार के मल्टीथ्रेडिंग को ब्लॉक, कोऑपरेटिव या मोटे दाने वाले मल्टीथ्रेडिंग के रूप में जाना जाता है। मल्टीथ्रेडिंग हार्डवेयर समर्थन का लक्ष्य एक अवरुद्ध धागे और चलाने के लिए तैयार एक अन्य धागे के बीच त्वरित स्विचिंग की अनुमति देना है। एक धागे से दूसरे धागे में स्विच करने का मतलब है कि हार्डवेयर एक रजिस्टर सेट का उपयोग करके दूसरे में स्विच हो जाता है। इस लक्ष्य को प्राप्त करने के लिए, प्रोग्राम दृश्य रजिस्टरों के लिए हार्डवेयर के साथ-साथ कुछ प्रोसेसर नियंत्रण रजिस्टरों (जैसे प्रोग्राम काउंटर) को दोहराया जाता है। उदाहरण के लिए, दो धागे के बीच जल्दी से स्विच करने के लिए, प्रोसेसर को रजिस्टरों के दो सेटों के साथ बनाया जाता है। मल्टीथ्रेडिंग के लिए अतिरिक्त हार्डवेयर समर्थन एक सीपीयू चक्र में थ्रेड स्विचिंग की अनुमति देता है, जिससे प्रदर्शन में सुधार होता है। इसके अलावा, अतिरिक्त हार्डवेयर प्रत्येक धागे को ऐसा व्यवहार करने की अनुमति देता है जैसे कि यह अकेले निष्पादित कर रहा हो और किसी भी हार्डवेयर संसाधन को अन्य धागे के साथ साझा नहीं कर रहा हो, जिससे मल्टीथ्रेडिंग का समर्थन करने के लिए एप्लिकेशन और ऑपरेटिंग सिस्टम के भीतर आवश्यक सॉफ़्टवेयर परिवर्तनों की मात्रा कम हो जाती है। माइक्रोकंट्रोलर और एम्बेडेड प्रोसेसर के कई परिवारों में इंटरप्ट के लिए त्वरित संदर्भ स्विचिंग की अनुमति देने के लिए कई रजिस्टर बैंक होते हैं। इस तरह की योजनाओं को उपयोगकर्ता प्रोग्राम थ्रेड और इंटरप्ट थ्रेड्स के बीच एक प्रकार का ब्लॉक मल्टीथ्रेडिंग माना जा सकता है। फाइन ग्रेन मल्टीथ्रेडिंग फाइन ग्रेन मल्टीथ्रेडिंग का उद्देश्य निष्पादन पाइपलाइन से सभी डेटा निर्भरता स्टालों को हटाना है। चूँकि एक धागा अन्य धागे से अपेक्षाकृत स्वतंत्र है, इसलिए एक पाइपलाइनिंग चरण में एक निर्देश के लिए पाइपलाइन में पुराने निर्देश से आउटपुट की आवश्यकता होने की संभावना कम है। अवधारणात्मक रूप से, यह ऑपरेटिंग सिस्टम में उपयोग किए जाने वाले प्रीएम्प्टिव मल्टीटास्किंग के समान है; एक सादृश्य यह होगा कि प्रत्येक सक्रिय धागे को दिया गया समय टुकड़ा एक सीपीयू चक्र है। उदाहरण के लिएः चक्रः धागे से एक निर्देश जारी किया जाता है। चक्रः धागे से एक निर्देश जारी किया जाता है। इस प्रकार के मल्टीथ्रेडिंग को पहले बैरल प्रोसेसिंग कहा जाता था, जिसमें एक बैरल के डंडे पाइपलाइन चरणों और उनके निष्पादन धागे का प्रतिनिधित्व करते हैं। इंटरलीव्ड, प्रीएम्प्टिव, फाइन-ग्रेन या टाइम-स्लाइस मल्टीथ्रेडिंग अधिक आधुनिक शब्दावली हैं। ब्लॉक प्रकार के मल्टीथ्रेडिंग में चर्चा की गई हार्डवेयर लागतों के अलावा, इंटरलीव्ड मल्टीथ्रेडिंग में प्रत्येक पाइपलाइन चरण की एक अतिरिक्त लागत होती है जो उस निर्देश के थ्रेड आईडी को ट्रैक करती है जिसे वह संसाधित कर रहा है। इसके अलावा, चूंकि पाइपलाइन में समवर्ती रूप से अधिक धागे निष्पादित किए जा रहे हैं, इसलिए विभिन्न धागे के बीच टक्कर से बचने के लिए कैश और टीएलबी जैसे साझा संसाधनों को बड़ा करने की आवश्यकता है। एक साथ मल्टीथ्रेडिंग सबसे उन्नत प्रकार की मल्टीथ्रेडिंग सुपरस्केलर प्रोसेसर पर लागू होती है। जबकि एक सामान्य सुपरस्केलर प्रोसेसर प्रत्येक सीपीयू चक्र में एक ही धागे से कई निर्देश जारी करता है, एक साथ मल्टीथ्रेडिंग (एसएमटी) में एक सुपरस्केलर प्रोसेसर प्रत्येक सीपीयू चक्र में कई धागे से निर्देश जारी कर सकता है। यह स्वीकार करते हुए कि किसी भी एकल धागे में सीमित मात्रा में निर्देश-स्तर की समानता होती है, इस प्रकार की मल्टीथ्रेडिंग अप्रयुक्त मुद्दे के स्थान से जुड़े कचरे को कम करने के लिए कई धागे में उपलब्ध समानता का फायदा उठाने की कोशिश करती है। उदाहरण के लिएः चक्रः निर्देश और धागे से और धागे से निर्देश एक साथ जारी किए जाते हैं। चक्रः धागे से निर्देश, धागे से निर्देश और धागे से निर्देश सभी एक साथ जारी किए जाते हैं। चक्रः धागे और निर्देशों और धागे से निर्देश सभी एक साथ जारी किए जाते हैं। एस. एम. टी. से अन्य प्रकार के मल्टीथ्रेडिंग को अलग करने के लिए, "अस्थायी मल्टीथ्रेडिंग" शब्द का उपयोग यह दर्शाने के लिए किया जाता है कि कब एक समय में केवल एक धागे से निर्देश जारी किए जा सकते हैं। इंटरलीव्ड मल्टीथ्रेडिंग के लिए चर्चा की गई हार्डवेयर लागतों के अलावा, एस. एम. टी. में प्रत्येक पाइपलाइन चरण की अतिरिक्त लागत होती है जो संसाधित किए जा रहे प्रत्येक निर्देश के थ्रेड आई. डी. पर नज़र रखती है। पुनः, साझा संसाधनों जैसे कैश और टी. एल. बी. को बड़ी संख्या में सक्रिय धागे को संसाधित करने के लिए आकार दिया जाना चाहिए। कार्यान्वयन में डीईसी (बाद में कॉम्पैक) ईवी8 (पूरा नहीं हुआ), इंटेल हाइपर-थ्रेडिंग टेक्नोलॉजी, आईबीएम पावर5/पावर6/पावर7/पावर8/पावर9, आईबीएम जेड13/जेड14/जेड15, सन माइक्रोसिस्टम अल्ट्रास्पार्क टी2, क्रे एक्सएमटी, और एएमडी बुलडोजर और ज़ेन माइक्रोआर्किटेक्चर शामिल हैं। कार्यान्वयन विशिष्टता अनुसंधान का एक प्रमुख क्षेत्र धागा अनुसूचक है जिसे अगले निष्पादन के लिए तैयार धागे की सूची में से जल्दी से चुनना चाहिए, साथ ही साथ चलाने के लिए तैयार और रुकी हुई धागे की सूचियों को बनाए रखना चाहिए। एक महत्वपूर्ण उप-विषय विभिन्न धागे प्राथमिकता योजनाएं हैं जिनका उपयोग अनुसूचक द्वारा किया जा सकता है। थ्रेड शेड्यूलर को पूरी तरह से सॉफ्टवेयर में, पूरी तरह से हार्डवेयर में, या हार्डवेयर/सॉफ्टवेयर संयोजन के रूप में लागू किया जा सकता है। शोध का एक अन्य क्षेत्र यह है कि किस प्रकार की घटनाओं के कारण थ्रेड स्विच होना चाहिएः कैश मिस, इंटर-थ्रेड संचार, डी. एम. ए. पूर्णता, आदि। यदि मल्टीथ्रेडिंग योजना विशेषाधिकार प्राप्त नियंत्रण रजिस्टरों और टी. एल. बी. सहित सभी सॉफ्टवेयर-दृश्यमान स्थिति की प्रतिकृति बनाती है, तो यह प्रत्येक धागे के लिए आभासी मशीनों को बनाने में सक्षम बनाती है। यह प्रत्येक धागे को एक ही प्रोसेसर पर अपने स्वयं के ऑपरेटिंग सिस्टम को चलाने की अनुमति देता है। दूसरी ओर, यदि केवल उपयोगकर्ता-मोड स्थिति को सहेजा जाता है, तो कम हार्डवेयर की आवश्यकता होती है, जो एक ही डाई क्षेत्र या लागत के लिए एक समय में अधिक धागे को सक्रिय करने की अनुमति देगा। सुपर-थ्रेडिंग स्पेक्युलेटिव मल्टीथ्रेडिंग संदर्भ बाहरी लिंक ए सर्वे ऑफ प्रोसेसर्स विद एक्सप्लिसिट मल्टीथ्रेडिंग, एसीएम, मार्च 2003, थियो उंगेरर, बोरुट रोबी और जुरिज सिल्क ऑपरेटिंग सिस्टम। मल्टीटास्किंग, मल्टीथ्रेडिंग और मल्टीप्रोसेसिंग के बीच अंतर गीक्सफॉर गीक्स, 6 सितंबर 2018 भी देखें। केंद्रीय प्रसंस्करण इकाई निर्देश प्रसंस्करण माइक्रोप्रोसेसर समानांतर कंप्यूटिंग थ्रेड्स (कंप्यूटिंग)