एकल निर्देश, एकाधिक डेटा

सिंगल इंस्ट्रक्शन, मल्टीपल डेटा (SIMD) फ्लिन की टैक्सोनॉमी में एक प्रकार का समानांतर कंप्यूटर है। SIMD आंतरिक (हार्डवेयर डिज़ाइन का हिस्सा) हो सकता है और इसे निर्देश सेट आर्किटेक्चर (ISA) के माध्यम से सीधे एक्सेस किया जा सकता है, लेकिन इसे ISA के साथ भ्रमित नहीं होना चाहिए। SIMD कई प्रसंस्करण तत्वों वाले कंप्यूटरों का वर्णन करता है जो एक साथ कई डेटा बिंदुओं पर एक ही ऑपरेशन करते हैं।

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

इतिहास
SIMD निर्देशों का पहला उपयोग ILLIAC IV में किया गया था, जो 1966 में पूरा हुआ था।

SIMD 1970 के दशक की शुरुआत में CDC STAR-100|CDC Star-100 और TI उन्नत वैज्ञानिक कंप्यूटर जैसे वेक्टर प्रोसेसर का आधार था, जो एकल निर्देश के साथ डेटा के वेक्टर पर काम कर सकता था। 1970 और 1980 के दशक में क्रे द्वारा वेक्टर प्रसंस्करण को विशेष रूप से लोकप्रिय बनाया गया था। वेक्टर प्रोसेसिंग आर्किटेक्चर को अब SIMD कंप्यूटरों से अलग माना जाता है: डंकन की टैक्सोनॉमी में उन्हें शामिल किया जाता है, जहां फ्लिन के काम (1966, 1972) के कारण क्रे -1 (1977) से पहले की डेटिंग होती है।

आधुनिक SIMD कंप्यूटरों के पहले युग की विशेषता सोच मशीनों निगम कनेक्शन मशीन | CM-1 और CM-2 जैसे बड़े पैमाने पर समानांतर प्रसंस्करण-शैली के सुपर कंप्यूटर थे। इन कंप्यूटरों में कई सीमित-कार्यक्षमता वाले प्रोसेसर थे जो समानांतर में काम करते थे। उदाहरण के लिए, एक थिंकिंग मशीन CM-2 में 65,536 सिंगल-बिट प्रोसेसर में से प्रत्येक एक ही समय में एक ही निर्देश को निष्पादित करेगा, उदाहरण के लिए, एक हाइपरक्यूब-कनेक्टेड नेटवर्क का उपयोग करके एक समय में 65,536 जोड़े बिट्स को तार्किक रूप से संयोजित करने की अनुमति देता है या प्रोसेसर-समर्पित रैम अपने ऑपरेंड खोजने के लिए। इंटेल i860 जैसे कमोडिटी प्रोसेसर पर आधारित सस्ती स्केलर मल्टीपल इंस्ट्रक्शन, मल्टीपल डेटा एप्रोच होने पर सुपरकंप्यूटिंग SIMD एप्रोच से दूर चली गई अधिक शक्तिशाली हो गया, और SIMD में रुचि कम हो गई।

SIMD प्रोसेसर का वर्तमान युग सुपरकंप्यूटर बाजार के बजाय डेस्कटॉप-कंप्यूटर बाजार से बढ़ा है। चूंकि डेस्कटॉप प्रोसेसर 1990 के दशक के दौरान रीयल-टाइम गेमिंग और ऑडियो/वीडियो प्रसंस्करण का समर्थन करने के लिए पर्याप्त शक्तिशाली हो गए थे, इस विशेष प्रकार की कंप्यूटिंग शक्ति के लिए मांग बढ़ी और मांग को पूरा करने के लिए माइक्रोप्रोसेसर विक्रेताओं ने SIMD की ओर रुख किया। Hewlett-Packard ने MPEG डिकोडिंग में तेजी लाने के लिए 1994 में PA-RISC 1.1 डेस्कटॉप में मल्टीमीडिया त्वरण विस्तार निर्देश पेश किया। सन माइक्रोसिस्टम्स ने 1995 में अपने UltraSPARC माइक्रोप्रोसेसर में अपने विज़ुअल इंस्ट्रक्शन एमएमएक्स (निर्देश सेट) एक्सटेंशन में SIMD पूर्णांक निर्देश पेश किए। MIPS ने अपने समान MDMX सिस्टम के अनुरूप किया।

