最近的幾篇論文都改好投出去了,希望后面有好的結(jié)果,。暫時(shí)也就有點(diǎn)閑暇時(shí)間空出來了,,好久沒有寫技術(shù)文章來總結(jié)提煉一下了,,今天難得就寫一點(diǎn),。
每年到了找工作的時(shí)節(jié),,總會有很多迷茫的小本甚至是小碩在到處訊問說:我是不是應(yīng)該去參加個(gè)培訓(xùn)班,,去學(xué)一門什么什么技術(shù),。然后學(xué)哪個(gè)比較好找工作一點(diǎn),,學(xué)哪個(gè)收入會高一點(diǎn)等等。每當(dāng)這個(gè)時(shí)候就有很多抱著就業(yè)目的的人來問到底學(xué)什么技術(shù)好啊,,哪個(gè)技術(shù)有前途啊,,等等。
一般在這個(gè)時(shí)候,,我是不推薦這幫人去學(xué)習(xí)FPGA的,。當(dāng)然,并不是FPGA技術(shù)不好,,也不是學(xué)FPGA技術(shù)沒有前途,,而是有別的很多原因。導(dǎo)致它并不適合推薦給以就業(yè)為目的的這幫人去學(xué)習(xí),。
原因一:FPGA的“逼格”太高
FPGA的應(yīng)用范圍相對而言一直不寬,。之前我也談過,其主要的應(yīng)用面就是三個(gè):高速接口電路,、高速數(shù)學(xué)運(yùn)算與數(shù)據(jù)處理,、ASIC/SoC的驗(yàn)證原型;也有人說可重構(gòu)計(jì)算是FPGA的第四大應(yīng)用領(lǐng)域,,但是我覺得目前還沒有什么真正意義上的可重構(gòu)計(jì)算,,即使有也可以將其歸并到第二類里面去。在掌握基本的HDL語言和FPGA開發(fā)流程的基礎(chǔ)上,,三個(gè)方向分別還需要掌握其它相應(yīng)的知識,。
第一個(gè)方向是傳統(tǒng)的,也是目前國內(nèi)大量中小公司和部分科研院所使用FPGA的主要方向,。主要包括接口擴(kuò)展,、協(xié)議轉(zhuǎn)換、高速收發(fā)與處理等內(nèi)容,。通常在這個(gè)方向混飯還至少需要掌握以下內(nèi)容:1,、高速電路板設(shè)計(jì),2,、計(jì)算機(jī)接口技術(shù),;可能還要求掌握的技術(shù)包括:1、底層驅(qū)動開發(fā),,2,、通信協(xié)議。
第二個(gè)方向涵蓋的內(nèi)容較多,但是核心都是利用FPGA實(shí)現(xiàn)算法或運(yùn)算加速,,從傳統(tǒng)的FFT,、FIR到最新的一些所謂的NB的算法都有可能。這個(gè)方向門檻相對于第一個(gè)方向更高,,通常都是需要有一定技術(shù)水平的公司才能完成,。因?yàn)樯婕暗剿惴ê虵PGA的協(xié)同優(yōu)化。目前國內(nèi)的華為,、中興這樣的大的通信公司,,以及一些電子通信類的整機(jī)研究所會招聘這個(gè)方向的人。一些有技術(shù)實(shí)力的創(chuàng)業(yè)型公司或特殊領(lǐng)域的公司(如金融,、石油領(lǐng)域的數(shù)據(jù)分析方案解決)也有這方面的需求,。更值得欣慰的是目前google、X訊這樣的互聯(lián)網(wǎng)公司看起來也在考慮引入FPGA實(shí)現(xiàn)算法加速,。但這個(gè)方向混飯吃也不容易,,至少需要掌握以下內(nèi)容:1、常用的數(shù)字信號處理/數(shù)值計(jì)算算法,,2,、基于Matlab/C++的算法仿真,3,、常用的數(shù)字算法FPGA實(shí)現(xiàn)方式或技巧,;可能還要求掌握的技術(shù)包括:1、圖像,、視頻處理算法,,2、通信系統(tǒng)理論,,3,、其它常見的并行計(jì)算算法。
第三個(gè)方向?qū)儆谑墙oASIC/SoC設(shè)計(jì)打下手,,別人已經(jīng)做好的很多模塊,、IP用FPGA的板子去驗(yàn)證一下。招人不多,。而且現(xiàn)在隨著EDA tools的發(fā)展,,很多時(shí)候也不是靠FPGA去做一個(gè)原型能驗(yàn)證出來的。這一塊需要掌握的技術(shù)包括:1,、各種驗(yàn)證方法學(xué),,2,、板級電路的調(diào)試經(jīng)驗(yàn),;可能還要求掌握的技術(shù)包括:前面提到的各種技術(shù)……
原因二:FPGA的“門檻”太高
FPGA“門檻”高是幾個(gè)方面,一個(gè)是費(fèi)用問題。雖然FPGA的價(jià)格已經(jīng)一降再降,,但是MCU,、DSP的價(jià)格同樣也是一降再降。在大多數(shù)場合FPGA還是顯得有點(diǎn)“奢侈”,。另外一個(gè)問題就是就是開發(fā)能力的問題,。相比于MCU或者DSP而言FPGA更加靈活,但也意味著對資源的利用和掌控更加“底層”?,F(xiàn)在MCU和DSP的開發(fā)很多時(shí)候就是調(diào)用一些庫函數(shù),,完成一定的功能即可。而FPGA卻要組織更底層的邏輯資源去構(gòu)建一整套完整的系統(tǒng),。雖然有很多IP可以用,,但是一方面這些IP都不是免費(fèi)的,另一方面使用IP可比調(diào)用一個(gè)函數(shù)難多了,。這也是為什么前面說的3個(gè)方向要掌握那么技術(shù)的原因,,在FPGA開發(fā)上要從底層開始組織好這些資源,一些基本的理論,、方法是必須要掌握的,。
門檻太高就導(dǎo)致用它做開發(fā)的公司、機(jī)構(gòu)少,。換言之能創(chuàng)造的就業(yè)崗位也就不多,。
原因三:FPGA在面臨轉(zhuǎn)型
目前FPGA正在面臨一個(gè)轉(zhuǎn)型的問題,換言之就是傳統(tǒng)市場萎縮,,新興市場還待打開的問題,。這一轉(zhuǎn)型既有開發(fā)手段上的轉(zhuǎn)型,也有行業(yè)應(yīng)用的變化,。因此,,目前學(xué)習(xí)到的這些FPGA開發(fā)的方法,在未來還有沒有用,,就成了一個(gè)疑問,。目前以SoC-FPGA為代表的一種轉(zhuǎn)型方向,是去搶占傳統(tǒng)的高性能SoC市場,。但這個(gè)市場好不好搶,,是很懷疑的。之前我曾經(jīng)認(rèn)為這一塊應(yīng)該是有所作為的,,但是現(xiàn)在發(fā)現(xiàn)不是那么簡單的,。在ARM外面加上一圈可編程邏輯,用來做什么好呢,?做接口,?現(xiàn)在的高端SoC芯片上面接口已經(jīng)如此的豐富,,在大多數(shù)情況還是基本夠用的。做算法加速,?那么去加速什么算法呢,?目前移動多媒體設(shè)備上面各類圖形圖像加速器也不少了。別的特殊的應(yīng)用需要加速的又需要是以SoC形式的加速的,?也許是一些特種設(shè)備,,我不是很了解。但是應(yīng)該不會是通用的市場,。剩下的就是做做研究了,。另外一種就是以高層語言綜合為代表的轉(zhuǎn)型方向,如Xilinx的Auto-ESL和Altera的OpenCL Based FPGA開發(fā),。這一類轉(zhuǎn)型的未來在大數(shù)據(jù),、云計(jì)算加速方向。這一塊目前是GPGPU的主場,。對于Xilinx的Auto-ESL我不是很清楚,。OpenCL Based FPGA開發(fā)目前看來還是很有希望的。但問題在于OpenCL繼承了GPGPU的優(yōu)勢,,也繼承了GPGPU的缺陷,。那就是傳統(tǒng)的GPU是用來做圖形圖像處理的,數(shù)據(jù)都是一幀一幀加進(jìn)去算的,,而且算完以后就直接輸出了,。因此對于數(shù)據(jù)傳輸?shù)膌atency其實(shí)并不是很大的問題。而如果涉及到通用計(jì)算,,這GPU和CPU之間的交互latency就是大問題,。上周剛聽了個(gè)講座,就是專門講這一方面的,。不過我沒怎么聽懂就是了……
所以在這個(gè)轉(zhuǎn)型期,,其實(shí)FPGA開發(fā)需要的崗位是在萎縮的。之前聽在華為的同學(xué)爆料,,美國某大學(xué)教授預(yù)言FPGA在網(wǎng)絡(luò)通信市場大概還有10年的壽命,,再往后就全是SDN了。這一大塊FPGA傳統(tǒng)市場的喪失將是一個(gè)巨大的危機(jī),。而另一大市場,,視頻/圖像領(lǐng)域,隨著網(wǎng)絡(luò)化視頻監(jiān)控SoC的普及,,原來采用FPGA作為主要技術(shù)方案的廠家也就逐漸改弦更張或者被淘汰出局了,。另外一個(gè)風(fēng)險(xiǎn)就是現(xiàn)有的開發(fā)手段可能會存在被淘汰的風(fēng)險(xiǎn)。雖然現(xiàn)在OpenCL去開發(fā)FPGA還存在諸多問題,,但是我認(rèn)為在大數(shù)據(jù),、云計(jì)算加速領(lǐng)域,,使用OpenCL開發(fā)的便捷是完全可能彌補(bǔ)其效率的暫時(shí)低下的。從能效上來說,,F(xiàn)PGA比GPGPU要高1到2個(gè)數(shù)量級。而這一塊又是傳統(tǒng)的軟件開發(fā)者盤踞的地盤,。換言之,,這一塊新增的就業(yè)崗位恐怕不是學(xué)習(xí)現(xiàn)在這些FPGA開發(fā)流程和技術(shù)的人能夠去吃得到的。
以上三點(diǎn)原因,,造成了一個(gè)即使參加了FPGA培訓(xùn)或者學(xué)習(xí)了FPGA半年的新手,,其實(shí)是很難在就業(yè)市場上找到工作的。另外一方面也不得不感慨我們這個(gè)行業(yè)的發(fā)展是如此的迅速,。如果放在10年前,,甚至5年前有人問我該學(xué)什么。我肯定會毫不猶豫的推薦學(xué)FPGA,。因?yàn)樵谀莻€(gè)時(shí)代,,會使用FPGA的人才是如此的缺乏。以至于你只要學(xué)會了FPGA開發(fā)的一般流程,,就可以找到一份還不錯(cuò)的工作,。而現(xiàn)在,這個(gè)好時(shí)代已經(jīng)一去不回了,。類似問題其實(shí)也在困擾其它IT技術(shù),。以北大青鳥為代表的一大軟件開發(fā)批培訓(xùn)機(jī)構(gòu)的沒落,也同樣標(biāo)志著在軟件技術(shù)領(lǐng)域只掌握一門編程語言就可以拿到好工作的日子也已經(jīng)過去了,。
所以,,從功利的角度上來講,如果是只是為了找工作的話,。應(yīng)該去選擇那些就業(yè)概率更大的技術(shù)學(xué)習(xí),。畢竟,已經(jīng)“淪落”到要靠上培訓(xùn)班才能找到工作的地步,,“理想”也都無從談起了,。相比與學(xué)習(xí)FPGA,恐怕還是去學(xué)個(gè)什么Java編程更加靠譜一點(diǎn),。