Abstract:
In a multi-core system, each core has its own local cache, which stores copies of data from the main memory. In a single program, different threads might run on separate cores to perform parallel tasks. These threads could be working on different aspects of the same problem and likely share the same data. When multiple cores must work with the same data, coherency mechanisms ensure that all cores see a consistent view of that data. Directory-based coherence is commonly used in Network architectures to maintain data coherency between the cores. Directory protocols were originally developed to address the lack of scalability of snooping protocols. The aim is to establish the proof of concept of Cache coherence protocols - improving the execution time of programs in systems trying to exploit Multi-threaded workloads. We shall see how coherence requests, in theory, get translated during implementation, starting with an unsophisticated protocol. We shall go over the need for coherence, the thought processes behind the protocol, the design of various components and their implementation, and finally, the validation of the designs.