A multiprocessor requires coherence in order to synchronize the caches. However not all data requires coherence. If data is not shared with another task, it does not require coherence.
If we create an instruction that identifies data that is not shared with other tasks, then we have identified data that does not require coherence.
Step 1 - We identify non-shared program data with a new memory allocation instruction. This data does not require coherence. This immediately reduces coherence. (Fig. 1 in JCST article below.) Coherence occurs on every write and consists of both cache invalidation and write-through.
Step 2 - The second step handles shared data in a manner that also does not require coherence. This completely eliminates coherence.
No comments:
Post a Comment