導航:首頁 > 源碼編譯 > mesi緩存一致性協議源碼解析

mesi緩存一致性協議源碼解析

發布時間:2022-06-19 07:05:56

❶ 當前主流機使用CACHE的方案,(80386,pentium)後的,如何分塊,分多大

高速緩存Cache是位於CPU和主存儲器之間規模較小、存取速度快捷的靜態存儲器。Cache一般由高速RAM (例如雙極型存儲器或靜態MOs存儲器)構成,採用的映射方式有直接映像方式、全相聯映像和組相聯映像方式。可以使程序和數據共享一個Cache,也可以按程序和數據分別設置。還可以把Cache存儲器分成若干個體,採用多體N路相聯映像。

Cache在CPU中起著舉足輕重的作用,藉助Cache, CPU可以以較快的速度存取靜態存儲器中的數據,而且系統成本上升不大。它是微機系統在不大幅度增加成本的前提下,使性能提升的一個非常有效的技術。

Cache的發展歷史和現狀

Intel 高速緩存結構

為了彌補CPU與內存之間的差距,從80486開始,在CPU內部採用了Cache CPU內部的Cache由硬體進行控制運行,對操作系統和應用軟體都是透明的。在80486中,數據和指令都統一存儲在同一個高速緩存中,因此也稱為「統一的寫通式高速緩存」。「寫通」的含義是:對高速緩存單元內任何數據的修改,同時必須寫入到內存中,以保持高速緩存與內存數據的一致性。這個過程不需要操作系統或應用軟體干預。80486隻有一級高速緩存。

Pentium 高速緩存結構

Pentium CPU 有兩個獨立的一級高速緩存,一個為8KB的指令高速緩存(LII Cache ),另一個為8KB的數據高速緩存(L1 Cache)。允許兩個高速緩存同時進行指令和數據地存取。為了保證高速緩存中數據的一致性,採用了高速緩存一致性協議(MESI)。在Pentium CPU一級高速緩存中,公共的64位內部匯流排給兩個高速緩存輸入數據或指令,每個高速緩存的行長為32個位元組,適合於數據的突發傳輸,一次突發傳輸可以傳送4個64位的數據。

指令高速緩存和數據高速緩存都是雙路組相關的(第1路和第2路)。相關是指高速緩存的靜態存儲器(SRAM)和特徵位(TAG)存儲區既是分割開的,又是相互聯系的。每路分為128個組(0-127),每組分為:指令高速緩存一致性位(M ESI) 、指令特徵位(TAG)、指令高速緩存(SRAM)、數據高速緩存一致性位(MESI) 、數據特徵位(TAG)、數據高速緩存(SRAM)。

在數據高速緩存中,一共分為2路,每路4KB (128個雙行組)。每個雙行組由32個位元組構成。每組有自己的特徵位,特徵位實際上是一個20位的地址,特徵地址用於確定所請求的信息是否在高速緩存中。指令存放在指令高速緩存中,它連接在流水線的開頭部分(預取單元)。數據高速緩存不必連接流水線的開頭部分(預取單元)。數據高速緩存必須准備好,隨時提供給寄存器單元(RU)、算術邏輯單元(ALU)、地址生成電路(AU)等使用。

高速緩存只能提供數據和指令的臨時存儲。當數據從數據高速緩存中撤銷時,如果還沒有進行對內存的修改,就必須將數據寫入到內存中。數據高速緩存可以配置成為寫回或寫通的工作方式(目前大多為寫回方式),以便一行一行地對內存進行修改。在寫回方式中,內存的修改是為了保持數據的一致性。

高速緩存中很少使用的數據要清除掉,以便CPU從內存中讀取一行數據時,有空間存放新的數據。為了確保提供最新的數據,目前CPU都採用「高速緩存一致性協議一MESI" 。該協議有4種狀態:修改(M)、獨占(E)、共享(S)無效(I)。每個高速緩存中的每一行都分配一種狀態,以表示存在該處指令或數據的狀態。MESI(高速緩存一致性協議)為2位,一般放在指令特徵位前。

指令高速緩存中的每一行與一個MESI相關,指令只能夠是兩種狀態的一種,無效狀態(工)說明指令不在該高速緩存中,共享狀態(S)說明高速緩存與內存的內容都是有效的,因為CPU不能寫或修改指令高速緩存的內容。

數據高速緩存需要2個MESI位來表示4種數據狀態。由於數據高速緩存可以工作在寫回方式,因此數據高速緩存的內容可以修改。這就需要2個另外的標志來標明它們的狀態。修改狀態(M)說明只有該高速緩存中具有有效數據,獨占狀態(E )說明只有該高速緩存和內存中具有有效數據。Pentium CPU 的二級高速緩存設計在主板上。

在Pentium 11 CPU 中,一級指令高速緩存(LII Cache)用於預取指令單元(IFU)產生的指令請求。指令預取單元也是唯一可以訪問指令高速緩存的單元。指令預取單元只能在指令高速緩存中讀取指令,不能改寫指令,因此指令高速緩存是只讀的。一級數據高速緩存(Ll DCache)用於CPU執行單元(EXU),執行內存數據的讀寫請求。執行單元可以在數據高速緩存中讀取指令,或者改寫指令,因此數據高速緩存是可讀的。

在Pentium 11CPU中,二級高速緩存為「統一式高速緩存」。它用於一級緩存中指令或數據沒有命中時,由二級緩存提供。如果二級緩存也沒有命中,它將發出一個事務請求給匯流排介面單元(BIU),從內存中讀取指令和數據行。這些讀取的指令或數據存放於二級緩存中,同時也被送到一級緩存中。

Alpha 系列處理器

Alpha 21064主頻為166/200MHz,片上高緩包含兩級。即在晶元內設有直接映像的8KB指令高緩和8KB的數據高緩,在晶元外設有128KB-16MB的片外高緩。Alp ha 2 1164微處理器是Alpha的最新產品,21164的時鍾頻率可達到300MHz,在Alpha 21164上,片上高緩也包含兩級,即除了像21064那樣,在晶元內設有直接映像的8KB指令高緩和8KB數據高緩以外,還在晶元內設有96KB三路組相聯的統一高緩,作為指令和數據合用的第二級高緩。這個片上高緩極大地減少了一級高緩不命中時存儲器訪問的平均等待時間。

PowerPC系列處理器

由美國IBM、Apple和Motorola公司聯合開發的微處理晶元。PowerPC 601採用0.6pmCMOS工藝,工作主頻50/66MHz。只包含一級片上高緩,容量為32KB,組織形式為8路組相聯,指令和數據合存。PowerPC 604隻在晶元內設有四路組相聯的16KB指令高緩和16KB的數據高緩。PowerPC 620包含兩級片上高緩,在晶元內設有四路組相聯的32KB指令高緩和32KB的數據高緩,在晶元外設有1一128MB的片外高緩。

