Performance

A D Essler schrieb:
IPhone auch nur einen DualCore. Wäre Leistung so entscheidend, hätte sich das Teil wohl kaum so gut verkauft.

Welcher aber stärker ist als der uralt Quad des S3 :o
 
Im Grafik Bereich vielfach mit so ziemlich jedem Plattformübergreifendem benchmark. Selbst das iPhone 4s ist oft stärker als das Galaxy s3. Im CPU Bereich gibt es nicht viele Benchmarks, die nicht von der darauf laufenden Software abhängen was einen Vergleich zwischen IOS mit IOS apps und Android mit Android apps natürlich sehr schwer macht. Gerade im Browser Bereich ist der dualcore vom ip5 aber oft performanter als der quad vom s3. Dazu kommt, dass schnellerer Arbeitsspeicher mit größerer Bandbreite für ne kleinere Auflösung, was den unterschied noch verstärkt, verbaut wurde.

GLBenchmark - High performance mobile benchmark for OpenGL ES environment

Hier noch mit one x, da muss man dazu sagen, dass das one x seine Werte mittlerweile bessern konnte (neue Treiber?). Da diese benchmarkwerte aber auch beste Optimierung voraussetzen. Und da hapert es, der tegra 3 vom one x wird von Entwicklern oft vernachlässigt, da es mehr Aufwand braucht ein game auf dem tegra 3 auf die gleiche performance wie bei der mali 400 zu bringen.

GLBenchmark - High performance mobile benchmark for OpenGL ES environment

Bei dem onscreen test kann man sehr gut sehen, Galaxy s3, iPhone 4s und HTC one x sind genau auf einem level, die anderen in der Auswahl, also HTC one und iPhone 5 haben einfach mal die doppelten fps, das Galaxy s4 wird noch etwas darüber sein, im Bereich vom nexus 4. Da liegt schon einiges zwischen denen, auch dem dualcore vom iPhone 5 und den alten Prozessoren ala Galaxy s3 oder iPhone 4s.
 
Zuletzt bearbeitet:
Das S3 hat unter den Androiden die stärkste Hardware seiner Zeit! Das HTC One X trickste nach dem Update nur mit I/O war sonst aber schwächer! Die Mehrheit der Benchmarks beweist das.

Gesendet von meinem GT-I9300 mit Tapatalk 2
 
Interessant. Bin da nicht so bewandert, wie ist das bei Mehrkern Prozessoren in Smartphones, werden die auch noch relativ schlecht unterstützt in Applikationen wie bei PCs, oder werden die Kerne eigentlich immer optimal ausgelastet?
 
Naja Programme, die wirklich alle Kerne sinnvoll nutzen gibt es für Smartphones nicht so viele.

Allerdings verwendet das System je nach Auslastung durchaus alle Kerne. Werden Sie nicht benötigt schalten sie sich ab. Heute noch nicht so relevant, aber je mehr die Smartphones zu Multitasking Alleskönnern werden, um so vorteilhafter wird dieser Ansatz.
Bei Systemen wie iOS, die Multitasking nur eingeschränkt beherrschen, bezweifle ich hingegen, dass mehr als zwei Kerne in absehbarer Zeit Sinn machen werden.
Gesendet von meinem GT-N7100 mit der Android-Hilfe.de App
 
Und nutzen die gängigen Benchmarks denn die Kerne sinnvoll?
 
So ziemlich jede APP nutzt alle 4 Kerne - Android regelt das.

Benchmarks sprechen sie oft sogar einzeln an, da werden sie dann alle voll belastet. Bei games ist es immer wieder so, dass die CPU nicht auf vollem Takt oder allen Kernen läuft, weil einfach nicht mehr benötigt wird weil der Flaschenhals hier die GPU ist.
 
Zuletzt bearbeitet:
marco köhler;5586112 schrieb:
So ziemlich jede APP nutzt alle 4 Kerne - Android regelt das.

Ich glaub ich weiss, wie dus meinst, aber es ist etwas ungünstig formuliert.
Es ist noch lange nicht so, dass jede einzelne App für sich allein betrachtet [!] auch wirklich sinnvoll parallelisiert ist. Bei vielen Sachen ist das aktuell auch gar nicht sinnvoll möglich.
Lediglich da, wo wirklich viel Rechenzeit in speziellen Berechnugen steckt, wie zB bei Benchmarks oder auch bei Spielen wird eine einzelne App mehrere Kerne nutzen.

