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

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

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

解析Arm Neoverse N2 PMU事件L2D_CACHE_WR

Arm社區(qū) ? 來(lái)源:Arm社區(qū) ? 作者:Arm社區(qū) ? 2024-09-03 11:42 ? 次閱讀

作者:安謀科技 (Arm China) 主任工程師 Ker Liu;安謀科技 (Arm China) 主任軟件工程師 蔡亦波

有客戶希望我們幫忙分析 Eigen gemm 基準(zhǔn)測(cè)試的一些執(zhí)行情況。具體來(lái)說(shuō)是為什么 L1D_CACHE_WR 的值會(huì)低于 L2D_CACHE_WR,這種情況令人費(fèi)解。

wKgaombWhaWAAQMZAABcOJk8riw523.jpg

通常,我們期望寫操作發(fā)生在 L1 數(shù)據(jù)緩存中。來(lái)自 L1 數(shù)據(jù)緩存的一些回寫可能會(huì)引發(fā) L2 緩存寫操作。一般來(lái)說(shuō),L1 數(shù)據(jù)緩存寫操作的數(shù)量應(yīng)該高于 L2 緩存寫操作的數(shù)量。對(duì)于一些常用的工作負(fù)載(例如 Redis 和 Nginx),如果我們對(duì) PMU 進(jìn)行監(jiān)控,就會(huì)發(fā)現(xiàn) L1 數(shù)據(jù)緩存寫操作的數(shù)量會(huì)高于 L2 緩存寫操作的 PMU 值。但對(duì)于某些工作負(fù)載而言,L1 數(shù)據(jù)緩存寫操作的 PMU 值要低于 L2 緩存寫操作的 PMU 值。

本文中,我們將分析 L2D_CACHE_WR 的計(jì)數(shù),以及在何種情況下,L1D_CACHE_WR 的 PMU 值會(huì)低于 L2D_CACHE_WR。

驗(yàn)證平臺(tái)

本文中的測(cè)試都是基于 Arm Neoverse N2 平臺(tái)的服務(wù)器。下表顯示了該服務(wù)器的硬件和軟件版本信息。

wKgaombWhbOAEjL2AABBtrmDepA763.jpg

調(diào)查

對(duì)于大多數(shù)工作負(fù)載而言,L1D_CACHE_WR 的 PMU 值要高于 L2D_CACHE_WR。例如,對(duì)于 Redis 來(lái)說(shuō),一個(gè) Redis 進(jìn)程在Core 1 上運(yùn)行。使用 Memtier 客戶端來(lái)生成讀寫混合請(qǐng)求。

wKgZombWhcKAU9TVAABMGsBW1cQ604.jpg

以下是 Neoverse N2 PMU 指南[1]中 L1D_CACHE_WR 和 L2D_CACHE_WR 的定義。

L1D_CACHE_WR:此事件將統(tǒng)計(jì)在 L1 數(shù)據(jù)緩存中查找的任何內(nèi)存寫入操作。此事件還將統(tǒng)計(jì)由數(shù)據(jù)緩存按虛擬地址清零 (DC ZVA) 指令所引發(fā)的訪問(wèn)操作。

L2D_CACHE_WR:此事件將統(tǒng)計(jì)由 CPU 發(fā)出并在統(tǒng)一 L2 緩存中查找的任何內(nèi)存寫入操作。無(wú)論 L2 緩存是否命中,該事件都將計(jì)數(shù)。此事件還將統(tǒng)計(jì)從 L1 數(shù)據(jù)緩存分配到 L2 緩存的任何回寫。此事件將 DC ZVA 操作視為存儲(chǔ)指令并統(tǒng)計(jì)這些訪問(wèn)。來(lái)自 CPU 外部的監(jiān)聽(tīng)不計(jì)算在內(nèi)。

從 Neoverse N2 技術(shù)參考手冊(cè)[2]中我們知道,L1 緩存和 L2 緩存之間具有嚴(yán)格的包含關(guān)系。存在于 L1 緩存中的任何緩存行也同樣存在于 L2 緩存中。

經(jīng)過(guò)分析研究,我們發(fā)現(xiàn)如下規(guī)律:

