ARM big.LITTLE: Unterschied zwischen den Versionen

5 Bytes hinzugefügt ,  7. September 2016
Keine Bearbeitungszusammenfassung
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung
Zeile 2: Zeile 2:


== Konzept ==
== Konzept ==
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''eund dienergiesparenden als ''LITTLE'' bezeichnet werden. Hieraus ergibt sich auch der Architekturname ''big.LITTLE''.
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 Migration ===
=== Cluster Migration ===
[[Datei:Big.Little Cluster Switching.png|thumb|Schematische Darstellung des Clusterings.]]
[[Datei:Big.Little Cluster Switching.png|thumb|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. Dieses wird daraufhin aktiviert und das bisher aktive deaktiviert. Diese simple Implementierung ist bspw. beim Exynos 5 von Samsung vorzufinden.<ref>{{Internetquelle|autor = Peter Clarke, EETimes|titel = Benchmarking ARM’s big-little architecture|url = http://www.embedded.com/electronics-news/4419448/Benchmarking-ARM-s-big-little-architecture|zugriff = 2016-01-21|werk = Embedded}}</ref>
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.<ref>{{Internetquelle|autor = Peter Clarke, EETimes|titel = Benchmarking ARM’s big-little architecture|url = http://www.embedded.com/electronics-news/4419448/Benchmarking-ARM-s-big-little-architecture|zugriff = 2016-01-21|werk = Embedded}}</ref>


Mit Einführung der 64-bit-CPUs ''Cortex-A53''<ref>{{Internetquelle|titel = Cortex-A53 Processor - ARM|url = http://www.arm.com/products/processors/cortex-a/cortex-a53-processor.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref> und ''Cortex-A57''<ref>{{Internetquelle|titel = Cortex-A57 Processor - ARM|url = http://www.arm.com/products/processors/cortex-a/cortex-a57-processor.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref> wurde das System auf diese übertragen und erweitert. Hier können Tasks nicht nur clusterweise, sondern auch pro Kern übertragen werden.<ref>{{Internetquelle|titel = big.LITTLE Technology - ARM|url = http://www.arm.com/products/processors/technologies/biglittleprocessing.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref>
Mit Einführung der 64-bit-CPUs ''Cortex-A53''<ref>{{Internetquelle|titel = Cortex-A53 Processor - ARM|url = http://www.arm.com/products/processors/cortex-a/cortex-a53-processor.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref> und ''Cortex-A57''<ref>{{Internetquelle|titel = Cortex-A57 Processor - ARM|url = http://www.arm.com/products/processors/cortex-a/cortex-a57-processor.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref> wurde das System auf diese übertragen und erweitert. Hier können Tasks nicht nur clusterweise, sondern auch pro Kern übertragen werden.<ref>{{Internetquelle|titel = big.LITTLE Technology - ARM|url = http://www.arm.com/products/processors/technologies/biglittleprocessing.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref>
Zeile 14: Zeile 14:
=== In-Kernel-Switcher (IKS) ===
=== In-Kernel-Switcher (IKS) ===
[[Datei:In Kernel Switcher.jpg|thumb|Schematische Darstellung des Clusterings.]]
[[Datei:In Kernel Switcher.jpg|thumb|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.<ref>{{Internetquelle|titel = big.LITTLE Software Update|url = http://www.linaro.org/blog/hardware-update/big-little-software-update/|zugriff = 2016-01-21|sprache = en-US|werk = Linaro}}</ref> 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 der ''big'' eingeschalten werden muss oder nicht. <ref>{{Internetquelle|titel = projects/big.LITTLE.MP/Big.Little.Switcher/Docs/in-kernel-code - Linaro Wiki|url = https://wiki.linaro.org/projects/big.LITTLE.MP/Big.Little.Switcher/Docs/in-kernel-code|zugriff = 2016-01-21|werk = wiki.linaro.org}}</ref><ref>{{Cite web|url = http://www.armtechforum.com.cn/2013/2_MovingbigLITTLETowardFullyHeterogeneousGlobalTaskScheduling.pdf|title = Moving big.LITTLETM Toward Fully Heterogeneous - Global Task Scheduling|accessdate = 2016-01-21|format = PDF}}</ref>
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.<ref>{{Internetquelle|titel = big.LITTLE Software Update|url = http://www.linaro.org/blog/hardware-update/big-little-software-update/|zugriff = 2016-01-21|sprache = en-US|werk = Linaro}}</ref> 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. <ref>{{Internetquelle|titel = projects/big.LITTLE.MP/Big.Little.Switcher/Docs/in-kernel-code - Linaro Wiki|url = https://wiki.linaro.org/projects/big.LITTLE.MP/Big.Little.Switcher/Docs/in-kernel-code|zugriff = 2016-01-21|werk = wiki.linaro.org}}</ref><ref>{{Cite web|url = http://www.armtechforum.com.cn/2013/2_MovingbigLITTLETowardFullyHeterogeneousGlobalTaskScheduling.pdf|title = Moving big.LITTLETM Toward Fully Heterogeneous - Global Task Scheduling|accessdate = 2016-01-21|format = PDF}}</ref>


{{Clear}}
{{Clear}}
11.008

Bearbeitungen