Zum Inhalt springen

ARM big.LITTLE: Unterschied zwischen den Versionen

10 Bytes hinzugefügt ,  9. September 2016
K
Referenz korrigiert: http://www.arm.com/files/downloads/big.LITTLE_Final.pdf
(erste Version)
 
K (Referenz korrigiert: http://www.arm.com/files/downloads/big.LITTLE_Final.pdf)
 
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
Mit dem ''Cortex-A7''<ref>{{Internetquelle|titel = Cortex-A7 Processor - ARM|url = http://www.arm.com/products/processors/cortex-a/cortex-a7.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref> führte '''ARM''' das sogenannte '''big.LITTLE''' Konzept, eine Implementierung einer heterogenen Computerarchitektur. Das Ziel ist dabei die Vereinbarung von energiesparenden mit Performance-starken Prozessor-Komponenten auf einem [[SoC]]. So kann bspw. die Rechenleistung eines ''Cortex-A15''<ref>{{Internetquelle|titel = Cortex-A15 Processor - ARM|url = http://www.arm.com/products/processors/cortex-a/cortex-a15.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref> 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.<ref>{{Internetquelle|titel = Linaro enhances Linux support for ARM Big.Little|url = http://linuxgizmos.com/linaro-optimizes-linux-support-for-arm-big-little/|zugriff = 2016-01-21|sprache = en-US|werk = LinuxGizmos}}</ref>
Mit dem ''Cortex-A7''<ref>{{Internetquelle|titel = Cortex-A7 Processor - ARM|url = http://www.arm.com/products/processors/cortex-a/cortex-a7.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref> 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''<ref>{{Internetquelle|titel = Cortex-A15 Processor - ARM|url = http://www.arm.com/products/processors/cortex-a/cortex-a15.php|zugriff = 2015-10-24|werk = www.arm.com}}</ref> 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.<ref>{{Internetquelle|titel = Linaro enhances Linux support for ARM Big.Little|url = http://linuxgizmos.com/linaro-optimizes-linux-support-for-arm-big-little/|zugriff = 2016-01-21|sprache = en-US|werk = LinuxGizmos}}</ref>


== 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}}
Zeile 20: Zeile 20:
=== Global Task Scheduling (GTS) ===
=== Global Task Scheduling (GTS) ===
[[Datei:Global Task Scheduling.jpg|thumb|Schematische Darstellung der Architektur.]]
[[Datei:Global Task Scheduling.jpg|thumb|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.<ref>{{Cite web|url = http://www.arm.com/files/downloads/big.LITTLE_Final.pdf|title = Big.LITTLE Processing with ARM Cortex™-A15 & Cortex-A7|accessdate = 2016.01.21|offline = yes|archiveurl = http://web.archive.org/web/20131012055022/http://www.arm.com/files/downloads/big.LITTLE_Final.pdf|archivedate = 2013-10-12}}</ref> Aus dieser Implementierung ergeben sich folgende Vorteile:<ref>{{Internetquelle|titel = ARM big.LITTLE|url = https://en.wikipedia.org/w/index.php?title=ARM_big.LITTLE&oldid=698449421|zugriff = 2016-01-21|sprache = en}}</ref>
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.<ref>{{Cite web|url = http://www.arm.com/files/downloads/big.LITTLE_Final.pdf|title = Big.LITTLE Processing with ARM Cortex™-A15 & Cortex-A7|accessdate = 2016-01-21|dead-url= yes|archiveurl = http://web.archive.org/web/20131012055022/http://www.arm.com/files/downloads/big.LITTLE_Final.pdf|archivedate = 2013-10-12}}</ref> Aus dieser Implementierung ergeben sich folgende Vorteile:<ref>{{Internetquelle|titel = ARM big.LITTLE|url = https://en.wikipedia.org/w/index.php?title=ARM_big.LITTLE&oldid=698449421|zugriff = 2016-01-21|sprache = en}}</ref>
* 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.
* 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 Implementierung im Scheduler beschleunigt die Entscheidung zum Migrieren eines Tasks auf einen anderen Kern im Vergleich zur cpufreq-Framework Implementierung bei IKS.
Autopatrol, Moderator
1.304

Bearbeitungen

Cookies helfen uns bei der Bereitstellung von Android Wiki. Durch die Nutzung von Android Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.