91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

內(nèi)存訪問(wèn)的在不同的訪問(wèn)場(chǎng)景下延時(shí)究竟是個(gè)什么表現(xiàn)

冬至配餃子 ? 來(lái)源:開(kāi)發(fā)內(nèi)功修煉 ? 作者:張彥飛allen ? 2022-08-30 16:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

《內(nèi)存隨機(jī)訪問(wèn)也比順序慢,帶你深入理解內(nèi)存IO過(guò)程》一文中,我們理解了內(nèi)存IO的內(nèi)部實(shí)現(xiàn)過(guò)程,知道了內(nèi)存的隨機(jī)IO比順序IO要慢,并對(duì)延遲時(shí)間進(jìn)行了大概的估算。那么我們今天來(lái)用代碼的方式來(lái)實(shí)踐一下,看看在我們的項(xiàng)目工程中,內(nèi)存訪問(wèn)的在不同的訪問(wèn)場(chǎng)景下延時(shí)究竟是個(gè)什么表現(xiàn)。

1、先測(cè)順序IO情況

測(cè)試原理就是定義一個(gè)指定大小的double(8字節(jié))數(shù)組,然后以指定的步長(zhǎng)去循環(huán)。這里面的變量有兩個(gè)。核心代碼如下:

poYBAGMNz2mAZF06AABxRIyCwls569.png

在這個(gè)核心代碼的基礎(chǔ)上,我們有兩個(gè)可調(diào)節(jié)變量:

一是數(shù)組大小,數(shù)組越小,高速緩存命中率越高,平均延時(shí)就會(huì)越低。

二是循環(huán)步長(zhǎng),步長(zhǎng)越小,順序性越好,同樣也會(huì)增加緩存命中率,平均延時(shí)也低。我們?cè)跍y(cè)試的過(guò)程中采取的辦法是,固定其中一個(gè)變量,然后動(dòng)態(tài)調(diào)節(jié)另外一個(gè)變量來(lái)查看效果。

另外說(shuō)明一下,這個(gè)代碼測(cè)試中考慮的幾個(gè)額外的開(kāi)銷的處理情況。

1.加法開(kāi)銷:由于加法指令簡(jiǎn)單,一個(gè)CPU周期就可完成,CPU周期比內(nèi)存周期要快,所以暫且忽略它。
2.耗時(shí)統(tǒng)計(jì):這涉及到高開(kāi)銷的系統(tǒng)調(diào)用,本實(shí)驗(yàn)通過(guò)跑1000次取一次耗時(shí)的方式來(lái)降低影響。

場(chǎng)景一:固定數(shù)組大小2K,調(diào)節(jié)步長(zhǎng)

pYYBAGMNz3-Ac42ZAAA2xVT2MPg658.png

數(shù)組足夠小的時(shí)候,L1 cache全部都能裝的下。內(nèi)存IO發(fā)生較少,大部分都是高效的緩存IO,所以我這里看到的內(nèi)存延時(shí)只有1ns左右,這其實(shí)只是虛擬地址轉(zhuǎn)換+L1訪問(wèn)的延時(shí)。

場(chǎng)景二:固定步長(zhǎng)為8,數(shù)組從32K到64M

poYBAGMNz5iACkyjAAA5DK1zPEY968.png

當(dāng)數(shù)組越來(lái)越大,Cache裝不下,導(dǎo)致穿透高速緩存,到內(nèi)存實(shí)際IO的次數(shù)就會(huì)變多,平均耗時(shí)就增加

場(chǎng)景三:步長(zhǎng)為32,數(shù)組從32K到64M

poYBAGMNz62ANXyLAABDMDMN_4o231.png

和場(chǎng)景二相比,步長(zhǎng)變大以后,局部性變差,穿透的內(nèi)存IO進(jìn)一步增加。雖然數(shù)據(jù)量一樣大,但是平均耗時(shí)就會(huì)繼續(xù)有所上漲。不過(guò)雖然穿透增加,但由于訪問(wèn)地址仍然相對(duì)比較連續(xù),所以即使發(fā)生內(nèi)存IO也絕大部分都是行地址不變的順序IO情況。所以耗時(shí)在9ns左右,和之前估算大致相符!

