編者按:目前CPU用的內存正在從DDR2向DDR3過渡,而GPU用的顯存則是以GDDR2/3為主、跳過GDDR4、直奔GDDR5而去。或許很多朋友一時還難以接受GDDR5那夸張的頻率、不明白GDDR相比DDR發展速度為何如此“超前”、甚至搞不清楚GDDR1/2/3/4/5和DDR1/2/3之間“說不清道不明”的關系。
如果您是一位求知欲很強的電腦愛好者,那么本文非常適合您,筆者特意搜集了大量官方技術文檔,為大家獻上內存和顯存鮮為人知的奧秘……
近年來CPU(中央處理器)和GPU(圖形處理器)的發展速度之快讓人目不暇接,新產品的運算能力成倍提升,此時就對內存子系統提出了嚴峻的需求,因為CPU/GPU運算所需的數據和生成的數據都是來自于內存/顯存,如果存儲速度跟不上,那么就會浪費很多時間在數據等待上面,從而影響CPU/GPU的性能發揮。
為了讓內存/顯存不至于造成瓶頸,芯片廠商都在想方設法的提高帶寬:AMD和Intel相繼將內存控制器整合在了CPU內部,大大降低了延遲并提高存儲效率,Intel旗艦級CPU能夠支持三通道內存,帶寬提升50%;ATI和NVIDIA也先后使用了512Bit的顯存控制器,總帶寬倍增。
是何原因導致業界三大巨頭如此大費周折呢?這是因為內存技術的發展速度,其實并不如大家想象中的那么快,受到很多技術難題和傳統因素的制約,本文就對內存和顯存的發展歷程及相關技術進行詳細分析。
為讓評測文章更具參考價值,同時也讓廣大網友能夠看到自己最感興趣的內容,泡泡網DIY評測室特意開設了“You Think.I do”板塊,您可以將最感興趣的內容、甚至任何想法發送到郵箱“Think@PCPOP.COM”,或加QQ群40891155共同探討,我們會有針對性地挑選網友關注的熱點進行評測,一旦您的建議被采納,我們會為您送出精美禮物一份!
往日經典文章回顧:
● 內存的存取原理及難以逾越的頻障:
在半導體科技極為發達的臺灣省,內存和顯存被統稱為記憶體(Memory),全名是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。基本原理就是利用電容內存儲電荷的多寡來代表0和1,這就是一個二進制位元(bit),內存的最小單位。
DRAM的存儲單元結構圖
DRAM的結構可謂是簡單高效,每一個bit只需要一個晶體管加一個電容。但是電容不可避免的存在漏電現象,如果電荷不足會導致數據出錯,因此電容必須被周期性的刷新(預充電),這也是DRAM的一大特點。而且電容的充放電需要一個過程,刷新頻率不可能無限提升(頻障),這就導致DRAM的頻率很容易達到上限,即便有先進工藝的支持也收效甚微。
“上古”時代的FP/EDO內存,由于半導體工藝的限制,頻率只有25MHz/50MHz,自SDR以后頻率從66MHz一路飆升至133MHz,終于遇到了難以逾越的障礙。此后所誕生的DDR1/2/3系列,它們存儲單元官方頻率(JEDEC制定)始終在100MHz-200MHz之間徘徊,非官方(超頻)頻率也頂多在250MHz左右,很難突破300MHz。事實上高頻內存的出錯率很高、穩定性也得不到保證,除了超頻跑簡單測試外并無實際應用價值。
既然存儲單元的頻率(簡稱內核頻率,也就是電容的刷新頻率)不能無限提升,那么就只有在I/O(輸入輸出)方面做文章,通過改進I/O單元,這就誕生了DDR1/2/3、GDDR1/2/3/4/5等形形色色的內存種類,首先來詳細介紹下DDR1/2/3之間的關系及特色。
通常大家所說的DDR-400、DDR2-800、DDR3-1600等,其實并非是內存的真正頻率,而是業界約定俗成的等效頻率,這些DDR1/2/3內存相當于老牌SDR內存運行在400MHz、800MHz、1600MHz時的帶寬,因此頻率看上去很夸張,其實真正的內核頻率都只有200MHz而已!
內存有三種不同的頻率指標,它們分別是核心頻率、時鐘頻率和有效數據傳輸頻率。核心頻率即為內存Cell陣列(Memory Cell Array,即內部電容)的刷新頻率,它是內存的真實運行頻率;時鐘頻率即I/O Buffer(輸入/輸出緩沖)的傳輸頻率;而有效數據傳輸頻率就是指數據傳送的頻率(即等效頻率)。
● SDR和DDR1/2/3全系列頻率對照表:
常見DDR內存頻率對照表
通過上表就能非常直觀的看出,近年來內存的頻率雖然在成倍增長,可實際上真正存儲單元的頻率一直在133MHz-200MHz之間徘徊,這是因為電容的刷新頻率受制于制造工藝而很難取得突破。而每一代DDR的推出,都能夠以較低的存儲單元頻率,實現更大的帶寬,并且為將來頻率和帶寬的提升留下了一定的空間。
● SDR和DDR1/2/3存儲原理示意圖:
雖然存儲單元的頻率一直都沒變,但內存顆粒的I/O頻率卻一直在增長,再加上DDR是雙倍數據傳輸,因此內存的數據傳輸率可以達到核心頻率的8倍之多!通過下面的示意圖就能略知一二:
那么,內存IO頻率為什么能達到數倍于核心頻率呢?
相信很多人都知道,DDR1/2/3內存最關鍵的技術就是分別采用了2/4/8bit數據預取技術(Prefetch),由此得以將帶寬翻倍,與此同時I/O控制器也必須做相應的改進。
● DDR1/2/3數據預取技術原理:
預取,顧名思義就是預先/提前存取數據,也就是說在I/O控制器發出請求之前,存儲單元已經事先準備好了2/4/8bit數據。簡單來說這就是把并行傳輸的數據轉換為串行數據流,我們可以把它認為是存儲單元內部的Raid/多通道技術,可以說是以電容矩陣為單位的。
內存數據預取技術示意圖:并行轉串行
這種存儲陣列內部的實際位寬較大,但是數據輸出位寬卻比較小的設計,就是所謂的數據預取技術,它可以讓內存的數據傳輸頻率倍增。試想如果我們把一條細水管安裝在粗水管之上,那么水流的噴射速度就會翻幾倍。
明白了數據預取技術的原理之后,再來看看DDR1/2/3內存的定義,以及三種頻率之間的關系,就豁然開朗了:
● SDRAM(Synchronous DRAM):同步動態隨機存儲器
之所以被稱為“同步”,因為SDR內存的存儲單元頻率、I/O頻率及數據傳輸率都是相同的,比如經典的PC133,三種頻率都是133MHz。
SDR在一個時鐘周期內只能讀/寫一次,只在時鐘上升期讀/寫數據,當同時需要讀取和寫入時,就得等待其中一個動作完成之后才能繼續進行下一個動作。
● DDR(Double Date Rate SDRAM):雙倍速率同步動態隨機存儲器
雙倍是指在一個時鐘周期內傳輸兩次數據,在時鐘的上升期和下降期各傳輸一次數據(通過差分時鐘技術實現),在存儲陣列頻率不變的情況下,數據傳輸率達到了SDR的兩倍,此時就需要I/O從存儲陣列中預取2bit數據,因此I/O的工作頻率是存儲陣列頻率的兩倍。
DQ頻率和I/O頻率是相同的,因為DQ在時鐘上升和下降研能傳輸兩次數據,也是兩倍于存儲陣列的頻率。
● DDR2(DDR 2 SDRAM):第二代雙倍速率同步動態隨機存儲器
DDR2在DDR1的基礎上,數據預取位數從2bit擴充至4bit,此時上下行同時傳輸數據(雙倍)已經滿足不了4bit預取的要求,因此I/O控制器頻率必須加倍。
至此,在存儲單元頻率保持133-200MHz不變的情況下,DDR2的實際頻率達到了266-400MHz,而(等效)數據傳輸率達到了533-800MHz。
● DDR3(DDR 3 SDRAM):第三代雙倍速率同步動態隨機存儲器
DDR3就更容易理解了,數據預取位數再次翻倍到8bit,同理I/O控制器頻率也加倍。此時,在存儲單元頻率保持133-200MHz不變的情況下,DDR3的實際頻率達到了533-800MHz,而(等效)數據傳輸率高達1066-1600MHz。
綜上可以看出,DDR1/2/3的發展是圍繞著數據預取而進行的,同時也給I/O控制器造成了不小的壓力,雖然存儲單元的工作頻率保持不變,但I/O頻率以級數增長,我們可以看到DDR3的I/O頻率已逼近1GHz大關,此時I/O頻率成為了新的瓶頸,如果繼續推出DDR4(注意不是GDDR4,兩者完全不是同一概念,后文會有詳細解釋)的話,將會受到很多未知因素的制約,必須等待更先進的工藝或者新解決方案的出現才有可能延續DDR的生命。
前面介紹的是關于歷代內存的技術原理,可以說是比較微觀的東西,反映在宏觀上,就是常見的內存顆粒及內存條了,這都是些看得見摸得著的東西,但有些概念還是不容易理解,這里一一進行說明:
● 內存位寬——SDR/DDR1/2/3單條內存都是64bit
內存模組的設計取決于內存控制器(集成在北橋或者CPU內部),理論上位寬可以無限提升,但受制因素較多:高位寬將會讓芯片組變得十分復雜,對主板布線提出嚴格要求,內存PCB更是絲毫馬虎不得,內存顆粒及芯片設計也必須作相應的調整。可謂是牽一發而動全身,所以多年來業界都是墨守成規,維持64bit的設計不變。
相比之下,顯卡作為一個整體就沒有那么多的顧忌,只需重新設計GPU內部的顯存控制器,然后PCB按照位寬要求布線,焊更多的顯存顆粒上去就行了,雖然成本也很高但實現512bit并沒有太大難度。
● 多通道內存——雙通道/三通道
既然實現高位寬內存條太難,那么就退而求其次,讓兩條內存并行傳輸數據,同樣可以讓位寬翻倍。目前流行的雙通道技術就是如此,北橋或者CPU內部整合了兩個獨立的64bit內存控制器,同時傳輸數據等效位寬就相當于128bit。
Intel Nehalem核心CPU直接整合三通道內存控制器,位寬高達192bit。但由于CPU、主板、內存方面成本都增加不少,因此在主流Lynnfield核心CPU上面又回歸了雙通道設計。事實上服務器芯片組已經能夠支持四通道內存,對服務器來說成本方面不是問題,只是對穩定性和容錯性要求很高。
● 內存顆粒位寬:4/8/16/32bit
理論上,完全可以制造出一顆位寬為64bit的芯片來滿足一條內存使用,但這種設計對技術要求很高,良品率很低導致成本無法控制,應用范圍很窄。
所以內存芯片的位寬一般都很小,臺式機內存顆粒的位寬最高僅16bit,常見的則是4/8bit。這樣為了組成64bit內存的需要,至少需要4顆16bit的芯片、8顆8bit的芯片或者16顆4bit的芯片。
而顯卡對位寬要求很高,容量反而退居其次,所以顯存顆粒的位寬普遍比內存顆粒大(這就是顯存和內存主要區別之一),比如GDDR3/4/5顆粒都是32bit,4顆就能滿足低端卡128bit的需要,8顆可以滿足高端卡256bit的需要;而低端GDDR2顆粒為16bit,需要8顆才能組成低端卡128bit的需要。
● 內存芯片的邏輯Bank
在芯片的內部,內存的數據是以bit為單位寫入一張大的矩陣中,每個單元稱為CELL陣列,只要指定一個行一個列,就可以準確地定位到某個CELL,這就是內存芯片尋址的基本原理。這個陣列我們就稱為內存芯片的BANK,也稱之為邏輯BANK(Logical BANK)。
不可能只做一個全容量的邏輯Bank,因為單一的邏輯Bank將會造成非常嚴重的尋址沖突,大幅降低內存效率。所以大容量內存顆粒都是由多個邏輯Bank疊加而成的。簡單來說,我們可以把一個Bank看作是一片平面的矩陣紙,而內存顆粒是由多片這樣的紙疊起來的。
一個Bank的位寬就是內存顆粒的位寬,內存控制器一次只允許對一個Bank進行操作,由于邏輯Bank的地址線是公用的,所以在讀寫時需要加一個邏輯Bank的編號,這個動作被稱為片選。
● 內存條的物理Bank
內存控制器的位寬必須與內存條的位寬相等,這樣才能在一個時鐘周期內傳輸所有數據,這個位寬就被成為一個物理Bank(通常是64bit),每條內存至少包含一個Bank,多數情況下擁有二個物理Bank。
一個物理Bank不會造成帶寬浪費,理論上是最合理的配置,但為了實現大容量內存,單條內存多物理Bank也是允許的,但內存控制器所能允許的最大Bank數存在上限,常見的是雙物理Bank設計,只有特殊內存或者服務器內存才會使用四Bank以上的設計,因為這種內存兼容性不好,“挑”芯片組。
事實上顯卡上也存在雙物理Bank設計,目的就是為了實現超大顯存容量,比如1GB的9800GT,正反兩面共有16顆16M×32bit的GDDR3顯存,總位寬達512bit,實際上顯存控制器只支持256bit,這樣就是雙物理Bank。
早在SDRAM時代,顯卡上用的“顯存顆粒”與內存條上的“內存顆粒”是完全相同的。在那個時候,GPU本身的運算能力有限,對數據帶寬的要求自然也不高,所以高頻的SDRAM顆粒就可以滿足要求。
某TNT2顯卡,使用的是PC166的SDR內存顆粒
● 內存滿足不了顯卡的需求,顯存應運而生
本是同根生的狀況一直持續到SDR和DDR交接的時代,其實最早用在顯卡上的DDR顆粒與用在內存上的DDR顆粒仍然是一樣的。后來由于GPU特殊的需要,顯存顆粒與內存顆粒開始分道揚鑣,這其中包括了幾方面的因素:
1. GPU需要比CPU更高的帶寬。GPU不像CPU那樣有大容量二三級緩存,GPU與顯存之間的數據交換遠比CPU頻繁,而且大多都是突發性的數據流,因此GPU比CPU更加渴望得到更高的顯存帶寬支持。
位寬×頻率=帶寬,因此提高帶寬的方法就是增加位寬和提高頻率,但GPU對于位寬和頻率的需求還有其它的因素。
2.顯卡需要高位寬的顯存。顯卡PCB空間是有限的,在有限的空間內如何合理的安排顯存顆粒,無論高中低端顯卡都面臨這個問題。從布線、成本、性能等多種角度來看,顯存都需要達到更高的位寬。
最早的顯存是單顆16bit的芯片,后來升級到32bit,將來甚至還會有更高的規格出現。而內存則沒有那么多要求,多年來內存條都是64bit,所以單顆內存顆粒沒必要設計成高位寬,只要提高容量就行了,所以位寬一直維持在4/8bit。
3.顯卡能讓顯存達到更高的頻率。顯存顆粒與GPU配套使用時,一般都經過專門的設計和優化,而不像內存那樣有太多顧忌。GPU的顯存控制器比CPU或北橋內存控制器性能優異,而且顯卡PCB可以隨意的進行優化,因此顯存一般都能達到更高的頻率。而內存受到內存PCB、主板走線、北橋CPU得諸多因素的限制很難沖擊高頻率
由此算來,顯存與內存“分家”既是意料之外,又是情理之中的事情了。為了更好地滿足顯卡GPU的特殊要求,一些廠商(如三星等)推出了專門為圖形系統設計的高速DDR顯存,稱為“Graphics Double Data Rate DRAM”,也就是我們現在常見的GDDR。
● GDDR——顯存和內存正式分家
GDDR作為第一代專用的顯存芯片,其實在技術方面與DDR沒有任何區別,同樣采用了2bit預取技術,理論頻率GDDR并不比DDR高多少。不過后期改進工藝的GDDR有了優秀PCB的顯卡支持之后,GDDR顯存最高沖刺至900MHz,而DDR內存只能達到600MHz左右,顯存和內存的差距從此逐漸拉開。
-
TSOP封裝的GDDR 16bit:
8M×16Bit 4.0ns TSOP II封裝的GDDR,單顆16MB,理論頻率500MHz
當年9550、FX5700等128Bit中端卡需要搭配8顆才能組成128Bit
TSOP封裝的GDDR顆粒,外觀規格特性都與DDR內存顆粒沒有什么區別,所以在很多人看來“GDDR”與“DDR”是可以“劃等號”的。其實兩者還是有些差別:
-
GDDR采用4K循環32ms的刷新周期,而DDR采用8K循環64ms的刷新周期;
-
GDDR為了追求頻率在延遲方面放的更寬一些,畢竟GPU對延遲不太敏感;
-
GDDR顆粒的容量小、位寬大,一般是8×16Bit(16MB)的規格,而DDR顆粒的容量大、位寬小,雖然也有16Bit的顆粒,但最常見的還是8Bit和4Bit,單顆容量32MB或64MB。
為了實現更大的位寬,并進一步提升GDDR的性能,后期很多廠商改用了電氣性能更好的MBGA封裝,當然也有內存顆粒使用MBGA封裝,但規格已有了較大差異,主要是顆粒位寬不同。
-
MBGA封裝的GDDR 32bit:
4M×32Bit 2.2ns MBGA封裝的GDDR,單顆16MB,理論頻率900MHz
8顆組成128MB 256Bit規格,是GDDR1最后的輝煌
MBGA封裝GDDR的單顆位寬首次達到了32Bit,從此就標志著GDDR與DDR正式分道揚鑣,32Bit的規格被GDDR2/3/4/5一直沿用至今。
GDDR顯存的這兩種封裝:MBGA與TSOP構成的高低配,曾一度一統顯卡市場。雖然GDDR已經退出歷史舞臺,但32Bit主攻中高端、16Bit主攻低端的局面,時至今日依然得到了延續。
● GDDR2第一版:短命的早產兒 高壓高發熱
GDDR2源于DDR2技術,也就是采用了4Bit預取,相比DDR1代可以將頻率翻倍。雖然技術原理相同,但GDDR2要比DDR2早了將近兩年時間,首次支持DDR2內存的915P主板于2004年中發布,而首次搭載GDDR2顯存的FX5800Ultra于2003年初發布,但早產兒往往是短命的。
NVIDIA在設計NV30芯片時依然保持128Bit顯存位寬,為了提高帶寬必須使用高頻顯存,700MHz的GDDR已經無法滿足需求了,于是冒險嘗試GDDR2。第一代GDDR2受制造工藝限制,電壓規格還是和DDR/GDDR一樣的2.5V,雖然勉強將頻率提升至1GHz左右,但功耗發熱出奇的大。
4M×32Bit 2.0ns MBGA 144Ball封裝的GDDR2,單顆16MB,理論頻率1000MHz
GDDR2第一版只有2.2ns和2.0ns兩種速度
GDDR2第一版只在FX5800/Ultra和FX5600Ultra這三款顯卡上出現過(也包括對應的專業卡及個別非公版顯卡),ATI也有極少數9800Pro使用了GDDR2。高電壓、高發熱、高功耗、高成本給人的印象非常差。隨著FX5900改用GDDR及256Bit,GDDR2很快被人遺忘。
FX5800Ultra需要為顯存專門安裝厚重的散熱片
GDDR2失敗的主要原因是NVIDIA GeForce FX系列架構和性能的問題,之后即便改用了256Bit高頻GDDR(此時GDDR的頻率已被提升至850-900MHz,直逼GDDR2),FX5950Ultra依然不是9800XT的對手。當然GDDR2自身規格的不完善也造成了它無法入住中低端顯卡,被時代所遺棄。
GDDR2雖然壞毛病一大堆,但它也擁有一些新的特性,比如首次使用片內終結電阻,PCB設計比GDDR更加簡潔,這個特性被后來的gDDR2和GDDR3繼承。
● gDDR2第二版:統一低端顯卡 永遠的配角
由于第一代GDDR2的失敗,高端顯卡的顯存是直接從GDDR跳至GDDR3的,但GDDR2并未消亡,而是開始轉型。幾大DRAM大廠有針對性的對GDDR2的規格和特性做了更改(說白了就是DDR2的顯存版),由此gDDR2第二版正式登上顯卡舞臺,時至今日依然活躍在低端顯卡之上。
gDDR2第二版相對于第一版的改進主要有:
-
工作電壓從2.5V降至1.8V,功耗發熱大降;
-
制造工藝有所進步,功耗發熱進一步下降,成本降低,同時良率和容量有所提升;
-
顆粒位寬從32Bit降至16Bit,只適合低端顯卡使用;
-
封裝形式從144Ball MBGA改為84Ball FBGA,外觀上來看從正方形變成長方形或者長條形;
各大廠商均有gDDR2顆粒
由于電壓的下降,第二代gDDR2的頻率要比第一代GDDR2低,主要以2.5ns(800MHz)和2.2ns(900MHz)的規格為主,當然也有2.8ns(700MHz)的型號。直到后期制造工藝上去之后,第二代gDDR2才以1.8V電壓突破了1000MHz,最高可達1200MHz,趕超了第一代高壓GDDR2的記錄。
采用gDDR2顯存的經典顯卡有:7300GT、7600GS、X1600Pro、8500GT……一大堆低端顯卡。
注意三星官方網站對于顯存的分類
相信很多朋友也注意到了,本頁gDDR2的第一個字母為小寫,幾大DRAM廠商在其官方網站和PDF中就都是這么寫的,以示區分。我們可以這么認為:大寫G表示顯卡專用,32bit定位高端的版本;而小寫g表示為顯卡優化,16bit定位低端的版本,本質上與內存顆粒并無區別。
事實上,GDDR3和gDDR3之間也是這種關系,稍后我們會做詳細介紹。
GDDR源于DDR,GDDR2源于DDR2,而GDDR3在頻率方面的表現又與DDR3比較相似,于是很多人認為GDDR3就是顯存版的DDR3,這可是個天大的誤區。
● GDDR3:一代王者GDDR3源于DDR2技術
無論GDDR還是GDDR2,由于在技術方面與DDR/DDR2并無太大差別,因此最終在頻率方面GDDR并不比DDR高太多。在經歷了GDDR2的失敗之后,兩大圖形巨頭NVIDIA和ATI對JEDEC組織慢如蝸牛般的標準制訂流程感到越來越失望,認為他們制定的顯存不能適應GPU快節奏的產品更新換代周期,于是NVIDIA和ATI的工作人員積極參與到了JEDEC組織當中,以加速顯存標準的起草及制定。
雙方一致認為,顯存與內存在數據存儲的應用方面完全不同,在內存核心頻率(電容刷新頻率)無法提升的情況下,單純提高I/O頻率來獲得高帶寬很不現實。因此,必須要有一種針對高速點對點環境而重新定義的I/O接口。于是GDDR3誕生了,這是第一款真正完全為GPU設計的存儲器。
GDDR3和GDDR2/DDR2一樣,都是4Bit預取架構,GDDR3主要針對GDDR2高功耗高發熱的缺點進行改進,并提升傳輸效率來緩解高延遲的負面影響。
-
點對點DQS,讀寫無需等待
GDDR2只有一條數據選擇脈沖(DQS),是單一雙向的,而GDDR3則擁有讀與寫兩條獨立的DQS,而且是點對點設計。這樣做的好處在于,在讀取之后如果馬上進行寫入時,不必再等DQS的方向轉變,由此實現讀寫操作的快速切換。
相比GDDR2/DDR2,GDDR3的讀寫切換動作可以少一個時鐘周期,如果需要對某一個連續的區塊同時讀寫數據時,GDDR3的速度就要比GDDR2快一倍。
由于存儲單元自身的特性,內存顆粒的邏輯Bank是無法同時讀寫數據的,并不存在“全雙工”一說,但GDDR3的這項改進讓順序讀寫成為可能。GPU本身緩存很小,與顯存之間的數據交換極其頻繁,讀寫操作穿插進行,因此GDDR3點對點設計的DQS可以讓顯存存儲效率大增。但對于CPU來說,讀寫切換并不如GPU那么頻繁,而且CPU擁有大容量的二三級緩存,所以GDDR3這種設計并不能極大的提升內存帶寬,也沒有引入到下一代DDR3當中。
-
改進I/O接口,簡化數據處理,控制功耗
同時GDDR3也對I/O控制電路和終結電阻進行了修改,它不再沿用GDDR2的“推式(Push Pull)”接收器,而將其改為虛擬開極邏輯方式(Pseudo Open Drain Logic),并且通過將所有的三相數據信號轉移到本位電路上,來簡化數據處理,將DC電流壓至最小,只有當邏輯LOW移至總線上時才會消費電力,從而很好的控制了功耗和發熱。
GDDR3的頻率能達到現在這么高,其實并沒有什么訣竅,憑借的就是不斷改進的工藝制程,來暴力拉升頻率。資歷稍老點的玩家應該知道,GDDR3于2004年初次登臺亮相時,6600GT的顯存頻率僅為1GHz,并不比GDDR2高,5年過去了,GDDR3從1GHz一路攀升至2GHz甚至2.5GHz,生命力得到了延續。
明白了GDDR3的原理技術后,再來看看實物。GDDR3和GDDR1類似,也有兩種封裝形式:
● 144Ball MBGA封裝,為了向下兼容GDDR和GDDR2
最初的GDDR3采用了144Ball MBGA封裝,這與GDDR和GDDR2第一版完全相同,外觀也是正方形,三者的電氣性能相似,支持GDDR3的GPU也可使用GDDR顯存,PCB和電路只需做少量調整。
三星2.0ns 8M×32Bit GDDR3顆粒
144Ball封裝的GDDR3只有8M×32Bit一種規格,所以8顆顯存組成256MB 256Bit、或者4顆顯存組成128MB 128Bit是當時的主流。5700Ultra就首次使用了GDDR3取代了GDDR2。
144Ball封裝的GDDR3主要有2.0ns(1000MHz)和1.6ns(1250MHz)兩種速度,1.4ns良率不高產量很小,最高頻率止步于1400MHz。曾被7800GTX/GT、6800GS、6600GT、X850/X800/X700等顯卡大量采用。由于144Ball封裝及PCB電路限制了其頻率的提升,很快GDDR3就改用了電氣性能更好的136Ball FBGA封裝。
● 136Ball FBGA封裝,頻率容量節節攀升
為了提高電氣性能和環保水平,從2005年開始,GDDR3開始采用全新的136Ball FBGA封裝,并統一使用無鉛封裝工藝。新封裝使得顯卡PCB必須重新設計,但也為GDDR3的騰飛鋪平了道路。
三星0.8ns GDDR3顯存 16M×32Bit規格
136Ball封裝GDDR3的優勢如下:
-
規格不再局限于8M×32Bit一種,16M×32Bit成為主流,目前32M×32Bit已大量采用;
-
伴隨著制造工藝的進步,額定電壓從2.0V進一步降至1.8V,但一些高頻顆粒可適當加壓;
-
速度從1.4ns起跳,經過1.2ns、1.1ns、1.0ns一路發展至0.8ns、0.7ns,最快速度可突破2500MHz,但這是以犧牲延遲為代價的,好在GPU對延遲不太敏感;
當GDDR3的頻率首次達到2000MHz時,很多人都認為離極限不遠了,于是未雨綢繆的抓緊制定GDDR4規范,但沒想到在DRAM廠商的努力及新工藝的支持下,GDDR3的生命得到了延續,0.8ns 0.7ns的型號相繼量產,而且容量更大的32M×32Bit顆粒也成為主流,基本上能夠滿足高中低端所有顯卡的需要。
當前速度最快0.77ns GDDR3顯存顆粒,理論頻率可達2600MHz
當年2.2ns GDDR最高可達900MHz,核心頻率和I/O頻率止步于450MHz。經過5年時間的發展,GDDR3憑借新工藝終于在核心頻率和I/O頻率方面取得突破,核心頻率可達600MHz以上,I/O頻率超過1200MHz,此時過高的I/O頻率成為了新的瓶頸。
GDDR3采用了DDR2的4bit預取技術,所以采用DDR3 8bit預取技術的顯存只能按順序命名為GDDR4。GDDR4是在GDDR3的基礎上發展而來的,它繼承了GDDR3的兩大技術特性,但內核改用DDR3的8bit預取技術,并加入了一些新的技術來提升頻率。
● GDDR4的技術特性:
-
使用DDR3的8bit預取技術,以較低的核心頻率達到更高帶寬,但延遲增加;
-
采用數據總線轉位技術(DBI,Data Bus Inversion,下文做詳細介紹),提高數據精度,降低功耗;
-
地址線只有GDDR3的一半,多余線用于電源和接地,有利于提升頻率,但導致延遲增加;
-
采用多重同步碼(Multi-Preamble)技術,解決了GDDR3存在的爆發限制(Burst LimitATIon),從連續地址讀取少量數據時的性能大幅提升;
-
電壓從1.8V降至1.5V;
-
同頻功耗下降75%,2400MHz的GDDR4功耗只有2000MHz GDDR3的一半;
-
采用136Ball FBGA封裝,單顆32Bit,向下兼容GDDR3;
GDDR4的確更好超,但性能提升有限
由于采用了8bit預取技術,因此在相同頻率下GDDR4的核心頻率(即電容刷新頻率)只有GDDR3的一半,理論上來講GDDR4最高頻率可達GDDR3的兩倍。但值得注意的是,雖然核心頻率通過8bit預取技術減半,但GDDR4與GDDR3的I/O頻率是完全相同的,因此GDDR4頻率提升的瓶頸在于I/O頻率而不是核心頻率。
由于制造工藝和技術水平的限制,雖然三星官方宣稱早已生產出3GHz以上的GDDR4,但實際出貨的GDDR4只有2GHz-2.5GHz,此后改進工藝的GDDR3也追平了這一頻率。在相同頻率下,GDDR4比起GDDR3雖然功耗發熱低,但延遲大性能稍弱,再加上成本高產量小,GDDR4遭受冷落并不意外。
● 導致GDDR4失敗的非技術方面原因
GDDR3是NVIDIA和ATI參與JEDEC組織后共同制定的顯存標準,而GDDR4在標準制定過程中雙方產生了較大的分歧。NVIDIA較為保守,認為應該保持DDR2 4bit預取技術不變,繼續改進I/O控制器來提升頻率;而ATI則比較激進,準備直接使用DDR3 8bit預取技術。
雙方爭執的結果就是在JEDEC組織中德高望重的ATI獲勝(據稱ATI有位高層在JEDEC身居要職),而NVIDIA則明確表示不支持GDDR4。因此GDDR4其實就是ATI一手策劃的,但得不到NVIDIA支持的話,GDDR4立馬就失去了6成以上的市場,由此導致DRAM廠不敢貿然投產。
最終只有三星一家生產了少量的GDDR4顯存,其他家都在觀望。當然其他DRAM廠商都沒閑著,它們把精力都投在了深挖GDDR3的潛力當中,于是我們看到了GDDR3的頻率節節攀升,GDDR4在沒有成本優勢的情況下,也沒有頻率優勢,恰好當時的幾代A卡更沒有性能優勢,GDDR4自然只有死路一條。
只有ATI生產過搭載GDDR4的顯卡,數量雖然不多但橫跨了三代產品:X1950XTX、HD2600XT和HD3870(也包括對應的專業卡)——與當年NVIDIA使用GDDR2的顯卡數量相等。NVIDIA在遭遇滑鐵盧后果斷放棄了GDDR2,而ATI對于GDDR4則是難以割舍,三年時間三代產品都有使用,但一直都是非主流。
GDDR4的失敗并不是技術原因,和當年的GDDR2相比它要成熟很多,沒推起來的原因主要是對手太強:ATI的對手NVIDIA很強大,另外GDDR4的對手GDDR3生命力太頑強了。
即便使用了8bit預取技術,可GDDR4還是沒有與GDDR3拉開頻率差距,因為瓶頸在I/O控制器上面而不是內核,而GDDR5就是用來解決這一瓶頸的。
● GDDR5:恐怖的頻率是如何達成的
和GDDR4一樣,GDDR5采用了DDR3的8bit預取技術,核心頻率顯然不是瓶頸,如何提升I/O頻率才是當務之急。但GDDR5并沒有讓I/O頻率翻倍,而是使用了兩條并行的DQ總線,從而實現雙倍的接口帶寬。
GDDR5各項總線工作頻率示意圖
雙DQ總線的結果就是,GDDR5的針腳數從GDDR3/4的136Ball大幅增至170Ball,相應的GPU顯存控制器也需要重新設計。GDDR5顯存擁有多達16個物理Bank,這些Bank被分為四組,雙DQ總線交叉控制四組Bank,達到了實時讀寫操作,一舉將數據傳輸率提升至4GHz以上!
以往GDDR1/2/3/4和DDR1/2/3的數據總線都是DDR技術(通過差分時鐘在上升沿和下降沿各傳輸一次數據),官方標稱的頻率X2就是數據傳輸率,也就是通常我們所說的等效頻率。而GDDR5則不同,它有兩條數據總線,相當于Rambus的QDR技術,所以官方標稱頻率X4才是數據傳輸率。比如HD4870官方顯存頻率是900MHz,而大家習慣稱之為3600MHz。
● 失敗乃成功之母,冒險使用GDDR5助RV770挑戰GTX200
GDDR4的失敗并沒有阻擋ATI前進的腳步,在意識到GDDR4頻率提升的瓶頸之后,GDDR5草案的制定就被提上日程,ATI和NVIDIA技術人員重新聚首,開展第二次合作共商大計。GDDR5吸取了前輩們的諸多優點,可謂是取其精華棄其糟粕,在I/O改進方面雙方也不再有太多矛盾。
技術方面的問題不難解決,最難的是時間和進度。ATI在R600上面冒險使用512Bit顯存控制器來提升顯存帶寬,結果輸得一敗涂地,于是RV670只好回歸256Bit,導致性能原地踏步。而GDDR4相比GDDR3沒有頻率優勢,因此ATI迫切的需要GDDR5迅速投產以滿足新一代GPU的需要,RV770只有256Bit,急需高頻顯存的支持。
對手NVIDIA對于GDDR5當然很感興趣,但卻一點都不著急,保守的NVIDIA決定堅守GDDR3,GTX200核心使用了512Bit顯存控制器來提升帶寬。比起R600的環形總線,NVIDIA從256Bit到384Bit再到512Bit一步一個腳印走出來的交叉總線顯然更加成熟。
以256Bit對抗512Bit,ATI只能將籌碼全部押在GDDR5身上,于是在GDDR5標準尚未完全確立之前,ATI已經在緊鑼密鼓的測試性能,并督促DRAM廠投產。可以說GDDR5和GDDR2/4一樣也是個早產兒,但失敗乃成功之母,有了完善的技術規格和制造工藝的支持,GDDR5一出世便令人刮目相看。
憑借GDDR5翻倍的數據傳輸率,HD4870以256Bit將448Bit的GTX260挑落馬下,迫使NVIDIA通過降價、提升規格、改進工藝等諸多手段來反擊。128Bit的HD4770性能也完勝256Bit的9600GT并直逼9800GT。
GDDR5在GDDR3/4優秀特性的基礎上,還有諸多改進和新特性,下面就對它們進行詳細分析。
-
數據和地址總線轉位技術:信號質量高、功率消耗少
在1Byte數據中的8個值中,如果超過一半的數值是0,那么GDDR5就會自動執行轉位傳輸,把0變成1、1變成0,通過1個附加的DBI(數據總線轉位值)來判定數據流是正位還是反位。GDDR5的這項技術是從GDDR4繼承發展而來的。
DRAM在傳輸數據時,只有0會消耗電能,減少0的傳輸數量,既能保證信號質量,也能減少內部終結電阻和外部終結電路的功率消耗。GDDR5的地址總線也使用了類似的技術,通過額外的ABI通道來轉位數據流,從而較少信號噪聲,并降低功耗。
-
智能的可編程I/O控制接口:簡化PCB設計和成本
GDDR5對I/O控制器做了很多改進,加入了全新的自動校準引擎,保證GDDR5顯存顆粒更好的適應GPU顯存控制器的需求,確保數據傳輸穩定可靠。
自動校準引擎可以監控電壓和溫度變化,通過校驗數據輸出驅動器導通電阻與ODT終結電阻值來作出補償,數據、地址、指令終結電阻都可以被軟件或驅動控制。
GDDR5的針腳更多,但布線更簡潔
此外GDDR5還能支持時間延遲和信號強度調整,靈活的協調數據同步,以往通過“蛇形走線”平衡延遲的方法徹底成為歷史,GDDR5沒有這種顧慮,因此能極大的簡化PCB布線和成本,并有利于沖擊更高頻率。
-
數據遮蓋技術:減輕數據總線壓力
GDDR5的Burst Length(對相鄰存儲單元連續進行數據傳輸的周期數)是8bit,也就是說GDDR5顆粒一次至少要傳輸256bit數據,但很多時候并不是所有的數據都需要被改寫,導致無效的數據傳輸。
為此,GDDR5使用了一項數據遮蓋技術,通過地址線傳輸保護信息,所有被保護的數據在傳輸過程中就不會被改寫,只有暴露的數據才會被寫入新的數據。如此以來,GDDR5的數據線壓力減輕不少,功耗發熱也得到進一步控制。
-
誤差補償技術:提高傳輸效率,避免災難性錯誤
為了保證數據在高速傳輸過程中的有效性,GDDR5新增一項錯誤偵測與修正技術。GDDR5使用了成熟的CRC(循環冗余校驗),通過DQ和DBI總線,實時檢查錯誤,第一時間重新發送數據。
這項技術對于高頻率傳輸數據尤為重要,它能有效的減少數據傳輸錯誤導致系統崩潰的概率,大幅減少了由超頻或高溫導致的一系列問題,而且能夠一定程度上提升數據傳輸效率。
-
折疊模式:32bit顆粒當作16bit用
GDDR5作為高端顯卡專用的顯卡,只有32bit的顆粒。由于GDDR5擁有兩條并行的數據總線,這就使得GDDR5的工作模式變得更加靈活,它既可以工作在32bit模式下也可以工作在16bit模式下。這樣一個32bit顯存控制器就可以控制兩顆GDDR5顯存,顯存容量可以輕松翻倍。
其實,GDDR3/4都可以通過這種方式擴充顯存容量,但原理則完全不同。此前必須GPU的顯存控制器在設計時支持雙Bank模式才能支持更多的顯存顆粒。而現在,8顆GDDR5顯存總計256bit可以直接被128bit的GPU使用,從而簡化了顯存控制器設計,HD4770就是很好的例子。
之前我們分析過,TSOP封裝的GDDR1還有gDDR2顯存,其實在技術上與DDR1/2內存沒有本質區別,高位寬(16bit)的內存顆粒可以直接當作顯存使用。隨著DDR3顆粒大量投產,成本接近DDR2,于是在DDR3內存取代DDR2的同時,也將順便取代老舊的gDDR2。
● gDDR3:把內存顆粒改裝成顯存用
以目前的情況來看,DDR3比gDDR2頻率高很多,但成本比GDDR3要低,所以gDDR2被取代是板上釘釘的事。AMD率先將DDR3使用在了顯卡上,隨后得到了業界的一致認可。
為了和DDR3內存顆粒區分,DRAM廠將其稱為Graphics DDR3 SDRAM,簡寫為gDDR3,和DDR3內存顆粒一樣都是8bit預取技術,單顆16bit,定位中低端顯卡;而傳統的GDDR3則是Graphics GDDR3 SDRAM的簡寫,它和DDR2內存一樣采用了4bit預取技術,單顆32bit,定位中高端顯卡。
可以看出,在高端GDDR5將會取代GDDR3,而低端gDDR3將會取代gDDR2,中端則會出現三代共存的局面。雖然gDDR3單顆位寬只有GDDR3的一半,但存儲密度卻是GDDR3的兩倍,而且在相同頻率下(比如2000MHz),gDDR3的核心頻率是GDDR3的一半,因此功耗發熱要低很多。對于位寬不高的中低端顯卡來說,gDDR3大容量、低成本、低功耗發熱的特性簡直相當完美!
上圖就是現代官方網站列出的gDDR3和GDDR3兩種顯存的規格參數表,注意它們的全稱,是否有"G",真的是差之毫厘謬以千里。
gDDR3源于DDR3,技術特性上沒有區別,主要在封裝上面。gDDR3作為對顯卡優化的版本,單顆16bit FBGA 96Ball封裝;而DDR3多為單顆4/8bit,封裝是78/82Ball。也有少數DDR3使用了16bit FBGA 96Ball封裝,由于位寬太大僅用于特殊場合。
在前文的內存部分,關于內存顆粒的位寬、通道、Bank等做了一些介紹,這些技術參數對于顯存同樣適用,但顯存也有自己的一套規格定義,下面就逐一介紹:
● 規格:16M×32Bit是什么意思?
當您瀏覽網站或者查看顯卡規格時,往往都會看到類似“某某顯卡使用了4顆16M×32Bit的GDDR3顯存”這樣的文字,這其中16M×32Bit就是該顯存顆粒的主要規格,是國際統一的命名標準,可以到存儲廠商官方網站上查到。
16M×32Bit中,16M表示顯存存儲單元的容量為16Mbit,32Bit是單顆顯存的數據位寬,這種標稱不容易理解,需要經過換算才能得到符合我們使用習慣的規格。
● 容量:單顆顯存容量=存儲單元容量×數據位寬/8
以最常見的16M×32bit GDDR3顯存為例,16×32/8=64MB,一顆顯存就是64MB的容量,那么這塊顯卡用了4顆顯存就組成了256MB。
很多人可能會納悶上面的公式中為何要除以8,因為官方規格中的16M的單位是Megabit(兆位)而不是MegaByte(兆字節),它兩之間的換算需要除以8。
● 速度:顯存理論頻率=1000/時鐘周期×2
大家常說某某顯卡采用了1.4ns顆粒,另一個顯卡用了更快的1.2ns顆粒,超頻更猛等等……這個1.2ns就是顯存的時鐘周期,同樣的我們需要換算成更容易理解的數字。
套用以上公式,我們來算算主流規格顯存的理論頻率是多少:
0.8ns顆粒=1000/0.8×2=2500MHz=2.50GHz
為什么要乘以2,因為DDR系列存儲顆粒屬于雙倍傳輸,在工作頻率和數據位寬相同的情況下,顯存帶寬是SDRAM的2倍,因此大家習慣于在基礎頻率上乘2,超高的頻率確實比較好看。
● 位寬:顯存位寬=單顆顯存數據位寬×顯存數量
這個不難理解,比如顯卡使用了4顆16M×32bit GDDR3顯存,那么位寬就是32bit×4=128bit。需要注意的是,并非所有情況下這個公式都成立,除了顯存數量之外,GPU顯存控制器的位寬決定了顯卡位寬上限。
低端顯卡核心擁有128Bit顯存控制器,因此4顆GDDR3顯存就能滿足位寬需求,即便PCB上集成了8顆顯存,顯卡位寬依然是128bit。如果是中端顯卡的話,8顆顯存正好是256Bit,與核心相吻合。
● 帶寬:顯存帶寬=顯存位寬×顯存工作頻率/8
單純看顯存位寬意義并不大,最終影響顯卡性能的其實是帶寬。我們可以把帶寬比作是馬路的車行流量,顯然馬路越寬(顯存位寬),車速越高(顯存頻率),最終的帶寬就越高。
以GTX260為例,顯存頻率2GHz,位寬448bit,計算所得帶寬就是112GB/s。除以8的原因還是因為bit和Byte之間的換算。
帶寬是顯存速度的最終衡量,有些顯卡的顯存頻率高,但是位寬低,最典型的就是使用GDDR5顯存的HD4870,位寬256bit但頻率高達3600MHz,最終計算得帶寬就是115GB/s,和GTX260相當。
● SDR+DDR1/2/3和GDDR1/2/3/4/5全系列規格參數匯總:
● 顯存引領DRAM發展,未來內存將以顯存為藍本開發
縱觀近年來內存與顯存的發展,就會發現顯存的發展速度已經遠遠超越了內存,顯存帶寬幾乎達到了內存帶寬的10倍之多,而且這個差距還在不斷的加大。目前三通道DDR3已經足夠桌面CPU用好一陣子了,而GPU對顯存帶寬的渴求似乎是個永遠都填不滿的無底洞。
正因為如此,顯存逐漸脫離了內存的發展軌跡,在經過幾次并不成功的嘗試之后,從內存的配角/附屬品,開始走向了反客為主的道路。GDDR2提前DDR2近兩年、GDDR4提前DDR3一年多,雖然都以失敗而告終,但卻為GDDR5的成功打下了堅實的基礎。
在內存領域,如今DDR3才剛剛站穩腳跟,至少將統治PC兩至三年,但DDR4的標準已經在積極制定當中,而其技術規格將會以GDDR5為藍本——也就是說保持DDR3 8bit預取技術不變,改進I/O控制器,個中原因相信認真閱讀了本文的朋友們應該知道吧。