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

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

圖2 chip內部結構
每一個chip內部,又是由8個bank組成的。在每個bank內部,就是電容的行列二維矩陣結構了,如圖3。

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