快取

快取

快取(Cache memory)是硬碟控制器上的一塊記憶體晶片,具有極快的存取速度,它是硬碟內部存儲和外界接口之間的緩衝器。由於硬碟的內部數據傳輸速度和外界介面傳輸速度不同,快取在其中起到一個緩衝的作用。快取的大小與速度是直接關係到硬碟的傳輸速度的重要因素,能夠大幅度地提高硬碟整體性能。當硬碟存取零碎數據時需要不斷地在硬碟與記憶體之間交換數據,如果有大快取,則可以將那些零碎數據暫存在快取中,減小外系統的負荷,也提高了數據的傳輸速度。

基本信息

基本概念

快取是硬碟控制器上的一塊記憶體晶片,具有極快的存取速率,它是硬碟內部存儲和外界接口之間的緩衝器。由於硬碟的內部數據傳輸速率和外界介面傳輸速率不同,快取在其中起到一個緩衝的作用。快取的大小與速率是直接關係到硬碟的傳輸速率的重要因素,能夠大幅度地提高硬碟整體性能。當硬碟存取零碎數據時需要不斷地在硬碟與記憶體之間交換數據,有大快取,則可以將那些零碎數據暫存在快取中,減小系統的負荷,也提高了數據的傳輸速率。

基本簡介

快取是指可以進行高速數據交換的存儲器,它先於記憶體與CPU交換數據,因此速度很快。L1 Cache(一級快取)是CPU第一層高速快取。內置的L1高速快取的容量和結構對CPU的性能影響較大,不過高速緩衝存儲器均由靜態RAM組成,結構較複雜,在CPU管芯面積不能太大的情況下,L1級高速快取的容量不可能做得太大。一般L1快取的容量通常在32—256KB。L2 Cache(二級快取)是CPU的第二層高速快取,分內部和外部兩種晶片。內部的晶片二級快取運行速度與主頻相同,而外部的二級快取則只有主頻的一半。L2高速快取容量也會影響CPU的性能,原則是越大越好,現在普通台式機CPU的L2快取一般為128KB到2MB或者更高,筆記本、伺服器和工作站上用CPU的L2高速快取最高可達1MB-3MB。

