कंप्यूटर विशेष हार्डवेयर जैसे सॉर्टिंग नेटवर्क के साथ क्यों नहीं आते हैं?


10

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


2
PCI FPGA बोर्ड खरीदें और जो भी एक्सटेंशन आपको पसंद आए, उन्हें लागू करें।
एसके-लॉजिक

हार्डवेयर जादू नहीं है। विशेष हार्डवेयर द्वारा बहुत सी चीजों को (या बिल्कुल भी) त्वरित नहीं किया जा सकता है, और यदि ऐसा हो भी सकता है, तो मौजूदा हार्डवेयर को अक्सर अनुकूलित किया जाना चाहिए (या कम से कम पुनः संकलित)। Yosefk.com/blog/its-done-in-hardware-so-its-cheap.html


3
@WorldEngineer मैं यह नहीं देखता कि चित्र में कैसे प्रवेश करता है। आपके औसत उपयोगकर्ता को नहीं पता है कि आधुनिक सीपीयू में 80% चीजें किसके लिए हैं, वे खुश हैं क्योंकि उन्हें बताया गया है कि यह उनके कार्यक्रमों को तेज करता है (और इसमें सच्चाई का एक हिस्सा है)। यदि सॉर्टिंग वास्तव में ओपी के रूप में सामान्य होती है और समर्पित हार्डवेयर द्वारा अनुकूलित की जा सकती है, तो वे इसे शाखा भविष्यवक्ता ("वह क्या है, बागवानी?") के बगल में रख देंगे, एक प्रेस विज्ञप्ति जारी करते हुए कहते हैं कि उन्होंने आवेदन X और Y 5% किए हैं? तेजी से, और इसे बेचते हैं।

1
यह मुझे कंजर्वेशन कोर्स के विचार की याद दिलाता है , जो शिखर प्रदर्शन के बजाय ऊर्जा दक्षता के लिए लक्षित हैं।
पॉल ए। क्लेटन

जवाबों:


19

सबसे पहले, कंप्यूटर विशेष हार्डवेयर के साथ आते हैं । काफी सालों से बिकने वाले हर लैपटॉप और डेस्कटॉप कंप्यूटर में अब एक विशेष सह-प्रोसेसर, एक ग्राफिक्स प्रोसेसिंग यूनिट, जो दृश्य-प्रसंस्करण एल्गोरिदम को संभालता है, जैसे कि वीडियो और गेमिंग अनुप्रयोगों की आवश्यकता होती है। बहुत बड़े कंप्यूटर ( जैसे , "सुपर कंप्यूटर", आईबीएम के सिस्टम जेड परिवार) में संख्यात्मक प्रसंस्करण ("वेक्टर प्रसंस्करण"), आदि को संभालने के लिए कई विशेष प्रोसेसर हैं ।

दूसरे, छंटाई कंप्यूटिंग के सर्वोत्तम शोध पहलुओं में से एक है, और सबसे सरल मामलों की तुलना में हार्डवेयर में निर्माण करने के लिए बहुत जटिल है । छँटाई सभी गति और शुद्धता के बारे में है। गति एल्गोरिदम की पसंद, डेटा में प्रकार और भिन्नता और डेटा की मात्रा पर निर्भर करती है। सुधार डेटा के प्रकार और संदर्भ पर निर्भर करता है। सीपीयू के मूल शब्द आकार ( जैसे) के अंदर फिट होने वाले पूर्णांक के एक मध्यम आकार के सरणी को सॉर्ट करना सकारात्मक रूप से मामूली है, 31 या 63 बिट्स प्लस चिन्ह)। केवल ASCII मानों से अधिक वर्ण वर्णों को छांटना अत्यंत जटिल है - आईबीएम ने राष्ट्रीय सीमाओं और आम उपयोग के संदर्भ में चरित्र सेट के मुद्दों पर चर्चा करते हुए 20 साल पहले 500+ पेज की किताब प्रकाशित की थी। और फिर गैर-सन्निहित डेटा का सवाल है - एक लिंक की गई सूची को छांटने में मेमोरी पर सभी बिंदुओं का पीछा करना शामिल है।


10

