CPU體系(2):ARM Store Buffer

来源:https://www.cnblogs.com/vaughnhuang/archive/2022/11/22/16915470.html
-Advertisement-
Play Games

本文主要翻譯自 Arm Cortex-M7 Processor Technical Reference Manual r1p2 其中章節 Memory System / L1 caches / Store Buffer 。 Store Buffer Cache中的數據,在寫入memory或 AXIM ...


本文主要翻譯自 Arm Cortex-M7 Processor Technical Reference Manual r1p2 其中章節 Memory System / L1 caches / Store Buffer 。

Store Buffer

Cache中的數據,在寫入memory或 AXIM 匯流排之前,先存放在store buffer中。store buffer有四個存儲單元,每個存儲單元由一個64bit數據存儲及一個32bit地址存儲組成。來自data-side的寫請求都會存放在store buffer中,但有兩個例外:寫往TCM 或 AHBP介面的數據。

註:名詞解釋 淺談嵌入式MCU CPU內核之ARM Cortex-M7內核高性能(Dual Issue ISA--雙髮指令)實現要點解析

  • AXIM :高性能內部匯流排互聯矩陣。ARM Cortex-M7內核配備了ARM第4代的AMBA匯流排矩陣--AXIM,給MCU/SOC提供64-bit的存儲器和外設匯流排互聯能力,通過AXIM訪問存儲器(SRAM和Flash)和外設時可以配置內核的MPU使能I-Cache和D-Cache,從而加速訪問,進一步提高系統效率。
  • AHBP :高性能外設介面。ARM Cortex-M7內核還為高性能低延遲的外設連接預留了一個32-bit的AHBP介面:通過該介面擴展的外設,讀寫訪問時無需經過系統匯流排互聯矩陣,從而保證了高性和低延遲。

Store buffer merging

  1. 來自同一個cache line的寫請求,被合併到同一個store buffer單元。store buffer寫請求合併只適合於帶有普通memory屬性的寫請求。
  2. 如果是強記憶體序(怎麼知道是強記憶體序??),或者是device memory屬性的記憶體頁,則不會發生store buffer寫請求合併。
  3. 遇到強記憶體序寫或者device memory屬性記憶體,會首先將store buffer中的數據全部寫回,即清空了store buffer中的數據。

Store buffer 寫請求轉發

在指定條件下,store buffer會將寫請求轉給 Cache控制器,AXIM匯流排等(即跳過store buffer,交由cache控制器,AXIM匯流排)。

  1. 比如針對 Non-Cacheable標記的數據,write-through 類型的cache,等操作,交由AXIM匯流排。
    比較難理解,不翻譯

Store buffer draining

有些情況下,需要先等store buffer中的數據全部寫回。有些情況下,需要等該單元的數據寫回。
需要等全部的情形:

  1. cache維護操作;
  2. 共用記憶體(Shared Memory)的獨占操作;
  3. DMB, DSB指令;
  4. 上面提到的強記憶體序地址,或device memory標記的數據。

定義memory maps的屬性許可權等

#define ioremap(addr, size)     __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))
#define ioremap_nocache(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))
#define ioremap_wc(addr, size)      __ioremap((addr), (size), __pgprot(PROT_NORMAL_NC))
#define ioremap_wt(addr, size)      __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))

ARM memory models

  1. 介紹了 devices memory等等。Armv8-A memory model cnblog附件
  2. [譯]硬體記憶體模型
  3. 一步一圖帶你深入理解 Linux 物理記憶體管理

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、流式查詢 1、實體類 package com.wanqi.pojo; import java.util.Date; /** * @Description TODO * @Version 1.0.0 * @Date 2022/9/12 * @Author wandaren */ public cl ...
  • 最近在學習fastdfs時遇到了一個困擾我數小時的問題,結果很感人,特在此記錄下來,也是為了讓其他小伙伴們避坑 (這裡我的fastdfs運行環境是在docker中) 事情是這樣的,用APIfox測試fastdfs文件上傳的時候發現明明返回的成功的結果但是在瀏覽器中使用路徑卻訪問不到伺服器上的圖片,瀏 ...
  • NET 6 環境開發 實現 線程數量,任務隊列,非核心線程,及核心線程活躍時間的管理。 namespace CustomThreadPool; /// <summary> /// 線程池類 /// </summary> public class ThreadPoolExecutor { /// <s ...
  • 一:背景 1.講故事 前段時間有位朋友找到我,說他的程式在客戶的機器上跑著跑著會出現偶發卡死,然後就崩掉了,但在本地怎麼也沒復現,dump也抓到了,讓我幫忙看下到底怎麼回事,其實崩潰類的dump也有簡單的,也有非常複雜的,因為大多情況下都是非托管層面出現的各種故障,非常考驗對 C, C++, Win ...
  • 一 選擇排序 選擇排序的時間複雜度O(n2),額外空間複雜度O(1) public static void SelectionSort(int[] arr) { if (arr == null || arr.Length < 2) { return; } for (int i = 0; i < ar ...
  • apt-mirror 製作麒麟桌面版內網源 一、修改apt軟體安裝源 1、修改source.list安裝源 vi /etc/apt/sources.list 添加: deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1 main universe mu ...
  • 3.1命令的基本格式 3.1.1 命令提示符 [root@localhost ~]# 這就是Linux系統的命令提示符。各部分含義如下: ●[]:這是提示符的分隔符號,沒有特殊含義。 ●root:顯示的是當前的登錄用戶,這裡使用的是root用戶登錄。 ●@:分隔符號,沒有特殊含義。 ●localho ...
  • 需要將系統語言切換為英文,即可完成註冊,後面使用可以用中文 註冊碼: 4C21U-2KK9Q-M8130-4V2QH-CF810 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...