Grundlagenartikel Warum Apples M1 Single "Core" Vergleiche grundlegend fehlerhaft sind (mit Benchmarks) | Gastbeitrag

Igor Wallossek

Format©
Mitarbeiter
Mitglied seit
Jun 1, 2018
Beiträge
10.178
Bewertungspunkte
18.761
Punkte
114
Alter
59
Standort
Labor
Ich habe heute etwas ziemlich Aufregendes für Eure Leser; etwas, das fast jeder bei großen Getöse um die Apple M1-Benchmark-Vergleiche verpasst zu haben scheint. Was wäre, wenn ich Euch sagen würde, dass so ziemlich alle Single-Core-Benchmark-Vergleiche zwischen dem Apple M1 und modernen x86-Prozessoren, die Ihr online sehen könnt, grundlegend fehlerhaft sind (vorausgesetzt, Ihr wollt sehen, welcher Kern der schnellste ist)? Denn wie Ihr seht, nutzen die meisten Einzelkern-Benchmarks, die im Umlauf sind, einen modernen x86-Kern nicht einmal vollständig aus - aber wahrscheinlich die des M1.




>>> Hier den gesamten Artikel lesen <<<
 
Da verstehe ich jetzt nicht, was das soll. Wenn ich einen "Singlecore-Benchmark" laufen lasse, dann möchte ich wissen, wie schnell ein Programm läuft, das nur einen Thread verwendet. Dazu gehört leider immer noch viel zu viele Software. Ich will somit exakt gesagt einen "Single Thread Benchmark". Von mir aus kann man den Namen des Benchmarks von Singlecore zu Sinlethread ändern. Was ein abgeändertet Benchmark der einen ganzen Kern auslastet aussagen soll, das erschliesst sich mir nicht.

Ein Programm ist ja nie durch einen Core (mit 2 Threads) limitiert. Entweder kann ein Programm nur einen Thread verwenden. Dann zeigt der Singlethread-Benchmark wie gut es ungefähr läuft. Wenn man dagegen ein Programm hat das alle Kerne nutzt, dann misst man die Gesammtleistung. Dann gibt es noch Programme dazwischen, die ein paar Kerne nutzen und dann testet man eben mit dem Programm selbst.

Bitte macht keinen neuen Benchmark sondern passt höchstens den Namen für den Singlethread-Benchmark an.

Davon abgesehen interessiert mich ein Leistungsvergleich von Intel/AMD zu Apple nicht. Entscheidender ist immer was die Software die darauf läuft raus holen kann und nicht welche Leistung auf unterster Ebene verfügbar ist. Je nach Aufbau der Struktur und der darauf laufenden Software ist das sehr unterschiedlich und nicht vergleichbar.
 
Da x86-Kerne nicht vollständig mit einem einzigen Thread ausgelastet sind, wäre ein Vergleich zwischen Nicht-SMT-Architekturen ein reiner Vergleich von Äpfeln und Birnen. <--- nicht 'zwischen', sondern 'mit', oder?
 
Es ist interessant, aber nicht wirklich von belang.
Wer Apple kauft, kauft Apple sicher nicht wegen der Leistung pro Kern. Sollten andere OEMs auch auf ARM umschwenken werden die sicher solche Fakten analysieren um die Performance abzuschätzen, aber ich denke denen war so ein Zusammenhang auch schon vorher klar
Wenn überhaupt geht darum dem Apple-Marketing etwas entgegen zu setzen, aber wen interessiert das.
 
Zuletzt bearbeitet :
Interessante Betrachtung. Läuft IMHO aber je nach Schwerpunkt der Betrachtung teilweise ein wenig auf die Frage hinaus, ob Paul mit dem Elektrofahrrad jetzt *wirklich* schneller beim Bäcker war als Anna mit dem Elektro-Porsche, weil bei Anna ja noch Paul mit drin hätte sitzen können, der Elektroporsche also mehr Personenkilometer je Zeit geschafft hätte.

Die richtige Lösung wären halt drei Fahrräder. :)
 
Single-Core ist nicht Single-Threaded. Genau da beginnt ja schon die Verzerrung. Ein Benchmark macht aber nur dann Sinn, wenn die zu testende Einheit auch wirklich ausgelastet wird und die Bedingungen alle Gleich sind. Multi-Threaded ist der M1 kein Baumaureißer, also hat man sich diesen lustigen Trick mit Kern gegen Thread einfallen lassen. Nicht mal dummes Marketing, aber doch durchschaubar. Das nächte Mal bitte mit verstecktem Chiller... :D

