必威电竞|足球世界杯竞猜平台

緩存
來源:互聯(lián)網(wǎng)

緩存(cache),原始意義是指訪問速度比一般隨機(jī)存取存儲(chǔ)器(RAM)快的一種高速存儲(chǔ)器,通常它不像系統(tǒng)主存那樣使用DRAM技術(shù),而使用昂貴但較快速的sram技術(shù)。緩存的設(shè)置是所有現(xiàn)代計(jì)算機(jī)系統(tǒng)發(fā)揮高性能的重要因素之一。

特點(diǎn)介紹

緩存是指可以進(jìn)行高速數(shù)據(jù)交換的存儲(chǔ)器,它先于內(nèi)存與CPU交換數(shù)據(jù),因此速率很快。L1Cache(一級(jí)緩存)是CPU第一層高速緩存。內(nèi)置的L1高速緩存的容量和結(jié)構(gòu)對(duì)CPU的性能影響較大,不過高速緩沖存儲(chǔ)器均由靜態(tài)RAM組成,結(jié)構(gòu)較復(fù)雜,在CPU管芯面積不能太大的情況下,L1級(jí)高速緩存的容量不可能做得太大。一般L1緩存的容量通常在32—256KB。L2 Cache(二級(jí)緩存)是CPU的第二層高速緩存,分內(nèi)部和外部?jī)煞N芯片。內(nèi)部的芯片二級(jí)緩存運(yùn)行速率與主頻相同,而外部的二級(jí)緩存則只有主頻的一半。L2高速緩存容量也會(huì)影響CPU的性能,原則是越大越好,普通臺(tái)式機(jī)CPU的L2緩存一般為128KB到2MB或者更高,筆記本、服務(wù)器和工作站上用CPU的L2高速緩存最高可達(dá)1MB-3MB。

工作原理

緩存的工作原理是當(dāng)CPU要讀取一個(gè)數(shù)據(jù)時(shí),首先從CPU緩存中查找,找到就立即讀取并送給CPU處理;沒有找到,就從速率相對(duì)較慢的內(nèi)存中讀取并送給CPU處理,同時(shí)把這個(gè)數(shù)據(jù)所在的數(shù)據(jù)塊調(diào)入緩存中,可以使得以后對(duì)整塊數(shù)據(jù)的讀取都從緩存中進(jìn)行,不必再調(diào)用內(nèi)存。

RAM(Random-Access Memory)和ROM(Read-Only Memory)相對(duì)的,RAM是掉電以后,其中的信息就消失那一種,ROM在掉電以后信息也不會(huì)消失那一種。RAM又分兩種,一種是靜態(tài)RAM,sram(Static RAM);一種是動(dòng)態(tài)RAM,DRAM(Dynamic RAM)。前者的存儲(chǔ)速率要比后者快得多,使用的內(nèi)存一般都是動(dòng)態(tài)RAM。為了增加系統(tǒng)的速率,把緩存擴(kuò)大就行了,擴(kuò)的越大,緩存的數(shù)據(jù)越多,系統(tǒng)就越快了,緩存通常都是靜態(tài)RAM,速率是非常的快,但是靜態(tài)RAM集成度低(存儲(chǔ)相同的數(shù)據(jù),靜態(tài)RAM的體積是動(dòng)態(tài)RAM的6倍),價(jià)格高(同容量的靜態(tài)RAM是動(dòng)態(tài)RAM的四倍),由此可見,擴(kuò)大靜態(tài)RAM作為緩存是一個(gè)非常愚蠢的行為,但是為了提高系統(tǒng)的性能和速率,必須要擴(kuò)大緩存,這樣就有了一個(gè)折中的方法,不擴(kuò)大原來的靜態(tài)RAM緩存,而是增加一些高速動(dòng)態(tài)RAM做為緩存,這些高速動(dòng)態(tài)RAM速率要比常規(guī)動(dòng)態(tài)RAM快,但比原來的靜態(tài)RAM緩存慢,把原來的靜態(tài)RAM緩存叫一級(jí)緩存,而把后來增加的動(dòng)態(tài)RAM叫二級(jí)緩存。

功能作用

HDD的緩存主要起三種作用:

預(yù)讀取

當(dāng)硬盤受到CPU指令控制開始讀取數(shù)據(jù)時(shí),硬盤上的控制芯片會(huì)控制磁頭把正在讀取的簇的下一個(gè)或者幾個(gè)簇中的數(shù)據(jù)讀到緩存中(由于硬盤上數(shù)據(jù)存儲(chǔ)時(shí)是比較連續(xù)的,所以讀取命中率較高),當(dāng)需要讀取下一個(gè)或者幾個(gè)簇中的數(shù)據(jù)的時(shí)候,硬盤則不需要再次讀取數(shù)據(jù),直接把緩存中的數(shù)據(jù)傳輸?shù)絻?nèi)存中就可以了,由于緩存的速率遠(yuǎn)遠(yuǎn)高于磁頭讀寫的速率,所以能夠達(dá)到明顯改善性能的目的。

寫入

當(dāng)硬盤接到寫入數(shù)據(jù)的指令之后,并不會(huì)馬上將數(shù)據(jù)寫入到盤片上,而是 先暫時(shí)存儲(chǔ)在緩存里,然后發(fā)送一個(gè)“數(shù)據(jù)已寫入”的信號(hào)給系統(tǒng),這時(shí)系統(tǒng)就會(huì)認(rèn)為數(shù)據(jù)已經(jīng)寫入,并繼續(xù)執(zhí)行下面的工作,而硬盤則在空閑(不進(jìn)行讀取或?qū)懭氲臅r(shí)候)時(shí)再將緩存中的數(shù)據(jù)寫入到盤片上。雖然對(duì)于寫入數(shù)據(jù)的性能有一定提升,但也不可避免地帶來了安全隱患——數(shù)據(jù)還在緩存里的時(shí)候突然掉電,那么這些數(shù)據(jù)就會(huì)丟失。對(duì)于這個(gè)問題,HDD廠商們自然也有解決辦法:掉電時(shí),磁頭會(huì)借助慣性將緩存中的數(shù)據(jù)寫入零磁道以外的暫存區(qū)域,等到下次啟動(dòng)時(shí)再將這些數(shù)據(jù)寫入目的地。

臨時(shí)存儲(chǔ)

有時(shí)候,某些數(shù)據(jù)是會(huì)經(jīng)常需要訪問的,像硬盤內(nèi)部的緩存(暫存器的一種)會(huì)將讀取比較頻繁的一些數(shù)據(jù)存儲(chǔ)在緩存中,再次讀取時(shí)就可以直接從緩存中直接傳輸。緩存就像是一臺(tái)計(jì)算機(jī)的內(nèi)存一樣,在硬盤讀寫數(shù)據(jù)時(shí),負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)、寄放等功能。這樣一來,不僅可以大大減少數(shù)據(jù)讀寫的時(shí)間以提高HDD的使用效率。同時(shí)利用緩存還可以讓硬盤減少頻繁的讀寫,讓硬盤更加安靜,更加省電。更大的硬盤緩存,你將讀取游戲時(shí)更快,拷貝文件時(shí)候更快,在系統(tǒng)啟動(dòng)中更為領(lǐng)先。

緩存容量的大小不同品牌、不同型號(hào)的產(chǎn)品各不相同,早期的硬盤緩存基本都很小,只有幾百KB,已無法滿足用戶的需求。16MB和32MB緩存是現(xiàn)今主流硬盤所采用,而在服務(wù)器或特殊應(yīng)用領(lǐng)域中還有緩存容量更大的產(chǎn)品,甚至達(dá)到了64MB、128MB等。大容量的緩存雖然可以在HDD進(jìn)行讀寫工作狀態(tài)下,讓更多的數(shù)據(jù)存儲(chǔ)在緩存中,以提高硬盤的訪問速率,但并不意味著緩存越大就越出眾。緩存的應(yīng)用存在一個(gè)算法的問題,即便緩存容量很大,而沒有一個(gè)高效率的算法,那將導(dǎo)致應(yīng)用中緩存數(shù)據(jù)的命中率偏低,無法有效發(fā)揮出大容量緩存的優(yōu)勢(shì)。算法是和緩存容量相輔相成,大容量的緩存需要更為有效率的算法,否則性能會(huì)大大折扣,從技術(shù)角度上說,高容量緩存的算法是直接影響到硬盤性能發(fā)揮的重要因素。更大容量緩存是未來HDD發(fā)展的必然趨勢(shì)。

技術(shù)發(fā)展

最早先的CPU緩存是個(gè)整體的,而且容量很低,英特爾公司從Pentium時(shí)代開始把緩存進(jìn)行了分類。當(dāng)時(shí)集成在CPU內(nèi)核中的緩存已不足以滿足CPU的需求,而制造工藝上的限制又不能大幅度提高緩存的容量。因此出現(xiàn)了集成在與CPU同一塊電路板上或主板上的緩存,此時(shí)就把 CPU內(nèi)核集成的緩存稱為一級(jí)緩存,而外部的稱為二級(jí)緩存。一級(jí)緩存中還分數(shù)據(jù)緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數(shù)據(jù)和執(zhí)行這些數(shù)據(jù)的指令,而且兩者可以同時(shí)被CPU訪問,減少了爭(zhēng)用Cache所造成的沖突,提高了處理器效能。英特爾在推出Pentium 4處理器時(shí),用新增的一種一級(jí)追蹤緩存替代指令緩存,容量為12KμOps,表示能存儲(chǔ)12K條微指令。二級(jí)緩存是CPU性能表現(xiàn)的關(guān)鍵之一,在CPU核心不變化的情況下,增加二級(jí)緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級(jí)緩存上有差異,由此可見二級(jí)緩存對(duì)于CPU的重要性。

