首頁 > 運動

老黃經歷的慘痛失敗,與英偉達的“反脆弱”式崛起

由 芯流TechFlow 發表于 運動2022-12-30

簡介英偉達的登頂之路把頂點計算從CPU移出來之前,CPU計算出頂點座標之後,還要去生成很多三角形,然後再做一些左側的指令發給GPU,GPU再去做這些東西

支援的持字怎麼寫的

老黃經歷的慘痛失敗,與英偉達的“反脆弱”式崛起

英偉達所經歷的失敗次數,比英特爾、AMD加起來都要多。

縱觀過去近三十年,英偉達是激進的、喜歡嘗試新鮮事物的,也容易因為失敗顯得脆弱。但是,英偉達最近三年的市值,絕大多數時候,比英特爾和AMD加起來還要多,這是為什麼?

芯流智庫的主編楊健楷,邀請了張江高科的投資經理——呂昕,一個遊戲機愛好者,一個資深的晶片行業研究者,請他為我們講下,英偉達是怎樣煉成的?以及,反脆弱的法則,在晶片行業如何有效?

【主播】

楊健楷,芯流智庫主編。

【嘉賓】

呂昕,張江高科投資經理,遊戲機愛好者,對GPU等大晶片行業有著深入研究。

本文分為三個部分:

1。 GPU發展早期的主宰者——遊戲機市場

2。 英偉達的登頂之路

3。 大規模平行計算的路線之爭

以下為正文:

老黃經歷的慘痛失敗,與英偉達的“反脆弱”式崛起

GPU發展早期的主宰者——遊戲機市場

芯流智庫:

關於GPU,我們著重去講一個問題——英偉達為什麼最終能夠從GPU市場的慘烈競爭中勝出,並且佔據了絕對的優勢性地位?

呂昕:

這個問題,有兩條暗線。

第一條是微軟,微軟在圖形或者GPU行業,起到了一個非常關鍵的作用。

第二條,是大規模平行計算的趨勢。

只有我們把這兩條暗線透過看歷史,把它弄明白了,才能夠更好地回答,為什麼GPU會走到今天的態勢。

芯流智庫:

我們還是回到牽引GPU發展的一個很重要的市場——遊戲機。從遊戲機市場的角度去講它的脈絡。

英偉達在市場上面的優勢,主要是PC——個人電腦。但其實在很長一段時間裡面,真正牽引GPU發展的,是遊戲主機。說到遊戲主機的話,就要說到90年代的索尼了。

呂昕:

是的。我們聊GPU開始發展的階段的時候,都會談S3這些比較老的圖形處理器廠商。但那個年代,真正在民用圖形技術佔據高地的,並不是這些做GPU或者做PC顯示卡的廠商,反而是日本廠商,

呂昕:

我們這裡也簡單回顧一下當時的遊戲機的一個GPU生態。其實嚴格上來說,比如像PS1,PS2,兩個非常成功的索尼遊戲機,是沒有GPU的。它們只有一個性能很強的CPU,加上一個類似於協處理器的影象處理的單元。

它們的設計思路是依靠浮點能力很強、同時引入專用加速單元的CPU去完成大部分的圖形計算工作。然後依靠協處理器做一些畫素著色、渲染,或者實現一些固定特效。這在很長一段時間是圖形技術的主流實現方式。

而PC方面,那個時候也在爭論,“到底是用CPU來去做所有or大部分的圖形計算?還是弱化CPU的功能,把圖形交給另一個處理單元?”

當時像英特爾為代表的CPU廠商,覺得說CPU承擔工作越多越好。

也就是以世嘉,索尼,任天堂為代表的遊戲機廠商。

比如說,《三角洲特種部隊》,它就是完全不需要GPU,用CPU完成了所有的圖形運算。

因此,在早期,“GPU到底能幹什麼”,“它到底是被整合在CPU裡面還是獨立出來”,當時沒有定論。

此時,微軟敏銳地發現了行業的一個商機。因為越來越多人開始用PC,而PC除辦公之外,還有遊戲功能。但這些遊戲的3D效果沒有辦法跟PS 2對比。

當時英特爾的想法,是類似日系廠商在遊戲機硬體設計上的想法。所以當時有不少遊戲是不需要GPU的。

