內(nèi)存條還有一個更專業(yè)的名字: RAM(隨機存取存儲器),因為它們可以在任何位置隨機讀寫數(shù)據(jù)。
現(xiàn)在的計算機基本上都是二進制的,所以無論什么數(shù)據(jù)或代碼指令,在我們這里都是一連串的0和1的比特。為了存儲這一個比特,在先驅(qū)者面前曾經(jīng)有兩種電路方案,第一種是靜態(tài)方案:即
這是不是有點復雜?我想是的。這種電路方案的優(yōu)點是在0和1之間保持穩(wěn)定的狀態(tài),因此被稱為靜態(tài)隨機存取存儲器(SRAM)。但它需要太多的晶體管,一個比特就需要幾個晶體管。16GB太多,而且成本太高。有第二個選擇:
這樣是不是簡單了許多?只通過一個電容器的電荷就能決定這是一個 1 還是一個 0,這樣就存儲了 1bit。
在每一個存儲芯片里,這樣的比特位存儲單元都有很多,例如一個 16G 的內(nèi)存條有 137438953472 bit,也就是有 137438953472 個這樣的電容。
但這種電路方案有個毛病,就是里面的那個電容會“漏電”,電容中的電荷會慢慢消失,電壓也就變小了,這樣就沒辦法區(qū)分這是表示的 1 還是 0 了。
為了解決這個問題,必須得周期性的去給它們充電,才能維持數(shù)據(jù)的穩(wěn)定,這叫動態(tài)數(shù)據(jù)刷新,所以這種方案叫 DRAM (Dynamic Random Access Memory)。
內(nèi)存控制器就像一個中介,位于 CPU 與 內(nèi)存條之間。
CPU 這邊想要訪問數(shù)據(jù),肯定不想這么麻煩,所以內(nèi)存控制器就派上用場了。
用 bit 作為讀寫單元太麻煩了,咱們按 8 bit 為一組,叫做一個字節(jié) byte,CPU 統(tǒng)一給內(nèi)存的存儲空間編址,以后要讀取數(shù)據(jù)的時候呢,就把地址交給內(nèi)存控制器,再告訴內(nèi)存具體是讀寫哪個芯片哪個分片的哪些位置。
以后只需要一個地址,內(nèi)存控制器就轉(zhuǎn)換成具體的數(shù)據(jù)存儲位置,去讀取內(nèi)存,再由內(nèi)存完成讀寫操作就可以了。
由于內(nèi)存控制器的重要性,現(xiàn)在,內(nèi)存控制器已經(jīng)集成到了 CPU 內(nèi)部,成為了 CPU 的一份子了。
隨著 CPU 的發(fā)展,CPU 的速度越來越快,開始嫌內(nèi)存慢了,要說慢,硬盤那可比內(nèi)存慢多了!于是在 CPU 內(nèi)部又搞了個緩存出來,不用每次都問內(nèi)存要數(shù)據(jù),而是把一些常用的數(shù)據(jù)存儲在 CPU 內(nèi)部的緩存中。
只不過 CPU 內(nèi)部的緩存不會太大,僅存放一些常用的數(shù)據(jù),大部分數(shù)據(jù)還是需要通過內(nèi)存進行讀取。