AI架構(gòu)創(chuàng)新和高端芯片發(fā)展
4 軟件定義芯片架構(gòu)
本文引用地址:http://www.ex-cimer.com/article/201802/376161.htm如圖3所示為基本馮諾依曼架構(gòu),包括控制單元、算數(shù)邏輯單元、存儲器、輸入和輸出五個基本模塊。首先將存儲器分為兩塊,即I-Memory和D-Memory,分別對應(yīng)指令和數(shù)據(jù),這就是HUS結(jié)構(gòu)。Input和Output合并,變成I/O;然后將存儲器分別放入控制單元和算數(shù)邏輯單元,再將I/O分為兩部分,一部分和控制單元相關(guān),另一部分和數(shù)據(jù)邏輯單元相關(guān);再將I/O分開,輸入放在上邊,輸出放在下邊;然后將這個結(jié)構(gòu)逆時針旋轉(zhuǎn)90度,得到的架構(gòu)即為軟件定義芯片架構(gòu)(以下簡稱“新架構(gòu)”)。馮諾依曼到新架構(gòu)的架構(gòu)變換過程如圖4所示。
因此,該架構(gòu)實(shí)際上是從經(jīng)典的馮諾依曼架構(gòu)變換得來。但是它和馮諾依曼體系結(jié)構(gòu)又有所不同,即它不再使用指令集,而直接采用信息流,這也是兩者間的本質(zhì)區(qū)別。
另外,與傳統(tǒng)架構(gòu)比較,新架構(gòu)還具有以下特點(diǎn):
1)傳統(tǒng)架構(gòu)都是馮諾依曼等效架構(gòu),是剛性的;而功能化的硬件架構(gòu),是應(yīng)用性的。
2)傳統(tǒng)架構(gòu)是應(yīng)用去適應(yīng)計(jì)算的架構(gòu),新架構(gòu)是計(jì)算架構(gòu)適應(yīng)應(yīng)用。即,傳統(tǒng)架構(gòu)是軟件適用硬件,而新架構(gòu)是硬件適用軟件。
3)在傳統(tǒng)架構(gòu)中,一個任務(wù)一個軟件;而在新架構(gòu)中,一個任務(wù)會有多個等效軟件。
4)在傳統(tǒng)架構(gòu)中,硬件和軟件是不變的;在新架構(gòu)中,硬件和軟件是選擇性動態(tài)改變的。
5)傳統(tǒng)架構(gòu)中,為了節(jié)省硬件資源,大量復(fù)用;新的架構(gòu)中是使用冗余方式實(shí)現(xiàn)的。
5 計(jì)算模式的改善
硬件配置時間和執(zhí)行時間對于硬件架構(gòu)來說是一個必須考慮的問題。當(dāng)硬件配置時間多于執(zhí)行時間時,顯然是不經(jīng)濟(jì),不合理的。而新架構(gòu)在剛開始工作的時候,其中將近90%的時間都用來配置硬件,而只有10%的時間是用來進(jìn)行計(jì)算和執(zhí)行的。顯然這樣的架構(gòu)需要進(jìn)一步改善,主要通過以下兩種方式進(jìn)行改善:
1)首先將配置信息減少。通過采用諸如配置子圖的方式、結(jié)構(gòu)化組織等一系列方法,最終將配置信息減少將近80%。
2)數(shù)據(jù)不斷寫的過程也會耗費(fèi)大量時間。很多數(shù)據(jù)寫進(jìn)去并不需要翻譯,采用頻次優(yōu)先方法,用的最多的先寫入,頻次少的就不寫入或少寫入,這樣可以將整個配置時間縮短12倍。
其計(jì)算模式變化如圖5所示。傳統(tǒng)架構(gòu)是串行計(jì)算模式,而新架構(gòu)則是交叉的并行計(jì)算模式。經(jīng)過努力后,我們可以使一個陣列的計(jì)算時間占到整個運(yùn)行時間的90%,而只有10%的時間用來實(shí)現(xiàn)配置。這樣將多數(shù)時間用來計(jì)算的架構(gòu)才是更合理的架構(gòu)。
6 針對不規(guī)則陣列的架構(gòu)改善
在上述例子中給出的是規(guī)則的運(yùn)算陣列,而實(shí)際上的運(yùn)算陣列是不規(guī)則的,有不同的密度,中間可能出現(xiàn)迭代和循環(huán),分支長短可能不一。在規(guī)則的陣列上運(yùn)行不規(guī)則的運(yùn)算顯然會出現(xiàn)效率的高低。
陣列是硬性放大的,我們無法改變硬件,因而只能改變軟件,具體通過以下方法:
1)把軟件并行化處理。特別是控制性的軟件并行化處理,甚至在時空上也作相應(yīng)的變換,讓其在時空上也能并行化。
2)改變電源的供電情況。例如,在陣列中并非所有運(yùn)算單元同時存在,這樣就需要一部分打開,一部分關(guān)掉,由于完全關(guān)掉后重新啟動需要很長時間,會降低性能,因而要使其部分處于淺度睡眠,有的進(jìn)入深度睡眠,有的進(jìn)入淺度睡眠,從而恢復(fù)的時候,節(jié)省啟動時間。
3)將軟件映射到不同的硬件上。不同映射形式會帶來不同的運(yùn)算結(jié)果,這里給出兩種不同的應(yīng)對方法,如圖6所示。a的數(shù)據(jù)走中間,可以通過route(計(jì)算資源)或者buffe(緩沖層)來傳輸,這兩種傳輸方式哪種更適合新架構(gòu),還需要建立一整套模型,通過性能的模型實(shí)現(xiàn)各種仿生變換,最終確定最優(yōu)的執(zhí)行時間。如果建立面向性能的模型,可以使得性能提升20%;而如果建立面向功耗的模型,可以使功耗降低26%。但是,現(xiàn)在還無法建立兩種模型的統(tǒng)一方案。
7 編程語言
全新的架構(gòu)需要考慮全新的編程范式。傳統(tǒng)硬件用C語言編程;而出現(xiàn)GPU后,隨之而產(chǎn)生的是OpenCL編程語言;出現(xiàn)FPGA后,又有verilog、VHDL編程語言。而新架構(gòu)軟件的編程語言是基于傳統(tǒng)編程語言,而基于原有的編程語言,語言不變、硬件不變的情況下,就需要去想新的編程范式。
FPGA很多時候是在編譯時做分析,來進(jìn)行決策。例如非功能運(yùn)算是在運(yùn)行過程中通過依賴關(guān)系來決定。這種方法有諸多不便。其中,依賴關(guān)系在編程序的時候就知道了,并非到運(yùn)行的時候才會發(fā)現(xiàn)。新架構(gòu)編程序的過程中就可以發(fā)現(xiàn)其依賴關(guān)系,在編譯過程中就可以找到各個任務(wù)間的依賴關(guān)系,在運(yùn)行的過程中保證其正確性就好。
新架構(gòu)采用新的編程范式編寫程序與采用OpenCL編寫程序相比,速度提升了10倍;與英特爾的十核Xeon相比,性能仍有0.5~1.9倍的提升。
8 發(fā)展的機(jī)遇
把軟件定于芯片的方式與傳統(tǒng)的方式進(jìn)行比較,新架構(gòu)既具備ASIC的性能、功耗和特點(diǎn),同時也保證了CPU的可讀性,這樣的結(jié)果還是很好的。當(dāng)我們?nèi)プ鲆粋€CPU、專用芯片或FPGA的時候,我們從定義開始出發(fā),要完成一個電路設(shè)計(jì),然后再去做其他的事情。如果你不懂電路設(shè)計(jì),就無法運(yùn)用FPGA進(jìn)行設(shè)計(jì)。但是對于新架構(gòu)而言,已經(jīng)可以讓軟件設(shè)計(jì)工程師直接編程序,然后通過一個編譯器直接映射到硬件上去。這里主要需要一個好的編譯器,新架構(gòu)的編譯器匯集了大量的設(shè)計(jì)方法訓(xùn)練。
9 新架構(gòu)的新應(yīng)用
這樣變化的結(jié)構(gòu)可以應(yīng)用到AI,AI還有很多新的變化,不同的應(yīng)用或神經(jīng)網(wǎng)絡(luò),我們能否通過變結(jié)構(gòu)的方式,只要我們可以識別到一個具體的應(yīng)用,識別出他用的是一個怎樣的神經(jīng)網(wǎng)絡(luò),就可以通過改變今天的功能來適應(yīng)他,產(chǎn)生全新的發(fā)展呢?
如圖8所示,采用新架構(gòu)設(shè)計(jì)的語音識別芯片,精度已經(jīng)可以達(dá)到91.8%,可以識別聲紋,延時低達(dá)25 ms,功耗遠(yuǎn)遠(yuǎn)小于1 mW,應(yīng)用到手機(jī)上幾乎不耗電;右邊是一個人臉識別,人臉識別結(jié)果最主要的是精度,可以達(dá)到99%,人類只能識別97%,工作在200 MHz,可以實(shí)現(xiàn)6 ms,運(yùn)算功率,每瓦100萬億次的運(yùn)算。
10 結(jié)論
芯片工藝技術(shù)進(jìn)入10 nm,專用集成電路面臨嚴(yán)峻的挑戰(zhàn),我們就該在架構(gòu)上進(jìn)行創(chuàng)新。其實(shí)在高端芯片上也是如此,如果跟著CPU的架構(gòu)前進(jìn),我們永遠(yuǎn)是跟在別人后面的,能夠在架構(gòu)創(chuàng)新上超過別人才能引領(lǐng)時代。
硬件架構(gòu)隨著軟件變化而變化的全新概念在保證芯片的功能滿足要求的同時,又能保證其融合性,也是一項(xiàng)很好的創(chuàng)新。
本文來源于《電子產(chǎn)品世界》2018年第3期第25頁,歡迎您寫論文時引用,并注明出處。
評論