Und wenn es schon Auto-Vergleiche sein müssen:
Wer lässt beim Vergleich zwischen Motorrad und Auto das Auto auf zwei Rädern fahren, damit das Motorrad sicher gewinnt? Maximal das Privatfernsehen. :D

Dann kann ich ja SAM bei der 6900XT auch weglassen.. Oops, den Aufschrei hätte ich gern.
 
Ich sehe schon Vergleiche zwischen Apple und x86 CPUs als unsinnig an.
 
[...]Sollten andere OEMs auch auf ARM umschwenken werden die sicher solche Fakten analysieren um die Performance abzuschätzen, aber ich denke denen war so ein Zusammenhang auch schon vorher klar[...]
Genau hier habe ich meine Zweifel. Und zwar nicht in Bezug auf die Ingenieure und Techniker in diesen Unternehmen, sondern eben beim Marketing. Und leider geben diese oft den Ton an.

Und ja natürlich, es gibt zwei Seiten:
Will ich Kernleistung vergleichen, muss ich das, was hinten raus kommt bei gleicher Belastung der Kerne messen. Und wenn ein Kern für die optimale Auslastung 20 Threads braucht, dann ist das halt so.

Wenns mir um die Threads geht, dann ist natürlich Thread gegen Thread wichtig.
Wieviele von denen eine Anwendung benötigt/nutzen kann, ist da auch erstmal völlig unerheblich.

Und wenn ich wissen will, auf welchem Unterbau meine Anwendung optimal läuft, dann sollte es prinzipiell nur darum gehen, wie schnell diese ein gewünschtes Ergebnis präsentieren kann. Hier kann dann die reine Leistung des Unterbaus ggf. egal sein. Wenn Excel auf einer Kombi aus XP3200+ und Radeon 8500 Pro 100% schneller läuft als auf einem 10900K + RTX3090 und ich Excelergebnisse asap benötige, dann weiß ich, was ich für einen Unterbau brauche.

Wenn meine Anwendung "Großstadtverkehr zur Rushhour 1.0" heißt, gewinnt sicherlich der Smart und nicht der Camaro V8.
Wenn mein Augenmerk auf "wer ist der schnellste insgesamt" liegt, gwinnt sicherlich der Camaro V8
Wenn mein Augenmerk auf "wer ist am effizientesten im ersten Gang auf Anschlag" liegt, dann könnte wiederum der Smart vorne liegen.

Ich weiß, nicht ganz schlüssiger Vergleich, aber ich hoffe, man merkt, worauf ich hinaus will. Auf das, worauf es immer im Leben ankommt: "Es kommt drauf an, was man will"
 
Ein Benchmark macht aber nur dann Sinn, wenn die zu testende Einheit auch wirklich ausgelastet wird und die Bedingungen alle Gleich sind.
Da musste ich ein wenig schmunzeln, weil diese Denkweise exakt so auf 720p-Tests mit fordernden CPU-Settings und entlastenden GPU-Settings anwendbar ist, was ja fast keiner mehr macht heutzutage. ^^

Da verstehe ich jetzt nicht, was das soll. Wenn ich einen "Singlecore-Benchmark" laufen lasse, dann möchte ich wissen, wie schnell ein Programm läuft, das nur einen Thread verwendet. Dazu gehört leider immer noch viel zu viele Software. Ich will somit exakt gesagt einen "Single Thread Benchmark". Von mir aus kann man den Namen des Benchmarks von Singlecore zu Sinlethread ändern. Was ein abgeändertet Benchmark der einen ganzen Kern auslastet aussagen soll, das erschliesst sich mir nicht.
Ist ist letztlich ein Frage der Perspektive, aus der man etwas betrachtet. Möchte man das Potenzial eines einzelnen Kerns bestimmen oder die Singlethreadperformance? Das sind zwei verschiedene Dinge. Die x86-Architekturen sind anders designt. Ein wesentlicher Teil des Konzeptes ist Parallelisierung auf einem Kern. Das führt unweigerlich dazu, und darum geht's in diesem Artikel, 2 Threads pro Kern auszuführen. Der Leitgedanke dabei ist (tatsächliche) "Auslastung der Hardware". Und es geht auch um Vergleichbarkeit, wenn man sich für eine bestimmte Sichtweise entschieden hat. Deswegen plädiere ich auch immer für Low-Res-Tests, damit man die CPUs überhaupt richtig vergleichen kann.