Der andere Fall, dass einfach alle laufenden Prozesse (also auch unterschiedliche Apps zB) auf die vorhandenen Kerne verteilt wird, um den kümmert sich Android. (Ich vermute, das hast du gemeint.)
Aber man muss hier auch betrachten, dass es gar nicht so häufig vorkommt, dass Anwendungen im Hintergrund, von denen der Benutzer also gar nichts sieht, viel Rechenleistung brauchen, dass sich 4 Kerne im Vergleich zu 2 hier sonderlich bemerkbar machen würden. Beliebte Hintergrundaufgaben wären soweit eigentlich eh nur Musik, Downloads oder Updates und lediglich letztere benötigen wirklich etwas mehr Rechenleistung, dafür laufen sie auch nur hin und wieder mit und nicht dauerhaft nebenher.
 
ach mir fällt da schon so einiges ein:
Autofahrt: Navi, Netzmonitor (siehe Footer), MP3 über Bluetooth zur FSE und dann soll Android ja auch noch selber laufen. Aktuelle Smartfones sind keine Telefone mehr, das sind Multimedia-Stationen und da sind 4 Kerne nicht unnütz.
 
Also ich behaupte im AlltagsGebrauch merkt kein Mensch ob da jetzt zwei oder vier Kerne arbeiten.
Und bei gewissen Aufgaben lohnt es sich auch gar nicht die noch parallel abzuwickeln, weil es viel mehr der Effizienz Schaden würde noch einen zusätzlichen Kern anzuschalten.
Betriebssysteme selbst brauchen erst mal keine/kaum Ressourcen. Nur die Services die sie anbieten benötigen etwas Speicher. Ressourcen benötigen hauptsächlich die Anwendungen und wie viele hängt dann natürlich auch von der Verwaltungs-Effizienz des Betriebssystems ab. Aber Android selbst braucht erst mal so gut wie nichts.

Gesendet von meinem GT-N7100 mit der Android-Hilfe.de App
 
Meistens wird die CPU nicht ganz ausgelastet, 4 Kerne unter Volllast sieht man meistens nur kurzzeitig oder in Benchmarks, oft ist es ja so, dass die CPU auf andere Hardwarekomponenten warten muss. Das bedeudet, man würde erstmal gar keinen oder kaum einen unterschied merken, wenn das s3 nur mit 2 Kernen laufen würde, aber, 4 Kerne auf halber last brauchen weniger Strom als zwei Kerne die um das gleiche leisten können auf Volllast laufen müssen. Android teilt die erforderliche CPU last da echt gut auf meiner Meinung nach und somit braucht ein quadcore im Teillastbereich den man ja wie schon erwähnt würde oft hat, weniger Strom als die qualcore Variante. Wenn man aber mal richtig Leistung braucht hat er trotzdem noch mehr Reserven. Die Vorteile über wiegen also klar.
 
Ja aber die Frage ist doch genau: Ist das wirklich so? Lohnt es sich wirklich 4 Kerne mit niedrigerem Takt zu betreiben, als zwei Kerne mit höherem?
Mangels Ergebnissen gehe ich einfach mal von einer stinknormalen e-Funktion e^(0,172089x) aus mit der die Leistungsaufnahme im Verhältnis zum Takt steigt. Angenommen Leistung steigt sowohl mit Takt als auch mit Kernzahl linear an (doppelter Takt und doppelte Kernzahl bedeuten beide doppelt so viel Leistung) komme ich natürlich mit gleichem Takt und doppelt so vielen Kernen an mein Ziel so wie durch eine Frequenz Erhöhung auf das Doppelte.
Nach meiner Rechnung zu Folge müsste man also bei einem Dual Core durch die Takterhöhung e^(0,172089*2)=1,41... also 40% mehr Energie benötigen.
Bei Kernzahlerhöhung steigt der Energiebedarf aber linear man benötigt also 100% mehr Energie als mit nur zwei Kernen und benötigt damit 60% mehr als bei 2 Kernen mit doppeltem Takt.
Das ganze wird erst dann rentabel, wenn ich so viel Leistung benötig, dass ich den Takt bei meinem Dual-Core so weit erhöhen muss, dass die zusätzliche Energie, die meine beiden weiteren Kerne beim QuadCore benötigen, wieder rauskommt. Und ich zweifle daran, dass wir so viel Leistung bei Smartphones momentan wirklich benötigen.
Sieht man übrigens auch ganz interessant bei NVidia. 2011 mit Tegra2 genau das propagiert (zwei Kerne sind sparsamer), 2012 setzte man mit Tegra3 allerdings wieder auf nur einen Stromsparkern. Warum, wenn doch mehr Kerne effizienter sind?

