計算機系統006 - 硬體元件之RAM

SniperPan發表於2017-07-06

計算機五大元件,已經介紹完了輸入輸出裝置。從前面幾篇中我們瞭解到,計算任務實際上就是控制單元控制執行單元根據輸入和儲存器中內容計算得到輸出結果,控制單元和執行單元比較複雜,運算時也需要使用到儲存器,所以本篇先展開儲存器相關知識。

1. RAM原理

如果你還能記得,第一篇電學知識中我們提到過S-R觸發器(Flip Flop,簡稱FF)。

總的來講,觸發器的工作狀態依賴於兩個開關S和R,閉合一個斷開另一個,總會得到兩個相反的輸出Q和Q',而如果兩個開關都斷開,那麼就保持住Q和Q’最後處於什麼狀態。完整觸發器真值表如下:

通過使用S-R觸發器或其類似實現版本,可以實現1個bit的儲存。而通過組合使用S-R觸發器,就可以達到多個bit的儲存,也就是RAM的由來,而其組成部分中的每個觸發器則被稱為儲存單元)。

記憶體單元的主要職責是儲存儲存在其中的資料直到下一次設定或重置操作的出現,現今廣泛使用的RAM主要有靜態RAM(Static RAM)和動態RAM(Dynamic RAM)兩種。

1.1 SRAM

SRAM直接使用6個電晶體記憶體單元的狀態來儲存1 bit資料,造價相比DRAM更貴,但同時帶來的好處是比DRAM擁有更快的存取速度和更低的能耗。通常用於CPU內部的Cache中。

1.2 DRAM

與SRAM的全電晶體記憶體單元不同的是,DRAM搭配一個電晶體和一個電容器來儲存1 bit資料。其中電容器負責儲存,電晶體負責控制存取操作。

同樣的,第一篇中捎帶提到電容器原理,從中我們知道電容器由於會對空氣放電的因素,內部電勢差會逐漸衰減。也就是說,儲存其中的1 bit值,如果放任不管,不知道哪次去讀取時,就會從1變成0了,這就無法實現儲存的功能。為了隨時都能夠爭取獲取其中儲存的值,就必須經常對電容就行充電,也稱重新整理

根據能量守恆定律,充電需要額外供電,因此DRAM功耗肯定是要比SRAM大的。同時,由於需要經常重新整理DRAM,存取速率也自然比不上SRAM。那還造DRAM幹嘛?因為DRAM電路簡單許多,可以擁有非常高的密度,單位體積的容量較高因此成本較低。總的來說就是因為便宜且速率可接受。這沒什麼不好,權衡利弊,夠用就行。

2. RAM在哪裡

前面講的都是原理,具體到計算機元件應用之前,先放一張CPU使用到的儲存器層級圖,稍後將依次展開。

從圖中我們可以看出,RAM屬於臨時儲存區,它和CPU之間至少還間隔著幾層Cache,RAM下方是永久性儲存區域。永久性儲存區域之前提到過如光碟、硬碟等,但這個Cache又是什麼?

2.1 Cache

前面提到過Cache使用的是高大上的SRAM,擁有速度快、功耗低的特點。快自然是件好事,我們也知道囊中羞澀,無法給CPU配上幾個GB的SRAM作為RAM使用,只能退而求其次,換上速度一般但容量客觀的DRAM。不過有句話說得好,好鋼用在刀刃上,假如說配個小容量如KB、MB級別的SRAM能夠提高系統效能,還是值得嘗試的。

隨著硬體的發展,CPU頻率早已達到GHz級別,而同期的DRAM還在以MHz作為單位,先不去追究為什麼DRAM無法提升至GHz級別,就說使用時,這種量級的頻率差異確實拖慢了整個計算機的效能。

之前略微提到,CPU工作時是有指令週期的,指令只是操作方法,要想操作有意義,畢竟還是要有操作物件才行的。操作物件來自哪裡?無論是輸入裝置也好,光碟、硬碟也罷,終究是要載入到RAM中,排好了地址,才能載入。如果因為從記憶體中載入拖慢了CPU的執行,那麼這麼肆意地浪費CPU資源就太過奢侈了,畢竟CPU也不便宜啊。

但辦法終歸還是有的,於是乎在CPU和DRAM之間,插入了小儲存的SRAM,畢竟CPU每個指令週期操作的物件也有限,無需特別大的空間。這樣一來,CPU對接SRAM,速率得到了大大提升。不過現在還沒完,快是快了,但我想更快,又不捨得花太多的錢,只好分配下預算,買一些頂級SRAM,再買一些稍慢一點的,再買一些慢的DRAM。反正CPU不和低一級的SRAM直接對接,也不會影響太大。

