首先,2月7日是春節(jié)后第一個工作日,祝大家在新的一年里,技術(shù)進步,事業(yè)高升!
國家發(fā)改委等四部門聯(lián)合發(fā)布《全國一體化大數(shù)據(jù)中心協(xié)同創(chuàng)新體系算力樞紐實施方案》,提出在京津冀、長三角、粵港澳大灣區(qū)、成渝以及貴州、內(nèi)蒙古、甘肅、寧夏建設(shè)全國算力網(wǎng)絡(luò)國家樞紐節(jié)點,啟動實施“東數(shù)西算”工程,構(gòu)建國家算力網(wǎng)絡(luò)體系。
當前,算力已成為全球戰(zhàn)略競爭新焦點,是國民經(jīng)濟發(fā)展的重要引擎,全球各國的算力水平與經(jīng)濟發(fā)展水平呈現(xiàn)顯著的正相關(guān)。在2020年全球算力中,美國占36%,中國占31%,歐洲和日本分別占11%及6%。近年來,美國、歐洲、日本紛紛制定行動計劃,不斷運用算力助推經(jīng)濟增長。
“數(shù)據(jù)、算法、算力”是數(shù)字經(jīng)濟時代核心的三個要素,其中算力是數(shù)字經(jīng)濟的物理承載。這,我們通過“預(yù)見·第四次算力革命”系列文章(共四篇),從微觀到宏觀,詳細分析跟性能和算力相關(guān)的各個因素以及主流的算力平臺,盡可能的直面當前算力提升面臨的諸多挑戰(zhàn)和困難,展望面向未來的算力發(fā)展趨勢。這四篇文章為:
預(yù)見·第四次算力革命(一):算力綜述;
預(yù)見·第四次算力革命(二):三大主流計算平臺CPU、GPU和DSA;
預(yù)見·第四次算力革命(三):面向未來十年的新一代計算架構(gòu);
預(yù)見·第四次算力革命(四):宏觀算力建設(shè)。
本文為第一篇,歡迎關(guān)注公眾號,閱讀歷史以及后續(xù)精彩文章。
1 基礎(chǔ)知識
1.1 摩爾定律失效?
上世紀80/90年代,CPU性能狂飆,每18個月,CPU性能就會翻倍,這就是著名的摩爾定律。如今,CPU性能提升,每年只有不到3%,要想性能翻倍,需要20年??梢哉f,基于CPU的摩爾定律已經(jīng)失效,行業(yè)進入了后摩爾時代。但是摩爾定律賦予行業(yè)的意義遠不止這些。
數(shù)字經(jīng)濟時代來臨,各種各樣的應(yīng)用都需要強大的算力支撐。不管是從單個設(shè)備的角度,還是萬千設(shè)備組成的宏觀算力的角度,都需要持續(xù)不斷的算力,來支撐數(shù)字經(jīng)濟的繁榮發(fā)展。可以說:用戶“需求”的驅(qū)動,需要摩爾定律繼續(xù)有效。
對消費者來說,摩爾定律意味著當前購買的電子設(shè)備性能會比一年前有非常顯著的提升,摩爾定律是到了時間自然而然、輕輕松松就會發(fā)生的事情。而對行業(yè)從業(yè)者來說,摩爾定律是整個行業(yè)的KPI,代表了殘酷的競爭法則:一個公司或產(chǎn)品,如果能達到或超過摩爾定律,就能夠生存;反過來,如果達不到,就只能走向消亡。
站在算力的角度,摩爾定律一直在驅(qū)趕著行業(yè)中的你我:前進!前進!前進!
1.2 馮·諾依曼架構(gòu)過時?
馮·諾依曼架構(gòu)模型是計算機系統(tǒng)的經(jīng)典模型,簡單說,就是一個計算機系統(tǒng)包括輸入、處理和輸出三個部分。處理部分有控制單元、計算單元和數(shù)據(jù)暫存(內(nèi)存),處理部分的控制單元和計算單元組成大家通常理解的中央處理單元CPU。
根據(jù)馮·諾依曼架構(gòu),可以繪制出一個典型服務(wù)器的模型。一個服務(wù)器,由核心的處理邏輯、分層級的寄存器、緩存、內(nèi)存、本地外存四級的暫存存儲(云服務(wù)器本地存儲也是暫存,關(guān)鍵的數(shù)據(jù)必須存儲到遠程存儲集群)、以及通過網(wǎng)絡(luò)的輸入/輸出三部分組成。
站在處理器中處理邏輯部分的角度,不管是從各級暫存還是從網(wǎng)絡(luò)I/O,都是數(shù)據(jù)的輸入/輸出。因此,計算模型就可以簡單的分為兩部分:數(shù)據(jù)處理和數(shù)據(jù)輸入輸出。并且,系統(tǒng)的性能 = 最小值(數(shù)據(jù)處理能力,數(shù)據(jù)輸入/輸出能力)。
近些年來,行業(yè)內(nèi)有一種說法:馮·諾依曼架構(gòu)已經(jīng)過時。因此,需要打破馮·諾依曼架構(gòu),例如近年來非?;鸨拇嫠阋惑w化。但這些說法,其實是對馮·諾依曼架構(gòu)的誤解。
馮·諾依曼架構(gòu)本身很簡單,只是后來,為了更大規(guī)模的計算,才逐漸形成了復(fù)雜的存儲分層結(jié)構(gòu)。計算和I/O之間的不匹配導(dǎo)致了復(fù)雜的存儲分層結(jié)構(gòu),而復(fù)雜的存儲分層結(jié)構(gòu)一方面增加了功耗,另一方面限制了性能的進一步提升。
于是,架構(gòu)設(shè)計開始往回走,存算一體化反對的只是復(fù)雜的存儲分層結(jié)構(gòu),而不應(yīng)該是馮·諾依曼架構(gòu)。存算一體化,更加簡單直接的解決I/O和計算處理性能匹配的問題。但是,并沒有改變馮·諾依曼架構(gòu)的本質(zhì)。
2 與性能相關(guān)的三個因素
我們舉個形象的例子:
團隊A的每個工人可以在單位時間里加工5個零件,團隊B的每個工人在單位時間里可以加工8個零件。
團隊A的單位時間是3分鐘,這意味著團隊A一個小時可以有20個單位時間;團隊B的單位時間是5分鐘,這意味著團隊B一個小時擁有12個單位時間。
團隊A有10個人,團隊B有20個人。
這意味著:在一個小時里,團隊A可以完成1000個零件的加工,而團隊B則可以完成1920個零件的加工。
這里說的性能,指的是單位處理器的性能。衡量一個處理器的性能,通常有三個因素:
“指令”復(fù)雜度,類比于例子中單位時間加工的零件數(shù)量,指的是單個指令中計算的密度。
運行速度,即運行頻率,類比于例子中一個小時的單位時間數(shù)量,指的是1秒鐘時鐘周期變化的數(shù)量。
并行度,則類比于例子中團隊的成員數(shù)量,指的是多個并行的處理。
也可以簡潔明了的用公式表示性能和三者的關(guān)系:
(單個處理器的)性能 = 指令的復(fù)雜度(單位計算密度) x 頻率 x 并行度
2.1 “指令”復(fù)雜度
CPU是硬件,基于CPU運行的程序是軟件;GPU是硬件,基于GPU運行的程序是軟件。那么CPU和GPU的差別在哪里?
CPU(不考慮協(xié)處理器)支持的指令稱為通用指令,包括整形計算類、浮點類、數(shù)據(jù)傳輸類、控制類等。
相比通用指令,一些復(fù)雜類指令(復(fù)雜類指令需要復(fù)雜的硬件邏輯來處理),則需要專用的硬件處理單元。比如SIMD(單指令流多數(shù)據(jù)流,Single Instruction Multiple Data)類和MIMD(多指令多數(shù)據(jù)流,Multiple Instruction Multiple Data)類指令,則可能是在GPU運行。
對硬件加速單元(Accelerator,從設(shè)計架構(gòu)的角度也就是ASIC)來說,“指令”則是對算法的一次處理。例如DES算法設(shè)計,其“指令”為一次64bits DES計算。CPU對DES的一次處理需要上百條指令,而在DES硬件加速器這里,只需要一條“指令”,可見DES硬件加速器“指令”的復(fù)雜度遠大于CPU指令的復(fù)雜度。
指令是軟件和硬件的媒介,指令的復(fù)雜度(單位計算密度)決定了系統(tǒng)的軟硬件解耦程度。按照指令的復(fù)雜度,典型的處理器平臺大致分為CPU、協(xié)處理器、GPU、FPGA、DSA、ASIC。任務(wù)在CPU運行,則定義為軟件運行;任務(wù)在協(xié)處理器、GPU、FPGA、DSA或ASIC運行,則定義為硬件加速運行。
魚和熊掌不可兼得,指令復(fù)雜度和編程靈活性是兩個互反的特征:指令越簡單,編程靈活性越高,因此我們才說軟件有更高的靈活性;指令越復(fù)雜,性能越高,因此而受到的限制越多,只能用于特定場景的應(yīng)用,其軟件靈活性越差。
一個系統(tǒng),必然經(jīng)過前期快速迭代,后期逐漸穩(wěn)定的過程。因此,系統(tǒng)運行的處理器平臺選擇也必然有如下的一些規(guī)律:
CPU通用軟件平臺:當一個新的應(yīng)用出現(xiàn)的時候,最早出現(xiàn)的一般是軟件實現(xiàn)。一來實現(xiàn)所需要的代價較少,可以快速實現(xiàn)想法;二來CPU所提供的靈活性,不考慮性能的情況下,使之幾乎可以處理任何場景的任務(wù)。
協(xié)處理器擴展指令加速平臺:隨著技術(shù)的演進,對性能提出了一些要求。這個時候,可以針對一些比較消耗CPU資源的程序進行一定的編程和編譯優(yōu)化。
GPU向量及并行加速平臺:更進一步的,技術(shù)廣泛應(yīng)用,并且我們能從算法中尋找到更多的并行性。這個時候,我們就可以找一些專用的處理器,如GPU、DSP、NPU等,來處理。通過特定的并行優(yōu)化以及支持向量(SIMD)、多指令并行(MIMD/VLIW)等復(fù)雜指令編譯優(yōu)化的方式,深度的優(yōu)化性能。
FPGA硬件可編程加速平臺:隨著技術(shù)越來越成熟,應(yīng)用的規(guī)模越來越大。也越來越消耗資源。這個時候,我們值得花費更多的精力,提煉出復(fù)雜度非常高的算法(或者可以當作一個非常復(fù)雜的“指令”)然后通過硬件邏輯實現(xiàn)。再通過FPGA硬件可編程的方式快速落地。
DSA/ASIC定制加速平臺:再進一步的,技術(shù)更加成熟穩(wěn)定,應(yīng)用規(guī)模足夠龐大,這個時候就非常有必要為此場景定制開發(fā)DSA/ASIC,來達到最優(yōu)的性能、最低的成本、最小的功耗。
需要注意的是,性能和靈活可編程能力是矛盾的兩面。當我們通過定制硬件加速器的方式來獲得性能提升,同時也就意味著放棄了軟件應(yīng)有的靈活性。
特別是復(fù)雜場景,對靈活性的要求更甚于對性能的要求,這樣的場景需要花費更大的代價,實現(xiàn)靈活可編程能力的同時,提供非常好的性能。
從軟件到硬件的一個經(jīng)典的例子就是比特幣,其激烈而快速的完成了從CPU到ASIC的過渡。比特幣使用的技術(shù)區(qū)塊鏈核心算法是SHA-256,它在各個平臺上的性能對比如下:
CPU:最開始的時候,大家使用CPU挖礦,一臺高端個人電腦,處理速度大概20MH/s(H/s, Hash per second);
GPU:后來有人用GPU加速挖礦,SHA-256可以繼續(xù)拆分成普通的算術(shù)邏輯運算,而GPU具有超級多的算術(shù)邏輯運算單元,一個高端顯卡的處理速度可以達到200MH/s;
FPGA:再后來出現(xiàn)了定制SHA-256算法硬件邏輯的FPGA加速卡來挖礦,精心設(shè)計的定制電路的FPGA,可以使運算速度達到1GH/s;
ASIC:而比特大陸公司2015年發(fā)布的ASIC礦機芯片BM1385,其性能達到單顆芯片算力可達32.5GH/s。
2.2 運行頻率
(a) 組合電路示例
(b) 數(shù)字電路中的關(guān)鍵路徑
圖 運行頻率與電路邏輯的關(guān)系
頻率越高,計算速度越快。不考慮其他因素的制約,計算速度和頻率是正比的關(guān)系。而頻率受電路中的關(guān)鍵路徑(延遲最大路徑)約束,兩者呈反比關(guān)系:關(guān)鍵路徑越短,頻率則越高。如上圖所示,頻率受關(guān)鍵路徑制約,而關(guān)鍵路徑與兩個因素有關(guān):
一個是關(guān)鍵路徑所包含門的數(shù)量,即從前一級寄存器到后一級寄存器之間的最長路徑所包含的邏輯門的數(shù)量;
另一個則是單個邏輯門的延遲時間,邏輯門的延遲時間跟半導(dǎo)體生產(chǎn)工藝相關(guān),一般情況下,工藝尺寸越小,單個邏輯門的延遲越小。
因此,要想優(yōu)化頻率,就是要優(yōu)化關(guān)鍵路徑:一個是優(yōu)化關(guān)鍵路徑的邏輯門的數(shù)量,另一個則是優(yōu)化單個邏輯門的延遲。當邏輯門的延遲越小,或者兩級寄存器之間的邏輯門數(shù)量越少,則頻率越高,計算速度也就越快。
要想減少兩級寄存器間邏輯門的數(shù)量,則需要采用更多級的流水,這樣每一級流水所做的事情越少,所需要的邏輯門也就越少。
要想減小單個邏輯門的延遲,主要有如下辦法:
最立竿見影的就是采用更先進的工藝,當然了,更換工藝需要更多的資金和研發(fā)投入。
另一個辦法是提升工作電壓,提升電壓會降低邏輯門的延遲,但與此同時會提升功耗和發(fā)熱。發(fā)熱過高又會影響到邏輯門的延遲,產(chǎn)生的熱量如果不及時排出,甚至有可能燒壞整個電路。所以,通常是把電壓控制在一個均衡的區(qū)間。
還有一個辦法是做定制的門電路。通常,大家都選擇的是工藝廠商提供的標準庫。如果采用定制門電路,則會在相同工藝下相比別人有更好的性能。例如,在比特幣挖礦芯片行業(yè),在均采用當時最先進工藝的情況下,比特大陸采取全定制電路設(shè)計,獲得相比別人更多的性能優(yōu)勢,使其獲得比特幣挖礦的大部分市場。
2.3 并行度
并行的設(shè)計在硬件邏輯設(shè)計里非常常見。例如:
指令流水線:指令流水線是一種時間并行,在同時有多條指令處理流水線的不同階段,這樣相當于有多條指令在并行處理。
指令多發(fā)射(Multiple Issue):一條流水線,從指令緩沖區(qū)一次發(fā)送到譯碼階段就有多條指令,然后在執(zhí)行階段也是多條指令并行。
超線程(Hyper-Thread):在一個處理器核內(nèi)部,多組不同的指令流處理,分時的共享處理器核內(nèi)部的各種硬件資源,達到更佳的資源利用率,提升整體性能。
多總線:例如,指令、數(shù)據(jù)總線分開,多數(shù)據(jù)總線等設(shè)計,進一步增加處理器的數(shù)據(jù)處理帶寬。
多核技術(shù):通過一些內(nèi)部互聯(lián)總線,把多個處理器核集成到一塊芯片內(nèi),以此來提升綜合性能。
多處理器芯片:受限于芯片工藝、功耗水平、設(shè)計架構(gòu),單芯片內(nèi)的多核互聯(lián)不能無限制增加下去,也可以通過一些芯片間互聯(lián)技術(shù),把多個CPU Socket連成一個NUMA系統(tǒng),當前比較常見的是2-8個Socket互聯(lián)的架構(gòu)。
總線:對并行總線來說,增加數(shù)據(jù)線的寬度,對增加總線的帶寬是顯而易見的,并行總線一般用于芯片內(nèi)部邏輯通信;串行總線,例如PCIe,相比PCI并行總線,一方面可以快速提升頻率,還可以通過很多組串行線組合通信來提升傳輸性能,串行總線一般用于芯片間數(shù)據(jù)通信。
異構(gòu)計算單元:CPU和GPU、xPU以及各種硬件加速器組成異構(gòu)多處理單元共同協(xié)作完成工作任務(wù),CPU更多的是承擔控制和數(shù)據(jù)交互的角色。
多服務(wù)器集群:現(xiàn)在大型的互聯(lián)網(wǎng)系統(tǒng)需要成百上千的服務(wù)器,分為業(yè)務(wù)處理、網(wǎng)絡(luò)處理、存儲和數(shù)據(jù)庫處理等不同功能分工的服務(wù)器,共同組成一個性能強大并且運行穩(wěn)定的系統(tǒng)對外提供服務(wù)。
通過不同方向、不同層次的并行技術(shù),都可以提升硬件系統(tǒng)的性能。我們把不同復(fù)雜度的單位處理都當作了“指令”,那么,我們就可以通過IPC(Instruction per Cycle)來評價并行度。對一個CPU核來說,IPC代表的是每個周期執(zhí)行的指令數(shù);對一個硬件加速模塊來說,IPC則代表了一個周期所能進行的單位處理的數(shù)量。
3 I/O和處理的性能匹配
3.1 優(yōu)化泛義的I/O,形成存儲分層結(jié)構(gòu)
如第一部分內(nèi)容的介紹,數(shù)據(jù)I/O的帶寬和數(shù)據(jù)處理的性能是相互配合的。當兩者不匹配時,兩者之間性能低的那個就代表了整個系統(tǒng)的性能(或者說,性能低的那個托了整個系統(tǒng)的后腿)。
如果計算處理的性能低于I/O性能,則通過提高指令復(fù)雜度、運行頻率和并行度的方式提升處理的性能。
如果I/O性能低于計算處理的性能,則常見的提升I/O(這里的I/O是泛義的I/O,不僅僅是計算機架構(gòu)中的I/O設(shè)備)的方法有:
-
緩存Cache。內(nèi)存訪問延遲無法匹配處理器流水線的處理能力的情況下,緩存Cache得以應(yīng)用,隨后還出現(xiàn)了多級Cache。
-
高速存儲。在存儲HDD不能滿足性能的情況下,切換到Sata SSD,再切換到NVMe SSD,以此來提高存儲I/O。
-
高性能網(wǎng)絡(luò)。不僅僅是因為處理性能的提升。還因為服務(wù)器集群的高可擴展性,以及分布式存儲的廣泛使用,還有整個應(yīng)用逐漸微服務(wù)化,都使得東西向網(wǎng)絡(luò)流量(數(shù)據(jù)中心內(nèi)網(wǎng)流量)激增。因此,需要低延遲并且高吞吐量的網(wǎng)絡(luò)來處理網(wǎng)絡(luò)I/O。
在計算機體系結(jié)構(gòu)里,根據(jù)訪問延遲和容量大小來對計算機存儲分層(Memory Hierarchy),利用程序局部性原理對存儲進行性能優(yōu)化,既可以匹配處理器延遲又可以提供大容量存儲。
圖 計算機存儲分層結(jié)構(gòu)
如上圖所示,只考慮架構(gòu)層面不同存儲層次的功能和作用,可以把存儲結(jié)構(gòu)簡單分為五個存儲級別:
處理器通用寄存器;
各級緩存;
內(nèi)存,ROM及系統(tǒng)RAM等;
本地外部存儲;
遠程外部存儲。
3.2 存儲分層結(jié)構(gòu)瓶頸,新的I/O優(yōu)化
物極必反!
因為優(yōu)化I/O的性能,形成了存儲分層結(jié)構(gòu)。然而復(fù)雜的存儲分層已經(jīng)開始成為問題的瓶頸,主要體現(xiàn)在功耗、延遲和訪問帶寬,也就是我們常說的“存儲墻”和“功耗墻”的問題。
存儲分層結(jié)構(gòu)存在的一個關(guān)鍵原因是程序的局部性。然而,在大數(shù)據(jù)和人工智能時代,大通量計算的場景,再加上服務(wù)器多集群擴展以及微服務(wù)等對計算的拆分,計算開始呈現(xiàn)“高數(shù)據(jù)量低計算量”的特點,程序局部性逐漸失效。再加上各種數(shù)據(jù)處理引擎開始采用DSA甚至ASIC架構(gòu),計算量也在快速上升。這樣如何更好的提供I/O成為整個計算性能的瓶頸。
行業(yè)當前大概有兩個方向的做法:
一個方向是往計算邏輯里放入更多的存儲單元。如增加片內(nèi)內(nèi)存,并且增加各級的訪問帶寬,盡可能的減少層級,以及盡可能不讓中間結(jié)果到下一級存儲,盡可能的讓計算全速進行。
另一個方法則更加極端,直接“反其道而行之”,在存儲體里放計算邏輯,這就是大家現(xiàn)在所說的“存內(nèi)計算”。
總之,兩個方法都是盡可能的讓I/O和計算的性能更加匹配。
4 性能提升的各種方法
前面我們通過跟性能相關(guān)的四個因素(處理引擎性能的三個因素:指令復(fù)雜度、運行頻率和并行度,以及I/O性能匹配)介紹了如何提升性能。接下來,我們介紹一些主要的提升性能的方法。
4.1 工藝封裝的進步
tsmc 5nm已經(jīng)量產(chǎn),3nm工藝已經(jīng)在路上,2nm、1nm也都在未來幾年的路線圖中。并且,tsmc已經(jīng)開始在攻關(guān)0.1nm工藝,半導(dǎo)體工藝即將進入亞納米(埃米)時代。此外,在存儲領(lǐng)域,近些年來還興起了3D封裝技術(shù),使得集成電路從二維進入三維。還有,芯粒(chiplet)機制的出現(xiàn),把多個芯片裸DIE集成到一起,從3D到4D,都進一步增強了單位面積的晶體管集成度。工藝持續(xù)進步、3D堆疊以及Chiplet多Die互聯(lián),使得芯片從2D->3D->4D。這些技術(shù)的進步,意味著在芯片這個尺度,可以容納更多的晶體管,也意味著芯片的規(guī)模越來越大。
過去50年里,工藝進步是推動摩爾定律的主要因素。每隔兩年左右,單個晶體管變得更小、更快、功耗更低。在面積、功耗不變的硅片上,可以放下更多的晶體管。上圖是斯坦福大學的學者在2012年整理的CPU性能提升的示意圖,可以看到,在架構(gòu)不變,僅靠工藝進步,其提升的性能依然是相當?shù)目捎^。可以不夸張的說,工藝進步才是摩爾定律持續(xù)發(fā)揮作用的“主力軍”。
總結(jié)一下,工藝進步主要可以優(yōu)化三個因素:
工藝進步不直接影響處理引擎架構(gòu),也就意味著沒法提升“指令”復(fù)雜度;
由于工藝進步,單個晶體管的速度可以更快,這樣,可以立竿見影的提升頻率;
因為資源足夠富余,可以通過并行多個處理引擎的方式實現(xiàn)更高并行性;
工藝進步,可以內(nèi)部嵌入更多片內(nèi)存儲、通過多DIE互聯(lián)/封裝,進一步優(yōu)化泛義I/O;或者通過3D和chiplet等方式實現(xiàn)更大的系統(tǒng)下的更高的交互性能。
4.2 存算一體化
隨著AI等高算力場景的爆發(fā),業(yè)界迫切需要新技術(shù)來解決算力的瓶頸。存算一體化芯片成為一種重要的選擇。阿里達摩院總結(jié)了存算一體的三種技術(shù)路線:
近存儲計算(Processing Near Memory):計算操作由位于存儲芯片外部的獨立計算芯片完成。
內(nèi)存儲計算(Processing In Memory):計算操作由位于存儲芯片內(nèi)部的獨立計算單元完成,存儲單元和計算單元相互獨立存在。
內(nèi)存執(zhí)行計算(Processing With Memory):存儲芯片內(nèi)部的存儲單元完成計算操作,存儲單元和計算單元完全融合,沒有一個獨立的計算單元。
站在架構(gòu)的視角,近內(nèi)存技術(shù)是一種優(yōu)化內(nèi)存訪問性能的辦法,能夠通過工藝或封裝,提供數(shù)量級提升的內(nèi)存性能。能夠:提高內(nèi)存訪問的性能,降低內(nèi)存訪問的代價,緩解由于數(shù)據(jù)搬運產(chǎn)生的性能瓶頸。
AI、大數(shù)據(jù)處理等應(yīng)用,大數(shù)據(jù)量低計算量。這樣,AI-DSA類的芯片,都有一個大的特點,內(nèi)部有非常大的片內(nèi)存儲(On-chip Memory)。而內(nèi)存儲計算則更加激進,直接是在存儲中放計算處理邏輯。不過在此刻,內(nèi)存和計算處理依然是分開的獨立模塊。
而內(nèi)存執(zhí)行計算,當前主要是用于AI場景,可以認為是一個偏ASIC的設(shè)計。通過模擬計算,把卷積計算和存儲體深度結(jié)合起來。由于模擬計算的精度有限,也由于較定制的設(shè)計,這樣的內(nèi)存計算主要用于終端AI推理場景,或者說對能效比非常敏感的小規(guī)模的嵌入式場景。
總結(jié)一下,存算一體化主要優(yōu)化的是I/O,主要是通過工藝和封裝的設(shè)計和調(diào)整,使得系統(tǒng)能夠更加輕量而高性能的進行存儲訪問。內(nèi)存執(zhí)行計算則相當于定制芯片,可以算作是提高“指令”復(fù)雜度,不過這些要歸屬到接下來要介紹的架構(gòu)的范疇。
4.3 架構(gòu)優(yōu)化和創(chuàng)新
工藝的進步,給架構(gòu)師們提供了更多的資源和發(fā)揮的空間:
總線,從最簡單的單總線到總線開關(guān),再到Ring環(huán)形總線,甚至Mesh網(wǎng)絡(luò),以及基于更加功能強大總線完成的集成越來越多復(fù)雜模塊的超大SOC。
CPU的流水線、多發(fā)射、多級Cache、多核,以及擴展的各類協(xié)處理器;
GPU也從專門的圖形加速卡變成了GPGPU(后續(xù),GPU默認為GPGPU),集成了數(shù)以千計的通用處理核心,成為并行計算的主力平臺。
近些年,興起了DSA的熱潮,進入了體系結(jié)構(gòu)的“黃金年代”。DSA當前的兩個重要特點,一個是更加復(fù)雜的計算引擎,一個是更加龐大的片內(nèi)存儲。
工藝進步提供了更多的晶體管資源,使得大家能夠更加自由的發(fā)揮架構(gòu)創(chuàng)新的價值。工藝發(fā)展和架構(gòu)創(chuàng)新相輔相成:工藝發(fā)展給架構(gòu)創(chuàng)新提供了更多的發(fā)揮空間,而架構(gòu)創(chuàng)新讓工藝的價值落地。
架構(gòu)創(chuàng)新是整個設(shè)計的主導(dǎo),架構(gòu)創(chuàng)新可以從所有四個方面全方位的優(yōu)化整體性能:
“指令”復(fù)雜度,處理引擎選擇CPU、GPU還是其他DSA/ASIC定制設(shè)計,均可以提升指令復(fù)雜度;
通過更優(yōu)化的流水線,每個階段做的事情減少,在同等工藝下,依然可以提升頻率;
通過架構(gòu)上的優(yōu)化,實現(xiàn)在共享資源情況下的并行。比如Hyper-thread并行共享ALU/MAC等執(zhí)行單元,比如多核并行共享三級Cache和內(nèi)存。也包括充分利用資源實現(xiàn)的其他并行機制。
對I/O訪問也需要更多的優(yōu)化。比如總線的非獨占、Outstanding,多總線,還有多通道內(nèi)存、NVMe以及高性能網(wǎng)絡(luò)等等。
5 宏觀的算力
5.1 實際總算力的定義
性能是微觀的概念,代表了單個個體的計算能力。而算力則是宏觀的概念,算力是很多個體的計算能力的總和。為了避免混淆,我們采用總算力的叫法。
在前面我們已經(jīng)介紹了單個個體的性能(在泛I/O不拖后腿的情況下):
(單個處理器的)性能 = 指令的復(fù)雜度(單位計算密度) x 頻率 x 并行度
那么總算力則和單個處理器的性能以及處理器的數(shù)量成正比:
總算力 = (單個處理器的)性能 x 處理器的數(shù)量
雖然總算力可以很高,但如果因為各方面的原因,其利用率不高,則也不夠好。因此:
實際總算力 = 總算力 x 利用率
= 指令的復(fù)雜度(單位計算密度) x 頻率 x 并行度 x 處理器的數(shù)量 x 利用率
5.2 處理器的數(shù)量,實現(xiàn)規(guī)模化
總算力的概念非常的直觀,一方面是單顆芯片的算力要高,另一方面,芯片要被大規(guī)模采用。像CPU、GPU以及DPU這樣的大芯片,只有得到了大規(guī)模的采用,才能真正的發(fā)揮芯片的價值,在商業(yè)上才能做到真正的成功。反之,如果芯片沒有大規(guī)模落地,即使性能太好,一切都是浮云。
那如何做到芯片能夠規(guī)?;兀窟@是一個非常復(fù)雜的問題,涉及到很多方面的因素。如果只考慮核心的架構(gòu)設(shè)計,則是需要在性能和靈活性這兩個矛盾的關(guān)鍵因素達到平衡甚至兼顧。CPU極度靈活,但性能瓶頸;ASIC性能極致,但靈活性差。如何設(shè)計一個均衡的算力平臺,兼顧性能和靈活可編程能力,使得總算力盡可能最高,是一個非常巨大的挑戰(zhàn)。
5.3 算力的利用率,降低成本,普惠大眾
云計算沒有出現(xiàn)的時候,如果我們想部署一套互聯(lián)網(wǎng)系統(tǒng)給大家提供服務(wù),則需要自己購買物理的服務(wù)器,然后租用運營商的機房。整個過程成本很高,而且彈性不足。不知道用戶會有多少,也不知道服務(wù)器應(yīng)該購買多少量,應(yīng)該是10臺還是1000臺。買少了,用戶訪問量快速上升,服務(wù)會掛掉;買多了,如果用不到,浪費錢財資源閑置。超過一定數(shù)量,有可能就需要自己建機房,自己運維硬件。整個業(yè)務(wù)模式很重。
后來,云計算幫助用戶完成了基礎(chǔ)設(shè)施的建設(shè),用戶只需要按需購買。一方面,不需要關(guān)心門檻高而且距離業(yè)務(wù)非常遠的基礎(chǔ)設(shè)施建設(shè)。另一方面,實現(xiàn)完全的按需付費,快速而方面的擴容或者縮容,可以非常明顯的降低運維成本。
再后來,云計算這種集中計算的架構(gòu)其性能挑戰(zhàn)越來越大,于是有了邊緣計算。類似于集中(云計算)和分布(邊緣計算)的關(guān)系,邊緣計算能夠相比云計算提供更低延遲的服務(wù),與此同時,大幅度減輕云的壓力。不過邊緣計算也帶來了一些問題,就是資源規(guī)模小,地域分散,而且運行環(huán)境各異。如何充分利用分散到各處的邊緣計算資源,成為了需要重點解決的事情。
近些年來,宏觀的一些技術(shù)趨勢,比如云網(wǎng)融合、超云(云MSP實現(xiàn)跨云和混合云模式,我們定義為超云)以及國家“東數(shù)西算”戰(zhàn)略等等。本質(zhì)的,都是在通過各種各樣的手段,盡可能的提高算力的整體利用率,以此來降低算力的成本,讓算力變得更加唾手可得。
6 總結(jié)
把相關(guān)的若干因素再總結(jié)一下,要提高宏觀的實際總算力,就必須要:
提高指令的復(fù)雜度(單位計算密度)。新的DSA架構(gòu)創(chuàng)新,均衡的考慮不同的算力平臺,以及通過異構(gòu)和超異構(gòu)計算,融合多種平臺一起協(xié)作,完成系統(tǒng)級計算。
提高運行頻率。優(yōu)化設(shè)計,選擇最優(yōu)的流水線級數(shù)以及工藝等的持續(xù)進步,優(yōu)化系統(tǒng)的運行頻率。
提高并行度。更高的擴展性(Scalibility),更高性能的各層級的互聯(lián)總線,并行更多的處理引擎。
優(yōu)化I/O和處理的匹配度。通過工藝和封裝優(yōu)化,實現(xiàn)更加匹配的計算和I/O匹配。
實現(xiàn)處理器芯片的更大規(guī)模落地。均衡芯片的整體性能和靈活可編程能力,實現(xiàn)宏觀的總算力最大化。
進一步優(yōu)化宏觀算力的利用率。算力上規(guī)模后,通過云計算、邊緣計算、超云、云網(wǎng)融合等手段,持續(xù)優(yōu)化算力的利用率,降低算力的成本。
簡單一些的說,算力提升核心就兩個方面:
一個是增大規(guī)模(Scale out),通過擴大算力基礎(chǔ)設(shè)施建設(shè),以及“東數(shù)西算”等方式,構(gòu)建更加規(guī)模龐大并且低能耗的現(xiàn)代化數(shù)據(jù)中心。
另一個是提升單個計算節(jié)點的性能(Scale up),構(gòu)建新一代的創(chuàng)新計算范式,要把算力再持續(xù)提升1-2個數(shù)量級,并且能夠提供非常好的易用編程能力,來持續(xù)應(yīng)對未來10年的更加復(fù)雜系統(tǒng)的算力需求爆炸的挑戰(zhàn)。
參考文獻:
https://www.stcn.com/xw/sd/202201/t20220118_4085409.html,數(shù)字基建大工程啟動,“西算”四大樞紐節(jié)點獲批
https://mp.weixin.qq.com/s/cWS4YeIlUEm1dexjgN8f-w,鄔賀銓院士:算力如何賦能未來世界?
https://mp.weixin.qq.com/s/_0_uwuCuKnMiuZM_jvYnaw, 性能提升10倍以上:阿里達摩院成功研發(fā)新型存算一體芯片
- CPU DB: Recording Microprocessor History, by Andrew Danowitz, Kyle Kelley, James Mao, John P. Stevenson, and Mark Horowitz, http://cpudb.stanford.edu/p55-danowitz.pdf