पहला व्यापक रूप से तैनात डेस्कटॉप SIMD 1996 में x86 आर्किटेक्चर के लिए Intel के MMX (इंस्ट्रक्शन सेट) एक्सटेंशन के साथ था। इसने Motorola PowerPC और IBM के आईबीएम पावर माइक्रोप्रोसेसर सिस्टम में अधिक शक्तिशाली AltiVec सिस्टम की शुरुआत की। इंटेल ने 1999 में सभी नए स्ट्रीमिंग SIMD एक्सटेंशन सिस्टम की शुरुआत की। तब से, दोनों आर्किटेक्चर के लिए दृश्य निर्देश सेट में कई विस्तार हुए हैं। उन्नत वेक्टर एक्सटेंशन AVX, AVX2 और AVX-512 Intel द्वारा विकसित किए गए हैं। AMD अपने मौजूदा उत्पादों में AVX और AVX2 का समर्थन करता है।

ये सभी विकास वास्तविक समय के ग्राफिक्स के समर्थन की ओर उन्मुख हैं, और इसलिए दो, तीन, या चार आयामों में प्रसंस्करण की ओर उन्मुख हैं, आमतौर पर डेटा प्रकार और वास्तुकला के आधार पर वेक्टर लंबाई दो और सोलह शब्दों के बीच होती है। जब नए SIMD आर्किटेक्चर को पुराने से अलग करने की आवश्यकता होती है, तो नए आर्किटेक्चर को शॉर्ट-वेक्टर आर्किटेक्चर माना जाता है, क्योंकि पहले के SIMD और वेक्टर सुपर कंप्यूटर की वेक्टर लंबाई 64 से 64,000 थी। एक आधुनिक सुपरकंप्यूटर लगभग हमेशा MIMD कंप्यूटरों का एक समूह होता है, जिनमें से प्रत्येक SIMD निर्देशों को लागू (शॉर्ट-वेक्टर) करता है।

लाभ
एक एप्लिकेशन जो SIMD का लाभ उठा सकता है वह वह है जहां एक ही मान को बड़ी संख्या में डेटा बिंदुओं में जोड़ा जा रहा है (या घटाया जा रहा है), कई मल्टीमीडिया अनुप्रयोगों में एक सामान्य ऑपरेशन। एक उदाहरण एक छवि की चमक को बदलना होगा। छवि के प्रत्येक पिक्सेल में रंग के लाल (आर), हरे (जी) और नीले (बी) भागों की चमक के लिए तीन मान होते हैं। चमक को बदलने के लिए, R, G और B मानों को मेमोरी से पढ़ा जाता है, उनमें एक मान जोड़ा जाता है (या घटाया जाता है), और परिणामी मान वापस मेमोरी में लिखे जाते हैं। ऑडियो अंकीय संकेत प्रक्रिया इसी तरह, वॉल्यूम कंट्रोल के लिए, लेफ्ट और राइट दोनों चैनलों को एक साथ गुणा करेगा।

SIMD प्रोसेसर के साथ इस प्रक्रिया में दो सुधार होते हैं। एक के लिए डेटा को ब्लॉक में समझा जाता है, और कई मानों को एक साथ लोड किया जा सकता है। निर्देशों की एक श्रृंखला के बजाय इस पिक्सेल को पुनः प्राप्त करें, अब अगले पिक्सेल को पुनः प्राप्त करें, एक SIMD प्रोसेसर के पास एक ही निर्देश होगा जो प्रभावी रूप से कहता है कि n पिक्सेल प्राप्त करें (जहाँ n एक संख्या है जो डिज़ाइन से डिज़ाइन में भिन्न होती है)। विभिन्न कारणों से, प्रत्येक पिक्सेल को व्यक्तिगत रूप से पुनर्प्राप्त करने की तुलना में इसमें बहुत कम समय लग सकता है, जैसा कि एक पारंपरिक सीपीयू डिज़ाइन के साथ होता है।

एक और फायदा यह है कि निर्देश एक ही ऑपरेशन में सभी लोड किए गए डेटा पर काम करता है। दूसरे शब्दों में, यदि SIMD सिस्टम एक बार में आठ डेटा बिंदुओं को लोड करके काम करता है, तो  डेटा पर लागू किया जा रहा ऑपरेशन एक ही समय में सभी आठ मानों पर होगा। यह समानता एक सुपरस्केलर प्रोसेसर द्वारा प्रदान की गई समानता से अलग है; आठ मानों को एक गैर-सुपरस्क्लेर प्रोसेसर पर भी समानांतर में संसाधित किया जाता है, और एक सुपरस्केलर प्रोसेसर समानांतर में कई SIMD संचालन करने में सक्षम हो सकता है।

