00:00:00
The CPU short for central processing unit is like the brain of the computer and once you understand how it works
00:00:05
You'll understand the computer as well. Let's remove the cover of the CPU and zoom in to see what happens inside
00:00:12
there are lots of different wires carrying information around the CPU this particular CPU is called the
00:00:19
6502 and was used in computers like the Apple 2 and the Commodore 64 as well as in the original Nintendo Entertainment System
00:00:26
This simulation of the 6502 can be found online at visual 6502 org in
00:00:33
Every CPU there is a particular wire that turns on and off at a steady rate to help keep everything in sync
00:00:40
That wire is called the clock and the clock in this simulation is turning on about twice a second
00:00:46
Modern CPUs are measured in gigahertz
00:00:48
giga meaning billion in hertz meaning times per second so the clock in modern cpus turns on several billion times per second
00:00:57
That speed is what allows cpus to do very complicated things very quickly
00:01:02
However, what the CPU does during each clock tick is actually very simple and something. We'll look at more in this video
00:01:09
For now we'll zoom back out and put the cover back on
00:01:12
The CPU and your computer might be manufactured by a company like Intel or AMD
00:01:18
But the type of CPU we're going to look at today is called the Scott CPU
00:01:23
The Scott CPU doesn't actually exist except as a design in a book called
00:01:27
But how do it know by john scott the design of the scott cpu is copyrighted
00:01:32
And it's being used in this video with john's permission
00:01:35
The book is available at but how do it no com?
00:01:39
This is a great book that goes through each of the components in the CPU very slowly without using a lot of overly technical
00:01:46
Jargon, if you've been looking for a book that explains how a computer works. I would highly recommend this one
00:01:52
So let's flip the CPU over and look underneath
00:01:55
You'll see a lot of pins sticking out that allow the CPU to take in information and send it back out
00:02:01
The CPU fits into what's known as the motherboard the motherboard allows all the components in the pewter to connect to each other
00:02:08
So we'll flip the CPU back over and plug it into the motherboard on
00:02:12
The right of the motherboard is a place for something called RAM RAM is short for random access memory
00:02:19
And it just contains all the data that is being processed by the CPU
00:02:23
Let's learn a little bit more about RAM by looking at how the CPU and RAM interact
00:02:28
For now well remove the wires on the left and move the motherboard over to make room for the RAM chip
00:02:34
Ram consists of a list of addresses and at each of those addresses is a piece of data
00:02:40
the CPU normally requests and processes each piece of data from RAM in order one after the other
00:02:46
However, if the CPU is instructed to pull data out of order it can do so that is why it's called random access memory
00:02:54
The data can be accessed randomly if it needs to be although normally. It's accessed in order
00:02:59
When the computer first starts running a program it sends an address to RAM to begin retrieving that program
00:03:06
The RAM address just consists of a series of ones and zeros representing on and off wires
00:03:12
Ram doesn't do anything with that address though until the CPU also turns on the set or the enable wire
00:03:18
If the enable wire is turned on Ram automatically sends whatever piece of data is at that address back to the CPU
00:03:26
That data is then processed by the CPU accordingly
00:03:30
Once the CPU is finished processing that piece of data it then sends another address to Ram
00:03:36
Turns on the enable wire and gets the next piece of data from Ram this process happens over and over again inside the computer
00:03:43
If the CPU needs to save data to Ram it outputs an address
00:03:48
Output some data, and then turns on the set wire
00:03:51
The RAM will then overwrite the data at that address with the new data
00:03:56
But what is that data inside Ram because it just looks like a bunch of ones and zeros
00:04:01
Well, it's made up of different things some of the most important pieces of data in RAM are the instructions
00:04:08
Instructions just tell the CPU to do different things
00:04:11
There are also numbers inside that data. These are numbers that you might want to add together compare or simply process in some way
00:04:20
Another thing and this is kind of weird that is in the data is addresses at
00:04:24
Particular memory addresses in RAM the data itself is also an address
00:04:29
These addresses can be used for various things
00:04:32
For instance if you want to output a number to an external device you have to know the address of that particular device
00:04:38
Do you want to send data to the printer, or do you want to send it to the monitor for instance?
00:04:43
There are also letters stored in RAM if you want to show some text on the screen
00:04:47
You would actually store it as a bunch of ones and zeros and RAM
00:04:51
Each letter is stored as a particular combination of ones and zeros according to a character code these character codes are arbitrary
00:04:59
Someone just decided that this is a lowercase a and this is an uppercase G for instance
00:05:05
So that's what's actually in the data inside Ram now
00:05:09
Let's go back to seeing the data is just a bunch of ones and zeros and we'll now move the RAM chip
00:05:14
into the RAM socket on the motherboard
00:05:16
We'll then group the RAM addresses and data together
00:05:19
Pull the CPU out of the motherboard and look at what's called the instruction set of the CPU
00:05:25
As we saw earlier some of the pieces of data in RAM are instructions and each CPU has its own set of instructions that it
00:05:33
Understands so there might be a load instruction which loads a number from RAM into the CPU
00:05:40
After a couple of these load instructions there might be an add instruction that adds these two numbers together
00:05:46
After an add instruction might be a store instruction, which saves the result of that addition back out to RAM to be used later on
00:05:53
There might also be a compare instruction after some load instructions, which compares two numbers together to see which one is larger
00:06:01
or if they are the same
00:06:03
the compare instruction can be very useful when used in conjunction with what's called a jump if
00:06:08
Instruction as we saw earlier the CPU generally requests each piece of data from RAM in order one after the other
00:06:17
Sometimes though the programmer wants to jump to an out of order ram address to process some other instructions and memory
00:06:23
The jump if instruction checks to see if a certain condition is true before it jumps
00:06:29
It uses the results of the compare instruction to make this decision
00:06:33
There is also a regular job instruction that jumps no matter what?
00:06:38
finally there is an out instruction and an in instruction these will output data to an external device like a monitor or
00:06:46
Input data from an external device like a keyboard
00:06:50
These two instructions are often used in conjunction with an address like we talked about earlier
00:06:55
There are some other instructions in the CPUs instruction set that these are some of the more commonly seen ones
00:07:02
So as we saw the data in RAM consists of things like instructions
00:07:07
numbers addresses and letters
00:07:10
So let's go through a program. That would use this instruction set to play a guessing game
00:07:15
So it would load a number like nine into the CPU
00:07:19
Let's say that the programmer decided that that was the right answer
00:07:22
So he went ahead and put that number into RAM and then comes an end instruction to retrieve the user's guess after
00:07:29
The in instruction is the address of the keyboard so we can know where we're getting the data from
00:07:34
Next comes a compare
00:07:36
Instruction that checks to see if those two numbers the one saved by the programmer and the one entered by the user are the same
00:07:44
Following the compare instruction is a jump if equal instruction which will jump to another address in RAM if those two numbers
00:07:51
We just talked about are the same
00:07:53
the jump if equal instruction is immediately followed by a new RAM address if
00:07:58
The two numbers are the same
00:08:00
The CPU jumps to that new address to begin processing its next set of instructions from there if the two numbers are not the same
00:08:07
Then the computer ignores the jump if equal instruction and the corresponding address and just keeps going
00:08:14
Following the jump to address comes an out instruction with the address for the monitor, then the letter capital G
00:08:21
And then below that would be the letters U e
00:08:25
SS. Space again, so guess again
00:08:29
So if the user guesses the wrong number the program would tell him to guess again
00:08:33
And then jump back up to the in instruction to retrieve that new guess and then process these instructions all over again
00:08:41
By the way the in and instructions used here have been simplified somewhat, but you'll find them covered in more detail in the book
00:08:49
So now let's briefly take a look inside the CPU itself to see how it would process an instruction
00:08:56
as we saw earlier
00:08:57
This is the inside of the 6502 CPU
00:09:01
Let's take away the 6502 wiring and see what's inside the Scot CPU
00:09:06
The first component is the control unit which is kind of like a captain in the army
00:09:11
it receives its orders from RAM in the form of an
00:09:14
instruction and then breaks that instruction down into specific commands for the other components
00:09:20
One of the most important components under the command of the control unit is the arithmetic logic unit or ALU for short?
00:09:27
The ALU is what performs all the mathematical operations inside the CPU such as addition subtraction
00:09:34
Or even comparison like we saw earlier
00:09:37
The arithmetic logic unit has two inputs will label them input a and input B and assume
00:09:43
They are two numbers from some previous load instructions
00:09:47
Now we might want to add those two numbers together
00:09:50
The control unit receives that instruction from RAM and then tells the ALU what type of operation to perform
00:09:57
The ALU performs the operation and then outputs the answer
00:10:01
Sometimes though depending upon the type of instruction the output from the ALU can actually be ignored
00:10:07
For instance if you have a compare instruction the ALU doesn't need to output an answer instead
00:10:14
It just needs to tell the control unit how the two numbers compare to each other
00:10:18
for this the ALU uses
00:10:20
What are called flags and they help the control unit decide what to do when it receives the next?
00:10:26
Instruction like jump if which we'll see later
00:10:29
For now though. Let's say that we are working with an instruction that does produce an output. Where does that output actually go?
00:10:36
well the eight wires coming out of the ALU would actually run to what is called a register a
00:10:42
Register is a very simple component whose only job is to store a number temporarily
00:10:47
registers act just like RAM except
00:10:50
They are inside the CPU making them faster and more useful for storing a number temporarily Wow instructions being processed
00:10:58
When the ALU sends the output to the register it won't actually be saved until
00:11:03
the control unit turns on the registers set wire
00:11:06
The set wire is just like the one we saw earlier for RAM
00:11:10
When the set wire is turned on the register saves whatever number is on its input wires
00:11:16
Once we have the output saved in the register though. How do we get it back out?
00:11:21
Well when we are ready to move a number out of the register we need another control wire called the enable wire
00:11:27
That also runs from the control unit to the register as soon as the control unit turns the enable wire on
00:11:34
The register will output whatever number is saved inside
00:11:37
the output wires of the register then connect to what is called the CPU bus a
00:11:42
Bus as we saw earlier on the motherboard is simply a group of wires that connect multiple components inside a computer on
00:11:50
The bus are some other registers with their own set and enable wires
00:11:55
These may have numbers from previous instructions already saved inside
00:11:59
so the control unit will then turn on the set wire of the
00:12:02
Particular register that it wants to save that number to and that number will be saved in that register
00:12:08
Afterward the control unit will then turn off the enable wire from the first register and clear the bus
00:12:14
The four registers at the top are just used for storing numbers between operations
00:12:19
So they have output wires that go directly back onto the bus
00:12:24
So now we have moved a number from one register to another just by turning some wires on and off
00:12:29
That's the advantage of the bus easily moving numbers between components
00:12:34
The disadvantage of the bus is that you can only have one number on it at a time
00:12:39
Because of this limitation the arithmetic logic unit uses a temporary register for input B
00:12:45
When the control unit is processing an instruction involving the ALU it will move one of the inputs to the temporary register
00:12:52
The temporary register has no need for an enable wire since it only outputs to the ALU and doesn't conflict with any other registers
00:13:01
The other input to the ALU comes directly from the bus
00:13:04
The control unit will enable another register and that number will become input a to the ALU that
00:13:11
number stays on the bus until the ALU is finished processing the instruction and
00:13:16
So now there are two inputs to the ALU and we're ready for the ALU to perform an operation
00:13:22
As we saw earlier the control unit knows what operation to tell the ALU to perform
00:13:28
Because of the instruction it receives from rim
00:13:31
The instruction itself is an another register called the instruction register
00:13:36
By the way the input wires from the bus won't affect this register since the instruction was already saved in a previous step
00:13:43
This register like the temporary register, also has no need for an enable wire since it just outputs to the control unit
00:13:51
Based upon this instruction the control unit then tells the ALU what type of operation to perform
00:13:58
So let's say the instruction. We're processing is a compare instruction with the compare instruction
00:14:03
We're not interested in the number that is output by the ALU
00:14:07
We only want to know how the two inputs compare to each other
00:14:11
For that we use the flags that we talked about earlier
00:14:14
Each flag is just a wire that turns on or off depending upon whether or not a certain condition is true
00:14:21
Inside the Scott CPU there are four flags, and we'll look at two of them now
00:14:26
The a is larger flag will turn on if input a is larger than input B
00:14:31
if the inputs are the same
00:14:33
Then the equal flag turns on and if both of these flags are off that means input B is larger
00:14:40
But in this case the equal flag is on so that means both inputs are the same
00:14:46
Once the compare instruction is over. We still need to use the flags for the next instruction
00:14:51
So we'll save them to a register that only has 4 inputs and four outputs one for each flag
00:14:57
Once the flags are set into the flags register the CPU is finished with the compare instruction and it can then request the next
00:15:05
instruction from REM
00:15:07
generally the next instruction after a compare instruction is a jump if
00:15:11
instruction this combination of a compare and a jump if instruction by the way is very common in
00:15:17
programming
00:15:19
Anytime there is more than one possible path through a program the computer is using these instructions to tell it which way to go
00:15:26
So now that we're finished with the compare instruction and our flags are saved in the flags register
00:15:31
We need to tell RAM that we're ready for the next piece of data in this case the next instruction
00:15:36
So inside the CPU another register that is very important is what's called the instruction address register
00:15:44
The CPU uses this register to know where the next instruction should come from in RAM
00:15:49
When the CPU is ready for the next instruction it enables the instruction address register onto the bus
00:15:56
eventually the instruction address will flow to RAM
00:15:58
But it doesn't get there directly there is an intermediary register called the memory address register
00:16:05
Whose only job is to tell Ram what memory address the CPU wants next since it won't always be an instruction
00:16:13
Once the instruction address is set into the memory address register it has automatically sent to RAM since the memory address register
00:16:20
Doesn't have an enable wire the control unit then turns on the enable Ram wire and RAM
00:16:27
Automatically sends back the data at that address which in this case is an instruction
00:16:32
That instruction is then saved in the instruction register, and the control unit begins processing it in
00:16:38
This case it's a jump if equal instruction, which checks to see if the equal flag is on
00:16:44
It does that by running one of its wires and the equal flag wire into a NAND gate
00:16:50
If both inputs to the and gate or on then the output wire turns on as well
00:16:56
This output wire will then trigger the jump that
00:16:59
jump eventually retrieves the next piece of data from RAM
00:17:03
Which happens to be an address and move it into the instruction address register
00:17:08
when the jump if equal instruction is over the CPU then processes the instruction at that new address at
00:17:15
That new address, maybe some instructions that output the text you guessed correctly onto the screen because now we know that the user guessed correctly
00:17:23
So we'll add the final four wires to our CPU which are used to control the external devices like the monitor and keyboard
00:17:30
We now have a nearly complete picture of what the Scotts CPU looks like
00:17:35
Data moves around inside the CPU using the bus and is stored in each register according to how that data is going to be used
00:17:43
Each instruction that we have seen can be processed by the Scott CPU in about 6 clock ticks
00:17:49
Modern CPUs can process multiple instructions per clock tick meaning that the computer you're using to watch this video is likely
00:17:57
processing tens or even hundreds of billions of instructions per second
00:18:02
that phenomenal speed is accomplished by using more than one of each component and
00:18:07
Making sure that all the components are active as much as possible
00:18:10
This makes modern CPUs much more complicated than the Scott CPU
00:18:14
But they are still fundamentally doing the same things as the Scott CPU
00:18:19
So now let's zoom back out and we can see all the wires that run back out to the pins on the chip on
00:18:25
The right are the set RAM and enable RAM wires on
00:18:28
The top are the RAM address wires on the bottom are the data wires that run to both RAM and the external devices
00:18:36
And on the left are the input/output control wires
00:18:40
So let's zoom back out to see the rest of the chip
00:18:42
And we'll put the cover back on the CPU and put it back in the motherboard
00:18:48
Using the ports on the Left we can now plug in the cables that connect our monitor and our keyboard
00:18:53
Each of these ports has an address and that port address is what the CPU uses with an in or an out instruction
00:19:00
That port address by the way is sent using the data bus since the address bus in this computer is only used for RAM
00:19:07
So we'll zoom out to see how the motherboard fits inside the computer case in the computer case is the last component
00:19:14
we'll look at which is the hard drive as
00:19:17
Soon as the power to the computer is turned off all the data and RAM is lost so you have to have a way to
00:19:23
Store it more permanently for that we use a hard drive
00:19:27
Inside the hard drive is a spinning disk covered in tiny magnets with a small metal arm floating above it
00:19:34
The arm moves around to the different parts of the disk where a different data can be stored and retrieved
00:19:39
The disk and the arm generally move very very quickly, but nowhere near as fast as the CPU can process data
00:19:47
For this reason all the data from the hard drive must first be moved to RAM before it can be processed
00:19:53
So we'll put the hard drive back inside the computer and zoom out here. We can see the program
00:19:58
We just ran and the message telling the user that he guessed correctly
00:20:02
So now you've seen the very basics of how a computer processes information
00:20:06
You'll find much more about the Scot CPU in the book at the website, but how do it know comm?
00:20:13
Also, there are a few small differences between the book and the video
00:20:16
But those shouldn't detract from your understanding of either you can find a list of these differences in the video description. Thanks for watching.
00:20:20
Whatever you do, work at it with all your heart, as working for the Lord, not for human masters -Colossians 3:23