Markets
DJIA NASDAQ S&P 500
 
 
 
ENTER SYMBOL(S)
Value Engine Stock Forecast
CPU和GPU在今天計算機中的作用和位置
2008-05-27 02:57:55
轉寄給朋友
列印

作者:趙軍

  CPU的作用: CPU 作為一台計算機的核心,它的作用被証明是無法替代的,過去是這樣,今天依然是這樣,將來應該還是這樣,只不過可能被增加和賦予了更多更複雜的功能。

  為什麼CPU能夠勝任計算機的核心,應付自如地控制一台複雜而精密的電腦系統 ?為什麼CPU可以當之無愧地被稱為電腦之“腦”而不是其他部件?這是因為CPU主要是面向執行操作系統、系統軟件、調度和運行各式各樣應用程序以及協調和控制整個計算機系統而設計的。CPU具有通用性的特點,也就是“全才”或者“通才”,什麼都要會,當然這並不表示CPU每項任務都具有頂尖水平。

  集成了百萬計,千萬計,甚至數億計晶體管的CPU芯片,除了具有計算能力的電路和結構,還擁有控制和指揮其他硬件電路相配合的中央控制器,現代CPU還擁有更多具有“思維”能力的電路和結構,如邏輯判斷,推測執行,預測執行等等。只有具有了這些特質,CPU才可能勝任電腦之“腦”的工作。

  那麼CPU靠什麼來“思維、指揮和控制”呢?答案是指令集。指令集是CPU能夠處理的全部指令的集合,沒有指令集的芯片不可能被稱為是CPU,指令集可是說是CPU的思維語言,是CPU的“智能屬性”,也是它有別于其他芯片的根本屬性。類似于人腦,任何人的思維過程都有語言的參與,中國人用中文思考,美國人用英文思考,如果習慣于講方言,人們甚至用方言思考,人們在本能或者下意識狀況下都是用自己最熟悉的語言思考。指令集就是電腦之腦CPU的語言,CPU就是用指令集來“思考”。

  大家所熟悉的x86指令集就是我們今天大多數人使用的CPU的語言,x86指令集是由英特爾公司發明、開發並不斷增強和完善的。所有英特爾架構的CPU和兼容CPU都採用x86指令集。任何程序不管採用什麼高級程序設計語言編寫的,都需要通過高級語言編譯程序或者解釋程序先翻譯成 x86指令才可以被CPU執行。

  如C語言,C++語言,Pascal語言等等高級程序語言都是供編程人員使用的,人們可以把自己的“思維和指令”通過高級程序設計語言表達出來,通過編譯程序或者解釋程序轉換成CPU可以明白的指令,CPU就可以遵照人們的“思維和指令”一絲不苟、不折不扣地執行。其實編譯程序和解釋程序也是由CPU來執行的。

  有了指令系統,CPU就可以通過它來控制、指揮、協調和調度整個計算機系統的各個子系統,讓它們相互配合、有條不紊的完成各種各樣的任務。

  GPU的作用:除了CPU(中央處理單元,也叫中央處理器),計算機系統中還有眾多的PU——處理單元,統稱xPU。由于它們不具有CPU的通用性,而具有專用性,習慣上它們都叫控制器或芯片。如內存控制器,中斷控制器,以太網網卡芯片,USB控制器等等,雖然這種叫法不常見,但是我們依然可以把它們也叫成: Memory PU —— 內存處理單元 Interrupt PU —— 中斷處理單元 Ethernet PU —— 以太網處理單元 USB-PU —— USB 處理單元

  所以現在圖形計算能力比較強的圖形芯片被稱為GPU,即“圖形處理單元”就不足為奇了。GPU具有專用性的特點,擅長圖形計算和處理。

  GPU的前身就是顯示卡的主芯片。顯示卡和顯示器等等組成計算機系統中的圖形子系統。最早的顯示卡功能比較簡單,所以也叫顯示器適配 卡(簡稱顯卡),它是連接主機與顯示器的接口卡。現在的顯卡都是3D圖形加速卡,主芯片也被冠以GPU的新名字了。

  今天顯卡的主要作用並沒有發生根本的變化,其作用還是將CPU的輸出信息和指令轉換成字符、圖形和顏色等信息,傳送到顯示器上顯示。不過,今天的顯卡在執行CPU發出的圖形指令時具有更強的執行能力和圖形計算能力。下面我就來給大家解釋一下。

  早期顯卡的圖形處理能力非常弱,基本上只是起到傳遞的作用,CPU如果想在圖形方式下畫個簡單的圖形,如正方形,園等線條圖形,都需要把組成圖形的每個點需要顯示的位置、點的大小、顏色都一一告訴顯卡,顯卡然後按部就班在顯示器上畫出來。

  隨著操作系統和應用程序對複雜且高質量的圖形要求越來越高,CPU專職來做這些圖形處理工作就力不從心了,也得不償失,而且也會造成CPU的效率低下。因為CPU的設計是用來處理系統任務和程序調度的,不是為圖形處理優化的。

  于是圖形加速功能就被賦予到新的顯卡當中(現在主芯片可以叫GPU了),支持2D圖形加速的顯卡出現了,它大大緩解了CPU的圖形處理壓力。有了2D圖形加速功能的顯卡,CPU如果想畫二維圖形,現在只需要發個指令給顯卡,如“在坐標位置(x, y) 畫個長和寬為a * b大小的長方形”,顯卡的圖形加速器(GPU)就可以迅速在顯示器上指定位置畫出大小相符的圖形,畫完後GPU就通知CPU,“我畫完了”,然後等待CPU發出下一條圖形指令。

  現在的GPU除了具有2D 圖形加速功能,更多的是在不斷加強3D圖形加速的能力。 同樣的道理,GPU也把繁複的3D圖形處理的工作從CPU分擔過來,CPU現在只要發個指令,如“畫個圓球”,給GPU就可以了,GPU完成三維圖形的繪制,然後通知CPU完成的情況,等待下一條指令。

  有了圖形加速器,CPU就從這類圖形處理的任務中解放出來,可以執行其他更多的系統任務,這樣就提高計算機的整體性能。

  不過,並不是所有和3D圖形處理相關的運算一下子都被GPU接管過去,“任務”的交接也是逐步進行的,對于GPU不能實現或者尚未實現的計算還是“有勞”CPU來完成。例如,圖形的幾何坐標變化和光照模型的計算(T&L)在主流的GPU都實現了,以前都是由CPU來完成的。對于當前一些集成在芯片組中的GPU,如果沒有T&L的加速,仍然用“軟件”方式實現T&L計算——就是CPU來完成。另外,3D圖形的著色計算也逐漸轉移從CPU轉移到GPU中,如頂點著色和像素著色 (Vertex Shader & Pixel Shader)。

  從上面的簡單介紹我們可以看出,CPU和GPU工作的重點不一樣,CPU擔當的責任要大的多,面對的是整個計算機系統,要照顧到方方面面,除了要保証整個系統高速運行,還要確保系統穩定運行。任何錯誤都可能會是致命的,所以CPU很難做到“專心致志”。它會經常被打斷,停下手頭的工作,去處理正常的或者非正常的緊急任務, 否則系統就會崩潰。相比CPU而言,GPU的責任就要輕的多,圖形計算如果出了錯,並不會影響程序本身的運行,最多是屏幕上顯示的圖形錯位了或者是顏色亂了等等,而且GPU不會為圖形程序運行的結果負責。

  沒有GPU加速2D和3D的年代,CPU包攬了和圖形計算與加速相關的所有活,“活”的不輕松,今天這些工作中的很多都由GPU來代勞了,CPU被解放出來把寶貴的CPU運算和控制資源更多的用于執行系統層面的核心任務以及其他非GPU類的應用上來。GPU相當于CPU的一位具有圖形計算和處理專長的高級助理。

  對于非圖形方面的任務,CPU需要的是其他專長的高級助理。GPU今天在計算機系統中的貢獻主要是高端3D游戲的三維圖形方面的,對于其他更廣泛的應用,它是無能為力的。如系統安全方面的加密解密,多媒體數字內容的加工和處理,系統的虛擬化,游戲中的人工智能等等舉不勝舉。

  將來有機會,我會具體介紹一些“CPU和GPU擅長和不擅長的各個方面”。


其它科技新知新聞
性價比才是王道 市場特色主流MP4特選(6) 北京新浪網
性價比才是王道 市場特色主流MP4特選(5) 北京新浪網
性價比才是王道 市場特色主流MP4特選(4) 北京新浪網
性價比才是王道 市場特色主流MP4特選(3) 北京新浪網
性價比才是王道 市場特色主流MP4特選(2) 北京新浪網