Other Parts Discussed in Thread: ASH, TDA4VL, TDA4VM, TDA4VH
Hi there,
I'm not sure I fully understand / agree with the resolution posted on the linked question (i.e. "TDA4VH-Q1: OpenVX tivxMemBufferMap/tivxMemBufferUnmap cache consistency problem?")
Sure, A72 as a symmetric multiprocessor is cache coherent itself in that if one core of the A72 CPU writes to memory, its internal cache coherency protocol will ensure that the other cores in the same CPU update their own copies of that data in their own core-local caches, but how is an A72 core supposed to know of changes made to a location of memory made by another processor in the system, say a C7x, except if (a) that memory is uncached, or (b) that A72 core invalidates the cache lines corresponding to that address range?
Consider this scenario: An A72 core has read from memory location 0xABCD and consequently has the corresponding cache line in its local cache. Now, while that particular A72 core will be informed of changes by the other cores on the same A72 CPU, how is it supposed to know that a C7x DSP wrote to location 0xABCD as part of a compute offload to that DSP core, hence making that A72 core's cached copy invalid?
Don't we need a cache invalidation regardless? In a co-processing environment where an A72 is offloading some compute to another processor, such as a DSP core, shouldn't buffer map on the A72 always include a cache invalidation?