2010-05-25 23 views
25

पर CPUs पर हावी है, मेरे अधिकांश जीवन के लिए, मैंने सीपीयू प्रोग्राम किए हैं; और हालांकि अधिकांश एल्गोरिदम के लिए, बड़े-ओह चलने का समय सीपीयू/एफपीजीए पर समान रहता है, स्थिरांक काफी अलग होते हैं (उदाहरण के लिए, सीपीयू पावर के बहुत सारे डेटा को चारों ओर घुमाते हुए बर्बाद कर दिया जाता है, जबकि एफपीजीए के लिए अक्सर गणना की जाती है)।एल्गोरिदम एफपीजीए

मैं इस बारे में अधिक जानने के लिए करना चाहते - किसी अच्छी किताबें/संदर्भ कागजात/ट्यूटोरियल कि के मुद्दे के साथ सौदों के बारे में पता:

क्या कार्य FPGAs (शुद्ध गति के मामले में) पर सीपीयू पर हावी है - Paralizable लोगों - डीएसपी, जैसे : चिह्नित समुदाय विकी

+0

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

+0

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

+0

उदाहरण के लिए, सॉर्टिंग की समस्या लें। आम तौर पर हम अनुक्रमिक बिंदु से इसे देखते हैं और दावा करते हैं कि रन समय पर ओ (एन लॉग एन) निचला बाध्य है। हालांकि, एन प्रोसेसर के साथ एक एफपीजीए (जो इतनी अपरिहार्य नहीं है) आप अजीब-तरह के सॉर्ट को लागू कर सकते हैं (http://en.wikipedia.org/wiki/Odd-even_sort बबल प्रकार के लिए एक मृत आसान विस्तार) और सॉर्टिंग ओ (एन) समय में होता है! – ldog

उत्तर

32

[कोई सम्बन्ध नहीं, बस अपना चिंतन]

FPGAs अनिवार्य रूप से हार्डवेयर के लिए दुभाषिए कर रहे हैं! आर्किटेक्चर समर्पित एएसआईसी की तरह है, लेकिन तेजी से विकास पाने के लिए, और आप आवृत्ति में ~ 10 का एक कारक और बिजली दक्षता में कम से कम 10?] कारक का भुगतान करते हैं।

