ram是什么意思 ram是什么( 三 )


機械硬盤容量很大(目前普遍1T,2T),我們的數據和程序是存儲在磁盤上的,所以CPU要想執行指令/數據,就要從存儲器,也就是磁盤上讀取,CPU一秒鐘可以執行幾億條指令,但是相對之下,磁盤的讀寫速度就是慢如蝸牛 。假設磁盤一秒鐘可以讀取100條指令 。那么這中間就存在 巨大的速度差異 。半導體行業發展了幾十年,CPU的執行速度一再飛速提升,奈何磁盤技術發展的太不給力了,CPU再快,可是磁盤嚴重拖后腿,那CPU就相當于工作嚴重不飽和,如果直接從磁盤上 來讀取數據,那么CPU相當于 99.9999%的時間都在閑置著 。
"假設磁盤一秒鐘可以讀取100條指令 。":帶有假設字樣的,具體數字都是隨便寫的 。比如 磁盤讀寫速度自然有它的參數指標,不過我們只是為了說明問題,所以能理解其中的道理就好 。
磁盤廠商們也在努力研究,比如SSD(固態硬盤),它的速度就比 機械硬盤快了一二十倍吧 。但是對于CPU的速度,這也是然并卵啊 。(更何況SSD相比機械硬盤太貴了)
所以這就是個大問題 。
我們的目標就是執行任務時讓CPU全負荷的運行,爭取對于每一個時鐘周期,CPU都不會閑置浪費 。
這就像是老板對我們這些員工的希望一樣 。老板給我們發工資,那么他就是希望我們每一天的每一分每一秒都在努力幫公司干活 。不要有什么任何時間閑著 。所以我們要感謝勞動法,讓我們每天工作八小時就夠了 。畢竟我們也是血肉之軀,也需要吃喝拉撒睡覺 。
看到勞動法說每天工作八小時就夠了,程序猿們哭暈在廁所 。
程序猿問科比:“你為什么這么成功? ”
科比:“你知道洛杉磯凌晨四點是什么樣子嗎? ”
程序猿:“不知道,一般那個時候我還沒下班呢,怎么了?”
科比:“額…….”
通過上面的介紹,我們就明白了計算機體系的主要矛盾,CPU太快了,而磁盤太慢了 。所以它倆是不能夠直接通信的,我們可以加一層過度 。這就是內存的作用 。這就是幾百塊錢一根的內存條的作用和功能 。
實際上,一般情況下,內存的讀寫速度比磁盤快幾十萬倍左右 。所以它終于夠資格和CPU直接通信了 。
這里有張圖,我們來看一下磁盤/內存,與CPU速度之間逐漸增大的差距(主要是CPU技術發展太迅猛了) 。

ram是什么意思  ram是什么

文章插圖
圖三:磁盤DRAM和cpu速度之間逐漸增大的差距
所以現在程序執行過程是這樣的 。CPU執行任務時,只與內存通信,它從內存獲取指令/數據或寫回數據 。內存再與磁盤通信,內存從磁盤讀取數據/指令,或者內存將數據寫回磁盤 。
提到添加過渡層 。這其實和JVM的原理都是類似的 。具體可參考我的另一篇文章關于跨平臺的一些認識 。也許這就是大道至簡吧 。
存儲器層次結構我們這里說的內存,主要是指主存 。就是主板上插的內存條 。它的讀寫速度比磁盤快了幾十萬倍 。但是相對于CPU的速度依舊還是慢 。那么主存和CPU之間,可以繼續添加速度更快的過度層 。所以intel i7的存儲器層次結構是這樣的 。
ram是什么意思  ram是什么

文章插圖
圖4:一個存儲器層次結構的示例
前面扯了那么多篇幅,就是告訴你,我們為什么需要內存(主存),那么理解了主存,自然也就理解了L3,L2,L1等各級緩存存在的意義 。對于現代的計算機系統,在CPU與磁盤/主存之間,加了多層過度層 。
嚴格來講,應該叫CPU的算術邏輯單元(ALU),但是簡單的直接說CPU,大家肯定也能聽得懂 。
實際上這是一種緩存思想 。比如,本地磁盤也相當于 遠方服務器的緩存 。因為我們從網上下載數據/文件時,速度明顯比從本地磁盤讀取要慢 。
一般情況下,L5磁盤與L4主存速度相差幾十萬倍,而L3-L0之間,它們每級緩存的速度差異大概是10倍 。
我們是拿i7處理器來做例子,它有三級緩存,像低端一些的處理器,比如i3,只有兩級緩存,但是道理是相同的 。本文當中,都是拿i7的存儲器層次來做例子 。
明白一點 。CPU執行速度實在太快了,一秒鐘執行幾億/十幾億條指令,CPU干活干脆利落,那么存儲器就要想方設法的用最快的速度把指令/數據 送給CPU去運行 。否則CPU干活再快,又有什么意義呢 。
基本思想已經理解了 。那么我們就開始具體討論細節問題 。
RAM,ROM,總線等看看上面那幅圖,什么SRAM,DRAM,還有我們前面講的SSD,Flash,機械硬盤等,還有下面要討論的總線(BUS),所以我們先來討論一些基礎硬件知識.

推薦閱讀