Super SPARC

美國德州儀器公司(TI)為SUN微系統公司生產的第四代SPARC,採用超標量RISC體系結構。時鍾頻率最初為33至50MHz,最高可達100MHz。晶元上集成了36K位元組Harvard結構的高緩(16KB數據和20KB指令)。

❷ 大家幫小女子翻譯一下化學文獻,感激不盡,下輩子做牛做馬做小老婆

熔點在Reichart Thermover熱階段放大獲得的。使用Pye Unicam SP- 1100光譜儀,用溴化鉀光碟記錄紅外光譜。C和H的元素分析則使用Heraeus CHN - O型快速分析儀分別完成。質譜記錄採用Finnigan Matt 8430型質譜儀,在電離勢為70eV下操作。'H和13C核磁共振譜在299.94和75.43兆赫分別錄得,使用Varian 300兆赫儀器以CDC13作為溶劑和MeSi(伊利諾斯協定?)作為內部存儲標准。31P 核磁共振譜是使用相同的儀器以CDCl31和加入外部磷酸(D20的85%)在21.42兆赫下測定的。工作中使用的試劑和溶劑是由Fluka(布克斯,瑞士)獲得的。

屬於專業解釋,你要自己理解部分:

第一句,好像句子不全或者Microscope有誤。 Reichart Thermover是德文或者俄文標志的生產廠的加熱儀器,但是也有一種德國產的化學品中出現。

保留所有外文儀器名稱,因為是非英文,德文?

Me$i解釋為Illinois Protocol緩存和內存一致性的協議,

來世?這些就過時了,沒人再為它煩惱了。

❸ 有誰知道cache的發展過程

