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

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

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

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

科技觀察員 ? 來源:allaboutcircuits ? 作者:Stephen St. Michael ? 2022-04-28 17:19 ? 次閱讀

本文將研究 CPU 緩存設(shè)計(jì)的原則,包括局部性、邏輯組織和啟發(fā)式管理。

1980 年代 CPU 性能有了顯著提高,盡管這受到板載內(nèi)存訪問速度增長緩慢的阻礙。隨著這種差異的加劇,工程師們發(fā)現(xiàn)了一種通過新的設(shè)計(jì)技術(shù)——緩存來緩解這個(gè)問題的方法。

本文將幫助您了解更多關(guān)于緩存是什么、它是如何工作的以及如何設(shè)計(jì) CPU 緩存的信息。

什么是 CPU 硬件緩存?

CPU 硬件緩存是一個(gè)較小的內(nèi)存,位于更靠近處理器的位置,用于存儲最近引用的數(shù)據(jù)或指令,以便在需要時(shí)可以快速檢索它們。通過減少訪問速度較慢的主內(nèi)存的代價(jià)高昂的讀取和寫入,緩存對 CPU 的性能產(chǎn)生了巨大的影響。幾乎所有現(xiàn)代處理器都采用某種形式的緩存。

第一個(gè)緩存在芯片外或外部。這些很快被通常由 SRAM 制成的片上高速緩存存儲器所取代。為了進(jìn)一步提高性能,這些片上緩存被分成指令和數(shù)據(jù)分區(qū)。

圖 1 顯示了一個(gè)分區(qū)示例。

poYBAGJqXAyAZkAQAAD4Gakh4sk454.png

圖 1. Intel 80486 使用通用高速緩存,而其后繼 Pentium P5 具有分區(qū)高速緩存(總線寬度已省略)

高速緩存分區(qū)導(dǎo)致了多級高速緩存層次結(jié)構(gòu)的誕生,其中處理器內(nèi)核將擁有自己的小型私有高速緩存 (L1),位于較大的共享高速緩存 (L2) 之上,一些處理器包括第三級高速緩存 (L3) 和偶爾是第四個(gè)(L4)。

局部性(又名緩存如何工作?)

為什么緩存有效?緩存通過引用的局部性原則工作。引用位置是指處理器在運(yùn)行應(yīng)用程序時(shí)訪問相同內(nèi)存位置的趨勢。因?yàn)檫@些內(nèi)存訪問是可預(yù)測的,所以可以通過緩存來利用它們。

局部性通常分為兩個(gè)子集——時(shí)間局部性和空間局部性——有時(shí)還有第三個(gè)子集,稱為算法局部性。

時(shí)間局部性

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

空間局部性

空間局部性是指將很快需要的數(shù)據(jù)項(xiàng)駐留在現(xiàn)在需要的項(xiàng)附近或相鄰的內(nèi)存位置中的趨勢。這可能是程序員或編譯器對內(nèi)存中的項(xiàng)目進(jìn)行聚類的結(jié)果。

例如,使用數(shù)組(一種數(shù)據(jù)結(jié)構(gòu))的應(yīng)用程序會將數(shù)組的元素存儲在相鄰的內(nèi)存位置。通過緩存當(dāng)前正在使用的數(shù)據(jù)項(xiàng)旁邊的數(shù)據(jù)項(xiàng),處理器可以在必要時(shí)快速訪問那些相鄰的項(xiàng)。

算法局部性

一種較少討論的局部性類型是算法局部性。算法局部性是應(yīng)用程序?qū)ο嚓P(guān)數(shù)據(jù)項(xiàng)執(zhí)行操作的趨勢,盡管不是在任何短時(shí)間內(nèi),并且盡管這些項(xiàng)目在內(nèi)存中并不彼此靠近。

使用鏈表(另一種類型的數(shù)據(jù)結(jié)構(gòu))的應(yīng)用程序可能會出現(xiàn)這種行為。這種類型的局部性可能出現(xiàn)在圖形處理或迭代模擬中。

邏輯緩存組織

緩存存儲和檢索數(shù)據(jù)的方式和位置取決于緩存的組織方式。這稱為緩存的邏輯組織。確定存儲的內(nèi)容由緩存中內(nèi)置的管理啟發(fā)式方法控制,但它也受到邏輯組織的嚴(yán)重影響。因此,緩存的布局方式對其性能起著重要作用。

有三種主要的方式來組織緩存:

完全關(guān)聯(lián)

