導讀:一文看懂GPU的前世今生。
作者:錢綱
來源:華章科技
2016年,發生了一件震動IT界的大事。谷歌的人工智能軟件阿爾法狗(AlphaGo)擊敗了韓國的世界圍棋冠軍九段選手李世石。2017年,阿爾法狗又擊敗了當年世界圍棋排名第一的中國圍棋九段選手柯潔。至此,人類在所有的棋類比賽中全部輸給了計算機。
阿爾法狗是一個中央處理器(Central Process Unit,CPU)和圖形處理器(Graphic Process Unit,GPU)一起工作的圍棋智能機器人。阿爾法狗以神經網絡、深度學習、蒙特卡洛樹搜索法爲核心算法。其系統由四部分組成:
- 策略網絡(Policy Network),以當前局面爲輸入,預測下一步的走法;
- 快速走子(Fast Rollout),目標和策略網絡相似,在適當犧牲質量的條件下的加速走法;
- 價值網絡(Value Network),以當前局面爲輸入,估算勝率;
- 蒙特卡洛樹搜索(Monte Carlo Tree Search),把上述三個部分整合起來,形成完整的系統。
最初的阿爾法狗有176個GPU和1202個CPU。GPU能夠通過內部極多進程的並行運算,取得比CPU高一個數量級的運算速度。但是GPU爲了管理多進程,它需要在微架構上進行精心設計以滿足深度學習計算對于帶寬和緩存的需求。那麽GPU和CPU有什麽不同呢?
01 圖形處理器
CPU由運算器(ALU)和控制器(CU)兩大部件組成。此外,還有若幹個寄存器和高速緩沖存儲器及實現它們之間聯系的數據、控制及狀態總線。ALU用來執行算術運算、移位操作、地址運算和轉換;寄存器件用于保存中間數據以及指令;CU負責對指令譯碼,並發出爲完成每條指令所要執行的各個操作的控制信號(見圖24-1)。
CPU的運行遵循馮·诺依曼构架:存储程序顺序执行。程序执行过程如下:CPU根據程序計數器(Program Counter,PC)從內存中得到指令,然後通過指令總線將指令送至譯碼器,將轉譯後的指令交給時序發生器與操作控制器,再從內存中取得數據並由運算器對數據進行處理,最後通過數據總線將數據存至數據緩存寄存器以及內存中。
CPU是一步步來處理數據的(見圖24-2)。在處理大規模與高速數據時,CPU很難滿足需要。
當芯片的集成度增加後,漏電流也隨之增大,但時鍾頻率的提高有限,而且晶體管的線寬很快就會到達物理極限,因此芯片的性能很難靠減小晶體管線寬來提高。于是,人們開始在設計上做文章,首先想到的是讓多個處理器並行工作,這樣效率自然提高了很多,于是多核CPU和GPU由此誕生。
另一個想法是芯片不變,而在應用系統上加人工智能,以此取得計算上的收益。隨著大數據時代的到來,以人工智能爲導向的應用系統也越來越多了。
在現代的計算機中,圖形處理越來越重要,于是一個專門處理圖形的核心處理器GPU應運而生。對于處理圖形數據來說,圖形上的每個像素都要被處理,這就是一個大數據,因此對運算速度的要求很高。但GPU所需的功能比較單一,于是就誕生了基于優化圖形處理的GPU構架(見圖24-3)。
CPU的功能模塊多,適合複雜的運算環境,大部分晶體管用在控制電路和Cache上,少部分晶體管用來完成運算工作。GPU的控制相對簡單,且不需要很大的Cache,大部分晶體管可被用于各類專用電路和流水線,GPU的計算速度因此大增,擁有強大的浮點運算能力。
當前的多核CPU一般由4或6個核組成,以此模擬出8個或12個處理進程來運算。但普通的GPU就包含了幾百個核,高端的有上萬個核,這對于多媒體處理中大量的重複處理過程有著天生的優勢,同時更重要的是,它可以用來做大規模並行數據處理。
盡管,GPU是爲了圖像處理設計的,但它的構架並沒有專門的圖像處理算法,僅僅是對CPU的構架進行了優化,因此GPU不僅在圖像處理中應用廣泛,還在科學計算、密碼破解、數值分析、大數據處理、金融分析等需要並行運算的領域中廣爲應用。GPU是一種較爲通用的專業芯片。
02 圖形處理器的構成
GPU的線路板一般是6層或4層PCB線路板。GPU的所有元器件都集成在它的線路板上,線路板影響著GPU的質量。
GPU線路板上最大的芯片就是GPU,它上面有散熱片和風扇。作爲處理數據的核心,GPU大多采用單芯片設計,而專業的GPU也有采用多個GPU芯片的。
GPU線路板上的另一個重要芯片是數/模轉換器(RAMDAC)。它的作用是將顯存中的數字信號轉換成顯示器能夠識別的模擬信號,速度以MHz爲單位,速度越快,圖像越穩定,它決定了GPU能支持的最高刷新頻率。爲了降低成本,多數廠商都將數/模轉換器整合到了GPU芯片中,但仍有一些高檔GPU采用獨立的數/模轉換器芯片。
GPU的數據是存放在顯存內的,顯存是用來存儲等待處理的圖形數據信息的。顯存容量決定了GPU支持的分辨率、色深。分辨率越高,顯示的像素點越多,所需顯存容量越大。對目前的三維GPU來說,需要很大的顯存來存儲Z-Buffer數據或材質數據。
顯存有兩大類:單端和雙端顯存。前者從GPU中讀取數據並向數/模轉換器傳輸數據且經過同一端口,數據的讀寫和傳輸無法同時進行;後者則可以同時進行數據的讀寫與傳輸。目前流行的顯存有SDRAM、SGRAM、DDR RAM、VRAM、WRAM等。
GPU線路板上采用的常見電容類型有電解電容、钽電容等,前者發熱量較大,許多名牌GPU采用钽電容來獲得性能上的提升。電阻也是如此,常見的金屬膜電阻、碳膜電阻越來越多地讓位于貼片電阻。
GPU線路板上有對GPU進行供電的供電電路。它的作用是調整來自主板的電流以供GPU穩定地工作。由于GPU越來越精密,因此對GPU供電電路的要求也越來越高。
GPU線路板上還有一款用于VGA BIOS的閃存。它包含了GPU和驅動程序的控制程序、産品標識等信息。該閃存可以通過專用程序進行升級,改善GPU性能,有時能給GPU帶來改頭換面的效果。
GPU線路板上有向GPU內部提供數/模轉換時鍾頻率的晶體振蕩器等元器件。此外,由于GPU的頻率越來越高,工作時熱量很大,GPU線路板上還會有一個散熱風扇。
03 計算機圖形的生成原理
計算機的輸出圖像是模擬信號,而計算機處理的是二進制數字信號。數據離開CPU後,經過以下四個步驟,才到達顯示屏成爲圖像。
- 經總線進入GPU,將CPU送來的數據送到GPU裏進行處理。(數字信號)
- 從GPU進入顯存,將GPU處理完的資料送到顯存。(數字信號)
- 從顯存進入數/模轉換器,從顯存讀取出數據然後送到數/模轉換器進行數據轉換。
- 從數/模轉換器進入顯示器,將轉換完的模擬信號送到顯示屏(模擬信號)
顯示屏上顯示的是最後處理的結果,顯示效能的高低由以上四個步驟共同決定,它與GPU的效能不同,GPU的效能決定了中間兩步。第一步是由CPU進入到GPU,最後一步是由GPU將資料送到顯示屏上。
近幾年,人工智能中的深度學習算法大熱,讓GPU制造商大火。其實,深度學習的理論早在20世紀七八十年代就有了,但它的崛起主要是因爲GPU的出現。英偉達公司的聯合創始人與CEO黃仁勳說:“因爲人工智能世界的大爆炸發生了,人工智能計算機科學家們找到了新算法,讓我們能利用深度學習的技術,取得無人敢想的成果。”
04 顯卡的誕生
提到顯卡和GPU,人們會想到遊戲和電影中精美的三維圖形。其實,早期顯卡不但不能處理三維圖形,甚至連二維圖形都無法處理,它僅具備顯示能力。今天,GPU不但能夠處理複雜的三維圖形,還能作爲協處理器,在通用計算中使用。
電腦圖形處理器的發展是從圖形顯示適配器開始的,到圖形加速器,再到圖形處理器即GPU,其功能在不斷增強。
從顯示適配器到圖形加速卡的轉變是顯卡曆史上的重要轉折點。從此,顯卡開始承擔計算機中的部分計算任務,這奠定了其日後與CPU分庭抗禮的基礎。
電腦圖形學是在1962年,由麻省理工學院的伊凡·苏泽兰(Ivan Edward Sutherland)在他的博士論文中提出來的。這位香農的學生是電腦圖形之父。在之後的20年裏,電腦圖形學一直在不斷發展,但沒有産生專門的圖形處理芯片。
在顯卡出現之前,電腦中通常的圖形輸出工作由CPU承擔。顯卡的出現不是爲了加速電腦的圖形輸出,最初的顯卡是爲了讓遊戲機上的二維圖形顯示加速。這款遊戲是雅達利公司于1977年推出的雅達利2600。同期流行的電腦是蘋果-II,而蘋果-II的圖形輸出由CPU承擔。
進行圖形處理時需要電腦具備較強的並行計算能力,對精度和運算強度的要求也很高,對早期的電腦來說,這很難。當時的顯卡僅僅是將CPU計算生成的圖形翻譯成顯示設備能識別的信號來進行顯示,不具備計算能力,被稱作圖形適配器(VGA Card)。
雅達利2600擁有專門負責在電視上輸出圖形的8位Antic芯片和音頻的CTIA芯片(見圖24-2)。雅達利2600的設計者傑伊·迈纳(Jay Miner),也是20世紀80年代圖形性能最強大的電腦阿米加(Amiga)的設計者。雅達利2600內部的Antic芯片是顯卡的老祖宗。
1981年,IBM推出了最早的裝在5150個人電腦上的MDA(Monochrome Display Adapter)和CGA(Color Graghic Adapter)兩款二維加速卡。
MDA僅支持黑色和綠色的文字,圖形內存爲4KB,無法産生圖形。CGA是IBM個人電腦中最早的彩色顯卡,640×200的分辨率,4種顔色。由于CGA的分辨率太低,因此有了EGA增強圖形適配器(Enhanced Graphics Adapter)。
MDA、CGA、EGA三種標准都是以TTL數字信號輸出的。IBM很快研發出了基于ISA(Industry Standard Architechture)的顯卡,是最古老也是最普遍使用的VGA顯卡。
直到VGA標准出現,顯卡才和主板分開,VGA(Video Graphic Array)即顯示繪圖陣列,它的數字模式可以達到720×400種顔色,繪圖模式可達640×480×16種顔色,以及320×200×256種顔色。直到此時,顯卡才能同時顯示256種色彩。
VGA標准采用了模擬信號輸出,其彩色顯示能力大大加強,原則上能顯示無窮多種顔色,因此VGA迅速成爲顯示設備的標准。
這個時代,出現了第一款真正的顯卡——Trident 8900/9000顯卡,它是ISA/16色顯卡的代名詞,也是三維顯卡的真正鼻祖,它第一次使顯卡獨立于電腦,顯卡從此不再是集成的一塊芯片,這爲以後獨立顯卡的發展提供了可能性。
VGA之後又出現了SVGA標准。它是VGA標准的衍生産物,改良過的SVGA圖形適配器已經能夠支持16比特的彩色了。最早的SVGA顯卡是Cirrus Logic的GD5428/5429,它集成了1~2MB顯存,支持16比特的彩色。不過GD5428/5429仍使用VESA總線,因此卡身很長,成本不低。
真正將SVGA發揚光大的是S3735(Tr64V)以及Trident 9680,它們能夠達到1024×768的分辨率,並且在低分辨率的情況下支持32比特真彩色。
1984年,硅圖公司(Silicon Graghics Inc.,SGI)推出了專業的高端圖形工作站,並配置了專門的圖形硬件,稱爲圖形加速器。它引入了許多經典概念,如頂點變換和紋理映射。在隨後的10多年裏,硅圖公司又研發了很多面向專業領域的圖形工作站,但它們的價格昂貴,無法進入個人電腦市場。
1984年,IBM又推出了兩款顯卡,它們是PGC(Professional Graghics Controller)和EGA。這兩款顯卡能夠支持二維和三維的圖形加速,並被用于計算機輔助設計。
1986年,德州儀器推出了第一款具有在芯片上進行圖形處理功能的微處理器TMS34010。這款處理器需使用特殊的圖形編程語言。1990~1992年,它是視窗加速卡中,德州儀器圖形框架(Texas Instruments Graghics Architecture,TIGA)的基礎。
1987年,康莫多國際(Commodore International)公司推出了阿米加500電腦。該電腦擁有功能強大的圖像處理專用芯片。這款芯片也是在傑伊·迈纳的倡导下加上的,这款显卡给阿米加500帶來了704×576像素的圖形顯示功能。
除了顯卡外,阿米加500的音頻輸出性能也極好。雖然阿米加500的顯卡不是第一塊應用在電腦上的顯卡,但該顯卡是第一款真正意義上的二維加速卡。阿米加500電腦的誕生讓人們意識到圖形加速卡對于電腦的意義(見圖24-5)。
1988年,支持256種顔色顯示的第一代顯卡問世。它是ATI公司生産的ATI VGA Wonder顯卡。這是一款真正意義上的第一代顯卡,時至今日VGA一詞還是顯卡的代名詞。
05 前GPU時代
1989年,多家芯片制造商聯合創立了影像電子工程標准協會(Video Electronic Standards Association,VESA)。1994年年底,VESA發表了64位架構的VESA Local Bus標准,80486及以後的個人電腦大多采用該標准的顯卡。
1991年,英特爾推出了一種局部總線PCI(Peripheral Component Interconnect)。在結構上,PCI是在CPU和原來的系統總線之間插入的一級總線,由一個橋接電路對該層進行管理,並實現接口間的協調數據傳送。管理器提供信號緩沖,使其支持10種外接設備,同時在高時鍾頻率下保持高性能。PCI爲顯卡、聲卡、網卡等設備提供了接口。
顯卡接口制約著顯卡技術的發展。爲了加快顯卡與總線間的傳輸速度,使用高帶寬的接口總線勢在必行。在民用市場,顯卡接口的起點是最普通的ISA接口,ISA接口包含ISA總線、EISA總線和VESA總線,ISA接口是一種統稱。
當VGA標准流行之後,ISA接口就顯得力不從心了,由PCI取而代之,但PCI接口並未持續多久就被更爲先進的AGP(Accelerated Graphics Port)所淘汰。與PCI相比,AGP在帶寬上有了突飛猛進的發展,還能有效利用系統內存。
但AGP的半開放性格局使之不斷面臨兼容性的困擾。從最早的AGP 1×到AGP 8×,真正具有里程碑意义的只有AGP 4×。如今AGP 8X也開始被PCI Express×16取而代之了。
1991年,支持微軟視窗操作系統圖形加速的第二代顯卡(Graphics Card)問世。
VGA的唯一功能就是輸出圖像,圖形運算全靠CPU,當微軟的視窗操作系統出現後,PC不堪重負。1991年5月,ATI發布Mach8,這是ATI第一款優化微軟視窗操作系統圖形界面的顯卡。ATI用專用芯片進行圖形運算處理,將CPU解放了出來,且讓視窗操作系統的界面運行起來非常流暢,圖形化操作系統的資源消耗大降、實用性大增。
Mach8就是ATI 38800-1芯片。Mach8顯卡由兩個芯片組成,主芯片爲VGA Wonder XL 24(ATI 28800-6),負責顯示輸出,輔助芯片是Mach8專門用于加速視窗操作系統圖形界面的,通過雙芯片的設計增強了繪圖能力。
爲了與只具備顯示功能的VGA相區別,具備圖形處理能的顯卡被稱爲Graphics Card,即圖形加速卡,它加速了視窗的普及,加速了PC圖形化界面的步伐。
1991年6月,S3公司推出了一款二維圖形加速卡S3 86C911。它是最早的視窗加速卡之一,支持16位256種顔色。此後,二維顯卡進入了群雄爭霸時代。當時,Trident、S3、Matrox三大廠商占據主導地位。
這些二維顯卡角逐的激烈程度絲毫不亞于今天的三維顯卡的爭鬥。由此也産生了不少經典産品:Trident的9440、S3的Trio64V+、Matrox的Millennium等。其中性能最優的是Millennium及後繼産品,但因其售價昂貴沒有得到很多市場份額。當時,最成功的是S3的Trio 64V+。等到了voodoo時代,它仍是voodoo的好搭配。
第一款三維顯卡是三維實驗室(3Dlabs)制造的GLINT 300SX(見圖24-6)。它的三維圖形的高洛德著色(Gouraud Shading),深度緩沖,全屏抗鋸齒,Aplha混合等特性被沿用至今。300SX正式開啓了計算機三維顯示的大門,但它也有很多不足,比如沒有數模轉換芯片(RAMDAC),要加上數模轉換芯片才能將內容輸出到顯示器上。
06 多媒體時代的顯卡
1994年,支持視頻加速的第三代顯卡出現了。
這時的PC已經進入了多媒體時代,二維圖形處理在第二代顯卡面前已不是問題了,但越來越多的視頻圖形解碼讓CPU不堪重負,因此集成了簡單的視頻解碼器的第三代顯卡出現了。
ATI在1994年推出的Mach64是第一款廣爲人知的多媒體顯卡,它的硬件支持YUVtoRGB顔色轉換和硬件縮放。有了它的PC能應付基本的AVI和MPEG-1播放,而不需要昂貴的專用硬件解碼器,使得多媒體PC的成本大幅下降。
1994年,第四代顯卡,三維加速顯卡出現了。
三維顯卡前期,令人難忘的是3Dfx Interactive公司(簡稱了Dfx)。1996年,3Dfx推出的voodoo顯卡奠定了3Dfx在圖形顯示領域的地位,但它並不普及,因爲太貴了。當時的RAM很貴,而voodoo需要很大的RAM。
另外voodoo要賣到500美元才能賺錢,voodoo沒有二維輸出能力,用戶必須外加一塊100美元左右的二維加速卡才能正常使用它。高昂的成本讓個人電腦廠商對它避而遠之。據說,3Dfx承諾免費提供半年的voodoo芯片都被拒絕了。圖24-7是3Dfx推出的第一款三維顯卡。
3Dfx的運氣很好。1996年夏,芯片工藝的更新讓RAM價格大跌,3Dfx借機得以推廣,而各遊戲和個人電腦生産廠家也改變了態度,開始使用voodoo。當voodoo以300美元的價格上市時,市場被引爆了。voodoo支持DVD和OpenGL,但二者還較粗糙,抑制了voodoo的性能。3Dfx只好開發圖形API——Glide。
20世紀末,3Dfx的崛起宣布了三維顯卡進入了白熱化競爭時代。S3、Matrox、3Dlabs等廠商都加入了競爭,但它們均不敵voodoo。除voodoo以外的三維顯卡的代表作是ATI的3DRage II+DVD。
這一款1996年秋天發布的顯卡,其二維引擎來自Mach64。它具有MPEG-2硬件動態補償功能,能在播放DVD時起到輔助作用,這是非常先進的。加上ImpacTV芯片,它還可以播放電視節目。3DRage II的驅動支持也非常好,無論是遊戲用戶還是專業用戶都可以得到對應的驅動程序。只是ATI當時專注于OEM市場,而非零售。
3Dfx爲了解決voodoo沒有二維加速功能的問題,于1997年開發了具有二維加速功能的voodoo rush。但是其性能很差,它以主卡加副卡的方式實現二維加速,且二維芯片來自第三方。voodoo rush成了一款二維顯示很差、三維性能又比voodoo差的顯卡。它對Glide的支持也很差,經常無法加速。
不久,ATI研發出了3D Rage Pro。因其強大的DVD回放功能成了當時OEM多媒體電腦的首選。ATI嘗試過進入零售市場,但因其很差的驅動失敗了,等到ATI驅動沒問題的時候,Rage Pro已過時了。3D Rage Pro是最早支持AGP接口的顯卡之一。
ATI在被AMD收購之前一直是計算機圖形領域的領頭羊之一。這是一家由三位來自中國香港的華裔在1984年于加拿大創建的計算機圖形公司。其主要創始人何國源,1950年出生于中國廣東省。
12歲時,何國源來到香港。因家庭貧困,他20歲時只身來到學費和生活費較低的台灣就讀大學。1984年,已在電腦領域有了豐富工作經驗的何國源移居加拿大,創辦了計算機圖形公司——ATI。
1998年,3Dfx推出了voodoo2。voodoo2的性能比voodoo提高了2~3倍,它還增加了大量新的畫質提升技術。voodoo2降低了對CPU的依賴,很多低端的CPU也可以流暢運行大型三維遊戲。
voodoo2還引入了SLI技術,能讓兩張voodoo2顯卡同時運算同一畫面。有1/3以上的voodoo2用戶是雙卡用戶。voodoo2讓3Dfx成了三維顯卡初期的絕對老大。
1998年,3Dfx犯了兩個致命的錯誤:一是收購了一家名爲STB的公司,自行生産GPU,舍棄了第三方合作夥伴;二是對Glide API的封鎖,導致遊戲廠商開始對其敬而遠之,表面上看3Dfx因voodoo2風光無限,但這也是其衰落的開始。
3Dfx在1998年犯的錯誤並沒有讓它面臨危機,這是因爲沒有競爭對手。到了1999年情況就不同了,幾件事讓3Dfx面臨滅頂之災。先是DX7帶來了硬件T&L,硬件T&L的出現徹底解放了CPU,即便是低端CPU,搭配了支持硬件T&L的顯卡也可以流暢地玩遊戲。大量視覺技術的添加使得Glide的優勢喪失殆盡。
3Dfx于1999年發布的voodoo3不支持新出現的AGP4x,僅支持2x,但只支持接口,不支持AGP的特性。voodoo3的16比特渲染在大勢所趨的32比特潮流面前毫無競爭力。
同時,來自英偉達的TNT2以其強大的性能幹脆利落地將voodoo3打敗了。與同年發布的Gefroce 256相比,它只是一款TNT的改進産品,但這未能阻礙TNT2成爲一代經典。
1998年2月,英特爾發布了和Real 3D合作設計的i740顯卡(見圖24-8)。這是迄今爲止英特爾推出過的唯一一款獨立顯卡。i740支持2X AGP規格,核心頻率爲80MHz,像素填充率爲55MT/s,支持DVD解壓、平行信息處理、精准像素描插補等技術。
i740的2D效果並不令人滿意,但它的三維性能還不錯,它首次在民用顯卡中采用散熱風扇。後來,英特爾將i740改進後集成進了810芯片組。
關于作者:錢綱,現就職于美國德州儀器公司,從事半導體工藝及半導體器件的開發與研究工作。科學網人氣作者,其作品在線獲得超過千萬人次的浏覽量。錢綱的作品以涉及曆史、科技的雜文、隨筆爲主。主要作品有美國曆史及人物紀事《美國往事》,硅谷曆史《硅谷簡史》等。
本文摘編自《芯片改變世界》,經出版方授權發布。
推薦語:本書是芯片技術發展的科普圖書,重點講述了電子工業的産生,早期電子器件、半導體器件、及芯片的産生與發展的曆史。把芯片技術與其發展史結合起來,描繪芯片産業與第三、第四次工業革命的興起及發展過程。本書的主角是芯片技術的曆史沿革、發明家、創業家、風險投資家及企業家。