In contrast, schemes called dynamic coherence checks have been proposed that do allow multiple copies of data to be maintained in multiple private caches. Whenever a read or write operation to memory is executed, certain validity checks are performed in the cache and/or main memory in order to ensure that coherence is preserved. Such dynamic coherence checks are quite complex and may themselves lead to performance degradations. For more on dynamic coherence checks, refer to Hwang and Briggs