計算機硬體

當前位置 /首頁/計算機/計算機硬體/列表

主機板不支援大容量記憶體的原因

隨著記憶體價格的下調,不少網友都為自己的機器配置了高容量記憶體,增大記憶體容量不但可以提高讀寫速度,而且會適當的提高系統效能;但是,單條大容量記憶體在一些主機板上(時間比較長的主機板)不是無法識別,就是識別錯誤(容量識別錯誤)。今天本站小編為大家整理的主機板不支援大容量記憶體的原因,歡迎大家閱讀瀏覽!

主機板不支援大容量記憶體的原因

  一.記憶體晶片的邏輯BANK

我們知道主機板上使用的32MB/64MB/128MB的記憶體條都是由若干記憶體晶片焊接在4層或6層電路板上組成的,因此首先我們必須對記憶體晶片的內部結構有個清楚的認識,見下圖:

在晶片的內部,記憶體的資料是以位(bit)為單位寫入一張大的矩陣中,每個單元我們稱為CELL,只要指定一個行(Row),再指定一個列(Column),就可以準確地定位到某個CELL,這就是記憶體晶片定址的基本原理。這個陣列我們就稱為記憶體晶片的BANK,也稱之為邏輯BANK(Logical BANK)。由於工藝上的原因,這個陣列不可能做得太大,所以一般記憶體晶片中都是將記憶體容量分成幾個陣列來製造,也就是說存在記憶體晶片中存在多個邏輯BANK,隨著晶片容量的不斷增加,邏輯BANK數量也在不斷增加,目前從32MB到1GB的晶片基本都是4個,只有早期的16Mbit和32Mbit的晶片採用的還是2個邏輯BANK的設計,譬如三星的兩種16MB晶片:K4S161622D (512K x 16Bit x 2 BANK)和K4S160822DT(1M x 8Bit x 2 BANK)。晶片組本身設計時在一個時鐘週期內只允許對一個邏輯BANK進行操作(實際上晶片的位寬就是邏輯BANK的位寬),而不是晶片組對記憶體晶片內所有邏輯BANK同時操作。邏輯BANK的地址線是通用的,只要再有一個邏輯BANK編號加以區別就可以了(BANK0到BANK3)。但是這個晶片的位寬決定了一次能從它那裡讀出多少資料,並不是記憶體晶片裡所有單元的資料一次全部能夠讀出,下圖就是一個容量為32MB(256Mbit)記憶體晶片內部邏輯BANK結構示意圖,從中你可以更清楚邏輯BANK的結構。

圖中可以看出,DQ資料輸入/輸出線只有8根而不是32根,可以發現4個BANK是分時工作的,任一時刻只可能有一個BANK的資料被存取,0-3是它們的編號。每個邏輯BANK有8M個單元格(CELL),一些廠商(比如現代/三星)就把每個邏輯BANK的單元格數稱為資料深度(Data Depth),每個單元由8bit組成,那麼一個邏輯BANK的總容量就是64Mbit(8M×8bit),4個邏輯BANK就是256Mbit,因此這顆晶片的總容量就是256Mbit(32MB)。

記憶體晶片的容量是一般以bit為單位的。比如說32Mbit的晶片,就是說它的容量是32Mb(b=bit=位),注意位(bit)與位元組(Byte)區別,這個晶片換算成位元組就是4MB(B=Byte=位元組=8個bit),一般記憶體晶片廠家在晶片上是標明容量的,我們可以晶片上的標識知道,這個晶片有幾個邏輯BANK,每個邏輯bank的位寬是多少,每個邏輯BANK內有多少單元格(CELL),比如目前目前64MB和128MB記憶體條常用的64Mbit的晶片就有如下三種結構形式:

①16 Meg x 4 (4 Meg x 4 x 4 banks) [16M╳4]

②8 Meg x 8 (2 Meg x 8 x 4 banks) [8M╳8]

