chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文吃透Cache處理一致性及工作原理

Linux愛好者 ? 來源:桔里貓 ? 作者:桔里貓 ? 2021-09-01 14:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

可以隨便到網(wǎng)上查一查,各大互聯(lián)網(wǎng)公司筆試面試特別喜歡考一道算法題,即 LRU緩存機(jī)制,又順手查了一下LRU緩存機(jī)制最近有哪些企業(yè)喜歡考察,超級(jí)大熱門!

今天給大家分享一篇關(guān)于 Cache 的硬核的技術(shù)文,基本上關(guān)于Cache的所有知識(shí)點(diǎn)都可以在這篇文章里看到。

關(guān)于 Cache 這方面內(nèi)容圖比較多,不想自己畫了,所以圖都來自《Computer Architecture : A Quantitative Approach》。

這是一本體系架構(gòu)方面的神書,推薦大家看一下。

本文主要內(nèi)容如下,基本涉及了Cache的概念,工作原理,以及保持一致性的入門內(nèi)容。

1、為什么需要 Cache1.1 為什么需要 Cache

我們首先從一張圖來開始講為什么需要 Cache.

28fb4e1a-0ad0-11ec-911a-12bb97331649.png

上圖是 CPU 性能和 Memory 存儲(chǔ)器訪問性能的發(fā)展。

我們可以看到,隨著工藝和設(shè)計(jì)的演進(jìn),CPU 計(jì)算性能其實(shí)發(fā)生了翻天覆地的變化,但是DRAM存儲(chǔ)性能的發(fā)展沒有那么快。

所以造成了一個(gè)問題,存儲(chǔ)限制了計(jì)算的發(fā)展。

容量與速度不可兼得。

如何解決這個(gè)問題呢?可以從計(jì)算訪問數(shù)據(jù)的規(guī)律入手。

我們隨便貼段代碼:

for (j = 0; j 《 100; j = j + 1)

for( i = 0; i 《 5000; i = i + 1)

x[i][j] = 2 * x[i][j];

可以看到,由于大量循環(huán)的存在,我們?cè)L問的數(shù)據(jù)其實(shí)在內(nèi)存中的位置是相近的。

換句專業(yè)點(diǎn)的話說,我們?cè)L問的數(shù)據(jù)有局部性。

我們只需要將這些數(shù)據(jù)放入一個(gè)小而快的存儲(chǔ)中,這樣就可以快速訪問相關(guān)數(shù)據(jù)了。

總結(jié)起來,Cache是為了給CPU提供高速存儲(chǔ)訪問,利用數(shù)據(jù)局部性而設(shè)計(jì)的小存儲(chǔ)單元。

1.2 實(shí)際系統(tǒng)中的 Cache

我們展示一下實(shí)際系統(tǒng)中的 Cache 。

290dd896-0ad0-11ec-911a-12bb97331649.png

如上圖所示,整個(gè)系統(tǒng)的存儲(chǔ)架構(gòu)包括了 CPU 的寄存器,L1/L2/L3 CACHE,DRAM 和硬盤。

數(shù)據(jù)訪問時(shí)先找寄存器,寄存器里沒有找 L1 Cache, L1 Cache 里沒有找 L2 Cache 依次類推,最后找到硬盤中。

同時(shí),我們可以看到,速度與存儲(chǔ)容量的折衷關(guān)系。容量越小,訪問速度越快!

其中,一個(gè)概念需要搞清楚。

CPU 和 Cache 是 word 傳輸?shù)?,?Cache 到主存是以塊傳輸?shù)?,一塊大約 64Byte 。

現(xiàn)有 SOC 中的 Cache 一般組成如下。

1.3 Cache 的分類

Cache按照不同標(biāo)準(zhǔn)分類可以分為若干類。

按照數(shù)據(jù)類型劃分:I-Cache與D-Cache。其中I-Cache負(fù)責(zé)放置指令,D-Cache負(fù)責(zé)方式數(shù)據(jù)。兩者最大的不同是D-Cache里的數(shù)據(jù)可以寫回,I-Cache是只讀的。

按照大小劃分:分為small Cache和large Cache。沒路組(后文組相連介紹)《4KB叫small Cache, 多用于L1 Cache, 大于4KB叫l(wèi)arge Cache。多用于L2及其他Cache.

按照位置劃分:Inner Cache和Outer Cache。一般獨(dú)屬于CPU微架構(gòu)的叫Inner Cache, 例如上圖的L1 L2 CACHE。不屬于CPU微架構(gòu)的叫outer Cache.

