03.18 AI 芯片崛起!FPGA 工程師的核心競爭力在哪裡?

【CSDN 編者按】隨著 AI 芯片在爭議中崛起,FPGA(現場可編程門陣列)芯片架構也開始受到關注,但大部分人仍對其保持著知之甚少的狀態。作為一種硬件可重構的體系結構,FPGA 在很長一段時間內都被用作專用芯片(ASIC)的小批量替代品。但隨著科技的發展,技術提高產品性能要求越來越高,其強大的計算能力及高度靈活性,使其在通信、數據處理等領域得到了日益廣泛的應用。本文就將討論 FPGA 工程師到底都點亮了哪些技能。

AI 芯片崛起!FPGA 工程師的核心競爭力在哪裡?

這個問題是筆者在知乎上看到的,大家的回答都是“調板子”、“debug”、“硬件實現”等等。作為 FPGA 工程師,筆者看了實在要報以一個禮貌的微笑。

換個角度看,難道其他硬件工程師就不具備調板子、debug、硬件實現的能力了?或者,為什麼說這些是專屬於 FPGA 工程師的核心競爭力?

這個問題其實可以引申為以下兩點:

1. 什麼是隻有 FPGA 工程師能做的?

2. 作為 FPGA 工程師,我們應該如何培養這些能力?

接下來就是筆者的解答。

什麼是隻有 FPGA 工程師能做到的

上面提到的一些回答,的確是 FPGA 工程師不可或缺的能力,但總覺得沒有說清楚這個問題的本質。

首先給出我的回答:FPGA 工程師最核心的就是全棧能力

這裡的全棧,指的是

系統級的軟硬件全棧能力。它既包括了在系統層面的架構設計、芯片開發的前後端流程,也包括了軟件設計的全棧流程,甚至還有後期的項目維護、技術支持、與客戶的溝通等軟技能。它可以看成是綜合多種技能的技能樹。

我隨手寫了一下 FPGA 工程師的全棧技能樹,見下圖,儘管很不完整,但仍可供大家參考。之前很多人提到的,諸如調試與分析的能力,其實是這個全棧技能樹裡的一片樹葉,或一個分支。

AI 芯片崛起!FPGA 工程師的核心競爭力在哪裡?

只有 FPGA 工程師能做到一人成團,在短時間內將想法落實到高質量的軟硬件系統實現。這是其他系統架構師、ASIC 工程師、單片機工程師、軟件工程師等都無法單獨完成的。與這些工程師相比,FPGA 工程師有著很強的單兵作戰能力。當然,技能樹過於龐大也是為什麼很多人認為 FPGA 難學的本質原因。

有人會問,為什麼其他類型的工程師沒有這種全棧能力,或者換句話說,為什麼只有 FPGA 工程師才能做到全棧?這和 FPGA 本身的特點有關。

在下圖中,我對比了 FPGA 與 ASIC、CPU(或單片機)的特點與主要開發方式和風格。

AI 芯片崛起!FPGA 工程師的核心競爭力在哪裡?

對於傳統的 IC 工程師而言,他們的具體職責可以大致分成前端和後端兩部分。前端主要負責邏輯實現,後端負責芯片物理實現。兩路人馬通常有各自的技能樹,需要互相配合才能完成產品級的芯片,這個過程往往很久,而且伴隨著巨大的前期投入和風險。

對於單片機或 CPU 工程師而言,更多的是基於給定的單片機架構和 API,使用諸如 C 或 C++ 的高層語言編寫應用程序。如果要寫出高質量的應用,固然需要了解目標芯片的硬件結構,但並不需要對硬件的邏輯實現有過多瞭解。雖然基於 CPU 或 MCU 可以靈活實現各種應用,但由於架構限制,在很多諸如人工智能的應用領域裡並不能達到很好的性能。