L2D_CACHE_WR 的 PMU 值約等于“L1 數(shù)據(jù)緩存重填”、“L1 指令緩存重填”和“L1 預(yù)取重填”的 PMU 值之和。

為什么我們要從這三個(gè)事件開(kāi)始分析?

因?yàn)檫@三個(gè)事件都會(huì)引起 L1 數(shù)據(jù)緩存和 L1 指令緩存的替換行為,包括干凈替換 (clean evictions) 和臟替換 (dirty evictions)。如果仔細(xì)看 L2D_CACHE_WR 的定義,您會(huì)發(fā)現(xiàn)它將統(tǒng)計(jì)從 L1 數(shù)據(jù)緩存分配到 L2 緩存的任何回寫。L1 數(shù)據(jù)緩存回寫則統(tǒng)計(jì)從 L1 數(shù)據(jù)緩存到 L2 緩存的任何臟數(shù)據(jù)回寫,該值通常非常小,與 L2D_CACHE_WR 的值并不匹配,且沒(méi)有專門針對(duì)干凈替換的 PMU 計(jì)數(shù)器。因此,我們綜合考慮了所有可能導(dǎo)致緩存替換的事件(包括干凈替換和臟替換),從不同的角度進(jìn)行分析,找到了這個(gè)規(guī)律。

wKgaombWhc6AbAEGAABLPedFu4M230.jpg

我們已在幾個(gè)典型場(chǎng)景中驗(yàn)證了這一發(fā)現(xiàn)。大多數(shù)測(cè)試用例確實(shí)遵循這種規(guī)律。

對(duì)于 Redis 的情況

我們使用 Memtier 客戶端作為負(fù)載生成器,為 Redis 進(jìn)程生成混合讀寫請(qǐng)求,結(jié)果發(fā)現(xiàn) PMU 值遵循相應(yīng)規(guī)律。

wKgaombWhdqAT66TAABodPvgx80915.jpg

對(duì)于“Telemetry: ustress: l1d_cache_workload”[3]的情況

此基準(zhǔn)測(cè)試僅讀取數(shù)據(jù),旨在對(duì) L1 數(shù)據(jù)緩存的未命中情況進(jìn)行壓力測(cè)試,結(jié)果發(fā)現(xiàn) PMU 值遵循相應(yīng)規(guī)律。

wKgaombWhfaAR1LIAABfDAOeRrc273.jpg

對(duì)于“Telemetry: ustress: l1i_cache_workload”[4]的情況

此基準(zhǔn)測(cè)試將重復(fù)調(diào)用那些與頁(yè)面邊界對(duì)齊的函數(shù),旨在對(duì) CPU L1 指令緩存的未命中情況進(jìn)行壓力測(cè)試,結(jié)果發(fā)現(xiàn) PMU 值遵循相應(yīng)規(guī)律。

wKgaombWhgWAGzrLAABhpC78Us0471.jpg

對(duì)于 Eigen gemm 的情況

此基準(zhǔn)測(cè)試包含許多讀取操作。L1D_CACHE_WR 的 PMU 值比較小,但 L1 緩存的預(yù)取操作導(dǎo)致 L2D 的 PMU 值很大。因此,我們得到的結(jié)果是 L1D_CACHE_WR 的 PMU 值要低于 L2D_CACHE_WR。PMU 值也遵循這種規(guī)律。

wKgaombWhhCAMhY3AABvTojHREU782.jpg

但是,流寫入是一個(gè)例外。我們使用“Telemetry: ustress: memcpy_workload”[5]基準(zhǔn)測(cè)試,對(duì)加載-存儲(chǔ) (load-store) 管線中完全處于 L1D 緩存內(nèi)的 memcpy 進(jìn)行壓力測(cè)試。memcpy 觸發(fā)流寫入,跳過(guò) L1 并直接寫入 L2。此時(shí),PMU 值并不遵循這種規(guī)律。

wKgZombWhiWAVsvQAABdaHpXAyo077.jpg

以下是 Neoverse N2 技術(shù)參考手冊(cè)中關(guān)于寫入流模式的描述。

Neoverse N2 核心支持寫入流模式(有時(shí)也稱為讀取分配模式),這一點(diǎn)同時(shí)適用于 L1 和 L2 緩存。

