访问缓存中已经存在的信息叫做cache hit,访问缓存中不存在的数据叫做cache miss cache引入的潜在问题:内存的访问不一定同编程者预期的一样;一个数据可以存在多个物理位置处 3、Cache内存访问的模型:Memory coherency的术语定义:Point of Unification (PoU), Point of Coherency (PoC), Point of Persistence (PoP),...
中篇:主要介绍ARM特有的inner share和outer share的概念,以及神马是PoU和PoC,还有cache指令的格式。笨叔:ARM64体系结构与编程之cache必修课(中) 下篇:主要介绍MESI协议,怎么去看MESI协议状态图,DMA和cache之间的cache一致性问题,self-modifying code导致的I-cache和D-cache的一致性问题,cache伪共享等问题。 cache一致...
当cache只有一个组,即主存中只有一个地址与n个cache line对应,称为全关联,这又是一个极端的映射方式。刚才直接映射不要把cache分成几大块,而全关联,正好是另外一个极端,就是把cache分成n多个大块,每个大块的大小只有一个cache line那么大。换句话说,这个cache只有一个组,这个组里有n多个cache line。 这种方式和...
什么是PoU?什么是PoC? 什么是cache一致性?业界解决cache一致性都有哪些方法? MESI状态转换图,我看不懂。 什么cache伪共享?怎么发生的,如何避免? DMA和cache为啥会有cache一致性问题? 网卡通过DMA收数据和发数据,应该怎么操作cache? 对于self-modifying code,怎么保证data cache和指令cache的一致性问题?
PoU是一个存储层级的点,data cache, instruction cache和translation table walks看到的都是相同的copy. 那么这个点就是该PE的Point of Unification。 假设一个4核cpu,每个core都有自己的L1 instruction cache和L1 Data cache,所有的core共享L2 cache。在这样的一个系统中,PoU就是L2 cache,只有在该点上,特定PE的...
13.在ARM64处理器中,什么是内部共享和外部共享的高速缓存?什么是PoU和PoC? 14.假设系统中有4个CPU,每个CPU都有各自的一级高速缓存,处理器内部实现的是MESI协议,它们都想访问相同地址的数据a,大小为64字节,这4个CPU的高速缓存在初始状态下都没有缓存数据a。在T0时刻,CPU0访问数据a。在T1时刻,CPU1访问数据a。
什么是PoU?什么是PoC? 什么是cache一致性?业界解决cache一致性都有哪些方法? MESI状态转换图,我看不懂。 什么cache伪共享?怎么发生的,如何避免? DMA和cache为啥会有cache一致性问题? 网卡通过DMA收数据和发数据,应该怎么操作cache? 对于self-modifying code,怎么保证data cache和指令cache的一致性问题?
SYM_FUNC_ALIAS(dcache_clean_inval_poc, __pi_dcache_clean_inval_poc) /* * dcache_clean_pou(start, end) @@ -140,7 +141,7 @@ SYM_FUNC_END(dcache_clean_pou) * - start - kernel start address of region * - end - kernel end address of region */ SYM_FUNC_START_PI(dcache_inva...
_pg_dir msr ttbr0_el1, x1 // load TTBR0 msr ttbr1_el1, x2 // load TTBR1 isb msr sctlr_el1, x0 isb /* * Invalidate the local I-cache so that any instructions fetched * speculatively from the PoC are discarded, since they may have * been dynamically patched at the PoU. ...
cache的组织结构,通常现在的cache都是组相连的方式,就是cache分成了多个路(way),这里路是由英文way这个词之间翻译过来的,应该翻译成块比较合理,其实就是把cach分成了几个块。然后在每个块上,有多个cache line。一个cache的,它的cache line大小是固定的,比如32字节,64字节。那么当你知道了一个块有多大,一个cache...