縱觀PC系統和CPU二十年的發展,隨著半導體加工工藝水平的不斷提高,CPU和存儲器的性能都有了很大的提高。
CPU頻率的提高,必然要求系統中存儲器的存取速度要提高,還要求其容量要增大。主存儲器DRAM容量的提高還是比較快的,但是DRAM讀取時間的提高卻很慢。從而在速度上與CPU主頻的提高產生了極不相配的情況,這樣會影響整個系統的性能。二十年來,CPU設計的問題之一就是解決高速CPU和低速DRAM之間的平衡或匹配問題,以求系統性能的整體提高。
在它們之間加入高速緩沖存儲器Cache,就是這個問題的解決方案之一。
Cache隨CPU的發展而不斷改變,可以概括為:從無到有,由小到大,先外後內,縱深配備,軟硬兼施。初期的CPU沒有Cache,在80386時期出現外部Cache;80486時期開始有內部僅8kB的Cache。Cache的分級也由L1和L2級,發展到L0和L3級的縱深配備;Cache的大小由當初的8kB,直到Merced的1~2MB。為了更好地利用Cache,還專門配有緩存控制指令。
本文回顧了在過去的二十年中,Cache技術的發展歷程,並對PC其它設備使用Cache技術作了簡單陳述。 PC初期無需Cache在八十年代初,由於CPU主頻很低,DRAM的存取時間甚至快於CPU存取時間,因此無需Cache。例如,當時PC機採用8088CPU,系統主頻為4.77MHz,一個基本匯流排周期為4拍,即840ns。此時64kB的DRAM存取周期200ns,造成DRAM等待CPU的執行的局面,無需Cache。
在PC/AT機採用80286CPU後,系統主頻增加到10MHz,1個基本匯流排周期為2拍,即200ns。此時必須用讀取時間為100ns的DRAM。在採用25MHz的80386DX時,一個基本匯流排周期為2拍,即80ns,當時已沒有速度相匹配的DRAM可用。解決方案有2種:一種是在基本匯流排周期中插入等待,降低CPU的處理能力;另一種是採用內部和外部Cache,使用SRAM晶元以提高存儲器的讀取速度。80386沒有L1 Cache80386初期主頻為20MHz。Intel公司十分重視80386的設計製造,把它定位於「新一代個人電腦架構」,想把一些新技術設計在晶元中。但由於當時工藝所限,內置高速緩存的晶元體積過大,造成成本上升,同時工期有限,幾經權衡,最後決定在80386晶元不設置高速緩沖存儲器,可以生產另外的Cache,以配合80386運作。
盡管人們意識到CPU主頻的增加與內存DRAM存取時間過慢的矛盾已愈加突出,但因條件所限,80386內部沒有L1 Cache,只有外部的Cache。80486出現Cache80486是由80386CPU加80387數字協處理器以及8kB Cache構成。
當CPU的時鍾頻率繼續增加時,外部Cache的SRAM晶元速度也要相應提高,這樣會增加系統成本,為此在設計80486時採用了內部Cache。
80486晶元內由8kB的Cache來存放指令和數據。同時,80486也可以使用處理器外部的第二級Cache,用以改善系統性能並降低80486要求的匯流排帶寬。Cache可以工作在80486所有的操作模式:實地址模式、保護模式和X86模式。對Cache的操作是由系統自動進行的,對程序員透明。而在多處理器系統中,可能要求系統軟體的干預。對於一般的計算機,在系統CMOS設置中均有Cache使用模式的設置。
80486內部Cache是一個4路組相聯Cache,在主存儲器中給定單元的數據能夠存儲在Cache內4個單元中的任何一個。這種4路相聯方式是高命中率的全相聯Cache和快速的直接映像Cache的一種折衷,因而能進行快速查找並獲得高的命中率。Peutium的分離L1 Cache和L2 CachePentium處理器採用了超標量結構雙路執行的流水線,有分支預測技術。
由於Pentium設計有2條並行整數流水線,可同時執行2條命令。整數單元的潛在處理能力實際可增加一倍,處理器也需要對命令和數據進進雙倍的訪問。為使這些訪問不互相干涉,Intel把在486上共用的內部Cache,分成2個彼此獨立的8kB代碼Cache和8kB數據Cache,這兩個Cache可以同時被訪問。這種雙路高速緩存結構減少了爭用Cache所造成的沖突,提高了處理器效能。Pentium的Cache還採用了回寫寫入方式,這同486的貫穿寫入方式相比,可以增加Cache的命中率。此外,還採用了一種稱為MESI高速緩存一致性協議,為確保多處理器環境下的數據一致性提供了保證。Pentium Pro內嵌式L2 Cache為使Pentium Pro的性能超過Pentium,必需使用創新的設計方法。Pentium Pro使用了新的超標量和級流水線技術,包括無序執行、動態分支預測和推測執行的動態執行新技術。它可以使CPU在一個時鍾周期執行3條微操作。CPU並行處理速度的加快,意味著它同時處理指令和數據的數量增加,為不使CPU處於等待狀態,需要重新設計Cache。
Pentium Pro在片內第一級Cache的設計方案中,使指令Cache與數據Cache分別設置。指令Cache的容量為8kB,採用2路組相聯映像方式。數據Cache的容量也為8kB,但採用4路組相聯映像方式。Pentium Pro採用MESI(修改、排他、共享、作廢)協議來維持Cache和主存儲器之間的一致性。通常,人們總以為,像Pentium Pro這樣的3路超標量結構的微處理器會採用更大容量的片內第一級Cache和更大的第二級Cache。然而,Intel公司的設計者卻選擇了另一條設計思路——設計一種Cache存儲階層結構,使得能夠從一個Cache流動到另一個Cache,而不用阻塞執行。
Pentium Pro採用了內嵌式或稱捆綁式L2Cache,大小為256kB或512kB。此時的L2已經用線路直接連到CPU上,益處之一就是減少了對急劇增多L1 Cache的需求。L2 Cache還能與CPU同步運行。即當L1 Cache不命中時,立刻訪問L2 Cache,不產生附加延遲。為進一步減少因要訪問的信息不在高速緩沖中時所帶來的性能損失,Pentium Pro的L1和L2都設計成非鎖定型。即當哪個Cache中沒有CPU所需的信息時,它不妨礙後面訪問Cache的處理過程。Cache可以直接處理最多4次的Cache缺頁情況,藉助CPU的內存有序緩沖區可以順序保存最多12次的內存訪問。非鎖定型Cache適用於Pentium Pro的亂序執行核心,因為在可能引發流水線延遲的長等待內存操作期間,這些Cache可以讓CPU繼續運行。
Pentium Pro的如此捆綁封裝,帶來器件成本提高。一方面專用的L2 cache晶元成本高,另一方面兩個不同功能的晶元只有放在一起聯結後才能最後測試其性能的完整性。而當其中有一個有缺陷時,兩個晶元都被報廢。在以後的Pentium Pro產品中,又將L2 Cache從晶元中去掉。Pentium MMX容量增大的L1和L2CachePentium MMX是能運行多媒體指令MMX的高能奔騰處理器。Pentium MMX具有改進的分支預測和增強型流水線技術,並將L1 Cache容量增加到32kB,L2 Cache為512kB。
Pentium MMX的片內L1數據和指令的Cache,每個增到16kB,4路相聯。較大的獨立內部Cache、減少平均內存存取時間,同時提供對近期所用指令和數據的快速存取,性能因此得到提高。數據Cache支持採用回寫方式更新內存。
由於CacheL1容量的增大,使當時的應用程序運行速度提高了10%左右。PentiumⅡ設有雙獨立匯流排連接L2 CachePentiumⅡ是Pentium Pro的改進型,具有MMX指令,使用動態執行技術,採用雙獨立匯流排結構。PentiumⅡ同樣有2級Cache,L1為32kB(指令和數據Cache各16kB)是Pentium Pro的一倍。L2為512kB。
Pentium Ⅱ與Pentium Pro在L2 Cache 的不同是由於製作成本原因。L2 Cache已不在內嵌晶元上,而是與CPU通過專用64位高速緩存匯流排相聯,與其它元器件共同被組裝在同一基板上,即「單邊接觸盒」上。雙獨立匯流排結構就是:L2高速緩存匯流排和處理器至主內存(Processor-to-main-memory)的系統匯流排。 PentiumⅡ處理器可以同時使用這兩條匯流排,與單一匯流排結構的處理器相比,該處理器可以進出兩倍多的數據,可允許 PentiumⅡ處理器的L2高速緩存比Pentium處理器的L2高速緩存要快1倍。隨著 PentiumⅡ處理器主頻的提高,L2高速緩存的速度也將加快。最後,流水線型系統匯流排可允許同時並行傳輸,而不是單個順序型傳輸。改進型的雙重獨立匯流排結構,可以產生超過與單匯流排結構三倍帶寬的性能。另外,在PentiumⅡ中,採用了ECC技術,此技術應用到二級高速緩存中,大大提高了數據的完整性和可靠性。
為開發低端市場,曾在 PentiumⅡ的基板上除去L2,犧牲一些性能,製造廉價CPU。這就是最初的Celeron處理器。以後的Celeron仍加有較小的片上L2 Cache,其大小為128kB。PentiumⅢ的L2 Cache增大PentiumⅢ也是基於Pentium Pro結構為核心,在原有MMX多媒體指令的基礎上,又增了70多條多媒體指令。它使用動態執行技術,採用雙獨立匯流排結構。
PentiumⅢ具有32kB非鎖定L1 Cache和512kB非鎖定L2 Cache。L2可擴充到1~2MB,具有更合理的內存管理,可以有效地對大於L2緩存的數據塊進行處理,使CPU、Cache和主存存取更趨合理,提高了系統整體性能。在執行視頻回放和訪問大型資料庫時,高效率的高速緩存管理使PⅢ避免了對L2 Cache的不必要的存取。由於消除了緩沖失敗,多媒體和其它對時間敏感的操作性能更高了。對於可緩存的內容,PⅢ通過預先讀取期望的數據到高速緩存里來提高速度,這一特色提高了高速緩存的命中率,減少了存取時間。Merced設有L0即將推出的第7代處理器Merced主頻可達1GHz。很明顯,對Cache的要求更高了。為此,lntel本著「大力提高執行單元和緩存間數據交換速度」的思想,在晶元內開發新的Cache,並增加L1 Cache的容量,來平衡CPU和DRAM間的速度。
為此,在Merced的片上最接近執行單元旁再設另一處Cache,稱為L0緩存,是指令/數據分離型。由於L0Cache在物理位置上比L1離執行單元更近,布線距離的縮短,使它與執行單元間的數據交換速度比L1還快,可以進一步提高工作主頻。
同時,還要在晶元內部配置超過1MB的大容量L1 Cache。晶元內部Cache比外部Cache更易於提升與執行單元間的數據傳送速度。內部Cache的加大,執行單元不易發生「等待」。現行的內部Cache容量僅為32kB~128kB。內部Cache容量的增加會引起晶元面積增大,提高製造成本。但大部分公司認為,由於內部Cache容量增大而導致成本的上揚,可以用製造技術來彌補。與Cache相配合的緩存控制指令為進一步發揮Cache的作用,改進內存性能並使之與CPU發展同步來維護系統平衡,一些製造CPU的廠家增加了控制緩存的指令。如Intel公司在PentiumⅢ處理器中新增加了70條3D及多媒體的SSE指令集。其中有很重要的一組指令是緩存控制指令。AMD公司在K6-2和K6-3中的3DNow!多媒體指令中,也有從L1數據Cache中預取最新數據的數據預取指令(Prefetch)。
PentiumⅢ處理器的緩存控制指令,用於優化內存連續數據流。針對數據流的應用需要對以前的Cache運作方式進行了改進,減少了一些不必要的中間環節,節省了時間,增加了CPU數據匯流排的實際可用帶寬,也提高了Cache的效率。
有兩類緩存控制指令。一類是數據據預存取(Prefetch)指令,能夠增加從主存到緩存的數據流;另一類是內存流優化處理(Memory Streaming)指令,能夠增加從處理器到主存的數據流。這兩類指令都賦予了應用開發人員對緩存內容更大控制能力,使他們能夠控制緩存操作以滿足其應用的需求。
數據預存取指令允許應用識別出所需的信息,並預先將其從主存中取出存入緩存。這樣一來,處理器可以更快地獲取信息,從而改進應用性能。為了進一步削減內存延遲,內存訪問還可以與計算機周期保持流水操作。例如,如果一個應用需要計算一些數值以供3D圖形使用,當它在計算一個值的同時就可以預取下一個需要計算的數值。
內存流優化處理指令允許應用越過緩存直接訪問主存。通常情況下,處理器寫出的數據都將暫時存儲在緩存中以備處理器稍後使用。如果處理器不再使用它,數據最終將被移至主存。然而,對於多媒體應用來就,通常不再需要使用這些數據。因此,這時將數據盡快地移到主存中則顯得至關重要。採用了PentiumⅢ處理器的內存流優化處理指令後,應用程序就能讓數據搭乘「直達快車」,直接到達主存。當數據流直接到達主存時,處理器負責維護緩存的一致性。因為這種方式避免了為數據流留出空間清空緩存的當前內容,從而也提高了緩存的利用率。
總而言之,緩存控制指令改進了進出處理器的數據據流,使處理器保持其高速率運作。通過這些指令(同時還需要一些專為其設計以使其發揮優勢的軟體),商業用戶可以在操作系統和圖形設備驅動程序中感受其性能優勢。Cache在PC中其它設備的應用Cache作為一種速度匹配技術,不僅用在提高CPU對內存的讀寫速度上,而且也用在CPU結構的其它部分和PC系統中。
PC的顯示系統中,由於3D應用的迅猛發展,大量的顯示內存使用著高速緩存技術,如前台緩存、後台緩存、深度緩存和紋理緩存等。
PC的磁碟系統中,為提高內存對磁碟(主要是硬碟)的讀寫速度,就要建立磁碟高速緩存。因為DRAM內存的存取速度對CPU來說較慢,但對磁碟的存取速度卻是很快的。這是因為磁碟存儲系統包含有磁頭的機械運動,而機械運動無法跟傳送電信號的電子速度相比。此外,磁頭中電與磁的信號轉換也對速度有影響。這樣,為了提高磁碟存取速度而採用Cache也就順理成章了。硬碟Cache無需使用高速的SRAM,它只需在內存(DRAM)中劃出一個區域,作為專用的磁碟緩沖區,採用一定的數據結構,即可實現磁碟存取的Cache技術。它的過程也是把即將訪問的數據整塊地拷貝到高速緩存區中,然後內存再到高速緩存中去逐個讀取數據。由於數據在RAM空間內部傳送要比在RAM與磁碟間傳送快得多,系統由此提高了存取速度。
硬碟的Cache可以放在常規內存中。不過,為了不佔用寶貴的用戶程序空間,通常是把它設在擴展內存或擴充內存里。硬碟Cache是由人們共知的SMARTDRIVE.EXE文件自動建立的,用戶只需在AUTOEXEC.BAT與CONFIG.SYS中加入相應的命令行就成了。
在較慢速的其它外圍設備和內存的數據交換中,在網路通訊中,都需要使用Cache技術。推而廣之,凡是在傳輸速度有較大差異的設備之間,都可以利用Cache的速度匹配技術。結束語PC中的Cache主要是為了解決高速CPU和低速DRAM內存間速度匹配的問題,是提高系統性能,降低系統成本而採用的一項技術。隨著CPU和PC的發展,20年來,現在的Cache已成為CPU和PC不可缺少的組成部分,是廣大用戶衡量系統性能優劣的一項重要指標。據預測,在21世紀初期,CPU主頻加快發展的趨勢,加上內存DRAM的存取時間也會提高,從系統的性價比考慮,Cache的配備仍然是重要的技術之一。

