DDR3中bank, 16bit和32bit等概念

2021-08-21 18:19:41 字數 2640 閱讀 9393

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和d0~d14其實是並行連線到cpu。

也就是說,cpu其實認為只有一塊記憶體,訪問的時候按照ba0~ba2和d0~d14給出位址。

兩塊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 ...