IPC improvements are still happening, which is why Intel has been on 14nm for years and still makes CPU's every year that are a little bit faster, but they are hard to do and you only get incremental improvements.
If someone could figure out a way to write regular software that easily parallelized to hundreds of cores, CPU's could also get the same leaps in performance that GPU's have been enjoying. It's a software problem more than it is a hardware problem.
Amdahl's law [1] , and while we have demonstrate parallelised code can speed things up, generally speaking Software performance still have lots of low hanging fruit without even going deep into parallel and concurrency world, it is just a matter of cost whether it is worthwhile to improve or fix it.
- GPUs don't handle I/O other than writing to video RAM.
- GPUs don't handle interrupts.
- GPUs don't handle branching well.
For the first two, a lot of infrastructure that is part of the chipset and platform would have to be extended to each compute unit of the GPU.
Imagine a database on a GPU. It's not like 1.5K-2k+ cores that are super good at math can read and write your disk or disk array at once.
See Amdahl's law : https://en.wikipedia.org/wiki/Amdahl%27s_law
You can use Binet's formula or matrix exponentiation to calculate it without such a dependency.
GPU’s are fine or even better for a wide range of compute tasks see CUDA etc, they just end up being very slow at a subset of common tasks.
Now GPUs are designed for running multiple computations simultaneously, like CPUs, there's the fact that most operations cannot be trivially parallized. Matrices and linear algebra can because of obvious reasons — large grid of numbers, easier to process at once than with a for-loop. Most problems are not like this. The next step for computing may be FPGAs, digital circuits that can be reconfigured on-the-fly. Certain new Intel CPUs have this and most processors have a basic version in the form of microcode. Whether this will work out, I do not know. FPGAs is too more compatible with trivially parallized tasks than your usual CPU based workload. Theoretically in future you can perhaps spend 20min compiling Minecraft or Factorio to FPGA bitcode during the installation process, though more likely it is only the processor intensive bits that gets optimized. When you load the game, part of the chip gets reconfigured for it. I believe this will benefit long running processes more than short ones.
Now I am no subject domain expert so somebody with more insider experience should elaborate on this.
That is because GPU scales very well with Transistor count, throw in more transistor and memory bandwidth and you are good. On the CPU you could have doubled the transistor budget and get marginal improvement in IPC.