ARM groß.KLEIN - ARM big.LITTLE

Cortex A57/A53 MPCore big.LITTLE CPU-Chip

ARM big.LITTLE ist eine von ARM Holdings entwickelte heterogene Computerarchitektur , die relativ batteriesparende und langsamere Prozessorkerne ( LITTLE ) mit relativ leistungsfähigeren und leistungshungrigen ( big ) koppelt . Normalerweise ist nur eine "Seite" oder die andere gleichzeitig aktiv, aber alle Kerne haben Zugriff auf dieselben Speicherbereiche, sodass Arbeitslasten im laufenden Betrieb zwischen Big- und Little-Kernen ausgetauscht werden können. Die Absicht besteht darin, einen Multi-Core-Prozessor zu schaffen , der sich besser an dynamische Rechenanforderungen anpassen kann und weniger Strom verbraucht als die Taktskalierung allein. Das Marketingmaterial von ARM verspricht bis zu 75 % Einsparungen beim Stromverbrauch für einige Aktivitäten. Am häufigsten werden ARM big.LITTLE-Architekturen verwendet, um ein Multi-Prozessor-System-on-Chip (MPSoC) zu erstellen .

Im Oktober 2011 wurde big.LITTLE zusammen mit dem Cortex-A7 angekündigt , der architektonisch kompatibel mit dem Cortex-A15 entworfen wurde . Im Oktober 2012 kündigte ARM die Kerne Cortex-A53 und Cortex-A57 ( ARMv8-A ) an, die ebenfalls interkompatibel sind, um den Einsatz in einem big.LITTLE-Chip zu ermöglichen. ARM kündigte später den Cortex-A12 auf der Computex 2013 an, gefolgt vom Cortex-A17 im Februar 2014. Sowohl der Cortex-A12 als auch der Cortex-A17 können auch in einer big.LITTLE-Konfiguration mit dem Cortex-A7 gepaart werden.

Das Problem so groß.LITTLE löst

Bei einer gegebenen Bibliothek von CMOS- Logik steigt die Wirkleistung, wenn die Logik mehr pro Sekunde schaltet, während der Leckstrom mit der Anzahl der Transistoren zunimmt. CPUs, die auf schnelle Ausführung ausgelegt sind, unterscheiden sich also von CPUs, die zum Energiesparen entwickelt wurden. Wenn eine sehr schnelle, außer Betrieb befindliche CPU mit sehr niedrigen Geschwindigkeiten im Leerlauf läuft, könnte eine CPU mit viel weniger Lecks (weniger Transistoren) die gleiche Arbeit leisten. Zum Beispiel könnte es einen kleineren (weniger Transistoren) Speichercache oder eine einfachere Mikroarchitektur wie eine Pipeline verwenden . big.LITTLE ist eine Möglichkeit, für beide Fälle zu optimieren: Leistung und Geschwindigkeit im selben System.

In der Praxis kann ein big.LITTLE-System überraschend unflexibel sein. Ein Problem sind die Anzahl und die Typen der Leistungs- und Taktdomänen, die der IC bereitstellt. Diese entsprechen möglicherweise nicht den standardmäßigen Energieverwaltungsfunktionen eines Betriebssystems. Ein weiterer Grund ist, dass die CPUs nicht mehr über gleichwertige Fähigkeiten verfügen und es schwieriger wird, die richtige Softwareaufgabe der richtigen CPU zuzuordnen. Die meisten dieser Probleme werden durch Flexibilisierung der Elektronik und Software gelöst.

Run-State-Migration

Je nach im Kernel implementiertem Scheduler gibt es drei Möglichkeiten, die verschiedenen Prozessorkerne in einem big.LITTLE-Design anzuordnen .

Cluster-Schaltung

Big.Little Cluster-Switching

Der Ansatz des Clustermodells ist die erste und einfachste Implementierung, bei der der Prozessor in gleich große Cluster von "großen" oder "KLEINEN" Kernen angeordnet wird. Der Betriebssystem-Scheduler kann jeweils nur einen Cluster sehen; Wenn die Belastung des gesamten Prozessors zwischen niedrig und hoch wechselt, wechselt das System zum anderen Cluster. Alle relevanten Daten werden dann durch den gemeinsamen L2-Cache geleitet , der aktive Core-Cluster wird ausgeschaltet und der andere aktiviert. Es wird eine Cache Coherent Interconnect (CCI) verwendet. Dieses Modell wurde im Samsung Exynos 5 Octa (5410) implementiert .

In-Kernel-Switcher (CPU-Migration)

Big.Little In-Kernel-Switcher

