

目前,市場上的芯片主要包括指令集架構和數據流架構兩種實現方式。指令集架構主要包括X86架構、ARM架構、精簡指令集運算RISC-V開源架構,以及SIMD架構。總體來說,四者都屬于傳統的通用指令集架構。傳統的指令集架構采用馮諾依曼計算方式,通過指令執行次序控制計算順序,并通過分離數據搬運與數據計算提供計算通用性。與上述四者不同,數據流架構采用了數據流引擎的計算架構,它的顯著特點就是能夠大幅提高芯片利用率。如鯤云的CAISA(Custom AI Streaming Accelerator Architecture)就采用了定制化的數據流架構。那么,究竟什么是數據流架構呢?它又是怎么實現性能的極大提升呢?

數據流架構是一種計算機體系結構,直接與傳統的馮·諾依曼架構或控制流體系結構進行對比,數據流架構沒有概念上的指令計數器。它使用粗粒度表示(Coarse-grained Representation)來提高數據的并行度,并允許編譯器同時調度多個順序循環和功能,以實現更高的吞吐量和更低的延遲。
下圖顯示了數據流流水線的概念圖。在這個概念圖中,指令集架構首先執行函數A,完成之后再執行函數B,依次類推直至執行完所有程序。在定制數據流架構的情形下,編譯器可以安排每個函數在數據可用時立即執行。

在此示例中,指令集架構(圖A)等待時間和間隔為8個時鐘周期。使用數據流架構,該間隔可減少到僅三個時鐘周期(圖B)。
目前,數據流架構已在專用硬件中成功應用,例如數字信號處理、網絡路由、圖形處理、遙感檢測、以及數據庫處理等。同時,在當今的許多軟件體系結構中(包括數據庫引擎設計和并行計算框架),它也占據著非常重要的地位。1994年,帝國理工學院教授、英國皇家工程院院士、鯤云科技聯合創始人和首席科學家Wayne Luk陸永青院士率先將數據流架構定制化并運用到AI領域。


首先,現在大部分的 GPU、CPU 都是基于指令集的架構,應用層可以通過軟件和編輯器去將語言最終轉化為機器的語言,即二進制的碼,從而執行指令和操作,并保證對不同應用的兼容性。

相較于指令集,數據流的核心就是使每個時鐘周期都能進行有效計算。數據不停流入計算單元并完成計算,得到輸出后,最終數據將會被存儲到內存中或流入下一個流水線操作。

簡而言之,數據流架構可以為特定應用場景提供更高的芯片利用率;而指令集架構雖然能提供更高的通用性,但其芯片利用率相對較低。兩種架構產生差異的原因在于:
- 數據流架構完全依靠數據流轉的方式來控制計算,從而消除了由于指令控制和數據搬運而產生的數據開銷;
- 指令集架構通過指令控制來處理不同場景下的運算,提高了對不同計算需求的通用性支持。
數據流架構要實現性能的極大提升,需要解決兩個問題,一是如何在復雜計算架構下保持較高的計算效率,二是如何保證定制架構的通用性,即如何支持不同的深度學習算法。
為此, 鯤云研發了RainBuilder與CAISA架構配合,通過動態配置使其能通用支持各種AI算法,提升了通用性。該編譯器能進行算法模型結構的解析,并把模型導入數據流架構,從而提高數據流架構的計算效率來完成深度學習網絡的計算。
RainBuilder的優勢包括:
- 是一種端到端(End-to-End)的編譯工具
- 最大化 AI 性能,充分利用數據流架構下的計算單元
- 使用硬件流水線架構完成數據的計算與控制
RainBuilder由RbCompiler、RbRuntime和RbDriver三部分構成。RainBuilder的原理如下圖所示:

------
RainBuilder Compiler(下文稱為RbCompiler或Compiler)可以將用戶在TensorFlow、Caffe、ONNX、PyTorch等深度學習框架下開發的算法模型進行全自動的編譯優化,并提取數據流中間表達式(Streaming Graph IR,SG IR)。模型編譯過程中自動進行數據量化、節點融合、軟硬件分割等操作。Compiler通過鯤云研發的圖優化算法將已有開發框架中的指令集計算圖重構為數據流圖。轉化過程中涉及大量針對數據流架構的模型壓縮和量化技術,從軟件層面進一步提升計算效率。
------
RainBuilder Runtime為CAISA加速引擎的軟件運行時,負責將SG IR進行加載并使用CAISA加速引擎對深度學習網絡進行運行加速,該部分組件以C/C++ API接口的形式開放給用戶進行二次開發和部署使用。RbRuntime作為RainBuilder的后端,配合RbCompiler使用,用于加載并運行RbCompiler編譯生成的模型文件,即上文提到的SG IR,SG IR包含了模型的所有節點,并能根據節點創建對應的SG OP,同時還能按照拓撲順序將SG OP部署在相應的設備上執行計算,返回模型的計算結果。Runtime提供深度學習算法的應用接口,用戶可根據使用習慣調用python或C/C++的API完成算法的部署。Runtime設計了工作線程和計算線程精細化調度框架,同時針對x86、ARM平臺實現了算子的深度適配和優化,從而保證目標算法可以充分發揮CAISA架構計算效率的優勢。
------
RainBuilder Driver是底層CAISA架構的相關驅動模塊,對應用開發者透明,驅動CAISA硬件架構,實現硬件模塊的計算調度和硬件模型分析。
RainBuilder的推出簡化了算法從開發到芯片級部署的流程。用戶不需要了解底層計算架構,也不需要改變開發習慣,就可以實現算法在數據流架構上的高效部署。
鯤云科技聚焦于基于數據流架構的定制AI計算引擎,憑借自1991年近三十年技術積累,2019年4月,鯤云科技發布全球首個AI數據流架構CAISA 2.0架構,其芯片利用率(Chip Utilization Ratio,CUR )最高可達98%,并且支持大多數主流卷積神經網絡(CNN),是世界上首個針對人工智能的數據流架構。基于自主研發的CAISA數據流架構,鯤云的“星空”、“雨人”加速卡已在航空、航天、電力、安防、教育、智能制造、智慧城市等領域落地。
References
1. Veen, Arthur H.(Dec 1986). "Dataflow Machine Architecture". ACM Computing Surveys.18 (4): 365–396. doi:10.1145/27633.28055. Retrieved 5 March 2019.
2. "HX300Family of NPUs and Programmable Ethernet Switches to the Fiber AccessMarket", EN-Genius, June 18 2008.
3. ManchesterDataflow Research Project, Research Reports: Abstracts, September 1997
4.https://www.xilinx.com/html_docs/xilinx2017_4/sdaccel_doc/obx1504034310502.html
