摘要:在“2017中國集成電路產業(yè)促進大會”上,清華大學魏少軍教授就架構創(chuàng)新和高端芯片發(fā)展做了相關報告。根據(jù)魏少軍教授會上報告整理,已獲作者授權。關鍵詞:集成電路;架構創(chuàng)新;高端芯片
0 引言
隨著近年來人工智能(AI)的興起,Al芯片的需求量越來越大,性能要求越來越高。而Al運算量很大,這就意味著其需要有足夠高的運算速度,預計其運算速度需要達到每秒幾千億次。如果從能量效率角度分析,大概要做到每瓦1萬億次。因此,國內做Al芯片的企業(yè)大部分還在用專用芯片在做。采用專用集成電路的問題在于,當網絡一旦變化,專用集成電路做成的芯片將無法應對再應用。這就為可編程器件帶來了機遇。
1 FPGA難以達到Al的要求
可編程器件的一個優(yōu)點是可以通過軟件的方式來改變芯片的功能,從而適應各種不同功能的應用。最終提升銷量,從而分攤產品的成本。
而現(xiàn)在較為常用的可編程器件——FPGA仍然存在諸多問題,還難以達到Al的速率及通過軟件改變芯片功能的需求。
1) FPGA的配置信息量很大,多達數(shù)十兆字節(jié),因而所需配置時間也很長,大概要幾十毫秒,甚至幾秒。
2)能量效率低。FPGA面板利用率很低,大概只有5%用來進行計算,95%用來配置信息。正因為其95%是用來配置用的,還要耗電,因而能量效率很低。
3)另外,由于各方面原因,F(xiàn)PGA往往需要最先進的工藝,同時還必須要有電路設計的支持,這也帶來了高設計成本。
FPGA存在的問題總結起來包含十點:高細密度、配置信息量大、配置時間長、需要斷電靜態(tài)配置、沒有邏輯復用能力、面積利用率低、能量效率低、工藝要求較高、對開發(fā)人員知識儲備要求高、價格貴,具體如表1所示。
2 理想的硬件結構
如圖1所示系統(tǒng)架構為設想的理想系統(tǒng)架構。其中左邊為軟件(應用),如果不考慮硬件的代價,左邊有怎樣的操作,右邊就要對應怎樣的硬件,左邊和右邊的拓撲結構是完全一致的。從計算上來看,這樣的結構一定是效率最高的。
在這樣的架構中,軟件可以無窮大,例如寫一個循環(huán)語句,可以一直循環(huán)下去,但是硬件不論多大都是有邊界的,這就需要將軟件分塊搬到硬件上按順序執(zhí)行。這樣搬的過程中,右邊的硬件架構其實是在不斷變化的,我們稱之為架構和功能可以動態(tài)按照軟件要求實時改變。
3 軟件執(zhí)行方式
軟件信息主要可以分為兩類:計算信息和控制信息。如果我們將軟件寫成如圖2所示形式,中間對應的是控制信息,用來控制程序執(zhí)行流程,右邊對應的是計算信息。如果將軟件中的計算信息和控制信息分開,就可以找到相應的架構,包括控制單元和數(shù)據(jù)通道。
數(shù)據(jù)通道對應的是陣列,控制單元對應的是有限狀態(tài)機,不論是陣列,還是有限狀態(tài)機,都是完全可編程的。從而實現(xiàn)不同軟件部分按要求搬進去執(zhí)行,具體地,將分塊軟件按照他們的依賴關系送到數(shù)據(jù)通道中,通過數(shù)據(jù)通道配置其中陣列,并執(zhí)行。
而在軟件配置和執(zhí)行過程中,如果整個系統(tǒng)是按照C語言編寫的,通過編譯器會產生一系列的控制流,最后在硬件芯片上運行。這種架構的獨特之處在于采用控制流、數(shù)據(jù)流和配置流代替之前的指令集。
4 軟件定義芯片架構
如圖3所示為基本馮諾依曼架構,包括控制單元、算數(shù)邏輯單元、存儲器、輸入和輸出五個基本模塊。首先將存儲器分為兩塊,即l-Memory和D-Memory,分別對應指令和數(shù)據(jù),這就是HUS結構。Input和Output合并,變成I/O:然后將存儲器分別放入控制單元和算數(shù)邏輯單元,再將I/O分為兩部分,一部分和控制單元相關,另一部分和數(shù)據(jù)邏輯單元相關:再將I/O分開,輸入放在上邊,輸出放在下邊:然后將這個結構逆時針旋轉90度,得到的架構即為軟件定義芯片架構(以下簡稱“新架構”)。馮諾依曼到新架構的架構變換過程如圖4所示。
因此,該架構實際上是從經典的馮諾依曼架構變換得來。但是它和馮諾依曼體系結構又有所不同,即它不再使用指令集,而直接采用信息流,這也是兩者間的本質區(qū)別。
另外,與傳統(tǒng)架構比較,新架構還具有以下特點:
1)傳統(tǒng)架構都是馮諾依曼等效架構,是剛性的:而功能化的硬件架構,是應用性的。
2)傳統(tǒng)架構是應用去適應計算的架構,新架構是計算架構適應應用。即,傳統(tǒng)架構是軟件適用硬件,而新架構是硬件適用軟件。
3)在傳統(tǒng)架構中,一個任務一個軟件;而在新架構中,一個任務會有多個等效軟件。
4)在傳統(tǒng)架構中,硬件和軟件是不變的;在新架構中,硬件和軟件是選擇性動態(tài)改變的。
5)傳統(tǒng)架構中,為了節(jié)省硬件資源,大量復用:新的架構中是使用冗余方式實現(xiàn)的。
5 計算模式的改善
硬件配置時間和執(zhí)行時間對于硬件架構來說是一個必須考慮的問題。當硬件配置時間多于執(zhí)行時間時,顯然是不經濟,不合理的。而新架構在剛開始工作的時候,其中將近90%的時間都用來配置硬件,而只有10%的時間是用來進行計算和執(zhí)行的。顯然這樣的架構需要進一步改善,主要通過以下兩種方式進行改善:
1)首先將配置信息減少。通過采用諸如配置子圖的方式、結構化組織等一系列方法,最終將配置信息減少將近80%。
2)數(shù)據(jù)不斷寫的過程也會耗費大量時間。很多數(shù)據(jù)寫進去并不需要翻譯,采用頻次優(yōu)先方法,用的最多的先寫入,頻次少的就不寫入或少寫入,這樣可以將整個配置時間縮短12倍。
其計算模式變化如圖5所示。傳統(tǒng)架構是串行計算模式,而新架構則是交叉的并行計算模式。經過努力后,我們可以使一個陣列的計算時間占到整個運行時間的90%,而只有10%的時間用來實現(xiàn)配置。這樣將多數(shù)時間用來計算的架構才是更合理的架構。
6 針對不規(guī)則陣列的架構改善
在上述例子中給出的是規(guī)則的運算陣列,而實際上的運算陣列是不規(guī)則的,有不同的密度,中間可能出現(xiàn)迭代和循環(huán),分支長短可能不一。在規(guī)則的陣列上運行不規(guī)則的運算顯然會出現(xiàn)效率的高低。
陣列是硬性放大的,我們無法改變硬件,因而只能改變軟件,具體通過以下方法:
1)把軟件并行化處理。特別是控制性的軟件并行化處理,甚至在時空上也作相應的變換,讓其在時空上也能并行化。
2)改變電源的供電情況。例如,在陣列中并非所有運算單元同時存在,這樣就需要一部分打開,一部分關掉,由于完全關掉后重新啟動需要很長時間,會降低性能,因而要使其部分處于淺度睡眠,有的進入深度睡眠,有的進入淺度睡眠,從而恢復的時候,節(jié)省啟動時間。
3)將軟件映射到不同的硬件上。不同映射形式會帶來不同的運算結果,這里給出兩種不同的應對方法,如圖6所示。a的數(shù)據(jù)走中間,可以通過route(計算資源)或者buffe(緩沖層)來傳輸,這兩種傳輸方式哪種更適合新架構,還需要建立一整套模型,通過性能的模型實現(xiàn)各種仿生變換,最終確定最優(yōu)的執(zhí)行時間。如果建立面向性能的模型,可以使得性能提升20%:而如果建立面向功耗的模型,可以使功耗降低26%。但是,現(xiàn)在還無法建立兩種模型的統(tǒng)一方案。
7 編程語言
全新的架構需要考慮全新的編程范式。傳統(tǒng)硬件用C語言編程:而出現(xiàn)GPU后,隨之而產生的是OpenCL編程語言;出現(xiàn)FPGA后,又有verilog、VHDL編程語言。而新架構軟件的編程語言是基于傳統(tǒng)編程語言,而基于原有的編程語言,語言不變、硬件不變的情況下,就需要去想新的編程范式。
FPGA很多時候是在編譯時做分析,來進行決策。例如非功能運算是在運行過程中通過依賴關系來決定。這種方法有諸多不便。其中,依賴關系在編程序的時候就知道了,并非到運行的時候才會發(fā)現(xiàn)。新架構編程序的過程中就可以發(fā)現(xiàn)其依賴關系,在編譯9新架構的新應用
這樣變化的結構可以應用到Al,Al還有很多新的變化,不同的應用或神經網絡,我們能否通過變結構的方式,只要我們可以識別到一個具體的應用,識別出他用的是一個怎樣的神經網絡,就可以通過改變今天的功能來適應他,產生全新的發(fā)展呢?
如圖8所示,采用新架構設計的語音識別芯片,精度已經可以達到91 .8%,可以識別聲紋,延時低達25 ms,功耗遠遠小于1 mW,應用到手機上幾乎不耗電;右邊是一個人臉識別,人臉識別結果最主要的是精度,可以達到99%,人類只能識別97%,工作在200 MHz,可以實現(xiàn)6 ms,運算功率,每瓦100萬億次的運算。
10 結論
芯片工藝技術進入10 nm,專用集成電路面臨嚴峻的挑戰(zhàn),我們就該在架構上進行創(chuàng)新。其實在高端芯片上也是如此,如果跟著CPU的架構前進,我們永遠是跟在別人后面的,能夠在架構創(chuàng)新上超過別人才能引領時代。
硬件架構隨著軟件變化而變化的全新概念在保證芯片的功能滿足要求的同時,又能保證其融合性,也是一項很好的創(chuàng)新。