1
00:00:03,570 --> 00:00:07,300
So, welcome back, today we are going to be
talking about how to go

2
00:00:07,300 --> 00:00:10,620
about building cache coherent systems, so,
we've

3
00:00:10,620 --> 00:00:13,349
just come off talking about consistency,
and

4
00:00:13,349 --> 00:00:15,508
memory consistency and now we're going to
start

5
00:00:15,508 --> 00:00:18,570
talking about, memory coherent systems and
talk

6
00:00:18,570 --> 00:00:20,512
about, sort of, the beginning protocols
when

7
00:00:20,512 --> 00:00:23,110
you go about building memory coherent
systems.

8
00:00:23,110 --> 00:00:24,020
Before that.

9
00:00:24,020 --> 00:00:26,330
Let's go back and review what we worked
what

10
00:00:26,330 --> 00:00:28,910
we're working on at the end of last
lecture.

11
00:00:28,910 --> 00:00:31,330
So at the end of last lecture, we were
talking about

12
00:00:31,330 --> 00:00:36,290
mutual exclusion and one of the we talked
about having test and

13
00:00:36,290 --> 00:00:39,190
set and specialized operations that can
do, that can give you

14
00:00:39,190 --> 00:00:43,500
mutual exclusion but you could also just
use basic loads and stores.

15
00:00:43,500 --> 00:00:46,940
And, we talked about using Decker's
algorithm

16
00:00:46,940 --> 00:00:48,810
and, one of the key insights into the

17
00:00:48,810 --> 00:00:51,400
Decker's algorithm is that you have this
shared

18
00:00:51,400 --> 00:00:54,540
turn variable here which between the 2
processes,

19
00:00:54,540 --> 00:01:01,000
which are trying to communicate, are
trying to lock the same, variable.

20
00:01:01,000 --> 00:01:06,834
Then we went on an expanded this to.
Multiple process mutual exclusion.

21
00:01:06,834 --> 00:01:09,020
And this is the sort of the moral
equivalent of

22
00:01:09,020 --> 00:01:12,564
a, going to the deli and try and take a
ticket.

23
00:01:12,564 --> 00:01:15,180
So you go to the deli, you take a little
ticket, and

24
00:01:15,180 --> 00:01:19,770
then someone goes and calls your ticket
number, and then you are served.

25
00:01:19,770 --> 00:01:24,809
This is how you can implement multiple
people trying to access one resource.

26
00:01:26,210 --> 00:01:28,840
but unlike in a deli where you have let's
say

27
00:01:28,840 --> 00:01:31,920
a, a number on the, on the wall which
ticks up.

28
00:01:31,920 --> 00:01:35,870
Or you have a, a person behind the deli
who calls your number.

29
00:01:35,870 --> 00:01:37,740
Or in a bakery where they call your
number.

30
00:01:37,740 --> 00:01:40,880
Instead here we need to do that in some
sort of distributing manner.

31
00:01:40,880 --> 00:01:44,830
So in the end process mutual exclusion.

32
00:01:44,830 --> 00:01:49,260
The person who actually finishes being
served wakes up the next person.

33
00:01:49,260 --> 00:01:51,420
And as I said, this is a little bit more

34
00:01:51,420 --> 00:01:53,890
complex but you can still do the same idea
here.

35
00:01:55,076 --> 00:01:57,990
excuse me, totally with loads and stores.

