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

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

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

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

如何判斷一個(gè)數(shù)據(jù)在cache中是否命中?cache memory的作用是什么

454398 ? 來(lái)源:蝸窩科技 ? 作者:smcdef ? 2020-09-19 11:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天探究的主題是cache。我們圍繞幾個(gè)問(wèn)題展開(kāi)。為什么需要cache?如何判斷一個(gè)數(shù)據(jù)在cache中是否命中?cache的種類有哪些,區(qū)別是什么?

我在知乎平臺(tái)發(fā)起了一個(gè)高速緩存專題,感興趣的可以關(guān)注。

為什么需要cache memory

在思考cache是什么之前我們首先先來(lái)思考第一個(gè)問(wèn)題:我們的程序是如何運(yùn)行起來(lái)的?我們應(yīng)該知道程序是運(yùn)行在 RAM之中,RAM 就是我們常說(shuō)的DDR(例如 DDR3、DDR4等)。我們稱之為main memory(主存)當(dāng)我們需要運(yùn)行一個(gè)進(jìn)程的時(shí)候,首先會(huì)從Flash設(shè)備(例如,eMMC、UFS等)中將可執(zhí)行程序load到main memory中,然后開(kāi)始執(zhí)行。在CPU內(nèi)部存在一堆的通用寄存器(register)。如果CPU需要將一個(gè)變量(假設(shè)地址是A)加1,一般分為以下3個(gè)步驟:

CPU 從主存中讀取地址A的數(shù)據(jù)到內(nèi)部通用寄存器 x0(ARM64架構(gòu)的通用寄存器之一)。

通用寄存器 x0 加1。

CPU 將通用寄存器 x0 的值寫(xiě)入主存。

我們將這個(gè)過(guò)程可以表示如下:

其實(shí)現(xiàn)實(shí)中,CPU通用寄存器的速度和主存之間存在著太大的差異。兩者之間的速度大致如下關(guān)系:

CPU register的速度一般小于1ns,主存的速度一般是65ns左右。速度差異近百倍。因此,上面舉例的3個(gè)步驟中,步驟1和步驟3實(shí)際上速度很慢。當(dāng)CPU試圖從主存中l(wèi)oad/store 操作時(shí),由于主存的速度限制,CPU不得不等待這漫長(zhǎng)的65ns時(shí)間。如果我們可以提升主存的速度,那么系統(tǒng)將會(huì)獲得很大的性能提升。如今的DDR存儲(chǔ)設(shè)備,動(dòng)不動(dòng)就是幾個(gè)GB,容量很大。如果我們采用更快材料制作更快速度的主存,并且擁有幾乎差不多的容量。其成本將會(huì)大幅度上升。我們?cè)噲D提升主存的速度和容量,又期望其成本很低,這就有點(diǎn)難為人了。因此,我們有一種折中的方法,那就是制作一塊速度極快但是容量極小的存儲(chǔ)設(shè)備。那么其成本也不會(huì)太高。這塊存儲(chǔ)設(shè)備我們稱之為cache memory。在硬件上,我們將cache放置在CPU和主存之間,作為主存數(shù)據(jù)的緩存。 當(dāng)CPU試圖從主存中l(wèi)oad/store數(shù)據(jù)的時(shí)候, CPU會(huì)首先從cache中查找對(duì)應(yīng)地址的數(shù)據(jù)是否緩存在cache 中。如果其數(shù)據(jù)緩存在cache中,直接從cache中拿到數(shù)據(jù)并返回給CPU。當(dāng)存在cache的時(shí)候,以上程序如何運(yùn)行的例子的流程將會(huì)變成如下:

CPU和主存之間直接數(shù)據(jù)傳輸?shù)姆绞睫D(zhuǎn)變成CPU和cache之間直接數(shù)據(jù)傳輸。cache負(fù)責(zé)和主存之間數(shù)據(jù)傳輸。

多級(jí)cache memory

