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

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

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

如何使用Arm SPE進(jìn)行芯片數(shù)據(jù)采集和性能分析呢?

Arm社區(qū) ? 來(lái)源:Arm社區(qū) ? 2024-01-24 18:16 ? 次閱讀

Arm Statistical Profiling Extension (SPE, 統(tǒng)計(jì)分析擴(kuò)展) 是一種架構(gòu)級(jí)功能,旨在增強(qiáng) Arm CPU 的指令執(zhí)行分析。自 2019 年 Arm Neoverse N1 CPU 平臺(tái)問(wèn)世以來(lái),該功能便與 Arm CPU 中普遍配備的 Performance Monitor Unit (PMU, 性能監(jiān)控單元) 并存。

為了能從 SPE 和 PMU 等功能中獲益,一個(gè)重要的步驟就是提供工具、文檔和示例以便形成一種自頂向下 (Top-Down) 的系統(tǒng)級(jí)芯片 (SoC) 性能分析解決方案。近期,Arm 的六名工程師發(fā)布了一份關(guān)于使用 SPE 進(jìn)行性能分析的詳細(xì)白皮書(shū)。

本文針對(duì)軟件開(kāi)發(fā)者、性能分析師和芯片工程師介紹了使用 SPE 進(jìn)行性能分析和根源問(wèn)題分析的概念和方法。

Arm SPE 是一種硬件輔助 CPU 分析機(jī)制,可提供詳細(xì)的分析功能。它會(huì)記錄關(guān)鍵執(zhí)行數(shù)據(jù),包括程序計(jì)數(shù)器、數(shù)據(jù)地址和 PMU 事件。SPE 可增強(qiáng)對(duì)分支、內(nèi)存訪(fǎng)問(wèn)等的性能分析,從而助力軟件優(yōu)化的實(shí)現(xiàn)。SPE 數(shù)據(jù)可用于使用 Linux perf 等工具進(jìn)行源代碼熱點(diǎn)檢測(cè)、內(nèi)存訪(fǎng)問(wèn)分析,以及數(shù)據(jù)共享分析的精確采樣。

SPE 采樣包括四個(gè)階段:運(yùn)算采樣、記錄關(guān)鍵執(zhí)行信息、樣本記錄后篩選,以及將記錄存儲(chǔ)在內(nèi)存中。它可以使用監(jiān)控工具進(jìn)行高效的分析和數(shù)據(jù)提取。SPE 使用減法計(jì)數(shù)器定期選擇微運(yùn)算進(jìn)行分析。SPE 樣本還會(huì)記錄指令從 CPU 后端開(kāi)始運(yùn)算的執(zhí)行周期。

使用 Linux perf 工具收集數(shù)據(jù)時(shí),可啟用 SPE 分析功能。Arm 還發(fā)布了 SPE-Parser 輔助工具,以支持 SPE 追蹤的數(shù)據(jù)收集和分析。該工具可以將數(shù)據(jù)導(dǎo)出為 CSV 和 Parquet 格式,提高了分析的靈活性。

已發(fā)布的 SPE 白皮書(shū)中提供了四個(gè)案例,用來(lái)說(shuō)明該功能的價(jià)值。

1

Apache Arrow CSV 寫(xiě)入器:性能優(yōu)化

第一個(gè)案例是利用 SPE 功能來(lái)優(yōu)化 Apache Arrow CSV 寫(xiě)入器代碼。結(jié)果表明,在 Neoverse N1 平臺(tái)上,性能提高了 40%。該案例研究包括檢測(cè)單位周期指令數(shù) (IPC) 和帶寬 (GB/s),然后進(jìn)一步檢查 MPKI 和未命中率。其次,運(yùn)算組合指標(biāo)揭示了 CSV 寫(xiě)入器工作負(fù)載對(duì)整數(shù)指令和分支的高度依賴(lài),這表明可能存在矢量化優(yōu)化的機(jī)會(huì)。

通過(guò)對(duì) L1D 緩存事件和分支預(yù)測(cè)錯(cuò)誤進(jìn)行分析,揭示了與 memcpy 函數(shù)相關(guān)的問(wèn)題,其中該函數(shù)頻繁出現(xiàn)緩存缺失和分支預(yù)測(cè)錯(cuò)誤的情況。該案例研究還對(duì) memcpy 中的分支進(jìn)行了分析,結(jié)果認(rèn)為分支預(yù)測(cè)錯(cuò)誤的根源在于緩沖區(qū)大小預(yù)測(cè)偏差導(dǎo)致的效率不足。該案例研究強(qiáng)調(diào)了在 Arrow CSV 寫(xiě)入器中結(jié)合 memcpy 運(yùn)算對(duì)于數(shù)據(jù)字段和分隔符的復(fù)雜性,導(dǎo)致 CPU 分支預(yù)測(cè)未達(dá)到最佳狀態(tài)。

