我覺得在馮諾依曼體系結(jié)構(gòu)里,CPU和內(nèi)存是最重要的設(shè)備。如果沒有CPU和內(nèi)存,服務(wù)器將完全無法運(yùn)行。 所以繼第一階段分享完了CPU篇之后,今天就開始內(nèi)存篇。我們以一個(gè)最簡單的問題開篇,為什么內(nèi)存地址0x0001和內(nèi)存地址0x0002之間差的是一個(gè)byte,而不是一個(gè)bit?
我想你對(duì)內(nèi)存存儲(chǔ)的計(jì)算已經(jīng)熟練于心,a變量占用內(nèi)存多少字節(jié),b變量占用內(nèi)存多少字節(jié)。但是你有沒有深入思考過,為什么我們用的存儲(chǔ)單位都是字節(jié),而不是比特?可能你會(huì)說因?yàn)锳SCII碼的基本編碼單位就是字節(jié)呀,你還有可能舉出很多個(gè)原因來說明內(nèi)存應(yīng)該以字節(jié)進(jìn)行計(jì)算的原因。但那為啥網(wǎng)絡(luò)帶寬都是以bit,而不也用byte來計(jì)算的呢?
我們平時(shí)好像太過于習(xí)以為常,而沒有去深想過具體的原因。我今天呢,是想從一個(gè)特定的角度去看待這個(gè)問題,那就是從內(nèi)存的硬件物理結(jié)構(gòu)。我們來了解一下內(nèi)存的物理構(gòu)造,一般內(nèi)存的外形圖片如圖1:

圖1 內(nèi)存外形
如圖1所示,一個(gè)內(nèi)存是由若干個(gè)黑色的內(nèi)存顆粒構(gòu)成的。每一個(gè)內(nèi)存顆粒叫做一個(gè)chip,所有的數(shù)據(jù)都是存在這些chip里的。上面這個(gè)內(nèi)存條有8個(gè)chip(正反面各四個(gè))。chip內(nèi)部構(gòu)造如圖2:

圖2 chip內(nèi)部結(jié)構(gòu)
每一個(gè)chip內(nèi)部,又是由8個(gè)bank組成的。在每個(gè)bank內(nèi)部,就是電容的行列二維矩陣結(jié)構(gòu)了,如圖3。

圖3 bank內(nèi)部構(gòu)造
這個(gè)矩陣由多個(gè)方塊狀的元素構(gòu)成,這個(gè)方塊元素是內(nèi)存管理的最小單位。要注意的是每一個(gè)元素有8個(gè)小電容,存儲(chǔ)8個(gè)bit,也就是一個(gè)字節(jié)。換句話說,因?yàn)樵趦?nèi)存物理結(jié)構(gòu)中最小管理單位是元素,一個(gè)元素就是8bit。所以操作系統(tǒng)在管理它的時(shí)候,自然最小單位也就是字節(jié)了。