CPU在緩存中找到有用的數(shù)據(jù)被稱為命中,當(dāng)緩存中沒有CPU所需的數(shù)據(jù)時(shí)(這時(shí)稱為未命中),CPU才訪問內(nèi)存。從理論上講,在一顆擁有二級(jí)緩存的CPU中,讀取一級(jí)緩存的命中率為80%。也就是說CPU一級(jí)緩存中找到的有用數(shù)據(jù)占數(shù)據(jù)總量的80%,剩下的20%從二級(jí)緩存中讀取。由于不能準(zhǔn)確預(yù)測(cè)將要執(zhí)行的數(shù)據(jù),讀取二級(jí)緩存的命中率也在80%左右(從二級(jí)緩存讀到有用的數(shù)據(jù)占總數(shù)據(jù)的16%)。那么還有的數(shù)據(jù)就不得不從內(nèi)存調(diào)用,但這已經(jīng)是一個(gè)相當(dāng)小的比例了。較高端的CPU中,還會(huì)帶有三級(jí)緩存,它是為讀取二級(jí)緩存后未命中的數(shù)據(jù)設(shè)計(jì)的—種緩存,在擁有三級(jí)緩存的CPU中,只有約5%的數(shù)據(jù)需要從內(nèi)存中調(diào)用,這進(jìn)一步提高了CPU的效率。為了保證CPU訪問時(shí)有較高的命中率,緩存中的內(nèi)容應(yīng)該按一定的算法替換。一種較常用的算法是“最近最少使用算法”(LRU算法),它是將最近一段時(shí)間內(nèi)最少被訪問過的行淘汰出局。因此需要為每行設(shè)置一個(gè)計(jì)數(shù)器,LRU算法是把命中行的計(jì)數(shù)器清零,其他各行計(jì)數(shù)器加1。當(dāng)需要替換時(shí)淘汰行計(jì)數(shù)器計(jì)數(shù)值最大的數(shù)據(jù)行出局。這是一種高效、科學(xué)的算法,其計(jì)數(shù)器清零過程可以把一些頻繁調(diào)用后再不需要的數(shù)據(jù)淘汰出緩存,提高緩存的利用率。主流的CPU二級(jí)緩存都在2MB左右,其中英特爾公司07年相繼推出了臺(tái)式機(jī)用的4MB、6MB二級(jí)緩存的高性能CPU,不過價(jià)格也是相對(duì)比較高的,對(duì)于對(duì)配置要求不是太高的朋友,一般的2MB二級(jí)緩存的雙核CPU基本也可以滿足日常上網(wǎng)需要了。

主要意義

緩存工作的原則,就是“引用的局部性”,這可以分為時(shí)間局部性和空間局部性。空間局部性是指CPU在某一時(shí)刻需要某個(gè)數(shù)據(jù),那么很可能下一步就需要其附近的數(shù)據(jù);時(shí)間局部性是指當(dāng)某個(gè)數(shù)據(jù)被訪問過一次之后,過不了多久時(shí)間就會(huì)被再一次訪問。對(duì)于應(yīng)用程序而言,不管是指令流還是數(shù)據(jù)流都會(huì)出現(xiàn)引用的局部性現(xiàn)象。

舉個(gè)簡(jiǎn)單的例子,比如在播放DVD影片的時(shí)候,DVD數(shù)據(jù)由一系列字節(jié)組成,這個(gè)時(shí)候CPU會(huì)依次從頭處理到尾地調(diào)用DVD數(shù)據(jù),如果CPU這次讀取DVD數(shù)據(jù)為1分30秒,那么下次讀取的時(shí)候就會(huì)從1分31秒開始,因此這種情況下有序排列的數(shù)據(jù)都是依次被讀入CPU進(jìn)行處理。從數(shù)據(jù)上來看,對(duì)于Word一類的應(yīng)用程序通常都有著較好的空間局部性。用戶在使用中不會(huì)一次打開7、8個(gè)文檔,不會(huì)在其中某一個(gè)文檔中打上幾個(gè)詞就換另一個(gè)。大多數(shù)用戶都是打開一兩個(gè)文檔,然后就是長(zhǎng)時(shí)間對(duì)它們進(jìn)行處理而不會(huì)做其他事情。這樣在內(nèi)存中的數(shù)據(jù)都會(huì)集中在一個(gè)區(qū)域中,也就可以被CPU集中處理。

從程序代碼上來考慮,設(shè)計(jì)者通常也會(huì)盡量避免出現(xiàn)程序的跳躍和分支,讓CPU可以不中斷地處理大塊連續(xù)數(shù)據(jù)。游戲、模擬和多媒體處理程序通常都是這方面的代表,以小段代碼連續(xù)處理大塊數(shù)據(jù)。不過在辦公運(yùn)用程序中,情況就不一樣了。改動(dòng)字體,改變格式,保存文檔,都需要程序代碼不同部分起作用,而用到的指令通常都不會(huì)在一個(gè)連續(xù)的區(qū)域中。于是CPU就不得不在內(nèi)存中不斷跳來跳去尋找需要的代碼。這也就意味著對(duì)于辦公程序而言,需要較大的緩存來讀入大多數(shù)經(jīng)常使用的代碼,把它們放在一個(gè)連續(xù)的區(qū)域中。如果緩存不夠,就需要內(nèi)存中的數(shù)據(jù)。而如果緩存足夠大的話,所有的代碼都可以放入,也就可以獲得最高的效率。同理,高端的數(shù)據(jù)應(yīng)用以及游戲應(yīng)用則需要更高容量的緩存。

CPU緩存

介紹

CPU緩存(Cache Memory)是位于CPU與內(nèi)存之間的臨時(shí)存儲(chǔ)器,它的容量比內(nèi)存小的多但是交換速率卻比內(nèi)存要快得多。緩存的出現(xiàn)主要是為了解決CPU運(yùn)算速率與內(nèi)存讀寫速率不匹配的矛盾,因?yàn)镃PU運(yùn)算速率要比內(nèi)存讀寫速率快很多,這樣會(huì)使CPU花費(fèi)很長(zhǎng)時(shí)間等待數(shù)據(jù)到來或把數(shù)據(jù)寫入內(nèi)存。在緩存中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時(shí)間內(nèi)CPU即將訪問的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時(shí),就可避開內(nèi)存直接從緩存中調(diào)用,從而加快讀取速率。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個(gè)內(nèi)存儲(chǔ)器(緩存+內(nèi)存)就變成了既有緩存的高速率,又有內(nèi)存的大容量的存儲(chǔ)系統(tǒng)了。緩存對(duì)CPU的性能影響很大,主要是因?yàn)镃PU的數(shù)據(jù)交換順序和CPU與緩存間的帶寬引起的。

緩存基本上都是采用sram存儲(chǔ)器,SRAM是英文Static RAM的縮寫,它是一種具有靜態(tài)存取功能的存儲(chǔ)器,不需要刷新電路即能保存它內(nèi)部存儲(chǔ)的數(shù)據(jù)。不像DRAM內(nèi)存那樣需要刷新電路,每隔一段時(shí)間,固定要對(duì)DRAM刷新充電一次,否則內(nèi)部的數(shù)據(jù)即會(huì)消失,因此SRAM具有較高的性能,但是SRAM也有它的缺點(diǎn),即它的集成度較低,相同容量的DRAM內(nèi)存可以設(shè)計(jì)為較小的體積,但是SRAM卻需要很大的體積,這也是不能將緩存容量做得太大的重要原因。它的特點(diǎn)歸納如下:優(yōu)點(diǎn)是節(jié)能、速率快、不必配合內(nèi)存刷新電路、可提高整體的工作效率,缺點(diǎn)是集成度低、相同的容量體積較大、而且價(jià)格較高,只能少量用于關(guān)鍵性系統(tǒng)以提高效率。

1、讀取順序

CPU要讀取一個(gè)數(shù)據(jù)時(shí),首先從Cache中查找,如果找到就立即讀取并送給CPU處理;如果沒有找到,就用相對(duì)慢的速度從內(nèi)存中讀取并送給CPU處理,同時(shí)把這個(gè)數(shù)據(jù)所在的數(shù)據(jù)塊調(diào)入Cache中,可以使得以后對(duì)整塊數(shù)據(jù)的讀取都從Cache中進(jìn)行,不必再調(diào)用內(nèi)存。

正是這樣的讀取機(jī)制使CPU讀取Cache的命中率非常高(大多數(shù)CPU可達(dá)90%左右),也就是說CPU下一次要讀取的數(shù)據(jù)90%都在Cache中,只有大約10%需要從內(nèi)存讀取。這大大節(jié)省了CPU直接讀取內(nèi)存的時(shí)間,也使CPU讀取數(shù)據(jù)時(shí)基本無需等待。總的來說,CPU讀取數(shù)據(jù)的順序是先Cache后內(nèi)存。

2、緩存分類

英特爾從Pentium開始將Cache分開,通常分為一級(jí)高速緩存L1和二級(jí)高速緩存L2。在以往的觀念中,L1 Cache是集成在CPU中的,被稱為片內(nèi)Cache。在L1中還分?jǐn)?shù)據(jù)Cache(D-Cache)和指令Cache(I-Cache)。它們分別用來存放數(shù)據(jù)和執(zhí)行這些數(shù)據(jù)的指令,而且兩個(gè)Cache可以同時(shí)被CPU訪問,減少了爭(zhēng)用Cache所造成的沖突,提高了處理器效能。

3、讀取命中率

CPU在Cache中找到有用的數(shù)據(jù)被稱為命中,當(dāng)Cache中沒有CPU所需的數(shù)據(jù)時(shí)(這時(shí)稱為未命中),CPU才訪問內(nèi)存。從理論上講,在一顆擁有2級(jí)Cache的CPU中,讀取L1 Cache的命中率為80%。也就是說CPU從L1 Cache中找到的有用數(shù)據(jù)占數(shù)據(jù)總量的80%,剩下的20%從L2 Cache讀取。由于不能準(zhǔn)確預(yù)測(cè)將要執(zhí)行的數(shù)據(jù),讀取L2的命中率也在80%左右(從L2讀到有用的數(shù)據(jù)占總數(shù)據(jù)的16%)。那么還有的數(shù)據(jù)就不得不從內(nèi)存調(diào)用,但這已經(jīng)是一個(gè)相當(dāng)小的比例了。在一些高端領(lǐng)域的CPU(像英特爾的Itanium)中,我們常聽到L3 Cache,它是為讀取L2 Cache后未命中的數(shù)據(jù)設(shè)計(jì)的—種Cache,在擁有L3 Cache的CPU中,只有約5%的數(shù)據(jù)需要從內(nèi)存中調(diào)用,這進(jìn)一步提高了CPU的效率。

一級(jí)緩存