FPGA 很大程度上結合了兩者的優點。在硬件方面,FPGA 底層架構固定,因此不需要做太多芯片後端的工作,但仍需要 FPGA 工程師掌握時序優化、面積優化、功耗優化等後端技能。因此一個優秀的 FPGA 工程師憑藉自身的前後端與軟硬件技能,就可以完成一個完整且質量比較高的 FPGA 項目。

軟件方面,FPGA 可以靈活定義 API 與軟件架構,並可以通過內置的處理器內核完成軟硬件協同開發,這樣也能兼顧應用的靈活性。因此,一個優秀的 FPGA 工程師通常也具有優秀的軟件編程能力。

在系統層面,FPGA 工程師可以自定義軟硬件整體架構,不會像 CPU 或單片機一樣存在明顯的架構瓶頸,也不會像 ASIC 一樣需要考慮過多底層電路單元以及工藝的具體實現。

綜上,只有 FPGA 工程師能擁有軟硬件系統的全棧能力,這也是 FPGA 工程師的核心競爭力。並且,這種能力可以在工程實踐中不斷自我豐富和提升。這使得優秀的 FPGA 工程師不需要太過依賴其他人,能夠自己或少量人很快完成完整的系統級方案。

現在很多 AI 初創公司選擇使用 FPGA 作為硬件平臺的主要原因之一,就是看中 FPGA 工程師的全棧能力,使得公司能在較少投入的情況下,取得性能、靈活性、可擴展性等多個方面的良好平衡。

全棧能力是 FPGA 工程師需要的完整技能樹。至於很多答友提到的調試和 debug 能力,更多的是在回答這個技能樹的技能點分配問題。這就是老石要講的第二個方面:

作為 FPGA 工程師,我們應該如何培養這些能力

相信很多人會問,你說的這種全棧能力,究竟是不是在畫大餅?在實際生活中,到底是不是真的有人能全部精通技能樹中的所有分支?我的答案是,雖然很少,但確實有這樣的大牛,而且我有幸和他在一個團隊裡工作。

一般來說,如果一個 FPGA 工程師能在這個 FPGA 技能棧裡精通某一項,就可以成為這個領域的大牛和權威。比如,像很多人提到的,如果你特別會調板子,硬件調試能力很強,那你就可以很好的負責項目中的硬件測試環節。再比如,你 RTL 寫得很好,或者驗證很強,或者對系統架構有很深的理解,你都能在項目裡成為不可或缺的人。

但是,筆者所在團隊裡就有一位帶頭大哥,可以從系統架構、模塊設計、驗證、系統整合、FPGA 後端優化、硬件測試、軟件開發和調試等全部環節一個人搞定,可以說是點滿了技能樹上所有的技能點。

這樣的人就像阿里的多隆,一個人可以頂一支團隊,公司缺他不可。因此如果一個 FPGA 工程師能夠獲取軟硬件的全棧能力,將是團隊乃至全公司的最主要競爭能力。

作為一個新人,應該如何培養自己的 FPGA 全棧能力呢?其實,帶頭大哥的技術功底也並非通過一天練成的,最重要的是時間的積累,不斷的鑽研以及真正的興趣。這些道理在任何行業都是一樣的。一開始可以先重點突破技能樹的某個分支,但最終的目標還是要讓整個技能樹枝繁葉茂。

此外,工程師需要的軟技能也是不可或缺的,例如獨立思考的能力、溝通、寫作以及良好的英語等等。

希望以上的回答能對各位朋友有所幫助。

作者簡介:老石,微信公眾號“老石談芯”主理人,博士畢業於倫敦帝國理工大學電子工程系,現任某知名半導體公司高級FPGA研發工程師,深耕於FPGA的數據中心網絡加速、網絡功能虛擬化、高速有線網絡通信等領域的研發和創新工作。曾經針對FPGA、近似計算、高性能與可重構計算等技術在學術界頂級會議和期刊上發表過多篇研究論文。


分享到:


相關文章: