• 正文
    • 1. SPE介紹
    • 2. 采樣record和packet
    • 3. 使用perf工具分析SPE
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

ARM CPU性能分析 -- SPE采樣分析

4小時前
39
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

對ARM CPU進(jìn)行性能分析常用的方法有PMU性能監(jiān)控、Top-Down性能分析、SPE采樣分析等。本文介紹一下SPE采樣分析的方法。

ARMv8.2引入了Statistical Profiling Extension(SPE),它提供了一種非侵入性的軟件和硬件采樣方法,可以對指令集架構(gòu)定義的架構(gòu)指令或uop進(jìn)行采樣分析。

SPE和PMU的對比:PMU可以分析一段代碼執(zhí)行中的event信息,但不能精確分析某一條指令的信息,例如這條指令有沒有cache miss、指令執(zhí)行的latency、分支預(yù)測的地址、指令訪問的虛擬地址和物理地址、數(shù)據(jù)來源是哪一級的cache/另外一個Cluster的CPU/另一個socket的CPU?

而SPE采樣分析則可以做到這些。

1. SPE介紹

SPE通過硬件采集CPU執(zhí)行過程中發(fā)生的event,根據(jù)軟件設(shè)置的采樣間隔對指令進(jìn)行采樣,由硬件產(chǎn)生SPE的record packet并將packet寫入外部內(nèi)存。SPE采樣的指令地址信息是非常精確的,不會漂移。而且采樣記錄的開銷較小,因而采樣率可以設(shè)置得很高。

SPE采樣流程主要包括以下4個步驟:

 

按照采樣間隔從樣本總體中選一個operation(可以限定為某個EL)。采樣間隔是軟件通過寫入PMSICR_EL1.COUNT來設(shè)置的。這個過程可以加入一些隨機(jī),偽隨機(jī)或擾動到采樣間隔中。

硬件trace這個operation在pipeline的執(zhí)行信息,包括PC,event,時序,數(shù)據(jù)地址,即profiling operation。

在創(chuàng)建一個采樣record之前,可以通過以下條件來過濾profile operation。

a.operation類型;

b.event;

c.latency。

創(chuàng)建一個包含trace信息的sample record。滿足過濾條件的sample record被寫入并存儲在內(nèi)存緩沖區(qū)中。當(dāng)內(nèi)存緩沖區(qū)滿時,可以用軟件處理這些sample record。

2. 采樣record和packet

SPE采集的一個record 表示對一個operation的trace記錄,一個record包含多個packets,不同的packet代表不同的信息,包括Address packet、Counter(LAT) packet、Events(EV) packet、Type(LD) packet、Timestamp(TS) packet、datasource packet、context packet等。

2.1 address packet

統(tǒng)計operation的地址,包括PC、Branch target address、Data access virtual address和Data access physical address。

2.2 counter packet

統(tǒng)計operation的latency,包括total latency,issue latency,translation latency這三種。

Issue latency:統(tǒng)計operation從dispatch到issue出去執(zhí)行之間的cycle數(shù)。包括所有operation。

Total latency: 統(tǒng)計operation被dispatch到執(zhí)行完成之間的cycle數(shù)。包括所有operation。

Translation latency:統(tǒng)計operation從虛擬地址送到MMU到MMU地址翻譯完成之間的cycle數(shù)。包括所有l(wèi)oad、store和atomic operation。

2.3 operation type packet

統(tǒng)計采樣的operation的類型,包括Load、store、atomic、Branch或exception return等指令類型。

2.4 event packet

統(tǒng)計采樣的operation的event。例如L1D-ACCESS、TLB-ACCESS、L2-MISS等事件。

2.5 data source packet

統(tǒng)計load數(shù)據(jù)的來源是哪里,例如數(shù)據(jù)是來自L1 cache、L2 cache、peer cluster、DDR、remote socket等等。

3. 使用perf工具分析SPE

可以通過perf工具來進(jìn)行SPE采樣分析。例如獲取SPE采樣數(shù)據(jù):

perf?record -e arm_spe_0/branch_filter=1,load_filter=1,store_filter=1,pa_enable=1,min_latency=10/ ?./user_app

分析SPE采樣數(shù)據(jù):

perf report -D -i ./perf.data ?> ?report.txt

參考內(nèi)容:

https://aijishu.com/a/1060000000398832

https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/statistical-profiling-extension-for-armv8-a

https://static.linaro.org/connect/lvc21/presentations/lvc21-302.pdf

相關(guān)推薦