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