在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Armv9 Cortex-A720的L1 System memory簡析

冬至子 ? 來源:Arm精選 ? 作者:baron ? 2023-10-24 15:23 ? 次閱讀

思考

  • L1 System memory 和 L1 Cache 是什么關系?
  • L1 指令 cache 禁用時,指令 cache 就真的不會緩存了嗎?此時還會出現緩存不一致的情況嗎?
  • L1 data cache 禁用時,L1 data cache 就真的不會緩存了嗎?此時還會出現緩存不一致的情況嗎?
  • 在下電的時候,cache 有什么自動的行為?
  • 有沒有 invalidate the entire data cache 的操作?那操作系統中的 invalidate_all_cache 是如何實現的?
  • 什么是 Branch Target Buffer (BTB)?
  • 什么是 Write streaming mode?軟件怎樣可以影響到 Write streaming mode 的行為?
  • 有關 cache 的 refill,如果 L1 MISS,那么 L1 會發生 refill 嗎
  • Armv9 中的原子指令,和 cache 有啥關系?
  • Exclusive 機制和 cache 有啥關系?
  • 數據預取的作用是什么?數據預取有哪些指令?
  • 執行 memset() 函數清空一大塊內存的時候,這些地址數據都會進 cache 嗎?

本節課我們將講述 Armv9 Cortex-A720 的 L1 System memory.

7 L1 instruction memory system

Cortex-A720 的 L1 指令內存系統用于提取指令并預測分支。它包括 L1 指令緩存、L1 指令 Translation Lookaside Buffer(TLB)以及分支預測單元。L1 指令內存系統向解碼器提供指令流。為了提高整體性能并降低功耗,L1 指令內存系統使用動態分支預測和指令緩存。

下圖顯示了 L1 指令內存系統的特性。

image.png

L1 指令 TLB 也位于 L1 instruction memory system 中,它是內存管理單元(MMU)的一部分。

7.1 L1 instruction cache behavior

在 reset 時,除非 core 電源模式初始化為 “Debug Recovery”,否則 L1 指令緩存將自動失效。在 Debug Recovery 模式下,L1 指令緩存不起作用。

L1 instruction cache 的禁用

禁用 L1 instruction cache 對 L1 指令緩存的操作沒有影響。即使在禁用狀態下,指令仍可以緩存在 L1 指令緩存中并從中提取。軟件必須考慮 Non-cacheable accesses 以確保正確的行為。

如果禁用了 L1 instruction cache,那么由指令提取引起的所有內存訪問都將使用 Non-cacheable accesses。這意味著指令提取可能與同一核心或其他核心中的緩存不一致。軟件必須考慮這一點,執行適當的緩存維護操作。

L1 instruction 維護

緩存維護操作可以在任何時候發生,不管 L1 的狀態是禁用還是啟用。

7.2 L1 指令緩存的推測性內存訪問

指令提取是推測性的,流水線中可能存在多個未完成的分支。

代碼流中的分支指令或異常可以導致流水線刷新,丟棄當前已提取的指令。

在指令提取時,具有 device memory 被視為 non-cacheable normal memory。為了防止指令提取,設備內存頁面必須標記為翻譯表描述符屬性位 "Xecute Never"(XN)。設備和代碼地址空間必須在物理內存映射中分離。這種分離防止了在禁用地址轉換時對讀取敏感設備的推測性提取。

如果啟用了 L1 指令緩存并且指令提取在 L1 指令緩存中未命中,那么它們仍然可以在 L1 數據緩存中查找。

然而,無論數據緩存是否啟用,查找都不會導致 L1 數據緩存重新填充 (refill)。該行僅 refill allocated 在 L2 緩存中,前提是 L1 指令緩存已啟用。

7.3 程序流預測

Cortex-A720 核包含程序流預測硬件,也稱為分支預測。分支預測提高了整體性能并增強了功耗效率。

