https://blog.csdn.net/bemodesty/article/details/81476906
前言 ?
? ? ? ? ?一個計算機包含多種存儲器比如:寄存器、高速緩存、內存、硬盤、光盤等,為啥有這么多種存儲方式,對于不太了解的人,總是覺得云里霧里的,搞不明白原因。
? ? ? ? 計算機主要的功能就是運算(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的程序的,這里只是在假設沒有虛擬內存的情況下的舉例說明)。
硬盤
硬盤這個東西,大家應該都比較熟悉,其優點是空間大,價格便宜,并且掉電數據不丟失。常常用來存儲需要永久存儲的文件。