cahe的速度在一定程度上同樣影響著系統(tǒng)的性能。一般情況cache的速度可以達(dá)到1ns,幾乎可以和CPU寄存器速度媲美。但是,這就滿足人們對(duì)性能的追求了嗎?并沒(méi)有。當(dāng)cache中沒(méi)有緩存我們想要的數(shù)據(jù)的時(shí)候,依然需要漫長(zhǎng)的等待從主存中l(wèi)oad數(shù)據(jù)。為了進(jìn)一步提升性能,引入多級(jí)cache。前面提到的cache,稱之為L(zhǎng)1 cache(第一級(jí)cache)。我們?cè)贚1 cache 后面連接L2 cache,在L2 cache 和主存之間連接L3 cache。等級(jí)越高,速度越慢,容量越大。但是速度相比較主存而言,依然很快。不同等級(jí)cache速度之間關(guān)系如下:

經(jīng)過(guò)3級(jí)cache的緩沖,各級(jí)cache和主存之間的速度最萌差也逐級(jí)減小。在一個(gè)真實(shí)的系統(tǒng)上,各級(jí)cache之間硬件上是如何關(guān)聯(lián)的呢?我們看下Cortex-A53架構(gòu)上各級(jí)cache之間的硬件抽象框圖如下:

在Cortex-A53架構(gòu)上,L1 cache分為單獨(dú)的instruction cache(ICache)和data cache(DCache)。L1 cache是CPU私有的,每個(gè)CPU都有一個(gè)L1 cache。一個(gè)cluster 內(nèi)的所有CPU共享一個(gè)L2 cache,L2 cache不區(qū)分指令和數(shù)據(jù),都可以緩存。所有cluster之間共享L3 cache。L3 cache通過(guò)總線和主存相連。

多級(jí)cache之間的配合工作

首先引入兩個(gè)名詞概念,命中和缺失。 CPU要訪問(wèn)的數(shù)據(jù)在cache中有緩存,稱為“命中” (hit),反之則稱為“缺失” (miss)。多級(jí)cache之間是如何配合工作的呢?我們假設(shè)現(xiàn)在考慮的系統(tǒng)只有兩級(jí)cache。

當(dāng)CPU試圖從某地址load數(shù)據(jù)時(shí),首先從L1 cache中查詢是否命中,如果命中則把數(shù)據(jù)返回給CPU。如果L1 cache缺失,則繼續(xù)從L2 cache中查找。當(dāng)L2 cache命中時(shí),數(shù)據(jù)會(huì)返回給L1 cache以及CPU。如果L2 cache也缺失,很不幸,我們需要從主存中l(wèi)oad數(shù)據(jù),將數(shù)據(jù)返回給L2 cache、L1 cache及CPU。這種多級(jí)cache的工作方式稱之為inclusive cache。某一地址的數(shù)據(jù)可能存在多級(jí)緩存中。與inclusive cache對(duì)應(yīng)的是exclusive cache,這種cache保證某一地址的數(shù)據(jù)緩存只會(huì)存在于多級(jí)cache其中一級(jí)。也就是說(shuō),任意地址的數(shù)據(jù)不可能同時(shí)在L1和L2 cache中緩存。

直接映射緩存(Direct mapped cache)

我們繼續(xù)引入一些cache相關(guān)的名詞。cache的大小稱之為cahe size,代表cache可以緩存最大數(shù)據(jù)的大小。我們將cache平均分成相等的很多塊,每一個(gè)塊大小稱之為cache line,其大小是cache line size。例如一個(gè)64 Bytes大小的cache。如果我們將64 Bytes平均分成64塊,那么cache line就是1字節(jié),總共64行cache line。如果我們將64 Bytes平均分成8塊,那么cache line就是8字節(jié),總共8行cache line?,F(xiàn)在的硬件設(shè)計(jì)中,一般cache line的大小是4-128 Byts。為什么沒(méi)有1 byte呢?原因我們后面討論。

這里有一點(diǎn)需要注意,cache line是cache和主存之間數(shù)據(jù)傳輸?shù)淖钚挝?。什么意思呢??dāng)CPU試圖load一個(gè)字節(jié)數(shù)據(jù)的時(shí)候,如果cache缺失,那么cache控制器會(huì)從主存中一次性的load cache line大小的數(shù)據(jù)到cache中。例如,cache line大小是8字節(jié)。CPU即使讀取一個(gè)byte,在cache缺失后,cache會(huì)從主存中l(wèi)oad 8字節(jié)填充整個(gè)cache line。又是因?yàn)槭裁茨??后面說(shuō)完就懂了。

我們假設(shè)下面的講解都是針對(duì)64 Bytes大小的cache,并且cache line大小是8字節(jié)。我們可以類似把這塊cache想想成一個(gè)數(shù)組,數(shù)組總共8個(gè)元素,每個(gè)元素大小是8字節(jié)。就像下圖這樣。

