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

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

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

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

詳解計算機緩存Cache以及Cache Line

SoC芯片 ? 來源:CSDN技術(shù)社區(qū) ? 作者:MasterT-J ? 2021-06-19 09:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.計算機存儲體系簡介

存儲器是分層次的,離CPU越近的存儲器,速度越快,每字節(jié)的成本越高,同時容量也因此越小。寄存器速度最快,離CPU最近,成本最高,所以個數(shù)容量有限,其次是高速緩存(緩存也是分級,有L1,L2等緩存),再次是主存(普通內(nèi)存),再次是本地磁盤。

寄存器的速度最快,可以在一個時鐘周期內(nèi)訪問,其次是高速緩存,可以在幾個時鐘周期內(nèi)訪問,普通內(nèi)存可以在幾十個或幾百個時鐘周期內(nèi)訪問。

存儲器分級,利用的是局部性原理。我們可以以經(jīng)典的閱讀書籍為例。我在讀的書,捧在手里(寄存器),我最近頻繁閱讀的書,放在書桌上(緩存),隨時取來讀。當(dāng)然書桌上只能放有限幾本書。我更多的書在書架上(內(nèi)存)。如果書架上沒有的書,就去圖書館(磁盤)。我要讀的書如果手里沒有,那么去書桌上找,如果書桌上沒有,去書架上找,如果書架上沒有去圖書館去找??梢詫?yīng)寄存器沒有,則從緩存中取,緩存中沒有,則從內(nèi)存中取到緩存,如果內(nèi)存中沒有,則先從磁盤讀入內(nèi)存,再讀入緩存,再讀入寄存器。

2.計算機緩存 Cache

本系列的文章重點介紹緩存cache。了解如何獲取cache的參數(shù),了解緩存的組織結(jié)構(gòu)。

2.1 Cache 概述

cache,中譯名高速緩沖存儲器,其作用是為了更好的利用局部性原理,減少CPU訪問主存的次數(shù)。簡單地說,CPU正在訪問的指令和數(shù)據(jù),其可能會被以后多次訪問到,或者是該指令和數(shù)據(jù)附近的內(nèi)存區(qū)域,也可能會被多次訪問。因此,第一次訪問這一塊區(qū)域時,將其復(fù)制到cache中,以后訪問該區(qū)域的指令或者數(shù)據(jù)時,就不用再從主存中取出。

cache分成多個組,每個組分成多個行,linesize是cache的基本單位,從主存向cache遷移數(shù)據(jù)都是按照linesize為單位替換的。比如linesize為32Byte,那么遷移必須一次遷移32Byte到cache。這個linesize比較容易理解,想想我們前面書的例子,我們從書架往書桌搬書必須以書為單位,肯定不能把書撕了以頁為單位。書就是linesize。當(dāng)然了現(xiàn)實生活中每本書頁數(shù)不同,但是同個cache的linesize總是相同的。

所謂8路組相連( 8-way set associative)的含義是指,每個組里面有8個行。

我們知道,cache的容量要遠遠小于主存,主存和cache肯定不是一一對應(yīng)的,那么主存中的地址和cache的映射關(guān)系是怎樣的呢?

拿到一個地址,首先是映射到一個組里面去。如何映射?取內(nèi)存地址的中間幾位來映射。

舉例來說,data cache: 32-KB, 8-way set associative, 64-byte line size

Cache總大小為32KB,8路組相連(每組有8個line),每個line的大小linesize為64Byte,OK,我們可以很輕易的算出一共有32K/8/64=64 個組。

對于32位的內(nèi)存地址,每個line有2^6 = 64Byte,所以地址的【0,5】區(qū)分line中的那個字節(jié)。一共有64個組。我們?nèi)?nèi)存地址中間6為來hash查找地址屬于那個組。即內(nèi)存地址的【6,11】位來確定屬于64組的哪一個組。組確定了之后,【12,31】的內(nèi)存地址與組中8個line挨個比對,如果【12,31】為與某個line一致,并且這個line為有效,那么緩存命中。

OK,我們可以將cache分成三類,