तो कोई भी कार्य करें जहां समर्पित एचडब्ल्यू बड़े पैमाने पर एफपीजीए 10/[?] कारकों से विभाजित CPUs को बेहतर प्रदर्शन कर सकता है, और आपके पास अभी भी विजेता होगा। इस तरह के कार्यों के विशिष्ट गुणों:

  • ठीक कणों का समानांतरवाद के लिए बड़े पैमाने पर अवसर।
    (एक बार में 4 ऑपरेशन करना गिनती नहीं है; 128 करता है।)
  • गहरी पाइपलाइनिंग के लिए अवसर।
    यह समानांतरता का एक प्रकार भी है, लेकिन इसे एकल कार्य पर लागू करना मुश्किल है, इसलिए यदि आप कई अलग-अलग कार्य से समानांतर में काम कर सकते हैं तो यह मदद करता है।
  • (अधिकतर) फिक्स्ड डेटा प्रवाह पथ।
    कुछ मक्स ठीक हैं, लेकिन बड़े पैमाने पर यादृच्छिक अभिगम खराब हैं, क्योंकि आप उन्हें समानांतर नहीं कर सकते हैं। लेकिन यादों के बारे में नीचे देखें।
  • उच्च कुल बैंडविड्थ कई छोटी यादें
    FPGAs, छोटे के सैकड़ों (ओ (1KB)) आंतरिक यादें (Xilinx भाषा में BlockRAMs) है, इसलिए यदि आप आप कई स्वतंत्र बफ़र्स में स्मृति उपयोग विभाजन कर सकते हैं, तो आप एक डेटा बैंडविड्थ कि सीपीयू का सपना देखा कभी नहीं कर सकते हैं।
  • छोटे बाहरी बैंडविड्थ (आंतरिक कार्य की तुलना में)। आदर्श एफपीजीए कार्य में छोटे इनपुट और आउटपुट हैं लेकिन बहुत सारे आंतरिक काम की आवश्यकता है। इस प्रकार आपका एफपीजीए आई/ओ के लिए इंतजार कर रहा है। (सीपीयू पहले से भूख से पीड़ित हैं, और वे को बहुत परिष्कृत (और बड़े) के साथ कम करते हैं, कैश, एफपीजीए में अप्राप्य।) यह पूरी तरह से संभव है nowdays 1000 पिंस एक FPGA (करने के लिए एक विशाल आई/ओ बैंडविड्थ कनेक्ट करने के लिए ~, उच्च दर SERDESes के साथ कुछ) - लेकिन यह है कि इस तरह के कर बैंडविड्थ के लिए architected एक कस्टम बोर्ड की आवश्यकता है; अधिकांश परिदृश्यों में, आपका बाहरी I/O बाधा होगा।
  • एचडब्ल्यू के लिए पर्याप्त (उर्फ अच्छा एसडब्ल्यू/एचडब्ल्यू विभाजन)।
    कई कार्यों में 9 0% अनियमित गोंद तर्क और केवल 10% कड़ी मेहनत (डीएसपी भावना में "कर्नेल") शामिल है। यदि आप को एक एफपीजीए पर डालते हैं, तो आप तर्क पर क्षेत्र बर्बाद कर देंगे जो अधिकतर समय काम नहीं करता है। आदर्श रूप में, आप सभी मक को एसडब्ल्यू में संभालने के लिए चाहते हैं और पूरी तरह से कर्नेल के लिए एचडब्ल्यू का उपयोग करना चाहते हैं। ("सॉफ्ट-कोर" सीपीयू FPGAs अंदर, मध्यम क्षेत्र पर धीमी गति से अनियमित तर्क के बहुत पैक करने के लिए करता है, तो आप एक असली सीपीयू करने के लिए इसे बेचने नहीं कर सकते हैं एक लोकप्रिय तरीका है।)
  • अजीब सा जोड़तोड़ एक प्लस हैं
    चीज़ें है कि अच्छी तरह से पारंपरिक सीपीयू निर्देश सेट पर मैप नहीं, इस तरह पैक बिट्स, हैश फंक्शन के लिए असंरेखित पहुंच, कोडिंग & संपीड़न के रूप में ... हालांकि, कारक जिआदा नहीं है यह देता है आप - सबसे डेटा स्वरूप और आपके द्वारा मिलने वाले एल्गोरिदम पहले से ही को सीपीयू निर्देश सेट पर आसान बनाने के लिए डिज़ाइन किया गया है, और CPUs मल्टीमीडिया के लिए विशेष निर्देश जोड़ते हैं।
    बहुत सारे फ़्लोटिंग पॉइंट विशेष रूप से एक शून्य है क्योंकि CPUs और GPUs उन्हें बेहद अनुकूलित समर्पित सिलिकॉन पर क्रंच करते हैं।
  • कम विलंबता/वास्तविक समय आवश्यकताओं एक प्लस कर रहे हैं (तथाकथित "डीएसपी" FPGAs भी समर्पित mul/जोड़ने इकाइयों, के बहुत सारे है, लेकिन AFAIK इन केवल पूर्णांकों करते हैं?)।
    हार्डवेयर ऐसी मांगों के तहत वास्तव में चमक सकता है।

संपादित करें: इनमें से कई स्थितियां - esp। निश्चित डेटा प्रवाह और काम करने के लिए कई अलग-अलग कार्य - CPU पर bit slicing भी सक्षम करते हैं, जो कुछ हद तक फ़ील्ड का स्तर बनाता है।

+1

मुझे पसंद है। Upvoted। – anon

+2

