日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

關(guān)于內(nèi)存緩存的那些事

冬至配餃子 ? 來(lái)源:天奇工作室 ? 作者:LRC ? 2022-08-03 16:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

內(nèi)存中的數(shù)據(jù)被劃分成若干個(gè)緩存塊,每個(gè)緩存塊的大小正好對(duì)應(yīng)著一整個(gè)三級(jí)緩存的大小。如此一來(lái),數(shù)據(jù)在內(nèi)存中緩存塊里的偏移量正好就對(duì)應(yīng)著該數(shù)據(jù)應(yīng)該存在于緩存中的位置。舉個(gè)例子,假設(shè)內(nèi)存中一共有四個(gè)緩存塊,記為00,01,10,11四塊。每個(gè)緩存塊又可以劃分成四個(gè)緩存行,記為00,01,10,11四行。結(jié)合起來(lái),最上面緩存塊的最上面的緩存行就可以寫(xiě)成0000,則這個(gè)部分的數(shù)據(jù)應(yīng)該存在于緩存中的第一個(gè)緩存行的位置即00位置。如果1000號(hào)緩存行需要寫(xiě)入,那么就要把0000號(hào)緩存行擦除再寫(xiě)入,不能存儲(chǔ)在緩存中別的地方即使還有空間存放。

pYYBAGLqOFWAL9UtAADEbinV8go779.png

從內(nèi)存到緩存的分類規(guī)則

我們會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,就是如果我們持續(xù)需要0000號(hào)緩存行和1000號(hào)緩存行中的數(shù)據(jù),那么這倆緩存行會(huì)被互相擦除寫(xiě)入,就像打乒乓球一樣,擦了又寫(xiě),寫(xiě)了又擦,而緩存中可能別的位置還空著,造成浪費(fèi)資源,效率低下的乒乓效應(yīng)。

解決的辦法之一就是加大緩存容量。很好理解,緩存變大了,取一個(gè)極限,假設(shè)緩存和內(nèi)存一樣大了,那肯定就不存在乒乓效應(yīng)了,但是這幾乎不可能。

還有一個(gè)有意思的思路是,設(shè)置一個(gè)受害者緩存,(哈哈,這個(gè)英文名是我自己亂翻譯的)。這個(gè)受害者緩存會(huì)暫時(shí)保留一下不久前剛被擦除的數(shù)據(jù),緩存控制器在讀取緩存時(shí)就捎帶看看這個(gè)受害者緩存里有沒(méi)有想要的數(shù)據(jù),如果真的碰到了,那這個(gè)數(shù)據(jù)真就是受害了,冤的很。這個(gè)電路實(shí)現(xiàn)也很簡(jiǎn)單,沒(méi)啥難度,就是效果可能有點(diǎn)玄學(xué)。

有沒(méi)有什么不那么玄學(xué)的方法呢?于是前人提出了多路組關(guān)聯(lián)。既然前文如此粗暴的分割方式會(huì)造成乒乓效應(yīng),那么我們干脆多來(lái)幾個(gè)可替換的位置。還是以上面的例子,假設(shè)內(nèi)存中一共有四個(gè)緩存塊,記為00,01,10,11四塊。每個(gè)緩存塊又可以劃分成四個(gè)緩存行,記為00,01,10,11四行?,F(xiàn)在不同的是我們把緩存劃分成兩路,暫且叫做A路和B路吧。保持和上文中的緩存容量大小一致,那么每路緩存中現(xiàn)在只夠存儲(chǔ)兩個(gè)緩存行了,記為0號(hào)和1號(hào)緩存行??偨Y(jié)一下,現(xiàn)在緩存方面有AB兩路,每路有01兩行。內(nèi)存方面則一共有四個(gè)緩存塊,每個(gè)緩存塊有四個(gè)緩存行?,F(xiàn)在規(guī)定內(nèi)存中緩存行編號(hào)最后一位是0的可以存在緩存的A或B路的0號(hào)緩存行中,內(nèi)存中緩存行編號(hào)最后一位是1的可以存在緩存的A或B路的1號(hào)緩存行中。發(fā)現(xiàn)問(wèn)題沒(méi)有?因?yàn)槟┪矠橥痪幪?hào)的緩存行可以同時(shí)存在于A或者B中,因此乒乓效應(yīng)會(huì)有所改善。

