Shared memory systems are multi-port and categorized as follows:

image.png


Shared memory systems can be designed using bus-based or switch-based interconnection networks.

image.png


This explains the rules for keeping data synchronized when multiple processors have their own private caches. If one processor changes a variable, the system needs a policy to ensure the other processors do not accidentally use an old, outdated version.

The lecture breaks this down into two distinct categories:

Cache-Memory Coherence (Updating Global Memory)

this handle the choice regarding a process affect on the global memory

image.png

The Write-Once protocol combines both:

Cache-Cache Coherence (Handling Other Processors' Caches)

this handle the choice regarding a process affect on another process cache

Real shared memory systems combine these approaches to maintain overall coherence, resulting in four possible combinations (e.g., Write-Invalidate with Write-Through, or Write-Update with Write-Back)

image.png

image.png

Some questions may come up to your small brain about consistency at this stage. But don’t worry, dude, we will talk about it in few lines…

Snooping Protocols

image.png

image.png

Snooping protocols are the actual rulebooks that caches use to keep their data synchronized without needing a central manager.

The core idea is simple: every cache constantly "watches" (snoops on) all the traffic traveling across the shared bus to see what the other processors are doing. Data is moved around in chunks called "blocks," and every block is given a specific State (like a status tag) that dictates what is allowed to happen to it.

These states change dynamically whenever a processor experiences a Read-Hit, Read-Miss, Write-Hit, or Write-Miss.

The lecture outlines five specific snooping protocols: