首页 > 其他分享 >CPU体系(2):ARM Store Buffer

CPU体系(2):ARM Store Buffer

时间:2022-11-22 16:23:18浏览次数:70  
标签:AXIM Buffer ARM buffer Store memory CPU store

本文主要翻译自 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标记的数据。

ARM memory models

介绍了 devices memory等等。Armv8-A memory model

标签:AXIM,Buffer,ARM,buffer,Store,memory,CPU,store
From: https://www.cnblogs.com/vaughnhuang/p/16915470.html

相关文章

  • Anaconda的 tensorflow(cpu) 与OpenCV安装教程
    安装Anaconda5.2+tensorflow1.9下载Anaconda5.2.0(64位或32位)https://www.anaconda.com/download/安装Anaconda5.2.0(一路确定即可)打开Anacondaprompt,然后执行piplist......
  • [ERROR] mariadbd: The table 'INNODB_BUFFER_PAGE' is full
    问题描述:将information_schema导出sql文件到新库中恢复,sql中的表都是临时表,存储引擎都是memory,在导入的过程中实际大量会占用临时表。报错信息:ERROR1114(HY000)atline......
  • 国产化系统,国产化CPU
    国产操作系统多为以Linux为基础二次开发的操作系统。目前、比较火的国产化系统有“银河麒麟”、“统信UOS”、“鸿蒙等等”。但是、无论是什么系统,都是大相径庭,主要还是看......
  • innodb中内存管理机制BufferPool
    ​内存结构 InnoDB主索引是聚簇索引,索引与数据共用表空间,对于InnoDB而言,数据就是索引,索引就是数据。InnoDB缓存机制和MyISAM缓存机制的最大区别就是在于,InnoDB不仅仅是缓存......
  • mysql中CPU或内存利用率过高问题
    CPU利用率过高原因在MySQL使用过程中,出现CPU利用率过高甚至超过100%时,与数据库存在低效SQL或大量行锁冲突有非常大的关系,一般都是由于大量低效的SQL导致,出现行锁冲......
  • 一个8位二进制CPU的设计和实现
    基础逻辑电路半加器HalfAdderABSC0000011010101101\[\begin{aligned}S=&\overline{A}B+\overline{B}A\\\iff\S=&......
  • eCos系统CPU负载测量
    cpuload组件包提供了一种估算CPU负载的方式。它可以估算最近0.1秒、1秒和10秒内的CPU负载百分比。负载测量API首先,必须在被测目标机上对测量算法进行校准,一旦校准完成后就可......
  • G. Restore the Permutation
    G.RestorethePermutationAsequenceof$n$numbersiscalledpermutationifitcontainsallnumbersfrom$1$to$n$exactlyonce.Forexample,thesequences......
  • MacBook苹果笔记本电脑 如何查询CPU GPU 温度?
     苹果笔记本电脑高负荷下发热量巨大,为了散热买了个散热器,于是乎,如何观察散热效果?方法如下:1、打开苹果内置终端,输入命令:sudopowermetrics--samplerssmc|grept......
  • BufferedWriter
    BufferedWriter/**Copyright(c)1996,2013,Oracleand/oritsaffiliates.Allrightsreserved.*ORACLEPROPRIETARY/CONFIDENTIAL.Useissubjecttolicens......