使用 SPE 進(jìn)行分析后,便進(jìn)入了真正有趣的部分,即優(yōu)化 CSV 寫(xiě)入器代碼。第一階段是引入 copy_separator 輔助函數(shù),以改進(jìn)熱循環(huán)中分隔符和行結(jié)束符的復(fù)制。對(duì)經(jīng)優(yōu)化的代碼進(jìn)行了基準(zhǔn)測(cè)試。結(jié)果表明,吞吐量從 1.5~1.8 GB/s 提高到 2.1 GB/s,指令總數(shù)減少,IPC 從 2.22 提高到 2.58。與分支相關(guān)的指標(biāo)大幅降低,促進(jìn)了整體性能的提升。在 Neoverse 核心上優(yōu)化代碼時(shí),我們建議使用 SPE 進(jìn)行熱點(diǎn)分析和根源檢測(cè)。

2

利用 SPE 進(jìn)行內(nèi)存訪(fǎng)問(wèn)分析

基于 SPE 進(jìn)行分析可以獲取有關(guān)內(nèi)存運(yùn)算的寶貴信息,包括內(nèi)存地址、執(zhí)行延遲和數(shù)據(jù)源信息。該分析有助于確定與內(nèi)存訪(fǎng)問(wèn)相關(guān)的瓶頸和性能問(wèn)題,并且可以采集通常需要運(yùn)行 LMBench 才能獲取的部分?jǐn)?shù)據(jù)。

SPE 可記錄內(nèi)存負(fù)載的分層數(shù)據(jù)源命中情況,其中數(shù)據(jù)源編碼取決于系統(tǒng)的緩存層次,如 L1 數(shù)據(jù)緩存、L2 緩存、LLC 或 RAM。

使用 SPE 性能分析數(shù)據(jù)對(duì)內(nèi)存訪(fǎng)問(wèn)進(jìn)行分析需要篩選記錄,以便著重針對(duì)特定代碼部分,從中提取延遲值,并檢查由內(nèi)存運(yùn)算觸發(fā)的 PMU 事件。內(nèi)存測(cè)試用例顯示,SPE 衍生的延遲接近 LMBench 報(bào)告的延遲。SPE 數(shù)據(jù)還有助于分析性能問(wèn)題,如 TLB 未命中。SPE 衍生的數(shù)據(jù)源信息與分層內(nèi)存訪(fǎng)問(wèn)層級(jí)結(jié)構(gòu)相匹配,這有助于確定內(nèi)存訪(fǎng)問(wèn)在緩存層次結(jié)構(gòu)中的命中位置。

3

內(nèi)存帶寬測(cè)試

SPE 分析還可用于預(yù)估內(nèi)存帶寬。不過(guò)需要注意的是,SPE 是一種基于采樣運(yùn)算的統(tǒng)計(jì)測(cè)量工具,對(duì)于內(nèi)存帶寬測(cè)量不一定百分百精確。SPE 可用于優(yōu)化和精細(xì)研究時(shí)的比較分析,特別是對(duì)于具有可預(yù)測(cè)和熟知的內(nèi)存訪(fǎng)問(wèn)模式的代碼,如微內(nèi)核。SPE 監(jiān)測(cè)工具中推出的 SPE-Parser 工具可用于處理通過(guò) Linux perf 工具收集的原始 SPE 分析數(shù)據(jù)。輸出結(jié)果可提供有關(guān)分析結(jié)果的寶貴信息。內(nèi)存讀取帶寬是通過(guò)經(jīng)篩選的 SPE 樣本以統(tǒng)計(jì)方式預(yù)估出來(lái)的。要計(jì)算這一估計(jì)值,需要將基準(zhǔn)讀取的總內(nèi)存大小除以總執(zhí)行時(shí)間。

4

數(shù)據(jù)共享分析

最后一個(gè)用例強(qiáng)調(diào)了 SPE 用于多線(xiàn)程工作負(fù)載中數(shù)據(jù)共享分析。數(shù)據(jù)共享問(wèn)題可能會(huì)導(dǎo)致性能問(wèn)題,特別是當(dāng)多個(gè)線(xiàn)程在同一數(shù)據(jù)集上工作時(shí),這會(huì)造成緩存一致性開(kāi)銷(xiāo)。緩存?zhèn)喂蚕肀闶且粋€(gè)常見(jiàn)的性能問(wèn)題。當(dāng)一個(gè)處理器修改了緩存行上的數(shù)據(jù)項(xiàng),而另一個(gè)處理器在該緩存行的不同部分工作時(shí),就會(huì)出現(xiàn)這種情況。偽共享會(huì)導(dǎo)致緩存失效,并降低性能。

