ddr3中bank, 16bit和32bit等概念
最近在看記憶體相關的東東。
以前認為記憶體就是塊資源,需要的時候,malloc出來一部分使用即可。對內部的東東沒有深入了解過。
剛開始看起來,感覺有點丈二和尚。
通過各種查詢,並請教牛人,對基本概念有了個初步了解,先總結一把。
先說說bank。
看到bank首先想到了銀行,然後是利率,然後是房貸...
扯遠了,這兒的bank是儲存庫的意思。
也就是說,一塊記憶體內部劃分出了多個儲存庫,訪問的時候指定儲存庫編號,就可以訪問指定的儲存庫。
具體記憶體中劃分了多少個bank,要看位址線中有幾位ba位址,如果有兩位,說明有4個bank,如果有3位,說明有8個bank.
ddr3的位址中有三個ba,即三個bank address,ba0, ba1, ba2。所以ddr3單塊記憶體中都是8個bank.
儲存庫裡面的記憶體是怎麼組織的呢?
儲存庫裡面類似於乙個矩陣。
有很多點,沒乙個點就是乙個cell,也就是乙個儲存點,有乙個電容和乙個電晶體組成,通過上電與否,來表示1或0.
每乙個cell由乙個行號和乙個列號來唯一標識。
也可以這麼理解,bank中分成了很多行(row),每一行又有很多列。
這樣的話,給定bank編號,可以找到bank,給定row編號,可以找到所在行,給定 column 編號,可以找到所在列,也就找到了要訪問的cell。
乙個bank中有多少行,多少列呢?
這要看行和列分別有多少位來表示。
假如表示行的有a0~a14,那麼單個bank中行的總量為2^15。
列類似,如果表示列的有a0~a9,單個bank中列總量為2^10.
下面來看看16bit/32bit記憶體的概念。
這兒所說的16bit/32bit,指的是記憶體中以多長為單位進行儲存。
16bit,即是說記憶體中是以16bit為單位訪問記憶體的,也就是說,你給記憶體乙個位址,記憶體會給你乙個16bit的資料到資料線。
32bit的與此類似。
下面來看乙個具體例子。
該例子中,用兩個16bit的ddr3記憶體拼成了乙個32bit的ddr3.
每塊16bit ddr3的大小為512m bytes.
看看硬體上連線,我們這兒只關心位址線和資料線,cs, ck, cke, cas, ras等暫時不考慮。
第一片16bit ddr3的ba0, ba1, ba2連線到了cpu的ba0, ba1, ba2。
第二片16bit ddr3的ba0, ba1, ba2也連線到了cpu的ba0, ba1, ba2。
第一片16bit ddr3的a0~a14連線到了cpu的a0~a14。
第二片16bit ddr3的a0~a14連線到了cpu的a0~a14。
第一片16bit ddr3的d0~d15連線到了cpu的d0~d15。
第二片16bit ddr3的d0~d15連線到了cpu的d16~d31。
分析下該例項。
bank address有三個bit,所以單個16bit ddr3內部有8個bank.
表示行的有a0~a14,共15個bit,說明乙個bank中有2^15個行。
表示列的有a0~a9,共10個bit,說明乙個bank中有2^10個行。
來看看單塊16bit ddr3容量:
2^3*2^15*2^10=2^28=256m
我們的記憶體是512m,到這兒怎麼變成256m了?被騙了?
呵呵,當然沒有。
忘了我們前面一直提到的16bit。
16bit是2個byte對吧。
訪問乙個位址,記憶體認為是訪問16bit的資料,也就是兩個位元組的資料。
256m個位址,也就是對應512m的資料了。
真相大白。賣記憶體的沒騙俺。
再來看看兩個16bit是如何組成乙個32bit的。
有乙個概念一定要清楚,這兒所說的兩個16bit組成乙個32bit,指的是資料,與位址沒有關係。
我開始這一塊沒搞清楚,一直認為是兩個16bit的位址組成了乙個32bit的位址。然後高位位址,地位位址,七七八八。。。
之後沒一點頭緒。
將16bit/32bit指的是資料寬度之後,就非常明了了。
每一塊16bit ddr3中有8個bank,2^15個row,2^10個column。也就是有256m個位址。
看前面的連線可知,兩塊16bit ddr3的ba0~ba2和a0~a14其實是並行連線到cpu。
也就是說,cpu其實認為只有一塊記憶體,訪問的時候按照ba0~ba2和a0~a14給出位址。
兩塊16bit ddr3都收到了該位址。
它們是怎麼響應的呢?
兩塊記憶體都是16bit,它們收到位址之後,給出的反應是要麼將給定位址上2個位元組送到資料線上,要麼是將資料線上的兩個位元組寫入到指定的位址。
再看資料線的連線,第一片的d0~d15連線到了cpu的d0~d15,第二片的d0~d15連線到了cpu的d16~d31。
cpu認為自己訪問的是一塊32bit的記憶體,所以cpu每給出乙個位址,將訪問4個位元組的資料,讀取/寫入。
這4位元組資料對應到cpu的d0~d31,又分別被連線到兩片記憶體的d0~d15,這樣乙個32bit就被拆成了兩個16bit.
反過來,也就是兩個16bit組成了乙個32bit.
cpu訪問的記憶體位址有256m個,每訪問乙個位址,將訪問4個位元組,這樣cpu能訪問的記憶體即為1g.
DDR3中bank, 16bit和32bit等概念
ddr3中bank,16bit和32bit等概念 最近在看記憶體相關的東東。以前認為記憶體就是塊資源,需要的時候,malloc出來一部分使用即可。對內部的東東沒有深入了解過。剛開始看起來,感覺有點丈二和尚。通過各種查詢,並請教牛人,對基本概念有了個初步了解,先總結一把。先說說bank。看到bank首...
DDR 2 和DDR3的區別
1 ddr3由於新增了一些功能,所以在引腳方面會有所增加,8bit 晶元採用78球fbga 封裝,16bit 晶元採用96球fbga 封裝,而ddr2則有60 68 84球fbga 封裝三種規格。並且ddr3必須是綠色封裝,不能含有任何有害物質。2 ddr的頻寬的計算方式 頻寬 記憶體核心頻率 記憶...
DDR3和DDR4的區別
1 規格不同 ddr3記憶體的起始頻率僅有800mhz,最高頻率可達2133mhz。而ddr4記憶體的起始頻率就有2133mhz,最高頻率可達3000mhz。更高頻率的ddr4內存在各個方面的表現和ddr3記憶體相比有著顯著的提公升,ddr4記憶體的每個針腳都可以提供2gbps的頻寬,那麼ddr4 ...