- 軟硬件融合:超大規模云計算架構創新之路
- 黃朝波
- 2680字
- 2021-05-19 17:57:15
2.3 軟硬件協作
2.2.3節講了平臺選擇,但一般來說,除了CPU通用軟件平臺,其他平臺通常都不是圖靈完備的,需要和CPU一起協作來完成工作任務的處理。在本書中,我們約定如下。
·如果一個任務由CPU執行,那么我們可以稱之為軟件執行。
·如果一個任務或任務的一部分由協處理器、GPU、FPGA或ASIC執行,那么我們可以統稱之為硬件加速執行。
·如果一個任務至少分為兩個部分,一部分在CPU的軟件中執行;另一部分在協處理器、GPU、FPGA或ASIC硬件中執行,并且這兩個部分之間需要相互通信和協作,那么我們可以稱此任務是軟硬件協作完成的。
2.3.1 多平臺混合架構
根據不同的層次,多平臺混合架構(以下簡稱多平臺)可以簡單地分成如下三類。
·芯片級多平臺,即在SoC(System on Chip,片上系統)芯片內部,不同架構處理器之間的協作。
·板級多平臺,即在服務器主板及擴展板卡組成的SoB(System on Board,板級系統)上,不同架構處理芯片之間的協作。
·網絡級多平臺,即在多個不同架構服務器通過網絡組成的SoN(System on Network,網絡系統)上,不同服務器之間的協作。
1.SoC
智能手機使用電池供電,同時需要提供足夠強大的性能,如此苛刻的應用條件,使得智能手機處理器通常都選用集成度非常高的SoC,它是典型的芯片級多平臺。下面以高通驍龍810處理器為例對SoC進行簡單介紹。如圖2.3所示,高通驍龍810處理器主要包括如下模塊。
·定位(Location):支持GPS、格洛納斯、北斗、伽利略等導航系統。
·GPU(Adreno 430 GPU):支持OpenGL ES 2.0/3.1、OpenCL 1.2完整版、內容安全等功能。
·顯示處理(Display Processing):支持4K、Miracast無線投影、圖像增強等。
·基帶(Modem):第四代產品,支持Cat6 LTE,最高3×20 MHz CA。
·USB 3.0.
·雙路ISP(Dual ISPs):攝像頭最高55MP、12GPix/s帶寬。
·ARM Cortex系列A57及A53通用CPU(ARM Cortex-A57&Cortex-A53 CPUs):主要用于運行Android等智能手機操作系統及App。
·內存控制器(Memory):支持LPDDR4。
·專用DSP(Hexagon DSP):超低功耗傳感器引擎。
·多媒體處理引擎(Multimedia Processing):支持4K編解碼、驍龍語音激活、手勢、工作室訪問安全等功能。

圖2.3 高通驍龍810處理器布局圖
2.SoB
單個計算平臺規模足夠龐大,難以作為一個模塊被SoC單芯片集成,而要獨占整個SoC芯片的晶體管資源。因此,相比于SoC,SoB通常用于較大規模的計算場景。
CPU連接GPU的混合架構如圖2.4所示,它屬于典型的用于機器學習場景的GPU服務器主板拓撲結構,是一種典型的SoB。在此混合架構中,通過主板連接了2個通用CPU和8個GPU加速卡。2個CPU通過UPI/QPI相連;每個CPU均通過2條PCIe總線連接2個PCIe Switch(交換機);每個PCIeSwitch均連接2個GPU;另外,GPU間還通過NVLink總線相互連接。

圖2.4 CPU連接GPU的混合架構
在該混合架構中,數據可以在兩個CPU(的內存)、任意兩個相連GPU(的內存)之間,以及通過PCIe Switch相連的CPU(的內存)和GPU(的內存)之間傳輸,通過CPU和GPU的相互協作,來完成既定的工作任務。
3.SON
網絡級多平臺(也稱異構服務器的網絡集群)通過網絡連接眾多的服務器,適用于大規模互聯網應用的協同計算場景。
英特爾的機架級計算架構的資源解構如圖2.5所示。英特爾的機架級計算(Rack Scale Compute,RSC)架構提供了一整套計算節點動態組織的解決方案:支持通過PCIe連接各個不同的平臺(存儲也可以理解成一個計算平臺,同樣的架構,存儲的位置也可以由其他加速器平臺代替);在架構不變的情況下,也可以通過網絡來連接各個計算平臺,來支持更大規模的資源解構。由于互聯網系統通常要面對數以百萬計的訪問量,因此可以把整個系統解構到多臺服務器,把數量眾多的通用計算節點、存儲節點、加速器節點等計算平臺通過網絡連接,從而組成一個相互協作的服務器集群。

