0
本文作者: 矽說(shuō) | 2016-12-16 08:50 |
雷鋒網(wǎng)按:本文作者癡笑,矽說(shuō)(微信號(hào):silicon_talks)主筆。本文為雷鋒網(wǎng)發(fā)布的《腦芯編 | 窺腦究竟,結(jié)網(wǎng)造芯》系列第三篇。
〈三〉夢(mèng)里不問(wèn)形與令
世界上有兩種管家:
一種是Batman的Alfred
能服務(wù)能做飯能偽裝能打架
狠起來(lái)超人也不是干不過(guò)
另一種是天朝的大內(nèi)總管
掌印秉筆,啥事不會(huì)
老大又吩咐了就去傳個(gè)話
你腦子里的CPU是哪一種?
有了神經(jīng)元,知道了怎么把神經(jīng)元連成網(wǎng)絡(luò),這個(gè)系列終于進(jìn)入了主題——怎么實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)。如果在這個(gè)問(wèn)題上加一個(gè)條件,那就是“怎樣用芯片實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的計(jì)算”?
在回答這個(gè)問(wèn)題以前,讓我們先去拜訪兩位長(zhǎng)者——Alan Turing和John Von Neumann,目前大家公認(rèn)的計(jì)算機(jī)之父。話說(shuō)前者才是真的“茍利國(guó)家生死以,豈因禍福避趨之”,詳見(jiàn)卷福主演的奧斯卡獲獎(jiǎng)電影《模仿游戲》。
Turing-Von-Neumann架構(gòu)
為了表達(dá)對(duì)大師的尊敬,我起了個(gè)很干脆的標(biāo)題。大師之所以是大師,是因?yàn)樗麄兌x了在80年前定義了通用計(jì)算機(jī)的數(shù)學(xué)模型和體系結(jié)構(gòu)。在這過(guò)去的80年里,任何試圖推翻這些結(jié)構(gòu)的“投機(jī)”分子幾乎都沒(méi)什么好下場(chǎng)。但是,總有人希望推翻這個(gè)架構(gòu)。先簡(jiǎn)單的描述下兩位長(zhǎng)者干了什么。
Alan Turing在1936年提出了一種具有普適性的邏輯計(jì)算模型,證明通過(guò)有限狀態(tài)機(jī)完成輸入數(shù)據(jù)的操作,可以實(shí)現(xiàn)任意復(fù)雜的邏輯運(yùn)算。圖靈機(jī)本身描述的場(chǎng)景在現(xiàn)在看來(lái)已經(jīng)沒(méi)什么意義,但是他第一次完整的定義普適計(jì)算機(jī)體系機(jī)構(gòu)——一卷很長(zhǎng)很長(zhǎng)的帶子(infinite lengthtape)通過(guò)一個(gè)有磁頭(head)的有限狀態(tài)表(finite state table)進(jìn)行讀取/處理/改寫(xiě)的機(jī)器。
9年后,Von Neumann把帶子改叫做“Memory”,狀態(tài)表叫做“CPU”,磁頭改叫做“Connection (Bus) ”,換了一副圖,就有了史稱(chēng)“馮諾依曼架構(gòu)”的現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)。
教科書(shū)上會(huì)說(shuō)這個(gè)結(jié)構(gòu)有啥特點(diǎn),這是讓你背的。其實(shí)很簡(jiǎn)單,圖靈-馮諾依曼架構(gòu)最大的特點(diǎn)是把計(jì)算任務(wù)分為了2個(gè)部分——數(shù)據(jù)存儲(chǔ)(memory)和數(shù)據(jù)處理(processor)。處理器幾乎不能存數(shù)據(jù),存儲(chǔ)器幾乎不能算數(shù)據(jù)。兩部分用一種連接方式(bus)按一定規(guī)則通信。涇渭分明的特點(diǎn)讓馮諾依曼架構(gòu)處理事情起來(lái)特別有條理,就像“男主外女主內(nèi)”的家庭角色分配一樣,在硬件資源極度受限的情況下,成為了自動(dòng)化發(fā)展的中堅(jiān)力量。
馮諾依曼架構(gòu)有一個(gè)升級(jí)版,叫做哈佛(Harvard)架構(gòu),把存儲(chǔ)空間分為了指令(instruction)存儲(chǔ)和數(shù)據(jù)存儲(chǔ),對(duì)應(yīng)不一樣的操作。目前的主流嵌入式微處理器基本采用這個(gè)架構(gòu),但Anyway這并不重要。
馮諾依曼架構(gòu)在過(guò)去的60年稱(chēng)霸人間,如果這項(xiàng)專(zhuān)利申請(qǐng)成功的話,這一定是史上最賺錢(qián)的專(zhuān)利??墒牵T諾依曼架構(gòu)在經(jīng)歷了各種法院撕逼后,被判定為一項(xiàng)沒(méi)有收益人的專(zhuān)利……(Youyou Tu和青蒿素在這面前簡(jiǎn)直不值一提)
成也蕭何 - x86的不可一世
雖然馮老爺子在自己的架構(gòu)下發(fā)明了人類(lèi)第一臺(tái)計(jì)算機(jī),ENIAC和EDVAC,但諾依曼的真正崛起還是要?dú)w功于x86。如果你不知道80x86是什么,那只能說(shuō)明我們已經(jīng)有代溝了,嗯,很深深的代溝。
Intel自1978年推出8086后,x86體系架構(gòu)就一直是電腦(上到服務(wù)器,下到平板電腦)核心處理芯片的不二選擇。
Intel x86 i7 版圖
順便做個(gè)普及,在馮諾依曼架構(gòu)下,每個(gè)處理器會(huì)干的事情是有限制的,通常這個(gè)限制叫做指令集。它規(guī)定CPU的基本操作,沒(méi)有指令集(instruction set)定義的復(fù)雜操作可以通過(guò)基本操作的組合來(lái)完成,比如指令集里沒(méi)有乘法,那我們可以通過(guò)一定數(shù)量的加法來(lái)完成。
在馮老爺子的機(jī)構(gòu)里,誰(shuí)的指令集越大,可以訪問(wèn)的存儲(chǔ)空間越大,誰(shuí)就越牛逼。x86的指令集從8086到i7不斷擴(kuò)張與膨脹,最終成為了一個(gè)會(huì)算雙精單精、矢量圖像,多核多線程多Cache的巨無(wú)霸。簡(jiǎn)單的說(shuō),到2013年的時(shí)候,史上最強(qiáng)core已經(jīng)無(wú)所不能了??墒菤v史不斷在重演一幕就是,當(dāng)絕頂高手號(hào)稱(chēng)要獨(dú)孤求敗的時(shí)候,不知道哪里竄出來(lái)的毛小伙子可能一個(gè)起手式就把你撂倒了。圣經(jīng)里大衛(wèi)王這么干掉了Goliath,《倚天屠龍記》里,張無(wú)忌這么稱(chēng)霸了光明頂。
那誰(shuí)是x86的張無(wú)忌呢?
移動(dòng)設(shè)備,RISC的春天
獨(dú)孤求敗的x86其實(shí)有個(gè)致命的缺陷——能效,通俗地說(shuō)就是“做一次”要花費(fèi)的能量??墒敲繅K肌肉都很發(fā)達(dá)的muscleman總是要比一般人多吃幾碗飯吧。我們現(xiàn)在能買(mǎi)到的i7即使在省電模式也要消費(fèi)超過(guò)47W的功耗。本身47W不算什么,但是蘋(píng)果喬大叔的出現(xiàn),讓47W一下子很麻煩。
Iphone/Ipad和一系列手持的充電設(shè)備對(duì)瓦級(jí)以上的功耗是非常敏感的!x86的功耗導(dǎo)致它“充電2小時(shí)使用5分鐘”的悲慘結(jié)局。肌肉男瘦身變成筋肉男的必然的命運(yùn)。
這時(shí),x86,或者說(shuō)是intel的張無(wú)忌出現(xiàn)了—ARM Cortex RISC. 所謂RSIC就是精簡(jiǎn)指令集(Reduced Instruction Set),他能干的事情很有限,但是他的功耗低。X86在其巔峰時(shí)期無(wú)數(shù)次地戰(zhàn)勝過(guò)RISC,以至于ARM出現(xiàn)時(shí)并有沒(méi)足夠重視他,那時(shí)候Intel還在和AMD搶64位x86的主導(dǎo)權(quán)呢。
為什么無(wú)數(shù)次敗下陣來(lái)的RISC可以最終成功呢?因?yàn)檫@次,他尋找到了一個(gè)partner——加速器。在移動(dòng)端的應(yīng)用設(shè)備里,其實(shí)也有很對(duì)需要強(qiáng)大計(jì)算消耗的進(jìn)程,這是RISC本身無(wú)法勝任的。但是,實(shí)際應(yīng)用上,往往這些進(jìn)程是有固定的模式和使用場(chǎng)景的。比如手機(jī)在通話時(shí)的語(yǔ)音編解碼,拍照時(shí)的圖像處理(俗稱(chēng)“美顏”)和無(wú)線通信是的編解碼。對(duì)于這樣一個(gè)經(jīng)常重復(fù),且模式固定的高通量計(jì)算,可以在總線上加入一個(gè)專(zhuān)用模塊(ASIC)加速,在處理專(zhuān)用任務(wù)是ASIC的能效又比通用處理器高很多。下圖就是ARM有名的產(chǎn)品之一A9,除了CPU外,它的浮點(diǎn)與超標(biāo)量計(jì)算(NEON)都被移到了CPU外(一般來(lái)說(shuō),這不能算作加速器)
這就是開(kāi)頭的那個(gè)故事,你每天充的電不夠“超人”吃的,與只能換個(gè)塊頭小,但是能夠指揮其他人的總管
敗也蕭何 -- 馮諾依曼瓶頸
“涇渭分明,靠總線連”的馮諾依曼架構(gòu)帶來(lái)了單核/少核時(shí)代計(jì)算機(jī)的春天,但馮諾依曼架構(gòu)的致命缺陷——馮諾依曼瓶頸——也悄悄地增長(zhǎng)。隨著摩爾定律的發(fā)展,遠(yuǎn)距離的搬移大規(guī)模數(shù)據(jù)早已取代了計(jì)算本身,成為制約高效計(jì)算的重要瓶頸,對(duì)于x86結(jié)構(gòu),有太多指令可以直接穿過(guò)總線訪問(wèn)存儲(chǔ)空間。
在RISC+加速器的體系結(jié)構(gòu)里,總線作為“總管”和“內(nèi)務(wù)府”、“上書(shū)房”、“御膳房”間的橋梁,更是好不吃緊。當(dāng)瓶頸出現(xiàn)在通信上時(shí),馮諾依曼架構(gòu)就體現(xiàn)出了它垂垂老矣的一面。
這個(gè)問(wèn)題,在實(shí)時(shí)處理的人工智能場(chǎng)景下顯得格外突出,信號(hào)從入到出,都是按照是數(shù)據(jù)流(Data flow)的傳輸模式一幀一幀地來(lái)。這一特征在類(lèi)腦的神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)中就更加明顯。如果每一個(gè)卷積的系數(shù)都要去云深不知處的存儲(chǔ)海洋里去尋找,那神經(jīng)元的處理效率會(huì)非常低。簡(jiǎn)單地說(shuō):
誰(shuí)腦子TM的是一半純記憶一半純分析的呢?
腦子么,都是左右開(kāi)工的。邊走邊忘,雁過(guò)留痕,卻也是舊相識(shí),恢復(fù)不出來(lái)一個(gè)一毛一樣的。
所以,擺在類(lèi)腦芯面前的路有三條:
(1) 采用馮諾依曼經(jīng)典架構(gòu),把神經(jīng)元計(jì)算寫(xiě)在指令集里,反正是超人,技多不壓身;
(2) 采用RISC+神經(jīng)元/神經(jīng)網(wǎng)絡(luò)加速器,給“總管”再開(kāi)個(gè)府唄;
(3) 放棄馮諾依曼架構(gòu),完全分布式硬件,像“數(shù)據(jù)流“一樣的風(fēng)騷走位。
這三個(gè)選項(xiàng)都有不錯(cuò)的代表,我們慢慢來(lái)。
夢(mèng)里不問(wèn)形與令,你知道計(jì)算機(jī)形(體系結(jié)構(gòu))和令(指令集)了么?
特別鳴謝 復(fù)旦大學(xué)腦芯片研究中心 提供技術(shù)咨詢,歡迎有志青年報(bào)考。
雷鋒網(wǎng)推薦相關(guān)閱讀:
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。