軟件 : 物理學類 > 緩存
目錄
緩存簡介
  cpu緩存(cache memory)位於cpu與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內cpu即將訪問的,當cpu調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在cpu中加入緩存是一種高效的解决方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲係統了。緩存對cpu的性能影響很大,主要是因為cpu的數據交換順序和cpu與緩存間的帶寬引起的。
  緩存是為瞭解决cpu速度和內存速度的速度差異問題。內存中被cpu訪問最頻繁的數據和指令被復製入cpu中的緩存,這樣cpu就可以不經常到象“蝸牛”一樣慢的內存中去取數據了,cpu衹要到緩存中去取就行了,而緩存的速度要比內存快很多。
  這裏要特別指出的是:
  1.因為緩存衹是內存中少部分數據的復製品,所以cpu到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復製到緩存中去),這時cpu還是會到內存中去找數據,這樣係統的速度就慢下來了,不過cpu會把這些數據復製到緩存中去,以便下一次不要再到內存中去取。
  2.因為隨着時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛纔還不頻繁的數據,此時已經需要被頻繁的訪問,剛纔還是最頻繁的數據,現在又不頻繁了,所以說緩存中的數據要經常按照一定的算法來更換,這樣才能保證緩存中的數據是被訪問最頻繁的。
緩存的工作原理
  緩存的工作原理是當cpu要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給cpu處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給cpu處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。
  正是這樣的讀取機製使cpu讀取緩存的命中率非常高(大多數cpu可達90%左右),也就是說cpu下一次要讀取的數據90%都在緩存中,衹有大約10%需要從內存讀取。這大大節省了cpu直接讀取內存的時間,也使cpu讀取數據時基本無需等待。總的來說,cpu讀取數據的順序是先緩存後內存。
一級緩存和二級緩存
  為了分清這兩個概念,我們先瞭解一下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找數據或指令的順序是:先到一級緩存中找,找不到再到二級緩存中找,如果還找不到就衹有到內存中找了。
