Warum haben Android-Handys mehr Kerne als Computer?

80

Laptops haben normalerweise höchstens vier Kerne und Dualcores sind wahrscheinlich häufiger. Ich habe kürzlich von Quadcore auf Dualcore umgestellt und kann bestätigen, dass es eine begrenzte Anzahl von Anwendungsfällen für Quadcore gibt, selbst bei CPU-intensiven Aufgaben.

Auf der anderen Seite scheinen bei Mobiltelefonen Quadcores, Hexacores und Octacores üblich zu sein. Warum? Welche Aufgaben können sie nutzen?

Ich verstehe, dass big.LITTLE ein Teil der Antwort sein kann. Das heißt, der Hauptvorteil so vieler Kerne besteht nicht in der Möglichkeit, alle gleichzeitig zu verwenden, sondern in der Verwendung eines Kerns, dessen Stromverbrauch der aktuellen Arbeitslast entspricht. Das Snapdragon 625 verfügt jedoch beispielsweise über acht Cortex-A53-Kerne, was für big.LITTLE kein Fall zu sein scheint.

Möglicherweise weist die ARM-Architektur einen niedrigeren Punkt für die optimale Leistung pro Watt auf. Das heißt, ein einzelner Kern, der auf optimale Leistung pro Watt eingestellt ist, führt auf ARM zu einer geringeren Leistung als auf Intel. Daher werden mehr Kerne verwendet, um die Leistung zu erbringen. Dies ist nur eine Hypothese.

Aber selbst in diesem Fall sehe ich nicht, welche Arbeitslast beispielsweise acht Kerne auf einem Mobiltelefon effizient nutzen kann. Auf Laptops kann ich mir einige wie eine vollständige (nicht inkrementelle) Zusammenstellung eines Projekts vorstellen. Aber am Telefon?

  • Spiele können leistungshungrig sein, erfordern jedoch in der Regel GPU-Leistung und nicht CPU, oder?
  • Theoretisch könnten mehrere Kerne die Kompilierung von Android Lollipop / Marshmallow AOT bei der Installation oder beim Upgrade beschleunigen (dh in der Phase „Optimieren von Apps 3/121“). Ich bin mir jedoch nicht sicher, ob dies mehrere Kerne nutzen kann. Soweit ich mich an den Code erinnere, wird immer nur eine App kompiliert, aber möglicherweise gibt es Parallelität im Kompilierungsprozess.
  • Auch Android 7+ könnte beim Kompilieren mehrere Kerne verwenden. Aber da es angeblich im Leerlauf und beim Aufladen kompiliert wird, scheint der Nutzen eher gering zu sein. Zumindest, wenn man das Telefon über Nacht auflädt - es ist mir wirklich egal, ob es in einem solchen Szenario 30 Minuten oder zwei Stunden dauert.
v6ak
quelle
Denken Sie daran, wie ich in meiner Antwort darauf hingewiesen habe, dass Sie die Dinge verkehrt herum zu betrachten scheinen. Viele Core / Parallel-Ausführung ist die Norm, ist nicht Ihr Telefon eine Anomalie für viele Core, es ist die PC-CPU, die eine Anomalie ist.
MotoDrizzt
4
Ihre Frage ist fehlerhaft, PCs können mehr Kerne als Telefone haben. intel.com/content/www/us/en/products/processors/core/x-series/… Und das betrifft nicht einmal Maschinen der Serverklasse , die Dutzende oder sogar Hunderte von Kernen haben können. (Und einige Supercomputer kommen in den Bereich von Tausenden von Kernen.)
JAB
3
@JAB Sicher, aber ich spreche nicht über die maximale Anzahl von Kernen, sondern über die typische Anzahl. Bei Laptops sind mehr als Quadcores eher ungewöhnlich, aber es kann vorkommen, dass Xeon eine Ausnahme darstellt. Bei Mobiltelefonen scheinen sogar Oktakoren relativ häufig zu sein.
v6ak
4
"Ich bin kürzlich von Quadcore auf Dualcore umgestiegen und kann bestätigen, dass es auch bei CPU-intensiven Aufgaben nur eine begrenzte Anzahl von Anwendungsfällen für Quadcore gibt." - Können Sie näher darauf eingehen, wie Sie zu diesem Schluss gekommen sind?
Abdul
@Abdul Es kommt hauptsächlich von meinen Beobachtungen (Systemlast mit htop oder einem ähnlichen Tool) und teilweise von meinen Schlussfolgerungen. Sogar einige taksk, bei denen ich Parallelisierung erwarten würde (z. B. Rendern mit OpenScad), sind Single-Core. Firefox (ESR) verbraucht normalerweise höchstens einen Kern. Inkrementelle Zusammenstellung - Ich habe es nicht gemessen, aber intuitiv gibt es nicht viele Möglichkeiten, unabhängige Aufgaben zu finden. (Vollständige Zusammenstellung ist ein anderer Fall.)
v6ak