③4 Meg x 16 (1 Meg x 16 x 4 banks) [4M╳16]

表示方法是:每個邏輯BANK的單元格數×邏輯BANK數量×每個單元格的位數(晶片的位寬)。晶片邏輯BANK位寬目前的工藝水平只能最多做到16位,因此大家看到幾乎所有的晶片邏輯BANK位寬只可能4/8/16三者之一。以前16Mbit的晶片基本採用的單個晶片兩個邏輯BANK,但是到了64Mbit基本就都是4個邏輯BANK設計了,今後隨著生產工藝水平的提高估計單個晶片8個甚至16個邏輯BANK的出現也不是沒有可能.

  二.記憶體條的物理BANK

通常主機板上的每個記憶體插槽分為兩段,這個大家從VIA主機板BIOS設定中的BANK 0/1 DRAM Timing選項很容易推理得到,實際上也就是兩個BANK,不過這裡的BANK概念與我們前面分析晶片內部結構時提到的BANK可不一樣。簡單地說這個BANK就是記憶體和主機板上的北橋晶片之間用來交換資料的通道,目前以SDRAM系統為例,CPU與記憶體之間(就是CPU到DIMM槽)的介面位寬是64bit,也就意味著CPU一次會向記憶體傳送或從記憶體讀取64bit的資料,那麼這一個64bit的資料集合就是一個記憶體條BANK,很多廠家的產品說明裡稱之為物理BANK(Physical BANK),目前絕大多數的晶片組都只能支援一根記憶體包含兩個物理BANK,但是針對某個具體的條子,很多人想當然,認為每個DIMM插槽使用記憶體條的面數來區分佔用幾個BANK通道,單面的.(16M,64M)只佔用一個物理BANK,而雙面的(32M,128M)則需佔用兩個物理BANK。實際上物理BANK與面數是無關的,PCB電路可以設計成雙面和單面,也可把全部晶片(16顆)放在一面上(至少從理論上是完全可能)。有些記憶體條單面就是一個物理BANK,但有些雙面才是一個物理BANK,所以不能一概而論。前一陣鬧得沸沸揚揚的大度256MB記憶體條就是一個典型的例子,雖然是雙面並多達16枚晶片,但仍然是單個物理BANK的。要準確知道記憶體條實際物理BANK數量,我們只要要將單個晶片的邏輯BANK數量和位寬以及記憶體條上晶片個數搞清楚。各個晶片位寬之和為64就是單物理BANK,如果是128就是雙物理BANK。目前的晶片組最多支援2個物理BANK。所以記憶體廠家生產的記憶體條都不可能超過2個物理BANK。

CPU一次只能對一個物理BANK進行訪問和操作(因為一個物理BANK是64bit的位寬),那麼記憶體條要保證一個週期內向資料匯流排提供或接收64bit的資料,而這些資料都是分別儲存在記憶體條的的晶片中。那麼記憶體條中有多個記憶體晶片,這64位資料到底是有一個晶片提供還是由所有晶片每個提供一部分呢?我們還是以上面的那顆256Mbit的晶片為例,根據晶片組的工作原理,目前還沒有那家晶片生產廠家做出位寬16位以上的晶片,所以現在的晶片組設計時都是要求記憶體條上每個晶片均承擔提供資料的任務,也就是說記憶體條上的每個晶片都要要對這64位資料做貢獻,而那顆記憶體晶片的位寬是8位,因此用這個晶片組成記憶體條只需要8顆晶片即完成了64位資料併發任務,算下來,記憶體條的容量就是32 MB (256Mbit)×8=256MB的容量,假如是記憶體晶片的位寬是4位,那麼需要的晶片數量必須是16顆,這時假如使用八顆位寬還是8位的64MB(512bit)晶片(單個晶片的總容量翻了一番)組裝,儘管記憶體條上的總容量達到了256MB的要求,還是由於位寬不夠是不能正常工作。要能工作就必須採用16位位寬的64MB(512bit)晶片。

