色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

冬至配餃子 ? 來源:天奇工作室 ? 作者:LRC ? 2022-08-03 16:59 ? 次閱讀

內(nèi)存中的數(shù)據(jù)被劃分成若干個(gè)緩存塊,每個(gè)緩存塊的大小正好對(duì)應(yīng)著一整個(gè)三級(jí)緩存的大小。如此一來,數(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é)合起來,最上面緩存塊的最上面的緩存行就可以寫成0000,則這個(gè)部分的數(shù)據(jù)應(yīng)該存在于緩存中的第一個(gè)緩存行的位置即00位置。如果1000號(hào)緩存行需要寫入,那么就要把0000號(hào)緩存行擦除再寫入,不能存儲(chǔ)在緩存中別的地方即使還有空間存放。

pYYBAGLqOFWAL9UtAADEbinV8go779.png

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

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

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

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

有沒有什么不那么玄學(xué)的方法呢?于是前人提出了多路組關(guān)聯(lián)。既然前文如此粗暴的分割方式會(huì)造成乒乓效應(yīng),那么我們干脆多來幾個(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)問題沒有?因?yàn)槟┪矠橥痪幪?hào)的緩存行可以同時(shí)存在于A或者B中,因此乒乓效應(yīng)會(huì)有所改善。

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

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

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

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

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

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

而不包含的意思是,三級(jí)緩存中必不存在二級(jí)緩存和一級(jí)緩存里的數(shù)據(jù),二級(jí)緩存中必不存在一級(jí)緩存的數(shù)據(jù),其實(shí)質(zhì)就是數(shù)據(jù)從三級(jí)往一級(jí)走的過程中用的是“剪切”。這兩種緩存策略的優(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ì)變得很大。