直接映射

設(shè)置關(guān)聯(lián)

緩存塊

當(dāng) CPU 需要訪問主存中的某個(gè)項(xiàng)目時(shí),它會使用一個(gè)地址來定位該項(xiàng)目。CPU 硬件緩存通常透明地工作,這意味著程序員無需以任何方式確認(rèn)緩存。因此,用于訪問內(nèi)存的地址首先由緩存處理。該地址用于識別數(shù)據(jù)項(xiàng)是否位于緩存中。

術(shù)語“緩存命中”表示在緩存中找到了數(shù)據(jù)項(xiàng),“緩存未命中”表示未在緩存中找到。

緩存被組織成稱為緩存塊的數(shù)據(jù)組。每個(gè)地址都被劃分為多個(gè)位域,以便可以識別正確的高速緩存塊。這些字段是緩存標(biāo)記、集合編號和字節(jié)偏移量。圖 2 顯示了一個(gè)地址拆分為緩存可以解釋的字段。

pYYBAGJqXDKAAPc2AAAKkt11tEU203.png

圖 2. 尋址緩存塊

當(dāng)給 CPU 緩存一個(gè)地址時(shí),它會將這個(gè)地址分成必要的字段并開始檢查它的緩存條目。一個(gè)緩存條目由一個(gè)緩存標(biāo)簽(這里是標(biāo)簽標(biāo)簽)和一個(gè)緩存塊(標(biāo)簽數(shù)據(jù))組成。

緩存標(biāo)簽是一個(gè)標(biāo)識符,它表示正在引用哪個(gè)緩存塊。

緩存塊是存儲在該標(biāo)簽上的實(shí)際數(shù)據(jù),代表主內(nèi)存中的一個(gè)項(xiàng)目塊。為了獲取該塊中的單個(gè)單詞,使用了偏移量。

pYYBAGJqXDKAJcD8AAAOAshR-Tc890.png

直接映射

在直接映射緩存中,緩存條目被組織成多個(gè)集合。地址中的集合編號用于索引每組條目。一旦識別出該集合,就比較緩存標(biāo)簽。如果它們匹配,則這是緩存命中并輸出指定的數(shù)據(jù)。

理解直接映射緩存的關(guān)鍵是每個(gè)集合只有一個(gè)緩存條目。這使得直接映射緩存非???,同時(shí)消耗最少的功率。

poYBAGJqXDSAHgooAAAgIE9L2uk758.png

圖 3。直接映射緩存

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

完全關(guān)聯(lián)

全關(guān)聯(lián)緩存與直接映射緩存相反。與包含單個(gè)條目的多個(gè)集合不同,完全關(guān)聯(lián)緩存具有多個(gè)緩存條目,它們都包含在一個(gè)集合中。因此,集合編號不再提供任何信息并且不被使用。相反,當(dāng)緩存處理內(nèi)存地址時(shí),會檢查每個(gè)緩存條目是否有匹配的標(biāo)記。如果找到,則使用字節(jié)偏移量輸出緩存塊內(nèi)的正確數(shù)據(jù)。

檢查每個(gè)緩存條目使得完全關(guān)聯(lián)緩存比直接映射緩存消耗更多的功率。通過使用一組關(guān)聯(lián)高速緩存來在功耗和更高的爭用率之間找到平衡點(diǎn)。

cache_design_principles_fig05.png

圖 4. 全關(guān)聯(lián)緩存

設(shè)置關(guān)聯(lián)

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

圖 5 顯示了一個(gè) 4 路組關(guān)聯(lián)緩存。之所以稱為 4-way,是因?yàn)槊拷M最多可以包含四個(gè)緩存條目。如果每個(gè)集合只能保存兩個(gè)緩存條目,那么它將是 2-way。因此,直接映射緩存實(shí)際上只是一個(gè)單路組關(guān)聯(lián)緩存,而完全關(guān)聯(lián)緩存是一個(gè)單組多路組關(guān)聯(lián)緩存,其中 m 是緩存條目的數(shù)量。

poYBAGJqXD-AE43mAAAnk7vqsxs194.png

圖 5. 設(shè)置關(guān)聯(lián)緩存

管理啟發(fā)式

一旦確定了緩存的邏輯組織,就需要確定一組管理啟發(fā)式方法。啟發(fā)式管理只是一組確定緩存如何執(zhí)行其職責(zé)的規(guī)則。這些通常在位于緩存上方的緩存控制器中實(shí)現(xiàn),并充當(dāng)它與 CPU 之間的接口。緩存管理啟發(fā)式可以分為兩個(gè)不同的類別:內(nèi)容管理和一致性管理。