नुकसान

 * सभी एल्गोरिदम को आसानी से सदिश नहीं बनाया जा सकता है। उदाहरण के लिए, फ्लो-कंट्रोल-हैवी टास्क जैसे कोड पदच्छेद आसानी से SIMD से लाभान्वित नहीं हो सकते हैं; हालांकि, अधिकतम कैश इष्टतमता को लक्षित करने के लिए तुलना और बैच प्रवाह को सदिश बनाना सैद्धांतिक रूप से संभव है, हालांकि इस तकनीक के लिए अधिक मध्यवर्ती स्थिति की आवश्यकता होगी। नोट: बैच-पाइपलाइन सिस्टम (उदाहरण: जीपीयू या सॉफ़्टवेयर रास्टराइज़ेशन पाइपलाइन) कैश नियंत्रण के लिए सबसे फायदेमंद होते हैं जब सिमड इंट्रिनिक्स के साथ कार्यान्वित किया जाता है, लेकिन वे सिमड सुविधाओं के लिए अनन्य नहीं हैं। कोड स्ट्रिंग्स जैसी श्रृंखला के भीतर निर्भरता से बचने के लिए और जटिलता स्पष्ट हो सकती है; जबकि वैश्वीकरण के लिए स्वतंत्रता आवश्यक है।
 * बड़ी रजिस्टर फाइलें जो बिजली की खपत और आवश्यक चिप क्षेत्र को बढ़ाती हैं।
 * वर्तमान में, SIMD निर्देशों के साथ एक एल्गोरिथ्म को लागू करने के लिए आमतौर पर मानव श्रम की आवश्यकता होती है; उदाहरण के लिए, अधिकांश कंपाइलर एक विशिष्ट C (प्रोग्रामिंग लैंग्वेज) प्रोग्राम से SIMD निर्देश उत्पन्न नहीं करते हैं। कंपाइलर्स में स्वचालित वैश्वीकरण कंप्यूटर विज्ञान अनुसंधान का एक सक्रिय क्षेत्र है। (वेक्टर प्रोसेसर की तुलना करें।)
 * विशेष SIMD निर्देश सेट के साथ प्रोग्रामिंग में कई निम्न-स्तरीय चुनौतियाँ शामिल हो सकती हैं।
 * SIMD में डेटा संरचना संरेखण पर प्रतिबंध हो सकता है; एक विशेष आर्किटेक्चर से परिचित प्रोग्रामर इसकी उम्मीद नहीं कर सकते हैं। इससे भी बदतर: संरेखण एक संशोधन या संगत प्रोसेसर से दूसरे में बदल सकता है।
 * SIMD रजिस्टरों में डेटा इकट्ठा करना और इसे सही गंतव्य स्थानों पर बिखेरना मुश्किल है (कभी-कभी परमिट निर्देश की आवश्यकता होती है) और यह अक्षम हो सकता है।
 * कुछ SIMD निर्देश सेटों में रोटेशन या तीन-ऑपरेंड जोड़ जैसे विशिष्ट निर्देश उपलब्ध नहीं हैं।
 * निर्देश सेट आर्किटेक्चर-विशिष्ट हैं: कुछ प्रोसेसर में SIMD निर्देशों की पूरी तरह से कमी होती है, इसलिए प्रोग्रामर को उनके लिए गैर-वेक्टरकृत कार्यान्वयन (या अलग-अलग वेक्टरकृत कार्यान्वयन) प्रदान करना चाहिए।
 * अलग-अलग आर्किटेक्चर अलग-अलग रजिस्टर आकार (जैसे 64, 128, 256 और 512 बिट्स) और निर्देश सेट प्रदान करते हैं, जिसका अर्थ है कि प्रोग्रामर को किसी दिए गए सीपीयू पर बेहतर ढंग से काम करने के लिए वेक्टरकृत कोड के कई कार्यान्वयन प्रदान करने चाहिए। इसके अलावा, SIMD निर्देशों का संभावित सेट प्रत्येक नए रजिस्टर आकार के साथ बढ़ता है। दुर्भाग्य से, लीगेसी समर्थन कारणों से, पुराने संस्करणों को समाप्त नहीं किया जा सकता है।
 * प्रारंभिक MMX (निर्देश सेट) निर्देश सेट ने फ़्लोटिंग-पॉइंट स्टैक के साथ एक रजिस्टर फ़ाइल साझा की, जिसके कारण फ़्लोटिंग-पॉइंट और MMX कोड को मिलाते समय अक्षमताएँ हुईं। हालाँकि, SSE2 इसे सही करता है।

