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

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

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

緩存如何工作,如何設(shè)計(jì)CPU緩存

h1654155282.3538 ? 來(lái)源:EEtoday ? 作者:EEtoday ? 2020-11-19 17:23 ? 次閱讀

20世紀(jì)80年代,CPU性能有了顯著提升,但這受到板載內(nèi)存訪問(wèn)速度緩慢增長(zhǎng)的阻礙。隨著這種差異的惡化,工程師們發(fā)現(xiàn)了一種通過(guò)新的設(shè)計(jì)技術(shù)緩存來(lái)解決問(wèn)題的方法。本文將幫助你進(jìn)一步了解什么是緩存,它如何工作以及如何設(shè)計(jì)CPU緩存。

什么是CPU硬件緩存?

CPU硬件緩存是一個(gè)較小的內(nèi)存,位于離處理器較近的位置,用于存儲(chǔ)最近引用的數(shù)據(jù)或指令,以便在需要時(shí)可以快速檢索它們。通過(guò)減少訪問(wèn)較慢主存儲(chǔ)器的昂貴的讀寫(xiě)操作,緩存對(duì)CPU的性能產(chǎn)生巨大影響。實(shí)際上,所有現(xiàn)代處理器都采用某種形式的緩存。第一個(gè)緩存是片外或外部的。這些很快就被通常由SRAM制成的片上高速緩存存儲(chǔ)器取代。為了進(jìn)一步提高性能,這些片上高速緩存分為指令和數(shù)據(jù)分區(qū)。圖1顯示了分區(qū)的示例。

圖1.Intel80486使用了通用緩存,而其后繼產(chǎn)品PentiumP5則使用了分區(qū)緩存(總線寬

緩存分區(qū)導(dǎo)致了多級(jí)緩存層次結(jié)構(gòu)的誕生,其中處理器核心將擁有自己的小型私有緩存(L1),其位于更大的共享緩存(L2)之上,其中一些處理器包括第三級(jí)緩存(L3),偶爾會(huì)有第四級(jí)緩存(L4)。

位置(又稱(chēng)緩存如何工作?)

為什么緩存工作?緩存通過(guò)參考局部性原則工作。引用位置是指處理器在運(yùn)行應(yīng)用程序時(shí)訪問(wèn)相同內(nèi)存位置的趨勢(shì)。因?yàn)檫@些內(nèi)存訪問(wèn)是可預(yù)測(cè)的,所以可以通過(guò)緩存來(lái)利用它們。局部性通常分為時(shí)間局部性和空間局部性兩個(gè)子集,有時(shí)又分為三個(gè)子集,稱(chēng)為算法局部性。

時(shí)間位置

時(shí)間局部性是指在短時(shí)間內(nèi)重用特定數(shù)據(jù)項(xiàng)。這依賴(lài)于以下事實(shí):在處理器上運(yùn)行的程序往往在短時(shí)間內(nèi)使用相同的變量和數(shù)據(jù)結(jié)構(gòu)。從主內(nèi)存中提取一個(gè)項(xiàng)目并將其存儲(chǔ)在緩存中之后,對(duì)該數(shù)據(jù)的任何后續(xù)調(diào)用都可以更快地完成。

空間位置

空間位置是指很快將需要的數(shù)據(jù)項(xiàng)駐留在當(dāng)前需要的項(xiàng)附近或相鄰的內(nèi)存位置的趨勢(shì)。這可能是程序員或編譯器在內(nèi)存中聚集項(xiàng)目的結(jié)果。例如,使用數(shù)組(一種數(shù)據(jù)結(jié)構(gòu))的應(yīng)用程序?qū)褦?shù)組的元素存儲(chǔ)在相鄰的存儲(chǔ)單元中。通過(guò)緩存當(dāng)前正在使用的數(shù)據(jù)項(xiàng)旁邊的數(shù)據(jù)項(xiàng),處理器可以在必要時(shí)快速訪問(wèn)那些相鄰項(xiàng)。