這樣,我們就回到第一條暗線——微軟的推動。

大家可能對微軟的第一印象是電腦作業系統,部分喜歡玩遊戲的人可能會對他的Xbox遊戲機很有印象。但其實,微軟對消費領域有個很大的貢獻,就是direct x——一種圖形的API介面。

當時微軟想到了一個辦法,就是把大量的圖形的功能,從CPU裡移植出來放到GPU上。透過這種方法讓GPU的效能強起來,然後負擔更多的工作,也希望透過這種方式去推動行業的發展,反過來去鞏固他自己在PC端的地位。

在它剛剛誕生的時候,還是很原始的一個東西,沒有什麼人去用它。那時候整個民用行業的關於圖形應用方面的話語權,都在日本遊戲廠商的手裡。而direct x,它的早期版本圖示是一個核彈(內部代號叫曼哈頓計劃),寓意也很明顯,從日本人手裡把圖形方面的制高點拿下來。

direct x把市面上各種各樣的硬體統一起來,提供了一個標準的API,讓開發者們能夠更好地呼叫這些GPU的硬體效能,而不必耗費大量精力在相容性上。

也就是說,原來遊戲主機市場的強有力的參與者,主要是日本廠商。

芯流智庫:

早期的都是日本廠商統治。微軟想把市場、標準,甚至以後的前沿技術,都攥在自己手裡,所以微軟推出了direct x。

呂昕:

DX7之前的GPU,專門做填充顏色,把一些CPU計算好模型,做一個簡單的著色。實際上圖形從頂點到多邊形的生成,這種運算全部由CPU來做。但是,微軟在API裡面,把頂點計算,多邊形生成的很大一部分工作解除安裝下來了,給了GPU,使得GPU有更大的作用。

當時大家覺得這只是一個簡單的解除安裝,只要CPU變得很強,一樣可以做。

呂昕:

換句話而言,透過一個很複雜的,效能很強的CPU去渲染3D影象,在成本和技術上實現都有困難。這些工作必須由GPU承擔。

GPU也是在這種背景下慢慢走向舞臺的。

後來direct x在DX7版本的時候,做了一件大事,這件事情決定了現代意義上的GPU的誕生。

Xbox本質上是一臺PC,它是用Intel的奔騰3處理器加上英偉達的顯示卡組成了一臺遊戲機,所以它本質上是臺PC。

它的架構,跟當時所有的日系主機是完全不同的。日系主機的CPU很強,GPU只是一個協處理器單元,大部分的開發工作都是放在CPU上。而Xbox的CPU、GPU各司其職,類似於我們現在的PC架構。

當時還看不出來有什麼差異,很多人都覺得日系廠商代表的思路更先進,因為效能強。但是,隨著兩者在程式設計難易性,以及資源利用效率等方面拉開差距,情況發生了轉變。

但是後來,隨著應用越來越複雜,實現的特效越來越多,往CPU裡面塞入更多的浮點加速單元,跟上DX新版本的要求,已經越來越難了,這時候GPU的重要性就凸顯出來了。

英偉達做過很多錯事,在跟微軟深度繫結之前,英偉達喜歡支援一些自有或者說不夠主流的標準,後來產品失敗了。

英偉達發現這條路走不通之後,發現微軟在搞direct x的通用標準。所以英偉達在Dx7的時候,義無反顧地支援了微軟的協議,這件事是非常關鍵的。回顧老黃的策略,他跟微軟是綁在一條戰車上。微軟每一次API的大改動,老黃都是第一時間去支援的。

英偉達透過硬體和API的高度繫結,跟隨著PC的浪潮逐漸起來了。

老黃經歷的慘痛失敗,與英偉達的“反脆弱”式崛起

為什麼微軟是推手?第二個點在於微軟當時做了一件事,就是推出了Xbox遊戲機。

DX7時代開始,英偉達和微軟深度繫結。

微軟把頂點處理的一些任務挪到了GPU上。那頂點處理是什麼?為什麼把這些任務放到GPU上,可程式設計性和資源利用效率會出現很大的提升?

英偉達的登頂之路

把頂點計算從CPU移出來之前,CPU計算出頂點座標之後,還要去生成很多三角形,然後再做一些左側的指令發給GPU,GPU再去做這些東西。