java 既然有mesi協議為什麼還有可見性問題

重排序也會導致可見性問題。我感覺mesi在操作系統中通過cpu指令已經幫我們實現了,因此cache-主存一致性問題不會導致可見性問題。我也不敢確定,樓主覺得呢?

❺ COA中mesi協議的解題方法

縱觀PC系統和CPU二十年的發展,隨著半導體加工工藝水平的不斷提高,CPU和存儲器的性能都有了很大的提高。 CPU頻率的提高,必然要求系統中存儲器的存取速度要提高,還要求其容量要增大。
MESI(Modified Exclusive Shared Or Invalid)(也稱為伊利諾斯協議,是因為該協議由伊利諾斯州立大學提出)是一種廣泛使用的支持寫回策略的緩存一致性協議

❻ c/c++多線程編程中,為什麼基本類型不用加鎖

首先 你描述的不對 嚴格來說是在對應的cpu體系下遵循了正確的內存對齊的方式的數據才有不需要加鎖的可能
加鎖主要是防止partial read/write以及cpu亂序帶來的cpu操作可見性問題
舉x86-64的例子來說 一個基本類型如果地址無cache splite(落在兩個cacheline中) 都可以保證無partial read/write 請參考《intel 開發者手冊》第三卷8.1.1.1章
另外一個功能就是杜絕cpu亂序引起的可見性問題了 僅局限於x86-64來說 如果你操控的這個基本類型對於storeload亂序不敏感 做到良好對齊就足夠了 當然cpu亂序又是一個更深入的問題了 手機上說不清 一般來說 lock 都帶有 mb-aquire的語意 unlock都帶有mb-release的語意 因此加鎖可以解決亂序問題
另外 題主懷疑多個緩存數據會不一致 這一點是不會發生的 這一點不是由操作系統保證的 而是每種cpu硬體都會遵守類似於mesi的緩存一致性協議 緩存的數據更改會在fsb上傳遞給各個其他cpu 這種復雜的一致性方式帶來了性能問題 於是又引入了storebuffer和invalidate queue等機制來優化 從而導致cpu亂序的發生 又引入了各種memory barrior指令在必要時防止亂序的發生 在應用層這些被封裝在各種鎖里
上面所說局限於smp結構

❼ volitate 原理