快取只是記憶體中少部分數據的複製品,所以CPU到快取中尋找數據時,也會出現找不到的情況(因為這些數據沒有從記憶體複製到快取中去),這時CPU還是會到記憶體中去找數據,這樣系統的速度就慢下來了,不過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快取是個整體的,而且容量很低,英特爾公司從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指令控制開始讀取數據時,硬碟上的控制晶片會控制磁頭把正在讀取的的下一個或者幾個簇中的數據讀到快取中(由於硬碟上數據存儲時是比較連續的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數據的時候,硬碟則不需要再次讀取數據,直接把快取中的數據傳輸到記憶體中就可以了,由於快取的速度遠遠高於磁頭讀寫的速度,所以能夠達到明顯改善性能的目的;二是對寫入動作進行快取。當硬碟接到寫入數據的指令之後,並不會馬上將數據寫入到碟片上,而是先暫時存儲在快取里,然後傳送一個“數據已寫入”的信號給系統,這時系統就會認為數據已經寫入,並繼續執行下面的工作,而硬碟則在空閒(不進行讀取或寫入的時候)時再將快取中的數據寫入到碟片上。雖然對於寫入數據的性能有一定提升,但也不可避免地帶來了安全隱患——如果數據還在快取里的時候突然掉電,那么這些數據就會丟失。對於這個問題,硬碟廠商們自然也有解決辦法:掉電時,磁頭會藉助慣性將快取中的數據寫入零磁軌以外的暫存區域,等到下次啟動時再將這些數據寫入目的地;第三個作用就是臨時存儲最近訪問過的數據。有時候,某些數據是會經常需要訪問的,硬碟內部的快取會將讀取比較頻繁的一些數據存儲在快取中,再次讀取時就可以直接從快取中直接傳輸。
快取快取
快取容量的大小不同品牌、不同型號的產品各不相同,早期的硬碟快取基本都很小,只有幾百KB,已無法滿足用戶的需求。2MB和8MB快取是現今主流硬碟所採用,而在伺服器或特殊套用領域中還有快取容量更大的產品,甚至達到了16MB、64MB等。大容量的快取雖然可以在硬碟進行讀寫工作狀態下,讓更多的數據存儲在快取中,以提高硬碟的訪問速度,但並不意味著快取越大就越出眾。快取的套用存在一個算法的問題,即便快取容量很大,而沒有一個高效率的算法,那將導致套用中快取數據的命中率偏低,無法有效發揮出大容量快取的優勢。算法是和快取容量相輔相成,大容量的快取需要更為有效率的算法,否則性能會大大折扣,從技術角度上說,高容量快取的算法是直接影響到硬碟性能發揮的重要因素。更大容量快取是未來硬碟發展的必然趨勢。

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對比中,分別對比各種功能快取大小才有一定的意義。

二級快取

快取二級快取結構剖析

二級快取又叫l2 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提供更高的傳輸速度。

三級快取

L3Cache(三級快取),分為兩種,早期的是外置,現在的都是內置的。而它的實際作用即是,L3快取的套用可以進一步降低記憶體延遲,同時提升大數據量計算時處理器的性能。降低記憶體延遲和提升大數據量計算能力對遊戲都很有幫助。而在伺服器領域增加L3快取在性能方面仍然有顯著的提升。比方具有較大L3快取的配置利用物理記憶體會更有效,故它比較慢的磁碟I/O子系統可以處理更多的數據請求。具有較大L3快取的處理器提供更有效的檔案系統快取行為及較短訊息和處理器佇列長度。
其實最早的L3快取被套用在AMD發布的K6-III處理器上,當時的L3快取受限於製造工藝,並沒有被集成進晶片內部,而是集成在主機板上。在只能夠和系統匯流排頻率同步的L3快取同主記憶體其實差不了多少。後來使用L3快取的是英特爾為伺服器市場所推出的Itanium處理器。接著就是P4EE和至強MP。Intel還打算推出一款9MBL3快取的Itanium2處理器,和以後24MBL3快取的雙核心Itanium2處理器。
但基本上L3快取對處理器的性能提高顯得不是很重要,比方配備1MBL3快取的XeonMP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比快取增加帶來更有效的性能提升。

IE快取

快取快取
為了提高訪問網頁的速度,InternetExplorer瀏覽器會採用累積式加速的方法,將你曾經訪問的網頁內容(包括圖片以及cookie檔案等)存放在電腦里。這個存放空間,我們就稱它為IE快取。以後我們每次訪問網站時,IE會首先搜尋這個目錄,如果其中已經有訪問過的內容,那IE就不必從網上下載,而直接從快取中調出來,從而提高了訪問網站的速度。

設定IE快取大小:
要提高IE的訪問速度,IE快取是必不可少的。IE快取默認安裝在系統區,而且會需要占用較大的系統空間。所以如果你的系統空間的確很緊張,可以將快取占用的空間設得小一點,在IE的“工具”選單下選擇“Internet選項”,然後在“常規”選項卡中你會看到有“Internet臨時檔案”這一項,單擊“設定”按鈕,然後在彈出的“設定”對話框中將快取大小設定為一個合適的值。你也可以直接將IE快取移動到其它位置上去。 “Internet臨時檔案”下單擊“設定”,然後在“設定”對話框中單擊“移動資料夾”按鈕,在“瀏覽資料夾”中選擇資料夾,將IE快取移動到其他地方,這樣就不必擔心IE快取太大,占用更多空間了。

系統快取

快取快取
將CPU比作一個城裡的家具廠,而將存儲系統比作郊區的木料廠,那么實際情況就是木料廠離家具廠越來越遠,即使使用更大的卡車來運送木料,家具廠也得停工來等待木料送來。在這樣的情況下,一種解決方法是在市區建立一個小型倉庫,在裡面放置一些家具廠最常用到的木料。這個倉庫實際上就是家具廠的“Cache”,家具廠就可以從倉庫不停的及時運送需要的木料。當然,倉庫越大,存放的木料越多,效果就越好,因為這樣即使是些不常用的東西也可以在倉庫里找到。如果我們需要的木料倉庫里沒有,就要從城外的木料廠里繼續找,而家具廠就得等著了。倉庫就相對於L1快取,可以由CPU及時快速的讀寫,所以存儲的是CPU最常用代碼和數據(後面我們會介紹一下如何挑選“最常用”)。L1快取的速度比系統記憶體快的多是因為使用的是SRAM,這種記憶體單晶元使用四到六個電晶體。這也使得SRAM的造價相當的高,所以不能拿來用在整個存儲系統上。在大多數CPU上,L1快取和核心一起在一塊晶片上。如果在我們家具廠的例子中,就好比工廠和倉庫在同一條街上。這樣的設計使CPU可以從最近最快的地方得到數據,但是也使得“城外的木料廠”到“倉庫”和到“家具廠”的距離差不多遠。這樣如果CPU需要的數據不在L1快取中,也就是“Cache Miss”,從存儲設備取數據就要很長時間了。處理器速度越快,兩者之間的差距就越大。如果使用Pentium4那樣的高頻率處理器,從記憶體中取得數據就相當於“木料廠”位於另一個國家。

磁碟快取

快取快取
磁碟快取分為讀快取和寫快取。讀快取是指,作業系統為已讀取的檔案數據,在記憶體較空閒的情況下留在記憶體空間中(這個記憶體空間被稱之為“記憶體池”),當下次軟體或用戶再次讀取同一檔案時就不必重新從磁碟上讀取,從而提高速度。寫快取實際上就是將要寫入磁碟的數據先保存於系統為寫快取分配的記憶體空間中,當保存到記憶體池中的數據達到一個程度時,便將數據保存到硬碟中。這樣可以減少實際的磁碟操作,有效的保護磁碟免於重複的讀寫操作而導致的損壞,也能減少寫入所需的時間。

根據寫入方式的不同,有寫通式和回寫式兩種。寫通式在讀硬碟數據時,系統先檢查請求指令,看看所要的數據是否在快取中,如果在的話就由快取送出回響的數據,這個過程稱為命中。這樣系統就不必訪問硬碟中的數據,由於SDRAM的速度比磁介質快很多,因此也就加快了數據傳輸的速度。回寫式就是在寫入硬碟數據時也在快取中找,如果找到就由快取就數據寫入盤中,現在的多數硬碟都是採用的回寫式快取,這樣就大大提高了性能。快取英文名為 Cache。CPU 快取也是記憶體的一種,其數據交換速度快且運算頻率高。磁碟快取則是作業系統為磁碟輸入輸出而在普通物理記憶體中分配的一塊記憶體區域。

硬碟的緩衝區,硬碟的緩衝區是硬碟與外部匯流排交換數據的場所。硬碟的讀數據的過程是將磁信號轉化為電信號後,通過緩衝區一次次地填充與清空,再填充,再清空,一步步按照PCI匯流排的周期送出,可見,緩衝區的作用是相當重要的。它的作用也是提高性能,但是它與快取的不同之處在於:一、它是容量固定的硬體,而不像快取是可以由作業系統在記憶體中動態分配的。二、它對性能的影響大大超過磁碟快取對性能的影響,因為如果沒有緩衝區,就會要求每傳一個字(通常是4位元組)就需要讀一次磁碟或寫一次磁碟。

技術指標

快取快取
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系統的一個重要指標。

IE快取

IE快取設定為了提高訪問網頁的速率,InternetExplorer瀏覽器會採用累積式加速的方法,將曾經訪問的網頁內容(包括圖片以及cookie檔案等)存放在電腦里。這個存放空間,就稱它為IE快取。以後每次訪問網站時,IE會首先搜尋這個目錄,其中已經有訪問過的內容,那IE就不必從網上下載,而直接從快取中調出來,從而提高了訪問網站的速率。大小設定要提高IE的訪問速率,IE快取是必不可少的。IE快取默認安裝在系統區,而且會需要占用較大的系統空間。所以系統空間的確很緊張,可以將快取占用的空間設得小一點,在IE的“工具”選單下選擇“Internet選項”,然後在“常規”選項卡中會看到有“Internet臨時檔案”
這一項,單擊“設定”按鈕,然後在彈出的“設定”對話框中將快取大小設定為一個合適的值。也可以直接將IE快取移動到其它位置上去。
“Internet臨時檔案”下單擊“設定”,然後在“設定”對話框中單擊“移動資料夾”按鈕,在“瀏覽資料夾”中選擇資料夾,將IE快取移動到其他地
方,這樣就不必擔心IE快取太大,占用更多空間了。快取清理1、打開IE瀏覽器,點擊選單欄的"工具"選單選擇"internet選項"就會打開internet選項對話框,我們在"常規"標籤里可以看到"internet臨時檔案"一項,點擊裡面的"刪除cookies"按鈕,如圖:
2、點擊"刪除cookies"後,會彈出"刪除"TemporaryInternetFiles"資料夾中的所有cookies嗎?"的提示,直接點擊確定,如圖:
3、刪除cookies後,點擊"刪除檔案"按鈕,會彈出刪除檔案提示對話框,選擇"刪除所有脫機內容",點擊確定,刪除完脫機檔案後,點擊套用、確定,關閉所有IE,再重新打開,就清除了IE快取。
現在很多網站和免費空間都
設定了防盜鏈,或者只允許試聽而不允許下載,這給大家下載音樂帶來了不小的麻煩,既然可以試聽,應該是在IE瀏覽器的快取里,IE快取在電腦里的路徑一般
都是C:\DocumentsandSettings\Administrator\LocalSettings\Temporary
InternetFiles
打開IE快取發現裡面檔案特別多,想找到試聽過的那首mp3無異於大海撈針,於是在網上搜尋到一個管理IE快取的小軟體IECacheViewer
V1.11,用這個軟體很方便就找到了試聽的那首mp3。
使用方法:
1、下載IECacheViewerV1.11┊管理IE快取程式┊漢化綠色破解版
2、解壓縮下載到的IECacheViewer.rar
3、打開這個程式IECacheViewer.exe
4、軟體界面和使用方法如下
注意:
1、首先要試聽,如果能試聽到,那么你試聽的這首mp3就肯定在IE的快取里啦,然後就可以打開IECacheViewer去找,按下面的方法能很快找到!
2、一般一首10M大小4分鐘長度的歌,試聽2分鐘左右就能用IECacheViewer查找到,如果網速慢的話可能等待的時間更長些。
3、技巧:你可以先把歌曲全部試聽完,然後再打開IECacheViewer搜尋,這樣你就能把這些歌一網打盡啦,搜尋方法如下第二副圖釋。[1]13系統快取編輯快取設計將CPU比作一個城裡的家具廠,而將存儲系統比作郊區的木料廠,那么實際情況就是木料廠離家具廠越來越遠,即使使用更大的卡車來運送木料,家具廠也得停工來等待木料送來。在這樣的情況下,一種解決方法是在市區建立一個小型倉庫,在裡面放置一些家具廠最常用到的木料。這個倉庫實際上就是家具廠的“Cache”,家具廠就可以從倉庫不停的及時運送需要的木料。當然,倉庫越大,存放的木料越多,效果就越好,因為這樣即使是些不常用的東西也可以在倉庫里找到。需要的木料倉庫里沒有,就要從城外的木料廠里繼續找,而家具廠就得等著了。倉庫就相對於L1快取,可以由CPU及時快速的讀寫,所以存儲的是CPU最常用代碼和數據(後面會介紹一下如何挑選“最常用”)。L1快取的速率比系統記憶體快的多是因為使用的是SRAM,這種記憶體單晶元使用四到六個電晶體。這也使得SRAM的造價相當的高,所以不能拿來用在整個存儲系統上。在大多數CPU上,L1快取和核心一起在一塊晶片上。在家具廠的例子中,就好比工廠和倉庫在同一條街上。這樣的設計使CPU可以從最近最快的地方得到數據,但是也使得“城外的木料廠”到“倉庫”和到“家具廠”的距離差不多遠。這樣CPU需要的數據不在L1快取中,也就是“CacheMiss”,從存儲設備取數據就要很長時間了。處理器速率越快,兩者之間的差距就越大。使用Pentium4那樣的高頻率處理器,從記憶體中取得數據就相當於“木料廠”位於另一個國家。
其實,快取是CPU的一部分,它存在於CPU中CPU存取數據的速率非常的快,一秒鐘能夠存取、處理十億條指令和數據(術語:CPU主頻1G),而記憶體就慢很多,快的記憶體能夠達到幾十兆就不錯了,可見兩者的速率差異是多么的大快取是為了解決CPU速率和記憶體速
率的速率差異問題
記憶體中被CPU訪問最頻繁的數據和指令被複製入CPU中的快取,這樣CPU就可以不經常到象“蝸牛”一樣慢的記憶體中去取數據了,CPU只要到快取中去取就
行了,而快取的速率要比記憶體快很多這裡要特別指出的是:
1.因為快取只是記憶體中少部分數據的複製品,所以CPU到快取中尋找數據時,也會出現找不到的情況(因為這些數據沒有從記憶體複製到快取中去),這時CPU
還是會到記憶體中去找數據,這樣系統的速率就慢下來了,不過CPU會把這些數據複製到快取中去,以便下一次不要再到記憶體中去取。
2.因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又
不頻繁了,所以說快取中的數據要經常按照一定的算法來更換,這樣才能保證快取中的數據是被訪問最頻繁的3.關於一級快取和二級快取為了分清這兩個概念,我們先了解一下RAMram和ROM相對的,RAM是掉電以後,其中信息才消失的那一種,ROM是在掉電以後信息也不會消失的那一種。RAM又分兩種:一種是靜態RAM、SRAM;一種是動態RAM、DRAM。[2]14磁碟快取編輯磁碟快取磁碟快取分為讀快取和寫快取。讀快取是指,作業系統為已讀取的檔案數據,在記憶體較空閒的情況下留在記憶體空間中(這個記憶體空間被稱之為“記憶體池”),當下次軟體或用戶再次讀取同一檔案時就不必重新從磁碟上讀取,從而提高速率。寫快取實際上就是將要寫入磁碟的數據先保存於系統為寫快取分配的記憶體空間中,當保存到記憶體池中的數據達到一個程度時,便將數據保存到硬碟中。這樣可以減少實際的磁碟操作,有效的保護磁碟免於重複的讀寫操作而導致的損壞,也能減少寫入所需的時間。
根據寫入方式的不同,有寫通式和回寫式兩種。寫通式在讀硬碟數據時,系統先檢查請求指令,看看所要的數據是否在快取中,在的話就由快取送出回響的數據,這個過程稱為命中。這樣系統就不必訪問硬碟中的數據,由於SDRAM的速率比磁介質快很多,因此也就加快了數據傳輸的速率。回寫式就是在寫入硬碟數據時也在快取中找,找到就由快取就數據寫入盤中,多數硬碟都是採用的回寫式快取,這樣就大大提高了性能。快取英文名為Cache。CPU快取也是記憶體的一種,其數據交換速率快且運算頻率高。磁碟快取則是作業系統為磁碟輸入輸出而在普通物理記憶體中分配的一塊記憶體區域。
硬碟的緩衝區,硬碟的緩衝區是硬碟與外部匯流排交換數據的場所。硬碟的讀數據的過程是將磁信號轉化為電信號後,通過緩衝區一次次地填充與清空,再填充,再清空,一步步按照PCI匯流排的周期送出,可見,緩衝區的作用是相當重要的。它的作用也是提高性能,但是它與快取的不同之處在於:一、它是容量固定的硬體,而不像快取是可以由作業系統在記憶體中動態分配的。二、它對性能的影響大大超過磁碟快取對性能的影響,因為沒有緩衝區,就會要求每傳一個字(通常是4位元組)就需要讀一次磁碟或寫一次磁碟。15

快取分類

靜態頁面的快取可能有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,就是說一個組裡面有多個cacheline。E等於多少,就叫有多少路,所以叫E路組相聯。
組相聯的行匹配就要複雜一些了,因為要檢查多個行的標記位和有效位。如果最終找到了,還好。當然,找不到會從下一級存儲器中取出包含所需求數據的
行來替換,但一個組裡面這么多行,替換哪個行。如果有一個空行,自然就是替換空行,如果沒有空行,那就引發了一些其他的替換策略了。除了剛才介紹過的隨機
策略,還有最不常使用策略,最近最少使用策略。這些策略本身是需要一定開銷的,但要知道,不命中的開銷是很大的,所以為了保證命中率,採取一些相對複雜的
策略是值得的。全相聯快取所謂全相聯,就是由一個包含所有快取行的組組成的快取。由於只有一個組,所以組選擇特別簡單,此時地址就沒有組索引了,只有標記和偏移,也就是t部分和b部分。其他的步驟,行匹配和數據選擇,和組相聯原理是一樣的,只是規模大得多了。如果說上面關於這三種映射方法的描述非常抽象,為了能理解得更加透徹,把存儲器比作一家大超市,超市裡面的東西就是一個個位元組或者數據。為了讓好吃好玩受歡迎的東西能夠容易被看到,超市可以將這些東西集中在一塊放在一個專門的推薦櫃檯中,這個櫃檯就是快取。如果僅僅是把這些貨物放在櫃檯中即完事,那么這種就是完全關聯的方式。
可是如果想尋找自己想要的東西,還得在這些推薦貨物中尋找,而且由於位置不定,甚至可能把整個推薦櫃檯尋找個遍,這樣的效率無疑還是不高的。於是超市老總決定採用另一種方式,即將所有推薦貨物分為許多類別,如“果醬餅乾”,“朱古力餅乾”,“核桃牛奶”等,櫃檯的每一層存放一種貨物。這就是直接關聯的訪問原理。這樣的好處是容易讓顧客有的放矢,尋找更快捷,更有效。
但這種方法還是有其缺點,那就是如果需要果醬餅乾的顧客很多,需要朱古力餅乾的顧客相對較少,顯然對果醬餅乾的需求量會遠多於對朱古力餅乾的需求量,可是放置兩種餅乾的空間是一樣大的,於是可能出現這種情況:存放的果醬餅乾的空間遠不能滿足市場需求的數量,而朱古力餅
乾的存放空間卻被閒置。為了克服這個弊病,老闆決定改進存貨方法:還是將貨物分類存放,不過分類方法有所變化,按“餅乾”,“牛奶”,“果汁”等類別存
貨,也就是說,無論是什麼餅乾都能存入“餅乾”所用空間中,這種方法顯然提高了空間利用的充分性,讓存儲以及查找方法更有彈性。

技術指標

CPU快取CPU產品中,一級快取的容量基本在4kb到64kb之間,二級快取的容量則分為128kb、256kb、512kb、1mb、2mb等。一級快取容量各產品之間相差不大,而二級快取容量則是提高cpu性能的關鍵。二級快取容量的提升是由cpu製造工藝所決定的,容量增大必然導致cpu內部電晶體數的增加,要在有限的cpu面積上集成更大的快取,對製造工藝的要求也就越高
快取(cache)大小是CPU的重要指標之一,其結構與大小對CPU速率的影響非常大。簡單地講,快取就是用來存儲一些常用或即將用到的數據或指令,當需要這些數據或指令的時候直接從快取中讀取,這樣比到記憶體甚至硬碟中讀取要快得多,能夠大幅度提升cpu的處理速率。所謂處理器快取,通常指的是二級高速快取,或外部高速快取。即高速緩衝存儲器,是位於CPU和主存儲器dram(dynamicram)之間的規模較小的但速率很高的存儲器,通常由sram(靜態隨機存儲器)組成。用來存放那些被cpu頻繁使用的數據,以便使cpu不必依賴於速率較慢的dram(動態隨機存儲器)。l2高速快取一直都屬於速率極快而價格也相當昂貴的一類記憶體,稱為sram(靜態ram),sram(staticram)是靜態存儲器的英文縮寫。由於sram採用了與製作cpu相同的半導體工藝,因此與動態存儲器dram比較,sram的存取速率快,但體積較大,價格很高。
處理器快取的基本思想是用少量的sram作為cpu與dram存儲系統之間的緩衝區,即cache系統。80486以及更高檔微處理器的一個顯著特點是處理器晶片內集成了sram作為cache,由於這些cache裝在晶片內,因此稱為片內cache。486晶片內cache的容量通常為8k。高檔晶片如pentium為16kb,powerpc可達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系統的一個重要指標。18

光碟機快取

光存儲驅動器都帶有內部緩衝器或高速快取存儲器。這些緩衝器是實際的存儲晶片,安裝在驅動器的電路板上,它在傳送數據給PC之前可能準備或存儲更大的數據段。CD/DVD典型的緩衝器大小為128KB,不過具體的驅動器可大可小(通常越多越好)。可刻錄CD或DVD驅動器一般具有2MB-4MB以上的大容量緩衝器,用於防止快取欠載(bufferunderrun)錯誤,同時可以使刻錄工作平穩、恆定的寫入。一般來說,驅動器越快,就有更多的緩衝存儲器,以處理更高的傳輸速率。
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的快取容量,受製造成本的限制,快取不可能製作到足夠大。但適量的快取容量還是選擇光儲需要考慮的關鍵之一。

網路快取

網路快取系統結構圖WorldWideWeb(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協定使得伺服器可以有選擇地為每個文檔指定生存時間,即清楚地指出某個檔案的有效生命周期,生存時間很短即意味著“不要對其快取”。拷貝的保留時間可以是固定的,也可以是通過這個檔案的大小、來源、生存時間或內容計算出來的。

分布快取

分散式快取系統是為了解決資料庫伺服器和web伺服器之間的瓶頸。如果一個網站的流量很大,這個瓶頸將會非常明顯,每次資料庫查詢耗費的時間將會非常可觀。對於更新速度不是很快的網站,我們可以用靜態化來避免過多的資料庫查詢。對於更新速度以秒計的網站,靜態化也不會太理想,可以用快取系統來構建。如果只是單台伺服器用作快取,問題不會太複雜,如果有多台伺服器用作快取,就要考慮快取伺服器的負載均衡。
使用Memcached分散式快取服務來達到保存用戶的會話數據,而達到各個功能模組都能夠跨省份、跨伺服器共享本次會話中的私有數據的目的。每個省份使用一台伺服器來做為Memcached伺服器來存儲用話的會話中的數據,當然也可以多台伺服器,但必須確保每個省份的做Memcached伺服器數量必須一致,這樣才能夠保證Memcached客戶端操作的是同一份數據,保證數據的一致性。
會話數據的添加、刪除、修改
Memcached客戶端,添加、刪除和、修改會話信息數據時,不僅要添加、刪除、修改本省的Memcached伺服器數據,而且同時要對其它省份的Memcahed伺服器做同樣的操作,這樣用戶訪問其它省份的伺服器的功能模組進也能讀取到相同的會話數據。Memcached客戶端伺服器的列表使用區域網路的區域網路IP(如:192.168.1.179)操作本省的Memcahed伺服器,使用公網的IP((如:202.183.62.210))操作其它省份的Memcahe伺服器。
會話數據的讀取
系統所有模組讀取會話數據的Memcached客戶端伺服器列表都設為本省Memcached伺服器地址的區域網路IP來向Memcahed伺服器中讀取會話數據。
同一會話的確認
使用Cookie來保持客戶與服務端的聯繫。每一次會話開始就生成一個GUID作為SessionID,保存在客戶端的Cookie中,作用域是頂級域名,這樣二級、三級域名就可以共享到這個Cookie,系統中就使用這個SessionID來確認它是否是同一個會話。
會話數據的唯一ID
會話數據存儲在Memcached伺服器上
的唯一鍵Key也就是會話數據數據的唯一ID定義為:SessionID_Name,
SessionID就是保存在客戶端Cookie中的SessionID,Name就是會話數據的名稱,同一次會話中各個會話數據的Name必須是唯一
的,否則新的會話數據將覆蓋舊的會話數據。
會話的失效時間
會話的失效通過控制Cookie的有效時間來實現,會話的時間設為SessionID或Cookie中的有效時間,
且每一次訪問SessionID時都要重新設定一下Cookie的有效時間,這樣就達到的會話的有效時間就是兩次間訪問Cookie中SessionID
值的的最長時間,如果兩次訪問的間隔時間超過用效時間,保存在SessionID的Cookie將會失效,並生成新的SessionID存放在
Cookie中,SessionID改變啦,會話就結束啦。Memcached伺服器中會話數據的失效,每一次向Memcache伺服器中添加會話數據時,都把有效時間設為一天也就是24小時,讓Memcached服務使用它內部的機制去清除,不必在程式中特別做會話數據的刪除操作。數據在Memcache伺服器中有有效時間只是邏輯上的,就算是過了24小時,如果分配給Memcached服務的記憶體還夠用的話,數據還是保存在記憶體當中的,只是Memcache客戶端讀取不到而已。只有到了分配給Memcached服務的記憶體不夠用時,它才會清理沒用或者比較舊的數據,也就是懶性清除。

相關詞條

相關搜尋

熱門詞條