<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Cache(高速緩存)技術(shù)詳解

Cache(高速緩存)技術(shù)詳解

作者: 時(shí)間:2017-06-04 來(lái)源:網(wǎng)絡(luò ) 收藏

計算機系統一般都采用多級存儲器結構,如寄存器、主存、磁盤(pán)、光盤(pán)、磁帶等。這種多級存儲器的特點(diǎn)是從外存儲器到CPU中的寄存器逐級向上,存儲容量逐級減小,而存取速度逐級提高。由于上下兩級存儲器的速度可以相差l—2個(gè)數量級或者更高,因此,上一級和下一級存儲器的數據交換常常成為系統瓶頸,大大降低了系統的性能。為了解決這個(gè)問(wèn)題,通常采用的辦法是在兩級存儲器之間增加一個(gè)高速緩沖存儲器Cache。

所謂Cache是一個(gè)速度等于或者接近上一級存儲器訪(fǎng)問(wèn)速度的小容量存儲器,其中保存了下級存儲器中部分當前所需的數據,因此CPU可以直接從Cache中取得所需的數據,而不必訪(fǎng)問(wèn)下一級存儲器。由于Cache的速度與上一級存儲器相當,因此保證了不會(huì )降低。Cache的設計依據是程序存取局部性原理,通常程序存取的一批數據總是存放在存儲器相鄰的單元中,只要把這一批數據同時(shí)調入中,即可保證近期內需要的數據都能在Caclle中訪(fǎng)問(wèn)成功。為了實(shí)現上述目標,在設計Cache時(shí)必須做到以下兩點(diǎn):

1.保證訪(fǎng)問(wèn)Cache有較高的命中率;
2.訪(fǎng)問(wèn)Cache與訪(fǎng)問(wèn)下級存儲器的方式不變、容量不減。因此對于編程人員來(lái)說(shuō),Cache是完全透明的,也就是說(shuō),他們感覺(jué)不到Cache的存在。

由于Cache的容量比下級存儲器小l-2個(gè)數量級、要做到上述兩點(diǎn),則必須考慮以下問(wèn)題:

1.如何組織Cache,使得下級存儲器的每個(gè)部分都能夠在需要時(shí)調入Cache
2.采用何種替換策略、使得訪(fǎng)問(wèn)的命中率最高;
3.采用什么方法使得Cache和下級存儲器的數據具有—致性,即修改Cache后保證下級存儲器的內容也隨之修改(或者相反)。

通過(guò)上面的介紹,我們知道Cache也是一種存儲器,其工作速度很高,如Ll和L2 Cache就是為了解決PU和DRAM主存之間的速度匹配而設置的。因此主存Cache也可以看作是高速CPU和低速DRAM之間的接口?;蛘哒f(shuō),把Cache看成一個(gè)適配器來(lái)解決CPU和DRAM之間的速度匹配問(wèn)題。

當CPU要從存儲器中讀取一個(gè)數據字時(shí),它首先在Cache中查找。如果找到了,則立即從Cache中讀取并送到CPU中;如果在Cache中找不到,則用一個(gè)存儲器讀周期的時(shí)間從主存個(gè)讀出這個(gè)數據字送到CPU、并且把包含這個(gè)數據字的整個(gè)內存數據塊都從主存送到Cache中。之所以要把包含被讀數據字的整個(gè)內存數據塊都從主存送到Cache中是因為對存儲器的訪(fǎng)問(wèn)具有局部性,也就是說(shuō)連續讀取的數據宇一般在內存中都是連續存放的;調入一個(gè)數據塊后,將使得以后若干次的訪(fǎng)存都可以通過(guò)訪(fǎng)問(wèn)Cache來(lái)完成。如果調度算法得當,Cache的命中率可以很高。這樣,從用戶(hù)的角度看來(lái),整個(gè)存儲器(Cache+DRAM)就變成了既有Cache這樣高的速度,又有DRAM這樣的大容量的存儲系統了。這對于解決存儲器這個(gè)瓶頸是十分有效的。

綜上所述,Cache具有以下一些特點(diǎn):

·Cache雖然也是一類(lèi)存儲器.但是不能由用戶(hù)直接訪(fǎng)問(wèn)。
·Cache的容量不大,其中存放的只是主存儲器中某一部分內容的拷貝,稱(chēng)為存儲器映象。
·為了保證CPU訪(fǎng)問(wèn)時(shí)有較高的命中率,Cache中的內容應該按一定的算法更換。
·Cache中的內容應該與主存中對應的部分保持一致。也就是說(shuō),如果主存守的內容在調入Cache之后發(fā)生了改變,那么它在Cache中的拷貝也應該隨之改變。反過(guò)來(lái),如果CPU修改了Cache中的內容,也應該修改主存中的相應內容。