圖2.5 英特爾的機架級計算架構的資源解構
2.3.2 軟硬件平臺的協作
以基于CPU+GPU的異構計算架構為例來對軟硬件平臺的協作進行介紹。CUDA是NVIDIA創建的并行計算平臺和應用程序編程接口(API)模型。CUDA允許軟件開發人員使用具有支持CUDA功能的GPU進行通用處理。CUDA平臺是一個軟件層,可直接訪問GPU的虛擬指令集和并行計算元素,以執行計算內核。
如圖2.6所示,CPU視角的CUDA處理流程如下。
·CPU順序執行任務,結束后把數據保存在CPU的內存中。
·將待處理的數據從CPU內存復制到GPU內存(圖2.6中的①處理)。
·CPU指示GPU工作,配置并啟動CUDA內核(圖2.6中的②處理)。
·多個CUDA內核并行執行,處理準備好的數據(圖2.6中的③處理)。
·處理完成后,將處理結果復制到CPU內存(圖2.6中的④處理)。
·CPU把處理結果進行進一步處理,并繼續做后續的工作。

圖2.6 CPU視角的CUDA處理流程
說明:在GPU工作期間,CPU處于空閑狀況,也可以把這段時間利用起來,用于處理其他工作任務。
如圖2.7所示,我們按照在軟件運行的部分任務和在硬件運行的部分任務之間的關系把軟硬件協作分為如下兩類。
·平行的軟硬件協作。例如,CUDA線程間通信或服務器/客戶端的交互,雖然雙方可能有主動(Master)和從動(Slave)的區別,但本質上是相互平等的通信或交互。
·垂直的軟硬件協作。如,分層的網絡協議棧或很多大規模分層系統的上下層之間的服務調用,下層封裝技術實現細節并為上層調用提供接口。

圖2.7 平行和垂直的軟硬件協作
平行模式和垂直模式本質上是一樣的,一方面,雙方各自完成自己的工作;另一方面,雙方通過交互達到交換數據和信息的目的,最終實現軟硬件平臺間的工作協作。平行模式和垂直模式的區別主要在于邏輯上的調用關系,垂直模式主要是基于下一層提供的服務來完成本層的功能,并上一層提供服務;而水平模式則是兩者相互調用、協作。
2.3.3 軟硬件平臺的交互
軟件平臺和硬件平臺之間的協作一方面是雙方各自完成自己的工作,更重要的一方面則是通過交互來實現相互間的協作。我們通過一個簡單的交互模型來理解軟硬件平臺之間的交互。
軟硬件交互模型如圖2.8所示。

圖2.8 軟硬件交互模型
其中,軟件負責如下三部分工作。
·硬件的控制:包括硬件的配置、運行控制等。
·軟件數據處理:當我們講軟硬件協作的時候,意味著軟件不僅要參與控制面的處理,也要參與數據面的處理。如果軟件處理在前,則需要軟件完成處理后按照軟硬件之間的約定把數據在內存準備好;如果硬件處理在前,則等待硬件處理完成并按照約定把數據寫入內存中后,再由軟件處理。
·數據交互處理:如果數據從軟件傳到硬件,則需要軟件先把數據準備好,然后通過操作寄存器或發送指令的方式通知硬件處理,硬件把數據搬運到硬件之后,告知軟件釋放內存;如果數據從硬件傳到軟件,則需要軟件預先提供內存位置,然后硬件把數據寫到預定的內存中并通過中斷等方式告知軟件,軟件處理數據并釋放內存。
硬件主要負責如下兩部分工作。
·硬件數據的輸入和輸出:負責跟軟件交互,把數據從內存搬運到硬件內部緩沖(數據輸入),等待處理;或者把處理后的結果從內部緩沖搬運到內存(數據輸出)。
·硬件的數據處理:硬件數據在內部緩沖準備好后,硬件把數據加載到硬件內部的處理引擎進行相應的處理,并把結果寫到內部緩沖。
- 地理信息系統中的不確定性問題
- 巧學巧用Dreamweaver CS6、Flash CS6、Fireworks CS6網站制作
- Dreamweaver+Flash+Photoshop網頁設計從入門到精通(微課精編版)
- pfSense 2.x Cookbook
- 全球網絡空間治理體系與中國方案
- Dreamweaver+ASP動態網頁設計從新手到高手
- 信號與信息
- 大型網站技術架構
- Instant PageSpeed Optimization
- 數據資產(第2版)
- Axure RP8.0產品原型設計與制作實戰
- Axure RP 8.0中文版原型設計從入門到精通
- Bootstrap 4 Web設計與開發實戰
- 網頁設計與制作:Dreamweaver+Flash+Photoshop+HTML5+CSS3(慕課版)
- 計算機網絡課程設計(第2版)