作者:新邁實業 時間:2022-02-10 09:25:47 閱讀量:次
高速緩存的作用是什么
CPU的緩存主要是為CPU和內存提供一個高速的數據緩存區域。CPU讀取數據的順序是:先在
緩存中尋找,找到后就直接進行讀取,如果未能找到,才從主內存中進行讀取。
L1高速緩存也叫一級高速緩存,主要用于暫存CPU指令和數據,不同CPU的L1高速緩存各不相同。L1高速緩存對CPU的性能影響較大,其容量越大,CPU的性能也就越高。
L2高速緩存也叫二級緩存,主要用于存放電腦運行時操作系統的指令、程序數據和地址指針等。CPU生產商都盡最大可能加大L2高速緩存的容量,并使其與CPU在相同頻率下工作,來達到提高CPU性能的效果。
緩存比內存的速度快。cpu的緩存主要是為cpu和內存提供一個高速的數據緩存區域。cpu讀取數據的順序是:先在緩存中尋找,找到后就直接進行讀取,如果未能找到,才從主內存中進行讀取。 l1高速緩存也叫一級高速緩存,主要用于暫存cpu指令和數據,不同cpu的l1高速緩存各不相同。l1高速緩存對cpu的性能影響較大,其容量越大,cpu的性能也就越高。 l2高速緩存也叫二級緩存,主要用于存放電腦運行時操作系統的指令、程序數據和地址指針等。cpu生產商都盡最大可能加大l2高速緩存的容量,并使其與cpu在相同頻率下工作,來達到提高cpu性能的效果。 緩存比內存的速度快。緩存的主要作用就是加快兩個硬件之間的運算速度;
比如CPU和顯卡,CPU的緩存高,顯卡的緩存高,那么CPU和顯卡之間對畫質的處理能力就高高速緩存是處理核心(包括CPU與GPU)或者外部儲存設備與主內存區間的一個緩沖儲存區,所以稱為緩存
在CPU,GPU等處理核心上,核心計算的臨時中間數據和大量需求的數據都優先儲存在緩存里,舉個例子:CPU計算一個1+1+1的值時,第一次計算前兩個數的和的結果2就儲存在CPU緩存里,再把結果拿來進行第二次計算,當然,現在的處理器算這個數據不用這么做,只是面對大量數據計算的時候需要這么做
在更大量的計算里,處理器會按數據的優先級從低到高分別儲存在一級,二級,三級緩存中,再沒有空間就會放進內存中,處理器讀取數據也是從一級緩存開始,直到內存中,如果內存還沒有數據就去硬盤光盤等外部儲存設備找,一級緩存速度最快,二級,三級次之
在外部儲存設備中,比如硬盤和光驅的緩存主要是提高傳輸速率,增加硬件壽命,你可以從硬盤一個分區復制一堆小文件到另一個分區,你可以發現,復制相同容量的文件速度是大文件快于小文件,因為每個小文件都要進行文件的建立,數據寫入與結束寫入等過程會耗費很多時間
在處理器或者內存向硬盤或者光驅(刻錄機)寫入的數據都是小文件或者數據而且并不連續,他們都先放在硬盤緩存里,到整個文件結束或者到緩存區容量極限時再一次性寫入硬盤,這樣可以減少硬盤的讀寫次數,并且以此寫入的速度更快~
計算機硬盤的高速緩存:
1.高速緩存的概念。緩存(Cache memory)是硬盤控制器上的一塊內存芯片,具有極快的存取速度,它是硬盤內部存儲和外界接口之間的緩沖器。由于硬盤的內部數據傳輸速度和外界介面傳輸速度不同,緩存在其中起到一個緩沖的作用。緩存的大小與速度是直接關系到硬盤的傳輸速度的重要因素,能夠大幅度地提高硬盤整體性能。當硬盤存取零碎數據時需要不斷地在硬盤與內存之間交換數據,如果有大緩存,則可以將那些零碎數據暫存在緩存中,減小外系統的負荷,也提高了數據的傳輸速度。
2.高速緩存的作用。硬盤的緩存主要起三種作用:一是預讀取。當硬盤受到CPU指令控制開始讀取數據時,硬盤上的控制芯片會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到緩存中(由于硬盤上數據存儲時是比較連續的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數據的時候,硬盤則不需要再次讀取數據,直接把緩存中的數據傳輸到內存中就可以了,由于緩存的速度遠遠高于磁頭讀寫的速度,所以能夠達到明顯改善性能的目的;二是對寫入動作進行緩存。當硬盤接到寫入數據的指令之后,并不會馬上將數據寫入到盤片上,而是先暫時存儲在緩存里,然后發送一個“數據已寫入”的信號給系統,這時系統就會認為數據已經寫入,并繼續執行下面的工作,而硬盤則在空閑(不進行讀取或寫入的時候)時再將緩存中的數據寫入到盤片上。雖然對于寫入數據的性能有一定提升,但也不可避免地帶來了安全隱患——如果數據還在緩存里的時候突然掉電,那么這些數據就會丟失。對于這個問題,硬盤廠商們自然也有解決辦法:掉電時,磁頭會借助慣性將緩存中的數據寫入零磁道以外的暫存區域,等到下次啟動時再將這些數據寫入目的地;第三個作用就是臨時存儲最近訪問過的數據。有時候,某些數據是會經常需要訪問的,硬盤內部的緩存會將讀取比較頻繁的一些數據存儲在緩存中,再次讀取時就可以直接從緩存中直接傳輸。
緩存容量的大小不同品牌、不同型號的產品各不相同,早期的硬盤緩存基本都很小,只有幾百KB,已無法滿足用戶的需求。2MB和8MB緩存是現今主流硬盤所采用,而在服務器或特殊應用領域中還有緩存容量更大的產品,甚至達到了16MB、64MB等。
大容量的緩存雖然可以在硬盤進行讀寫工作狀態下,讓更多的數據存儲在緩存中,以提高硬盤的訪問速度,但并不意味著緩存越大就越出眾。緩存的應用存在一個算法的問題,即便緩存容量很大,而沒有一個高效率的算法,那將導致應用中緩存數據的命中率偏低,無法有效發揮出大容量緩存的優勢。算法是和緩存容量相輔相成,大容量的緩存需要更為有效率的算法,否則性能會大大折扣,從技術角度上說,高容量緩存的算法是直接影響到硬盤性能發揮的重要因素。更大容量緩存是未來硬盤發展的必然趨勢。
高速緩存產生作用的時機:
3.作用體現及應用。 現在擁有大量數據,但最經常使用的往往只有其中一小部分。如國標漢字有6763個,但經常使用的只有3000個,其中幾百個又占了50%以上的使用頻率。因此人們想到,如果將這幾百個放到存取最快的地方,就可以用很小的代價大大提高工作速度。高速緩存的工作原理基本就是這樣。例如我們知道內存的存取速度比硬盤快得多,我們可以在一開機時就將宋體字的前3000個、黑體字最常用的500個裝入內存專門開辟的區域,這樣當使用這部分字的時候就可以從內存取字,其余的才會去讀硬盤。內存開辟的這部分區域就叫做高速緩存,它可能只占所有字體存儲量的十分之一,但可以將讀寫字庫的速度提高幾十倍。
具體看一下高速緩存起的使用。假設我們有100M數據,其中1M數據的使用頻率占到了50%,又知內存存取時間只有硬盤時間的10萬分之一,因此如果我們用1M內存做高速緩存存儲最常用的1M數據就可以差不多將平均存取速度提高一倍。從這個例子可以看出,當數據使用越不平均,兩種存儲器之間的速度差越大時CACHE的作用就越大。
以上是一類使用分布固定的例子,在這種情況下,只要固定將這一部分數據裝入最快的存儲器就可以了。但在許多情況下,數據的使用頻率是不確定的,特別它是與時間相關的。如當我們在寫一篇文章時,對這篇文章的內容存取就特別頻繁。而過一會兒又去修一張照片,存取操作就轉移到了這張照片的數據上去,文章的數據就基本不用了。要讓一個系統能夠自動地根據當前數據的使用頻率改變高速存儲器中的內容才能使我們專門開出的高速緩存起作用。因此整個高速緩存系統應該包含調度數據的軟件。計算機硬盤的高速緩存:
1.高速緩存的概念。緩存(Cache memory)是硬盤控制器上的一塊內存芯片,具有極快的存取速度,它是硬盤內部存儲和外界接口之間的緩沖器。由于硬盤的內部數據傳輸速度和外界介面傳輸速度不同,緩存在其中起到一個緩沖的作用。緩存的大小與速度是直接關系到硬盤的傳輸速度的重要因素,能夠大幅度地提高硬盤整體性能。當硬盤存取零碎數據時需要不斷地在硬盤與內存之間交換數據,如果有大緩存,則可以將那些零碎數據暫存在緩存中,減小外系統的負荷,也提高了數據的傳輸速度。
2.高速緩存的作用。硬盤的緩存主要起三種作用:一是預讀取。當硬盤受到CPU指令控制開始讀取數據時,硬盤上的控制芯片會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到緩存中(由于硬盤上數據存儲時是比較連續的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數據的時候,硬盤則不需要再次讀取數據,直接把緩存中的數據傳輸到內存中就可以了,由于緩存的速度遠遠高于磁頭讀寫的速度,所以能夠達到明顯改善性能的目的;二是對寫入動作進行緩存。當硬盤接到寫入數據的指令之后,并不會馬上將數據寫入到盤片上,而是先暫時存儲在緩存里,然后發送一個“數據已寫入”的信號給系統,這時系統就會認為數據已經寫入,并繼續執行下面的工作,而硬盤則在空閑(不進行讀取或寫入的時候)時再將緩存中的數據寫入到盤片上。雖然對于寫入數據的性能有一定提升,但也不可避免地帶來了安全隱患——如果數據還在緩存里的時候突然掉電,那么這些數據就會丟失。對于這個問題,硬盤廠商們自然也有解決辦法:掉電時,磁頭會借助慣性將緩存中的數據寫入零磁道以外的暫存區域,等到下次啟動時再將這些數據寫入目的地;第三個作用就是臨時存儲最近訪問過的數據。有時候,某些數據是會經常需要訪問的,硬盤內部的緩存會將讀取比較頻繁的一些數據存儲在緩存中,再次讀取時就可以直接從緩存中直接傳輸。
緩存容量的大小不同品牌、不同型號的產品各不相同,早期的硬盤緩存基本都很小,只有幾百KB,已無法滿足用戶的需求。2MB和8MB緩存是現今主流硬盤所采用,而在服務器或特殊應用領域中還有緩存容量更大的產品,甚至達到了16MB、64MB等。
大容量的緩存雖然可以在硬盤進行讀寫工作狀態下,讓更多的數據存儲在緩存中,以提高硬盤的訪問速度,但并不意味著緩存越大就越出眾。緩存的應用存在一個算法的問題,即便緩存容量很大,而沒有一個高效率的算法,那將導致應用中緩存數據的命中率偏低,無法有效發揮出大容量緩存的優勢。算法是和緩存容量相輔相成,大容量的緩存需要更為有效率的算法,否則性能會大大折扣,從技術角度上說,高容量緩存的算法是直接影響到硬盤性能發揮的重要因素。更大容量緩存是未來硬盤發展的必然趨勢。
高速緩存產生作用的時機:
3.作用體現及應用。 現在擁有大量數據,但最經常使用的往往只有其中一小部分。如國標漢字有6763個,但經常使用的只有3000個,其中幾百個又占了50%以上的使用頻率。因此人們想到,如果將這幾百個放到存取最快的地方,就可以用很小的代價大大提高工作速度。高速緩存的工作原理基本就是這樣。例如我們知道內存的存取速度比硬盤快得多,我們可以在一開機時就將宋體字的前3000個、黑體字最常用的500個裝入內存專門開辟的區域,這樣當使用這部分字的時候就可以從內存取字,其余的才會去讀硬盤。內存開辟的這部分區域就叫做高速緩存,它可能只占所有字體存儲量的十分之一,但可以將讀寫字庫的速度提高幾十倍。
具體看一下高速緩存起的使用。假設我們有100M數據,其中1M數據的使用頻率占到了50%,又知內存存取時間只有硬盤時間的10萬分之一,因此如果我們用1M內存做高速緩存存儲最常用的1M數據就可以差不多將平均存取速度提高一倍。從這個例子可以看出,當數據使用越不平均,兩種存儲器之間的速度差越大時CACHE的作用就越大。
以上是一類使用分布固定的例子,在這種情況下,只要固定將這一部分數據裝入最快的存儲器就可以了。但在許多情況下,數據的使用頻率是不確定的,特別它是與時間相關的。如當我們在寫一篇文章時,對這篇文章的內容存取就特別頻繁。而過一會兒又去修一張照片,存取操作就轉移到了這張照片的數據上去,文章的數據就基本不用了。要讓一個系統能夠自動地根據當前數據的使用頻率改變高速存儲器中的內容才能使我們專門開出的高速緩存起作用。因此整個高速緩存系統應該包含調度數據的軟件。
CACHE系統怎樣調度數據
4.拓展知識-深入了解。 怡泓軟件早在1983年就在軟件內部使用了硬盤的CACHE系統,在早期內存很小的情況下有效地提高了硬盤上大量數據的存取速度。而PC DOS操作系統直到1990年的DR DOS 5.0和MS DOS 4.0中才內含了CACHE程序。從WINDOWS 3.0開始操作系統中都內建了硬盤CACHE系統,CACHE的概念也逐漸延伸到硬盤內部和CPU內部。
CACHE對數據的調度不一定只在兩種存儲器之間進行,如現在的CPU就有片上的一級、二級和內存共3種存儲器。為了便與理解,我們都以兩種存儲器為例。
為使CACHE系統能夠起到提高速度的作用,這兩種存儲器的速度必需有比較大的差異。如果用通用CPU來完成數據調度,兩種存儲器的速度差至少應該達到100倍以上。因為調度程序在每完成一次數據訪問時至少要消耗20-30個指令周期,如果速度只差10倍,用CACHE比不用還要慢。
數據的調度并不像我們想像地那樣簡單。第一高速存儲器中的每一個數據必需帶有地址信息,因為它從第二級存儲器中提出來后已經不是按順序排列。為了避免地址信息過多而造成的空間浪費和查詢時間的浪費,必需將數據分成塊。塊的大小也很有講究。太小了起不到壓縮時間和空間的作用,太大了讀一個數據會造成數百個可能用不著的數據涌入高速存儲器,反而起不到壓縮空間的作用。
高速存儲器中數據的地址信息查詢是數據調度時運算的大頭。當高速存儲器很大時,它的地址表也會很長。從計算機指令發出的是對第二級存儲器的存取指令,為了要看它是否在高速存儲器中,必需去查詢這個地址表。如果地址信息是順序排列的,平均查詢時間將是表長的一半。如果表長到了1000項,平均查一個數據地址就要500次比較。即使兩級存儲器的速度差達1000倍,這種方法也占不了任何便宜。一種方法是優先級排序法,即每經過一段時間的使用就根據每塊數據的使用頻率修改表的排列,讓頻率最高的數據塊的地址排到最前面去,這樣可以有效地縮短查表次數。這是我們過去使用的方法。Intel發明了一種搶隊頭的方法。即每一個數據一旦被使用,就將它放到地址表的第一位去。它的優點是重整地址表的算法最簡單,缺點是地址表的排列通常不是最優化的。還有一種方法是通過散列表來用空間換時間,這種算法稍微復雜一點,但它通??梢栽?次查詢就找到所需的地址,不過計算散列地址也要消耗不少時間。
我們從以上算法的簡單介紹就可以看出,CACHE技術不是在什么地方都可以使用的靈丹妙藥,它受調度計算的很大制約。在CPU內部,兩級存儲器的速度差往往到不了100倍以上,如何能實現有效的CACHE調度?它其中必須有專用的調度算法部件,以保證在1/3的速度差之內完成調度運算,否則最多只能實現一級緩存。
CACHE作用的局限性
從上面對CACHE調度算法的簡單介紹我們已經看到,在沒有專用算法部件的情況下,只有當兩級存儲器速度差很大的時候CACHE才起作用。內存和硬盤的速度差通常為105數量級,因此用內存做硬盤的高速緩存通常是很有效的。
另一方面,高頻使用的數據必須遠小于高速緩存的大小才行,如果大于高速緩存的大小就會造成剛進入緩存的數據馬上就被后來的數據擠出去,非但沒有加快速度,反而增加了一道間接傳遞的時間。當我們用PHOTOSHOP處理的圖像數據大于內存的1/3時就會出現這種情況。好在內存的速度遠大于硬盤的存取速度,這點變化我們通常感覺不出來。但在CPU中,就會非常明顯。CPU在處理圖像數據時,每次處理的數據量都遠遠超過它內部的一級和二級緩存,因此它的作用將大大降低,唯一的補償是處理程序的指令在一個操作——如銳化——中是固定的,它可以常駐高速緩存,減少讀指令的時間。這時不同CPU緩存的大小對運算速度的影響就很小了。因為即使再小的緩存,也存得下操作指令;再大的緩存也存不下被操作的圖像數據。
在CACHE調度中,為了保證數據的安全而做的回寫操作也是阻礙效率的因素。在對數據進行寫操作時,可以不將它寫回二級存儲器,如硬盤,一直到文件關閉甚至操作系統退出時再回寫,這樣的效率當然最高,但是非常不安全的。一旦一個程序崩潰,其它所有程序的數據就可能都損失了。所以現在的CACHE調度方案通常都內定必須立即回寫。我們馬上會想到,優化效率的一半沒有了。實際情況并非如此。因為回寫操作其實并不是立即發生的,它可以由一個優先級較低的線程去完成,當你在考慮怎么進一步調色時,操作系統插空將數據寫回硬盤。
即使內存非常大,PHOTOSHOP也將它的每一步操作寫回硬盤,這可以從PHOTOSHOP每次崩潰后都留下一個巨大的臨時文件看出。因此如果我們連續對圖像做旋轉、變形等操作,即使用了極大的內存,CACHE作用也只發生了一半。因此要全面提高PHOTOSHOP的效率,必須用RAID等技術提高硬盤的直接讀寫速度。同理,硬盤上的2M或4M緩存對于動輒幾十M的圖像數據是毫無作用的。解決速度不匹配問題,
cpu的處理速度遠高于內存的速度,從而引入高速緩存來做緩沖.
它的速度接近cpu也有和cpu相等的在沒有自來水的年代,廚房里面有個水缸很方便把,不用老跑到水井去打水;高速緩存就類似咯
言歸正傳:電腦硬件很多都有緩存的,比如CPU,硬盤,光驅等。而CPU一般就是高速緩存了,分一二三級高速緩存,我們常說的CPU二級緩存就是其中之一。具體參考:
其它,如硬盤的緩存,也有介紹。