另外注意一個(gè)細(xì)節(jié),就是隨著數(shù)組從64M到32M變化的過(guò)程中。耗時(shí)有幾個(gè)明顯的下降點(diǎn),分別是8M,256K和32K。這是因?yàn)楸緳C(jī)的CPU的L1大小是32K,L2是256K,L3是12M。在數(shù)據(jù)集32K的時(shí)候,L1全能裝的下,所有基本都是高速緩存IO。256K的時(shí)候、8M的時(shí)候,雖然L1命中率下降,但是L2、L3訪問(wèn)速度仍然比真正的內(nèi)存IO快。但是超過(guò)12M以后越多,真正的內(nèi)存IO就越來(lái)越多了。

2、再測(cè)隨機(jī)IO情況

在順序的實(shí)驗(yàn)場(chǎng)景里,數(shù)組的下標(biāo)訪問(wèn)都是比較有規(guī)律地遞增。在隨機(jī)IO的測(cè)試中,我們要徹底打亂這個(gè)規(guī)律,提前隨機(jī)好一個(gè)下標(biāo)數(shù)組,實(shí)驗(yàn)時(shí)不停地訪問(wèn)數(shù)組的各個(gè)隨機(jī)位置。

pYYBAGMNz72ASSnXAACFkWasV7E580.png

這實(shí)際比上面的實(shí)驗(yàn)多了一次內(nèi)存IO,但由于對(duì)random_index_arr的訪問(wèn)時(shí)順序的,而且該數(shù)組也比較小。我們假設(shè)它全部能命中高速緩存,所以暫且忽略它的影響。

隨機(jī)實(shí)驗(yàn)場(chǎng)景:數(shù)組從32K到64M

pYYBAGMNz9KAdfHzAAA2C21U8jQ933.png

這次的數(shù)組訪問(wèn)就沒(méi)有步長(zhǎng)的概念了,全部打亂,隨機(jī)訪問(wèn)。當(dāng)數(shù)據(jù)集比較小的時(shí)候、L1、L2、L3還能抗一抗。但當(dāng)增加到16M、64M以后,穿透到內(nèi)存的IO情況會(huì)變多,穿透過(guò)去以后極大可能行地址也會(huì)變。在64M的數(shù)據(jù)集中,內(nèi)存的延時(shí)竟然下降到了38.4ns,和我們估算的也基本一致。

3、結(jié)論

有了實(shí)驗(yàn)數(shù)據(jù)的佐證,進(jìn)一步證實(shí)了《內(nèi)存隨機(jī)訪問(wèn)也比順序慢,帶你深入理解內(nèi)存IO過(guò)程》的結(jié)論。內(nèi)存存在隨機(jī)訪問(wèn)比順序訪問(wèn)慢的多的情況,大概是4:1的關(guān)系。所以不要覺(jué)得內(nèi)存很快,就用起來(lái)太隨性了!



