前面專門寫過(guò)一篇“軟硬件融合”的系統(tǒng)性介紹文章,之后有很多朋友私信交流。不斷汲取大家對(duì)軟硬件以及軟硬件相互協(xié)作方面的觀點(diǎn),逐步深化和完善“軟硬件融合”概念和技術(shù)體系。
簡(jiǎn)單總結(jié)一下。一方面,大家對(duì)未來(lái)認(rèn)識(shí)的大方向是趨同的,就是“軟硬件要深度結(jié)合/協(xié)同”。但另一方面,對(duì)軟硬件融合觀點(diǎn)的認(rèn)識(shí),也存在如下一些常見(jiàn)的誤區(qū):
- 第一個(gè)誤區(qū),關(guān)于軟硬件結(jié)合。軟硬件結(jié)合和軟硬件耦合幾乎是一致的。而軟硬件融合不是軟硬件耦合,軟硬件融合是不同層次軟硬件解耦基礎(chǔ)上的再協(xié)同。
- 第二個(gè)誤區(qū),關(guān)于系統(tǒng)分層。軟硬件系統(tǒng)分層解耦是正確的,但分層解耦并不意味著每一層是“獨(dú)立王國(guó)”,也不意味著一勞永逸。軟硬件融合強(qiáng)調(diào),分層需要從全系統(tǒng)視角審視,分層后每一層都不宜黑盒,不同層之間仍然需要聯(lián)動(dòng),全局的、動(dòng)態(tài)的、長(zhǎng)期的統(tǒng)籌系統(tǒng)分層。
- 第三個(gè)誤區(qū),關(guān)于軟硬件垂直整合。軟硬件融合不僅僅指的是垂直向的從上到下、不同層次系統(tǒng)堆棧的深度協(xié)同,它還有其他更加豐富的內(nèi)涵。
第一個(gè)誤區(qū),道理比較淺顯易懂,這里不再贅述。今天這篇文章,接著第二個(gè)和第三個(gè)誤區(qū)的話題,來(lái)詳細(xì)介紹一下軟硬件融合的豐富內(nèi)涵。
1 軟硬件融合的內(nèi)涵
軟硬件融合的內(nèi)涵,可以簡(jiǎn)單總結(jié)成“三融一通”,指的是:
- 第一個(gè)融合,垂直向的軟硬件跨系統(tǒng)堆棧分層的融合。第二個(gè)融合,水平向的軟硬件跨不同架構(gòu)處理器的融合。第三個(gè)融合,斜向的軟硬件跨計(jì)算節(jié)點(diǎn)的融合。一個(gè)通用,整個(gè)系統(tǒng)需要通用性,也即性能和靈活性的極致均衡。
接下來(lái),我們?cè)敿?xì)展開(kāi)。
2 垂直向,軟硬件跨系統(tǒng)堆棧融合
垂直向的軟硬件協(xié)同或融合,是目前大家最大的共識(shí)。軟硬件系統(tǒng)通過(guò)分層實(shí)現(xiàn)系統(tǒng)的拆分,同時(shí)實(shí)現(xiàn)不同子系統(tǒng)的解耦。即使系統(tǒng)分層非常的科學(xué)和準(zhǔn)確,分層仍然無(wú)法一勞永逸。隨著系統(tǒng)的發(fā)展,原有的分層必然逐漸不再適應(yīng)系統(tǒng)發(fā)展的需要。系統(tǒng)的每一層均不宜是黑盒或“獨(dú)立領(lǐng)地”,不同層之間需要聯(lián)動(dòng)。從系統(tǒng)的視角,需要全局的、動(dòng)態(tài)的、長(zhǎng)期的、持續(xù)的重構(gòu)系統(tǒng)分層。
舉存儲(chǔ)分層的一個(gè)例子。? ?傳統(tǒng)的觀點(diǎn)認(rèn)為,模塊或?qū)哟沃g的調(diào)用,是在模塊內(nèi)部封裝復(fù)雜的功能,然后給外部提供簡(jiǎn)單的訪問(wèn)接口。這種觀點(diǎn)沒(méi)有錯(cuò),但是是靜態(tài)的觀點(diǎn)。站在系統(tǒng)發(fā)展的角度,就產(chǎn)生了如上圖的問(wèn)題。上圖是以RocksDB為例的存儲(chǔ)的整個(gè)系統(tǒng)堆棧,在這個(gè)系統(tǒng)堆棧里有三層虛擬化:SSD內(nèi)部的FTL地址映射、系統(tǒng)層的文件系統(tǒng)、應(yīng)用層軟件的地址管理。三層虛擬化比較冗余,會(huì)影響到存儲(chǔ)的延遲。目前行業(yè)逐漸流行的ZNS存儲(chǔ),就是取消了存儲(chǔ)控制器中的FTL虛擬化層,只完成簡(jiǎn)單的控制。然后把SSD塊的管理交給軟件,實(shí)現(xiàn)軟件定義存儲(chǔ)。如果只考慮本層,而不考慮系統(tǒng)整體:
- 一方面,會(huì)產(chǎn)生很多冗余和浪費(fèi);另一方面,如果個(gè)體的功能存在問(wèn)題,會(huì)拖累整個(gè)系統(tǒng)。
所有層次的設(shè)計(jì),都需要考慮全局統(tǒng)籌。
也以算力提升為例。算力的提升,是一個(gè)復(fù)雜而龐大的系統(tǒng)工程。不僅需要各個(gè)相關(guān)領(lǐng)域的持續(xù)優(yōu)化,還需要跨領(lǐng)域的協(xié)同創(chuàng)新。需要從數(shù)據(jù)中心多層次挖潛,整體協(xié)同優(yōu)化。優(yōu)化的主要方向有:
- 工藝和封裝:更先進(jìn)的工藝、3D集成,以及Chiplet封裝等。芯片實(shí)現(xiàn)(微架構(gòu)):通過(guò)一些創(chuàng)新的設(shè)計(jì)實(shí)現(xiàn),如存算一體、DSA架構(gòu)設(shè)計(jì)以及各類新型存儲(chǔ)等。
- 系統(tǒng)架構(gòu):比如開(kāi)放精簡(jiǎn)的RISC-v,異構(gòu)計(jì)算逐漸走向異構(gòu)融合計(jì)算,以及駕馭復(fù)雜計(jì)算的軟硬件融合等。
- 系統(tǒng)軟件、框架、庫(kù):基礎(chǔ)的如OS、Hypervisor、容器,以及需要持續(xù)優(yōu)化和開(kāi)源開(kāi)放的各類計(jì)算框架和庫(kù)等。
- 業(yè)務(wù)應(yīng)用(算法):業(yè)務(wù)場(chǎng)景算法優(yōu)化、算法的并行性優(yōu)化等;以及系統(tǒng)的靈活性和可編程性設(shè)計(jì);系統(tǒng)的控制和管理、系統(tǒng)的擴(kuò)展性等。
- 數(shù)據(jù)中心:網(wǎng)絡(luò)可維護(hù)性、高速網(wǎng)絡(luò)、網(wǎng)絡(luò)平臺(tái)化等;
- 基礎(chǔ)設(shè)施:如綠色DC,液冷、PUE優(yōu)化等;
- 運(yùn)營(yíng)和管理:如超大規(guī)模DC運(yùn)營(yíng)管理,跨DC運(yùn)營(yíng)和管理調(diào)度等。
- 更宏觀的系統(tǒng):如高性能的城域網(wǎng)、互聯(lián)網(wǎng),云網(wǎng)邊端深度協(xié)同和融合等。
3 水平向,軟硬件跨處理器架構(gòu)融合
按照指令的復(fù)雜度,典型的處理器平臺(tái)大致分為CPU、協(xié)處理器、GPU、FPGA、DSA、ASIC。從左往右,單位計(jì)算越來(lái)越復(fù)雜。性能越來(lái)越好,而靈活性越來(lái)越低。? ?假設(shè)CPU是100%軟件,ASIC是100%硬件;那么,其他處理引擎則介于兩者之間,是不同比例軟硬件的混合態(tài)。因此,CPU、GPU、DSA等各種類型的處理器,本質(zhì)上是在不同層次的軟硬件解耦基礎(chǔ)上的軟硬件再協(xié)同。
計(jì)算架構(gòu),從同構(gòu)計(jì)算走向異構(gòu)計(jì)算;再?gòu)漠悩?gòu)計(jì)算,走向更多異構(gòu)相互協(xié)作的異構(gòu)融合計(jì)算。異構(gòu)計(jì)算僅有一種加速處理器類型,僅關(guān)注CPU和加速處理器的協(xié)同;而異構(gòu)融合計(jì)算,具有兩種或兩種以上的加速處理器類型,關(guān)注的重心在于所有處理器之間的協(xié)同和融合。異構(gòu)融合計(jì)算中的協(xié)同,指的是系統(tǒng)的工作由兩個(gè)或兩個(gè)以上處理器協(xié)作處理,協(xié)作可以是CPU和CPU之間的協(xié)作,也可以是CPU和加速處理器之間的協(xié)作,還可以是加速處理器和加速處理器之間直接協(xié)作。
異構(gòu)融合計(jì)算中的融合,指的是某個(gè)具體工作任務(wù)可以跨CPU、GPU和DSA等不同類型處理器運(yùn)行,也可以跨同類型中的不同架構(gòu)處理器運(yùn)行。
以Intel的XPU和OneAPI為例。XPU它不是一個(gè)新的處理器或產(chǎn)品,而是一個(gè)架構(gòu)組合,包括CPU、GPU、FPGA 和其他加速器。OneAPI是Intel構(gòu)建的一套開(kāi)源的跨平臺(tái)編程框架,底層可以運(yùn)行CPU、GPU、FPGA或其他DSA加速器,通過(guò)OneAPI為應(yīng)用提供一致性的編程接口,使得應(yīng)用能夠輕松實(shí)現(xiàn)跨平臺(tái)復(fù)用。
4 斜向,軟硬件跨計(jì)算節(jié)點(diǎn)融合
隨著算力需求越來(lái)越高,而單芯片算力提升有限,通過(guò)Scale Out實(shí)現(xiàn)的分布式集群計(jì)算越來(lái)越成為主流。計(jì)算系統(tǒng),不再是基于單個(gè)芯片、單個(gè)設(shè)備,而是基于數(shù)以百計(jì)甚至千計(jì)的計(jì)算節(jié)點(diǎn)的計(jì)算集群。甚至,計(jì)算系統(tǒng)還要進(jìn)一步擴(kuò)展,計(jì)算需要跨集群,跨不同位置,進(jìn)而擴(kuò)展到跨云網(wǎng)邊端。
一方面,底層的芯片,需要有非常多異構(gòu)架構(gòu)的處理器引擎,同時(shí)支持異構(gòu)融合計(jì)算。另一方面,上層的計(jì)算集群需要跨云邊端,實(shí)現(xiàn)云邊端硬件計(jì)算平臺(tái)的融合,軟件可以非常方便地在云邊端不同的計(jì)算節(jié)點(diǎn)動(dòng)態(tài)自由遷移。
同時(shí),為了更好的支撐宏觀的跨云邊端融合計(jì)算,微觀的芯片也需要做很多調(diào)整。以異構(gòu)融合計(jì)算處理器單芯片HCU為例,其和傳統(tǒng)的SOC在功能特征方面存在很多的不同:
- 區(qū)別1:?jiǎn)蜗到y(tǒng)vs分布式混合多系統(tǒng)。在SOC中,系統(tǒng)和芯片一一匹配。而HCU:需要通過(guò)集群協(xié)作來(lái)完成任務(wù);單個(gè)HCU硬件上會(huì)運(yùn)行多個(gè)不同的軟件系統(tǒng)和任務(wù);多個(gè)宏觀的分布式大系統(tǒng),混合交叉地運(yùn)行在多個(gè)HCU上。
- 區(qū)別2:弱虛擬化vs硬件原生虛擬化。虛擬化是HCU和傳統(tǒng)SOC最核心的能力區(qū)別。SOC面向單個(gè)系統(tǒng),通常不需要支持虛擬化;有的SOC中的嵌入CPU核支持虛擬化,但虛擬化的性能損耗較高。HCU不僅僅需要嵌入式CPU、內(nèi)存的完全硬件虛擬化,其他I/O和加速卡也需要實(shí)現(xiàn)完全的硬件虛擬化。
- 區(qū)別3:軟硬件一體vs軟硬件分離。SOC中的軟件通常附著于硬件之上,兩者是匹配的關(guān)系。HCU上的軟件和硬件沒(méi)有直接的關(guān)系。軟件可以運(yùn)行在硬件A,也可以運(yùn)行在硬件B,也可以運(yùn)行在任何其他硬件之上。軟件在不同硬件資源上的運(yùn)行和遷移是完全動(dòng)態(tài)的,并且從宏觀角度看,是非常頻繁的。
- 區(qū)別4:控制驅(qū)動(dòng)vs數(shù)據(jù)驅(qū)動(dòng)。傳統(tǒng)計(jì)算,是以CPU為核心的控制流驅(qū)動(dòng)模式。而未來(lái),隨著數(shù)據(jù)量的增大,數(shù)據(jù)流驅(qū)動(dòng)計(jì)算的架構(gòu)變成算力的主力擔(dān)當(dāng)。
- 區(qū)別5:軟件的多異構(gòu)協(xié)同vs硬件的多異構(gòu)融合。SOC僅僅是異構(gòu)的集成,而HCU則需要實(shí)現(xiàn)異構(gòu)的融合。
- 區(qū)別6:軟件可編程vs多層次可編程。SOC里,其他加速器通常是ASIC層次的,只有嵌入式CPU能支持軟件編程的。而在HCU里,可編程能力要更加豐富一些:DSA、GPU和CPU等多個(gè)層次的軟件可編程。
- 區(qū)別7:資源確定vs資源彈性可擴(kuò)展。在SOC內(nèi)部,除了CPU可以支持可擴(kuò)展外,其他模塊基本上都是性能確定的設(shè)計(jì),無(wú)法支持資源的擴(kuò)展能力。在HCU里,每個(gè)計(jì)算資源,甚至I/O資源,都支持多個(gè)層次的資源可擴(kuò)展能力。
- 區(qū)別8:定制Chiplet vs原生支持Chiplet。SOC中的Chiplet設(shè)計(jì),通常需要針對(duì)性地設(shè)計(jì)若干個(gè)小芯粒。HCU采用資源彈性擴(kuò)展的設(shè)計(jì),可以輕松實(shí)現(xiàn)基于Chiplet的不同規(guī)格HCU芯片。
- 區(qū)別9:設(shè)計(jì)規(guī)模小 vs 設(shè)計(jì)規(guī)模數(shù)量級(jí)提升。傳統(tǒng)SOC架構(gòu)所能支撐的系統(tǒng)規(guī)模逐漸逼近上限。HCU采用可擴(kuò)展的分布式系統(tǒng)架構(gòu)設(shè)計(jì),每個(gè)子系統(tǒng)相當(dāng)于一個(gè)SOC系統(tǒng)。HCU可駕馭的系統(tǒng)規(guī)模可以做到SOC的10倍甚至100倍。
- 區(qū)別10:專用vs通用。SOC是針對(duì)特定的場(chǎng)景,定制開(kāi)發(fā)的芯片。HCU面向的是通用的、綜合的復(fù)雜計(jì)算場(chǎng)景,定位在以不變應(yīng)萬(wàn)變。
5 貫穿全局,通用計(jì)算,性能和靈活性的極致均衡
性能和靈活性是一對(duì)矛盾:一方面,隨著系統(tǒng)規(guī)模和復(fù)雜度的上升,系統(tǒng)對(duì)靈活性的要求也越來(lái)越高;而另一方面,系統(tǒng)對(duì)性能的要求越來(lái)越高,越需要專用優(yōu)化的加速處理器來(lái)優(yōu)化性能,進(jìn)而使得系統(tǒng)的靈活性越來(lái)越低。
每個(gè)處理引擎都有優(yōu)勢(shì),也有劣勢(shì)。通過(guò)單兵作戰(zhàn),只能“權(quán)衡”;但通過(guò)“團(tuán)隊(duì)協(xié)作”的異構(gòu)融合計(jì)算,每個(gè)處理器做自己最擅長(zhǎng)的工作,從而實(shí)現(xiàn)優(yōu)勢(shì)互補(bǔ),把性能和靈活性都拉扯到極致。軟硬件融合,強(qiáng)調(diào)的是,如何在確保系統(tǒng)靈活性的前提下,實(shí)現(xiàn)最極致的性能。我們給出的解決方案是:通過(guò)更多異構(gòu)處理器的深度協(xié)作,通過(guò)團(tuán)隊(duì)合作,實(shí)現(xiàn)整體最優(yōu)。
- 一方面,依據(jù)依據(jù)靈活性特征,把系統(tǒng)分為基礎(chǔ)設(shè)施層、彈性加速層、業(yè)務(wù)應(yīng)用層。
- 另一方面,針對(duì)上述三個(gè)層次,采用最符合每一層次系統(tǒng)靈活性特征的處理器?;A(chǔ)設(shè)施層通常采用DSA,彈性加速層通常采用GPU,而業(yè)務(wù)應(yīng)用層通常采用CPU。通過(guò)上述三類處理器,讓處理器的靈活性恰恰好的符合工作任務(wù)靈活性的要求,從而確保性能和靈活性的極致。
此外,性能和靈活性的平衡仍在動(dòng)態(tài)變化??赡茈S著系統(tǒng)的發(fā)展,有的任務(wù)會(huì)“上浮”,越來(lái)越需要更多靈活性;有的任務(wù)會(huì)“下沉”,靈活性要求逐步降低,可以通過(guò)更高效的硬件加速來(lái)極致的提升性能。