以ARM Cortex-A55/A53为例分析 L1/L2/L3 cache所支持的写策略(write-back/wirte-through,写通和写回)

2024-03-06 23:20

本文主要是介绍以ARM Cortex-A55/A53为例分析 L1/L2/L3 cache所支持的写策略(write-back/wirte-through,写通和写回),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在文章 ARM 中缓存维护策略:Allocate policy(读分配/写分配),Write policy(写通/写回)以及replacement policy基础知识中,笔者介绍了ARM cache的Write policy(写通/写回)。今天我们以ARM Cortex-A55和A53为例,具体分析各级cache(L1/L2/L3 )对Write policy(写通/写回)的支持情况。

Cortex-A55/A53

  • 一,Cortex-A53 处理器
  • 二,Cortex-A55 处理器

一,Cortex-A53 处理器

Cortex-A53 处理器支持 L1 cache(instruction cache 和 data cache)以及L2 cache (unified cache)。

Cortex-A53处理器将缓存同步逻辑简化成了如下的内存类型:

  • 当内存类型为nner Write-Back 和Outer Write-Back 时,数据可以被缓存到 L1 Data cache 以及L2 cache中。
  • 当内存类型为Inner Write-Through时,Cortex-A53会将Inner Write-Through降级为Non-cacheable
  • 当内存类型为Outer Write-Through 或者 Outer Non-cacheable时,也会被Cortex-A53降级为Non-cacheable,就是内存的inner属性为Write-Back。
    上述规则如何理解呢?

就是说Cortex-A53处理器的L1 data cache以及L2 cache都不支持Write-Through策略,当处理器访问内存类型为Write-Through的数据时,这些数据并不会经过L1 data cache和L2。
至于L1 instruction cache,对于指令数据,处理器只是读取,并不会写,所以cache 的写策略对指令缓存不起作用。

笔者在文章 关于cache maintenance 操作的四个寄存器(CTR,CLIDR,CSSELR,CCSIDR)解析中介绍过 CCSIDR寄存器,在访问CCSIDR之前,必须先在CSSELR寄存器中写入正确的值, 与CSSELR相对应,会根据CSSELR中的内容,显示指定cache的cache line大小、way的数量以及set的数量。

在这里插入图片描述

不仅如此,CCSIDR还提供了四个状态位:WT、WB、RA以及WA:
在这里插入图片描述
通过这四个状态位,我们可以知道当前cache所支持的读分配策略以及写策略。
从WT始终为0也可以知道:Cortex-A53的所有级别的cacahe都不支持 Write-Through策略。

二,Cortex-A55 处理器

Cortex-A53 处理器支持 L1 cache(instruction cache 和 data cache),L2 cache (unified cache)以及L3 cache。
Cortex-A55处理器也将缓存同步逻辑简化成了如下的内存类型:

  • 当内存类型为Inner Write-Back 或者 Outer Write-Back 时,该内存上的数据才会被缓存到 L1 data cache 以及L2 cache中
  • 当内存类型为其他类型(包括 Write-Through)时,都会被视为Non-cacheable,即都不会被缓存。

所以Cortex-A55处理器对Write-Through策略的处理也是大同小异:
当内存被标记为 Write-Through属性时,读写该内存上的数据,不会被cache缓存,也不会发起cache coherency请求。对于被标记为Write-Through 或者Write-Back的指令数据,它可以被存储在L1 instruction cache,但是只有Write-Back属性的数据可以被缓存到L2 cache或者L3 cache。

同Cortex-A53一样,其CCSIDR的WT状态位也始终为0,说明对Cortex-A55 来讲,它的任何级别的cache(L1/L2/L3)都不支持 Write-Through 策略。
在这里插入图片描述
在这里插入图片描述

这篇关于以ARM Cortex-A55/A53为例分析 L1/L2/L3 cache所支持的写策略(write-back/wirte-through,写通和写回)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781688

相关文章

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致