內(nèi)容管理

內(nèi)容管理啟發(fā)式正是它們聽起來的樣子。它們是一組規(guī)則,用于確定緩存的時(shí)間和內(nèi)容。這些啟發(fā)式方法識別已從內(nèi)存請求的重要項(xiàng)目,并將這些項(xiàng)目復(fù)制到緩存中。內(nèi)容啟發(fā)式的兩個(gè)示例是預(yù)取被認(rèn)為重要或即將使用的數(shù)據(jù)項(xiàng),以及決定在緩存集已滿或接近容量時(shí)替換哪些項(xiàng)目的替換策略。

一致性管理

一致性管理啟發(fā)式方法都是關(guān)于保持緩存與其他內(nèi)存同步。這可能意味著主內(nèi)存、層次結(jié)構(gòu)中的其他緩存級別,甚至緩存本身。例如,緩存不應(yīng)該在其緩存塊中包含相同數(shù)據(jù)的多個(gè)副本。此外,如果高速緩存和主存儲器具有應(yīng)該是相同數(shù)據(jù)的不同副本,則應(yīng)用程序可能會收到過時(shí)或陳舊的數(shù)據(jù)項(xiàng)。這在多核系統(tǒng)中尤其可能。因此,一致性管理啟發(fā)式可能會定期使用更新版本的緩存數(shù)據(jù)更新主內(nèi)存。

CPU 硬件緩存基礎(chǔ)知識回顧

本文介紹了 CPU 硬件緩存的一些基本原理。CPU 緩存的工作原理是參考局部性,即處理器傾向于在短時(shí)間內(nèi)或在相鄰的內(nèi)存位置對內(nèi)存進(jìn)行可預(yù)測的讀取和寫入。討論的其他設(shè)計(jì)原則是如何在邏輯上組織緩存以及需要定義以管理該緩存的規(guī)則。幾乎所有 CPU 中都可以找到緩存,并且緩存設(shè)計(jì)技術(shù)已擴(kuò)展到軟件緩存和基于 Web 的緩存,用于存儲瀏覽器數(shù)據(jù)或 Web 文檔。我希望這篇文章能幫助您更好地理解和欣賞這項(xiàng)重要的技術(shù)。

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

    關(guān)注

    68

    文章

    10698

    瀏覽量

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

    關(guān)注

    1

    文章

    223

    瀏覽量

    26579
收藏 人收藏

    評論

    相關(guān)推薦

    高速緩存(cache)的工作原理是什么?高速緩存可分為哪幾類

    存儲器系統(tǒng)的層次架構(gòu)是如何構(gòu)成的?高速緩存(cache)的工作原理是什么?高速緩存可分為哪幾類?
    發(fā)表于 12-23 06:18

    cpu工作原理

    cpu工作原理 CPU是Central Processing Unit的縮寫,是中央處理器的意思。我們經(jīng)常聽人談到的486,Pentium就是CPU 。
    發(fā)表于 01-15 10:30 ?1.7w次閱讀

    CPU一級緩存

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

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

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

    什么是CPU一級緩存/二級緩存

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

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

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

    CPU緩存對性能的影響

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

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

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

    各級別CPU緩存工作原理

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

    光纖的概念、工作原理、設(shè)計(jì)原則和分類

    光纖的概念、工作原理、設(shè)計(jì)原則和分類
    發(fā)表于 11-04 17:27 ?7874次閱讀

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

    20世紀(jì)80年代,CPU性能有了顯著提升,但這受到板載內(nèi)存訪問速度緩慢增長的阻礙。隨著這種差異的惡化,工程師們發(fā)現(xiàn)了一種通過新的設(shè)計(jì)技術(shù)緩存來解決問題的方法。本文將幫助你進(jìn)一步了解什么是緩存,它如何
    的頭像 發(fā)表于 11-19 17:23 ?2626次閱讀

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

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

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

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

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

    CPU高速緩存集成于CPU的內(nèi)部,其是CPU可以高效運(yùn)行的成分之一,本文圍繞下面三個(gè)話題來講解CPU緩存
    發(fā)表于 08-21 12:17 ?1585次閱讀
    <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í)存儲器。CPU緩存的主
    的頭像 發(fā)表于 08-22 14:54 ?950次閱讀