निर्देश स्तर समांतरता

इंस्ट्रक्शन-लेवल पैरेललिज्म (ILP) एक कंप्यूटर प्रोग्राम में सेट किए गए निर्देश के अनुक्रम का समानांतर कंप्यूटिंग या एक साथ निष्पादन है। अधिक विशेष रूप से ILP इस समानांतर निष्पादन के प्रति चरण चलने वाले निर्देशों की औसत संख्या को संदर्भित करता है।

चर्चा
ILP को Concurrency (कंप्यूटर साइंस) के साथ भ्रमित नहीं होना चाहिए। ILP में एक प्रक्रिया (कंप्यूटिंग) के निष्पादन का एकल विशिष्ट थ्रेड (कंप्यूटिंग) होता है। दूसरी ओर, संगामिति में एक केंद्रीय प्रसंस्करण इकाई के कोर में एक सख्त विकल्प में, या सही समानांतरता में कई थ्रेड्स का असाइनमेंट शामिल होता है, यदि पर्याप्त सीपीयू कोर हैं, आदर्श रूप से प्रत्येक रन करने योग्य थ्रेड के लिए एक कोर।

अनुदेश-स्तर समानता के दो दृष्टिकोण हैं: कंप्यूटर हार्डवेयर और सॉफ़्टवेयर ।

हार्डवेयर स्तर गतिशील समानता पर काम करता है, जबकि सॉफ्टवेयर स्तर स्थिर समानता पर काम करता है। डायनेमिक पैरेललिज्म का मतलब है कि प्रोसेसर रन टाइम पर तय करता है कि कौन से निर्देश समानांतर में निष्पादित किए जाएं, जबकि स्टैटिक पैरेललिज्म का मतलब है कि संकलक  तय करता है कि कौन से निर्देश समानांतर में निष्पादित किए जाएं।  पेंटियम प्रोसेसर समांतर निष्पादन के गतिशील अनुक्रम पर काम करता है, लेकिन इटेनियम प्रोसेसर स्थिर स्तर समानांतरता पर काम करता है।

निम्नलिखित कार्यक्रम पर विचार करें: ऑपरेशन 3 ऑपरेशन 1 और 2 के परिणामों पर निर्भर करता है, इसलिए इसकी गणना तब तक नहीं की जा सकती जब तक कि दोनों पूरे नहीं हो जाते। हालाँकि, ऑपरेशन 1 और 2 किसी अन्य ऑपरेशन पर निर्भर नहीं हैं, इसलिए उनकी गणना एक साथ की जा सकती है। यदि हम मानते हैं कि प्रत्येक ऑपरेशन को एक इकाई समय में पूरा किया जा सकता है, तो इन तीन निर्देशों को 3/2 का ILP देते हुए कुल दो इकाइयों में पूरा किया जा सकता है।

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

कार्यक्रमों में कितना ILP मौजूद है, यह बहुत ही विशिष्ट अनुप्रयोग है। कुछ क्षेत्रों में, जैसे कि ग्राफिक्स और वैज्ञानिक कंप्यूटिंग में राशि बहुत बड़ी हो सकती है। हालाँकि, क्रिप्टोग्राफी जैसे कार्यभार बहुत कम समानता प्रदर्शित कर सकते हैं।

