对于set-based 和 way-based 的clean 和invalidate, 对应的操作通常是在特定级别的cache上执行的. 对于使用虚拟地址的操作, 系统架构定义了两个点:POC和POU
原文详见:https://developer.arm/documentation/den0024/a/Caches/Point-of-coherency-and-unification
Point of Coherency (PoC).
对于特定的地址, PoC是保证所有可以访问内存的观察者(例如内核、DSP或DMA引擎)看到内存位置的相同副本的点。通常是主存。
Point of Unification (PoU)
一个core的PoU ,就是保证icache、dcache和 translation table walks 看到的同一个地址副本的点.举例来讲:a unified level 2 cache would be the point of unification in a system with Harvard level 1 caches and a TLB for caching translation table entries. 如果没有外部cache,那么主存将是Point of Unification.
PoU和PoC的区别
有一个wiki对这一块的介绍非常清晰,大家可以参考:https://blog.csdn/dai_xiangjun/article/details/120199782
PoC是系统的一个概念,和系统配置相关,包含GPU,CPU,DMA等有能力访问内存的设备,我们称为观察者。例如,Cortex-A53可以配置L2 cache和没有L2 cache,可能会影响PoU的范围。
图1:
此图中没有集成L2 cache,只有一个Core和I/D cache TLB,所以PoU等于PoC
图2:
站在core1上看集成了L2 cache,包含core,I/D cache TLB L2 cache组成了PoU for inter share
站在系统上看,包含了core1、core2和系统内存,整体组成了PoC
图3:
系统架构包含了两个cluster组成,每个cluster包含了L1、L2 cache,可以独立看成一个PoU。两个Cluster共享了L3 cache和系统内存,则可以是PoC
更多推荐
Point of coherency (PoC)and Point of unification(PoU)
发布评论