今天筆者帶來最近學習的一個新的高新技術概念,英文縮寫單詞叫FPGA,翻譯成中文是“現場可編程門陣列”。這一聽,多少讓人有點不知所云,下面說說我的理解。
說起CPU,我覺得大家都已經很熟悉了。是“中央處理器”的英文縮寫,它是用來“運算”的。大部分我們所熟悉的電子設備,像手機、電腦,它們所實現的各種功能,都是通過CPU的“運算”來實現的。它幾乎是所有電子數碼設備的大腦。
計算機之所以被計算機,因為它的大腦,CPU,就是用來計算的。
FPGA是什么?它跟CPU一樣,也是用來計算的。但是,它的計算方式,跟CPU很不一樣。
計算機是用來計算的
首先我們都知道,CPU它是通過“計算”能力,為計算機提供各種的功能。
程序員,把程序代碼噼里啪啦地輸入到了計算機里面,啪一聲按下確認鍵,CPU把程序代碼進行計算,達成各種各樣的目的。
運算的結果是什么呢?程序輸入CPU,運算成了操作系統,運算成了軟件、app、網頁等等。所有的這一切,都是經過CPU“計算”產生的。
嗯,CPU,他很像我們人類的大腦。
串行計算
我們人類的大腦有什么樣的特點?它就像人類的大腦那樣,他只能同時做一件事情。CPU是串行的,一樣也是只能同時進行一次計算。
我們比方說,現在要進行兩場考試,一場是英語,一場是數學,我們會把這兩場考試給分開進行,絕對不會說,讓你左手做英語試卷,右手做數學數卷,那是不可能的,人的腦袋,同時只能專注一件事情。
后來,CPU發展出了多核,你在那些電腦還有手機,老是標榜著自己是雙核四核八核,甚至十六核。
但是很多時候,核多是沒有意義的。因為程序員在編寫程序的時候,程序本身,是針對單核設計。最常見的例子莫過于我們的一些手機游戲,游戲邏輯和圖形渲染,是跑在一個核里的。所以說,是否夠快,很多時候還得取決于單核性能。
并行計算
FPGA是什么呢?
我們都聽過三個臭皮匠,勝過知一個諸葛亮的諺語。他的寓意就是說,三個很普通的人,合起來的智慧也是可以超過諸葛亮的。
FPGA就像是一群臭皮匠,CPU就像是一個諸葛亮。
就像我們前面所說的,我們人腦就像CPU,不能同時做多份作業。只能專注于一件事情。而這群“臭皮匠”則不同,FPGA十分擅長同時做多件事情,我們叫作“并行計算”,也常被稱為“異步計算”。
而技術上來說,FPGA也由非常多的核組成的。但跟CPU不同的是,工程師們可以根據他們的需要,把這么一群“臭皮匠”,重新進行自定義的排列組合,來滿足他們想要的計算。FPGA號稱“萬能芯片”。
FPGA并不是要替代CPU。這就像大部分的工作重要事務,都掌權在諸葛亮手上,那可是重要人物,可不能隨意說換就換;臭皮匠們則可以憑借他們人多的優勢,處理很多的一些重復的單純的事情。
FPGA的這個特點,非常適合我們今年大熱的人工智能。人工智能里面就有非常大量的一些重復性、需要并行計算的工作,像圖像識別、圖像處理、深度學習等等。
哪些領域正在應用FPGA?
微軟在數據中心使用FPGA代替傳統CPU的做法;騰訊云則直接提供了FPGA云服務器,降低開發者自購設備的高昂成本;iPhone 7里有使用Lattice這家上市公司的FPGA芯片;大疆無人機中也采用了FPGA芯片......
可以看到的,不論上企業端(微軟、云計算),還是消費端(iPhone 7、大疆無人機),都能看到FPGA芯片的身影,在未來,它還有很大的發展空間。