system
Given the following post, respond as if you're commenting on Reddit:
human
ELI5: Getting computer programs to utilize multiple CPU cores is difficult because the programs have to be specifically coded that way. Why can't CPUs allocate instructions to different cores themselves?
gpt
The main advantage of programs designed for multi-core use is that they can be sped up by running multiple tasks at the same time on different cores. Some tasks cannot be divided up into multiple simultaneous tasks to take advantage of multiple cores.

Imagine the CPU like a restaurant kitchen. The chefs are the cores. Some tasks like a main dish can be sped up this way. It can be divided up into three tasks. One chef makes the meat, one makes the potatoes, and one makes the vegetables. Since they can do each of their tasks at the same time it's quicker to make the meal than having a single chef make each part in sequence. 

Now imagine you're trying to bake a cake. You too can divide it up into multiple tasks. Mixing ingredients, baking the cake, icing the cake. However fundamentally these cannot be done at the same time. They have to be done in order. You can't bake an unmixed cake, you can't ice an unbaked cake. So you cannot speed this task up by doing one part at the same time as another.

A good programmer will write code that makes use of multiple cores if the task they are writing can benefit from it. But not all calculations can be split up into simultaneous tasks. Some tasks, like our cake, cannot be divided into simultaneous operations to take advantage of multicore systems.