當內存管理單元(MMU)啟用當前異常級別時,程序流預測被啟用。如果禁用程序流預測,那么所有已執行的分支都會產生與清除流水線相關的動作。如果啟用程序流預測,則它會預測是否要執行條件或無條件分支,如下所示:

  • 對于條件分支,它預測是否要執行分支以及分支轉到的地址,即分支目標地址。
  • 對于無條件分支,它僅預測分支目標地址。

程序流預測硬件包含以下功能:

  • 存儲以前已執行分支的分支目標地址的分支目標緩沖器 Branch Target Buffer (BTB)
  • 使用以前的分支歷史的分支預測(BP)預測器
  • 返回堆棧,包括嵌套子例程返回地址
  • 靜態分支預測器
  • 間接分支預測器

預測和非預測指令

  • 序流預測硬件預測所有分支指令,包括:
  • 條件分支
  • 無條件分支
  • 返回指令
  • 間接分支

以下指令不會被預測:

  • 異常返回指令(包括 ERET,ERETAA,ERETAB)
  • svc 指令
  • hvc 指令
  • smc 指令

返回棧

返回棧存儲了過程調用指令的返回地址。此地址應與這些指令由 Link 寄存器(X30)寫入的值相等。

以下任何指令都會導致壓棧:

  • BL
  • BLR
  • BLRAA
  • BLRAAZ
  • BLRAB
  • BLRABZ

以下任何指令都會導致出棧:

  • RET
  • RETAA
  • RETAB

8 L1 data memory system

Cortex-A720 的 L1 數據內存系統執行加載和存儲指令。它處理內存一致性請求以及特定指令,如原子操作、緩存維護操作和內存標記指令。L1 數據內存系統包括 L1 數據緩存和 L1 數據 Translation Lookaside Buffer(TLB)。

下表顯示了 L1 數據內存系統的特性。

image.png

L1 數據 TLB 也位于 L1 數據內存系統中,它是內存管理單元(MMU)的一部分。

8.1 L1 數據緩存行為

除非將核心電源模式初始化為 Debug 恢復模式,否則 L1 數據緩存將在重置時自動失效。在 Debug 恢復模式下,不能保證緩存是否正常運行,因此不應啟用。

沒有使整個 data cache 失效的操作 (invalidate the entire data cache)。如果軟件需要這個功能,那么必須通過循環執行的單獨失效操作(通過 set/way 指令)來構建它。DC CISW 指令執行目標 set/way 的清除和失效操作。

禁用 data cache 行為

如果禁用數據緩存行為,則:

  • 由于加載指令而導致的 L2 或 L3 緩存不會分配新的行。
  • 對可緩存內存的所有加載和存儲指令都視為 Non-cacheable。
  • 數據緩存維護操作繼續正常執行。

L1 數據緩存和 L2 緩存不能獨立禁用。當一個核心禁用 L1 數據緩存時,由該核心發出的可緩存內存訪問將不再在 L1 或 L2 緩存中緩存。在多個 core 之間 cache 的維護操作,使用 Modified Exclusive Shared Invalid (MESI) 協議

緩存索引的確定方式意味著物理地址(PA)和組編號之間沒有直接關系。不能使用假設 PA 和組編號之間存在關系的有針對性的操作。要刷新整個緩存,必須根據緩存的 CCSIDR_EL1 描述的組和方式數量執行組和方式維護操作。

8.2 Write streaming mode

Cortex-A720 核心支持 Write streaming mode,有時也稱為讀分配模式,對于 L1 和 L2 緩存都支持。

在讀不命中或寫不命中時,會向 L1 或 L2 緩存分配緩存行。然而,寫入大塊數據可能會使緩存中充滿不必要的數據。這不僅會浪費電力,也會降低性能,因為整個線路會被后續寫入覆蓋(例如使用 memset() 或 memcpy())。在某些情況下,不需要在寫入時分配緩存行。例如,當執行 C 標準庫的 memset() 函數來將大塊內存清零為已知值時。