Übrigens mein Rechenbeispiel oben muss nicht richtig sein. Den Parameter für meine e-Funktion hab ich einfach aus einem OC Versuch eines i7 3820 ermittelt.
Es könnte also sein, dass es ebenfalls auf die Situation bei ARM Chips gut zutrifft, muss aber nicht. Wenn mir jemand zuverlässige Daten bezüglich Leistungszunahme bei Frequenzerhöhung liefert wäre ich sehr dankbar.
 
Bei Desktop CPUs z.B. kommt ja auch hinzu, dass die Spannungserhöhung nicht zwangsläufig linear zum Takt laufen muss. Sprich, ab einem gewissen Takt, muss man deutlich mehr Spannung geben um stabil zu bleiben. Geringere Taktraten könnten so also eventuell auch in effizienteren Spannungsgebieten liegen. Ist aber nur Theorie, ob es in der Praxis tatsächlich bei Smartphones eine Rolle spielt, keine Ahnung...
 
Doppelter Takt ist mehr als doppelter Stromverbrauch, da hinkt die Überlegung dann.
 
Die Überlegung ist schon nett, aber komplett falsch.
Das Thema lässt sich nicht in 1-2 Gleichungen pressen - versucht es am besten gar nciht erst.

Aber nur mal kurz angeschnitten:
Für eine bestimmte TF braucht man eine bestimmte VCore - je höher die Vcore, deso höher der Verbrauch.
Dann kommt noch die Thermik hinzu und Widerstände und und und.
Allein die Thermik ist ein schönes Thema für seitenlange Posts.
Desweiteren muss bei 100% ausgelasteten Dual-Core ein Kern auch noch die Arbeitsverteilung etc. übernehmen - somit entsteht wieder Luft für den anderen.

Kurz: Das Thema lässt sich nur sehr sehr schwer diskutieren.
Da spielen so viele Faktoren eine tragende Rolle.
 
Klar lässt sich das in einer Gleichung jedenfalls grob annähern. Nur ist die Frage, wie der Verbrauchsanstieg bei Takterhöhung wirklich aussieht. Dass er exponentiell ansteigt dürfte wohl keine Frage sein nur hängt das ganze sehr stark von den Parametern ab. Da können die Ergebnisse nämlich gerade bei einer e-Funktion gewaltig abweichen.
Tatsache ist aber, dass es einen Bereich gibt in dem Takterhöhung effizienter ist als Kernzahlerhöhung.
 
Wenn ich das ganze hier so lese hab ich das Gefühl, es herrscht hier teilweise ein ziemliches Unverständnis, was den Bereich Parallelisierung betrifft.

Komplett unabhängig davon, welche Konstellation wie viel Energie braucht, hat die Version mit weniger, dafür stärkerern Kernen aktuell einen nicht zu verachtenden Nachteil: Die pro-Kern Leistung ist höher und in fast allen Anwendungsprogrammen kommt es rein auf diese an.

Es ist mit aktuellem Stand der Softwaretechnik NICHT möglich, dass man ein Programm, welches nicht besonders vorbereitet wurde, einfach mal mit vier Kernen berechnen lässt, statt mit nur einem. Wenn das möglich wäre, hätten wir keine Multicoreprozessoren mehr, sondern ausschliesslich Manycore Architekturen mit 64, 128 oder noch mehr Kernen. (Auch im Mobilbereich.)
In der Praxis lässt sich nur ein sehr geringer Teil der Anwenderprogramme (Benchmarks sind KEINE Anwenderprogramme!) überhaupt parallelisieren und der Aufwand um dies sinnvoll hinzubekommen ist sehr vielen Fällen viel zu hoch, als dass es einen Sinn hätte.