一級(jí)緩存(Level 1 Cache)簡(jiǎn)稱L1 Cache,位于CPU內(nèi)核的旁邊,是與CPU結(jié)合最為緊密的CPU緩存,也是歷史上最早出現(xiàn)的CPU緩存。由于一級(jí)緩存的技術(shù)難度和制造成本最高,提高容量所帶來的技術(shù)難度增加和成本增加非常大,所帶來的性能提升卻不明顯,性價(jià)比很低,而且現(xiàn)有的一級(jí)緩存的命中率已經(jīng)很高,所以一級(jí)緩存是所有緩存中容量最小的,比二級(jí)緩存要小得多。

一級(jí)緩存可以分為一級(jí)數(shù)據(jù)緩存(Data Cache,D-Cache)和一級(jí)指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數(shù)據(jù)以及對(duì)執(zhí)行這些數(shù)據(jù)的指令進(jìn)行即時(shí)解碼,而且兩者可以同時(shí)被CPU訪問,減少了爭(zhēng)用Cache所造成的沖突,提高了處理器效能。大多數(shù)CPU的一級(jí)數(shù)據(jù)緩存和一級(jí)指令緩存具有相同的容量,例如AMD的Athlon XP就具有64KB的一級(jí)數(shù)據(jù)緩存和64KB的一級(jí)指令緩存,其一級(jí)緩存就以64KB+64KB來表示,其余的CPU的一級(jí)緩存表示方法以此類推。

英特爾的采用NetBurst架構(gòu)的CPU(最典型的就是Pentium 4)的一級(jí)緩存有點(diǎn)特殊,使用了新增加的一種一級(jí)追蹤緩存(Execution Trace Cache,T-Cache或ETC)來替代一級(jí)指令緩存,容量為12KμOps,表示能存儲(chǔ)12K條即12000條解碼后的微指令。一級(jí)追蹤緩存與一級(jí)指令緩存的運(yùn)行機(jī)制是不相同的,一級(jí)指令緩存只是對(duì)指令作即時(shí)的解碼而并不會(huì)儲(chǔ)存這些指令,而一級(jí)追蹤緩存同樣會(huì)將一些指令作解碼,這些指令稱為微指令(micro-ops),而這些微指令能儲(chǔ)存在一級(jí)追蹤緩存之內(nèi),無需每一次都作出解碼的程序,因此一級(jí)追蹤緩存能有效地增加在高工作頻率下對(duì)指令的解碼能力,而μOps就是micro-ops,也就是微型操作的意思。它以很高的速率將μops提供給處理器核心。英特爾 NetBurst微型架構(gòu)使用執(zhí)行跟蹤緩存,將解碼器從執(zhí)行循環(huán)中分離出來。這個(gè)跟蹤緩存以很高的帶寬將uops提供給核心,從本質(zhì)上適于充分利用軟件中的指令級(jí)并行機(jī)制。Intel并沒有公布一級(jí)追蹤緩存的實(shí)際容量,只知道一級(jí)追蹤緩存能儲(chǔ)存12000條微指令(micro-ops)。所以,不能簡(jiǎn)單地用微指令的數(shù)目來比較指令緩存的大小。實(shí)際上,單核心的NetBurst架構(gòu)CPU使用8Kμops的緩存已經(jīng)基本上夠用了,多出的4kμops可以大大提高緩存命中率。而要使用超線程技術(shù)的話,12KμOps就會(huì)有些不夠用,這就是為什么有時(shí)候英特爾處理器在使用超線程技術(shù)時(shí)會(huì)導(dǎo)致性能下降的重要原因。例如Northwood核心的一級(jí)緩存為8KB+12KμOps,就表示其一級(jí)數(shù)據(jù)緩存為8KB,一級(jí)追蹤緩存為12KμOps;而Prescott核心的一級(jí)緩存為16KB+12KμOps,就表示其一級(jí)數(shù)據(jù)緩存為16KB,一級(jí)追蹤緩存為12KμOps。在這里12KμOps絕對(duì)不等于12KB,單位都不同,一個(gè)是μOps,一個(gè)是字節(jié)(字節(jié)),而且二者的運(yùn)行機(jī)制完全不同。所以那些把英特爾的CPU一級(jí)緩存簡(jiǎn)單相加,例如把Northwood核心說成是20KB一級(jí)緩存,把Prescott核心說成是28KB一級(jí)緩存,并且據(jù)此認(rèn)為Intel處理器的一級(jí)緩存容量遠(yuǎn)遠(yuǎn)低于AMD處理器128KB的一級(jí)緩存容量的看法是完全錯(cuò)誤的,二者不具有可比性。在架構(gòu)有一定區(qū)別的CPU對(duì)比中,很多緩存已經(jīng)難以找到對(duì)應(yīng)的東西,即使類似名稱的緩存在設(shè)計(jì)思路和功能定義上也有區(qū)別了,此時(shí)不能用簡(jiǎn)單的算術(shù)加法來進(jìn)行對(duì)比;而在架構(gòu)極為近似的CPU對(duì)比中,分別對(duì)比各種功能緩存大小才有一定的意義。

二級(jí)緩存

二級(jí)緩存(Level2cache),它是處理器內(nèi)部的一些緩沖存儲(chǔ)器,其作用跟內(nèi)存一樣。上溯到上個(gè)世紀(jì)80年代,由于處理器的運(yùn)行速率越來越快,慢慢地,處理器需要從內(nèi)存中讀取數(shù)據(jù)的速率需求就越來越高了。然而內(nèi)存的速率提升速率卻很緩慢,而能高速讀寫數(shù)據(jù)的內(nèi)存價(jià)格又非常高昂,不能大量采用。從性能價(jià)格比的角度出發(fā),英特爾等處理器設(shè)計(jì)生產(chǎn)公司想到一個(gè)辦法,就是用少量的高速內(nèi)存和大量的低速內(nèi)存結(jié)合使用,共同為處理器提供數(shù)據(jù)。這樣就兼顧了性能和使用成本的最優(yōu)。而那些高速的內(nèi)存因?yàn)槭翘幱赾pu和內(nèi)存之間的位置,又是臨時(shí)存放數(shù)據(jù)的地方,所以就叫做緩沖存儲(chǔ)器了,簡(jiǎn)稱“緩存”。它的作用就像倉(cāng)庫(kù)中臨時(shí)堆放貨物的地方一樣,貨物從運(yùn)輸車輛上放下時(shí)臨時(shí)堆放在緩存區(qū)中,然后再搬到內(nèi)部存儲(chǔ)區(qū)中長(zhǎng)時(shí)間存放。貨物在這段區(qū)域中存放的時(shí)間很短,就是一個(gè)臨時(shí)貨場(chǎng)。最初緩存只有一級(jí),后來處理器速率又提升了,一級(jí)緩存不夠用了,于是就添加了二級(jí)緩存。二級(jí)緩存是比一級(jí)緩存速率更慢,容量更大的內(nèi)存,主要就是做一級(jí)緩存和內(nèi)存之間數(shù)據(jù)臨時(shí)交換的地方用。為了適應(yīng)速率更快的處理器p4ee,已經(jīng)出現(xiàn)了三級(jí)緩存了,它的容量更大,速率相對(duì)二級(jí)緩存也要慢一些,但是比內(nèi)存可快多了。緩存的出現(xiàn)使得cpu處理器的運(yùn)行效率得到了大幅度的提升,這個(gè)區(qū)域中存放的都是cpu頻繁要使用的數(shù)據(jù),所以緩存越大處理器效率就越高,同時(shí)由于緩存的物理結(jié)構(gòu)比內(nèi)存復(fù)雜很多,所以其成本也很高。

大量使用二級(jí)緩存帶來的結(jié)果是處理器運(yùn)行效率的提升和成本價(jià)格的大幅度不等比提升。舉個(gè)例子,服務(wù)器上用的至強(qiáng)處理器和普通的p4處理器其內(nèi)核基本上是一樣的,就是二級(jí)緩存不同。至強(qiáng)的二級(jí)緩存是2mb~16mb,p4的二級(jí)緩存是512kb,于是最便宜的至強(qiáng)也比最貴的p4貴,原因就在二級(jí)緩存不同。即l2cache。由于l1級(jí)高速緩存容量的限制,為了再次提高cpu的運(yùn)算速率,在cpu外部放置一高速存儲(chǔ)器,即二級(jí)緩存。工作主頻比較靈活,可與cpu同頻,也可不同。cpu在讀取數(shù)據(jù)時(shí),先在l1中尋找,再?gòu)膌2尋找,然后是內(nèi)存,在后是外存儲(chǔ)器。所以l2對(duì)系統(tǒng)的影響也不容忽視。

最早先的cpu緩存是個(gè)整體的,而且容量很低,英特爾從pentium時(shí)代開始把緩存進(jìn)行了分類。隨著cpu制造工藝的發(fā)展,二級(jí)緩存也能輕易的集成在cpu內(nèi)核中,容量也在逐年提升。再用集成在cpu內(nèi)部與否來定義一、二級(jí)緩存,已不確切。而且隨著二級(jí)緩存被集成入cpu內(nèi)核中,以往二級(jí)緩存與cpu大差距分頻的情況也被改變,此時(shí)其以相同于主頻的速率工作,可以為cpu提供更高的傳輸速率。

三級(jí)緩存

L3 Cache(三級(jí)緩存),分為兩種,早期的是外置,逐漸都變?yōu)閮?nèi)置的。而它的實(shí)際作用即是,L3緩存的應(yīng)用可以進(jìn)一步降低內(nèi)存延遲,同時(shí)提升大數(shù)據(jù)量計(jì)算時(shí)處理器的性能。降低內(nèi)存延遲和提升大數(shù)據(jù)量計(jì)算能力對(duì)游戲都很有幫助。而在服務(wù)器領(lǐng)域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內(nèi)存會(huì)更有效,故它比較慢的磁盤I/O子系統(tǒng)可以處理更多的數(shù)據(jù)請(qǐng)求。具有較大L3緩存的處理器提供更有效的文件系統(tǒng)緩存行為及較短消息和處理器隊(duì)列長(zhǎng)度。

其實(shí)最早的L3緩存被應(yīng)用在AMD發(fā)布的K6-III處理器上,當(dāng)時(shí)的L3緩存受限于制造工藝,并沒有被集成進(jìn)芯片內(nèi)部,而是集成在主板上。在只能夠和系統(tǒng)總線頻率同步的L3緩存同主內(nèi)存其實(shí)差不了多少。后來使用L3緩存的是英特爾為服務(wù)器市場(chǎng)所推出的Itanium處理器。接著就是P4EE和至強(qiáng)MP。Intel還打算推出一款9MB L3緩存的Itanium2處理器,和以后24MB L3緩存的雙核心Itanium2處理器。

