首页 > 其他分享 >ARMv7-A 处理器窥探 —— Cache

ARMv7-A 处理器窥探 —— Cache

时间:2023-05-14 18:33:14浏览次数:39  
标签:Cache MMU cache 虚拟地址 物理地址 处理器 ARMv7 line

ARMv7-A Cache Architecture

cache以地址来进行查找 Cache 的,那么我们到底是用虚拟地址还是物理地址呢?三种方式:

1、早期的 ARM 处理器,如 ARM720T 或 ARM926EJ-S 处理器使用虚拟地址提供 Index 和 Tag。 这有一个优点,即 CPU 不需要虚拟到物理地址转换就可以进行缓存查找。 缺点是,每当进行进程切换(虚拟地址映射表发生改变),Cache 中的虚拟地址就不能再用了,导致性能下降,现在这种方式已经淘汰。

2、使用物理地址来查找 Cache(我们叫它 PIPT),那么这么做很明显解决了第一种的缺点(因为是以物理地址进行 Cache 的,不管映射表怎么变,物理地址不会变)。但是由引入了一个缺点:每次进行查表的时候,都需要到MMU去进行地址转换,这样增加了查找cache需要的时间,效率明显没有采用虚拟地址的高。注:这种方法,依赖MMU,即MMU关闭,Cache 就必须关闭;

3、是第 1 种和第 2 种的折中处理,将这个查找过程分为两步,Tag 用物理地址表示,Index 用虚拟地址的,我们叫它 VIPT(Virtually Indexed, Physically Tagged)。那么怎么实现呢?首先,由于 Cache 控制器和 MMU 是两个独立模块,因此通过 MMU 去查找 Tag 和通过 Index 去 Cache 查找 Way 是相互独立的即可以同时运行。即当用 Index 去 Cache 查找 Set(上面有解释,即 Index 相同,但处于不同 Way 的一组集合)的同时也在用虚拟地址去 MMU 找物理地址的 Tag,当从cache找到一组set(line[way])的时候(因为只提供了index,因此cache control不知道到底是哪个way,所以返回每个包含index的way),此时MMU中也查到了物理tag,然后再用该物理tag去匹配返回的set,最后获取到对应的 cache line。常用CPU情况如下。

 

 

 

可能到这里有人会问了,混合使用物理地址和虚拟地址不会有问题吗?毕竟虚拟地址在进程发生变动的时候是会不断变化的。理论上是不会有问题的,为什么呢?我们知道我们的虚拟映射表了,我们的映射表一般是以4K为一个page,即4k对齐,不管虚拟地址怎么发生变化,一个page内的偏移是不变的。要寻址一个4k大小我们需要[11:0]共12个bit来提供支持,即在MMU当中,虚拟地址的低12位和物理地址的低12位是相同的。假如我们用的是一个16kb大小,含有4个way,每个line 32bytes的cache,那么通过计算[4:0]用于cache的offset定位,[11:5]则用于cache的index定位。如上所说,虚拟地址和物理地址的[11:0]是相同的,因此index用虚拟地址就不会有影响。但是话又说回来,如果我们的cache大小超过了16k,加入为32kb呢?那么我们以32KB,含有4个way,每个line 32bytes的cache来说,[4:0]用于offset定位,[12:0]用于index定位,那么问题来了,由于虚拟地址和物理地址仅仅是[11:0]相同,那么第13位在发生切换后,就可能会出现0/1两个值,意味着一个物理地址可能会同时占用2个cache line,即两个副本, 这样就会容易引发cache一致性的问题。针对于这种cache alias问题,目前的方案是由操作系统来保证,对于同一物理地址在不同进程空间的虚拟地址,他们的虚拟地址的差一定是cache way大小的整数倍,也就是说他们的第13位一定是相同的。同时已经有些cpu厂商在开发监视模块,试图在硬件层面解决类似的同步问题。同理对于64kb的cache也采用同样的方法。

 

ARMv7-A Cache policies

在 Cache 操作策略中可以做出许多不同的选择。

Allocation Policy

第一种,CPU读数据时。只有当读取的时候,发现cache miss,才从cache中申请一个line去缓存该数据。写的时候,不申请,直接写入下一级。

第二种,写和读时。只要访问时,不管读或者写,发生了cache miss都去申请一个cache line。

Replacement Policy

当 Cache miss 的时候,Cache 替换策略:

第一种,Round-robin 或者循环替换策略;

