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