笨叔:ARM64体系结构与编程之cache必修课(中)

第三季视频课程ARM64体系结构与编程之cache基础知识(1)

为什么系统软件人员要深入了解cache?

在一个系统中,cache无处不在,对于一个系统编程人员来说,你无法躲藏。下图是一个经典的ARM64系统的架构图,由Corte-A72和Cortex-53组成了大小核架构,每个CPU核心都有L1 cache,每个cluster里共享一个L2 cache,另外还有Mali GPU和DMA外设。

图片

对于系统软件人员,下面几个常常疑惑的问题:

  1. cache的内部组织架构是怎么样的?能否画出一个cache的layout图?什么是set,way?

  2. 直接映射,全关联和组相联之间有什么区别?优缺点是啥?

  3. 重名问题是怎么发生的?

  4. 同名问题是怎么发生的?

  5. VIPT会不会发生重名问题?

  6. 什么是inner shareability 和outer shareability?怎么区分?

  7. 什么是PoU?什么是PoC?

  8. 什么是cache一致性?业界解决cache一致性都有哪些方法?

  9. MESI状态转换图,我看不懂。

  10. 什么cache伪共享?怎么发生的,如何避免?

  11. DMA和cache为啥会有cache一致性问题?

  12. 网卡通过DMA收数据和发数据,应该怎么操作cache?

  13. 对于self-modifying code,怎么保证data cache和指令cache的一致性问题?

所以,Cache这个玩意,对我们系统编程人员来说,非常重要。Cache没有理解好,或者没有完全搞透了,对系统编程影响很大,有时候我们在编程的时候,一行代码小小的改动可能会影响整个系统的性能,所以,我是建议系统程序员有必要把cache这玩意好好系统的学一学。

笨系列文章主要源自第三季《arm64体系结构与编程》视频课程,大概会有上下两篇:

上篇:介绍cache相关的背景知识,例如什么是cache,cache的layout结构图,cache的层级,VIPT/PIPT/VIVT,cache的重名和同名问题,cache的策略等。

中篇:主要介绍ARM特有的inner share和outer share的概念,以及神马是PoU和PoC,还有cache指令的格式。为什么会有cache一致性问题?arm公司对cache一致性问题的解决方案的演进。cache一致性问题业界常用的解决方案。

下篇:主要介绍MESI协议,怎么去看MESI协议状态图,DMA和cache之间的cache一致性问题,self-modifying code导致的I-cache和D-cache的一致性问题,cache伪共享等问题。

inner share和outer share

Inner 和outer shareability是arm提出来的概念。很重要的一点,大家先要知道,也就是只有normal memory的内存属性的内存才能设置inner 和outer shareability,device memory是不能设置shareability的。

怎么去区分inner share还是outer share呢,arm手册里讲了,不同的SOC设计有不同的区分方法,不过有一个通用的规则:inner share通常是CPU IP集成的caches,包括CPU IP集成的L1 data cache和L2 cache,而outer share是通过总线连接到cache,比如外接的L3 cache等。

下面这个图,比较直观。这个图,虚线分成了两部分,左边都是inner share,右边都是outershare。左边表示是CPU IP集成的cache,上面的cores集成了L1和L2cache,而下面的core集成了L1 cache,那虚线框出来的都是inner share。我们再来看虚线左边,通过总线外接了L2 cache或者L3 cache,这边都是outer share。

在armv8.6手册里,在B2.7.1章里有一段话对inner share和outer share描述。

在这里的example B2-1里,举了一个例子,说在一个在一个2 cluster的系统

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值