但基本上L3緩存對(duì)處理器的性能提高顯得不是很重要,比方配備1MB L3緩存的Xeon MP處理器卻仍然不是Opteron的對(duì)手,由此可見前端總線的增加,要比緩存增加帶來更有效的性能提升。

超級(jí)緩存

SuperCache,也就是超級(jí)緩存,計(jì)算機(jī)的速度瓶頸主要在于HDTunePro的讀寫速度,SuperCache就是給硬盤的讀寫用高速內(nèi)存來做緩存,是大內(nèi)存機(jī)器的提速首選,服務(wù)器的必備利器。

工作原理:對(duì)于SuperCache而言,硬盤上沒有文件的概念,只是用戶指定大小的一個(gè)一個(gè)小格子,例如32k,硬盤上某個(gè)小格子里面的內(nèi)容被讀取了,則被緩存在內(nèi)存里面,下次還讀這個(gè)小格子的時(shí)候,直接從內(nèi)存讀取,硬盤沒有任何動(dòng)作,從而達(dá)到了加速的目的。有兩種緩存模式,1、MFU模式,每個(gè)小格子被讀取的時(shí)候,做一個(gè)簡(jiǎn)單的計(jì)數(shù),當(dāng)緩存滿的時(shí)候,計(jì)數(shù)值小的先被清出緩存;2、MRU模式,簡(jiǎn)單的隊(duì)列,先進(jìn)先出。

WEB緩存

WWW是互聯(lián)網(wǎng)上最受歡迎的應(yīng)用之一,其快速增長(zhǎng)造成網(wǎng)絡(luò)擁塞和服務(wù)器超載,導(dǎo)致客戶訪問延遲增大,WWW服務(wù)質(zhì)量日益顯現(xiàn)出來。緩存技術(shù)被認(rèn)為是減輕服務(wù)器負(fù)載、降低網(wǎng)絡(luò)擁塞、增強(qiáng)WWW可擴(kuò)展性的有效途徑之一,其基本思想是利用客戶訪問的時(shí)間局部性(Temproral Locality)原理,將客戶訪問過的內(nèi)容在Cache中存放一個(gè)副本,當(dāng)該內(nèi)容下次被訪問時(shí),不必連接到駐留網(wǎng)站,而是由Cache中保留的副本提供。

Web內(nèi)容可以緩存在客戶端、代理服務(wù)器以及服務(wù)器端。研究表明,緩存技術(shù)可以顯著地提高WWW性能,它可以帶來以下好處:

(1)減少網(wǎng)絡(luò)流量,從而減輕擁塞。

(2)降低客戶訪問延遲,其主要原因有:①緩存在代理服務(wù)器中的內(nèi)容,客戶可以直接從代理獲取而不是從遠(yuǎn)程服務(wù)器獲取,從而減小了傳輸延遲②沒有被緩存的內(nèi)容由于網(wǎng)絡(luò)擁塞及服務(wù)器負(fù)載的減輕而可以較快地被客戶獲取。

(3)由于客戶的部分請(qǐng)求內(nèi)容可以從代理處獲取,從而減輕了遠(yuǎn)程服務(wù)器負(fù)載。

(4)如果由于遠(yuǎn)程服務(wù)器故障或者網(wǎng)絡(luò)故障造成遠(yuǎn)程服務(wù)器無法響應(yīng)客戶的請(qǐng)求,客戶可以從代理中獲取緩存的內(nèi)容副本,使得WWW服務(wù)的魯棒性得到了加強(qiáng)。

Web緩存系統(tǒng)也會(huì)帶來以下問題:

(1)客戶通過代理獲取的可能是過時(shí)的內(nèi)容。

(2)如果發(fā)生緩存失效,客戶的訪問延遲由于額外的代理處理開銷而增加。因此在設(shè)計(jì)Web緩存系統(tǒng)時(shí),應(yīng)力求做到Cache命中率最大化和失效代價(jià)最小化。

(3)代理可能成為瓶頸。因此應(yīng)為一個(gè)代理設(shè)定一個(gè)服務(wù)客戶數(shù)量上限及一個(gè)服務(wù)效率下限,使得一個(gè)代理系統(tǒng)的效率至少同客戶直接和遠(yuǎn)程服務(wù)器相連的效率一樣。

系統(tǒng)緩存

將CPU比作一個(gè)城里的家具廠,而將存儲(chǔ)系統(tǒng)比作郊區(qū)的木料廠,那么實(shí)際情況就是木料廠離家具廠越來越遠(yuǎn),即使使用更大的卡車來運(yùn)送木料,家具廠也得停工來等待木料送來。在這樣的情況下,一種解決方法是在市區(qū)建立一個(gè)小型倉(cāng)庫(kù),在里面放置一些家具廠最常用到的木料。這個(gè)倉(cāng)庫(kù)實(shí)際上就是家具廠的“Cache”,家具廠就可以從倉(cāng)庫(kù)不停的及時(shí)運(yùn)送需要的木料。當(dāng)然,倉(cāng)庫(kù)越大,存放的木料越多,效果就越好,因?yàn)檫@樣即使是些不常用的東西也可以在倉(cāng)庫(kù)里找到。需要的木料倉(cāng)庫(kù)里沒有,就要從城外的木料廠里繼續(xù)找,而家具廠就得等著了。倉(cāng)庫(kù)就相對(duì)于L1緩存,可以由CPU及時(shí)快速的讀寫,所以存儲(chǔ)的是CPU最常用代碼和數(shù)據(jù)(后面會(huì)介紹一下如何挑選“最常用”)。L1緩存的速率比系統(tǒng)內(nèi)存快的多是因?yàn)槭褂玫氖?a href="/hebeideji/3991297295590422794.html">sram,這種內(nèi)存單晶元使用四到六個(gè)晶體管。這也使得SRAM的造價(jià)相當(dāng)?shù)母撸圆荒苣脕碛迷谡麄€(gè)存儲(chǔ)系統(tǒng)上。在大多數(shù)CPU上,L1緩存和核心一起在一塊芯片上。在家具廠的例子中,就好比工廠和倉(cāng)庫(kù)在同一條街上。這樣的設(shè)計(jì)使CPU可以從最近最快的地方得到數(shù)據(jù),但是也使得“城外的木料廠”到“倉(cāng)庫(kù)”和到“家具廠”的距離差不多遠(yuǎn)。這樣CPU需要的數(shù)據(jù)不在L1緩存中,也就是“Cache Miss”,從存儲(chǔ)設(shè)備取數(shù)據(jù)就要很長(zhǎng)時(shí)間了。處理器速率越快,兩者之間的差距就越大。使用Pentium4那樣的高頻率處理器,從內(nèi)存中取得數(shù)據(jù)就相當(dāng)于“木料廠”位于另一個(gè)國(guó)家。

其實(shí),緩存是CPU的一部分,它存在于CPU中 CPU存取數(shù)據(jù)的速率非常的快,一秒鐘能夠存取、處理十億條指令和數(shù)據(jù)(術(shù)語(yǔ):CPU主頻1G),而內(nèi)存就慢很多,快的內(nèi)存能夠達(dá)到幾十兆就不錯(cuò)了,可見兩者的速率差異是多么的大 緩存是為了解決CPU速率和內(nèi)存速率的速率差異問題 內(nèi)存中被CPU訪問最頻繁的數(shù)據(jù)和指令被復(fù)制入CPU中的緩存,這樣CPU就可以不經(jīng)常到象“蝸牛”一樣慢的內(nèi)存中去取數(shù)據(jù)了,CPU只要到緩存中去取就行了,而緩存的速率要比內(nèi)存快很多 這里要特別指出的是: 1.因?yàn)榫彺嬷皇莾?nèi)存中少部分?jǐn)?shù)據(jù)的復(fù)制品,所以CPU到緩存中尋找數(shù)據(jù)時(shí),也會(huì)出現(xiàn)找不到的情況(因?yàn)檫@些數(shù)據(jù)沒有從內(nèi)存復(fù)制到緩存中去),這時(shí)CPU還是會(huì)到內(nèi)存中去找數(shù)據(jù),這樣系統(tǒng)的速率就慢下來了,不過CPU會(huì)把這些數(shù)據(jù)復(fù)制到緩存中去,以便下一次不要再到內(nèi)存中去取。 2.因?yàn)殡S著時(shí)間的變化,被訪問得最頻繁的數(shù)據(jù)不是一成不變的,也就是說,剛才還不頻繁的數(shù)據(jù),此時(shí)已經(jīng)需要被頻繁的訪問,剛才還是最頻繁的數(shù)據(jù),現(xiàn)在又不頻繁了,所以說緩存中的數(shù)據(jù)要經(jīng)常按照一定的算法來更換,這樣才能保證緩存中的數(shù)據(jù)是被訪問最頻繁的 3.關(guān)于一級(jí)緩存和二級(jí)緩存為了分清這兩個(gè)概念,我們先了解一下RAM ram和ROM相對(duì)的,RAM是掉電以后,其中信息才消失的那一種,ROM是在掉電以后信息也不會(huì)消失的那一種。RAM又分兩種:一種是靜態(tài)RAM、sram;一種是動(dòng)態(tài)RAM、DRAM。

磁盤緩存

磁盤緩存分為讀緩存和寫緩存。讀緩存是指,操作系統(tǒng)為已讀取的文件數(shù)據(jù),在內(nèi)存較空閑的情況下留在內(nèi)存空間中(這個(gè)內(nèi)存空間被稱之為“內(nèi)存池”),當(dāng)下次軟件或用戶再次讀取同一文件時(shí)就不必重新從磁盤上讀取,從而提高速率。寫緩存實(shí)際上就是將要寫入磁盤的數(shù)據(jù)先保存于系統(tǒng)為寫緩存分配的內(nèi)存空間中,當(dāng)保存到內(nèi)存池中的數(shù)據(jù)達(dá)到一個(gè)程度時(shí),便將數(shù)據(jù)保存到硬盤中。這樣可以減少實(shí)際的磁盤操作,有效的保護(hù)磁盤免于重復(fù)的讀寫操作而導(dǎo)致的損壞,也能減少寫入所需的時(shí)間。

