- 軟硬件融合:超大規模云計算架構創新之路
- 黃朝波
- 3567字
- 2021-05-19 17:57:15
2.2 軟硬件劃分
指令是軟件和硬件交互的媒介。軟硬件劃分其實就是確定指令復雜度的過程。根據指令復雜度劃分出五個典型的計算平臺:CPU、協處理器、GPU、FPGA和ASIC,它們的指令復雜度依次增大,也依次從軟件平臺轉向硬件平臺。
2.2.1 三個維度
我們可以列舉如下形象示例。
·團隊A的每個工人可以在單位時間內加工5個零件,團隊B的每個工人可以在單位時間內加工8個零件。
·團隊A的單位時間是3分鐘,一小時擁有20個單位時間;團隊B的單位時間是5分鐘,一小時擁有12個單位時間。
·團隊A有10個人,團隊B有20個人。
·在一小時內,團隊A可以完成1000個零件的加工,團隊B可以完成1920個零件的加工。
需要通過以下三個維度衡量一個處理器的性能。
·指令復雜度。類比于上述示例中單位時間內加工的零件數量,指令復雜度指的是單個指令計算量的密度。
·運行速度,即運行頻率。類比于上述示例中一小時內的單位時間數量,運行頻率指的是1秒時鐘周期的數量。
·并行度。類比于上述示例中團隊的成員數量,并行度指的是多個并行處理。
1.指令復雜度
CPU和GPU是硬件,基于CPU和GPU運行的程序是軟件。相對于DSP(數字信號處理器)、GPU等,我們一般也稱CPU為通用處理器。CPU(不考慮協處理器)支持的指令稱為通用指令,包括整形計算類、浮點類、數據傳輸類、控制類等指令。相比于通用指令,一些復雜指令(復雜指令需要復雜的硬件邏輯來處理)需要使用專用的硬件處理單元,比如,SIMD(Single Instruction Multiple Data,單指令流多數據流)類和MIMD(MultipleInstruction Multiple Data,多指令多數據流)類指令需要運行于GPU。
對硬件加速單元(Accelerator,從設計架構的角度來看,就是ASIC,見表2.2中的相關描述)來說,指令是對算法的一次處理。例如,對于2.1.3節介紹的DES算法,其設計指令為一次64bit DES計算。CPU對DES的一次處理需要上百條指令,而DES硬件加速器對DES的一次處理只需要1條指令,可見DES硬件加速器指令的復雜度遠大于CPU指令的復雜度。
指令復雜度和編程靈活性是兩個互反的指標:指令越簡單,編程靈活性越高軟件靈活性真好;指令越復雜,性能越強,受到的限制越多,軟件靈活性越差。
我們在通過定制硬件加速器的方式來獲得性能提升的同時,會失去軟件應有的靈活性。
2.運行頻率
運行頻率越高,計算速度越快。若不考慮其他因素的制約,則計算速度和運行頻率為正比關系。而運行頻率受電路中關鍵路徑(延遲最大路徑)的約束,二者為反比關系:關鍵路徑越短,運行頻率越高。
運行頻率與電路邏輯的關系如圖2.1所示。運行頻率受關鍵路徑制約,而關鍵路徑與如下兩個因素有關。
·關鍵路徑所包含門的數量:從前一級寄存器到后一級寄存器之間的最長路徑所包含的邏輯門的數量。
·單個邏輯門的延遲時間。邏輯門的延遲時間與半導體生產工藝有關,在一般情況下,半導體工藝尺寸越小,單個邏輯門的延遲時間越短。