算法局部性

一種不常討論的局域類(lèi)型是算法局部性。算法局部性是應(yīng)用程序在相關(guān)數(shù)據(jù)項(xiàng)上執(zhí)行操作的趨勢(shì),盡管不是在任何短時(shí)間段內(nèi),并且盡管事物在內(nèi)存中彼此不相鄰。使用鏈表(另一種數(shù)據(jù)結(jié)構(gòu))的應(yīng)用程序可能會(huì)出現(xiàn)此行為。這種類(lèi)型的局部性可能出現(xiàn)在圖形處理或迭代模擬中。

邏輯緩存組織

緩存存儲(chǔ)和檢索數(shù)據(jù)的方式和位置取決于緩存的組織方式。這稱(chēng)為緩存的邏輯組織。確定存儲(chǔ)的內(nèi)容由內(nèi)置于緩存中的管理啟發(fā)式控制,但它也受到邏輯組織的嚴(yán)重影響。因此,緩存的布局方式在其性能中起著巨大的作用。組織緩存有三種主要方法:全相聯(lián)緩存;直接映射高速緩存;組相聯(lián)緩存。

緩存塊

當(dāng)CPU需要訪問(wèn)主內(nèi)存中的項(xiàng)目時(shí),它使用地址來(lái)查找該項(xiàng)目。CPU硬件緩存通常透明地工作,這意味著程序員不必以任何方式確認(rèn)緩存。因此,用于訪問(wèn)存儲(chǔ)器的地址首先由高速緩存處理。該地址用于標(biāo)識(shí)數(shù)據(jù)項(xiàng)是否位于緩存中。

術(shù)語(yǔ)緩存命中表示在緩存中找到數(shù)據(jù)項(xiàng),緩存未命中表示沒(méi)有找到。高速緩存被組織成稱(chēng)為高速緩存塊的數(shù)據(jù)組。每個(gè)地址被劃分為若干個(gè)個(gè)位字段,以便可以識(shí)別正確的高速緩存塊。這些字段是緩存標(biāo)記、組編號(hào)和字節(jié)偏移量。圖2顯示了分成緩存可以解釋的字段的地址。

圖2.尋址緩存塊

當(dāng)一個(gè)CPU緩存被賦予一個(gè)地址時(shí),它會(huì)將該地址分成必要的字段并開(kāi)始檢查其緩存條目。緩存條目包括緩存標(biāo)記(此處標(biāo)記為標(biāo)記)和緩存塊(標(biāo)記數(shù)據(jù))。緩存標(biāo)記是一個(gè)標(biāo)識(shí)符,用于指示引用哪個(gè)緩存塊。緩存塊是存儲(chǔ)在該標(biāo)記上的實(shí)際數(shù)據(jù),表示來(lái)自主內(nèi)存的一個(gè)項(xiàng)目塊。要獲取該塊中的單個(gè)字段,需要使用偏移量。

直接映射

在直接映射的高速緩存中,高速緩存項(xiàng)被組織成多個(gè)組。地址中的組編號(hào)用于索引每組條目。一旦識(shí)別出組,就比較緩存標(biāo)簽。如果它們匹配,則這是緩存命中并輸出指定的數(shù)據(jù)。理解直接映射緩存的關(guān)鍵是每個(gè)組只有一個(gè)緩存條目。這使得直接映射緩存非常快,同時(shí)消耗最少的功率。

圖3.Adirect-mapped緩存

由于每個(gè)集合只能包含一個(gè)項(xiàng),因此直接映射的緩存確實(shí)具有更高的爭(zhēng)用率,這意味著需要將多個(gè)數(shù)據(jù)項(xiàng)存儲(chǔ)在同一位置。這導(dǎo)致緩存未命中。解決此問(wèn)題的一種方法是使用完全關(guān)聯(lián)的緩存。

全相聯(lián)