直接映射高速緩存,這個簡單,即每個組只有一個line,選中組之后不需要和組中的每個line比對,因為只有一個line。

組相聯(lián)高速緩存,這個就是我們前面介紹的cache。S個組,每個組E個line。

全相聯(lián)高速緩存,這個簡單,只有一個組,就是全相聯(lián)。不用hash來確定組,直接挨個比對高位地址,來確定是否命中??梢韵胍娺@種方式不適合大的緩存。想想看,如果4M 的大緩存linesize為32Byte,采用全相聯(lián)的話,就意味著4*1024*1024/32 = 128K 個line挨個比較,來確定是否命中,這是多要命的事情。高速緩存立馬成了低速緩存了。

描述一個cache需要以下參數(shù):

cache分級,L1 cache, L2 cache, L3 cache,級別越低,離CPU越近

cache的容量

cache的linesize

cache 每組的行個數(shù)。

2.2 Cache 結(jié)構(gòu)

假設(shè)內(nèi)存容量為M,內(nèi)存地址為m位:那么尋址范圍為000…00~FFF…F(m位)

倘若把內(nèi)存地址分為以下三個區(qū)間:

tag, set index, block offset三個區(qū)間有什么用呢?再來看看Cache的邏輯結(jié)構(gòu)吧:

參數(shù)如下:

B = 2^b

S = 2^s

現(xiàn)在來解釋一下各個參數(shù)的意義:

一個cache被分為S個組,每個組有E個cacheline,而一個cacheline中,有B個存儲單元,現(xiàn)代處理器中,這個存儲單元一般是以字節(jié)(通常8個位)為單位的,也是最小的尋址單元。因此,在一個內(nèi)存地址中,中間的s位決定了該單元被映射到哪一組,而最低的b位決定了該單元在cacheline中的偏移量。

valid通常是一位,代表該cacheline是否是有效的(當(dāng)該cacheline不存在內(nèi)存映射時,當(dāng)然是無效的)。tag就是內(nèi)存地址的高t位,因為可能會有多個內(nèi)存地址映射到同一個cacheline中,所以該位是用來校驗該cacheline是否是CPU要訪問的內(nèi)存單元。

當(dāng)tag和valid校驗成功是,我們稱為cache命中,這時只要將cache中的單元取出,放入CPU寄存器中即可。

當(dāng)tag或valid校驗失敗的時候,就說明要訪問的內(nèi)存單元(也可能是連續(xù)的一些單元,如int占4個字節(jié),double占8個字節(jié))并不在cache中,這時就需要去內(nèi)存中取了,這就是cache不命中的情況(cache miss)。當(dāng)不命中的情況發(fā)生時,系統(tǒng)就會從內(nèi)存中取得該單元,將其裝入cache中,與此同時也放入CPU寄存器中,等待下一步處理。注意,以下這一點對理解linux cache機制非常重要:

3.計算機緩存行 ChaceLine

高速緩存其實就是一組稱之為緩存行(cache line)的固定大小的數(shù)據(jù)塊,其大小是以突發(fā)讀或者突發(fā)寫周期的大小為基礎(chǔ)的。

每個高速緩存行完全是在一個突發(fā)讀操作周期中進行填充或者下載的。即使處理器只存取一個字節(jié)的存儲器,高速緩存控制器也啟動整個存取器訪問周期并請求整個數(shù)據(jù)塊。緩存行第一個字節(jié)的地址總是突發(fā)周期尺寸的倍數(shù)。緩存行的起始位置總是與突發(fā)周期的開頭保持一致。

當(dāng)從內(nèi)存中取單元到cache中時,會一次取一個cacheline大小的內(nèi)存區(qū)域到cache中,然后存進相應(yīng)的cacheline中。

例如:我們要取地址 (t, s, b) 內(nèi)存單元,發(fā)生了cache miss,那么系統(tǒng)會取 (t, s, 00…000) 到 (t, s, FF…FFF)的內(nèi)存單元,將其放入相應(yīng)的cacheline中。

下面看看cache的映射機制:

當(dāng)E=1時, 每組只有一個cacheline。那么相隔2^(s+b)個單元的2個內(nèi)存單元,會被映射到同一個cacheline中。(好好想想為什么?)

