Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?

Apple Silicon: Wie macOS die Taktfrequenz der Effizienz-Kerne steuert

Es gibt etliche Gründe dafür, dass Apples hauseigene M-Chips nicht nur extrem leistungsfähig, sondern gleichzeitig erheblich energieeffizienter sind als x86-Prozossoren. Eine der Ursachen ist die Anwendung der sogenannten Big-Little-Technologie: Die SocS aus Cupertino verfügen neben Performance-Cores mit hoher Rechengeschwindigkeit auch über Efficiency-Cores, welche weniger wichtige Tasks abarbeiten und dabei langsamer zu Werke gehen. Für das perfekte Zusammenspiel sorgt macOS, indem es die Aufgaben abhängig von der Dringlichkeit auf die Prozessorkerne verteilt. Dieses Verfahren ist unter der Bezeichnung „Quality of Servce“ (QoS) bekannt.


M1 und M1 Pro/Max: Unterschiede bei Zahl der Effizienz-Kerne
Der Aufbau von M1 sowie M1 Pro/Max unterscheidet sich in dieser Hinsicht signifikant. Während der Chip ohne Namenszusatz über jeweils vier Performance- und Efficiency-Cores („Firestorm“ beziehungsweise „Icestorm“) verfügt, sind es bei den stärkeren Versionen acht Leistungs- und lediglich zwei Effizienz-Kerne. Theoretisch würde das bedeuten, dass MacBook Air M1 oder Mac mini M1 etwa bei der Erstellung des Spotlight-Index oder von Time-Machine-Backups doppelt so schnell arbeiten wie beispielsweise 16" MacBook Pro oder Mac Studio, welche von einem M1 Max angetrieben werden. Die Praxis sieht jedoch anders aus: Alle Notebooks und Desktops mit Apple Silicon erledigen Hintergrund-Aufgaben mit annähernd identischer Geschwindigkeit.

Steuerung der Taktfrequenzen ist entscheidend
Warum das so ist, hat jetzt der bekannte Entwickler Howard Oakley ergründet. Bei seiner Analyse stellte er fest, dass sich M1 und M1 Pro/Max im Hinblick auf die Steuerung der Taktfrequenz unterscheiden, mit welcher die Effizienz-Kerne betrieben werden. Beim Chip ohne Namenszusatz beträgt diese stets rund 1.000 Megahertz, wenn Tasks mit der niedrigsten Priorität ausgeführt werden. Die Rate steigt erst bei höherem QoS-Level an und erreicht nur in Extremfällen ihr technisches Maximum. Apple legt beim M1 folglich den Schwerpunkt auf einen möglichst niedrigen Energieverbrauch. Anders beim M1 Pro/Max: Die „Icestorm“-Kerne arbeiten schon mit einer Taktfrequenz von etwa 2.000 Megahertz, wenn zwei oder mehr Threads mit geringer Wichtigkeit abzuwickeln sind. Das kalifornische Unternehmen gibt bei diesen SoCs also der Leistung den Vorzug und nimmt dafür einen etwas höheren Stromverbrauch in Kauf.

App-Entwickler müssen einen Beitrag leisten
macOS ist Howard Oakleys Analyse zufolge also nicht nur für die Verteilung von Aufgaben auf die Prozessorkerne zuständig. Das Betriebssystem steuert auch die Taktfrequenzen, mit welchen diese erledigt werden. Damit das wie vorgesehen funktioniert, müssen die Entwickler von Mac-Apps allerdings ebenfalls einen Beitrag leisten. Apples Technik kann nämlich nur dann ihre Vorzüge ausspielen, wenn nicht für alle Tasks einer Anwendung beim System immer die höchste Priorität angefordert wird.

Kommentare