Antworten:

63

Wie Sie bereits bemerkt haben, ist die big.LITTLE- Kombinationsstrategie (technisch gesehen HMP , Heterogeneous Multi-Processing- Cluster) der Hauptgrund für so viele (und manchmal überwältigend viele) Kerne. Ein mobiles Gerät ist häufig mit mehreren Szenarien konfrontiert, darunter auch Szenarien mit hoher und geringer Belastung.

Ein extremes Beispiel der Verbraucherklasse ist das Helio X20 von MediaTek mit 2 leistungsorientierten A72-Kernen, 4 symmetrischen A53-Kernen und 4 energieeffizienten A35-Kernen. Das ist in verschiedenen Anwendungsfällen sehr flexibel. Ich denke jedoch, 8 Kerne 2 Cluster ist in der Regel genug.

Es gibt auch ein anderes Desktop-ähnliches Beispiel, die Snapdragon 800-Serie von Qualcomm (S 800, S 801 und S 805). In jedem SoC gibt es nur 4 Kerne derselben Mikroarchitektur, von denen 2 höher und 2 niedriger getaktet sind. Qualcomm stellte diese SoCs her, weil sie sich ihrer eigenen Mikroarchitektur (Krait 400 und Krait 450) sehr sicher waren.

Für Spiele, auch wenn sie anscheinend eher GPU-Leistung als CPU verlangen, belasten sie die CPU dennoch stark. Eine GPU kann nicht alleine arbeiten, ohne dass etwas anderes sie mit zu verarbeitenden Daten versorgt, und das ist eine der Hauptaufgaben, die die CPU während des Spielens erledigt. In den meisten Spielefällen rendert die GPU nur Grafiken, während alle anderen Aufgaben wie das Laden von Daten, Ressourcen und Ressourcen sowie das Berechnen der Mechanismen im Spiel wie System, Umgebung und Physik von der CPU ausgeführt werden. Sie werden keine höhere Bildrate feststellen, wenn Sie Ihre GPU aktualisieren, während Sie sich an eine Low-End-CPU halten.

Ein zweiter Grund ist, wie Android CPU-Ressourcen nutzt . Android macht so ziemlich ihre eigene Anwendungsumgebung. Es verwendet nur Codes (und APIs) aus Java, verfügt jedoch über eine eigene virtuelle Maschine namens Dalvik, die später durch ART (API Level 21) ersetzt wurde. APKs haben ihre ausführbaren Codes in einem "neutralen" Format, ähnlich wie .classDateien in Java. Bevor sie ausgeführt werden, werden die Codes noch einmal in die systemeigenen Anweisungen der Maschine kompiliert [1] . Der Kompilierungsprozess ist multithreaded und kann Multikerne für eine Leistungssteigerung verwenden.
Und wenn eine App ausgeführt wird, gibt es mehrere andere Prozesse und Mechanismen (wie den Garbage Collector), die neben oder parallel zur App ausgeführt werden. Mit mehr Kernen können die unterstützenden Prozesse sowie die Haupt-App effizienter ausgeführt werden.
1. Wenn Sie einen Dateitypbezeichner verwenden, werden Sie feststellen, dass "optimierte" Dex-Dateien im ELF-Format vorliegen, während die "neutralen" Dex-Dateien nur ein eigenes Format haben.

