> The issue is that AFAIK it does not reduce the clock rate; it runs at the normal full clock rate, then when it detects the temperature went over the limit, it pauses the CPU for a while to let it cool down.
I'm 99% confident that that is not a thing, pausing the cpu. The closest thing that exists is sleep/suspend/hibernate, but those don't work like that (on temperature triggers). Other than those, if the machine is on: the cpu is always doing _something_.
> Other than those, if the machine is on: the cpu is always doing _something_.
That used to be the case back in the 1990s when running MS-DOS. Nowadays, every operating system "pauses" the CPU when nothing is going on. The traditional way on x86 was to use the HLT instruction, which stops the processor until an interrupt happens; other architectures have their own equivalents (for instance, ARM has the WFI and WFE instructions), and x86 has more modern ways to do the same thing (like the MONITOR/MWAIT instructions). These instructions allow the processor to dynamically enter lower power modes, for instance by blocking the clock and/or power going into parts of the processor core (that is, "gating" the clock or power).
Isn't that just parts of the cpu and at the OS level though? I don't think that happens for thermal reasons, more for "welp, nothing worth doing" reasons.
Maybe I'm wrong, looking back at what I said I'm having a hard time explaining what my objection is, but I just don't know of a mechanism that's like "welp, I'm too hot, pausing for a few seconds, see you then!". Aren't there buses and caches and etc. that need constant attention whenever the machine is on? The cpu can't just tell everything to wait for a bit.
I'm 99% confident that that is not a thing, pausing the cpu. The closest thing that exists is sleep/suspend/hibernate, but those don't work like that (on temperature triggers). Other than those, if the machine is on: the cpu is always doing _something_.