緩存的技術發展
  最早先的cpu緩存是個整體的,而且容量很低,英特爾公司從pentium時代開始把緩存進行了分類。當時集成在cpu內核中的緩存已不足以滿足cpu的需求,而製造工藝上的限製又不能大幅度提高緩存的容量。因此出現了集成在與cpu同一塊電路板上或主板上的緩存,此時就把 cpu內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(data cache,d-cache)和指令緩存(instruction cache,i-cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被cpu訪問,減少了爭用cache所造成的衝突,提高了處理器效能。英特爾公司在推出pentium 4處理器時,用新增的一種一級追蹤緩存替代指令緩存,容量為12kμops,表示能存儲12k條微指令。
  隨着cpu製造工藝的發展,二級緩存也能輕易的集成在cpu內核中,容量也在逐年提升。現在再用集成在cpu內部與否來定義一、二級緩存,已不確切。而且隨着二級緩存被集成入cpu內核中,以往二級緩存與cpu大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為cpu提供更高的傳輸速度。
  二級緩存是cpu性能表現的關鍵之一,在cpu核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的cpu高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於cpu的重要性。
  cpu在緩存中找到有用的數據被稱為命中,當緩存中沒有cpu所需的數據時(這時稱為未命中),cpu纔訪問內存。從理論上講,在一顆擁有二級緩存的cpu中,讀取一級緩存的命中率為80%。也就是說cpu一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能準確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麽還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端的cpu中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的cpu中,衹有約5%的數據需要從內存中調用,這進一步提高了cpu的效率。
  為了保證cpu訪問時有較高的命中率,緩存中的內容應該按一定的算法替換。一種較常用的算法是“最近最少使用算法”(lru算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,lru算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。
  cpu産品中,一級緩存的容量基本在4kb到64kb之間,二級緩存的容量則分為128kb、256kb、512kb、1mb、2mb、4mb等。一級緩存容量各産品之間相差不大,而二級緩存容量則是提高cpu性能的關鍵。二級緩存容量的提升是由cpu製造工藝所决定的,容量增大必然導致cpu內部晶體管數的增加,要在有限的cpu面積上集成更大的緩存,對製造工藝的要求也就越高。
  現在主流的cpu二級緩存都在2mb左右,其中英特爾公司07年相繼推出了臺式機用的4mb、6mb二級緩存的高性能cpu,不過價格也是相對比較高的,對於對配置要求不是太高的朋友,一般的2mb二級緩存的雙核cpu基本也可以滿足日常上網需要了。
工作原理
  緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,找到就立即讀取並送給CPU處理;沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。正是這樣的讀取機製使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,衹有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。
  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指令控製開始讀取數據時,硬盤上的控製芯片會控製磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到緩存中(由於硬盤上數據存儲時是比較連續的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數據的時候,硬盤則不需要再次讀取數據,直接把緩存中的數據傳輸到內存中就可以了,由於緩存的速度遠遠高於磁頭讀寫的速度,所以能夠達到明顯改善性能的目的;二是對寫入動作進行緩存。當硬盤接到寫入數據的指令之後,並不會馬上將數據寫入到盤片上,而是先暫時存儲在緩存裏,然後發送一個“數據已寫入”的信號給係統,這時係統就會認為數據已經寫入,並繼續執行下面的工作,而硬盤則在空閑(不進行讀取或寫入的時候)時再將緩存中的數據寫入到盤片上。雖然對於寫入數據的性能有一定提升,但也不可避免地帶來了安全隱患——數據還在緩存裏的時候突然掉電,那麽這些數據就會丟失。對於這個問題,硬盤廠商們自然也有解决辦法:掉電時,磁頭會藉助慣性將緩存中的數據寫入零磁道以外的暫存區域,等到下次啓動時再將這些數據寫入目的地;第三個作用就是臨時存儲最近訪問過的數據。有時候,某些數據是會經常需要訪問的,硬盤內部的緩存會將讀取比較頻繁的一些數據存儲在緩存中,再次讀取時就可以直接從緩存中直接傳輸。
  緩存容量的大小不同品牌、不同型號的産品各不相同,早期的硬盤緩存基本都很小,衹有幾百KB,已無法滿足用戶的需求。2MB和8MB緩存是現今主流硬盤所采用,而在服務器或特殊應用領域中還有緩存容量更大的産品,甚至達到了16MB、64MB等。大容量的緩存雖然可以在硬盤進行讀寫工作狀態下,讓更多的數據存儲在緩存中,以提高硬盤的訪問速度,但並不意味着緩存越大就越出衆。緩存的應用存在一個算法的問題,即便緩存容量很大,而沒有一個高效率的算法,那將導致應用中緩存數據的命中率偏低,無法有效發揮出大容量緩存的優勢。算法是和緩存容量相輔相成,大容量的緩存需要更為有效率的算法,否則性能會大大折扣,從技術角度上說,高容量緩存的算法是直接影響到硬盤性能發揮的重要因素。更大容量緩存是未來硬盤發展的必然趨勢。
主要意義
  緩存工作的原則,就是“引用的局部性”,這可以分為時間局部性和空間局部性。空間局部性是指CPU在某一時刻需要某個數據,那麽很可能下一步就需要其附近的數據;時間局部性是指當某個數據被訪問過一次之後,過不了多久時間就會被再一次訪問。對於應用程序而言,不管是指令流還是數據流都會出現引用的局部性現象。
  舉個簡單的例子,比如在播放DVD影片的時候,DVD數據由一係列字節組成,這個時候CPU會依次從頭處理到尾地調用DVD數據,如果CPU這次讀取DVD數據為1分30秒,那麽下次讀取的時候就會從1分31秒開始,因此這種情況下有序排列的數據都是依次被讀入CPU進行處理。從數據上來看,對於Word一類的應用程序通常都有着較好的空間局部性。用戶在使用中不會一次打開7、8個文檔,不諱在其中某一個文檔中打上幾個詞就換一個。大多數用戶都是打開一兩個文檔,然後就是長時間對它們進行處理而不會做其他事情。這樣在內存中的數據都會集中在一個區域中,也就可以被CPU集中處理。
  從程序代碼上來考慮,設計者通常也會盡量避免出現程序的跳躍和分支,讓CPU可以不中斷地處理大塊連續數據。遊戲、模擬和多媒體處理程序通常都是這方面的代表,以小段代碼連續處理大塊數據。不過在辦公運用程序中,情況就不一樣了。改動字體,改變格式,保存文檔,都需要程序代碼不同部分起作用,而用到的指令通常都不會在一個連續的區域中。於是CPU就不得不在內存中不斷跳來跳去尋找需要的代碼。這也就意味着對於辦公程序而言,需要較大的緩存來讀入大多數經常使用的代碼,把它們放在一個連續的區域中。如果緩存不夠,就需要緩存中的數據,而如果緩存足夠大的話,所有的代碼都可以放入,也就可以獲得最高的效率。同理,高端的數據應用以及遊戲應用則需要更高容量的緩存
CPU緩存
  CPU緩存(Cache Memory)是位於CPU與內存之間的臨時存儲器,它的容量比內存小的多但是交換速度卻比內存要快得多。緩存的出現主要是為瞭解决CPU運算速度與內存讀寫速度不匹配的矛盾,因為CPU運算速度要比內存讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解决方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲係統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。
  緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,找到就立即讀取並送給CPU處理;沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。正是這樣的讀取機製使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,衹有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。
  緩存基本上都是采用SRAM存儲器,SRAM是英文Static RAM的縮寫,它是一種具有靜態存取功能的存儲器,不需要刷新電路即能保存它內部存儲的數據。不像DRAM內存那樣需要刷新電路,每隔一段時間,固定要對DRAM刷新充電一次,否則內部的數據即會消失,因此SRAM具有較高的性能,但是SRAM也有它的缺點,即它的集成度較低,相同容量的DRAM內存可以設計為較小的體積,但是SRAM卻需要很大的體積,這也是不能將緩存容量做得太大的重要原因。它的特點歸納如下:優點是節能、速度快、不必配合內存刷新電路、可提高整體的工作效率,缺點是集成度低、相同的容量體積較大、而且價格較高,衹能少量用於關鍵性係統以提高效率。按照數據讀取順序和與CPU結合的緊密程度,CPU緩存可以分為一級緩存,二級緩存,部分高端CPU還具有三級緩存,每一級緩存中所儲存的全部數據都是下一級緩存的一部分,這三種緩存的技術難度和製造成本是相對遞減的,所以其容量也是相對遞增的。當CPU要讀取一個數據時,首先從一級緩存中查找,沒有找到再從二級緩存中查找,還是沒有就從三級緩存或內存中查找。一般來說,每級緩存的命中率大概都在80%左右,也就是說全部數據量的80%都可以在一級緩存中找到,衹剩下20%的總數據量纔需要從二級緩存、三級緩存或內存中讀取,由此可見一級緩存是整個CPU緩存架構中最為重要的部分。
一級緩存
  一級緩存(Level 1 Cache)簡稱L1 Cache,位於CPU內核的旁邊,是與CPU結合最為緊密的CPU緩存,也是歷史上最早出現的CPU緩存。由於一級緩存的技術難度和製造成本最高,提高容量所帶來的技術難度增加和成本增加非常大,所帶來的性能提升卻不明顯,性價比很低,而且現有的一級緩存的命中率已經很高,所以一級緩存是所有緩存中容量最小的,比二級緩存要小得多。
  一級緩存可以分為一級數據緩存(Data Cache,D-Cache)和一級指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據以及對執行這些數據的指令進行即時解碼,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的衝突,提高了處理器效能。大多數CPU的一級數據緩存和一級指令緩存具有相同的容量,例如AMD的Athlon XP就具有64KB的一級數據緩存和64KB的一級指令緩存,其一級緩存就以64KB+64KB來表示,其餘的CPU的一級緩存表示方法以此類推。
  Intel的采用NetBurst架構的CPU(最典型的就是Pentium 4)的一級緩存有點特殊,使用了新增加的一種一級追蹤緩存(Execution Trace Cache,T-Cache或ETC)來替代一級指令緩存,容量為12KμOps,表示能存儲12K條即
  12000條解碼後的微指令。一級追蹤緩存與一級指令緩存的運行機製是不相同的,一級指令緩存衹是對指令作即時的解碼而並不會儲存這些指令,而一級追蹤緩存同樣會將一些指令作解碼,這些指令稱為微指令(micro-ops),而這些微指令能儲存在一級追蹤緩存之內,無需每一次都作出解碼的程序,因此一級追蹤緩存能有效地增加在高工作頻率下對指令的解碼能力,而μOps就是micro-ops,也就是微型操作的意思。它以很高的速度將μops提供給處理器核心。Intel NetBurst微型架構使用執行跟蹤緩存,將解碼器從執行循環中分離出來。這個跟蹤緩存以很高的帶寬將uops提供給核心,從本質上適於充分利用軟件中的指令級並行機製。Intel並沒有公佈一級追蹤緩存的實際容量,衹知道一級追蹤緩存能儲存12000條微指令(micro-ops)。所以,不能簡單地用微指令的數目來比較指令緩存的大小。實際上,單核心的NetBurst架構CPU使用8Kμops的緩存已經基本上夠用了,多出的4kμops可以大大提高緩存命中率。而要使用超綫程技術的話,12KμOps就會有些不夠用,這就是為什麽有時候Intel處理器在使用超綫程技術時會導致性能下降的重要原因。例如Northwood核心的一級緩存為8KB+12KμOps,就表示其一級數據緩存為8KB,一級追蹤緩存為12KμOps;而Prescott核心的一級緩存為16KB+12KμOps,就表示其一級數據緩存為16KB,一級追蹤緩存為12KμOps。在這裏12KμOps絶對不等於12KB,單位都不同,一個是μOps,一個是Byte(字節),而且二者的運行機製完全不同。所以那些把Intel的CPU一級緩存簡單相加,例如把Northwood核心說成是20KB一級緩存,把Prescott核心說成是28KB一級緩存,並且據此認為Intel處理器的一級緩存容量遠遠低於AMD處理器128KB的一級緩存容量的看法是完全錯誤的,二者不具有可比性。在架構有一定區別的CPU對比中,很多緩存已經難以找到對應的東西,即使類似名稱的緩存在設計思路和功能定義上也有區別了,此時不能用簡單的算術加法來進行對比;而在架構極為近似的CPU對比中,分別對比各種功能緩存大小纔有一定的意義。
二級緩存
  二級緩存(Level2 cache),它是處理器內部的一些緩衝存儲器,其作用跟內存一樣。上溯到上個世紀80年代,由於處理器的運行速度越來越快,慢慢地,處理器需要從內存中讀取數據的速度需求就越來越高了。然而內存的速度提升速度卻很緩慢,而能高速讀寫數據的內存價格又非常高昂,不能大量采用。從性能價格比的角度出發,英特爾等處理器設計生産公司想到一個辦法,就是用少量的高速內存和大量的低速內存結合使用,共同為處理器提供數據。這樣就兼顧了性能和使用成本的最優。而那些高速的內存因為是處於cpu和內存之間的位置,又是臨時存放數據的地方,所以就叫做緩衝存儲器了,簡稱“緩存”。它的作用就像倉庫中臨時堆放貨物的地方一樣,貨物從運輸車輛上放下時臨時堆放在緩存區中,然後再搬到內部存儲區中長時間存放。貨物在這段區域中存放的時間很短,就是一個臨時貨場。 最初緩存衹有一級,後來處理器速度又提升了,一級緩存不夠用了,於是就添加了二級緩存。二級緩存是比一級緩存速度更慢,容量更大的內存,主要就是做一級緩存和內存之間數據臨時交換的地方用。為了適應速度更快的處理器p4ee,已經出現了三級緩存了,它的容量更大,速度相對二級緩存也要慢一些,但是比內存可快多了。 緩存的出現使得cpu處理器的運行效率得到了大幅度的提升,這個區域中存放的都是cpu頻繁要使用的數據,所以緩存越大處理器效率就越高,同時由於緩存的物理結構比內存復雜很多,所以其成本也很高。
  大量使用二級緩存帶來的結果是處理器運行效率的提升和成本價格的大幅度不等比提升。舉個例子,服務器上用的至強處理器和普通的p4處理器其內核基本上是一樣的,就是二級緩存不同。至強的二級緩存是2mb~16mb,p4的二級緩存是512kb,於是最便宜的至強也比最貴的p4貴,原因就在二級緩存不同。即l2 cache。由於l1級高速緩存容量的限製,為了再次提高cpu的運算速度,在cpu外部放置一高速存儲器,即二級緩存。工作主頻比較靈活,可與cpu同頻,也可不同。cpu在讀取數據時,先在l1中尋找,再從l2尋找,然後是內存,在後是外存儲器。所以l2對係統的影響也不容忽視。
  最早先的cpu緩存是個整體的,而且容量很低,英特爾公司從pentium時代開始把緩存進行了分類。當時集成在cpu內核中的緩存已不足以滿足cpu的需求,而製造工藝上的限製又不能大幅度提高緩存的容量。因此出現了集成在與cpu同一塊電路板上或主板上的緩存,此時就把cpu內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(data cache,d-cache)和指令緩存(instruction cache,i-cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被cpu訪問,減少了爭用cache所造成的衝突,提高了處理器效能。英特爾公司在推出pentium 4處理器時,用新增的一種一級追蹤緩存替代指令緩存,容量為12kμops,表示能存儲12k條微指令。隨着cpu製造工藝的發展,二級緩存也能輕易的集成在cpu內核中,容量也在逐年提升。再用集成在cpu內部與否來定義一、二級緩存,已不確切。而且隨着二級緩存被集成入cpu內核中,以往二級緩存與cpu大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為cpu提供更高的傳輸速度。
三級緩存
  L3 Cache(三級緩存),分為兩種,早期的是外置,現在的都是內置的。而它的實際作用即是,L3緩存的應用可以進一步降低內存延遲,同時提升大數據量計算時處理器的性能。降低內存延遲和提升大數據量計算能力對遊戲都很有幫助。而在服務器領域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內存會更有效,故它比較慢的磁盤I/O子係統可以處理更多的數據請求。具有較大L3緩存的處理器提供更有效的文件係統緩存行為及較短消息和處理器隊列長度。
  其實最早的L3緩存被應用在AMD發佈的K6-III處理器上,當時的L3緩存受限於製造工藝,並沒有被集成進芯片內部,而是集成在主板上。在衹能夠和係統總綫頻率同步的L3緩存同主內存其實差不了多少。後來使用L3緩存的是英特爾為服務器市場所推出的Itanium處理器。接着就是P4EE和至強MP。Intel還打算推出一款9MB L3緩存的Itanium2處理器,和以後24MB L3緩存的雙核心Itanium2處理器。
  但基本上L3緩存對處理器的性能提高顯得不是很重要,比方配備1MB L3緩存的Xeon MP處理器卻仍然不是Opteron的對手,由此可見前端總綫的增加,要比緩存增加帶來更有效的性能提升。
IE緩存
  為了提高訪問網頁的速度,InternetExplorer瀏覽器會采用纍積式加速的方法,將曾經訪問的網頁內容(包括圖片以及cookie文件等)存放在電腦裏。這個存放空間,就稱它為IE緩存。以後每次訪問網站時,IE會首先搜索這個目錄,其中已經有訪問過的內容,那IE就不必從網上下載,而直接從緩存中調出來,從而提高了訪問網站的速度。
  設置IE緩存大小
  要提高IE的訪問速度,IE緩存是必不可少的。IE緩存默認安裝在係統區,而且會需要占用較大的係統空間。所以係統空間的確很緊張,可以將緩存占用的空間設得小一點,在IE的“工具”菜單下選擇“Internet選項”,然後在“常規”選項卡中會看到有“Internet臨時文件”這一項,單擊“設置”按鈕,然後在彈出的“設置”對話框中將緩存大小設置為一個合適的值。也可以直接將IE緩存移動到其它位置上去。 “Internet臨時文件”下單擊“設置”,然後在“設置”對話框中單擊“移動文件夾”按鈕,在“瀏覽文件夾”中選擇文件夾,將IE緩存移動到其他地方,這樣就不必擔心IE緩存太大,占用更多空間了。
  清理IE緩存
  1、打開IE瀏覽器,點擊菜單欄的"工具"菜單選擇"internet選項"就會打開internet選項對話框,我們在"常規"標簽裏可以看到"internet臨時文件"一項,點擊裏面的"刪除cookies"按鈕,如圖:
  2、點擊"刪除cookies"後,會彈出"刪除"Temporary Internet Files"文件夾中的所有cookies嗎?"的提示,直接點擊確定,如圖:
  3、刪除cookies後,點擊"刪除文件"按鈕,會彈出刪除文件提示對話框,選擇"刪除所有脫機內容",點擊確定,刪除完脫機文件後,點擊應用、確定,關閉所有IE,再重新打開,就清除了IE緩存
  第一步第二步第三步
  現在很多網站和免費空間都設置了防盜鏈,或者衹允許試聽而不允許下載,這給大傢下載音樂帶來了不小的麻煩,既然可以試聽,應該是在IE瀏覽器的緩存裏,IE緩存在電腦裏的路徑一般都是C:Documents and SettingsAdministratorLocal SettingsTemporary Internet Files 打開IE緩存發現裏面文件特別多,想找到試聽過的那首mp3無異於大海撈針,於是在網上搜索到一個管理IE緩存的小軟件IECacheViewer V1.11,用這個軟件很方便就找到了試聽的那首mp3。
  使用方法:
  1、下載IECacheViewer V1.11┊管理IE緩存程序┊漢化緑色破解版
  2、解壓縮下載到的IECacheViewer.rar
  3、打開這個程序IECacheViewer.exe
  4、軟件界面和使用方法如下
  註意:
  1、首先要試聽,如果能試聽到,那麽你試聽的這首mp3就肯定在IE的緩存裏啦,然後就可以打開IECacheViewer去找,按下面的方法能很快找到!
  2、一般一首10M大小4分鐘長度的歌,試聽2分鐘左右就能用IECacheViewer查找到,如果網速慢的話可能等待的時間更長些。
  3、技巧:你可以先把歌麯全部試聽完,然後再打開IECacheViewer搜索,這樣你就能把這些歌一網打盡啦,搜索方法如下第二副圖釋。
係統緩存
  將CPU比作一個城裏的傢具廠,而將存儲係統比作郊區的木料廠,那麽實際情況就是木料廠離傢具廠越來越遠,即使使用更大的卡車來運送木料,傢具廠也得停工來等待木料送來。在這樣的情況下,一種解决方法是在市區建立一個小型倉庫,在裏面放置一些傢具廠最常用到的木料。這個倉庫實際上就是傢具廠的“Cache”,傢具廠就可以從倉庫不停的及時運送需要的木料。當然,倉庫越大,存放的木料越多,效果就越好,因為這樣即使是些不常用的東西也可以在倉庫裏找到。需要的木料倉庫裏沒有,就要從城外的木料廠裏繼續找,而傢具廠就得等着了。倉庫就相對於L1緩存,可以由CPU及時快速的讀寫,所以存儲的是CPU最常用代碼和數據(後面會介紹一下如何挑選“最常用”)。L1緩存的速度比係統內存快的多是因為使用的是SRAM,這種內存單晶元使用四到六個晶體管。這也使得SRAM的造價相當的高,所以不能拿來用在整個存儲係統上。在大多數CPU上,L1緩存和核心一起在一塊芯片上。在傢具廠的例子中,就好比工廠和倉庫在同一條街上。這樣的設計使CPU可以從最近最快的地方得到數據,但是也使得“城外的木料廠”到“倉庫”和到“傢具廠”的距離差不多遠。這樣CPU需要的數據不在L1緩存中,也就是“Cache Miss”,從存儲設備取數據就要很長時間了。處理器速度越快,兩者之間的差距就越大。使用Pentium4那樣的高頻率處理器,從內存中取得數據就相當於“木料廠”位於另一個國傢。
  其實,緩存是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。
磁盤緩存
  磁盤緩存分為讀緩存和寫緩存。讀緩存是指,操作係統為已讀取的文件數據,在內存較空閑的情況下留在內存空間中(這個內存空間被稱之為“內存池”),當下次軟件或用戶再次讀取同一文件時就不必重新從磁盤上讀取,從而提高速度。寫緩存實際上就是將要寫入磁盤的數據先保存於係統為寫緩存分配的內存空間中,當保存到內存池中的數據達到一個程度時,便將數據保存到硬盤中。這樣可以減少實際的磁盤操作,有效的保護磁盤免於重複的讀寫操作而導致的損壞,也能減少寫入所需的時間。
  根據寫入方式的不同,有寫通式和回寫式兩種。寫通式在讀硬盤數據時,係統先檢查請求指令,看看所要的數據是否在緩存中,在的話就由緩存送出響應的數據,這個過程稱為命中。這樣係統就不必訪問硬盤中的數據,由於SDRAM的速度比磁介質快很多,因此也就加快了數據傳輸的速度。回寫式就是在寫入硬盤數據時也在緩存中找,找到就由緩存就數據寫入盤中,多數硬盤都是采用的回寫式緩存,這樣就大大提高了性能。緩存英文名為 Cache。CPU 緩存也是內存的一種,其數據交換速度快且運算頻率高。磁盤緩存則是操作係統為磁盤輸入輸出而在普通物理內存中分配的一塊內存區域。
  硬盤的緩衝區,硬盤的緩衝區是硬盤與外部總綫交換數據的場所。硬盤的讀數據的過程是將磁信號轉化為電信號後,通過緩衝區一次次地填充與清空,再填充,再清空,一步步按照PCI總綫的周期送出,可見,緩衝區的作用是相當重要的。它的作用也是提高性能,但是它與緩存的不同之處在於:一、它是容量固定的硬件,而不像緩存是可以由操作係統在內存中動態分配的。二、它對性能的影響大大超過磁盤緩存對性能的影響,因為沒有緩衝區,就會要求每傳一個字(通常是4字節)就需要讀一次磁盤或寫一次磁盤。
靜態緩存與動態緩存
  靜態頁面的緩存可能有2種形式:其實主要區別就是CMS是否自己負責關聯內容的緩存更新管理。
  1、靜態緩存:是在新內容發佈的同時就立刻生成相應內容的靜態頁面,比如:2003年3月22日,管理員通過後臺內容管理界面錄入一篇文章後,並同步更新相關索引頁上的鏈接。
  2、動態緩存:是在新內容發佈以後,並不預先生成相應的靜態頁面,直到對相應內容發出請求時,如果前臺緩存服務器找不到相應緩存,就嚮後臺內容管理服務器發出請求,後臺係統會生成相應內容的靜態頁面,用戶第一次訪問頁面時可能會慢一點,但是以後就是直接訪問緩存了。
  靜態緩存的缺點:
  復雜的觸發更新機製:這兩種機製在內容管理係統比較簡單的時候都是非常適用的。但對於一個關係比較復雜的網站來說,頁面之間的邏輯引用關係就成為一個非常非常復雜的問題。最典型的例子就是一條新聞要同時出現在新聞首頁和相關的3個新聞專題中,在靜態緩存模式中,每發一篇新文章,除了這篇新聞內容本身的頁面外,還需要係統通過觸發器生成多個新的相關靜態頁面,這些相關邏輯的觸發也往往就會成為內容管理係統中最復雜的部分之一。
  舊內容的批量更新: 通過靜態緩存發佈的內容,對於以前生成的靜態頁面的內容很難修改,這樣用戶訪問舊頁面時,新的模板根本無法生效。
  在動態緩存模式中,每個動態頁面衹需要關心,而相關的其他頁面能自動更新,從而大大減少了設計相關頁面更新觸發器的需要。
緩存的映射
  根據E的數值,高速緩存可以被分為不用的類,包括直接映射緩存,組相聯緩存和全相聯緩存
  直接映射緩存,這種緩存中,每個組衹有一行,E = 1,結構很簡單,整個緩存就相當於關於組的一維數組。不命中時的行替換也很簡單,就一個行嘛,哪不命中替換哪。為了適應容量小的情況,第n+1層存儲器中的某個數據塊,你衹能被替換到上一層(也就是第n層)存儲器中的某個位置的子集中。現在假設一個直接映射的高速緩存,(S,E,B,m) = ( 4,1,2,4 ),也就是說,地址是4位(16個),有四個組,每個組一行,每個塊兩個字節。由於有16個地址,表徵16個字節,所以總共有8個塊,但衹有4個組,也就是4行。衹能把多個塊映射到相同的緩存組,比如0和4都映射到組1,1和5都映射到組2,等等。這下問題就來了,比如先讀塊0,此時塊0的數據被cache到組0。然後我再讀塊4,因為塊4也是被映射到組0的,組0又衹有一行,那就衹有把以前塊0的數據覆蓋了,要是之後我又讀塊0,就 miss了,衹能到下級的存儲器去找。實際的循環程序中,很容易引起這種情況,稱其為抖動。這種情況的存在,自然大大影響了性能。所以,需要更好的映射方案。
  組相聯緩存,在組相聯緩存裏,E大於1,就是說一個組裏面有多個cache line。E等於多少,就叫有多少路,所以叫E路組相聯。
  組相聯的行匹配就要復雜一些了,因為要檢查多個行的標記位和有效位。如果最終找到了,還好。當然,找不到會從下一級存儲器中取出包含所需求數據的行來替換,但一個組裏面這麽多行,替換哪個行。如果有一個空行,自然就是替換空行,如果沒有空行,那就引發了一些其他的替換策略了。除了剛纔介紹過的隨機策略,還有最不常使用策略,最近最少使用策略。這些策略本身是需要一定開銷的,但要知道,不命中的開銷是很大的,所以為了保證命中率,采取一些相對復雜的策略是值得的。
  全相聯緩存,所謂全相聯,就是由一個包含所有緩存行的組組成的緩存。由於衹有一個組,所以組選擇特別簡單,此時地址就沒有組索引了,衹有標記和偏移,也就是t部分和b部分。其他的步驟,行匹配和數據選擇,和組相聯原理是一樣的,衹是規模大得多了。如果說上面關於這三種映射方法的描述非常抽象,為了能理解得更加透徹,把存儲器比作一傢大超市,超市裏面的東西就是一個個字節或者數據。為了讓好吃好玩受歡迎的東西能夠容易被看到,超市可以將這些東西集中在一塊放在一個專門的推薦櫃臺中,這個櫃臺就是緩存。如果僅僅是把這些貨物放在櫃臺中即完事,那麽這種就是完全關聯的方式。
  可是如果想尋找自己想要的東西,還得在這些推薦貨物中尋找,而且由於位置不定,甚至可能把整個推薦櫃臺尋找個遍,這樣的效率無疑還是不高的。於是超市老總决定采用另一種方式,即將所有推薦貨物分為許多類別,如“果醬餅幹”,“巧剋力餅幹”,“核桃牛奶”等,櫃臺的每一層存放一種貨物。這就是直接關聯的訪問原理。這樣的好處是容易讓顧客有的放矢,尋找更快捷,更有效。
  但這種方法還是有其缺點,那就是如果需要果醬餅幹的顧客很多,需要巧剋力餅幹的顧客相對較少,顯然對果醬餅幹的需求量會遠多於對巧剋力餅幹的需求量,可是放置兩種餅幹的空間是一樣大的,於是可能出現這種情況:存放的果醬餅幹的空間遠不能滿足市場需求的數量,而巧剋力餅幹的存放空間卻被閑置。為了剋服這個弊病,老闆决定改進存貨方法:還是將貨物分類存放,不過分類方法有所變化,按“餅幹”,“牛奶”,“果汁”等類別存貨,也就是說,無論是什麽餅幹都能存入“ 餅幹”所用空間中,這種方法顯然提高了空間利用的充分性,讓存儲以及查找方法更有彈性。
技術指標
  CPU産品中,一級緩存的容量基本在4kb到64kb之間,二級緩存的容量則分為128kb、256kb、512kb、1mb、2mb等。一級緩存容量各産品之間相差不大,而二級緩存容量則是提高cpu性能的關鍵。二級緩存容量的提升是由cpu製造工藝所决定的,容量增大必然導致cpu內部晶體管數的增加,要在有限的cpu面積上集成更大的緩存,對製造工藝的要求也就越高
  緩存(cache)大小是CPU的重要指標之一,其結構與大小對CPU速度的影響非常大。簡單地講,緩存就是用來存儲一些常用或即將用到的數據或指令,當需要這些數據或指令的時候直接從緩存中讀取,這樣比到內存甚至硬盤中讀取要快得多,能夠大幅度提升cpu的處理速度。所謂處理器緩存,通常指的是二級高速緩存,或外部高速緩存。即高速緩衝存儲器,是位於CPU和主存儲器dram(dynamic ram)之間的規模較小的但速度很高的存儲器,通常由sram(靜態隨機存儲器)組成。用來存放那些被cpu頻繁使用的數據,以便使cpu不必依賴於速度較慢的dram(動態隨機存儲器)。l2高速緩存一直都屬於速度極快而價格也相當昂貴的一類內存,稱為sram(靜態ram),sram(static ram)是靜態存儲器的英文縮寫。由於sram采用了與製作cpu相同的半導體工藝,因此與動態存儲器dram比較,sram的存取速度快,但體積較大,價格很高。
  處理器緩存的基本思想是用少量的sram作為cpu與dram存儲係統之間的緩衝區,即cache係統。80486以及更高檔微處理器的一個顯著特點是處理器芯片內集成了sram作為cache,由於這些cache裝在芯片內,因此稱為片內cache。486芯片內cache的容量通常為8k。高檔芯片如pentium為16kb,power pc可達32kb。pentium微處理器進一步改進片內cache,采用數據和雙通道cache技術,相對而言,片內cache的容量不大,但是非常靈活、方便,極大地提高了微處理器的性能。片內cache也稱為一級cache。由於486,586等高檔處理器的時鐘頻率很高,一旦出現一級cache未命中的情況,性能將明顯惡化。在這種情況下采用的辦法是在處理器芯片之外再加cache,稱為二級cache。二級cache實際上是cpu和主存之間的真正緩衝。由於係統板上的響應時間遠低於cpu的速度,沒有二級cache就不可能達到486,586等高檔處理器的理想速度。二級cache的容量通常應比一級cache大一個數量級以上。在係統設置中,常要求用戶確定二級cache是否安裝及尺寸大小等。二級cache的大小一般為128kb、256kb或512kb。在486以上檔次的微機中,普遍采用256kb或512kb同步cache。所謂同步是指cache和cpu采用了相同的時鐘周期,以相同的速度同步工作。相對於異步cache,性能可提高30%以上。pc及其服務器係統的發展趨勢之一是cpu主頻越做越高,係統架構越做越先進,而主存dram的結構和存取時間改進較慢。因此,緩存(cache)技術愈顯重要,在pc係統中cache越做越大。廣大用戶已把cache做為評價和選購pc係統的一個重要指標。
光驅緩存
  光存儲驅動器都帶有內部緩衝器或高速緩存存儲器。這些緩衝器是實際的存儲芯片,安裝在驅動器的電路板上,它在發送數據給PC之前可能準備或存儲更大的數據段。CD/DVD典型的緩衝器大小為128KB,不過具體的驅動器可大可小(通常越多越好)。可刻錄CD或DVD驅動器一般具有2MB-4MB以上的大容量緩衝器,用於防止緩存欠載(buffer underrun)錯誤,同時可以使刻錄工作平穩、恆定的寫入。一般來說,驅動器越快,就有更多的緩衝存儲器,以處理更高的傳輸速率。
  CD/DVD驅動器帶有緩衝或高速緩存具有很多好處。緩衝可以保證PC以固定速度接收數據。當一個應用程序從驅動器請求數據時,數據可能位於分散在光盤上不同地方。因為驅動器的訪問速度相對較慢,在數據讀取時會使驅動器不得不間隔性嚮PC發送數據。驅動器的緩衝在軟件的控製下可以預先讀取並準備光盤的內容目錄,從而加速第一次數據請求。
  光驅讀取數據的規律是首先在緩存裏尋找,如果在緩存中沒有找到纔會去光盤上尋找,大容量的緩存可以預先讀取的數據越多,但在實際應用中CD-ROM、DVD-ROM等讀取操作時,讀取重複信息的機會是相對較少的,大部分的光盤更多的時候是一次讀取數量較多的文件內容,因此在CD-ROM、DVD-ROM驅動器上緩存重要性得不到體現,因此大多此類産品采用較小的緩存容量。CD-ROM一般有128KB、256KB、512KB幾種;而DVD一般有128KB、256KB、512KB,衹有個別的外置式DVD光驅采用了較大容量的緩存
  在刻錄機或COMMBO産品上,緩存就變得十分重要了。在刻錄光盤時,係統會把需要刻錄的數據預先讀取到緩存中,然後再從緩存讀取數據進行刻錄,緩存就是數據和刻錄盤之間的橋梁。係統在傳輸數據到緩存的過程中,不可避免的會發生傳輸的停頓,如在刻錄大量小容量文件時,硬盤讀取的速度很可能會跟不上刻錄的速度,就會造成緩存內的數據輸入輸出不成比例,如果這種狀態持續一段時間,就會導致緩存內的數據被全部輸出,而得不到輸入,此時就會造成緩存欠載錯誤,這樣就會導致刻錄光盤失敗。因此刻錄機和COMMBO産品都會采用較大容量的緩存容量,再配合防刻死技術,就能把刻壞盤的幾率降到最低。同時緩存還能協調數據傳輸速度,保證數據傳輸的穩定性和可靠性。
  刻錄機産品一般有2MB、4MB、8MB,COMBO産品一般有2MB、4MB、8MB的緩存容量,受製造成本的限製,緩存不可能製作到足夠大。但適量的緩存容量還是選擇光儲需要考慮的關鍵之一
No. 19
  網絡緩存及其作用
  World Wide Web(WWW)正在演繹一種新的人類生活,Internet在以前所未有的勢頭推進,一方面,人們為五彩繽紛的網絡世界所陶醉,另一方面又為日漸變慢的訪問速度所苦惱……
  什麽影響Internet訪問速度
  訪問網站的過程是通過建立在TCP/IP協議之上的HTTP協議來完成的。從客戶端發出一個HTTP請求開始,用戶所經歷的等待時間主要决定於DNS和網站的響應時間。網站域名首先必須被DNS服務器解析為IP地址,HTTP的延時則由在客戶端和服務器間的若幹個往返時間所决定。
  往返時間是指客戶端等待每次請求的響應時間,平均往返時間取决於三個方面:
  1. 網站服務器的延時
  網站服務器造成的延時在往返時間中占主要比例。當某個服務器收到多個並發HTTP請求時,會産生排隊延時。由於響應一個HTTP請求,往往需要多次訪問本地硬盤,所以即使是一臺負載並不大的服務器,也可能産生幾十或幾百微秒的延時。
  2. 由路由器、網關、代理服務器和防火墻引入的延時
  通常在客戶端和服務器之間的路徑上會存在多個網絡設備,如路由器、網關、代理和防火墻等。它們對經過的IP包都要做存儲/轉發的操作,於是會引入排隊延時和處理延時。在網絡擁塞時,這些設備甚至會丟包,此時會寄希望於客戶端和服務器通過端到端的協議來恢復通信。
   3. 不同通信鏈路上的數據傳輸速度
  在廣域網中,從一個網絡設備到另一個網絡設備間的數據傳輸速度是决定往返時間的一個重要因素。但基本帶寬的作用並不是像人們想象的那麽重要,一項測試表明,當網站采用T3速率接入Internet時,也僅有2%的網頁或對象能以64kbps的速度提供給客戶端,這顯然表明,帶寬在網絡性能上不是最關鍵的因素。
  今天Internet在嚮世界的每一個角落延伸,用戶嚮一個服務器發出的 請求可能會經過8000公裏到1.6萬公裏的距離,光速帶來的延時和網絡設備的延時是網絡如此緩慢的最根本原因。
  網絡緩存解决根本問題
  既然影響網絡速度的原因是由距離和光速引起,那麽加速Web訪問的唯一途徑就是縮短客戶端與網站之間的距離。通過將用戶頻繁訪問的頁面和對象存放在離用戶更近的地方,才能減少光速引入的延時,同時由於減少了路由中的環節,也相應地減少了路由器、防火墻和代理等引入的延時。
  傳統的解决辦法是建立鏡像服務器來達到縮短距離的目的。但這個辦法存在很大的不足,對於某個站點而言,不可能在離每個用戶群較近的地方都建立鏡像站點,若對大多數網站都用這樣的辦法就更不經濟,同時管理和維護鏡像站點是一項非常睏難的工作。
  網絡緩存是一種降低Internet流量和提高終端用戶響應時間的新興網絡技術。它的觀念來自於計算機和網絡的其他領域,如目前流行的Intel架構的CPU中就存在緩存,用於提高內存存取的速度;各種操作係統在進行磁盤存取時也會利用緩存來提高速度;分佈式文件係統通常也通過緩存來提高客戶機和服務器之間的速度。
  1.緩存的類型
  網絡緩存可以在客戶端,也可以在網絡上,由此我們將緩存分為兩類:瀏覽器緩存和代理緩存
  幾乎目前所有的瀏覽器都有一個內置的緩存,它們通常利用客戶端本地的內存和硬盤來完成緩存工作,同時允許用戶對緩存的內容大小作控製。瀏覽器緩存是網絡緩存的一個極端的情況,因為緩存設在客戶機本地。通常一個客戶端衹有一個用戶或幾個共享計算機用戶,瀏覽器緩存要求的硬盤空間通常在5MB到50MB的範圍內。但是瀏覽器緩存在用戶之間難以共享,不同客戶端的緩存無法實現交流,因而緩存的內容與效果相當有限。
  代理緩存則是一種獨立的應用層網絡服務,它更像E-mail、Web、DNS等服務。許多用戶不僅可以共享緩存,而且可以同時訪問緩存中的內容。企業級代理緩存一般需要配置高端的處理器和存儲係統,采用專用的軟件,要求的硬盤空間在5MB到50GB左右,內存為64MB到512MB。
  代理處於客戶端與網站服務器之間,在某些情況下,這種連接是不允許的,如網站在防火墻內,這時客戶端必須與代理建立TCP連接,然後由代理建立與網站服務器的TCP連接。代理在服務器和客戶端之間起到了數據接力的作用。代理發出的HTTP請求與一般的HTTP請求有細小的不同,主要在於它包含了完整的URL,而不衹是URL的路徑。
  2.代理緩存的工作原理
  當代理緩存收到客戶端的請求時,它首先檢查所請求的內容是否已經被緩存。如果沒有找到,緩存必須以客戶端的名義轉發請求,並在收到服務器發出的文件時,將它以一定的形式保存在本地硬盤,並將其發送給客戶端。
  如果客戶端請求的內容已被緩存,還存在兩種可能:其一,緩存的內容已經過時,即緩存中保存的內容超過了預先設定的時限,或網站服務器的網頁已經更新,這時緩存會要求原服務器驗證緩存中的內容,要麽更新內容,要麽返回“未修改”的消息;其二,緩存的內容是新的,即與原網站的內容保持同步,此時稱為緩存命中,這時緩存會立即將已保存的內容送給客戶端。
  在客戶端的請求沒有命中時,反而增加了緩存存儲和轉發的處理時間。在這種情況下,代理緩存是否仍有意義呢?實際上,代理緩存能夠同時與網站服務器建立多個並發的TCP/IP連接,並行獲取網站上的內容。緩存的存在從整體上降低了對網站訪問的次數,也就降低了單位時間內服務器端的排隊數目,因而這時並發連接的排隊延時要小得多。優秀的緩存甚至能實現對網頁內相關鏈接內容的預取以加快連接的速度。
  3.代理緩存的策略
  當原服務器的文件修改或被刪除後,緩存又如何知道它保存的拷貝已經作廢呢?HTTP協議為緩存服務提供了基本的支持,它使緩存能嚮原服務器查詢,某個文件是否更改,如果緩存的拷貝過時則進行有條件下載。僅當原服務器文件超過指定的日期時,纔會發出新的文件。
  但是這些詢問操作對網絡服務器造成的負載幾乎和獲取該文件差不多,因此不可能在客戶端嚮緩存發起請求時都執行這樣的操作。HTTP協議使得服務器可以有選擇地為每個文檔指定生存時間,即清楚地指出某個文件的有效生命周期,生存時間很短即意味着“不要對其緩存”。拷貝的保留時間可以是固定的,也可以是通過這個文件的大小、來源、生存時間或內容計算出來的。
英文解釋
  1. :  Cache
相關詞
IT電腦百科計算機組成原理芯片電腦CPUcpu服務器
服務無盤網絡高速加速設備exe內存管理ooccag一級緩存