也許有的朋友在購買內(nèi)存后發(fā)現(xiàn):為什么明明在商家那里可以使用,而在自己的電腦里就不能使用了呢?其實這里面就涉及到內(nèi)存Bank的問題,今天將為大家深入分析出現(xiàn)這種情況的原因。
內(nèi)存Bank分為物理Bank和邏輯Bank。
1.物理Bank
傳統(tǒng)內(nèi)存系統(tǒng)為了保證CPU的正常工作,必須一次傳輸完CPU在一個傳輸周期內(nèi)所需要的數(shù)據(jù)。而CPU在一個傳輸周期能接收的數(shù)據(jù)容量就是CPU數(shù)據(jù)總線的位寬,單位是bit(位)。內(nèi)存與CPU之間的數(shù)據(jù)交換通過主板上的北橋芯片進行,內(nèi)存總線的數(shù)據(jù)位寬等同于CPU數(shù)據(jù)總線的位寬,這個位寬就稱之為物理Bank(Physical Bank,簡稱P-Bank)的位寬。以目前主流的DDR系統(tǒng)為例,CPU與內(nèi)存之間的接口位寬是64bit,也就意味著CPU在一個周期內(nèi)會向內(nèi)存發(fā)送或從內(nèi)存讀取64bit的數(shù)據(jù),那么這一個64bit的數(shù)據(jù)集合就是一個內(nèi)存條Bank。目前絕大多數(shù)的芯片組都只能支持一條內(nèi)存包含兩個物理Bank。不過以前有不少朋友都認為,內(nèi)存的物理Bank是由面數(shù)決定的:即單面內(nèi)存條則包含一個物理Bank,雙面內(nèi)存則包含兩個。其實這個看法是錯誤的!
一條內(nèi)存條的物理Bank是由所采用的內(nèi)存顆粒的位寬決定的,各個芯片位寬之和為64bit就是單物理Bank;如果是128bit就是雙物理Bank。讀到這里,大家也應該知道,我們可以通過兩種方式來增加這種類型內(nèi)存的容量。第一種就是通過增加每一個獨立模塊的容量來增加Bank的容量,第二種方法就是增加Bank的數(shù)目。由于目前內(nèi)存顆粒位寬的限制,一個系統(tǒng)只有一個物理Bank已經(jīng)不能滿足容量的需要。所以,目前新一代芯片組可以支持多個物理Bank,最少的也能支持4個物理Bank。對于像Intel i845D這種支持4個Bank的芯片組來說,我們在選購內(nèi)存時就要考慮一下插槽數(shù)與內(nèi)存Bank 的分配問題了。因為如果選購雙Bank的內(nèi)存,這意味著在Intel i845D芯片組上我們最多只能使用兩條這樣的內(nèi)存,多了的話芯片組將無法識別。這里我建議大家最好根據(jù)自己的主板所提供的內(nèi)存插槽數(shù)目來選購內(nèi)存,如果主板只提供了兩個內(nèi)存插槽,那就不必為內(nèi)存是單Bank還是雙Bank而擔心了。而如果主板提供了4個內(nèi)存插槽(同一種規(guī)格),那么應該盡量購買單Bank或大容量雙Bank的內(nèi)存,以免給日后升級留下不必要的麻煩。
注:SDRAM與DDR內(nèi)存的物理Bank是一樣的,不過在RDRAM內(nèi)存規(guī)格中,物理Bank被通道(Channel)取代。
2.邏輯Bank
邏輯Bank的英文全稱為Logical Bank,簡稱L-Bank。如果將物理Bank說成是內(nèi)存顆粒陣列的話,那么邏輯Bank可以看做是數(shù)據(jù)存儲陣列。不過與物理Bank不同,SDRAM與DDR內(nèi)存的邏輯Bank并不完全一樣,所以我將分開來簡單介紹一下。
簡單地說,SDRAM的內(nèi)部是一個存儲陣列(圖1),因為如果是管道式存儲,就很難做到隨機訪問了。陣列就如同表格一樣,將數(shù)據(jù)“填”進去。因此邏輯Bank我們可以看成是一張邏輯二維表,在此表中內(nèi)存的數(shù)據(jù)是以位(bit)為單位寫入一個大的矩陣中,每個單元我們稱為CELL,只要指定一個行(Row),再指定一個列(Column),就可以準確地定位到某個CELL,里面每個單元都可以存儲數(shù)據(jù),而且每個單元的存儲空間相同──因為實際上與物理Bank每個單元具體存儲數(shù)據(jù)量相同。這個具體的單元存儲數(shù)據(jù)量即為邏輯Bank的位寬(實際上內(nèi)存芯片的位寬就是邏輯Bank的位寬),一般有4bit、8bit和16bit等幾種。如果你認為不好理解的話,那么你可以用硬盤操作中的簇與扇區(qū)的關系來理解內(nèi)存中的存儲形式──扇區(qū)是硬盤中的最小存儲單元(相當于內(nèi)存中的存儲體),而一個簇則包含多個扇區(qū)(相當于邏輯Bank中的存儲單元),數(shù)據(jù)的交換都是以一個簇為單位進行。由于工藝上的原因,這個陣列不可能做得太大,所以一般內(nèi)存芯片中都是將內(nèi)存容量分成幾個陣列來制造,也就是說內(nèi)存芯片中存在多個邏輯Bank,隨著芯片容量的不斷增加,邏輯Bank數(shù)量也在不斷增加。
主板芯片組本身設計時在一個時鐘周期內(nèi)只允許對一個邏輯Bank進行操作,而不是主板芯片組對內(nèi)存芯片內(nèi)所有邏輯Bank同時操作。邏輯Bank的地址線是通用的,只要再有一個邏輯Bank編號加以區(qū)別就可以了(Bank0到Bank3)。但是這個芯片的位寬決定了一次能從它那里讀出多少數(shù)據(jù),并不是內(nèi)存芯片里所有單元的數(shù)據(jù)能夠一次全部讀出。
對于DDR內(nèi)存,邏輯Bank的作用、原理與在SDRAM中是一樣的,區(qū)別主要是在邏輯Bank容量、規(guī)格之上。從上面大家已經(jīng)知道,SDRAM中邏輯Bank存儲單元的容量與芯片位寬相同,但DDR中并不是這樣。DDR的邏輯存儲單元的容量是芯片位寬的一倍:即“芯片位寬×2=存儲單元容量”,同時DDR中的真正行、列地址數(shù)量也與同規(guī)格SDRAM不一樣了。這主要是由于DDR的工作原理所決定的。DDR這種內(nèi)部存儲單元容量的設計,就是常說的兩位預取(2-bit Prefetch),也稱為2-n Prefetch(n代表芯片位寬)。
注:目前品牌內(nèi)存大都在包裝和說明書中標明邏輯Bank,對于兼容條,你可以根據(jù)內(nèi)存顆粒上的編號標志進行計算。至于物理Bank,大家可以根據(jù)以上介紹的原理計算出來,在這里我就不多說了。另外我們常說的內(nèi)存交錯設置并不是指的物理Bank的交錯,也就是說不是內(nèi)存條雙面的交錯,而是指內(nèi)存芯片內(nèi)部邏輯Bank的交錯。如果芯片有4個Bank,那么就可以進行4路交錯,如果只有兩個Bank就只能是2路交錯。很多資料介紹的以內(nèi)存條的單面或雙面來決定交錯是錯誤的,實際上就是混淆了物理Bank和邏輯Bank的區(qū)別。
內(nèi)存CL與性能的關系
此外,大家在購買品牌內(nèi)存時如果留意,就會發(fā)現(xiàn)包裝或標貼上會標有“CL=2.5或CL=2.0”諸如此類的標志(圖2)。雖說是同一種類型的內(nèi)存如DDR400,但由于上面標志CL的數(shù)值不同,因而價格也會不同,這是為什么呢?
標志上面的CL英文全稱為CAS Latency,為CAS的延遲時間。帶寬表示的是數(shù)據(jù)傳輸能力,在各種內(nèi)存中,在數(shù)據(jù)被真正傳輸前,傳送方必須花費一定時間去等待傳輸請求的響應,這種等待就是一種延遲,在這里的專門術語就叫做“Latency”。而CAS Latency就是指的是CPU在接到讀取某列內(nèi)存地址上數(shù)據(jù)的指令后,到實際開始讀出數(shù)據(jù)所需的等待時間。內(nèi)存內(nèi)部的存儲單元按照行和列排成一個矩陣,內(nèi)存訪問地址被解碼成行和列兩個信號。為了要讀出或?qū)懭肽彻P數(shù)據(jù),內(nèi)存控制芯片會先傳送列的地址,接下來RAS信號就會被激活。然而,在存取行的數(shù)據(jù)前,還需要幾個執(zhí)行周期才行,這就是所謂的RAS-to-CAS延遲時間。同樣地,在CAS信號被執(zhí)行后,也同樣需要幾個周期。使用標準PC133的SDRAM大約是2到3個周期;而DDR RAM則是4到5個周期。在DDR中,真正的CAS延遲時間則是2到2.5個執(zhí)行周期。RAS-to-CAS的時間則視技術而定,大約是5到7個周期,這也是延遲的基本因素。
可以說與CL=2.5(DDR)或CL3(SDRAM)比起來,CL=2內(nèi)存更具優(yōu)勢,這個優(yōu)勢可以通過總延遲時間的對比看出來。總延遲時間=系統(tǒng)時鐘周期×CL模式數(shù)+存取時間(tAC)。比如某DDR333內(nèi)存的存取時間為6ns,當我們將設定CL模式數(shù)為2.5(即CAS Latency=2.5),則總延遲時間=6ns×2.5+6ns=21ns,而當將CL設為2的時候,總延遲時間=6ns×2+6ns=18ns,足足減少了3個執(zhí)行周期;如果你的DDR266內(nèi)存是采用默認143MHz的7ns芯片,當CL=2時,則其總延遲時間=7ns(系統(tǒng)時鐘周期)×2+7ns=21ns。因此對于一款性能超群的DDR266內(nèi)存來說,其性能可以達到DDR333的水準,這也就是為什么超頻玩家喜歡選擇CL值較低內(nèi)存的原因。在這里也建議你在買內(nèi)存的時候,如果CL=2的內(nèi)存價格只比其他的高一點,那你最好買CL=2的產(chǎn)品(不過你要記住不同速度的內(nèi)存混在一起時,最慢的內(nèi)存就會成為性能瓶頸。舉例來說,如果你插上1條CL=2的內(nèi)存以及一條CL=2.5的內(nèi)存,那兩條內(nèi)存都會以CL=2.5的設置來執(zhí)行)。此外,目前各內(nèi)存顆粒廠商除了從提高內(nèi)存時鐘頻率來提高DDR的性能之外,已經(jīng)考慮通過更進一步的降低CAS延遲時間來提高內(nèi)存性能,這在DDR上是可行的,預計CL=1.5會是下一個發(fā)展的目標。
不過,并不是說CL值越低性能就越好,因為其他的因素會影響這個數(shù)據(jù)。例如,新一代處理器的高速緩存較有效率,這表示處理器比較少地直接從內(nèi)存讀取數(shù)據(jù)。再者,列的數(shù)據(jù)會比較常被存取,所以RAS-to-CAS的發(fā)生幾率也大,讀取的時間也會增多。最后,有時會發(fā)生同時讀取大量數(shù)據(jù)的情形,在這種情形下,相鄰的內(nèi)存數(shù)據(jù)會一次被讀取出來,CAS延遲時間只會發(fā)生一次。此外,也許有一些朋友會注意到,當把DDR內(nèi)存的CL從標準的2.5設置到2工作模式下的時候,反而系統(tǒng)的性能還沒有默認的CL=2.5好了,這是什么原因呢?這是因為內(nèi)存的品質(zhì)不太好,不能穩(wěn)定地工作在CL=2這種模式下,在此模式下會出現(xiàn)在存取數(shù)據(jù)的時候數(shù)據(jù)常常被“丟失”的情況(即數(shù)據(jù)讀取命中率降低)。不能取得數(shù)據(jù),當然就只能重新讀取,這樣就浪費掉了很多時間,從而造成系統(tǒng)效率低。
附注:在內(nèi)存條上的SPD芯片中已經(jīng)包含有CL相關信息。當啟動電腦時,BIOS會檢查此項內(nèi)容,并且以內(nèi)存標稱的CL模式運行。