Ein weiterer Grund ist, dass ARM-Kerne nicht so schnell arbeiten können wie ein Intel x86-Chip . Die Intel x86-Mikroarchitektur geht auf das Jahr 1976 zurück, als der Intel 8086- Chip entwickelt wurde, was bedeutet, dass sich der x86-Chip über eine lange Zeit entwickelt hat. Ein einzelner moderner High-End-ARM-Cortex-A73-Kern ist nur so leistungsfähig wie ein Intel-Clarkdale-Kern, am Beispiel des Core i5-660 (GeekBench, Single-Core). Dies liegt daran, dass x86 eine CISC- Mikroarchitektur und ARM eine RISC istMikroarchitektur. Sie möchten mit Sicherheit kein Telefon, das mit nur zwei oder mehr aktiven Apps in Verzug gerät. Weitere Kerne entlasten den Druck. Aus diesem Grund sind Dual-Core-SoCs nur bei intelligenten Uhren relativ beliebt. Wer braucht Leistung auf einer Smartwatch?

Interessanterweise führen mehr Kerne zu weniger Energie als ein einzelner Kern bei gleicher Last . Das Verhältnis zwischen CPU-Frequenz und Stromverbrauch ist mehr als linear, sodass die doppelte Frequenz immer mehr als das Doppelte oder sogar das Dreifache oder Vierfache des Stromverbrauchs erfordert und gleichzeitig weniger als die doppelte Leistung erbringt (aufgrund anderer Ressourcenbeschränkungen wie Cache) ). Auf diese Weise können 4 Kerne einen einzelnen Kern bei gleicher Last problemlos schlagen, wodurch eine bessere Leistung erzielt und gleichzeitig weniger Strom benötigt wird.

Weitere Lektüre:

iBug
quelle
1
Ich erinnere mich, dass ich irgendwo gelesen oder gesehen habe, dass der Linux-Kernel vor vielen Jahren an einer guten Multi-Core-Unterstützung mit Schwerpunkt auf Supercomputern gearbeitet hatte, und diese Bemühungen erwiesen sich "in der Zukunft" (jetzt) ​​für Smartphones als nützlich, wie eine Art " Unfall "
Marc.2377
3
Diese Antwort scheint die Frage nicht wirklich zu beantworten, obwohl sie akzeptiert wurde. Diese Antwort scheint zu lauten: "Warum möchte ich möglicherweise zusätzliche Kerne in meinem Telefon?" Das ist nicht die Frage zur Hand. Es erklärt nicht den Unterschied zwischen PC und Telefon. Die Punkte, die darüber gegeben werden, warum ein Telefon mehr Kerne haben möchte, gelten auch für Desktop-Computer, insbesondere die Punkte über Spiele.
Aaron
8
Die Behauptung von 1976 zu x86-CPUs ist etwas irreführend. ARM-Kerne können 1983, nur 7 Jahre später, auf das Acorn RISC Machine-Projekt zurückgeführt werden. In gewisser Weise ist es ein Vorteil, dass Acorn einige Dinge gelernt hat, die bei der Entwicklung von x86- und ähnlichen CPU-Designs falsch waren, und diese in das RISC Machine-Projekt einbezogen hat ARM.
user1937198
2
Auch RISC vs CISC hat nichts damit zu tun, Intel-CPUs betreiben intern einen RISCish-Core (uops). Der wirkliche Unterschied ist Out oder Order vs. In Order Execution.
user1937198
5
Das x86-Ding ist ganz ... falsch. Es handelt sich um superskalare Chips. Grundlegende Implementierungen sind bei weitem nicht so gut wie die klassische RISC-Pipeline, die in den meisten ARM-Chips verwendet wird. Es ist auch erwähnenswert, dass das Verknüpfen von Kernen mit superskalaren Designs SEHR schwierig ist, da sie nicht in der richtigen Reihenfolge ausgeführt werden und die Cache-Hierarchie nicht stimmt. Niemand wusste, was sie vermissten, also gab es keine wirkliche Nachfrage danach. Wenn Sie bemerken, dass einige der neueren Intel-Iterationen nicht in den Chips mit hoher Kernanzahl enthalten sind - sie befinden sich auf Broadwell, weil sie Synchronisierungsmaterial verworfen haben - nicht genügend Speicherplatz.
Alec Teal
15