這里分別用緩存寫入數(shù)據(jù)的例子說說包含和不包含兩種緩存策略。一開始,CPU首先發(fā)出一個(gè)讀內(nèi)存指令,該指令會(huì)附帶著該內(nèi)存地址從CPU內(nèi)核轉(zhuǎn)發(fā)至一級(jí)緩存控制器,假設(shè)一級(jí)緩存沒有在本級(jí)緩存找到想要的數(shù)據(jù),那么就會(huì)將讀內(nèi)存指令的請(qǐng)求往二級(jí)緩存控制器轉(zhuǎn)發(fā),以此類推,如果都沒能找到數(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í)緩存上得到保存),以便于下次再次使用。然而緩存在電腦開機(jī)之后不久肯定就被填滿了,這時(shí)候要有新的數(shù)據(jù)要寫入緩存那么肯定需要把一些過時(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中被改寫過,需要返回到內(nèi)存中進(jìn)行保存,那么才需要將該緩存行刷回內(nèi)存(那么如何確定該緩存行是否被改寫過呢?可以用一個(gè)名為dirty的標(biāo)志位注明)。而如果是不包含策略,那么一級(jí)緩存淘汰下來的數(shù)據(jù)就要放置到二級(jí)緩存,如果不巧二級(jí)緩存也滿了,那么仍需淘汰一個(gè)緩存下來。當(dāng)然,你也可以選擇如果二級(jí)緩存或者三級(jí)緩存沒空位,那么就直接把淘汰下來的數(shù)據(jù)扔回內(nèi)存,但是這樣命中率就會(huì)嚴(yán)重下降(等于整個(gè)緩存體系的容量和一級(jí)緩存是一樣大的)。并且如果是二級(jí)緩存或者三級(jí)緩存中的數(shù)據(jù)要寫入到一級(jí)緩存中,那么需要把該二級(jí)或者三級(jí)緩存的緩存行與一級(jí)緩存做一個(gè)交換,而不是覆蓋。

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


審核編輯:劉清

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

    關(guān)注

    112

    文章

    16444

    瀏覽量

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

    關(guān)注

    68

    文章

    10901

    瀏覽量

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

    關(guān)注

    0

    文章

    63

    瀏覽量

    11684
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux服務(wù)器卡頓救星之一招釋放Cache內(nèi)存

    為了加速操作和減少磁盤I/O,內(nèi)核通常會(huì)盡可能多地緩存內(nèi)存,這部分內(nèi)存就是Cache Memory(緩存內(nèi)存)。根據(jù)設(shè)計(jì),包含
    的頭像 發(fā)表于 01-16 10:04 ?188次閱讀

    緩存對(duì)大數(shù)據(jù)處理的影響分析

    ,可以將頻繁訪問的數(shù)據(jù)存儲(chǔ)于高速緩存中,從而大大提高數(shù)據(jù)的訪問速度。這是因?yàn)?b class='flag-5'>緩存通常位于內(nèi)存或更快的存儲(chǔ)設(shè)備中,其訪問速度遠(yuǎn)快于傳統(tǒng)的磁盤存儲(chǔ)。 二、減輕后端負(fù)載 大數(shù)據(jù)應(yīng)用通常需要進(jìn)行復(fù)雜的數(shù)據(jù)處理和計(jì)算,直
    的頭像 發(fā)表于 12-18 09:45 ?225次閱讀

    HTTP緩存頭的使用 本地緩存與遠(yuǎn)程緩存的區(qū)別

    HTTP緩存頭是一組HTTP響應(yīng)頭,它們控制瀏覽器和中間代理服務(wù)器如何緩存網(wǎng)頁(yè)內(nèi)容。合理使用HTTP緩存頭可以顯著提高網(wǎng)站的加載速度和性能,減少服務(wù)器的負(fù)載。 1. HTTP緩存頭概述
    的頭像 發(fā)表于 12-18 09:41 ?159次閱讀

    緩存技術(shù)在軟件開發(fā)中的應(yīng)用

    用戶體驗(yàn)。 緩存技術(shù)的原理 緩存技術(shù)的核心思想是將數(shù)據(jù)存儲(chǔ)在快速訪問的介質(zhì)中,以便在需要時(shí)能夠迅速提供數(shù)據(jù)。這通常涉及到以下幾個(gè)步驟: 數(shù)據(jù)存儲(chǔ) :將數(shù)據(jù)存儲(chǔ)在緩存中,通常是內(nèi)存或者專
    的頭像 發(fā)表于 12-18 09:32 ?321次閱讀

    緩存之美——如何選擇合適的本地緩存?

    Guava cache是Google開發(fā)的Guava工具包中一套完善的JVM本地緩存框架,底層實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)類似于ConcurrentHashMap,但是進(jìn)行了更多的能力拓展,包括緩存過期時(shí)間設(shè)置、緩存容量設(shè)置、多種淘汰策略、
    的頭像 發(fā)表于 11-17 14:24 ?401次閱讀
    <b class='flag-5'>緩存</b>之美——如何選擇合適的本地<b class='flag-5'>緩存</b>?

    智算中心網(wǎng)絡(luò)交換機(jī)需要什么樣的緩存架構(gòu)

    場(chǎng)景時(shí),并非緩存越大越好,過大的緩存會(huì)導(dǎo)致更長(zhǎng)的隊(duì)列、更高的時(shí)延和抖動(dòng)、更高的成本,所以不能簡(jiǎn)單地去擴(kuò)大緩存,交換機(jī)避免丟包所需的緩存與此帶寬延遲積BDP直接相關(guān),借助于帶寬時(shí)延積BD
    的頭像 發(fā)表于 11-14 16:53 ?532次閱讀
    智算中心網(wǎng)絡(luò)交換機(jī)需要什么樣的<b class='flag-5'>緩存</b>架構(gòu)

    如何優(yōu)化RAM內(nèi)存使用

    優(yōu)化RAM內(nèi)存使用是一個(gè)重要的任務(wù),特別是對(duì)于那些擁有有限內(nèi)存資源的用戶。以下是一些優(yōu)化RAM內(nèi)存使用的策略,這些策略可以幫助您更有效地使用內(nèi)存
    的頭像 發(fā)表于 11-11 09:58 ?524次閱讀

    京準(zhǔn)時(shí)鐘科普:關(guān)于北斗衛(wèi)星同步時(shí)鐘的那些

    京準(zhǔn)時(shí)鐘科普:關(guān)于北斗衛(wèi)星同步時(shí)鐘的那些?
    的頭像 發(fā)表于 10-29 09:28 ?351次閱讀
    京準(zhǔn)時(shí)鐘科普:<b class='flag-5'>關(guān)于</b>北斗衛(wèi)星同步時(shí)鐘的<b class='flag-5'>那些</b><b class='flag-5'>事</b>?

    Cache和內(nèi)存有什么區(qū)別

    Cache(高速緩存)和內(nèi)存(Memory,通常指主存儲(chǔ)器或RAM)是計(jì)算機(jī)存儲(chǔ)系統(tǒng)中兩個(gè)重要的組成部分,它們?cè)谟?jì)算機(jī)的性能和數(shù)據(jù)處理中扮演著不同的角色。以下是對(duì)Cache和內(nèi)存之間區(qū)別的詳細(xì)解析。
    的頭像 發(fā)表于 09-26 15:28 ?2065次閱讀

    什么是CPU緩存?它有哪些作用?

    CPU緩存(Cache Memory)是計(jì)算機(jī)系統(tǒng)中一個(gè)至關(guān)重要的組成部分,它位于CPU與內(nèi)存之間,作為兩者之間的臨時(shí)存儲(chǔ)器。CPU緩存的主要作用是減少CPU訪問內(nèi)存所需的時(shí)間,從而提
    的頭像 發(fā)表于 08-22 14:54 ?3582次閱讀

    芯片設(shè)計(jì)流片、驗(yàn)證、成本的那些

    前言我們聊聊芯片設(shè)計(jì)、流片、驗(yàn)證、制造、成本的那些;流片對(duì)于芯片設(shè)計(jì)來說就是參加一次大考。流片的重要性就在于能夠檢驗(yàn)芯片設(shè)計(jì)是否成功,是芯片制造的關(guān)鍵環(huán)節(jié),也就是將設(shè)計(jì)好的方案交給芯片制造廠生產(chǎn)
    的頭像 發(fā)表于 08-09 08:11 ?2109次閱讀
    芯片設(shè)計(jì)流片、驗(yàn)證、成本的<b class='flag-5'>那些</b><b class='flag-5'>事</b>

    如何檢測(cè)內(nèi)存泄漏

    檢測(cè)內(nèi)存泄漏是軟件開發(fā)過程中一項(xiàng)至關(guān)重要的任務(wù),它有助于識(shí)別和解決那些導(dǎo)致程序占用過多內(nèi)存資源,從而影響程序性能甚至導(dǎo)致程序崩潰的問題。以下將詳細(xì)闡述幾種常見的內(nèi)存泄漏檢測(cè)方法,每種方
    的頭像 發(fā)表于 07-30 11:50 ?2199次閱讀

    ESP8266緩存AP后,是否會(huì)自動(dòng)連接到任何緩存的AP?

    我有一個(gè)關(guān)于工作站模式的 AP 緩存的問題。我知道ESP8266最多可以緩存 5 個(gè) AP 已成功連接。SDK 說: wifi_station_ap_number_set 設(shè)置將在
    發(fā)表于 07-11 07:58

    緩存有大key?你得知道的一些手段

    ?? ? ? ? 背景: 最近系統(tǒng)內(nèi)緩存CPU使用率一直報(bào)警,超過設(shè)置的70%報(bào)警閥值,針對(duì)此場(chǎng)景,需要對(duì)應(yīng)解決緩存是否有大key使用問題,掃描緩存集群的大key,針對(duì)每個(gè)key做優(yōu)化處理。 以下
    的頭像 發(fā)表于 06-19 09:38 ?814次閱讀
    <b class='flag-5'>緩存</b>有大key?你得知道的一些手段

    輥壓機(jī)軸承位磨損修復(fù)你不知道的那些

    電子發(fā)燒友網(wǎng)站提供《輥壓機(jī)軸承位磨損修復(fù)你不知道的那些.docx》資料免費(fèi)下載
    發(fā)表于 03-12 15:10 ?0次下載
    主站蜘蛛池模板: 亚洲AV久久久久久久无码 | 成人小视频在线免费观看 | 美女张开腿让男生桶动态图 | chinese帅哥gv在线看 | 亚洲免费在线观看视频 | 在线国产a不卡 | 日韩中文字幕亚洲无线码 | 秋霞电影网伦大理电影在线观看 | 云南14学生真实初次破初视频 | 青青草原伊人 | 免费黄色网址在线观看 | 欧美A级肉欲大片XXX | 99精品视频在线观看re | 精品午夜中文字幕熟女人妻在线 | 久久久久综合网 | 精品日产1区2卡三卡麻豆 | 亚洲高清视频免费 | 国产精品爽黄69天堂A片 | 久久草福利自拍视频在线观看 | 免费无码又爽又黄又刺激网站 | 欧美精品成人一区二区在线观看 | 99久久久国产精品免费调教 | 蜜桃成熟时2在线观看完整版hd | 久久久精品久久久久特色影视 | 精品极品三大极久久久久 | 成年免费大片黄在线观看岛国 | 国产高清视频青青青在线 | 啦啦啦 中国 日本 高清 在线 | 免费夜色污私人影院网站 | 免费黄色网址在线观看 | 亚洲色图激情文学 | 99无人区码一码二码三 | 精品夜夜澡人妻无码AV蜜桃 | 国产 亚洲 日韩 欧美 在线观看 | 久久综合久久鬼色 | WWW国产亚洲精品久久 | 神马电影院午夜神福利在线观看 | 国产精品1卡二卡三卡四卡乱码 | 久草国产在线播放 | 青青草国产自偷拍 | 国产毛多水多高潮高清 |