gfhfkgfhfk17.10.22 15:56
Die 12. und 13. Core Generation von Intel verfügen ebenfalls über Performance- und Effizienzkerne.
+1
Mecki
Mecki17.10.22 17:21
Wie wichtig die Rolle des Betriebssystems ist, zeigt auch ein aktueller Patch für den Linux-Kernel. Angenommen die CPU hat 8 Kerne (und das können auch 8 gleiche sein), von denen gerade 4 in Benutzung sind und 4 nicht und jetzt will ein Thread gerne laufen, dann kann natürlich das System den auf einen weiteren (den 5ten) Kern laufen lassen, oder warten bis einer der 4 frei wird und den dann da laufen lassen. Bisher wurde meistens immer ersteres gemacht, aber das führt nicht immer zum besten Ergebnis.

Kerne, die nicht gebraucht werden, gehen "schlafen" und einen schlafenden Kern aufzuwecken hat zwei Nachteile: Zum einen braucht es eine gewisse Zeit, bis der wach ist (die ist zwar winzig, aber in diesem Bereich macht das schon was aus) und dann braucht ein Kern beim Aufwachen kurzfristig viel Strom für nichts (er macht nichts produktives, außer aufzuwachen). Kerne häufig oder unnötig aufzuwecken führt daher nicht unbedingt zu bessere Performance und steigert den Gesamtstromverbrauch der CPU über die Zeit (und auch dessen Abwärme). Aber da ist noch eine Sache: Ein "kalter Kern", also einer der gerade erst aufgewacht ist, arbeitet initial nicht ganz so schnell wie ein "warmer Kern" und kann auch nicht immer gleich mit voller Taktrate betrieben werden (bzw. volle Taktrate, aber nicht Turbo-Taktrate), er muss erst mal auf "Betriebstemperatur" kommen, sonst kann es zu Hardwarefehlern führen.

Deswegen gibt es jetzt einen Patch, der ein Abwägung trifft: Wenn der Thread keine hohe Priorität hat und sowieso bald ein Kern frei wird, dann wartet das System lieber, statt einen neuen Kern hochzufahren. Und das reduziert nicht nur den Stromverbrauch signifikant, tatsächlich bringt das sogar Performancegewinne, da der neue Thread auf einem warmen Kern oft schneller seine Arbeit verrichten kann als auf einem kalten. Nur wenn viele Threads lange laufen oder ein Thread mit sehr hoher Prio ganz schnell laufen muss, dann schaltet das System einen weiteren Kern dazu. Dabei kommt aber nicht unbedingt der neue High Prio Thread auf den neuen Kern, sondern das System unterbricht vorzugsweise einen der Low Prio Threads (Preemption), lässt den High Prio Thread dann auf dessen warmen Kern laufen und legt den Low Prio Thread auf den neuen kalten Kern, sobald dieser hoch gefahren wurde (die Latenz für das Hochfahren und die anfängliche schlechtere Performance geht so zur Lasten des Low Prio Threads).

Man sieht also, die beste Hardware kann ihr Potential nicht voll entfalten, wenn die Software nicht mitspielt. Und hier hat Apple eben den Vorteil, dass sie beides liefern. Intel liefert zwar die CPU, aber nicht das Betriebssystem und Microsoft liefert ein Betriebssystem, aber hat nicht die CPU entworfen. Das Zusammenspiel von CPU und System ist also auf einem Windows PC selten optimal, weil MS nicht immer also so umsetzt wie Intel sich das erträumt und Intel nicht CPUs so baut, wie Microsoft sich das wünschen würde. Man arbeitet zwar eng zusammen, aber hier treffen eben auch manchmal unterschiedliche wirtschaftlich Interessen oder Designphilosophien aufeinander und keine Seite möchte sich von der andere Vorschreiben lassen, sie ihre Hardware/Software zu entwickeln hat.
+9
gfhfkgfhfk17.10.22 19:48
Mecki
… arbeitet initial nicht ganz so schnell wie ein "warmer Kern" und kann auch nicht immer gleich mit voller Taktrate betrieben werden (bzw. volle Taktrate, aber nicht Turbo-Taktrate), er muss erst mal auf "Betriebstemperatur" kommen, sonst kann es zu Hardwarefehlern führen.
Das stimmt nicht. Es werden mittlerweile nur noch FETs (Feldeffektransistor) verwendet und keine BJTs mehr. Daher können die CPUs komplett kalt sein, und sie funktionieren problemlos. Eindrucksvoll sieht man das an der Overclockerszene, die die CPUs mit Flüssigstickstoff auf -196°C herunterkühlen. Das geht nur mit FETs, BJTs funktionieren in diesem Temperaturfenster nicht mehr. Je länger die CPU kalt ist, desto länger kann sie im Turbomodus laufen. D.h. eine kalte CPU bzw. Kern ist eindeutig von Vorteil.

