So, welcome back, today we are going to be talking about how to go
about building cache coherent systems, so, we've
just come off talking about consistency, and
memory consistency and now we're going to start
talking about, memory coherent systems and talk
about, sort of, the beginning protocols when
you go about building memory coherent systems.
Before that.
Let's go back and review what we worked what
we're working on at the end of last lecture.
So at the end of last lecture, we were talking about
mutual exclusion and one of the we talked about having test and
set and specialized operations that can do, that can give you
mutual exclusion but you could also just use basic loads and stores.
And, we talked about using Decker's algorithm
and, one of the key insights into the
Decker's algorithm is that you have this shared
turn variable here which between the 2 processes,
which are trying to communicate, are trying to lock the same, variable.
Then we went on an expanded this to. Multiple process mutual exclusion.
And this is the sort of the moral equivalent of
a, going to the deli and try and take a ticket.
So you go to the deli, you take a little ticket, and
then someone goes and calls your ticket number, and then you are served.
This is how you can implement multiple people trying to access one resource.
but unlike in a deli where you have let's say
a, a number on the, on the wall which ticks up.
Or you have a, a person behind the deli who calls your number.
Or in a bakery where they call your number.
Instead here we need to do that in some sort of distributing manner.
So in the end process mutual exclusion.
The person who actually finishes being served wakes up the next person.
And as I said, this is a little bit more
complex but you can still do the same idea here.
excuse me, totally with loads and stores.