586以上電腦的資料匯流排寬度都是64bit,即每次讀取記憶體為64bit,SDRAM記憶體條的設計頻寬也是64bit,記憶體條的頻寬為條上各個記憶體晶片的頻寬之和,基本條件為頻寬之和應等於64bit或其倍數。假如出現了各個晶片位寬之和等於128。則分成兩個64位,當讀取一個64位部分時,另一個64位部分就不能讀取,通常很多廠家就分別將這兩部分放在記憶體的兩面上。這就造成了許多人的錯覺:雙面是兩個BANK的,單面是一個BANK的。實際根本不能這樣認識,比如大度256MB記憶體,儘管兩面16個晶片,但是由於記憶體晶片的位寬是4位(32Mbit×4),所以必須要有4×16=64才能達到系統所要求的位寬。這時由於晶片大小的限制,不可能將16顆晶片都放在一面上,所以只能設計成雙面。對於64Mbit晶片 (4M*16) 來說,晶片頻寬16bit,8顆晶片頻寬=16*8=128bit(即兩個BANK),4顆晶片頻寬=16*4=64bit(即一個BANK)。兩個物理BANK的情況只有出現在位寬超出了64位的情況下(即位寬出現了富餘),由於晶片組任一時刻只能處理一個64位,所以才分成兩個物理BANK。今後隨著新一代資料匯流排位寬的提高,也許CPU的胃口就不是一次只能64位資料了,可能是128位甚至更多。

另外我們常說的記憶體交錯設定並不是指的物理BANK的交錯。也就是說不是記憶體條雙面的交錯,而是指記憶體晶片內部邏輯BANK的交錯,如果晶片有4個BANK,那麼就可以進行4路交錯,如果只有兩個BANK就只能是二路交錯。很多資料介紹的以記憶體條的單面或雙面來決定交錯是錯誤的,實際上就是混淆了物理BANK和邏輯BANK的區別。

  三.有關記憶體BANK的幾個常見問題釋疑

我們透徹地瞭解了上面介紹的物理BANK和邏輯BANK的概念之後,就不難對目前有關動態記憶體的幾個熱點問題做出解釋了。

1.大容量記憶體不能為某些主機板正確識別原因

系統在啟動時,主機板的北橋晶片會偵測這些記憶體條的引數,如果果發現位寬不支援,則終止檢測,系統就掛了。因為位寬決定了一次CPU一次向記憶體晶片傳遞的資料量,只能一次64位資料併發。接下來檢測BANK的單元格總數,如果這個單元格的數量超出了晶片組所支援的上限,那麼就按晶片組所能支援的最大限度進行操作,在確定了資料深度/位寬之後再結合邏輯BANK數量,計算出晶片的實際可用總容量。換句話說邏輯BANK中的一些行與列可能就用不上了,假如晶片組對邏輯BANK數量不支援,那麼多出來的邏輯BANK也將不起作用,後者的情況比較少見,現在的晶片組基本全是支援4BANK的。VIA的KT133晶片組甚至明確表示支援8BANK。

我們說記憶體識別出現問題,主要就是卡在晶片的這三個引數上,其中又以晶片的資料深度限制最為常見。事實上現在很多大容量記憶體不能為一些舊型號主機板支援的主要原因就是晶片組對記憶體晶片的邏輯BANK資料深度有一定限制。我們知道晶片的容量主要由三個引數決定,也就是根據第一部分介紹的公式,首先是邏輯BANK的單元格數(資料深度),其次是邏輯BANK的位數。最後是邏輯BANK的個數。三者相乘得到晶片的容量,大家看到大度記憶體256MB為什麼不能在440BX上用,就是由於BX晶片組只支援記憶體晶片的資料深度為4M,而不是8M,所以大度條子的記憶體晶片在BX板上被識別成4×4×4=64Mbit(8MB),而不是本來的8×4×4=128Mbit(16MB),現在很多大容量的記憶體沒有在BANK數和位寬上提高多少,基本都是增加晶片的資料深度,而這是需要晶片組支援的,象INTEL的LX/BX/810/815等都只能支援最大4M(INTEL想讓大家去選擇P4+850+RDRAM的組合啊!司馬昭之心,路人皆知!),而目前VIA系列的幾款晶片組支援晶片任意位寬(儘管目前大部分記憶體晶片的位寬最高只有16位),單個邏輯BANK的容量(資料深度)最多支援32M的容量。從這點上大家也不難看出為什麼現在VIA晶片組的主機板這麼火了。

  2.記憶體條購買標準的修正