समस्याओं 1 और 5 को दूर करने के लिए, RISC-वीी का वेक्टर एक्सटेंशन वैकल्पिक दृष्टिकोण का उपयोग करता है: प्रोग्रामर को उप-रजिस्टर-स्तर के विवरण को उजागर करने के बजाय, निर्देश सेट उन्हें कुछ वेक्टर रजिस्टरों के रूप में सार करता है जो सभी सीपीयू में समान इंटरफेस का उपयोग करते हैं। इस निर्देश सेट के साथ। हार्डवेयर सभी संरेखण मुद्दों और लूप के स्ट्रिप-माइनिंग को संभालता है। विभिन्न वेक्टर आकार वाली मशीनें समान कोड चलाने में सक्षम होंगी। एलएलवीएम इस वेक्टर प्रकार को कॉल करता हैvscale. समतुल्य स्केलर या समतुल्य वेक्टर कोड की तुलना में कोड आकार में परिमाण वृद्धि का क्रम असामान्य नहीं है, और परिमाण या अधिक प्रभावशीलता का क्रम (अनुदेश के अनुसार किया गया कार्य) वेक्टर ISAs के साथ प्राप्त करने योग्य है। एआरएम का स्केलेबल वेक्टर एक्सटेंशन एक और तरीका अपनाता है, जिसे फ्लिन के टैक्सोनॉमी में जाना जाता है # सिंगल इंस्ट्रक्शन स्ट्रीम, मल्टीपल डेटा स्ट्रीम (एसआईएमडी) | फ्लिन की टैक्सोनॉमी असोसिएटिव प्रोसेसिंग के रूप में, जिसे आज आमतौर पर प्रिडिक्शन (कंप्यूटर आर्किटेक्चर) के रूप में जाना जाता है #SIMD, SIMT और वेक्टर प्रिडिक्शन| समर्पित (नकाबपोश) SIMD। यह दृष्टिकोण वेक्टर प्रसंस्करण के रूप में कॉम्पैक्ट नहीं है, लेकिन अभी भी गैर-निर्धारित SIMD से कहीं बेहतर है। विस्तृत तुलनात्मक उदाहरण वेक्टर प्रोसेसर#वेक्टर निर्देश उदाहरण पृष्ठ में दिए गए हैं।

हार्डवेयर
स्मॉल-स्केल (64 या 128 बिट्स) SIMD 1990 के दशक की शुरुआत में सामान्य-उद्देश्य वाले CPU पर लोकप्रिय हो गया और 1997 तक और बाद में DEC अल्फा के लिए मोशन वीडियो निर्देश (MVI) के साथ जारी रहा। अधिकांश CPU पर SIMD निर्देश एक डिग्री या किसी अन्य पर पाए जा सकते हैं, जिनमें IBM का AltiVec और PowerPC के लिए सिग्नल प्रोसेसिंग इंजन, Hewlett-Packard का PA-RISC मल्टीमीडिया एक्सेलेरेशन एक्सटेन्शन (MAX), Intel Corporation का MMX (इंस्ट्रक्शन सेट), स्ट्रीमिंग SIMD एक्सटेंशन शामिल हैं।, SSE2, SSE3 SSSE3 और SSE4|SSE4.x, उन्नत लघु उपकरणेज़ का 3DNow!, ARC (प्रोसेसर) का ARC वीडियो सबसिस्टम, SPARC का विज़ुअल इंस्ट्रक्शन सेट और VIS2, सन माइक्रोसिस्टम्स का MAJC, एआरएम होल्डिंग्स का ARM आर्किटेक्चर#एडवांस SIMD (नियॉन) तकनीक , MIPS आर्किटेक्चर 'MDMX (MaDMaX) और MIPS-3D। IBM, Sony, Toshiba सह-विकसित सेल (माइक्रोप्रोसेसर) की सिनर्जिस्टिक प्रोसेसिंग यूनिट का इंस्ट्रक्शन सेट भारी SIMD आधारित है। PHILIPS, जो अब NXP सेमीकंडक्टर है, ने Xetal नाम के कई SIMD प्रोसेसर विकसित किए। Xetal में 320 16-बिट प्रोसेसर तत्व हैं जो विशेष रूप से दृष्टि कार्यों के लिए डिज़ाइन किए गए हैं।

आधुनिक ग्राफ़िक्स प्रोसेसिंग युनिट (जीपीयू) अक्सर व्यापक SIMD कार्यान्वयन होते हैं, जो एक समय में 128 या 256 बिट्स पर शाखाओं, लोड और स्टोर करने में सक्षम होते हैं।

Intel का AVX-512 SIMD निर्देश एक बार में 512 बिट डेटा प्रोसेस करता है।