現(xiàn)在我們考慮一個(gè)問(wèn)題,CPU從0x0654地址讀取一個(gè)字節(jié),cache控制器是如何判斷數(shù)據(jù)是否在cache中命中呢?cache大小相對(duì)于主存來(lái)說(shuō),可謂是小巫見(jiàn)大巫。所以cache肯定是只能緩存主存中極小一部分?jǐn)?shù)據(jù)。我們?nèi)绾胃鶕?jù)地址在有限大小的cache中查找數(shù)據(jù)呢?現(xiàn)在硬件采取的做法是對(duì)地址進(jìn)行散列(可以理解成地址取模操作)。我們接下來(lái)看看是如何做到的?

我們一共有8行cache line,cache line大小是8 Bytes。所以我們可以利用地址低3 bits(如上圖地址藍(lán)色部分)用來(lái)尋址8 bytes中某一字節(jié),我們稱這部分bit組合為offset。同理,8行cache line,為了覆蓋所有行。我們需要3 bits(如上圖地址黃色部分)查找某一行,這部分地址部分稱之為index?,F(xiàn)在我們知道,如果兩個(gè)不同的地址,其地址的bit3-bit5如果完全一樣的話,那么這兩個(gè)地址經(jīng)過(guò)硬件散列之后都會(huì)找到同一個(gè)cache line。所以,當(dāng)我們找到cache line之后,只代表我們?cè)L問(wèn)的地址對(duì)應(yīng)的數(shù)據(jù)可能存在這個(gè)cache line中,但是也有可能是其他地址對(duì)應(yīng)的數(shù)據(jù)。所以,我們又引入tag array區(qū)域,tag array和data array一一對(duì)應(yīng)。每一個(gè)cache line都對(duì)應(yīng)唯一一個(gè)tag,tag中保存的是整個(gè)地址位寬去除index和offset使用的bit剩余部分(如上圖地址綠色部分)。tag、index和offset三者組合就可以唯一確定一個(gè)地址了。因此,當(dāng)我們根據(jù)地址中index位找到cache line后,取出當(dāng)前cache line對(duì)應(yīng)的tag,然后和地址中的tag進(jìn)行比較,如果相等,這說(shuō)明cache命中。如果不相等,說(shuō)明當(dāng)前cache line存儲(chǔ)的是其他地址的數(shù)據(jù),這就是cache缺失。在上述圖中,我們看到tag的值是0x19,和地址中的tag部分相等,因此在本次訪問(wèn)會(huì)命中。由于tag的引入,因此解答了我們之前的一個(gè)疑問(wèn)“為什么硬件cache line不做成一個(gè)字節(jié)?”。這樣會(huì)導(dǎo)致硬件成本的上升,因?yàn)樵?個(gè)字節(jié)對(duì)應(yīng)一個(gè)tag,現(xiàn)在需要8個(gè)tag,占用了很多內(nèi)存。

我們可以從圖中看到tag旁邊還有一個(gè)valid bit,這個(gè)bit用來(lái)表示cache line中數(shù)據(jù)是否有效(例如:1代表有效;0代表無(wú)效)。當(dāng)系統(tǒng)剛啟動(dòng)時(shí),cache中的數(shù)據(jù)都應(yīng)該是無(wú)效的,因?yàn)檫€沒(méi)有緩存任何數(shù)據(jù)。cache控制器可以根據(jù)valid bit確認(rèn)當(dāng)前cache line數(shù)據(jù)是否有效。所以,上述比較tag確認(rèn)cache line是否命中之前還會(huì)檢查valid bit是否有效。只有在有效的情況下,比較tag才有意義。如果無(wú)效,直接判定cache缺失。

上面的例子中,cache size是64 Bytes并且cache line size是8 bytes。offset、index和tag分別使用3 bits、3 bits和42 bits(假設(shè)地址寬度是48 bits)。我們現(xiàn)在再看一個(gè)例子:512 Bytes cache size,64 Bytes cache line size。根據(jù)之前的地址劃分方法,offset、index和tag分別使用6 bits、3 bits和39 bits。如下圖所示。

直接映射緩存的優(yōu)缺點(diǎn)

