Transcript for:
Understanding Multi-core and Parallel Systems

in this video we discuss multi-core and parallel systems [Music] so what do we mean by a multi-core system so the brain of a computer the thing that drives the day-to-day operation is the central processing unit or cpu and in the early days computer systems had one cpu integrated into a single physical chip that carried out all of the instructions as technology evolved and the demands on the sinkhole cpu increased new techniques were developed one option was co-processors which we've already discussed other techniques include multi-core processors and parallel systems and we're going to take a look at those now so a multi-core processor is essentially a single physical chip that contains two or more independent processing units or cores each core can fetch decode and execute its own set of instructions manufacturers integrate these cores onto a single physical chip known as a chip multiprocessor or cmp therefore it's actually wrong technically to refer to a single physical chip these days as a cpu as it tends to be a cmp containing multiple cpu cores but you really don't need to worry too much about this distinction for the exams most people still refer to the physical chip as a cpu now cmp with two cores is commonly referred to as a dual core processor cmp with four cores is commonly referred to as a quad core processor the very latest commercial processors at the time of making this video had up to 64 different cores the performance of multi-core processors can be further enhanced there can be on-chip shared cache and a method of communication you have to be careful though don't simply think that doubling the number of cores doubles the performance there's a lot of overheads involved with this kind of intercore communication and some programs simply can't make maximum use of cores they're simply not designed to so in broad terms a multi-core system should process multiple instructions faster than one with a single core so what do we mean by parallel processing well the improvement in performance gained by using multi-core processors is totally dependent on software taking advantage of what we call parallel processing this is the processing of program instructions by dividing them between the multiple processors or a cause the objective is effectively the same running a program in less time now in this example parallel processing is being achieved by assigning separate processes or processing cores to different stages of fetch decode and execute cycle while one processing unit is fetching a new instruction a separate unit is decoding the previous instruction and another unit is busy executing the one before that in this example parallel processing is being achieved by the processor or processing cores carrying out a single job split into tasks with each task able to execute on any unit the main processor or processing core fetches into codes and instruction and then farms off the various parts of the program to the other processing units now remember the extent to which parallel processing can speed up computation will be highly dependent on a couple of things firstly the actual task that's being carried out and if the software has been or indeed even can be designed and written to make use of parallel processing so having watched this video you should be able to answer the following key question how does having multiple cores affect the speed of processing so that's where the specification ends but if you want to know a little bit more about this then watch the rest of this video where we go into a little bit more depth so amdahl's law is quite famous in computer science it's a formula that provided you with a theoretical speed increase in the execution of a task by a system whose resources have been improved now andel's law is often used in parallel computing to predict the possible speed increases that could be obtained by adding more processors or processing cores you can see here that simply throwing more processing cause a problem isn't the best way to speed up execution and sometimes has little to no effect at all another issue that we sometimes get asked about is the difference between parallel processing versus concurrent processing now these terms are often used interchangeably however they shouldn't be confused a system is effectively said to be concurrent if it can support two or more actions in progress at the same time a system is said to be parallel if it can support two or more actions executing simultaneously [Music] you