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