直接映射緩存在硬件設(shè)計(jì)上會(huì)更加簡(jiǎn)單,因此成本上也會(huì)較低。根據(jù)直接映射緩存的工作方式,我們可以畫(huà)出主存地址0x00-0x88地址對(duì)應(yīng)的cache分布圖。

我們可以看到,地址0x00-0x3f地址處對(duì)應(yīng)的數(shù)據(jù)可以覆蓋整個(gè)cache。0x40-0x7f地址的數(shù)據(jù)也同樣是覆蓋整個(gè)cache。我們現(xiàn)在思考一個(gè)問(wèn)題,如果一個(gè)程序試圖依次訪問(wèn)地址0x00、0x40、0x80,cache中的數(shù)據(jù)會(huì)發(fā)生什么呢?首先我們應(yīng)該明白0x00、0x40、0x80地址中index部分是一樣的。因此,這3個(gè)地址對(duì)應(yīng)的cache line是同一個(gè)。所以,當(dāng)我們?cè)L問(wèn)0x00地址時(shí),cache會(huì)缺失,然后數(shù)據(jù)會(huì)從主存中加載到cache中第0行cache line。當(dāng)我們?cè)L問(wèn)0x40地址時(shí),依然索引到cache中第0行cache line,由于此時(shí)cache line中存儲(chǔ)的是地址0x00地址對(duì)應(yīng)的數(shù)據(jù),所以此時(shí)依然會(huì)cache缺失。然后從主存中加載0x40地址數(shù)據(jù)到第一行cache line中。同理,繼續(xù)訪問(wèn)0x80地址,依然會(huì)cache缺失。這就相當(dāng)于每次訪問(wèn)數(shù)據(jù)都要從主存中讀取,所以cache的存在并沒(méi)有對(duì)性能有什么提升。訪問(wèn)0x40地址時(shí),就會(huì)把0x00地址緩存的數(shù)據(jù)替換。這種現(xiàn)象叫做cache顛簸(cache thrashing)。針對(duì)這個(gè)問(wèn)題,我們引入多路組相連緩存。我們首先研究下最簡(jiǎn)單的兩路組相連緩存的工作原理。

兩路組相連緩存(Two-way set associative cache)

我們依然假設(shè)64 Bytes cache size,cache line size是8 Bytes。什么是路(way)的概念。我們將cache平均分成多份,每一份就是一路。因此,兩路組相連緩存就是將cache平均分成2份,每份32 Bytes。如下圖所示。

cache被分成2路,每路包含4行cache line。我們將所有索引一樣的cache line組合在一起稱之為組。例如,上圖中一個(gè)組有兩個(gè)cache line,總共4個(gè)組。我們依然假設(shè)從地址0x0654地址讀取一個(gè)字節(jié)數(shù)據(jù)。由于cache line size是8 Bytes,因此offset需要3 bits,這和之前直接映射緩存一樣。不一樣的地方是index,在兩路組相連緩存中,index只需要2 bits,因?yàn)橐宦分挥?行cache line。上面的例子根據(jù)index找到第2行cache line(從0開(kāi)始計(jì)算),第2行對(duì)應(yīng)2個(gè)cache line,分別對(duì)應(yīng)way 0和way 1。因此index也可以稱作set index(組索引)。先根據(jù)index找到set,然后將組內(nèi)的所有cache line對(duì)應(yīng)的tag取出來(lái)和地址中的tag部分對(duì)比,如果其中一個(gè)相等就意味著命中。

因此,兩路組相連緩存較直接映射緩存最大的差異就是:第一個(gè)地址對(duì)應(yīng)的數(shù)據(jù)可以對(duì)應(yīng)2個(gè)cache line,而直接映射緩存一個(gè)地址只對(duì)應(yīng)一個(gè)cache line。那么這究竟有什么好處呢?

兩路組相連緩存優(yōu)缺點(diǎn)

兩路組相連緩存的硬件成本相對(duì)于直接映射緩存更高。因?yàn)槠涿看伪容^tag的時(shí)候需要比較多個(gè)cache line對(duì)應(yīng)的tag(某些硬件可能還會(huì)做并行比較,增加比較速度,這就增加了硬件設(shè)計(jì)復(fù)雜度)。為什么我們還需要兩路組相連緩存呢?因?yàn)槠淇梢杂兄诮档蚦ache顛簸可能性。那么是如何降低的呢?根據(jù)兩路組相連緩存的工作方式,我們可以畫(huà)出主存地址0x00-0x4f地址對(duì)應(yīng)的cache分布圖。