圖2.1 運行頻率與電路邏輯的關系
邏輯門的延遲時間越短,或者兩級寄存器之間的邏輯門數量越少,運行頻率越高,計算速度也就越快。要想縮短邏輯門延遲時間,就需要采用更先進的工藝;要想減少兩級寄存器之間邏輯門的數量,就需要采用更多級的流水,因為每一級流水所做的事情越少,所需要的邏輯門也就越少。
3.并行度
并行設計在硬件邏輯設計中很常見。以下是一些常見的并行度設計項目。
·指令流水線。指令流水線是一種時間并行機制,在同一時刻有多條指令處于流水線的不同階段,相當于多條指令并行處理。
·指令多發射(Multiple Issue)。指令多發射是種空間并行機制一條流水線從指令緩沖區一次發送到譯碼階段就有多條指令,在執行階段也是多條指令并行。
·超線程(Hyper-Thread)。在一個處理器核內部,多組不同的指令流處理分時共享處理器核內部的各種硬件資源,以實現更佳的資源利用率并提升整體性能。
·多總線。多總線設計可以進一步增加處理器的數據處理帶寬。
·多核技術。通過一些內部互連總線把多個處理器核集成到一塊芯片上,以此來提升綜合性能。
·多處理器芯片。受限于芯片工藝、功耗水平、設計架構,單芯片內的多核互連不能無限制增加,也可以通過一些芯片互連技術把多個CPU芯片連成一個NUMA系統。當前比較常見的是2~8個CPU芯片互連的架構。
·總線。對并行總線來說,增加數據線的寬度可以顯著增加總線的帶寬,并行總線一般用于芯片內部邏輯通信。對于串行總線,以PCIe為例,相比于并行總線PCI,PCIe不僅可以快速提升頻率,還可以通過將很多組串行總線進行組合來提升傳輸性能,串行總線一般用于芯片間數據通信。
·異構計算單元。CPU、GPU、xPU及各種硬件加速器可以組成異構多處理單元,共同協作完成工作任務,CPU主要承擔控制和數據交互的角色。
·多服務器集群。大型互聯網系統需要成百上千的服務器,包括業務處理、網絡處理、存儲和數據庫處理等不同功能的服務器,這些服務器共同組成性能強大且運行穩定的系統對外提供服務。
不同方向、不同層次的并行技術都可以提升硬件系統的性能。如果我們把不同復雜度的單位處理都當作指令,那么我們就可以通過IPC(InstructionPer Cycle)來評價并行度。對一個CPU核來說,IPC代表的是每個周期執行的指令數量;對一個硬件加速模塊來說,IPC代表的是一個周期所能進行單位處理的數量。
2.2.2 綜合分析
我們通過指令復雜度、運行頻率、并行度三個維度對CPU、協處理器、GPU、FPGA和ASIC五種硬件平臺進行定性分析(受不同硬件平臺、型號、架構實現和工藝的影響,很難對每個維度給出定量的分析數據),具體如表2.4所示。
表2.4 五種硬件平臺性能定性分析

由圖2.2可知,不同硬件平臺具有不同的靈活性和性能。
·CPU:通用指令的處理器,指令最簡單,具有最高的靈活性,但具有最差的性能。通常所說的某個任務或算法運行在軟件,即指用編程實現任務或算法,并將它們運行于CPU。
·協處理器:現代處理器通常都會支持一些擴展指令集,如英特爾的AVX及ARM的NEON等。這些擴展指令集的計算在擴展的執行模塊中進行,一般把這些處理擴展指令集的執行模塊稱為協處理器。相比CPU,協處理器的靈活性稍差,但在一些特定應用場景能夠提升性能。例如,把Intel Xeon的AVX-512擴展指令集用于機器學習推理場景,可以獲得比使用CPU明顯的性能提升。
·GPU:圖形處理單元,采用并行架構設計,內部有上千個計算單元,可以并行執行上千個線程。GPU 具有比較折中的靈活性和性能。由于圖形計算都是以向量計算為主的,因此GPU非常擅長對類SIMD/MIMD指令的處理。NVIDIA提供的CUDA計算框架降低了GPU軟件開發的門檻,并且能夠充分利用GPU的計算性能。
·FPGA:一般實現特定的任務或算法加速器設計。從設計架構的角度來看,FPGA和ASIC是一致的,二者的主要區別在于,FPGA付出的代價是運行頻率降低和硬件成本增加,但獲得了硬件可編程的靈活性。
·ASIC:實現特定的任務和算法。ASIC與FPGA的區別是,其硬件電路是不可更改的。與FPGA相比,ASIC的優勢是可以獲得更高的運行頻率和更強勁的性能。ASIC是這五個硬件平臺中靈活性最差的,只能用于特定應用場景。