volatile保證多線程可見性,volatile修飾的變數不會引起上下文切換和調度
cpu緩存,cpu運算速度與內存讀寫不匹配,因為cpu運算速度比內存讀寫快的多
從主內存中獲取或者寫入數據會花費很長時間,現在大多數cpu都不會直接訪問內存,而是訪問cpu緩存,cpu緩存是cpu與主內存之間的臨時存儲器,容量小,交換速度快,緩存中的數據是內存中的一小部分數據,是cpu即將訪問的。當cpu調用大量數據時候,就先從緩存中讀取從而加快讀取速度
按照讀取順序與cpu結合的緊密程度,cpu緩存分為
一級緩存:L1位於cpu內核旁邊,是與cpu結合最為緊密的cpu緩存
二級緩存:L2分為內部和外部兩種晶元,內部晶元二級緩存運行速度與主頻相同,外部晶元二級緩存運行速度則只有主頻的一半
三級緩存,只有高端的cpu才有
每一級緩存中所存儲的數據都是下一級緩存中存儲的數據的一部分
cpu要讀取一個數據的時候,首先從一級緩存中查找,如果沒有就從二級中查找,如果還沒有就從三級緩存中或者是內存總進行查找,一般來說,每級緩存的命中率大概有0.8左右,也就是全部數據量的0.8可以在一級緩存中查到,只有剩下的0.2總數據量從二級緩存中或者是三級緩存或者是內存中讀取

緩存行:緩存是分line的,一個段對應一個緩存行,是cpu緩存種可分配的最小存儲單元,通常是64位元組:當cpu看到一條讀取內存的指令的時候,會把內存地址傳遞給一級緩存,一級緩存會檢查它是否有這個內存地址對應的緩存段,如果沒有就把整個緩存段從內存共或者更高級的緩存種載入進來。
cpu執行計算的過程為:程序和數據被載入到主內存中,指令和數據被載入到cpu緩存中,cpu執行指令將結果寫入cpu緩存中,cpu緩存中的數據寫回到主內存中,但是這種方式僅限於單核cpu的時候
如果伺服器是多核cpu呢,
多核處理器中主內存核處理器一樣是分開的,這時候,L3作為統一的高速緩存共享,處理器1擁有自己的L1 L2

這個時候當核0讀取了一個位元組根據局部性原理,與他相鄰的位元組同樣會被讀入核0的緩存中
核3也讀取了同樣的一個位元組,根據局部性原理,與他相鄰的位元組同樣會被讀入到核3的數據中
此時,核0和核3的緩存中擁有同樣的數據
核0修改了那個位元組之後,被修改後那個位元組被回寫到了核0的緩存中,但是該信息並沒有回寫到主內存
當核3訪問該數據的時候,造成該數據不同步
為了解決這個問題**,當一個cpu修改緩存中的位元組的時候,**伺服器中其他cpu的會被通知他們的緩存將是為無效,這樣核1在修改緩存中的數據的時候,核3會發現自己的緩存中的數據已經無效,核0將自己的寫回到主內存中,然後核3將重新讀取該數據
將代碼轉化為匯編指令的時候發現在匯編指令add之前有一個lock指令,lock指令就是關鍵。
lock指令的作用:在修改內存的時候使用lock前綴指令調用加鎖的讀修改寫操作,保證多處理器系統總處理器之間進行可靠的通訊
1.鎖匯流排,其他cpu對內存的讀寫請求會被阻塞,直到鎖釋放,不過實際候來的處理器都採用了緩存緩存代替鎖匯流排,因為匯流排開銷過大,鎖匯流排的時候其他cpu沒辦法訪問內存
2.lock後的寫操作會回寫已經修改的數據,同時讓其他cpu相關緩存行失效,從而重新從內存中載入最新的數據
3.不是內存屏障卻能完成內存屏障的功能,阻止屏障兩邊的指令重排序

嗅探式的緩存一致性協議:所有內存的傳輸都發生在一條共享的匯流排上,而所有的處理器都能看到這條匯流排,緩存本身是獨立的,但是內存是共享的。所有的內存訪問都要進行仲裁,即同一個指令周期種只有一個cpu緩存可以讀寫數據。cpu緩存不僅在內存傳輸的時候與匯流排打交道,還會不斷的在嗅探匯流排上發生數據交換跟蹤其他緩存在做什麼,所以當一個cpu緩存代表它所屬的處理器讀寫內存的時候,其他的處理器都會得到通知(主動通知),他們以此使自己的緩存保存同步。只要某個處理器寫內存,其他處理器就馬上直到這塊內存在他們的緩存段種已經失效。。
MESI協議是緩存一致性協議,在MESI協議中每個緩存行有四個狀態,Modified修改的,表示這行數據有效,數據被修改了和內存中的數據不一致,數據只存在當前cache中,Exclusive獨有的,這行數據有效,數據和內存中的數據一致,數據只存在在本cache中,Shared共享的,這行數據有效,數據和內存中的數據一致,數據存在很多cache中,Invalid這行數據無效,這里的Invalid shared modified都符合我們的嗅探式的緩存一致性協議,但是Exclusive表示獨占的,當前數據有效並且和內存中的數據一致,但是只在當前緩存中,Exclusive狀態解決了一個cpu緩存在讀寫內存的之前我們要通知其他處理器這個問題,只有當緩存行處於Exclusive和modified的時候處理器才能寫,也就是說只有在這兩種狀態之下,處理器是獨占這個緩存行的,當處理器想寫某個緩存行的時候,如果沒有獨占權就必須先發送一條我要獨占權的請求給匯流排,這個時候會通知處理器把他們擁有同一緩存段的拷貝失效,只要在獲得獨占權的時候處理器才能修改數據並且此時這個處理器直到這個緩存行只有一份拷貝並且只在它的緩存里,不會有任何沖突,反之如果其他處理器一直想讀取這個緩存行(馬上就能直到,因為一直在嗅探匯流排),獨占或已修改的緩存行必須要先回到共享狀態,如果是已經修改的緩存行,還要先將內容回寫到內存中。

volatile變數的讀寫
工作內存其實就是cpu緩存,當兩條線程同時操作主內存中的一個volatile變數時候,A線程寫了變數i,此時A線程發出lock指令,發出的lock指令鎖匯流排或者鎖緩存行,同時線程b的高速緩存中的緩存行內容失效,線程A想內存中回寫最新的i。當線程B讀取變數的時候,線程發現對應地址的緩存行被鎖了等待鎖釋放,鎖的一致性協議會保證它讀取到最新的值。

❽ 高速跟蹤緩存是什麼

、高速緩存的概念和原理

1、高速緩存出現的原因
高速緩存(Cache)的出現主要是為了解決CPU運算速度與內存讀寫速度不匹配的矛盾,因為CPU運算速度要比內存讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。為了減少這種情況的發生,人們就想到了使用Cache,它採用一種讀寫速度要比系統內存快很多的特殊靜態內存。系統工作時,將運行時要經常存取的一些數據從系統內存讀取到Cache中,而CPU會首先到Cache中去讀取或寫入數據,如果Cache中沒有所需數據(或Cache已滿,無法再寫入),則再對系統內存進行讀寫,另外Cache在空閑時也會與內存交換數據。其實質就是是在慢速DRAM和快速CPU之間插入一速度較快、容量較小的SRAM,起到緩沖作用,使CPU既可以以較快速度存取SRAM中的數據,提高系統整體性能,又不使系統成本上升過高。