審核編輯:劉清

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

    文章

    11285

    瀏覽量

    225129
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3212

    瀏覽量

    76388
  • 高速緩存
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    極海Cortex-M52內(nèi)核MCU G32R501CoreMark的表現(xiàn)如何

    要真正衡量一顆MCU的運(yùn)算實(shí)力,CoreMark成績(jī)往往是一個(gè)比較客觀、公認(rèn)的參考指標(biāo)。到底這個(gè)G32R501跑起CoreMark來(lái)能交出怎樣的成績(jī)單?今天就讓我們一起“探秘”一番,看這款Cortex-M52 MCUCoreMark上的
    的頭像 發(fā)表于 03-09 14:09 ?2040次閱讀
    極海Cortex-M52內(nèi)核MCU G32R501<b class='flag-5'>在</b>CoreMark的<b class='flag-5'>表現(xiàn)</b>如何

    什么是 SASE?| 安全訪問(wèn)服務(wù)邊緣

    安全訪問(wèn)服務(wù)邊緣(SASE)是一種整合網(wǎng)絡(luò)連接與網(wǎng)絡(luò)安全功能于一個(gè)平臺(tái)的架構(gòu)。這種架構(gòu)與傳統(tǒng)的企業(yè)網(wǎng)絡(luò)相比,具有顯著的差異。SASE架構(gòu)將網(wǎng)絡(luò)控制放置云邊緣,而不是傳統(tǒng)企業(yè)數(shù)據(jù)中心,這使得企業(yè)能夠
    的頭像 發(fā)表于 02-02 18:28 ?369次閱讀

    本地智能家居系統(tǒng)ESPHome,實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)調(diào)試

    ESPHome 是一個(gè)開(kāi)源固件框架,支持通過(guò) YAML 配置實(shí)現(xiàn)智能家居自動(dòng)化,可本地部署并公網(wǎng)訪問(wèn),便于遠(yuǎn)程開(kāi)發(fā)。
    的頭像 發(fā)表于 12-30 14:48 ?1278次閱讀
    本地智能家居系統(tǒng)ESPHome,實(shí)現(xiàn)遠(yuǎn)程<b class='flag-5'>訪問(wèn)</b>調(diào)試

    C語(yǔ)言訪問(wèn)某特定內(nèi)存位置

    嵌入式系統(tǒng)經(jīng)常具有要求程序員去訪問(wèn)某特定的內(nèi)存位置的特點(diǎn)。某工程中,要求設(shè)置一絕對(duì)地址為0x67a9的整型變量的值為0xaa66。編譯器是一個(gè)純粹的ANSI編譯器。寫(xiě)代碼去完成這一任
    發(fā)表于 12-22 15:42

    32位究竟指什么呢?

      1. 更高的性能   由于能夠一次性處理更多的數(shù)據(jù),32位單片機(jī)執(zhí)行復(fù)雜計(jì)算任務(wù)時(shí)表現(xiàn)更為出色。它能夠更快速、更高效地運(yùn)行復(fù)雜的算法和應(yīng)用程序。   2. 更大的內(nèi)存空間   32位單片機(jī)能夠直接
    發(fā)表于 11-21 06:32

    電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)云端的訪問(wèn)權(quán)限是如何管控的?

    電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)云端的訪問(wèn)權(quán)限管控,是通過(guò) 角色分級(jí)、動(dòng)態(tài)驗(yàn)證、加密隔離、智能策略 等多重機(jī)制構(gòu)建的立體化防護(hù)體系,其核心目標(biāo)是確保數(shù)據(jù) “只能被授權(quán)的人、授權(quán)的時(shí)間、以授權(quán)的方式
    的頭像 發(fā)表于 10-30 09:45 ?280次閱讀

    企業(yè)安全訪問(wèn)網(wǎng)關(guān):ZeroNews反向代理

    花半天時(shí)間配置VPN賬號(hào)。” 這些場(chǎng)景您是否遇到過(guò)? 傳統(tǒng)的VPN(虛擬專用網(wǎng))在為企業(yè)提供遠(yuǎn)程接入能力的同時(shí),其 “全有或全無(wú)” 的粗放式網(wǎng)絡(luò)接入模式,已成為企業(yè)安全體系中的一個(gè)巨大裂縫。一旦接入,用戶就如同進(jìn)入了內(nèi)網(wǎng),訪問(wèn)
    的頭像 發(fā)表于 10-14 10:50 ?338次閱讀
    企業(yè)安全<b class='flag-5'>訪問(wèn)</b>網(wǎng)關(guān):ZeroNews反向代理

    qkey軟件包在內(nèi)核V5.02運(yùn)行出錯(cuò)是哪里的問(wèn)題?

    ) == RT_Object_Class_Memory) assertion failed at function:rt_smem_alloc, line number:290 ; 然后內(nèi)核改成V4.1.1就沒(méi)任何問(wèn)題。 因?yàn)関5.0.2引入backtrace也始終有編譯問(wèn)題,所以不好跟蹤
    發(fā)表于 09-15 07:46

    遠(yuǎn)程訪問(wèn)NAS不折騰,輕松獲取固定訪問(wèn)地址!

    。 傳統(tǒng)方案通常需要公網(wǎng)IP或復(fù)雜的路由器設(shè)置,不僅成本高且操作繁瑣。 ZeroNews 無(wú)需公網(wǎng)IP、免配置路由器,三步即可實(shí)現(xiàn)NAS的遠(yuǎn)程訪問(wèn)。 簡(jiǎn)易配置,快速生成固定訪問(wèn)地址 以群暉DSM系統(tǒng)為例,遠(yuǎn)程訪問(wèn)配置流程如下:
    的頭像 發(fā)表于 09-02 19:20 ?875次閱讀
    遠(yuǎn)程<b class='flag-5'>訪問(wèn)</b>NAS不折騰,輕松獲取固定<b class='flag-5'>訪問(wèn)</b>地址!

    禁用直接LPB訪問(wèn),如何與TC3x 上的 SWAPEN 協(xié)同工作?

    禁用直接 LPB 訪問(wèn) (xDDIS) 位可通過(guò) TC37x 的 FLASHCON4 和 PROCONTP 進(jìn)行配置。 SOTA 場(chǎng)景中,我們應(yīng)該如何配置上述兩個(gè)寄存器? 如果我啟用
    發(fā)表于 07-29 10:26

    RT-Thread SPI鏈?zhǔn)絺鬏敺欠?b class='flag-5'>訪問(wèn)?揭秘致命陷阱!

    前言一、與RT-ThreadBSP的開(kāi)發(fā)者溝通中,發(fā)現(xiàn)SPI設(shè)備驅(qū)動(dòng)輪詢(Polling)模式偶發(fā)出現(xiàn)非法訪問(wèn)異常(如圖)問(wèn)題復(fù)現(xiàn)場(chǎng)景
    的頭像 發(fā)表于 06-24 19:38 ?1664次閱讀
    RT-Thread SPI鏈?zhǔn)絺鬏敺欠?b class='flag-5'>訪問(wèn)</b>?揭秘致命陷阱!

    超聲波液位計(jì)究竟是什么?

    液位計(jì)
    jzyb
    發(fā)布于 :2025年06月03日 16:10:12

    FOC電機(jī)控制究竟該如何學(xué)?

    學(xué)習(xí)FOC電機(jī)控制究竟是學(xué)哪些內(nèi)容? 電機(jī)知識(shí) 軟件知識(shí) 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一哦~)
    發(fā)表于 05-09 14:09

    工程師在產(chǎn)品選型的時(shí)究竟是選CAN還是CANFD接口卡呢?

    很多工程師在產(chǎn)品選型的時(shí)候會(huì)疑惑,究竟是選CAN接口卡還是CANFD接口卡呢??jī)烧咧g有什么區(qū)別呢?影響選擇的關(guān)鍵因素又是什么?我們今天一個(gè)一個(gè)來(lái)拆解。1.波特率傳統(tǒng)的CAN接口卡僅有一個(gè)波特率,即
    的頭像 發(fā)表于 03-21 11:37 ?1025次閱讀
    工程師在產(chǎn)品選型的時(shí)<b class='flag-5'>究竟是</b>選CAN還是CANFD接口卡呢?

    電池電量計(jì)的通信、配置、數(shù)據(jù)內(nèi)存訪問(wèn)以及相關(guān)代碼示例

    德州儀器(Texas Instruments)發(fā)布的關(guān)于電池電量計(jì)通信的應(yīng)用報(bào)告,主要介紹了電池電量計(jì)的通信、配置、數(shù)據(jù)內(nèi)存訪問(wèn)以及相關(guān)代碼示例等內(nèi)容,為開(kāi)發(fā)者提供了全面的技術(shù)指導(dǎo)。電量計(jì)通信
    發(fā)表于 03-11 15:45 ?1次下載