現代的Cache系統常常采用分級組織的方法,在CPU中集成了一級Cache(L1),也稱(chēng)為片內Cache;在主板上配置二級Cache(L2)。CPU中的片內Cache雖然容量較小,但是能夠以CPU相同的工作頻率工作,因此速度極快。一般情況下在L1未命中時(shí),才在L2中查找。從賽揚處理器開(kāi)始,甚至已經(jīng)把L2集成到CPU內部了(K6-3處理器也內置了二級緩存,而這時(shí)相應的Socket 7主板上的二級緩存就成為“三級”緩存了)。

所謂存儲器映像問(wèn)題就是如何組織Cache.使得下級存儲器的每個(gè)部分都能夠在需要時(shí)調入Cache,并且確定調入的內容放在Cache中的什么地方,以便于準確迅速地查找。存儲器映像的方法主要有全相聯(lián)映像法、直接映象法和組相聯(lián)映象法。

全相聯(lián)映像法的基本思想是把一個(gè)主存塊的地址(塊號)和塊的內容都拷貝到Cache行中;由于塊地址也保存在Cache中,因此可以拷貝到Cache中的任意位置。此法的優(yōu)點(diǎn)是靈活,但是查找比較困難,而且硬件的實(shí)現較為困難。

直接映像法的基本思想是一個(gè)主存塊只能拷貝到Cache中固定的行內。該按硬件成本低,但是由于一個(gè)Cache行要對應多個(gè)主存塊,在使用中當這些主存塊需要同時(shí)調入Cache時(shí)將發(fā)生沖突、增加調入調出的開(kāi)銷(xiāo)。

組相聯(lián)映像法是上述兩種方法的折衷方案。其基本思想是把Cache分為m個(gè)組,每個(gè)組分為n行。主存塊分配時(shí)對組是固定的、而在組內的位置可以任意。這樣就綜合了兩者的優(yōu)點(diǎn),這是目前最常用的方法。

由于Cache的容量總是遠小于下一級存儲器的容量,因此Cache中只能是下級存儲器的部分映像。為了使下級存儲器的內容都能在需要時(shí)拷貝到Cache中,必須隨時(shí)替換Cache內容:即把當前不需要的內容調出Cache,騰出空間,調入當前需要的內存塊。在這種調入調出方法中,最重要的是替換的策略,即在需要時(shí)選擇Cache中的哪些行調出,再調入所需的內存塊。這種替換策略通常稱(chēng)為調度算法,它是由硬件實(shí)現的。如果算法選擇不當,將大大增加調入調出的頻度。例如把一個(gè)當前不需要但是很快就將使用的行調出,必然會(huì )降低系統的效率。

常用算法有最不經(jīng)常使用算法、。

最不經(jīng)常使用算法(LFU算法)的思想是把最近一段時(shí)間內被訪(fǎng)問(wèn)次數最少的行調出。因此需要對每一個(gè)行設置一個(gè)計數器,對該行的訪(fǎng)問(wèn)次數計數、在需要時(shí)比較各個(gè)計數器的值,淘汰計數次數最少的數據行。這種算法的問(wèn)題是明顯的、那些在程序前期被頻繁訪(fǎng)問(wèn)而在后期不再使用的行,可能會(huì )在相當長(cháng)的時(shí)間內不被淘沈而那些剛剛調入并將繼續反復使用的行則可能因為其計數器中的值較小而頻道淘汰。這將嚴重影響系統的效率。

另一種較常用的算法是(LRU算法)。LRU算法的思想是將最近一段時(shí)間內最少被訪(fǎng)問(wèn)過(guò)的行淘汰出局。因此也需要為每行設置一個(gè)計數器、但是計數方法與LFU算法不同。LRU算法是把命中行的計數器清零、其它各行計數器加1。當需要替換時(shí)淘汰行計數器計數值最大的數據行出局。

此外還有一些算法,鑒于篇幅不再贅述。

由于Cache中的內容只是主存中相應單元的“拷貝”。因此必須保持這兩處的數據絕對一致,否則就會(huì )產(chǎn)生錯誤。造成Cache和相應主存單元數據不一致的原因來(lái)自?xún)蓚€(gè)方面。一是CPU讀人Cache數據作了修改后再寫(xiě)入Cache,而主存中相應單元的內容并未隨之變化二是在有多個(gè)設備對主存訪(fǎng)問(wèn)的情況下造成的。如多處理器或有DMA的系統,它們直接訪(fǎng)問(wèn)主存儲器,修改了其中的內容,而中的相應數據卻末隨之修改。