而轉移之後,相當於說CPU只要告訴GPU座標點在哪裡,剩下的交給GPU自己去做就好了。在剛剛開始分離的時候,效率沒有太大的提升。

那個時候,英特爾堅持認為所有圖形應該交給CPU來做。但是這背後有兩個點。

芯流智庫:

尤其在摩爾定律還在高速前進的情況下,一個不斷膨脹臃腫的CPU,在成本、功耗還有靈活性上,遠不如一個小CPU加上一個GPU的組合搭配。

呂昕:

CPU和GPU很多東西是是不一樣的。那麼GPU可以專注的去做一些處理的時候,就可以使其效能、架構靈活性,隨著行業生態以及程式設計API等不斷去修改,去提升。

在dx 7引入光影座標轉換技術後,dx 8也發生了一個很關鍵的事情。微軟在GPU API裡面引入了法線貼圖,以及可程式設計著色器。

可程式設計著色器,就是讓開發者自己去定義著色器的一些工作。它的每一個渲染管線是可以有一定的程式設計能力的,那一旦走到這一步,CPU就沒辦法承受了。

呂昕:

在dx 8之後,行業已經預設CPU沒有辦法再完全承擔3D圖形渲染的任務。如果你想玩遊戲,或者說想從事一些3D工作的話,GPU是必須的。

第一個點,半導體行業,兩個小晶片比一個大晶片便宜。

法線貼圖,還有可渲染程式設計著色這兩個功能,為什麼會讓CPU難以承受?

第二點,用黃仁勳自己的話來說,就是能夠更focus,更專注。

CPU也好,GPU也好,這兩個功能都需要你在處理器的執行單元額外加入電晶體,因此芯片面積要變得更大。

因為CPU本來就為了追求單核效能和靈活性,如果再去加入這種能夠支援可程式設計管線或者支援法線貼圖的專用單元,CPU會越來越臃腫,這是沒有辦法被下游接受的。

。今天我們說顯示卡,AI比較火,很多人就問浮點計算能力到多少?

在圖形渲染中,最常見的是單精度浮點。遊戲特效越來越酷炫的時候,對浮點的需求是成指數級增長的。我們可以去看GPU的浮點理論算力的一個增長,有時候甚至比摩爾定律翻倍還要快。

而浮點增長的背後都需要增加對應的ALU,比如說1000個流處理器,假如每個週期可以做兩個操作,然後他跑在1Ghz頻率下,它就能夠跑出2tflops的浮點運算能力。但,就算直到今天7奈米的時代,把1000個流處理器整合到一個CPU裡面,還是一個非常佔面積、很費力的事情。

而且1000個流處理器放在CPU裡面,表現出來的效能只是獨立GPU入門級的水平。

當然,想透過大幅度增加CPU效能繼續負擔圖形渲染的思路,也是有的。最典型的就是有人號稱“模擬地球的Cell”,PS3上用的處理器。

這顆處理器非常奇葩,完全沿襲了日本人過去十幾年對於圖形行業的理解,就是一顆CPU加入足夠多的浮點單元和加速單元,可以實現各種各樣的計算功能。他們當時號稱處理器能夠“模擬地球”,能做任何事情。但是,這條思路至少在那個年代沒有走通。

一個是因為晶片太複雜了,開發難度太大了,還有一個就是因為它塞了這麼多東西,它的處理器很臃腫,它的成本也太高,最後的表現並不盡如人意。

芯流智庫:

那像後面對比的話,GPU方案是怎麼最佳化你剛才所說的那些工作的。比如可程式設計技術?

呂昕:

從dx 7到dx 8,只能說GPU初具成型。然後dx 9,尤其dx9。0c,這其實是一個非常好的一個標準,、理論上來說,在DX9。0C下你可以實現任何一種特效。

但實際上,這個標準並沒有大家想象的那麼好。如果我們今天回頭去看DX9,當時遊戲主要是依靠美工,並沒有支援很多特效。主要的原因,就是GPU靈活性不是很強,本質上還沒有跳脫出暴力的“紋理填充”機器的範疇。

在direct 10,微軟又一次推動了行業,引入了“統一渲染”。

