1

I am reading about Gunther's Universal Scalability Law, and one of the concepts used is "Negative returns from incoherency" ( β )

I've seen it described as "the delay for data to become consistent, or cache coherent, by virtue of point-to-point exchange of data between resources that are distributed", but i don't understand what it means

Can someone help me understand by explaining it with other words or by giving examples ?

Yilmaz
  • 35,338
  • 10
  • 157
  • 202
negimaster
  • 65
  • 1
  • 4

1 Answers1

1

Coherence: Let's say you have a multi-threaded application where you have multiple threads executing on multiple processors. They share same main memory but their processor registered memory which is L1,L2 memory cache, they are unique to processor, so they are not shared. If you want a particular variable to have a coherent value between all threads, then you declare that variable volatile(not all programming languages have this). Volatile means, copy of that variable should remain consistent in all processors.

If that variable is modified in one thread, that will force a refresh of that variable in other processors, and memory space as well. Their cache will be also refreshed. Because we changed a variable in one processor that will lead to change in the value of that variable and another processor cache as well. This comes at a performance cost. If we have a lot of variables that are shared and we modify them a lot, this means that in such an application, the coherent cost will be high. So if increasing the number of threads or number of processors in order to increase the throughput, then throughput does not increase but instead, it starts decreasing.

enter image description here

Contention is related to Amdahl's Law: Understanding Amdahl's law

Amdahl's law does not bring down throughput, it flattens but when you have incoherency then throughput will have negative return.

Yilmaz
  • 35,338
  • 10
  • 157
  • 202