按照數(shù)據(jù)關(guān)系劃分:Inclusive/exclusive Cache: 下級(jí)Cache包含上級(jí)的數(shù)據(jù)叫inclusive Cache。不包含叫exclusive Cache。舉個(gè)例子,L3 Cache里有L2 Cache的數(shù)據(jù),則L2 Cache叫exclusive Cache。

2、Cache的工作原理要講清楚 Cache 的工作原理,需要回答 4 個(gè)問題:

數(shù)據(jù)如何放置

數(shù)據(jù)如何查詢

數(shù)據(jù)如何被替換

如果發(fā)生了寫操作,Cache如何處理

2.1 數(shù)據(jù)如何放置

這個(gè)問題也好解決。我們舉個(gè)簡單的栗子來說明問題。

假設(shè)我們主存中有 32 個(gè)塊,而我們的 Cache 一共有 8 個(gè) Cache 行( 一個(gè) Cache 行放一行數(shù)據(jù))。

假設(shè)我們要把主存中的塊 12 放到 Cache 里。

那么應(yīng)該放到 Cache 里什么位置呢?

三種方法:

全相連(Fully associative)??梢苑旁贑ache的任何位置。

直接映射(Direct mapped)。只允許放在Cache的某一行。比如12 mod 8

組相連(set associative)??梢苑旁贑ache的某幾行。例如2路組相連,一共有4組,所以可以放在0,1位置中的一個(gè)。

可以看到,全相連和直接映射是Cache組相連的兩種極端情況。

不同的放置方式主要影響有兩點(diǎn):

1、組相連組數(shù)越大,比較電路就越大,但Cache利用率更高,Cache miss發(fā)生的概率小。2、組相連數(shù)目變小,Cache經(jīng)常發(fā)生替換,但是比較電路比較小。

這也好理解,內(nèi)存中的塊在Cache中可放置的位置多,自然找起來就麻煩。

2.2 如何在Cache中找數(shù)據(jù)

其實(shí)找數(shù)據(jù)就是一個(gè)比對(duì)過程,如下圖所示。

294ef7f4-0ad0-11ec-911a-12bb97331649.png

我們地址都以 Byte 為單位的。

但主存于Cache之間的數(shù)據(jù)交換單位都是塊(block,現(xiàn)代Cache一般一個(gè)block大約64Byte)。所以地址對(duì)最后幾位是block offset。

由于我們采用了組相連,則還有幾個(gè)比特代表的是存儲(chǔ)到了哪個(gè)組。

組內(nèi)放著若干數(shù)據(jù),我們需要比較Tag, 如果組內(nèi)有Tag出現(xiàn),則說明我們?cè)L問的數(shù)據(jù)在緩存中,可以開心的使用了。

比如舉個(gè) 2 路組相連的例子,如下圖所示。

295a6350-0ad0-11ec-911a-12bb97331649.png

T表示Tag。直接比較Tag,就能得知是不是命中了。如果命中了,則根據(jù)index(組號(hào))將對(duì)應(yīng)的塊取出來即可。

如上圖所示。用index選出位于組相連的哪個(gè)組。然后并行的比較Tag, 判斷最后是不是在Cache中。上圖是2路組相連,也就是說兩組并行比較。

那如果不在緩存中呢?這就涉及到另一個(gè)問題。

不在緩存中如何替換 Cache ?

2.3 如何替換Cache中的數(shù)據(jù)

Cache中的數(shù)據(jù)如何被替換的?這個(gè)就比較簡單直接。

隨機(jī)替換。如果發(fā)生Cache miss里隨機(jī)替換掉一塊。

Least recently used. LRU。最近使用的塊最后替換。

First in, first out (FIFO), 先進(jìn)先出。

實(shí)際上第一個(gè)不怎么使用,LRU 和 FIFO 根據(jù)實(shí)際情況選擇即可。

Cache 在什么時(shí)候數(shù)據(jù)會(huì)被替換內(nèi)?也有幾種策略。

不在本 Cache 替換。如果Cache miss了,直接轉(zhuǎn)發(fā)訪問地址到主存,取到的數(shù)據(jù)不會(huì)寫到Cache.

在讀MISS時(shí)替換。如果讀的時(shí)候Cache里沒有該數(shù)據(jù),則從主存讀取該數(shù)據(jù)后寫入Cache。

在寫MISS時(shí)替換。如果寫的時(shí)候Cache里沒有該數(shù)據(jù),則將本數(shù)據(jù)調(diào)入Cache再寫。

2.4 如果發(fā)生了寫操作怎么辦

Cache畢竟是個(gè)臨時(shí)緩存。