當(dāng)發(fā)生讀取未命中或?qū)懭胛疵袝r(shí),會(huì)向 L1 和 L2 緩存分配緩存行。但是,寫入大塊數(shù)據(jù)可能會(huì)導(dǎo)致不必要的數(shù)據(jù)浪費(fèi)緩存空間。這也可能會(huì)浪費(fèi)功率和性能,因?yàn)樵趫?zhí)行行填充后,如果 memset() 隨后寫入了整行數(shù)據(jù),行填充數(shù)據(jù)將被丟棄。有些情況下,不需要在寫入時(shí)分配緩存行,例如在執(zhí)行 C 標(biāo)準(zhǔn)庫(kù) memset() 函數(shù)以將一大塊內(nèi)存清除為某個(gè)已知值時(shí)。

為了防止不必要的緩存行分配,內(nèi)存系統(tǒng)可以在行填充完成之前檢測(cè)核心何時(shí)寫入完整的緩存行。如果在可配置數(shù)量的連續(xù)行填充中檢測(cè)到這種情況,系統(tǒng)就會(huì)切換到寫入流模式。

在寫入流模式下,讀取操作會(huì)正常執(zhí)行,仍可能引發(fā)行填充。寫入操作還是會(huì)先查找緩存,但如果未命中,它們就會(huì)寫入 L2 或系統(tǒng),而不是開(kāi)始行填充。

總結(jié)

在基于 Neoverse N2 的服務(wù)器上,L2D_CACHE_WR 會(huì)統(tǒng)計(jì)來(lái)自 L1 緩存的所有緩存替換(包括干凈替換和臟替換)以及流寫入。

對(duì)于讀取大量數(shù)據(jù)的工作負(fù)載,我們會(huì)看到,L1D_CACHE_WR 的 PMU 值要低于 L2D_CACHE_WR。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    8976

    瀏覽量

    365330
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8750

    瀏覽量

    84664
  • 數(shù)據(jù)緩存
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    7024
  • PMU
    PMU
    +關(guān)注

    關(guān)注

    1

    文章

    103

    瀏覽量

    21501