सॉफ्टवेयर
SIMD निर्देशों का व्यापक रूप से 3D ग्राफ़िक्स को संसाधित करने के लिए उपयोग किया जाता है, हालाँकि एम्बेडेड SIMD वाले आधुनिक वीडियो कार्डों ने इस कार्य को CPU से बड़े पैमाने पर ले लिया है। कुछ प्रणालियों में परमिट फ़ंक्शंस भी शामिल होते हैं जो वैक्टर के अंदर तत्वों को फिर से पैक करते हैं, जिससे वे डेटा प्रोसेसिंग और संपीड़न के लिए विशेष रूप से उपयोगी होते हैं। इनका उपयोग क्रिप्टोग्राफी में भी किया जाता है।  जीपीयू (जीपीजीपीयू) पर सामान्य प्रयोजन कंप्यूटिंग की प्रवृत्ति से भविष्य में सिमड का व्यापक उपयोग हो सकता है।

कई समस्याओं के कारण निजी कंप्यूटर सॉफ्टवेयर में SIMD सिस्टम को अपनाने की गति पहले धीमी थी। एक यह था कि मौजूदा फ़्लोटिंग पॉइंट रजिस्टरों के पुन: उपयोग के कारण कई शुरुआती SIMD निर्देश सेट सिस्टम के समग्र प्रदर्शन को धीमा कर देते थे। अन्य प्रणालियाँ, जैसे MMX (निर्देश सेट) और 3DNow!, ने डेटा प्रकारों के लिए समर्थन की पेशकश की जो व्यापक दर्शकों के लिए दिलचस्प नहीं थे और फ्लोटिंग-पॉइंट यूनिट और MMX प्रोसेसर रजिस्टर का उपयोग करने के लिए महंगे संदर्भ स्विचिंग निर्देश थे। कंपाइलर्स में भी अक्सर समर्थन की कमी होती है, जिससे प्रोग्रामर को असेंबली भाषा कोडिंग का सहारा लेना पड़ता है।

X86 पर SIMD की शुरुआत धीमी रही। 3DNow की शुरूआत! Intel Corporation द्वारा उन्नत माइक्रो डिवाइसेस और स्ट्रीमिंग SIMD एक्सटेंशन कुछ हद तक भ्रमित करते हैं, लेकिन आज लगता है कि सिस्टम व्यवस्थित हो गया है (AMD द्वारा SSE को अपनाने के बाद) और नए कंपाइलरों को अधिक SIMD- सक्षम सॉफ़्टवेयर में परिणाम देना चाहिए। Intel और AMD अब दोनों अनुकूलित गणित पुस्तकालय प्रदान करते हैं जो SIMD निर्देशों का उपयोग करते हैं, और libSIMD, SIMDx86 और SLEEF जैसे ओपन सोर्स विकल्प दिखाई देने लगे हैं (libm भी देखें)। Apple Inc. को कुछ अधिक सफलता मिली, भले ही उन्होंने बाकी की तुलना में बाद में SIMD बाजार में प्रवेश किया। AltiVec ने एक समृद्ध प्रणाली की पेशकश की और मोटोरोला, आईबीएम और जीएनयू से तेजी से परिष्कृत कंपाइलरों का उपयोग करके प्रोग्राम किया जा सकता है, इसलिए असेंबली भाषा प्रोग्रामिंग की शायद ही कभी आवश्यकता होती है। इसके अतिरिक्त, SIMD से लाभान्वित होने वाली कई प्रणालियों की आपूर्ति स्वयं Apple द्वारा की गई थी, उदाहरण के लिए iTunes और QuickTime। हालाँकि, 2006 में, Apple कंप्यूटर Intel x86 प्रोसेसर में चले गए। Apple के अप्लिकेशन प्रोग्रामिंग अंतरफलक और एकीकृत विकास पर्यावरण (Xcode) को SSE2 और SSE3 के साथ-साथ AltiVec को सपोर्ट करने के लिए संशोधित किया गया था। Apple आईबीएम और फ्रीस्केल सेमीकंडक्टर से पावरपीसी चिप्स का प्रमुख खरीदार था और भले ही उन्होंने प्लेटफॉर्म को छोड़ दिया, अल्टिवेक का आगे विकास फ्रीस्केल और आईबीएम से कई पावरपीसी और पावर आईएसए डिजाइनों में जारी है।

एक रजिस्टर के भीतर SIMD, या SWAR, हार्डवेयर पर सामान्य-उद्देश्य वाले रजिस्टरों में SIMD के प्रदर्शन के लिए उपयोग की जाने वाली तकनीकों और युक्तियों की एक श्रृंखला है जो SIMD निर्देशों के लिए कोई प्रत्यक्ष समर्थन प्रदान नहीं करता है। इसका उपयोग हार्डवेयर पर भी कुछ एल्गोरिदम में समानता का फायदा उठाने के लिए किया जा सकता है जो सीधे सिमड का समर्थन नहीं करता है।

