In a prior article I talked about what manufacturers can do when they improve their processing. One thing they can do is to replicate the processors on a single chip. You have a good design for the processor and essentially you just cookie cutter the thing across the chip. “Joe, how does this speed things up?” Glad you asked.
The operating system is inherently capable of utilizing the extra cores since it can dispatch the different processes when they come ready to execute. In Windows this is done by the System Idle Process which just sucks up unused CPU cycles going over a list of processes looking for ones that are ready. When a process wants to read a block of data from the disk, it makes the system call and relinquishes the processor. The process is marked not ready. When the operating system has retrieved the data requested, the process is marked ready, and the next time the System Idle Process comes around to this particular one it can be dispatched.
For a single application to be sped up, it must be re-coded to take advantage of multiple cores. In the diagram we have two processes A and B each of which take one unit of time to execute for a total of two Units to complete the entire computation. Let’s say we send the programmers back to the drawing board and they come up with the following. They have taken the original process A and broken it up into A’, A prime, and A”, A double prime. A’ is the part that creates the information that process B actually needs but only requires 0.5 units of time. A” completes its work and terminates. Note that now the total time required is 1.5 units of time for a saving of 25%.