Auf der anderen Seite ist die Singlethreadperformance genauso interessant, denn es gibt Problemstellungen, die prinzipiell nicht parallelisierbar sind.

Für mich persönlich ginge "Real World" eher in die die Richtung "nur teilweise/eingeschränkt parallelisierbar", wobei die x86-Architekturen unterm Strich wohl besser abschneiden dürften.
 
Zuletzt bearbeitet :
Es wird interessant sein zu sehen, wie Intel und Winzigweich den big-LITTLE-Ansatz realisieren werden. :D
 
Ich konnte im BIOS meines Gigabyte B550I Aorus Pro AX mit den Ryzen 5 5600X die Konfiguration "Downcore Control "ONE (1+0)" auswählen, was dann tatsächlich alle Kerne bis auf einen deaktiviert. So war es mir möglich mit einer Zen 3-CPU die 1 Core/2 Threads-Messung unter Cinebench 23 nachzustellen.
Der Ryzen 5 5600X boostet während des Runs mit einem Multiplikator von 45, effektiv liegen also 4490MHz Takt an. Ergebnis: 1936 Punkte :)

Edit:
Ein zweiter Run hat sogar 1944 Punkte ergeben
Idle-Leistungsaufnahme (Gesamtsystem) = 19 Watt
Load-Leistungsaufnahme (Gesamtsystem) = 46 Watt
PSU: Cooler Master V550 (RS550-AFBAG1-EU) 80+ Gold

5600X 1C_2T.png


Edit2:
Geekbench 5 habe ich so ebenfalls gebencht: https://browser.geekbench.com/v5/cpu/5128834
Single-Core Score (= 1 Core/1 Thread): 1523
Multi-Core Score (= 1 Core/2 Threads): 1864
Performance-Steigerung durch SMT: 22,4%
 
Zuletzt bearbeitet :
Es wird interessant sein zu sehen, wie Intel und Winzigweich den big-LITTLE-Ansatz realisieren werden. :D
Intel lizensiert ARM baut einen sparsamen 4 Kern ARM Chip ein samt x86 Emulation und dazu noch einen 4 Kern + HT Core iX XXXXXU 🤣.
Intel hat doch schon mehrfach versucht in den Mobilbereich vorzudringen und ist immer wieder gescheitert, ich glaub nicht das da noch viel kommt. Erstmal müssen sie schauen, dass ihnen im Desktopbereich und noch viel schlimmer im Serverbereich nicht die Felle wegschwimmen.
 
Naja... Was ist dir Quintessenz des Ganzen? Apple und Birnen war eh klar.
Das erinnert doch stark an x86 vs x64 im Desktopbereich.

Frage ist: Was brauchen wir? Und da unterscheiden sich die Anwendungsgebiete doch deutlich.
 
Dann nennt Apple die Tests einfach Single-Thread Benchmarks und dann passt es für Appell wieder.
Das ein Thread ein Core nicht auslasten (X86) kann, ist eben manchmal auch ein Nachteil.
 
ich finde das Thema ist einen Artikel nicht Wert, ist doch jedem klar das in den Tests Single Thread Leistung verglichen wird und dass der M1 zusätzlich vom gut angepassten Mac OS profitiert... sich darüber aufzuregen ist nicht notwendig, vergleichbare "Tricks" lassen sich bei der Präsentation von vielen unterschiedlichen Produkten ausmachen
 
Da verstehe ich jetzt nicht, was das soll. Wenn ich einen "Singlecore-Benchmark" laufen lasse, dann möchte ich wissen, wie schnell ein Programm läuft, das nur einen Thread verwendet. Dazu gehört leider immer noch viel zu viele Software. Ich will somit exakt gesagt einen "Single Thread Benchmark". Von mir aus kann man den Namen des Benchmarks von Singlecore zu Sinlethread ändern. Was ein abgeändertet Benchmark der einen ganzen Kern auslastet aussagen soll, das erschliesst sich mir nicht.

Ein Programm ist ja nie durch einen Core (mit 2 Threads) limitiert. Entweder kann ein Programm nur einen Thread verwenden. Dann zeigt der Singlethread-Benchmark wie gut es ungefähr läuft. Wenn man dagegen ein Programm hat das alle Kerne nutzt, dann misst man die Gesammtleistung. Dann gibt es noch Programme dazwischen, die ein paar Kerne nutzen und dann testet man eben mit dem Programm selbst.

