1 00:00:03,066 --> 00:00:08,007 So, what is computer architecture? Computer architecture, we're trying to 2 00:00:08,007 --> 00:00:12,067 take an application, or something that a human wants to do, so for instance, 3 00:00:12,067 --> 00:00:17,052 calculate a spreadsheet, play a video game, play some sort of music, and we want 4 00:00:17,052 --> 00:00:20,026 to figure out how to map it down to physics. 5 00:00:20,026 --> 00:00:25,030 So what do we mean by physics here? Well, physics is, we have in the world we 6 00:00:25,030 --> 00:00:30,008 have particles and they bounce around, they interact, we have photons bouncing 7 00:00:30,008 --> 00:00:35,595 around in the world, and we need somehow translate what humans want to do into what 8 00:00:35,595 --> 00:00:40,440 the physics can do. And one of the problems with this is, this 9 00:00:40,440 --> 00:00:44,590 is a really big gap. So how do you, go from application 10 00:00:44,590 --> 00:00:49,476 directly to physics? You have physics bouncing around the 11 00:00:49,476 --> 00:00:52,159 world. You have mechanical systems. 12 00:00:52,159 --> 00:00:58,253 And without some level of abstraction, it's very hard to go from the application 13 00:00:58,253 --> 00:01:03,077 directly to the physics. Now, in the broader sense, what computer 14 00:01:03,077 --> 00:01:08,067 architecture is trying to do is it's trying to come up with the abstraction and 15 00:01:08,067 --> 00:01:12,069 the implementation layers. That are needed to be able to bridge this 16 00:01:12,069 --> 00:01:15,025 gap. So, we're gonna put a bunch of different 17 00:01:15,025 --> 00:01:18,050 layers in here. And by making smaller abstraction layers 18 00:01:18,050 --> 00:01:22,617 and smaller layers, we're going to be able to solve subsets of these problems and not 19 00:01:22,617 --> 00:01:26,128 have to change everything here in the middle, just one. 20 00:01:26,128 --> 00:01:30,857 Let's say the physics changes or the application changes a little bit, we'll be 21 00:01:30,857 --> 00:01:34,526 able to reuse a lot of the work that we've done along the way. 22 00:01:34,526 --> 00:01:39,514 And computer architecture is the study of these layers, and figuring out how to take 23 00:01:39,514 --> 00:01:43,645 the physics and turn it into applications that humans want. 24 00:01:43,645 --> 00:01:46,526 Now. I wanted to point out that in the natural 25 00:01:46,526 --> 00:01:51,521 world, it's pretty challenging to directly jump from application to physics, but 26 00:01:51,521 --> 00:01:56,427 there's a few examples. So one example I wanted to bring up 27 00:01:56,427 --> 00:02:01,024 actually is the compass. The compass is a nifty little device that 28 00:02:01,024 --> 00:02:05,118 directly takes physics and gets pushed up into an application. 29 00:02:05,118 --> 00:02:10,554 But there's very few other examples. I think book is a okay example of this but 30 00:02:10,554 --> 00:02:15,341 otherwise people build lots of abstraction layers in between here. 31 00:02:15,341 --> 00:02:20,943 And one other thing I wanted to point out here is that we're trying to efficiently 32 00:02:20,943 --> 00:02:25,912 use manufacturing technologies. So what I mean by that is, when physics 33 00:02:25,912 --> 00:02:30,907 changes, or we move to smaller transistors, or we move from, let's say, 34 00:02:30,907 --> 00:02:36,886 silicon to gallium arsenide or some other implementation technology, that changes 35 00:02:36,886 --> 00:02:42,185 the bottom layer here, but we want to still be able to reuse a lot of the other 36 00:02:42,185 --> 00:02:48,049 work that we've done over the years. So, let's take a look at the abstractions 37 00:02:48,049 --> 00:02:52,092 in modern day computing systems. We start off here, physics. 38 00:02:52,092 --> 00:02:58,366 We have fundamental physical laws of how particles interact, and we move up to 39 00:02:58,366 --> 00:03:01,030 devices. So, what do I mean by devices? 40 00:03:01,030 --> 00:03:05,074 We have transistors, and we can build different types of transistors. 41 00:03:05,074 --> 00:03:10,654 Mosfets, BJTs, we can build other, other types of FETs, and we start to build 42 00:03:10,654 --> 00:03:15,838 circuits, bigger circuits out of this, and out of those we go and build gates. 43 00:03:15,838 --> 00:03:20,875 And from gates we can go to RTL, or registered transfer language here, which 44 00:03:20,875 --> 00:03:25,476 is sort of our verilog coding. And then we start to get into what this 45 00:03:25,476 --> 00:03:28,781 course is about, which is different types of architecture. 46 00:03:28,781 --> 00:03:33,589 So there's microarchitecture, which is how you do you go and actually build a 47 00:03:33,589 --> 00:03:38,354 specific implementation of a chip. And then we're, above that we have 48 00:03:38,354 --> 00:03:43,323 instruction set architecture, which gives us some portability on top of that. 49 00:03:43,323 --> 00:03:48,934 And then we get into operating systems and virtual machines, Programming languages, 50 00:03:48,934 --> 00:03:52,527 and algorithms. And then finally we get to the algorithm 51 00:03:52,527 --> 00:03:57,716 the application programmer sitting on top. So in this course, in computer 52 00:03:57,716 --> 00:04:02,328 architecture, we're only gonna be focusing in this three middle layers here, 53 00:04:02,328 --> 00:04:07,314 instruction set architecture, or what I will sometimes refer to as big A computer 54 00:04:07,314 --> 00:04:09,996 architecture. Microarchitecture, or, sometimes what 55 00:04:09,996 --> 00:04:12,716 people call organization, of computing systems. 56 00:04:12,716 --> 00:04:18,282 And, register transfer language and we'll, we'll also overlap a little bit into the, 57 00:04:18,282 --> 00:04:20,768 the abstraction layers above and below here. 58 00:04:20,768 --> 00:04:25,802 So, we'll talk a little bit about some operating system concerns and virtual 59 00:04:25,802 --> 00:04:29,749 machine concerns. And we'll talk a little bit about how the 60 00:04:29,749 --> 00:04:34,607 tran-, the technology and the gates influences the computing system. 61 00:04:34,607 --> 00:04:41,384 So one important point here about computer architecture is it's constantly changing 62 00:04:41,384 --> 00:04:46,087 because different constraints and different applications are changing. 63 00:04:46,087 --> 00:04:50,027 So, people have new applications that they come up with. 64 00:04:50,027 --> 00:04:54,053 They come up with ways, or people come up with different applications. 65 00:04:54,053 --> 00:04:59,003 I now want to have a smart phone. Well, that didn't exist twenty years ago. 66 00:04:59,003 --> 00:05:02,098 And this pushes down different requirements and these different 67 00:05:02,098 --> 00:05:06,075 requirements actually suggest how to change the architecture. 68 00:05:06,075 --> 00:05:11,056 If you, for instance want to do a lot of video processing that can actually 69 00:05:11,056 --> 00:05:16,043 influence your computer architecture so you add specialized instructions to do 70 00:05:16,043 --> 00:05:20,003 video processing. Likewise technology constraints push up, 71 00:05:20,003 --> 00:05:24,067 so as we go to smaller and smaller transistors, we'll say the smaller and 72 00:05:24,067 --> 00:05:29,089 smaller transistors let's say go faster, but the wires go slower, well that's going 73 00:05:29,089 --> 00:05:35,056 to influence your computer architecture. And a lot times new, new technologies make 74 00:05:35,056 --> 00:05:38,096 new architecture possible. So, what do I mean by that? 75 00:05:38,096 --> 00:05:44,011 Well, lets say all of sudden, you get a big bump in transistors, you get twice as 76 00:05:44,011 --> 00:05:47,037 many transistors. Well now, architectures and micro 77 00:05:47,037 --> 00:05:52,052 architectures that didn't use to make sense, start making sense, because you can 78 00:05:52,052 --> 00:05:55,092 for instance fit a lot more computation on one chip. 79 00:05:58,019 --> 00:06:03,085 And, what's, the interesting thing here, is that, computer architecture is not done 80 00:06:03,085 --> 00:06:07,026 in a vacuum. So, computer architecture actually 81 00:06:07,026 --> 00:06:11,027 provides feedback up and down this abstraction layer stack. 82 00:06:11,027 --> 00:06:16,092 So, it will give feedback, and it will actually influence the research directions 83 00:06:16,092 --> 00:06:21,054 that technology looks at. And will influence research directions and 84 00:06:21,054 --> 00:06:25,000 influence different applications that are possible. 85 00:06:25,000 --> 00:06:30,064 So this is not all done in a vacuum, the computer architect actually sits in a very 86 00:06:30,085 --> 00:06:36,027 key location in this abstraction layer stack here, cuz you can push up and push 87 00:06:36,027 --> 00:06:40,808 down, and you're not just forced to work with what you're given, if you will, from 88 00:06:40,808 --> 00:06:44,051 a technology perspective. But that might take a few years. 89 00:06:46,056 --> 00:06:52,004 So let's talk a little bit more about what this class is about, but we'll, we'll do 90 00:06:52,004 --> 00:06:57,006 it by way of a little bit of history. And to put a little bit of a Princeton 91 00:06:57,006 --> 00:07:01,749 connection in here, we're gonna talk computers back in the late '40s, early 92 00:07:01,749 --> 00:07:06,452 '50's, nineteen, 1940s, 1950s. So, here's actually a, a picture of the 93 00:07:06,452 --> 00:07:11,540 IAS, or the Institute for Advanced Study Machine, which was built in the Institute 94 00:07:11,540 --> 00:07:17,170 of Advanced Study, which is maybe about a mile and a half away from this classroom. 95 00:07:17,170 --> 00:07:23,576 And it was designed by Jon Von Goyman, and, and to give a little bit of insight 96 00:07:23,576 --> 00:07:26,982 here. It was first moved in Princeton in 1952, 97 00:07:26,982 --> 00:07:32,375 it was actually started in the late'40's and took them a couple years to get, to 98 00:07:32,375 --> 00:07:36,749 get working. And one of the interesting things here is 99 00:07:36,749 --> 00:07:41,069 that this machine is actually built out of vacuum tubes. 100 00:07:41,069 --> 00:07:44,068 So, everyone thinks about transistors today. 101 00:07:44,068 --> 00:07:50,030 Well, before we had transistors we had little glass tubes that actually looked 102 00:07:50,030 --> 00:07:55,044 like light bulbs, and inside of those there were switches that could be 103 00:07:55,044 --> 00:07:58,036 switched. So, very similar idea to what our 104 00:07:58,036 --> 00:08:04,070 transistor can do, but, instead you had a evacuated glass tube, and you had a little 105 00:08:04,070 --> 00:08:09,468 transmitter, it was a cathode ray tube. And then you had a gate that could open 106 00:08:09,468 --> 00:08:13,080 and close inside of this. So people were building computers long 107 00:08:13,080 --> 00:08:17,068 before transistors, and people were thinking about computer architecture long 108 00:08:17,068 --> 00:08:21,007 before transistors. And people were even thinking about 109 00:08:21,007 --> 00:08:25,798 computer architecture and these sorts of technologies even before vacuum tubes. 110 00:08:25,798 --> 00:08:30,308 So there was electromechanical systems, a good example of this actually was 111 00:08:30,308 --> 00:08:34,456 originally in phone systems. They had these cool electromechanical 112 00:08:34,456 --> 00:08:37,215 switches. So when you take your old rotary phone and 113 00:08:37,215 --> 00:08:41,405 you sort of turn it and then it goes, tick, tick, tick, tick, tick, tick, tick, 114 00:08:41,405 --> 00:08:44,071 tick, tick. What that's actually doing is, it's 115 00:08:44,071 --> 00:08:48,833 sending pulses which are turning a mechanical, a little mechanical arm inside 116 00:08:48,833 --> 00:08:52,736 of a relay system, and people built computers out of those electro-mechanical 117 00:08:52,736 --> 00:08:55,511 relays. So you can have switches that turn, change 118 00:08:55,511 --> 00:08:57,945 switches, similar sorts of ideas to transistors. 119 00:08:57,945 --> 00:09:01,647 And even before that people had looked at building mechanical systems. 120 00:09:01,647 --> 00:09:04,676 So there's mechanical adding machines for instance. 121 00:09:04,676 --> 00:09:08,018 And now of days we, of course, have transistors. 122 00:09:08,018 --> 00:09:14,313 So, it was computing then, in the fifties and if we fast forward to today, we have 123 00:09:14,313 --> 00:09:20,183 lot, computers look very different. In this figure here, ya know, this thing 124 00:09:20,183 --> 00:09:25,163 was the size of a room. Pretty big room TV scale sort of, a person 125 00:09:25,163 --> 00:09:31,065 is maybe yea tall in this figure thing. It's a, sort of normal-sized room, but, 126 00:09:31,065 --> 00:09:36,284 still sort of room sized. But today we have lots of different 127 00:09:36,284 --> 00:09:39,841 applications. And computing looks very different. 128 00:09:39,841 --> 00:09:43,547 So, we have computing, let's say, in small systems. 129 00:09:43,547 --> 00:09:48,219 So we have a little sensor network-, networks, and little sensor nodes 130 00:09:48,219 --> 00:09:50,590 distributed. We have fancy cameras. 131 00:09:50,590 --> 00:09:54,629 We have smartphones. We have mobile audio players and iPods. 132 00:09:54,629 --> 00:09:59,564 We have laptops, like my laptop here. We have self-driving cars, we have big 133 00:09:59,564 --> 00:10:04,516 servers, we have Xboxes, and there's a lot of variety now in what computing systems 134 00:10:04,516 --> 00:10:07,423 look like. So, the influence of this technology, 135 00:10:07,423 --> 00:10:10,609 computer architecture, has been very, very broad. 136 00:10:10,609 --> 00:10:16,397 And we even go on to seeing things like routers, flying, unmanned autonomous 137 00:10:16,397 --> 00:10:19,486 vehicles. We have GPS's, which are little computers 138 00:10:19,486 --> 00:10:25,123 that can basically fit on your wrist these days and tell you exactly where you are. 139 00:10:25,123 --> 00:10:29,635 E books, tablets, set-top boxes and the list goes on and on and on. 140 00:10:29,635 --> 00:10:34,349 And what, what, I want to get across here is that computer architecture has a very 141 00:10:34,349 --> 00:10:37,744 rich history. And this history is continuing and it's 142 00:10:37,744 --> 00:10:42,191 very relevant today. So we're not studying something which no 143 00:10:42,191 --> 00:10:46,285 one cares about anymore. People are sitting there sort of ready to 144 00:10:46,285 --> 00:10:48,828 get the next generation computer architecture. 145 00:10:48,828 --> 00:10:53,033 People, and, and it used to be you know, you want your faster desktop computer. 146 00:10:53,033 --> 00:10:57,843 And that may not be as important today, but what is important is people want their 147 00:10:57,843 --> 00:11:00,766 faster smartphone. They want to enable voice recognition on 148 00:11:00,766 --> 00:11:03,475 the go. They want to be able to, in scientific 149 00:11:03,475 --> 00:11:08,178 applications, they want to build a model, some health system that's really complex, 150 00:11:08,178 --> 00:11:11,418 that you weren't able to do before. So, it continues on and on. 151 00:11:11,418 --> 00:11:14,526 It is very relevant today, and it has a very rich history. 152 00:11:14,526 --> 00:11:19,126 In this course we're gonna talk a little bit about the history, we'll mostly focus 153 00:11:19,126 --> 00:11:21,975 on the technology. Sometimes when people teach computer 154 00:11:21,975 --> 00:11:25,878 architecture classes, they have much more emphasis on the history. 155 00:11:25,878 --> 00:11:31,278 This class, we're gonna Touch on history a little bit, but more focused on the, on 156 00:11:31,278 --> 00:11:43,747 the technology considerations. So here's a chart that's from Hennessy and 157 00:11:43,747 --> 00:11:51,406 Patterson's Computer Architecture, or A Quantitative Approach, and what this graph 158 00:11:51,406 --> 00:11:58,674 is trying to show is, is something very fundamental to computer architecture, and 159 00:11:58,674 --> 00:12:05,238 it's what's been driving our industry. So what we see here is we see different 160 00:12:05,238 --> 00:12:12,074 processor designs plotted on a log plot. So this is ten, 100, 1000. This is a log 161 00:12:12,074 --> 00:12:20,001 plot and it says performance versus years. So, if you look at this, this plot, you'll 162 00:12:20,001 --> 00:12:24,700 see that, well this roughly looks like a straight line, and a straight line on a 163 00:12:24,700 --> 00:12:28,065 log plot is an exponential increase in performance. 164 00:12:28,065 --> 00:12:32,051 So, we've seen computing going up exponentially faster. 165 00:12:32,051 --> 00:12:37,080 And this is a, a really fundamental to driving what's been going on in our 166 00:12:37,080 --> 00:12:41,073 industry and why computer architecture is so important. 167 00:12:41,073 --> 00:12:46,038 And I do want to say that, you know, this exponential increase is, comes from two 168 00:12:46,038 --> 00:12:49,026 things. It's not all computer architects, I'd love 169 00:12:49,026 --> 00:12:53,068 to able to sit, stand here and say, "we did all this." Well, no, a fair amount of 170 00:12:53,068 --> 00:12:56,056 this is from getting, better, better technology. 171 00:12:56,056 --> 00:13:01,051 What I mean that is the, lower down layers and the implementation technology, like 172 00:13:01,051 --> 00:13:05,057 the transistor technologies. And some of it is from having better and 173 00:13:05,057 --> 00:13:09,075 better computer architecture. And what is really important here to note 174 00:13:09,075 --> 00:13:12,070 is even if you have better and better transistors. 175 00:13:12,070 --> 00:13:18,014 A lot of times what happens if you look at this graph is what's happening is you're 176 00:13:18,014 --> 00:13:22,034 getting more transistors, but those transistors are not necessarily 177 00:13:22,034 --> 00:13:26,029 exponentially faster. So, what computer architects have to do is 178 00:13:26,029 --> 00:13:31,049 we need to figure out how to take buckets and buckets of more transistors and turn 179 00:13:31,049 --> 00:13:36,000 them into more performance. And that's what this is many times called 180 00:13:36,000 --> 00:13:40,044 is it's called Moore's Law. If you've heard that term before, what it 181 00:13:40,044 --> 00:13:45,860 is, is we're trying, Moore's, Gordon Moore said that every eighteen months to two 182 00:13:45,860 --> 00:13:50,633 years, you're going to get twice as many transistors which, you can have for the 183 00:13:50,633 --> 00:13:53,815 same amount of dollars. That was what was originally said. 184 00:13:53,815 --> 00:13:58,195 People sort of transformed that now into meaning your computer's gonna get twice as 185 00:13:58,195 --> 00:14:01,234 fast every year. That's not what, Gordon Moore originally 186 00:14:01,234 --> 00:14:03,478 actually said. He said he can get twice as many 187 00:14:03,478 --> 00:14:05,552 transistors for a certain amount of dollars. 188 00:14:05,552 --> 00:14:10,080 And people have also sometimes taken this to mean that you get twice as many 189 00:14:10,080 --> 00:14:13,941 transistors on a chip every year. It's not quite what he said, but close 190 00:14:13,941 --> 00:14:18,547 enough approximation. And when, I don't quite have the graph 191 00:14:18,547 --> 00:14:22,425 here. But if you look at computing in general 192 00:14:22,425 --> 00:14:27,304 across, this, this is all across transistor based technologies. 193 00:14:27,304 --> 00:14:33,101 But if you go farther back into the past, you can actually plot other technologies, 194 00:14:33,101 --> 00:14:37,409 like vacuum tube technologies, and relay based technologies. 195 00:14:37,409 --> 00:14:40,937 And it also fits on this, this graph relatively well. 196 00:14:40,937 --> 00:14:45,831 So sort of, if you continue down here, you're gonna see vacuum tubes show up. 197 00:14:45,831 --> 00:14:50,449 And it's sort of still on this exponentially increasing curve. 198 00:14:50,449 --> 00:14:55,303 Okay, so let's look at, there's two inflection points in this graph that we 199 00:14:55,303 --> 00:14:58,345 wanna look at. First one's right here, you can see that 200 00:14:58,345 --> 00:15:01,853 the slope changes a little bit. Well, what, what happened here? 201 00:15:01,853 --> 00:15:06,394 This was the introduction of reduced instruction set computers, or risk 202 00:15:06,394 --> 00:15:09,483 computers. So we got a little bit of a, a crank up 203 00:15:09,483 --> 00:15:12,441 there when people came out with the first risk. 204 00:15:12,441 --> 00:15:19,318 And, another thing you notice is, this graph keels over a little bit here, and, 205 00:15:19,318 --> 00:15:25,416 we are gonna be talking a lot about this in this course, is, what happens or why, 206 00:15:25,416 --> 00:15:29,071 did this happen? So, what, what happened here? 207 00:15:29,071 --> 00:15:36,036 Well, sequential performance, so this is the performance of a single program; was 208 00:15:36,036 --> 00:15:42,008 getting faster exponentially. But then, I don't know, depending on who 209 00:15:42,008 --> 00:15:45,087 you ask. I like to use 2005 as the number but 210 00:15:45,087 --> 00:15:50,633 somewhere between 2003 and 2007, sequential processor performance started 211 00:15:50,633 --> 00:15:56,763 to, to really have a, a problem. But overall performance of your processor, 212 00:15:56,763 --> 00:16:01,374 still continuous to go up today. And what happened is we had to move to 213 00:16:01,374 --> 00:16:04,827 multi-core processors or multiple cores on a single chip. 214 00:16:04,827 --> 00:16:10,530 And hopefully, the hope is, that this graph will continue on here with multiple 215 00:16:10,530 --> 00:16:15,742 cores, If we can figure out how we can effectively paralyze our programs, versus 216 00:16:15,742 --> 00:16:19,012 our sequential performance tapering, tapering off. 217 00:16:19,012 --> 00:16:24,051 Cuz it would be very harmful to computer architecture and computing industry if all 218 00:16:24,051 --> 00:16:28,460 of a sudden our computers stopped getting faster, no one would be buying new 219 00:16:28,460 --> 00:16:29,062 computer chips.