當前位置:首頁 » 硬碟大全 » 心理緩存器
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

心理緩存器

發布時間: 2023-03-12 06:52:25

⑴ i-cache是什麼

i-cache(instruction cache)是指令高速緩沖存儲器。

Cache存儲體:存放由主存調入的指令與數據塊.【參考來源:網路知道關於「高速緩沖存儲器」http://ke..com/view/496990.htm】

cache(緩存)是為了提高cpu和內存之間的數據交換速度而設計,也就是平常見到的一級緩存、二級緩存、三級緩存等。

【網路知道「cache」的解釋:http://ke..com/view/44274.htm?func=retitle】
本來還有一個維基網路關於「高速緩存」的解釋,網路不讓放,你自己找下吧

⑵ CPU Cache一L1 L2 L3 TLB

cache是一種又小又快的存儲器。它存在的意義是彌合Memory與CPU之間的速度差距。

現在的CPU中有好幾個等級的緩存。通常L1和L2緩存都是每個CPU一個的, L1緩存有分為L1i和L1d,分別用來存儲指令和數據。L2緩存是不區分指令和數據的。L3緩存多個核心共用一個,通常也不區分指令和數據。  還有一種緩存叫TLB,它主要用來緩存MMU使用的頁表,通常我們講緩存(cache)的時候是不算它的。

Cache hierarchy of the K8 core in the AMD Athlon 64 CPU

Cache Line

Cache存儲數據是固定大小為單位的,稱為一個Cache entry,這個單位稱為Cache line或Cache block。給定Cache容量大小和Cache line size的情況下,它能存儲的條目個數(number of cache entries)就是固定的。因為Cache是固定大小的,所以它從DRAM獲取數據也是固定大小。對於X86來講,它的Cache line大小與DDR3、4一次訪存能得到的數據大小是一致的,即64Bytes。對於ARM來講,較舊的架構(新的不知道有沒有改)的Cache line是32Bytes,但一次內存訪存只訪問一半的數據也不太合適,所以它經常是一次填兩個Cache line,叫做double fill。

CPU從Cache數據的最小單位是位元組,Cache從Memory拿數據的最小單位(這里不講嵌入式系統)是64Bytes,Memory從硬碟拿數據通常最小是4092Bytes。

替換策略

Cache里存的數據是Memory中的 常用 數據一個拷貝,Cache比較小,不可以緩存Memory中的所有數據。當Cache存滿後,再需要存入一個新的條目時,就需要把一個舊的條目從緩存中拿掉,這個過程稱為evict,一個被evict的條目稱為victim。緩存管理單元通過一定的演算法決定哪些數據有資格留在Cache里,哪些數據需要從Cache里移出去。這個策略稱為 替換策略(replacement policy) 。最簡單的替換策略稱為LRU(least recently used),即Cache管理單元記錄每個Cache line最近被訪問的時間,每次需要evict時,選最近一次訪問時間最久遠的那一條做為victim。在實際使用中,LRU並不一定是最好的替換策略,在CPU設計的過程中,通常會不段對替換策略進行改進,每一款晶元幾乎都使用了不同的替換策略。

寫入策略與一致性

CPU需要讀寫一個地址的時候,先去Cache中查找,如果數據不在Cache中,稱為Cache miss,就需要從Memory中把這個地址所在的那個Cache line上的數據載入到Cache中。然後再把數返回給CPU。這時會伴隨著另一個Cache 條目成為victim被替換出去。

如果CPU需要訪問的數據在Cache中,則稱為Cache hit。

針對寫操作,有兩種寫入策略,分別為write back和write through。write through策略下,數據直接同時被寫入到Memory中,在write back策略中,數據僅寫到Cache中,此時Cache中的數據與Memory中的數據不一致,Cache中的數據就變成了臟數據(dirty)。如果其他部件(DMA, 另一個核)訪問這段數據的時候,就需要通過 Cache一致性協議 (Cache coherency protocol)保證取到的是最新的數據。另外這個Cache被替換出去的時候就需要寫回到內存中。

Cache Miss 與CPU stall