如果發(fā)生了寫操作,會(huì)造成Cache和主存中的數(shù)據(jù)不一致。如何保證寫數(shù)據(jù)操作正確呢?

也有三種策略。

通寫:直接把數(shù)據(jù)寫回Cache的同時(shí)寫回主存。極其影響寫速度。

回寫:先把數(shù)據(jù)寫回Cache, 然后當(dāng)Cache的數(shù)據(jù)被替換時(shí)再寫回主存。

通寫隊(duì)列:通寫與回寫的結(jié)合。先寫回一個(gè)隊(duì)列,然后慢慢往主存儲(chǔ)寫。如果多次寫同一個(gè)數(shù)據(jù),直接寫這個(gè)隊(duì)列。避免頻繁寫主存。

3、Cache一致性Cache 一致性是 Cache 中遇到的比較坑的一個(gè)問題。

什么原因需要 Cache 處理一致性呢?

主要是多核系統(tǒng)中,假如core 0讀了主存儲(chǔ)的數(shù)據(jù),寫了數(shù)據(jù)。core 1也讀了主從的數(shù)據(jù)。這個(gè)時(shí)候core 1并不知道數(shù)據(jù)已經(jīng)被改動(dòng)了,也就是說,core 1 Cache中的數(shù)據(jù)過時(shí)了,會(huì)產(chǎn)生錯(cuò)誤。

Cache一致性的保證就是讓多核訪問不出錯(cuò)。

Cache一致性主要有兩種策略。

策略一:基于監(jiān)聽的一致性策略

這種策略是所有Cache均監(jiān)聽各Cache的寫操作,如果一個(gè)Cache中的數(shù)據(jù)被寫了,有兩種處理辦法。

寫更新協(xié)議:某個(gè)Cache發(fā)生寫了,就索性把所有Cache都給更新了。

寫失效協(xié)議:某個(gè)Cache發(fā)生寫了,就把其他Cache中的該數(shù)據(jù)塊置為無效。

策略 1 由于監(jiān)聽起來成本比較大,所以只應(yīng)用于極簡單的系統(tǒng)中。

策略二:基于目錄的一致性策略

這種策略是在主存處維護(hù)一張表。記錄各數(shù)據(jù)塊都被寫到了哪些Cache, 從而更新相應(yīng)的狀態(tài)。一般來講這種策略采用的比較多。又分為下面幾個(gè)常用的策略。

SI: 對(duì)于一個(gè)數(shù)據(jù)塊來講,有share和invalid兩種狀態(tài)。如果是share狀態(tài),直接通知其他Cache, 將對(duì)應(yīng)的塊置為無效。

MSI:對(duì)于一個(gè)數(shù)據(jù)塊來講,有share和invalid,modified三種狀態(tài)。其中modified狀態(tài)表表示該數(shù)據(jù)只屬于這個(gè)Cache, 被修改過了。當(dāng)這個(gè)數(shù)據(jù)被逐出Cache時(shí)更新主存。這么做的好處是避免了大量的主從寫入。同時(shí),如果是invalid時(shí)寫該數(shù)據(jù),就要保證其他所有Cache里該數(shù)據(jù)的標(biāo)志位不為M,負(fù)責(zé)要先寫回主存儲(chǔ)。

MESI:對(duì)于一個(gè)數(shù)據(jù)來講,有4個(gè)狀態(tài)。modified, invalid, shared, exclusive。其中exclusive狀態(tài)用于標(biāo)識(shí)該數(shù)據(jù)與其他Cache不依賴。要寫的時(shí)候直接將該Cache狀態(tài)改成M即可。

我們著重講講 MESI。圖中黑線:CPU的訪問。紅線:總線的訪問,其他Cache的訪問。

當(dāng)前狀態(tài)時(shí)I狀態(tài)時(shí),如果發(fā)生處理器讀操作 prrd。

如果其他Cache里有這份數(shù)據(jù),如果其他Cache里是M態(tài),先 把M態(tài)寫回主存再讀。否則直接讀。最終狀態(tài)變?yōu)镾。

其他Cache里沒這個(gè)數(shù)據(jù),直接變到E狀態(tài)。

當(dāng)前狀態(tài)為S態(tài)。

如果發(fā)生了處理器讀操作,仍然在S態(tài)。

如果發(fā)生了處理器寫操作,則跳轉(zhuǎn)到M狀態(tài)。

如果其他Cache發(fā)生了寫操作,跳到I態(tài)。

當(dāng)前狀態(tài)E態(tài)

發(fā)生了處理器讀操作還是E。

發(fā)生了處理器寫操作變成M。

