CI-700 HN‑F implements an invisible cache. It eliminates CMO when performing context switches from cacheable to non-cacheable, how to understand it?
In general, an invisible cache means that it's behaviour is invisible to software and that it is beyond the point of coherency. The implications of this are that things like memory types and shareability might not affect the behaviour of the cache, and software CMOs will not affect it. Usually an implementation specific method is needed to clean / invalidate it.
A way of thinking about it is that it is often the last cache before memory, and so in effect it behaves a bit like main memory is that it could cache and look up all requests regardless of memory attributes.
If the invisible cache does not check the memory attributes, then non-cacheable requests can hit on lines that were previously treated as cacheable. Therefore, you do not need to perform CMOs on the invisible cache when changing the memory type. For a non-invisible cache, non-cacheable requests might not hit on previously cached requests and so you would need to clean the cache as part of the context switch to avoid data consistency issues.