【ESP32S3】Cache 框圖和操作

ESP32-S3 采用雙核共享 ICache (指令緩存) 和 DCache (數據緩存) 結構,如下圖所示。以便當 CPU 的指令總線和數據總線同時發起請求時,也可以迅速響應:

Cache 的存儲空間與內部存儲空間可以復用。具體為 Internal SRAM0 和 Internal SRAM2 分別可被用于 ICacheDCache。其中:

Internal SRAM0 的容量為 32 KB,可讀可寫。CPU 只可以通過指令總線訪問這部分存儲器。通過配置,這部分存儲器中的 16 KB、或全部 32 KB 可以被 ICache 占用,用來緩存外部存儲器的指令或只讀數據。被 ICache 占用的部分不可以被 CPU 訪問,未被 ICache 占用的部分仍然可以被 CPU
訪問。

Internal SRAM2 的容量為 64 KB,可讀可寫。 CPU 只可以通過數據總線訪問這部分存儲器。通過配置,這部分存儲器中的 32 KB、或全部 64 KB 可以被 DCache 占用,用來緩存外部存儲器的數據。被 DCache 占用的部分不可以被 CPU 訪問,未被 DCache 占用的部分仍然可以被 CPU 訪問。

當兩個核的指令總線同時訪問 ICache 時,由仲裁器決定誰先獲得訪問 ICache 的權限;當兩個核的數據總線同
時訪問 DCache 時,由仲裁器決定誰先獲得訪問 DCache 的權限。當 Cache 缺失時,Cache 控制器會向外部存儲器發起請求,當 ICacheDCache 同時發起外部存儲器請求時,由仲裁器決定誰先獲得外部存儲器的使用權。ICache 的緩存大小可配置為 16 KB 或 32 KB,塊大小可以配置為 16 B 或 32 B,當 ICache 緩存大小配置為 32 KB 時禁用 16 B 塊大小模式。DCache 的緩存大小可配置為 32 KB 或 64 KB,塊大小可以配置為 16 B、32 B 或 64 B,當 DCache 緩存大小配置為 64 KB 時禁用 16 B 塊大小模式。

ESP32-S3 Cache 共有如下幾種操作:

回寫(Write-Back)

Write-Back 操作用于將 Cache 中的 “臟塊” 的 “臟” 標記(Dirty bit)抹除,并將數據同步到外部存儲器。Write-Back 操作結束后,外部存儲器和 Cache 中存放的都是新數據。如果 CPU 接著去訪問該數據,那么可以直接從 Cache 中訪問到。只有 DCache 具有此功能。

所謂 “臟塊” 是指,如果 Cache 中的數據比外部存儲器中的數據要新,則 Cache 中的新數據被稱為 “臟塊”,Cache 通過 “臟” 標記來追蹤這些 “臟塊” 數據。如果抹除掉某個新數據的 “臟” 標記,Cache 將認為這個數據不是新的。

清除(Clean)

Clean 操作用于將 Cache 中的 “臟塊” 的 “臟” 標記(Dirty bit)抹除,但不將數據同步到外部存儲器。Clean 操作結束后,外部存儲器中仍是舊數據,Cache 中存放的是新數據,但 Cache 以為不是新的。如果 CPU 接著去訪問該數據,那么直接可以從 Cache 中訪問到。只有 DCache 具有此功能。

失效(Invalidate)

Invalidate 操作用于刪除 Cache 中的有效數據,即使該數據是 “臟塊”,也不會將臟塊同步到外部存儲器。對于非臟塊數據, Invalidate 操作結束后,該數據僅存在于外部存儲器中。如果 CPU 接著去訪問該數據,那么需要訪問外部存儲器。對于臟塊數據, invalidate 結束后,外部存儲器中存在的是舊數據,新數據將徹底丟失。Invalidate 分為自動失效 (Auto-Invalidate) 和手動失效 (Manual-Invalidate)。Manual-Invalidate 僅對 Cache 中落入指定區域的地址對應的數據做失效處理,而 Auto-Invalidate 會對 Cache 中的所有數據做失效處理。ICacheDCache 均具有此功能。

預取 (Preload)