比如說我們渲染一個畫面,本質上是兩個步驟,第一,繪製出頂點,頂點用來繪製三角形,然後繪製每個模型。第二,要給這些頂點繪製出來的部分上色,或者做一些渲染。

呂昕:

這兩個東西在direct 10之前,是分開來的。本來是一種很合理的方案,讓專門的單元做專門的事情。但實際上,在遊戲渲染過程中會碰到很多情況——有的時候他需要頂點計算量,有的時候需要渲染。

如果這兩類都固定下來的話,比如說頂點單元十個,專案單元五個。但如果有的時候,我需要15個頂點單元的計算資源的話,這個硬體資源就沒法滿足我了。

除了要加額外硬體單元外,如果處理器本身想去負擔這麼多的3D圖形的處理的話,有個能力很關鍵,就是浮點計算能力

微軟嘗試統一渲染的時候,英偉達是被排除在體系之外。但是後來,英偉達非常迅速地倒向了統一渲染,完成了架構上的革新。

實際上,從英偉達的g80核心開始,他推翻了之前所有設計的思路、理念,完成了一個徹底的統一渲染的架構構建,甚至裡面所有的流處理器互聯的結構,都做了重新的一個設計,是非常徹底的一個顛覆。

微軟在設計統一渲染架構的時候,選擇的夥伴是ATI,和ATI合作做了Xbox 360上的GPU Xenos。

我們無從得知老黃看到Xenos的表現之後是怎麼想的,但是那個時候,老黃一定在決策把英偉達以前的架構推倒重來,徹底擁抱統一渲染。而英偉達之後所有的光榮與夢想,都是從這一時刻開始的,他很徹底地革命,然後跟著微軟一條路走到黑。

芯流智庫:

呂昕:

ATI或者之後的AMD,為什麼嘗試過統一渲染,卻沒有搞出來類似於CUDA的東西?

呂昕:

因為ATI它還是有一定的路徑依賴。Xenos 這個GPU可以說是非常的成功,但是它是用超長指令集的結構,每四個向量加一個標量做一個流處理器組。本質上,Xenos只是為了配合當時微軟做的統一渲染架構的一種試水,

印在GPU裡面的單元,就是兩個,一個是頂點單元,另一個是畫素渲染。

簡單解釋一下,Xenos每個流處理器裡的這5個單元,只有一個指令資料輸入口,5個單元同進同退。如果每一個週期進來指令都是四個向量指令+一個標量指令的情況下,Xenos的效率會是最好的。

但是,現實中這是不可能的。很多時候,每個週期可能只是過來一個標量或者兩個向量指令。相當於流處理器中很多單元是在閒置狀態。

所以,微軟對兩者做了一個合併,這兩個東西變成了一個東西,我就既可以計算頂點,也可以去填充畫素,這就是我們說的統一渲染。

如果英偉達沒有把自己的GPU變成統一渲染的標量化,CUDA就是一個空談,跑不起來的。

也就是說,為了給GPU去程式設計,讓他的資源儘可能最大程度利用,計算資源需要都標準化,不能是特殊配比。

芯流智庫:

英偉達那邊的做法,是進行很細緻的一個分組,分成了一個個小型的流處理器組,而每個流處理器都可以獨立執行。而AMD的處理器是很長的一大組,一次讀取大量的指令,缺點就是每5個或者4個流處理被繫結在一起,不能獨立執行。

呂昕:

CUDA真正能夠起來,一方面是因為微軟背後推動了GPU架構的重大變革,另一方面,在大家都還沒看好時間節點的時候,英偉達投入大量的資源去開發相關的生態。

微軟要搞光追,老黃第一個站出來說“好,我來當馬前卒”,老黃很賣力去推微軟想推進的東西。相比之下,AMD、英特爾對這一塊沒有那麼感興趣。

GPU本質上跟軟體是高度耦合的,這也導致了它跟API的版本,跟API的廠商關係必須非常密切。大家覺得可能微軟只是一個“賣越來越難用Windows”的廠商,但它在圖形領域掌握了標準話語權。

呂昕:

沒有徹底為統一渲染架構從頭做一個設計,效率還是是有問題的。

GPU作物要長得很好,它就必須聽土地的話,而土地就是微軟。

