Hi, experts:
咨询一个CA7上对L1 DCache的操作问题:
1. CA7集成了32KB L1 DCache
可以对它做:flush/invalidate/clean&invalidate 操作吗?
根据CA7 TRM:好像不能对L1 DCache做这些操作。
2. 如果不能对L1 DCache做上述操作,那么如何实现PoU呢?
根据我的理解:PoU就是将L1 DCache flush到L2 DCache里
best wishes,
Hi,
1.
CA7 可以对L1D进行操作,参考CA7 MPCore trm, 第4.2.8节 Table 4-8 c7 register summary
Data Cache可以被invalidate/clean,其中DCIMVAC(指令)会将dirty line先clean出去再invalidate掉.
hi, yongfeng:
感谢回复!
看了Table 4-8,还有一个疑问:
1. 如何区分是对L1 DCache / L2 DCache做的clean/invalidate operations.
DCIMVAC : DCache invalidate by MVA to PoC,它指的是对L2 DCache吗?
DCCMVAU: Clean DCache Line by MVA to PoU,它指的是对L1 DCache吗?
根据PoU与PoC来区分吗?
hi,
无法直接区分,可以这么理解:
表中的cache并未指明是L1或者是L2, 至于clean/invalidate到哪一cache层次,需要看他们和poc/pou之间的关系。
参考那个table4-8脚注,
PoU = Point of Unification. If BROADCASTINNER is LOW, the PoU is the L1 data cache. If BROADCASTINNER is HIGH then the
PoU is outside of the processor and is dependent on the external memory system..
PoC = Point of Coherence. The PoC is always outside of the processor and is dependent on the external memory system.
针对A7, PoC肯定在L2的下一个层级。
Thanks a lot!