- 軟硬件融合:超大規模云計算架構創新之路
- 黃朝波
- 2251字
- 2021-05-19 17:57:14
2.1 軟硬件基本概念
本節主要介紹軟件和硬件的一些基本概念,以及硬件加速原理,以使大家對軟硬件有概括性認識。
2.1.1 軟件和硬件
軟件和硬件的通俗定義:計算機軟件看不見摸不著;而計算機硬件看得見摸得著。軟件和硬件更詳細、嚴謹的定義如下。
·軟件是在計算機系統上執行不同任務的說明、過程、文檔的集合。也可以說,軟件是在計算機處理器上執行的編程代碼,該代碼可以是裸機級別的代碼,也可以是為操作系統編寫的應用級別的代碼。例如,Word、Chrome、Photoshop、MySQL等屬于軟件。
·硬件指計算機的物理組件,可以看到和觸摸的部分,如處理器、存儲設備、監視器、打印機、鍵盤、鼠標等。
由上述軟硬件的定義可知,軟件和硬件的界限非常清楚,我們可以明確地知道哪些是軟件,哪些是硬件。但是當我們深入底層的技術細節時,會發現軟件和硬件的界限并不完全清晰。
指令是計算機技術的核心概念,用于控制處理器執行相應動作的命令。指令集體系結構(Instruction Set Architecture,ISA)是處理器與軟件程序進行交互的媒介。也可以說,指令是CPU中軟件和硬件交互的接口(區別于I/O接口),我們編寫的程序和相應的數據是軟件,而支持軟件運行的CPU和內存是硬件。
我們將網卡、硬盤及打印機等各種I/O設備定義為硬件,這些I/O設備只有在內部具有相應固件且有驅動程序及控制程序支持的情況下才能正常工作。我們將運行在CPU上的I/O設備驅動程序及控制程序,以及I/O設備內部協調硬件工作的固件定義為軟件。其中,運行固件的載體必然是I/O設備內部的某個嵌入式處理器和存儲器(ROM、RAM等),而內部嵌入式處理器和存儲器又是硬件。
2.1.2 FPGA、ASIC和SoC
具有軟件背景的讀者通常對CPU、GPU的概念比較熟悉,但可能對FPGA、ASIC及SoC的概念不夠明確。本節通過對FPGA、ASIC及SoC進行基本介紹及對比來使讀者更明確地理解三者的含義。
1.FPGA
FPGA(Field Programmable Gate Array,現場可編程門陣列)是一種特殊的集成電路,具有現場可編程的功能,可以用作微處理器、加密單元、圖形卡,甚至可以同時實現這三者的功能。在FPGA上運行的任務通常使用諸如VHDL和Verilog等硬件描述語言來創建。
FPGA由大量嵌入式可編程互連結構及數以千計的可配置邏輯模塊(CLB)組成。CLB主要由查找表(LUT)、多路復用開關和觸發器組成,可以實現復雜的邏輯功能。除了CLB和可編程互連結構,許多FPGA還包含專門用于實現特定功能的各種硬核模塊(如Block RAM、DSP模塊、外部存儲器控制器、PLL、多千兆位收發器等),甚至提供純硬件處理器內核(如Xilinx Zynq系列芯片中集成ARM Cortex-A系列應用處理器),純硬件處理器內核用于處理日常的非關鍵任務,而FPGA處理純硬件處理器內核無法完成的高速任務。這些專門用于實現特定功能的硬核模塊是FPGA相比ASIC所具有的優勢。
2.ASIC
ASIC(Application Specific Integrated Circuit,專用集成電路)是特定于應用的。ASIC僅用于一種功能,并且在整個生命周期中功能相同。例如,從器件的角度來看,手機內部的CPU是ASIC;從架構的角度來看,ASIC特指功能加速器。手機內部的CPU在整個生命周期中都充當CPU,它的邏輯功能不能更改為其他任何功能,因為其數字電路由硅片中永久連接的門和觸發器組成。ASIC也使用諸如Verilog或VHDL等硬件描述語言,以類似于FPGA的邏輯實現方式實現邏輯功能。ASIC與FPGA的不同之處在于,ASIC的數字電路被永久性地寫入硅片中,而FPGA的數字電路是通過連接多個可配置邏輯模塊而構成的。形象而言,FPGA使用樂高積木建造城堡,而ASIC使用混凝土建造城堡。
3.SoC
SoC(System on Chip,片上系統)是一種集成電路(也稱芯片),集成了計算機或其他電子系統的所有組件,這些組件通常(但不總是)包括CPU、內存、I/O接口和外部存儲器控制器,它們都位于一個芯片上。根據應用的不同,SoC可能包含數字、模擬、混合信號及射頻信號處理功能。由于集成在單個芯片上,因此與具有相同功能的多芯片相比,SoC的功耗要小得多,占用面積少得多,所需成本低得多。另外,由于SoC內部信號傳遞速率高于芯片間的信號傳遞速率,組件間具有更高的信號傳遞速率,因此SoC可以擁有很強勁的性能。SoC在移動計算(如智能手機)、邊緣計算,以及IOT等功耗、成本敏感的場景中非常普遍。
4.FPGA、ASIC和SoC的對比
FPGA與ASIC的比較如表2.1所示。
表2.1 FPGA與ASIC的比較

續表

注:深色背景表示優勢所在。
隨著技術的發展,FPGA、ASIC和SoC也在相互融合,它們之間的界限越來越模糊。例如,隨著FPGA的發展,現在很多FPGA內部集成了硬核,這種硬核就是傳統意義上的ASIC;從硬件可編程的角度來看,SoC與FPGA相反,它可以看作SAIC,這里的ASIC主要指硬件不可編程,而不是單指特定功能芯片。FPGA、ASIC和SoC的區別和聯系如表2.2所示。
表2.2 FPGA、ASIC和SOC的區別和聯系

續表

2.1.3 硬件加速原理
DES(Data Encryption Standard,數據加密標準)算法是一種非常經典的加密算法。Mbire McLoone等人發表的A high performance FPGA implementation of DES文章中給出了一組數據,如表2.3所示。硬件加速器性能比CPU軟件性能強30倍,如果不考慮頻率的影響,則硬件加速器性能比CPU軟件性能強140倍。若用軟件(CPU執行指令)完成一次DES(一次數據處理量為64bit),則需要執行幾百條指令,大概需要140個時鐘周期;若用專用硬件加速器完成一次DES,則只需要1個時鐘周期。
表2.3 DES算法CPU與硬件加速器的對比

SHA-256也是一種經典的加密算法,比特幣所用技術區塊鏈的核心算法就是SHA-256,它在各個平臺上的性能對比如下。
·CPU:最初大家都使用CPU挖礦,一臺高端個人計算機的,處理速度大概為20MH/s(H/s,Hash per second);
·GPU:后來,有人用GPU挖礦,SHA-256可以繼續拆分成普通的算術邏輯運算,而GPU具有超級多的算術邏輯運算單元,一個高端GPU的處理速度可以達到200MH/s。
·FPGA:再后來,有人用定制SHA-256算法硬件邏輯的FPGA加速卡來挖礦,經過精心設計定制電路的FPGA的運算速度可以達到1GH/s。
·ASIC:比特大陸公司于2015年發布了 ASIC 礦機芯片BM1385,單顆芯片算力可達32.5GH/s。
上述CPU、GPU、FPGA性能數據來自2016年左右的《區塊鏈:技術驅動金融》。