Linux perf c2c 工具會(huì)分析從 SPE 獲取的內(nèi)存訪(fǎng)問(wèn)數(shù)據(jù),包括數(shù)據(jù)源信息、數(shù)據(jù)地址和指令 PC 地址。Perf c2c 可通過(guò)提供存在潛在問(wèn)題的緩存行地址信息,為偽共享問(wèn)題檢測(cè)帶來(lái)幫助。其中包括不同進(jìn)程訪(fǎng)問(wèn)的緩存行中的數(shù)據(jù)偏移、指令地址、本地或遠(yuǎn)程(跨 CPU)訪(fǎng)問(wèn)信息,以及所涉及的 NUMA 節(jié)點(diǎn)。該工具會(huì)報(bào)告可能存在偽共享的緩存行的詳細(xì)信息,以及不同線(xiàn)程訪(fǎng)問(wèn)的數(shù)據(jù)偏移,從而幫助開(kāi)發(fā)者發(fā)現(xiàn)并解決偽共享問(wèn)題。SPE 分析與 perf c2c 工具相結(jié)合,可用于識(shí)別和解決多線(xiàn)程應(yīng)用中的偽共享問(wèn)題,最終提高性能。

總結(jié)

Arm SPE 可提供詳細(xì)的 CPU 分析功能,包括常規(guī)代碼優(yōu)化、內(nèi)存訪(fǎng)問(wèn)分析、內(nèi)存延遲預(yù)估和數(shù)據(jù)共享分析。

SPE 可用于對(duì)源代碼熱點(diǎn)檢測(cè)、內(nèi)存訪(fǎng)問(wèn)分析和數(shù)據(jù)共享問(wèn)題進(jìn)行精確采樣。它可通過(guò)記錄關(guān)鍵執(zhí)行數(shù)據(jù)來(lái)增強(qiáng)性能分析,并且能夠與 Linux perf 等工具集成,幫助用戶(hù)有效地進(jìn)行分析并優(yōu)化代碼。該工具集功能全面,能夠讓用戶(hù)識(shí)別瓶頸,加深對(duì) CPU 行為的理解,并提高軟件性能。





審核編輯:劉清

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

    關(guān)注

    134

    文章

    8965

    瀏覽量

    364993
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2241

    瀏覽量

    93969
  • SoC芯片
    +關(guān)注

    關(guān)注

    1

    文章

    583

    瀏覽量

    34758
  • SPE
    SPE
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    13669
  • csv
    csv
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    5784

原文標(biāo)題:使用 Arm SPE 進(jìn)行芯片數(shù)據(jù)采集和性能分析

