從CPU架構(gòu)和技術(shù)的演變看GPU未來發(fā)展
泡泡網(wǎng)顯卡頻道5月28日 自從AMD提出Fusion(融聚)的概念、NVIDIA加大力度推廣GPU通用計算、Intel率先將CPU和GPU整合在一起之后,大家就會發(fā)現(xiàn)CPU和GPU從沒如此親密無間過,CPU和GPU之間有著太多的共同點使得它們的界限也開始模糊了起來。
喜歡研究IT硬件技術(shù)的朋友應(yīng)該知道,CPU和GPU都是由整數(shù)運算單元、浮點運算單元、一級緩存、二級緩存、內(nèi)存控制器等等模塊組成的,但最終它們的應(yīng)用領(lǐng)域又是截然不同的。
到底是GPU取代CPU進行并行計算呢?還是CPU整合GPU成為大勢所趨?這兩種說法顯然是相互對立的,均有不少支持者。但這只是表像,真正產(chǎn)生這一現(xiàn)狀的原因依然隱藏在CPU和GPU的架構(gòu)之中,通過筆者后文中的分析您會發(fā)現(xiàn)這兩種說法不但不矛盾,反而代表了Intel、AMD和NVIDIA三大巨頭已經(jīng)達成的共識,他們正在以各自不同的方式去實現(xiàn)相同的目標(biāo)。
CPU和GPU的整體結(jié)構(gòu)相似,但側(cè)重點不同
事實上,CPU和GPU都保持著一套相對固定的趨勢,按照各自的軌跡在不停的發(fā)展、演變,兩者在技術(shù)和架構(gòu)方面有著很多不謀而合的共同點,而且最終也因為相同的目的而走到了一起。那么,CPU和GPU的碰撞將會亮出什么樣的火花,未來的發(fā)展方向會朝向何處呢?下面我們就通過CPU和GPU的發(fā)展史來推測未來產(chǎn)品應(yīng)該具備什么樣的特征。
首先我們來重拾一個幾乎快要被遺忘的名詞——協(xié)處理器,它是一種芯片,用于減輕系統(tǒng)微處理器的特定處理任務(wù),早些年協(xié)處理器主要是用以輔助進行浮點運算。
★ 最初的CPU只能進行整點運算,浮點運算效率極低
CPU最基本的運算就是“加減乘除”,但實際上計算機只能用加法器來完成整數(shù)以及固定小數(shù)點位置(整點)的算術(shù)運算,而不能處理小數(shù)點可以浮動的數(shù)值(浮點)。對于小數(shù)多采用的是二進制的科學(xué)計數(shù)法、也就是浮點數(shù)表示法:尾數(shù)、階數(shù)符號位各占一位,然后再對其余數(shù)位尾數(shù)、階數(shù)的有效數(shù)位合理分配。
在CPU運算時,浮點數(shù)的運算量遠比整數(shù)復(fù)雜,因為不僅尾數(shù)要參與運算,階數(shù)也要參與,并且需要對尾數(shù)和階數(shù)的符號位都進行處理,所以,最早的CPU并沒有能力進行浮點運算(8088/8086,80286,80386SX),需要浮點運算時,由CPU通過軟件模擬來實現(xiàn),所以,進行浮點運算時就會慢很多。
★ 協(xié)處理器誕生,專門處理浮點運算
8086處理器和它的協(xié)處理器8087
8086是當(dāng)今CPU的鼻祖,所謂X86架構(gòu)也就是指8086處理器所開創(chuàng)的指令集體系。為了彌補8086在進行浮點運算時的不足,Intel與1980年設(shè)計了8087數(shù)學(xué)協(xié)處理器,并且為X86體系推出了第一個浮點格式IEE754。8087提供兩個基本的32/64bit浮點資料形態(tài)和額外的擴展80bit內(nèi)部支援來改進復(fù)雜運算之精度。除此之外,8087還提供一個80/17bit封裝BCD (二進制編碼之十進制)格式以及16/32/64bit整數(shù)資料形態(tài)。
386處理器和它的協(xié)處理器387
X87協(xié)處理器新增約60個指令給程序員,所有的指令都是以“F”開頭跟其他的標(biāo)準8086整數(shù)運算指令有所區(qū)別,舉例來說,相對于ADD/MUL,8087提供FADD/FMUL。
8087是于1980年發(fā)布,然后被80287、80387DX/SX和487SX所取代。
★ 協(xié)處理器被整合進入CPU內(nèi)部
以往,協(xié)處理器都是可選配件,在主板上X86處理器旁邊一般都會為X87設(shè)計一個空的插槽,只有當(dāng)用戶確實有需要時才會專門購買相應(yīng)的X87協(xié)處理器插進去,來加速浮點運算。
486DX是第一顆整合了浮點運算協(xié)處理器的產(chǎn)品,相當(dāng)于486SX+487SX
隨著時代的發(fā)展,越來越多的程序要求使用更高精度的浮點運算,X87協(xié)處理器幾乎成為必備品。于是在制造工藝日趨成熟之后,Intel在486一代將X86和X87整合在了一起,浮點運算成為了CPU的一項基本功能,而且重要性越來越大。
Intel 486DX、Pentium之后的CPU都內(nèi)含了協(xié)處理器,AMD K5、K6之后的CPU都內(nèi)建了協(xié)處理器,所以此后就很少有人會提及協(xié)處理器的概念了。
所謂X86架構(gòu)的處理器就是采用了Intel X86指令集的處理器,X86指令集是Intel公司為其第一塊16位處理器i8086所專門開發(fā)的。而IBM在1981年所推出的第一臺PC機上所使用的處理器i8088(i8086的簡化版)也是使用的X86指令集,但是為了增強計算機的浮點運算能力,增加了X87數(shù)學(xué)協(xié)助處理器并引入了X87指令集,于是就將采用了X86指令集和X87指令集的處理器統(tǒng)稱為X86架構(gòu)的處理器。
X86基本指令集包括了:數(shù)據(jù)傳輸、算術(shù)運算、邏輯運算、串指令、程序轉(zhuǎn)移、偽指令、寄存器、位操作、控制指令和浮點運算指令等十大類無數(shù)條。而Intel和AMD桌面級處理器在X86指令集的基礎(chǔ)上,為了提升處理器各方面的性能,所以又各自開發(fā)新的指令集,它們被稱為處理器擴展指令集。
擴展指令集能夠大幅提高CPU在某些特定應(yīng)用下的性能,如多媒體、3D、浮點運算等,其設(shè)計初衷與協(xié)處理器是異曲同工的,但協(xié)處理器需要增加額外的運算單元,而擴展指令集只需要加入新的指令和算法即可,無需設(shè)計新的運算單元,但必須要軟件支持才能發(fā)揮功效。
★ MMX指令集:增強多媒體性能
MMX(Multi Media eXtension 多媒體擴展指令)指令集是Intel公司在1996年為旗下的Pentium系列處理器所開發(fā)的一項多媒體指令增強技術(shù)。MMX指令集中包括了57條多媒體指令,通過這些指令可以一次性處理多個數(shù)據(jù),在處理結(jié)果超過實際處理能力的時候仍能夠進行正常處理,如果在軟件的配合下,可以得到更強的處理性能。
MMX指令集非常成功,在之后生產(chǎn)的各型CPU都包括這些指令集。據(jù)當(dāng)年Tom''s Hardware測試,即使最慢的Pentium MMX 166MHz也比Pentium 200MHz普通版要快。
Intel Pentium With MMX,首次支持MMX
但是,MMX指令集的問題也是比較明顯的,MMX指令集不能與X86的浮點運算指令同時執(zhí)行,必須做密集式的交錯切換才可以正常執(zhí)行,但是這樣一來,就會造成整個系統(tǒng)運行速度的下降。
★ 3DNow!指令集:
3DNow!指令集最由AMD公司所推出的,該指令集應(yīng)該是在SSE指令之前推出的,被廣泛運用于AMD的K6-2和K7系列處理器上,擁有21條擴展指令集。在整體上3DNow!的SSE非常相相似,它們都擁有8個新的寄存器,但是3DNow!是64位的,而SSE是128位。
AMD K62加入3DNow!指令集
所以3DNow!它只能存儲兩個浮點數(shù)據(jù),而不是四個。但是它和SSE的側(cè)重點有所不同,3DNow!指令集主要針對三維建模、坐標(biāo)變換和效果渲染等3D數(shù)據(jù)的處理,在相應(yīng)的軟件配合下,可以大幅度提高處理器的3D處理性能。AMD公司后來又在Athlon系列處理器上開發(fā)了新的Enhanced 3DNow!指令集,新的增強指令數(shù)達了52個,以致目前最為流行的Athlon 64系列處理器還是支持3DNow!指令的。★ SSE指令集:加強浮點和3D性能
SSE是Streaming SIMD Extension(SIMD擴展指令集)的縮寫,而其中SIMD的為含意為Single Istruction Multiple Data(單指令多數(shù)據(jù)),所以SSE指令集也叫單指令多數(shù)據(jù)流擴展。該指令集最先運用于Intel的Pentium III系列處理器,其實在Pentium III推出之前,Intel方面就已經(jīng)泄漏過關(guān)于KNI(Katmai New Instruction)指令集的消息。這個KNI指令集也就是SSE指令集的前身,當(dāng)時也有不少的媒體將該指令集稱之為MMX2指令集,但是Intel方面卻從沒有發(fā)布有關(guān)MMX2指令集的消息。
奔騰3正式加入SSE指令集
最后在Intel推出Pentium III處理器的時候,SSE指令集也終于水落石出。SSE指令集是為提高處理器浮點性能而開發(fā)的擴展指令集,它共有70條指令,其中包含提高3D圖形運算效率的50條SIMD浮點運算指令、12條MMX整數(shù)運算增強指令、8條優(yōu)化內(nèi)存中的連續(xù)數(shù)據(jù)塊傳輸指令。理論上這些指令對當(dāng)時流行的圖像處理、浮點運算、3D運算、多媒體處理等眾多多媒體的應(yīng)用能力起到全面提升的作用。SSE指令與AMD公司的3DNow!指令彼此互不兼容,但SSE包含了3DNow!中的絕大部分功能,只是實現(xiàn)的方法不同而已。SSE也向下兼容MMX指令,它可以通過SIMD和單時鐘周期并行處理多個浮點數(shù)據(jù)來有效地提高浮點運算速度。
★ SSE2指令集:進一步優(yōu)化浮點運算
在Pentium III發(fā)布的時候,SSE指令集就已經(jīng)集成在了處理器的內(nèi)部,但因為各種原因一直沒有得到充分的發(fā)展。直到Pentium 4發(fā)布之后,開發(fā)人員看到使用SSE指令之后,程序執(zhí)行性能將得到極大的提升,于是Intel又在SSE的基礎(chǔ)上推出了更先進的SSE2指令集。
奔騰4初代就加入了SSE2指令集(AMD直到Athlon64才加入SSE2)
SSE2包含了144條指令,由兩個部分組:SSE部分和MMX部分。SSE部分主要負責(zé)處理浮點數(shù),而MMX部分則專門計算整數(shù)。SSE2的寄存器容量是MMX寄存器的兩倍,寄存器存儲數(shù)據(jù)也增加了兩倍。在指令處理速度保持不變的情況下,通過SSE2優(yōu)化后的程序和軟件運行速度也能夠提高兩倍。由于SSE2指令集與MMX指令集相兼容,因此被MMX優(yōu)化過的程序很容易被SSE2再進行更深層次的優(yōu)化,達到更好的運行效果。
SSE2對于處理器的性能的提升是十分明顯的,雖然在同頻率的情況下,Pentium 4和性能不如Athlon XP,但由于Athlon XP不支持SSE2,所以經(jīng)過SSE2優(yōu)化后的程序Pentium 4的運行速度要明顯高于Athlon XP。而AMD方面也注意到了這一情況,在隨后的K-8系列處理器中,都加入SSE2指令集。
★ SSE3指令集:加強并行數(shù)據(jù)處理能力
SSE3指令是目前規(guī)模最小的指令集,它只有13條指令。它共劃分為五個應(yīng)運層,分別為數(shù)據(jù)傳輸命令、數(shù)據(jù)處理命令、特殊處理命令、優(yōu)化命令、超線程性能增強五個部分,其中超線程性能增強是一種全新的指令集,它可以提升處理器的超線程的處理能力,大大簡化了超線程的數(shù)據(jù)處理過程,使處理器能夠更加快速的進行并行數(shù)據(jù)處理。
SSE3中13個新指令的主要目的是改進線程同步和特定應(yīng)用程序領(lǐng)域,例如媒體和游戲。這些新增指令強化了處理器在浮點轉(zhuǎn)換至整數(shù)、復(fù)雜算法、視頻編碼、SIMD浮點寄存器操作以及線程同步等五個方面的表現(xiàn),最終達到提升多媒體和游戲性能的目的。
Intel是從Prescott核心的Pentium 4開始支持SSE3指令集的,而AMD則是從2005年下半年Troy核心的Opteron開始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3與Intel的SSE3并不完全相同,主要是刪除了針對Intel超線程技術(shù)優(yōu)化的部分指令。
★ SSSE3(SSE3S)指令集:加強多媒體圖形圖像處理
SSSE3(Supplemental Streaming SIMD Extensions 3)是Intel命名的SSE3指令集的擴充,不使用新的號碼是因為SSSE3比較像是加強版的SSE3,以至于推出SSSE3之前,SSE4的定義容易被混淆。在公開Intel的Core微架構(gòu)之時,SSSE3出現(xiàn)在Xeon 5100與Intel Core 2移動版與桌面型處理器上。
65nm Core 2 Duo引入SSSE3指令集
SSSE3包含了16個新的不同于SSE3的指令。每一個都能夠運作于64位的MMX寄存器或是128位XMM寄存器之中。因此,有些Intel的文件表示有32個新指令。SSSE3指令集增強了CPU的多媒體、圖形圖象處理、多媒體編碼、整數(shù)運算和Internet等方面的處理能力。
★ SSE4.1指令集:大幅提升浮點運算,優(yōu)化CPU和GPU數(shù)據(jù)共享
SSE4.1指令集被認為是2001年以來Intel最重要的指令集擴展,包含54條指令。Intel在Penryn處理器中加入了對SSE4.1的支持,共增加了47條新指令,令處理器的多媒體處理能力得到最大70%的提升。SSE4加入了6條浮點型點積運算指令,支持單精度、雙精度浮點運算及浮點產(chǎn)生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即轉(zhuǎn)換其路徑模式,大大減少延誤,這些改變將對游戲及3D內(nèi)容制作應(yīng)用有重要意義。
此外,SSE4加入串流式負載指令,可提高以圖形幀緩沖區(qū)的讀取數(shù)據(jù)頻寬,理論上可獲取完整的快取緩存行,即每次讀取64Bit而非8Bit,并可保持在臨時緩沖區(qū)內(nèi),讓指令最多可帶來8倍的讀取頻寬效能提升,對于視訊處理、成像以及GPU與CPU之間的共享數(shù)據(jù)應(yīng)用,有著明顯的效能提升。
45nm Core 2 Duo引入SSE4.1指令集
SSE4指令集讓45nm Penryn處理器增加了2個不同的32Bit向量整數(shù)乘法運算單元,并加入8位無符號(Unsigned)最小值及最大值運算,以及16Bit及32Bit有符號 (Signed) 運算。在面對支持SSE4指令集的軟件時,可以有效的改善編譯器效率及提高向量化整數(shù)及單精度代碼的運算能力。同時,SSE4改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門。
★ SSE4.2指令集:優(yōu)化XML和交互式應(yīng)用性能
在Nehalem架構(gòu)的Core i7處理器中,SSE4.2指令集被引入,加入了STTNI(字符串文本新指令)和ATA(面向應(yīng)用的加速器)兩大優(yōu)化指令。STTNI包含了四條具體的指令。STTNI指令可以對兩個16位的數(shù)據(jù)進行匹配操作,以加速在XML分析方面的性能。Intel表示,新指令可以在XML分析方面取得3.8倍的性能提升。
ATA包括冗余校驗的CRC32指令、計算源操作數(shù)中非0位個數(shù)的POPCNT指令,以及對于打包的64位算術(shù)運算的SIMD指令。CRC32指令可以取代上層數(shù)據(jù)協(xié)議中經(jīng)常用到的循環(huán)冗余校驗,Intel表示其加速比可以達到6.5~18.6倍;POPCNT用于提高在DNA基因配對、聲音識別等包含大數(shù)據(jù)集中進行模式識別和搜索等操作的應(yīng)用程序性能。
緩存的基本作用是用來加速數(shù)據(jù)的傳輸。在電腦當(dāng)中,由于內(nèi)存和硬盤本身的速度較慢,都需要一個可以加速指令執(zhí)行和數(shù)據(jù)預(yù)取的緩沖區(qū),這個零時緩存就相當(dāng)于部隊里的集結(jié)待命區(qū),它里邊的內(nèi)容是不斷的在變化的。
緩存的作用和原理
一級緩存(L1)是內(nèi)置在CPU芯片內(nèi)部的一個存儲區(qū)。二級緩存(L2)是第2塊“集結(jié)待命區(qū)”(Staging Areas),它的用處就是給L1喂數(shù)據(jù)。L2可能內(nèi)置于CPU之中,也可能是MCP(Multichip Package Module)里的一個獨立芯片中,還可能是在主板上的一塊獨立存儲芯片里。
典型的,緩存一般是SRAM(Static RAM,靜止隨機存儲器,不需要刷新電路即能保存它內(nèi)部存儲的數(shù)據(jù)),而主內(nèi)存通常是DRAM(Dynamic RAM,動態(tài)隨機存儲器,需要刷新電路)。SRAM非常消耗晶體管、成本高昂而且容量不可能做很大,因此最早的CPU都是沒有緩存的,后來才開始加入緩存芯片。
★ 插在主板上的二級緩存(或者整合在主板上)
Intel 430FX芯片組上Socket 5主板及256KB外置二級緩存
此前的CPU一直都是Socket接口設(shè)計,但以當(dāng)時的技術(shù),直插式的設(shè)計無法在CPU上整合SRAM緩存芯片,只能將SRAM以擴展卡的形式插在主板上或者直接整合在主板上。此后數(shù)代產(chǎn)品,Intel和AMD改用了Slot封裝形式,將SRAM芯片和CPU核心都集成在了Slot PCB上面,然后再插在主板上,這樣SRAM二級緩存就正式成為了CPU不可缺少的一部分。
★ 整合在CPU上的二級緩存
這是一顆核心代號為代Klamath、采用350nm工藝的Pentium處理器,CPU+SRAM的結(jié)構(gòu),Slot 1接口??瓷先ナ遣皇怯悬c像現(xiàn)在的GPU+DRAM顯存。實際上這樣做只是上CPU和SRAM綁定在了一起,二級緩存依然以核心頻率一半甚至更低的速度運行,性能不甚理想。
★ “膠水”式的二級緩存
Pentium Pro是Intel P5 核心Pentium的延伸,在1995年11月以Socket 8封裝形式推出,它最大的特色是采用了雙芯片封裝形式,CPU和L2是各自獨立的,片上(Onchip)L2的好處是可以讓它以內(nèi)核相同的頻率運行,而不必再像過去使用主板上較慢速度的L2,從而為“亂序執(zhí)行”所導(dǎo)致的大量內(nèi)存超找提供了捷徑,直接提升了性能。
Pentium Pro把L1和L2同時設(shè)計在CPU的內(nèi)部,故Pentium Pro的體積較大。結(jié)果Pentium II又把L2 Cache移至CPU內(nèi)核之外的黑盒子里。這是因為L2無法達到與核心相同的頻率,因此還是分離式比較靈活一點。
★ 整合進CPU內(nèi)部的二級緩存
Pentium Pro不僅是第一款整合了二級緩存的CPU,而且是第一顆32bit CPU,不過由于它并不兼容當(dāng)時主流的16bit軟件,因此Pentium Pro曲高和寡,僅定位于高端服務(wù)器市場,并沒有得到廣泛認可。此后Intel又發(fā)布了Pentium II XEON,同樣集成了片上全速二級緩存,在當(dāng)時全速二級緩存就代表著更高的性能。
Pentium Pro和Pentium II XEON并非民用產(chǎn)品,因此關(guān)注度并不高,而Pentium II去掉板載SRAM的產(chǎn)品被首次當(dāng)作Celeron來賣,雖然它價格很低廉,但由于L2徹底為0,因此性能損失也非常慘重。為此,Intel推出了第二代Celeron 300A和Celeron 333,新賽揚的特點是在處理器芯片內(nèi)集成了128KB二級高速緩存,容量上雖然比Pentium II的512KB少很多,但新賽揚的二級緩存在CPU內(nèi)部,是全速的片上緩存,而Pentium的二級緩存頻率只有核心的一半。正是這全速的二級緩存給與了Celeron質(zhì)的改變,極大的改善了賽揚的整體性能,成為當(dāng)時市場上炙手可熱的一代經(jīng)典產(chǎn)品!
首次出現(xiàn)三級緩存
而當(dāng)時的AMD也有一款經(jīng)典產(chǎn)品,同樣是因為集成了全速二級緩存而讓性能產(chǎn)生質(zhì)的飛躍,性能遙遙領(lǐng)先與同代Intel處理器,它就是K6-II和K6-III。
K6-II和K6-III使用的是Socket 7插槽,其性能比Intel后來的Pentium 3都要強,為什么?因為這K6-III CPU均內(nèi)建了256KB的二級緩存,而且配套主板上還能再插2M容量的SRAM當(dāng)作三級緩存使用,此時的性能比Pentium II拉開了較大的差距,而且其價格還比較實惠。
★ 奔三和速龍初期依然用外置二級緩存,后期全部整合全速緩存
提起奔三和速龍相信很多人就比較熟悉了,它們應(yīng)該可以說是CPU的近代現(xiàn)代史了,不過奔三和速龍發(fā)布之初依然使用的Slot卡槽式封裝,二級緩存依然是外置式,運行頻率只有核心速度的一半,性能受到了限制。
初期Slot 1和Slot A接口的Pentium III和Athlon
制造工藝改進之后,Intel和AMD相繼把L2整合在了CPU內(nèi)部,成為單一的CPU核心,以大家喜聞樂見的Socket封裝形式出現(xiàn),全速的L2讓奔三和速龍的性能都有所提升:
Socket 370和Socket A接口的Pentium III和Athlon
Pentium III和Athlon角逐1GHz大關(guān)的頻率大戰(zhàn),最終Intel因為Pentium III 1.13GHz BUG問題而敗北。而其問題的關(guān)鍵就是內(nèi)置的二級緩存無法工作在1GHz以上的超高頻率下,從而產(chǎn)生不可預(yù)料的錯誤。
CPU二級緩存之所以對CPU性能影響重大,就是因為內(nèi)存的延遲較大、帶寬太小,滿足不了CPU密集型數(shù)據(jù)交換的需要,需要高速運作中轉(zhuǎn)站二級緩存的支持。在二級緩存被CPU整合之后,大容量的內(nèi)存顯然是無法被整合到CPU里面的,那么如何才能進一步優(yōu)化內(nèi)存性能呢?
以往,CPU與內(nèi)存之間的通信是通過北橋和進行的,準確的說是北橋當(dāng)中的內(nèi)存控制器,它決定了系統(tǒng)能支持內(nèi)存的容量、頻率和延遲。為了盡可能的縮小CPU訪問內(nèi)存的時間,顯然CPU整合內(nèi)存控制器是最高效的方法。
AMD率先將內(nèi)存控制器整合在了CPU當(dāng)中,Athlon 64這款劃時代的產(chǎn)品成為了一代經(jīng)典,當(dāng)然其成功的原因不僅僅是因為整合了內(nèi)存控制器,它還是第一顆64bit X86處理器,第一次使用了點對點的高速低延遲HT總線。AMD這次一領(lǐng)先就是五年,Intel直到Core i7時代才整合了內(nèi)存控制器。
AMD當(dāng)年為Athlon 64處理器整合了單通道DDR和雙通道DDR兩種內(nèi)存控制器,分別對應(yīng)754和939接口,此后逐步升級至雙通道DDR2和DDR3內(nèi)存控制器。而Intel是后來者居上,直接整合了三通道DDR3內(nèi)存控制器,中低端產(chǎn)品也整合了雙通道DDR3內(nèi)存控制器,分別對應(yīng)1366和1156接口。消除了內(nèi)存瓶頸之后的Core i3/i5/i7處理器性能更上一層樓,大幅領(lǐng)先于同級AMD產(chǎn)品。
高頻低能的Pentium 4和Pentium D苦苦抵抗Athlon 64和Athlon 64 X2瘋狂進攻的同時,Intel也在秘密研發(fā)新一代Core微處理器架構(gòu),全新的Core 2 Duo雖然沒有整合內(nèi)存控制器,但憑借高效率、低層級流水線和融合大量先進技術(shù)的指令架構(gòu),Core 2 Duo一舉擊敗Athlon 64 X2成為新的性能之王。
當(dāng)然,Intel還有另外一項創(chuàng)新性的技術(shù)也助Core 2 Duo一臂之力,拉大與對手的優(yōu)勢,它就是Intel Advanced Smart Cache(高級智能緩存技術(shù)),簡單來講就是多顆處理器核心共享大容量緩存,通常被稱為共享式大容量二級緩存。
傳統(tǒng)的雙核心設(shè)計每個獨立的核心都有自己的L2,但Intel Core微架構(gòu)則是通過核心內(nèi)部的Shared Bus Router共用相同的L2,當(dāng)CPU 1運算完畢后把結(jié)果存在L2時,CPU 0便可通過Shared Bus Router讀取CPU 1放在共用L2上資料,大幅減低讀取上的延遲并減少使用FSB帶寬,同時加入L2 & DCU Data Pre-fetchers及Deeper Write output緩沖存儲器,大幅增加了緩存的命中率。
與AMD K8雙核心L2架構(gòu)相比,CPU 0需要讀取CPU 2 L2中數(shù)據(jù)時,首先需要向系統(tǒng)總線發(fā)出需求,并通過Crossbar Switch就把取讀資料,但CPU 0發(fā)現(xiàn)讀取自己的L2沒有所要的數(shù)據(jù)才會要求讀取CPU 1的L2資料,情況等同于CPU 0的L3,而共享式的L2設(shè)計卻沒有以上需要。
Smart Cache架構(gòu)還有很多不同的好處,例如當(dāng)兩顆核心工作量不平均時,如果獨立L2的雙核心架構(gòu)有機會出現(xiàn)其中一顆核心工作量過少,L2沒有被有效地應(yīng)用,但另一顆核心的L2卻因工作量過重,L2容量沒法應(yīng)付而需要傳取系統(tǒng)內(nèi)存,值得注意的是它并無法借用另一顆核心的L2空間,但SmartCache因L2是共用的而沒有這個問題。
共享式L2不但能夠減少兩顆核心之間讀取緩存數(shù)據(jù)的延遲、提高數(shù)據(jù)命中率,而且還能有效提高緩存利用率,避免分離式緩存存放重復(fù)數(shù)據(jù)的可能,變相提高的緩存容量。Intel上代的Core 2 Duo和Core 2 Quad至今在性能方面并不輸給AMD的Phenom II系列處理器,其中共享式二級緩存設(shè)計功不可沒。
★ 共享式三級緩存已成為主流:
共享式二級緩存固然擁有諸多優(yōu)勢,但需要對傳統(tǒng)CPU架構(gòu)進行大幅調(diào)整,雙核心還算容易、多核心就比較麻煩了,緩存的存取機制都需要完全重新設(shè)計。因此AMD另辟蹊徑,在保持現(xiàn)有二級緩存不變的情況下,直接新增大容量的三級緩存,從而為多核提供協(xié)同運算的高速暫存數(shù)據(jù)倉庫。
AMD初代的Phenom四核處理器就采用了共享式三級緩存設(shè)計,每顆核心的一級緩存保持不變,二級緩存都是獨立的512KB,三級緩存為一體式的2MB。而到了Phenom II代,45nm工藝使得處理器能夠整合更大容量的緩存,于是L3倍增至6MB,性能提升非常明顯。
Core i7 Die示意圖
Intel在Core 2 Quad之后,也在醞釀全新的原生四核產(chǎn)品,此次Intel集所有先進技術(shù)于一體,不僅整合了內(nèi)存控制器,而且引入了比AMD HT更先進的QPI總線,還引入了共享式三級緩存,容量高達8MB,比Phenom II還多2MB。
至于低端的雙核Core i3/i5處理器,Intel為了保持架構(gòu)統(tǒng)一,也放棄了Core 2上面的共享二級緩存設(shè)計,每顆核心僅有256KB的獨立L2,而是植入了4M容量的L3,雖然總緩存容量不如E8X00系列的6MB L2,但性能上還是取得了長足的進步。
此后,32nm工藝的引入使得Intel可以在單一芯片之中集成更多的核心和更大的緩存,所以我們看到i7-980X擁有六顆物理核心以及高達12MB的L3,性能更上一層樓,令人嘆為觀止!
在了解了CPU的發(fā)展歷程之后,我們再來看看GPU的發(fā)展過程,其實GPU很多重大改進都與CPU的技術(shù)架構(gòu)相類似。比如最開始我們介紹了古老的CPU協(xié)處理器,下面再介紹一個被遺忘的產(chǎn)品——解壓卡,資歷較老的玩家應(yīng)該記得。
十多年前,電腦的CPU主頻很低,顯卡也多為2D顯示用,當(dāng)VCD興起的時候,好多電腦(主頻為100MHz以下)無法以軟解壓的方式看VCD影片,根本運行不起來!
ISA接口的VCD解壓卡
這時,VCD解壓卡就出現(xiàn)了,此卡板載專用的解碼處理器和緩存,實現(xiàn)對VCD的硬解碼,不需要CPU進行解碼運算,所以,即使在386的電腦上也可以看VCD了。
PCI接口的DVD解壓卡
隨后,顯卡進入了3D時代,并紛紛加入支持VCD的MPEG解碼,而且CPU的主頻也上來了,無論CPU軟解還是顯卡輔助解碼都可以流暢播放視頻,所以VCD解壓卡就退出了市場!
但DVD時代來臨后,分辨率提高很多,而且編碼升級至MPEG2,對于CPU和顯卡的解碼能力提出了新的要求,此時出現(xiàn)了一些DVD解壓卡,供老機器升級之用,但由于CPU更新?lián)Q代更加頻繁,性能提升很大,DVD解壓卡也是曇花一現(xiàn),就消失無蹤了。
現(xiàn)在已經(jīng)是1080p全高清時代了,高清視頻解碼依然是非常消耗CPU資源的應(yīng)用之一,于是幾年前NVIDIA和ATI就在GPU當(dāng)中整合了專用的視頻解碼模塊,NVIDIA將其稱為VP(Video Processor,視頻處理器),ATI將其稱為UVD(Unified Video Decoder,通用視頻解碼器),相應(yīng)的技術(shù)被叫做PureVideo和AVIVO。
硬解碼幾乎不消耗CPU和GPU的資源,看高清視頻時接近于待機狀態(tài)
雖然VP和UVD都被整合在了GPU內(nèi)部,實際上它們的原理和作用與當(dāng)年的協(xié)處理器/解壓卡芯片沒有實質(zhì)性區(qū)別,都是為了減輕/分擔(dān)處理器的某項特定任務(wù)。如今NVIDIA和ATI的GPU硬解碼技術(shù)都能夠支持高分辨率、高碼率、多部影片同時播放,性能和兼容性都很出色。
如今多核CPU的性能已經(jīng)相當(dāng)強大了,軟解高清視頻簡直輕松加愉快,但要論效率的話,依然是GPU硬件解碼更勝一籌,專用模塊解碼消耗資源更少,整機功耗發(fā)熱更小,因此手持設(shè)備和移動設(shè)備都使用硬件解碼,而桌面電腦CPU軟解和GPU硬解就無所謂了。
掐指一算,從GPU誕生至今雙方都已推出了十代產(chǎn)品,每一代產(chǎn)品之間的對決都令無數(shù)玩家心動不已,而其中最精彩的戰(zhàn)役往往在微軟DirectX API版本更新時出現(xiàn),幾乎可以說是微軟DirectX左右著GPU的發(fā)展,而歷代DirectX版本更新時的核心內(nèi)容,恰恰包含在了ShaderModel當(dāng)中:
ShaderModel 1.0 → DirectX 8.0
ShaderModel 2.0 → DirectX 9.0b
ShaderModel 3.0 → DirectX 9.0c
ShaderModel 4.0 → DirectX 10
ShaderModel 5.0 → DirectX 11
Shader(譯為渲染或著色)是一段能夠針對3D對象進行操作、并被GPU所執(zhí)行的程序,ShaderModel的含義就是“優(yōu)化渲染引擎模式”,我們可以把它理解成是GPU的渲染指令集。
高版本的ShaderModel是一個包括了所有低版本特性的超集,對一些指令集加以擴充改進的同時,還加入了一些新的技術(shù)??梢哉f,GPU的ShaderModel指令集與CPU的MMX、SSE等擴展指令集十分相似。
隨著ShaderModel指令集的擴充與改進,GPU的處理資源和計算精度與日俱增,于是就有能力渲染出更加精美的圖像,并且不至于造成性能的大幅下降。就拿最近幾個版本來講,新指令集并沒有帶來太多新的特效,但卻憑借優(yōu)秀的算法提升了性能,是否支持DX10.1(ShaderModel 4.1)可能游戲畫面上沒有差別,但速度就很明顯了。
此外,DX11中的關(guān)鍵技術(shù)DirectCompute通用計算技術(shù)就是通過調(diào)用ShaderModel 5.0中的新指令集來提高GPU的運算效率,很多基于DirectCompute技術(shù)的圖形后處理渲染特效也都要用到SM5.0指令集來提高性能。
從以往的多處理器系統(tǒng)到現(xiàn)在的雙核、四核、六核,CPU只能依靠增加核心數(shù)量來提升性能。而GPU從一開始就是作為并行渲染的管線式架構(gòu),GPU性能的強弱主要就是看誰的管線、流處理器數(shù)量更多。
不過雙顯卡甚至多顯卡也成為提升電腦游戲性能的一種途徑,通過SLI和CrossFire技術(shù)能夠輕松讓3D性能倍增,于是雙核心的顯卡成為NVIDIA和AMD雙方角逐3D性能王者寶座的殺手锏,近年來的旗艦級顯卡幾乎都是雙核心設(shè)計的。
但與CPU單芯片整合多核心的設(shè)計不同,顯卡一般是單卡多GPU設(shè)計,很少有單一GPU多核心設(shè)計,因為GPU性能提升的瓶頸主要在于制造工藝,只要工藝跟得上,那么他們就有能力在GPU內(nèi)部植入盡可能多的流處理器。
★ 雙核心設(shè)計的Cypress核心:
不管GPU架構(gòu)改不改,流處理器數(shù)量總是要擴充的,準確的說是以級數(shù)規(guī)模增長,這樣才能大幅提升理論性能。在流處理器數(shù)量急劇膨脹之后,如何管理好如此龐大的規(guī)模、并與其它模塊協(xié)調(diào)工作成為新的難題。
RV870的雙核心模塊設(shè)計
ATI RV870包括流處理器在內(nèi)的所有核心規(guī)格都比RV770翻了一倍,ATI選擇了“雙核心”設(shè)計,幾乎是并排放置兩顆RV770核心,另外在裝配引擎內(nèi)部設(shè)計有兩個Rasterizer(光柵器)和Hierarchial-Z(多級Z緩沖模塊),以滿足雙倍核心規(guī)格的胃口。
★ 四核心設(shè)計的GF100核心:
GF100可以看作是四核心設(shè)計
如果說Cypress是雙核心設(shè)計的話,那么GF100的流處理器部分就是“四核心”設(shè)計,因為GF100擁有四個GPC(圖形處理器集群)模塊,每個GPC內(nèi)部包含一個獨立的Raster Engine(光柵化引擎),而在以往都是整顆GPU共享一個Raster Engine。
我們知道RV870的Rasterizer和Hierarchial-Z雙份的,而GF100則是四份的,雖然命名有所不同但功能是相同的。
GF100的每個GPC都可以看作是一個自給自足的GPU
GF100的四個GPC是完全相同的,每個GPC內(nèi)部囊括了所有主要的圖形處理單元。它代表了頂點、幾何、光柵、紋理以及像素處理資源的均衡集合。除了ROP功能以外,GPC可以被看作是一個自給自足的GPU,所以說GF100就是一顆四核心的GPU。
★ 為什么GPU也會設(shè)計成多核心?
GPU本身就是一顆并行處理器,每一個流處理器都是一個獨立的運算單元,ATI和NVIDIA雙方第一次將GPU設(shè)計成為多核心方案,并不是為了提升其運算能力和流處理器資源,而是為了更好的管理和控制龐大規(guī)模的流處理器,更充分的利用它們的處理能力,以便在不同的應(yīng)用環(huán)境下發(fā)揮出最強效能。
雖說流處理器數(shù)量決定著GPU的浮點運算能力,但GPU除了單純的數(shù)學(xué)運算外,還要處理諸多不同類型的任務(wù),將龐大的流處理器劃分為多個獨立的區(qū)塊,每個區(qū)塊都設(shè)計專用的控制引擎和特殊功能模塊,這將會有效的平衡各個功能模塊的資源利用率。
GPU內(nèi)部擁有很多種類型的緩存,不同的緩存都有各自特殊的用途,往往無法互相兼容,這完全不同與CPU內(nèi)部L1、L2、L3這樣簡單的層級關(guān)系。
★ Cypress的一級緩存:固定功能、固定容量的專用緩存
AMD的Cypress核心內(nèi)部的流處理器是按照SIMD(單指令多數(shù)據(jù)流)劃分的,每組SIMD陣列內(nèi)部包括了80個流處理器,這些流處理器擁有獨立的紋理單元和一級緩存(L1)以及本地數(shù)據(jù)共享緩存(Local Data Share)。
為了滿足DX11中DirectCompute 11的要求,AMD增加了本地數(shù)據(jù)共享緩存的大小(Local Data Share,LDS),容量達到了32KB,是RV770的兩倍。LDS用于同一個線程組(Thread Group)中的線程共享數(shù)據(jù)。從上圖中我們可以看到,每一個SIMD連接一個LDS,不同的SIMD是不能共享LDS的,因此所有屬于同一個線程組的線程都會被線程調(diào)度器發(fā)送到同一個SIMD上執(zhí)行。
如果不同的SIMD上的線程要共享數(shù)據(jù),需要用到全局數(shù)據(jù)共享緩存(Global Data Share,GDS)。在Cypress中,GDS的容量也倍增了,達到64KB。到目前為止,我們對GDS的了解仍然有限,與LDS不同,并沒有指令能顯式的操作GDS。據(jù)Beyond3D的消息,在未來的OpenCL擴展中可能會提供對GDS的訪問,目前GDS只對編譯器可見。
★ GF100的一級緩存:可動態(tài)分配容量的多功能智能緩存
以往的GPU都是沒有一級緩存的,只有一級紋理緩存,因為這些緩存無法在通用計算中用于存儲計算數(shù)據(jù),只能用于在紋理采樣時暫存紋理。而在GF100當(dāng)中,NVIDIA首次引入真正的一級高速緩存,而且還可被動態(tài)的劃分為共享緩存。
在GF100 GPU中,每個SM除了擁有專用的紋理緩存外,還擁有64KB容量的片上緩存,這部分緩存可配置為16KB的一級緩存+48KB共享緩存,或者是48KB一級緩存+16KB共享緩存。這種劃分方式完全是動態(tài)執(zhí)行的,一個時鐘周期之后可自動根據(jù)任務(wù)需要即時切換而不需要程序主動干預(yù)。
一級緩存與共享緩存是互補的,共享緩存能夠為明確界定存取數(shù)據(jù)的算法提升存取速度,而一級緩存則能夠為一些不規(guī)則的算法提升存儲器存取速度。在這些不規(guī)則算法中,事先并不知道數(shù)據(jù)地址。
對于圖形渲染來說,重復(fù)或者固定的數(shù)據(jù)比較多,因此一般是劃分48KB為共享緩存,當(dāng)然剩下的16KB一級緩存也不是完全沒用,它可以充當(dāng)寄存器溢出的緩沖區(qū),讓寄存器能夠?qū)崿F(xiàn)不俗的性能提升。
而在并行計算之中,一級緩存與共享緩存同樣重要,它們可以讓同一個線程塊中的線程能夠互相協(xié)作,從而促進了片上數(shù)據(jù)廣泛的重復(fù)利用并減少了片外的通信量。共享存儲器是使許多高性能CUDA應(yīng)用程序成為可能的重要促成因素。
★ 可動態(tài)分配的共享式一級緩存大幅提升并行計算效率
再來算算一級緩存的總?cè)萘?,Cypress擁有8KBx20=160KB的一級緩存,和32KBx20=640KB的本地數(shù)據(jù)共享緩存,還有額外的64KB全局數(shù)據(jù)共享緩存。
而GF100擁有64KBx16=1MB容量的一級緩存+共享緩存,他們可以被動態(tài)的劃分為256KB一級緩存+768KB共享緩存,或者768KB一級緩存+256KB共享緩存,另外還有12KBx16=192KB的紋理緩存,無論從哪個方面來比較,都要比Cypress強很多。
此次NVIDIA創(chuàng)新性的可動態(tài)劃分一級緩存設(shè)計,是以往CPU上面都不曾有過的先進技術(shù),大幅提升了GPU并行計算的數(shù)據(jù)處理能力,使得GPU龐大的流處理器資源在高負荷密集型運算時不至于出現(xiàn)瓶頸,從而發(fā)揮出恐怖的浮點運算能力。
再來看看GPU二級緩存部分的設(shè)計,這一方面就與CPU非常相似了。
★ Cypress的二級緩存:綁定顯存控制器的分離式設(shè)計
以往的GPU,包括NVIDIA上代的GT200以及AMD最新的Cypress核心,二級緩存都是與顯存控制器綁定在一起的,其作用就是縮短GPU到顯存的響應(yīng)時間。由于顯存控制器一般都是64bit一組,為多組模塊化設(shè)計,因此二級緩存也被劃分為N個獨立的模塊,而不是統(tǒng)一的整體。
Cypress:L2綁定Memory Controller
Cypress擁有4個64bit顯存控制器,每個顯存控制器綁定128KB容量的二級緩存,總計512KB,這個容量要比NVIDIA上代的GT200大一倍。
★ GF100的二級緩存:統(tǒng)一的大容量高速緩存
而GF100擁有一個768KB容量統(tǒng)一的二級高速緩存,該緩存可以為所有載入、存儲以及紋理請求提供服務(wù)。二級緩存可在整個GPU中提供高效、高速的數(shù)據(jù)共享。物理效果、光線追蹤以及稀疏數(shù)據(jù)結(jié)構(gòu)等事先不知道數(shù)據(jù)地址的算法在硬件高速緩存上的運行優(yōu)勢尤為明顯。后期處理過濾器需要多個SM才能讀取相同的數(shù)據(jù),該過濾器與存儲器之間的距離更短,從而提升了帶寬效率。
統(tǒng)一的共享式緩存比單獨的緩存效率更高。在獨享式緩存設(shè)計中,即使同一個緩存被多個指令預(yù)訂,它也無法使用其它緩存中未貼圖的部分。高速緩存的利用率將遠低于它的理論帶寬。GF100的統(tǒng)一共享式二級高速緩存可在不同請求之間動態(tài)地平衡負載,從而充分地利用緩存。二級高速緩存取代了之前GPU中的二級紋理緩存、ROP緩存以及片上FIFO。
GF100的緩存架構(gòu)讓各流水線之間可以高效地通信,減少了顯存讀寫操作
統(tǒng)一的高速緩存還能夠確保存儲器按照程序的順序執(zhí)行存取指令。當(dāng)讀、寫路徑分離(例如一個只讀紋理路徑以及一個只寫ROP路徑)時,可能會出現(xiàn)先寫后讀的危險。一個統(tǒng)一的讀/寫路徑能夠確保程序的正確運行,同時也是讓NVIDIA GPU能夠支持通用C/C++程序的重要因素。
與只讀的GT200二級緩存相比,GF100的二級高速緩存既能讀又能寫,
而且是完全一致的。NVIDIA采用了一種優(yōu)先算法來清除二級緩存中的數(shù)據(jù),這種算法包含了各種檢查,可幫助確保所需的數(shù)據(jù)能夠駐留在高速緩存當(dāng)中。
★ GF100共享式二級緩存堪比酷睿2:
可以看出,ATI的一二級緩存都是完全分散的,為了協(xié)調(diào)一二級緩存之間的數(shù)據(jù)交換,ATI特意設(shè)計了一個可全局共享的64KB數(shù)據(jù)緩存。
而GF100的一級緩存可以根據(jù)需求動態(tài)的為共享緩存或者一級緩存分配較大的容量,從而加速數(shù)據(jù)處理。二級緩存更是大容量一體式設(shè)計,當(dāng)線程組在一級緩存中找不到數(shù)據(jù)時,可以直接從“海量”的二級緩存中索取,縮短了數(shù)據(jù)請求與定址時間,消除了瓶頸。
至于獨享式緩存與共享式緩存的效率與性能,無需多言,大家可參照CPU的發(fā)展即可略知一二。
★ CPU發(fā)展趨勢:不斷的整合功能模塊
通過前面詳細的介紹我們可以發(fā)現(xiàn),CPU的發(fā)展趨勢就是不斷去整合更多的功能和模塊,從協(xié)處理器、到緩存、再到內(nèi)存控制器甚至整個北橋。
目前AMD和Intel的所有主流CPU都已經(jīng)整合了內(nèi)存控制器,Intel最新的Lynnfield(Core i7 8XX和i5 7XX)已經(jīng)整合了包括PCIE控制器在內(nèi)的整個北橋,而Clarkdale(Core i5 6XX和i3 5XX)更是將GPU也整合了進去。
★ GPU發(fā)展趨勢:不斷的蠶食CPU功能
至于GPU,從某種意義上來說,它本身就是一顆協(xié)處理器,主要用于圖像、視頻、3D加速。之所以這么多年來沒有被CPU所整合,是因為GPU實在太復(fù)雜了,以現(xiàn)有的制造工藝限制,CPU不可能去整合一顆比自身規(guī)模還要大很多的GPU,它頂多只能整合一顆主流中低端的GPU,而這樣的產(chǎn)品只能定位入門級,無法滿足游戲玩家和高性能計算的需要。
GPU從誕生至今一步步走來,就是在不斷蠶食著原本屬于CPU的功能,或者說是幫助CPU減負、去處理哪些CPU并不擅長的任務(wù)。比如最開始的T&L(坐標(biāo)轉(zhuǎn)換與光源)、VCD\\DVD\\HD\\BD視頻解碼、物理加速、幾何著色。而今后和未來,GPU將奪走一項CPU最重要的功能——并行計算、高精度浮點運算。
★ GPU前途似錦:浮點運算的未來
我們知道,CPU第一個整合的就是專門用來加速浮點運算的協(xié)處理器,此后歷代SSE指令集也都是為了加強CPU的SIMD(單指令多數(shù)據(jù)流)浮點運算性能。而GPU打從一開始就被設(shè)計成為了SIMD架構(gòu)(至今Cypress也還是這種架構(gòu)),擁有恐怖浮點運算能力的處理器。當(dāng)今GPU的浮點運算能力更是達到多核CPU的幾十倍甚至上百倍!
CPU和GPU的浮點運算能力
CPU永遠都趕不上GPU的發(fā)展速度,因此最適合進行浮點運算的顯然是GPU,CPU繼續(xù)擴充核心數(shù)目已經(jīng)變得毫無意義,因此整個業(yè)界都在想方設(shè)法的發(fā)掘GPU的潛能,將所有的并行計算任務(wù)都轉(zhuǎn)移到GPU上面來。即便是Intel也看到了GPU廣闊的前景,因此著手研發(fā)GPU。
此前由于API和軟件的限制,GPU在并行計算方面的應(yīng)用舉步維艱、發(fā)展緩慢,NVIDIA孤身推廣CUDA架構(gòu)雖然小有成就但孤掌難鳴。好在OpenCL和DirectCompute兩大API的推出讓GPU并行計算的前途豁然開朗,此時ATI和NVIDIA又重新站在了同一起跑線上,那么很顯然誰的架構(gòu)更適合并行計算,那么誰就能獲得更強的性能和更大范圍的應(yīng)用,通過本文的分析可以看出,ATI的架構(gòu)依然是專注于傳統(tǒng)的圖形渲染,并不適合并行計算;而NVIDIA的架構(gòu)則完全針對通用計算API和指令集優(yōu)化設(shè)計,確保能發(fā)揮出接近理論值最大效能,提供最強的浮點運算性能!
★ CPU面臨拐點:強化整數(shù)性能,浮點運算交給GPU
AMD同時擁有CPU和GPU,而且AMD在技術(shù)方面往往能夠引領(lǐng)業(yè)界,因此其未來發(fā)展規(guī)劃非常值得大家思考。根據(jù)AMD最新的產(chǎn)品路線圖來看,其下一代的高端CPU核心Bulldozer(推土機),它最大的亮點就是每一顆核心擁有雙倍的整數(shù)運算單元,整數(shù)和浮點為非對稱設(shè)計:
AMD下一代“推土機”架構(gòu),大幅強化整數(shù)運算單元
在一個推土模塊里面有兩個獨立的整數(shù)核心,每一個都擁有自己的指令、數(shù)據(jù)緩存,也就是scheduling/reordering邏輯單元。而且這兩個整數(shù)單元的中的任何一個的吞吐能力都要強于Phenom II上現(xiàn)有的整數(shù)處理單元。Intel的Core構(gòu)架無論整數(shù)或者浮點,都采用了統(tǒng)一的scheduler(調(diào)度)派發(fā)指令。而AMD的構(gòu)架使用獨立的整數(shù)和浮點scheduler。
據(jù)AMD透露,目前存在于服務(wù)器上的80%的操作都是純粹的整數(shù)操作,因此AMD新一代CPU大幅加強了整數(shù)運算單元而無視浮點運算單元。而且,隨著CPU和GPU異構(gòu)計算應(yīng)用越來越多,GPU將會越來越多的負擔(dān)起浮點運算的操作,預(yù)計未來3-5年的時間內(nèi),所有浮點運算都將會交給最擅長做浮點運算的GPU,這也就是推土機加強整數(shù)運算的真正目的。
當(dāng)然,AMD和Intel都會推出CPU整合GPU的產(chǎn)品,不管是膠水還是原生的解決方案,其目的并不是為了消滅顯卡和GPU,而是通過內(nèi)置的GPU為CPU提供強大的浮點運算能力。但由于制造工藝所限,被CPU所整合的GPU不是集成卡就是中低端,只能滿足基本需求。所以想要更強大的游戲性能和并行計算性能的話,專為浮點運算而設(shè)計的新一代架構(gòu)的GPU產(chǎn)品,才是最明智的選擇。
所以說,CPU和GPU,誰也不可能取代誰,雙方是互補的關(guān)系,只有CPU和GPU協(xié)同運算,各自去處理最擅長的任務(wù),才能發(fā)揮出計算機最強的效能。CPU會整合GPU的,但僅限中低端產(chǎn)品;GPU會取代CPU進行浮點運算的,但它仍然需要CPU來運行操作系統(tǒng)并控制整個計算機。只有當(dāng)制造工藝發(fā)達到一定程度時才有可能將CPU和GPU完美融合在一起,到時候是CPU整合GPU還是GPU整合CPU都很難說,但誰被誰整合已經(jīng)不重要了。■<
關(guān)注我們
