<cite id="c3tjm"></cite>

<style id="c3tjm"></style>
    1. 无线亚洲成人,亚洲精品乱码久久久久99,久久久久久AV无码免费网站动漫,亚洲无码五区,国模久久,亚洲色人,四虎AV,熟女综合网
      泡泡網顯卡頻道 PCPOP首頁      /      顯卡     /      評測    /    正文

      從CPU架構和技術的演變看GPU未來發展

          泡泡網顯卡頻道5月28日 自從AMD提出Fusion(融聚)的概念、NVIDIA加大力度推廣GPU通用計算、Intel率先將CPU和GPU整合在一起之后,大家就會發現CPU和GPU從沒如此親密無間過,CPU和GPU之間有著太多的共同點使得它們的界限也開始模糊了起來。

      從CPU架構和技術的演變看GPU架構發展

          喜歡研究IT硬件技術的朋友應該知道,CPU和GPU都是由整數運算單元、浮點運算單元、一級緩存、二級緩存、內存控制器等等模塊組成的,但最終它們的應用領域又是截然不同的。

          到底是GPU取代CPU進行并行計算呢?還是CPU整合GPU成為大勢所趨?這兩種說法顯然是相互對立的,均有不少支持者。但這只是表像,真正產生這一現狀的原因依然隱藏在CPU和GPU的架構之中,通過筆者后文中的分析您會發現這兩種說法不但不矛盾,反而代表了Intel、AMD和NVIDIA三大巨頭已經達成的共識,他們正在以各自不同的方式去實現相同的目標。

      從CPU架構和技術的演變看GPU架構發展

      CPU和GPU的整體結構相似,但側重點不同

          事實上,CPU和GPU都保持著一套相對固定的趨勢,按照各自的軌跡在不停的發展、演變,兩者在技術和架構方面有著很多不謀而合的共同點,而且最終也因為相同的目的而走到了一起。那么,CPU和GPU的碰撞將會亮出什么樣的火花,未來的發展方向會朝向何處呢?下面我們就通過CPU和GPU的發展史來推測未來產品應該具備什么樣的特征。

          首先我們來重拾一個幾乎快要被遺忘的名詞——協處理器,它是一種芯片,用于減輕系統微處理器的特定處理任務,早些年協處理器主要是用以輔助進行浮點運算。

      最初的CPU只能進行整點運算,浮點運算效率極低

          CPU最基本的運算就是“加減乘除”,但實際上計算機只能用加法器來完成整數以及固定小數點位置(整點)的算術運算,而不能處理小數點可以浮動的數值(浮點)。對于小數多采用的是二進制的科學計數法、也就是浮點數表示法:尾數、階數符號位各占一位,然后再對其余數位尾數、階數的有效數位合理分配。

          在CPU運算時,浮點數的運算量遠比整數復雜,因為不僅尾數要參與運算,階數也要參與,并且需要對尾數和階數的符號位都進行處理,所以,最早的CPU并沒有能力進行浮點運算(8088/8086,80286,80386SX),需要浮點運算時,由CPU通過軟件模擬來實現,所以,進行浮點運算時就會慢很多。

      協處理器誕生,專門處理浮點運算

      從CPU架構和技術的演變看GPU架構發展

      8086處理器和它的協處理器8087

          8086是當今CPU的鼻祖,所謂X86架構也就是指8086處理器所開創的指令集體系。為了彌補8086在進行浮點運算時的不足,Intel與1980年設計了8087數學協處理器,并且為X86體系推出了第一個浮點格式IEE754。8087提供兩個基本的32/64bit浮點資料形態和額外的擴展80bit內部支援來改進復雜運算之精度。除此之外,8087還提供一個80/17bit封裝BCD (二進制編碼之十進制)格式以及16/32/64bit整數資料形態。

      從CPU架構和技術的演變看GPU架構發展

      386處理器和它的協處理器387

          X87協處理器新增約60個指令給程序員,所有的指令都是以“F”開頭跟其他的標準8086整數運算指令有所區別,舉例來說,相對于ADD/MUL,8087提供FADD/FMUL。

          8087是于1980年發布,然后被80287、80387DX/SX和487SX所取代。

      協處理器被整合進入CPU內部

          以往,協處理器都是可選配件,在主板上X86處理器旁邊一般都會為X87設計一個空的插槽,只有當用戶確實有需要時才會專門購買相應的X87協處理器插進去,來加速浮點運算。

      從CPU架構和技術的演變看GPU架構發展

      486DX是第一顆整合了浮點運算協處理器的產品,相當于486SX+487SX

          隨著時代的發展,越來越多的程序要求使用更高精度的浮點運算,X87協處理器幾乎成為必備品。于是在制造工藝日趨成熟之后,Intel在486一代將X86和X87整合在了一起,浮點運算成為了CPU的一項基本功能,而且重要性越來越大。

          Intel 486DX、Pentium之后的CPU都內含了協處理器,AMD K5、K6之后的CPU都內建了協處理器,所以此后就很少有人會提及協處理器的概念了。

          所謂X86架構的處理器就是采用了Intel X86指令集的處理器,X86指令集是Intel公司為其第一塊16位處理器i8086所專門開發的。而IBM在1981年所推出的第一臺PC機上所使用的處理器i8088(i8086的簡化版)也是使用的X86指令集,但是為了增強計算機的浮點運算能力,增加了X87數學協助處理器并引入了X87指令集,于是就將采用了X86指令集和X87指令集的處理器統稱為X86架構的處理器。

          X86基本指令集包括了:數據傳輸、算術運算、邏輯運算、串指令、程序轉移、偽指令、寄存器、位操作、控制指令和浮點運算指令等十大類無數條。而Intel和AMD桌面級處理器在X86指令集的基礎上,為了提升處理器各方面的性能,所以又各自開發新的指令集,它們被稱為處理器擴展指令集。

      從CPU架構和技術的演變看GPU架構發展

          擴展指令集能夠大幅提高CPU在某些特定應用下的性能,如多媒體、3D、浮點運算等,其設計初衷與協處理器是異曲同工的,但協處理器需要增加額外的運算單元,而擴展指令集只需要加入新的指令和算法即可,無需設計新的運算單元,但必須要軟件支持才能發揮功效。

      ★ MMX指令集:增強多媒體性能

        MMX(Multi Media eXtension 多媒體擴展指令)指令集是Intel公司在1996年為旗下的Pentium系列處理器所開發的一項多媒體指令增強技術。MMX指令集中包括了57條多媒體指令,通過這些指令可以一次性處理多個數據,在處理結果超過實際處理能力的時候仍能夠進行正常處理,如果在軟件的配合下,可以得到更強的處理性能。

          MMX指令集非常成功,在之后生產的各型CPU都包括這些指令集。據當年Tom''s Hardware測試,即使最慢的Pentium MMX 166MHz也比Pentium 200MHz普通版要快。

      從CPU架構和技術的演變看GPU架構發展

      Intel Pentium With MMX,首次支持MMX

          但是,MMX指令集的問題也是比較明顯的,MMX指令集不能與X86的浮點運算指令同時執行,必須做密集式的交錯切換才可以正常執行,但是這樣一來,就會造成整個系統運行速度的下降。

      ★ 3DNow!指令集:

          3DNow!指令集最由AMD公司所推出的,該指令集應該是在SSE指令之前推出的,被廣泛運用于AMD的K6-2和K7系列處理器上,擁有21條擴展指令集。在整體上3DNow!的SSE非常相相似,它們都擁有8個新的寄存器,但是3DNow!是64位的,而SSE是128位。

      從CPU架構和技術的演變看GPU架構發展

      AMD K62加入3DNow!指令集

          所以3DNow!它只能存儲兩個浮點數據,而不是四個。但是它和SSE的側重點有所不同,3DNow!指令集主要針對三維建模、坐標變換和效果渲染等3D數據的處理,在相應的軟件配合下,可以大幅度提高處理器的3D處理性能。AMD公司后來又在Athlon系列處理器上開發了新的Enhanced 3DNow!指令集,新的增強指令數達了52個,以致目前最為流行的Athlon 64系列處理器還是支持3DNow!指令的。

      SSE指令集:加強浮點和3D性能

        SSE是Streaming SIMD Extension(SIMD擴展指令集)的縮寫,而其中SIMD的為含意為Single Istruction Multiple Data(單指令多數據),所以SSE指令集也叫單指令多數據流擴展。該指令集最先運用于Intel的Pentium III系列處理器,其實在Pentium III推出之前,Intel方面就已經泄漏過關于KNI(Katmai New Instruction)指令集的消息。這個KNI指令集也就是SSE指令集的前身,當時也有不少的媒體將該指令集稱之為MMX2指令集,但是Intel方面卻從沒有發布有關MMX2指令集的消息。

      從CPU架構和技術的演變看GPU架構發展

      奔騰3正式加入SSE指令集

        最后在Intel推出Pentium III處理器的時候,SSE指令集也終于水落石出。SSE指令集是為提高處理器浮點性能而開發的擴展指令集,它共有70條指令,其中包含提高3D圖形運算效率的50條SIMD浮點運算指令、12條MMX整數運算增強指令、8條優化內存中的連續數據塊傳輸指令。理論上這些指令對當時流行的圖像處理、浮點運算、3D運算、多媒體處理等眾多多媒體的應用能力起到全面提升的作用。SSE指令與AMD公司的3DNow!指令彼此互不兼容,但SSE包含了3DNow!中的絕大部分功能,只是實現的方法不同而已。SSE也向下兼容MMX指令,它可以通過SIMD和單時鐘周期并行處理多個浮點數據來有效地提高浮點運算速度。

      ★ SSE2指令集:進一步優化浮點運算

        在Pentium III發布的時候,SSE指令集就已經集成在了處理器的內部,但因為各種原因一直沒有得到充分的發展。直到Pentium 4發布之后,開發人員看到使用SSE指令之后,程序執行性能將得到極大的提升,于是Intel又在SSE的基礎上推出了更先進的SSE2指令集。

      從CPU架構和技術的演變看GPU架構發展

      奔騰4初代就加入了SSE2指令集(AMD直到Athlon64才加入SSE2)

        SSE2包含了144條指令,由兩個部分組:SSE部分和MMX部分。SSE部分主要負責處理浮點數,而MMX部分則專門計算整數。SSE2的寄存器容量是MMX寄存器的兩倍,寄存器存儲數據也增加了兩倍。在指令處理速度保持不變的情況下,通過SSE2優化后的程序和軟件運行速度也能夠提高兩倍。由于SSE2指令集與MMX指令集相兼容,因此被MMX優化過的程序很容易被SSE2再進行更深層次的優化,達到更好的運行效果。

          SSE2對于處理器的性能的提升是十分明顯的,雖然在同頻率的情況下,Pentium 4和性能不如Athlon XP,但由于Athlon XP不支持SSE2,所以經過SSE2優化后的程序Pentium 4的運行速度要明顯高于Athlon XP。而AMD方面也注意到了這一情況,在隨后的K-8系列處理器中,都加入SSE2指令集。

      ★ SSE3指令集:加強并行數據處理能力

        SSE3指令是目前規模最小的指令集,它只有13條指令。它共劃分為五個應運層,分別為數據傳輸命令、數據處理命令、特殊處理命令、優化命令、超線程性能增強五個部分,其中超線程性能增強是一種全新的指令集,它可以提升處理器的超線程的處理能力,大大簡化了超線程的數據處理過程,使處理器能夠更加快速的進行并行數據處理。

          SSE3中13個新指令的主要目的是改進線程同步和特定應用程序領域,例如媒體和游戲。這些新增指令強化了處理器在浮點轉換至整數、復雜算法、視頻編碼、SIMD浮點寄存器操作以及線程同步等五個方面的表現,最終達到提升多媒體和游戲性能的目的。

          Intel是從Prescott核心的Pentium 4開始支持SSE3指令集的,而AMD則是從2005年下半年Troy核心的Opteron開始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3與Intel的SSE3并不完全相同,主要是刪除了針對Intel超線程技術優化的部分指令。

      SSSE3(SSE3S)指令集:加強多媒體圖形圖像處理

          SSSE3(Supplemental Streaming SIMD Extensions 3)是Intel命名的SSE3指令集的擴充,不使用新的號碼是因為SSSE3比較像是加強版的SSE3,以至于推出SSSE3之前,SSE4的定義容易被混淆。在公開Intel的Core微架構之時,SSSE3出現在Xeon 5100與Intel Core 2移動版與桌面型處理器上。

      從CPU架構和技術的演變看GPU架構發展

      65nm Core 2 Duo引入SSSE3指令集

          SSSE3包含了16個新的不同于SSE3的指令。每一個都能夠運作于64位的MMX寄存器或是128位XMM寄存器之中。因此,有些Intel的文件表示有32個新指令。SSSE3指令集增強了CPU的多媒體、圖形圖象處理、多媒體編碼、整數運算和Internet等方面的處理能力。

      SSE4.1指令集:大幅提升浮點運算,優化CPU和GPU數據共享

          SSE4.1指令集被認為是2001年以來Intel最重要的指令集擴展,包含54條指令。Intel在Penryn處理器中加入了對SSE4.1的支持,共增加了47條新指令,令處理器的多媒體處理能力得到最大70%的提升。SSE4加入了6條浮點型點積運算指令,支持單精度、雙精度浮點運算及浮點產生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即轉換其路徑模式,大大減少延誤,這些改變將對游戲及3D內容制作應用有重要意義。

          此外,SSE4加入串流式負載指令,可提高以圖形幀緩沖區的讀取數據頻寬,理論上可獲取完整的快取緩存行,即每次讀取64Bit而非8Bit,并可保持在臨時緩沖區內,讓指令最多可帶來8倍的讀取頻寬效能提升,對于視訊處理、成像以及GPU與CPU之間的共享數據應用,有著明顯的效能提升。

      45nm Core 2 Duo引入SSE4.1指令集

        SSE4指令集讓45nm Penryn處理器增加了2個不同的32Bit向量整數乘法運算單元,并加入8位無符號(Unsigned)最小值及最大值運算,以及16Bit及32Bit有符號 (Signed) 運算。在面對支持SSE4指令集的軟件時,可以有效的改善編譯器效率及提高向量化整數及單精度代碼的運算能力。同時,SSE4改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門。

      ★ SSE4.2指令集:優化XML和交互式應用性能

          在Nehalem架構的Core i7處理器中,SSE4.2指令集被引入,加入了STTNI(字符串文本新指令)和ATA(面向應用的加速器)兩大優化指令。STTNI包含了四條具體的指令。STTNI指令可以對兩個16位的數據進行匹配操作,以加速在XML分析方面的性能。Intel表示,新指令可以在XML分析方面取得3.8倍的性能提升。

          ATA包括冗余校驗的CRC32指令、計算源操作數中非0位個數的POPCNT指令,以及對于打包的64位算術運算的SIMD指令。CRC32指令可以取代上層數據協議中經常用到的循環冗余校驗,Intel表示其加速比可以達到6.5~18.6倍;POPCNT用于提高在DNA基因配對、聲音識別等包含大數據集中進行模式識別和搜索等操作的應用程序性能。

          緩存的基本作用是用來加速數據的傳輸。在電腦當中,由于內存和硬盤本身的速度較慢,都需要一個可以加速指令執行和數據預取的緩沖區,這個零時緩存就相當于部隊里的集結待命區,它里邊的內容是不斷的在變化的。

      http://www.yourdictionary.com/images/computer/SWFCACH2.SWF

      緩存的作用和原理

          一級緩存(L1)是內置在CPU芯片內部的一個存儲區。二級緩存(L2)是第2塊“集結待命區”(Staging Areas),它的用處就是給L1喂數據。L2可能內置于CPU之中,也可能是MCP(Multichip Package Module)里的一個獨立芯片中,還可能是在主板上的一塊獨立存儲芯片里。

          典型的,緩存一般是SRAM(Static RAM,靜止隨機存儲器,不需要刷新電路即能保存它內部存儲的數據),而主內存通常是DRAM(Dynamic RAM,動態隨機存儲器,需要刷新電路)。SRAM非常消耗晶體管、成本高昂而且容量不可能做很大,因此最早的CPU都是沒有緩存的,后來才開始加入緩存芯片。

      插在主板上的二級緩存(或者整合在主板上)

      從CPU架構和技術的演變看GPU架構發展

      Intel 430FX芯片組上Socket 5主板及256KB外置二級緩存

          此前的CPU一直都是Socket接口設計,但以當時的技術,直插式的設計無法在CPU上整合SRAM緩存芯片,只能將SRAM以擴展卡的形式插在主板上或者直接整合在主板上。此后數代產品,Intel和AMD改用了Slot封裝形式,將SRAM芯片和CPU核心都集成在了Slot PCB上面,然后再插在主板上,這樣SRAM二級緩存就正式成為了CPU不可缺少的一部分。

      整合在CPU上的二級緩存

      從CPU架構和技術的演變看GPU架構發展

          這是一顆核心代號為代Klamath、采用350nm工藝的Pentium處理器,CPU+SRAM的結構,Slot 1接口??瓷先ナ遣皇怯悬c像現在的GPU+DRAM顯存。實際上這樣做只是上CPU和SRAM綁定在了一起,二級緩存依然以核心頻率一半甚至更低的速度運行,性能不甚理想。

      “膠水”式的二級緩存

      從CPU架構和技術的演變看GPU架構發展

          Pentium Pro是Intel P5 核心Pentium的延伸,在1995年11月以Socket 8封裝形式推出,它最大的特色是采用了雙芯片封裝形式,CPU和L2是各自獨立的,片上(Onchip)L2的好處是可以讓它以內核相同的頻率運行,而不必再像過去使用主板上較慢速度的L2,從而為“亂序執行”所導致的大量內存超找提供了捷徑,直接提升了性能。

          Pentium Pro把L1和L2同時設計在CPU的內部,故Pentium Pro的體積較大。結果Pentium II又把L2 Cache移至CPU內核之外的黑盒子里。這是因為L2無法達到與核心相同的頻率,因此還是分離式比較靈活一點。

      整合進CPU內部的二級緩存

          Pentium Pro不僅是第一款整合了二級緩存的CPU,而且是第一顆32bit CPU,不過由于它并不兼容當時主流的16bit軟件,因此Pentium Pro曲高和寡,僅定位于高端服務器市場,并沒有得到廣泛認可。此后Intel又發布了Pentium II XEON,同樣集成了片上全速二級緩存,在當時全速二級緩存就代表著更高的性能。

          Pentium Pro和Pentium II XEON并非民用產品,因此關注度并不高,而Pentium II去掉板載SRAM的產品被首次當作Celeron來賣,雖然它價格很低廉,但由于L2徹底為0,因此性能損失也非常慘重。為此,Intel推出了第二代Celeron 300A和Celeron 333,新賽揚的特點是在處理器芯片內集成了128KB二級高速緩存,容量上雖然比Pentium II的512KB少很多,但新賽揚的二級緩存在CPU內部,是全速的片上緩存,而Pentium的二級緩存頻率只有核心的一半。正是這全速的二級緩存給與了Celeron質的改變,極大的改善了賽揚的整體性能,成為當時市場上炙手可熱的一代經典產品!

      從CPU架構和技術的演變看GPU架構發展

      首次出現三級緩存

          而當時的AMD也有一款經典產品,同樣是因為集成了全速二級緩存而讓性能產生質的飛躍,性能遙遙領先與同代Intel處理器,它就是K6-II和K6-III。

          K6-II和K6-III使用的是Socket 7插槽,其性能比Intel后來的Pentium 3都要強,為什么?因為這K6-III CPU均內建了256KB的二級緩存,而且配套主板上還能再插2M容量的SRAM當作三級緩存使用,此時的性能比Pentium II拉開了較大的差距,而且其價格還比較實惠。

      奔三和速龍初期依然用外置二級緩存,后期全部整合全速緩存

          提起奔三和速龍相信很多人就比較熟悉了,它們應該可以說是CPU的近代現代史了,不過奔三和速龍發布之初依然使用的Slot卡槽式封裝,二級緩存依然是外置式,運行頻率只有核心速度的一半,性能受到了限制。

      從CPU架構和技術的演變看GPU架構發展

      從CPU架構和技術的演變看GPU架構發展

      初期Slot 1和Slot A接口的Pentium III和Athlon

          制造工藝改進之后,Intel和AMD相繼把L2整合在了CPU內部,成為單一的CPU核心,以大家喜聞樂見的Socket封裝形式出現,全速的L2讓奔三和速龍的性能都有所提升:

      從CPU架構和技術的演變看GPU架構發展    從CPU架構和技術的演變看GPU架構發展

      Socket 370和Socket A接口的Pentium III和Athlon

          Pentium III和Athlon角逐1GHz大關的頻率大戰,最終Intel因為Pentium III 1.13GHz BUG問題而敗北。而其問題的關鍵就是內置的二級緩存無法工作在1GHz以上的超高頻率下,從而產生不可預料的錯誤。

          CPU二級緩存之所以對CPU性能影響重大,就是因為內存的延遲較大、帶寬太小,滿足不了CPU密集型數據交換的需要,需要高速運作中轉站二級緩存的支持。在二級緩存被CPU整合之后,大容量的內存顯然是無法被整合到CPU里面的,那么如何才能進一步優化內存性能呢?

      從CPU架構和技術的演變看GPU架構發展

          以往,CPU與內存之間的通信是通過北橋和進行的,準確的說是北橋當中的內存控制器,它決定了系統能支持內存的容量、頻率和延遲。為了盡可能的縮小CPU訪問內存的時間,顯然CPU整合內存控制器是最高效的方法。

      從CPU架構和技術的演變看GPU架構發展

          AMD率先將內存控制器整合在了CPU當中,Athlon 64這款劃時代的產品成為了一代經典,當然其成功的原因不僅僅是因為整合了內存控制器,它還是第一顆64bit X86處理器,第一次使用了點對點的高速低延遲HT總線。AMD這次一領先就是五年,Intel直到Core i7時代才整合了內存控制器。

      從CPU架構和技術的演變看GPU未來發展

          AMD當年為Athlon 64處理器整合了單通道DDR和雙通道DDR兩種內存控制器,分別對應754和939接口,此后逐步升級至雙通道DDR2和DDR3內存控制器。而Intel是后來者居上,直接整合了三通道DDR3內存控制器,中低端產品也整合了雙通道DDR3內存控制器,分別對應1366和1156接口。消除了內存瓶頸之后的Core i3/i5/i7處理器性能更上一層樓,大幅領先于同級AMD產品。

          高頻低能的Pentium 4和Pentium D苦苦抵抗Athlon 64和Athlon 64 X2瘋狂進攻的同時,Intel也在秘密研發新一代Core微處理器架構,全新的Core 2 Duo雖然沒有整合內存控制器,但憑借高效率、低層級流水線和融合大量先進技術的指令架構,Core 2 Duo一舉擊敗Athlon 64 X2成為新的性能之王。

          當然,Intel還有另外一項創新性的技術也助Core 2 Duo一臂之力,拉大與對手的優勢,它就是Intel Advanced Smart Cache(高級智能緩存技術),簡單來講就是多顆處理器核心共享大容量緩存,通常被稱為共享式大容量二級緩存。

      從CPU架構和技術的演變看GPU架構發展

          傳統的雙核心設計每個獨立的核心都有自己的L2,但Intel Core微架構則是通過核心內部的Shared Bus Router共用相同的L2,當CPU 1運算完畢后把結果存在L2時,CPU 0便可通過Shared Bus Router讀取CPU 1放在共用L2上資料,大幅減低讀取上的延遲并減少使用FSB帶寬,同時加入L2 & DCU Data Pre-fetchers及Deeper Write output緩沖存儲器,大幅增加了緩存的命中率。

          與AMD K8雙核心L2架構相比,CPU 0需要讀取CPU 2 L2中數據時,首先需要向系統總線發出需求,并通過Crossbar Switch就把取讀資料,但CPU 0發現讀取自己的L2沒有所要的數據才會要求讀取CPU 1的L2資料,情況等同于CPU 0的L3,而共享式的L2設計卻沒有以上需要。

          Smart Cache架構還有很多不同的好處,例如當兩顆核心工作量不平均時,如果獨立L2的雙核心架構有機會出現其中一顆核心工作量過少,L2沒有被有效地應用,但另一顆核心的L2卻因工作量過重,L2容量沒法應付而需要傳取系統內存,值得注意的是它并無法借用另一顆核心的L2空間,但SmartCache因L2是共用的而沒有這個問題。

          共享式L2不但能夠減少兩顆核心之間讀取緩存數據的延遲、提高數據命中率,而且還能有效提高緩存利用率,避免分離式緩存存放重復數據的可能,變相提高的緩存容量。Intel上代的Core 2 Duo和Core 2 Quad至今在性能方面并不輸給AMD的Phenom II系列處理器,其中共享式二級緩存設計功不可沒。

      共享式三級緩存已成為主流:

          共享式二級緩存固然擁有諸多優勢,但需要對傳統CPU架構進行大幅調整,雙核心還算容易、多核心就比較麻煩了,緩存的存取機制都需要完全重新設計。因此AMD另辟蹊徑,在保持現有二級緩存不變的情況下,直接新增大容量的三級緩存,從而為多核提供協同運算的高速暫存數據倉庫。

          AMD初代的Phenom四核處理器就采用了共享式三級緩存設計,每顆核心的一級緩存保持不變,二級緩存都是獨立的512KB,三級緩存為一體式的2MB。而到了Phenom II代,45nm工藝使得處理器能夠整合更大容量的緩存,于是L3倍增至6MB,性能提升非常明顯。

      歷史巨輪再度轉動Corei7家族深度評測(3)

      Core i7 Die示意圖

          Intel在Core 2 Quad之后,也在醞釀全新的原生四核產品,此次Intel集所有先進技術于一體,不僅整合了內存控制器,而且引入了比AMD HT更先進的QPI總線,還引入了共享式三級緩存,容量高達8MB,比Phenom II還多2MB。

          至于低端的雙核Core i3/i5處理器,Intel為了保持架構統一,也放棄了Core 2上面的共享二級緩存設計,每顆核心僅有256KB的獨立L2,而是植入了4M容量的L3,雖然總緩存容量不如E8X00系列的6MB L2,但性能上還是取得了長足的進步。

          此后,32nm工藝的引入使得Intel可以在單一芯片之中集成更多的核心和更大的緩存,所以我們看到i7-980X擁有六顆物理核心以及高達12MB的L3,性能更上一層樓,令人嘆為觀止!

          在了解了CPU的發展歷程之后,我們再來看看GPU的發展過程,其實GPU很多重大改進都與CPU的技術架構相類似。比如最開始我們介紹了古老的CPU協處理器,下面再介紹一個被遺忘的產品——解壓卡,資歷較老的玩家應該記得。

          十多年前,電腦的CPU主頻很低,顯卡也多為2D顯示用,當VCD興起的時候,好多電腦(主頻為100MHz以下)無法以軟解壓的方式看VCD影片,根本運行不起來!

      從CPU架構和技術的演變看GPU架構發展

      ISA接口的VCD解壓卡

          這時,VCD解壓卡就出現了,此卡板載專用的解碼處理器和緩存,實現對VCD的硬解碼,不需要CPU進行解碼運算,所以,即使在386的電腦上也可以看VCD了。

      從CPU架構和技術的演變看GPU架構發展

      PCI接口的DVD解壓卡

          隨后,顯卡進入了3D時代,并紛紛加入支持VCD的MPEG解碼,而且CPU的主頻也上來了,無論CPU軟解還是顯卡輔助解碼都可以流暢播放視頻,所以VCD解壓卡就退出了市場!

          但DVD時代來臨后,分辨率提高很多,而且編碼升級至MPEG2,對于CPU和顯卡的解碼能力提出了新的要求,此時出現了一些DVD解壓卡,供老機器升級之用,但由于CPU更新換代更加頻繁,性能提升很大,DVD解壓卡也是曇花一現,就消失無蹤了。

      從CPU架構和技術的演變看GPU架構發展

          現在已經是1080p全高清時代了,高清視頻解碼依然是非常消耗CPU資源的應用之一,于是幾年前NVIDIA和ATI就在GPU當中整合了專用的視頻解碼模塊,NVIDIA將其稱為VP(Video Processor,視頻處理器),ATI將其稱為UVD(Unified Video Decoder,通用視頻解碼器),相應的技術被叫做PureVideo和AVIVO。

      四大編碼全攻克!高清硬解碼設置寶典

      硬解碼幾乎不消耗CPU和GPU的資源,看高清視頻時接近于待機狀態

          雖然VP和UVD都被整合在了GPU內部,實際上它們的原理和作用與當年的協處理器/解壓卡芯片沒有實質性區別,都是為了減輕/分擔處理器的某項特定任務。如今NVIDIA和ATI的GPU硬解碼技術都能夠支持高分辨率、高碼率、多部影片同時播放,性能和兼容性都很出色。

          如今多核CPU的性能已經相當強大了,軟解高清視頻簡直輕松加愉快,但要論效率的話,依然是GPU硬件解碼更勝一籌,專用模塊解碼消耗資源更少,整機功耗發熱更小,因此手持設備和移動設備都使用硬件解碼,而桌面電腦CPU軟解和GPU硬解就無所謂了。

          掐指一算,從GPU誕生至今雙方都已推出了十代產品,每一代產品之間的對決都令無數玩家心動不已,而其中最精彩的戰役往往在微軟DirectX API版本更新時出現,幾乎可以說是微軟DirectX左右著GPU的發展,而歷代DirectX版本更新時的核心內容,恰恰包含在了ShaderModel當中:

      DirectX支配游戲!歷代GPU架構全解析

          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所執行的程序,ShaderModel的含義就是“優化渲染引擎模式”,我們可以把它理解成是GPU的渲染指令集。

          高版本的ShaderModel是一個包括了所有低版本特性的超集,對一些指令集加以擴充改進的同時,還加入了一些新的技術??梢哉f,GPU的ShaderModel指令集與CPU的MMX、SSE等擴展指令集十分相似。

      從CPU架構和技術的演變看GPU架構發展

          隨著ShaderModel指令集的擴充與改進,GPU的處理資源和計算精度與日俱增,于是就有能力渲染出更加精美的圖像,并且不至于造成性能的大幅下降。就拿最近幾個版本來講,新指令集并沒有帶來太多新的特效,但卻憑借優秀的算法提升了性能,是否支持DX10.1(ShaderModel 4.1)可能游戲畫面上沒有差別,但速度就很明顯了。

          此外,DX11中的關鍵技術DirectCompute通用計算技術就是通過調用ShaderModel 5.0中的新指令集來提高GPU的運算效率,很多基于DirectCompute技術的圖形后處理渲染特效也都要用到SM5.0指令集來提高性能。

          從以往的多處理器系統到現在的雙核、四核、六核,CPU只能依靠增加核心數量來提升性能。而GPU從一開始就是作為并行渲染的管線式架構,GPU性能的強弱主要就是看誰的管線、流處理器數量更多。

          不過雙顯卡甚至多顯卡也成為提升電腦游戲性能的一種途徑,通過SLI和CrossFire技術能夠輕松讓3D性能倍增,于是雙核心的顯卡成為NVIDIA和AMD雙方角逐3D性能王者寶座的殺手锏,近年來的旗艦級顯卡幾乎都是雙核心設計的。

          但與CPU單芯片整合多核心的設計不同,顯卡一般是單卡多GPU設計,很少有單一GPU多核心設計,因為GPU性能提升的瓶頸主要在于制造工藝,只要工藝跟得上,那么他們就有能力在GPU內部植入盡可能多的流處理器。

      雙核心設計的Cypress核心:

          不管GPU架構改不改,流處理器數量總是要擴充的,準確的說是以級數規模增長,這樣才能大幅提升理論性能。在流處理器數量急劇膨脹之后,如何管理好如此龐大的規模、并與其它模塊協調工作成為新的難題。

      RV870的雙核心模塊設計

          ATI RV870包括流處理器在內的所有核心規格都比RV770翻了一倍,ATI選擇了“雙核心”設計,幾乎是并排放置兩顆RV770核心,另外在裝配引擎內部設計有兩個Rasterizer(光柵器)和Hierarchial-Z(多級Z緩沖模塊),以滿足雙倍核心規格的胃口。

      四核心設計的GF100核心:

      GF100可以看作是四核心設計

          如果說Cypress是雙核心設計的話,那么GF100的流處理器部分就是“四核心”設計,因為GF100擁有四個GPC(圖形處理器集群)模塊,每個GPC內部包含一個獨立的Raster Engine(光柵化引擎),而在以往都是整顆GPU共享一個Raster Engine。

          我們知道RV870的Rasterizer和Hierarchial-Z雙份的,而GF100則是四份的,雖然命名有所不同但功能是相同的。

      GF100的每個GPC都可以看作是一個自給自足的GPU

          GF100的四個GPC是完全相同的,每個GPC內部囊括了所有主要的圖形處理單元。它代表了頂點、幾何、光柵、紋理以及像素處理資源的均衡集合。除了ROP功能以外,GPC可以被看作是一個自給自足的GPU,所以說GF100就是一顆四核心的GPU。

      為什么GPU也會設計成多核心?

          GPU本身就是一顆并行處理器,每一個流處理器都是一個獨立的運算單元,ATI和NVIDIA雙方第一次將GPU設計成為多核心方案,并不是為了提升其運算能力和流處理器資源,而是為了更好的管理和控制龐大規模的流處理器,更充分的利用它們的處理能力,以便在不同的應用環境下發揮出最強效能。

          雖說流處理器數量決定著GPU的浮點運算能力,但GPU除了單純的數學運算外,還要處理諸多不同類型的任務,將龐大的流處理器劃分為多個獨立的區塊,每個區塊都設計專用的控制引擎和特殊功能模塊,這將會有效的平衡各個功能模塊的資源利用率。

          GPU內部擁有很多種類型的緩存,不同的緩存都有各自特殊的用途,往往無法互相兼容,這完全不同與CPU內部L1、L2、L3這樣簡單的層級關系。

      Cypress的一級緩存:固定功能、固定容量的專用緩存

          AMD的Cypress核心內部的流處理器是按照SIMD(單指令多數據流)劃分的,每組SIMD陣列內部包括了80個流處理器,這些流處理器擁有獨立的紋理單元和一級緩存(L1)以及本地數據共享緩存(Local Data Share)。

          為了滿足DX11中DirectCompute 11的要求,AMD增加了本地數據共享緩存的大小(Local Data Share,LDS),容量達到了32KB,是RV770的兩倍。LDS用于同一個線程組(Thread Group)中的線程共享數據。從上圖中我們可以看到,每一個SIMD連接一個LDS,不同的SIMD是不能共享LDS的,因此所有屬于同一個線程組的線程都會被線程調度器發送到同一個SIMD上執行。

          如果不同的SIMD上的線程要共享數據,需要用到全局數據共享緩存(Global Data Share,GDS)。在Cypress中,GDS的容量也倍增了,達到64KB。到目前為止,我們對GDS的了解仍然有限,與LDS不同,并沒有指令能顯式的操作GDS。據Beyond3D的消息,在未來的OpenCL擴展中可能會提供對GDS的訪問,目前GDS只對編譯器可見。

      GF100的一級緩存:可動態分配容量的多功能智能緩存

          以往的GPU都是沒有一級緩存的,只有一級紋理緩存,因為這些緩存無法在通用計算中用于存儲計算數據,只能用于在紋理采樣時暫存紋理。而在GF100當中,NVIDIA首次引入真正的一級高速緩存,而且還可被動態的劃分為共享緩存。

          在GF100 GPU中,每個SM除了擁有專用的紋理緩存外,還擁有64KB容量的片上緩存,這部分緩存可配置為16KB的一級緩存+48KB共享緩存,或者是48KB一級緩存+16KB共享緩存。這種劃分方式完全是動態執行的,一個時鐘周期之后可自動根據任務需要即時切換而不需要程序主動干預。

          一級緩存與共享緩存是互補的,共享緩存能夠為明確界定存取數據的算法提升存取速度,而一級緩存則能夠為一些不規則的算法提升存儲器存取速度。在這些不規則算法中,事先并不知道數據地址。

          對于圖形渲染來說,重復或者固定的數據比較多,因此一般是劃分48KB為共享緩存,當然剩下的16KB一級緩存也不是完全沒用,它可以充當寄存器溢出的緩沖區,讓寄存器能夠實現不俗的性能提升。

          而在并行計算之中,一級緩存與共享緩存同樣重要,它們可以讓同一個線程塊中的線程能夠互相協作,從而促進了片上數據廣泛的重復利用并減少了片外的通信量。共享存儲器是使許多高性能CUDA應用程序成為可能的重要促成因素。

      可動態分配的共享式一級緩存大幅提升并行計算效率

          再來算算一級緩存的總容量,Cypress擁有8KBx20=160KB的一級緩存,和32KBx20=640KB的本地數據共享緩存,還有額外的64KB全局數據共享緩存。

          而GF100擁有64KBx16=1MB容量的一級緩存+共享緩存,他們可以被動態的劃分為256KB一級緩存+768KB共享緩存,或者768KB一級緩存+256KB共享緩存,另外還有12KBx16=192KB的紋理緩存,無論從哪個方面來比較,都要比Cypress強很多。

          此次NVIDIA創新性的可動態劃分一級緩存設計,是以往CPU上面都不曾有過的先進技術,大幅提升了GPU并行計算的數據處理能力,使得GPU龐大的流處理器資源在高負荷密集型運算時不至于出現瓶頸,從而發揮出恐怖的浮點運算能力。

          再來看看GPU二級緩存部分的設計,這一方面就與CPU非常相似了。

      Cypress的二級緩存:綁定顯存控制器的分離式設計

          以往的GPU,包括NVIDIA上代的GT200以及AMD最新的Cypress核心,二級緩存都是與顯存控制器綁定在一起的,其作用就是縮短GPU到顯存的響應時間。由于顯存控制器一般都是64bit一組,為多組模塊化設計,因此二級緩存也被劃分為N個獨立的模塊,而不是統一的整體。

      Cypress:L2綁定Memory Controller

          Cypress擁有4個64bit顯存控制器,每個顯存控制器綁定128KB容量的二級緩存,總計512KB,這個容量要比NVIDIA上代的GT200大一倍。

      GF100的二級緩存:統一的大容量高速緩存

          而GF100擁有一個768KB容量統一的二級高速緩存,該緩存可以為所有載入、存儲以及紋理請求提供服務。二級緩存可在整個GPU中提供高效、高速的數據共享。物理效果、光線追蹤以及稀疏數據結構等事先不知道數據地址的算法在硬件高速緩存上的運行優勢尤為明顯。后期處理過濾器需要多個SM才能讀取相同的數據,該過濾器與存儲器之間的距離更短,從而提升了帶寬效率。

          統一的共享式緩存比單獨的緩存效率更高。在獨享式緩存設計中,即使同一個緩存被多個指令預訂,它也無法使用其它緩存中未貼圖的部分。高速緩存的利用率將遠低于它的理論帶寬。GF100的統一共享式二級高速緩存可在不同請求之間動態地平衡負載,從而充分地利用緩存。二級高速緩存取代了之前GPU中的二級紋理緩存、ROP緩存以及片上FIFO。

      GF100的緩存架構讓各流水線之間可以高效地通信,減少了顯存讀寫操作

          統一的高速緩存還能夠確保存儲器按照程序的順序執行存取指令。當讀、寫路徑分離(例如一個只讀紋理路徑以及一個只寫ROP路徑)時,可能會出現先寫后讀的危險。一個統一的讀/寫路徑能夠確保程序的正確運行,同時也是讓NVIDIA GPU能夠支持通用C/C++程序的重要因素。

          與只讀的GT200二級緩存相比,GF100的二級高速緩存既能讀又能寫,
      而且是完全一致的。NVIDIA采用了一種優先算法來清除二級緩存中的數據,這種算法包含了各種檢查,可幫助確保所需的數據能夠駐留在高速緩存當中。

      GF100共享式二級緩存堪比酷睿2:

          可以看出,ATI的一二級緩存都是完全分散的,為了協調一二級緩存之間的數據交換,ATI特意設計了一個可全局共享的64KB數據緩存。

          而GF100的一級緩存可以根據需求動態的為共享緩存或者一級緩存分配較大的容量,從而加速數據處理。二級緩存更是大容量一體式設計,當線程組在一級緩存中找不到數據時,可以直接從“海量”的二級緩存中索取,縮短了數據請求與定址時間,消除了瓶頸。

          至于獨享式緩存與共享式緩存的效率與性能,無需多言,大家可參照CPU的發展即可略知一二。

      CPU發展趨勢:不斷的整合功能模塊

          通過前面詳細的介紹我們可以發現,CPU的發展趨勢就是不斷去整合更多的功能和模塊,從協處理器、到緩存、再到內存控制器甚至整個北橋。

          目前AMD和Intel的所有主流CPU都已經整合了內存控制器,Intel最新的Lynnfield(Core i7 8XX和i5 7XX)已經整合了包括PCIE控制器在內的整個北橋,而Clarkdale(Core i5 6XX和i3 5XX)更是將GPU也整合了進去。

      GPU發展趨勢:不斷的蠶食CPU功能

          至于GPU,從某種意義上來說,它本身就是一顆協處理器,主要用于圖像、視頻、3D加速。之所以這么多年來沒有被CPU所整合,是因為GPU實在太復雜了,以現有的制造工藝限制,CPU不可能去整合一顆比自身規模還要大很多的GPU,它頂多只能整合一顆主流中低端的GPU,而這樣的產品只能定位入門級,無法滿足游戲玩家和高性能計算的需要。

          GPU從誕生至今一步步走來,就是在不斷蠶食著原本屬于CPU的功能,或者說是幫助CPU減負、去處理哪些CPU并不擅長的任務。比如最開始的T&L(坐標轉換與光源)、VCD\\DVD\\HD\\BD視頻解碼、物理加速、幾何著色。而今后和未來,GPU將奪走一項CPU最重要的功能——并行計算、高精度浮點運算。

      GPU前途似錦:浮點運算的未來

          我們知道,CPU第一個整合的就是專門用來加速浮點運算的協處理器,此后歷代SSE指令集也都是為了加強CPU的SIMD(單指令多數據流)浮點運算性能。而GPU打從一開始就被設計成為了SIMD架構(至今Cypress也還是這種架構),擁有恐怖浮點運算能力的處理器。當今GPU的浮點運算能力更是達到多核CPU的幾十倍甚至上百倍!

      從CPU架構和技術的演變看GPU架構發展

      CPU和GPU的浮點運算能力

          CPU永遠都趕不上GPU的發展速度,因此最適合進行浮點運算的顯然是GPU,CPU繼續擴充核心數目已經變得毫無意義,因此整個業界都在想方設法的發掘GPU的潛能,將所有的并行計算任務都轉移到GPU上面來。即便是Intel也看到了GPU廣闊的前景,因此著手研發GPU。

          此前由于API和軟件的限制,GPU在并行計算方面的應用舉步維艱、發展緩慢,NVIDIA孤身推廣CUDA架構雖然小有成就但孤掌難鳴。好在OpenCL和DirectCompute兩大API的推出讓GPU并行計算的前途豁然開朗,此時ATI和NVIDIA又重新站在了同一起跑線上,那么很顯然誰的架構更適合并行計算,那么誰就能獲得更強的性能和更大范圍的應用,通過本文的分析可以看出,ATI的架構依然是專注于傳統的圖形渲染,并不適合并行計算;而NVIDIA的架構則完全針對通用計算API和指令集優化設計,確保能發揮出接近理論值最大效能,提供最強的浮點運算性能!

      CPU面臨拐點:強化整數性能,浮點運算交給GPU

          AMD同時擁有CPU和GPU,而且AMD在技術方面往往能夠引領業界,因此其未來發展規劃非常值得大家思考。根據AMD最新的產品路線圖來看,其下一代的高端CPU核心Bulldozer(推土機),它最大的亮點就是每一顆核心擁有雙倍的整數運算單元,整數和浮點為非對稱設計:

      AMD下一代“推土機”架構,大幅強化整數運算單元

          在一個推土模塊里面有兩個獨立的整數核心,每一個都擁有自己的指令、數據緩存,也就是scheduling/reordering邏輯單元。而且這兩個整數單元的中的任何一個的吞吐能力都要強于Phenom II上現有的整數處理單元。Intel的Core構架無論整數或者浮點,都采用了統一的scheduler(調度)派發指令。而AMD的構架使用獨立的整數和浮點scheduler。

          據AMD透露,目前存在于服務器上的80%的操作都是純粹的整數操作,因此AMD新一代CPU大幅加強了整數運算單元而無視浮點運算單元。而且,隨著CPU和GPU異構計算應用越來越多,GPU將會越來越多的負擔起浮點運算的操作,預計未來3-5年的時間內,所有浮點運算都將會交給最擅長做浮點運算的GPU,這也就是推土機加強整數運算的真正目的。

          當然,AMD和Intel都會推出CPU整合GPU的產品,不管是膠水還是原生的解決方案,其目的并不是為了消滅顯卡和GPU,而是通過內置的GPU為CPU提供強大的浮點運算能力。但由于制造工藝所限,被CPU所整合的GPU不是集成卡就是中低端,只能滿足基本需求。所以想要更強大的游戲性能和并行計算性能的話,專為浮點運算而設計的新一代架構的GPU產品,才是最明智的選擇。

          所以說,CPU和GPU,誰也不可能取代誰,雙方是互補的關系,只有CPU和GPU協同運算,各自去處理最擅長的任務,才能發揮出計算機最強的效能。CPU會整合GPU的,但僅限中低端產品;GPU會取代CPU進行浮點運算的,但它仍然需要CPU來運行操作系統并控制整個計算機。只有當制造工藝發達到一定程度時才有可能將CPU和GPU完美融合在一起,到時候是CPU整合GPU還是GPU整合CPU都很難說,但誰被誰整合已經不重要了?!?

      1人已贊

      關注我們

      泡泡網

      手機掃碼關注
      主站蜘蛛池模板: AV无码不卡| 丰满少妇呻吟高潮经历| 古田县| 精品人妻一区二区三区-国产精品| 两个人的视频www免费| 91人妻熟妇在线视频| 狠狠躁夜夜躁人人爽天天不卡软件| 少妇50p| 欧美性猛交xxxx黑人| jizzjizz韩国| 天堂AV在线免费观看| 国产在线线精品宅男网址| 成午夜福利人试看120秒| 日韩人妻精品一区二区三区视频| 凌源市| 人人色在线视频播放| 韩日乱伦| 成在人线av无码免费| 亚洲资源站| AV天堂亚洲| 亚洲无码黄片| 亚洲人成电影网站图片| 中文字幕无码免费久久9一区9| av无码天一区二区一三区| 三级无码在钱av无码在钱| 精品无码一区二区三区不卡| 久久精品人人做人人爽电影蜜月| xxx日韩| 国精产品一区一区三区有限公司杨 | 99久久久无码国产精品免费砚床| 久久精品蜜芽亚洲国产av| 香蕉国产人午夜视频在线观看| 国产成人精品男人的天堂| 亚洲va欧美ⅴa国产va影院| 国产麻豆精品久久一二三| 伊人久久大香线蕉综合影院75| 巨胸爆乳美女露双奶头挤奶| 黄平县| 色琪琪丁香婷婷综合久久| www.黄色| 午夜福利精品在线观看|