欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

Linux中提高指令緩存命中率

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者: Vincent ? 2023-10-04 15:45 ? 次閱讀

提高指令緩存命中率

前面說的是數(shù)據(jù)緩存,現(xiàn)在看看指令緩存命中率該如何提高。

有一個數(shù)組array,數(shù)組元素內(nèi)容為0-255之間的隨機數(shù):

int array[N];
for (i = 0; i < TESTN; i++) 
 array[i] = rand() % 256;

現(xiàn)在,要把數(shù)組中數(shù)字小于128的元素置為0,并且對數(shù)組排序。

大家應(yīng)該都能想到,有兩種方法:

  • 先遍歷數(shù)組,把小于128的元素置為0,然 后排序 。
  • 先對數(shù)組排序再遍歷數(shù)組 ,把小于128的元素置為0。
for(i = 0; i < N; i++) {
 if (array [i] < 128) 
  array[i] = 0;
}
sort(array, array +N);

先排序后遍歷的速度會比較快,為什么?

因為在for循環(huán)中會執(zhí)行很多次if分支判斷語句,而CPU擁有分支預(yù)測器。

如果分支預(yù)測器可以預(yù)測接下來要執(zhí)行的分支(執(zhí)行if還是執(zhí)行else),那么就可以提前把這些指令放到緩存中,CPU執(zhí)行的時候就會很快了。

如果一個數(shù)組的內(nèi)容完全隨機的話,那么分支預(yù)測器就很難進行正確的預(yù)測。但如果數(shù)組內(nèi)容是有序的,它就會根據(jù)歷史命中數(shù)據(jù)的情況對未來進行預(yù)測,那命中率就會很高,所以先排序后遍歷的速度會比較快。

怎么驗證指令緩存命中率的情況呢?

Linux下,可以使用Perf性能分析工具進行驗證。通過-e選項,指定branch-loadsbranch-loads-misses事件,可以分別統(tǒng)計出分支預(yù)測成功的次數(shù)分支預(yù)測失敗的次數(shù) ,通過L1-icache-load-misses事件也能統(tǒng)計一級緩存中指令未命中的次數(shù)。但是,這些性能事件都屬于硬件事件,perf工具能否統(tǒng)計這些事件取決于CPU是否支持以及芯片原廠是否去實現(xiàn)了該接口,我看很多都是不支持或者沒實現(xiàn)的。

另外,在Linux內(nèi)核中,可以看到大量的likelyunlikely宏,并且它們都出現(xiàn)if語句中,這 兩個宏的作用就是為了提高性能

這是顯示預(yù)測概率的宏,如果你覺得CPU的分支預(yù)測不準(zhǔn),但if中條件為"真"的概率很高,那么你就可以使用likely()括起來,以此提升性能。

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

    關(guān)注

    87

    文章

    11350

    瀏覽量

    210460
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    611

    瀏覽量

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

    關(guān)注

    1

    文章

    242

    瀏覽量

    26767
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    417

    瀏覽量

    26033
