1. 程式人生 > >計算機儲存結構分析(暫存器,記憶體,快取,硬碟)

計算機儲存結構分析(暫存器,記憶體,快取,硬碟)

前言  

         一個計算機包含多種儲存器比如:暫存器、快取記憶體、記憶體、硬碟、光碟等,為啥有這麼多種儲存方式,對於不太瞭解的人,總是覺得雲裡霧裡的,搞不明白原因。

        計算機主要的功能就是運算(cpu),但是要完成一個任務,就要讀取運算指令,並將結果輸出給使用者;因此,指令的儲存、運算過程中中間狀態的儲存、結果的儲存等都需要儲存器。

第一代計算機,接收指令是通過讀取穿孔卡片來實現的,這個穿孔卡片就可以理解為最老的用來儲存命令的儲存器。

理想狀態下,儲存器的執行速度應該快過計算機的運算速度,這樣才可以最大化的利用cpu的計算能力。比如:cpu的運算速度是每秒100條指令,但是如果儲存器的速度是每秒最多能讀取10條指令,那麼cpu就有90%的時間是等待指令; 這樣的儲存器是有的,那就是暫存器,暫存器是和cpu同樣材質製作的,速度和cpu一樣快,當然價格也就和cpu一樣了。

但是如果一臺計算機,儲存器都是暫存器的話,那造出來的計算機,肯定就是天價了,普通人都買不起。計算機的設計著綜合:讀寫速度,空間大小,產品價格等因素採用了分層結構來實現,取了一個性價比最好的方案。

分層結構

如下所示,頂層的儲存器(暫存器)讀寫速度較高,但是空間較小。底層的讀寫(比如硬碟)速度較低,但是空間較大。

暫存器和cpu速度相當,空間比較小在kb級別。      

快取記憶體比暫存器要慢1倍左右,但是空間可以達到MB級別。

記憶體比快取要慢10倍左右,但是空間可以達到GB級別,當前個人電腦一般都不小於4G

硬碟這個速度更慢,比記憶體要慢上萬被,千萬被級別,但是價格也比較偏移,空間也很大。

其他儲存光碟,軟盤,usb外接的其他儲存器,作為硬碟的一個補充,有便於攜帶的優點

 

總結:計算機的儲存設計的這麼複雜,並不是設計者故意要搞得麻煩,而是要兼顧效能和價格綜合考量的一個因素,如果未來有一個儲存產品,能達到當前暫存器的讀取效能,而又可以做的空間極大,並且價格和硬碟一樣,或者說比硬碟還便宜,且資料是掉電不丟失的話,那麼計算機的儲存結構肯定就被簡化了,直接就只有一個儲存器。

 

小貼士:現在買電腦時,儲存器上,大家主要關注在了 記憶體大小和硬碟大小,但是從分層結構圖上,可以看出快取大小更加重要,(當然如果廠商公佈暫存器大小的話,這個也要關注)。

暫存器

暫存器是CPU內部用來存放資料的一些小型儲存區域,用來暫時存放參與運算的資料和運算結果,暫存器雖然也能儲存資料,但同記憶體等儲存器相比,暫存器又有自己獨有的用途:其主要是CPU對記憶體中的資料進行處理時,往往先把資料取到暫存器中,而後再作處理,加快直接同記憶體讀取指令和讀寫資料的速度。

快取記憶體

高速緩衝儲存器是存在於記憶體與CPU之間的儲存器,容量比較小但速度比記憶體高得多, 接近於CPU的速度。快取記憶體是是加速讀取速度的一個橋樑(工具)。CPU向記憶體讀取資料時,首先查詢快取區是否有對應資料,如果有則直接讀取,沒有再從記憶體中讀取。快取記憶體中儲存的都是記憶體中的資料,這部分資料是cpu訪問比較頻繁的部分。

系統也會動態管理快取中的資料,如果有資料訪問頻率降低到一定值,就從快取中移除,而將記憶體中訪問更加頻發的資料替換進去。(快取記憶體可以不只一級,可以有多級快取區)

記憶體

這個才是計算機執行過程中的儲存主力,用於儲存 指令(編譯好的程式碼段),執行中的各個靜態,動態,臨時變數,外部檔案的指標等等。

前面提到的暫存器和快取記憶體只是加速儲存速度的中間部件,原始執行檔案肯定都是先加入到記憶體中的,因此記憶體的大小決定了一個可執行程式的最大大小。

舉例:如果記憶體大小是4G,一個程式裝入記憶體需要大於4G空間的話,改程式是無法執行的,當然實際是還要去掉作業系統佔用的記憶體,因此連4G都無法滿足的。(當然現在有了虛擬記憶體,也就是將硬碟的一部分對映為記憶體空間,將不經常訪問的指令放到虛擬記憶體中,這樣其實是支援大於4G的程式的,這裡只是在假設沒有虛擬記憶體的情況下的舉例說明)。

硬碟

硬碟這個東西,大家應該都比較熟悉,其優點是空間大,價格便宜,並且掉電資料不丟失。常常用來儲存需要永久儲存的檔案。