為了防止不必要的緩存行分配,內存系統會檢測 core 何時寫入了一系列完整的緩存行。如果在可配置數量的連續線路填充上檢測到這種情況,那么它會切換到寫入流模式。

在寫入流模式下,加載操作行為與正常情況相同,仍然可能引起線路填充。
寫入仍然在緩存中查找,但如果未命中,則會寫入 L2 或 L3 緩存,而不會啟動線路填充 L1。

在內存系統切換到寫入流模式之前,CHI 主控器或 AXI 主控器接口可能會觀察到超過指定數量的線路填充。

寫入流模式保持啟用,直到以下情況之一發生:

? 檢測到一個不是完整緩存行的可緩存寫入突發。
? 存在后續加載操作,其目標與未完成的寫入流相同。

當 Cortex-A720 核心切換到寫入流模式后,內存系統會繼續監視總線流量。當它觀察到一系列完整的緩存行寫入時,會向 L2 或 L3 緩存發出信號,以進入寫入流模式。
寫入流閾值定義了在存儲操作停止引起緩存分配之前,連續寫入的緩存行數量。您可以通過寫入寄存器 IMP_CPUECTLR_EL1 來配置每個緩存(L1、L2 和 L3)的寫入流閾值。

8.3 L1 數據內存系統中的原子指令實現

Cortex-A720 核心支持 Arm v8.1-A 架構中添加的原子指令。對可緩存內存的原子指令可以作為近原子操作或遠原子操作執行,默認情況下,Cortex-A720 核心將這些指令作為近原子操作執行。

換句說法,可以根據系統行為對 IMP_CPUECTLR_EL1 進行編程,以便某些原子指令嘗試作為原子操作執行。

當作為遠原子操作執行時,原子操作傳遞給 interconnect 執行操作。如果操作在集群內的任何位置 hit,或者如果互連器不支持原子操作,則 L3 內存系統執行原子操作。如果該行不存在,則將其分配到 L3 緩存中。

Cortex-A720 核心支持對 device 或 non-cacheable 的原子操作,但這也依賴于互連器是否支持原子操作。如果在互連器不支持原子操作的情況下執行此類原子操作指令,則會導致 abort。

8.4 內部獨占監視器

Cortex-A720 核心包括一個內部獨占監視器,具有 2 狀態(open 狀態和 exclusive 狀態)的狀態機,用于管理 Load-Exclusive 和 Store-Exclusive 訪問以及 Clear-Exclusive(CLREX)指令。

您可以使用這些指令構建信號量,確保不同進程在核心上運行時進行同步,以及確保使用相同的一致內存位置的不同核心之間進行同步。Load-Exclusive 指令標記了一小塊內存以進行獨占訪問。CTR_EL0 定義了標記塊的大小為 16 個字,即一個緩存行。

Load-Exclusive 或 Store-Exclusive 指令是以 LDX、LDAX、STX 或 STLX 開頭的指令。

8.5 數據預取

數據預取可以通過在需要數據之前獲取數據來提高執行性能。

預加載指令

對于不能有效處理數據預取器的情況,Cortex-A720 核心支持 AArch64 預取內存指令 PRFM。
這些指令向內存系統發出信號,指定地址處的內存訪問可能會很快發生。當內存訪問發生時,內存系統采取措施以減少內存訪問的延遲。

PRFM 指令在緩存中執行查找。如果未命中并且內存訪問是對可緩存地址的,則開始線路填充。但是,PRFM 指令在開始線路填充時執行結束,并且不會等到線路填充完成。

硬件數據預取器

加載 / 存儲單元包括硬件預取器引擎,負責生成針對 L1、L2 和 L3 緩存的預取。具體來說,L1 內存子系統中的預取引擎針對 L1 和 L2 緩存。L2 內存子系統中的預取引擎針對 L2 和 L3 緩存。加載端預取器使用虛擬地址(VA)和程序計數器(PC)。存儲端預取器僅使用虛擬地址(VA)。CPUECTLR 寄存器允許對預取器行為的某些方面進行控制。