我們依然考慮直接映射緩存一節(jié)的問(wèn)題“如果一個(gè)程序試圖依次訪問(wèn)地址0x00、0x40、0x80,cache中的數(shù)據(jù)會(huì)發(fā)生什么呢?”?,F(xiàn)在0x00地址的數(shù)據(jù)可以被加載到way 1,0x40可以被加載到way 0。這樣是不是就在一定程度上避免了直接映射緩存的尷尬境地呢?在兩路組相連緩存的情況下,0x00和0x40地址的數(shù)據(jù)都緩存在cache中。試想一下,如果我們是4路組相連緩存,后面繼續(xù)訪問(wèn)0x80,也可能被被緩存。

因此,當(dāng)cache size一定的情況下,組相連緩存對(duì)性能的提升最差情況下也和直接映射緩存一樣,在大部分情況下組相連緩存效果比直接映射緩存好。同時(shí),其降低了cache顛簸的頻率。從某種程度上來(lái)說(shuō),直接映射緩存是組相連緩存的一種特殊情況,每個(gè)組只有一個(gè)cache line而已。因此,直接映射緩存也可以稱作單路組相連緩存。

全相連緩存(Full associative cache)

既然組相連緩存那么好,如果所有的cache line都在一個(gè)組內(nèi)。豈不是性能更好。是的,這種緩存就是全相連緩存。我們依然以64 Byts大小cache為例說(shuō)明。

由于所有的cache line都在一個(gè)組內(nèi),因此地址中不需要set index部分。因?yàn)椋挥幸粋€(gè)組讓你選擇,間接來(lái)說(shuō)就是你沒(méi)得選。我們根據(jù)地址中的tag部分和所有的cache line對(duì)應(yīng)的tag進(jìn)行比較(硬件上可能并行比較也可能串行比較)。哪個(gè)tag比較相等,就意味著命中某個(gè)cache line。因此,在全相連緩存中,任意地址的數(shù)據(jù)可以緩存在任意的cache line中。所以,這可以最大程度的降低cache顛簸的頻率。但是硬件成本上也是更高。

一個(gè)四路組相連緩存實(shí)例問(wèn)題

考慮這么一個(gè)問(wèn)題,32 KB大小4路組相連cache,cache line大小是32 Bytes。請(qǐng)思考一下問(wèn)題:

1). 多少個(gè)組? 2). 假設(shè)地址寬度是48 bits,index、offset以及tag分別占用幾個(gè)bit?

總共4路,因此每路大小是8 KB。cache line size是32 Bytes,因此一共有256組(8 KB / 32 Bytes)。由于cache line size是32 Bytes,所以offset需要5位。一共256組,所以index需要8位,剩下的就是tag部分,占用35位。這個(gè)cache可以繪制下圖表示。

Cache分配策略(Cache allocation policy)

cache的分配策略是指我們什么情況下應(yīng)該為數(shù)據(jù)分配cache line。cache分配策略分為讀和寫(xiě)兩種情況。

讀分配(read allocation):

當(dāng)CPU讀數(shù)據(jù)時(shí),發(fā)生cache缺失,這種情況下都會(huì)分配一個(gè)cache line緩存從主存讀取的數(shù)據(jù)。默認(rèn)情況下,cache都支持讀分配。

寫(xiě)分配(write allocation):

當(dāng)CPU寫(xiě)數(shù)據(jù)發(fā)生cache缺失時(shí),才會(huì)考慮寫(xiě)分配策略。當(dāng)我們不支持寫(xiě)分配的情況下,寫(xiě)指令只會(huì)更新主存數(shù)據(jù),然后就結(jié)束了。當(dāng)支持寫(xiě)分配的時(shí)候,我們首先從主存中加載數(shù)據(jù)到cache line中(相當(dāng)于先做個(gè)讀分配動(dòng)作),然后會(huì)更新cache line中的數(shù)據(jù)。

Cache更新策略(Cache update policy)

cache更新策略是指當(dāng)發(fā)生cache命中時(shí),寫(xiě)操作應(yīng)該如何更新數(shù)據(jù)。cache更新策略分成兩種:寫(xiě)直通和回寫(xiě)。

寫(xiě)直通(write through):

