How many computers in here do you think we've got multiple processors in?
Ok, um, yeah, I don't think any of them have got multiple processors in the way that I would think of multiple processors
My edit machine has two Intel processors in it, physical chips
Ok, so you define a multiprocessor system as having two physical chips?
That's what I'm thinking.
Okay, or we could also take multiple cores. Where it's the same thing on the same pieces of the silicon.
Okay, so you've got two physical chips being two physical processors which machine or multiple cores which machines in here do you think are multiprocessor?
We'll just use that term to refer to both of them systems.
Okay. Well, I reckon these new Macs here have got multiple cores.
Yup, they're all quad core machines of various types
Your phone maybe? Yeah the phone will
but you've got all these vintage machines around
So starting over here with the apple macintosh LC 475. Well, let's just say I said, you've got one processor in it. There's also a
PowerPC laptop under there underneath the surface underneath the multi processor motherboard
So the surface is real depressed is just sitting under there the Atari ST
That one we could count this as we'll say it isn't why? Could we count it out?
Because the keyboard has got a CPU in it. Okay. Yeah, I've got an intelligent keyboard. So the CPUs got a
microcontroller in there which scans the keyboard and then sends over a serial link the key presses to
The main CPU and so on so so proprietor in there. I've got the Atari Falcon under here how many processors?
I'm guessing that there's a trick here. So I'm going for two. Yes got two processors in it. It's got a
68030 cpu and it's also got a five six zero zero one DSP both motorola
Processors in that don't think any of that acorn stuff which are now relatively. Well. Yep
So they're all single processor systems. Although the risk PC did have two prices of slots
So it could have read a separate 486 put in there and let's say managed to get hold of the one existing Hydra card in
Enable you to have multiple ARM chip so that single processor their original IBM PC
Single processor BBC micro I think if that's a special one then possibly but if just under one man, no
So that is a special one. That's actually got what a Concord they're tube system
Which if you watch the videos on Steve Furber?
Talks more about this, but they initially released the second processor not Co prices over the second processor for the system
Which was a complete another computer inside there with a 6502 Ram and so on in their 64k of Ram
Showed that old it was and that was then connected to the BBC micro which had its
32k of RAM and its 6502 on there the master turbo
I've got over there has that built into the motherboard and so that's technically a multiprocessor system. It's got two CPUs in there
She's got two CPUs at the same time
Running a slightly different speeds but to CPS at the same time Apple to single processor the acorn and the Amiga and the Atari
Again, the Amiga I think you could possibly make an argument. It was a multiprocessor system, but not in the way
We're thinking about it. Why have we just done that? Well, it shows that there's there's two ways you can design a multiprocessor system
So your system home your editing system the Macs on here. They have two processes.
That are of the same design to Intel court or two core. Shall we say or
multiple cores all of the same design
And those purchases are identical and they use pretty much to do any of the tasks of things
It's what we call a symmetric multiprocessor system
So each CPU in there can be allocated by the operating system to run programs
It can answer io and things and just do anything that you need to do. They can split the tasks up
To do different things
by comparison the Falcon and the
BBC micro system the BBC master turbo
They have multiple processes in them and you can use them for general purpose tests
But the general idea is that their processes do different tasks. So it's an asymmetric multiprocessor system
Say for example on the Falcon
The idea was at the 68030
would run you the main system whatever thing is doing and then he fueled you to do some sort of person that would benefit from
The DSP chip the five six zero zero one that's in there
You would offload your processing onto that feed the data and it would president it would feed the data back out
So it's effectively running as a separate
Subsystem and so on
On the BBC micro system. The idea was since that you'd have the 6502 chip
There's in there's normal running the IO
Drawing things on the screen handling the keyboard and so on and then you'd have your main processor
That would do most of the processing work and occasionally would tell the other processor
to load a file into memory or to tell the other processor to do things so you can design a
Multi-person system in two ways. You can either have it
So all the CPUs are working on the same task and in that case
They probably will all connect to the same piece of shared memory and they'd all
work on the same task and they'd all talk to the same bit memory and
Communicate along that or you can say now I'm gonna have different processes perhaps of different types different speeds doing different jobs
So multiprocessor systems have been around for quite a while in various different guises
There's a sort of suggestion here that the idea of parallel is the more modern way of doing it surely with things like GPUs
Coming we've got hybrids now, right? Well, yeah. Well, yeah, but I mean the GPU is generally being used for a specific task
things whether that's graphics processing or Bitcoin mining or whatever it is able to do on it and depending on whether you're wanting to make
Money or lose money and I can let you work out which one of that is going to do which and surely we're using
Multiple cores purely because we ran out of horsepower on single cores
So one reason with 4 cores good question
So the things you want to fight the problem run as fast as possible and you've got two ways to do that
You can either make the computer run faster
for example, speak fast you get more words per second and so on and you get it going and you get your computer doing more and more and
More more and more more more more more more more faster and faster faster faster and faster, the problem with
Is that is you get to a point where you can't actually push the computer faster. There's a thing called the power wall
That's the point where you can no longer dissipate the heat away from the CPU
We actually hit that quite a while ago what you're able to reduce the voltages used on the chips
which meant you could get a bit more and again, but a Platinum getting to the point now where the voltages are, so
different is really logic zero and a logic one is so low that
Actually, you could take it any lower you'd get a leakage between the transistors on the chip itself. And so it's not possible
So you can push the speed in one way the other way you can make the problem
Make the program run faster is to split it up into multiple chunks
To do them all at the same time
so one way for example to make sandwiches faster is that you butter the bread faster you put the filling in faster you put the
Bread faster the other person if you get two people doing it
And then it takes in the same amount of time to make one summary's but you have two people doing it
So they make twice as many sandwiches each time. They make a sandwich same with the computer
we can either make the computer processor faster or
We can have multiple cores each working on part of the problem at the same speed and then we have them produce the problem
Produce the result faster to do that
We need to be able to break the problem down into multiple chunks and x:q each of those chunks separately
Which is one problem you need to work out and can you break the problem down can be quite simple if you will say
Processing an image you want to say make it 50% the brightness
Then you can process the top half process the bottom half separately do them at the same time
You have the time it takes to process the whole image
But the tasks are harder to break down because you need to work out how you want to break down the algorithm to run over
different things asymmetric and symmetric
Multiprocessors aren't really competing for each other. It's not this is how we used to do it
This is how we do it now
You would find that there are multi person systems back in the 80s and 90s
Parallel processing was a big thing in the late 80s early 90s
People were looking at parallel architectures for doing all sorts of things
In fact, one of the things which describes how parallel systems work Flynn's taxonomy was created in 1966. So
The ideas have been around for a while
I think it's more that for a lot of things when you you've got a task that you want to do in different things
symmetric multiprocessing makes sense for other things
having an asymmetric system
Whether that's your DSP IO processor a GPU a tensorflow type thing and so on makes more sense like that
So how we design a multiprocessor system is very much based on what you're wanting to do
What are you trying to do with it? I mean Flynn's taxonomy is an interesting thing because you then get some really weird
processor types coming up so you can either have a
system which has got a single instruction stream or
Multiple instruction streams and a single data stream or you can have multiple data streams
So you'll end up with a single instruction stream single data system or most multiple destruction streams single data system single instruction
multiple data system or multiple instruction stream
Multiple data systems so a modern multi-core CPU. Well actually at times
behave like a single instruction stream system at times behave like a
SIMD single instruction stream multiple data stream system and
At times behave like a multiple instruction stream
Multiple data system and we end up with these all being used at different times
The easiest way I think about it as a single instruction stream
Single data stream price is that that's the sort of classic model of a processor
you've got a set of instructions that your program is executing and
You could think of these flowing through the CPU one after the other okay with the occasional branches
Like water flowing through a stream if you look at one point the water flows through at that point
That's what these two options are doing. They're flowing through the CPU
And each of those instructions is probably going to be loading a value from memory or doing some processing on the value
That's come from memory and then putting it back out to memory. So if we say you I don't know. Let's say it's rendering
3d graphics you're going to be doing lots of matrix
multiplications and things on that that you can then pull the data in do the
Calculations and write out the new points and so on now what Intel did around who late 90s they introduced what's called the multimedia extensions
MMX and that was followed by
sse sse2
AMD's 3d now and those other things that do different things which basically add one Accord single instruction multiple data instructions
So these instructions are still a single stream of instructions that so we're going to add something. We're going to multiply something
But rather just acting on one piece of data at a time
They can act on multiple pieces of data and if you think back to that 3d graphics
You for example will have your X Y Z coordinates for
Say your shape and you normally actually store that as four coordinates because you have the x y&z and then you have a
1 in the vetch because it makes the map slightly simpler. And so you might actually then call that
You need to multiply that by a matrices and with us SIMD type instruction. You can read those four values and
Read the four values from one column of your matrix
And multiply them all together, which is four separate operations
But if you can use an SIMD instruction, you can do that in one operation working on four separate bits of data
So it multiplies the first player together the second pair together the third player together and the four pair together all in one instruction
so they added extra bits new al use new designs for doing things that and they will them to have
These instructions if your data restricts the data, your pricing is such that you can take advantage of that
you can get some significant speed boost because rather than doing four instructions you have to do one and
but you take advantage of what's called data level parallelism the data the pricing you want to do enables you to
Do those instructions on multiple data options at the same time and you get some sort of speed-up
It works for some tasks 3d graphics. For example, for other tasks. It's less useful and so you don't benefit from them
but the other thing our CPUs can do is that they have a multiple cores and modern CPUs the intel i7
AMD's and so on
are all
Multiple instruction multiple data things so they have separate calls each of richer running their own stream of instructions
So they're on different bits of the program or different programs altogether
processing different bits of data still a single stream per processor instance
But unless it's an SIMD bit and so you can have multiple data streams
and
So you have them?
Running all of these things and that is pretty much what people think of as parallel processing multi processing of things is you've got multiple
CPU cores running their own programs processing their own set of data
So we can build up different things
So they've been around for years and we've had various different types symmetric asymmetric the different ones of Flynn's Tessa Nanami you've been around
For a while that leaves us with this weird one in the top right corner of the diagram, which is the multiple instruction stream
So got multiple streams of instructions
acting on a single data stream
Yeah, they're weird. Not many of them exist these days
I think the most prominent example that I've heard of I've never actually had to program it more's the pity is
the space shuttle guidance computer
Left our flowers probably the Space Shuttle guidance computer used a multiple instruction stream single data stream machine
And that's one of the reasons you might want to do that. Is that enables you to say do?
Multiple calculations and then get some sort of fault tolerance, perhaps out of it touchdown so you can build parallel processing in different ways
but the one that we're perhaps most familiar with is that we've got
multiple of CPUs in our computer whether they're physical chips physical cores as it happens to be all their
Multiple cores on the same piece of silicon and if we're doing that we need to make those
Multiple processors do useful things. So the simplest thing we could do is get the operating system to schedule multiple
Programs multiple processes across each of the different CPUs, but that enables had to run multiple programs really good
but it doesn't really give us any speed-up in terms of
Running a single program to solve a single task and to do that
we actually need to break the problem down into multiple chunks and
Execute a chunk of each of that problem on each of the different processes. We've got available to us. Whether that's 2 4 6 8
32
However many we've actually got to deal with so we need to break our problem down
Into multiple what often refer to with threads of execution and run them on different?
CPU cores
Is that same a1 so that he can decrypt the message and read it? Right? So Alice maybe wants to send another one
So she's going to tick this KDF function again
She's going to produce a new key and a2 I she's going to send that to Bob
He's going to take this receiving function a2 now. Bob wants to send a message. So he's going to tick