【嘉德點評】微軟發明的GPU與FPGA進行數據傳輸的方法,不僅可以帶動基於FPGA進行人工智能芯片設計的發展,同時也可以加快深度學習技術發展的步伐。

集微網消息,2018年5月,在Bulid大會上,微軟宣佈 Project Brainwave 開放預覽,這是一種用於深度神經網絡處理的架構,可以用於Azure與邊緣環境,並且可以讓Azure成爲實時運行人工智能最快的雲平臺。

爲什麼微軟要基於FPGA來進行人工智能芯片設計呢?這是因爲當時微軟的搜索引擎都是依靠CPU驅動,儘管英特爾等公司不斷改進CPU,但是這些芯片還是不能滿足微軟的需求。而此時恰好FPGA能彌補這個不足。

圖形處理單元(GPU)已經被用於圖形應用許多年,近年來也被應用於其他例如圖形處理、搜索以及其他一般的應用。雖然FPGA和GPU均可以被視爲專用處理器,但是在某些場合,如果FPGA與GPU之間可以進行通信以及任務的共享、轉交,會更加高效的完成任務,這也是基於FPGA設計人工智能芯片的重要設計方案之一。

爲了實現FPGA與GPU之間的通信,微軟在2013年8月16日申請了一項名爲“GPU和FPGA組件之間的直接通信的方法和系統”的發明專利(申請號:201380044351.6),申請人爲微軟技術許可有限責任公司。

根據該專利目前公開的資料,讓我們一起來看看這項FPGA與GPU之間的通信技術吧。

如上圖,爲用於GPU和FPGA組件之間直接通信的系統框圖,系統100包括存儲計算機指令的存儲器、中央處理單元(CPU)102、圖形處理單元(GPU)104和現場可編程門陣列(FPGA)106,這些部件通過總線進行連接,傳輸數據包括經由PCIe交換機在GPU和FPGA之間直接傳輸數據。

而要達到數據傳輸的目的,必然不可避免要對於數據在硬件中進行編址,也就是例如基於虛擬存儲器存儲的數據,被存儲在不連續的塊中的數據的物理地址中時,需要進行地址編碼。當數據在GPU與FPGA之間傳輸時,數據可以從FPGA的存儲器傳輸到GPU中,由於採用了編址,因此也就不會發生數據錯位、丟失等問題。

在GPU和FPGA通信中,也分爲直接通信和間接通信兩種方式,首先我們來看看間接通信方式。

如上圖,爲GPU和FPGA組件之間間接通信的系統示意圖,如圖所示,數據202經由GPU、快速PCI交換機、CPU和CPU存儲器,在GPU存儲器和FPGA存儲器之間交換。這是一個間接的路徑,由於在GPU和FPGA之間經過了CPU,因此也被稱爲GPU-CPU-FPGA傳輸。

這種間接傳輸的方式,雖然可以保證數據在GPU和FPGA之間共享,但是由於數據經過了兩次PCIe交換機並由於操作系統和CPU存儲器硬件兩者的等待時間加時,因此增加了通信等待時間和操作系統的開銷。

接着,我們來看看GPU和FPGA組件之間直接通信的流程圖,如上圖所示,首先要獲取標識用於直接訪問FPGA的存儲器的地址的虛擬指針,例如FPGA驅動程序可以生成標識用於直接訪問FPGA中的存儲器的地址的虛擬指針。

之後就可以啓動虛擬指針到與FPGA外部的GPU相關聯的圖形處理單元(GPU)驅動程序的傳輸,經過外部的總線接口,可以直接啓動GPU與FPGA之間的數據傳輸,而無需作爲中間操作來將數據存儲在中央處理單元的存儲器中。

以上就是微軟發明的GPU與FPGA之間的數據傳輸方案,在微軟進行基於FPGA的人工智能芯片設計的過程中,FPGA擔任着機器學習算法的主要硬件基礎。這種在GPU與FPGA之間傳輸數據的技術,勢必會加速人工智能芯片的發展以及加快深度學習技術的發展。

(校對/holly)

相關文章