Der Grund ist so einfach wie kompliziert.

Die kurze Antwort lautet: "Weil der Mobilfunkmarkt noch nie von Intel getrieben wurde und wird".

Die lange Antwort ist viel zu lang, um hier fortzufahren, aber das grundlegende Konzept ist, dass Intel den PC-Markt jahrelang mit allen Mitteln beherrscht, bis zu dem Punkt, dass er bezahlt und korrumpiert (und dafür bestraft wird), dass seine CPUs die sind erste und einzige Wahl für PC-Hersteller.

Die vollständige Kontrolle über den Markt hat es Intel ermöglicht, die CPU-Preise zu erhöhen und gleichzeitig künstlich zu entscheiden, welche Funktionen und wie viel Rechenleistung die Benutzer hätten wünschen sollen. Wenn Sie ein wenig die Intel-Geschichte analysieren, werden Sie feststellen, dass die Hauptstärke im Wesentlichen darin liegt die Erhöhung der CPU-Frequenz, so dass es meistens nie versucht hat, etwas wirklich Kluges oder Innovatives zu tun; und es hat es nicht gebraucht, weil es nur den Leuten sagen kann "man braucht keine Kerne mehr, aber ich habe diese saftigen neuen CPUs, die 100 MHz schneller laufen". Gleichzeitig könnte es Multicore-CPUs auf dem Servermarkt zu absurd hohen Preisen verkaufen (weil Server immer gebraucht haben)Tonnen von paralleler Energie, bis zu dem Punkt, dass es einen aktuellen Trend gibt, Server zu realisieren, die ... raten Sie mal was? Hunderte Ihrer billigen Telefon-CPUs arbeiten parallel

Dies hat sich wiederum in der Entwicklergemeinschaft niedergeschlagen, die die Bedeutung der parallelen Programmierung nie erkannt hat, so dass sich viele, wenn nicht die meisten von ihnen nie die Mühe machten, mehr als einen Thread gleichzeitig zu verwenden oder ihn in einem Non auszudrücken Auf technische Weise kann die Software mehr als eine Aufgabe gleichzeitig ausführen. Was im Übrigen sinnvoll ist, wenn 99% Ihres Kundenstamms zwei Kerne mit max. Leider hatte dies zu der Legende geführt, dass parallele Algorithmen wirklich schwierig zu implementieren sind und nur für eine kleine Teilmenge von Problemen gelten.

Stattdessen hat der Mobilfunkmarkt letztendlich noch nie Erfolg mit Intel gehabt. Im Gegenteil, eigentlich versucht Intel die meiste Zeit etwas anderes als die übliche X86-Architektur. Da es also an Einfluss und Kontrolle auf dem Markt mangelt, sind die anderen Hersteller von CPUs in die Richtung gegangen, die seit Jahrhunderten außerhalb des PC-Marktes üblich ist: Parallel Computing.

motoDrizzt
quelle
12
Sind Sie sicher, dass Sie die richtige Frage beantworten ?
iBug
7
@iBug Diese Antwort trifft besser auf die Frage des OP zu als auf die akzeptierte Antwort. Die akzeptierte Antwort ist diejenige, die die richtige Frage nicht beantwortet.
Aaron
6
"Die CPU-Preise künstlich aufblähen" -> Wenn Intel die Preise künstlich aufblähen würde, warum verwendet die Konkurrenz vergleichbare Hardware und warum saugen Computer mit ARM- Technologie so stark im Vergleich zu Intel-Hardware? Dieser Hass ist lächerlich. CPU's herzustellen ist schwer . Das, was ARM bei Mobilgeräten so beliebt machte, war die big.LITTLE-Idee, die sie vor Intel entwickelt hatten.
T. Sar
6
Intel kontrolliert den PC-Chip-Markt nicht und hat dies seit vielen Jahren nicht mehr getan. Und der Grund, warum Chipdesigner von schnelleren Uhren auf mehr Kerne umgestiegen sind, ist, dass schnellere Uhren auf einige grundlegende physikalische Einschränkungen stießen. Mehr Kerne waren viel schwieriger zu lösen, daher wurde die Lösung verschoben, bis es die kostengünstigste Möglichkeit war, die Leistung weiter zu steigern.
Kevin Krumwiede
6
Dies ist eher eine Schande über das böse Intel-Unternehmen, das IMO nicht verdient hat, da ARM unabhängige Chiphersteller ebenso gut mit Lizenzen versieht.
Dmitry Grigoryev
9