प्रोग्रामर इंटरफ़ेस
SIMD निर्देश सेट के प्रकाशकों के लिए यह सामान्य है कि वे सदिश कोड की पीढ़ी की गारंटी देने वाले आंतरिक कार्यों या विशेष डेटाटाइप्स (ऑपरेटर ओवरलोडिंग के साथ) के साथ अपने स्वयं के C/C++ भाषा एक्सटेंशन बनाते हैं। Intel, AltiVec, और ARM NEON अपने CPU को लक्षित करने वाले कंपाइलरों द्वारा व्यापक रूप से अपनाए गए एक्सटेंशन प्रदान करते हैं। (अधिक जटिल संचालन वेक्टर गणित पुस्तकालयों का कार्य है।)

GNU C कंपाइलर एक्सटेंशन को एक सार्वभौमिक इंटरफ़ेस में सारणित करके एक कदम आगे ले जाता है जिसे SIMD डेटाटाइप्स को परिभाषित करने का एक तरीका प्रदान करके किसी भी प्लेटफ़ॉर्म पर उपयोग किया जा सकता है। एलएलवीएम क्लैंग कंपाइलर आईआर में परिभाषित एक समान इंटरफ़ेस के साथ, सुविधा को लागू करता है। रस्ट का पैक्ड_सिम क्रेट इस इंटरफ़ेस का उपयोग करता है, और इसी तरह स्विफ्ट (प्रोग्रामिंग भाषा) 2.0+ करता है।

सी ++ में एक प्रयोगात्मक इंटरफ़ेस है std::experimental::simd जो GCC एक्सटेंशन के समान कार्य करता है। एलएलवीएम का libcxx इसे लागू करता प्रतीत होता है। GCC और libstdc++ के लिए, एक रैपर लाइब्रेरी जो GCC एक्सटेंशन के शीर्ष पर बनती है, उपलब्ध है। Microsoft Corporation ने RyuJIT में SIMD को .NET Core|.NET में जोड़ा। System.Numerics.Vector }} पैकेज, NuGet पर उपलब्ध है, SIMD डेटाटाइप लागू करें। जावा में SIMD निर्देशों के लिए एक नया प्रस्तावित API भी है एक इनक्यूबेटर मॉड्यूल में OpenJDK 17 में उपलब्ध है। इसमें असमर्थित सीपीयू पर साधारण लूप के लिए एक सुरक्षित फॉलबैक तंत्र भी है।

SIMD डेटाटाइप प्रदान करने के बजाय, कंपाइलर्स को कुछ लूपों को ऑटो-वेक्टराइज़ करने के लिए भी संकेत दिया जा सकता है, संभवतः डेटा निर्भरता की कमी के बारे में कुछ अभिकथन ले रहा है। यह सीधे SIMD वेरिएबल्स में हेरफेर करने जितना लचीला नहीं है, लेकिन इसका उपयोग करना आसान है। ओपनएमपी 4.0+ में एक #pragma omp simd संकेत देना। इस OpenMP इंटरफ़ेस ने Cilk's सहित गैर-मानक एक्सटेंशन के विस्तृत सेट को बदल दिया है #pragma simd., जीसीसी के #pragma GCC ivdep, और भी कई।

SIMD बहु-संस्करण
उपभोक्ता सॉफ्टवेयर से आमतौर पर कई पीढ़ियों को कवर करने वाले सीपीयू की एक श्रृंखला पर काम करने की उम्मीद की जाती है, जो प्रोग्राम के कम्प्यूटेशनल प्रदर्शन को बेहतर बनाने के लिए प्रोग्रामर की नए SIMD निर्देशों का उपयोग करने की क्षमता को सीमित कर सकता है। समाधान एक ही कोड के कई संस्करणों को शामिल करना है जो या तो पुरानी या नई SIMD तकनीकों का उपयोग करता है, और एक को चुनें जो रन-टाइम (गतिशील प्रेषण) पर उपयोगकर्ता के CPU के लिए सबसे उपयुक्त हो। समाधान के दो मुख्य शिविर हैं:
 * फंक्शन मल्टी-वर्जनिंग (FMV): प्रोग्राम या लाइब्रेरी में एक सबरूटीन को कई इंस्ट्रक्शन सेट एक्सटेंशन के लिए डुप्लिकेट और संकलित किया जाता है, और प्रोग्राम यह तय करता है कि रन-टाइम में किसका उपयोग किया जाए।
 * लाइब्रेरी मल्टी-वर्जनिंग (LMV): संपूर्ण पुस्तकालय (कम्प्यूटिंग) को कई निर्देश सेट एक्सटेंशन के लिए डुप्लिकेट किया गया है, और ऑपरेटिंग सिस्टम या प्रोग्राम यह तय करता है कि रन-टाइम पर किसे लोड करना है।

