來(lái)源: 作者:存儲時(shí)代 趙效民 2007-10-24 出處:
pcdog.com序:不得不說(shuō)的話(huà)
作為電腦中必不可少的三大件之一(其余的兩個(gè)是
主板與CPU),內存是決定
系統性能的關(guān)鍵設備之一,它就像一個(gè)臨時(shí)的倉庫,負責數據的中轉、暫存……不過(guò),雖然內存對系統性能的至關(guān)重要,但長(cháng)期以來(lái),DIYer并不重視內存,只是將它看作是一種買(mǎi)主板和CPU時(shí)順帶買(mǎi)的“附件”,那時(shí)最多也就注意一下內存的速度。這種現象截止于1998年440BX主板上市后,PC66/100的內存標準開(kāi)始進(jìn)入普通DIYer的視野,因為這與選購有著(zhù)直接的聯(lián)系。一時(shí)間,有關(guān)內存時(shí)序參數的介紹文章大量出現(其中最為著(zhù)名的恐怕就是CL參數)。自那以后,DIYer才發(fā)現,原來(lái)內存也有這么多的學(xué)問(wèn)。接下來(lái),始于2000年底/2001年初的VIA芯片組4路交錯(4-Way Interleave)內存控制和部分芯片組有關(guān)內存容量限制的研究,則是深入了解內存的一個(gè)新開(kāi)端。本刊在2001年第2期上也進(jìn)行了VIA內存交錯控制與內存與模組結構的詳細介紹,并最終率先正確地解釋了這一類(lèi)型交錯(內存交錯有多種類(lèi)型)的原理與容量限制的原因。從那時(shí)起,很多關(guān)于內存方面的深入性文章接踵而至,如果說(shuō)那時(shí)因此而掀起了一股內存熱并不夸張。大量的內存文章讓更多的用戶(hù)了解了內存,以及更深一層的知識,這對于DIY當然是一件好事情。然而,令人遺憾的是這些所謂的內存高深技術(shù)文章有不少都是錯的(包括后來(lái)的DDR與RDRAM內存的介紹),有的甚至是很低級的錯誤。在這近兩年的時(shí)間里,國內媒體上優(yōu)秀的內存技術(shù)文章可謂是寥若晨星,有些媒體還編譯國外DIY網(wǎng)站的大篇內存文章,但可惜的是,外國網(wǎng)站也不見(jiàn)得都是對的(這一點(diǎn),國內很多作者與媒體似乎都忽視了)。就這樣,雖然打開(kāi)了一個(gè)新的知識領(lǐng)域,可“普及”的效果并不那么好,很多媒體的鐵桿讀者高興地被帶入內存深層世界,但也因此被引向了新的誤區。
不過(guò),從這期間(2001年初至今)各媒體讀者對這類(lèi)文章的反映來(lái)看,喜歡內存技術(shù)的玩家大有人在且越來(lái)越多,這是各媒體“培養”的成果。這些用戶(hù)已經(jīng)不滿(mǎn)足如何正確的使用內存,他們更渴望深入的了解這方面原來(lái)非常貧乏的知識,這些知識可能暫時(shí)不會(huì )對他們在使用內存過(guò)程中有什么幫助,但會(huì )大大滿(mǎn)足他們的求知欲。在2001年初,我們揭開(kāi)VIA芯片組4路交錯內存控制和部分芯片組有關(guān)內存容量限制之迷時(shí),還是主要圍繞著(zhù)內存使用的相關(guān)話(huà)題來(lái)展開(kāi),而且在這期間有關(guān)內存技術(shù)的話(huà)題,《電腦高手》也都是一筆帶過(guò)。但在今天,在很多人希望了解內存技術(shù)而眾多媒體的文章又“力不從心”時(shí),我們覺(jué)得有必要再次站出來(lái)以正視聽(tīng),也就是說(shuō),我們這次的專(zhuān)題不再以?xún)却媸褂脼橹行?,更多的是純技術(shù)性介紹,并對目前現存的主要內存技術(shù)誤區進(jìn)行重點(diǎn)糾正。
在最后要強調的是,本專(zhuān)題以技術(shù)為主,由于篇幅的原因,不可能從太淺的方面入手,所以仍需要有一定的技術(shù)基礎作保證,而對內存感興趣的讀者則絕不容錯過(guò),這也許是您最好的糾正錯誤認識的機會(huì )!
在本專(zhuān)題里,當講完內存的基本操作之后,我們會(huì )給大家講一個(gè)倉庫的故事,從中相信您會(huì )更了解內存這個(gè)倉庫是怎么工作的,希望您能喜歡。
SDRAM內存模組的物理Bank與芯片位寬
雖然有關(guān)內存結構與時(shí)序的基礎概念,在本刊2001年第2期的專(zhuān)題中就已有闡述,但在這里為了保證專(zhuān)題的可讀性,我們需要再次加強這方面的
系統認識。正確并深刻理解內存的基礎概念,是閱讀本專(zhuān)題的第一條件。因為即使是RDRAM,在很多方面也是與SDRAM相似的,而至于DDR與DDR-Ⅱ、QBM等形式的內存更是與SDRAM有著(zhù)緊密的聯(lián)系。
SDRAM內存模組與基本結構
我們平時(shí)看到的SDRAM都是以模組形式出現,為什么要做成這種形式呢?這首先要接觸到兩個(gè)概念:物理Bank與芯片位寬。
PC133時(shí)代的168pin SDRAM DIMM
1、 物理Bank
傳統內存系統為了保證CPU的正常工作,必須一次傳輸完CPU在一個(gè)傳輸周期內所需要的數據。而CPU在一個(gè)傳輸周期能接受的數據容量就是CPU數據總線(xiàn)的位寬,單位是bit(位)。當時(shí)控制內存與CPU之間數據交換的北橋芯片也因此將內存總線(xiàn)的數據位寬等同于CPU數據總線(xiàn)的位寬,而這個(gè)位寬就稱(chēng)之為物理Bank(Physical Bank,下文簡(jiǎn)稱(chēng)P-Bank)的位寬。所以,那時(shí)的內存必須要組織成P-Bank來(lái)與CPU打交道。資格稍老的玩家應該還記得Pentium剛上市時(shí),需要兩條72pin的SIMM才能
啟動(dòng),因為一條72pin -SIMM只能提供32bit的位寬,不能滿(mǎn)足Pentium的64bit數據總線(xiàn)的需要。直到168pin-SDRAM DIMM上市后,才可以使用一條內存開(kāi)機。下面將通過(guò)芯片位寬的講述來(lái)進(jìn)一步解釋P-Bank的概念。
不過(guò)要強調一點(diǎn),P-Bank是SDRAM及以前傳統內存家族的特有概念,在RDRAM中將以通道(Channel)取代,而對于像Intel E7500那樣的并發(fā)式多通道DDR系統,傳統的P-Bank概念也不適用。
2、 芯片位寬
上文已經(jīng)講到SDRAM內存系統必須要組成一個(gè)P-Bank的位寬,才能使CPU正常工作,那么這個(gè)P-Bank位寬怎么得到呢?這就涉及到了內存芯片的結構。
每個(gè)內存芯片也有自己的位寬,即每個(gè)傳輸周期能提供的數據量。理論上,完全可以做出一個(gè)位寬為64bit的芯片來(lái)滿(mǎn)足P-Bank的需要,但這對技術(shù)的要求很高,在成本和實(shí)用性方面也都處于劣勢。所以芯片的位寬一般都較小。臺式機市場(chǎng)所用的SDRAM芯片位寬最高也就是16bit,常見(jiàn)的則是8bit。這樣,為了組成P-Bank所需的位寬,就需要多顆芯片并聯(lián)工作。對于16bit芯片,需要4顆(4×16bit=64bit)。對于8bit芯片,則就需要8顆了。
以上就是芯片位寬、芯片數量與P-Bank的關(guān)系。P-Bank其實(shí)就是一組內存芯片的集合,這個(gè)集合的容量不限,但這個(gè)集合的總位寬必須與CPU數據位寬相符。隨著(zhù)計算機應用的發(fā)展,一個(gè)系統只有一個(gè)P-Bank已經(jīng)不能滿(mǎn)足容量的需要。所以,芯片組開(kāi)始可以支持多個(gè)P-Bank,一次選擇一個(gè)P-Bank工作,這就有了芯片組支持多少(物理)Bank的說(shuō)法。而在Intel的定義中,則稱(chēng)P-Bank為行(Row),比如845G芯片組支持4個(gè)行,也就是說(shuō)它支持4個(gè)P-Bank。另外,在一些文檔中,也把P-Bank稱(chēng)為Rank(列)。
回到開(kāi)頭的話(huà)題,DIMM是SDRAM集合形式的最終體現,每個(gè)DIMM至少包含一個(gè)P-Bank的芯片集合。在目前的DIMM標準中,每個(gè)模組最多可以包含兩個(gè)P-Bank的內存芯片集合,雖然理論上完全可以在一個(gè)DIMM上支持多個(gè)P-Bank,比如SDRAM DIMM就有4個(gè)芯片選擇信號(Chip Select,簡(jiǎn)稱(chēng)片選或CS),理論上可以控制4個(gè)P-Bank的芯片集合。只是由于某種原因而沒(méi)有這么去做。比如設計難度、制造成本、芯片組的配合等。至于DIMM的面數與P-Bank數量的關(guān)系,在2001年2月的專(zhuān)題中已經(jīng)明確了,面數≠P-Bank數,只有在知道芯片位寬的情況下,才能確定P-Bank的數量,大度256MB內存就是明顯一例,而這種情況在Registered模組中非常普遍。有關(guān)內存模組的設計,將在后面的相關(guān)章節中繼續探討。
SDRAM的邏輯Bank與芯片容量表示方法
1、邏輯Bank與芯片位寬
講完SDRAM的外在形式,就該深入了解SDRAM的內部結構了。這里主要的概念就是邏輯Bank。簡(jiǎn)單地說(shuō),SDRAM的內部是一個(gè)
存儲陣列。因為如果是管道式存儲(就如排隊買(mǎi)票),就很難做到隨機訪(fǎng)問(wèn)了。
陣列就如同表格一樣,將數據“填”進(jìn)去,你可以把它想象成一張表格。和表格的檢索原理一樣,先指定一個(gè)行(Row),再指定一個(gè)列(Column),我們就可以準確地找到所需要的單元格,這就是內存芯片尋址的基本原理。對于內存,這個(gè)單元格可稱(chēng)為存儲單元,那么這個(gè)表格(存儲陣列)叫什么呢?它就是邏輯Bank(Logical Bank,下文簡(jiǎn)稱(chēng)L-Bank)。
L-Bank存儲陣列示意圖
由于技術(shù)、成本等原因,不可能只做一個(gè)全容量的L-Bank,而且最重要的是,由于SDRAM的工作原理限制,單一的L-Bank將會(huì )造成非常嚴重的尋址沖突,大幅降低內存效率(在后文中將詳細講述)。所以人們在SDRAM內部分割成多個(gè)L-Bank,較早以前是兩個(gè),目前基本都是4個(gè),這也是SDRAM規范中的最高L-Bank數量。到了RDRAM則最多達到了32個(gè),在最新DDR-Ⅱ的標準中,L-Bank的數量也提高到了8個(gè)。
這樣,在進(jìn)行尋址時(shí)就要先確定是哪個(gè)L-Bank,然后再在這個(gè)選定的L-Bank中選擇相應的行與列進(jìn)行尋址??梢?jiàn)對內存的訪(fǎng)問(wèn),一次只能是一個(gè)L-Bank工作,而每次與北橋交換的數據就是L-Bank存儲陣列中一個(gè)“存儲單元”的容量。在某些廠(chǎng)商的表述中,將L-Bank中的存儲單元稱(chēng)為Word(此處代表位的集合而不是字節的集合)。
從前文可知,SDRAM內存芯片一次傳輸率的數據量就是芯片位寬,那么這個(gè)存儲單元的容量就是芯片的位寬(也是L-Bank的位寬),但要注意,這種關(guān)系也僅對SDRAM有效,原因將在下文中說(shuō)明。
2、內存芯片的容量
現在我們應該清楚內存芯片的基本組織結構了。那么內存的容量怎么計算呢?顯然,內存芯片的容量就是所有L-Bank中的存儲單元的容量總合。計算有多少個(gè)存儲單元和計算表格中的單元數量的方法一樣:
存儲單元數量=行數×列數(得到一個(gè)L-Bank的存儲單元數量)×L-Bank的數量
在很多內存產(chǎn)品介紹文檔中,都會(huì )用M×W的方式來(lái)表示芯片的容量(或者說(shuō)是芯片的規格/組織結構)。M是該芯片中存儲單元的總數,單位是兆(英文簡(jiǎn)寫(xiě)M,精確值是1048576,而不是1000000),W代表每個(gè)存儲單元的容量,也就是SDRAM芯片的位寬(Width),單位是bit。計算出來(lái)的芯片容量也是以bit為單位,但用戶(hù)可以采用除以8的方法換算為字節(Byte)。比如8M×8,這是一個(gè)8bit位寬芯片,有8M個(gè)存儲單元,總容量是64Mbit(8MB)。
不過(guò),M×W是最簡(jiǎn)單的表示方法。下圖則是某公司對自己內存芯片的容量表示方法,這可以說(shuō)是最正規的形式之一。
業(yè)界正規的內存芯片容量表示方法
我們可以計算一下,結果可以發(fā)現這三個(gè)規格的容量都是128Mbits,只是由于位寬的變化引起了存儲單元的數量變化。從這個(gè)例子就也可以看出,在相同的總容量下,位寬可以采用多種不同的設計。
3、與芯片位寬相關(guān)的DIMM設計
為什么在相同的總容量下,位寬會(huì )有多種不同的設計呢?這主要是為了滿(mǎn)足不同領(lǐng)域的需要?,F在大家已經(jīng)知道P-Bank的位寬是固定的,也就是說(shuō)當芯片位寬確定下來(lái)后,一個(gè)P-Bank中芯片的個(gè)數也就自然確定了,而前文講過(guò)P-Bank對芯片集合的位寬有要求,對芯片集合的容量則沒(méi)有任何限制。高位寬的芯片可以讓DIMM的設計簡(jiǎn)單一些(因為所用的芯片少),但在芯片容量相同時(shí),這種DIMM的容量就肯定比不上采用低位寬芯片的模組,因為后者在一個(gè)P-Bank中可以容納更多的芯片。比如上文中那個(gè)內存芯片容量標識圖,容量都是128Mbit,合16MB。如果DIMM采用雙P-Bank+16bit芯片設計,那么只能容納8顆芯片,計128MB。但如果采用4bit位寬芯片,則可容納32顆芯片,計512MB。DIMM容量前后相差出4倍,可見(jiàn)芯片位寬對DIMM設計的重要性。因此,8bit位寬芯片是桌面臺式機上容量與成本之間平衡性較好的選擇,所以在市場(chǎng)上也最為普及,而高于16bit位寬的芯片一般用在需要更大位寬的場(chǎng)合,如顯卡等,至于4bit位寬芯片很明顯非常適用于大容量?jì)却鎽妙I(lǐng)域,基本不會(huì )在標準的Unbuffered 模組設計中出現。
SDRAM的引腳與封裝
內存芯片要想工作,必須要與內存控制器有所聯(lián)系,同時(shí)對于一個(gè)電氣元件,電源供應也是必不可少的,而且數據的傳輸要有一個(gè)時(shí)鐘作為觸發(fā)參考。因此,SDRAM在封裝時(shí)就要留出相應的引腳以供使用。電源與時(shí)鐘的引腳就不必多說(shuō)了,現在我們可以想象一下,至少應該有哪些控制引腳呢?
我們從內存尋址的步驟縷下來(lái)就基本明白了,從中我們也就能了解內存工作的大體情況。這里需要說(shuō)明的是,與DIMM一樣,SDRAM有著(zhù)自己的業(yè)界設計規范,在一個(gè)容量標準下,SDRAM的引腳/信號標準不能只考慮一種位寬的設計,而是要顧及多種位寬,然后盡量給出一個(gè)通用的標準,小位寬的芯片也許會(huì )空出一些引腳,但高位寬的芯片可能就全部用上了。不過(guò)容量不同時(shí),設計標準也會(huì )有所不同,一般的容量越小的芯片所需要的引腳也就越小。
1、 首先,我們知道內存控制器要先確定一個(gè)P-Bank的芯片集合,然后才對這集合中的芯片進(jìn)行尋址操作。因此要有一個(gè)片選的信號,它一次選擇一個(gè)P-Bank的芯片集(根據位寬的不同,數量也不同)。被選中的芯片將同時(shí)接收或讀取數據,所以要有一個(gè)片選信號。
2、 接下來(lái)是對所有被選中的芯片進(jìn)行統一的L-Bank的尋址,目前SDRAM中L-Bank的數量最高為4個(gè),所以需要兩個(gè)L-Bank地址信號(22=4)。
3、 最后就是對被選中的芯片進(jìn)行統一的行/列(存儲單元)尋址。地址線(xiàn)數量要根據芯片的組織結構分別設計了。但在相同容量下,行數不變,只有列數會(huì )根據位寬的而變化,位寬越大,列數越少,因為所需的存儲單元減少了。
4、 找到了存儲單元后,被選中的芯片就要進(jìn)行統一的數據傳輸,那么肯定要有與位寬相同數量的數據I/O通道才行,所以肯定要有相應數量的數據線(xiàn)引腳。
現在我們就基本知道了內存芯片的一些信號引腳,下圖就是一個(gè)簡(jiǎn)單的SDRAM示意圖,大家可以詳細看看。
圖注:128Mbit芯片不同位寬的引腳圖(NC代表未使用,-表示與內側位寬設計相同)
根據SDRAM的官方規范,臺式機上所用的SDRAM在不同容量下的各種位寬封裝標準如下:
SDRAM芯片初始化、行有效、列讀寫(xiě)時(shí)序
上文我們已經(jīng)了解了SDRAM所用到的基本信號
線(xiàn)路,下面就看看它們在SDRAM芯片內部是怎么“布置”的,并從這里開(kāi)始深入了解內存的基本操作與過(guò)程,在這一節中我們將接觸到有天書(shū)之稱(chēng)的時(shí)序圖,但不要害怕,根據文中的指導慢慢理解,您肯定可以看懂它。首先,我們先認識一下SDRAM的內部結構,然后再開(kāi)始具體的講述。
128Mbit(32M×4)SDRAM內部結構圖(點(diǎn)擊放大)
芯片初始化
可能很多人都想象不到,在SDRAM芯片內部還有一個(gè)邏輯控制單元,并且有一個(gè)模式寄存器為其提供控制參數。因此,每次開(kāi)機時(shí)SDRAM都要先對這個(gè)控制邏輯核心進(jìn)行初始化。有關(guān)預充電和刷新的含義在下文有講述,關(guān)鍵的階段就在于模式寄存器(MR,Mode Register)的設置,簡(jiǎn)稱(chēng)MRS(MR Set),這一工作由北橋芯片在BIOS的控制下進(jìn)行,寄存器的信息由地址線(xiàn)來(lái)提供。
SDRAM在開(kāi)機時(shí)的初始化過(guò)程
SDRAM模式寄存器所控制的操作參數:地址線(xiàn)提供不同的0/1信號來(lái)獲得不同的參數。在設置到MR之后,就開(kāi)始了進(jìn)入正常的工作狀態(tài),圖中相關(guān)參數將結合下文具體講述
行有效
初始化完成后,要想對一個(gè)L-Bank中的陣列進(jìn)行尋址,首先就要確定行(Row),使之處于活動(dòng)狀態(tài)(Active),然后再確定列。雖然之前要進(jìn)行片選和L-Bank的定址,但它們與行有效可以同時(shí)進(jìn)行。
行有效時(shí)序圖
從圖中可以看出,在CS#、L-Bank定址的同時(shí),RAS(Row Address Strobe,行地址選通脈沖)也處于有效狀態(tài)。此時(shí)An地址線(xiàn)則發(fā)送具體的行地址。如圖中是A0-A11,共有12個(gè)地址線(xiàn),由于是二進(jìn)制表示法,所以共有4096個(gè)行(212=4096),A0-A11的不同數值就確定了具體的行地址。由于行有效的同時(shí)也是相應L-Bank有效,所以行有效也可稱(chēng)為L(cháng)-Bank有效。
列讀寫(xiě)
行地址確定之后,就要對列地址進(jìn)行尋址了。但是,地址線(xiàn)仍然是行地址所用的A0-A11(本例)。沒(méi)錯,在SDRAM中,行地址與列地址線(xiàn)是共用的。不過(guò),讀/寫(xiě)的命令是怎么發(fā)出的呢?其實(shí)沒(méi)有一個(gè)信號是發(fā)送讀或寫(xiě)的明確命令的,而是通過(guò)芯片的可寫(xiě)狀態(tài)的控制來(lái)達到讀/寫(xiě)的目的。顯然WE#信號就是一個(gè)關(guān)鍵。WE#無(wú)效時(shí),當然就是讀取命令。
SDRAM基本操作命令(上表可點(diǎn)擊放大), 通過(guò)各種控制/地址信號的組合來(lái)完成(H代表高電平,L代表低電平,X表示高低電平均沒(méi)有影響)。此表中,除了自刷新命令外,所有命令都是默認CKE有效。對于自刷新命令,下文有詳解
列尋址信號與讀寫(xiě)命令是同時(shí)發(fā)出的。雖然地址線(xiàn)與行尋址共用,但CAS(Column Address Strobe,列地址選通脈沖)信號則可以區分開(kāi)行與列尋址的不同,配合A0-A9,A11(本例)來(lái)確定具體的列地址。
讀寫(xiě)操作示意圖,讀取命令與列地址一塊發(fā)出(當WE#為低電平是即為寫(xiě)命令)
然而,在發(fā)送列讀寫(xiě)命令時(shí)必須要與行有效命令有一個(gè)間隔,這個(gè)間隔被定義為tRCD,即RAS to CAS Delay(RAS至CAS延遲),大家也可以理解為行選通周期,這應該是根據芯片
存儲陣列電子元件響應時(shí)間(從一種狀態(tài)到另一種狀態(tài)變化的過(guò)程)所制定的延遲。tRCD是SDRAM的一個(gè)重要時(shí)序參數,可以通過(guò)主板BIOS經(jīng)過(guò)北橋芯片進(jìn)行調整,但不能超過(guò)廠(chǎng)商的預定范圍。廣義的tRCD以時(shí)鐘周期(tCK,Clock Time)數為單位,比如tRCD=2,就代表延遲周期為兩個(gè)時(shí)鐘周期,具體到確切的時(shí)間,則要根據時(shí)鐘頻率而定,對于PC100 SDRAM,tRCD=2,代表20ns的延遲,對于PC133則為15ns。
tRCD=3的時(shí)序圖
SDRAM的讀/寫(xiě)時(shí)序與突發(fā)長(cháng)度
數據輸出(讀)
在選定列地址后,就已經(jīng)確定了具體的存儲單元,剩下的事情就是數據通過(guò)數據I/O通道(DQ)輸出到內存總線(xiàn)上了。但是在CAS發(fā)出之后,仍要經(jīng)過(guò)一定的時(shí)間才能有數據輸出,從CAS與讀取命令發(fā)出到第一筆數據輸出的這段時(shí)間,被定義為CL(CAS Latency,CAS潛伏期)。由于CL只在讀取時(shí)出現,所以CL又被稱(chēng)為讀取潛伏期(RL,Read Latency)。CL的單位與tRCD一樣,為時(shí)鐘周期數,具體耗時(shí)由時(shí)鐘頻率決定。
不過(guò),CAS并不是在經(jīng)過(guò)CL周期之后才送達存儲單元。實(shí)際上CAS與RAS一樣是瞬間到達的,但CAS的響應時(shí)間要更快一些。為什么呢?假設芯片位寬為n個(gè)bit,列數為c,那么一個(gè)行地址要選通n×c個(gè)存儲體,而一個(gè)列地址只需選通n個(gè)存儲體。但存儲體中晶體管的反應時(shí)間仍會(huì )造成數據不可能與CAS在同一上升沿觸發(fā),肯定要延后至少一個(gè)時(shí)鐘周期。
由于芯片體積的原因,存儲單元中的電容容量很小,所以信號要經(jīng)過(guò)放大來(lái)保證其有效的識別性,這個(gè)放大/驅動(dòng)工作由S-AMP負責,一個(gè)存儲體對應一個(gè)S-AMP通道。但它要有一個(gè)準備時(shí)間才能保證信號的發(fā)送強度(事前還要進(jìn)行電壓比較以進(jìn)行邏輯電平的判斷),因此從數據I/O總線(xiàn)上有數據輸出之前的一個(gè)時(shí)鐘上升沿開(kāi)始,數據即已傳向S-AMP,也就是說(shuō)此時(shí)數據已經(jīng)被觸發(fā),經(jīng)過(guò)一定的驅動(dòng)時(shí)間最終傳向數據I/O總線(xiàn)進(jìn)行輸出,這段時(shí)間我們稱(chēng)之為tAC(
Access Time from CLK,時(shí)鐘觸發(fā)后的訪(fǎng)問(wèn)時(shí)間)。tAC的單位是ns,對于不同的頻率各有不同的明確規定,但必須要小于一個(gè)時(shí)鐘周期,否則會(huì )因訪(fǎng)問(wèn)時(shí)過(guò)長(cháng)而使效率降低。比如PC133的時(shí)鐘周期為7.5ns,tAC則是5.4ns。需要強調的是,每個(gè)數據在讀取時(shí)都有tAC,包括在連續讀取中,只是在進(jìn)行第一個(gè)數據傳輸的同時(shí)就開(kāi)始了第二個(gè)數據的tAC。
CL=2與tAC示意圖
CL的數值不能超出芯片的設計規范,否則會(huì )導致內存的不穩定,甚至開(kāi)不了機(超頻的玩家應該有體會(huì )),而且它也不能在數據讀取前臨時(shí)更改。CL周期在開(kāi)機初始化過(guò)程中的MRS階段進(jìn)行設置,在BIOS中一般都允許用戶(hù)對其調整,然后BIOS控制北橋芯片在開(kāi)機時(shí)通過(guò)A4-A6地址線(xiàn)對MR中CL寄存器的信息進(jìn)行更改。
不過(guò),從存儲體的結構圖上可以看出,原本邏輯狀態(tài)為1的電容在讀取操作后,會(huì )因放電而變?yōu)檫壿?。所以,以前的DRAM為了在關(guān)閉當前行時(shí)保證數據的可靠性,要對存儲體中原有的信息進(jìn)行重寫(xiě),這個(gè)任務(wù)由數據所經(jīng)過(guò)的刷新放大器來(lái)完成,它根據邏輯電平狀態(tài),將數據進(jìn)行重寫(xiě)(邏輯0時(shí)就不重寫(xiě)),由于這個(gè)操作與數據的輸出是同步進(jìn)行互不沖突,所以不會(huì )產(chǎn)生新的重寫(xiě)延遲。后來(lái)通過(guò)技術(shù)的改良,刷新放大器被取消,其功能由S-AMP取代,因為在讀取時(shí)它會(huì )保持數據的邏輯狀態(tài),起到了一個(gè)Cache的作用,再次讀取時(shí)由它直接發(fā)送即可,不用再進(jìn)行新的尋址輸出,此時(shí)數據重寫(xiě)操作則可在預充電階段完成。
數據輸入(寫(xiě))
數據寫(xiě)入的操作也是在tRCD之后進(jìn)行,但此時(shí)沒(méi)有了CL(記住,CL只出現在讀取操作中),行尋址與列尋址的時(shí)序圖和上文一樣,只是在列尋址時(shí),WE#為有效狀態(tài)。
數據寫(xiě)入的時(shí)序圖
從圖中可見(jiàn),由于數據信號由控制端發(fā)出,輸入時(shí)芯片無(wú)需做任何調校,只需直接傳到數據輸入寄存器中,然后再由寫(xiě)入驅動(dòng)器進(jìn)行對存儲電容的充電操作,因此數據可以與CAS同時(shí)發(fā)送,也就是說(shuō)寫(xiě)入延遲為0。不過(guò),數據并不是即時(shí)地寫(xiě)入存儲電容,因為選通三極管(就如讀取時(shí)一樣)與電容的充電必須要有一段時(shí)間,所以數據的真正寫(xiě)入需要一定的周期。為了保證數據的可靠寫(xiě)入,都會(huì )留出足夠的寫(xiě)入/校正時(shí)間(tWR,Write Recovery Time),這個(gè)操作也被稱(chēng)作寫(xiě)回(Write Back)。tWR至少占用一個(gè)時(shí)鐘周期或再多一點(diǎn)(時(shí)鐘頻率越高,tWR占用周期越多),有關(guān)它的影響將在下文進(jìn)一步講述。
突發(fā)長(cháng)度
突發(fā)(Burst)是指在同一行中相鄰的存儲單元連續進(jìn)行數據傳輸的方式,連續傳輸所涉及到存儲單元(列)的數量就是突發(fā)長(cháng)度(Burst Lengths,簡(jiǎn)稱(chēng)BL)。 在目前,由于內存控制器一次讀/寫(xiě)P-Bank位寬的數據,也就是8個(gè)字節,但是在現實(shí)中小于8個(gè)字節的數據很少見(jiàn),所以一般都要經(jīng)過(guò)多個(gè)周期進(jìn)行數據的傳輸。上文講到的讀/寫(xiě)操作,都是一次對一個(gè)存儲單元進(jìn)行尋址,如果要連續讀/寫(xiě)就還要對當前存儲單元的下一個(gè)單元進(jìn)行尋址,也就是要不斷的發(fā)送列地址與讀/寫(xiě)命令(行地址不變,所以不用再對行尋址)。雖然由于讀/寫(xiě)延遲相同可以讓數據的傳輸在I/O端是連續的,但它占用了大量的內存控制資源,在數據進(jìn)行連續傳輸時(shí)無(wú)法輸入新的命令,效率很低(早期的FPE/EDO內存就是以這種方式進(jìn)行連續的數據傳輸)。為此,人們開(kāi)發(fā)了突發(fā)
傳輸技術(shù),只要指定起始列地址與突發(fā)長(cháng)度,內存就會(huì )依次地自動(dòng)對后面相應數量的存儲單元進(jìn)行讀/寫(xiě)操作而不再需要控制器連續地提供列地址。這樣,除了第一筆數據的傳輸需要若干個(gè)周期(主要是之前的延遲,一般的是tRCD+CL)外,其后每個(gè)數據只需一個(gè)周期的即可獲得。在很多北橋芯片的介紹中都有類(lèi)似于X-1-1-1的字樣,就是指這個(gè)意思,其中的X代表就代表第一筆數據所用的周期數。
非突發(fā)連續讀取模式:不采用突發(fā)傳輸而是依次單獨尋址,此時(shí)可等效于BL=1。雖然可以讓數據是連續的傳輸,但每次都要發(fā)送列地址與命令信息,控制資源占用極大
突發(fā)連續讀取模式:只要指定起始列地址與突發(fā)長(cháng)度,尋址與數據的讀取自動(dòng)進(jìn)行,而只要控制好兩段突發(fā)讀取命令的間隔周期(與BL相同)即可做到連續的突發(fā)傳輸
至于BL的數值,也是不能隨便設或在數據進(jìn)行傳輸前臨時(shí)決定。在上文講到的初始化過(guò)程中的MRS階段就要對BL進(jìn)行設置。目前可用的選項是1、2、4、8、全頁(yè)(Full Page),常見(jiàn)的設定是4和8。順便說(shuō)一下,BL能否更改與北橋芯片的設計有很大關(guān)系,不是每個(gè)北橋都能像調整CL那樣來(lái)調整BL。某些芯片組的BL是定死而不可改的,比如Intel芯片組的BL基本都為4,所以在相應的主板BIOS中也就不會(huì )有BL的設置選項。而由于目前的SDRAM系統的數據傳輸是以64bit/周期進(jìn)行,所以在一些BIOS也把BL用QWord(4字,即64bit)來(lái)表示。如4QWord就是BL=4。
另外,在MRS階段除了要設定BL數值之外,還要具體確定讀/寫(xiě)操作的模式以及突發(fā)傳輸的模式。突發(fā)讀/突發(fā)寫(xiě),表示讀與寫(xiě)操作都是突發(fā)傳輸的,每次讀/寫(xiě)操作持續BL所設定的長(cháng)度,這也是常規的設定。突發(fā)讀/單一寫(xiě),表示讀操作是突發(fā)傳輸,寫(xiě)操作則只是一個(gè)個(gè)單獨進(jìn)行。突發(fā)傳輸模式代表著(zhù)突發(fā)周期內所涉及到的存儲單元的傳輸順序。順序傳輸是指從起始單元開(kāi)始順序讀取。假如BL=4,起始單元編號是n,順序就是n、n+1、n+2、n+3。交錯傳輸就是打亂正常的順序進(jìn)行數據傳輸(比如第一個(gè)進(jìn)行傳輸的單元是n,而第二個(gè)進(jìn)行傳輸的單元是n+2而不是n+1),至于交錯的規則在SDRAM規范中有詳細的定義表,但在這此出于必要性與篇幅的考慮就不列出了。
SDRAM芯片的預充電與刷新操作
預充電
由于SDRAM的尋址具體獨占性,所以在進(jìn)行完讀寫(xiě)操作后,如果要對同一L-Bank的另一行進(jìn)行尋址,就要將原來(lái)有效(工作)的行關(guān)閉,重新發(fā)送行/列地址。L-Bank關(guān)閉現有工作行,準備打開(kāi)新行的操作就是預充電(Precharge)。預充電可以通過(guò)命令控制,也可以通過(guò)輔助設定讓芯片在每次讀寫(xiě)操作之后自動(dòng)進(jìn)行預充電。實(shí)際上,預充電是一種對工作行中所有存儲體進(jìn)行數據重寫(xiě),并對行地址進(jìn)行復位,同時(shí)釋放S-AMP(重新加入比較電壓,一般是電容電壓的1/2,以幫助判斷讀取數據的邏輯電平,因為S-AMP是通過(guò)一個(gè)參考電壓與存儲體位線(xiàn)電壓的比較來(lái)判斷邏輯值的),以準備新行的工作。具體而言,就是將S-AMP中的數據回寫(xiě),即使是沒(méi)有工作過(guò)的存儲體也會(huì )因行選通而使存儲電容受到干擾,所以也需要S-AMP進(jìn)行讀后重寫(xiě)。此時(shí),電容的電量(或者說(shuō)其產(chǎn)生的電壓)將是判斷邏輯狀態(tài)的依據(讀取時(shí)也需要),為此要設定一個(gè)臨界值,一般為電容電量的1/2,超過(guò)它的為邏輯1,進(jìn)行重寫(xiě),否則為邏輯0,不進(jìn)行重寫(xiě)(等于放電)。為此,現在基本都將電容的另一端接入一個(gè)指定的電壓(即1/2電容電壓),而不是接地,以幫助重寫(xiě)時(shí)的比較與判斷。
現在我們再回過(guò)頭看看讀寫(xiě)操作時(shí)的命令時(shí)序圖,從中可以發(fā)現地址線(xiàn)A10控制著(zhù)是否進(jìn)行在讀寫(xiě)之后當前L-Bank自動(dòng)進(jìn)行預充電,這就是上文所說(shuō)的“輔助設定”。而在單獨的預充電命令中,A10則控制著(zhù)是對指定的L-Bank還是所有的L-Bank(當有多個(gè)L-Bank處于有效/活動(dòng)狀態(tài)時(shí))進(jìn)行預充電,前者需要提供L-Bank的地址,后者只需將A10信號置于高電平。
在發(fā)出預充電命令之后,要經(jīng)過(guò)一段時(shí)間才能允許發(fā)送RAS行有效命令打開(kāi)新的工作行,這個(gè)間隔被稱(chēng)為tRP(Precharge command Period,預充電有效周期)。和tRCD、CL一樣,tRP的單位也是時(shí)鐘周期數,具體值視時(shí)鐘頻率而定。
讀取時(shí)預充電時(shí)序圖(上圖可點(diǎn)擊放大):圖中設定:CL=2、BL=4、tRP=2。自動(dòng)預充電時(shí)的開(kāi)始時(shí)間與此圖一樣,只是沒(méi)有了單獨的預充電命令,并在發(fā)出讀取命令時(shí),A10地址線(xiàn)要設為高電平(允許自動(dòng)預充電)??梢?jiàn)控制好預充電
啟動(dòng)時(shí)間很重要,它可以在讀取操作結束后立刻進(jìn)入新行的尋址,保證運行效率。
誤區:讀寫(xiě)情況下都要考慮寫(xiě)回延遲
有些文章強調由于寫(xiě)回操作而使讀/寫(xiě)操作后都有一定的延遲,但從本文的介紹中寫(xiě)可以看出,即使是讀后立即重寫(xiě)的設計,由于是與數據輸出同步進(jìn)行,并不存在延遲。只有在寫(xiě)操作后進(jìn)行其他的操作時(shí),才會(huì )有這方面的影響。寫(xiě)操作雖然是0延遲進(jìn)行,但每筆數據的真正寫(xiě)入則需要一個(gè)足夠的周期來(lái)保證,這段時(shí)間就是寫(xiě)回周期(tWR)。所以預充電不能與寫(xiě)操作同時(shí)進(jìn)行,必須要在tWR之后才能發(fā)出預充電命令,以確保數據的可靠寫(xiě)入,否則重寫(xiě)的數據可能是錯的,這就造成了寫(xiě)回延遲。
數據寫(xiě)入時(shí)預充電操作時(shí)序圖(可點(diǎn)擊放大):注意其中的tWR參數,由于它的存在,使預充電操作延后,從而造成寫(xiě)回延遲
刷新
之所以稱(chēng)為DRAM,就是因為它要不斷進(jìn)行刷新(Refresh)才能保留住數據,因此它是DRAM最重要的操作。
刷新操作與預充電中重寫(xiě)的操作一樣,都是用S-AMP先讀再寫(xiě)。但為什么有預充電操作還要進(jìn)行刷新呢?因為預充電是對一個(gè)或所有L-Bank中的工作行操作,并且是不定期的,而刷新則是有固定的周期,依次對所有行進(jìn)行操作,以保留那些久久沒(méi)經(jīng)歷重寫(xiě)的存儲體中的數據。但與所有L-Bank預充電不同的是,這里的行是指所有L-Bank中地址相同的行,而預充電中各L-Bank中的工作行地址并不是一定是相同的。
那么要隔多長(cháng)時(shí)間重復一次刷新呢?目前公認的標準是,存儲體中電容的數據有效保存期上限是64ms(毫秒,1/1000秒),也就是說(shuō)每一行刷新的循環(huán)周期是64ms。這樣刷新速度就是:行數量/64ms。我們在看內存規格時(shí),經(jīng)常會(huì )看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的標識,這里的4096與8192就代表這個(gè)芯片中每個(gè)L-Bank的行數。刷新命令一次對一行有效,發(fā)送間隔也是隨總行數而變化,4096行時(shí)為15.625μs(微秒,1/1000毫秒),8192行時(shí)就為7.8125μs。
刷新操作分為兩種:自動(dòng)刷新(Auto Refresh,簡(jiǎn)稱(chēng)AR)與自刷新(Self Refresh,簡(jiǎn)稱(chēng)SR)。不論是何種刷新方式,都不需要外部提供行地址信息,因為這是一個(gè)內部的自動(dòng)操作。對于A(yíng)R, SDRAM內部有一個(gè)行地址生成器(也稱(chēng)刷新計數器)用來(lái)自動(dòng)的依次生成行地址。由于刷新是針對一行中的所有存儲體進(jìn)行,所以無(wú)需列尋址,或者說(shuō)CAS在RAS之前有效。所以,AR又稱(chēng)CBR(CAS Before RAS,列提前于行定位)式刷新。由于刷新涉及到所有L-Bank,因此在刷新過(guò)程中,所有L-Bank都停止工作,而每次刷新所占用的時(shí)間為9個(gè)時(shí)鐘周期(PC133標準),之后就可進(jìn)入正常的工作狀態(tài),也就是說(shuō)在這9 個(gè)時(shí)鐘期間內,所有工作指令只能等待而無(wú)法執行。64ms之后則再次對同一行進(jìn)行刷新,如此周而復始進(jìn)行循環(huán)刷新。顯然,刷新操作肯定會(huì )對SDRAM的性能造成影響,但這是沒(méi)辦法的事情,也是DRAM相對于SRAM(靜態(tài)內存,無(wú)需刷新仍能保留數據)取得成本優(yōu)勢的同時(shí)所付出的代價(jià)。
SR則主要用于休眠模式低功耗狀態(tài)下的數據保存,這方面最著(zhù)名的應用就是STR(Suspend to RAM,休眠掛起于內存)。在發(fā)出AR命令時(shí),將CKE置于無(wú)效狀態(tài),就進(jìn)入了SR模式,此時(shí)不再依靠
系統時(shí)鐘工作,而是根據內部的時(shí)鐘進(jìn)行刷新操作。在SR期間除了CKE之外的所有外部信號都是無(wú)效的(無(wú)需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式并進(jìn)入正常操作狀態(tài)。
數據掩碼
在講述讀/寫(xiě)操作時(shí),我們談到了突發(fā)長(cháng)度。如果BL=4,那么也就是說(shuō)一次就傳送4×64bit的數據。但是,如果其中的第二筆數據是不需要的,怎么辦?還都傳輸嗎?為了屏蔽不需要的數據,人們采用了數據掩碼(Data I/O Mask,簡(jiǎn)稱(chēng)DQM)技術(shù)。通過(guò)DQM,內存可以控制I/O端口取消哪些輸出或輸入的數據。這里需要強調的是,在讀取時(shí),被屏蔽的數據仍然會(huì )從存儲體傳出,只是在“掩碼邏輯單元”處被屏蔽。DQM由北橋控制,為了精確屏蔽一個(gè)P-Bank位寬中的每個(gè)字節,每個(gè)DIMM有8個(gè)DQM信號線(xiàn),每個(gè)信號針對一個(gè)字節。這樣,對于4bit位寬芯片,兩個(gè)芯片共用一個(gè)DQM信號線(xiàn),對于8bit位寬芯片,一個(gè)芯片占用一個(gè)DQM信號,而對于16bit位寬芯片,則需要兩個(gè)DQM引腳。
SDRAM官方規定,在讀取時(shí)DQM發(fā)出兩個(gè)時(shí)鐘周期后生效,而在寫(xiě)入時(shí),DQM與寫(xiě)入命令一樣是立即成效。
讀取時(shí)數據掩碼操作,DQM在兩個(gè)周期后生效,突發(fā)周期的第二筆數據被取消(上圖可點(diǎn)擊放大)
寫(xiě)入時(shí)數據掩碼操作,DQM立即生效,突發(fā)周期的第二筆數據被取消(上圖可點(diǎn)擊放大)
有關(guān)內存內部的基本操作就到此結束,其實(shí)還有很多內存的操作沒(méi)有描述,但都不是很重要了,限于篇幅與必要性,我們不在此介紹,有興趣的讀者可以自行查看相關(guān)資料。
圖解SDRAM工作流程:倉庫物語(yǔ)
貨物基地(
主板)連接著(zhù)物資(數據)的供求方?;氐呢浳镎{度廠(chǎng)房(北橋芯片)掌管著(zhù)若干個(gè)用于臨時(shí)供貨/生產(chǎn)與存儲的倉庫基地(P-Bank),它們通常隸屬于某一倉儲集團(DIMM),這種基地與調度廠(chǎng)房之間必須由64條傳送帶聯(lián)系著(zhù)(P-Bank位寬),每條傳送帶一次只能運送一個(gè)標準的貨物(1bit數據),而且一次至少要傳送64個(gè)標準貨物,這是它們之間的約定,倉庫基地必須滿(mǎn)足。
上圖(點(diǎn)擊放大)就是這樣的一個(gè)倉庫基地(P-Bank),它由4個(gè)大倉庫(內存芯片)組成,它們的規模都相當大,每個(gè)大倉庫為基地提供16條傳送帶(芯片位寬為16bit),總共加起來(lái)剛好就是64條。每個(gè)大倉庫里都有四個(gè)規模和結構相同的子倉庫(L-Bank),它們都被統一編了號。而子倉庫中有很多層(行),每層里又有很多的儲藏間(列),每個(gè)儲藏間可以放置16個(gè)標準貨物,雖然子倉庫的規模很大,但每一層和每一個(gè)房間也都編好了號,而且每一層都有一個(gè)搬運工在值班。
為了與外界聯(lián)系方便,倉儲集團與調度室設置了專(zhuān)線(xiàn)電話(huà),和一個(gè)國家一樣,每個(gè)倉庫基地有一個(gè)區號(片選),另外還有四個(gè)子倉庫號碼(L-Bank地址),是所有大倉庫共享的,一個(gè)號碼對應所有大倉庫中編號相同的子倉庫。而專(zhuān)線(xiàn)電話(huà)的數量也是四個(gè),這樣可保證與某個(gè)子倉庫通話(huà)時(shí)不會(huì )妨礙給其他子倉庫打電話(huà)。在子倉庫的每層則設立分機給搬運工使用。子倉庫的樓下就是傳送帶,找到貨物把它扔到上面。但每個(gè)大倉庫只有一個(gè)傳送帶,也就是說(shuō)同一時(shí)間內只能有一個(gè)子倉庫在工作。每個(gè)子倉庫都有一個(gè)自己的生產(chǎn)車(chē)間(讀出放大器)負責指定貨物的生產(chǎn),并且每個(gè)大倉庫都有一個(gè)外運站(數據輸出寄存器)和寄存托運處(數據輸入寄存器與寫(xiě)入驅動(dòng)器)與傳送帶相連,前者負責貨物的輸出中轉,后者負責所接受貨物并寄存然后幫助搬運工運送到指定儲藏間。那么它是如何與調度廠(chǎng)房協(xié)同工作的呢?
1、需求方有貨物請求了,這個(gè)請求發(fā)送到調度廠(chǎng)房,調度人員開(kāi)根據貨主的要求給指定的子倉庫打電話(huà),電話(huà)號碼是:區號+子倉庫號碼+樓層分機(片選+L-Bank尋址+行有效/選通)。那一層的搬運工接到電話(huà)后就開(kāi)始準備工作。
2、當搬運工點(diǎn)亮所有儲藏間的門(mén)牌(tRCD)之后,調度人員會(huì )告訴搬運工,貨物放在哪個(gè)儲藏間里(列尋址),如果貨物很多,并且是連續存放的,調度員會(huì )通知搬運工:“一會(huì )兒要搬的時(shí)候,從起始房間開(kāi)始連續將后面的n個(gè)房間的貨物都搬出來(lái),我就不再重復了”(突發(fā)傳輸)。但是,他告訴搬運工要等一下,要求所有大倉庫的人員統一行動(dòng),先別出貨。
3、根據事先的規定,搬運工在經(jīng)過(guò)指定的時(shí)間后開(kāi)始將貨物扔到傳送帶上,傳送帶開(kāi)始運轉并將貨物送到生產(chǎn)車(chē)間,由它來(lái)復制出全新的貨物,然后再送到傳送帶上通過(guò)外運站向調度廠(chǎng)房運去。人們通常把從搬運工找到具體儲藏間開(kāi)始,到貨物真正出現在送往調度廠(chǎng)房的傳送帶上的這段時(shí)間稱(chēng)之為“輸出潛伏期”(CL),而從值班人把貨物扔到傳送帶到貨物開(kāi)始傳向調度廠(chǎng)房的這段時(shí)間,被稱(chēng)為“貨物輸出延遲”(tAC),它體現了值班人員的反應時(shí)間和生產(chǎn)車(chē)間的效率,也影響著(zhù)倉庫基地所在集團(DIMM)的名聲。
4、在這個(gè)搬運工工作的同時(shí),由于電話(huà)對于編號相同的子倉庫是并聯(lián)的,所以其他子倉庫相同樓層的搬運工也收到相同的命令,從相同編號的房間搬出貨物,運向各自的生產(chǎn)車(chē)間。此時(shí),同一批貨物同時(shí)出現在各自的16條傳送帶上,并整齊地向調度廠(chǎng)房運去。
5、當貨物傳送完后,原始貨物還要送回儲藏間保管,這是必須的,但如果沒(méi)有要求,貨物可以一直保留在生產(chǎn)車(chē)間,如果再有需要就再生產(chǎn),而不用再麻煩搬運工了(讀出放大器相當于一個(gè)Cache)。調度人員接著(zhù)會(huì )進(jìn)行下一批貨物的調度,當他發(fā)現下一批貨物在上次操作的子倉庫中,但不在剛才通話(huà)的那一層,只能再重新?lián)茈娫?huà)。這時(shí),他通知各子倉庫貨物翻新運回,清理生產(chǎn)車(chē)間,之后掛斷電話(huà)(預充電命令),這一切必須要在指定時(shí)間里(tRP)完成,然后才能給新的樓層打電話(huà)。搬運員接到通知后,就將這一
層中所有房間的貨物都拿到生產(chǎn)車(chē)間進(jìn)行翻新(沒(méi)有貨物的就不用翻新),然后再搬回儲藏間。干完這一切之后,搬運工掛了電話(huà)(關(guān)閉行)就可以休息了,他們稱(chēng)這種工作為“貨物清理返運”(預充電)。這個(gè)工作的速度也要快,否則同樣會(huì )影響集團名聲。當然,這個(gè)工作可以讓搬運工自動(dòng)完成(自動(dòng)預充電),只需調度員在當初下搬運指令時(shí)提醒一他:“貨物運送完了,就進(jìn)行貨物清理返運吧,我不管了”(用A10地址線(xiàn))。
6、當有貨物要運來(lái)存儲時(shí),調度員在向子倉庫發(fā)送貨物的同時(shí)就給指定的樓層打電話(huà),讓他們準備好房間,此時(shí)貨物已經(jīng)到了寄存托運處,沒(méi)有任何的運送延遲(寫(xiě)入延遲=0),搬運工在托運間的幫助下,向指定的儲藏間運送貨物,這可需要一定的時(shí)間了,他們稱(chēng)之為貨物堆放時(shí)間(tWR),必須給足搬運工們這一時(shí)間,而不能在這期間里讓他們干其他的工作,否則他們會(huì )令貨物丟失并罷工……
(注:本插欄是對DRAM操作的形象性描述,謹供輔助性理解本專(zhuān)題,嚴謹的操作說(shuō)明見(jiàn)上文。另外,在此請各位讀者注意,將內存比喻為倉庫只是為了形象化描述,而不要把內存等同理解為存儲,它們是有本質(zhì)的不同的,在本文的比喻中,它只是一個(gè)臨時(shí)性倉庫,這一點(diǎn)請大家分清,不要因此產(chǎn)生新的錯誤概念。)
SDRAM的結構、時(shí)序與性能的關(guān)系(上)
在講完SDRAM的基本工作原理和主要操作之后,我們現在要重要分析一下SDRAM的時(shí)序與性能之間的關(guān)系,它不在局限于芯片本身,而是從整體的內存
系統去分析。這也是廣大DIYer所關(guān)心的話(huà)題。比如CL值對性能的影響有多大幾乎是每個(gè)內存論壇都會(huì )有討論,今天我們就詳細探討一下,其中的很多內容同樣適用于DDR與RDRAM。這里需要強調一點(diǎn),對于內存系統整體而言,一次內存訪(fǎng)問(wèn)就是對一個(gè)頁(yè)的訪(fǎng)問(wèn),這個(gè)頁(yè)的定義已經(jīng)在解釋Full Page含義時(shí)講明了。由于在P-Bank中,每個(gè)芯片的尋址都是一樣的,所以可以將頁(yè)訪(fǎng)問(wèn)“濃縮”等效為對每芯片中指定行的訪(fǎng)問(wèn),這樣可能比較好理解。但為了與官方標準統一,在下文中會(huì )經(jīng)常用頁(yè)來(lái)描述相關(guān)的內容,請讀者注意理解。
一、影響性能的主要時(shí)序參數
所謂的影響性能是并不是指SDRAM的帶寬,頻率與位寬固定后,帶寬也就不可更改了。但這是理想的情況,在內存的工作周期內,不可能總處于數據傳輸的狀態(tài),因為要有命令、尋址等必要的過(guò)程。但這些操作占用的時(shí)間越短,內存工作的效率越高,性能也就越好。
非數據傳輸時(shí)間的主要組成部分就是各種延遲與潛伏期。通過(guò)上文的講述,大家應該很明顯看出有三個(gè)參數對內存的性能影響至關(guān)重要,它們是tRCD、CL和tRP。每條正規的內存模組都會(huì )在標識上注明這三個(gè)參數值,可見(jiàn)它們對性能的敏感性。
以?xún)却孀钪饕牟僮鳌x取為例。tRCD決定了行尋址(有效)至列尋址(讀/寫(xiě)命令)之間的間隔,CL決定了列尋址到數據進(jìn)行真正被讀取所花費的時(shí)間,tRP則決定了相同L-Bank中不同工作行轉換的速度?,F在可以想象一下讀取時(shí)可能遇到的幾種情況(分析寫(xiě)入操作時(shí)不用考慮CL即可):
1、要尋址的行與L-Bank是空閑的。也就是說(shuō)該L-Bank的所有行是關(guān)閉的,此時(shí)可直接發(fā)送行有效命令,數據讀取前的總耗時(shí)為tRCD+CL,這種情況我們稱(chēng)之為頁(yè)命中(PH,Page Hit)。
2、要尋址的行正好是前一個(gè)操作的工作行,也就是說(shuō)要尋址的行已經(jīng)處于選通有效狀態(tài),此時(shí)可直接發(fā)送列尋址命令,數據讀取前的總耗時(shí)僅為CL,這就是所謂的背靠背(Back to Back)尋址,我們稱(chēng)之為頁(yè)快速命中(PFH,Page Fast Hit)或頁(yè)直接命中(PDH,Page Direct Hit)。
3、要尋址的行所在的L-Bank中已經(jīng)有一個(gè)行處于活動(dòng)狀態(tài)(未關(guān)閉),這種現象就被稱(chēng)作尋址沖突,此時(shí)就必須要進(jìn)行預充電來(lái)關(guān)閉工作行,再對新行發(fā)送行有效命令。結果,總耗時(shí)就是tRP+tRCD+CL,這種情況我們稱(chēng)之為頁(yè)錯失(PM,Page Miss)。
顯然,PFH是最理想的尋址情況,PM則是最糟糕的尋址情況。上述三種情況發(fā)生的機率各自簡(jiǎn)稱(chēng)為PHR——PH Rate、PFDR——PFH Rate、PMR——PM Rate。因此,系統設計人員(包括內存與北橋芯片)都盡量想提高PHR與PFHR,同時(shí)減少PMR,以達到提高內存工作效率的目的。
二、增加PHR的方法
顯然,這與預充電管理策略有著(zhù)直接的關(guān)系,目前有兩種方法來(lái)盡量提高PHR。自動(dòng)預充電技術(shù)就是其中之一,它自動(dòng)的在每次行操作之后進(jìn)行預充電,從而減少了日后對同一L-Bank不同行尋址時(shí)發(fā)生沖突的可能性。但是,如果要在當前行工作完成后馬上打開(kāi)同一L-Bank的另一行工作時(shí),仍然存在tRP的延遲。怎么辦? 此時(shí)就需要L-Bank交錯預充電了。
VIA的4路交錯式內存控制就是在一個(gè)L-Bank工作時(shí),對下一個(gè)要工作的L-Bank進(jìn)行預充電。這樣,預充電與數據的傳輸交錯執行,當訪(fǎng)問(wèn)下一個(gè)L-Bank時(shí),tRP已過(guò),就可以直接進(jìn)入行有效狀態(tài)了。目前VIA聲稱(chēng)可以跨P-Bank進(jìn)行16路內存交錯,并以L(fǎng)RU算法進(jìn)行預充電管理。
有關(guān)L-Bank交錯預充電(存?。┑木唧w執行在本刊2001年第2期已有詳細介紹,這里就不再重復了。
L-Bank交錯自動(dòng)預充電/讀取時(shí)序圖(可點(diǎn)擊放大):L-Bank 0與L-Bank 3實(shí)現了無(wú)間隔交錯讀取,避免了tRP對性能的影響 三、增加PFHR的方法
無(wú)論是自動(dòng)預充電還是交錯工作的方法都無(wú)法消除tRCD所帶來(lái)的延遲。要解決這個(gè)問(wèn)題,就要盡量讓一個(gè)工作行在進(jìn)行預充電前盡可能多的接收多個(gè)工作命令,以達到背靠背的效果,此時(shí)就只剩下CL所造成的讀取延遲了(寫(xiě)入時(shí)沒(méi)有延遲)。
如何做到這一點(diǎn)呢?這就是北橋芯片的責任了。在上文的時(shí)序圖中有一個(gè)參數tRAS(Active to Precharge Command,行有效至預充電命令間隔周期)。它有一個(gè)范圍,對于PC133標準,一般是預充電命令至少要在行有效命令5個(gè)時(shí)鐘周期之后發(fā)出,最長(cháng)間隔視芯片而異(基本在120000ns左右),否則工作行的數據將有丟失的危險。那么這也就意味著(zhù)一個(gè)工作行從有效(選通)開(kāi)始,可以有120000ns的持續工作時(shí)間而不用進(jìn)行預充電。顯然,只要北橋芯片不發(fā)出預充電(包括允許自動(dòng)預充電)的命令,行打開(kāi)的狀態(tài)就會(huì )一直保持。在此期間的對該行的任何讀寫(xiě)操作也就不會(huì )有tRCD的延遲??梢?jiàn),如果北橋芯片在能同時(shí)打開(kāi)的行(頁(yè))越多,那么PFHR也就越大。需要強調的是,這里的同時(shí)打開(kāi)不是指對多行同時(shí)尋址(那是不可能的),而是指多行同時(shí)處于選通狀態(tài)。我們可以看到一些SDRAM芯片組的資料中會(huì )指出可以同時(shí)打開(kāi)多少個(gè)頁(yè)的指標,這可以說(shuō)是決定其內存性能的一個(gè)重要因素。
Intel 845芯片組MCH的資料:其中表明它可以支持24個(gè)頁(yè)面同時(shí)處于打開(kāi)狀態(tài)
但是,可同時(shí)打開(kāi)的頁(yè)數也是有限制的。從SDRAM的尋址原理講,同一L-Bank中不可能有兩個(gè)打開(kāi)的行(S-AMP只能為一行服務(wù)),這就限制了可同時(shí)打開(kāi)的頁(yè)面總數。以SDRAM有4個(gè)L-Bank,北橋最多支持8個(gè)P-Bank為例,理論上最多只能有32個(gè)頁(yè)面能同時(shí)處于打開(kāi)的狀態(tài)。而如果只有一個(gè)P-Bank,那么就只剩下4個(gè)頁(yè)面,因為有幾個(gè)L-Bank才能有同時(shí)打開(kāi)幾個(gè)行而互不干擾。Intel 845的MHC雖然可以支持24個(gè)打開(kāi)的頁(yè)面,那也是指6個(gè)P-Bank的情況下(845MCH只支持6個(gè)P-Bank)??梢?jiàn)845已經(jīng)將同時(shí)打開(kāi)頁(yè)數發(fā)揮到了極致。
不過(guò),同時(shí)打開(kāi)頁(yè)數多了,也對存取策略提出了一定的要求。理論上,要盡量多地使用已打開(kāi)的頁(yè)來(lái)保證最短的延遲周期,只有在數據不存在(讀取時(shí))或頁(yè)存滿(mǎn)了(寫(xiě)入時(shí))再考慮打開(kāi)新的指定頁(yè),這也就是變向的連續讀/寫(xiě)。而打開(kāi)新頁(yè)時(shí)就必須要關(guān)閉一個(gè)打開(kāi)的頁(yè),如果此時(shí)打開(kāi)的頁(yè)面已是北橋所支持的最大值但還不到理論極限的話(huà),就需要一個(gè)替換策略,一般都是用LRU算法來(lái)進(jìn)行,這與VIA的交錯控制大同小異。
SDRAM的結構、時(shí)序與性能的關(guān)系(下)
四、內存結構對PHR的影響
這是結構設計上的問(wèn)題,所以單獨來(lái)說(shuō)。在我們介紹L-Bank時(shí),曾經(jīng)提到單一的L-Bank會(huì )造成嚴重的尋址沖突?,F在,當我們了解了內存尋址的原理后,就不難理解這句話(huà)了。如果只有一個(gè)L-Bank,那么除非是背靠背式的操作(PFH),否則tRP、tRCD、CL(讀取時(shí))一個(gè)也少不了。
上文中,內存交錯之所以能實(shí)現就是因為有多個(gè)L-Bank,從這點(diǎn)就可以看出L-Bank數量與頁(yè)命中率之間的關(guān)系了。PHR基本上可以等于“(L-Bank數-1)/L-Bank數”。
SDRAM有4個(gè)L-Bank,那么頁(yè)命中率就是75%,DDR-Ⅱ SDRAM最多將有8個(gè)L-Bank,PHR最高為87.5%。而RDRAM則最多有32個(gè)L-Bank,PHR到了驚人的96.875%,這也是當時(shí)RDRAM攻擊SDRAM的一主要方面。
不過(guò),從內存的結構圖上可以看出,L-Bank多了,相應外圍輔助的元件也要增加,比如S-AMP,L-Bank地址線(xiàn)等等。在RDRAM的介紹中,我會(huì )講到L-Bank數量增多后所帶來(lái)的一些新問(wèn)題。
五、讀/寫(xiě)延遲不同對性能所造成的影響
SDRAM在讀取操作時(shí)會(huì )有CL造成的延遲,而在寫(xiě)入時(shí)則是0延遲。這樣,在讀操作之后馬上進(jìn)行寫(xiě)操作的話(huà),由于沒(méi)有寫(xiě)延遲,數據線(xiàn)不會(huì )出現空閑的時(shí)候,保證了數據總線(xiàn)的利用率。但是,若在寫(xiě)操作之后馬上進(jìn)行讀操作的話(huà),即使是背靠背式進(jìn)行,仍然會(huì )由于tWR與CL的存在而造成間隔,這期間數據總線(xiàn)將是空閑的,利用率受到了影響。
在先寫(xiě)后讀的操作中,由于保證寫(xiě)入的可靠性,讀取命令在tWR之后發(fā)出,并再經(jīng)過(guò)CL才能輸出數據,本例中CL=3,造成了兩個(gè)時(shí)鐘周期的總線(xiàn)空閑(上圖可點(diǎn)擊放大)
這里需要著(zhù)重說(shuō)明一下,在突發(fā)讀取過(guò)程中,想立刻中斷并進(jìn)行新的讀操作,和讀后讀模式(見(jiàn)“突發(fā)連續讀取模式圖”)一樣,只是新的讀命令根據需要提前若干個(gè)周期發(fā)出,經(jīng)過(guò)CL后就會(huì )自動(dòng)傳輸新的數據。但是,若想中斷讀后立即進(jìn)行寫(xiě)操作,就需要數據掩碼(DQM)來(lái)屏蔽寫(xiě)入命令發(fā)出時(shí)的數據輸出,避免總線(xiàn)沖突。根據芯片設計的不同,有時(shí)可能會(huì )浪費一個(gè)周期進(jìn)行總線(xiàn)I/O的調轉,此時(shí)一個(gè)周期的總線(xiàn)空閑也是不可避免的。
突發(fā)讀后寫(xiě)時(shí)的操作,以本圖為例,在最后一個(gè)所需數據(本例為第一筆數據)輸出前一個(gè)周期使DQM有效,屏蔽第二筆數據的輸出;2、發(fā)出寫(xiě)入命令,此時(shí)所讀取的第二筆數據被屏蔽。3、繼續DQM以屏蔽第三筆數據的輸出。其中tHZ表示輸出數據與外部電路的連接周期,tDS表示數據輸入準備時(shí)間,如果tHZ+tDS>tCK,那么寫(xiě)入操作就要延后一個(gè)周期,這要視芯片的具體設計而定(上圖可點(diǎn)擊放大)
六、BL對性能的影響
從讀/寫(xiě)之間的中斷操作我們又引出了BL(突發(fā)長(cháng)度)對性能影響的話(huà)題。首先,BL的長(cháng)短與其應用的領(lǐng)域有著(zhù)很大關(guān)系,下表就是目前三個(gè)主要的內存應用領(lǐng)域所使用的BL,這是廠(chǎng)商們經(jīng)過(guò)多年的實(shí)踐總結出來(lái)的。
BL與相應的工作領(lǐng)域
BL越長(cháng),對于連續的大數據量傳輸很有好處,但是對零散的數據,BL太長(cháng)反而會(huì )造成總線(xiàn)周期的浪費。以P-Bank位寬64bit為例,BL=4時(shí),一個(gè)突發(fā)操作能傳輸32字節的數據,但如果只需要前16個(gè)字節,后兩個(gè)周期是無(wú)效的。如果需要40字節,需要再多進(jìn)行一次突發(fā)傳輸,但實(shí)際只需要一個(gè)傳輸周期就夠了,從而浪費了三個(gè)傳輸周期。而對于2KB的數據,BL=4的設置意味著(zhù)要每隔4個(gè)周期發(fā)送新的列地址,并重復63次。而對于BL=256,一次突發(fā)就可完成,并且不需要中途再進(jìn)行控制。不少人都因此表示了BL設定對性能影響的擔心。
但設計人員也不是傻瓜,通過(guò)上文的介紹,可以看出他們在這方面的考慮。通過(guò)寫(xiě)命令、DQM、讀命令的配合/操作,完全可以任意地中斷突發(fā)周期開(kāi)始新的操作,而且DQM還可以幫我們在BL中選擇有用的數據,從而最大限度降低突發(fā)傳輸對性能帶來(lái)的影響。另外,預充電命令與專(zhuān)用的突發(fā)傳輸終止命令都可以用來(lái)中斷BL,前者在中斷后進(jìn)行預充電,后者在中斷后不進(jìn)行其他讀/寫(xiě)操作。
專(zhuān)用的突發(fā)停止命令可用來(lái)中斷突發(fā)讀取,其生效潛伏期與CL相同。對于寫(xiě)入則立即有效(上圖可點(diǎn)擊放大)
用預充電命令來(lái)中斷突發(fā)讀取,生效潛伏期與CL相同,要小于或等于tRP。寫(xiě)入時(shí)預充電在最后一個(gè)有效寫(xiě)入周期完成,并經(jīng)過(guò)tWR之后發(fā)出,同時(shí)立即中斷突發(fā)傳輸
所以,突發(fā)周期的中斷并不難,但用短BL應付大數據量存取需要不斷的指令與列尋址配合,而為了取消不需要的傳輸周期,由于需要運用額外的控制,也將占用不少的控制資源。所以BL針對不同應用領(lǐng)域有不同設計的主要目的,就是在保證性能的同時(shí),
系統控制資源也能得到合理的運用。
如日中天——DDR SDRAM(上)
DDR SDRAM全稱(chēng)為Double Data Rate SDRAM,中文名為“雙倍數據流SDRAM”。DDR SDRAM在原有的SDRAM的基礎上改進(jìn)而來(lái)。也正因為如此,DDR能夠憑借著(zhù)轉產(chǎn)成本優(yōu)勢來(lái)打敗昔日的對手RDRAM,成為當今的主流。由于SDRAM的結構與操作在上文已有詳細闡述,所以本文只著(zhù)重講講DDR的原理和DDR SDRAM相對于傳統SDRAM(又稱(chēng)SDR SDRAM)的不同。
DDR SDRAM可在一個(gè)時(shí)鐘周期內傳送兩次數據(上圖可點(diǎn)擊放大)
一、DDR的基本原理
有很多文章都在探討DDR的原理,但似乎也不得要領(lǐng),甚至還帶出一些錯誤的觀(guān)點(diǎn)。首先我們看看一張DDR正規的時(shí)序圖。
DDR SDRAM讀操作時(shí)序圖
從中可以發(fā)現它多了兩個(gè)信號: CLK#與DQS,CLK#與正常CLK時(shí)鐘相位相反,形成差分時(shí)鐘信號。而數據的傳輸在CLK與CLK#的交叉點(diǎn)進(jìn)行,可見(jiàn)在CLK的上升與下降沿(此時(shí)正好是CLK#的上升沿)都有數據被觸發(fā),從而實(shí)現DDR。在此,我們可以說(shuō)通過(guò)差分信號達到了DDR的目的,甚至講CLK#幫助了第二個(gè)數據的觸發(fā),但這只是對表面現象的簡(jiǎn)單描述,從嚴格的定義上講并不能這么說(shuō)。之所以能實(shí)現DDR,還要從其內部的改進(jìn)說(shuō)起。
DDR內存芯片的內部結構圖,注意比較上文中SDRAM的結構圖(上圖可點(diǎn)擊放大)
這也是一顆128Mbit的內存芯片,標稱(chēng)規格也與前文的SDRAM一樣為32×4bit。從圖中可以看出來(lái),白色區域內與SDRAM的結構基本相同,但請注意灰色區域,這是與SDRAM的不同之處。首先就是內部的L-Bank規格。SDRAM中L-Bank存儲單元的容量與芯片位寬相同,但在DDR SDRAM中并不是這樣,存儲單元的容量是芯片位寬的一倍,所以在此不能再套用講解SDRAM時(shí) “芯片位寬=存儲單元容量” 的公式了。也因此,真正的行、列地址數量也與同規格SDRAM不一樣了。
以本芯片為例,在讀取時(shí),L-Bank在內部時(shí)鐘信號的觸發(fā)下一次傳送8bit的數據給讀取鎖存器,再分成兩路4bit數據傳給復用器,由后者將它們合并為一路4bit數據流,然后由發(fā)送器在DQS的控制下在外部時(shí)鐘上升與下降沿分兩次傳輸4bit的數據給北橋。這樣,如果時(shí)鐘頻率為100MHz,那么在I/O端口處,由于是上下沿觸發(fā),那么就是傳輸頻率就是200MHz。
現在大家基本明白DDR SDRAM的工作原理了吧,這種內部存儲單元容量(也可以稱(chēng)為芯片內部總線(xiàn)位寬)=2×芯片位寬(也可稱(chēng)為芯片I/O總線(xiàn)位寬)的設計,就是所謂的兩位預?。?-bit Prefetch),有的公司則貼切的稱(chēng)之為2-n Prefetch(n代表芯片位寬)。
二、DDR SDRAM與SDRAM的不同
DDR SDRAM與SDRAM的不同主要體現在以下幾個(gè)方面。
DDR SDRAM與SDRAM的主要不同對比表
(上圖可點(diǎn)擊放大)
DDR SDRAM與SDRAM一樣,在開(kāi)機時(shí)也要進(jìn)行MRS,不過(guò)由于操作功能的增多,DDR SDRAM在MRS之前還多了一EMRS階段(Extended Mode Register Set,擴展模式寄存器設置),這個(gè)擴展模式寄存器控制著(zhù)DLL的有效/禁止、輸出驅動(dòng)強度、QFC 有效/無(wú)效等。
由于EMRS與MRS的操作方法與SDRAM的MRS大同小異,在此就不再列出具體的模式表了,有興趣的話(huà)可查看相關(guān)的DDR內存資料。下面我們就著(zhù)重說(shuō)說(shuō)DDR SDRAM的新設計與新功能。
如日中天——DDR SDRAM(下)
1、 差分時(shí)鐘
差分時(shí)鐘(參見(jiàn)上文“DDR SDRAM讀操作時(shí)序圖”)是DDR的一個(gè)必要設計,但CK#的作用,并不能理解為第二個(gè)觸發(fā)時(shí)鐘(你可以在講述DDR原理時(shí)簡(jiǎn)單地這么比喻),而是起到觸發(fā)時(shí)鐘校準的作用。由于數據是在CK的上下沿觸發(fā),造成傳輸周期縮短了一半,因此必須要保證傳輸周期的穩定以確保數據的正確傳輸,這就要求CK的上下沿間距要有精確的控制。但因為溫度、電阻性能的改變等原因,CK上下沿間距可能發(fā)生變化,此時(shí)與其反相的CK#就起到糾正的作用(CK上升快下降慢,CK#則是上升慢下降快)。而由于上下沿觸發(fā)的原因,也使CL=1.5和2.5成為可能,并容易實(shí)現。
與CK反相的CK#保證了觸發(fā)時(shí)機的準確性
2、 數據選取脈沖(DQS)
DQS是DDR SDRAM中的重要功能,它的功能主要用來(lái)在一個(gè)時(shí)鐘周期內準確的區分出每個(gè)傳輸周期,并便于接收方準確接收數據。每一顆芯片都有一個(gè)DQS信號線(xiàn),它是雙向的,在寫(xiě)入時(shí)它用來(lái)傳送由北橋發(fā)來(lái)的DQS信號,讀取時(shí),則由芯片生成DQS向北橋發(fā)送。完全可以說(shuō),它就是數據的同步信號。
在讀取時(shí),DQS與數據信號同時(shí)生成(也是在CK與CK#的交叉點(diǎn))。而DDR內存中的CL也就是從CAS發(fā)出到DQS生成的間隔,數據真正出現在數據I/O總線(xiàn)上相對于DQS觸發(fā)的時(shí)間間隔被稱(chēng)為tAC。注意,這與SDRAM中的tAC的不同。實(shí)際上,DQS生成時(shí),芯片內部的預取已經(jīng)完畢了,tAC是指上文結構圖中灰色部分的數據輸出時(shí)間,由于預取的原因,實(shí)際的數據傳出可能會(huì )提前于DQS發(fā)生(數據提前于DQS傳出)。由于是并行傳輸,DDR內存對tAC也有一定的要求,對于DDR266,tAC的允許范圍是±0.75ns,對于DDR333,則是±0.7ns,有關(guān)它們的時(shí)序圖示見(jiàn)前文,其中CL里包含了一段DQS的導入期。
前文已經(jīng)說(shuō)了DQS是了保證接收放的選擇數據, DQS在讀取時(shí)與數據同步傳輸,那么接收時(shí)也是以DQS的上下沿為準嗎?不,如果以DQS的上下沿區分數據周期的危險很大。由于芯片有預取的操作,所以輸出時(shí)的同步很難控制,只能限制在一定的時(shí)間范圍內,數據在各I/O端口的出現時(shí)間可能有快有慢,會(huì )與DQS有一定的間隔,這也就是為什么要有一個(gè)tAC規定的原因。而在接收方,一切必須保證同步接收,不能有tAC之類(lèi)的偏差。這樣在寫(xiě)入時(shí),芯片不再自己生成DQS,而以發(fā)送方傳來(lái)的DQS為基準,并相應延后一定的時(shí)間,在DQS的中部為數據周期的選取分割點(diǎn)(在讀取時(shí)分割點(diǎn)就是上下沿),從這里分隔開(kāi)兩個(gè)傳輸周期。這樣做的好處是,由于各數據信號都會(huì )有一個(gè)邏輯電平保持周期,即使發(fā)送時(shí)不同步,在DQS上下沿時(shí)都處于保持周期中,此時(shí)數據接收觸發(fā)的準確性無(wú)疑是最高的。
在寫(xiě)入時(shí),以DQS的高/低電平期中部為數據周期分割點(diǎn),而不是上/下沿,但數據的接收觸發(fā)仍為DQS的上/下沿
3、 寫(xiě)入延遲
在上面的DQS寫(xiě)入時(shí)序圖中,可以發(fā)現寫(xiě)入延遲已經(jīng)不是0了,在發(fā)出寫(xiě)入命令后,DQS與寫(xiě)入數據要等一段時(shí)間才會(huì )送達。這個(gè)周期被稱(chēng)為DQS相對于寫(xiě)入命令的延遲時(shí)間(tDQSS, WRITE Command to the first corresponding rising edge of DQS),對于這個(gè)時(shí)間大家應該很好理解了。
為什么要有這樣的延遲設計呢?原因也在于同步,畢竟一個(gè)時(shí)鐘周期兩次傳送,需要很高的控制精度,它必須要等接收方做好充分的準備才行。tDQSS是DDR內存寫(xiě)入操作的一個(gè)重要參數,太短的話(huà)恐怕接受有誤,太長(cháng)則會(huì )造成總線(xiàn)空閑。tDQSS最短不能小于0.75個(gè)時(shí)鐘周期,最長(cháng)不能超過(guò)1.25個(gè)時(shí)鐘周期。有人可能會(huì )說(shuō),如果這樣,DQS不就與芯片內的時(shí)鐘不同步了嗎?對,正常情況下,tDQSS是一個(gè)時(shí)鐘周期,但寫(xiě)入時(shí)接受方的時(shí)鐘只用來(lái)控制命令信號的同步,而數據的接受則完全依靠DQS進(jìn)行同步,所以DQS與時(shí)鐘不同步也無(wú)所謂。不過(guò),tDQSS產(chǎn)生了一個(gè)不利影響——讀后寫(xiě)操作延遲的增加,如果CL=2.5,還要在tDQSS基礎上加入半個(gè)時(shí)鐘周期,因為命令都要在CK的上升沿發(fā)出。
當CL=2.5時(shí)(上圖可點(diǎn)擊放大),讀后寫(xiě)的延遲將為tDQSS+0.5個(gè)時(shí)鐘周期(圖中BL=2)
另外,DDR內存的數據真正寫(xiě)入由于要經(jīng)過(guò)更多步驟的處理,所以寫(xiě)回時(shí)間(tWR)也明顯延長(cháng),一般在3個(gè)時(shí)鐘周期左右,而在DDR-Ⅱ規范中更是將tWR列為模式寄存器的一項,可見(jiàn)它的重要性。
4、 突發(fā)長(cháng)度與寫(xiě)入掩碼
在DDR SDRAM中,突發(fā)長(cháng)度只有2、4、8三種選擇,沒(méi)有了隨機存取的操作(突發(fā)長(cháng)度為1)和全頁(yè)式突發(fā)。這是為什么呢?因為L(cháng)-Bank一次就存取兩倍于芯片位寬的數據,所以芯片至少也要進(jìn)行兩次傳輸才可以,否則內部多出來(lái)的數據怎么處理?而全頁(yè)式突發(fā)事實(shí)證明在PC內存中是很難用得上的,所以被取消也不希奇。
但是,突發(fā)長(cháng)度的定義也與SDRAM的不一樣了(見(jiàn)本章節最前那幅DDR簡(jiǎn)示圖),它不再指所連續尋址的存儲單元數量,而是指連續的傳輸周期數,每次是一個(gè)芯片位寬的數據。對于突發(fā)寫(xiě)入,如果其中有不想存入的數據,仍可以運用DM信號進(jìn)行屏蔽。DM信號和數據信號同時(shí)發(fā)出,接收方在DQS的上升與下降沿來(lái)判斷DM的狀態(tài),如果DM為高電平,那么之前從DQS中部選取的數據就被屏蔽了。有人可能會(huì )覺(jué)得,DM是輸入信號,意味著(zhù)芯片不能發(fā)出DM信號給北橋作為屏蔽讀取數據的參考。其實(shí),該讀哪個(gè)數據也是由北橋芯片決定的,所以芯片也無(wú)需參與北橋的工作,哪個(gè)數據是有用的就留給北橋自己去選吧。
5、 延遲鎖定回路(DLL)
DDR SDRAM對時(shí)鐘的精確性有著(zhù)很高的要求,而DDR SDRAM有兩個(gè)時(shí)鐘,一個(gè)是外部的總線(xiàn)時(shí)鐘,一個(gè)是內部的工作時(shí)鐘,在理論上DDR SDRAM這兩個(gè)時(shí)鐘應該是同步的,但由于種種原因,如溫度、電壓波動(dòng)而產(chǎn)生延遲使兩者很難同步,更何況時(shí)鐘頻率本身也有不穩定的情況(SDRAM也內部時(shí)鐘,不過(guò)因為它的工作/傳輸頻率較低,所以?xún)韧馔絾?wèn)題并不突出)。DDR SDRAM的tAC就是因為內部時(shí)鐘與外部時(shí)鐘有偏差而引起的,它很可能造成因數據不同步而產(chǎn)生錯誤的惡果。實(shí)際上,不同步就是一種正/負延遲,如果延遲不可避免,那么若是設定一個(gè)延遲值,如一個(gè)時(shí)鐘周期,那么內外時(shí)鐘的上升與下降沿還是同步的。鑒于外部時(shí)鐘周期也不會(huì )絕對統一,所以需要根據外部時(shí)鐘動(dòng)態(tài)修正內部時(shí)鐘的延遲來(lái)實(shí)現與外部時(shí)鐘的同步,這就是DLL的任務(wù)。
DLL不同于
主板上的PLL,它不涉及頻率與電壓轉換,而是生成一個(gè)延遲量給內部時(shí)鐘。目前DLL有兩種實(shí)現方法,一個(gè)是時(shí)鐘頻率測量法(CFM,Clock Frequency Measurement),一個(gè)是時(shí)鐘比較法(CC,Clock Comparator)。CFM是測量外部時(shí)鐘的頻率周期,然后以此周期為延遲值控制內部時(shí)鐘,這樣內外時(shí)鐘正好就相差了一個(gè)時(shí)鐘周期,從而實(shí)現同步。DLL就這樣反復測量反復控制延遲值,使內部時(shí)鐘與外部時(shí)鐘保持同步。
CC的方法則是比較內外部時(shí)鐘的長(cháng)短,如果內部時(shí)鐘周期短了,就將所少的延遲加到下一個(gè)內部時(shí)鐘周期里,然后再與外部時(shí)鐘做比較,若是內部時(shí)鐘周期長(cháng)了,就將多出的延遲從下一個(gè)內部時(shí)鐘中刨除,如此往復,最終使內外時(shí)鐘同步。
CFM式DLL工作示意圖
CC式DLL工作示意圖
CFM與CC各有優(yōu)缺點(diǎn),CFM的校正速度快,僅用兩個(gè)時(shí)鐘周期,但容易受到噪音干擾,并且如果測量失誤,則內部的延遲就永遠錯下去了。CC的優(yōu)點(diǎn)則是更穩定可靠,如果比較失敗,延遲受影響的只是一個(gè)數據(而且不會(huì )太嚴重),不會(huì )涉及到后面的延遲修正,但它的修正時(shí)間要比CFM長(cháng)。DLL功能在DDR SDRAM中可以被禁止,但僅限于除錯與評估操作,正常工作狀態(tài)是自動(dòng)有效的。
昔日貴族——Rambus DRAM(一)
談起DDR SDRAM與Rambus DRAM(簡(jiǎn)稱(chēng)RDRAM)之間的恩怨,很多人現在還是津津樂(lè )道。的確,上一世紀末的內存大戰雖勝負已分,但至今仍余波未平。在主流市場(chǎng)DDR SDRAM成為王者,RDRAM則淪為“高端貴族”。
Rambus公司于1990年3月成立,之后不久就有了Rambus的核心專(zhuān)利——RSL(Rambus Signaling Level,Rambus發(fā)信電平技術(shù))。Rambus內存最早出現于1995年12月,那時(shí)它與任天堂64(Nintendo64)游戲機一起發(fā)售,但名聲不大。從1996年12月開(kāi)始,Rambus與Intel合作開(kāi)發(fā),準備將Rambus推廣到PC領(lǐng)域。到Rambus內存真正亮相于PC市場(chǎng)時(shí)已經(jīng)是1999年11月了。
一、RDRAM簡(jiǎn)介
RDRAM與DDR SDRAM一樣,也是一種采用雙沿觸發(fā)技術(shù)的內存, 但它在結構、控制體系方面相對于傳統SDRAM有著(zhù)不小的變化,首先我們來(lái)看看它與SDRAM之間的簡(jiǎn)單比較。
(上圖可點(diǎn)擊放大)
RDRAM與傳統SDRAM的架構比較
從架構比較圖中,可以看出RDRAM在工作方式上與SDRAM有了很大不同。SDRAM需要多顆芯片并聯(lián)組成P-Bank與北橋溝通,而在RDRAM架構中每個(gè)芯片就是一個(gè)單獨工作的讀寫(xiě)單元,芯片的位寬就是與北橋接口的位寬,所以如果想用ECC,就要用專(zhuān)門(mén)的ECC型芯片,也因此有了16/18bit的兩種規格。而芯片的位寬就是一個(gè)RDRAM通道的位寬(本文以16bit芯片為例進(jìn)行介紹)。
為了達到更高的容量,在一個(gè)通道中將多顆RDRAM芯片串起來(lái),形成RIMM(Rambus Interface Memory Module,Rambus接口內存模組),如果
主板允許,完全可以設計一個(gè)超長(cháng)的內存插槽與模組,但現實(shí)中肯定不能這么做,所以在主板上Rambus又把模組串起來(lái)組成通道。由于是串聯(lián)的形式,所以要求起始端與終結端形成一個(gè)完整的通路,而RIMM就是這個(gè)通路的串聯(lián)器,因此Rambus要求所有的插槽必須插滿(mǎn),如果沒(méi)有RIMM則用C-RIMM(Continuity RIMM,RIMM續連器)代替,以達到聯(lián)通RSL信號并行終結器的目的。工作時(shí),RDRAM每次尋址一顆芯片,所需要的數據則由通道數據總線(xiàn)傳送到北橋,而不像SDRAM那樣由所在模組直接通過(guò)DIMM接口傳向北橋,也因此RIMM的引腳定義幾乎是左右對稱(chēng)的。
由于位寬的降低,為保證高帶寬,RDRAM使用了更高的時(shí)鐘頻率(這就意味著(zhù)它不可能與
系統時(shí)鐘同步,所以只能叫RDRAM而不是RSDRAM),芯片的工作頻率明顯高于SDRAM/DDR,這樣芯片的工作熱量也急劇上升,為此Rambus在官方規范中規定RIMM必須配備散熱片,從而成了現在這個(gè)樣子。
32bit位寬PC1066芯片標準的RIMM,它是目前PC領(lǐng)域中性能最高的RDRAM產(chǎn)品
二、RDRAM的結構簡(jiǎn)介
1、 RDRAM的L-Bank結構
RDRAM的內部仍主要由L-Bank構成,但它的設計與SDRAM家族有很大的不同。首先,每個(gè)L-Bank有兩個(gè)數據通道A和B,各為8bit位寬(ECC型號為9bit,這種設計就是Direct DRAM較以前RDRAM的不同),每個(gè)端口都配有S-AMP。根據L-Bank數量與S-AMP的分配方式不同,目前RDRAM共有三種內核結構,分別是32s、16d與4i。
較早時(shí),RDRAM的設計是16d,所謂的d是指Double(雙),即除了0與15號L-Bank,其余相鄰的L-Bank每個(gè)數據通道(A和B)共用一個(gè)S-AMP。
16d L-Bank結構(上圖可點(diǎn)擊放大)
后來(lái)分別向高端和低端領(lǐng)域發(fā)展了32s與4i技術(shù)。前者的s代表Split,它將原來(lái)的16d內核分割為兩個(gè)部分,各為16d結構,0、15、16、31號L-Bank的每個(gè)數據通道各自獨占一個(gè)S-AMP。4i則與傳統的SDRAM相似,i代表Independent(獨立),只有4個(gè)L-Bank,各L-Bank的每個(gè)數據通道有單獨的S-AMP。
32s L-Bank結構
4i L-Bank結構
上文已經(jīng)講過(guò),L-Bank數越多,造成L-Bank尋址沖突的機率就越小,但理論上L-Bank越多,所用的S-AMP也就越多, RDRAM內存核心加工與面積控制的難度就越大,因此32s與16d都采用了共享S-AMP的設計。但即使這樣,RDRAM的生產(chǎn)成本仍被限制在較高的水平上,在早期這成為了RDRAM難以普及的重要原因。而4i就是為解決這一問(wèn)題而出現的方案,成本更低,但性能也較前兩者降低了。
另外,由于共享S-AMP的設計,除了個(gè)別獨有S-AMP的L-Bank,其他的L-Bank每次預充電操作也都是成雙成對的。為此,在邏輯控制上,RDRAM的操作要盡量避免相鄰L-Bank前后進(jìn)行,否則也會(huì )降低RDRAM的實(shí)際效率。
2、RDRAM的主要特點(diǎn)
目前RDRAM主要有兩個(gè)容量規格——128Mbit和256Mbit。L-Bank中存儲單元的容量也并不等于RDRAM的接口位寬,而是它的8倍,因此可以說(shuō)RDRAM是一種8bit預取設計,這是它最主要的特點(diǎn)。對于16bit芯片,其存儲單元的容量為128bit,這些數據分別從通道A和B傳輸至L-Bank,也就是說(shuō)L-Bank兩端的S-AMP一次各負責72bit數據的傳輸。由于預取為8bit,所以RDRAM的突發(fā)長(cháng)度也固定為8,因為如果再高,對于PC應用將不太適合。不過(guò)需要特別注意的是,一個(gè)字節的數據不是由數據通道中的8條數據線(xiàn)進(jìn)行并排傳輸,而是一個(gè)字節由一條數據線(xiàn)進(jìn)行8次傳輸(即串行傳輸,這也是為什么有人說(shuō)RDRAM是串行內存的原因),這一點(diǎn)也與SDRAM不同,它意味著(zhù)北橋在進(jìn)行數據讀/寫(xiě)時(shí),必須要等8個(gè)周期之后才能完成,中途不能停止。也就是說(shuō),讀取時(shí)目前的北橋(如850)一次接收128bit(16字節)的數據,然后再轉換為兩個(gè)64bit數據分兩次向CPU傳送。
RDRAM雖然每個(gè)數據通道是串行傳輸,但總體上講,仍然存在數據塊(一次傳輸的128bit)同步的問(wèn)題,因此嚴格的講,RDRAM從系統架構上講并不是串行內存
由于RDRAM的存儲單元容量很大,所以RDRAM的行列地址線(xiàn)也大為減少,以256Mbit的4i結構的RDRAM為例,行地址為12bit(4096),列地址為7bit(128)。如果是32s結構的,由于L-Bank地址的增多,行列地址要更少(分別是9和7bit)。而且RDRAM的行列地址線(xiàn)是獨立的,但是RDRAM的行與列地址線(xiàn)各自只有3條和5條,顯然不夠用,Rambus又是怎么搞定的呢?這就涉及到RDRAM具體的操作設計了。
昔日貴族——Rambus DRAM(二)
三、 RDRAM的具體操作與相關(guān)技術(shù)
1、 初始化與命令包
RDRAM也有一個(gè)控制寄存器,在開(kāi)機初始化過(guò)程中用來(lái)對RDRAM芯片進(jìn)行配置,有的信息由北橋動(dòng)態(tài)寫(xiě)入(如芯片地址、自刷新模式等),有的則是出廠(chǎng)時(shí)就設置好不能更改的(如刷新計數、生產(chǎn)商信息、支持的
協(xié)議版本等)。在初始化之后,RDRAM才能進(jìn)入正常的工作狀態(tài)。 RDRAM的讀寫(xiě)操作過(guò)程與SDRAM基本是一樣的,也要進(jìn)行片選、L-Bank定址、行/列尋址等操作(此時(shí)的行就是指RDRAM內存
系統中的頁(yè)),但由于它的每次操作只針對一顆芯片,所以具體操作起來(lái)有很大不同,這主要體現在“命令包”的方式上。
RDRAM讀取時(shí)序圖,以PC800為例,400MHz時(shí)鐘頻率。
在上圖中,我們可以看到行尋址命令與列尋址(讀)命令并沒(méi)有同時(shí)發(fā)出,而且各自占用了10ns的時(shí)間。我們算一算,對于PC800,10ns相當于8個(gè)傳輸周期。難道是傳輸有延遲?從行列地址的設計,就能猜到這是一個(gè)命令包形式的操作。 所謂的命令包,就是將一組命令集合在一起,統一發(fā)出。在RDRAM中,行命令包與列命令包都分為兩種,一種是正常的讀/寫(xiě)操作命令,一種是芯片操作命令(如數據掩碼、預充電、刷新、電源管理等)?,F在我們就看看行與列讀/寫(xiě)命令包都包含哪些信息。
行讀/寫(xiě)命令包的信息組成
列讀/寫(xiě)命令包的信息組成
至于操作命令包就不在此多說(shuō)了,因為構成的形式基本就是這樣,每次用8個(gè)傳輸周期進(jìn)行命令發(fā)送。而且由于RDRAM的命令代碼很多,也比較復雜,在本專(zhuān)題中也不用一一列出,關(guān)鍵在于讓大家明白RDRAM的尋址是怎么一回事即可,剩下的具體代碼定義,如果有興趣大家可以自行研究。
2、 操作時(shí)序計算
通過(guò)上面的時(shí)序圖,我們可以發(fā)現RDRAM計算時(shí)序的方法與SDRAM家族不一樣,這在比較兩者間時(shí)序效率時(shí)有著(zhù)關(guān)鍵的影響。
Rambus的時(shí)序規定與FPE/EDO內存時(shí)一樣,在讀取時(shí)延用了tRAC、tCAC的定義,前者是行訪(fǎng)問(wèn)周期(RAC,RAS
Access Cycle/Delay),后者是列訪(fǎng)問(wèn)周期(CAC,CAS Access Cycle/ Delay),你可以把它等同于SDRAM中的CL,但決不能在RDRAM中引入CL這個(gè)概念。在寫(xiě)入時(shí)則將tCAC替換為tCWD(CAS to Write Delay)。它們的單位都是時(shí)鐘周期,對于PC800,一個(gè)時(shí)鐘周期就是2.5ns,對于PC1066就是1.876ns了。顯然,時(shí)鐘頻率越高,延遲周期就越短。
但是這些時(shí)序是從命令包發(fā)送完畢開(kāi)始計算,SDRAM則是在命令發(fā)送同時(shí)開(kāi)始計算。因此,在計算RDRAM的操作延遲時(shí),命令包本身占用的時(shí)間也必須要考慮進(jìn)來(lái)。
3、 寫(xiě)入延遲與掩碼操作
RDRAM為寫(xiě)入設置了專(zhuān)用的延遲tCWD,這并不是被迫而是有意設計的。RDRAM不需要DQS之類(lèi)的信號進(jìn)行同步操作,數據是可以立即接受的,但出于總線(xiàn)利用率的考慮,RDRAM加入了寫(xiě)入延遲,它略短于tCAC。在具體操作中,芯片上沒(méi)有引腳控制寫(xiě)入允許/禁止,一切的命令在命令包中進(jìn)行定義,所以讀命令可以在寫(xiě)過(guò)程中發(fā)出,經(jīng)過(guò)tCAC后有效。這樣在寫(xiě)后讀操作中,除了tCAC與tCWD之間的差距外(估計是留給寫(xiě)回的時(shí)間),幾乎沒(méi)有任何停頓,而不像SDR/DDR SDRAM中有較大延遲。
在寫(xiě)入過(guò)程中,數據都是先存在寫(xiě)入緩沖區中,這個(gè)操作的目的在于等待掩碼的控制。RDRAM的數據掩碼只對寫(xiě)入有效,當收到掩碼命令后,RDRAM將指定的引腳數據從緩沖區中刪除,之后再進(jìn)行真正的寫(xiě)入。
昔日貴族——Rambus DRAM(三)
4、多通道技術(shù)與多通道模組
PC800的速度在當時(shí)可算是RDRAM的一極限,但它的1.6GB/s帶寬并不能滿(mǎn)足高端應用的需要,而且DDR一方主推的產(chǎn)品是P2100的DDR-266,為此RDRAM利用
雙通道技術(shù)來(lái)彌補帶寬上的不足。簡(jiǎn)單的說(shuō),它就像一個(gè)用于內存的RAID,兩個(gè)通道的數據在RAC一端進(jìn)行分割(寫(xiě))與合并(讀),兩個(gè)通道的RIMM缺一不可并要求結構完全一致,因為尋址信號是一樣的,必須適用于兩個(gè)RIMM,這也就意味著(zhù)兩個(gè)RIMM的存儲軌跡也是一樣。但是,數據的尋址延遲并沒(méi)有變化,只是連續傳輸率提高了一倍達到3.2GB/s(兩個(gè)PC800通道),而且總的內存容量也增加了一倍。時(shí)至今日,雖然RDRAM使用窄位寬設計,但畢竟不是串行的方式,提升頻率也越來(lái)越困難,最新的PC1066標準也只達到2.1GB/s的帶寬,此時(shí)雙通道設計幾乎成為RDRAM的標配??梢哉f(shuō)沒(méi)有雙通道技術(shù)的支持,RDRAM是很難走到今天的。
RDRAM雙通道結構
以前,雙通道技術(shù)是以?xún)蓷lRIMM來(lái)實(shí)現,在雙通道已經(jīng)是RDRAM標準設計的今天,這種設計的弊病很明顯,比如客戶(hù)的購置成本、
主板的
布線(xiàn)設計等。為此,在一些內存廠(chǎng)商的支持下,RDRAM出現了多通道模組設計,其主體思路就是將每個(gè)通道的信號終結電路移植到模組上來(lái),在一個(gè)模組上實(shí)現多通道傳輸。
32bit的RIMM設計,每個(gè)通道的終結器做在了模組上
目前PC市場(chǎng)上32bit RIMM逐漸開(kāi)始流行并終將取代傳統的雙通道設計,對于64bit RIMM,由于是4通道設計,得需要4通道北橋芯片的支持,所以目前不可能在臺式機領(lǐng)域里普及。
不同規格的RIMM間比較(上圖可點(diǎn)擊放大)
5、 黃石技術(shù)
黃石(Yellowstone)是Rambus為了適應未來(lái)帶寬的需要而開(kāi)發(fā)的信號與數據
傳輸技術(shù),其主要的技術(shù)特點(diǎn)有四個(gè):
黃石技術(shù)的物理
系統結構
A、3.2GHz傳輸頻率,未來(lái)可高達6.4GHz,按16bit位寬計算,帶寬可達6.4GB/s,雙通道應用則為12.8GB/s。
B、極低電壓的差分RSL信號(DRSL),降低電源消耗并保證信號質(zhì)量與制造成本。信號電壓差值只有200mV,是目前電壓差最小的內存信號技術(shù)。
DRSL發(fā)信技術(shù)與其他內存接口發(fā)信技術(shù)的比較
C、八倍數據流技術(shù)(ODR,Octal Data Rate)。目前采用黃石技術(shù)的RDRAM,時(shí)鐘頻率仍是400MHz,但芯片內部通過(guò)專(zhuān)用的鎖相回路(PLL)將其轉換為1.6GHz的內部時(shí)鐘,然后在此基礎上使用DDR技術(shù),從而能在一個(gè)時(shí)鐘周期內傳輸8次數據。數據傳輸頻率也因此達到了3.2GHz。
ODR操作示意圖
D、固定相位技術(shù)(FlexPhase),使內存生產(chǎn)者不再費力的去調校PCB的設計以減少延遲/潛伏期對數據/時(shí)鐘間同步的影響。固定相位技術(shù)使信號本身就具備了數據/時(shí)鐘同步與自校準能力,從而使外圍有關(guān)時(shí)序跟蹤的設計與布線(xiàn)變得非常簡(jiǎn)單,并有助于提高同步性,提高總線(xiàn)利用率。
Rambus展示的用于顯卡的點(diǎn)對點(diǎn)黃石RDRAM顯存方案
黃石技術(shù)于2001年10月2日正式發(fā)布,但是雖然它有這樣那樣的優(yōu)點(diǎn),但從最近的資料中顯示,Rambus主要將其定位于消費電子、網(wǎng)絡(luò )、通信和圖形設備市場(chǎng)。對于目前的桌面PC市場(chǎng),黃石在近期應用的可能性并不大。
昔日貴族——Rambus DRAM(四)
四、 目前的RDRAM與DDR SDRAM的比較
1、 延遲與總線(xiàn)利用率的比較
仍以PC800為例,由于tRAC已經(jīng)包括了從行選通至數據輸出的所有延遲,與是否
雙通道無(wú)關(guān),所以我們只需將它再加上命令包的占用時(shí)間即可算出RDRAM一次訪(fǎng)問(wèn)所需要的時(shí)間。PC800的tRAC基本都是40ns(16個(gè)時(shí)鐘周期),加上命令包占用的4個(gè)時(shí)鐘周期10ns,總共耗時(shí)為50ns。而這是在行關(guān)閉的情況下,沒(méi)有計算預充電的時(shí)間tRP,它一般為12個(gè)時(shí)鐘周期(加上命令包時(shí)間),即30ns,共計80ns。顯然,時(shí)鐘頻率越高,延遲就會(huì )越短。下面就來(lái)比較一下讀取操作時(shí)RDRAM與DDR SDRAM的延遲。
讀取操作時(shí)RDRAM與DDR SDRAM的延遲比較表(上圖可點(diǎn)擊放大)
從對比表中可以看出,RDRAM相對于DDR SDRAM在首次尋址時(shí)的確存在較大的延遲,即使是最新的PC1066,在與DDR-333的比較中也不占優(yōu)勢。不過(guò),借助于雙通道的設計,RDRAM在高數據量傳輸應用中的優(yōu)勢還是比較明顯的。另外,在總線(xiàn)的利用率方面RDRAM的設計也居領(lǐng)先地位,這為保證它的總體效率提供了堅實(shí)的保障。
各內存的總線(xiàn)效率比較
這個(gè)對比表是東芝公司經(jīng)過(guò)反復實(shí)驗而得出的結論,它是通過(guò)一些典型的操作(如寫(xiě)-讀-讀),結合不同頁(yè)命中情況下的時(shí)序,以及刷新對內存操作的影響等分析而得出的。由于DDR SDRAM在L-Bank數量上占劣勢,所以出現L-Bank尋址沖突的可能性要大為提高,而且在寫(xiě)后讀操作中,RDRAM的延遲也明顯小于SDRAM家族,因此雖然PC800的峰值帶寬不如DDR-266,但綜合效率要更好。這可以解釋為什么在一些測試中,RDRAM明顯比DDR領(lǐng)先的原因。不過(guò),在以零散數據為主的操作中,RDRAM的固定傳輸周期以及高延遲就成為了性能的障礙。
從前面的分析可以看出,SDRAM/DDR在數據控制上的靈活性要比RDRAM高,首次訪(fǎng)問(wèn)的延遲也更短,因此在某些操作中,即使帶寬比RDRAM系統小,性能仍不見(jiàn)得落后。比如845D/E在某些應用測試中,完全可以與雙通道PC1066一較高低。而Intel決定在高端
服務(wù)器領(lǐng)域使用DDR芯片組,也基本是出于這個(gè)考慮,因為在服務(wù)器的操作中,零散型存取操作所占比例很大。相反,若大規模連續存取操作占比例很大(如視頻與音頻工作站),那么可能就要考慮RDRAM了。
2、 未來(lái)競爭展望
目前隨著(zhù)多通道技術(shù)在DDR上的普及,RDRAM在帶寬上的優(yōu)勢也變得不明顯了。所以,RDRAM如果不及時(shí)提高單通道的性能,很快會(huì )被強大的DDR家族趕出臺式機領(lǐng)域。但RDRAM的時(shí)鐘頻率已經(jīng)很高了,再向上提高已經(jīng)很難,不少RDRAM廠(chǎng)商都表示,800MHz時(shí)鐘頻率可能將是RDRAM的一個(gè)巨大門(mén)檻,即使能超過(guò),成本可能也是驚人的,要知道目前533/400MHz的RIMM就已使用了8層PCB,800MHz時(shí)PCB成本將很難控制。這也是為什么RDRAM急于推出32bit與64bit RIMM的原因,畢竟內存這種高帶寬應用設備,還是需要一定位寬的保證。而且高位寬的同步性也不像想象中的那么難以控制,DQS的設計就很大程度地解決了這一問(wèn)題,所以,DDR可以借助較少的轉產(chǎn)成本,較低的PCB成本(即使是DDR-Ⅱ也是6層設計),成為PC內存的首選產(chǎn)品。
現在再去爭論RDRAM與DDR誰(shuí)勝誰(shuí)敗已經(jīng)沒(méi)有意義,RDRAM已經(jīng)很難再在主流市場(chǎng)重振雄風(fēng)。這主要不是它的技術(shù)限制,而是早期的市場(chǎng)動(dòng)作與成本的壓力造成的。雖然現在4i芯片開(kāi)始起步,但支持這種結構的芯片組還很難找到(至少850E不支持)。在820時(shí)代,RDRAM由于成本而沒(méi)有打開(kāi)市場(chǎng),現在可以通過(guò)降低成本來(lái)提高競爭力,但DDR一方也有了多通道技術(shù)。Rambus也因此明智地將黃石定位于專(zhuān)用/定制市場(chǎng)。這樣,在今后很長(cháng)一段時(shí)間里我們只有看DDR的獨角戲了。
明日之星——DDR-Ⅱ與DDR-Ⅲ(一)
作為DDR的接班人,DDR-Ⅱ在規范制定之初就引起了廣泛的關(guān)注,進(jìn)入2002年,三星、Elpida、Hynix、Micron等都相繼發(fā)布了DDR-Ⅱ芯片(最早由三星在5月28日發(fā)布),讓人覺(jué)得DDR-Ⅱ突然和我們近了??墒?,DDR-Ⅱ規范卻一直沒(méi)有正式公開(kāi),在JEDEC上仍只有一篇ATi技術(shù)人員寫(xiě)的,在目前看來(lái)有些內容都已過(guò)時(shí)的簡(jiǎn)要介紹。
原來(lái),DDR-Ⅱ標準到2002年10月完成度也沒(méi)有達到100%(廠(chǎng)商透露大約為95%),而上述廠(chǎng)商所推出的芯片也在不斷的修改中,預計正式的規范將在明年第一季度推出。不過(guò),DDR-Ⅱ的主體設計已經(jīng)完成,不會(huì )有大的改動(dòng),所以通過(guò)這些“試驗性”芯片,我們仍可掌握DDR-Ⅱ的主要信息。
DDR-Ⅱ相對于DDR 的主要改進(jìn)如下:
DDR-Ⅱ與目前的DDR對比表
由于DDR-Ⅱ相對DDR-I的設計變動(dòng)并不大,因此很多操作就不在此詳細介紹了,本文重點(diǎn)闡述DDR-Ⅱ的一些重要變化。
一、 DDR-Ⅱ內存結構
DDR-Ⅱ內存的預取設計是4bit,通過(guò)DDR的講述,大家現在應該知道是什么意思了吧。
上文已經(jīng)說(shuō)過(guò),SDRAM有兩個(gè)時(shí)鐘,一個(gè)是內部時(shí)鐘,一個(gè)是外部時(shí)鐘。在SDRAM與DDR時(shí)代,這兩個(gè)時(shí)鐘頻率是相同的,但在DDR-Ⅱ內存中,內部時(shí)鐘變成了外部時(shí)鐘的一半。以DDR-Ⅱ 400為例,數據傳輸頻率為400MHz(對于每個(gè)數據引腳,則是400Mbps/pin),外部時(shí)鐘頻率為200MHz,內部時(shí)鐘頻率為100MHz。因為內部一次傳輸的數據就可供外部接口傳輸4次,雖然以DDR方式傳輸,但數據傳輸頻率的基準——外部時(shí)鐘頻率仍要是內部時(shí)鐘的兩倍才行。就如RDRAM PC800一樣,其內部時(shí)鐘頻率也為100MHz,是傳輸頻率的1/8。
DDR-Ⅱ、DDR與SDRAM的操作時(shí)鐘比較
所以,當預取容量超過(guò)接口一次DDR的傳輸量時(shí),內部時(shí)鐘必須降低(除非數據傳輸不是DDR方式,而是一個(gè)時(shí)鐘周期4次)。如果內部時(shí)鐘也達到200MHz,那外部時(shí)鐘也要達到400MHz,這會(huì )使成本有大幅度提高。因此,DDR-Ⅱ雖然實(shí)現了4-bit預取,但在實(shí)際效能上,與DDR是一樣的。在上面那幅比較圖中,可以看出廠(chǎng)商們的一種誤導,它雖然表示出在相同的核心頻率下,DDR-Ⅱ達到了兩倍于DDR的的帶寬,但前提是DDR-Ⅱ的外部時(shí)鐘頻率也是DDR和SDRAM的兩倍。在DDR的時(shí)鐘頻率已經(jīng)達到166/200MHz的今天,再用100MHz去比較,顯然意義不大。這點(diǎn)也請大家們注意識別,上圖更多的是說(shuō)明DDR-Ⅱ內外時(shí)鐘的差異。畢竟內部時(shí)鐘由外部決定,所以外部時(shí)鐘才是比較的根本基準。
總之,現在大家要明確認識,在外部時(shí)鐘頻率相同的情況下,DDR-Ⅱ與DDR的帶寬一樣。
二、 DDR-Ⅱ的新操作與新時(shí)序設計
1、片外驅動(dòng)調校(OCD,Off-Chip Driver)
DDR-Ⅱ內存在開(kāi)機時(shí)也會(huì )有初始化過(guò)程,同時(shí)在EMRS中加入了新設置選項,由于大同小異,在此就不多說(shuō)了。在EMRS階段,DDR-Ⅱ加入了可選的OCD功能。OCD的主要用意在于調整I/O接口端的電壓,來(lái)補償上拉與下拉電阻值。目的是讓DQS與DQ數據信號之間的偏差降低到最小。調校期間,分別測試DQS高電平/DQ高電平,與DQS低電平/DQ高電平時(shí)的同步情況,如果不滿(mǎn)足要求,則通過(guò)設定突發(fā)長(cháng)度的地址線(xiàn)來(lái)傳送上拉/下拉電阻等級(加一檔或減一檔),直到測試合格才退出OCD操作。
OCD的作用在于調整DQS與DQ之間的同步,以確保信號的完整與可靠性
不過(guò),據一些廠(chǎng)商的技術(shù)人員介紹,一般情況下有DQS#(差分DQS時(shí))就基本可以保證同步的準確性,而且OCD的調整對其他操作也有一定影響,因此在普通臺式機上不需要用OCD功能,它一般只會(huì )出現在高端產(chǎn)品中,如對數據完整性非常敏感的
服務(wù)器等。
2、片內終結(ODT,On-Die Termination)
所謂的終結,就是讓信號被電路的終端被吸收掉,而不會(huì )在電路上形成反射,造成對后面信號的影響。在DDR時(shí)代,控制與數據信號的終結在
主板上完成,每塊DDR主板在DIMM槽的旁邊都會(huì )有一個(gè)終結電壓島的設計,它主要由一排終結電阻構成。長(cháng)期以來(lái),這個(gè)電壓島一直是DDR主板設計上的一個(gè)難點(diǎn)。而ODT的出現,則將這個(gè)難點(diǎn)消滅了。
顧名思義,ODT就是將終結電阻移植到了芯片內部,主板上不在有終結電路。ODT的功能與禁止由北橋芯片控制,ODT所終結的信號包括DQS、RDQS(為8bit位寬芯片增設的專(zhuān)用DQS讀取信號,主要用來(lái)簡(jiǎn)化一個(gè)模組中同時(shí)使用4與8bit位寬芯片時(shí)的控制設計)、DQ、DM等。需要不需要該芯片進(jìn)行終結由北橋控制。 那么具體的終結操作如果實(shí)現呢?首先要確定
系統中有幾條模組,并因此來(lái)決定終結的等效電阻值,有150和75Ω兩檔,這一切由北橋在開(kāi)機進(jìn)行EMRS時(shí)進(jìn)行設置。
在向內存寫(xiě)入時(shí),如果只有一條DIMM,那么這條DIMM就自己進(jìn)行終結,終結電阻等效為150Ω。如果為兩條DIMM,一條工作時(shí),另一條負責終結,但等效電阻為75Ω
在從內存讀出時(shí),終結操作也將在北橋內進(jìn)行,如果有兩條DIMM,不工作的那一條將會(huì )終結信號在另一方向的余波,等效電阻也因DIMM的數量而有兩種設置
兩個(gè)DIMM在交錯工作中的ODT情況,第一個(gè)模組工作時(shí),第二個(gè)模組進(jìn)行終結操作,等第二個(gè)模組工作時(shí),第一個(gè)模組進(jìn)行終結操作(上圖可點(diǎn)擊放大)
現在我們應該基本了解了ODT的功能,它在很大程度上減少了內存芯片在讀取時(shí)的I/O功率消耗,并簡(jiǎn)化了主板的設計,降低了主板成本。而且ODT也要比主板終結更及時(shí)有效,從而也成為了提高信號質(zhì)量的重要功能,這有助于降低日后DDR-Ⅱ進(jìn)一步提速的難度。但是,由于為了確保信號的有效終結,終結操作期將會(huì )比數據傳輸期稍長(cháng),從而多占用一個(gè)時(shí)鐘周期的時(shí)間而造成總線(xiàn)空閑。不過(guò),有些廠(chǎng)商的技術(shù)人員稱(chēng),通過(guò)精確設置tDQSS,可以避免出現總線(xiàn)空閑。
明日之星——DDR-Ⅱ與DDR-Ⅲ(二)
3、前置CAS、附加潛伏期與寫(xiě)入潛伏期
前置CAS(Posted CAS)是為了解決DDR內存中指令沖突而設計的功能。它允許CAS信號緊隨RAS發(fā)送,相對于以往的DDR等于將CAS前置了。這樣,地址線(xiàn)可以立刻空出來(lái),便于后面的行有效命令發(fā)出,避免造成命令沖突而被迫延后的情況發(fā)生,但讀/寫(xiě)操作并沒(méi)有因此而提前,仍有要保證有足夠的延遲/潛伏期,為此,DDR-Ⅱ引入了附加潛伏期的概念(AL,Additive Latency),與CL一樣,單位為時(shí)鐘周期數。AL+CL被定義為讀取潛伏期(RL,Read Latency),相應的,DDR-Ⅱ還對寫(xiě)入潛伏期(WL,Write Latency)制定了標準,WL是指從寫(xiě)入命令發(fā)出到第一筆數據輸入的潛伏期,不要將它和tDQSS弄混了,后者是指DQS而不是數據。按規定,WL=RL-1,即AL+CL-1。
在沒(méi)有前置CAS功能時(shí),對其他L-Bank的尋址操作可能會(huì )因當前行的CAS命令占用地址線(xiàn)而延后,并使數據I/O總線(xiàn)出現空閑,當使用前置CAS后,消除了命令沖突并使數據I/O總線(xiàn)的利率提高(上圖可點(diǎn)擊放大)
設置Posted-CAS后,必須附加潛伏期以保證應有延遲,此時(shí)讀取潛伏期(RL)就等于A(yíng)L+CL,從中可以看出AL的值為CL+tRCD-1
DDR-Ⅱ中CL最低值為3,最高為5,并且不再有x.5的設計,而AL值則為0-4。當AL設為0時(shí),前置CAS無(wú)效,即為傳統DDR模式的操作。不過(guò)前置CAS在解決命令沖突的時(shí)間也帶來(lái)了新的問(wèn)題——在背靠背式讀取時(shí),仍將經(jīng)過(guò)AL+CL的潛伏期才能讀取數據,比傳統的只有CL相比,讀取的延遲反而增加了。因此,AL=0是默認設置,只有在那些讀寫(xiě)命令非常頻繁的操作場(chǎng)合,才建議
啟動(dòng)前置CAS功能(如
服務(wù)器等),對于臺式機用戶(hù),前置CAS的優(yōu)點(diǎn)不足以抵消其帶來(lái)的不利影響。
由于有了AL,在同一行中進(jìn)行再讀取時(shí),在CL的基礎上仍將增加AL造成的延遲,從而影響了性能
三、 DDR-Ⅱ未來(lái)發(fā)展與DDR-Ⅲ
1、 DDR-Ⅱ 的發(fā)展計劃
雖然目前多家廠(chǎng)商都推出了DDR-Ⅱ內存芯片,但從DDR官方組織JEDEC方面得到的信息表明,距離DDR-Ⅱ內存大規模上市還很遙遠,2004年才會(huì )是DDR-Ⅱ普通的階段。而由于三星、南亞與Micron公司的大力推廣,這期間JEDEC很可能會(huì )接受DDR-400標準,目前的爭執主要在于能否在DDR-I的體系下保證DDR-400的可靠性。對此(成為JEDEC正式標準),三星與南亞公司都表示了很強的信心。 筆者認為,DDR-400應該會(huì )獲得認可,畢竟市場(chǎng)上是有需要的,而讓市場(chǎng)去等一年的時(shí)間迎接DDR-Ⅱ 400似乎并不現實(shí)。不過(guò),多通道技術(shù)在DDR領(lǐng)域里的普及,可能也會(huì )改變JEDEC對認證DDR-400的想法,但關(guān)鍵要看多通道的性?xún)r(jià)比能不能填補這一空檔,否則DDR-400就是一個(gè)最佳的選擇(在完整/進(jìn)階版完稿之后又傳來(lái)了Intel準備支持DDR-400的消息,可見(jiàn)DDR-400的前途)。
三星公司展示的DDR-333(下)與DDR-400(上)內存模組
三星是DDR-400的主推廠(chǎng)商,但請注意DDR-400的電壓變化,它可能是引起兼容性問(wèn)題的根源之一
也由于多通道的出現,市場(chǎng)上對DDR-Ⅱ的渴望也并不大,畢竟它與同頻的DDR-I內存的帶寬一樣。而從上文可以看出,DDR-Ⅱ相對于DDR-I的不同設計很多都集中在了如何在更高的工作(時(shí)鐘)頻率下保證數據的可靠。只有當DDR-Ⅱ依靠自身的特有功能與設計來(lái)獲得更高的時(shí)鐘頻率時(shí),再配合多通道,才會(huì )真正拉開(kāi)與DDR-I的距離,那時(shí)也就是DDR-Ⅱ普及的開(kāi)始。但筆者預測DDR-Ⅱ 400將像DDR-200一樣,注定是一個(gè)一出生就過(guò)時(shí)的標準,DDR-Ⅱ至少要從533開(kāi)始流行。不過(guò)在目前情況下,我們還不必太在意DDR-Ⅱ的進(jìn)展情況,說(shuō)句實(shí)話(huà),它離我們還很遠。今天的介紹只是讓大家對其有一個(gè)大概的了解。
明日之星——DDR-Ⅱ與DDR-Ⅲ(三)
1、DDR-Ⅱ內存圖賞
Micron公司的DDR-Ⅱ 533內存與DDR-Ⅱ分析/檢測卡,它用來(lái)分析DDR-Ⅱ內存的工作情況,并依此對內存的內部設計進(jìn)行改進(jìn),值得注意的是
系統平臺用的是令人懷念的Micron自己的芯片組
三星公司展示的DDR-Ⅱ 533內存模組,模組標準為PC4300,相應的,如果是DDR-Ⅱ 400將是PC3200
Elpida公司的DDR-Ⅱ內存模組,銀光閃閃的CSP封裝顯得與眾不同
2、DDR-Ⅱ時(shí)代的封裝技術(shù)
可以肯定的是TSOP-II將在DDR-Ⅱ時(shí)代徹底退出內存封裝市場(chǎng)。并且將會(huì )出現改良型的CSP——WLP(Wafer Level Packaging,晶圓級封裝),它是比CSP更為貼近芯片尺寸的封裝方法,由于在晶圓上就做好了封裝
布線(xiàn),因此在可靠性方面達到了更高的水平。不過(guò),外在的模樣仍與現在的CSP封裝差不多,WLP更多的改進(jìn)是在其內部。
另外值得一提的是為了應付更高容量的需求而采用的
SiP封裝技術(shù),它是System-in-a-Package的縮寫(xiě),有時(shí)又稱(chēng)之為Stacked Pakage,可以看作是一種集成封裝技術(shù)。它將多枚內存芯片核心
堆疊在一起,然后統一封裝成一顆芯片,在有限的面積內通過(guò)充分利用空間達到容量倍增的目的。SiP并不是內存中專(zhuān)用的封裝技術(shù),原來(lái)是用于多種不同功能的芯片統一封裝(如一顆嵌入式CPU+DRAM芯片)。
目前的SiP技術(shù)可以在CSP的基礎上最多堆疊4枚內存芯片(上圖可點(diǎn)擊放大)
3、DDR-Ⅲ簡(jiǎn)介
DDR-Ⅲ的設計始于2001年5月,目前只有一個(gè)大概的規格。按照JEDEC的計劃,DDR-Ⅲ將在2007年正式出臺,數據傳輸率至少從667MHz開(kāi)始,預取數據容量大于4bit(很可能采用RDRAM那樣的8bit設計),而且工作電壓比1.8V更低,寄生干擾也將進(jìn)一步減少。顯然,它離我們更是遙遠,還不到談?wù)撍€的時(shí)候,要知道半導體技術(shù)日新月異, DDR-Ⅲ完全有可能因此而中途改變設計。在此,我們就當個(gè)小花邊新聞吧。
沒(méi)有我不行——內存模組(上)
內存模組是內存在PC系統中的最終體現形式,所以在本專(zhuān)題的最后,我們來(lái)簡(jiǎn)要談?wù)剝却婺5念?lèi)型和未來(lái)的發(fā)展情況。不過(guò),本章節只介紹DIMM,而不涉及RIMM(其實(shí)兩者的很多概念是相通的)。目前經(jīng)常見(jiàn)到的模組主要有五種:
1、 Unbuffered DIMM:無(wú)緩沖型模組,這是我們平時(shí)所用到的標準DIMM,分有ECC和無(wú)ECC兩種,簡(jiǎn)稱(chēng)Unb-DIMM。
2、 Regustered DIMM:寄存型模組,這是高端
服務(wù)器所使用的DIMM,分有ECC和無(wú)ECC兩種,但市場(chǎng)上幾乎都是ECC的,簡(jiǎn)稱(chēng)Reg-DIMM。
3、 SO-DIMM:Small Outline DIMM,小外型DIMM,
筆記本電腦中所使用的DIMM,分ECC和無(wú)ECC兩種,DDR-Ⅱ時(shí)代僅有無(wú)ECC的型號。
4、 Micro-DIMM:微型DIMM,供小型筆記本電腦或手持式設備使用的DIMM。
5、 Mini-DIMM:DDR-Ⅱ時(shí)代新出現的模組類(lèi)型,它是Regustered DIMM的縮小版本,用于刀片式服務(wù)器等對體積要求苛刻的高端領(lǐng)域。
各類(lèi)型內存DIMM對比表
三星公司DDR-333標準的SO-DIMM,容量高達512MB
本文將重點(diǎn)講一下Unb與Reg-DIMM,和未來(lái)模組技術(shù)的發(fā)展
一、Unb與Reg-DIMM的區別
Unb與Reg-DIMM的最大區別在于模組上有無(wú)寄存器。在高容量模組上,內存芯片數量很多,而且在需要大容量?jì)却娴墓ぷ鲌?chǎng)合,內存模組的安插數量也是很多的,這使命令與尋址信號的穩定性受到了嚴峻考驗。很多芯片組的資料中都說(shuō)明只有使用Reg-DIMM才能達到標稱(chēng)的最高內存容量,從這點(diǎn)就能猜到寄存器的作用——穩定命令/地址信號,隔離外部干擾。
Reg-DIMM工作示意圖,命令與地址信號通過(guò)寄存器中繼傳輸至內存芯片
在工作時(shí),命令地址信號會(huì )先送入寄存器進(jìn)行“凈化”并進(jìn)入鎖存狀態(tài),然后再發(fā)送至內存芯片,芯片中的數據則不經(jīng)過(guò)寄存器而直接傳向北橋。由于要經(jīng)過(guò)中繼傳輸,所以?xún)却娌僮鞯臅r(shí)序也會(huì )因此而增加一個(gè)時(shí)鐘周期,這是它所帶來(lái)的一個(gè)弊端,但在高端應用中,內存系統的穩定可靠的重要性遠在性能之上,所以Reg-DIMM一般只用于高端市場(chǎng),并且需要芯片組的支持才行(主要是Reg所引起的時(shí)序變化)。而在高端設備中,ECC基本都是必須的,因此市場(chǎng)上的Reg-DIMM也都無(wú)一例外的是ECC型模組,雖然也有無(wú)ECC的Reg-DIMM設計標準。
另外,為了保證內存工作時(shí)鐘的穩定,Reg-DIMM上還要有一顆PLL對時(shí)鐘信號對
主板發(fā)來(lái)的時(shí)鐘信號進(jìn)行跟蹤/鎖定。在SDRAM時(shí)代,這并不是必須的設計,但到了DDR時(shí)代,由于對時(shí)鐘的敏感性,PLL成為了必備元件。
DDR內存模組的結構圖,寄存器與PLL是它相對于Unb-DIMM的最大不同
現在再回頭看看Unb-DIMM,就很明白了。它關(guān)鍵就少了寄存器,但為什么不稱(chēng)之為Unregistered-DIMM呢?其實(shí),Buffered與Registered是Reg-DIMM的兩種工作模式,前者在Reg-DIMM上并不常用,它是以時(shí)鐘異步方式工作的,輸出信號的再驅動(dòng)不與時(shí)鐘同步,Registered模式下輸入信號的再驅動(dòng)則與時(shí)鐘同步。顯然,Buffered模式下的性能要更低一些。不過(guò),從原理上講Registered模式也是一種緩沖操作,只是與時(shí)鐘同步而已。在SDRAM的Reg-DIMM上,Buffered與Registered模式通過(guò)REGE信號控制,但到了DDR SDRAM-DIMM時(shí)代,可能由于性能的原因Buffered模式被取消了。
在Unb-DIMM上,沒(méi)有寄存器也就沒(méi)了這個(gè)Buffer,但它仍可具備ECC功能。這里需要強調的是,ECC與Registered是兩碼事,前者是在邏輯上保證數據的
安全,后者是在物理上保證內存系統的穩定工作。
德國Infineon公司推出的容量高達2GB的PC2100 Reg-DIMM沒(méi)有我不行——內存模組(下)
二、DIMM引腳的基本設計
講完Unb-DIMM與Reg-DIMM的不同之后,現在我們來(lái)看看DIMM引腳上的不同。其實(shí),從內存芯片的引腳上就能推斷出一些DIMM的引腳,因為芯片最終要通過(guò)DIMM來(lái)與
主板打交道的。
首先,DIMM肯定要有64個(gè)引腳用來(lái)數據的傳輸,而且要有Ax地址線(xiàn)、L-Bank地址線(xiàn)、片選、數據掩碼、電源、RAS、CAS……等信號,另外,ECC型與Reg型DIMM要有額外的標定引腳,下面我就以SDRAM和DDR SDRAM為例,分Unb-DIMM和Reg-DIMM來(lái)介紹一下DIMM都包含有哪些的引腳。
(上圖可點(diǎn)擊放大)
從上面的引腳信號列表中,大家應該能了解到DIMM的大體情況了。其中很多信號定義是不是非常熟悉?從中可以看到,在DDR SDRAM時(shí)代已經(jīng)為8個(gè)L-Bank做好了準備,但業(yè)界顯然沒(méi)有利用到它,不光是內存廠(chǎng)商,DDR芯片組中似乎沒(méi)有支持8個(gè)L-Bank的設計。還有就是CS信號,從SDRAM到DDR,都有4個(gè)CS的設計,但目前的DIMM還都是雙P-Bank的設計,不同的是,SDRAM-DIMM上,4個(gè)CS是必須的,兩個(gè)CS對應一個(gè)P-Bank芯片集,但到了DDR時(shí)代,可能是技術(shù)與工藝的進(jìn)步,一個(gè)CS就控制了一個(gè)P-Bank??傊?,當我們了解了芯片的引腳設計后,對DIMM的引腳組成也就不再陌生。有興趣的讀者,可以自行深入研究。
三、QBM型DIMM
之所以在前文沒(méi)有介紹四倍帶寬內存(QBM,Quad Band Memory),就是因為不是針對芯片的技術(shù),而針對DIMM的技術(shù)。它誕生于DDR時(shí)代,是Kentron公司為了解決DDR帶寬提供困難而提出的設計方案。主要的思路就是讓DIMM上的兩個(gè)P-Bank交錯工作,而交錯的時(shí)鐘周期為原始時(shí)鐘的1/4,即相位相差90度。
(上圖可點(diǎn)擊放大)
QBM的工作時(shí)序圖,第二個(gè)P-Bank的工作時(shí)鐘與第一個(gè)P-Bank相差90度(1/4周期),這樣在第一個(gè)P-Bank時(shí)鐘的高/低電平中部就是第二個(gè)P-Bank的觸發(fā)點(diǎn),兩者都是DDR傳輸,從而在一個(gè)時(shí)鐘周期內完成4次數據觸發(fā),實(shí)現四倍帶寬
為了控制兩個(gè)P-Bank中同一位置的芯片交錯工作,模組上要為每組芯片(在QBM模組上,一個(gè)P-Bank位于一側,兩個(gè)P-Bank中位置相對的芯片為一組)設置一個(gè)開(kāi)關(guān),以控制不同P-Bank間的通斷。并且還要為延遲1/4周期的P-Bank提供一個(gè)PLL以保證相位差的準確性。
QBM的設計是非常巧妙的,經(jīng)過(guò)對現有的DDR模組的改裝,配合新的芯片組即可將帶寬提高一倍,有點(diǎn)類(lèi)似于32bit RIMM,在一個(gè)模組上實(shí)現了
雙通道的功能,只是QBM不是雙通道并發(fā),而是雙通道交錯,通過(guò)更高的傳輸頻率實(shí)現高帶寬。但是新增加的開(kāi)關(guān)與PLL元件將增加一定的成本,不過(guò)與其所能提供的帶寬相比,還是比較劃算的。
(上圖可點(diǎn)擊放大)
Kentron公司給出的QBM與其他內存方案的成本比較表,從中可以看出QBM有較高的性?xún)r(jià)比
但是,開(kāi)關(guān)元件的同步性對于QBM是個(gè)考驗,時(shí)鐘頻率越高,對開(kāi)關(guān)的控制精度就越高。目前,有不少大牌的模組廠(chǎng)商(如Infineon)都在論證QBM的可行性與可靠性,據部分廠(chǎng)商透露,在使用DDR-333或之前標準時(shí),QBM的表現良好,但到了DDR-400,QBM的可靠性就會(huì )降低,如果克服這一個(gè)問(wèn)題,那么延遲又會(huì )大幅提高。所以,QBM目前的可行標準是QBM533(DDR-266)和QBM667(DDR-333)。VIA在P4X800中將要支持的標準也是QBM533,雖然不能使用DDR-400,但它的5.4GB/s帶寬(QBM667)在目前仍是無(wú)敵的。
不過(guò),由于QBM是針對模組的技術(shù),所以理論上QBM可適用于任何DIMM,包括SDRAM和DDR-Ⅱ的DIMM,Kentron也有此計劃研制QBM型DDR-Ⅱ DIMM,以保持QBM的生命力。另外,Kentron已將QBM標準上報JEDEC審批,目前還不知能否通過(guò)。很多模組廠(chǎng)商也都在觀(guān)望,畢竟QBM轉產(chǎn)是很容易的,就看市場(chǎng)情況了。所以,QBM雖然設計巧妙,但得到的支持并不強勁,以Kentron及QBM聯(lián)盟的生產(chǎn)能力,顯然不足以完成普及任務(wù),一切就看P4X800的市場(chǎng)效果了。
三、模組的
堆疊裝配
當內存芯片容量無(wú)法迅速提高的時(shí)候,高容量模組如何設計就體現了廠(chǎng)商間的真正實(shí)力,由于高容量模組針對的是高端應用市場(chǎng),所以誰(shuí)能在容量上有所突破就意味著(zhù)滾滾商機。就模組而言,芯片基本是固定的,所以芯片堆疊裝配(Stack Assembly)技術(shù)就是增加容量的首選。
這方面除了Elpida、Kentron、Kingston等公司較早以前提出的TCP、FEMMA、EPOC等堆疊形式外(已有多篇文章介紹過(guò),在此不再重復),著(zhù)名的封裝技術(shù)開(kāi)發(fā)商Tessera公司(它在1990年因研制出CSP封裝而聞名于世)近期宣布了他們的4枚芯片堆疊裝配的模組技術(shù)(TCP與EPOC都是兩芯片堆疊)——μZ Package,當然,芯片本身的封裝也要有相應的調整。而Infineon公司也推出了普通TSOP-II技術(shù)的雙芯片堆疊裝配技術(shù)。顯然,模組廠(chǎng)商都想利用有限的空間(畢竟在主板上插槽之間的距離是有限的)盡量提高裝配容量,若再配合
SiP封裝形式的內存芯片,DIMM的擴容就如虎添翼了。
Infineon的采用TSOP-II堆疊封裝的模組,容量高達2GB
Tessera公司為高容量模組開(kāi)發(fā)的4枚芯片堆疊裝配技術(shù)μZ Package