根據(jù)寫入方式的不同,有寫通式和回寫式兩種。寫通式在讀HDD數(shù)據(jù)時(shí),系統(tǒng)先檢查請(qǐng)求指令,看看所要的數(shù)據(jù)是否在緩存中,在的話就由緩存送出響應(yīng)的數(shù)據(jù),這個(gè)過程稱為命中。這樣系統(tǒng)就不必訪問硬盤中的數(shù)據(jù),由于SDRAM的速率比磁介質(zhì)快很多,因此也就加快了數(shù)據(jù)傳輸?shù)乃俾省;貙懯骄褪窃趯懭胗脖P數(shù)據(jù)時(shí)也在緩存中找,找到就由緩存就數(shù)據(jù)寫入盤中,多數(shù)硬盤都是采用的回寫式緩存,這樣就大大提高了性能。緩存英文名為 Cache。CPU 緩存也是內(nèi)存的一種,其數(shù)據(jù)交換速率快且運(yùn)算頻率高。磁盤緩存則是操作系統(tǒng)為磁盤輸入輸出而在普通物理內(nèi)存中分配的一塊內(nèi)存區(qū)域。

HDD的緩沖區(qū),硬盤的緩沖區(qū)是硬盤與外部總線交換數(shù)據(jù)的場(chǎng)所。硬盤的讀數(shù)據(jù)的過程是將磁信號(hào)轉(zhuǎn)化為電信號(hào)后,通過緩沖區(qū)一次次地填充與清空,再填充,再清空,一步步按照PCI總線的周期送出,可見,緩沖區(qū)的作用是相當(dāng)重要的。它的作用也是提高性能,但是它與緩存的不同之處在于:一、它是容量固定的硬件,而不像緩存是可以由操作系統(tǒng)在內(nèi)存中動(dòng)態(tài)分配的。二、它對(duì)性能的影響大大超過磁盤緩存對(duì)性能的影響,因?yàn)闆]有緩沖區(qū),就會(huì)要求每傳一個(gè)字(通常是4字節(jié))就需要讀一次磁盤或?qū)懸淮未疟P。

緩存分類

靜態(tài)頁(yè)面的緩存可能有2種形式:其實(shí)主要區(qū)別就是CMS是否自己負(fù)責(zé)關(guān)聯(lián)內(nèi)容的緩存更新管理。

1、靜態(tài)緩存:是在新內(nèi)容發(fā)布的同時(shí)就立刻生成相應(yīng)內(nèi)容的靜態(tài)頁(yè)面,比如:2003年3月22日,管理員通過后臺(tái)內(nèi)容管理界面錄入一篇文章后,并同步更新相關(guān)索引頁(yè)上的鏈接。

2、動(dòng)態(tài)緩存:是在新內(nèi)容發(fā)布以后,并不預(yù)先生成相應(yīng)的靜態(tài)頁(yè)面,直到對(duì)相應(yīng)內(nèi)容發(fā)出請(qǐng)求時(shí),如果前臺(tái)緩存服務(wù)器找不到相應(yīng)緩存,就向后臺(tái)內(nèi)容管理服務(wù)器發(fā)出請(qǐng)求,后臺(tái)系統(tǒng)會(huì)生成相應(yīng)內(nèi)容的靜態(tài)頁(yè)面,用戶第一次訪問頁(yè)面時(shí)可能會(huì)慢一點(diǎn),但是以后就是直接訪問緩存了。

靜態(tài)緩存的缺點(diǎn):

復(fù)雜的觸發(fā)更新機(jī)制:這種機(jī)制在內(nèi)容管理系統(tǒng)比較簡(jiǎn)單的時(shí)候是非常適用的。但對(duì)于一個(gè)關(guān)系比較復(fù)雜的網(wǎng)站來說,頁(yè)面之間的邏輯引用關(guān)系就成為一個(gè)非常非常復(fù)雜的問題。最典型的例子就是一條新聞要同時(shí)出現(xiàn)在新聞首頁(yè)和相關(guān)的3個(gè)新聞專題中,在靜態(tài)緩存模式中,每發(fā)一篇新文章,除了這篇新聞內(nèi)容本身的頁(yè)面外,還需要系統(tǒng)通過觸發(fā)器生成多個(gè)新的相關(guān)靜態(tài)頁(yè)面,這些相關(guān)邏輯的觸發(fā)也往往就會(huì)成為內(nèi)容管理系統(tǒng)中最復(fù)雜的部分之一。

舊內(nèi)容的批量更新:通過靜態(tài)緩存發(fā)布的內(nèi)容,對(duì)于以前生成的靜態(tài)頁(yè)面的內(nèi)容很難修改,這樣用戶訪問舊頁(yè)面時(shí),新的模板根本無法生效。

動(dòng)態(tài)緩存模式中,每個(gè)動(dòng)態(tài)頁(yè)面只需要關(guān)心,而相關(guān)的其他頁(yè)面能自動(dòng)更新,從而大大減少了設(shè)計(jì)相關(guān)頁(yè)面更新觸發(fā)器的需要。

軟道語(yǔ)錄

緩存

是把最常用的東西放在最容易取得的地方。

緩存映射

根據(jù)E的數(shù)值,高速緩存可以被分為不同的類,包括直接映射緩存,組相聯(lián)緩存和全相聯(lián)緩存。

直接映射緩存

這種緩存中,每個(gè)組只有一行,E = 1,結(jié)構(gòu)很簡(jiǎn)單,整個(gè)緩存就相當(dāng)于關(guān)于組的一維數(shù)組。不命中時(shí)的行替換也很簡(jiǎn)單,就一個(gè)行嘛,哪不命中替換哪。為了適應(yīng)容量小的情況,第n+1層存儲(chǔ)器中的某個(gè)數(shù)據(jù)塊,你只能被替換到上一層(也就是第n層)存儲(chǔ)器中的某個(gè)位置的子集中。現(xiàn)在假設(shè)一個(gè)直接映射的高速緩存,(S,E,B,m) = ( 4,1,2,4 ),也就是說,地址是4位(16個(gè)),有四個(gè)組,每個(gè)組一行,每個(gè)塊兩個(gè)字節(jié)。由于有16個(gè)地址,表征16個(gè)字節(jié),所以總共有8個(gè)塊,但只有4個(gè)組,也就是4行。只能把多個(gè)塊映射到相同的緩存組,比如0和4都映射到組0,1和5都映射到組1,等等。這下問題就來了,比如先讀塊0,此時(shí)塊0的數(shù)據(jù)被cache到組1。然后我再讀塊4,因?yàn)閴K4也是被映射到組1的,組1又只有一行,那就只有把以前塊0的數(shù)據(jù)覆蓋了,要是之后我又讀塊0,就 miss了,只能到下級(jí)的存儲(chǔ)器去找。實(shí)際的循環(huán)程序中,很容易引起這種情況,稱其為抖動(dòng)。這種情況的存在,自然大大影響了性能。所以,需要更好的映射方案。

組相聯(lián)緩存

在組相聯(lián)緩存里,E大于1,就是說一個(gè)組里面有多個(gè)cacheline。E等于多少,就叫有多少路,所以叫E路組相聯(lián)。

組相聯(lián)的行匹配就要復(fù)雜一些了,因?yàn)橐獧z查多個(gè)行的標(biāo)記位和有效位。如果最終找到了,還好。當(dāng)然,找不到會(huì)從下一級(jí)存儲(chǔ)器中取出包含所需求數(shù)據(jù)的行來替換,但一個(gè)組里面這么多行,替換哪個(gè)行。如果有一個(gè)空行,自然就是替換空行,如果沒有空行,那就引發(fā)了一些其他的替換策略了。除了剛才介紹過的隨機(jī)策略,還有最不常使用策略,最近最少使用策略。這些策略本身是需要一定開銷的,但要知道,不命中的開銷是很大的,所以為了保證命中率,采取一些相對(duì)復(fù)雜的策略是值得的。

全相聯(lián)緩存

所謂全相聯(lián),就是由一個(gè)包含所有緩存行的組組成的緩存(塊可以放在高速緩存中的任意位置)。由于只有一個(gè)組,所以組選擇特別簡(jiǎn)單,此時(shí)地址就沒有組索引了,只有標(biāo)記和偏移,也就是t部分和b部分。其他的步驟,行匹配和數(shù)據(jù)選擇,和組相聯(lián)原理是一樣的,只是規(guī)模大得多了。如果說上面關(guān)于這三種映射方法的描述非常抽象,為了能理解得更加透徹,把存儲(chǔ)器比作一家大超市,超市里面的東西就是一個(gè)個(gè)字節(jié)或者數(shù)據(jù)。為了讓好吃好玩受歡迎的東西能夠容易被看到,超市可以將這些東西集中在一塊放在一個(gè)專門的推薦柜臺(tái)中,這個(gè)柜臺(tái)就是緩存。如果僅僅是把這些貨物放在柜臺(tái)中即完事,那么這種就是完全關(guān)聯(lián)的方式。

可是如果想尋找自己想要的東西,還得在這些推薦貨物中尋找,而且由于位置不定,甚至可能把整個(gè)推薦柜臺(tái)尋找個(gè)遍,這樣的效率無疑還是不高的。于是超市老總決定采用另一種方式,即將所有推薦貨物分為許多類別,如“果醬餅干”,“巧克力餅干”,“核桃牛奶”等,柜臺(tái)的每一層存放一種貨物。這就是直接關(guān)聯(lián)的訪問原理。這樣的好處是容易讓顧客有的放矢,尋找更快捷,更有效。

但這種方法還是有其缺點(diǎn),那就是如果需要果醬餅干的顧客很多,需要巧克力餅干的顧客相對(duì)較少,顯然對(duì)果醬餅干的需求量會(huì)遠(yuǎn)多于對(duì)巧克力餅干的需求量,可是放置兩種餅干的空間是一樣大的,于是可能出現(xiàn)這種情況:存放的果醬餅干的空間遠(yuǎn)不能滿足市場(chǎng)需求的數(shù)量,而巧克力餅干的存放空間卻被閑置。為了克服這個(gè)弊病,老板決定改進(jìn)存貨方法:還是將貨物分類存放,不過分類方法有所變化,按“餅干”,“牛奶”,“果汁”等類別存貨,也就是說,無論是什么餅干都能存入“餅干”所用空間中,這種方法顯然提高了空間利用的充分性,讓存儲(chǔ)以及查找方法更有彈性。