文章出處:【微信號(hào):Arm社區(qū),微信公眾號(hào):Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM+FPGA的高速同步數(shù)據(jù)采集

    1、 應(yīng)用背景     基于ARM+FPGA的高速同步數(shù)據(jù)采集方案,解決了數(shù)據(jù)采集的同步性問(wèn)題,與以往
    發(fā)表于 07-22 16:36 ?1407次閱讀

    基于ARM+FPGA的高速同步數(shù)據(jù)采集

      1、 應(yīng)用背景    市面上的FPGA開(kāi)發(fā)板和ARM開(kāi)發(fā)板很多,但是將兩者結(jié)合起來(lái)完成數(shù)據(jù)采集與網(wǎng)絡(luò)通訊的開(kāi)發(fā)板很少
    發(fā)表于 08-31 09:14

    ARM數(shù)據(jù)采集+MATLAB

    我想做一個(gè)ARM數(shù)據(jù)采集系統(tǒng),然后再接入MATLAB處理,不知道有沒(méi)有人做過(guò)這方面的,求點(diǎn)資料。用什么接口接入MATLAB,還有就是MATLAB語(yǔ)言能不能轉(zhuǎn)化為arm的,下入到arm
    發(fā)表于 08-26 09:24

    LabVIEW的光譜數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與分析

    本文引入了新興的虛擬儀器技術(shù),設(shè)計(jì)了一個(gè)基于LabVIEW的光譜分析數(shù)據(jù)采集系統(tǒng),通過(guò)軟件編寫(xiě)再次對(duì)采集到的信號(hào)進(jìn)行了濾波處理,增加了增益調(diào)整功能;采用最小二乘法實(shí)現(xiàn)了對(duì)系統(tǒng)的波長(zhǎng)標(biāo)
    發(fā)表于 06-06 08:00

    圖像采集實(shí)例分析——基于LabVIEW的光譜數(shù)據(jù)采集

    本文引入了新興的虛擬儀器技術(shù),設(shè)計(jì)了一個(gè)基于LabVIEW的光譜分析數(shù)據(jù)采集系統(tǒng),通過(guò)軟件編寫(xiě)再次對(duì)采集到的信號(hào)進(jìn)行了濾波處理,增加了增益調(diào)整功能;采用最小二乘法實(shí)現(xiàn)了對(duì)系統(tǒng)的波長(zhǎng)標(biāo)
    發(fā)表于 07-06 08:30

    基于ARM和GPS的數(shù)據(jù)采集模塊的設(shè)計(jì)

    本文主要介紹了基于ARM 和GPS 的數(shù)據(jù)采集記錄儀中的數(shù)據(jù)采集模塊的設(shè)計(jì)與實(shí)現(xiàn)。該數(shù)據(jù)采集記錄儀以32 位ARM7 微處理器LPC2220
    發(fā)表于 01-06 15:45 ?43次下載

    如何更好地進(jìn)行數(shù)據(jù)采集

    如何更好地進(jìn)行數(shù)據(jù)采集 工程師經(jīng)常需要進(jìn)行數(shù)據(jù)采集來(lái)驗(yàn)證產(chǎn)品的性能和指標(biāo),或者對(duì)一些特定的應(yīng)用進(jìn)行監(jiān)測(cè)和控制,以便確定其物理參數(shù),例如溫度、應(yīng)力、壓
    發(fā)表于 01-04 10:32 ?1633次閱讀
    如何更好地<b class='flag-5'>進(jìn)行數(shù)據(jù)采集</b>

    基于ARM的藍(lán)牙實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

    基于ARM的藍(lán)牙實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì) 摘要:本文提出了一種基于ARM的藍(lán)牙無(wú)線(xiàn)數(shù)據(jù)采集系統(tǒng)。結(jié)合嵌入式技術(shù)與藍(lán)牙技術(shù)的優(yōu)勢(shì),解決了傳統(tǒng)工業(yè)現(xiàn)場(chǎng)數(shù)
    發(fā)表于 02-02 11:27 ?1176次閱讀
    基于<b class='flag-5'>ARM</b>的藍(lán)牙實(shí)時(shí)<b class='flag-5'>數(shù)據(jù)采集</b>系統(tǒng)的設(shè)計(jì)

    基于ARM數(shù)據(jù)采集與控制系統(tǒng)設(shè)計(jì)

    基于ARM數(shù)據(jù)采集與控制系統(tǒng)設(shè)計(jì)
    發(fā)表于 12-17 15:26 ?2次下載

    基于ARM的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)_齊亞萍

    基于ARM的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)_齊亞萍
    發(fā)表于 01-18 20:24 ?1次下載

    基于ARM處理器的USB數(shù)據(jù)采集系統(tǒng)

    基于ARM處理器的USB數(shù)據(jù)采集系統(tǒng)
    發(fā)表于 09-25 13:41 ?5次下載
    基于<b class='flag-5'>ARM</b>處理器的USB<b class='flag-5'>數(shù)據(jù)采集</b>系統(tǒng)

    基于ARM與DSP的聲頻數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

    基于ARM與DSP的聲頻數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
    發(fā)表于 10-20 08:34 ?6次下載
    基于<b class='flag-5'>ARM</b>與DSP的聲頻<b class='flag-5'>數(shù)據(jù)采集</b>系統(tǒng)設(shè)計(jì)

    新的基于ARM數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

    新的基于ARM數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
    發(fā)表于 10-31 10:26 ?7次下載
    新的基于<b class='flag-5'>ARM</b>的<b class='flag-5'>數(shù)據(jù)采集</b>系統(tǒng)設(shè)計(jì)

    PLC實(shí)時(shí)數(shù)據(jù)采集如何實(shí)現(xiàn)?

    數(shù)據(jù)采集傳輸對(duì)于后續(xù)企業(yè)進(jìn)行分析和決策是十分重要的,而實(shí)時(shí)數(shù)據(jù)采集更能提升整體生產(chǎn)的認(rèn)識(shí)度,從而采取到更加及時(shí)高效的措施。因此PLC實(shí)時(shí)數(shù)據(jù)采集
    的頭像 發(fā)表于 11-24 11:09 ?1837次閱讀

    PLC實(shí)時(shí)數(shù)據(jù)采集如何實(shí)現(xiàn)

      數(shù)據(jù)采集傳輸對(duì)于后續(xù)企業(yè)進(jìn)行分析和決策是十分重要的,而實(shí)時(shí)數(shù)據(jù)采集更能提升整體生產(chǎn)的認(rèn)識(shí)度,從而采取到更加及時(shí)高效的措施。因此PLC實(shí)時(shí)數(shù)據(jù)采集
    的頭像 發(fā)表于 12-08 10:31 ?1351次閱讀