एकल निर्देश, एकाधिक डेटा: Difference between revisions
m (added Category:Vigyan Ready using HotCat) |
m (11 revisions imported from alpha:एकल_निर्देश,_एकाधिक_डेटा) |
(No difference)
| |
Revision as of 17:31, 10 March 2023
| Flynn's taxonomy |
|---|
| Single data stream |
| Multiple data streams |
| SIMD Subcategories[1] |
| See also |
एकल निर्देश, एकाधिक डेटा (एसआईएमडी) फ्लिन की वर्गीकरण में एक प्रकार का समानांतर प्रसंस्करण है। एसआईएमडी आंतरिक (हार्डवेयर डिज़ाइन का भाग) हो सकता है और इसे निर्देश समूह आर्किटेक्चर (आईएसए) के माध्यम से सीधे एक्सेस किया जा सकता है, किन्तु इसे आईएसए के साथ भ्रमित नहीं होना चाहिए। एसआईएमडी कई प्रसंस्करण तत्वों वाले कंप्यूटरों का वर्णन करता है जो साथ कई डेटा बिंदुओं पर ही ऑपरेशन करते हैं।
ऐसी मशीनें डेटा स्तर समानता का शोषण करती हैं, किन्तु समवर्ती कंप्यूटिंग नहीं होती हैं, एक साथ (समानांतर) संगणनाएं होती हैं, किन्तु प्रत्येक इकाई किसी भी समय (बस अलग-अलग डेटा के साथ) ठीक उसी निर्देश का प्रदर्शन करती है। सिमड विशेष रूप से सामान्य कार्यों पर प्रायुक्त होता है जैसे कि डिजिटल छवि में कंट्रास्ट समायोजित करना या डिजिटल ऑडियो की मात्रा समायोजित करना। अधिकांश आधुनिक सेंट्रल प्रोसेसिंग यूनिट डिज़ाइन में मल्टीमीडिया उपयोग के प्रदर्शन में सुधार के लिए एसआईएमडी निर्देश सम्मिलित हैं। जिनमें से एक एसआईएमटी है। एसआईएमटी को सॉफ्टवेयर थ्रेड (कंप्यूटिंग) या हार्डवेयर थ्रेड्स (कंप्यूटर आर्किटेक्चर) के साथ भ्रमित नहीं होना चाहिए, जो दोनों टास्क समय-साझा (समय-प्रखंड) हैं। एसआईएमटी साथ समानांतर हार्डवेयर-स्तर का निष्पादन है।
इतिहास
एसआईएमडी निर्देशों का पहला उपयोग इलियाक चतुर्थ में किया गया था, जो 1966 में पूरा हुआ था।
एसआईएमडी 1970 के दशक की प्रारंभ में सीडीसी स्टार-100 और टीआई उन्नत वैज्ञानिक कंप्यूटर जैसे वेक्टर प्रोसेसर का आधार था, जो एकल निर्देश के साथ डेटा के वेक्टर पर काम कर सकता था। 1970 और 1980 के दशक में क्रे द्वारा वेक्टर प्रसंस्करण को विशेष रूप से लोकप्रिय बनाया गया था। वेक्टर प्रोसेसिंग आर्किटेक्चर को अब एसआईएमडी कंप्यूटरों से अलग माना जाता है: डंकन की वर्गीकरण में उन्हें सम्मिलित किया जाता है, जहां फ्लिन के काम (1966, 1972) के कारण क्रे -1 (1977) से पहले की डेटिंग होती है।
आधुनिक एसआईएमडी कंप्यूटरों के पहले युग की विशेषता सोच मशीनों निगम कनेक्शन मशीन | सीएम-1 और सीएम-2 जैसे बड़े मापदंड पर समानांतर प्रसंस्करण-शैली के सुपर कंप्यूटर थे। इन कंप्यूटरों में कई सीमित-कार्यक्षमता वाले प्रोसेसर थे जो समानांतर में काम करते थे। उदाहरण के लिए, थिंकिंग मशीन CM-2 में 65,536 एकल-बिट प्रोसेसर में से प्रत्येक ही समय में ही निर्देश को निष्पादित करेगा, उदाहरण के लिए, हाइपरक्यूब-कनेक्टेड नेटवर्क का उपयोग करके समय में 65,536 जोड़े बिट्स को तार्किक रूप से संयोजित या प्रोसेसर-समर्पित रैम अपने ऑपरेंड खोजने के लिए अनुमति देता है। इंटेल i860 जैसे कमोडिटी प्रोसेसर पर आधारित सस्ती स्केलर विविध निर्देश, एकाधिक डेटा एप्रोच होने पर सुपरकंप्यूटिंग एसआईएमडी एप्रोच से दूर चली गई[2] अधिक शक्तिशाली हो गया, और एसआईएमडी में महत्त्व कम हो गयी थी।
एसआईएमडी प्रोसेसर का वर्तमान युग सुपरकंप्यूटर बाजार के अतिरिक्त डेस्कटॉप-कंप्यूटर बाजार से बढ़ा है। चूंकि डेस्कटॉप प्रोसेसर 1990 के दशक के समय रीयल-टाइम गेमिंग और ऑडियो/वीडियो प्रसंस्करण का समर्थन करने के लिए पर्याप्त शक्तिशाली हो गए थे, इस विशेष प्रकार की कंप्यूटिंग शक्ति के लिए मांग बढ़ी और मांग को पूरा करने के लिए माइक्रोप्रोसेसर विक्रेताओं ने एसआईएमडी की ओर रुख किया।[3] हेवलेट पैकर्ड ने एमपीईजी डिकोडिंग में तेजी लाने के लिए 1994 में पीए-आरआईएससी 1.1 डेस्कटॉप में मल्टीमीडिया त्वरण विस्तार निर्देश प्रस्तुत किया था।[4] सन माइक्रोसिस्टम्स ने 1995 में अपने अल्ट्रास्पार्क माइक्रोप्रोसेसर में अपने विज़ुअल निर्देश एमएमएक्स (निर्देश समूह) विस्तार में एसआईएमडी पूर्णांक निर्देश प्रस्तुत किया था। एमआईपीएस ने अपने समान एमडीएमएक्स प्रणाली के अनुरूप किया था।
पहला विस्तृत रूप से नियुक्त डेस्कटॉप एसआईएमडी 1996 में x86 आर्किटेक्चर के लिए इंटेल के एमएमएक्स (निर्देश समूह) विस्तार के साथ था। इसने मोटोरोला पावरपीसी और आईबीएम के आईबीएम पावर माइक्रोप्रोसेसर प्रणाली में अधिक शक्तिशाली अल्टीवेक प्रणाली की प्रारंभ किया था। इंटेल ने 1999 में सभी नए स्ट्रीमिंग एसआईएमडी विस्तार प्रणाली की प्रारंभ किया था। तब से, दोनों आर्किटेक्चर के लिए दृश्य निर्देश समूह में कई विस्तार हुए हैं। उन्नत वेक्टर विस्तार एवीएक्स, एवीएक्स2 और एवीएक्स-512 इंटेल द्वारा विकसित किए गए हैं। एएमडी अपने आधुनिक उत्पादों में एवीएक्स और एवीएक्स2 का समर्थन करता है।
ये सभी विकास वास्तविक समय के ग्राफिक्स के समर्थन की ओर उन्मुख हैं, और इसलिए दो, तीन, या चार आयामों में प्रसंस्करण की ओर उन्मुख हैं, सामान्यतः डेटा प्रकार और वास्तुकला के आधार पर वेक्टर लंबाई दो और सोलह शब्दों के बीच होती है। जब नए एसआईएमडी आर्किटेक्चर को पुराने से अलग करने की आवश्यकता होती है, तो नए आर्किटेक्चर को शॉर्ट-वेक्टर आर्किटेक्चर माना जाता है, क्योंकि पहले के एसआईएमडी और वेक्टर सुपर कंप्यूटर की वेक्टर लंबाई 64 से 64,000 थी। आधुनिक सुपरकंप्यूटर लगभग हमेशा एमआईएमडी कंप्यूटरों का समूह होता है, जिनमें से प्रत्येक एसआईएमडी निर्देशों को प्रायुक्त (शॉर्ट-वेक्टर) करता है।
लाभ
एप्लिकेशन जो एसआईएमडी का लाभ उठा सकता है वह वह है जहां ही मान को बड़ी संख्या में डेटा बिंदुओं में जोड़ा जा रहा है (या घटाया जा रहा है), कई मल्टीमीडिया अनुप्रयोगों में सामान्य ऑपरेशन। उदाहरण छवि की चमक को बदलना होगा। छवि के प्रत्येक पिक्सेल में रंग के लाल (आर), हरे (जी) और नीले (बी) भागों की चमक के लिए तीन मान होते हैं। चमक को बदलने के लिए, आर, जी और बी मानों को मेमोरी से पढ़ा जाता है, उनमें मान जोड़ा जाता है (या घटाया जाता है), और परिणामी मान वापस मेमोरी में लिखे जाते हैं। ऑडियो अंकीय संकेत प्रक्रिया इसी प्रकार, वॉल्यूम कंट्रोल के लिए, लेफ्ट और राइट दोनों चैनलों को साथ गुणा करेगा।
एसआईएमडी प्रोसेसर के साथ इस प्रक्रिया में दो सुधार होते हैं। के लिए डेटा को ब्लॉक में समझा जाता है, और कई मानों को साथ लोड किया जा सकता है। निर्देशों की श्रृंखला के अतिरिक्त इस पिक्सेल को पुनः प्राप्त करें, अब अगले पिक्सेल को पुनः प्राप्त करें, एसआईएमडी प्रोसेसर के पास ही निर्देश होगा जो प्रभावी रूप से कहता है कि n पिक्सेल प्राप्त करें (जहाँ n संख्या है जो डिज़ाइन से डिज़ाइन में भिन्न होती है)। विभिन्न कारणों से, प्रत्येक पिक्सेल को व्यक्तिगत रूप से पुनर्प्राप्त करने की तुलना में इसमें बहुत कम समय लग सकता है, जैसा कि पारंपरिक सीपीयू डिज़ाइन के साथ होता है।
और फायदा यह है कि निर्देश ही ऑपरेशन में सभी लोड किए गए डेटा पर काम करता है। दूसरे शब्दों में, यदि एसआईएमडी प्रणाली बार में आठ डेटा बिंदुओं को लोड करके काम करता है, तो add डेटा पर प्रायुक्त किया जा रहा ऑपरेशन ही समय में सभी आठ मानों पर होगा। यह समानता सुपरस्केलर प्रोसेसर द्वारा प्रदान की गई समानता से अलग है; आठ मानों को गैर-सुपरस्क्लेर प्रोसेसर पर भी समानांतर में संसाधित किया जाता है, और सुपरस्केलर प्रोसेसर समानांतर में कई एसआईएमडी संचालन करने में सक्षम हो सकता है।
हानि
- सभी एल्गोरिदम को आसानी से सदिश नहीं बनाया जा सकता है। उदाहरण के लिए, फ्लो-कंट्रोल-हैवी टास्क जैसे कोड पदच्छेद आसानी से एसआईएमडी से लाभान्वित नहीं हो सकते हैं; चूंकि, अधिकतम कैश इष्टतमता को लक्षित करने के लिए तुलना और बैच प्रवाह को सदिश बनाना सैद्धांतिक रूप से संभव है, चूंकि इस विधि के लिए अधिक मध्यवर्ती स्थिति की आवश्यकता होगी। नोट: बैच-पाइपलाइन प्रणाली (उदाहरण: जीपीयू या सॉफ़्टवेयर रास्टराइज़ेशन पाइपलाइन) कैश नियंत्रण के लिए सबसे फायदेमंद होते हैं जब सिमड इंट्रिनिक्स के साथ कार्यान्वित किया जाता है, किन्तु वे सिमड सुविधाओं के लिए अनन्य नहीं हैं। कोड स्ट्रिंग्स जैसी श्रृंखला के अन्दर निर्भरता से बचने के लिए और जटिलता स्पष्ट हो सकती है; चूंकि वैश्वीकरण के लिए स्वतंत्रता आवश्यक है।[clarification needed]
- बड़ी रजिस्टर फाइलें जो बिजली की खपत और आवश्यक चिप क्षेत्र को बढ़ाती हैं।
- वर्तमान में, एसआईएमडी निर्देशों के साथ एल्गोरिथ्म को प्रायुक्त करने के लिए सामान्यतः मानव श्रम की आवश्यकता होती है; उदाहरण के लिए, अधिकांश कंपाइलर विशिष्ट सी (प्रोग्रामिंग भाषा) प्रोग्राम से एसआईएमडी निर्देश उत्पन्न नहीं करते हैं। कंपाइलर्स में स्वचालित वैश्वीकरण कंप्यूटर विज्ञान अनुसंधान का सक्रिय क्षेत्र है। (वेक्टर प्रोसेसर की तुलना करें।)
- विशेष एसआईएमडी निर्देश समूह के साथ प्रोग्रामिंग में कई निम्न-स्तरीय चुनौतियाँ सम्मिलित हो सकती हैं।
- एसआईएमडी में डेटा संरचना संरेखण पर प्रतिबंध हो सकता है; विशेष आर्किटेक्चर से परिचित प्रोग्रामर इसकी अपेक्षा नहीं कर सकते हैं। इससे भी बदतर: संरेखण संशोधन या संगत प्रोसेसर से दूसरे में बदल सकता है।
- एसआईएमडी रजिस्टरों में डेटा इकट्ठा करना और इसे सही गंतव्य स्थानों पर बिखेरना कठिन है (कभी-कभी परमिट निर्देश की आवश्यकता होती है) और यह अक्षम हो सकता है।
- कुछ एसआईएमडी निर्देश समूहों में रोटेशन या तीन-ऑपरेंड जोड़ जैसे विशिष्ट निर्देश उपलब्ध नहीं हैं।
- निर्देश समूह आर्किटेक्चर-विशिष्ट हैं: कुछ प्रोसेसर में एसआईएमडी निर्देशों की पूरी प्रकार से कमी होती है, इसलिए प्रोग्रामर को उनके लिए गैर-वेक्टरकृत कार्यान्वयन (या अलग-अलग वेक्टरकृत कार्यान्वयन) प्रदान करना चाहिए।
- अलग-अलग आर्किटेक्चर अलग-अलग रजिस्टर आकार (जैसे 64, 128, 256 और 512 बिट्स) और निर्देश समूह प्रदान करते हैं, जिसका अर्थ है कि प्रोग्रामर को किसी दिए गए सीपीयू पर उत्तम विधि से काम करने के लिए वेक्टरकृत कोड के कई कार्यान्वयन प्रदान करने चाहिए। इसके अतिरिक्त, एसआईएमडी निर्देशों का संभावित समूह प्रत्येक नए रजिस्टर आकार के साथ बढ़ता है। दुर्भाग्य से, लीगेसी समर्थन कारणों से, पुराने संस्करणों को समाप्त नहीं किया जा सकता है।
- प्रारंभिक एमएमएक्स (निर्देश समूह) निर्देश समूह ने फ़्लोटिंग-पॉइंट स्टैक के साथ रजिस्टर फ़ाइल साझा की, जिसके कारण फ़्लोटिंग-पॉइंट और एमएमएक्स कोड को मिलाते समय अक्षमताएँ हुईं। चूँकि, एसएसई2 इसे सही करता है।
समस्याओं 1 और 5 को दूर करने के लिए, आरआईएससी-वी का वेक्टर विस्तार वैकल्पिक दृष्टिकोण का उपयोग करता है: प्रोग्रामर को उप-रजिस्टर-स्तर के विवरण को प्रकाशित करने के अतिरिक्त, निर्देश समूह उन्हें कुछ वेक्टर रजिस्टरों के रूप में सार करता है जो सभी सीपीयू में समान इंटरफेस का उपयोग करते हैं। इस निर्देश समूह के साथ। हार्डवेयर सभी संरेखण उद्देशों और लूप के स्ट्रिप-माइनिंग को संभालता है। विभिन्न वेक्टर आकार वाली मशीनें समान कोड चलाने में सक्षम होती हैं। एलएलवीएम इस वेक्टर प्रकार को वीस्केल करता है।[citation needed]
समतुल्य स्केलर या समतुल्य वेक्टर कोड की तुलना में कोड आकार में परिमाण वृद्धि का क्रम असामान्य नहीं है, और परिमाण या अधिक प्रभावशीलता का क्रम (अनुदेश के अनुसार किया गया कार्य) वेक्टर आईएसएएस के साथ प्राप्त करने योग्य है।[5]
एआरएम का स्केलेबल वेक्टर विस्तार एक और दृष्टिकोण लेता है, जिसे फ्लिन के टैक्सोनॉमी में "एसोसिएटिव प्रोसेसिंग" के रूप में जाना जाता है, जिसे आज सामान्यतः "प्रिडिकेटेड" (नकाबपोश) एसआईएमडी के रूप में जाना जाता है। यह दृष्टिकोण वेक्टर प्रसंस्करण के रूप में कॉम्पैक्ट नहीं है, किन्तु अभी भी गैर-निर्धारित एसआईएमडी से कहीं उत्तम है। वेक्टर प्रोसेसिंग पेज में विस्तृत तुलनात्मक उदाहरण दिए गए हैं।
कालक्रम
| वर्ष | उदाहरण |
|---|---|
| 1974 | इलियाक चतुर्थ |
| 1974 | आईसीएल वितरित ऐरे प्रोसेसर (डीएपी) |
| 1976 | बरोज़ वैज्ञानिक प्रोसेसर |
| 1981 | मार्टिन मैरिएट्टा से ज्यामितीय-अंकगणितीय समानांतर प्रोसेसर (लॉकहीड मार्टिन में जारी, फिर टेरानेक्स और सिलिकॉन ऑप्टिक्स में) |
| 1983-1991 | नासा/गोडार्ड स्पेस फ्लाइट सेंटर से मैसिवली पैरेलल प्रोसेसर (एमपीपी)। |
| 1985 | थिंकिंग मशीन कॉर्पोरेशन से कनेक्शन मशीन, मॉडल 1 और 2 (सीएम-1 और सीएम-2)। |
| 1987-1996 | मासपार एमपी-1 और एमपी-2 |
| 1991 | वेवट्रेसर से जेफिर डीसी |
| 2001 | पिक्सिस, इंक. से एक्सप्लोर |
हार्डवेयर
स्मॉल-स्केल (64 या 128 बिट्स) एसआईएमडी 1990 के दशक के प्रारंभ में सामान्य-उद्देश्य वाले सीपीयू पर लोकप्रिय हो गया और 1997 तक और बाद में डेक अल्फा के लिए मोशन वीडियो निर्देश (एमवीआई) के साथ जारी रहा। अधिकांश सीपीयू पर एसआईएमडी निर्देश एक या दूसरे डिग्री तक मिल सकते हैं, जिनमें आईबीएम का अल्टीवेक और पावरपीसी के लिए सिग्नल प्रोसेसिंग इंजन, हेवलेट पैकर्ड का पीए-आरआईएससी मल्टीमीडिया एक्सेलेरेशन एक्सटेन्शन (मैक्स), इंटेल कारपोरेशन का एमएमएक्स (निर्देश समूह), स्ट्रीमिंग एसआईएमडी विस्तार सम्मिलित हैं। एसएसई2, एसएसई3 एसएसएसई3, एसएसई4 और एसएसई 4.x, उन्नत लघु उपकरण का 3DNow!, आर्क (प्रोसेसर) का आर्क वीडियो उपप्रणाली, स्पार्क का विज़ुअल निर्देश समूह और विस2, सन माइक्रोसिस्टम्स का एमएजेसी, एआरएम होल्डिंग्स का आर्म आर्किटेक्चर एडवांस एसआईएमडी (नियॉन) विधि , एमआईपीएस आर्किटेक्चर 'एमडीएमएक्स (मैडमैक्स) और एमआईपीएस-3D आईबीएम, सोनी, टोशिबा सह-विकसित सेल (माइक्रोप्रोसेसर) की सिनर्जिस्टिक प्रोसेसिंग यूनिट का निर्देश समूह भारी एसआईएमडी आधारित है। फ़िलिप्स, जो अब एनएक्सपी अर्द्धचालक है, ने ज़ेतल नाम के कई एसआईएमडी प्रोसेसर विकसित किया था। ज़ेतल में 320 16-बिट प्रोसेसर तत्व हैं जो विशेष रूप से दृष्टि कार्यों के लिए डिज़ाइन किए गए हैं।
आधुनिक ग्राफ़िक्स प्रोसेसिंग युनिट (जीपीयू) अधिकांश विस्तृत एसआईएमडी कार्यान्वयन होते हैं, जो समय में 128 या 256 बिट्स पर शाखाओं, लोड और स्टोर करने में सक्षम होते हैं।
इंटेल का एवीएक्स-512 एसआईएमडी निर्देश बार में 512 बिट डेटा प्रोसेस करता है।
सॉफ्टवेयर
एसआईएमडी निर्देशों का विस्तृत रूप से 3D ग्राफ़िक्स को संसाधित करने के लिए उपयोग किया जाता है, चूँकि एम्बेडेड एसआईएमडी वाले आधुनिक वीडियो कार्डों ने इस कार्य को सीपीयू से बड़े मापदंड पर ले लिया है। कुछ प्रणालियों में परमिट फ़ंक्शंस भी सम्मिलित होते हैं जो वैक्टर के अंदर तत्वों को फिर से पैक करते हैं, जिससे वे डेटा प्रोसेसिंग और संपीड़न के लिए विशेष रूप से उपयोगी होते हैं। इनका उपयोग क्रिप्टोग्राफी में भी किया जाता है।[6][7][8] जीपीयू (जीपीजीपीयू) पर सामान्य प्रयोजन कंप्यूटिंग की प्रवृत्ति से भविष्य में सिमड का विस्तृत उपयोग हो सकता है।
कई समस्याओं के कारण निजी कंप्यूटर सॉफ्टवेयर में एसआईएमडी प्रणाली को अपनाने की गति पहले धीमी थी। यह था कि आधुनिक फ़्लोटिंग पॉइंट रजिस्टरों के पुन: उपयोग के कारण कई प्रारंभिक एसआईएमडी निर्देश समूह प्रणाली के समग्र प्रदर्शन को धीमा कर देते थे। अन्य प्रणालियाँ, जैसे एमएमएक्स (निर्देश समूह) और 3DNow!, ने डेटा प्रकारों के लिए समर्थन की प्रस्तुतकश की जो विस्तृत दर्शकों के लिए रोचक नहीं थे और फ्लोटिंग-पॉइंट यूनिट और एमएमएक्स प्रोसेसर रजिस्टर का उपयोग करने के लिए महंगे संदर्भ स्विचिंग निर्देश थे। कंपाइलर्स में भी अधिकांश समर्थन की कमी होती है, जिससे प्रोग्रामर को असेंबली भाषा कोडिंग का सहारा लेना पड़ता है।
एक्स86 पर एसआईएमडी की प्रारंभ धीमी रही थी। 3DNow के प्रारंभ! इंटेल कारपोरेशन द्वारा उन्नत माइक्रो डिवाइसेस और स्ट्रीमिंग एसआईएमडी विस्तार कुछ सीमा तक भ्रमित करते हैं, किन्तु आज लगता है कि प्रणाली व्यवस्थित हो गया है (एएमडी द्वारा एसएसई को अपनाने के बाद) और नए कंपाइलरों को अधिक एसआईएमडी- सक्षम सॉफ़्टवेयर में परिणाम देना चाहिए। इंटेल और एएमडी अब दोनों अनुकूलित गणित पुस्तकालय प्रदान करते हैं जो एसआईएमडी निर्देशों का उपयोग करते हैं, और लीबएसआईएमडी, एसआईएमडीएक्स86 और स्लीफ जैसे ओपन सोर्स विकल्प दिखाई देने लगे हैं (एलआईबीएम भी देखें)।[9]
एप्पल इंक. को कुछ अधिक सफलता मिली, चाहे उन्होंने शेष की तुलना में बाद में एसआईएमडी बाजार में प्रवेश किया। अल्टीवेक ने समृद्ध प्रणाली की प्रस्तुतकश की और मोटोरोला, आईबीएम और जीएनयू से तेजी से परिष्कृत कंपाइलरों का उपयोग करके प्रोग्राम किया जा सकता है, इसलिए असेंबली भाषा प्रोग्रामिंग की संभवतः ही कभी आवश्यकता होती है। इसके अतिरिक्त, एसआईएमडी से लाभान्वित होने वाली कई प्रणालियों की आपूर्ति स्वयं एप्पल द्वारा की गई थी, उदाहरण के लिए आईट्यून्स और क्विकटाइम। चूँकि, 2006 में, एप्पल कंप्यूटर इंटेल x86 प्रोसेसर में चले गये थे। एप्पल के एप्लिकेशन प्रोग्रामिंग अंतरफलक और एकीकृत विकास पर्यावरण (एक्सकोड) को एसएसई2 और एसएसई3 के साथ-साथ अल्टीवेक को सपोर्ट करने के लिए संशोधित किया गया था। एप्पल आईबीएम और फ्रीस्केल अर्द्धचालक से पावरपीसी चिप्स का प्रमुख खरीदार था और चाहे उन्होंने प्लेटफॉर्म को छोड़ दिया, अल्टिवेक का आगे विकास फ्रीस्केल और आईबीएम से कई पावरपीसी और पावर आईएसए डिजाइनों में जारी है।
रजिस्टर के अन्दर एसआईएमडी, या एसडब्ल्यूएआर, हार्डवेयर पर सामान्य-उद्देश्य वाले रजिस्टरों में एसआईएमडी के प्रदर्शन के लिए उपयोग की जाने वाली विधियों और युक्तियों की श्रृंखला है जो एसआईएमडी निर्देशों के लिए कोई प्रत्यक्ष समर्थन प्रदान नहीं करता है। इसका उपयोग हार्डवेयर पर भी कुछ एल्गोरिदम में समानता का फायदा उठाने के लिए किया जा सकता है जो सीधे सिमड का समर्थन नहीं करता है।
प्रोग्रामर इंटरफ़ेस
एसआईएमडी निर्देश समूह के प्रकाशकों के लिए यह सामान्य है कि वे सदिश कोड की पीढ़ी की गारंटी देने वाले आंतरिक कार्यों या विशेष डेटाटाइप्स (ऑपरेटर ओवरलोडिंग के साथ) के साथ अपने स्वयं के C/C++ भाषा विस्तार बनाते हैं। इंटेल, अल्टीवेक, और आर्म नियोन अपने सीपीयू को लक्षित करने वाले कंपाइलरों द्वारा विस्तृत रूप से अपनाए गए विस्तार प्रदान करते हैं। (अधिक जटिल संचालन वेक्टर गणित पुस्तकालयों का कार्य है।)
जीएनयू सी कंपाइलर विस्तार को सार्वभौमिक इंटरफ़ेस में सारणित करके कदम आगे ले जाता है जिसे एसआईएमडी डेटाटाइप्स को परिभाषित करने का विधि प्रदान करके किसी भी प्लेटफ़ॉर्म पर उपयोग किया जा सकता है।[10] एलएलवीएम क्लैंग कंपाइलर आईआर में परिभाषित समान इंटरफ़ेस के साथ, सुविधा को प्रायुक्त करता है।[11] रस्ट का पैक्ड_सिम क्रेट इस इंटरफ़ेस का उपयोग करता है, और इसी प्रकार स्विफ्ट (प्रोग्रामिंग भाषा) 2.0+ करता है।
सी ++ में प्रयोगात्मक इंटरफ़ेस std::experimental::simd है जो जीसीसी विस्तार के समान कार्य करता है। एलएलवीएम का libcxx इसे प्रायुक्त करता प्रतीत होता है। जीसीसी और libstdc++ के लिए, रैपर लाइब्रेरी जो जीसीसी विस्तार के शीर्ष पर बनती है, उपलब्ध है।[12]
माइक्रोसॉफ्ट कारपोरेशन ने रयुजित में एसआईएमडी को .NET में जोड़ा गया था।[13] System.Numerics.Vector पैकेज, नुगेट पर उपलब्ध है, एसआईएमडी डेटाटाइप प्रायुक्त करें।[14] जावा में एसआईएमडी निर्देशों के लिए नया प्रस्तावित एपीआई भी है [15] इनक्यूबेटर मॉड्यूल में ओपनजेडीके 17 में उपलब्ध है। इसमें असमर्थित सीपीयू पर साधारण लूप के लिए सुरक्षित फॉलबैक तंत्र भी है।
एसआईएमडी डेटाटाइप प्रदान करने के अतिरिक्त, कंपाइलर्स को कुछ लूपों को ऑटो-वेक्टराइज़ करने के लिए भी संकेत दिया जा सकता है, संभवतः डेटा निर्भरता की कमी के बारे में कुछ अभिकथन ले रहा है। यह सीधे एसआईएमडी वेरिएबल्स में हेरफेर करने जितना लचीला नहीं है, किन्तु इसका उपयोग ओपनएमपी 4.0+ में #pragma omp simd संकेत देना आसान है।[16] इस ओपनएमपी इंटरफ़ेस ने सिल्क्स के #pragma simd.,[17] जीसीसी के #pragma GCC ivdep, और कई अन्य सहित गैर-मानक एक्सटेंशन के एक विस्तृत समुच्चय को बदल दिया है।[18]
एसआईएमडी बहु-संस्करण
उपभोक्ता सॉफ्टवेयर से सामान्यतः कई पीढ़ियों को कवर करने वाले सीपीयू की श्रृंखला पर काम करने की अपेक्षा की जाती है, जो प्रोग्राम के कम्प्यूटेशनल प्रदर्शन को उत्तम बनाने के लिए प्रोग्रामर की नए एसआईएमडी निर्देशों का उपयोग करने की क्षमता को सीमित कर सकता है। समाधान ही कोड के कई संस्करणों को सम्मिलित करना है जो या तो पुरानी या नई एसआईएमडी विधियों का उपयोग करता है, और को चुनें जो रन-टाइम (गतिशील प्रेषण) पर उपयोगकर्ता के सीपीयू के लिए सबसे उपयुक्त हो। समाधान के दो मुख्य शिविर हैं:
- फंक्शन मल्टी-वर्जनिंग (एफएमवी): प्रोग्राम या लाइब्रेरी में सबरूटीन को कई निर्देश समूह विस्तार के लिए नकली और संकलित किया जाता है, और प्रोग्राम यह तय करता है कि रन-टाइम में किसका उपयोग किया जाए।
- लाइब्रेरी मल्टी-वर्जनिंग (एलएमवी): संपूर्ण पुस्तकालय (कम्प्यूटिंग) को कई निर्देश समूह विस्तार के लिए नकली किया गया है, और ऑपरेटिंग प्रणाली या प्रोग्राम यह तय करता है कि रन-टाइम पर किसे लोड करना है।
एफएमवी, असेंबली भाषा में मैन्युअल रूप से कोडित, सामान्यतः कई प्रदर्शन-महत्वपूर्ण पुस्तकालयों जैसे ग्लिब्क और libjpeg-turbo में उपयोग किया जाता है। इंटेल सी ++ कंपाइलर, जीसीसी 6 के बाद से जीएनयू कंपाइलर संग्रह, और क्लैंग 7 के बाद से क्लैंग सरलीकृत दृष्टिकोण की अनुमति देता है, जिसमें कंपाइलर फ़ंक्शन डुप्लिकेशन और चयन का ख्याल रखता है। जीसीसी और बजना स्पष्ट की आवश्यकता है target_clones कार्यों को क्लोन करने के लिए कोड में लेबल,[19] चूंकि आईसीसी स्वचालित (कमांड-लाइन विकल्प के अनुसार /Qax) रूप से ऐसा करता है जंग प्रोग्रामिंग भाषा एफएमवी को भी सपोर्ट करती है। समूहअप जीसीसी और क्लैंग के समान है जिसमें कोड परिभाषित करता है कि किस निर्देश को संकलित करना है, किन्तु क्लोनिंग मैन्युअल रूप से इनलाइनिंग के माध्यम से की जाती है।[20]
एफएमवी का उपयोग करने के लिए जीसीसी और क्लैंग पर कोड संशोधन की आवश्यकता होती है, विक्रेता सामान्यतः लाइब्रेरी मल्टी-वर्जनिंग का उपयोग करते हैं: इसे प्राप्त करना आसान है क्योंकि केवल कंपाइलर स्विच को बदलने की जरूरत है। ग्लिब्क एलएमवी का समर्थन करता है और यह कार्यक्षमता इंटेल-समर्थित क्लियर लिनक्स प्रोजेक्ट द्वारा अपनाई जाती है।[21]
वेब पर एसआईएमडी
2013 में जॉन मैककॉचन ने घोषणा की कि उन्होंने डार्ट (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा के लिए एसआईएमडी निर्देश समूह के लिए उच्च-प्रदर्शन इंटरफ़ेस बनाया है, जिससे पहली बार एसआईएमडी के लाभ वेब प्रोग्राम में आए। इंटरफ़ेस में दो प्रकार होते हैं:[22]
- फ्लोट32x4, 4 एकल त्रुटिहीन फ्लोटिंग पॉइंट मान।
- इंट32x4, 4 32-बिट पूर्णांक मान।
इन प्रकारों के उदाहरण अपरिवर्तनीय हैं और अनुकूलित कोड में सीधे एसआईएमडी रजिस्टरों में मैप किए जाते हैं। डार्ट में व्यक्त संचालन सामान्यतः बिना किसी ओवरहेड के एकल निर्देश में संकलित किए जाते हैं। यह सी और सी++ इंट्रिनिक्स के समान है। डार्ट में लिखे स्केलर कोड की तुलना में 4×4 मैट्रिक्स गुणन, 3डी वर्टेक्स परिवर्तन और मैंडेलब्रॉट समूह विज़ुअलाइज़ेशन के लिए बेंचमार्क 400% स्पीडअप के निकट दिखाते हैं।
डार्ट पर मैककॉचन का काम, जिसे अब एसआईएमडी.js कहा जाता है, को ईसीएमए स्क्रिप्ट द्वारा अपनाया गया है और इंटेल ने IDF 2013 में घोषणा की कि वे V8 (जावास्क्रिप्ट इंजन) और स्पाइडरमोन्की (जावास्क्रिप्ट इंजन) दोनों के लिए मैककुचन के विनिर्देश को प्रायुक्त कर रहे हैं।[23] चूँकि, 2017 तक, एसआईएमडी.js को वेब असेंबली में समान इंटरफ़ेस को आगे बढ़ाने के पक्ष में ईसीएमए स्क्रिप्ट मानक कतार से बाहर कर दिया गया है।[24] अगस्त 2020 तक, वेब असेंबली इंटरफ़ेस अधूरा बना हुआ है, किन्तु इसके पोर्टेबल 128-बिट एसआईएमडी फीचर का पहले ही कई इंजनों में कुछ उपयोग देखा जा चुका है।
एमस्क्रिप्टेन, मोज़िला का सी/सी++-टू-जावास्क्रिप्ट कंपाइलर, विस्तार के साथ सी++ प्रोग्राम के संकलन को सक्षम कर सकता है जो एसआईएमडी इंट्रिनिक्स या जीसीसी-स्टाइल वेक्टर कोड का उपयोग जावास्क्रिप्ट के एसआईएमडी एपीआई में करता है, जिसके परिणामस्वरूप स्केलर कोड की तुलना में समकक्ष स्पीडअप होता है।[25] यह वेब असेंबली 128-बिट एसआईएमडी प्रस्ताव का भी समर्थन करता है (और अब पसंद करता है)।[26]
वाणिज्यिक अनुप्रयोग
चूंकि सिमड-ओनली प्रोसेसर के लिए टिकाऊ व्यावसायिक अनुप्रयोगों को खोजना सामान्यतः कठिन सिद्ध हुआ है, किन्तु सफलता के कुछ उपाय ज्यामितीय-अंकगणितीय समानांतर प्रोसेसर है, जिसे लॉकहीड मार्टिन द्वारा विकसित किया गया था और उनके स्पिन-ऑफ टेरानेक्स द्वारा वाणिज्यिक क्षेत्र में ले जाया गया था। जीएपीपी के नवीनतम अवतार रीयल-टाइम डिजिटल इमेज प्रोसेसिंग अनुप्रयोगों में शक्तिशाली उपकरण बन गए हैं जैसे विभिन्न वीडियो मानकों और फ्रेम दर (एनटीएससी से/से पीएएल, एनटीएससी से/उच्च परिभाषा टेलीविजन प्रारूपों, आदि के बीच रूपांतरण), डीइंटरलेसिंग, ध्वनि कटौती, अनुकूली वीडियो संपीड़न, और छवि वृद्धि।
एसआईएमडी के लिए अधिक सर्वव्यापी अनुप्रयोग वीडियो गेम में पाया जाता है: विडियो गेम कंसोल (छठी पीढ़ी) के इतिहास के बाद से लगभग हर आधुनिक वीडियो गेम कंसोल ने अपने आर्किटेक्चर में कहीं न कहीं एसआईएमडी प्रोसेसर को सम्मिलित किया है। प्लेस्टेशन 2 असामान्य था क्योंकि इसकी वेक्टर-फ्लोट इकाइयों में से स्वायत्त डिजिटल सिग्नल प्रोसेसर के रूप में काम कर सकता था, जो अपने स्वयं के निर्देश स्ट्रीम को क्रियान्वित कर सकता था, या सामान्य सीपीयू निर्देशों द्वारा संचालित कोप्रोसेसर के रूप में कार्य कर सकता था। 3D ग्राफ़िक्स एप्लिकेशन एसआईएमडी प्रोसेसिंग के लिए खुद को अच्छी प्रकार से उधार देते हैं क्योंकि वे 4-आयामी वैक्टर के साथ संचालन पर बहुत अधिक निर्भर करते हैं। माइक्रोसॉफ्ट का डायरेक्ट3डी 9.0 अब एसआईएमडी-सक्षम निर्देशों के उपयोग सहित अपने स्वयं के गणित कार्यों के रनटाइम प्रोसेसर-विशिष्ट कार्यान्वयन को चुनता है।
वेक्टर प्रोसेसिंग का उपयोग करने वाले नवीनतम प्रोसेसर में से आईबीएम द्वारा तोशीबा और सोनी के सहयोग से विकसित सेल (माइक्रोप्रोसेसर) है। यह कई एसआईएमडी प्रोसेसर (गैर-वर्दी मेमोरी एक्सेस आर्किटेक्चर, प्रत्येक स्वतंत्र कैश मैमोरी के साथ और सामान्य प्रयोजन सीपीयू द्वारा नियंत्रित) का उपयोग करता है और 3D और वीडियो प्रोसेसिंग अनुप्रयोगों के लिए आवश्यक विशाल डेटासमूह के लिए तैयार है। यह बिना किसी अलग स्केलर रजिस्टरों के ज़मीन से एसआईएमडी होने के कारण पारंपरिक आईएसएएस से भिन्न है।
ज़िलाब्स ने मीडिया प्लेयर और मोबाइल फोन जैसे मोबाइल उपकरणों पर उपयोग के लिए एसआईएमडी प्रकार का प्रोसेसर तैयार किया।[27]
क्लियरस्पीड प्रौद्योगिकी, लिमिटेड और स्ट्रीम प्रोसेसर, इंक. से बड़े मापदंड पर वाणिज्यिक एसआईएमडी प्रोसेसर उपलब्ध हैं। क्लियरस्पीड के सीएसएक्स600 (2004) में दो डबल-परिशुद्धता फ़्लोटिंग पॉइंट इकाइयों के साथ 96 कोर हैं, चूंकि सीएसएक्स700 (2008) में 192 हैं। स्ट्रीम प्रोसेसर का नेतृत्व कंप्यूटर वास्तुकार बिल डेली द्वारा किया जाता है। उनके स्टॉर्म-1 प्रोसेसर (2007) में एमआईपीएस सीपीयू द्वारा नियंत्रित 80 एसआईएमडी कोर होते हैं।
यह भी देखें
- स्ट्रीमिंग एसआईएमडी विस्तार, एमएमएक्स (निर्देश समूह), एसएसई2, एसएसई3, उन्नत वेक्टर विस्तार, एवीएक्स-512
- निर्देश समूह वास्तुकला
- फ्लिन की वर्गीकरण
- एसडब्ल्यूएआर|एसआईएमडी रजिस्टर के अन्दर (एसडब्ल्यूएआर)
- एसपीएमडी | एकल प्रोग्राम, एकाधिक डेटा (एसपीएमडी)
- ओपनसीएल
संदर्भ
- ↑ Flynn, Michael J. (September 1972). "Some Computer Organizations and Their Effectiveness" (PDF). IEEE Transactions on Computers. C-21 (9): 948–960. doi:10.1109/TC.1972.5009071.
- ↑ "MIMD1 - XP/S, CM-5" (PDF).
- ↑ Conte, G.; Tommesani, S.; Zanichelli, F. (2000). "The long and winding road to high-performance image processing with MMX/SSE". Proc. Fifth IEEE Int'l Workshop on Computer Architectures for Machine Perception. doi:10.1109/CAMP.2000.875989. hdl:11381/2297671. S2CID 13180531.
- ↑ Lee, R.B. (1995). "Realtime MPEG video via software decompression on a PA-RISC processor". digest of papers Compcon '95. Technologies for the Information Superhighway. pp. 186–192. doi:10.1109/CMPCON.1995.512384. ISBN 0-8186-7029-0. S2CID 2262046.
- ↑ Patterson, David; Waterman, Andrew (18 September 2017). "SIMD Instructions Considered Harmful". SIGARCH.
- ↑ RE: SSE2 speed, showing how SSE2 is used to implement SHA hash algorithms
- ↑ Salsa20 speed; Salsa20 software, showing a stream cipher implemented using SSE2
- ↑ Subject: up to 1.4x RSA throughput using SSE2, showing RSA implemented using a non-SIMD SSE2 integer multiply instruction.
- ↑ "SIMD library math functions". Stack Overflow. Retrieved 16 January 2020.
- ↑ "Vector Extensions". Using the GNU Compiler Collection (GCC). Retrieved 16 January 2020.
- ↑ "Clang Language Extensions". Clang 11 documentation. Retrieved 16 January 2020.
- ↑ "VcDevel/std-simd". VcDevel. 6 August 2020.
- ↑ "RyuJIT: The next-generation JIT compiler for .NET".
- ↑ "The JIT finally proposed. JIT and SIMD are getting married".
- ↑ "JEP 338: Vector API".
- ↑ "SIMD Directives". www.openmp.org.
- ↑ "Tutorial pragma simd". CilkPlus. 18 July 2012.
- ↑ Kruse, Michael. "OMP5.1: Loop Transformations" (PDF).
- ↑ "Function multi-versioning in GCC 6". lwn.net.
- ↑ "2045-target-feature". The Rust RFC Book.
- ↑ "Transparent use of library packages optimized for Intel® architecture". Clear Linux* Project (in English). Retrieved 8 September 2019.
- ↑ John McCutchan. "Bringing SIMD to the web via Dart" (PDF). Archived from the original (PDF) on 2013-12-03.
- ↑ "SIMD in JavaScript". 01.org. 8 May 2014.
- ↑ "tc39/ecmascript_simd: SIMD numeric type for EcmaScript". GitHub. Ecma TC39. 22 August 2019. Retrieved 8 September 2019.
- ↑ Jensen, Peter; Jibaja, Ivan; Hu, Ningxin; Gohman, Dan; McCutchan, John (2015). "SIMD in JavaScript via C++ and Emscripten" (PDF).
{{cite journal}}: Cite journal requires|journal=(help) - ↑ "Porting SIMD code targeting WebAssembly". Emscripten 1.40.1 documentation.
- ↑ "ZiiLABS ZMS-05 ARM 9 Media Processor". ZiiLabs. Archived from the original on 2011-07-18. Retrieved 2010-05-24.
बाहरी संबंध
- एसआईएमडी architectures (2000)
- Cracking Open The Pentium 3 (1999)
- Short Vector Extensions in Commercial Microprocessor
- Article about Optimizing the Rendering Pipeline of Animated Models Using the इंटेल Streaming एसआईएमडी Extensions
- "Yeppp!": cross-platform, open-source एसआईएमडी library from Georgia Tech
- Introduction to Parallel Computing from LLNL Lawrence Livermore National Laboratory Archived 2013-06-10 at the Wayback Machine
- simde on GitHub: A portable implementation of platform-specific intrinsics for other platforms (e.g. एसएसई intrinsics for आर्म NEON), using C/C++ headers