全可編程視角下的未來十年
所以一定要讓硅片上的晶體管不能同時工作,那怎么辦呢?答案是多核。多核不是說我想搞多核,而是不得已而為之。但是如果我還想得到非常高的運算能力——1ms要做很多很多運算,但是我又不能把所有的晶體管全開開,是不是就矛盾了,沒辦法解決了?那我們再另辟蹊徑。
本文引用地址:http://m.butianyuan.cn/article/264521.htm大腦的啟示
一個好消息是晶體管現(xiàn)在已經(jīng)不值錢了,也就是說既然一塊芯片里一定會有晶體管不開,我們就一定要大大地放縱我們的設計空間,我們寧肯用一大堆冗余的計算單元提前擺在那,用其中一兩個跑,其它一百個都不用,這件事是對的,因為你不得不這么做。這思路慢慢清晰了。有一種計算機實際上就是這么干的,就是人的大腦。人腦的皮層90%是沒用的,只用其中一小部分。
我們再回過來看目前的情況,CPU很有意思,它一天到晚都沒在干正事,都在弄流水線,最后干了一件事啥事?就是做了一個加法。也就是說百分之七八十的硅片都在為了滿足這一個高速運行的累加器,給它喂飽,喂飽這個累加器有好多分支預測,什么亂七八糟的讀Cache(高速緩存),就是為了搞高速運算的一個單CPU。這件事情很不合邏輯,我用了這么多硅片,折騰了這么半天,最后算成個加法!原來,當初馮.諾依曼設計計算機的時候,晶體管和ALU(算數(shù)邏輯單元)很貴,因此利用便宜的memory是很劃算的。馮.諾依曼計算機就這么一路走過來,大家也跟著吭哧哼哧地推一步走一步,也不想創(chuàng)新,CPU不停地增加它的時鐘頻率,結果到今天再怎么做也難以翻番了。
所以有人提出,最好把這套東西全推掉,我全都弄上運算單元,這些運算單元可根據(jù)計算的任務隨意組合,馬上就能做運算,動態(tài)組合、動態(tài)植入,那么整個面積都是運算單元在做事。這件事情實際上就是我們?nèi)祟惔竽X干的活兒。人類的大腦實際上是一個并行的計算機。前段時間,IBM剛發(fā)表一個消息,說是做了一個人工神經(jīng)元的超級計算機,最核心的特點就是其神經(jīng)元可以動態(tài)存儲,也就是說不同的信息他訓練兩天之后,它就連接成一個可操作的部分,而且功耗特別低。
沒有處理器,還要做計算
因此,我們要做什么事呢?Computing without Processors(沒有處理器,還要做計算),這就是我們今后十年或許能夠應對挑戰(zhàn)的法寶。也就是說我們能夠通過硬件的可重組、可重構,能夠在硬件層面重組出來正好適合計算的能力。我們不需要再為流水線、cache發(fā)愁了。
Xilinx有個Vivado-HLS工具,可從C實現(xiàn)FPGA。你可先做一些低層次的東西,就是所謂的HLS,Vivado-HLS能把算法直接變成硬件實現(xiàn),也就說你的計算單元已經(jīng)沒有CPU了,但又是高效的。如果你嫌煩的話,可以用碎片來做,然后就被大量地收集了,然后它做線上的工具。
假設Xilinx的Zynq處理器就是大腦,有一大堆單元,你什么都想干,但是嫌設計太麻煩了,ultrascale構架把你要用的東西準備好,CPU有了,加密引擎一大堆,你要一百個,還是一萬個加密引擎都行,還有浮點運算單元,你想要什么圖形引擎(GPU),我給你放上三萬個GPU進去,你再用可編程的邏輯把它們連到一起,滿足你的需求。這個方案功耗既低,速度又快,還全是硬的東西,為什么?因為晶體管太便宜了,而且我做了一大堆,功能全放那兒,你想用哪一個都行,這就是Xilinx在做的。
當然在這上面,編程就是一項挑戰(zhàn)了。異構計算一定是今后我們要掌握的,這樣才能夠為后面的事做準備。異構計算,Xilinx首推的是用OpenCL來做,因為它一次編程,你可以在PC機上跑,也可以再把它編程,也可以在CUP上跑,在任何地方跑,而且數(shù)量不限。其核心思想就是異構計算,它不是一個fancy(幻想)、要跟蹤潮流的東西,而是我們?nèi)绻粦盟?,大家認為很難持續(xù)。Xilinx的Zynq目前是雙核的,可能下一代還有更多核,有一萬個加密單元,都是硬核的,讓你在里面動態(tài)組合。
對大數(shù)據(jù)來講,應該讓分布式的存儲用起來和RAM一樣是隨機地存儲,也就是數(shù)據(jù)庫我們一定要做得跟RAM一樣。怎么做?如果還按照篩選,我要在1ms內(nèi)把一大堆數(shù)據(jù)放到一起篩選,一個方法就是在它的所謂的控制器里再加上過濾邏輯,這樣,我讀寫數(shù)據(jù)的時候,就可以把我的智能放進去,在網(wǎng)絡上用傳統(tǒng)的數(shù)據(jù)就可以實現(xiàn)你的功能。
小結
異構、多核、一大堆晶體管,在1ms內(nèi)要完成大量計算,這是今后十年業(yè)界要面對的事。
這聽起來很困難,似乎要很多的知識,什么硬件、軟件知識,大家很發(fā)怵,認為跟蹤該技術太艱難了。其實不難,我自己十多年沒寫Code,我專門試一下,我利用在火車、飛機上的時間看一看Zynq和Vivado的書和文檔,后來做了實驗,也差不多會做了。現(xiàn)在我們的課程,在中山大學珠海分校,用五天的時間教大學本科三年級的學生,讓他們能夠在短時間內(nèi)掌握Zynq。實際上,Zynq和Vivado沒什么了不起,只是工具而已。
因此,雖然挑戰(zhàn)很大,今后會有革命性的變化。不過,一旦有新的開始,下決心去試、去做,也沒什么難的。(本文根據(jù)謝凱年在”O(jiān)penHW2014開源硬件與嵌入式計算論壇“錄音編寫)
物聯(lián)網(wǎng)相關文章:物聯(lián)網(wǎng)是什么
晶體管相關文章:晶體管工作原理
電能表相關文章:電能表原理 晶體管相關文章:晶體管原理
評論