Die CPU-Migration über den In-Kernel-Switcher (IKS) beinhaltet die Paarung eines „großen“ Kerns mit einem „KLEINEN“ Kern mit möglicherweise vielen identischen Paaren in einem Chip. Jedes Paar arbeitet als ein sogenannter virtueller Kern , und nur ein realer Kern wird gleichzeitig (vollständig) hochgefahren und ausgeführt. Der „große“ Kern wird bei hoher Nachfrage und der „KLEINE“ Kern bei geringer Nachfrage eingesetzt. Wenn sich die Nachfrage des virtuellen Kerns ändert (zwischen hoch und niedrig), wird der eingehende Kern hochgefahren, der Betriebsstatus wird übertragen , der ausgehende wird heruntergefahren und die Verarbeitung auf dem neuen Kern fortgesetzt. Die Umschaltung erfolgt über das cpufreq- Framework. In Linux 3.11 wurde eine komplette big.LITTLE IKS-Implementierung hinzugefügt. big.LITTLE IKS ist eine Verbesserung der Clustermigration ( § Clustered Switching ), der Hauptunterschied besteht darin, dass jedes Paar für den Scheduler sichtbar ist.

Eine komplexere Anordnung beinhaltet eine nicht symmetrische Gruppierung von „großen“ und „KLEINEN“ Kernen. Ein einzelner Chip könnte einen oder zwei „große“ Kerne und viele weitere „KLEINE“ Kerne haben oder umgekehrt. Ähnliches hat Nvidia mit dem stromsparenden "Companion Core" in ihrem Tegra 3 System-on-Chip geschaffen .

Heterogenes Multi-Processing (globale Aufgabenplanung)

Big.Little heterogenes Multi-Processing

Das leistungsstärkste Nutzungsmodell der big.LITTLE-Architektur ist Heterogeneous Multi-Processing (HMP), das die gleichzeitige Nutzung aller physikalischen Kerne ermöglicht. Threads mit hoher Priorität oder Rechenintensität können dabei den "großen" Kernen zugeordnet werden, während Threads mit geringerer Priorität oder geringerer Rechenintensität, wie beispielsweise Hintergrundaufgaben, von den "KLEINEN" Kernen ausgeführt werden können.

Dieses Modell wurde im Samsung Exynos ab der Exynos 5 Octa-Serie (5420, 5422, 5430) und in den Prozessoren der Apple A-Serie ab dem Apple A11 implementiert .

Terminplanung

Die gepaarte Anordnung ermöglicht eine transparente Umschaltung für das Betriebssystem unter Verwendung der vorhandenen dynamischen Spannungs- und Frequenzskalierung (DVFS). Die vorhandene DVFS-Unterstützung im Kernel (zB cpufreqin Linux) sieht einfach eine Liste von Frequenzen/Spannungen und schaltet zwischen diesen nach Belieben um, genau wie bei der vorhandenen Hardware. Die Low-End-Slots aktivieren jedoch den "kleinen" Kern und die High-End-Slots den "großen" Kern. Dies ist die frühe Lösung, die der CPU-Scheduler "Deadline" von Linux (nicht zu verwechseln mit dem gleichnamigen I/O-Scheduler) seit 2012 bietet.

Alternativ können alle Kerne dem Kernel-Scheduler ausgesetzt werden, der entscheidet, wo jeder Prozess/Thread ausgeführt wird. Dies wird für die ungepaarte Anordnung benötigt, könnte aber möglicherweise auch auf den gepaarten Adern verwendet werden. Dies stellt den Kernel-Scheduler vor einzigartige Probleme, der zumindest bei moderner Standardhardware davon ausgehen konnte, dass alle Kerne in einem SMP- System gleich und nicht heterogen sind . Eine Ergänzung zu Linux 5.0 aus dem Jahr 2019 namens Energy Aware Scheduling ist ein Beispiel für einen Scheduler, der Kerne anders berücksichtigt.

Vorteile der globalen Aufgabenplanung

  • Feinere Kontrolle von Workloads, die zwischen Kernen migriert werden. Da der Scheduler Aufgaben direkt zwischen den Kernen migriert, wird der Kernel- Overhead reduziert und die Energieeinsparungen können entsprechend erhöht werden.
  • Die Implementierung im Scheduler macht auch Wechselentscheidungen schneller als im in IKS implementierten cpufreq-Framework.
  • Die Fähigkeit, unsymmetrische Cluster (zB mit 2 Cortex-A15-Kernen und 4 Cortex-A7-Kernen) problemlos zu unterstützen.
  • Die Möglichkeit, alle Kerne gleichzeitig zu verwenden, um einen verbesserten Spitzenleistungsdurchsatz des SoC im Vergleich zu IKS zu erzielen.

Nachfolger

Im Mai 2017 kündigte ARM DynamIQ als Nachfolger von big.LITTLE an. Es wird erwartet, dass DynamIQ mehr Flexibilität und Skalierbarkeit bei der Entwicklung von Mehrkernprozessoren ermöglicht. Im Gegensatz zu big.LITTLE erhöht es die maximale Anzahl von Kernen in einem Cluster auf 8, ermöglicht unterschiedliche Kerndesigns innerhalb eines einzelnen Clusters und bis zu 32 Gesamtcluster. Die Technologie bietet auch eine feinkörnigere Spannungssteuerung pro Kern und schnellere L2-Cache-Geschwindigkeiten. Allerdings ist DynamIQ nicht mit früheren ARM-Designs kompatibel und wird zunächst nur von den Cortex-A75- und Cortex-A55- CPU-Kernen unterstützt.

Verweise

Weiterlesen

Externe Links