1.CPU修改Cache后的處理

對于CPU修改了Cache的數據,如何使主存中相應單元的數據也隨之修改的問(wèn)題。通常有三種不同的處理方式。

一種方式稱(chēng)為“直寫(xiě)式(write—through)”,其原理是在CPU向Cache寫(xiě)入的同時(shí),也把數據寫(xiě)入主存儲器,以保證Cache和主存中相應單元數據的一致性。直寫(xiě)式系統簡(jiǎn)單可靠,但由于CPU每次更新Cache時(shí)都要對主存儲器寫(xiě)入,習此速度受到了影響。

第二種方式稱(chēng)為“緩沖直寫(xiě)式(Posted Write)”,其原理是CPU在更新Cache時(shí)不直接更新主存中的數據,而是把更新的數據送入一個(gè)緩沖器中暫存,這樣CPU就不必等待主存寫(xiě)入造成的延時(shí)而直接進(jìn)入下一周期的操作在適當的時(shí)候再把緩沖器中的內容寫(xiě)入主存中(例如在CPU讀Cache的同時(shí);把緩沖器的內容寫(xiě)入主存)。這種方式在一定程序上提高了速度,但由于緩沖器的容量有限,只能鎖存——次寫(xiě)入的數據,如果發(fā)生連續的寫(xiě)操作則CPU仍需要等待。上述的直寫(xiě)式或緩沖直寫(xiě)式不僅速度低,而且在很多時(shí)候向主存寫(xiě)入是不必要的。例如CPU可能多次對同一個(gè)Cache單元更新內容,實(shí)際上只需把最后更新結果寫(xiě)入主存即可,而不必更新一次Cache,就向主存寫(xiě)入一次。根據這種思想提出了第三種方式,稱(chēng)為“回寫(xiě)式(Write—back)”。有的資料中也稱(chēng)為“寫(xiě)回”。這種方式的原理是CPU修改了Cache的內容后并不立即修改主存中相應的單元,而在被修改的Cache單元的內容將從Cache中淘汰時(shí)(如更換頁(yè)面)才把它寫(xiě)入主存儲器的相應單元中?;貙?xiě)式系統速度快,避免了不必要的冗余寫(xiě)操作,但結構上比較復雜。當前的微機普遍采回寫(xiě)式系統。

2.多處理器或DMA直接訪(fǎng)問(wèn)主存儲器后的處理

多處理器或DMA直接訪(fǎng)問(wèn)主存儲器造成主存和cache中的數據不一致發(fā)生在以下情形:當主存中某單元內容調入Cache后,又由其它處理器或DMA更新了主存儲器該單元的內容。為了避免這種情況下的數據不一致,通常采用以下三種處理辦法。

一種辦法稱(chēng)為“總線(xiàn)監視”,即由cache控制器隨時(shí)監視系統的地址總線(xiàn),若有其它部件向主存中寫(xiě)入了內容,則把Cache中相應單元的內容置為無(wú)效,CPU必須重新從主存中讀人該單元的內容。

第二種方式稱(chēng)為“主存監視”、由Cache控制器監視所有主存儲器的讀寫(xiě)操作所有對主存的訪(fǎng)問(wèn)都必須通過(guò)Cache來(lái)完成。這樣,凡對主存的寫(xiě)入也就對Cache中的相應單元進(jìn)行拷貝從而保證了兩者數據的一致性。

第三種方式是設置“不可Cache區 (Non Cacheable Block)”,這種方式的基本思想是在主存中開(kāi)辟一塊區域,該區域中數據不受cache控制器的管理,不能調入Cache,CPU只能直接讀寫(xiě)該區域的內容。其它總線(xiàn)設備也只能把數據直接寫(xiě)入該區域中。由于該區域不與Cache發(fā)生關(guān)系,也就不存在數據不一致的問(wèn)題。不可Cache區方式是微機中最主要的方式,不少BIOS設置程序允許用戶(hù)設置不可Cache區的首地址和尺寸、以及可Cache區的地址范圍。

Cache在微機系統中獲得了廣泛應用。除了CPU中的cache外,硬盤(pán)、光盤(pán)甚至主存中部可找到它的蹤影。

1 CPU中的Cache