圖2.2 CPU、協處理器、GPU、FPGA、ASIC的對比分析
從設計角度來看,FPGA和ASIC都可以實現基于特定任務或算法處理的硬件加速模塊,也就是我們通常所說的硬件加速器。
純硬件沒有意義,即使是硬件加速單元,也離不開軟件的參與,至少都需要軟件驅動來初始化和配置模塊,以此來控制模塊的運行。DSA在ASIC基礎上做了一定程度的“妥協”回調,也就是說,DSA在ASIC針對特定應用場景的基礎上定義了少量指令,以此來提升ASIC的靈活性。DSA仍然屬于ASIC的范疇,作為ASIC的特例或升級。我們會在7.4節詳細介紹DSA,以及基于DSA的異構加速。
2.2.3 平臺選擇
由2.1.3節SHA-256在不同平臺上的性能可知,平臺選擇具有如下規律。
·CPU通用軟件平臺。每個新的應用最早通常都是基于軟件實現的:一是因為軟件實現所需要的代價較小,可以快速實現想法;二是因為CPU靈活性很好,在不考慮性能的情況下幾乎可以處理任何應用場景的任務。
·協處理器擴展指令加速平臺。隨著技術的演進,對平臺性能提出了一些要求,這個時候,可以針對一些比較消耗CPU資源的程序進行一定的編程和編譯優化。
·GPU向量及并行加速平臺。隨著技術的進一步演進,當我們能從算法中尋找到更多的并行性時,我們就可以找一些專用的處理器(如GPU、DSP、NPU等),通過特定的并行優化,以及支持向量(SIMD)、多指令并行(MIMD/VLIW)等復雜指令編譯優化的方式,深度優化平臺性能。
·FPGA硬件可編程加速平臺。隨著技術不斷成熟,應用的規模越來越大,也越來越消耗資源。這個時候,我們值得花費更多的精力,提煉出復雜度非常高或可以當作非常復雜指令的算法,通過硬件邏輯實現平臺加速,再通過FPGA硬件可編程的方式快速落地。
·ASIC 定制加速平臺。隨著技術更加成熟、穩定,當應用規模足夠龐大時,就非常有必要為此應用場景定制開發ASIC,來達到最優的性能、最低的成本、最小的功耗。
當需要面向一個新領域開發的時候,要快速實現,或者應用的場景不夠確定,需要硬件平臺有足夠的適應性,這些情況使用CPU比較合適。當需要極致的效率,并且成本、功耗敏感,規模足夠龐大時,選擇定制開發ASIC會更合適一些。如果既需要有一定的靈活性,又要保證一定的性能加速,并且應用有足夠的并行度,那么使用GPU更合適一些。
- Axure RP 原型設計實踐(Web+APP)
- ASP.NET Core 3 框架揭秘(上下冊)
- 計算機網絡技術基礎(第2版)
- 巧學巧用Dreamweaver CS6、Flash CS6、Fireworks CS6網站制作
- pfSense 2.x Cookbook
- ASP.NET 3.5教程
- Cisco Unified Communications Manager 8:Expert Administration Cookbook
- 物聯網及其安全技術解析
- 對話大數據 政府/工業/金融/醫療/人才行業創新與應用案例分析
- Apache Solr Beginner's Guide
- 信息安全測評與風險評估
- 兼攻之道:思科當前贏利和長遠發展的秘訣
- 劍指云端:引領企業IT未來的最佳實踐
- FrontPage 2003網頁設計與制作5日通
- HCIA-Security實驗指導手冊