Bitte macht keinen neuen Benchmark sondern passt höchstens den Namen für den Singlethread-Benchmark an.

Davon abgesehen interessiert mich ein Leistungsvergleich von Intel/AMD zu Apple nicht. Entscheidender ist immer was die Software die darauf läuft raus holen kann und nicht welche Leistung auf unterster Ebene verfügbar ist. Je nach Aufbau der Struktur und der darauf laufenden Software ist das sehr unterschiedlich und nicht vergleichbar.
Dem kann ich nur 100%ig zustimmen. Warum will man den überhaupt die "Single-Core" Performance wissen (und ja, Single-Thread wäre hier die genauere Bezeichnung)? Damit man abschätzen kann, wie schnell ein einzelner Thread, zB eine Datenbankabfrage, abgearbeitet werden kann. Daher

Bei allem anderen ist es mit doch egal, ob das ganze dann auf zwei / vier / acht physichen oder virtuellen Kernen gerechnet wird. Ich möchte die Performance von NICHT parallelisierbaren Workloads vergleichen, genauso wie mit parrallesierbaren Workloads bei einem Multithread Benchmark.

Die Argumentation im Artikel wäre dann, wir passen den Test an die Gegebenheiten der CPUs an um bessere Ergebnisse zu erreichen - das ist aber reichlich sinnbefreit.
 
Also selbst wenn das alles so stimmen sollte (und das denke ich mal weil ich Igor nicht zutraue hier Blödsinn zu veröffentlichen) und es im realen Betrieb überhaupt von Bedeutung ist, bliebe auf der Habenseiten des M1 noch immer der doch signifikant geringere Energiebedarf.
 
Ich bin dankbar für den Artikel, weil
1. mir die Apple-Jünger eh auf den Sack gehen und
2. weil jede*r jetzt weiß, wo es welche Leistung gibt.
Wenn ich Single-Thread Leistung brauche, dann tendenziell Apple. Allerdings sind die Unterschiede sooo groß nicht. Ich kann die 3 Sekunden warten und mir den Aufpreis sparen ;)
Wenn ich allerdings Multi-Thread Leistung brauche - und parallelisierte Anwendungen liegen ja voll im Trend - dann sollte ich auf ein klassisches x86 System setzen.

... schrieb er auf seinem MacBook Pro. Unterm Strich ist es wirklich bums, denn zu wenig Prozessorleistung ist aktuell nur bei ganz wenigen Anwendungsfällen ein Thema ;)
 
Ich denke die Benamung der Benchmarks ist einfach falsch. SingleThread-Benchmark und gut ist. 20% Performanceunterschied bei Anwendungen spielen beim Vergleich M1 zu X86 eh keine primäre Rolle. Es ändert nichts daran, dass das, was Apple im ersten Anlauf auch konkret in Anwendungen aus teilweise nur wenigen Watt an Performance rausquetscht schon erstaunlich ist - ändert aber auch nichts daran, dass Apple grundsätzlich schon beim Design "mogelt" und sehr viele Dinge einfach in Hardware gegossen hat (Video Codecs etc.) und dort dann zwar tolle Performance hat, aber bei den Dingen, die nicht in den SOC gegossen wurden schnell und sehr deutlich die Rücklichter der flexibleren x86 Plattform sieht. Ich denke man sollte mit dem Fanboy-Tum (alles was Apple macht ist toll) und Beissreflexen a la "mich nerven Apple Fans, daher muss Apple auf die Nase bekommen" aufhören und sich einfach über eine Bereicherung im Tech-Sektor freuen. Und es ist absolut begrüßenswert, wenn sich jemand hinsetzt und mal die oftmals unreflektierten Annahmen hinterfragt und wie hier zumindest in Teilen widerlegt.
 
So wie ich das sehe, gehört die Nomenklatur (Singlethread / Singlecore) angepasst und dann gibt's in Zukunft halt ne weitere Spalte in den Vergleichstabellen.
Fürs Kräftemessen für uns Enthusiasten sicher interessant, aber entweder habe ich doch ein Stück Software, dass mit mehreren Threads kann oder eben nur mit einem. Den 0815 Anwender interessiert daher ja leider dann doch eher Singlethread und alle Kerne, wenn überhaupt.
 
Oben Unten