當(dāng)1《E《C/B時,每組有E個cacheline,不同的地址,只要中間s位相同,那么就會被映射到同一組中,同一組中被映射到哪個cacheline中是依賴于替換算法的。

當(dāng)E=C/B,此時S=1,每個內(nèi)存單元都能映射到任意的cacheline。帶有這樣cache的處理器幾乎沒有,因為這種映射機制需要昂貴復(fù)雜的硬件來支持。

不管哪種映射,只要發(fā)生了cache miss,那么必定會有一個cacheline大小的內(nèi)存區(qū)域,被取到cache中相應(yīng)的cacheline。

現(xiàn)代處理器,一般將cache分為2~3級,L1, L2, L3。L1一般為CPU專有,不在多個CPU中共享。L2 cache一般是多個CPU共享的,也可能裝在主板上。L1 cache還可能分為instruction cache, data cache. 這樣CPU能同時取指令和數(shù)據(jù)。

下面來看看現(xiàn)實中cache的參數(shù),以Intel Pentium處理器為例。

編輯:jq

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

    關(guān)注

    68

    文章

    20242

    瀏覽量

    251724
  • 存儲器
    +關(guān)注

    關(guān)注

    39

    文章

    7730

    瀏覽量

    171572
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7803

    瀏覽量

    93140

原文標(biāo)題:計算機緩存Cache以及Cache Line詳解