收藏 人收藏

    評論

    相關(guān)推薦

    CPU一級緩存與二級緩存深度分析

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

    AM335x SDK關(guān)于cache的命中率,請問有能改善cache命中率的有效方法嗎?請問怎么才能控制RAM映射到cache?

    ()④CP15DCacheEnable()⑤CP15DCacheCleanFlush()①~④確定能使cache無效/有效嗎?⑤是否有清除cache的功能?■二:關(guān)于cache的命中率 請問有能改善cache命中率的有效方法
    發(fā)表于 06-21 04:06

    緩存命中率低的原因是什么?

    匯編中加載數(shù)據(jù)用的是LDW,5個cycle之后就會到達寄存器,并沒有體現(xiàn)出緩存命中率的問題。LDW是固定5個cycle,請問緩存命中率低,帶來的延遲體現(xiàn)在什么地方?難道是LDW之前,有
    發(fā)表于 05-25 08:46

    緩存的作用和設(shè)計模式

    ,高并發(fā)查詢這個key,擊穿緩存,直接請求數(shù)據(jù)庫;緩存雪崩:緩存Key大批量到過期時間,導(dǎo)致數(shù)據(jù)庫壓力過大;命中率緩存設(shè)計的是否合理要看
    發(fā)表于 01-05 17:57

    架構(gòu)設(shè)計應(yīng)用級緩存回收策略

    命中率。什么是緩存命中率?緩存命中率是從緩存中讀取數(shù)據(jù)的次數(shù)與總讀取次數(shù)的比例,
    發(fā)表于 01-14 17:08

    一種高能效的結(jié)構(gòu)不對稱指令緩存

    據(jù)不完全對應(yīng)的簡化標(biāo)記管理位。該結(jié)構(gòu)采用了命中推斷和變長指令取指兩種創(chuàng)新技術(shù),其中基于命中推斷技術(shù)解決了指令緩存
    發(fā)表于 11-22 10:52 ?2次下載
    一種高能效的結(jié)構(gòu)不對稱<b class='flag-5'>指令</b><b class='flag-5'>緩存</b>

    基于節(jié)點中心性度量的緩存機制

    為了降低內(nèi)容中心網(wǎng)絡(luò)的緩存內(nèi)容冗余度和提高緩存內(nèi)容命中率,提出一種基于節(jié)點中心性度量的緩存機制(CMC)。CMC利用控制器獲取整個網(wǎng)絡(luò)的拓?fù)?/div>
    發(fā)表于 01-17 11:00 ?0次下載
    基于節(jié)點中心性度量的<b class='flag-5'>緩存</b>機制

    基于概率存儲的啟發(fā)式住處中心網(wǎng)絡(luò)內(nèi)容緩存方法

    概率時綜合考慮內(nèi)容熱度和緩存放置收益,即內(nèi)容熱度越高,放置收益越大的內(nèi)容被緩存的概率越高。實驗結(jié)果表明,PCP在緩存服務(wù)、緩存
    發(fā)表于 02-11 11:16 ?0次下載

    Web代理服務(wù)器緩存優(yōu)化

    Web代理服務(wù)器緩存能在一定程度上減少網(wǎng)絡(luò)擁塞現(xiàn)象和用戶的訪問延遲,減輕服務(wù)器負(fù)載。然而Web代理緩存緩存命中率和字節(jié)命中率較低,并不能很
    發(fā)表于 03-06 10:00 ?0次下載
    Web代理服務(wù)器<b class='flag-5'>緩存</b>優(yōu)化

    基于節(jié)點熱度與緩存替換的ICN協(xié)作緩存

    內(nèi)容,考慮網(wǎng)絡(luò)流量在不同區(qū)域和不同時間段內(nèi)的差異性,周期性地計算節(jié)點熱度和緩存替換,并將其作為內(nèi)容是否被緩存在節(jié)點上的度量指標(biāo)。實驗結(jié)果表明,相對于LCE和CLFM策略,該策略能有效降低平均請求跳數(shù)和源端
    發(fā)表于 03-29 15:17 ?1次下載

    Linux文件緩存使用情況和命中率查看的工具詳細概述

    這里總結(jié)幾個Linux文件緩存(page cache)使用情況、命中率查看的工具。
    的頭像 發(fā)表于 06-18 17:51 ?9046次閱讀
    <b class='flag-5'>Linux</b>文件<b class='flag-5'>緩存</b>使用情況和<b class='flag-5'>命中率</b>查看的工具詳細概述

    一種基于內(nèi)容優(yōu)先級的緩存替換策略PFC

    ,將其作為緩存替換的參考因子進行緩存替換決策,以提高重要內(nèi)容的命中率和可用性。在 ndnsim仿真平臺上的測試結(jié)果表明,相比LRU和FIFO策略,PF℃策略在不影響全局
    發(fā)表于 03-24 14:48 ?9次下載
    一種基于內(nèi)容優(yōu)先級的<b class='flag-5'>緩存</b>替換策略PFC

    把進程綁定到某個 CPU 上運行是怎么實現(xiàn)?

    、L2緩存,而L3緩存是共用的。如果一個進程在核心間來回切換,各個核心的緩存命中率就會受到影響。相反如果進程不管如何調(diào)度,都始終可以在一個核心上執(zhí)行,那么其數(shù)據(jù)的L1、L2
    的頭像 發(fā)表于 07-02 09:55 ?2471次閱讀

    一個GPU工作負(fù)載的調(diào)查

    通過減少指令緩存命中提高 GPU 性能
    的頭像 發(fā)表于 07-05 16:30 ?773次閱讀
    一個GPU工作負(fù)載的調(diào)查

    CPU緩存那些事兒

    拜訪過之后,與它相鄰地址的數(shù)據(jù)有很大概率也會被拜訪,將更多或許被拜訪的數(shù)據(jù)存入緩存,可以進步緩存命中率。
    的頭像 發(fā)表于 09-10 10:57 ?730次閱讀
    CPU<b class='flag-5'>緩存</b>那些事兒