आईएलपी का फायदा उठाने के लिए उपयोग की जाने वाली माइक्रो-आर्किटेक्चरल तकनीकों में शामिल हैं:
 * निर्देश पाइपलाइनिंग जहां कई निर्देशों का निष्पादन आंशिक रूप से ओवरलैप किया जा सकता है।
 * सुपरस्क्लेर निष्पादन, बहुत लंबा निर्देश शब्द, और बारीकी से संबंधित स्पष्ट रूप से समानांतर निर्देश कंप्यूटिंग अवधारणाएं, जिसमें समानांतर में कई निर्देशों को निष्पादित करने के लिए एकाधिक निष्पादन इकाइयों का उपयोग किया जाता है।
 * आउट-ऑफ़-ऑर्डर निष्पादन जहां निर्देश किसी भी क्रम में निष्पादित होते हैं जो डेटा निर्भरताओं का उल्लंघन नहीं करता है। ध्यान दें कि यह तकनीक पाइपलाइनिंग और सुपरस्कालर  निष्पादन दोनों से स्वतंत्र है। आउट-ऑफ-ऑर्डर निष्पादन के वर्तमान कार्यान्वयन रन टाइम (कार्यक्रम जीवनचक्र चरण) (अर्थात, जबकि कार्यक्रम निष्पादित हो रहा है और संकलक से किसी भी सहायता के बिना) सामान्य कार्यक्रमों से आईएलपी निकालें। एक विकल्प यह है कि इस समानता को संकलन समय पर निकाला जाए और किसी तरह इस जानकारी को हार्डवेयर तक पहुँचाया जाए। आउट-ऑफ-ऑर्डर निष्पादन तकनीक को स्केल करने की जटिलता के कारण, उद्योग ने निर्देश सेटों की फिर से जांच की है जो प्रति निर्देश कई स्वतंत्र संचालन को स्पष्ट रूप से एन्कोड करते हैं।
 * रजिस्टर का नाम बदलना जो एक ऐसी तकनीक को संदर्भित करता है जिसका उपयोग उन ऑपरेशनों द्वारा आवंटन रजिस्टर करें पुन: उपयोग द्वारा लगाए गए प्रोग्राम संचालन के अनावश्यक क्रमांकन से बचने के लिए किया जाता है, जिसका उपयोग आउट-ऑफ-ऑर्डर निष्पादन को सक्षम करने के लिए किया जाता है।
 * सट्टा निष्पादन जो निश्चित होने से पहले पूर्ण निर्देशों या निर्देशों के कुछ हिस्सों के निष्पादन की अनुमति देता है कि यह निष्पादन होना चाहिए या नहीं। सट्टा निष्पादन का एक सामान्य रूप से उपयोग किया जाने वाला रूप नियंत्रण प्रवाह अटकलें है जहां नियंत्रण प्रवाह निर्देश के लक्ष्य निर्धारित होने से पहले नियंत्रण प्रवाह निर्देश (जैसे, एक शाखा) के निर्देशों को निष्पादित किया जाता है। सट्टा निष्पादन के कई अन्य रूप प्रस्तावित किए गए हैं और मूल्य भविष्यवाणी, स्मृति निर्भरता भविष्यवाणी और कैश विलंबता भविष्यवाणी द्वारा संचालित सट्टा निष्पादन सहित उपयोग में हैं।
 * शाखा भविष्यवाणी जिसका उपयोग नियंत्रण निर्भरताओं को हल करने के लिए रोकने से बचने के लिए किया जाता है। सट्टा निष्पादन के साथ शाखा भविष्यवाणी का उपयोग किया जाता है।

यह ज्ञात है कि ILP का संकलक और हार्डवेयर समर्थन दोनों द्वारा शोषण किया जाता है, लेकिन संकलक संकलन-समय के अनुकूलन द्वारा हार्डवेयर को प्रोग्राम में अंतर्निहित और अंतर्निहित ILP भी प्रदान करता है। कार्यक्रमों में उपलब्ध ILP निकालने के लिए कुछ अनुकूलन तकनीकों में निर्देश शेड्यूलिंग, आवंटन/नाम बदलने का पंजीकरण, और मेमोरी एक्सेस ऑप्टिमाइज़ेशन शामिल होंगे।

डेटाफ्लो आर्किटेक्चर आर्किटेक्चर का एक अन्य वर्ग है जहां ILP स्पष्ट रूप से निर्दिष्ट है, हाल के उदाहरण के लिए TRIPS आर्किटेक्चर देखें।

हाल के वर्षों में, ILP तकनीकों का उपयोग प्रोसेसर ऑपरेटिंग फ़्रीक्वेंसी और मेमोरी एक्सेस समय के बीच बढ़ती असमानता के बावजूद प्रदर्शन में सुधार प्रदान करने के लिए किया गया है (शुरुआती ILP डिज़ाइन जैसे IBM सिस्टम / 360 मॉडल 91 ने ILP तकनीकों का उपयोग ILP तकनीकों का उपयोग किया है। अपेक्षाकृतछोटी रजिस्टर फ़ाइल)। वर्तमान में, मुख्य मेमोरी के लिए एक कैश मिस पेनल्टी में कई सैकड़ों CPU चक्र खर्च होते हैं। जबकि सिद्धांत रूप में इस तरह की स्मृति विलंबता को सहन करने के लिए ILP का उपयोग करना संभव है, संबद्ध संसाधन और बिजली अपव्यय लागत अनुपातहीन हैं। इसके अलावा, जटिलता और अक्सर अंतर्निहित हार्डवेयर संरचनाओं की विलंबता के परिणामस्वरूप ऑपरेटिंग आवृत्ति कम हो जाती है और किसी भी लाभ को कम कर देती है। इसलिए, उपरोक्त तकनीक सीपीयू को ऑफ-चिप डेटा के लिए रुकने से रोकने के लिए अपर्याप्त साबित होती है। इसके बजाय, उद्योग समानांतरता के उच्च स्तर का दोहन करने की ओर बढ़ रहा है जिसका उपयोग मल्टीप्रोसेसिंग और मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर) जैसी तकनीकों के माध्यम से किया जा सकता है।

यह भी देखें

 * डेटा निर्भरता
 * स्मृति-स्तर समानता (MLP)

अग्रिम पठन

 * (276 pages)

बाहरी संबंध

 * Approaches to addressing the Memory Wall
 * Wired magazine article that refers to the above paper
 * https://www.scribd.com/doc/33700101/Instruction-Level-Parallelism#scribd
 * http://www.hpl.hp.com/techreports/92/HPL-92-132.pdf