數據緩存清零

在 Cortex-A720 核心中,Data Cache Zero by Virtual Address(DC ZVA)指令將對齊到 64 字節的內存塊(64 字節對齊)設置為零。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 緩沖器
    +關注

    關注

    6

    文章

    2023

    瀏覽量

    46290
  • ARM芯片
    +關注

    關注

    1

    文章

    127

    瀏覽量

    21829
  • MMU
    MMU
    +關注

    關注

    0

    文章

    92

    瀏覽量

    18566
  • Cortex-A7
    +關注

    關注

    0

    文章

    34

    瀏覽量

    16718
  • cache技術
    +關注

    關注

    0

    文章

    41

    瀏覽量

    1166
收藏 0人收藏

    評論

    相關推薦

    Arm下一代指令架構“Armv9”已經問世

    Arm的下一代CPU指令集架構(ISA:指令集架構) Armv9開始推出。該公司正在逐步擴展當前的ISA Armv8,而擴展的高潮最終將成為Armv9的搭建橋梁。至于Armv9,一位C
    的頭像 發表于 11-13 11:55 ?4.5w次閱讀

    Armv9核心A710、A715和A510微架構解讀

    在介紹Armv9系列前,我們先看一下ARM的Cortex-X定制CPU計劃。Cortex-X方案先于Armv9發布,在Arm發布A78時,同
    發表于 06-12 09:27 ?2.8w次閱讀
    <b class='flag-5'>Armv9</b>核心<b class='flag-5'>A</b>710、<b class='flag-5'>A</b>715和<b class='flag-5'>A</b>510微架構解讀

    Armv9引入的MTE已成內存安全的新防線

    電子發燒友網報道(文/周凱揚)隨著Arm近日公開TCS23方案,可以看出Arm在移動SoC的計算核心上,已經全面走向了Armv9.2架構,無論是大核Cortex-X4、中核Cortex-A720還是
    的頭像 發表于 06-01 00:11 ?2175次閱讀

    Armv8.1-M PAC和BTI擴展

    1Armv8.1-M PAC和 BTI 擴展Armv8-M通過Trustzone for Armv
    發表于 08-05 14:56

    Armv9 system register class空間編碼

      1. 前言  Armv9 system register的編碼空間由一組參數標識:{op0, op1, CRn, CRm, op2},它們形成了一個編碼層次結構,其中:  op0:
    發表于 03-17 15:08

    Arm?Cortex-A720 Core技術參考手冊

    Cortex-A720核心在DSU-120 DynamIQ中實現? 簇它連接到DynamIQ? 共享單元-120,其表現為具有L3高速緩存和窺探控制的完全互連。 這種連接配置也用于具有不同類型內核的系統中,其中Cortex-A720
    發表于 08-02 08:55

    Arm?Cortex-A720核心加密擴展技術參考手冊

    Cortex-A720內核支持可選的Arm?加密擴展。 Arm?加密擴展將A64指令添加到高級SIMD中: ?加速高級加密標準(AES)加密和解密 ?實現SHA (Secure Hash Algorithm)功能 ?執行多項式乘法長(PMULL)指令
    發表于 08-02 07:43

    重磅!Arm正式推出Armv9架構

    當地時間3月30日,Arm宣布正式推出Armv9架構,以應對全球對無處不在的專業化處理的需求,這種處理具有越來越強大的安全性和人工智能(AI)能力。Armv9是ARM公司十年來的最大技術革新。上一代
    發表于 03-31 09:43 ?2742次閱讀
    重磅!Arm正式推出<b class='flag-5'>Armv9</b>架構

    淺談ARM發布Armv9的三大改進

    英國芯片設計公司Arm周二發布了Armv9,這是其在2011年發布Armv8之后十年來首次推出新的芯片架構。Arm表示,與以前的架構相比,Armv9提供了三大主要改進,即安全性更高,更好的AI性能,以及總體上速度更快。
    的頭像 發表于 04-01 15:17 ?2496次閱讀

    Arm推出三款基于Armv9架構的全新CPU內核

    從全面升級到Armv9架構,到公布Neoverse V1和N2平臺技術細節,再到推出三款基于Armv9架構的全新CPU內核,短短兩個月時間里,Arm全面計算(Arm Total Compute)戰略正在以令人難以置信的速度加速推
    的頭像 發表于 06-12 09:11 ?4462次閱讀

    Arm微架構之Armv9時代

    在介紹Armv9系列前,我們先看一下ARM的Cortex-X定制CPU計劃。Cortex-X方案先于Armv9發布,在Arm發布A78時,同
    的頭像 發表于 02-06 14:43 ?9468次閱讀

    Armv8架構和Armv9架構的區別分析

    新的Armv9兼容CPU所承諾的最大的新功能可能是開發人員和用戶可以立即看到的——SVE2作為NEON的后繼產品。
    發表于 03-10 14:02 ?6250次閱讀

    Armv9.2家族添新成員,全新Cortex-X4、A720A520CPU內核:性能再創新!

    。昨天的發布包括旗艦級 Cortex-X4 內核、中核 Cortex-A720、小核 Cortex-A520 以及新一代 GPU Immortalis-G720
    的頭像 發表于 05-31 10:10 ?3312次閱讀
    <b class='flag-5'>Armv</b>9.2家族添新成員,全新<b class='flag-5'>Cortex</b>-X4、<b class='flag-5'>A720</b>和<b class='flag-5'>A</b>520CPU內核:性能再創新!

    Arm推出全球首個Armv9邊緣AI計算平臺

    全球首個 Armv9 邊緣 AI 計算平臺以 Cortex-A320 CPU 和 Ethos-U85 NPU 為核心,專為物聯網應用優化,支持運行超 10 億參數的端側 AI 模型,已獲得包括亞馬遜云科技 (AWS)、西門子和瑞薩電子等在內的多家行業領先企業的支持。
    的頭像 發表于 02-27 17:08 ?511次閱讀

    Arm發布基于Armv9架構的Cortex-A320處理器

    邊緣 AI 需要更卓越的計算性能、更強大的安全性,以及更出色的軟件靈活性。隨著軟件愈發復雜化,Armv9 架構應運而生,以提供先進的機器學習 (ML) 和 AI 功能,并具備增強的安全特性。該架構現已在 Cortex-A3xx 的超高能效系列實現,為新一代邊緣 AI 應用
    的頭像 發表于 02-27 17:10 ?608次閱讀
    主站蜘蛛池模板: 久久国产精品99久久久久久老狼 | 狠狠色丁香九九婷婷综合五月 | 亚洲美女啪啪 | 免费在线成人 | 性欧美人与zooz | 99pao在线视频精品免费 | 又长又大又粗又硬3p免费视频 | 欧美三页 | 美女天天操 | 国产在线视频网站 | 天天做天天爱天天一爽一毛片 | 五月天婷婷综合网 | 91久娇草 | 老司机深夜影院入口aaaa | 欧美在线一级视频 | 黄录像欧美片在线观看 | 成人免费看片视频色多多 | 久久99热精品 | 嫩草影院永久入口在线观看 | 成人三级电影在线观看 | 亚洲国产成人久久 | 四虎影视最新网址 | 玖玖国产在线观看 | 天天综合色天天综合 | 看日本黄色大片 | 黄色大片视频 | 97精品久久天干天天蜜 | 国产成在线观看免费视频 | 天堂最新版免费观看 | 免费一级做a爰片久久毛片 免费一看一级毛片 | 深夜释放自己vlog糖心旧版本 | 欧美性色欧美a在线观看 | 乱e伦有声小说 | 手机看片日韩在线 | 亚洲综合五月天欧美 | 日本免费人成黄页在线观看视频 | 欧美啊片 | 色多多视频在线观看免费大全 | 国产成人精品亚洲日本在线观看 | 玖玖国产在线观看 | 成人免费一区二区三区 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品