全相聯(lián)緩存與直接映射緩存相反。全相聯(lián)緩存具有多個(gè)緩存項(xiàng),而不是包含單個(gè)項(xiàng)的多個(gè)集合,而是包含在單個(gè)集合中。因此,設(shè)定的號(hào)碼不再提供任何信息,也不會(huì)使用。相反,當(dāng)緩存處理內(nèi)存地址時(shí),將檢查每個(gè)緩存條目的匹配標(biāo)記。如果找到,則使用字節(jié)偏移量在高速緩存塊內(nèi)輸出正確的數(shù)據(jù)。檢查每個(gè)緩存條目使得全相聯(lián)的緩存比直接映射緩存消耗更多的功率。通過(guò)使用組關(guān)聯(lián)高速緩存來(lái)完成功耗和更高競(jìng)爭(zhēng)率之間的平衡。

圖4.全相聯(lián)緩存

組相聯(lián)

組相聯(lián)緩存提供了兩全其美的優(yōu)勢(shì)。它由多個(gè)集合組成,每個(gè)集合具有多個(gè)緩存條目。它是如何工作的?首先,設(shè)置好允許緩存跳轉(zhuǎn)到適當(dāng)?shù)臈l目集。接下來(lái),搜索每組條目以尋找匹配的標(biāo)簽。如果找到,則使用字節(jié)偏移量來(lái)輸出所請(qǐng)求的數(shù)據(jù)。此方法允許緩存提供功耗和爭(zhēng)用率的優(yōu)化平衡。

圖5顯示了一個(gè)4路組相聯(lián)緩存。它被稱(chēng)為4路,因?yàn)槊總€(gè)集合最多可以包含四個(gè)緩存條目。如果每個(gè)集合只能容納兩個(gè)緩存條目,那么它將是一個(gè)雙向的。因此,直接映射高速緩存實(shí)際上只是單向組關(guān)聯(lián)高速緩存,而組相聯(lián)高速緩存是單組m路組相聯(lián)高速緩存,其中m是高速緩存條目的數(shù)量。


責(zé)任編輯人:CC