大家都知道這麼一個購買常識:購買記憶體時儘量選用單面記憶體。但是這個經驗是來自這樣一個背景:許多不正規的小廠使用低容量晶片(比如已經過時16Mbit)來製造目前使用的高容量記憶體條,由於單個晶片容量小,為了達到較大的記憶體條容量,必然要增加晶片數目,而且這些過時的晶片很可能是一些翻新貨,並且晶片之間電氣引數的一致性也很差。不過根據分析更準確地講購買原則應該:是選擇單物理BANK的記憶體。以前由於大多數單面記憶體都是單BANK記憶體,所以大家一直就是這個說法,實際上通過前面的分析我們知道記憶體條的面數與物理BANK數是無關的。單個物理BANK,記憶體只要取一組64位資料,而不需要再切換到另外一個BANK讀去另外一組64位資料,切換的時間省去了,效能必然有提高。目前由於一個DIMM插槽最多支援兩個物理BANK,BIOS設定中是對同一個記憶體插槽的兩個BANK同時進行速度調節的,比如BANK 0/1 DRAM Timing;BANK 2/3 DRAM Timing;BANK 4/5 DRAM Timing選項。,所以我們在選擇記憶體的時候應該根據記憶體條上晶片的編碼,確定記憶體條是單BANK還是雙BANK,排除下面講到的DIMM插槽訊號走線的影響,一根雙BANK的記憶體條與兩根單BANK的記憶體條在效能上是沒有多少差別的。能用一個插槽不要使用兩個插槽的說法是沒有依據的。總體上講3個DIMM插槽在總容量滿足要求的情況下,使用BANK的數目愈少愈好。千萬不要出現使用大量低容量晶片組裝的條子佔用3個DIMM全部6個BANK的情況。

  插槽超頻效能不一致與記憶體BANK無關

前面我們說了儘量減少DIMM插槽的使用,但是有時從保護已有投資考慮,以前購買的低容量記憶體又不好丟棄,所以有時可能還會出現同時使用三個DIMM插槽的情況,但需要注意的是這時不一定同時使用全部6個BANK,很可能只使用了3個BANK。很多人發現這三個DIMM插槽所允許的最大速度是不同的(VIA主機板BIOS允許分別對每個DIMM插槽進行速度調節),一般DIMM2最高,DIMM1其次,DIMM3最差。這與記憶體條的BANK有無關係呢?根據前面分析,筆者認為無關,這主要與記憶體BANK控制訊號在主機板上的走線有關,很多有4個DIMM插槽的BX主機板,由於BX主機板最大隻能支援6個BANK,所以DIMM3與DIMM4的訊號走線是共享的,因此導致DIMM2與DIMM3走線設計不一致而導致兩者的超頻效能相差極大。這也是一些記憶體甚至無法用在DIMM3和DIMM4插槽上的主要原因。那麼DIMM1為什麼超頻效能還可以呢?主要是主機板BIOS或北橋晶片檢測記憶體時是按照BANK編號的順序進行的,他們要求第一條記憶體必須插在DIMM1上,所以設計時對其進行了一些電路上的優化。所有一切與記憶體的物理和邏輯BANK的結構和工作機理無關。