2、高速緩存的工作原理
Cache的工作原理是基於計算機程序訪問的局部性。對大量典型程序運行情況的分析結果表明,在一個較短的時間間隔內,由程序產生的地址往往集中在存儲器邏輯地址空間的很小范圍內。對這些地址的訪問具有時間上集中分布的傾向。數據分布以及工作單元的選擇都可以使存儲器地址相對集中。這種對局部范圍的存儲器地址頻繁訪問,而對此范圍以外的地址則訪問甚少的現象,就稱為程序訪問的局部性。根據程序的局部性原理,就為Cache的存在提供了理論依據,系統正是依據此原理,不斷地將與當前指令集相關聯的一個不太大的後繼指令集從內存讀到Cache,然後再與CPU高速傳送,從而達到速度匹配。

3、高速緩存的分級結構

CPU高速緩存是分級構造的,一般由L1和L2兩極構成,通常L1 Cache的速度最快,與CPU核心的距離也最近,但容量較小,而L2 Cache 速度稍慢,但容量較大。Cache採用分級結構的主要理由在於:對於一個典型的一級緩存系統的80%的內存申請都發生在CPU內部,只有20%的內存申請是與外部內存打交道。而這20%的外部內存申請中的80%又與二級緩存打交道。因此,採用分級結構將更加有利於效能的提升和成本的合理分配。

這種分層的高速緩存布局有助於彌合處理器與系統內存速度之間不斷加大的差距,處理器速度每年大約提高50%,而DRAM存取速度每年僅提高5%,由於性能不匹配程度的加劇,CPU將增加第三級,甚至第四級高速緩存。

4、高速緩存的構成
目前Cache基本上都是採用SRAM存儲器,SRAM是英文Static RAM的縮寫,它是一種具有靜志存取功能的內存,不需要刷新電路即能保存它內部存儲的數據。不像DRAM內存那樣需要刷新電路,每隔一段時間,固定要對DRAM刷新充電一次,否則內部的數據即會消失,因此SRAM具有較高的性能,但是SRAM也有它的缺點,即它的集成度較低,相同容量的DRAM內存可以設計為較小的體積,但是SRAM卻需要很大的體積,這也是目前不能將Cache容量做得太大的重要原因。它的特點歸納如下:優點,節能、速度快,不必配合內存刷新電路,可提高整體的工作效率。 缺點,集成度低,相同的容量體積較大,而且價格較高,少量用於關鍵性系統以提高效率。

二、CPU 高速緩存的發展歷史
高速緩存最初應用在CPU領域,目前在CPU領域的應用也最為廣泛和深入。下面就簡單談談高速緩存隨CPU的發展而不斷變化的歷史過程。

1、80486開始出現了內部Cache
PC在誕生的初期並不存在Cache的概念,由於CPU主頻很低,DRAM的存取時間甚至快於CPU存取時間,因此無需Cache。 80386時代開始出現了外部Cache。在80486時代CPU內部才正式出現了Cache。實際上80486就是由更高主頻的80386 加80387數字協處理器以及8kB 內部Cache構成。80486晶元內由8kB的Cache來存放指令和數據。同時,80486也可以使用處理器外部的第二級Cache,用以改善系統性能並降低80486要求的匯流排帶寬。

2、Peutium時代Cache技術發展迅速
Peutium不僅分離L1 Cache和L2 Cache ,而且由於Pentium處理器採用了超標量結構雙路執行的流水線,有2條並行整數流水線,處理器也需要對命令和數據進進雙倍的訪問。為使這些訪問不互相干涉,Intel把在486上共用的內部Cache,分成2個彼此獨立的8kB代碼Cache和8kB數據Cache,這兩個Cache可以同時被訪問。這種雙路高速緩存結構減少了爭用Cache所造成的沖突,提高了處理器效能。Pentium的Cache還採用了回寫寫入方式,這同486的貫穿寫入方式相比,可以增加Cache的命中率。此外,還採用了一種稱為MESI高速緩存一致性協議,為確保多處理器環境下的數據一致性提供了保證。在Pentium MMX中更是增大了L1的容量,並改進了相關的演算法

3、Pentium Pro出現內嵌式L2 Cache

為使Pentium Pro的性能超過Pentium,必需使用創新的設計方法,Pentium Pro使用了內嵌式L2 Cache,大小為512kB。此時的L2已經用線路直接連到CPU上,好處就是減少了對L1 Cache的需求。L2 Cache與CPU同步運行。當L1 Cache不命中時,立刻訪問L2 Cache,不產生附加延遲。為進一步減少因要訪問的信息不在高速緩沖中時所帶來的性能損失,Pentium Pro的L1和L2都設計成非鎖定型。即當哪個Cache中沒有CPU所需的信息時,它不妨礙後面訪問Cache的處理過程。但限於當時的CPU製造工藝,Pentium Pro的內嵌式L2 Cache 良品率太低,生產成本過高, Pentium Pro成為一款壽命短暫的過渡產品。

4、PentiumⅡ的雙重獨立匯流排
PentiumⅡ是Pentium Pro的改進型,具有MMX指令,使用動態執行技術,採用雙獨立匯流排結構。PentiumⅡ同樣有2級Cache,L1為32kB(指令和數據Cache各16kB)是Pentium Pro的一倍。L2為512kB。
Pentium Ⅱ與Pentium Pro在L2 Cache 的不同主要在於L2 Cache已不在內嵌晶元上,而是與CPU通過專用64位高速緩存匯流排相聯,與其它元器件共同被組裝在同一基板上,即「單邊接觸盒」上。雙獨立匯流排結構就是:L2高速緩存匯流排和處理器至主內存的系統匯流排, PentiumⅡ處理器可以同時使用這兩條匯流排,與單一匯流排結構的處理器相比,該處理器可以進出兩倍多的數據。

5、PentiumⅢ L2 Cache進一步改進
PentiumⅢ也是基於Pentium Pro結構為核心,在原有MMX多媒體指令的基礎上,又增了70多條多媒體指令。它使用動態執行技術,採用雙獨立匯流排結構。 PentiumⅢ具有32kB非鎖定L1 Cache和512kB非鎖定L2 Cache。L2可擴充到1~2MB,具有更合理的內存管理,可以有效地對大於L2緩存的數據塊進行處理,使CPU、Cache和主存存取更趨合理,提高了系統整體性能。在執行大數據流量程序時,高效率的高速緩存管理使PⅢ避免了對L2 Cache的不必要的存取。由於消除了緩沖失敗,多媒體和其它對時間敏感的操作性能更高了。對於可緩存的內容,PⅢ通過預先讀取期望的數據到高速緩存里來提高速度,這一特色提高了高速緩存的命中率,減少了存取時間。