文章出處:【微信號:gh_9d9a609c9302,微信公眾號:SoC芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    請問030系列集成的PreFetch 和 Cache怎么用呀?

    各位大佬,030系列集成的PreFetch 和 Cache怎么用呀?有這方面的demo或者pdf操作流程么?
    發(fā)表于 01-19 07:07

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

    ,分為輸入緩沖區(qū)和輸出緩沖區(qū)。   為什么要引入緩沖區(qū)   比如我們從磁盤里取信息,我們先把讀出的數(shù)據(jù)放在緩沖區(qū),計算機再直接從緩沖區(qū)中取數(shù)據(jù),等緩沖區(qū)的數(shù)據(jù)取完后再去磁盤中讀取,這樣就可以減少
    發(fā)表于 01-14 07:30

    采用Prefetch+Cache架構(gòu)有什么優(yōu)勢?

    我看官方說,采用Prefetch+Cache架構(gòu)同頻CoreMark 計算力/功耗比超越同類產(chǎn)品,這優(yōu)勢就是低功耗么?要是具體芯片比較的話,應(yīng)該怎么比?
    發(fā)表于 12-11 07:35

    gd32h737 開啟cache程序跑飛是哪里的問題?

    gd32h737 在rtthread 4.1.1版本上運行,開啟cache功能,程序跑飛,JLink連接失敗的。錯誤信息沒有。配置方式的說明嗎? /*! briefenable the CPU
    發(fā)表于 09-11 08:28

    【作品合集】賽昉科技VisionFive 2單板計算機開發(fā)板測評

    賽昉科技VisionFive 2單板計算機開發(fā)板測評作品合集 產(chǎn)品介紹: 昉·星光 2是全球首款集成了3D GPU的高性能量產(chǎn)RISC-V單板計算機,搭載昉·驚鴻-7110(型號:JH-7110
    發(fā)表于 09-04 09:08

    工業(yè)計算機的重要性

    工業(yè)計算機對某些行業(yè)至關(guān)重要。我們將在下面詳細解釋這些行業(yè)中的工業(yè)計算機應(yīng)用。1.制造與工業(yè)自動化工業(yè)級計算機非常適合制造工廠,特別是那些想要自動化裝配過程的工廠。在這樣的環(huán)境中,工業(yè)計算機
    的頭像 發(fā)表于 07-28 16:07 ?544次閱讀
    工業(yè)<b class='flag-5'>計算機</b>的重要性

    自動化計算機經(jīng)過加固后有什么好處?

    讓我們討論一下部署堅固的自動化計算機的一些好處。1.溫度范圍寬自動化計算機經(jīng)過工程設(shè)計,配備了支持寬溫度范圍的組件,使自動化計算解決方案能夠在各種不同的極端環(huán)境中運行。自動化計算機能夠
    的頭像 發(fā)表于 07-21 16:44 ?598次閱讀
    自動化<b class='flag-5'>計算機</b>經(jīng)過加固后有什么好處?

    自動化計算機的功能與用途

    工業(yè)自動化是指利用自動化計算機來控制工業(yè)環(huán)境中的流程、機器人和機械,以制造產(chǎn)品或其部件。工業(yè)自動化的目的是提高生產(chǎn)率、增加靈活性,并提升制造過程的質(zhì)量。工業(yè)自動化在汽車制造中體現(xiàn)得最為明顯,其中許多
    的頭像 發(fā)表于 07-15 16:32 ?720次閱讀
    自動化<b class='flag-5'>計算機</b>的功能與用途

    工業(yè)計算機與商用計算機的區(qū)別有哪些

    工業(yè)計算機是一種專為工廠和工業(yè)環(huán)境設(shè)計的計算系統(tǒng),具有高可靠性和穩(wěn)定性,能夠應(yīng)對惡劣環(huán)境下的自動化、制造和機器人操作。其特點包括無風(fēng)扇散熱技術(shù)、無電纜連接和防塵防水設(shè)計,使其在各種工業(yè)自動化場景中
    的頭像 發(fā)表于 07-10 16:36 ?719次閱讀
    工業(yè)<b class='flag-5'>計算機</b>與商用<b class='flag-5'>計算機</b>的區(qū)別有哪些

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

    在多核高并發(fā)場景下, 緩存偽共享(False Sharing) 是導(dǎo)致性能驟降的“隱形殺手”。當(dāng)不同線程頻繁修改同一緩存行(Cache Line)中的獨立變量時,CPU
    的頭像 發(fā)表于 07-01 15:01 ?735次閱讀
    高性能<b class='flag-5'>緩存</b>設(shè)計:如何解決<b class='flag-5'>緩存</b>偽共享問題

    STM32H7的MPU配置與D-Cache沖突如何解決???

    現(xiàn)象??: STM32H743 MPU 與 D-Cache 沖突問題詳細描述** 硬件環(huán)境 MCU 型號 :STM32H743VIT6 開發(fā)板 :自定義板(或 STM32H743I-EVAL 等
    發(fā)表于 06-23 17:32

    MCU緩存設(shè)計

    MCU 設(shè)計通過優(yōu)化指令與數(shù)據(jù)的訪問效率,顯著提升系統(tǒng)性能并降低功耗,其核心架構(gòu)與實現(xiàn)策略如下: 一、緩存類型與結(jié)構(gòu) 指令緩存(I-Cache)與數(shù)據(jù)緩存(D-
    的頭像 發(fā)表于 05-07 15:29 ?1096次閱讀

    計算機網(wǎng)絡(luò)入門指南

    計算機網(wǎng)絡(luò)是指將地理位置不同且具有獨立功能的多臺計算機及其外部設(shè)備,通過通信線路連接起來,在網(wǎng)絡(luò)操作系統(tǒng)、網(wǎng)絡(luò)管理軟件及網(wǎng)絡(luò)通信協(xié)議的管理和協(xié)調(diào)下,實現(xiàn)資源共享和信息傳遞的計算機系統(tǒng)。
    的頭像 發(fā)表于 04-22 14:29 ?2199次閱讀
    <b class='flag-5'>計算機</b>網(wǎng)絡(luò)入門指南

    如何在NXP MCU上啟用D-Cache?

    Data Cache,我已經(jīng)能夠減少其他 MCU 的推理時間。我想知道如何在 NXP MCU 上啟用 D-Cache。任何其他性能提升策略也受到歡迎。
    發(fā)表于 03-27 07:48

    請問驚鴻7110是否支持cache維護指令?

    驚鴻7110是就sifive u74處理器的。查看了一下u74手冊,它是有專門的cache維護指令CFLUSH.D.L1。在賽昉官方版本編譯不通過。請問一下大佬,這個怎么解決呀?
    發(fā)表于 03-10 07:24