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