Es gibt zwei Faktoren, einen sehr praktischen und einen historischen.

Der praktische Grund ist die Verwendung gemischter Architekturen in Telefonen. Der Stromverbrauch ist entscheidend, wenn Telefone viel Zeit in Modi verbringen, in denen sie nur sehr wenig Leistung benötigen. Es ist sinnvoll, einige Kerne für einen minimalen Stromverbrauch zu optimieren, wenn nur wenig Leistung benötigt wird, während einige Kerne für eine maximale Leistung bei Bedarf optimiert werden.

Der andere Grund ist weitgehend historisch. Bis 2005 waren Desktop-CPUs alle Einzelkerne. Die Verbesserung der Desktop-CPU-Leistung bestand fast ausschließlich darin, einen Kern zu erstellen, der so viele Anweisungen pro Sekunde wie möglich ausführen kann. Selbst heute kann so viel Desktop-Software nicht alle Vorteile mehrerer Kerne nutzen, dass viele eine CPU mit 4 Kernen gegenüber einer 8-Kern-CPU mit 20% langsameren Kernen bevorzugen.

Um so viel Leistung wie möglich aus einem einzigen Kern herauszuholen, ist viel CPU-Platz erforderlich. Dies ist eine Immobilie, die ansonsten zur Bereitstellung weiterer Kerne verwendet werden könnte. Dies ist der Grund, warum Intels neueste Kaby Lake-CPUs maximal 4 Kerne haben und die Leute sie kaufen, weil jeder Kern schneller ist als die Kerne ihres Vorgängers. Für viele ist dies sogar ein Upgrade von CPUs mit einer höheren Kernanzahl.

Erwarten Sie im Laufe der Zeit viel mehr Desktop-Software, die für die Unterstützung von mehr Kernen optimiert ist. In diesem Fall ziehen die technischen Kompromisse mehr Kerne schnelleren Kernen auf Desktops vor. Während Kerne mit ziemlicher Sicherheit noch schneller werden, werden Sie feststellen, dass Leute eine 8-Kern-CPU einer 4-Kern-CPU vorziehen, selbst wenn jeder Kern 20% langsamer ist. Chipdesigner werden dem Markt folgen.

David Schwartz
quelle
5

Es ist von entscheidender Bedeutung, dass ein Telefon in der Lage ist, Rechenleistung in kurzen Intervallen bereitzustellen (bestimmte Apps müssen schnell sein), aber auch eine Überhitzung zu vermeiden (die Wärmeableitung ist für Telefone viel schwieriger als für Laptops oder PCs). Zu diesem Zweck entwerfen Architekten Telefone so, dass sie bei geringer Auslastung einen einzigen Kern verwenden und zusätzliche Kerne bereitstellen, um die Leistung bei Bedarf zu steigern. Wenn Telefone weniger große Kerne verwenden würden, würde eine Überhitzung zu einem Problem werden, selbst wenn die Arbeitslast relativ gering ist.

Quelle: Ein Kurs für Computerarchitektur auf Hochschulniveau.

Tara Eicher
quelle
Um ehrlich zu sein, ist die Fähigkeit, Rechenleistung (wenn Sie das mit Energie meinen ) in kurzen Bursts bereitzustellen, auch für den Desktop von entscheidender Bedeutung. Deshalb haben sie TurboBoost auf Intel-Chips.
Dmitry Grigoryev
Ja, Rechenkraft habe ich gemeint. Es stimmt, dass alle Geräte (einschließlich Telefone und Desktops), auf denen zu einem bestimmten Zeitpunkt eine hohe Auslastung zu erwarten ist, damit umgehen können müssen. Der Hauptunterschied ist die Wärmeableitung.
Tara Eicher
Ich stimme dem zu, was Sie gesagt haben, und wollte nur darauf hinweisen, dass die hohe Arbeitsbelastung nicht nur für Telefone gilt.
Dmitry Grigoryev
2