當(dāng)CPU執(zhí)行store指令并在cache命中時(shí),我們更新cache中的數(shù)據(jù)并且更新主存中的數(shù)據(jù)。cache和主存的數(shù)據(jù)始終保持一致。

寫(xiě)回(write back):

當(dāng)CPU執(zhí)行store指令并在cache命中時(shí),我們只更新cache中的數(shù)據(jù)。并且每個(gè)cache line中會(huì)有一個(gè)bit位記錄數(shù)據(jù)是否被修改過(guò),稱之為dirty bit(翻翻前面的圖片,cache line旁邊有一個(gè)D就是dirty bit)。我們會(huì)將dirty bit置位。主存中的數(shù)據(jù)只會(huì)在cache line被替換或者顯示clean操作時(shí)更新。因此,主存中的數(shù)據(jù)可能是未修改的數(shù)據(jù),而修改的數(shù)據(jù)躺在cache line中。

同時(shí),為什么cache line大小是cache控制器和主存之間數(shù)據(jù)傳輸?shù)淖钚挝荒??這也是因?yàn)槊總€(gè)cache line只有一個(gè)dirty bit。這一個(gè)dirty bit代表著整個(gè)cache line時(shí)候被修改的狀態(tài)。

實(shí)例

假設(shè)我們有一個(gè)64 Bytes大小直接映射緩存,cache line大小是8 Bytes,采用寫(xiě)分配和寫(xiě)回機(jī)制。當(dāng)CPU從地址0x2a讀取一個(gè)字節(jié),cache中的數(shù)據(jù)將會(huì)如何變化呢?假設(shè)當(dāng)前cache狀態(tài)如下圖所示。

根據(jù)index找到對(duì)應(yīng)的cache line,對(duì)應(yīng)的tag部分valid bit是合法的,但是tag的值不相等,因此發(fā)生缺失。此時(shí)我們需要從地址0x28地址加載8字節(jié)數(shù)據(jù)到該cache line中。但是,我們發(fā)現(xiàn)當(dāng)前cache line的dirty bit置位。因此,cache line里面的數(shù)據(jù)不能被簡(jiǎn)單的丟棄,由于采用寫(xiě)回機(jī)制,所以我們需要將cache中的數(shù)據(jù)0x11223344寫(xiě)到地址0x0128地址(這個(gè)地址根據(jù)tag中的值及所處的cache line行計(jì)算得到)。這個(gè)過(guò)程如下圖所示。

當(dāng)寫(xiě)回操作完成,我們將主存中0x28地址開(kāi)始的8個(gè)字節(jié)加載到該cache line中,并清除dirty bit。然后根據(jù)offset找到0x52返回給CPU。

