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