技術(shù)指標(biāo)

CPU產(chǎn)品中,一級(jí)緩存的容量基本在4kb到64kb之間,二級(jí)緩存的容量則分為128kb、256kb、512kb、1mb、2mb等。一級(jí)緩存容量各產(chǎn)品之間相差不大,而二級(jí)緩存容量則是提高cpu性能的關(guān)鍵。二級(jí)緩存容量的提升是由cpu制造工藝所決定的,容量增大必然導(dǎo)致cpu內(nèi)部晶體管數(shù)的增加,要在有限的cpu面積上集成更大的緩存,對(duì)制造工藝的要求也就越高

緩存(cache)大小是CPU的重要指標(biāo)之一,其結(jié)構(gòu)與大小對(duì)CPU速率的影響非常大。簡(jiǎn)單地講,緩存就是用來存儲(chǔ)一些常用或即將用到的數(shù)據(jù)或指令,當(dāng)需要這些數(shù)據(jù)或指令的時(shí)候直接從緩存中讀取,這樣比到內(nèi)存甚至HDD中讀取要快得多,能夠大幅度提升cpu的處理速率。所謂處理器緩存,通常指的是二級(jí)高速緩存,或外部高速緩存。即高速緩沖存儲(chǔ)器,是位于CPU和主存儲(chǔ)器dram(dynamic ram)之間的規(guī)模較小的但速率很高的存儲(chǔ)器,通常由sram(靜態(tài)隨機(jī)存儲(chǔ)器)組成。用來存放那些被cpu頻繁使用的數(shù)據(jù),以便使cpu不必依賴于速率較慢的dram(動(dòng)態(tài)隨機(jī)存儲(chǔ)器)。l2高速緩存一直都屬于速率極快而價(jià)格也相當(dāng)昂貴的一類內(nèi)存,稱為sram(靜態(tài)ram),sram(static ram)是靜態(tài)存儲(chǔ)器的英文縮寫。由于sram采用了與制作cpu相同的半導(dǎo)體工藝,因此與動(dòng)態(tài)存儲(chǔ)器dram比較,sram的存取速率快,但體積較大,價(jià)格很高。

處理器緩存的基本思想是用少量的sram作為cpu與dram存儲(chǔ)系統(tǒng)之間的緩沖區(qū),即cache系統(tǒng)。80486以及更高檔微處理器的一個(gè)顯著特點(diǎn)是處理器芯片內(nèi)集成了sram作為cache,由于這些cache裝在芯片內(nèi),因此稱為片內(nèi)cache。486芯片內(nèi)cache的容量通常為8k。高檔芯片如pentium為16kb,power pc可達(dá)32kb。pentium微處理器進(jìn)一步改進(jìn)片內(nèi)cache,采用數(shù)據(jù)和雙通道cache技術(shù),相對(duì)而言,片內(nèi)cache的容量不大,但是非常靈活、方便,極大地提高了微處理器的性能。片內(nèi)cache也稱為一級(jí)cache。由于486,586等高檔處理器的時(shí)鐘頻率很高,一旦出現(xiàn)一級(jí)cache未命中的情況,性能將明顯惡化。在這種情況下采用的辦法是在處理器芯片之外再加cache,稱為二級(jí)cache。二級(jí)cache實(shí)際上是cpu和主存之間的真正緩沖。由于系統(tǒng)板上的響應(yīng)時(shí)間遠(yuǎn)低于cpu的速率,沒有二級(jí)cache就不可能達(dá)到486,586等高檔處理器的理想速率。二級(jí)cache的容量通常應(yīng)比一級(jí)cache大一個(gè)數(shù)量級(jí)以上。在系統(tǒng)設(shè)置中,常要求用戶確定二級(jí)cache是否安裝及尺寸大小等。二級(jí)cache的大小一般為128kb、256kb或512kb。在486以上檔次的微機(jī)中,普遍采用256kb或512kb同步cache。所謂同步是指cache和cpu采用了相同的時(shí)鐘周期,以相同的速率同步工作。相對(duì)于異步cache,性能可提高30%以上。pc及其服務(wù)器系統(tǒng)的發(fā)展趨勢(shì)之一是cpu主頻越做越高,系統(tǒng)架構(gòu)越做越先進(jìn),而主存儲(chǔ)器dram的結(jié)構(gòu)和存取時(shí)間改進(jìn)較慢。因此,緩存(cache)技術(shù)愈顯重要,在pc系統(tǒng)中cache越做越大。廣大用戶已把cache做為評(píng)價(jià)和選購(gòu)pc系統(tǒng)的一個(gè)重要指標(biāo)。

光驅(qū)緩存

光存儲(chǔ)驅(qū)動(dòng)器都帶有內(nèi)部緩沖器或高速緩存存儲(chǔ)器。這些緩沖器是實(shí)際的存儲(chǔ)芯片,安裝在驅(qū)動(dòng)器的電路板上,它在發(fā)送數(shù)據(jù)給PC之前可能準(zhǔn)備或存儲(chǔ)更大的數(shù)據(jù)段。CD/DVD典型的緩沖器大小為128KB,不過具體的驅(qū)動(dòng)器可大可小(通常越多越好)。可刻錄CD或DVD驅(qū)動(dòng)器一般具有2MB-4MB以上的大容量緩沖器,用于防止緩存欠載(buffer underrun)錯(cuò)誤,同時(shí)可以使刻錄工作平穩(wěn)、恒定的寫入。一般來說,驅(qū)動(dòng)器越快,就有更多的緩沖存儲(chǔ)器,以處理更高的傳輸速率

CD/DVD驅(qū)動(dòng)器帶有緩沖或高速緩存具有很多好處。緩沖可以保證PC以固定速率接收數(shù)據(jù)。當(dāng)一個(gè)應(yīng)用程序從驅(qū)動(dòng)器請(qǐng)求數(shù)據(jù)時(shí),數(shù)據(jù)可能位于分散在光盤上不同地方。因?yàn)轵?qū)動(dòng)器的訪問速率相對(duì)較慢,在數(shù)據(jù)讀取時(shí)會(huì)使驅(qū)動(dòng)器不得不間隔性向PC發(fā)送數(shù)據(jù)。驅(qū)動(dòng)器的緩沖在軟件的控制下可以預(yù)先讀取并準(zhǔn)備光盤的內(nèi)容目錄,從而加速第一次數(shù)據(jù)請(qǐng)求。

光驅(qū)讀取數(shù)據(jù)的規(guī)律是首先在緩存里尋找,如果在緩存中沒有找到才會(huì)去光盤上尋找,大容量的緩存可以預(yù)先讀取的數(shù)據(jù)越多,但在實(shí)際應(yīng)用中CD-ROM、DVD-ROM等讀取操作時(shí),讀取重復(fù)信息的機(jī)會(huì)是相對(duì)較少的,大部分的光盤更多的時(shí)候是一次讀取數(shù)量較多的文件內(nèi)容,因此在CD-ROM、DVD-ROM驅(qū)動(dòng)器上緩存重要性得不到體現(xiàn),因此大多此類產(chǎn)品采用較小的緩存容量。CD-ROM一般有128KB、256KB、512KB幾種;而DVD一般有128KB、256KB、512KB,只有個(gè)別的外置式DVD光驅(qū)采用了較大容量的緩存。

在刻錄機(jī)或COMMBO產(chǎn)品上,緩存就變得十分重要了。在刻錄光盤時(shí),系統(tǒng)會(huì)把需要刻錄的數(shù)據(jù)預(yù)先讀取到緩存中,然后再?gòu)木彺孀x取數(shù)據(jù)進(jìn)行刻錄,緩存就是數(shù)據(jù)和刻錄盤之間的橋梁。系統(tǒng)在傳輸數(shù)據(jù)到緩存的過程中,不可避免的會(huì)發(fā)生傳輸?shù)耐nD,如在刻錄大量小容量文件時(shí),HDD讀取的速率很可能會(huì)跟不上刻錄的速率,就會(huì)造成緩存內(nèi)的數(shù)據(jù)輸入輸出不成比例,如果這種狀態(tài)持續(xù)一段時(shí)間,就會(huì)導(dǎo)致緩存內(nèi)的數(shù)據(jù)被全部輸出,而得不到輸入,此時(shí)就會(huì)造成緩存欠載錯(cuò)誤,這樣就會(huì)導(dǎo)致刻錄光盤失敗。因此刻錄機(jī)和COMMBO產(chǎn)品都會(huì)采用較大容量的緩存容量,再配合防刻死技術(shù),就能把刻壞盤的幾率降到最低。同時(shí)緩存還能協(xié)調(diào)數(shù)據(jù)傳輸速率,保證數(shù)據(jù)傳輸?shù)姆€(wěn)定性和可靠性。

刻錄機(jī)產(chǎn)品一般有2MB、4MB、8MB,COMBO產(chǎn)品一般有2MB、4MB、8MB的緩存容量,受制造成本的限制,緩存不可能制作到足夠大。但適量的緩存容量還是選擇光儲(chǔ)需要考慮的關(guān)鍵之一

網(wǎng)絡(luò)緩存

(1)減少網(wǎng)絡(luò)流量,從而減輕擁塞。

(2)降低客戶訪問延遲,其主要原因有:

①緩存在代理服務(wù)器中的內(nèi)容,客戶可以直接從代理獲取而不是從遠(yuǎn)程服務(wù)器獲取,從而減小了傳輸延遲;

②沒有被緩存的內(nèi)容由于網(wǎng)絡(luò)擁塞及服務(wù)器負(fù)載的減輕而可以較快地被客戶獲取。

(3)由于客戶的部分請(qǐng)求內(nèi)容可以從代理處獲取,從而減輕了遠(yuǎn)程服務(wù)器負(fù)載。

World Wide Web(WWW)正在演繹一種新的人類生活,Internet在以前所未有的勢(shì)頭推進(jìn),一方面,人們?yōu)槲宀世_紛的網(wǎng)絡(luò)世界所陶醉,另一方面又為日漸變慢的訪問速率所苦惱……

什么影響Internet訪問速率

