《深入理解計算機系統》p422
6.1 存儲器層次結構中的緩存
一般而言,高速緩存( cache ,讀作「 cash 」)是一個小而快速的存儲設備,它作為存儲在更大、也更慢的設備中的數據對象的緩沖區域。使用高速緩存的過程稱為緩存( caching ,讀作「 cashing 」)。存儲器層次結構的中心思想是,對於每個 k ,位於 k 層的更快更小的存儲設備作為位於 k 十1層的更大更慢的存儲設備的緩存。換句話說,層次結構中的每一層都緩存來自較低一層的數據對象。例如,本地磁碟作為通過網路從遠程磁碟取出的文件(例如 Web 頁面)的緩存,主存作為本地磁碟上數據的緩存,依此類推,直到最小的緩存—— CPU 寄存器組。圖6-22展示了存儲器層次結構中緩存的一般性概念。第 k 十1層的存儲器被劃分成連續的數據對象組塊( chunk ),稱為塊( block )。每個塊都有一個唯一的地址或名字,使之區別於其他的塊。塊可以是固定大小的(通常是這樣的),也可以是可變大小的(例如存儲在 Web 伺服器上的遠程 HTML 文件)。例如,圖6-22中第 k 十1層存儲器被劃分成16個大小固定的塊,編號為0~15。
類似地,第 k 層的存儲器被劃分成較少的塊的集合,每個塊的大小與 k 十1層的塊的大小一樣。在任何時刻,第 k 層的緩存包含第 k 十1層塊的一個子集的副本。例如,在圖6-22中,第 k 層的緩存有4個塊的空間,當前包含塊4、9、14和3的副本。
數據總是以塊大小為傳送單元( transfer unit )在第 k 層和第 k +1層之間來回復制的。雖然在層次結構中任何一對相鄰的層次之間塊大小是固定的,但是其他的層次對之間可以有不同的塊大小。例如,在圖6-21中,L1和 LO 之間的傳送通常使用的是1個字大小的塊。L2和L1之間(以及I3和I2之間、L4和I3之間)的傳送通常使用的是幾十個位元組的
塊。而L5和L4之間的傳送用的是大小為幾百或幾千位元組的塊。一般而言,層次結構中較低層(離 CPU 較遠)的設備的訪問時間較長,因此為了補償這些較長的訪問時間,傾向於使用較大的塊。
1. 緩存命中
當程序需要第 k 十1層的某個數據對象 d 時,它首先在當前存儲在第 k 層的一個塊中查找 d 。如果 d 剛好緩存在第 k 層中,那麼就是我們所說的緩存命中( cache hit )。該程序直接從第 k 層讀取 d ,根據存儲器層次結構的性質,這要比從第 k +1層讀取 d 更快。例如,一個有良好時間局部性的程序可以從塊14中讀出一個數據對象,得到一個對第 k 層的緩存命中。
2. 緩存不命中
另一方面,如果第 k 層中沒有緩存數據對象 d ,那麼就是我們所說的緩存不命中( cache miss )。當發生緩存不命中時,第 k 層的緩存從第 k 十1層緩存中取出包含 d 的那個塊,如果第 k 層的緩存已經滿了,可能就會覆蓋現存的一個塊。
覆蓋一個現存的塊的過程稱為替換( replacing )或驅逐( evicting )這個塊。被驅逐的這個塊有時也稱為犧牲塊( victim block )。決定該替換哪個塊是由緩存的替換策略( replace — ment policy )來控制的。例如,一個具有隨機替換策略的緩存會隨機選擇一個犧牲塊。一個具有最近最少被使用 LRU )替換策略的緩存會選擇那個最後被訪問的時間距現在最遠的塊。
在第 k 層緩存從第 k 十1層取出那個塊之後,程序就能像前面一樣從第 k 層讀出 d 了。例如,在圖6-22中,在第 k 層中讀塊12中的一個數據對象,會導致一個緩存不命中,因為塊12當前不在第 k 層緩存中。一旦把塊12從第 k 十1層復制到第 k 層之後,它就會保持在那裡,等待稍後的訪問。
3. 緩存不命中的種類
區分不同種類的緩存不命中有時候是很有幫助的。如果第 k 層的緩存是空的,那麼對
任何數據對象的訪問都會不命中。一個空的緩存有時被稱為冷緩存( cold cache ),此類不命中稱為強制性不命中( compulsory miss )或冷不命中( cold miss )。冷不命中很重要,因為它們通常是短暫的事件,不會在反復訪問存儲器使得緩存暖身( warmed up )之後的穩定狀態中出現。
只要發生了不命中,第 k 層的緩存就必須執行某個放置策略( placement policy ),確定把它從第 k 十1層中取出的塊放在哪裡。最靈活的替換策略是允許來自第 k +1層的任何塊放在第 k 層的任何塊中。對於存儲器層次結構中高層的緩存(靠近 CPU ),它們是用硬體來實現的,而且速度是最優的,這個策略實現起來通常很昂貴,因為隨機地放置塊,定位起來代價很高。
因此,硬體緩存通常使用的是更嚴格的放置策略,這個策略將第 k 十1層的某個塊限制放置在第 k 層塊的一個小的子集中(有時只是一個塊)。例如,在圖6-22中,我們可以確定第 k 十1層的塊 i 必須放置在第 k 層的塊( i mod 4)中。例如,第 k 十1層的塊0、4、8和12會映射到第 k 層的塊0;塊1、5、9和13會映射到塊1;依此類推。注意,圖6-22中的示例緩存使用的就是這個策略。
這種限制性的放置策略會引起一種不命中,稱為沖突不命中( conflict miss ),在這種情況中,緩存足夠大,能夠保存被引用的數據對象,但是因為這些對象會映射到同一個緩存塊,緩存會一直不命中。例如,在圖6-22中,如果程序請求塊0,然後塊8,然後塊0,然後塊8,依此類推,在第 k 層的緩存中,對這兩個塊的每次引用都會不命中,即使這個緩存總共可以容納4個塊。
程序通常是按照一系列階段(如循環)來運行的,每個階段訪問緩存塊的某個相對穩定不變的集合。例如,一個嵌套循環可能會反復地訪問同一個數組的元素。這個塊的集合稱為這個階段的工作集( working set )。當工作集的大小超過緩存的大小時,緩存會經歷容量不命中( capacity miss )。換句話說就是,緩存太小了,不能處理這個工作集。
4. 緩存管理
正如我們提到過的,存儲器層次結構的本質是,每一層存儲設備都是較低一層的緩存。在每一層上,某種形式的邏輯必須管理緩存。這里,我們的意思是指某個東西要將緩存劃分成塊,在不同的層之間傳送塊,判定是命中還是不命中,並處理它們。管理緩存的邏輯可以是硬體、軟體,或是兩者的結合。
例如,編譯器管理寄存器文件,緩存層次結構的最高層。它決定當發生不命中時何時發射載入,以及確定哪個寄存器來存放數據。L1、L2和L3層的緩存完全是由內置在緩存中的硬體邏輯來管理的。在一個有虛擬內存的系統中, DRAM 主存作為存儲在磁碟上的數據塊的緩存,是由操作系統軟體和 CPU 上的地址翻譯硬體共同管理的。對於一個具有像 AFS 這樣的分布式文件系統的機器來說,本地磁碟作為緩存,它是由運行在本地機器上的 AFS 客戶端進程管理的。在大多數時候,緩存都是自動運行的,不需要程序採取特殊的或顯式的行動。
6.3.2 存儲器層次結構概念小結
概括來說,基於緩存的存儲器層次結構行之有效,是因為較慢的存儲設備比較快的存儲設備更便宜,還因為程序傾向於展示局部性:
1)利用時間局部性: 由於時間局部性,同一數據對象可能會被多次使用。一旦一個數據對象在第一次不命中時被復制到緩存中,我們就會期望後面對該目標有一系列的訪問命中。因為緩存比低一層的存儲設備更快,對後面的命中的服務會比最開始的不命中快很多。
2)利用空間局部性: 塊通常包含有多個數據對象。由於空間局部性,我們會期望後面對該塊中其他對象的訪問能夠補償不命中後復制該塊的花費。現代系統中到處都使用了緩存。正如從圖6-23中能夠看到的那樣, CPU 晶元、操作系統、分布式文件系統中和萬維網上都使用了緩存。各種各樣硬體和軟體的組合構成和管理著緩存。注意,圖6-23中有大量我們還未涉及的術語和縮寫。在此我們包括這些術語和縮寫是為了說明緩存是多麼的普遍。
㈡ 請問一下,主存,緩存,寄存器,光碟的存儲速度和存儲容量大小
C
存取速度:寄存器 > Cache > 內存 > 硬碟 > 光碟 > 軟盤
具體點說:內存可達數至數十GB/s,硬碟可達幾十MB/s ~ 數百MB/s,光碟最高約25MB/s(18倍DVD,藍光DVD先不算),軟盤一般只有數十KB/s。
寄存器屬於CPU的一個組成部分而緩存只是集成到CPU封裝內完全是和CPU獨立的器件。另外二者速度相差很大,寄存器存取速度最快 其次緩存最後是內存。三者容量上的關系就像飯碗、飯鍋和米缸的關系,容量越大級別越低,速度越慢與CPU的聯系越不密切
㈢ 磁碟緩沖區是在主存中嗎,那就是說是主存的屬性
磁碟的緩沖區是硬碟與外部匯流排交換數據的場所。硬碟的讀數據的過程是將磁信號轉化為電信號後,通過緩沖區一次次地填充與清空,再填充,再清空,一步步按照PCI匯流排的周期送出,可見,緩沖區的作用是相當重要的。它的作用也是提高性能,但是它與緩存的不同之處在於:一、它是容量固定的硬體,而不像緩存是可以由操作系統在內存中動態分配的。二、它對性能的影響大大超過磁碟緩存對性能的影響,因為如果沒有緩沖區,就會要求每傳一個字(通常是4位元組)就需要讀一次磁碟或寫一次磁碟。總而言之,磁碟緩存是屬於內存的,而磁碟緩沖區是硬碟與PCI匯流排之間的容量固定的硬體。
磁碟構造。磁碟緩沖區?
1、內存緩沖區,只是它是專門為讀取或寫入硬碟而設置的,簡稱為硬碟緩沖區
2、磁碟的緩存,硬碟與外部匯流排交換數據的緩存,它是容量固定的硬體,比內存緩沖區更有效果,
因此買硬碟時,緩存越大,性能更好
3、高速緩沖存儲器(高速緩存)是在cpu中,越好的CPU高速緩存越大,還不止一個,有1、2、3級之分(網路)緩存越大,性能更好
㈣ 主存,內存,緩存,和虛擬儲存器的區別與聯系
1。主存就是內存啦,它是主要的存儲單元,一台計算機的內存(主存)是指CPU能夠通過指令中的地址碼直接訪問的存儲器,常用於存放處於活動狀態的程序和數據。
2。然後還有外存(外部存儲器),它是主存的補充,所以一般又叫它輔存(輔助存儲器),比如光碟、U盤、軟盤、磁帶等。
3。緩存顧名思義就是緩沖寄存器,在CPU同時處理很多數據,而又不可能同時進行所有數據的傳輸的情況,把優先順序底的數據暫時放入緩存中,等優先順序高的數據處理完畢後再把它們從緩存中拿出來進行處理。(它也可以看成是主存的補充)
4。虛擬內存(又稱虛擬存儲器),其實一般主存是不夠用的,計算機通常會在硬碟上劃出一塊區域來虛擬一個內存空間,從而進行對數據和程序的處理,於是硬碟就會產生一個頁面文件PF,它也是主存的擴充。
㈤ 計算機採用的三級存儲結構是什麼
計算機採用的三級存儲結構是高速緩沖存儲器,主存儲器,輔助存儲器。
對於通用計算機,存儲層次至少具有三級:CPU寄存器,主存,輔存。較高檔的計算機有細分為六層:寄存器,高速緩存,主存,磁碟緩存,磁碟。可移動存儲介質。
(5)磁碟緩存主存擴展閱讀:
存儲器層次越高訪問速度越快,價格越昂貴。
1、主存儲器,簡稱內存或主存,用於保存進程運行時的數據,也成為可執行存儲器。CPU控制部件只能從主存儲器中獲得指令和數據,然後將他們裝入內存。或者從寄存器存入主存。
2、寄存器,訪問速度很快完全能與CPU協調工作,但價格十分昂貴。
2、高速緩存器:CPU訪問一組特定的數據時,總是先查詢在高速緩存中是否有需要的數據,若有則直接使用,否則從主存中讀取信息。
3、磁碟緩存,因目前磁碟的IO速度遠低於貯存的訪問速度,因此將頻繁使用的一部分磁碟數據和信息暫時存放在磁碟緩存中可減少訪問磁碟的次數。磁碟緩存依託於固定磁碟。當需要運行或訪問的時候,被調入主存。
㈥ 高速緩存與主內存的關系是什麼
高速緩存是為了解決主內存存取談此速度一直比中央處理器操作速度慢得多,使中央處理器的高速處理能力不能充分發揮,整個計算機系統的工作效率受到影響問題而出現的。
根據程序局部性原理,正在使用的主內存某一單元鄰近的那些單元將被用到的可能性很大。
因而,當中央處理器存取主內存某一單元時,計算機硬體就自動地將包括該單元在內的那一組單元內容調入高速緩存,中央處理器即將存取的主內存單元很可能就在剛剛調入到高速緩存存儲器的那一組單元內。
於是,中央處理器就可以直接對高速緩存存儲器進行存取。在整個處理過程中,如果中央處理器絕大多數存取主內存的操作能為存取高速緩存存儲器所代替,計算機系統處理速度就能顯著提高。
(6)磁碟緩存主存擴展閱讀:
高速緩沖存儲器的容量一般只有主存儲器的幾百分之一,但它的存取速度能與中央處理器相匹配。
有很多方法可用來緩和中央處理器和主存儲器之間速度不匹配的矛盾,如採用多個通用寄存器、多存儲體交叉存取等,在存儲層次上採用高速緩沖存儲器也是常用的方法大慎之一。
很多大、中型計算機以及新近的一些小型機、微型機也都採用高速緩沖存儲器。
參考資料來源:網路-高速緩含仿迅沖存儲器
㈦ 內存、硬碟、緩存分別指什麼它們之間有什麼聯系
分類: 電腦/網路
解析:
硬碟是存儲數據和程序的地方,計算機所有的軟體都保存在裡面,就像是倉庫一樣.這里的數據是可以永久存放的,斷電不會消失.
計算機需要運行程序的時候,由於中央處理器不能直接從硬碟讀數據,所以會先把程序和數據從硬碟讀到內存裡面,內存也是存儲器,不過裡面的數據斷電就消失了,CPU從內存中讀取指令來執行.內存的讀寫速度是硬碟的幾十倍到幾百倍.
在CPU讀取指令執行的時候,盡管內存已經把數據讀取頌羨速度從硬碟的很慢提高到了很快,但是仍然會跟不上CPU的速度,所以設計了緩存來緩沖指令,緩存是介於CPU和內存之間的超高速存儲器,讀寫速度極岩櫻返快,但由於成本高所以都不是很大,在讀指令的時候 CPU會先查詢緩存內有沒有相同的指令,如果有就直接從緩存讀,沒有側從粗飢內存讀並把指令寫入緩存預備下次查詢,同時更新並擦除緩存內很長時間沒有讀取的指令.緩存可以有1層也可以有2層以上,就是所說的1級緩存和二級緩存.所以整個順序是CPU->緩存->內存->硬碟
㈧ 主存內存還有高緩之間是什麼關系
電腦的存儲,分為內存和硬碟。
內存分為隨機存儲器、只讀存儲器和高速緩存。其中的隨機存儲器,就是主存。
高速緩存,有多種級別。CPU內部,就有高速緩存。硬碟內部也有。
主存中,也可以開辟出一塊,當做高速緩存使用。
所以,主存和高速緩存之間的關系,比較復雜。既是平等關系,也可以把自己的一部分變成高速緩存。
電腦的只讀存儲器,英文簡寫rom,一般是用在bios。
隨機存儲器,英文簡寫ram,一般是電腦的內存條。
高速緩存,一般是特別快的ram,價格只特別昂貴,只能少量地用於重要的地方。比如CPU、硬碟等內部。但高速是相對的。CPU和硬碟的高速緩存,是比內存條高速,而內存條開辟出一塊空間做緩存,是比硬碟高速。