Harsiesis schrieb:
Im Dekstopbetrieb müssen ja nicht immer alle Cores laufen. Da könnte man einen Grossteil deaktivieren (nicht nur herunter takten) um Energie zu sparen.
Beim Auto genügt es vermutlich einfach einem Zylinder den Saft abzudrehen und als Ergebnis hat man dann halt x % weniger Leistung. Da gibt's keinen wirklichen Zustand und keine Abhängigkeiten.
Aber bei einer CPU hast du laufende Berechnungen, gefüllte Pipelines und Caches, und Kommunikation zwischen den Kernen. Um einen Kern abzuschalten, muss man also den Zustand des Kerns umverteilen. Und allen anderen Geräten, die mit diesem Kern kommunizieren wollen, muss man sagen wer ihr neuer Ansprechpartner ist.
Die ARM (und neuerdings auch bei Intel) Big.LITTLE Architektur verfolgen hier wohl das interessantere Konzept. Wobei auch hier die Lastwechsel zu Latenzproblemen führen, weil eben Daten synchronisiert werden müssen, bevor weitergerechnet werden kann.
Es ist also grundsätzlich kein Problem Kerne abzuschalten oder laufende Berechnungen transparent auf andere Kerne zu verschieben. Das Problem ist das ganze Drumherum:
- Wann wird ein Kern ab- bzw. dazugeschaltet? Reicht es dazu eine Webseite im Browser zu öffnen, die für 100 Millisekunden alle Kerne voll auslastet? Oder wird sowas im Eco Mode erledigt, und der User muss mit etwas längeren Ladezeiten leben?
- Wer entscheidet? Kann das Betriebssystem oder sogar die Anwendung selbst entscheiden, ob etwas im High Performance Modus berechnet werden soll? Oder läuft das komplett transparent innerhalb der CPU ab?
- Wie oft darf so ein Wechsel vorkommen, damit mit diesem Prozedere überhaupt Energie gespart werden kann? Kostet der ständige Wechsel mehr Energie als er einsparen würde?
- Wie oft muss so ein Wechsel möglich sein, damit es keine Performanceprobleme mit den Latenzen beim Anwender gibt?
Das sind alles kein einfachen Ja-Nein-Fragen.
Bei Taktänderungen hat man diese Probleme nicht: Der Takt lässt sich tausendfach pro Sekunde an die aktuelle Last anpassen und man hat quasi-sofort die Mehrleistung oder Energieeinsparung. Und es müssen keine Daten umverteilt werden, weil alles nach wie vor an Ort und Stelle verfügbar ist, nur eben etwas langsamer.
Um auf's Auto Beispiel zurück zu kommen: Schalte nicht einen Zylinder hinzu, sondern schalte einen kompletten zusätzlichen Motor hinzu, der sich erst mal mit den anderen Motoren synchronisieren muss und auf entsprechende Drehzahl gebracht werden muss, damit nach dem Prozedere auch weiterhin alle Räder gleichstark angetrieben werden.