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.