आईएलपी दीवार के बारे में पढ़ें: http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-93-6.html – name

1

शुद्ध गति के लिए: क्या कार्य FPGAs

नोट (Jule प्रति काम के संदर्भ में) पर सीपीयू पर हावी करना वीडियो फ़िल्टर - डेटा ले जाना, उदा। डीएमए

9

अच्छी तरह से Xilinx भागों की नवीनतम पीढ़ी ने 600 एमएचजेड पर 4.7 टीएमएसीएस और सामान्य उद्देश्य तर्क को उजागर किया। (ये मूल रूप से एक छोटी प्रक्रिया पर फैले हुए विरटेक्स 6 एस हैं।)

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

आप इन पर तैर सकते हैं, लेकिन एक प्रदर्शन हिट होगा। डीएसपी ब्लॉक में 48 बिट योग के साथ 25x18 बिट एमएसीसी होता है। यदि आप ऑडबॉल प्रारूपों से दूर हो सकते हैं और सामान्य रूप से होने वाले कुछ फ़्लोटिंग पॉइंट सामान्यीकरण को बाईपास कर सकते हैं तो आप अभी भी इनमें से प्रदर्शन के ट्रक लोड को देख सकते हैं। (यानी 18 बिट इनपुट को सामान्य 24 बिट की बजाय स्ट्रेट फिक्स्ड पॉइंट या 17 बिट मैन्टिसिया के साथ फ्लोट के रूप में उपयोग करें।) डबल्स फ्लोट संसाधनों के बहुत सारे खाने जा रहे हैं, इसलिए यदि आपको इसकी ज़रूरत है, तो आप शायद पीसी पर बेहतर प्रदर्शन करेंगे।

यदि आपके एल्गोरिदम को जोड़ने और घटाने के संचालन के संदर्भ में व्यक्त किया जा सकता है, तो इन में सामान्य उद्देश्य तर्क का उपयोग गैज़िलियन एडर्स को लागू करने के लिए किया जा सकता है। ब्रेसेनहम की रेखा/सर्कल/यड्डा/यड्डा/यादा एल्गोरिदम जैसी चीजें एफपीजीए डिज़ाइन के लिए बहुत अच्छी हैं।

यदि आपको विभाजन की आवश्यकता है ... ईएच ... यह दर्दनाक है, और शायद अपेक्षाकृत धीमी होने जा रहा है जब तक कि आप अपने विभाजन को गुणा के रूप में लागू नहीं कर सकते।

यदि आपको बहुत अधिक परिशुद्धता ट्रिगर फ़ंक्शंस की आवश्यकता है, तो इतना नहीं ... फिर यह किया जा सकता है, लेकिन यह सुंदर या तेज़ नहीं होगा। (जैसे कि इसे 6502 पर किया जा सकता है।) यदि आप सीमित सीमा पर लुकअप टेबल का उपयोग कर सामना कर सकते हैं, तो आपका सुनहरा!

6502 की बात हो रही है, एक 6502 डेमो सांकेतिक शब्दों में बदलनेवाला इन चीजों में से एक गाना बना सकता है। कोई भी जो पुरानी गणित चाल से परिचित है, जो प्रोग्रामर पुराने स्कूल मशीन पर उपयोग करने के लिए उपयोग करते थे, वह अभी भी लागू होगा। आधुनिक प्रोग्रामर की सभी चालें आपको बताती हैं कि "आप के लिए मुक्ति करने दें" उन चीजों के प्रकार हैं जिन्हें आपको गणित को लागू करने के लिए जानने की आवश्यकता है। यदि आपको ऐसी किताब मिल सकती है जो 68000 आधारित अटारी या अमिगा पर 3 डी करने के बारे में बात करती है, तो वे केवल पूर्णांक में सामग्री को कार्यान्वित करने के बारे में चर्चा करेंगे।

