基础知识
一个经典的arm64体系结构处理器系统包含了多级的高速缓存。

如上图每个CPU内核都有自己的L1高速缓存。L1高速缓存采用分离的两部分高速缓存。d-cache表示L1数据高速缓存, i-cache表示指令高速缓存。每个CPU内核共享一个L2 高速缓存,L2高速缓存采用混合的方式,不再区分指令和数据cache,此时还外接了一个扩展的L3高速缓存。
cache工作方式

处理器在访问存储器时,会把地址同时传递给TLB(Translation Lookaside Buffer)和cache。TLB是一个用于存储虚拟地址到物理地址转换的小缓存,处理器先使用EPN(effective page number)在TLB中进行查找最终的RPN(Real Page Number)。如果这期间发生TLB miss,将会带来一系列严重的系统惩罚,处理器需要查询页表。假设这里TLB Hit,此时很快获得合适的RPN,并得到相应的物理地址(Physical Address,PA)。
同时,处理器通过cache编码地址的索引域(Cache Line Index)可以很快找到相应的cache line组。但是这里的cache block的数据不一定是处理器所需要的,因此有必要进行一些检查,将cache line中存放的地址和通过虚实地址转换得到的物理地址进行比较。如果相同并且状态位匹配,那么就会发生cache命中(Cache Hit),那么处理器经过字节选择和偏移(Byte Select and Align)部件,最终就可以获取所需要的数据。如果发生cache miss,处理器需要用物理地址进一步访问主存储器来

本文详细介绍了ARM64架构处理器系统的缓存结构及工作原理,包括L1、L2和L3缓存的特点,缓存地址编码,以及VIVT、VIPT和PIPT三种访问方式的区别和优缺点。
最低0.47元/天 解锁文章
160





