我是一個內存條,剛剛從深圳的一個工廠裏被生產出來,跟我一塊兒的還有一批小夥伴,長得跟我如出一轍,下了流水線後咱們就被扔進了一處黑暗的角落。編程
「這是哪裏啊,黑漆漆的」,一個小夥伴說到。瀏覽器
「這裏是內存條倉庫」,黑暗中有人在說話,聲音中略有一絲滄桑,像是一個老頭。緩存
「誰?誰在那裏」編程語言
「別怕,我也是一個內存條,比大家早幾個月被生產出來」,那老頭說到。編輯器
「啥,你都被關在這裏幾個月了,完了完了」,小夥伴急了。blog
「不是的,我出去過,後來被發現是殘次品,又被回收了關在了這裏,大家跟我不同,剛剛生產出來,應該很快就能出去,被安裝到電腦主板上,實現大家的價值。」接口
「電腦主板?那是什麼地方?」,我好奇的問到。內存
那聲音繼續說到:「那是計算機最核心的地方,是一個巨大的電路板,上面住着CPU、硬盤、網卡、顯卡、聲卡,固然,還有咱們內存條。計算機必須有咱們才能正常運轉,由於CPU工做須要的指令和數據都存儲在我們內存中」get
剛說完,咱們身邊亮起了燈光,這時,咱們纔看清我和小夥伴們的樣子。it
「咱們身上那幾塊黑乎乎的東西是什麼,真是有點拉低顏值啊!」
「你可別小瞧了它們,那但是我們內存條的核心存儲芯片,咱們的數據都是放在這裏面的,它們一個就是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內存條,你要被淘汰了」
難道我也要被打入小黑屋了嗎?