三、其他配件中的高速緩存
Cache從本質上說是一種高速設備和低速設備的速度匹配技術,不僅用在提高CPU對內存的讀寫速度上,而且在電腦的其它配件中也得到了廣泛應用。在較慢速的其它外圍設備和內存的數據交換中,甚至在網路通訊中,都需要使用Cache技術。推而廣之,凡是在傳輸速度有較大差異的設備之間,都可以利用Cache的速度匹配技術。

1、主板高速緩存
由於在Pentium II推出之前,CPU只有內部集成的L1 Cache(一級高速緩存),L2Cache(二級高速緩存)都被放置在主板上。Pentium時代的主板上大都用速度較快,容量較大的同步PB SRAM (Pipeline Burst SRAM 管線突發式靜態內存),一般為256KB或512KB。當時在主板上還存在Tag SRAM的概念。

Tag SRAM,即標記的靜態隨機存取存儲器,它是在高速緩存系統中配合高速緩存的附加SRAM,它也是高速緩存,只是用在高速緩存電路中記錄地址數據,當CPU要讀取主存某一個地址中的數據時,會先到高速緩存電路中去尋找,對高速緩存系統的Tag SRAM所記錄的地址數據進行搜尋和對比,當高速緩存內也存有此地址的數據時,高速緩存匯流排的仲裁控制電路即將數據讀取傳回CPU,若對比Tag SRAM記錄的地址數據而找不到此數據的地址時,CPU就會到主存讀取數據。因此Tag SRAM與高速緩存的命中率有很大關系。由於現在CPU內部都集成了L2 Cache,故PII以後,主板上都不再集成Cache了。

2、CPU高速緩存的應用
關於CPU高速緩存的發展歷史等相關情況,前面已經談及。這里主要介紹一下目前主流CPU使用高速緩存的情況。

象最新的Northwood P4處理器,不僅採用了0.13 微米工藝生產,其體系結構也有所改變,提高了運算效率(指令周期)。 並且將L2 CACHE的容量由老P4的256K 增加為512K。在性能上有10%左右的提升。

Tualatin 賽揚的二級緩存採用了全速256KB(8路), Pentium III同樣大小的二級緩存,這對於提高CPU的性能有很大的幫助。Tualatin核心賽揚的性能非常不錯,在很大程度上就是得益於256KB的全速緩存。這也充分反映出高速緩存對電腦配件性能的影響。

AMD 的Morgan實際上和Palomino核心的毒龍規格相同,只是CPU內部L2 Cache有所不同。最引人注意的一點是改進了Cache演算法。在Morgan中包含了一個硬體化的數據預讀取規則。這個功能就是在CPU對數據進行了處理之後,預讀取設備可以猜測哪些數據是CPU所需要的。如果這些數據並沒有在Cache中,那麼這個預讀取設備就會自動到主內存中去重新獲取這個數據;而如果這個數據已經存在於Cache之中的話,那麼CPU就會更加快速地得到這個數據。

Athlon XP無疑是AMD今年最成功的產品,它採用了類似於Pentium 4的硬體預讀技術--執行跟蹤高速緩存,預先將處理器可能需要的數據從主內存讀到緩存中,這一過程能明顯提高系統匯流排和內存帶寬的利用率,進而提升系統性能。

主要用於伺服器的Merced 對Cache的要求更高了。為此,lntel在晶元內開發新的Cache,並增加L1 Cache的容量,來平衡CPU和DRAM間的速度。為此,在Merced的片上最接近執行單元旁再設另一處Cache,稱為L0緩存,是指令/數據分離型。由於L0Cache在物理位置上比L1離執行單元更近,布線距離的縮短,使它與執行單元間的數據交換速度比L1還快,可以進一步提高工作主頻。 同時,還要在晶元內部配置超過1MB的大容量L1 Cache。晶元內部Cache比外部Cache更易於提升與執行單元間的數據傳送速度。

3、硬碟高速緩存

在PC的磁碟系統中,高速緩存也得到了廣泛應用。為提高內存對硬碟的讀寫速度,就要建立磁碟高速緩存,不過硬碟高速緩存不必使用昂貴的SRAM,使用普通的DRAM即可,因為DRAM內存的存取速度對CPU來說較慢,但對磁碟的存取速度卻是很快的。這是因為磁碟存儲系統包含有磁頭的機械運動,而機械運動無法跟傳送電信號的電子速度相比。以前硬碟內部集成的高速緩存只有512K左右,而現在硬碟普遍將高速緩存的容量提升到2M以上,個別產品甚至達到了8M。由於硬碟Cache無需使用高速的SRAM,除了內部集成的SDRAM,我們還可以在系統主內存中劃出一個區域,作為專用的磁碟緩沖區,採用一定的數據結構,即可實現磁碟存取的二級Cache技術。硬碟高速緩存的工作過程及原理與CPU高速緩存類似,也是把即將訪問的數據整塊地拷貝到高速緩存區中,然後內存再到高速緩存中去逐個讀取數據。由於數據在RAM空間內部傳送要比在RAM與磁碟間傳送快得多,從而系統由此提高了存取速度。

下面給大家介紹一下西數WD1000BB-SE 8MB緩存硬碟,由於內存的讀寫速度大大高於硬碟的讀寫速度,因此大容量的緩存可以有效提高存儲器的數據傳輸速度。但目前市面所售的大部分硬碟都只帶512K--2MB的緩存。西數前段時間推出的7200轉,100G硬碟特別版WD1000BB-SE,其單碟容量為33G,介面類型為ATA100,平均尋道時間8.9毫秒,這方面參數與其他硬碟相比並無特別,不過WD1000BB-SE將硬碟的緩存容量從2MB直接提升到了8MB。引起了業界的普遍關注。經過多方面評測,由於緩存容量的加大,這款IDE介面硬碟的實際性能已經接近或超越了不少10000轉SCSI介面硬碟,成為IDE硬碟中的速度王者。這也充分反映出高速緩存對電腦配件性能的影響。

4、刻錄機的緩存
緩存容量的大小是衡量光碟刻錄機性能的重要技術指標之一,刻錄時數據必須先寫入緩存,刻錄軟體再從緩存區調用要刻錄的數據,在刻錄的同時後續的數據再寫入緩存中,以保持要寫入數據良好的組織和連續傳輸。如果後續數據沒有及時寫入緩沖區,傳輸的中斷則將導致刻錄失敗。因而緩沖的容量越大,刻錄的成功率就越高。市場上的光碟刻錄機的緩存容量一般在1MB~4MB之間,目前最大的有8M緩存的產品。尤其對於IDE介面的刻錄機,緩存容量很重要。增加高速緩存既有利於刻錄機的穩定工作,同時也有利於降低CPU的佔用率。 總之緩存大小對刻錄機是非常的重要的,緩存越大刻錄時就越穩定。目前市場上有多款刻錄機都帶有8M緩存,配合其他防刻死技術,有效防止了出現「緩存欠載」導致刻錄失敗的問題。