訪問網(wǎng)站的過程是通過建立在TCP/IP協(xié)議之上的HTTP協(xié)議來完成的。從客戶端發(fā)出一個(gè)HTTP請(qǐng)求開始,用戶所經(jīng)歷的等待時(shí)間主要決定于DNS和網(wǎng)站的響應(yīng)時(shí)間。網(wǎng)站.ch首先必須被DNS服務(wù)器解析為IP地址,HTTP的延時(shí)則由在客戶端和服務(wù)器間的若干個(gè)往返時(shí)間所決定。

往返時(shí)間是指客戶端等待每次請(qǐng)求的響應(yīng)時(shí)間,平均往返時(shí)間取決于三個(gè)方面:

1. 網(wǎng)站服務(wù)器的延時(shí)

網(wǎng)站服務(wù)器造成的延時(shí)在往返時(shí)間中占主要比例。當(dāng)某個(gè)服務(wù)器收到多個(gè)并發(fā)HTTP請(qǐng)求時(shí),會(huì)產(chǎn)生排隊(duì)延時(shí)。由于響應(yīng)一個(gè)HTTP請(qǐng)求,往往需要多次訪問本地HDD,所以即使是一臺(tái)負(fù)載并不大的服務(wù)器,也可能產(chǎn)生幾十或幾百微秒的延時(shí)。

2. 由路由器、網(wǎng)關(guān)、代理服務(wù)器和防火墻引入的延時(shí)

通常在客戶端和服務(wù)器之間的路徑上會(huì)存在多個(gè)網(wǎng)絡(luò)設(shè)備,如路由器、網(wǎng)關(guān)、代理和防火墻等。它們對(duì)經(jīng)過的IP包都要做存儲(chǔ)/轉(zhuǎn)發(fā)的操作,于是會(huì)引入排隊(duì)延時(shí)和處理延時(shí)。在網(wǎng)絡(luò)擁塞時(shí),這些設(shè)備甚至?xí)G包,此時(shí)會(huì)寄希望于客戶端和服務(wù)器通過端到端的協(xié)議來恢復(fù)通信。

3. 不同通信鏈路上的數(shù)據(jù)傳輸速率

在廣域網(wǎng)中,從一個(gè)網(wǎng)絡(luò)設(shè)備到另一個(gè)網(wǎng)絡(luò)設(shè)備間的數(shù)據(jù)傳輸速率是決定往返時(shí)間的一個(gè)重要因素。但基本帶寬的作用并不是像人們想象的那么重要,一項(xiàng)測(cè)試表明,當(dāng)網(wǎng)站采用T3速率接入Internet時(shí),也僅有2%的網(wǎng)頁(yè)或?qū)ο竽芤?4kbps的速率提供給客戶端,這顯然表明,帶寬在網(wǎng)絡(luò)性能上不是最關(guān)鍵的因素。

今天Internet在向世界的每一個(gè)角落延伸,用戶向一個(gè)服務(wù)器發(fā)出的 請(qǐng)求可能會(huì)經(jīng)過8000公里到1.6萬公里的距離,光速帶來的延時(shí)和網(wǎng)絡(luò)設(shè)備的延時(shí)是網(wǎng)絡(luò)如此緩慢的最根本原因。

網(wǎng)絡(luò)緩存解決根本問題

既然影響網(wǎng)絡(luò)速率的原因是由距離和光速引起,那么加速Web訪問的重要途徑之一是縮短客戶端與網(wǎng)站之間的距離。通過將用戶頻繁訪問的頁(yè)面和對(duì)象存放在離用戶更近的地方,才能減少光速引入的延時(shí),同時(shí)由于減少了路由中的環(huán)節(jié),也相應(yīng)地減少了路由器、防火墻和代理等引入的延時(shí)。傳統(tǒng)的解決辦法是建立鏡像服務(wù)器來達(dá)到縮短距離的目的。但這個(gè)辦法存在很大的不足,對(duì)于某個(gè)站點(diǎn)而言,不可能在離每個(gè)用戶群較近的地方都建立鏡像站點(diǎn),若對(duì)大多數(shù)網(wǎng)站都用這樣的辦法就更不經(jīng)濟(jì),同時(shí)管理和維護(hù)鏡像站點(diǎn)是一項(xiàng)非常困難的工作。

網(wǎng)絡(luò)緩存是一種降低Internet流量和提高終端用戶響應(yīng)時(shí)間的新興網(wǎng)絡(luò)技術(shù)。它的觀念來自于計(jì)算機(jī)和網(wǎng)絡(luò)的其他領(lǐng)域,如目前流行的英特爾架構(gòu)的CPU中就存在緩存,用于提高內(nèi)存存取的速率;各種操作系統(tǒng)在進(jìn)行磁盤存取時(shí)也會(huì)利用緩存來提高速率;分布式文件系統(tǒng)通常也通過緩存來提高客戶機(jī)和服務(wù)器之間的速率。

1.緩存的類型

網(wǎng)絡(luò)緩存可以在客戶端,也可以在網(wǎng)絡(luò)上,由此我們將緩存分為兩類:瀏覽器緩存和代理緩存

幾乎目前所有的瀏覽器都有一個(gè)內(nèi)置的緩存,它們通常利用客戶端本地的內(nèi)存和HDD來完成緩存工作,同時(shí)允許用戶對(duì)緩存的內(nèi)容大小作控制。網(wǎng)絡(luò)瀏覽器緩存是網(wǎng)絡(luò)緩存的一個(gè)極端的情況,因?yàn)榫彺嬖O(shè)在客戶機(jī)本地。通常一個(gè)客戶端只有一個(gè)用戶或幾個(gè)共享計(jì)算機(jī)用戶,瀏覽器緩存要求的硬盤空間通常在5MB到50MB的范圍內(nèi)。但是瀏覽器緩存在用戶之間難以共享,不同客戶端的緩存無法實(shí)現(xiàn)交流,因而緩存的內(nèi)容與效果相當(dāng)有限。

代理緩存則是一種獨(dú)立的應(yīng)用層網(wǎng)絡(luò)服務(wù),它更像E-mail、Web、DNS等服務(wù)。許多用戶不僅可以共享緩存,而且可以同時(shí)訪問緩存中的內(nèi)容。企業(yè)級(jí)代理緩存一般需要配置高端的處理器和存儲(chǔ)系統(tǒng),采用專用的軟件,要求的HDD空間在5MB到50GB左右,內(nèi)存為64MB到512MB。

代理處于客戶端與網(wǎng)站服務(wù)器之間,在某些情況下,這種連接是不允許的,如網(wǎng)站在防火墻內(nèi),這時(shí)客戶端必須與代理建立TCP連接,然后由代理建立與網(wǎng)站服務(wù)器的TCP連接。代理在服務(wù)器和客戶端之間起到了數(shù)據(jù)接力的作用。代理發(fā)出的HTTP請(qǐng)求與一般的HTTP請(qǐng)求有細(xì)小的不同,主要在于它包含了完整的URL,而不只是URL的路徑。

2.代理緩存的工作原理

當(dāng)代理緩存收到客戶端的請(qǐng)求時(shí),它首先檢查所請(qǐng)求的內(nèi)容是否已經(jīng)被緩存。如果沒有找到,緩存必須以客戶端的名義轉(zhuǎn)發(fā)請(qǐng)求,并在收到服務(wù)器發(fā)出的文件時(shí),將它以一定的形式保存在本地HDD,并將其發(fā)送給客戶端。

如果客戶端請(qǐng)求的內(nèi)容已被緩存,還存在兩種可能:其一,緩存的內(nèi)容已經(jīng)過時(shí),即緩存中保存的內(nèi)容超過了預(yù)先設(shè)定的時(shí)限,或網(wǎng)站服務(wù)器的網(wǎng)頁(yè)已經(jīng)更新,這時(shí)緩存會(huì)要求原服務(wù)器驗(yàn)證緩存中的內(nèi)容,要么更新內(nèi)容,要么返回“未修改”的消息;其二,緩存的內(nèi)容是新的,即與原網(wǎng)站的內(nèi)容保持同步,此時(shí)稱為緩存命中,這時(shí)緩存會(huì)立即將已保存的內(nèi)容送給客戶端。

在客戶端的請(qǐng)求沒有命中時(shí),反而增加了緩存存儲(chǔ)和轉(zhuǎn)發(fā)的處理時(shí)間。在這種情況下,代理緩存是否仍有意義呢?實(shí)際上,代理緩存能夠同時(shí)與網(wǎng)站服務(wù)器建立多個(gè)并發(fā)的TCP/IP連接,并行獲取網(wǎng)站上的內(nèi)容。緩存的存在從整體上降低了對(duì)網(wǎng)站訪問的次數(shù),也就降低了單位時(shí)間內(nèi)服務(wù)器端的排隊(duì)數(shù)目,因而這時(shí)并發(fā)連接的排隊(duì)延時(shí)要小得多。優(yōu)秀的緩存甚至能實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)內(nèi)相關(guān)鏈接內(nèi)容的預(yù)取以加快連接的速率。

3.代理緩存的策略

當(dāng)原服務(wù)器的文件修改或被刪除后,緩存又如何知道它保存的拷貝已經(jīng)作廢呢?HTTP協(xié)議為緩存服務(wù)提供了基本的支持,它使緩存能向原服務(wù)器查詢,某個(gè)文件是否更改,如果緩存的拷貝過時(shí)則進(jìn)行有條件下載。僅當(dāng)原服務(wù)器文件超過指定的日期時(shí),才會(huì)發(fā)出新的文件。

但是這些詢問操作對(duì)網(wǎng)絡(luò)服務(wù)器造成的負(fù)載幾乎和獲取該文件差不多,因此不可能在客戶端向緩存發(fā)起請(qǐng)求時(shí)都執(zhí)行這樣的操作。HTTP協(xié)議使得服務(wù)器可以有選擇地為每個(gè)文檔指定生存時(shí)間,即清楚地指出某個(gè)文件的有效生命周期,生存時(shí)間很短即意味著“不要對(duì)其緩存”。拷貝的保留時(shí)間可以是固定的,也可以是通過這個(gè)文件的大小、來源、生存時(shí)間或內(nèi)容計(jì)算出來的。

分布緩存