上述例子展示的是兩路組關(guān)聯(lián),目前主流使用的是四路組關(guān)聯(lián),但實(shí)際上路的個(gè)數(shù)要結(jié)合緩存與內(nèi)存的比例來(lái)綜合判斷,例如上述例子,兩路組關(guān)聯(lián)就不太合適,單路的容量被壓縮得太小了。

另外,上文所講的是內(nèi)存和三級(jí)緩存之間的關(guān)聯(lián)情況,該情況可以推廣至三級(jí)緩存和二級(jí)緩存之間以及二級(jí)緩存和一級(jí)緩存之間。在此就不再贅述了。

這里還是要注意一個(gè)之前說(shuō)過(guò)的細(xì)節(jié),CPU并不會(huì)主動(dòng)控制緩存寫(xiě)入內(nèi)存中的數(shù)據(jù)的,也就是說(shuō)緩存對(duì)于CPU來(lái)講是透明的(這個(gè)詞不是很容易理解,但是這就是之前人們翻譯的,我建議翻譯成無(wú)感知)。CPU只是說(shuō)我要讀這塊內(nèi)存里的數(shù)據(jù),它甚至不知道這個(gè)內(nèi)存數(shù)據(jù)在哪里,它只負(fù)責(zé)宣布這件事,而緩存和內(nèi)存則負(fù)責(zé)把它要的數(shù)據(jù)喂給它而已。緩存在喂給它之后留了個(gè)“心眼”——“咱家主子(CPU)最近偏愛(ài)000110100這塊內(nèi)存數(shù)據(jù),我就把這塊數(shù)據(jù)留在我這里,到時(shí)候要的時(shí)候拿著方便“??炊藛幔恳磺卸际桥抛宰髦鲝垺?/p>

再打個(gè)比方,CPU和緩存的關(guān)系就像我和我的胃。我不用控制我的胃蠕動(dòng)消化,我不用控制神經(jīng)元突觸釋放神經(jīng)遞質(zhì),我只負(fù)責(zé)做最高級(jí),最抽象的工作,比如控制我的手寫(xiě)下這篇文章。我不知道我有胃這種東西,也不知道什么神經(jīng)遞質(zhì)、細(xì)胞、組織啥的,就像CPU不知道緩存一樣,我之所以知道這些是因?yàn)橛腥俗隽巳梭w解剖等生物研究,CPU想了解這些可能得等人工智能解剖另一個(gè)人工智能的時(shí)候,或者——用它的意識(shí)來(lái)讀讀我這篇文章。

話說(shuō)回來(lái),各級(jí)緩存之間有兩種不太相同的緩存策略,分別是Inclusive和Exclusive。

前者意思是包含,后者意思是不包含。包含的意思是,三級(jí)緩存中一定會(huì)存在著二級(jí)緩存和一級(jí)緩存里的數(shù)據(jù),二級(jí)緩存一定會(huì)存在著一級(jí)緩存的數(shù)據(jù),其實(shí)質(zhì)就是數(shù)據(jù)從三級(jí)往一級(jí)走的過(guò)程中用的是“復(fù)制”。

而不包含的意思是,三級(jí)緩存中必不存在二級(jí)緩存和一級(jí)緩存里的數(shù)據(jù),二級(jí)緩存中必不存在一級(jí)緩存的數(shù)據(jù),其實(shí)質(zhì)就是數(shù)據(jù)從三級(jí)往一級(jí)走的過(guò)程中用的是“剪切”。這兩種緩存策略的優(yōu)劣應(yīng)該一眼能看出:包含策略會(huì)造成緩存空間浪費(fèi),并且各級(jí)之間的數(shù)據(jù)更新需要保持同步,優(yōu)點(diǎn)則是數(shù)據(jù)的廢除很直接,還有一個(gè)優(yōu)點(diǎn)這里先挖個(gè)坑吧。而不包含策略則不會(huì)造成緩存浪費(fèi),并且具有很好的緩存一致性(即不需要同步),但是數(shù)據(jù)交換量會(huì)變得很大。