Der Punkt ist, dass das Switchen der Threads einfach zu viel Zeit braucht, da die Caches der Kerne geleert werden müssen und neu geladen werden müssen. Daher kommt der große Verlust. Beim HPC pinnt man deshalb seit Jahren die Threads fest an die Kerne, damit es zu keinen Kontextwechseln kommt. Sprich Threads von einem Core auf einem anderen verlagert werden, das ergibt in diesem Kontext keinen Sinn. Das macht je nach HPC-Code 10-30% Performance Unterschied aus.
Mecki
Intel liefert zwar die CPU, aber nicht das Betriebssystem und Microsoft liefert ein Betriebssystem, aber hat nicht die CPU entworfen.
Das Problem betrifft nur Windows, unter Linux liefern die Hersteller üblicherweise selbst den Code für solche Dinge.
+10
Solaris
Solaris18.10.22 09:25
Cores können kalt unter voller Last betrieben werden, keine Frage. Ich denke es geht um Performance und Efficiency, da ein Core im Sleep auch der ganze Cache geflushed hat und diesen erst wieder laden muss. Diese Cycles, die dafür verwendet werden müssen, kosten Zeit und Energie und "stören" die anderen Kerne (Bandbreite

Die Aufwachzeiten sind übrigens abhängig vom der Taktfrequenz, des C-Modus ("C-State") von sowohl Kern als auch dem ganzen Package und der Latenz zwischen dem Kern der das Wake-up initiiert und dem Kern der aufwachen soll. Die Latenzen für einen Wake-up eines Kerns betragen mehrere µs.
+1
Thyl18.10.22 11:02
Wichtigere Frage: Wie Apple die Taktfrequenz der Performance/GPU-Kerne steuert bzw. auslegt. Vor allem die im Mac Pro. Die zwei Jahre der Transition sind praktisch rum und der Abstand der bisher vorgestellten Modelle insbesondere im Graphikbereich zu den stärksten GPUs im Mac Pro erscheint irgendwie immer noch unüberwindlich.

Und man muss ja auch bedenken, dass seit dessen Erscheinen Leistungsfortschritte stattgefunden habe.
+1
Mecki
Mecki18.10.22 13:01
gfhfkgfhfk
Daher können die CPUs komplett kalt sein, und sie funktionieren problemlos.
Warm und kalt bezog sich nicht auf reale Temperaturen, das war nur eine Analogie, daher auch "Betriebstemperatur" in Anführungszeichen. Guckst du hier
Another scheduler effort detailed this week is "Nest" that aims to keep tasks on "warm cores" with hopes of lower latency due to being already at higher clock/performance states and ideally operating at an optimal turbo/boost frequency.
Ich kann nichts dafür, dass selbst die Leute hinter den Patch von warmen und kalten Kernen sprechen.
0
gfhfkgfhfk18.10.22 15:39
Mecki
Ich kann nichts dafür, dass selbst die Leute hinter den Patch von warmen und kalten Kernen sprechen.
Es geht ums Thema Übersetzung. Nicht alles was man im Englischen nutzt kann man 1:1 ins Deutsche übersetzen. Insbesondere im technischen Bereich benutzt man im Englischen oft sehr flapsige Begriffe, das lässt sich nur schwer übertragen.
0

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.