Der Prozessor verarbeitet im Grunde nichts weiter, als eine Reihe von Anweisungen, die irgendwie geartet sein können. Wichtig ist hier zu beachten, dass diese Anweisungen zunächst eine feste Reihenfolge haben! Man kann dies zB damit vergleichen, dass man selber einen Taschenrechner, Stift und Papier in die Hand bekommt und dann eine Reihe von Berechnugen durchführen muss. In einem nächsten Schritt legt einem jemand dann einen zweiten Taschenrechner hin und man soll nun wieder eine Folge von Berechnugen durchrechnen, aber nun kann man beide Taschenrechner verwenden. Wie würdet ihr im Allgemeinen dann vorgehen, dass ihr möglichst sinnvoll nun beide Taschenrechner verwenden könnt um zum Ergebnis zu kommen, aber unter der Einschränkung, dass ihr erst, wenn ihr das Programm bekommt und die Zeit bereits läuft genau seht, was ihr denn alles rechnen müsst.

Das soll mal ein Gefühl dafür geben, dass man nicht einfach mal mehrere Kerne einschalten kann und schon läuft alles x-mal so schnell.

Das heisst, der Programmierer muss von beginn an schon einplanen, welche Sachen man gleichzeitig ausführen kann und welche hintereinander berechnet werden müssen (weil das eine die Ergebnisse des anderen braucht). Im ersten Moment hört sich das nicht so schwer an, aber es steckt sehr SEHR viel mehr dahinter als man denkt.

Und wie auch bereits erwähnt, lohnt es sich für die meisten verwendeten Programme auch überhaupt nicht, dass man sie parallelisiert, sie würden dadurch höchstens langsamer.
Eine mp3 dekodieren zB und über Bluetooth versenden (sofern nicht eh direkt die mp3 versendet wird und das Empfangsgerät dekodiert), braucht für aktuelle Verhältnisse keine Leistung mehr. Selbst 5 Jahre alte Handies konnten das schon problemlos.

Würde man die gefühlte Geschwindigkeit (wie gesagt, KEINE Benchmarks) von aktuellen Quadcore Smartphones mit einer Version vergleichen, in denen zwei Kerne dauerhaft deaktiviert sind, würde niemand einen Unterschied erkennen. (Wichtig: Dual- und Quadcore der selben Generation vergleichen! Nicht eine aktuelle Quadcore mit einer der ersten Dualcores damals!) Auch beim Akkuverbrauch ist so gut wie irrelevant, da noch nichtmal 2 Kerne auf Dauer wirklich gut ausgelastet werden. Ein Beispiel hierzu gibts zB im Nexus 4 Forum zum Faux Kernel, dieser erlaubt es, zwei Kerne abzuschalten, aber es rät jeder davon ab, weil es KEINEN Einfluss hat, weder auf die Leistung, noch auf die Akkulaufzeit.

Dass sich die Anzahl der Kerne immer weiter verbreitet hat aktuell ausschliesslich den Vorteil, dass sich so die großen Entwickler zwangsweise damit beschäftigen müssen, wie man sinnvoll parallelisiert, es evtl sogar automatisch geht in immer mehr Bereichen und sich so die Softwaretechnik weiterentwickelt. Aber für den Kunden wird es mindestens noch ein oder zwei Jahre keinen Unterschied machen, wie viele Kerne da sind, solange die pro-Kern Leistung ausreichend ist.
 
  • Danke
Reaktionen: DocSnyder und HaPe1968
@avok: sehr schön geschrieben.
Multicore bringt bei standard Programmen weniger als höherer Takt.

Multicore bringt nur dann etwas, wenn der Programmierer es bewusst einsetzt(Multi-Threading) , was oft keinen Sinn macht wegen Ergebnissabhängigkeiten oder bei echtem Multitasking, also wenn mehrere Programme gleichzeitig etwas zu tun haben. Dann übernimmt der Kernel-Scheduler die Verteilung der Arbeit auf die einzelnen Kerne. Hier spielt dann Android seine Stärken als erwachsenes OS aus. WindowsPhone und iOS können das kaum.

Gesendet von meinem Nexus 7
 

Ähnliche Themen

W
Antworten
0
Aufrufe
640
wrase
W
S
Antworten
2
Aufrufe
1.005
Smeagol
S
Zurück
Oben Unten