主板上這家伙,要當(dāng)CPU和內(nèi)存的中間商!
我是內(nèi)存條
我是一個(gè)內(nèi)存條,剛剛從深圳的一個(gè)工廠(chǎng)里被生產(chǎn)出來(lái),跟我一起的還有一批小伙伴,長(zhǎng)得跟我一模一樣,下了流水線(xiàn)后我們就被扔進(jìn)了一處黑暗的角落。
“這是哪里啊,黑漆漆的”,一個(gè)小伙伴說(shuō)到。
“這里是內(nèi)存條倉(cāng)庫(kù)”,黑暗中有人在說(shuō)話(huà),聲音中略有一絲滄桑,像是一個(gè)老頭。
“誰(shuí)?誰(shuí)在那里”
“別怕,我也是一個(gè)內(nèi)存條,比你們?cè)鐜讉€(gè)月被生產(chǎn)出來(lái)”,那老頭說(shuō)到。
“啥,你都被關(guān)在這里幾個(gè)月了,完了完了”,小伙伴急了。
“不是的,我出去過(guò),后來(lái)被發(fā)現(xiàn)是殘次品,又被回收了關(guān)在了這里,你們跟我不一樣,剛剛生產(chǎn)出來(lái),應(yīng)該很快就能出去,被安裝到電腦主板上,實(shí)現(xiàn)你們的價(jià)值。”
“電腦主板?那是什么地方?”,我好奇的問(wèn)到。
那聲音繼續(xù)說(shuō)到:“那是計(jì)算機(jī)最核心的地方,是一個(gè)巨大的電路板,上面住著CPU、硬盤(pán)、網(wǎng)卡、顯卡、聲卡,當(dāng)然,還有我們內(nèi)存條。計(jì)算機(jī)必須有我們才能正常運(yùn)轉(zhuǎn),因?yàn)镃PU工作需要的指令和數(shù)據(jù)都存儲(chǔ)在咱們內(nèi)存中”
剛說(shuō)完,我們身邊亮起了燈光,這時(shí),我們才看清我和小伙伴們的樣子。
“我們身上那幾塊黑乎乎的東西是什么,真是有點(diǎn)拉低顏值啊!”
“你可別小瞧了它們,那可是咱們內(nèi)存條的核心存儲(chǔ)芯片,我們的數(shù)據(jù)都是放在這里面的,它們一個(gè)就是1GB,總共16個(gè),就是16GB的空間呢!”,那老頭又開(kāi)口說(shuō)到。
奇怪的是,我們還是看不到他。
“你在哪里,怎么亮了燈還是看不到你呢?”,一個(gè)小伙伴問(wèn)到。
“我在隔壁的柜子里,像我這種殘次品估計(jì)是沒(méi)機(jī)會(huì)出去了”
“你剛才說(shuō)16個(gè)存儲(chǔ)芯片,這不是明明只有8個(gè)嗎?”
“你轉(zhuǎn)過(guò)身去看看,背上還有8個(gè)呢”
我們幾個(gè)紛紛轉(zhuǎn)身看去,果然如此。
老頭繼續(xù)說(shuō)到:“除了存儲(chǔ)芯片,還有PCB電路板和金手指,這三部分共同構(gòu)成了我們的身體。”
“金手指是什么東西?”
“就是腳下那一排土豪金顏色的部分了,那是我們連接主板插槽的接觸點(diǎn),一面有120個(gè),兩面就是240個(gè),因?yàn)槊總€(gè)點(diǎn)看起來(lái)像手指,人們就把這叫做金手指了”。
“那為什么中間留了一個(gè)缺口呢?”
“我們的每個(gè)金手指都有不同的功能,正反面可不能弄混,為了防止愚蠢的人類(lèi)把我們插錯(cuò),所以中間留了一個(gè)缺口,要是弄反了可是插不進(jìn)去的。通過(guò)主板上的電路,我們就能接通到計(jì)算機(jī)的總線(xiàn)系統(tǒng)上,可以和CPU對(duì)話(huà)了。”
原來(lái)如此,我們都若有所思的點(diǎn)點(diǎn)頭。
數(shù)據(jù)存儲(chǔ)
接下來(lái),這位老頭還講了很多我們內(nèi)存條先輩的故事。
原來(lái),我們還有一個(gè)更專(zhuān)業(yè)的名字:RAM,隨機(jī)存儲(chǔ)器,因?yàn)槲覀兛梢噪S意讀寫(xiě)任意位置的數(shù)據(jù)。
老頭還說(shuō),現(xiàn)在計(jì)算機(jī)基本上都是二進(jìn)制的,不管什么樣的數(shù)據(jù)或者代碼指令,在我們這里都是一串串的0和1的比特位。
為了存儲(chǔ)這一個(gè)比特位,我們的先輩們可是費(fèi)了不少功夫!
曾經(jīng)有兩種電路方案擺在先輩們的面前,第一種是靜態(tài)方案:
是不是很復(fù)雜?我也覺(jué)得。這種電路方案的好處是可以穩(wěn)定的維持在0和1之間的某個(gè)狀態(tài),所以叫靜態(tài)SRAM。
但是需要用到的晶體管實(shí)在太多了,一個(gè)比特位就要用好幾個(gè)晶體管,16GB那得用多少才夠啊,成本太高了,造出來(lái)我們的個(gè)頭肯定會(huì)特別大,主板上空間這么局促,哪里裝得下啊。
先輩們沒(méi)有選擇這種方案,用了第二種方案:
看,是不是簡(jiǎn)單了許多?通過(guò)一個(gè)電容器的電荷就能決定這是一個(gè)1還是一個(gè)0。
在我們身上的每一個(gè)存儲(chǔ)芯片里,這樣的比特位存儲(chǔ)單元都有很多:
再縮小一下看,它們密密麻麻的排列著,每一個(gè)位都由行地址和列地址來(lái)確定的:
圖源知乎@老狼
但這種電路方案有個(gè)毛病,就是里面的那個(gè)電容會(huì)“漏電”,電容中的電荷會(huì)慢慢消失,電壓也就變小了,這樣就沒(méi)辦法區(qū)分這是表示的1還是0了,為了解決這個(gè)問(wèn)題,必須得周期性的去給它們充電,才能維持?jǐn)?shù)據(jù)的穩(wěn)定,這叫動(dòng)態(tài)數(shù)據(jù)刷新,所以這種方案叫動(dòng)態(tài)DRAM。
內(nèi)存編址
老頭正給我們講的興起,突然有人把我們打包起來(lái),所有的小伙伴都被分開(kāi)了。
又經(jīng)過(guò)了好長(zhǎng)一段日子的黑暗和孤獨(dú),那一天突然咔嚓一聲,我的金手指和卡槽連接了起來(lái),難道這就是傳說(shuō)中的主板嗎?
“你就是內(nèi)存啊,我們可等你好久了,你來(lái)了我們總算可以開(kāi)始工作了!”,旁邊一個(gè)家伙跟我打起了招呼。
“你哪位啊?”
“你好,我是CPU里的阿Q,你看就在你隔壁,咱們以后少不了要天天打交道了。對(duì)了,快告訴我,你有多大存儲(chǔ)空間?”
我檢查了一下,回答道:“我有16GB空間,也就是137438953472個(gè)比特位!”
“哇,這么多!太給力了!不過(guò)我該怎么使用你來(lái)存儲(chǔ)數(shù)據(jù)呢?”
“這簡(jiǎn)單,你要訪(fǎng)問(wèn)哪個(gè)bit位,告訴我芯片號(hào)、bank號(hào)、行地址、列地址,我把數(shù)據(jù)取給你不就行了嗎!”
“怎么這么麻煩?你這不講武德啊,這些內(nèi)部細(xì)節(jié)應(yīng)該封裝一下啊,提供給我一個(gè)簡(jiǎn)單接口就是了”,阿Q吐槽道。
“兩位大哥,看這里”,這時(shí),主板上不遠(yuǎn)處又有一個(gè)家伙開(kāi)口了。
“你是誰(shuí)?”我和阿Q異口同聲的問(wèn)到。
這家伙瞇著眼說(shuō)到:“我是內(nèi)存控制器,專(zhuān)門(mén)為二位服務(wù)的。”
“啥,你要控制我?”
“您別誤會(huì),我就是一個(gè)中介,為兩位提供服務(wù)而已”
見(jiàn)我倆一頭霧水,這家伙接著說(shuō)到:“內(nèi)存老哥,你的存儲(chǔ)數(shù)據(jù)電路單元中的電容是不是經(jīng)常漏電,需要定時(shí)刷新?而且按照規(guī)定,最多64ms就得要刷新一次?你放心,這數(shù)據(jù)刷新的工作以后就交給我了”
“你怎么知道的?”
這家伙笑了笑繼續(xù)說(shuō)道:“這算啥,我還知道你的數(shù)據(jù)存儲(chǔ)在你身上的每一個(gè)存儲(chǔ)芯片之上,每一個(gè)芯片里面又分了很多個(gè)分片,每個(gè)分片里面又有很多的比特位存儲(chǔ)格子。想要訪(fǎng)問(wèn)哪個(gè)比特位,就得指定對(duì)應(yīng)的芯片、對(duì)應(yīng)的分片、對(duì)應(yīng)格子的行地址和列地址,我說(shuō)的對(duì)不對(duì)?”
圖源網(wǎng)絡(luò)
我點(diǎn)了點(diǎn)頭,沒(méi)想到這家伙居然對(duì)我了解的這么清楚。
“阿Q啊,你們CPU這邊想要訪(fǎng)問(wèn)數(shù)據(jù),肯定不想這么麻煩吧?”,這家伙笑著問(wèn)到。
“那當(dāng)然!”
“所以啊,我就派上用場(chǎng)了啊,用比特位作為讀寫(xiě)單元太麻煩了,咱們按8個(gè)比特位為一組,叫做一個(gè)字節(jié),你們CPU這邊統(tǒng)一給內(nèi)存兄弟的存儲(chǔ)空間編址,以后要讀取數(shù)據(jù)的時(shí)候呢,就把地址交給我,我再告訴內(nèi)存兄弟具體是讀寫(xiě)哪個(gè)芯片哪個(gè)分片的哪些位置,怎么樣,是不是為你們解決了大麻煩?”,說(shuō)完,內(nèi)存控制器露出了得意的笑容。
“聽(tīng)上去不錯(cuò)啊,咱們開(kāi)始吧!”
“現(xiàn)在還不行,還沒(méi)通電呢!”
不過(guò)我們沒(méi)等太久,就聽(tīng)見(jiàn)一陣嘶嘶聲響,來(lái)電了!
隨后我們就開(kāi)始配合工作起來(lái),初次見(jiàn)面,合作的就非常順利,CPU對(duì)我所有的存儲(chǔ)位按照字節(jié)為單位進(jìn)行了統(tǒng)一編址,以后只需要一個(gè)地址,內(nèi)存控制器就轉(zhuǎn)換成具體的數(shù)據(jù)存儲(chǔ)位置交給我,我再完成讀寫(xiě)操作就可以了。
后來(lái),看到內(nèi)存控制器表現(xiàn)非常不錯(cuò),在阿Q的牽線(xiàn)下,還把他集成到了CPU內(nèi)部,現(xiàn)在成為了他們的一份子了!
我和CPU一直相處的不錯(cuò),可沒(méi)過(guò)多久,他們居然開(kāi)始嫌我慢了,要說(shuō)慢,硬盤(pán)那家伙可比我慢多了!
他們發(fā)現(xiàn)拿我沒(méi)有辦法,于是在CPU內(nèi)部又搞了個(gè)緩存出來(lái),不用每次都問(wèn)我要數(shù)據(jù),倒是給我省了不少工作量。
我的日子就這樣過(guò)著,本以為就要在這主板上干到退休了,沒(méi)想到那一天,一個(gè)瀏覽器程序告訴我說(shuō):“內(nèi)存大哥你完了,剛剛我看到主人在網(wǎng)上買(mǎi)新的DDR4內(nèi)存條,你要被淘汰了”
難道我也要被打入小黑屋了嗎?
本文轉(zhuǎn)載自微信公眾號(hào)「編程技術(shù)宇宙」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系編程技術(shù)宇宙公眾號(hào)。