如果其他Cache發(fā)生了讀操作,變到S狀態(tài)。

當(dāng)前狀態(tài)M態(tài)

發(fā)生了讀操作依舊是M態(tài)。

發(fā)生了寫操作依舊是M態(tài)。

如果其他Cache發(fā)生了讀操作,則將數(shù)據(jù)寫回主存儲(chǔ),變換到S態(tài)。

4、總結(jié)Cache 在計(jì)算機(jī)體系架構(gòu)中有非常重要的地位,本文講了 Cache中最主要的內(nèi)容,具體細(xì)節(jié)可以再根據(jù)某個(gè)點(diǎn)深入研究。

作者:桔里貓

來源:https://zhuanlan.zhihu.com/p/386919471

版權(quán)說明:此文章只做學(xué)術(shù)分享,版權(quán)歸原作者所有,若有侵權(quán),請(qǐng)聯(lián)系修改或刪除

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    20144

    瀏覽量

    246698
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11213

    瀏覽量

    222789
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7314

    瀏覽量

    93919
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    130

    瀏覽量

    29586

原文標(biāo)題:Cache 工作原理,Cache 一致性,你想知道的都在這里

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    電纜組件相位一致性的意義

    、技術(shù)本質(zhì):定義與量化指標(biāo) 相位一致性描述的是多通道電纜組件在相同頻率與輸入信號(hào)下,各通道輸出信號(hào)相位差的穩(wěn)定程度。核心衡量指標(biāo)包括: 相位偏差 :單通道相位的波動(dòng)范圍 通道間相位差 :多通道之間
    的頭像 發(fā)表于 11-27 13:41 ?39次閱讀
    電纜組件相位<b class='flag-5'>一致性</b>的意義

    請(qǐng)教大家下DP一致性測試問題

    請(qǐng)教大家下,DP的Vbios中已經(jīng)固定了預(yù)加重和Swing的值,DP的TX信號(hào)一致性測試項(xiàng)中Non Pre-Emphasis Level Test(Swing2/Swing0)-PLTPAT,這個(gè)測試項(xiàng)意思是Swing2與Swing0偏差嗎?已經(jīng)固定了Swing中,這
    發(fā)表于 11-12 15:57

    解決鋰電池一致性難題!景鋰新能源電池均衡儀為儲(chǔ)能安全/電動(dòng)車?yán)m(xù)航保駕護(hù)航

    解決鋰電池一致性難題!景鋰新能源電池均衡儀為儲(chǔ)能/電動(dòng)車電池續(xù)航保駕護(hù)航
    的頭像 發(fā)表于 11-06 11:00 ?332次閱讀

    直播回顧 | 深度解讀CAN總線一致性測試的四大層級(jí)與實(shí)戰(zhàn)方法,虹科技術(shù)直播助您破解汽車通信穩(wěn)定性的關(guān)鍵

    ?直播主題CAN總線一致性測試“一致性測試是保障總線系統(tǒng)穩(wěn)定、兼容、可靠運(yùn)行的核心環(huán)節(jié)?!彪S著整車電子電氣架構(gòu)日益復(fù)雜,ECU數(shù)量增多、通信負(fù)載加大,CAN節(jié)點(diǎn)之間若存在電氣特性不匹配、時(shí)序偏差
    的頭像 發(fā)表于 10-30 17:34 ?1907次閱讀
    直播回顧 |  深度解讀CAN總線<b class='flag-5'>一致性</b>測試的四大層級(jí)與實(shí)戰(zhàn)方法,虹科技術(shù)直播助您破解汽車通信穩(wěn)定性的關(guān)鍵

    鏡頭不一致的問題原因分析

    在機(jī)器視覺系統(tǒng)的視界,鏡頭一致性猶如維系整個(gè)生態(tài)的隱形生命線,貫穿于光學(xué)成像、圖像處理到智能決策的全鏈路,其細(xì)微波動(dòng)足以顛覆整個(gè)檢測系統(tǒng)的可靠。當(dāng)工業(yè)界熱衷于討論算法精度與算力突破時(shí),鏡頭這
    的頭像 發(fā)表于 09-11 09:45 ?657次閱讀

    LED材料一致性比對(duì)(導(dǎo)熱塑料開裂案例分享)

    不斷地侵蝕著我們,面對(duì)這些劣質(zhì)產(chǎn)品,可能個(gè)細(xì)小的失誤就可能給企業(yè)造成巨大的財(cái)產(chǎn)損失或斷送了前程。材料一致性比對(duì)的應(yīng)用領(lǐng)域來料檢驗(yàn):由供應(yīng)商未通知客戶擅自改換原材料
    的頭像 發(fā)表于 06-19 14:14 ?416次閱讀
    LED材料<b class='flag-5'>一致性</b>比對(duì)(導(dǎo)熱塑料開裂案例分享)

    怎樣配置CY7C68013A進(jìn)入test packet mode 以可以進(jìn)行眼圖一致性測試?怎樣配置相關(guān)寄存器?

    請(qǐng)教下大家怎樣配置CY7C68013A進(jìn)入test packet mode 以可以進(jìn)行眼圖一致性測試?怎樣配置相關(guān)寄存器?
    發(fā)表于 05-29 06:21

    車用鋰離子電池機(jī)理建模與并聯(lián)模組不一致性研究

    車用鋰離子電池機(jī)理建模與并聯(lián)模組不一致性研究
    發(fā)表于 05-16 21:02

    堆焊熔池輪廓實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)工藝穩(wěn)定性與焊縫一致性

    及稀釋程度等關(guān)鍵參數(shù)對(duì)焊層質(zhì)量有直接影響,實(shí)時(shí)監(jiān)控熔池輪廓和溫度分布可及時(shí)預(yù)警缺陷并指導(dǎo)參數(shù)優(yōu)化,以保證焊層一致性與工藝穩(wěn)定性。今天起了解堆焊熔池輪廓實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)工藝穩(wěn)定性與焊縫一致性。 堆焊簡介 堆焊,又
    的頭像 發(fā)表于 04-24 17:15 ?494次閱讀
    堆焊熔池輪廓實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)工藝穩(wěn)定性與焊縫<b class='flag-5'>一致性</b>

    一致性校正與邊緣融合拼接

    電子發(fā)燒友網(wǎng)站提供《差一致性校正與邊緣融合拼接.pdf》資料免費(fèi)下載
    發(fā)表于 04-10 18:02 ?0次下載

    羅德與施瓦茨TS8980FTA-M1 5G一致性測試系統(tǒng)通過TPAC認(rèn)證

    一致性測試工作項(xiàng)目已進(jìn)入“激活”狀態(tài)。這認(rèn)證包括對(duì)5G毫米波頻段組合中獨(dú)立組網(wǎng)(SA)模式下RRM FR2測試用例的驗(yàn)證,涵蓋單到達(dá)角(1x AoA)和雙到達(dá)角(2x AoA)場景。
    的頭像 發(fā)表于 02-28 17:22 ?1177次閱讀

    炬光科技子公司更名深化品牌一致性

    近期,炬光科技股份有限公司作為全球領(lǐng)先的高功率半導(dǎo)體激光器及原材料、激光光學(xué)、光子應(yīng)用模塊與系統(tǒng)解決方案的提供商,宣布了項(xiàng)重要戰(zhàn)略舉措。為了進(jìn)步深化品牌一致性戰(zhàn)略,炬光科技的全資子公司
    的頭像 發(fā)表于 02-10 11:08 ?856次閱讀

    請(qǐng)問如何保證多片AD1278的通道之間相位一致性?

    讀取手冊(cè),發(fā)現(xiàn)要保證多片AD1278的通道之間相位一致性需要兩點(diǎn):1、CLK一致;2、SYNC_N同時(shí)拉高。 我的情況: 1、各個(gè)AD1278的CLK來著不同的時(shí)鐘源,即分別采用10ppm
    發(fā)表于 01-14 06:02

    安立ME7834NR助力智聯(lián)安驗(yàn)證NB-IoT NTN協(xié)議一致性

    安立公司日前宣布北京智聯(lián)安科技有限公司(以下簡稱“智聯(lián)安”)已經(jīng)成功使用安立協(xié)議一致性測試平臺(tái)ME7834NR來驗(yàn)證其最新NB-IoT NTN芯片MS210的協(xié)議功能。
    的頭像 發(fā)表于 12-13 11:38 ?1412次閱讀

    FCB-EV9520L光軸一致性的典范,焦距變換精準(zhǔn)如初

    索尼FCB-EV9520L出色的光軸一致性在多個(gè)應(yīng)用場景中展現(xiàn)出了其獨(dú)特的優(yōu)勢(shì)和價(jià)值。通過提高圖像的準(zhǔn)確、減少圖像畸變以及增強(qiáng)應(yīng)用場景的適應(yīng),F(xiàn)CB-EV9520L成為了市場上備受矚目的視頻產(chǎn)品解決方案之
    的頭像 發(fā)表于 12-09 09:45 ?976次閱讀
    FCB-EV9520L光軸<b class='flag-5'>一致性</b>的典范,焦距變換精準(zhǔn)如初