總結而言,ATI(後被AMD收購合併)當時沒有及時對技術架構做一個徹底的變革,使得它在未來的十年內,很多東西他是真心想做但是弄不起來。本身給GPU程式設計已經是一個很困難的東西了,更何況是給超長指令集的GPU程式設計。

芯流智庫:

。這樣能保證其在生態上、在標準上不會被人拉到後面去。

其次,回到英偉達公司本身。為什麼它能成功?它幹過很多荒唐的事情,但還是一步步走到了今天。像90年代,英偉達在初創期賭API失敗了。

呂昕:

呂昕:

比如大概十年前,3D顯示很火。英偉達不遺餘力宣傳3D 顯示,推出配套軟體,配套眼鏡。但後來發現這個東西沒推廣開,英偉達很快翻篇了,遺忘了。

包括現在去看GTC釋出會,感覺內容好奇怪呀,什麼熱點都蹭。

量子計算、元宇宙,挖礦,等等。

英偉達把它的流處理器拆成了很獨立、很標準的單元,方便控制和排程。而CUDA編譯器,把一個本來是序列處理的東西變成並行。就是因為CUDA降低了程式設計的難度,所以很多人來用它。如果英偉達沒有做在硬體架構上做一個徹底性的變革,後來通用計算的功能也就不可能了。

舉一個英偉達投入了很多年的一個產品線——圖睿,老黃看到了大家都在做智慧手機,他也想去做智慧手機的soc,所以它有一個圖睿的產品線,但一直很爛。圖睿就一直在折騰,折騰手機,折騰什麼機頂盒,後來去折騰車,終於給他蹭上一次風口。

他想盡辦法去蹭各種各樣的熱點,總會給他蹭到一個的,像今天的圖睿,已經是得到了大量的汽車廠的認可和使用。大家現在想開發機器人,做一個AGV,最好的方案就是圖睿。

老黃經歷的慘痛失敗,與英偉達的“反脆弱”式崛起

芯流智庫:

回到我們常說的深度學習和通用計算上來,我們談下GPU發展的第二條暗線——為什麼大規模平行計算是未來的一個趨勢?

呂昕:

比如說智慧車,雲計算、元宇宙、超算,還有各種各樣的一些支撐我們數字化的底層的東西,都需要算力。

呂昕:

很多超算、資料中心、加速卡,他們做的事情就是這類計算。本質上,雲端的加速卡、計算卡,都可以視其為一種大規模並行向量的計算卡。

是的,英偉達能夠成功,有很大的因素就是他當微軟的跟屁蟲

今天很多人提到AI,會說到ASIC或者DSA等,但由於AI的演算法迭代太快了,ASIC和DSA都很難跟上變化。GPU可能不能每個演算法都跑,但是每代的效能都特別出色。它能夠跑一個很好的平均值,比如有100項測試,可能GPU每項測試都不能拿第一,但可以每項測試都在前10%,這對下游應用和廠商很有價值。

本質上來說,大規模的並行向量計算,是一種計算效率、程式設計性以及通用性的一個取捨,目前取捨最好的結果就是GPU。

英偉達有符合它的架構,有支援程式設計的編譯器,還能夠給你提供一套完整支援的生態,所以才能在今天的環境中走到這樣一個地位。英偉達能夠跟隨時代的發展趨勢,不斷去調整策略,賭贏了趨勢。

回顧通用計算,2006年到2008年期間,

但英偉達的文化,就是“快速試錯,快速迭代”。如果一個東西對了,它就死命加註;如果錯了,就當做沒發生過

而且功耗會增大,面積會增大,然而圖形效能卻和AMD差不多,人家價格還便宜,功耗還低。

至於英偉達那時候扯什麼顯示卡能做通用計算?消費者根本不關心,玩遊戲為什麼要考慮蛋白質摺疊計算?

也就是說,當時他還沒有找到通用計算的潛在使用者。

我上大學管理學的課上,有一章講到黃仁勳,他有一句話叫做,“if you suck,you suck”,就是說是寧可要低頭認錯,也不要執著跪地求生。他的企業文化,就是我要去不斷嘗試、不斷試錯,輸了就很快認錯。