這里分別用緩存寫(xiě)入數(shù)據(jù)的例子說(shuō)說(shuō)包含和不包含兩種緩存策略。一開(kāi)始,CPU首先發(fā)出一個(gè)讀內(nèi)存指令,該指令會(huì)附帶著該內(nèi)存地址從CPU內(nèi)核轉(zhuǎn)發(fā)至一級(jí)緩存控制器,假設(shè)一級(jí)緩存沒(méi)有在本級(jí)緩存找到想要的數(shù)據(jù),那么就會(huì)將讀內(nèi)存指令的請(qǐng)求往二級(jí)緩存控制器轉(zhuǎn)發(fā),以此類推,如果都沒(méi)能找到數(shù)據(jù),那么最后內(nèi)存控制器會(huì)得到這條讀內(nèi)存指令,并將數(shù)據(jù)返回至CPU內(nèi)核,同時(shí)該條數(shù)據(jù)會(huì)在CPU的一級(jí)緩存上得到保存(如果是使用Inclusive緩存策略,那么該數(shù)據(jù)也同時(shí)會(huì)在二級(jí)和三級(jí)緩存上得到保存),以便于下次再次使用。然而緩存在電腦開(kāi)機(jī)之后不久肯定就被填滿了,這時(shí)候要有新的數(shù)據(jù)要寫(xiě)入緩存那么肯定需要把一些過(guò)時(shí)的數(shù)據(jù)給替換出去。那么具體是怎么個(gè)替換策略呢?這就考驗(yàn)奴才們對(duì)于主子心思的把控了。這時(shí)候有個(gè)聰明的奴才在總結(jié)了多次經(jīng)驗(yàn)后,提出了LRU替換策略,中文名譯為最近最少使用替換策略,很容易理解,就是最近最少使用的數(shù)據(jù)將會(huì)被新數(shù)據(jù)替換掉。

而包含和不包含的區(qū)別在這里就會(huì)有所體現(xiàn)。如果是包含策略,那么新數(shù)據(jù)直接覆蓋舊數(shù)據(jù)即可,舊數(shù)據(jù)等于直接作廢,除非這個(gè)數(shù)據(jù)最近在CPU中被改寫(xiě)過(guò),需要返回到內(nèi)存中進(jìn)行保存,那么才需要將該緩存行刷回內(nèi)存(那么如何確定該緩存行是否被改寫(xiě)過(guò)呢?可以用一個(gè)名為dirty的標(biāo)志位注明)。而如果是不包含策略,那么一級(jí)緩存淘汰下來(lái)的數(shù)據(jù)就要放置到二級(jí)緩存,如果不巧二級(jí)緩存也滿了,那么仍需淘汰一個(gè)緩存下來(lái)。當(dāng)然,你也可以選擇如果二級(jí)緩存或者三級(jí)緩存沒(méi)空位,那么就直接把淘汰下來(lái)的數(shù)據(jù)扔回內(nèi)存,但是這樣命中率就會(huì)嚴(yán)重下降(等于整個(gè)緩存體系的容量和一級(jí)緩存是一樣大的)。并且如果是二級(jí)緩存或者三級(jí)緩存中的數(shù)據(jù)要寫(xiě)入到一級(jí)緩存中,那么需要把該二級(jí)或者三級(jí)緩存的緩存行與一級(jí)緩存做一個(gè)交換,而不是覆蓋。

那究竟是用Inclusive還是Exclusive呢?各大CPU廠商給出了答案,Exclusive成為目前主流使用的緩存策略。Intel前幾年還在用Inclusive來(lái)著,最近這幾年也轉(zhuǎn)而使用了Exclusive,說(shuō)明Exclusive的優(yōu)勢(shì)比我們想象的大。