在普通光碟機中也內置有高速緩存,當然其作用沒有刻錄機中的重要,主要是為了提高讀盤效率,降低CPU佔用率,因此容量也比較小,一般只有512K。

5、其他設備的高速緩存
在PC其他配件中也都存在高速緩存的應用。比如在顯示系統中,由於3D應用的迅猛發展,現在顯卡上的顯示內存普遍達到了32M以上,甚至多達128M,因此也廣泛使用著高速緩存技術,如前台緩存、後台緩存、深度緩存和紋理緩存等。

現在還有所謂CDRAM(Cache DRAM) 帶高速緩存的內存,就是在內存晶元上集成了特殊構造的SRAM。發展好的話過幾年有可能成為主流內存。除此之外,甚至在音效卡、RAID卡、SCSI卡中也帶有高速緩存,

四、高速緩存的調整及應用

1、BIOS中與高速緩存有關的選項

1)Video ROM的Shadow
「影子」內存(ShadowRAM,或稱ROMShadow)是為了提高系統效率而採用的一種專門Cache技術,它把系統主板上的系統ROMBIOS和適配器卡上的視頻ROMBIOS等拷貝到系統RAM內存中去運行,其地址仍使用它們在上位內存中佔用的原地址。更確切地說,是從擴展內存中拿出一部分物理存儲空間,而賦以ROM的原地址,由這部分擴展RAM代替原ROM。由於ROM採用靜態CMOS電路,其存取速度為200ns左右,而系統存儲器RAM採用動態CMOS電路,其存取速度進幾十ns,速度快好幾倍,將存放在ROM中的BIOS代碼(基本輸入輸出例行程序,它們在系統運行期間非常頻繁的被調用)拷貝到系統RAM中去,就可提高系統運行和顯示的速度和效率。

2)CPU Internal Cache
CPU內部快速緩存是否打開,一般設置為Enable。Enternal Cache:是否使用主板緩存,一般設置為Enable。CPU L2 Cache Ecc Checking:CPU的L2 緩存Ecc 檢測,可設置為Disable。

從字面上看,「CPU Internal Cache」和「External Cache」分別指CPU內部和外部的高速緩存,但更准確的說法應該是一級緩存和二級緩存。Socket/Super 7架構的CPU內部只有一級緩存,二級緩存放在了主板上,「Internal」和「External」的說法就源於此,而對PⅡ、PⅢ和K6-Ⅲ等CPU來說,二級緩存也被集成到CPU內部,內外部的說法就不太確切了,因此一些Slot 1主板對此進行了修改,改稱為「CPU Level 1 Cache」和「CPU Level 2 Cache」。除非打開後系統會出現死機等情況,否則這兩個選項都應設為Enabled,以加快CPU讀取內存的速度。

3)二級緩存的潛伏期

在BIOS中,我們還可以調節二級緩存的潛伏期,其中Level 2 Cache Latency(二級緩存潛伏期)有16個值可選(1~15),從理論上來說,數值越小延遲時間越短,性能也越高。如果把數值設得過小,二級緩存有可能停止工作,不僅系統性能會急速下跌,還會發生死機現象。L2 Cache對內存帶寬有重大影響,即使CPU頻率再高,其它設備跟不上亦是無用,增加緩存潛伏期可以讓機器更穩定,避免上述情況。

4)System BIOS Cacheable

「System BIOS Cacheable」、「Video BIOS Cacheable」和「Video RAM Cacheable」分別指定是否可以使用二級高速緩存來緩存系統BIOS、顯卡BIOS和顯示內存,緩存之後,BIOS調用的執行速度以及訪問顯示內存的速度都會加快,因此最好都設成Enabled。不過,當顯示內存可以被緩存時,少數顯卡可能會出現兼容性問題,此時可考慮將第三項設為Disabled。

2、調整高速緩存優化系統
如果你的應用程序需頻繁訪問硬碟,可在擴充或擴展內存中建立「直接寫盤(write-through)」型磁碟高速緩存。用戶可在autoexec.bat文件中加入命令行:c:\dos\smartdrv.exe,則此驅動程序會自動裝入內存高端,其磁碟緩沖區預設值為256KB,你可以改變這個值的大小。一般設置為物理內存的1/8左右比較合適。SMARTDRV.EXE一個外部設備驅動程序。用此程序可啟動或設置磁碟高速緩沖存儲器。與Cache不同,Cache是充分發揮了CPU的速度,而SMARTDRV是加快了磁碟的讀寫速度。在實際應用中,SMARTDRV.EXT高速緩存驅動程序將記住每次應用程序使用磁碟的磁碟扇區數據,不用再訪問磁碟驅動器,而是訪問內存中已包含這些數據的區域。

總的來說,PC中的Cache主要是為了解決高速設備和低速設備間速度匹配的問題,是提高系統性能,降低系統成本而採用的一項技術。隨著電腦技術的飛速發展, Cache已成為PC中大多數配件不可缺少的組成部分,是衡量系統性能優劣的一項重要指標。從系統的性價比考慮,Cache的配備將在很長一段時間內仍然是PC中重要的技術之一。

❾ Arm AMBA協議集中,什麼叫緩存一致性

引用協議的話來回答吧。:) Hardware coherency enables the sharing of memory by system components without the requirement to perform software cache maintenance to maintain coherency between caches. Regions of memory are coherent if writes to the same memory location by two components are observable in the same order by all components.

閱讀全文

與mesi緩存一致性協議源碼解析相關的資料

熱點內容
Linux目錄inode 瀏覽:142
手機上如何用文件夾發郵件 瀏覽:424
暢課app密碼忘了怎麼找回 瀏覽:75
怎麼編譯idea 瀏覽:229
如何查看伺服器是否做了熱備 瀏覽:999
硬碟同名文件夾病毒 瀏覽:727
百度雲不解壓下載 瀏覽:560
新冠疫情app怎麼用 瀏覽:971
拆二代程序員 瀏覽:398
河北壓縮空氣冷干機生產廠家 瀏覽:580
圖論與java 瀏覽:577
程序員寫代碼告白初音 瀏覽:740
sshpdf 瀏覽:539
windows調用linux 瀏覽:594
如何查找本地伺服器名稱 瀏覽:819
linux文件只讀屬性 瀏覽:586
VNAS技術加密 瀏覽:131
python編程電話費計算話費 瀏覽:463
c編譯文件怎麼改名 瀏覽:626
pdf轉格式軟體 瀏覽:875