分布式緩存系統(tǒng)是為了解決數(shù)據(jù)庫(kù)服務(wù)器和web服務(wù)器之間的瓶頸。如果一個(gè)網(wǎng)站的流量很大,這個(gè)瓶頸將會(huì)非常明顯,每次數(shù)據(jù)庫(kù)查詢耗費(fèi)的時(shí)間將會(huì)非常可觀。對(duì)于更新速度不是很快的網(wǎng)站,我們可以用靜態(tài)化來避免過多的數(shù)據(jù)庫(kù)查詢。對(duì)于更新速度以秒計(jì)的網(wǎng)站,靜態(tài)化也不會(huì)太理想,可以用緩存系統(tǒng)來構(gòu)建。如果只是單臺(tái)服務(wù)器用作緩存,問題不會(huì)太復(fù)雜,如果有多臺(tái)服務(wù)器用作緩存,就要考慮緩存服務(wù)器的負(fù)載均衡。

使用memcached分布式緩存服務(wù)來達(dá)到保存用戶的會(huì)話數(shù)據(jù),而達(dá)到各個(gè)功能模塊都能夠跨省份、跨服務(wù)器共享本次會(huì)話中的私有數(shù)據(jù)的目的。每個(gè)省份使用一臺(tái)服務(wù)器來做為Memcached服務(wù)器來存儲(chǔ)用戶的會(huì)話中的數(shù)據(jù)。當(dāng)然也可以多臺(tái)服務(wù)器,但必須確保每個(gè)省份的做Memcached服務(wù)器數(shù)量必須一致,這樣才能夠保證Memcached客戶端操作的是同一份數(shù)據(jù),保證數(shù)據(jù)的一致性。

會(huì)話數(shù)據(jù)的添加、刪除、修改

Memcached客戶端,添加、刪除和、修改會(huì)話信息數(shù)據(jù)時(shí),不僅要添加、刪除、修改本省的Memcached服務(wù)器數(shù)據(jù),而且同時(shí)要對(duì)其它省份的Memcached服務(wù)器做同樣的操作。這樣用戶訪問其它省份的服務(wù)器的功能模塊進(jìn)也能讀取到相同的會(huì)話數(shù)據(jù)。memcached客戶端服務(wù)器的列表使用局域網(wǎng)的內(nèi)網(wǎng)IP(如:192.168.1.179)操作本省的Memcached服務(wù)器,使用公網(wǎng)的IP(如:202.183.62.210)操作其它省份的Memcached服務(wù)器。

會(huì)話數(shù)據(jù)的讀取

系統(tǒng)所有模塊讀取會(huì)話數(shù)據(jù)的Memcached客戶端服務(wù)器列表都設(shè)為本省Memcached服務(wù)器地址的內(nèi)網(wǎng)IP來向Memcached服務(wù)器中讀取會(huì)話數(shù)據(jù)。

同一會(huì)話的確認(rèn)

使用Cookie來保持客戶與服務(wù)端的聯(lián)系。每一次會(huì)話開始就生成一個(gè)GUID作為SessionID,保存在客戶端的Cookie中,作用域是頂級(jí)域名,這樣二級(jí)、三級(jí)域名就可以共享到這個(gè)Cookie,系統(tǒng)中就使用這個(gè)SessionID來確認(rèn)它是否是同一個(gè)會(huì)話。

會(huì)話數(shù)據(jù)的唯一ID

會(huì)話數(shù)據(jù)存儲(chǔ)在memcached服務(wù)器上的唯一鍵Key也就是會(huì)話數(shù)據(jù)數(shù)據(jù)的唯一ID定義為:SessionID_Name,SessionID就是保存在客戶端Cookie中的SessionID,Name就是會(huì)話數(shù)據(jù)的名稱,同一次會(huì)話中各個(gè)會(huì)話數(shù)據(jù)的Name必須是唯一的,否則新的會(huì)話數(shù)據(jù)將覆蓋舊的會(huì)話數(shù)據(jù)。

會(huì)話的失效時(shí)間

會(huì)話的失效通過控制Cookie的有效時(shí)間來實(shí)現(xiàn),會(huì)話的時(shí)間設(shè)為SessionID或Cookie中的有效時(shí)間,且每一次訪問SessionID時(shí)都要重新設(shè)置一下Cookie的有效時(shí)間,這樣就達(dá)到的會(huì)話的有效時(shí)間就是兩次間訪問Cookie中SessionID值的的最長(zhǎng)時(shí)間,如果兩次訪問的間隔時(shí)間超過有效時(shí)間,保存在SessionID的Cookie將會(huì)失效。并生成新的SessionID存放在Cookie中,SessionID改變啦,會(huì)話就結(jié)束啦。memcached服務(wù)器中會(huì)話數(shù)據(jù)的失效,每一次向Memcached服務(wù)器中添加會(huì)話數(shù)據(jù)時(shí),都把有效時(shí)間設(shè)為一天也就是24小時(shí),讓Memcached服務(wù)使用它內(nèi)部的機(jī)制去清除,不必在程序中特別做會(huì)話數(shù)據(jù)的刪除操作。數(shù)據(jù)在Memcached服務(wù)器中有有效時(shí)間只是邏輯上的。就算是過了24小時(shí),如果分配給Memcached服務(wù)的內(nèi)存還夠用的話。數(shù)據(jù)還是保存在內(nèi)存當(dāng)中的,只是Memcached客戶端讀取不到而已。只有到了分配給memcached服務(wù)的內(nèi)存不夠用時(shí),它才會(huì)清理沒用或者比較舊的數(shù)據(jù),也就是懶性清除。

增加緩存的方法

CPU的緩存

CPU的緩存分二級(jí):L1(一級(jí)緩存)和L2(二級(jí)緩存),當(dāng)處理器要讀取數(shù)據(jù)時(shí),首先要在L1緩存中查找,其次才是L2緩存,最后才是系統(tǒng)內(nèi)存。如果有一天你發(fā)覺自己的電腦慢了很多,進(jìn)入到Windows桌面也要幾分鐘,這時(shí)候就要檢查一下CPU的一、二級(jí)緩存有沒有打開。在BIOS設(shè)置中的StandardCMOSSetup(標(biāo)準(zhǔn)CMOS設(shè)定)有兩項(xiàng)是用來打開或關(guān)閉緩存的:CPUInternalCache設(shè)為Enable時(shí)開啟CPU內(nèi)部的一級(jí)緩沖區(qū),若設(shè)置為Disable則為關(guān)閉,這時(shí)系統(tǒng)性能將大大降低。ExternalCache選項(xiàng)是控制主板上二級(jí)緩沖區(qū),如果主板上有二級(jí)緩存則應(yīng)設(shè)成Enable。

硬盤的緩存

點(diǎn)擊電腦桌面上的“開始”/“運(yùn)行”,鍵入“Msconfig”啟動(dòng)“系統(tǒng)配置實(shí)用程序”,跟著選中“system.ini”標(biāo)簽下的“Vcache”項(xiàng),就可以根據(jù)系統(tǒng)的實(shí)際情況來調(diào)節(jié)硬盤的緩存了。在該選項(xiàng)中一般會(huì)有三行內(nèi)容:ChunkSize=1024、MaxFileCache=10240和MinFileCache=10240;其中第一行是緩沖區(qū)讀寫單元值,第二、三行是硬盤的最大和最小緩沖值,等號(hào)后的數(shù)值都是可以修改的,只要右鍵單擊選中任一行就可以進(jìn)行修改了。如果你的內(nèi)存是128MB的話,上面這三行的取值就比較合理了,當(dāng)然也可以自定。如果不知道該如何設(shè)置合適的緩沖值,請(qǐng)“Windows優(yōu)化大師”幫忙吧,這個(gè)軟件中有一個(gè)“磁盤緩存優(yōu)化”項(xiàng),用鼠標(biāo)就可以方便地設(shè)置好緩存;又或者讓“Windows優(yōu)化大師”自動(dòng)幫你進(jìn)行優(yōu)化設(shè)置。當(dāng)HDD的緩存值足夠大時(shí),硬盤就不用頻繁地讀寫磁盤,一來可以延長(zhǎng)硬盤的壽命,二來也可以提高數(shù)據(jù)的傳輸速度。

另外,將硬盤的“文件系統(tǒng)緩存”設(shè)置為“網(wǎng)絡(luò)服務(wù)器”,可以加快系統(tǒng)對(duì)硬盤的訪問速度,因?yàn)槲募到y(tǒng)緩存里存放了硬盤最近被訪問過的文件名和路徑,緩存越大所能儲(chǔ)存的內(nèi)容也就越多。如果點(diǎn)擊“控制面板”/“系統(tǒng)”/“性能”/“文件系統(tǒng)”/“硬盤”,將“此計(jì)算機(jī)的主要用途”由“臺(tái)式機(jī)”改為“網(wǎng)絡(luò)服務(wù)器”,可以將原來10K左右的緩存增加至近50K左右。

軟驅(qū)和光驅(qū)的緩存

一般來說,軟驅(qū)讀寫數(shù)據(jù)的速度都比較慢,這是因?yàn)楸P片的轉(zhuǎn)速不能太高,但是,我們可以提高軟驅(qū)的讀寫緩存,讓軟驅(qū)一次讀寫更多的數(shù)據(jù)。方法是:在桌面上的“開始”/“運(yùn)行”框中鍵入“Regedit”運(yùn)行注冊(cè)表編輯器,依次進(jìn)入HKEY-LOCAL-MACHINE\System\CurrentControlSet\Services\Class\FDC\0000,新建一個(gè)為ForeFifo的“DWORD值”,將其值設(shè)為“0”,這樣就對(duì)軟驅(qū)進(jìn)行了軟提速。很多人都知道右鍵單擊桌面“我的電腦”圖標(biāo),選“屬性”/“性能”/“文件系統(tǒng)”/“CD-ROM”,將最佳的訪問方式設(shè)為“四倍速或更高速”,將追加的高速緩存大小滑塊拖到最大處,可以明顯提高光驅(qū)的讀盤速度。除了這種方式,我們還可以在注冊(cè)表中設(shè)置緩沖值,方法是:進(jìn)入到注冊(cè)表,在HKEY-LOCAL-MACHINE\System\CurrentControlSet\Control\FileSystem\CDFS下,將CacheSize(緩存值的大小)和Prefetch(預(yù)讀文件大小)兩項(xiàng)進(jìn)行手工調(diào)整,只要右鍵單擊要選的項(xiàng)就可以進(jìn)行修改了。

參考資料 >

這都是國(guó)內(nèi)DIY裝機(jī)的坑:小白必看的硬件指南.環(huán)球科技.2025-08-31

生活家百科家居網(wǎng)