Preload 功能用于將指令和數據提前加載到 Cache 中。預取操作的最小單位為 1 個塊。預取分為手動預取 (Manual-Preload) 和自動預取 (Auto-Preload),Manual-Preload 是指硬件按軟件指定的虛地址預取一段連續的數據;Auto-Preload 是指硬件根據當前命中/缺失(取決于配置)的地址,自動地預取一段連續的數據。ICacheDCache 均具有此功能。

鎖定/解鎖 (Lock/Unlock)

Lock 操作用于保護 Cache 中的數據不被替換掉。鎖定分為預鎖定和手動鎖定。預鎖定開啟時,Cache 在填充缺失數據到 Cache 時,如果該數據落在指定區域,則將該數據鎖定,未落入指定區域的數據不會被鎖定。手動鎖定開啟時,Cache 檢查 Cache 中的數據,并將落在指定區域的數據鎖定,未落入指定區域的數據不會被鎖定。當缺失發生時,Cache 會優先替換掉未被鎖定的那一路的數據,因此鎖定區域的數據會一直保存在 Cache 中。但當所有路都被鎖定時, Cache 將進行正常替換,就像所有路都沒有被鎖定一樣。解鎖是鎖定的逆操作,但解鎖只有手動解鎖。ICacheDCache 均具有此功能。

需要注意的是,Cache 的 Clean、Write-Back 和 Manual-Invalidate 操作均只對未被鎖定的數據起作用。如果想對被鎖定的數據執行這些操作,請先解鎖這些數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903034.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903034.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903034.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

wireshark從HEX轉儲導入使用方法

官方資料: https://www.wireshark.org/docs/wsug_html_chunked/ChIOImportSection.html 方法1: 文本文件,純內容導入: ff ff ff ff ff ff 00 00 00 00 5f 0f 08 06 00 01 08 00 06 04 00 01 00 00 00 00 5f 0f 64 01 60 10 00 00 00 00 00 00 64 01 01…

【Android】四大組件之Activity

目錄 一、什么是Activity 二、如何創建和配置Activity 三、Activity 跳轉與數據傳遞 四、數據保存與恢復 五、Activity 啟動模式 六、自定義返回行為 七、復雜界面布局 你可以把Activity想象成手機屏幕上的一個“頁面”。比如,當你打開一個App時,…

uml類關系(實現、繼承,聚合、組合,依賴、關聯)

drawio和EA是架構設計時經常使用的畫圖工具。 drawio學習門檻低,使用靈活,但是功能僅僅限于畫圖。 EA學習門檻高,但是功能更加的豐富: ①在畫圖方面,EA嚴格滿足UML標準,EA中的圖和類是關聯的&#xff0c…

C++如何設計線程池(thread pool)來提高線程的復用率,減少線程創建和銷毀的開銷

線程池的基本概念與多線程編程中的角色 線程池,顧名思義,是一種管理和復用線程的資源池。它的核心思想在于預先創建一定數量的線程,并將這些線程保持在空閑狀態,等待任務的分配。一旦有任務需要執行,線程池會從池中取出…

React.memo 和 useMemo

現象 React 中,通常父組件的某個state發生改變,會引起父組件的重新渲染(和其他state的重新計算),從而會導致子組件的重新渲染(和其他非相關屬性的重新計算) 問題一:如何避免因為某個…

防火墻技術深度解析:從包過濾到云原生防火墻的部署與實戰

防火墻技術深度解析:從包過濾到云原生防火墻的部署與實戰 在網絡安全防御體系中,防火墻是第一道物理屏障,承擔著“網絡流量守門人”的核心角色。從早期基于IP地址的包過濾設備到如今集成AI威脅檢測的云原生防火墻,其技術演進始終…

strcmp()在C語言中怎么用(附帶實例)

C語言標準庫中的 strcmp() 函數用于比較兩個字符串。 strcmp() 函數原型如下: int strcmp (const char * str1, const char * str2); const char *str1 表示待比較字符串 1 的首地址;const char *str2 表示待比較字符串 2 的首地址。 如果兩個字符串相…

搜廣推校招面經八十二

一、L1 和 L2 正則化的區別?對數據分布有什么要求,它們都能防止過擬合嗎? 1.1. L1 與 L2 正則化的區別 特性L1 正則化(Lasso)L2 正則化(Ridge)正則項λ * ∑|w?| λ ? ∑ ( w i 2 ) λ * ∑…

數據結構和算法(九)--紅黑樹