如果發生了Cache Miss,就需要從Memory中取數據,這個取數據的過程中,CPU可以執行幾十上百條指令的,如果等待數據時什麼也不做時間就浪費了。可以在這個時候提高CPU使用效率的有兩種方法,一個是亂序執行(out of order execution),即把當前線程中後面的、不依賴於當前指令執行結果的指令拿過來提前執行,另一個是超線程技術,即把另一個線程的指令拿過來執行。

L1/L2 Cache速度差別

L1 cache: 3 cycles

L2 cache: 11 cycles

L3 cache: 25 cycles

Main Memory: 100 cycles

L1/L2 Cache都是用SRAM做為存儲介質,為什麼說L1比L2快呢?這裡面有三方面的原因:

1. 存儲容量不同導致的速度差異

L1的容量通常比L2小,容量大的SRAM訪問時間就越長,同樣製程和設計的情況下,訪問延時與容量的開方大致是成正比的。

2. 離CPU遠近導致的速度差異

通常L1 Cache離CPU核心需要數據的地方更近,而L2 Cache則處於邊緩位置,訪問數據時,L2 Cache需要通過更遠的銅線,甚至更多的電路,從而增加了延時。

L1 Cache分為ICache(指令緩存)和DCache(數據緩存),指令緩存ICache通常是放在CPU核心的指令預取單遠附近的,數據緩存DCache通常是放在CPU核心的load/store單元附近。而L2 Cache是放在CPU pipeline之外的。

為什麼不把L2 Cache也放在很近的地方呢?由於Cache的容量越大,面積越大,相應的邊長的就越長(假設是正方形的話),總有離核遠的。

下面的圖並不是物理上的圖,只是為大家回顧一下CPU的pipe line。

另外需要注意的是這張圖里展示了一個二級的DTLB結構,和一級的ITLB。

3. 製程不同的造成的速度差異

在實際設計製造時,針對L1/L2的不同角色,L1更加註重速度, L2更加註重節能和容量。在製程上這方面有體現,(但我不懂,。。。。)。在設計時,這方面的有體現:

首先, L1 Cache都是N路組相聯的,N路組相聯的意思時,給定一個地址,N個Cache單元同時工作,取出N份tag和N份數據,然後再比較tag,從中選出hit的那一個採用,其它的丟棄不用。這種方式一聽就很浪費,很不節能。

另外,L2 Cache即便也是N路組相聯的,但它是先取N個tag,然後比對tag後發現cache hit之後再把對應的數據取出來。由於L2是在L1 miss之後才會訪問,所以L2 cache hit的概率並不高,訪問的頻率也不高,而且有前面L1抵擋一下,所以它的延遲高點也無所謂,L2容量比較大,如果數據和tag一起取出來,也比較耗能。

通常專家都將L1稱為latency filter, L2稱為bandwidth filter。

L3 Cache

L1/L2 Cache通常都是每個CPU核心一個(x86而言,ARM一般L2是為一個簇即4個核心共享的),這意味著每增加一個CPU核心都要增加相同大小的面積,即使各個CPU核心的L2 Cache有很多相同的數據也只能各保存一份,因而一個所有核心共享的L3 Cache也就有必要了。

L3 Cache通常都是各個核心共享的,而且DMA之類的設備也可以用。

由於L3 Cache的時延要求沒有那麼高,現在大家也要考慮不使用SRAM,轉而使用STT-MRAM,或是eDRAM來做L3 Cache。

邏輯Cache和物理Cache

Cache在系統中的位置根據與MMU的相對位置不同,分別稱為logical Cache和physical cache。

Logical Cache接受的是邏輯地址,物理Cache接受的是物理地址。

logical cache有一個優勢就是可以在完成虛擬地址到物理地址的翻譯之前就可以開始比對cache,但是有一個問題就是Cache 一致性還有cache eviction必須通過物理地址來做,因為多個虛擬地址可能對應同一個物理地址,不能保證不同的虛擬地址所以應的cache就一定不是同一份數據。為了解決這個問題,就不得不把物理地址也保存在為tag。這樣tag要存的內容就增加了一倍。

相對而言,physical cache由於一開始就是物理地址,所以只需要存物理地址為tag,而不需要再保存虛擬地址為tag,看起來簡單了很多。