聲明:本文內(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)注

    31

    文章

    5588

    瀏覽量

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

    關(guān)注

    68

    文章

    11213

    瀏覽量

    222778
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1398

    瀏覽量

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

    關(guān)注

    1

    文章

    248

    瀏覽量

    27635
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    130

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    單片機(jī)內(nèi)部FLASH字節(jié)操作

    一個(gè)字(32位) [*]// addr:讀取地址 [*]// 返回: 讀到的字數(shù)據(jù) [*]//備注: 地址為4字節(jié)對(duì)齊
    發(fā)表于 11-24 06:40

    如何通過(guò)日常數(shù)據(jù)判斷電源紋波是否超標(biāo)?

    缺乏專業(yè)儀器(如示波器、紋波測(cè)試儀)的日常場(chǎng)景,判斷電源紋波是否超標(biāo),核心是通過(guò) “電源紋波超標(biāo)的典型影響” 反推紋波過(guò)大會(huì)干擾敏感電路(如時(shí)鐘芯片、ADC 采集模塊、控制芯片),
    的頭像 發(fā)表于 09-23 11:06 ?480次閱讀
    如何通過(guò)日常<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>判斷</b>電源紋波<b class='flag-5'>是否</b>超標(biāo)?

    gd32h737 開(kāi)啟cache程序跑飛是哪里的問(wèn)題?

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

    如何判斷電能質(zhì)量監(jiān)測(cè)裝置的數(shù)據(jù)偏差是否允許范圍內(nèi)?

    LZ-DZ200電能質(zhì)量在線監(jiān)測(cè)裝置 判斷電能質(zhì)量監(jiān)測(cè)裝置的數(shù)據(jù)偏差是否允許范圍內(nèi),需結(jié)合標(biāo)準(zhǔn)規(guī)范、裝置精度等級(jí)、測(cè)量參數(shù)類型及實(shí)際應(yīng)用場(chǎng)景(如新能源并網(wǎng)的特殊要求)綜合評(píng)估,核心是
    的頭像 發(fā)表于 08-21 09:28 ?750次閱讀
    如何<b class='flag-5'>判斷</b>電能質(zhì)量監(jiān)測(cè)裝置的<b class='flag-5'>數(shù)據(jù)</b>偏差<b class='flag-5'>是否</b><b class='flag-5'>在</b>允許范圍內(nèi)?

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

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

    如何判斷個(gè)軟啟動(dòng)器是否故障

    軟啟動(dòng)器的主要構(gòu)成是串接于電源與被控電機(jī)之間的三相反并聯(lián)晶閘管及其電子控制電路。運(yùn)用不同的方法,控制三相反并聯(lián)晶閘管的導(dǎo)通角,使被控電機(jī)的輸入電壓按不同的要求而變化,就可實(shí)現(xiàn)不同的功能。判斷個(gè)
    的頭像 發(fā)表于 04-10 07:34 ?1508次閱讀
    如何<b class='flag-5'>判斷</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>軟啟動(dòng)器<b class='flag-5'>是否</b>故障

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

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

    請(qǐng)問(wèn)驚鴻7110是否支持cache維護(hù)指令?

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

    DLPC3439的的3DR引腳的作用是什么?

    請(qǐng)問(wèn)下 1.DLPC3439的的3DR引腳的作用是什么? 2.該引腳該如何配置?只要給它輸入個(gè)高電平就可以了嗎? 3.對(duì)于雙控制器來(lái)
    發(fā)表于 02-24 08:28

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

    為了加速操作和減少磁盤(pán)I/O,內(nèi)核通常會(huì)盡可能多地緩存內(nèi)存,這部分內(nèi)存就是Cache Memory(緩存內(nèi)存)。根據(jù)設(shè)計(jì),包含緩存數(shù)據(jù)的頁(yè)面可以按需重新用于其他用途(例如,應(yīng)用程序)。 緩存內(nèi)存
    的頭像 發(fā)表于 01-16 10:04 ?2152次閱讀

    基于javaPoet的緩存key優(yōu)化實(shí)踐

    作者:京東物流 方志民 . 背景 次系統(tǒng)opsreview,發(fā)現(xiàn)了些服務(wù)配置了@Cacheable注解。@cacheable 來(lái)源
    的頭像 發(fā)表于 01-14 15:18 ?1149次閱讀
    基于javaPoet的緩存key優(yōu)化實(shí)踐

    全面解析:如何精準(zhǔn)判斷SMT貼片打樣是否合格?

    站式PCBA智造廠家今天為大家講講SMT貼片打樣是否合格如何判斷?判斷SMT貼片打樣是否合格的方法。
    的頭像 發(fā)表于 01-07 09:29 ?766次閱讀

    請(qǐng)問(wèn)下ADS1293讀取某通道的高低2個(gè)字節(jié)的PACE數(shù)據(jù),如何判斷這是個(gè)有效的PACE信號(hào)?

    請(qǐng)問(wèn)下ADS1293讀取某通道的高低2個(gè)字節(jié)的PACE數(shù)據(jù),但是如何判斷這是個(gè)有效的PAC
    發(fā)表于 01-06 07:43

    DAC3482內(nèi)部的FIFO作用是什么?

    我現(xiàn)在正在使用DAC3482芯片,想請(qǐng)教下其內(nèi)部的FIFO作用是什么? FIFO讀寫(xiě)指針?lè)謩e由DATACLK和DACCLK(或其分頻)來(lái)驅(qū)動(dòng),用于“緩沖”的作用,我有兩種理解: 1.只能緩沖讀寫(xiě)
    發(fā)表于 12-23 07:06

    什么是緩存(Cache)及其作用

    緩存(Cache)是種高速存儲(chǔ)器,用于臨時(shí)存儲(chǔ)數(shù)據(jù),以便快速訪問(wèn)。計(jì)算機(jī)系統(tǒng),緩存的作用是
    的頭像 發(fā)表于 12-18 09:28 ?1.5w次閱讀