मुख्य मुद्दा यह है कि छंटाई एल्गोरिदम (1) को बहुत लचीलेपन की आवश्यकता होती है, और (2) वैसे भी हार्डवेयर का उपयोग करने में तेजी लाने के लिए बहुत मुश्किल होगा।

एक बात यह है कि प्रोसेसर की मेमोरी बैंडविड्थ को आगे बढ़ाने के लिए छँटाई एल्गोरिदम पहले से ही आसानी से पर्याप्त हैं - प्रोसेसर पहले से ही अपने समय का एक बड़ा हिस्सा खर्च करेगा जो डेटा को पीछे की ओर ले जाने और मुख्य मेमोरी में आगे बढ़ने के लिए इंतजार कर रहा है। एक हार्डवेयर-त्वरित सॉर्टिंग सह-प्रोसेसर या एक विशेष सॉर्टिंग निर्देश में एक ही समस्या होगी।

इस मेमोरी बैंडविड्थ को जिस तरह से संबोधित किया जा रहा है वह बेहतर एल्गोरिदम और डेटा संरचनाओं का उपयोग करके है, जिसमें बेहतर "स्थानीयता" है, और इस क्षेत्र में अभी भी महत्वपूर्ण काम किया जा रहा है, विशेष रूप से "कैश विस्मृत एल्गोरिदम" (वे इस अर्थ में अनजान हैं कि वे काम करते हैं) कैशिंग के विवरण के बावजूद, जबकि "कैश अवेयर" एल्गोरिदम एक विशेष कैश पेज आकार आदि के लिए ट्यून किए गए हैं)।

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

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

ग्राफिक्स प्रोसेसर अब डिजिटल सिग्नल प्रोसेसर के आध्यात्मिक या वास्तविक वंशज हैं, जो डिजिटल सिग्नल (जैसे ऑडियो) से निपटने के लिए एक प्रकार का विशेष प्रोसेसर था।

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

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


3

लेकिन वे करते हैं! उन्हें निर्देश सेट एक्सटेंशन कहा जाता है। (एसएसई और इस तरह की सामग्री)

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

यदि आप हार्डवेयर को देखते हैं जो यह काम कर सकता है, तो मेरा अनुमान है कि आप FPGAs जैसी किसी चीज़ को देख रहे होंगे। जैसा कि आप FPGAs के साथ देख सकते हैं, चिप बहुत अधिक महंगी हो जाएगी, जबकि यह कई अनुप्रयोगों के लिए लागू नहीं होगी।


मुझे एसएसई के लिए गूगल करना होगा, लेकिन, अग्रिम में, छंटाई शायद सार्वभौमिक है। क्या इसे हार्डवेयर स्तर पर लागू किया गया है?
माईविक्टर

एह, जैसा कि हम वहां हैं, क्या आप पुस्तकों की सिफारिश करेंगे?
माईविक्टर

मैं सामान्य रूप से सीपीयू शैली प्रोसेसर पर नौकरी विशिष्ट अनुकूलन के बारे में बात कर रहा था, क्योंकि सॉर्टिंग नेटवर्क एक उदाहरण के रूप में उपयोग किया जाता है। मुझे नहीं पता कि एसएसई या किसी अन्य अनुदेश सेट में विशिष्ट अनुकूलन को छांटना शामिल है। मैंने Google सॉर्टिंग नेटवर्क किया, और चूंकि अनुकूलित सामान्य कार्यान्वयन हैं, इसलिए मुझे लगता है कि सॉफ़्टवेयर कार्यान्वयन ठीक उसी तरह से काम कर सकता है यदि कार्यान्वयन सही तरीके से किया गया हो।
ओनो

मुझे यह इंगित करना है कि अधिकांश निर्देश सेट एक्सटेंशन निचले स्तर पर काम करते हैं, फिर जिस सॉर्टिंग नेटवर्क का आप एक उदाहरण के रूप में उपयोग करते हैं, लेकिन एक मल्टी रजिस्टर ऑप्टिमाइज़ेशन को तैयार करना असंभव नहीं है जो इस तरह से सॉर्ट कर सकता है। लेकिन सीपीयू निर्माताओं के लिए सवाल यह होगा: "क्या यह लागत का औचित्य साबित करने के लिए पर्याप्त भुगतान करेगा?"।
ओनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.