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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

1、先測順序IO情況

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

poYBAGMNz2mAZF06AABxRIyCwls569.png

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

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

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

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

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

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

pYYBAGMNz3-Ac42ZAAA2xVT2MPg658.png

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

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

poYBAGMNz5iACkyjAAA5DK1zPEY968.png

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

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

poYBAGMNz62ANXyLAABDMDMN_4o231.png

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

另外注意一個(gè)細(xì)節(jié),就是隨著數(shù)組從64M到32M變化的過程中。耗時(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訪問速度仍然比真正的內(nèi)存IO快。但是超過12M以后越多,真正的內(nèi)存IO就越來越多了。

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

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

pYYBAGMNz72ASSnXAACFkWasV7E580.png

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

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

pYYBAGMNz9KAdfHzAAA2C21U8jQ933.png

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

3、結(jié)論

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



審核編輯:劉清

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

    文章

    11279

    瀏覽量

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

    關(guān)注

    9

    文章

    3210

    瀏覽量

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

    關(guān)注

    0

    文章

    30

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

    安全訪問服務(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 ?356次閱讀

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

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

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

    嵌入式系統(tǒng)經(jīng)常具有要求程序員去訪問某特定的內(nèi)存位置的特點(diǎn)。某工程中,要求設(shè)置一絕對地址為0x67a9的整型變量的值為0xaa66。編譯器是一個(gè)純粹的ANSI編譯器。寫代碼去完成這一任
    發(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)測裝置的數(shù)據(jù)云端的訪問權(quán)限是如何管控的?

    電能質(zhì)量在線監(jiān)測裝置的數(shù)據(jù)云端的訪問權(quán)限管控,是通過 角色分級(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 ?271次閱讀

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

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

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

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

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

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

    IR615怎么禁止設(shè)備訪問外網(wǎng)?

    IR615使用VPN連到云平臺(tái),最近發(fā)現(xiàn)4G流量使用激增,估計(jì)其它設(shè)備蹭網(wǎng),怎么設(shè)置一防止其它設(shè)備通過路由器訪問外網(wǎng),多謝
    發(fā)表于 08-06 06:31

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

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

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

    前言一、與RT-ThreadBSP的開發(fā)者溝通中,發(fā)現(xiàn)SPI設(shè)備驅(qū)動(dòng)輪詢(Polling)模式偶發(fā)出現(xiàn)非法訪問異常(如圖)問題復(fù)現(xiàn)場景
    的頭像 發(fā)表于 06-24 19:38 ?1658次閱讀
    RT-Thread SPI鏈?zhǔn)絺鬏敺欠?b class='flag-5'>訪問</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)贊、評論支持一哦~)
    發(fā)表于 05-09 14:09

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

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

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

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