計算機五大組件,已經介紹完了輸入輸出設備。從前面幾篇中咱們瞭解到,計算任務實際上就是控制單元控制執行單元根據輸入和存儲器中內容計算獲得輸出結果,控制單元和執行單元比較複雜,運算時也須要使用到存儲器,因此本篇先展開存儲器相關知識。 緩存
若是你還能記得,第一篇電學知識中咱們提到過S-R觸發器(Flip Flop,簡稱FF)。
安全
總的來說,觸發器的工做狀態依賴於兩個開關S和R,閉合一個斷開另外一個,總會獲得兩個相反的輸出Q和Q',而若是兩個開關都斷開,那麼就保持住Q和Q’最後處於什麼狀態。完整觸發器真值表以下:
網絡
經過使用S-R觸發器或其相似實現版本,能夠實現1個bit的存儲。而經過組合使用S-R觸發器,就能夠達到多個bit的存儲,也就是RAM的由來,而其組成部分中的每一個觸發器則被稱爲存儲單元)。 post
內存單元的主要職責是保存存儲在其中的數據直到下一次設置或重置操做的出現,現今普遍使用的RAM主要有靜態RAM(Static RAM)和動態RAM(Dynamic RAM)兩種。 性能
SRAM直接使用6個晶體管內存單元的狀態來存儲1 bit數據,造價相比DRAM更貴,但同時帶來的好處是比DRAM擁有更快的存取速度和更低的能耗。一般用於CPU內部的Cache中。
操作系統
與SRAM的全晶體管內存單元不一樣的是,DRAM搭配一個晶體管和一個電容器來保存1 bit數據。其中電容器負責存儲,晶體管負責控制存取操做。
3d
一樣的,第一篇中捎帶提到電容器原理,從中咱們知道電容器因爲會對空氣放電的因素,內部電勢差會逐漸衰減。也就是說,存儲其中的1 bit值,若是聽任無論,不知道哪次去讀取時,就會從1變成0了,這就沒法實現存儲的功能。爲了隨時都可以爭取獲取其中保存的值,就必須常常對電容就行充電,也稱刷新。 cdn
根據能量守恆定律,充電須要額外供電,所以DRAM功耗確定是要比SRAM大的。同時,因爲須要常常刷新DRAM,存取速率也天然比不上SRAM。那還造DRAM幹嗎?由於DRAM電路簡單許多,能夠擁有很是高的密度,單位體積的容量較高所以成本較低。總的來講就是由於便宜且速率可接受。這沒什麼很差,權衡利弊,夠用就行。 對象
前面講的都是原理,具體到計算機組件應用以前,先放一張CPU使用到的存儲器層級圖,稍後將依次展開。
blog
從圖中咱們能夠看出,RAM屬於臨時存儲區,它和CPU之間至少還間隔着幾層Cache,RAM下方是永久性存儲區域。永久性存儲區域以前提到過如光盤、硬盤等,但這個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,費勁心機,無非就是想在預算有限的條件下達到更快。
內存也稱爲主存,使用的是DRAM內存單元。因爲前面介紹了SRAM和DRAM的主要區別等相關知識,這裏就再也不贅述。只要有一個概念,就是到RAM爲止,都是掉電就丟失數據的。也就是說,RAM只在計算機運行過程當中保存數據,運行完畢斷電後,不負責保存任何信息。
然而爲了實現計算機自動化執行任務,就必須先將任務存儲在計算機內部而不是每次都須要輸入設備輸入,所以對於永久性存儲設備的需求十分強烈。
如前面CPU存儲器層級圖所示,永久性存儲器主要分爲以下幾種。
首先講ROM,ROM全稱Read Only Memory,顯而易見是一種只讀存儲器,其內容在出廠前就已經固化進去,後續只能讀取而不能再次寫入。雖而後面出現別的可擦寫ROM如(EPROM),但終歸寫入的條件如紫外線要求較高。
ROM存儲在一個非易失性芯片上,即便掉電後其中內容依舊能夠保存。比較普遍的使用場景是計算機BIOS,關於BIOS的部分在後續講解操做系統時會詳細講述。
所謂網絡存儲,就是經過網絡接口進行存取。好比一般網吧會使用無盤計算機以節約成本,這時候啓動系統的任務就交給了網線而不是磁盤。再好比,不考慮緩存文件的狀況下,在線查看郵箱,並不會由於本機掉電而使得郵箱內郵件丟失。
雖然從本機看起來,不須要依賴存儲磁盤,但終歸網絡另外一端提供服務的計算機仍然須要磁盤來獲取源數據,所以無論雞生蛋仍是蛋生雞,至少能肯定,必須有雞才行,而在這裏,雞就是磁盤存儲。
終於到了永久性存儲中的重頭戲,硬盤存儲。硬盤也稱爲磁盤,仍是要來那麼一句,若是你看了第一章的電學知識的話,那麼你應該能理解爲何要經過磁來實現存儲。
硬盤之因此成爲磁盤是由於它經過改變盤片上磁性的分佈來實現存儲,讀取時再根據盤片磁性分佈轉換成電信號,並進一步成爲二進制值。這其中的原理無非是電磁感應,電生磁、磁生電。
講到硬盤,總有關於柱面、扇區、磁頭的內容,本篇也不能免俗。
如圖所示,磁道是兩個同心圓間區域,該區域等分紅扇區,每一個扇區字節數爲512B。全部盤片上的同一磁道構成柱面,因爲磁頭爲機械裝置,如頻繁尋址則開銷較大,所以寫入數據時,就以柱面爲單位,儘可能減小機械裝置的移動頻率。
到這一步,彷佛全部正兒八經點的資料都能給出,但有一點,因爲盤片是一張圓盤,也就是說,越往外的磁道在盤片轉動單位時間內走過的路程越多,也就是說相對靠內的磁道,其尋址速度更快。所以一般將操做系統安裝在靠外柱面能夠適量提高其響應速度,對應到Windows也就是C盤位置一般最靠外,其餘盤符依次往內。
因爲磁頭是機械裝置,既下降了存取速度,又下降了穩定性,若是存取過程當中因爲震動盤片被磁頭劃傷,那數據就可能出現錯誤。假如出現錯誤的數據正好是操做系統,那麼就只有自認倒黴了。
正是由於磁盤存在速度、穩定性等因素,和Cache同樣,咱們又製造出一種新的硬盤,成爲固態硬盤。
對比下就能夠發現,SSD使用的是集成電路而非機械裝置來存取,因此能夠達到更高的存取頻率,也不用再爲可能出現的震動操心。比較顯著的缺點就是目前成本仍然較高、同時存在寫入次數有限的問題。爲了保證數據的安全性,一般SSD內部會使用多個內存單元來存儲一個bit,即以冗餘來換穩定。
寫到這裏,關於計算機五大組件之一的內存部分就基本介紹完畢。仍是那句話,內存的存在是實現了計算機自動執行任務的關鍵。下一篇中,將去啃啃包含了控制單元和執行單元的真正的硬骨頭CPU。