Do you remember the "turbo" button from the 90s? The one that switched the CPU between two clock settings. For those who don't: its purpose wasn't to save energy or overclock your CPU — rather, it was used to preserve better compatibility with old programs, that expected specific CPU frequency.

We're talking about the times of DOS here, when programs could usually assume they've got the exclusive access to the CPU. So when a game was synchronized to the CPU clock, it would run twice as fast on a CPU that's got twice the clock. And I don't mind it ran more fluently — it literally went in fast forward. A few times faster CPU, and you couldn't play it anymore. You can still see the traces of that in DOSBox.

Of course, programs stopped relying on a specific clock, and the button eventually went extinct. The progress brought overclocking, and CPU scaling (#CPUFreq) to save energy and reduce noise. And finally, #PStates arrived as a more fancy kind of CPU scaling.

What's really interesting, that PStates brings a "boost" option. When it's off, the CPU is scaled as usual, up to the nominal frequency. However, when it's on, PStates can "overclock" individual cores, as long as it can get the necessary power and it doesn't cause the CPU to overheat.

And so, the history has come full circle, and the "turbo" button has returned:

cd /sys/devices/system/cpu/cpufreq
echo "$(( ! $(cat policy0/boost) ))" > boost

#Gentoo #Linux

A pamiętacie przycisk "turbo" w latach 90.? Ten, co przełączał stare procesory między dwoma ustawieniami zegara. Osobom nieobeznanym wyjaśniam, że nie służyło to oszczędzaniu energii, ani "podkręcaniu" procesora, lecz zachowaniu zgodności ze starszymi programami, które spodziewały się określonego zegara.

Pamiętajcie, że mówimy tu o czasach DOS-a, kiedy programy z reguły mogły przyjąć, że dostaną procesor na wyłączność. No i jak taka gra, synchronizowana zegarem procesora, dostała procesor dwa razy szybszy, to działała dwa razy szybciej. I nie chodzi o to, że płynniej — po prostu grało się w przyspieszeniu. Kilka razy szybszy procesor, i grać się nie dało. Dziś jeszcze widzimy ślady tego, chociażby w DOSBoksie.

Oczywiście, programy przestały być zależne od konkretnego zegara, i z czasem ten przycisk zaniknął. Za to rozwinęły się możliwości "podkręcania" procesorów, czy też ogólnego skalowania zegara (#CPUFreq), żeby oszczędzać energię i ograniczać hałas. No i w końcu pojawiło się #PStates, jako trochę bardziej zaawansowany sposób skalowania procesora.

Co ciekawe, jednym z parametrów PStates jest opcja "boost". Kiedy jest wyłączona, zegar procesora skalowany jest normalnie, do częstotliwości znamionowej. Natomiast po jej załączeniu, PStates może "podkręcać" poszczególne rdzenie powyżej tej częstotliwości, w ramach dostępnej mocy zasilania i możliwości odprowadzenia ciepła.

Tak właśnie historia zatoczyła koło i wrócił przycisk "turbo":

cd /sys/devices/system/cpu/cpufreq
echo "$(( ! $(cat policy0/boost) ))" > boost

#Gentoo #Linux