一、紅黑樹 1、紅黑樹 前面介紹了2-3樹,可以看到2-3樹能保證在插入元素之后,樹依然保持平衡狀態,它的最壞情況下所有子結點都是2-結點,樹的高度為IgN,相比于我們普通的二叉查找樹,最壞情況下樹的高度為N,確…

工業攝像頭通過USB接口實現圖像

工業攝像頭系列概覽:類型與應用 工業攝像頭系列涵蓋了多種類型,以滿足不同行業和應用的需求。以下是對工業攝像頭系列的一些介紹: 一、主要類型與特點 USB工業攝像頭 :這類攝像頭通常通過USB接口與計算機連接,適用于…

使用Django框架表單

使用Django框架表單 文章目錄 使用Django框架表單[toc]1.使用Form類構建表單2.表單字段與Widget控件 1.使用Form類構建表單 【創建項目和應用】 PS C:\Users\ls> cd E:\Python\ PS E:\Python> django-admin.exe startproject FormSite PS E:\Python> cd .\FormSite\…

docker配置mysql遇到的問題:網絡連接超時、啟動mysql失敗、navicat無法遠程連接mysql

目錄 1.網絡超時 方式1. 網絡連接問題 方式2. Docker鏡像源問題 方式3.使用國內鏡像源 2.啟動mysql鏡像失敗 3.navicat無法遠程連接mysql 1.網絡超時 安裝MySQL時出現超時問題,可能由多種原因導致: 方式1. 網絡連接問題 原因:網絡不穩定…

React 多語言國際化:實現多語言支持

🤍 前端開發工程師、技術日更博主、已過CET6 🍨 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 🕠 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 🍚 藍橋云課簽約作者、…

Claude系列模型-20250426

文章目錄 Claude 3.7 Sonnet - "Our most intelligent model yet"Claude 3.5 Haiku - "Fastest model for daily tasks"Claude 3.5 Sonnet (Oct 2024)Claude 3 Opus總結Claude 3.7 Sonnet - “Our most intelligent model yet” 特點: 這是目前Claude系列…

Linux查看可用端口號碼命令

在Linux系統中,有多種命令可用于查看可用端口號碼,下面為你詳細介紹: 1. 使用netstat命令 netstat是一個功能強大的網絡工具,可用于顯示網絡連接、路由表和網絡接口等信息。你可以結合不同的選項來查看端口使用情況。 查看所有…

leetcode201.數字范圍按位與

找到公共前綴部分&#xff0c;然后后面的部分全0 class Solution {public int rangeBitwiseAnd(int left, int right) {int offset 0;while (left ! right) {offset;left left >> 1;right right >> 1;}return right << offset;} }

端到端自動駕駛的數據規模化定律

25年4月來自Nvidia、多倫多大學、NYU和斯坦福大學的論文“Data Scaling Laws for End-to-End Autonomous Driving”。 自動駕駛汽車 (AV) 棧傳統上依賴于分解方法&#xff0c;使用單獨的模塊處理感知、預測和規劃。然而&#xff0c;這種設計在模塊間通信期間會引入信息丟失&am…

021-C語言文件操作

C語言文件操作 文章目錄 C語言文件操作1. 文件的概念2. 二進制文件和文本文件3. 文件的打開和關閉3.1 流和標準流3.1.1 流3.1.2 標準流 3.2 文件指針3.3 文件的打開和關閉 4. 文件的順序讀寫4.1 順序讀寫函數4.2 對比兩組函數4.2.1 scanf/fscanf/sscanf4.2.2 printf/fprintf/sp…

如何使用@KafkaListener實現從nacos中動態獲取監聽的topic

1、簡介 對于經常需要變更kafka主題的場景&#xff0c;為了實現動態監聽topic的功能&#xff0c;可以使用以下方式。 2、使用步驟 2.1、添加依賴 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactI…

《TCP/IP詳解 卷1:協議》之第七、八章:Ping Traceroute

目錄 一、ICMP回顯請求和回顯應答 1、ICMP回顯請求 2、ICMP回顯應答 二、ARP高速緩存 三、IP記錄路由選項&#xff08;Record Route&#xff0c;RR&#xff09; 1、記錄路由選項的工作過程 2、RR 選項的 IP 頭部格式 2.1、RR 請求 2.2、RR響應 四、ping 的去返路徑 五…