其實總結起來,Cache的tag有兩種作用:(1)對於N路組相聯cache中,通過tag比對選擇使用哪一路的數據,(2)決定cache hit還是miss。前者配合操作系統的情況下,虛擬地址就可以做到,比如說給虛擬地址和物理頁配對的時候總是保證根據兩者的某些位來選way的時候是一樣的,而且前者不需要完全的正確,偶爾錯一些是可以接受的,你可以先選出數據,默認是cache hit,然後拿著數據是計算,但後來通過物理tag比對時發現是miss的情況下,再無效掉這次計算,反正cache miss的情況下cpu本來也需要stall好多個cycle。後者則必須依靠物理地址才可以做到。這樣一來,很多設計都把虛擬地址tag弱化為hint, 僅用於選哪個way。

又沒寫完了,心情不好,吐嘈一下,為什麼有些人自己能力差無法跟上優秀的人節奏,一點都不感到羞愧,反而理直氣壯的要求別人為他維持他自己的心理舒適區?

以下是後面接著寫時需要參考的資料,大家也可以自己看看。

CPU cache - Wikipedia

https://faculty.tarleton.e/agapie/documents/cs_343_arch/04_CacheMemory.pdf

http://www.ecs.csun.e/~cputnam/Comp546/Putnam/Cache%20Memory.pdf

進一步閱讀:

https://cseweb.ucsd.e/classes/fa14/cse240A-a/pdf/08/CSE240A-MBT-L15-Cache.ppt.pdf

http://www.ecs.csun.e/~cputnam/Comp546/Putnam/Cache%20Memory.pdf

https://ece752.ece.wisc.e/lect11-cache-replacement.pdf

http://www.ipdps.org/ipdps2010/ipdps2010-slides/session-22/2010IPDPS.pdf

⑶ 配置高速緩沖儲存器是為了解決什麼

為了解決內存速度低於CPU的速度,因此才在內存與CPU之間增加了一級速度更高的存儲器,稱為高速緩存,事先將CPU可能訪問的數據調入這個緩存供CPU高速訪問。

⑷ 清理垃圾的手機軟體哪一個比較好

清理手機垃圾軟體哪個好

智能手機用久了,系統就會變慢點,或者有點卡,智能手機系統資源豐富,經常安裝卸載應用,免不了造成手機「胃」脹!這個時候手機就該清理一下「胃」了!如何清理呢?清理手機垃圾軟體哪個好呢?下面推薦五款清理手機垃圾軟體,希望對大家有所幫助。經常玩機必備清理緩存的軟體,再也不會懊惱於安卓系統慢啦!

軟體一:清理能手 v3.4.3888

軟體介紹:Android上第一款深度清理軟體,真正清理SD卡,緩存,垃圾簡訊,垃圾文件,全部清光光!新版一鍵清理加入了先進的垃圾文件過濾機制,只清理無用的垃圾文件,不影響電影,小說等重要文件,讓您安心,放心「一鍵清理」!

推薦理由:軟體分為緩存清理,簡訊清理以及深度清理,界面直觀,上手容易!這款軟體體積較小,不過功能實用,值得推薦!

還智能手機一個簡潔清爽的「胃」,緩存軟體,垃圾軟體等清理光光,使手機運行起來流暢。

⑸ 緩存對伺服器的作用是什麼

高速緩存從其他
DNS
伺服器收到的
DNS
記錄。
也可以在
DNS
客戶服務中使用高速緩存,將其作為
DNS
客戶端保存在最近的查詢過程中得到的信息高速緩存的方法。
總的來說就是提高解析速度

⑹ 緩存器是什麼

CPU緩存(Cache Memoney)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。

緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。

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

最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(I-Cache)和指令緩存(D-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,還新增了一種一級追蹤緩存,容量為12KB.

隨著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到18KB之間,二級緩存的容量則分為128KB、256KB、512KB、1MB等。一級緩存容量各產品之間相差不大,而二級緩存容量則是提高CPU性能的關鍵。二級緩存容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部晶體管數的增加,要在有限的CPU面積上集成更大的緩存,對製造工藝的要求也就越高。