ARM big.LITTLE

Mit dem Cortex-A7[1] führte ARM das sogenannte big.LITTLE Konzept, eine Implementierung einer heterogenen Computerarchitektur, ein. Das Ziel ist dabei die Vereinbarung von energiesparenden mit Performance-starken Prozessor-Komponenten auf einem SoC. So kann bspw. die Rechenleistung eines Cortex-A15[2] mit der kleinen Energieaufnahme des Cortex-A7 kombiniert werden. Der Nutzer profitiert damit von einer leistungsstarken CPU für rechenintensive Aufgaben und kann gleichzeitig Vorteile aus einer energiesparenden CPU für rechen-arme Aufgaben ziehen.[3]

KonzeptBearbeiten

Bei der softwareseitigen Implementierung und Verwaltung der zur Verfügung stehenden CPUs kann zwischen folgenden 3 Varianten unterschieden werden. Hierbei gilt, dass die Performance-starken Prozessoren als big und die energiesparenden als LITTLE bezeichnet werden. Hieraus ergibt sich auch der Architekturname big.LITTLE.

Cluster MigrationBearbeiten

 
Schematische Darstellung des Clusterings.

Bei der sogenannten Cluster Migration werden die Prozessoren gleichen Typs in jeweils einem Cluster zusammengafsst, also bspw. alle Cortex-A7 CPUs als LITTLE Cluster und alle Cortex-A15 als big Cluster. Das Betriebssystem bekommt lediglich eines der beiden Cluster zur gleichen Zeit zu sehen. Die Aufgaben werden auf ein Cluster verteilt und, sollte dieses an die Leistungsgrenze (für das LITTLE Cluster), bzw. an die Leistungsuntergrenze (für das big Cluster) gelangen, werden diese Aufgaben auf das jeweils andere Cluster übertragen. Dieser wird daraufhin aktiviert und der bisher aktive deaktiviert. Diese simple Implementierung ist bspw. beim Exynos 5 von Samsung vorzufinden.[4]

Mit Einführung der 64-bit-CPUs Cortex-A53[5] und Cortex-A57[6] wurde das System auf diese übertragen und erweitert. Hier können Tasks nicht nur clusterweise, sondern auch pro Kern übertragen werden.[7]

In-Kernel-Switcher (IKS)Bearbeiten

 
Schematische Darstellung des Clusterings.

Auch das In-Kernel-Switcher -Modell fasst die verschiedenen CPUs in mehrere Cluster zusammen, allerdings hier jeweils ein leistungsstarken und ein energiesparenden, die einzeln als virtuelle Kerne dem Betriebssystem zur Verfügung gestellt werden. Daraus können sich bspw. 4 Cluster mit jeweils einer Cortex-A7 und einer Cortex-A15 CPU ergeben.[8] Die Aufgaben (~ Tasks) werden anschließend vom System mit größtenteils bekannten Mechanismen an die einzelnen, virtuellen Kerne vergeben, die bei der Abarbeitung entscheiden, ob die big CPU eingeschalten werden muss oder nicht. [9][10]

Global Task Scheduling (GTS)Bearbeiten

 
Schematische Darstellung der Architektur.

Das Global Task Scheduling (auch bekannt als big.LITTLE MP; MP = heterogeneous multi-processing) ist eine Implementierung, die dem Grundgedanken der heterogenen Computerarchitektur vermutlich am nächsten kommt. Hierbei werden die zur Verfügung stehenden CPUs nicht geclustered. Das Betriebssystem kann Tasks an jeden einzelnen CPU-Kern zuweisen, je nachdem, welche Leistung benötigt wird, werden big oder LITTLE CPUs verwendet, aktiviert oder deaktiviert. Auch die Übertragung einer Task von einem LITTLE auf ein big CPU und vice versa ist möglich.[11] Aus dieser Implementierung ergeben sich folgende Vorteile:[12]

  • Genauere Verteilung der Arbeitslast auf verschiedene Kerne. Da der Scheduler die Aufgaben direkt zwischen den Kernen migrieren kann, wird der Kernel Overhead reduziert und dementsprechend kann Energie eingespart werden.
  • Die Implementierung im Scheduler beschleunigt die Entscheidung zum Migrieren eines Tasks auf einen anderen Kern im Vergleich zur cpufreq-Framework Implementierung bei IKS.
  • Die einfache Möglichkeit, eine verschiedene, asymetrische Anzahl an SoCs zu unterstützen(bspw. mit 2 Cortex-A15 Kernen und 4 Cortex-A7).
  • Die Möglichkeit, alle Kerne gleichzeitig zu verwenden, was eine verbesserte Peak-Performance im Vergleich zu IKS bedeutet.

EinzelnachweiseBearbeiten

  1. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2015-10-24.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  2. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2015-10-24.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  3. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2016-01-21 (en-us).Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  4. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatPeter Clarke, EETimes: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2016-01-21.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  5. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2015-10-24.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  6. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2015-10-24.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  7. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2015-10-24.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  8. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2016-01-21 (en-us).Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  9. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2016-01-21.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  10. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  11. Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
  12. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatInterner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2016-01-21 (english).Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.