從486CPU開(kāi)始,在CPU芯片內集成了Cache,稱(chēng)為片內Cache。此時(shí)由于受到工藝上的限制,片內Cache的容量很小,只有8KB。片內Cache的最大優(yōu)點(diǎn)是,CPU對它的訪(fǎng)問(wèn)是在芯片內部進(jìn)行的,不需要通過(guò)總線(xiàn)傳送數據因此速度很快;但是由于其容量很小,而處理器的時(shí)鐘頻率又很高,一旦出現片內cache末命中的情況,性能將明顯化。因此在處理器芯片之外的主板上再加Cache,稱(chēng)為二級Cache(L2Cache),或稱(chēng)為板載Cache。

在實(shí)際使用中,進(jìn)入Cache的內容既可以是指令也可以是數據,而CPU對于這兩者的處理是不完全相同的。為了使達到最佳狀態(tài),從Pentium處理器開(kāi)始把片內Cache容量增加到16KB。其中指令CBche和數據Cache各占8KB。

Intel公司在1995年末推出了Pentium Pro(P6),為了進(jìn)一步改善系統性能,P6采用了雙穴封裝,即除了CPU外,還把256/5l2KB的二級Cache也封裝在同一個(gè)陶瓷片內。這樣,L2也能以處理器的時(shí)鐘高速運行,大大地提高了。

由于P6采用的方式成本很高,在InteI隨后推出的Pentium II中,把L2又從CPU陶瓷封裝中分立出來(lái),和CPU共同安裝在一塊稱(chēng)為SEC的卡盒內,而Pentium II處理器則采用了雙獨立總線(xiàn)結構,其中一條總線(xiàn)聯(lián)接L2高速緩存,另一條負責主存。由于Pentium II的L2只能以CPU時(shí)鐘的一半工作。因此比Pentium Pro的L2慢一些。作為一種補償,Intel將Pentium II上的Ll高速緩存從16K加倍到32K,從而減少了對L2高速緩存的調用頻率。而在非Intel CPU中,L1的容量則更大,以期求得更好的系統性能。

為了匹配硬盤(pán)和主存在數據傳送速度上的矛盾,微機系統中毫無(wú)例外地采用了硬盤(pán)高速緩存,或稱(chēng)為硬盤(pán)Cache。硬盤(pán)高速緩存分為兩種:硬件高速緩存和軟件高速緩存。軟件高速緩存是利用軟件工具(如Smart Drive)在系統主存中開(kāi)辟的一塊區域作為數據傳送緩沖區,硬件高速緩存則是在磁盤(pán)控制器中安裝的一塊RAM,通過(guò)RAM緩沖區讀寫(xiě)數據可以得到更高的訪(fǎng)問(wèn)速度。早期硬盤(pán)中的cache很小,只有數十KB到數百KB,目前新型硬盤(pán)的高速緩存均達到2MB。在選購硬盤(pán)時(shí)除了注意容量、帶寬、轉速等參數外,還應該考慮Cache的容量,越大越好。當Cache容量大時(shí),能夠保證較穩定的突發(fā)數據傳送;而如果Cache容量較小,在讀寫(xiě)大型圖形或視頻文件時(shí),由于連續傳送的數據量很大,緩沖區則不能表示出其優(yōu)越性,使得數據傳送不再能處于突發(fā)傳送方式,而處于持續傳送方式,降低了數據帶寬。

3.光盤(pán)

以CD—ROM驅動(dòng)器為例,其中配置的Cache通常為128KB或者256KB,高檔CD—ROM驅動(dòng)器中的Cache容量可達512KB甚至更高。在CD ROM中配置Cache的目的仍然是作為光盤(pán)的高速緩存,以便減少讀盤(pán)的次數,這對于改善CD RoM的性能是很有好處的。
同樣,其它品種的光盤(pán)驅動(dòng)器,如CD-R、CD—RW、M0、DVD—ROM等,也都配置了Cache。

4.主存儲器中的Cache

主存通常是采用DRAM(動(dòng)態(tài)隨機存取存儲器)器件制作的,而Cache一般采用速度更高的SRAM(靜態(tài)隨機存取存儲器)制作。一種新型的增強DRAM)采用了在DRAM芯片上集成一個(gè)小容量SRAM的辦法,我們可以把這一小片SRAM稱(chēng)為主存中的Cache。這個(gè)Cache在突發(fā)式讀寫(xiě)時(shí)非常有利,使DRAM芯片的性能得到了明顯的提高。

本文引用地址:http://dyxdggzs.com/article/201706/348450.htm


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>