Erstens kann die Java Virtual Machine in der Vergangenheit mehr von Multi-Core-Anwendungen als übliche Desktop-Software profitieren. Selbst wenn Sie eine Single-Threaded-App in Java schreiben, wird sie auf einem Multicore schneller ausgeführt, da der größte Teil des Garbage Collector-Codes zusammen mit Ihrer App ausgeführt wird.

Zweitens spielt sich im Hintergrund auf Ihrem Telefon eine Menge ab: automatische Updates, Anzeigen-Downloads, Antivirensoftware, Verwaltung des GSM-Moduls usw. Auf einem Laptop würden all diese Aufgaben kaum einen Kern beschäftigen, ARM-Kerne jedoch viel weniger leistungsfähig, daher möchten Sie möglicherweise mindestens einige davon für Hintergrundaufgaben verwenden, wenn Sie ein reaktionsfähiges System benötigen.

Endlich gibt es Marketing. Nicht viele Benutzer sind in der Lage zu beurteilen, ob sie von 8 Kernen profitieren würden, aber ein 8-Kern-Smartphone klingt sicherlich teurer als ein 2- oder 4-Kern-Smartphone.

Dmitry Grigoryev
quelle
2
Ich sehe immer wieder Aussagen entlang der Linie "ARM-Kerne sind viel weniger leistungsfähig" - was bedeutet das genau? Sie haben weniger Takt?
Abdul
2
@Abdul weniger Operationen pro Sekunde. x86-Chips können mehrere Operationen gleichzeitig ausführen, sodass sie ARM auch bei gleicher Taktrate übertreffen. Schauen Sie sich diesen Vergleich an : Der obere ARM-Chip (GT-I9100) ist etwa zehnmal langsamer als der obere x86-Chip (i7-2920XM).
Dmitry Grigoryev
Ist "Operationen pro Sekunde" gleichbedeutend mit FLOPS?
Abdul
@Abdul Nicht unbedingt. Abgesehen von Spielen und Physiksimulationen wird Floating Point nicht so häufig verwendet. Außerdem erzielen viele ARM-Chips anständige FLOPS, indem sie die Präzision verkrüppeln, sodass es auch nicht die einzig wahre Messung ist.
Dmitry Grigoryev
Android-Apps können nicht auf einer Java Virtual Machine ausgeführt werden. Sie laufen auf Dalvik VM
phuclv
1

Die bisherigen Antworten erklären einige Aspekte des Problems, das zu dieser überwältigenden Anzahl von CPU-Kernen auf Android-Handys führt. Lesen Sie das noch einmal; Android-Handys. Das iPhone hat es über lange Zeit geschafft, sich auf nur ein paar Kerne zu beschränken und ist dennoch wesentlich flüssiger als jedes andere Android-Flaggschiff.

Die Designer von Android haben bei der Entscheidung für die Java-Programmierung und in der Folge für die JVM als Laufzeit für Anwendungen ein großes Risiko eingegangen. Java löst aufgrund seiner Entwurfsprinzipien das Problem, dass Code für jede CPU-Architektur kompiliert und erstellt werden muss, bevor er durch Leistungseinbußen ausgeführt werden kann. Java führt eine schwere und sperrige virtuelle Maschine ein, die üblicherweise als JVM bezeichnet wird. Die JVM emuliert tatsächlich eine CPU auf Softwareebene, um zu vermeiden, dass Code für jedes Gerät separat kompiliert werden muss. Stellen Sie sich die JVM als eine virtuelle CPU vor, die unabhängig vom verwendeten Gerät dieselben Eigenschaften aufweist, sodass der Code für die JVM nur einmal kompiliert werden muss und dann auf jedem Gerät ausgeführt werden kann. Auf diese Weise können Hersteller jede gewünschte Hardware einsetzen, bevor sie sich um die Anwendungskompatibilität kümmern müssen.