第二种,Random 替换,Cache 存满并且出现 Cache miss,如果来了一条新的,则随机找一个 Cache Line 被替换;

第三种,LRU(Least Recently Used) 算法替换,方法如名字,当 Cache 存满了后,如果来了一条新的,则选择最近最少使用的被替换;

Write Policy

第一种,Write-Back 模式:写数据时,只向 Cache写入数据,并标记 Cache 为 Dirty,然后在合适的时机将数据更新到主存;

第二种,Write-Through 模式:写数据时,Cache 和主存都要写一份;

 

标签:Cache,MMU,cache,虚拟地址,物理地址,处理器,ARMv7,line
From: https://www.cnblogs.com/god-of-death/p/17399852.html

相关文章

  • CACHE 介绍
     内存要想理解cache,先理解内存。内存的简单表示如下图,内存里面的内容的查找是根据地址来进行的,也就是说内存包含两点①地址②内存的内容(存的数据),根据地址来找数据。上图的0000~0008是地址,A~I是存的数据,cpu根据地址去寻找数据。图中的一个字母代表一个字节的数据。CACHE cac......
  • http cache 笔记转载
    HTTP协议的Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会影响另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括:no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached等。响应消息中的指令包括:publi......
  • ARMv7-A 处理器窥探(2) —— CP15 协处理器
    1、ARMv7-A协处理器ARMv7-A处理器除了标准的R0~R15,CPSR,SPSR以外,由于引入了MMU、TLB、Cache等内容,ARMv7-A使用协处理器来对这些扩展来进行管理,ARMv7-A支持16个协处理器,编号从CP0~CP15,其中的CP15协处理器称之为系统控制协处理器,CP15协处理器下的寄存器包含了MMU、TL......
  • ARMv7-A 处理器窥探(1) —— 处理器模式
    arm官方资料ARMArchitectureReferenceManualARMv7-AandARMv7-Redition.pdf1、处理器模式1.1、特权等级ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(SecureState)和非安全模式(Non-secureState)两个世界。在非安全模式下,存在三种运行特权PL0,PL1和P......
  • MT6739 芯片/处理器规格参数介绍 MTK6739核心板
    MT6739芯片采用了四核Cortex-A53的架构,搭配PowerVRGE8100GPU,整合支持最高1080p30fps的视频编解码器和4GCat-4LTE调制解调器以及高达8MP的摄像头,为智能终端提供了一种高效的解决方案。基于MT6739的智能手机配合400MHz的GPU时钟速度能够支持扎实的图像性能表现和出色的......
  • MT6761 芯片/处理器参数介绍 MTK6761 核心板
    MT6761是联发科推出的一款低功耗、高效能的中端移动处理器。它采用了四核Cortex-A53处理器和IMGGE8300GPU,与其它中端处理器相比,MT6761在CPU和GPU性能方面都有明显提升。在性能方面,MT6761的主频为2.0GHz,采用全新的12nm制程工艺,配备了4GBLPDDR3RAM,这使其处理速度得到了......
  • Cache相关知识整理
    高速缓存的基本原理参考资料:CSAPP相关章节GalleryofProcessorCacheEffects(igoro.com)Makeyourprogramsrunfasterbybetterusingthedatacache-Johnny'sSoftwareLab在物理结构上,Cache由SRAM构成,SRAM比DRAM的速度快一一些,但是造价会更高。高速缓存的结......
  • AWS RDS, ElastiCache
    WhichRDS(NOTAurora)featurewhenuseddoesnotrequireyoutochangetheSQLconnectionstring?   ReadReplicasaddnewendpointswiththeirownDNSname.Weneedtochangeourapplicationtoreferencethemindividuallytobalancethereadload.●Multi......
  • springcache + redis 配置支持缓存ttl失效
    packagetst;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterxml.jackson.annotation.JsonTypeInfo;importcom.fasterxml.jackson.annotation.PropertyAccessor;importcom.fasterxml.jackson.databind.DeserializationFeature;importcom.......
  • S5PV210 | 微处理器启动流程
    S5PV210|微处理器启动流程目录S5PV210|微处理器启动流程S5PV210启动概述S5PV210的启动顺序iROM(BL0)的启动顺序V210启动流程图第一次启动失败时的iROM第二次启动顺序用于引导代码描述的标题信息数据编写校验和示例代码S5PV210启动概述S5PV210支持从多种设备启动,如OneNAN......