審核編輯:劉清

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

    關(guān)注

    114

    文章

    17886

    瀏覽量

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

    關(guān)注

    68

    文章

    11332

    瀏覽量

    225988
  • 緩存器
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    京東緩存中間件架構(gòu)與緩存內(nèi)核優(yōu)化

    一、京東緩存中間件架構(gòu) 1、背景 在當(dāng)今高并發(fā)、分布式的系統(tǒng)架構(gòu)中,緩存已成為提升應(yīng)用性能、降低數(shù)據(jù)庫(kù)負(fù)載的核心組件。隨著業(yè)務(wù)規(guī)模的擴(kuò)大與系統(tǒng)復(fù)雜度的增加,緩存的使用和管理面臨諸多挑戰(zhàn):部署模式多樣
    的頭像 發(fā)表于 04-03 16:18 ?1829次閱讀
    京東<b class='flag-5'>緩存</b>中間件架構(gòu)與<b class='flag-5'>緩存</b>內(nèi)核優(yōu)化

    MangoTree Halo Ultra「全新PXI」,標(biāo)配自動(dòng)糾錯(cuò)內(nèi)存#

    內(nèi)存
    芒果樹(shù)數(shù)字
    發(fā)布于 :2026年03月06日 15:59:34

    KeepAlive:組件緩存實(shí)現(xiàn)深度解析

    個(gè)簡(jiǎn)易實(shí)現(xiàn)。 KeepAlive 組件概述 什么是 KeepAlive KeepAlive 是 Vue 的內(nèi)置組件,它能夠在組件切換時(shí),自動(dòng)將組件實(shí)例保存在內(nèi)存緩存)中,而不是直接將其銷毀。當(dāng)組件
    發(fā)表于 03-05 19:17

    探秘DS2731:緩存內(nèi)存電池備份管理IC的卓越性能與應(yīng)用

    探秘DS2731:緩存內(nèi)存電池備份管理IC的卓越性能與應(yīng)用 在電子設(shè)備的設(shè)計(jì)中,電源管理是一個(gè)至關(guān)重要的環(huán)節(jié),尤其是對(duì)于需要可靠備份電源的應(yīng)用場(chǎng)景。今天,我們就來(lái)深入探討一款功能強(qiáng)大的緩存內(nèi)存
    的頭像 發(fā)表于 02-24 16:40 ?430次閱讀

    C語(yǔ)言的緩沖區(qū)(緩存)詳解

    緩沖區(qū)又稱為緩存,它是內(nèi)存空間的一部分。也就是說(shuō),在內(nèi)存空間中預(yù)留了一定的存儲(chǔ)空間,這些存儲(chǔ)空間用來(lái)緩沖輸入或輸出的數(shù)據(jù),這部分預(yù)留的空間就叫做緩沖區(qū)。   緩沖區(qū)根據(jù)其對(duì)應(yīng)的是輸入設(shè)備還是輸出設(shè)備
    發(fā)表于 01-14 07:30

    匯編寄存器的知識(shí)

    的運(yùn)算速度遠(yuǎn)高于內(nèi)存的讀寫(xiě)速度,為了避免被拖慢,CPU 都自帶一級(jí)緩存和二級(jí)緩存。基本上,CPU 緩存可以看作是讀寫(xiě)速度較快的內(nèi)存。 但
    發(fā)表于 11-20 06:45

    內(nèi)存與數(shù)據(jù)處理優(yōu)化藝術(shù)

    ,避免了數(shù)組索引的額外計(jì)算。 選擇合適的數(shù)據(jù)類型同樣重要。如果一個(gè)變量只需要表示0或1,使用最小所需的數(shù)據(jù)類型就比使用較大的類型更好,因?yàn)樗加?b class='flag-5'>內(nèi)存更少,可能提高緩存利用率。 對(duì)于浮點(diǎn)運(yùn)算,在不需要
    發(fā)表于 11-14 07:46

    有“理”要說(shuō)清 :智能電能表通訊地址科學(xué)分配!

    關(guān)于智能電表通訊地址的那些
    的頭像 發(fā)表于 08-19 15:57 ?1056次閱讀
    有“理”要說(shuō)清 :智能電能表通訊地址科學(xué)分配!

    工業(yè)網(wǎng)關(guān)的內(nèi)存有什么功能

    工業(yè)網(wǎng)關(guān)的內(nèi)存是其核心硬件組件之一,承擔(dān)著保障設(shè)備高效、穩(wěn)定運(yùn)行的關(guān)鍵作用,具體功能可從以下幾個(gè)方面詳細(xì)說(shuō)明: 一、臨時(shí)數(shù)據(jù)存儲(chǔ)與處理 實(shí)時(shí)數(shù)據(jù)緩存:工業(yè)網(wǎng)關(guān)需要實(shí)時(shí)采集來(lái)自傳感器、PLC(可編程
    的頭像 發(fā)表于 08-15 10:15 ?698次閱讀

    緩存之美:萬(wàn)文詳解 Caffeine 實(shí)現(xiàn)原理(上)

    用于統(tǒng)計(jì)元素訪問(wèn)頻率的 Count-Min Sketch 數(shù)據(jù)結(jié)構(gòu)、理解內(nèi)存屏障和如何避免緩存偽共享問(wèn)題、MPSC 多線程設(shè)計(jì)模式、高性能緩存的設(shè)計(jì)思想和多線程間的協(xié)調(diào)方案等等,文章最后會(huì)對(duì)全文內(nèi)容進(jìn)行總結(jié),希望大家能有所收獲的
    的頭像 發(fā)表于 08-05 14:49 ?825次閱讀
    <b class='flag-5'>緩存</b>之美:萬(wàn)文詳解 Caffeine 實(shí)現(xiàn)原理(上)

    高性能緩存設(shè)計(jì):如何解決緩存偽共享問(wèn)題

    緩存行,引發(fā)無(wú)效化風(fēng)暴,使看似無(wú)關(guān)的變量操作拖慢整體效率。本文從緩存結(jié)構(gòu)原理出發(fā),通過(guò)實(shí)驗(yàn)代碼復(fù)現(xiàn)偽共享問(wèn)題(耗時(shí)從3709ms優(yōu)化至473ms),解析其底層機(jī)制;同時(shí)深入剖析高性能緩存庫(kù) Caffeine 如何通過(guò)
    的頭像 發(fā)表于 07-01 15:01 ?903次閱讀
    高性能<b class='flag-5'>緩存</b>設(shè)計(jì):如何解決<b class='flag-5'>緩存</b>偽共享問(wèn)題

    關(guān)于OFDM 你不知道的那些?#OFDM #5G技術(shù) #通信技術(shù)

    通信技術(shù)
    安泰儀器維修
    發(fā)布于 :2025年06月24日 18:31:22

    關(guān)于SFP連接器你必須了解的那些知識(shí)

    關(guān)于SFP連接器你必須了解的那些知識(shí) 一、SFP光籠子的作用及材料組成 1.光籠子的概念與作用 ① 光籠子是什么? SFP Cage(Small Form-factor Pluggable Cage
    的頭像 發(fā)表于 06-17 09:42 ?1285次閱讀
    <b class='flag-5'>關(guān)于</b>SFP連接器你必須了解的<b class='flag-5'>那些</b>知識(shí)

    MCU緩存設(shè)計(jì)

    從Flash或外部存儲(chǔ)器讀取的指令,減少CPU因等待指令加載而停滯,適用于實(shí)時(shí)性要求高的場(chǎng)景(如中斷服務(wù)程序)。 D-Cache?:緩存從Flash、SRAM或外部存儲(chǔ)器讀取的數(shù)據(jù),加速變量與堆棧的讀寫(xiě)操作。 TCM(緊耦合內(nèi)存)?:部分MCU(如STM32H743)設(shè)置
    的頭像 發(fā)表于 05-07 15:29 ?1305次閱讀

    Nginx緩存配置詳解

    Nginx 是一個(gè)功能強(qiáng)大的 Web 服務(wù)器和反向代理服務(wù)器,它可以用于實(shí)現(xiàn)靜態(tài)內(nèi)容的緩存,緩存可以分為客戶端緩存和服務(wù)端緩存。
    的頭像 發(fā)表于 05-07 14:03 ?1395次閱讀
    Nginx<b class='flag-5'>緩存</b>配置詳解
    隆安县| 丽水市| 临潭县| 凤山市| 吕梁市| 云梦县| 宁蒗| 封开县| 紫金县| 称多县| 迁安市| 五台县| 化德县| 乳山市| 广河县| 卢氏县| 连城县| 南和县| 洞口县| 沈阳市| 平昌县| 六枝特区| 色达县| 土默特左旗| 上虞市| 内江市| 高雄县| 泽普县| 湟源县| 喜德县| 新绛县| 五常市| 武夷山市| 天长市| 新绛县| 镇原县| 靖边县| 读书| 木里| 赞皇县| 宣汉县|