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