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.
