4.7. Communication Utilization

When two threads share data, the ownership of the cache line is moving between the two threads' respective caches as the two threads access the data. The transfer of ownership takes some time, and one should strive for arranging data and adjust algorithms so that it doesn't occur too frequently.

Similar to fetch utilization and write-back utilization, the Communication utilization measures efficiency. In this case, it measures the percentage of the cache line that is being written by the producing thread and then actually being consumed by the receiving thread. You should arrange data so that all of the cache line gets consumed before the producer writes to the cache line again.

A special case of low communication utilization is known as false sharing (see Section 5.4.1, “False Sharing”), where the two threads don't access any overlapping data.