天天看點

緩存、記憶體、虛拟記憶體分析

許多人認為,“緩存”是記憶體的一部分,許多技術文章都是這樣教授的,事實上這麼說是不正确的。 

其實,緩存是cpu的一部分,它存在于cpu中 

cpu存取資料的速度非常的快,一秒鐘能夠存取、處理十億條指令和資料(術語:cpu主頻1g),而記憶體就慢很多,快的記憶體能夠達到幾十兆就不錯了,可見兩者的速度差異是多麼的大 

緩存是為了解決cpu速度和記憶體速度的速度差異問題 

記憶體中被cpu通路最頻繁的資料和指令被複制入cpu中的緩存,這樣cpu就可以不經常到象“蝸牛”一樣慢的記憶體中去取資料了,cpu隻要到緩存中去取就行了,而緩存的速度要比記憶體快很多 

這裡要特别指出的是: 

1.因為緩存隻是記憶體中少部分資料的複制品,是以cpu到緩存中尋找資料時,也會出現找不到的情況(因為這些資料沒有從記憶體複制到緩存中去),這時cpu還是會到記憶體中去找資料,這樣系統的速度就慢下來了,不過cpu會把這些資料複制到緩存中去,以便下一次不要再到記憶體中去取。 

2.因為随着時間的變化,被通路得最頻繁的資料不是一成不變的,也就是說,剛才還不頻繁的資料,此時已經需要被頻繁的通路,剛才還是最頻繁的資料,現在又不頻繁了,是以說緩存中的資料要經常按照一定的算法來更換,這樣才能保證緩存中的資料是被通路最頻繁的 

3.關于一級緩存和二級緩存 

為了厘清這兩個概念,我們先了解一下ram(随即通路存儲器) 

ram和rom(隻讀存儲器)相對的,ram是掉電以後,其中才資訊就消失那一種,rom在掉電以後資訊也不會消失那一種 

ram又分兩種, 

一種是靜态ram,sram;一種是動态ram,dram。前者的存儲速度要比後者快得多,我們現在使用的記憶體一般都是動态ram。 

有的人就說了,為了增加系統的速度,把緩存擴大不就行了嗎,擴大的越大,緩存的資料越多,系統不就越快了嗎 

緩存通常都是靜态ram,速度是非常的快, 

但是靜态ram內建度低(存儲相同的資料,靜态ram的體積是動态ram的6倍), 

價格高(同容量的靜态ram是動态ram的四倍), 

由此可見,擴大靜态ram作為緩存是一個非常愚蠢的行為, 

但是為了提高系統的性能和速度,我們必須要擴大緩存, 

這樣就有了一個折中的方法,不擴大原來的靜态ram緩存,而是增加一些高速動态ram做為緩存, 

這些高速動态ram速度要比正常動态ram快,但比原來的靜态ram緩存慢, 

我們把原來的靜态ram緩存叫一級緩存,而把後來增加的動态ram叫二級緩存。 

一級緩存和二級緩存中的内容都是記憶體中通路頻率高的資料的複制品(映射),它們的存在都是為了減少高速cpu對慢速記憶體的通路。 

通常cpu找資料或指令的順序是:先到一級緩存中找,找不到再到二級緩存中找,如果還找不到就隻有到記憶體中找了 

   什麼叫虛拟記憶體,它與緩存有什麼異同呢 虛拟記憶體是windows作業系統用來管理記憶體的一種方法,虛拟記憶體說穿了就是把記憶體中的資訊分出去一部分存在硬碟上,這樣從表面上看就擴大了記憶體容量(難怪記憶體中存了這麼多東西,原來有一部分被轉到了硬碟上),我們知道記憶體中存有很多資料和指令,但是這些資料和指令被通路的頻率是不同的,有些要被經常通路,有些卻被cpu冷落windows 是個落井下石的壞東西,它大聲的說:既然你們被cpu冷落了,幹脆把你們打入冷宮吧。于是這些被通路頻率低或者不被通路的資料從記憶體中被趕到了硬碟上。但windows并非鐵石心腸,它還說:如果cpu需要通路你們時,我就把你們送入記憶體,如果你們更加熱門的時候,就可能被cpu帶入緩存,如果你們被重新冷落時,我就會無情的把你們再打入冷宮。   而那個冷宮就是硬碟上的虛拟記憶體。如果你剛才還不知道什麼是虛拟記憶體是什麼東西時,那麼現在呢?   我還看到有些網友問:虛拟記憶體和緩存有什麼差別呢,它們的原理都是局部時間内被通路的記憶體位址具有局部性。  

    現在我們來看看它們的差別: 

    1.緩存是一種硬體,是cpu的一部分;而虛拟記憶體并不是一種硬體,而是存在于硬碟上的一個檔案,是根據windows的要求生成的(二者中的資訊都是随時變化的)  

    2.緩存的目的是加快系統的速度,而虛拟記憶體技術是為了使更多的程式能夠在有限的記憶體中運作。 

特别說明:尊重作者的勞動成果,轉載請注明出處哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo4 

繼續閱讀