關(guān)于內(nèi)存Bank的探討 目前很多人對(duì)內(nèi)存Bank(電腦系統(tǒng)與內(nèi)存之間數(shù)據(jù)總線的基本工作單位)都有一種誤解,認(rèn)為單面內(nèi)存就是單Bank,雙面內(nèi)存就是雙Bank的。其實(shí)這種觀念是不對(duì)的,內(nèi)存的Bank(指物理Bank)數(shù)和內(nèi)存顆粒的面無關(guān),它們之間有什么聯(lián)系呢?
要講清這個(gè)問題,就要提到內(nèi)存的邏輯Bank,下面就給大家介紹一下物理Bank和邏輯Bank的概念。在介紹之前,我們先簡單看一下現(xiàn)在市場上的DRAM內(nèi)存產(chǎn)品.現(xiàn)在市場上的內(nèi)存主要有:SDRAM、DDR SDRAM及Rambus。其中Rambus內(nèi)存的控制器和前兩者不同,且內(nèi)部Bank和前兩者也不同,將在后面單獨(dú)介紹。先主要介紹SDRAM和DDR SDRAM的Bank問題,因?yàn)镾DRAM就內(nèi)核、Bank結(jié)構(gòu)而言,和DDR SDRAM沒有什么區(qū)別,這里作為一個(gè)整體來講。邏輯Bank及其結(jié)構(gòu)內(nèi)存芯片存儲(chǔ)數(shù)據(jù)的基本單位是bit(位),而進(jìn)行尋址的基本單位則是Byte(字節(jié)),一個(gè)Byte就等于8bit。大家知道,在平面坐標(biāo)系中,要確定一個(gè)點(diǎn)就要先找到它的橫坐標(biāo)和縱坐標(biāo)。而在內(nèi)存中數(shù)據(jù)的定位也很相似,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)就是一個(gè)大的數(shù)據(jù)陣列,為了便于理解,我們把它假想成一個(gè)大的表格,前面我們提到的平面坐標(biāo)系中的點(diǎn),在這里我們可以理解為經(jīng)過定位后的單元格,當(dāng)然在一個(gè)單元格中不是只有1bit的數(shù)據(jù),而是由多個(gè)bit組成一個(gè)組放在單元格內(nèi),這里一個(gè)單元格我們可以稱作一個(gè)組,這個(gè)單元格的位數(shù)也就是內(nèi)存邏輯Bank的位寬。在進(jìn)行數(shù)據(jù)讀取時(shí),先進(jìn)行行的選定,再進(jìn)行列的選定,最后再從這個(gè)單元格中讀取出所需要的數(shù)據(jù)。而這由許許多多的單元格組成的大表我們就可以理解成邏輯Bank,當(dāng)然因?yàn)橹圃旃に嚰皵?shù)據(jù)尋址的原因,不可能讓這個(gè)表格無限大,一般內(nèi)存芯片中都是將內(nèi)存容量分成幾個(gè)陣列來制造,即多邏輯Bank。隨著內(nèi)存芯片容量的不斷增加,邏輯Bank數(shù)量也在不斷增加,早期的16Mbit之類的芯片采用的還是兩個(gè)邏輯Bank的設(shè)計(jì),現(xiàn)階段常見內(nèi)存芯片的Bank一般為4個(gè)(不包括Rambus),這點(diǎn)大家可通過內(nèi)存條的編碼進(jìn)行識(shí)別。內(nèi)存芯片設(shè)計(jì)時(shí)在一個(gè)時(shí)鐘周期內(nèi)只允許對(duì)一個(gè)邏輯Bank進(jìn)行操作(實(shí)際上內(nèi)存芯片的位寬就是邏輯Bank的位寬),而不能對(duì)所有邏輯Bank同時(shí)操作。所以邏輯Bank的地址線是通用的,只要再有一個(gè)邏輯Bank編號(hào)加以區(qū)別就可以了。內(nèi)存芯片的位寬決定了一次能從它那里讀出多少數(shù)據(jù),并不是內(nèi)存芯片里所有單元的數(shù)據(jù)能夠一次全部讀出。為了加深大家對(duì)邏輯Bank的理解,我們來看看一個(gè)單芯片的邏輯Bank示意圖這里不用過于注意結(jié)構(gòu)細(xì)節(jié),只需要看看4個(gè)內(nèi)存陣列。從圖中可以很清楚地看到這個(gè)芯片是一個(gè)Bank數(shù)為4的芯片,其列和行分別為4096和2048,而邏輯位寬是4bit,將這三者相乘就是這個(gè)邏輯Bank的容量,這里是4096×2048×4 bit =32Mb。再乘以Bank的數(shù)量,則芯片的容量就可以算出來了,這里很顯然是4個(gè)Bank,那么芯片的容量就是128Mb了。用虛線框起來的就是一個(gè)完整的邏輯Bank?梢娨粋(gè)Bank由內(nèi)存陣列、傳感放大器、一個(gè)行解碼器、一個(gè)列解碼器組成。
物理Bank了解了邏輯Bank后,接下來我們簡單看看物理Bank,物理Bank的含義就是指內(nèi)存和主板北橋芯片之間傳遞數(shù)據(jù)的通道,自586以后的CPU數(shù)據(jù)總線均為64bit位寬,而CPU一次只能對(duì)一個(gè)物理Bank進(jìn)行訪問,所以一般情況下我們就把64bit作為一個(gè)物理Bank(Physical Bank),在前面我們已經(jīng)講過了邏輯Bank,所以在這里我給大家講一下如何自己算出物理Bank,大家就會(huì)非常好理解了。由于CPU一次只能打開一個(gè)物理Bank,在單芯片上也只能打開一個(gè)邏輯Bank,這樣我們就知道邏輯Bank的位寬也就是單芯片的位寬了,我們把芯片的數(shù)據(jù)寬度和芯片的數(shù)量相乘再除以64就得到了內(nèi)存條的物理Bank數(shù)了,即內(nèi)存的Bank數(shù)=數(shù)據(jù)寬度×芯片數(shù)量/64,F(xiàn)在大家初步明白了內(nèi)存的物理Bank和內(nèi)存的面數(shù)無關(guān)了吧?后面我還會(huì)舉例說明。在大概了解了SDRAM和DDR內(nèi)存的物理Bank及邏輯Bank之后。
下面我們來簡單了解一下Rambus的Bank情況。Rambus的Bank為了講解方便,下面以PC800 Rambus為例。Rambus不再采用SDRAM和DDR內(nèi)存的并聯(lián)技術(shù),而是采用了更先進(jìn)的串聯(lián)技術(shù)。就現(xiàn)階段而言,PC800 Rambus使用400MHz的16位總線,在一個(gè)時(shí)鐘周期內(nèi)可以在上升沿和下降沿同時(shí)傳輸數(shù)據(jù),實(shí)際操作頻率為400MHz×2=800MHz,理論帶寬為16bit×2×400MHz/8=1.6GB/s,再配合850主板芯片的雙通道模式,可以達(dá)到3.2GB/s的數(shù)據(jù)帶寬。這也是大家熟知的高帶寬,而它最重要的優(yōu)勢(shì)在于其邏輯Bank上,就現(xiàn)階段的主流 Rambus來說,其邏輯Bank數(shù)高達(dá)32個(gè),擁有更多的Bank數(shù)則意味著具有較少的Bank沖突,尋址流更加短暫隨意。另外還可以提高尋址命中率和降低潛伏周期。當(dāng)然,更多的Bank也使Rambus的制作模具制造更復(fù)雜,也就增加了成本。于是RAMBUS隨后又推出了4i 架構(gòu)的DRDRAM──在每個(gè)顆粒芯片上只有4個(gè)Bank。