但英偉達那個時候已經認定了,這是一個可以挖掘的好方向,所以他在守住自己的基本盤——GPU傳統圖形業務的同時,不斷地在未來看得到賠率的地方加速投入。從g80開始,g90、g200,整整四代的架構、對應五代的產品線。他折磨了無數的玩家,無數買他卡的人,陪他一起去分攤成本。

大規模平行計算的路線之爭

那個時候,英偉達也推出了Tesla系列的專門的計算卡,但是除了超算之外的地方,相對賣得比較少。

10年後,深度學習或者AI的浪潮過來了,大家發現,我要去讓一個GPU跑在遊戲之外的程式,只有英偉達的GPU可以做。在五六年持續投入、被很多人吐槽GPU又臃腫又難用後,英偉達挺過來了,等到了那一刻,獲得了未來十年的豐厚回報。

接下來的十年,英偉達也沒有躺著不前進,而是不斷自我革命。英偉達創新性引入了一個東西——tensor core。之前所有的AI計算,都是用GPU裡面的CUDA或者說流處理來計算。

很多人都覺得流處理器,是給圖形渲染局用的,效率比較低,就想用ASIC去做AI計算。

那英偉達本來是最不應該去開發ASIC或者加速單元的,因為這是自己搶自己飯碗吃嘛。但英偉達就做了,他引入了Tensor Core,一種專用加速單元,效果非常好,進一步拉大了跟其他後來者的一個差距。

你說AI已經夠他賺了,他又跑去蹭挖礦,蹭元宇宙、量子計算機。這就是很典型的反脆弱行為,

芯流智庫:

與英偉達作風相反的一個很典型的例子,就是英特爾。英特爾在十年前天下無敵,沒有人能打過它。曾經英特爾有最好的架構,最好的工藝,誰都沒有想到,僅僅是因為10納米制程翻車了一次,整個都被打亂了,以至於到現在都沒有喘過氣來。

呂昕:

而英偉達就是不斷嘗試,不斷改變。英偉達失敗了無數次,比如2000年後,失敗最慘的是費米架構,他在GPU的層面引入新的設計理念,結果那一代架構在消費領域一敗塗地,功耗又大,效能又差,被ATI的hd 5000系列壓著打。但是後來,他把這些設計上的失敗經驗吸收、消化了,然後在開普勒架構的時代又完全贏回來了,他讓自己的錯誤能夠為下一次成功服務。

呂昕:

而這些算力大部分時候,都是需要一種並行的向量計算。他們可能不需要像CPU那樣去處理不同的程式,但是需要做很多簡單但是非常繁重的計算任務。

為什麼今天大家選擇的是GPU,而不是DSP?本質上來說還是程式設計環境的易用性。其次,GPU能更好地適配各種各樣的任務。

對,有點像是投資領域的機率和賠率。真正讓你賺到錢的一定是賠率大的東西。有一個槓鈴策略,90%的我拿去買固定理財,10%的我去買一些高賠率的。我每次損失可能只損失一小部分,但一旦讓我贏一次,我可以得到非常多的回報。

對於英偉達,他就是一直在這樣做,唯二的兩次豪賭,就是 API上的跟隨微軟的兩次。我們得承認這兩次確實是豪賭,這兩次黃仁勳賭上了自己所有的身家,但他也都賭對了。

統一渲染剛剛出來,英偉達就不斷投入資源,持續了很多年,當時被人罵的非常慘,一個是沒有效果,另一個是這些支援會把GPU的核心變得非常冗餘、臃腫,

為什麼微軟始終能夠發揮很大的作用?每次API介面的標準定製上,他的角色都很對,他為什麼能夠一直維持很好的表現?

芯流智庫:

呂昕:

。摩爾定律之外有個定律叫安迪比爾定律,安迪是英特爾原來的CEO,比爾就比爾蓋茨。這個定律是,無論安迪造出多快的處理器,比爾都會用程式榨乾它的效能。

微軟是PC生態的主導,

呂昕:

微軟這邊還有一些研究院,有很多前沿的探索。在研究的過程中,微軟覺得下一代可能要做某些改進,於是反饋給GPU廠商。也正是因為如此,微軟在GPU行業發生變革的時候,它走在前面,或者說它引領了變革。

Tags:GPU偉達CPU微軟呂昕