वास्तव में कोई भी एल्गोरिदम जिसे लुकअप टेबल का उपयोग करके कार्यान्वित किया जा सकता है, एफपीजीए के लिए बहुत उपयुक्त होगा। न केवल आपके पास भाग के माध्यम से वितरित ब्लॉक्राम हैं, लेकिन तर्क कोशिकाएं स्वयं को विभिन्न आकार के LUTS और मिनी रैम के रूप में कॉन्फ़िगर किया जा सकता है।

आप मुफ्त के रूप में तय सा जोड़तोड़ तरह बातें देख सकते हैं! यह बस रूटिंग द्वारा संभालता है। फिक्स्ड बदलाव, या बिट रिवर्सल कुछ भी लागत नहीं है। डायनेमिक बिट ऑपरेशंस जैसे कि एक परिवर्तनीय राशि से बदलाव की मात्रा कम से कम तर्क होगी और गायों के घर आने तक किया जा सकता है!

सबसे बड़ी हिस्सा 3960 मल्टीप्लायरों है! और 142,200 स्लाइस जो प्रत्येक एक 8 बिट योजक हो सकता है। (कॉन्फ़िगरेशन के आधार पर प्रति स्लाइस या 8 5 बिट प्रति स्लाइस प्रति 4 बिट बिट्स।)

+0

मुझे दृश्य - पूर्णांक संचालन के बारे में हिस्सा पसंद है। अच्छी बात। – name

+0

"'आपके लिए मुक्तिदाता को करने दें' उन चीजों के प्रकार हैं जिन्हें आपको इन पर गणित को लागू करने के लिए जानने की आवश्यकता है" - ठीक है! – mixdev

5

एक gnarly SW एल्गोरिदम चुनें। हमारी कंपनी एक जीवित रहने के लिए एसडब्ल्यू अलगो के एचडब्ल्यू त्वरण करता है।

हमने नियमित अभिव्यक्ति इंजनों के एचडब्ल्यू कार्यान्वयन किए हैं जो 10 जीबी/सेकंड तक की गति से समानांतर में 1000 नियमों के सेट करेंगे। इसके लिए लक्षित बाजार राउटर है जहां एंटी-वायरस और आईपीएस/आईडी रीयल-टाइम चला सकते हैं क्योंकि डेटा राउटर को धीमा कर बिना स्ट्रीमिंग कर रहा है।

हम किया है HW में HD वीडियो एन्कोडिंग। इसे एचडी में बदलने के लिए फिल्म के प्रति सेकंड प्रोसेसिंग समय के कई घंटे लगते थे। अब हम इसे लगभग वास्तविक समय कर सकते हैं ... फिल्म के 1 सेकंड को बदलने के लिए लगभग 2 सेकंड प्रोसेसिंग लगती है। नेटफ्लिक्स ने हमारे एचडब्लू का उपयोग लगभग विशेष रूप से मांग वीडियो पर अपने वीडियो के लिए किया है।

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

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

सॉफ्टवेयर में ऐसा करने का प्रयास करें !! :-)

+0

क्या आपने एचडब्ल्यू-एस कोडिंग भी किए हैं? ऐसा लगता है कि आप केवल उच्च थ्रूपुट स्ट्रीमिंग ऐप्स कर रहे हैं। – name

+0

ऑस्टिन में रेग-एक्स त्वरण कौन करता है? Altior? –

+0

यह तारारी नामक एक सैन डिएगो स्टार्टअप था जिसे बाद में एलएसआई द्वारा खरीदा गया था। जब इसे अधिग्रहण किया गया तो मैं कैलिफोर्निया से ऑस्टिन चले गए। हालांकि हम केवल ऐसा नहीं कर रहे थे ... कुछ अन्य छोटी कंपनियां भी कर रही थीं जो बड़ी कंपनियों द्वारा खरीदी गई थीं, लेकिन मुझे नहीं पता कि अभी भी कौन काम कर रहा है या नहीं। मैं तब से एक और स्टार्टअप कोशिश करने के लिए छोड़ दिया है। – SDGator