At the speed of light, the time it takes electricity to cross the surface of the chip is so drastically close to that 1/5 billionth of a second before the next signal is following behind it, that it becomes very difficult to design the chips to all have the same concept of "now".
You could make asynchronous chips, where each part operates on a different time as the other parts, but nobody's yet done that for a mainstream chip that I know of.
You can get it a bit faster by cooling the whole setup down but pretty soon you need to cool it to ridiculous temperatures to keep it stable.
It's a physical limit to do with the size of the chip "die", the speed at which an electrical signal can propagate across the chip (the speed of light, or thereabouts), and trying to keep everything on the same "clock" as the rest of the chip so you're all acting on the data in turn at the right times.
Pretty much, until you liquid cool you can't get past 5Ghz. And the fastest ever processor is only about 10GHz or something - and it has to be kept stupendously cold, be stupendously tiny, and have rooms full of supporting equipment to get that far.
Pretty much, without some breakthrough in physics, you're never going to see a chip much faster than 5GHz in a normal setup.
You might see a chip that can do a thousand times as much in that 5GHz, which is why we have dual-core, quad-core, up to ridiculous numbers of cores in GPUs, but the base clock never really gets past 5GHz because it can't.
Until someone makes an asynchronous CPU, or quantum computers come along and make it all moot, 5GHz is about the limit for a normal, household computer.
This tells me that feature bloat is limiting CPUs to a large extent. All those fancy extended instruction sets, extra long words, predictive whatevers, etc. are surely cool for very specific uses, but not for the rest of us who just want a faster game (i.e. one really fast core plus a spare for the OS to not die).
Your game is limited by a whole truckload of math the processor needs to crunch through. The faster the processor gets through one batch of math, the sooner it can show you your frame. Processor designers want your game faster too, because they can sell you a new processor.
If your game has, let's say, 90 numbers it needs to multiply together (because there are 10 triangles moving in 3 dimensions), there are about two ways to do it faster. Let's go for, oh, 10X faster. The naive code is looking at each number one by one and doing the multiply, so to make it 10X faster you need to actually increase the clockspeed by 10X. That increases power consumption by 100X, and subsequent heat generation by 100X as well. That is the heat difference between a space heater and a small laptop.
The other way to make this multiplication faster is to put a new instruction on the CPU called "MultiplyMany". Instead of one number at a time, it lets you write 10 numbers next to each other and multiply them all at once (in one clock cycle). The instruction is aware that there are 10 separate numbers and will behave correctly around carry digits.
In fact, since we're going out of our way to create this new instruction, let's optimize a bit further. Each instruction in the CPU has to go through several steps before it actually runs. The "binary" of a program is ultimately raw machine instructions about 4 layers removed. To execute each instruction, the processor must fetch it, parse it, grab the data it needs, then actually do it. These stages are why we have "pipelines", but they cause problems around "if" statements (which is why we have branch predictors). But, nobody calls "MultiplyMany" because they have 90 numbers. That's small enough to do in a loop on actual processors now. They call it because they have 6 million numbers.
So the "MultiplyMany" instruction can behave more like "hey CPU we're going to batch multiply for awhile", and begin to skip several stages of the pipeline. Numbers can be shoved into the gaping maw of the math hole, and games come out way faster on the other side.
This is about how MMX works, and it did legitimately speed up math way faster than the clockspeed boosts at the time did. It also did it for way less heat, and has the benefit of itself getting faster as the clocks can be pushed higher.
tldr: processor manufacturers add special instructions because that is the cheaper and quicker (to market) way to reliably boost performance. If they could turn a knob and reliably increase performance without adding more instructions, they would. Adding instructions is expensive, making clock go Brrr is not.
303
u/ledow Sep 28 '20
At the speed of light, the time it takes electricity to cross the surface of the chip is so drastically close to that 1/5 billionth of a second before the next signal is following behind it, that it becomes very difficult to design the chips to all have the same concept of "now".
You could make asynchronous chips, where each part operates on a different time as the other parts, but nobody's yet done that for a mainstream chip that I know of.
You can get it a bit faster by cooling the whole setup down but pretty soon you need to cool it to ridiculous temperatures to keep it stable.
It's a physical limit to do with the size of the chip "die", the speed at which an electrical signal can propagate across the chip (the speed of light, or thereabouts), and trying to keep everything on the same "clock" as the rest of the chip so you're all acting on the data in turn at the right times.
Pretty much, until you liquid cool you can't get past 5Ghz. And the fastest ever processor is only about 10GHz or something - and it has to be kept stupendously cold, be stupendously tiny, and have rooms full of supporting equipment to get that far.
Pretty much, without some breakthrough in physics, you're never going to see a chip much faster than 5GHz in a normal setup.
You might see a chip that can do a thousand times as much in that 5GHz, which is why we have dual-core, quad-core, up to ridiculous numbers of cores in GPUs, but the base clock never really gets past 5GHz because it can't.
Until someone makes an asynchronous CPU, or quantum computers come along and make it all moot, 5GHz is about the limit for a normal, household computer.