於是就有了多個Level的Cache,費勁心機,無非就是想在預算有限的條件下達到更快

2.2 記憶體(RAM)

記憶體也稱為主存,使用的是DRAM記憶體單元。由於前面介紹了SRAM和DRAM的主要區別等相關知識,這裡就不再贅述。只要有一個概念,就是到RAM為止,都是掉電就丟失資料的。也就是說,RAM只在計算機執行過程中儲存資料,執行完畢斷電後,不負責儲存任何資訊

然而為了實現計算機自動化執行任務,就必須先將任務儲存在計算機內部而不是每次都需要輸入裝置輸入,因此對於永久性儲存裝置的需求十分強烈。

2.3 永久性儲存器

如前面CPU儲存器層級圖所示,永久性儲存器主要分為如下幾種。

2.3.1 ROM

首先講ROM,ROM全稱Read Only Memory,顯而易見是一種只讀儲存器,其內容在出廠前就已經固化進去,後續只能讀取而不能再次寫入。雖然後面出現別的可擦寫ROM如(EPROM),但終歸寫入的條件如紫外線要求較高。

ROM儲存在一個非易失性晶片上,即使掉電後其中內容依舊可以儲存。比較廣泛的使用場景是計算機BIOS,關於BIOS的部分在後續講解作業系統時會詳細講述。

2.3.2 Network Storage

所謂網路儲存,就是通過網路介面進行存取。比如通常網咖會使用無盤計算機以節約成本,這時候啟動系統的任務就交給了網線而不是磁碟。再比如,不考慮快取檔案的情況下,線上檢視郵箱,並不會因為本機掉電而使得郵箱內郵件丟失。

雖然從本機看起來,不需要依賴儲存磁碟,但終歸網路另一端提供服務的計算機仍然需要磁碟來獲取源資料,因此不管雞生蛋還是蛋生雞,至少能確定,必須有雞才行,而在這裡,雞就是磁碟儲存。

2.3.3 Hard Drive

終於到了永久性儲存中的重頭戲,硬碟儲存。硬碟也稱為磁碟,還是要來那麼一句,如果你看了第一章的電學知識的話,那麼你應該能理解為什麼要通過磁來實現儲存。

硬碟之所以成為磁碟是因為它通過改變碟片上磁性的分佈來實現儲存,讀取時再根據碟片磁性分佈轉換成電訊號,並進一步成為二進位制值。這其中的原理無非是電磁感應,電生磁、磁生電。

講到硬碟,總有關於柱面、扇區、磁頭的內容,本篇也不能免俗。

如圖所示,磁軌是兩個同心圓間區域,該區域等分成扇區,每個扇區位元組數為512B。所有碟片上的同一磁軌構成柱面,由於磁頭為機械裝置,如頻繁定址則開銷較大,因此寫入資料時,就以柱面為單位,儘量減少機械裝置的移動頻率。

到這一步,似乎所有正兒八經點的資料都能給出,但有一點,由於碟片是一張圓盤,也就是說,越往外的磁軌在碟片轉動單位時間內走過的路程越多,也就是說相對靠內的磁軌,其定址速度更快。因此通常將作業系統安裝在靠外柱面可以適量提升其響應速度,對應到Windows也就是C盤位置通常最靠外,其他碟符依次往內。

由於磁頭是機械裝置,既降低了存取速度,又降低了穩定性,如果存取過程中由於震動碟片被磁頭劃傷,那資料就可能出現錯誤。假如出現錯誤的資料正好是作業系統,那麼就只有自認倒黴了。

2.3.4 固態硬碟SSD

正是因為磁碟存在速度、穩定性等因素,和Cache一樣,我們又製造出一種新的硬碟,成為固態硬碟。

對比下就可以發現,SSD使用的是積體電路而非機械裝置來存取,所以可以達到更高的存取頻率,也不用再為可能出現的震動操心。比較顯著的缺點就是目前成本仍然較高、同時存在寫入次數有限的問題。為了保證資料的安全性,通常SSD內部會使用多個記憶體單元來儲存一個bit,即以冗餘來換穩定。

3. 總結

寫到這裡,關於計算機五大元件之一的記憶體部分就基本介紹完畢。還是那句話,記憶體的存在是實現了計算機自動執行任務的關鍵。下一篇中,將去啃啃包含了控制單元和執行單元的真正的硬骨頭CPU。

相關文章