Die JVM selbst ist lediglich eine Spezifikation, und es steht den Anwendern frei, ihre eigene JVM zu entwickeln, sofern diese dieser Spezifikation entspricht. Die ursprüngliche Android-JVM hieß Dalvik. Heutzutage hat Google das durch ART ersetzt.

Was ist nun das Problem mit JVM? Es ist ein schweres Stück Software, das eine ganze Menge Rechenressourcen verbraucht. Hinzu kommen einige andere Eigenschaften der Java-Sprache wie Garbage Collection und der Ressourcenverbrauch der JVM, die für ein Gerät mit bescheidener Hardwareleistung zu hoch sind. Jede Anwendung und jeder Systemdienst, die bzw. der auf Ihrem Gerät geöffnet ist, ist selbst eine Instanz der ART JVM, und Sie können jetzt feststellen, dass für die Verwaltung aller Anwendungen eine wirklich leistungsfähige Hardware erforderlich ist. Noch schlimmer wird es, wenn Benutzeroberflächen gezeichnet werden müssen.

Jede Anwendung läuft auf mehreren Threads. Jeder CPU-Kern kann jeweils nur einen Thread ausführen. Jede App verfügt über einen Haupt-Thread, in dem die mit der Benutzeroberfläche verbundenen Aufgaben ausgeführt werden. Pro Anwendung sind möglicherweise viel mehr Threads für den Dateizugriff, das Netzwerk usw. verfügbar. Im Allgemeinen sind mehr Apps (und Systemdienste) geöffnet als CPU-Kerne. Infolgedessen sind in der Regel viel mehr Threads vorhanden als CPU-Kerne. Jeder Kern muss also ständig zwischen der Verarbeitung verschiedener Threads wechseln, von jedem ein wenig machen und zum nächsten übergehen. Dieses Umschalten beansprucht viel Zeit für die CPU, und wenn es sich bei den Anwendungen im Wesentlichen um JVMs handelt, wird diese Aufgabe noch umfassender.

Basierend auf dieser Erklärung könnte man ableiten, dass Android leistungsstarke Hardware benötigt, um reibungslos zu funktionieren. Die frühen Generationen von Android-Geräten waren berühmt für Verzögerungen, Abstürze und viele andere unglückliche Dinge. Im Laufe der Jahre wurden diese Probleme jedoch größtenteils durch den Einsatz leistungsfähiger Hardware gelöst.

Andererseits werden iOS-Anwendungen zu nativem Maschinencode kompiliert und benötigen daher keine Virtualisierung. Die verwendete Sprache und das Betriebssystem sind ebenfalls effizienter und ermöglichen es diesen Geräten, reibungslos zu funktionieren, ohne dass ein Overkill-Chipsatz erforderlich ist.

DarthPaghius
quelle
Dies ist eine gute Erklärung, warum Mobiltelefone viel leistungsfähiger sind als Desktops. Oder nicht?
Maaartinus
„So können Hersteller jede gewünschte Hardware einsetzen, bevor sie sich um die Anwendungskompatibilität kümmern müssen.“ - ein guter Punkt, aber ich bin mir nicht sicher, ob dies die Absicht für ein System war, das (ursprünglich) für Kameras gedacht war.
v6ak
"Pro Anwendung können viel mehr Threads für den Dateizugriff, das Netzwerk usw. vorhanden sein." Diese sind eher E / A-gebunden und verbrauchen nicht viel CPU. Manchmal wird E / A nur von einem Thread verarbeitet, da die CPU viel schneller ist als E / A-Geräte.
v6ak
"Die frühen Generationen von Android-Geräten waren berühmt für Verzögerungen, Abstürze und viele andere unglückliche Dinge." Sie liefen auf wenig RAM und hatten langsamere Flash-Geräte wie MTD (viel langsamer als microSD-Karten für einige Operationen), ältere Androids hatten eine weniger effiziente „JVM“ (die technisch gesehen keine JVM ist). Sicher, eine bessere CPU hilft auch, aber ich wäre weit von einer solchen Schlussfolgerung entfernt.
v6ak
Programmierstile wie das Ausführen von E / A (oder anderen langen Vorgängen) in UI-Threads können Apps unabhängig von der CPU-Leistung verzögern. AFAIK, dieser Stil ist in frühen Android-Apps weit verbreitet. Solche Apps können auch bei modernen Handys verzögert sein. Sie werden wahrscheinlich weniger verzögert sein, aber das liegt eher an schnelleren Flash-Speichern als an schnelleren CPUs oder mehr Kernen.
v6ak
0

