使用未初始化的内存是什么意思_单根内存条的极限容量是多少?内存条上的2R X 8代表了什么意思?...
我們平時(shí)看到內(nèi)存條,有的上面單面有8個(gè)內(nèi)存顆粒:
1R X 8 DIMM有的則有16個(gè)內(nèi)存顆粒:
2R X 4 DIMM;多出來幾個(gè)顆粒是ECC校驗(yàn)用甚至還有單面32個(gè)顆粒的超高怪物:
4R X 4 DIMM前文中我們討論了服務(wù)器能夠支持的內(nèi)存最大容量:
老狼:服務(wù)器最大內(nèi)存是多少?制約因素有些什么呢??zhuanlan.zhihu.com我們得出了結(jié)論:最大內(nèi)存是由能夠插多少條內(nèi)存決定的,因?yàn)槊扛鶅?nèi)存條現(xiàn)在最大128GB,整體內(nèi)存容量就被限制了下來,這不是錢多錢少的問題。有讀者對每根內(nèi)存條的極限容量感興趣。是不是我們有錢,可以通過不停增加顆粒數(shù)目來堆出超高內(nèi)存容量的內(nèi)存條呢?答案當(dāng)然是否定的了。今天我們就一起來探討一下問什么。
首先我們假定不考慮內(nèi)存顆粒能不能做出這么大的容量,僅僅理論探討。限于篇幅,為了簡化討論范圍,我們給問題設(shè)置了一些限制:
1.僅討論大家DDR4,包括UDIMM DDR4和RDIMM DDR4。DDR3因?yàn)楸旧碇С值娜萘烤托《一疽驯惶蕴?#xff0c;我們就不必哀悼它了。DDR5目前還沒有上市,我們等它成熟后再來重新回顧它的理論極限。LRDIMM會(huì)有些許顧及,擔(dān)不是重點(diǎn)。
2.討論基于DDR內(nèi)存的標(biāo)準(zhǔn):JEDEC標(biāo)準(zhǔn)。
內(nèi)存條的容量和它的基本單位:內(nèi)存顆粒的組織方式息息相關(guān)。如果我們仔細(xì)看上面那三種內(nèi)存條和我的注解,你能不能發(fā)現(xiàn)一些規(guī)律呢?細(xì)心的同學(xué)也許發(fā)現(xiàn)了:越大的內(nèi)存容量,nR中的n就越大;與此相反,越大的內(nèi)存容量,X n中的n反而越小。這是為什么呢?我們需要從DRAM的原理講起。
DRAM原理
內(nèi)存DRAM的每個(gè)單元可以看作一個(gè)晶體管和一個(gè)電容的組合:
電容負(fù)責(zé)存儲(chǔ),充過電時(shí)是1,沒充過電是0,這就是內(nèi)存是如何存儲(chǔ)數(shù)據(jù)的。晶體管是個(gè)開關(guān),用于選中該電容。Word line被選中,晶體管導(dǎo)通,電容的就和bit line導(dǎo)通,可以讀出0和1。正是因?yàn)閮?nèi)存每個(gè)單元如此簡單,才能如此大規(guī)模組織起來,形成低價(jià)而密度很高的內(nèi)存顆粒。
這種方式設(shè)計(jì)簡單,但是在充放電時(shí)電壓和電荷管理有很多麻煩。所以引入了Sense Amplifier。單元就變成了這樣:
單元還是只有一個(gè)電容和一個(gè)晶體管。但Sense Amp就復(fù)雜了不少:
示意圖Sense Amp一般由6個(gè)以上的晶體管組成。比較昂貴,但是因?yàn)檎麄€(gè)bank只有一組Sense Amplifier,所以問題不大,而且好處不少。
好了,有了單個(gè)單元,我們來組成一個(gè)內(nèi)存組試試:
綠色箭頭是Sense Amp看起來簡單而優(yōu)美,一個(gè)word line,選中后所有16單元都被Sense Amp緩存,漂亮!慢著,似乎那里不對?是的,這樣效率太低,原來1個(gè)單元有1個(gè)晶體管和一個(gè)電容組成,現(xiàn)在平均變成了7個(gè)晶體管和1個(gè)電容,這和DRAM的低成本設(shè)計(jì)目標(biāo)是違背的,必須減少Sense Amp的個(gè)數(shù)。有沒有更好的解決辦法呢?
這樣好多了,還是16個(gè)存貯單元,但是僅僅用了4個(gè)sense amp,代價(jià)是word line從一個(gè)變成了4個(gè)。這是減低成本必須付出的代價(jià)。現(xiàn)在我們推廣成更大的形式:
bank里的每個(gè)row共享一個(gè)word line,行激活A(yù)CT后,該row上的word line高電平,row上的存儲(chǔ)內(nèi)容會(huì)被該bank的Sense Amplifier緩存。這個(gè)內(nèi)存單元有32個(gè)行地址(row address),32個(gè)列,5個(gè)列地址(column address)。地址線太多,有沒有辦法減低呢?如果一次列選中能夠送出多個(gè)內(nèi)容就好了:
X 4 內(nèi)存array,32 Bit位寬這樣同樣尋址這些單元,但列地址從5個(gè),減小成3個(gè)。太棒了!
我們知道,X86的cache line是64 Bytes(感謝 @照貓畫虎 @RLuo 發(fā)現(xiàn)原文中這個(gè)問題),它會(huì)一次向內(nèi)存控制器請求整個(gè)cache line。內(nèi)存控制器發(fā)現(xiàn)他們是連續(xù)的地址后,會(huì)用一次用burst方式讀取8個(gè)字長,每字長是64個(gè)bits。64個(gè)bits是內(nèi)存控制器讀取的最小單位。這非常重要,為了完成必要條件,我們必須繼續(xù)擴(kuò)展內(nèi)存單元:
X 4 內(nèi)存array,64Bit位寬我們數(shù)一下,共有16個(gè)column,4個(gè)column address。繼續(xù)擴(kuò)張成DDR4標(biāo)準(zhǔn)的4個(gè)bank就變成了:
X 4 內(nèi)存array,64Bit位寬,4個(gè)bank至于什么是bank,可以見我的這幾篇入門文章:
老狼:內(nèi)存系列一:快速讀懂內(nèi)存條標(biāo)簽?zhuanlan.zhihu.com老狼:內(nèi)存系列二:深入理解硬件原理?zhuanlan.zhihu.com這就是現(xiàn)代內(nèi)存組成的原理。
好了,我們可以回過頭來看看: nR X m是啥意思了。
1.R是Rank的縮寫,n是多少有個(gè)Rank。每個(gè)Rank有自己的片選信號(hào):CS。各個(gè)rank單獨(dú)工作,JEDEC標(biāo)準(zhǔn)DDR4可以取1,2,4個(gè)rank。
2.X m中的m就是前面講的每個(gè)列的位寬,X4就是每列輸出4個(gè)bit,X8就是每列輸出8個(gè)bit。JEDEC標(biāo)準(zhǔn)只有4,8,16,三個(gè)選項(xiàng)。
明顯的rank越多,用同種內(nèi)存顆粒,可以做出的內(nèi)存條容量就大。那么是不是內(nèi)存顆粒X m,m越大,內(nèi)存就大呢?恰恰相反,同樣容量的內(nèi)存顆粒,m越小,就可以用更多的內(nèi)存顆粒拼起來,組成大內(nèi)存。我們看個(gè)例子:
同樣4Gb(注意這里是小b)的內(nèi)存顆粒,為了組成64 Bit的位寬,我們可以用16個(gè)X 4顆粒,那么總?cè)萘渴?#xff1a;
4 Gb X (64/4)= 64 Gb = 8GB
而用X 16的顆粒呢?只能用4個(gè):
4 Gb X (64/16)= 16Gb = 2GB
那么單內(nèi)存顆粒是不是容量就可以無窮大呢?并不是。
內(nèi)存顆粒容量限制
內(nèi)存顆粒并不能無限變大,因?yàn)闆]有那么多地址線。盡管從DDR開始,JEDEC標(biāo)準(zhǔn)就不停的增加地址線,但到了DDR4,地址還是有限的,這也是DDR5必須盡早出來的原因之一。地址線的多少?zèng)Q定了可以尋址多大空間,也決定了單顆內(nèi)存容量的上限。
我們來看看DDR4對地址線的定義:
1.行地址:A0~A17共18根
2.列地址:A0~A9
3. Bank Addr:BA0,BA1兩個(gè)
4. Bank Group: BG0,BG1兩個(gè)
好了,我們可以來算算顆粒的容量了,如果我們用X4的顆粒
(2^18) X (2 ^10) X(2^2) X (2^2) X 4 = 16Gb
我們來算一下DIMM的容量:
16 Gb X 16個(gè) X 4個(gè)rank = 128GB
這就是單根內(nèi)存條的理論最大容量。
結(jié)論
單根UDIMM/RDIMM的容量最大128GB,這是JEDEC的標(biāo)準(zhǔn)所允許的最大容量。LRDIMM可以達(dá)到更大容量。它的原理我們今后再講。
另外我們看到,如果選用X16的顆粒,單顆顆粒可以容量更大,但是總?cè)萘渴苤荒苡?個(gè)顆粒的限制,還是不能超過64GB。而同樣容量的內(nèi)存顆粒,因?yàn)閱卧獢?shù)目相同,成本差別不大,為了組成更大內(nèi)存,內(nèi)存條廠商往往選擇x 4的來組成大容量內(nèi)存。這也就為什么超大容量內(nèi)存條總是X 4的原因。
其他內(nèi)存相關(guān)文章:
老狼:服務(wù)器最大內(nèi)存是多少?制約因素有些什么呢??zhuanlan.zhihu.com老狼:神秘消失的內(nèi)存去哪了??zhuanlan.zhihu.com老狼:內(nèi)存系列一:快速讀懂內(nèi)存條標(biāo)簽?zhuanlan.zhihu.com老狼:內(nèi)存系列二:深入理解硬件原理?zhuanlan.zhihu.com老狼:內(nèi)存系列三:內(nèi)存初始化淺析?zhuanlan.zhihu.com老狼:Win10任務(wù)管理器中的"專用GPU內(nèi)存"是怎么回事?“共享GPU內(nèi)存”又是什么??zhuanlan.zhihu.com老狼:為什么現(xiàn)在的電腦都這么吃內(nèi)存??zhuanlan.zhihu.com老狼:內(nèi)存條應(yīng)該怎么插?為什么要從遠(yuǎn)端插起?不遵循為啥還可以work?有啥副作用??zhuanlan.zhihu.com老狼:16個(gè)內(nèi)存小問題,一次全部回答!?zhuanlan.zhihu.com老狼:內(nèi)存的容錯(cuò)設(shè)計(jì)是怎樣的?內(nèi)存容量比你看到的更大!?zhuanlan.zhihu.com歡迎大家關(guān)注本專欄和用微信掃描下方二維碼加入微信公眾號(hào)"UEFIBlog",在那里有最新的文章。同時(shí)歡迎大家給本專欄和公眾號(hào)投稿!
用微信掃描二維碼加入U(xiǎn)EFIBlog公眾號(hào)總結(jié)
以上是生活随笔為你收集整理的使用未初始化的内存是什么意思_单根内存条的极限容量是多少?内存条上的2R X 8代表了什么意思?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络电视电视盒子如何看电视回放?
- 下一篇: python中的栈结构_python中有