FMV, असेंबली लैंग्वेज में मैन्युअल रूप से कोडित, आमतौर पर कई प्रदर्शन-महत्वपूर्ण पुस्तकालयों जैसे glibc और libjpeg-turbo में उपयोग किया जाता है। इंटेल सी ++ कंपाइलर, जीसीसी 6 के बाद से जीएनयू कंपाइलर संग्रह, और क्लैंग 7 के बाद से क्लैंग एक सरलीकृत दृष्टिकोण की अनुमति देता है, जिसमें कंपाइलर फ़ंक्शन डुप्लिकेशन और चयन का ख्याल रखता है। जीसीसी और बजना स्पष्ट की आवश्यकता है target_clones कार्यों को क्लोन करने के लिए कोड में लेबल, जबकि ICC स्वचालित रूप से ऐसा करता है (कमांड-लाइन विकल्प के तहत /Qax). जंग प्रोग्रामिंग भाषा FMV को भी सपोर्ट करती है। सेटअप जीसीसी और क्लैंग के समान है जिसमें कोड परिभाषित करता है कि किस निर्देश को संकलित करना है, लेकिन क्लोनिंग मैन्युअल रूप से इनलाइनिंग के माध्यम से की जाती है। एफएमवी का उपयोग करने के लिए जीसीसी और क्लैंग पर कोड संशोधन की आवश्यकता होती है, विक्रेता आमतौर पर लाइब्रेरी मल्टी-वर्जनिंग का उपयोग करते हैं: इसे हासिल करना आसान है क्योंकि केवल कंपाइलर स्विच को बदलने की जरूरत है। Glibc LMV का समर्थन करता है और यह कार्यक्षमता Intel-समर्थित Clear Linux प्रोजेक्ट द्वारा अपनाई जाती है।