Zusammenfassend kann ich sagen, dass die Anwendungsfälle von PC und Telefon sehr unterschiedlich sind. PC wird meistens in einzelnen oder einigen Apps verwendet (natürlich erfordern Browser mit mehreren Registerkarten viele CPU-Kerne, können sogar an der Spitze von i-3 zurückbleiben), Telefone, die für Multitasking verwendet werden. Zumindest Netzwerkverbindung, Benutzeroberfläche, Systemauslöser, Benachrichtigungen. Wenn Sie den Task-Manager auf dem PC öffnen, gibt es auch viele Prozesse, die jedoch selbst auf alten Core 2-Duos weniger als wenige Prozent der CPU-Leistung verbrauchen. 4 Kerne sind ziemlich billig (MTK 65x2 kostete beim Start für OEM 1 $). Es ist auch RISK vs CISC, wenn die Leistung pro Kern zuletzt mangelhaft war. Energieeffizient! = Leistungsstark, wie wir hier sehen können . Multi-Core ist perfekt für Mobilgeräte geeignet, da es keine große Belastung mit einem einzelnen Profil und keine auf mehrere Aufgaben ausgerichtete Erfahrung gibt (wir können jedoch feststellen, dass iPhones aufgrund guter Software weniger Kerne und RAM benötigenwie in diesem Video oder anderen )

Flippy
quelle
Viele davon werden oft auch auf Laptops ausgeführt. Und Multitasking muss keine hohen Anforderungen an die CPU stellen. Unterschiede bei den Herstellungskosten können einige Unterschiede verursachen und sind möglicherweise ein Grund für weniger Kerne bei Low-End-CPUs. Ich bezweifle jedoch, dass die Herstellungskosten der einzige Grund sind, warum nicht alle i7 mindestens vier Kerne haben. Ich glaube, dass die Herstellungskosten nur einen winzigen Bruchteil des Preises dieser CPUs ausmachen.
v6ak
@ v6ak, problem ist, dass x86 kerne größer und komplizierter sind, CPUs von intell (oder amd) sind einfach nicht gut genug um topmodel zu sein. Tatsächlich sind die meisten Teile blockiert und werden Junior i7 oder Pentiums. ARM-Kerne sehen weniger knifflig aus, so dass nicht jedes Jahr so ​​viele Modelle ankommen. Noch wahre Octa-Kern war Samsung Exynos Octa 7xxx , MTK Helio X10 , Neueste (X30) sogar wenig (4) .Mittel (4) .BIG (2), können wir sie in Anzeigen, dass es ein 10-Core-Prozessor, billige Vermarktung ist tut es was.
Flippy
-1

Ich denke, einer der Hauptfaktoren jenseits von 4 oder 8 (für große: kleine Konfigurationen) ist im Moment nur das Marketing.

Ein großes Problem der hohen Kernanzahl ist die Größe des Speichers. Normalerweise müssen Sie in Desktop-Apps, wenn Sie die Auslastung mehrerer Kerne verbessern möchten, Strukturen duplizieren und viel mehr Speicher verwenden als in einer einzigen Thread-Anwendung.

Dies geschieht nicht, weil RAM sehr teuer ist (insbesondere in der RAM-Krisensituation 2017/2018). Das Marketing will hohe Stückzahlen, aber das Controlling will die Komponentenpreise senken. Wenn Sie einen Kontostand von weniger als 1 Gigabyte RAM pro Kern feststellen, liegt ein gescheiterter Kompromiss vor.

Lothar
quelle