2.1 Multi-core processors
A multi-core processor is a ‘processor’ that contains two or more independent processors called cores. Each core performs the usual functions of loading data and instructions and executing the instructions on the data but instructions can be shared between each of the cores and run at the same time, increasing the overall speed of programs, provided that they are written in such a way to allow for this to happen.
You may think that four cores all working simultaneously would make a program run four times as fast. However, this is not the case. Each core requires its share of the data and instructions to be moved from the shared main memory into its local memory where the instructions are executed on the data. The program has to be written in such a way that a task can be split up into independent sub-tasks, each of which can be completed by a core, and then if necessary, reassembled into a final solution. This process of coordination is a small additional task for the computer to perform. Hence you do not get the full benefit of the extra cores.