聲明:本文內(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)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10698

    瀏覽量

    209328
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    223

    瀏覽量

    26579
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CPU一級(jí)緩存與二級(jí)緩存深度分析

    CPU緩存:通過(guò)優(yōu)化的的讀取機(jī)制,可以使CPU讀取緩存的命中率非常高,也就是說(shuō)CPU下一次要讀取的數(shù)據(jù)90%都在
    的頭像 發(fā)表于 04-16 10:52 ?1.9w次閱讀
    <b class='flag-5'>CPU</b>一級(jí)<b class='flag-5'>緩存</b>與二級(jí)<b class='flag-5'>緩存</b>深度分析

    CPU一級(jí)緩存

    CPU一級(jí)緩存              CPU緩存(Cache
    發(fā)表于 12-24 10:21 ?453次閱讀

    CPU二級(jí)緩存容量

    CPU二級(jí)緩存容量            CPU緩存(Cache Memory)是位
    發(fā)表于 12-24 10:22 ?510次閱讀

    什么是CPU工作電壓/高級(jí)轉(zhuǎn)移緩存

    什么是CPU工作電壓/高級(jí)轉(zhuǎn)移緩存? CPU工作電壓是指CPU正常
    發(fā)表于 02-04 10:32 ?1174次閱讀

    什么是CPU一級(jí)緩存/二級(jí)緩存?

    什么是CPU一級(jí)緩存/二級(jí)緩存?  即L1 Cache。集成在CPU內(nèi)部中,用于CPU在處理數(shù)據(jù)過(guò)程中數(shù)據(jù)的暫時(shí)保存。由于
    發(fā)表于 02-04 10:43 ?1093次閱讀

    什么是CPU緩存/前端總線(FSB)頻率

    什么是CPU緩存/前端總線(FSB)頻率  緩存   緩存大小也是CPU的重要指標(biāo)之一,而且
    發(fā)表于 02-04 11:22 ?1342次閱讀

    CPU緩存對(duì)性能的影響

      說(shuō)到CPU,不得不說(shuō)的就是CPU緩存,目前CPU緩存已經(jīng)成了衡量CPU性能的一個(gè)必要指標(biāo),
    發(fā)表于 11-13 17:58 ?2355次閱讀

    CPU緩存是什么意思_CPU緩存有什么作用

    由于處理器是核心硬件,相信我們?cè)谶x擇處理器的時(shí)候都會(huì)去關(guān)心處理器參數(shù)方面,而在處理器核心參數(shù)中,我們經(jīng)常會(huì)看到緩存(Cache)這個(gè)參數(shù),那么CPU緩存有什么作用呢?下面小編科普一下關(guān)于CP
    發(fā)表于 05-19 09:24 ?7186次閱讀

    各級(jí)別CPU緩存工作原理

    討論CPU(Central Processing Units)時(shí),您可能聽(tīng)說(shuō)過(guò)高速緩存。但是,我們并沒(méi)有過(guò)多地關(guān)注這些數(shù)字,它們也不是這些CPU廣告的主要亮點(diǎn)。 那么,CPU
    的頭像 發(fā)表于 10-30 15:25 ?3872次閱讀
    各級(jí)別<b class='flag-5'>CPU</b><b class='flag-5'>緩存</b>的<b class='flag-5'>工作</b>原理

    CPU緩存的作用及原理有哪些

    實(shí)際數(shù)據(jù)讀取中重要的是一級(jí)緩存,因?yàn)橐患?jí)緩存速度最快,二級(jí)緩存其次,三級(jí)緩存最慢,只是三級(jí)緩存的容量最大,更容易體現(xiàn)產(chǎn)品更新?lián)Q代時(shí)的價(jià)值。
    的頭像 發(fā)表于 08-27 15:58 ?1w次閱讀

    關(guān)于CPU緩存的作用

    CPU沒(méi)有存儲(chǔ)功能,那么緩存到底是干什么的?CPU緩存是用于減少處理器訪問(wèn)內(nèi)存所需平均時(shí)間的部件,作用類(lèi)似于CPU內(nèi)部的內(nèi)存。
    的頭像 發(fā)表于 03-30 10:58 ?4320次閱讀
    關(guān)于<b class='flag-5'>CPU</b><b class='flag-5'>緩存</b>的作用

    CPU緩存設(shè)計(jì)的原則及工作原理

    本文將研究 CPU 緩存設(shè)計(jì)的原則,包括局部性、邏輯組織和啟發(fā)式管理。
    的頭像 發(fā)表于 04-28 17:19 ?3298次閱讀
    <b class='flag-5'>CPU</b><b class='flag-5'>緩存</b>設(shè)計(jì)的原則及<b class='flag-5'>工作</b>原理

    cpu緩存的作用及原理是什么

    CPU高速緩存集成于CPU的內(nèi)部,其是CPU可以高效運(yùn)行的成分之一,本文圍繞下面三個(gè)話題來(lái)講解CPU緩存
    發(fā)表于 08-21 12:17 ?1585次閱讀
    <b class='flag-5'>cpu</b><b class='flag-5'>緩存</b>的作用及原理是什么

    CPU緩存那些事兒

    CPU Cache 在讀取內(nèi)存數(shù)據(jù)時(shí),每次不會(huì)只讀一個(gè)字或一個(gè)字節(jié),而是一塊塊地讀取,這每一小塊數(shù)據(jù)也叫CPU 緩存行(CPU Cache Line)。這也是對(duì)局部性原理的運(yùn)用,當(dāng)一個(gè)
    的頭像 發(fā)表于 09-10 10:57 ?582次閱讀
    <b class='flag-5'>CPU</b><b class='flag-5'>緩存</b>那些事兒

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

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