ARM64处理器缓存原理

400 篇文章 160 订阅

ARM64处理器缓存原理

2021-08-09 23:19:28

1. 处理器缓存(缓存和内存之间的区别)

        缓存是静态随机访问存储器(SRAM),访问速度接近于处理器的速度,但是集成度低,和内存相比,在容量相同的情况下体积大。内存是动态随机访问存储器(DARM),访问速度慢,但是集成度高,和缓存相比,在容量相同的情况下体积小。

        平时我们讲多级缓存:一级缓存(集成在处理器内部,离处理器最近,容量小,访问时间是1个时钟周期);二级缓存(可能在处理器内部或者外部,容量更大,访问时间是大约10个时钟周期);高端处理器有三级甚至四级缓存。在SMP系统中,处理器每个核都有独立一级缓存,所有核共享二级缓存。

2.缓存结构

        我们平时所看到32KB四路组相连缓存(32K-4-way set associative cache),缓存结构如下:

          32KB-4路组相连缓存:缓存由4个子缓存并联组成,四路并联,四路容量和32KB,每路容量是8KB。

缓存行的标签通常是从物理地址生成的,索引可能从物理地址或虚拟生成,根据索引的生成方式把缓存分为两类:

        a. 把从物理地址生成索引和标签的缓存称为物理索引物理标签缓存(PIPT,Physcally Indexed Physically Tagged)。

        b. 把 从虚拟地址生成索引、从物理地址生成标签的缓存称之为虚拟索引物理标签缓存(VIPT,Virtually Indexed Physically Tagged)。

        比如2个进程共享一物理页,一个物理地址被映射到两虚拟地址。假设页长度为4KB,缓存中每路容量为8KB,缓存行长度为32字节。

         缓存行的字节偏移是虚拟地址的第0-4位,索引是虚拟地址的第5-12位。当缓存中每路的容量大于页长度的时候,会出现缓存别名问题。如果缓存中每路的容量小于或等于页长度,那么不会出现缓存别名问题。

        对于可写的数据,缓存别名问题的危害性:如果修改一个缓存行中的数据,但另一个缓存行的数据依然是旧的,将导致两个虚拟地址读到数据不同,对于指令和只读数据,缓存别名问题没有危害。

        软件可以规避缓存别名问题,把共享内存映射到进程的虚拟空间的时候,如果分配虚拟内存区域的起始地址是缓存中每路容量的整数倍,就可以规避缓存别名问题。

ARM64处理器架构的指令缓存有三种类型:PIPT缓存、VPIPT和VIPT

3.缓存策略(缓存分配策略)
 

a.写分配(weite allocation):假设处理器写数据的时候没有命中缓存行,那么分配一个缓存行,然后读取数据并填充缓存行,接着把数据写到缓存行。

b.读分配(read allocation):如果处理器读数据的时候没有命中缓存行,那么分配一个缓存行。

缓存更新有2种策略:

a.写回(write-back):处理器写数据的时候,只更新新缓存,把缓存行标记为脏,只在缓存行被替换或被程序清理时候更新内存。

b.写透(write-through):处理器写数据的时候,同时更新缓存和内存,但不会把缓存行标记为脏。

集成在处理器内部缓存使用内存属性,外部缓存使用外部属性,具体使用如下:

4.内核在什么环境下才需要维护缓存 

a.内核修改或者删除也表的时候,需要冲刷缓存;

b.内核使用内核虚拟地址修改进程的物理页,为路避免产生内核虚拟地址和用户虚拟地址之间的缓存别名问题,需要冲刷缓存。

c.和外围设备交互时,处理器写数据到DMA区域的内存块,然后通过设备外围设计的控制器上的控制寄存器发生命令,外围设备通过DMA控制器从物理内存读取数据。

5.ARM64处理器支持3种缓存操作

a.使缓存失效:清除缓存行的有效位。

b.清理缓存行:首先把标记为脏的缓存行里面的数据写到下一级缓存或内存,然后清楚缓存行的有效位。只适用于使用写回策略的数据缓存。

c.清零:把缓存里面的一个内存块清零,不需要先从内存读取数据到缓存,只适用数据缓存。

6.ARM64系统架构的内存如何flush_icache_range,此函数从指令缓存冲刷一个虚拟地址范围。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值