原文標(biāo)題:深入研究 Arm Neoverse N2 PMU 事件 L2D_CACHE_WR

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Arm Neoverse家族新增V1和N2兩大平臺(tái),突破高性能計(jì)算瓶頸

    Arm 近日公開(kāi)了Arm? Neoverse V1 和 N2 平臺(tái)的產(chǎn)品細(xì)節(jié),兩者滿足了基礎(chǔ)設(shè)施應(yīng)用的各種需求。這兩個(gè)平臺(tái)的設(shè)計(jì)旨在解決當(dāng)前正在運(yùn)行的各種工作負(fù)載和應(yīng)用問(wèn)題,與上一代
    的頭像 發(fā)表于 04-30 16:20 ?8992次閱讀

    ARM Neoverse N2 PMU指南

    發(fā)生時(shí)。 2.1 范圍 本文件提供N2 PMU事件的高水平描述。 提到建筑行為和N2微性造影行為,以澄清這些事件的描述。 關(guān)于更完整的武器結(jié)構(gòu)描述,請(qǐng)參考Armú 建筑參考手冊(cè)。 關(guān)于
    發(fā)表于 08-09 06:07

    Arm Neoverse V1 PMU指南

    事件之一時(shí)計(jì)數(shù)發(fā)生。 2.1范圍 本文檔提供了Neoverse V1 PMU事件的高級(jí)描述。有參考資料體系結(jié)構(gòu)行為和Neoverse V1微觀體系結(jié)構(gòu)行為事件描述。有關(guān)Arm架構(gòu)的更完
    發(fā)表于 08-09 07:30

    Arm Neoverse N2汽車硬件技術(shù)概述

    算子系統(tǒng)。RD-N2-Automotive是在RD-N2的基礎(chǔ)上逐步開(kāi)發(fā)的。 本文件必須與Arm NeoverseTM N2參考設(shè)計(jì)(RD-N2
    發(fā)表于 08-10 06:25

    ARM Neoverse?N2軟件優(yōu)化指南

    新宇宙? N2是一款高性能、低功耗的產(chǎn)品,采用Arm?v9.0-a架構(gòu)。此實(shí)現(xiàn)支持Arm?v8.6?A之前的所有Armv8-A體系結(jié)構(gòu)實(shí)現(xiàn)。
    發(fā)表于 08-11 06:47

    Arm Neoverse? N1 PMU指南

    本文檔提供了Neoverse N1 PMU事件的高級(jí)描述。 對(duì)體系結(jié)構(gòu)行為和Neoverse N1微體系結(jié)構(gòu)行為的引用闡明了這些事件描述。
    發(fā)表于 08-12 07:10

    Arm Neoverse? N2核心加密擴(kuò)展技術(shù)參考手冊(cè)

    Neoverse?N2核心支持可選的ARM?v8.0-A和ARM?v8.2-A加密擴(kuò)展。 ARM?v8.0-A加密擴(kuò)展為Advanced S
    發(fā)表于 08-17 07:08

    ARM Neoverse?N1核心技術(shù)參考手冊(cè)

    (推測(cè)存儲(chǔ)旁路安全)位,以及ARM?v8.5-A擴(kuò)展中引入的推測(cè)屏障(CSDB、SSBB、PSSBB)指令。 Neoverse?N1內(nèi)核具有1級(jí)(L1)內(nèi)存系統(tǒng)和專用的集成
    發(fā)表于 08-29 08:05

    ARM Neoverse?N2核心技術(shù)參考手冊(cè)

    Neoverse?N2內(nèi)核是一款高性能、低功耗的產(chǎn)品,采用ARM?v9.0-A架構(gòu)。 此實(shí)施支持所有以前的ARMv8-A架構(gòu)實(shí)施,包括ARM?v8.5-A。 Neoversedsu
    發(fā)表于 08-29 08:12

    A_D-2WR2

    A_D-2WR2數(shù)據(jù)手冊(cè),又需要的下來(lái)看看。
    發(fā)表于 01-13 17:53 ?8次下載

    互聯(lián)網(wǎng)巨頭紛紛啟用Arm CPU架構(gòu),Arm最新Neoverse V1和N2平臺(tái)加速云服務(wù)器芯片自研

    電子發(fā)燒友網(wǎng)報(bào)道(文/黃晶晶)Arm在2018年10月宣布了Neoverse的路線圖,繼2019年Neoverse N1平臺(tái)發(fā)布后,今年9月發(fā)布Ne
    發(fā)表于 09-30 14:46 ?1142次閱讀

    Arm推出新一代平臺(tái) Neoverse V2 平臺(tái)

    目前,Arm Neoverse家族包括:V系列、N系列以及E系列。就在今年9月,Arm Neoverse迎來(lái)新的進(jìn)展,推出新一代平臺(tái)
    的頭像 發(fā)表于 09-26 09:22 ?1366次閱讀

    Neoverse N2和CMN-700系統(tǒng)的PoC點(diǎn)在哪里?

    DC IVAC/ DC CIVAC指令用于將一個(gè)虛擬地址對(duì)應(yīng)的cache line從data cache或是unified cache失效或清除失效到PoC點(diǎn)。N2 core硬件默認(rèn)會(huì)
    的頭像 發(fā)表于 06-09 16:45 ?2625次閱讀
    <b class='flag-5'>Neoverse</b> <b class='flag-5'>N2</b>和CMN-700系統(tǒng)的PoC點(diǎn)在哪里?

    Arm 更新 Neoverse 產(chǎn)品路線圖,實(shí)現(xiàn)基于 Arm 平臺(tái)的人工智能基礎(chǔ)設(shè)施

    Neoverse CSS 產(chǎn)品;與 CSS N2 相比,其單芯片性能可提高 50% Arm Neoverse CSS N3 拓展了
    發(fā)表于 02-22 11:41 ?273次閱讀

    ArmArm Neoverse計(jì)算子系統(tǒng)(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    Neoverse CSS N3代表了Arm計(jì)算子系統(tǒng)產(chǎn)品組合的最新進(jìn)展。 Neoverse CSS V3是高性能V系列產(chǎn)品組合的首款產(chǎn)品,相比其前身
    的頭像 發(fā)表于 04-24 17:53 ?864次閱讀
    <b class='flag-5'>Arm</b>新<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b>計(jì)算子系統(tǒng)(CSS):<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS V3和<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS <b class='flag-5'>N</b>3