当前位置:网站首页>ARM 的 缓存一致性

ARM 的 缓存一致性

2022-06-21 23:14:00 __pop_

简介

缓存一致性 关注的是 "同一个数据""高速缓存1""高速缓存2" ..."内存" 中的 一致性 问题

存在 不一致的 这种问题 ,该如何解决.有三种解决方案:
1. 关cache,不用cache
2. 硬件提供指令		,软件维护缓存一致性
3. 硬件维护缓存一致性 ,软件不需要任何操作

arm 采用  23

single core的 缓存一致性问题

DMA 和 高速缓存 一致性问题

问题描述
解决方案

自修改代码问题

问题描述
指令高速缓存和数据高速缓存不一致
数据高速缓存为新代码,指令高速缓存为老代码. 导致无法执行新代码
解决方案
2. 硬件提供指令,软件维护缓存一致性

软件调用高速缓存维护指令 : dc ic 

修改页表

问题描述
tlb 保存的数据过时,导致索引到错的物理地址
解决方案
2. 硬件提供指令,软件维护缓存一致性
刷新tlb

multi core 新增问题

cpu0 和 cpu1 一致性问题

问题描述
cpu0    读 了内存地址A的值 , 缓存到 cpu0 的 l1 cache , 并修改了 该值 // 造成了内存地址A的两个副本
之后
cpu1    要读内存地址A的值 , 从哪里读


解决方案
3. 硬件维护缓存一致性,软件不需要任何操作

什么硬件:
	基于 MESI 协议 的 SCU(Snoop control unit)

multi cluster 新增问题

cluster0 和 cluster1 一致性问题

问题描述
cluster0    读 了内存地址A的值 , 缓存到 cluster0    的 l1 cache , 并修改了 该值 // 造成了内存地址A的两个副本
之后
cluster1    要读内存地址A的值 , 从哪里读


解决方案
3. 硬件维护缓存一致性,软件不需要任何操作

什么硬件:
	多cluster:基于 (AMBA4)ACE 协议 的 CCI控制器
	众cluster:基于 (AMBA5)CHI 协议 的 CCN控制器
原网站

版权声明
本文为[__pop_]所创,转载请带上原文链接,感谢
https://blog.csdn.net/u011011827/article/details/125400152