वेब पर SIMD
2013 में जॉन मैककॉचन ने घोषणा की कि उन्होंने डार्ट (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा के लिए SIMD इंस्ट्रक्शन सेट के लिए एक उच्च-प्रदर्शन इंटरफ़ेस बनाया है, जिससे पहली बार SIMD के लाभ वेब प्रोग्राम में आए। इंटरफ़ेस में दो प्रकार होते हैं:
 * फ्लोट32x4, 4 एकल सटीक फ्लोटिंग पॉइंट मान।
 * Int32x4, 4 32-बिट पूर्णांक मान।

इन प्रकारों के उदाहरण अपरिवर्तनीय हैं और अनुकूलित कोड में सीधे SIMD रजिस्टरों में मैप किए जाते हैं। डार्ट में व्यक्त संचालन आमतौर पर बिना किसी ओवरहेड के एकल निर्देश में संकलित किए जाते हैं। यह C और C++ इंट्रिनिक्स के समान है। डार्ट में लिखे स्केलर कोड की तुलना में 4×4 मैट्रिक्स | 4×4 मैट्रिक्स गुणन, 3डी वर्टेक्स परिवर्तन और मैंडेलब्रॉट सेट विज़ुअलाइज़ेशन के लिए बेंचमार्क 400% स्पीडअप के करीब दिखाते हैं।

डार्ट पर मैककॉचन का काम, जिसे अब SIMD.js कहा जाता है, को ECMAScript द्वारा अपनाया गया है और Intel ने IDF 2013 में घोषणा की कि वे V8 (जावास्क्रिप्ट इंजन) और स्पाइडरमोन्की (जावास्क्रिप्ट इंजन) दोनों के लिए मैककुचन के विनिर्देश को लागू कर रहे हैं। हालाँकि, 2017 तक, SIMD.js को WebAssembly में समान इंटरफ़ेस को आगे बढ़ाने के पक्ष में ECMAScript मानक कतार से बाहर कर दिया गया है। अगस्त 2020 तक, WebAssembly इंटरफ़ेस अधूरा बना हुआ है, लेकिन इसके पोर्टेबल 128-बिट SIMD फीचर का पहले ही कई इंजनों में कुछ उपयोग देखा जा चुका है।

Emscripten, मोज़िला का C/C++-to-JavaScript कंपाइलर, एक्सटेंशन के साथ C++ प्रोग्राम के संकलन को सक्षम कर सकता है जो SIMD इंट्रिनिक्स या GCC-स्टाइल वेक्टर कोड का उपयोग JavaScript के SIMD API में करता है, जिसके परिणामस्वरूप स्केलर कोड की तुलना में समकक्ष स्पीडअप होता है। यह WebAssembly 128-बिट SIMD प्रस्ताव का भी समर्थन करता है (और अब पसंद करता है)।

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

SIMD के लिए एक अधिक सर्वव्यापी अनुप्रयोग वीडियो गेम में पाया जाता है: विडियो गेम कंसोल (छठी पीढ़ी) के इतिहास के बाद से लगभग हर आधुनिक वीडियो गेम कंसोल ने अपने आर्किटेक्चर में कहीं न कहीं एक SIMD प्रोसेसर को शामिल किया है। प्लेस्टेशन 2 असामान्य था क्योंकि इसकी वेक्टर-फ्लोट इकाइयों में से एक एक स्वायत्त डिजिटल सिग्नल प्रोसेसर के रूप में काम कर सकता था, जो अपने स्वयं के निर्देश स्ट्रीम को क्रियान्वित कर सकता था, या सामान्य सीपीयू निर्देशों द्वारा संचालित कोप्रोसेसर के रूप में कार्य कर सकता था। 3D ग्राफ़िक्स एप्लिकेशन SIMD प्रोसेसिंग के लिए खुद को अच्छी तरह से उधार देते हैं क्योंकि वे 4-आयामी वैक्टर के साथ संचालन पर बहुत अधिक निर्भर करते हैं। Microsoft का DirectX|Direct3D 9.0 अब SIMD-सक्षम निर्देशों के उपयोग सहित अपने स्वयं के गणित कार्यों के रनटाइम प्रोसेसर-विशिष्ट कार्यान्वयन को चुनता है।

वेक्टर प्रोसेसिंग का उपयोग करने वाले हालिया प्रोसेसर में से एक आईबीएम द्वारा तोशीबा और सोनी के सहयोग से विकसित सेल (माइक्रोप्रोसेसर) है। यह कई SIMD प्रोसेसर (एक गैर-वर्दी मेमोरी एक्सेस आर्किटेक्चर, प्रत्येक स्वतंत्र कैश मैमोरी के साथ और एक सामान्य प्रयोजन CPU द्वारा नियंत्रित) का उपयोग करता है और 3D और वीडियो प्रोसेसिंग अनुप्रयोगों के लिए आवश्यक विशाल डेटासेट के लिए तैयार है। यह बिना किसी अलग स्केलर रजिस्टरों के ज़मीन से SIMD होने के कारण पारंपरिक ISAs से भिन्न है।

Ziilabs ने मीडिया प्लेयर और मोबाइल फोन जैसे मोबाइल उपकरणों पर उपयोग के लिए एक SIMD प्रकार का प्रोसेसर तैयार किया। ClearSpeed ​​Technology, Ltd. और Stream Processors, Inc. से बड़े पैमाने पर वाणिज्यिक SIMD प्रोसेसर उपलब्ध हैं। ClearSpeed ​​के CSX600 (2004) में दो डबल-परिशुद्धता फ़्लोटिंग पॉइंट इकाइयों के साथ 96 कोर हैं, जबकि CSX700 (2008) में 192 हैं। स्ट्रीम प्रोसेसर का नेतृत्व किसके द्वारा किया जाता है? कंप्यूटर वास्तुकार बिल डेली। उनके स्टॉर्म-1 प्रोसेसर (2007) में MIPS CPU द्वारा नियंत्रित 80 SIMD कोर होते हैं।

यह भी देखें

 * स्ट्रीमिंग SIMD एक्सटेंशन, MMX (निर्देश सेट), SSE2, SSE3, उन्नत वेक्टर एक्सटेंशन, AVX-512
 * निर्देश सेट वास्तुकला
 * फ्लिन की वर्गीकरण
 * SWAR|SIMD एक रजिस्टर के भीतर (SWAR)
 * एसपीएमडी | सिंगल प्रोग्राम, मल्टीपल डेटा (एसपीएमडी)
 * ओपनसीएल

बाहरी संबंध

 * SIMD 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 Intel Streaming SIMD Extensions
 * "Yeppp!": cross-platform, open-source SIMD library from Georgia Tech
 * Introduction to Parallel Computing from LLNL Lawrence Livermore National Laboratory
 * : A portable implementation of platform-specific intrinsics for other platforms (e.g. SSE intrinsics for ARM NEON), using C/C++ headers

Flynnsche Klassifikation